X-Loop: [email protected] Subject: bug#417: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Reply-To: Arthur Marsh <[email protected]>, [email protected] Resent-From: Arthur Marsh <[email protected]> Resent-To: [email protected] Resent-CC: [email protected] X-Loop: [email protected] Resent-Date: Mon, 23 Mar 2020 15:03:01 +0000 Resent-Message-ID: <[email protected]> Resent-Sender: [email protected] X-Devuan-PR-Message: report 417 X-Devuan-PR-Package: gcc-10 X-Devuan-PR-Keywords: Received: via spool by [email protected] id=B.15849750063430 (code B); Mon, 23 Mar 2020 15:03:01 +0000 Received: (at submit) by bugs.devuan.org; 23 Mar 2020 14:50:06 +0000 Delivered-To: [email protected] Received: from tupac3.dyne.org [195.169.149.119] by doc.devuan.org with IMAP (fetchmail-6.4.0.beta4) for <debbugs@localhost> (single-drop); Mon, 23 Mar 2020 14:50:06 +0000 (UTC) Received: from ipmail05.adl3.internode.on.net (ipmail05.adl3.internode.on.net [150.101.137.13]) by vm6.ganeti.dyne.org (Postfix) with ESMTP id 4DF13F60B07 for <[email protected]>; Mon, 23 Mar 2020 15:47:59 +0100 (CET) X-IronPort-Anti-Spam-NotFiltered: toobig Received: from ppp227-106.static.internode.on.net (HELO localhost) ([203.122.227.106]) by ipmail05.adl3.internode.on.net with ESMTP; 24 Mar 2020 01:17:53 +1030 Received: from amarsh04 by localhost with local (Exim 4.93) (envelope-from <[email protected]>) id 1jGOMm-0006Um-Tp; Tue, 24 Mar 2020 01:17:51 +1030 Content-Type: multipart/mixed; boundary="===============2530410277144048522==" MIME-Version: 1.0 From: Arthur Marsh <[email protected]> To: Devuan Bug Tracking System <[email protected]> Message-ID: <158497486864.17367.14059265919888444783.reportbug@localhost> X-Mailer: reportbug 7.5.3+devuan3 Date: Tue, 24 Mar 2020 01:17:48 +1030 This is a multi-part MIME message sent by reportbug. --===============2530410277144048522== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Package: gcc-10 Version: 10-20200321-1 Severity: normal Dear Maintainer, *** Reporter, please consider answering these questions, where appropriate *** * What led up to the situation? After upgrading gcc-10, the Linux kernel failed to build * What exactly did you do (or not do) that was effective (or ineffective)? removing the amdgpu option from the kernel build allowed the build to complete. * What was the outcome of this action? * What outcome did you expect instead? *** End of the template - remove these template lines *** -- System Information: Distributor ID: Debian Description: Devuan GNU/Linux 4 (chimaera/ceres) Release: testing/unstable Codename: n/a Architecture: x86_64 Kernel: Linux 5.6.0-rc6+ (SMP w/4 CPU cores) Locale: LANG=en_AU.UTF-8, LC_CTYPE=en_AU.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Init: sysvinit (via /sbin/init) Versions of packages gcc-10 depends on: ii binutils 2.34-5 ii cpp-10 10-20200321-1 ii gcc-10-base 10-20200321-1 ii libc6 2.30-2 ii libcc1-0 10-20200321-1 ii libgcc-10-dev 10-20200321-1 ii libgcc-s1 10-20200321-1 ii libgmp10 2:6.2.0+dfsg-4 ii libisl22 0.22.1-1 ii libmpc3 1.1.0-1 ii libmpfr6 4.0.2-1 ii libstdc++6 10-20200321-1 ii libzstd1 1.4.4+dfsg-3 ii zlib1g 1:1.2.11.dfsg-2 Versions of packages gcc-10 recommends: ii libc6-dev 2.30-2 Versions of packages gcc-10 suggests: pn gcc-10-doc <none> pn gcc-10-locales <none> pn gcc-10-multilib <none> -- no debconf information --===============2530410277144048522== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="20200324.log" VXNpbmcgZGVmYXVsdCBkaXN0cmlidXRpb24gb2YgJ3Vuc3RhYmxlJyBpbiB0aGUgY2hhbmdlbG9n Ckluc3RhbGwgbHNiLXJlbGVhc2Ugb3Igc2V0ICRLREVCX0NIQU5HRUxPR19ESVNUIGV4cGxpY2l0 bHkKG1sxbWRwa2ctYnVpbGRwYWNrYWdlOiAbWzBtG1sxOzMzbXdhcm5pbmcbWzBtOiB1c2luZyBh IGdhaW4tcm9vdC1jb21tYW5kIHdoaWxlIGJlaW5nIHJvb3QKG1sxOzM1bSBkcGtnLXNvdXJjZSAt LWJlZm9yZS1idWlsZCAuChtbMG0bWzE7MzVtIGRlYmlhbi9ydWxlcyBidWlsZAobWzBtZHVyaW5n IFJUTCBwYXNzOiBjb21iaW5lCmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmM6IEluIGZ1bmN0aW9uIOKAmHJuX3VwZGF0ZV9j bG9ja3PigJk6CmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21n ci9kY24yMS9ybl9jbGtfbWdyLmM6MTkzOjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBpbiBp eDg2X2NjX21vZGUsIGF0IGNvbmZpZy9pMzg2L2kzODYuYzoxNTI4NQogIDE5MyB8IH0KICAgICAg fCBeCjB4NWQwNmEyIGl4ODZfY2NfbW9kZShydHhfY29kZSwgcnR4X2RlZiosIHJ0eF9kZWYqKQoJ Li4vLi4vc3JjL2djYy9jb25maWcvaTM4Ni9pMzg2LmM6MTUyODUKMHgxMjc4ZGUyIHNpbXBsaWZ5 X3NldAoJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6NjkzOAoweDEyN2M0NmEgc3Vic3QKCS4uLy4u L3NyYy9nY2MvY29tYmluZS5jOjU3MTkKMHgxMjdjNWZjIHN1YnN0CgkuLi8uLi9zcmMvZ2NjL2Nv bWJpbmUuYzo1NTgxCjB4MTI3ZTdjOSB0cnlfY29tYmluZQoJLi4vLi4vc3JjL2djYy9jb21iaW5l LmM6MzQ3OQoweDEyODQ3NzIgY29tYmluZV9pbnN0cnVjdGlvbnMKCS4uLy4uL3NyYy9nY2MvY29t YmluZS5jOjE0NjkKMHgxMjg0NzcyIHJlc3Rfb2ZfaGFuZGxlX2NvbWJpbmUKCS4uLy4uL3NyYy9n Y2MvY29tYmluZS5jOjE1MDU5CjB4MTI4NDc3MiBleGVjdXRlCgkuLi8uLi9zcmMvZ2NjL2NvbWJp bmUuYzoxNTEwNApQbGVhc2Ugc3VibWl0IGEgZnVsbCBidWcgcmVwb3J0LAp3aXRoIHByZXByb2Nl c3NlZCBzb3VyY2UgaWYgYXBwcm9wcmlhdGUuClBsZWFzZSBpbmNsdWRlIHRoZSBjb21wbGV0ZSBi YWNrdHJhY2Ugd2l0aCBhbnkgYnVnIHJlcG9ydC4KU2VlIDxmaWxlOi8vL3Vzci9zaGFyZS9kb2Mv Z2NjLTEwL1JFQURNRS5CdWdzPiBmb3IgaW5zdHJ1Y3Rpb25zLgpQcmVwcm9jZXNzZWQgc291cmNl IHN0b3JlZCBpbnRvIC90bXAvY2NGcEMxa0Qub3V0IGZpbGUsIHBsZWFzZSBhdHRhY2ggdGhpcyB0 byB5b3VyIGJ1Z3JlcG9ydC4KPT09IEJFR0lOIEdDQyBEVU1QID09PQoxNDQ3NDogLy8gVGFyZ2V0 OiB4ODZfNjQtbGludXgtZ251CjE0NDc0OiAvLyBDb25maWd1cmVkIHdpdGg6IC4uL3NyYy9jb25m aWd1cmUgLXYgLS13aXRoLXBrZ3ZlcnNpb249J0RlYmlhbiAxMC0yMDIwMDMyMS0xJyAtLXdpdGgt YnVndXJsPWZpbGU6Ly8vdXNyL3NoYXJlL2RvYy9nY2MtMTAvUkVBRE1FLkJ1Z3MgLS1lbmFibGUt bGFuZ3VhZ2VzPWMsYysrLGdvLGJyaWcsZCxmb3J0cmFuLG9iamMsb2JqLWMrKyxtMiAtLXByZWZp eD0vdXNyIC0td2l0aC1nY2MtbWFqb3ItdmVyc2lvbi1vbmx5IC0tcHJvZ3JhbS1zdWZmaXg9LTEw IC0tcHJvZ3JhbS1wcmVmaXg9eDg2XzY0LWxpbnV4LWdudS0gLS1lbmFibGUtc2hhcmVkIC0tZW5h YmxlLWxpbmtlci1idWlsZC1pZCAtLWxpYmV4ZWNkaXI9L3Vzci9saWIgLS13aXRob3V0LWluY2x1 ZGVkLWdldHRleHQgLS1lbmFibGUtdGhyZWFkcz1wb3NpeCAtLWxpYmRpcj0vdXNyL2xpYiAtLWVu YWJsZS1ubHMgLS1lbmFibGUtY2xvY2FsZT1nbnUgLS1lbmFibGUtbGlic3RkY3h4LWRlYnVnIC0t ZW5hYmxlLWxpYnN0ZGN4eC10aW1lPXllcyAtLXdpdGgtZGVmYXVsdC1saWJzdGRjeHgtYWJpPW5l dyAtLWVuYWJsZS1nbnUtdW5pcXVlLW9iamVjdCAtLWRpc2FibGUtdnRhYmxlLXZlcmlmeSAtLWVu YWJsZS1wbHVnaW4gLS1lbmFibGUtZGVmYXVsdC1waWUgLS13aXRoLXN5c3RlbS16bGliIC0td2l0 aC10YXJnZXQtc3lzdGVtLXpsaWI9YXV0byAtLWVuYWJsZS1vYmpjLWdjPWF1dG8gLS1lbmFibGUt bXVsdGlhcmNoIC0tZGlzYWJsZS13ZXJyb3IgLS13aXRoLWFyY2gtMzI9aTY4NiAtLXdpdGgtYWJp PW02NCAtLXdpdGgtbXVsdGlsaWItbGlzdD1tMzIsbTY0LG14MzIgLS1lbmFibGUtbXVsdGlsaWIg LS13aXRoLXR1bmU9Z2VuZXJpYyAtLWVuYWJsZS1vZmZsb2FkLXRhcmdldHM9bnZwdHgtbm9uZSxh bWRnY24tYW1kaHNhLGhzYSAtLXdpdGhvdXQtY3VkYS1kcml2ZXIgLS1lbmFibGUtY2hlY2tpbmc9 cmVsZWFzZSAtLWJ1aWxkPXg4Nl82NC1saW51eC1nbnUgLS1ob3N0PXg4Nl82NC1saW51eC1nbnUg LS10YXJnZXQ9eDg2XzY0LWxpbnV4LWdudQoxNDQ3NDogLy8gVGhyZWFkIG1vZGVsOiBwb3NpeAox NDQ3NDogLy8gU3VwcG9ydGVkIExUTyBjb21wcmVzc2lvbiBhbGdvcml0aG1zOiB6bGliIHpzdGQK MTQ0NzQ6IC8vIGdjYyB2ZXJzaW9uIDEwLjAuMSAyMDIwMDMyMSAoZXhwZXJpbWVudGFsKSBbbWFz dGVyIHJldmlzaW9uIDE1NzExZTgzN2IyOmFiNjU4NmNiMDI0OjQ5NzQ5OGM4NzhkNDg3NTQzMThl NDg2NDI4ZTJhYTMwODU0MDIwYjldIChEZWJpYW4gMTAtMjAyMDAzMjEtMSkgCjE0NDc0OiAvLyAK MTQ0NzQ6IC8vIGR1cmluZyBSVEwgcGFzczogY29tYmluZQoxNDQ3NDogLy8gZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYzog SW4gZnVuY3Rpb24g4oCYcm5fdXBkYXRlX2Nsb2Nrc+KAmToKMTQ0NzQ6IC8vIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmM6 MTkzOjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBpbiBpeDg2X2NjX21vZGUsIGF0IGNvbmZp Zy9pMzg2L2kzODYuYzoxNTI4NQoxNDQ3NDogLy8gICAxOTMgfCB9CjE0NDc0OiAvLyAgICAgICB8 IF4KMTQ0NzQ6IC8vIDB4NWQwNmEyIGl4ODZfY2NfbW9kZShydHhfY29kZSwgcnR4X2RlZiosIHJ0 eF9kZWYqKQoxNDQ3NDogLy8gCS4uLy4uL3NyYy9nY2MvY29uZmlnL2kzODYvaTM4Ni5jOjE1Mjg1 CjE0NDc0OiAvLyAweDEyNzhkZTIgc2ltcGxpZnlfc2V0CjE0NDc0OiAvLyAJLi4vLi4vc3JjL2dj Yy9jb21iaW5lLmM6NjkzOAoxNDQ3NDogLy8gMHgxMjdjNDZhIHN1YnN0CjE0NDc0OiAvLyAJLi4v Li4vc3JjL2djYy9jb21iaW5lLmM6NTcxOQoxNDQ3NDogLy8gMHgxMjdjNWZjIHN1YnN0CjE0NDc0 OiAvLyAJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6NTU4MQoxNDQ3NDogLy8gMHgxMjdlN2M5IHRy eV9jb21iaW5lCjE0NDc0OiAvLyAJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6MzQ3OQoxNDQ3NDog Ly8gMHgxMjg0NzcyIGNvbWJpbmVfaW5zdHJ1Y3Rpb25zCjE0NDc0OiAvLyAJLi4vLi4vc3JjL2dj Yy9jb21iaW5lLmM6MTQ2OQoxNDQ3NDogLy8gMHgxMjg0NzcyIHJlc3Rfb2ZfaGFuZGxlX2NvbWJp bmUKMTQ0NzQ6IC8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzoxNTA1OQoxNDQ3NDogLy8gMHgx Mjg0NzcyIGV4ZWN1dGUKMTQ0NzQ6IC8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzoxNTEwNAox NDQ3NDogLy8gUGxlYXNlIHN1Ym1pdCBhIGZ1bGwgYnVnIHJlcG9ydCwKMTQ0NzQ6IC8vIHdpdGgg cHJlcHJvY2Vzc2VkIHNvdXJjZSBpZiBhcHByb3ByaWF0ZS4KMTQ0NzQ6IC8vIFBsZWFzZSBpbmNs dWRlIHRoZSBjb21wbGV0ZSBiYWNrdHJhY2Ugd2l0aCBhbnkgYnVnIHJlcG9ydC4KMTQ0NzQ6IC8v IFNlZSA8ZmlsZTovLy91c3Ivc2hhcmUvZG9jL2djYy0xMC9SRUFETUUuQnVncz4gZm9yIGluc3Ry dWN0aW9ucy4KMTQ0NzQ6IAoxNDQ3NDogLy8gL3Vzci9saWIvZ2NjL3g4Nl82NC1saW51eC1nbnUv MTAvY2MxIC1xdWlldCAtbm9zdGRpbmMgLUkgLi9hcmNoL3g4Ni9pbmNsdWRlIC1JIC4vYXJjaC94 ODYvaW5jbHVkZS9nZW5lcmF0ZWQgLUkgLi9pbmNsdWRlIC1JIC4vYXJjaC94ODYvaW5jbHVkZS91 YXBpIC1JIC4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaSAtSSAuL2luY2x1ZGUvdWFw aSAtSSAuL2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9wb3dlcnBsYXkvaW5jLyAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2luY2x1ZGUvYXNpY19yZWcgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNs dWRlIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vcG93ZXJwbGF5L3NtdW1nciAt SSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2VycGxheS9od21nciAtSSAuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jLyAtSSAuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3IC1JIC4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyIC1JIC4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9tb2R1bGVzL2luYyAtSSAuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9mcmVlc3luYyAtSSAuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9jb2xvciAtSSAuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9pbmZvX3BhY2tldCAtSSAuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9wb3dlciAtSSAuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZG11Yi9pbmMgLUkgLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vaW5jbHVkZS9hc2ljX3JlZyAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2luY2x1ZGUgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9hbWRncHUgLUkgLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9wb3dlcnBsYXkvaW5jIC1JIC4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vYWNwL2luY2x1ZGUgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5IC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9pbmNsdWRlIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k YyAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtIC1J IC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vYW1ka2ZkIC1pbXVsdGlhcmNoIHg4Nl82 NC1saW51eC1nbnUgLUQgX19LRVJORUxfXyAtRCBDT05GSUdfQVNfQ0ZJPTEgLUQgQ09ORklHX0FT X0NGSV9TSUdOQUxfRlJBTUU9MSAtRCBDT05GSUdfQVNfQ0ZJX1NFQ1RJT05TPTEgLUQgQ09ORklH X0FTX1NTU0UzPTEgLUQgQ09ORklHX0FTX0FWWD0xIC1EIENPTkZJR19BU19BVlgyPTEgLUQgQ09O RklHX0FTX0FWWDUxMj0xIC1EIENPTkZJR19BU19TSEExX05JPTEgLUQgQ09ORklHX0FTX1NIQTI1 Nl9OST0xIC1EIENPTkZJR19BU19BRFg9MSAtRCBDQ19VU0lOR19GRU5UUlkgLUQgQlVJTERfRkVB VFVSRV9USU1JTkdfU1lOQz0wIC1EIE1PRFVMRSAtRCBLQlVJTERfQkFTRU5BTUU9InJuX2Nsa19t Z3IiIC1EIEtCVUlMRF9NT0ROQU1FPSJhbWRncHUiIC1pc3lzdGVtIC91c3IvbGliL2djYy94ODZf NjQtbGludXgtZ251LzEwL2luY2x1ZGUgLWluY2x1ZGUgLi9pbmNsdWRlL2xpbnV4L2tjb25maWcu aCAtaW5jbHVkZSAuL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCAtTUQgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxLy5ybl9jbGtfbWdy Lm8uZCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNu MjEvcm5fY2xrX21nci5jIC1xdWlldCAtZHVtcGJhc2Ugcm5fY2xrX21nci5jIC1tbm8tc3NlIC1t bm8tbW14IC1tbm8tc3NlMiAtbW5vLTNkbm93IC1tbm8tYXZ4IC1tNjQgLW1uby04MDM4NyAtbW5v LWZwLXJldC1pbi0zODcgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyAtbXNraXAtcmF4LXNl dHVwIC1tYXJjaD1rOCAtbW5vLXJlZC16b25lIC1tY21vZGVsPWtlcm5lbCAtbWluZGlyZWN0LWJy YW5jaD10aHVuay1leHRlcm4gLW1pbmRpcmVjdC1icmFuY2gtcmVnaXN0ZXIgLW1yZWNvcmQtbWNv dW50IC1tZmVudHJ5IC1hdXhiYXNlLXN0cmlwIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLm8gLU8yIC1XYWxsIC1XdW5kZWYg LVdlcnJvcj1zdHJpY3QtcHJvdG90eXBlcyAtV25vLXRyaWdyYXBocyAtV2Vycm9yPWltcGxpY2l0 LWZ1bmN0aW9uLWRlY2xhcmF0aW9uIC1XZXJyb3I9aW1wbGljaXQtaW50IC1Xbm8tZm9ybWF0LXNl Y3VyaXR5IC1Xbm8tc2lnbi1jb21wYXJlIC1Xbm8tZnJhbWUtYWRkcmVzcyAtV2Zvcm1hdC10cnVu Y2F0aW9uPTAgLVdmb3JtYXQtb3ZlcmZsb3c9MCAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJl ciAtV2ZyYW1lLWxhcmdlci10aGFuPTIwNDggLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAt V2ltcGxpY2l0LWZhbGx0aHJvdWdoPTMgLVd1bnVzZWQtY29uc3QtdmFyaWFibGU9MCAtV2RlY2xh cmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3ZsYSAtV25vLXBvaW50ZXItc2lnbiAtV25vLXN0cmlu Z29wLXRydW5jYXRpb24gLVdlcnJvcj1kYXRlLXRpbWUgLVdlcnJvcj1pbmNvbXBhdGlibGUtcG9p bnRlci10eXBlcyAtV2Vycm9yPWRlc2lnbmF0ZWQtaW5pdCAtV25vLXBhY2tlZC1ub3QtYWxpZ25l ZCAtc3RkPWdudTkwIC1wIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uIC1mc2hvcnQt d2NoYXIgLWZuby1QSUUgLWZhbGlnbi1qdW1wcz0xIC1mYWxpZ24tbG9vcHM9MSAtZm5vLWFzeW5j aHJvbm91cy11bndpbmQtdGFibGVzIC1mbm8tanVtcC10YWJsZXMgLWZuby1kZWxldGUtbnVsbC1w b2ludGVyLWNoZWNrcyAtZnN0YWNrLXByb3RlY3RvciAtZm5vLXZhci10cmFja2luZy1hc3NpZ25t ZW50cyAtZm5vLXN0cmljdC1vdmVyZmxvdyAtZm5vLW1lcmdlLWFsbC1jb25zdGFudHMgLWZtZXJn ZS1jb25zdGFudHMgLWZzdGFjay1jaGVjaz1ubyAtZmNvbnNlcnZlLXN0YWNrIC1mbWFjcm8tcHJl Zml4LW1hcD0uLz0gLWZjZi1wcm90ZWN0aW9uPW5vbmUgLW8gLSAtZnJhbmRvbS1zZWVkPTAgLWZk dW1wLW5vYWRkcgoxNDQ3NDogCjE0NDc0OiAjIDEgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMiCjE0NDc0OiAjIDEgIjxi dWlsdC1pbj4iCjE0NDc0OiAjIDEgIjxjb21tYW5kLWxpbmU+IgoxNDQ3NDogIyAxICIuLy4vaW5j bHVkZS9saW51eC9rY29uZmlnLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIyAxICIuL2luY2x1ZGUvZ2VuZXJhdGVkL2F1dG9jb25mLmgiIDEKMTQ0NzQ6ICMgNiAi Li8uL2luY2x1ZGUvbGludXgva2NvbmZpZy5oIiAyCjE0NDc0OiAjIDEgIjxjb21tYW5kLWxpbmU+ IiAyCjE0NDc0OiAjIDEgIi4vLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiIDEKMTQ0 NzQ6ICMgNTkgIi4vLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiCjE0NDc0OiAjIDEg Ii4vaW5jbHVkZS9saW51eC9jb21waWxlcl9hdHRyaWJ1dGVzLmgiIDEKMTQ0NzQ6ICMgNjAgIi4v Li9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgNjggIi4vLi9pbmNs dWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9j b21waWxlci1nY2MuaCIgMQoxNDQ3NDogIyA2OSAiLi8uL2luY2x1ZGUvbGludXgvY29tcGlsZXJf dHlwZXMuaCIgMgoxNDQ3NDogIyA4NSAiLi8uL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMu aCIKMTQ0NzQ6IHN0cnVjdCBmdHJhY2VfYnJhbmNoX2RhdGEgewoxNDQ3NDogIGNvbnN0IGNoYXIg KmZ1bmM7CjE0NDc0OiAgY29uc3QgY2hhciAqZmlsZTsKMTQ0NzQ6ICB1bnNpZ25lZCBsaW5lOwox NDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHVuc2lnbmVkIGxvbmcg Y29ycmVjdDsKMTQ0NzQ6ICAgIHVuc2lnbmVkIGxvbmcgaW5jb3JyZWN0OwoxNDQ3NDogICB9Owox NDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBtaXNzOwoxNDQ3NDogICAg dW5zaWduZWQgbG9uZyBoaXQ7CjE0NDc0OiAgIH07CjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgbWlz c19oaXRbMl07CjE0NDc0OiAgfTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmdHJh Y2VfbGlrZWx5X2RhdGEgewoxNDQ3NDogIHN0cnVjdCBmdHJhY2VfYnJhbmNoX2RhdGEgZGF0YTsK MTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGNvbnN0YW50OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMSAiPGNv bW1hbmQtbGluZT4iIDIKMTQ0NzQ6ICMgMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKMTQ0NzQ6ICMgMjYgImRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtf bWdyLmMiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9pbmMvaHcvZGNjZy5oIiAxCjE0NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2RjY2cuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX3R5cGVzLmgiIDEKMTQ0NzQ6ICMg MzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5o IgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv b3NfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL29zX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9rZ2Ri LmgiIDEKMTQ0NzQ6ICMgMTYgIi4vaW5jbHVkZS9saW51eC9rZ2RiLmgiCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCIgMQoxNDQ3NDog IyA2ICIuL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9zdHJpbmdpZnkuaCIgMQoxNDQ3NDogIyA3ICIuL2luY2x1ZGUvbGludXgvbGlua2FnZS5o IiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9leHBvcnQuaCIgMQoxNDQ3NDogIyAxNiAi Li9pbmNsdWRlL2xpbnV4L2V4cG9ydC5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBtb2R1bGUgX190 aGlzX21vZHVsZTsKMTQ0NzQ6ICMgNDMgIi4vaW5jbHVkZS9saW51eC9leHBvcnQuaCIKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDEKMTQ0NzQ6ICMgMTgwICIuL2luY2x1 ZGUvbGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvdHlw ZXMuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJj aC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vdHlwZXMuaCIgMQoxNDQ3NDogIyAxICIu L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy90eXBlcy5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9pbnQtbGw2NC5oIiAxCjE0NDc0OiAjIDExICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvaW50 LWxsNjQuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaW50LWxsNjQu aCIgMQoxNDQ3NDogIyAxMiAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaW50LWxsNjQuaCIK MTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2JpdHNwZXJsb25nLmgiIDEK MTQ0NzQ6ICMgMTEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9iaXRzcGVybG9uZy5oIgox NDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0c3BlcmxvbmcuaCIgMQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1n ZW5lcmljL2JpdHNwZXJsb25nLmgiIDEKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmlj L2JpdHNwZXJsb25nLmgiIDIKMTQ0NzQ6ICMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2Fz bS9iaXRzcGVybG9uZy5oIiAyCjE0NDc0OiAjIDEzICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJp Yy9pbnQtbGw2NC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgX19zaWduZWRfXyBjaGFyIF9fczg7CjE0NDc0 OiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191ODsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX3Np Z25lZF9fIHNob3J0IF9fczE2OwoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3UxNjsK MTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKMTQ0NzQ6IHR5cGVk ZWYgdW5zaWduZWQgaW50IF9fdTMyOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IF9fZXh0ZW5zaW9u X18gdHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKMTQ0NzQ6IF9fZXh0ZW5zaW9u X18gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX191NjQ7CjE0NDc0OiAjIDEyICIuL2luY2x1 ZGUvYXNtLWdlbmVyaWMvaW50LWxsNjQuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiB0eXBlZGVmIF9fczggczg7CjE0NDc0OiB0eXBlZGVmIF9fdTggdTg7CjE0NDc0 OiB0eXBlZGVmIF9fczE2IHMxNjsKMTQ0NzQ6IHR5cGVkZWYgX191MTYgdTE2OwoxNDQ3NDogdHlw ZWRlZiBfX3MzMiBzMzI7CjE0NDc0OiB0eXBlZGVmIF9fdTMyIHUzMjsKMTQ0NzQ6IHR5cGVkZWYg X19zNjQgczY0OwoxNDQ3NDogdHlwZWRlZiBfX3U2NCB1NjQ7CjE0NDc0OiAjIDggIi4vaW5jbHVk ZS91YXBpL2FzbS1nZW5lcmljL3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2dlbmVyYXRlZC91YXBpL2FzbS90eXBlcy5oIiAyCjE0NDc0OiAjIDYgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMTQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3R5 cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDEK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgvc3RkZGVmLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zdGRkZWYuaCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUv bGludXgvc3RkZGVmLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSB7CjE0NDc0OiAgZmFsc2UgPSAwLAoxNDQ3NDogIHRydWUgPSAxCjE0NDc0OiB9OwoxNDQ3 NDogIyA2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9wb3NpeF90eXBlcy5oIiAyCjE0NDc0OiAjIDI1 ICIuL2luY2x1ZGUvdWFwaS9saW51eC9wb3NpeF90eXBlcy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1 Y3QgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmRzX2JpdHNbMTAyNCAvICg4ICogc2l6ZW9mKGxv bmcpKV07CjE0NDc0OiB9IF9fa2VybmVsX2ZkX3NldDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0 eXBlZGVmIHZvaWQgKCpfX2tlcm5lbF9zaWdoYW5kbGVyX3QpKGludCk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7CjE0NDc0OiB0eXBlZGVmIGludCBf X2tlcm5lbF9tcWRfdDsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3Bvc2l4X3R5cGVzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vcG9zaXhfdHlwZXNfNjQuaCIgMQoxNDQ3 NDogIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3Bvc2l4X3R5cGVzXzY0LmgiCjE0 NDc0OiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF91aWRfdDsKMTQ0NzQ6IHR5 cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfb2xkX2dpZF90OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBfX2tlcm5lbF9vbGRfZGV2X3Q7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9wb3NpeF90eXBl cy5oIiAxCjE0NDc0OiAjIDE1ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9wb3NpeF90eXBl cy5oIgoxNDQ3NDogdHlwZWRlZiBsb25nIF9fa2VybmVsX2xvbmdfdDsKMTQ0NzQ6IHR5cGVkZWYg dW5zaWduZWQgbG9uZyBfX2tlcm5lbF91bG9uZ190OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdHlwZWRlZiBfX2tlcm5lbF91bG9uZ190IF9fa2VybmVsX2lub190OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfbW9kZV90 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBpbnQgX19rZXJuZWxfcGlk X3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGludCBfX2tlcm5lbF9p cGNfcGlkX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVk IGludCBfX2tlcm5lbF91aWRfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVs X2dpZF90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9s b25nX3QgX19rZXJuZWxfc3VzZWNvbmRzX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiB0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfdWlkMzJfdDsKMTQ0NzQ6IHR5cGVk ZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX2dpZDMyX3Q7CjE0NDc0OiAjIDcyICIuL2luY2x1ZGUv dWFwaS9hc20tZ2VuZXJpYy9wb3NpeF90eXBlcy5oIgoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF91 bG9uZ190IF9fa2VybmVsX3NpemVfdDsKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9f a2VybmVsX3NzaXplX3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9w dHJkaWZmX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYg c3RydWN0IHsKMTQ0NzQ6ICBpbnQgdmFsWzJdOwoxNDQ3NDogfSBfX2tlcm5lbF9mc2lkX3Q7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX2tl cm5lbF9sb25nX3QgX19rZXJuZWxfb2ZmX3Q7CjE0NDc0OiB0eXBlZGVmIGxvbmcgbG9uZyBfX2tl cm5lbF9sb2ZmX3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9vbGRf dGltZV90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBsb25nIGxvbmcg X19rZXJuZWxfdGltZTY0X3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5l bF9jbG9ja190OwoxNDQ3NDogdHlwZWRlZiBpbnQgX19rZXJuZWxfdGltZXJfdDsKMTQ0NzQ6IHR5 cGVkZWYgaW50IF9fa2VybmVsX2Nsb2NraWRfdDsKMTQ0NzQ6IHR5cGVkZWYgY2hhciAqIF9fa2Vy bmVsX2NhZGRyX3Q7CjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX3VpZDE2 X3Q7CjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2dpZDE2X3Q7CjE0NDc0 OiAjIDE5ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vcG9zaXhfdHlwZXNfNjQuaCIgMgox NDQ3NDogIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDIKMTQ0NzQ6 ICMgMzcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMTUg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMjkgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L3R5cGVzLmgiCjE0NDc0OiB0eXBlZGVmIF9fdTE2IF9fbGUxNjsKMTQ0NzQ6IHR5 cGVkZWYgX191MTYgX19iZTE2OwoxNDQ3NDogdHlwZWRlZiBfX3UzMiBfX2xlMzI7CjE0NDc0OiB0 eXBlZGVmIF9fdTMyIF9fYmUzMjsKMTQ0NzQ6IHR5cGVkZWYgX191NjQgX19sZTY0OwoxNDQ3NDog dHlwZWRlZiBfX3U2NCBfX2JlNjQ7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgX191MTYgX19zdW0x NjsKMTQ0NzQ6IHR5cGVkZWYgX191MzIgX193c3VtOwoxNDQ3NDogIyA1MiAiLi9pbmNsdWRlL3Vh cGkvbGludXgvdHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgX19wb2xsX3Q7CjE0NDc0 OiAjIDE4MSAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDIKMTQ0NzQ6ICMgMTk2ICIuL2lu Y2x1ZGUvbGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygoX19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCjE0NDc0OiB2b2lkIF9fcmVhZF9vbmNlX3NpemUoY29uc3Qgdm9sYXRpbGUg dm9pZCAqcCwgdm9pZCAqcmVzLCBpbnQgc2l6ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyBzd2l0Y2gg KHNpemUpIHsgY2FzZSAxOiAqKF9fdTggKilyZXMgPSAqKHZvbGF0aWxlIF9fdTggKilwOyBicmVh azsgY2FzZSAyOiAqKF9fdTE2ICopcmVzID0gKih2b2xhdGlsZSBfX3UxNiAqKXA7IGJyZWFrOyBj YXNlIDQ6ICooX191MzIgKilyZXMgPSAqKHZvbGF0aWxlIF9fdTMyICopcDsgYnJlYWs7IGNhc2Ug ODogKihfX3U2NCAqKXJlcyA9ICoodm9sYXRpbGUgX191NjQgKilwOyBicmVhazsgZGVmYXVsdDog X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgX19idWlsdGluX21lbWNweSgo dm9pZCAqKXJlcywgKGNvbnN0IHZvaWQgKilwLCBzaXplKTsgX19hc21fXyBfX3ZvbGF0aWxlX18o IiI6IDogOiJtZW1vcnkiKTsgfSB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjE0ICIuL2luY2x1ZGUv bGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo X19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpCjE0NDc0OiB2b2lkIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjayhjb25zdCB2b2xhdGls ZSB2b2lkICpwLCB2b2lkICpyZXMsIGludCBzaXplKQoxNDQ3NDogewoxNDQ3NDogICh7IHN3aXRj aCAoc2l6ZSkgeyBjYXNlIDE6ICooX191OCAqKXJlcyA9ICoodm9sYXRpbGUgX191OCAqKXA7IGJy ZWFrOyBjYXNlIDI6ICooX191MTYgKilyZXMgPSAqKHZvbGF0aWxlIF9fdTE2ICopcDsgYnJlYWs7 IGNhc2UgNDogKihfX3UzMiAqKXJlcyA9ICoodm9sYXRpbGUgX191MzIgKilwOyBicmVhazsgY2Fz ZSA4OiAqKF9fdTY0ICopcmVzID0gKih2b2xhdGlsZSBfX3U2NCAqKXA7IGJyZWFrOyBkZWZhdWx0 OiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBfX2J1aWx0aW5fbWVtY3B5 KCh2b2lkICopcmVzLCAoY29uc3Qgdm9pZCAqKXAsIHNpemUpOyBfX2FzbV9fIF9fdm9sYXRpbGVf XygiIjogOiA6Im1lbW9yeSIpOyB9IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fd3JpdGVfb25jZV9zaXplKHZv bGF0aWxlIHZvaWQgKnAsIHZvaWQgKnJlcywgaW50IHNpemUpCjE0NDc0OiB7CjE0NDc0OiAgc3dp dGNoIChzaXplKSB7CjE0NDc0OiAgY2FzZSAxOiAqKHZvbGF0aWxlIF9fdTggKilwID0gKihfX3U4 ICopcmVzOyBicmVhazsKMTQ0NzQ6ICBjYXNlIDI6ICoodm9sYXRpbGUgX191MTYgKilwID0gKihf X3UxNiAqKXJlczsgYnJlYWs7CjE0NDc0OiAgY2FzZSA0OiAqKHZvbGF0aWxlIF9fdTMyICopcCA9 ICooX191MzIgKilyZXM7IGJyZWFrOwoxNDQ3NDogIGNhc2UgODogKih2b2xhdGlsZSBfX3U2NCAq KXAgPSAqKF9fdTY0ICopcmVzOyBicmVhazsKMTQ0NzQ6ICBkZWZhdWx0OgoxNDQ3NDogICBfX2Fz bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogICBfX2J1aWx0aW5fbWVt Y3B5KCh2b2lkICopcCwgKGNvbnN0IHZvaWQgKilyZXMsIHNpemUpOwoxNDQ3NDogICBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjU2ICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9iYXJyaWVyLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgiIDEKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVkZS9saW51eC90 eXBlcy5oIgoxNDQ3NDogdHlwZWRlZiB1MzIgX19rZXJuZWxfZGV2X3Q7CjE0NDc0OiAKMTQ0NzQ6 IHR5cGVkZWYgX19rZXJuZWxfZmRfc2V0IGZkX3NldDsKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxf ZGV2X3QgZGV2X3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2lub190IGlub190OwoxNDQ3NDog dHlwZWRlZiBfX2tlcm5lbF9tb2RlX3QgbW9kZV90OwoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCB1bW9kZV90OwoxNDQ3NDogdHlwZWRlZiB1MzIgbmxpbmtfdDsKMTQ0NzQ6IHR5cGVkZWYg X19rZXJuZWxfb2ZmX3Qgb2ZmX3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX3BpZF90IHBpZF90 OwoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9kYWRkcl90IGRhZGRyX3Q7CjE0NDc0OiB0eXBlZGVm IF9fa2VybmVsX2tleV90IGtleV90OwoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9zdXNlY29uZHNf dCBzdXNlY29uZHNfdDsKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfdGltZXJfdCB0aW1lcl90Owox NDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9jbG9ja2lkX3QgY2xvY2tpZF90OwoxNDQ3NDogdHlwZWRl ZiBfX2tlcm5lbF9tcWRfdCBtcWRfdDsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfQm9vbCBib29s OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX3VpZDMyX3QgdWlkX3Q7CjE0NDc0OiB0 eXBlZGVmIF9fa2VybmVsX2dpZDMyX3QgZ2lkX3Q7CjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX3Vp ZDE2X3QgdWlkMTZfdDsKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfZ2lkMTZfdCBnaWQxNl90Owox NDQ3NDogCjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OwoxNDQ3NDogIyA0 NiAiLi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCjE0NDc0OiB0eXBlZGVmIF9fa2VybmVsX2xvZmZf dCBsb2ZmX3Q7CjE0NDc0OiAjIDU1ICIuL2luY2x1ZGUvbGludXgvdHlwZXMuaCIKMTQ0NzQ6IHR5 cGVkZWYgX19rZXJuZWxfc2l6ZV90IHNpemVfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9zc2l6ZV90IHNzaXplX3Q7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfcHRyZGlmZl90IHB0 cmRpZmZfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBf X2tlcm5lbF9jbG9ja190IGNsb2NrX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfY2FkZHJfdCBjYWRkcl90OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVfY2hhcjsKMTQ0NzQ6IHR5cGVk ZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IHVf aW50OwoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdW5jaGFyOwoxNDQ3NDogdHlwZWRlZiB1bnNp Z25lZCBzaG9ydCB1c2hvcnQ7CjE0NDc0OiB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwoxNDQ3 NDogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiB0eXBlZGVmIHU4IHVfaW50OF90OwoxNDQ3NDogdHlwZWRlZiBzOCBpbnQ4 X3Q7CjE0NDc0OiB0eXBlZGVmIHUxNiB1X2ludDE2X3Q7CjE0NDc0OiB0eXBlZGVmIHMxNiBpbnQx Nl90OwoxNDQ3NDogdHlwZWRlZiB1MzIgdV9pbnQzMl90OwoxNDQ3NDogdHlwZWRlZiBzMzIgaW50 MzJfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdTggdWludDhfdDsK MTQ0NzQ6IHR5cGVkZWYgdTE2IHVpbnQxNl90OwoxNDQ3NDogdHlwZWRlZiB1MzIgdWludDMyX3Q7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1NjQgdWludDY0X3Q7CjE0NDc0OiB0eXBl ZGVmIHU2NCB1X2ludDY0X3Q7CjE0NDc0OiB0eXBlZGVmIHM2NCBpbnQ2NF90OwoxNDQ3NDogIyAx MjUgIi4vaW5jbHVkZS9saW51eC90eXBlcy5oIgoxNDQ3NDogdHlwZWRlZiB1NjQgc2VjdG9yX3Q7 CjE0NDc0OiB0eXBlZGVmIHU2NCBibGtjbnRfdDsKMTQ0NzQ6ICMgMTQzICIuL2luY2x1ZGUvbGlu dXgvdHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgdTY0IGRtYV9hZGRyX3Q7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IGdmcF90OwoxNDQ3 NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2xhYl9mbGFnc190OwoxNDQ3NDogdHlwZWRlZiB1bnNp Z25lZCBpbnQgZm1vZGVfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHU2NCBwaHlz X2FkZHJfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBw aHlzX2FkZHJfdCByZXNvdXJjZV9zaXplX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlycV9od19udW1iZXJfdDsK MTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIGludCBjb3VudGVyOwoxNDQ3 NDogfSBhdG9taWNfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0 NDc0OiAgczY0IGNvdW50ZXI7CjE0NDc0OiB9IGF0b21pYzY0X3Q7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGxpc3RfaGVhZCB7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCwg KnByZXY7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaGxpc3RfaGVhZCB7CjE0NDc0 OiAgc3RydWN0IGhsaXN0X25vZGUgKmZpcnN0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGhsaXN0X25vZGUgewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlICpuZXh0LCAqKnBwcmV2 OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHVzdGF0IHsKMTQ0NzQ6ICBfX2tlcm5l bF9kYWRkcl90IGZfdGZyZWU7CjE0NDc0OiAgX19rZXJuZWxfaW5vX3QgZl90aW5vZGU7CjE0NDc0 OiAgY2hhciBmX2ZuYW1lWzZdOwoxNDQ3NDogIGNoYXIgZl9mcGFja1s2XTsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDIxNCAiLi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgY2FsbGJh Y2tfaGVhZCB7CjE0NDc0OiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgKm5leHQ7CjE0NDc0OiAgdm9p ZCAoKmZ1bmMpKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKTsKMTQ0NzQ6IH0gX19hdHRyaWJ1 dGVfXygoYWxpZ25lZChzaXplb2Yodm9pZCAqKSkpKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0 eXBlZGVmIHZvaWQgKCpyY3VfY2FsbGJhY2tfdCkoc3RydWN0IGNhbGxiYWNrX2hlYWQgKmhlYWQp OwoxNDQ3NDogdHlwZWRlZiB2b2lkICgqY2FsbF9yY3VfZnVuY190KShzdHJ1Y3QgY2FsbGJhY2tf aGVhZCAqaGVhZCwgcmN1X2NhbGxiYWNrX3QgZnVuYyk7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYg dm9pZCAoKnN3YXBfZnVuY190KSh2b2lkICphLCB2b2lkICpiLCBpbnQgc2l6ZSk7CjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgaW50ICgqY21wX3JfZnVuY190KShjb25zdCB2b2lkICphLCBjb25zdCB2 b2lkICpiLCBjb25zdCB2b2lkICpwcml2KTsKMTQ0NzQ6IHR5cGVkZWYgaW50ICgqY21wX2Z1bmNf dCkoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7CjE0NDc0OiAjIDggIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYWx0ZXJuYXRpdmUuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hc20uaCIgMQoxNDQ3NDogIyAxODIgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXNtLmgiCjE0NDc0OiByZWdpc3RlciB1bnNpZ25lZCBsb25nIGN1cnJlbnRf c3RhY2tfcG9pbnRlciBhc20oInJzcCIpOwoxNDQ3NDogIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hbHRlcm5hdGl2ZS5oIiAyCjE0NDc0OiAjIDU4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L2FsdGVybmF0aXZlLmgiCjE0NDc0OiBzdHJ1Y3QgYWx0X2luc3RyIHsKMTQ0NzQ6ICBzMzIgaW5z dHJfb2Zmc2V0OwoxNDQ3NDogIHMzMiByZXBsX29mZnNldDsKMTQ0NzQ6ICB1MTYgY3B1aWQ7CjE0 NDc0OiAgdTggaW5zdHJsZW47CjE0NDc0OiAgdTggcmVwbGFjZW1lbnRsZW47CjE0NDc0OiAgdTgg cGFkbGVuOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBhbHRlcm5hdGl2 ZXNfcGF0Y2hlZDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgYWx0ZXJuYXRpdmVfaW5zdHJ1 Y3Rpb25zKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYXBwbHlfYWx0ZXJuYXRpdmVzKHN0cnVj dCBhbHRfaW5zdHIgKnN0YXJ0LCBzdHJ1Y3QgYWx0X2luc3RyICplbmQpOwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgbW9kdWxlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGFsdGVy bmF0aXZlc19zbXBfbW9kdWxlX2FkZChzdHJ1Y3QgbW9kdWxlICptb2QsIGNoYXIgKm5hbWUsCjE0 NDc0OiAgICAgIHZvaWQgKmxvY2tzLCB2b2lkICpsb2Nrc19lbmQsCjE0NDc0OiAgICAgIHZvaWQg KnRleHQsIHZvaWQgKnRleHRfZW5kKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGFsdGVybmF0aXZlc19z bXBfbW9kdWxlX2RlbChzdHJ1Y3QgbW9kdWxlICptb2QpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYWx0 ZXJuYXRpdmVzX2VuYWJsZV9zbXAodm9pZCk7CjE0NDc0OiBleHRlcm4gaW50IGFsdGVybmF0aXZl c190ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpOwoxNDQ3NDogZXh0ZXJuIGJv b2wgc2tpcF9zbXBfYWx0ZXJuYXRpdmVzOwoxNDQ3NDogIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2JhcnJpZXIuaCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vcHMu aCIgMQoxNDQ3NDogIyAxNDMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9wcy5oIgoxNDQ3NDog ZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBjb25zdCAqaWRlYWxfbm9wczsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGFyY2hfaW5pdF9pZGVhbF9ub3BzKHZvaWQpOwoxNDQ3NDogIyA3ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2JhcnJpZXIuaCIgMgoxNDQ3NDogIyAzNiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9iYXJyaWVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgdW5zaWduZWQgbG9uZyBhcnJheV9pbmRleF9t YXNrX25vc3BlYyh1bnNpZ25lZCBsb25nIGluZGV4LAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIHNp emUpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtYXNrOwoxNDQ3NDogCjE0NDc0OiAg YXNtIHZvbGF0aWxlICgiY21wICUxLCUyOyBzYmIgJTAsJTA7IgoxNDQ3NDogICAgOiI9ciIgKG1h c2spCjE0NDc0OiAgICA6ImciKHNpemUpLCJyIiAoaW5kZXgpCjE0NDc0OiAgICA6ImNjIik7CjE0 NDc0OiAgcmV0dXJuIG1hc2s7CjE0NDc0OiB9CjE0NDc0OiAjIDg1ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2JhcnJpZXIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JhcnJp ZXIuaCIgMQoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JhcnJpZXIuaCIKMTQ0 NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDEKMTQ0NzQ6ICMgMTcgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9iYXJyaWVyLmgiIDIKMTQ0NzQ6ICMgODYgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vYmFycmllci5oIiAyCjE0NDc0OiAjIDI1NyAiLi9pbmNsdWRlL2xpbnV4L2NvbXBp bGVyLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLWNoZWNrcy5oIiAxCjE0 NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgva2FzYW4tY2hlY2tzLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgYm9v bCBfX2thc2FuX2NoZWNrX3JlYWQoY29uc3Qgdm9sYXRpbGUgdm9pZCAqcCwgdW5zaWduZWQgaW50 IHNpemUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkg Ym9vbCBfX2thc2FuX2NoZWNrX3dyaXRlKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVk IGludCBzaXplKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDog IyAzNCAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLWNoZWNrcy5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChfX25vX2luc3RydW1lbnRfZnVuY3Rpb25fXykpIGJvb2wga2Fz YW5fY2hlY2tfcmVhZChjb25zdCB2b2xhdGlsZSB2b2lkICpwLCB1bnNpZ25lZCBpbnQgc2l6ZSkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygoX19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSBib29sIGth c2FuX2NoZWNrX3dyaXRlKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVkIGludCBzaXpl KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogIyAyNTggIi4v aW5jbHVkZS9saW51eC9jb21waWxlci5oIiAyCjE0NDc0OiAjIDI3NyAiLi9pbmNsdWRlL2xpbnV4 L2NvbXBpbGVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9f aW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQoxNDQ3NDogdW5zaWduZWQgbG9uZyByZWFkX3dvcmRfYXRfYV90aW1lKGNvbnN0IHZvaWQgKmFk ZHIpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfcmVhZChhZGRyLCAxKTsKMTQ0NzQ6ICBy ZXR1cm4gKih1bnNpZ25lZCBsb25nICopYWRkcjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzA4ICIuL2lu Y2x1ZGUvbGludXgvY29tcGlsZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygoX19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSB2b2lkICpvZmZzZXRfdG9fcHRyKGNv bnN0IGludCAqb2ZmKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAqKSgodW5zaWduZWQg bG9uZylvZmYgKyAqb2ZmKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDQgIi4vaW5jbHVkZS9saW51eC9l eHBvcnQuaCIgMgoxNDQ3NDogIyA2MCAiLi9pbmNsdWRlL2xpbnV4L2V4cG9ydC5oIgoxNDQ3NDog c3RydWN0IGtlcm5lbF9zeW1ib2wgewoxNDQ3NDogIGludCB2YWx1ZV9vZmZzZXQ7CjE0NDc0OiAg aW50IG5hbWVfb2Zmc2V0OwoxNDQ3NDogIGludCBuYW1lc3BhY2Vfb2Zmc2V0OwoxNDQ3NDogfTsK MTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMgoxNDQ3NDogIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2xpbmthZ2UuaCIgMQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGlu dXgvbGlua2FnZS5oIiAyCjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgva2dkYi5oIiAyCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9pbml0LmgiIDEKMTQ0NzQ6ICMgMTE2ICIuL2luY2x1 ZGUvbGludXgvaW5pdC5oIgoxNDQ3NDogdHlwZWRlZiBpbnQgKCppbml0Y2FsbF90KSh2b2lkKTsK MTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKmV4aXRjYWxsX3QpKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgaW50IGluaXRjYWxsX2VudHJ5X3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGluaXRj YWxsX3QgaW5pdGNhbGxfZnJvbV9lbnRyeShpbml0Y2FsbF9lbnRyeV90ICplbnRyeSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gb2Zmc2V0X3RvX3B0cihlbnRyeSk7CjE0NDc0OiB9CjE0NDc0OiAj IDEzNSAiLi9pbmNsdWRlL2xpbnV4L2luaXQuaCIKMTQ0NzQ6IGV4dGVybiBpbml0Y2FsbF9lbnRy eV90IF9fY29uX2luaXRjYWxsX3N0YXJ0W10sIF9fY29uX2luaXRjYWxsX2VuZFtdOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKmN0b3JfZm5fdCkodm9pZCk7CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgZG9fb25lX2luaXRjYWxsKGluaXRjYWxsX3QgZm4pOwoxNDQ3NDogZXh0ZXJuIGNo YXIgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LmRhdGEiKSkpIGJvb3RfY29tbWFu ZF9saW5lW107CjE0NDc0OiBleHRlcm4gY2hhciAqc2F2ZWRfY29tbWFuZF9saW5lOwoxNDQ3NDog ZXh0ZXJuIHVuc2lnbmVkIGludCByZXNldF9kZXZpY2VzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHZvaWQgc2V0dXBfYXJjaChjaGFyICoqKTsKMTQ0NzQ6IHZvaWQgcHJlcGFyZV9uYW1lc3BhY2Uo dm9pZCk7CjE0NDc0OiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0 IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIGluaXRfcm9vdGZzKHZvaWQpOwoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIHJvb3Rmc19mc190eXBlOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBib29sIHJvZGF0YV9lbmFibGVkOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHZvaWQgbWFya19yb2RhdGFfcm8odm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHZvaWQgKCpsYXRlX3RpbWVfaW5pdCkodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBib29sIGluaXRjYWxsX2RlYnVnOwoxNDQ3NDogIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2tnZGIu aCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvYXRvbWljLmgiIDEKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vY21weGNoZy5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgiIDEKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcmVxdWlyZWQtZmVhdHVyZXMuaCIgMQoxNDQ3NDogIyA3ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9kaXNhYmxlZC1mZWF0dXJlcy5oIiAxCjE0 NDc0OiAjIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmVzLmgiIDIKMTQ0NzQ6 ICMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgiIDIKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIF9feGNo Z193cm9uZ19zaXplKHZvaWQpCjE0NDc0OiAgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJCYWQg YXJndW1lbnQgc2l6ZSBmb3IgeGNoZyIpKSk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2NtcHhjaGdf d3Jvbmdfc2l6ZSh2b2lkKQoxNDQ3NDogIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQmFkIGFy Z3VtZW50IHNpemUgZm9yIGNtcHhjaGciKSkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX194YWRkX3dy b25nX3NpemUodm9pZCkKMTQ0NzQ6ICBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJhZCBhcmd1 bWVudCBzaXplIGZvciB4YWRkIikpKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYWRkX3dyb25nX3Np emUodm9pZCkKMTQ0NzQ6ICBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJhZCBhcmd1bWVudCBz aXplIGZvciBhZGQiKSkpOwoxNDQ3NDogIyAxNDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY21w eGNoZy5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NtcHhjaGdfNjQuaCIg MQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF82NGJpdCh2 b2xhdGlsZSB1NjQgKnB0ciwgdTY0IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAqcHRyID0gdmFsOwox NDQ3NDogfQoxNDQ3NDogIyAxNDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY21weGNoZy5oIiAy CjE0NDc0OiAjIDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiIDIKMTQ0NzQ6ICMg MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ybXdjYy5oIiAxCjE0NDc0OiAjIDEwICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAyCjE0NDc0OiAjIDI1ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2F0b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBpbnQgYXJjaF9hdG9taWNfcmVhZChjb25zdCBhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoeyB1bmlvbiB7IHR5cGVv ZigodiktPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRf b25jZV9zaXplKCYoKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKCh2KS0+Y291bnRlcikp OyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCh2KS0+Y291bnRlciksIF9fdS5fX2Ms IHNpemVvZigodiktPmNvdW50ZXIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgNDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9taWNf c2V0KGF0b21pY190ICp2LCBpbnQgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVv Zih2LT5jb3VudGVyKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5 cGVvZih2LT5jb3VudGVyKSkgKGkpIH07IF9fd3JpdGVfb25jZV9zaXplKCYodi0+Y291bnRlciks IF9fdS5fX2MsIHNpemVvZih2LT5jb3VudGVyKSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0 NDc0OiAjIDUzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFyY2hfYXRvbWljX2FkZChpbnQgaSwg YXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24g LnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBv cHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiYWRkbCAlMSwlMCIKMTQ0NzQ6ICAgICAg ICA6ICIrbSIgKHYtPmNvdW50ZXIpCjE0NDc0OiAgICAgICAgOiAiaXIiIChpKSA6ICJtZW1vcnki KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9t aWNfc3ViKGludCBpLCBhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJzdWJsICUxLCUw IgoxNDQ3NDogICAgICAgIDogIittIiAodi0+Y291bnRlcikKMTQ0NzQ6ICAgICAgICA6ICJpciIg KGkpIDogIm1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogIyA4MyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hdG9taWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg Ym9vbCBhcmNoX2F0b21pY19zdWJfYW5kX3Rlc3QoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAu c21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9w c2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJzdWJsIiAiICVbdmFsXSwgIiAiJVt2YXJd IiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20i ICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiBbdmFsXSAiZXIiIChpKSA6ICJtZW1vcnki KTsgYzsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDk1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0 b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFy Y2hfYXRvbWljX2luYyhhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJpbmNsICUwIgox NDQ3NDogICAgICAgIDogIittIiAodi0+Y291bnRlcikgOjogIm1lbW9yeSIpOwoxNDQ3NDogfQox NDQ3NDogIyAxMDggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9taWNfZGVjKGF0b21p Y190ICp2KQoxNDQ3NDogewoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBf bG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0 aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImRlY2wgJTAiCjE0NDc0OiAgICAgICAgOiAiK20i ICh2LT5jb3VudGVyKSA6OiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAjIDEyMyAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgYm9vbCBhcmNoX2F0b21pY19kZWNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsgYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0 aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIg Ii5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImRlY2wiICIgIiAiJVt2YXJdIiAi XG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2 LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiA6ICJtZW1vcnkiKTsgYzsgfSk7CjE0NDc0OiB9 CjE0NDc0OiAjIDEzNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBhcmNoX2F0b21pY19pbmNfYW5k X3Rlc3QoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsgYXNt IHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxu IiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIg ImluY2wiICIgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAi Ki9cbiIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiA6ICJtZW1v cnkiKTsgYzsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE1MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9hdG9taWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9v bCBhcmNoX2F0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21w X2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2Vj dGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhZGRsIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAi XG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJzIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2 LT5jb3VudGVyKSwgIj1AY2MiICJzIiAoYykgOiBbdmFsXSAiZXIiIChpKSA6ICJtZW1vcnkiKTsg YzsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE2NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9t aWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGFyY2hf YXRvbWljX2FkZF9yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBpICsgKHsgX190eXBlb2ZfXyAoKigoKCZ2LT5jb3VudGVyKSkpKSBfX3JldCA9ICgoKGkp KSk7IHN3aXRjaCAoc2l6ZW9mKCooKCgmdi0+Y291bnRlcikpKSkpIHsgY2FzZSAxOiBhc20gdm9s YXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFk ZCIgImIgJWIwLCAlMVxuIiA6ICIrcSIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkp KSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIucHVz aHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0g LlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgIncgJXcwLCAl MVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9y eSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNt cF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNl Y3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgImwgJTAsICUxXG4iIDogIityIiAo X19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJy ZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwi XG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcx OiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAicSAlcTAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20i ICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0 OiBfX3hhZGRfd3Jvbmdfc2l6ZSgpOyB9IF9fcmV0OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTc3 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgYXJjaF9hdG9taWNfc3ViX3JldHVybihpbnQgaSwgYXRv bWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljX2FkZF9yZXR1cm4o LWksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGludCBhcmNoX2F0b21pY19mZXRjaF9hZGQoaW50IGksIGF0b21pY190ICp2KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyBfX3R5cGVvZl9fICgqKCgoJnYtPmNvdW50ZXIpKSkp IF9fcmV0ID0gKCgoaSkpKTsgc3dpdGNoIChzaXplb2YoKigoKCZ2LT5jb3VudGVyKSkpKSkgeyBj YXNlIDE6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJ4YWRkIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20iICgqKCgo JnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDI6IGFzbSB2 b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIg Ii5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4 YWRkIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIp KSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIi5w dXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYg LSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAibCAlMCwg JTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJxICVxMCwgJTFcbiIgOiAiK3Ii IChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsg YnJlYWs7IGRlZmF1bHQ6IF9feGFkZF93cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0pOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBh cmNoX2F0b21pY19mZXRjaF9zdWIoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiAoeyBfX3R5cGVvZl9fICgqKCgoJnYtPmNvdW50ZXIpKSkpIF9fcmV0ID0gKCgoLWkp KSk7IHN3aXRjaCAoc2l6ZW9mKCooKCgmdi0+Y291bnRlcikpKSkpIHsgY2FzZSAxOiBhc20gdm9s YXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFk ZCIgImIgJWIwLCAlMVxuIiA6ICIrcSIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkp KSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIucHVz aHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0g LlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgIncgJXcwLCAl MVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9y eSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNt cF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNl Y3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgImwgJTAsICUxXG4iIDogIityIiAo X19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJy ZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwi XG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcx OiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAicSAlcTAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20i ICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0 OiBfX3hhZGRfd3Jvbmdfc2l6ZSgpOyB9IF9fcmV0OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgYXJjaF9hdG9taWNfY21w eGNoZyhhdG9taWNfdCAqdiwgaW50IG9sZCwgaW50IG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHsgX190eXBlb2ZfXygqKCgmdi0+Y291bnRlcikpKSBfX3JldDsgX190eXBlb2ZfXygqKCgm di0+Y291bnRlcikpKSBfX29sZCA9ICgob2xkKSk7IF9fdHlwZW9mX18oKigoJnYtPmNvdW50ZXIp KSkgX19uZXcgPSAoKG5ldykpOyBzd2l0Y2ggKChzaXplb2YoKigmdi0+Y291bnRlcikpKSkgeyBj YXNlIDE6IHsgdm9sYXRpbGUgdTggKl9fcHRyID0gKHZvbGF0aWxlIHU4ICopKCgmdi0+Y291bnRl cikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFs aWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRs b2NrOyAiICJjbXB4Y2hnYiAlMiwlMSIgOiAiPWEiIChfX3JldCksICIrbSIgKCpfX3B0cikgOiAi cSIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2UgMjogeyB2 b2xhdGlsZSB1MTYgKl9fcHRyID0gKHZvbGF0aWxlIHUxNiAqKSgoJnYtPmNvdW50ZXIpKTsgYXNt IHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4i ICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAi Y21weGNoZ3cgJTIsJTEiIDogIj1hIiAoX19yZXQpLCAiK20iICgqX19wdHIpIDogInIiIChfX25l dyksICIwIiAoX19vbGQpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDQ6IHsgdm9sYXRpbGUg dTMyICpfX3B0ciA9ICh2b2xhdGlsZSB1MzIgKikoKCZ2LT5jb3VudGVyKSk7IGFzbSB2b2xhdGls ZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcg NjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGds ICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIittIiAoKl9fcHRyKSA6ICJyIiAoX19uZXcpLCAiMCIg KF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gY2FzZSA4OiB7IHZvbGF0aWxlIHU2NCAqX19w dHIgPSAodm9sYXRpbGUgdTY0ICopKCgmdi0+Y291bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNo c2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAu XG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hncSAlMiwlMSIg OiAiPWEiIChfX3JldCksICIrbSIgKCpfX3B0cikgOiAiciIgKF9fbmV3KSwgIjAiIChfX29sZCkg OiAibWVtb3J5Iik7IGJyZWFrOyB9IGRlZmF1bHQ6IF9fY21weGNoZ193cm9uZ19zaXplKCk7IH0g X19yZXQ7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBhcmNoX2F0b21pY190cnlfY21weGNoZyhhdG9taWNf dCAqdiwgaW50ICpvbGQsIGludCBuZXcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wg c3VjY2VzczsgX190eXBlb2ZfXygoKCZ2LT5jb3VudGVyKSkpIF9vbGQgPSAoX190eXBlb2ZfXygo KCZ2LT5jb3VudGVyKSkpKSgoKG9sZCkpKTsgX190eXBlb2ZfXygqKCgoJnYtPmNvdW50ZXIpKSkp IF9fb2xkID0gKl9vbGQ7IF9fdHlwZW9mX18oKigoKCZ2LT5jb3VudGVyKSkpKSBfX25ldyA9ICgo KG5ldykpKTsgc3dpdGNoICgoc2l6ZW9mKCooJnYtPmNvdW50ZXIpKSkpIHsgY2FzZSAxOiB7IHZv bGF0aWxlIHU4ICpfX3B0ciA9ICh2b2xhdGlsZSB1OCAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20g dm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIg Ii5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJj bXB4Y2hnYiAlW25ld10sICVbcHRyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAi eiIgIiovXG4iIDogIj1AY2MiICJ6IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtv bGRdICIrYSIgKF9fb2xkKSA6IFtuZXddICJxIiAoX19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsg fSBjYXNlIDI6IHsgdm9sYXRpbGUgdTE2ICpfX3B0ciA9ICh2b2xhdGlsZSB1MTYgKikoKCgmdi0+ Y291bnRlcikpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxu IiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToi ICJcblx0bG9jazsgIiAiY21weGNoZ3cgJVtuZXddLCAlW3B0cl0iICJcblx0Lyogb3V0cHV0IGNv bmRpdGlvbiBjb2RlICIgInoiICIqL1xuIiA6ICI9QGNjIiAieiIgKHN1Y2Nlc3MpLCBbcHRyXSAi K20iICgqX19wdHIpLCBbb2xkXSAiK2EiIChfX29sZCkgOiBbbmV3XSAiciIgKF9fbmV3KSA6ICJt ZW1vcnkiKTsgYnJlYWs7IH0gY2FzZSA0OiB7IHZvbGF0aWxlIHUzMiAqX19wdHIgPSAodm9sYXRp bGUgdTMyICopKCgoJnYtPmNvdW50ZXIpKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdsICVbbmV3XSwgJVtwdHJdIiAi XG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJ6IiAiKi9cbiIgOiAiPUBjYyIgInoiIChz dWNjZXNzKSwgW3B0cl0gIittIiAoKl9fcHRyKSwgW29sZF0gIithIiAoX19vbGQpIDogW25ld10g InIiIChfX25ldykgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2UgODogeyB2b2xhdGlsZSB1NjQg Kl9fcHRyID0gKHZvbGF0aWxlIHU2NCAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20gdm9sYXRpbGUo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hncSAl W25ld10sICVbcHRyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAieiIgIiovXG4i IDogIj1AY2MiICJ6IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtvbGRdICIrYSIg KF9fb2xkKSA6IFtuZXddICJyIiAoX19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsgfSBkZWZhdWx0 OiBfX2NtcHhjaGdfd3Jvbmdfc2l6ZSgpOyB9IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFzdWNj ZXNzKSwgMCkpICpfb2xkID0gX19vbGQ7IF9fYnVpbHRpbl9leHBlY3QoISEoc3VjY2VzcyksIDEp OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGFyY2hfYXRvbWljX3hjaGcoYXRvbWlj X3QgKnYsIGludCBuZXcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IF9fdHlwZW9mX18gKCoo KCZ2LT5jb3VudGVyKSkpIF9fcmV0ID0gKChuZXcpKTsgc3dpdGNoIChzaXplb2YoKigoJnYtPmNv dW50ZXIpKSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4i IDogIitxIiAoX19yZXQpLCAiK20iICgqKCgmdi0+Y291bnRlcikpKSA6IDogIm1lbW9yeSIsICJj YyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAidyAldzAsICUxXG4i IDogIityIiAoX19yZXQpLCAiK20iICgqKCgmdi0+Y291bnRlcikpKSA6IDogIm1lbW9yeSIsICJj YyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAibCAlMCwgJTFcbiIg OiAiK3IiIChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNj Iik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJxICVxMCwgJTFcbiIg OiAiK3IiIChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNj Iik7IGJyZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdfc2l6ZSgpOyB9IF9fcmV0OyB9KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2F0b21pY19hbmQoaW50IGksIGF0b21pY190 ICp2KQoxNDQ3NDogewoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9j a3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9u XG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImFuZGwgJTEsJTAiCjE0NDc0OiAgICA6ICIrbSIgKHYt PmNvdW50ZXIpCjE0NDc0OiAgICA6ICJpciIgKGkpCjE0NDc0OiAgICA6ICJtZW1vcnkiKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGFyY2hfYXRvbWljX2ZldGNoX2FuZChpbnQgaSwgYXRv bWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgaW50IHZhbCA9IGFyY2hfYXRvbWljX3JlYWQodik7 CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKCFhcmNoX2F0b21pY190cnlfY21weGNoZyh2 LCAmdmFsLCB2YWwgJiBpKSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdmFsOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfYXRvbWljX29yKGludCBpLCBhdG9taWNfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwi XG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcx OiIgIlxuXHRsb2NrOyAiICJvcmwgJTEsJTAiCjE0NDc0OiAgICA6ICIrbSIgKHYtPmNvdW50ZXIp CjE0NDc0OiAgICA6ICJpciIgKGkpCjE0NDc0OiAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IGFyY2hfYXRvbWljX2ZldGNoX29yKGludCBpLCBhdG9taWNfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgdmFsID0gYXJjaF9hdG9taWNfcmVhZCh2KTsKMTQ0NzQ6IAox NDQ3NDogIGRvIHsgfSB3aGlsZSAoIWFyY2hfYXRvbWljX3RyeV9jbXB4Y2hnKHYsICZ2YWwsIHZh bCB8IGkpKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgYXJjaF9hdG9taWNfeG9yKGludCBpLCBhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0 NzQ6ICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFs aWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRs b2NrOyAiICJ4b3JsICUxLCUwIgoxNDQ3NDogICAgOiAiK20iICh2LT5jb3VudGVyKQoxNDQ3NDog ICAgOiAiaXIiIChpKQoxNDQ3NDogICAgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludCBhcmNoX2F0b21pY19mZXRjaF94b3IoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDog ewoxNDQ3NDogIGludCB2YWwgPSBhcmNoX2F0b21pY19yZWFkKHYpOwoxNDQ3NDogCjE0NDc0OiAg ZG8geyB9IHdoaWxlICghYXJjaF9hdG9taWNfdHJ5X2NtcHhjaGcodiwgJnZhbCwgdmFsIF4gaSkp OwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0 XzY0LmgiIDEKMTQ0NzQ6ICMgMjAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljNjRfNjQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X3JlYWQoY29uc3QgYXRvbWljNjRfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5pb24geyB0eXBlb2YoKHYpLT5jb3VudGVyKSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCh2KS0+Y291 bnRlciksIF9fdS5fX2MsIHNpemVvZigodiktPmNvdW50ZXIpKTsgZWxzZSBfX3JlYWRfb25jZV9z aXplX25vY2hlY2soJigodiktPmNvdW50ZXIpLCBfX3UuX19jLCBzaXplb2YoKHYpLT5jb3VudGVy KSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDMy ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hf YXRvbWljNjRfc2V0KGF0b21pYzY0X3QgKnYsIHM2NCBpKQoxNDQ3NDogewoxNDQ3NDogICh7IHVu aW9uIHsgdHlwZW9mKHYtPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5f X3ZhbCA9ICggdHlwZW9mKHYtPmNvdW50ZXIpKSAoaSkgfTsgX193cml0ZV9vbmNlX3NpemUoJih2 LT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKHYtPmNvdW50ZXIpKTsgX191Ll9fdmFsOyB9KTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgNDQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljNjRfNjQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBhcmNoX2F0 b21pYzY0X2FkZChzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9s YXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5s b25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhZGRx ICUxLCUwIgoxNDQ3NDogICAgICAgIDogIj1tIiAodi0+Y291bnRlcikKMTQ0NzQ6ICAgICAgICA6 ICJlciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDog IyA1OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBh cmNoX2F0b21pYzY0X3N1YihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBh c20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRc biIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAi ICJzdWJxICUxLCUwIgoxNDQ3NDogICAgICAgIDogIj1tIiAodi0+Y291bnRlcikKMTQ0NzQ6ICAg ICAgICA6ICJlciIgKGkpLCAibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwoxNDQ3NDogfQox NDQ3NDogIyA3NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBhcmNoX2F0b21pYzY0X3N1Yl9hbmRfdGVzdChzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgYm9vbCBjOyBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rp b24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAi LnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAic3VicSIgIiAlW3ZhbF0sICIgIiVb dmFyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAiZSIgIiovXG4iIDogW3Zhcl0g IittIiAodi0+Y291bnRlciksICI9QGNjIiAiZSIgKGMpIDogW3ZhbF0gImVyIiAoaSkgOiAibWVt b3J5Iik7IGM7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA4NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9hdG9taWM2NF82NC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIGFyY2hfYXRvbWljNjRfaW5jKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg YXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0 XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsg IiAiaW5jcSAlMCIKMTQ0NzQ6ICAgICAgICA6ICI9bSIgKHYtPmNvdW50ZXIpCjE0NDc0OiAgICAg ICAgOiAibSIgKHYtPmNvdW50ZXIpIDogIm1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMDAg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljNjRfNjQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBhcmNoX2F0b21pYzY0X2RlYyhhdG9taWM2NF90 ICp2KQoxNDQ3NDogewoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9j a3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9u XG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImRlY3EgJTAiCjE0NDc0OiAgICAgICAgOiAiPW0iICh2 LT5jb3VudGVyKQoxNDQ3NDogICAgICAgIDogIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgMTE2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIGFyY2hfYXRvbWljNjRfZGVjX2FuZF90ZXN0KGF0b21pYzY0X3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsgYXNtIHZvbGF0aWxlICgiLnB1c2hz ZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5c biIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImRlY3EiICIgIiAiJVt2YXJd IiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20i ICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiA6ICJtZW1vcnkiKTsgYzsgfSk7CjE0NDc0 OiB9CjE0NDc0OiAjIDEzMCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCBhcmNoX2F0b21pYzY0X2luY19hbmRfdGVzdChhdG9taWM2NF90ICp2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlv biAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIu cG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJpbmNxIiAiICIgIiVbdmFyXSIgIlxu XHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAiZSIgIiovXG4iIDogW3Zhcl0gIittIiAodi0+ Y291bnRlciksICI9QGNjIiAiZSIgKGMpIDogOiAibWVtb3J5Iik7IGM7IH0pOwoxNDQ3NDogfQox NDQ3NDogIyAxNDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljNjRfNjQuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgYXJjaF9hdG9taWM2NF9hZGRfbmVnYXRpdmUoczY0IGksIGF0b21pYzY0X3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsgYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0 aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIg Ii5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImFkZHEiICIgJVt2YWxdLCAiICIl W3Zhcl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgInMiICIqL1xuIiA6IFt2YXJd ICIrbSIgKHYtPmNvdW50ZXIpLCAiPUBjYyIgInMiIChjKSA6IFt2YWxdICJlciIgKGkpIDogIm1l bW9yeSIpOyBjOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTU4ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2F0b21pYzY0XzY0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHM2NCBhcmNoX2F0b21pYzY0X2FkZF9yZXR1cm4oczY0IGksIGF0b21pYzY0X3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGkgKyAoeyBfX3R5cGVvZl9fICgqKCgoJnYtPmNvdW50ZXIp KSkpIF9fcmV0ID0gKCgoaSkpKTsgc3dpdGNoIChzaXplb2YoKigoKCZ2LT5jb3VudGVyKSkpKSkg eyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJ4YWRkIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20iICgq KCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDI6IGFz bSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRc biIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAi ICJ4YWRkIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50 ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAibCAl MCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJt ZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9u IC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5w b3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJxICVxMCwgJTFcbiIgOiAi K3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2Mi KTsgYnJlYWs7IGRlZmF1bHQ6IF9feGFkZF93cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0pOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgYXJjaF9hdG9taWM2NF9zdWJfcmV0dXJuKHM2NCBpLCBh dG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhcmNoX2F0b21pYzY0X2FkZF9y ZXR1cm4oLWksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgYXJjaF9hdG9taWM2NF9m ZXRjaF9hZGQoczY0IGksIGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7 IF9fdHlwZW9mX18gKCooKCgmdi0+Y291bnRlcikpKSkgX19yZXQgPSAoKChpKSkpOyBzd2l0Y2gg KHNpemVvZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgiLnB1 c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAt IC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJiICViMCwg JTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwgJTFcbiIgOiAiK3Ii IChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsg YnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJh XCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2 NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIitt IiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA4 OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAieGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5j b3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVsdDogX194YWRkX3dy b25nX3NpemUoKTsgfSBfX3JldDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBhcmNo X2F0b21pYzY0X2ZldGNoX3N1YihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gKHsgX190eXBlb2ZfXyAoKigoKCZ2LT5jb3VudGVyKSkpKSBfX3JldCA9ICgoKC1p KSkpOyBzd2l0Y2ggKHNpemVvZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZv bGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAi LmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhh ZGQiICJiICViMCwgJTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikp KSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1 c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAt IC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwg JTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIg KF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBi cmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFc IlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3 MToiICJcblx0bG9jazsgIiAieGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIitt IiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVs dDogX194YWRkX3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NCBhcmNoX2F0b21pYzY0X2NtcHhjaGcoYXRvbWljNjRfdCAqdiwgczY0IG9sZCwgczY0 IG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgX190eXBlb2ZfXygqKCgmdi0+Y291bnRl cikpKSBfX3JldDsgX190eXBlb2ZfXygqKCgmdi0+Y291bnRlcikpKSBfX29sZCA9ICgob2xkKSk7 IF9fdHlwZW9mX18oKigoJnYtPmNvdW50ZXIpKSkgX19uZXcgPSAoKG5ldykpOyBzd2l0Y2ggKChz aXplb2YoKigmdi0+Y291bnRlcikpKSkgeyBjYXNlIDE6IHsgdm9sYXRpbGUgdTggKl9fcHRyID0g KHZvbGF0aWxlIHU4ICopKCgmdi0+Y291bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlv biAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIu cG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hnYiAlMiwlMSIgOiAiPWEi IChfX3JldCksICIrbSIgKCpfX3B0cikgOiAicSIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVt b3J5Iik7IGJyZWFrOyB9IGNhc2UgMjogeyB2b2xhdGlsZSB1MTYgKl9fcHRyID0gKHZvbGF0aWxl IHUxNiAqKSgoJnYtPmNvdW50ZXIpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9s b2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rp b25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiY21weGNoZ3cgJTIsJTEiIDogIj1hIiAoX19yZXQp LCAiK20iICgqX19wdHIpIDogInIiIChfX25ldyksICIwIiAoX19vbGQpIDogIm1lbW9yeSIpOyBi cmVhazsgfSBjYXNlIDQ6IHsgdm9sYXRpbGUgdTMyICpfX3B0ciA9ICh2b2xhdGlsZSB1MzIgKiko KCZ2LT5jb3VudGVyKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJh XCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2 NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdsICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIittIiAo Kl9fcHRyKSA6ICJyIiAoX19uZXcpLCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0g Y2FzZSA4OiB7IHZvbGF0aWxlIHU2NCAqX19wdHIgPSAodm9sYXRpbGUgdTY0ICopKCgmdi0+Y291 bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJjbXB4Y2hncSAlMiwlMSIgOiAiPWEiIChfX3JldCksICIrbSIgKCpfX3B0cikg OiAiciIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGRlZmF1bHQ6 IF9fY21weGNoZ193cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBhcmNo X2F0b21pYzY0X3RyeV9jbXB4Y2hnKGF0b21pYzY0X3QgKnYsIHM2NCAqb2xkLCBzNjQgbmV3KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyBib29sIHN1Y2Nlc3M7IF9fdHlwZW9mX18oKCgmdi0+ Y291bnRlcikpKSBfb2xkID0gKF9fdHlwZW9mX18oKCgmdi0+Y291bnRlcikpKSkoKChvbGQpKSk7 IF9fdHlwZW9mX18oKigoKCZ2LT5jb3VudGVyKSkpKSBfX29sZCA9ICpfb2xkOyBfX3R5cGVvZl9f KCooKCgmdi0+Y291bnRlcikpKSkgX19uZXcgPSAoKChuZXcpKSk7IHN3aXRjaCAoKHNpemVvZigq KCZ2LT5jb3VudGVyKSkpKSB7IGNhc2UgMTogeyB2b2xhdGlsZSB1OCAqX19wdHIgPSAodm9sYXRp bGUgdTggKikoKCgmdi0+Y291bnRlcikpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNt cF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNl Y3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiY21weGNoZ2IgJVtuZXddLCAlW3B0cl0iICJc blx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgInoiICIqL1xuIiA6ICI9QGNjIiAieiIgKHN1 Y2Nlc3MpLCBbcHRyXSAiK20iICgqX19wdHIpLCBbb2xkXSAiK2EiIChfX29sZCkgOiBbbmV3XSAi cSIgKF9fbmV3KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gY2FzZSAyOiB7IHZvbGF0aWxlIHUxNiAq X19wdHIgPSAodm9sYXRpbGUgdTE2ICopKCgoJnYtPmNvdW50ZXIpKSk7IGFzbSB2b2xhdGlsZSgi LnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcx ZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGd3ICVb bmV3XSwgJVtwdHJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJ6IiAiKi9cbiIg OiAiPUBjYyIgInoiIChzdWNjZXNzKSwgW3B0cl0gIittIiAoKl9fcHRyKSwgW29sZF0gIithIiAo X19vbGQpIDogW25ld10gInIiIChfX25ldykgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2UgNDog eyB2b2xhdGlsZSB1MzIgKl9fcHRyID0gKHZvbGF0aWxlIHUzMiAqKSgoKCZ2LT5jb3VudGVyKSkp OyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWdu IDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2Nr OyAiICJjbXB4Y2hnbCAlW25ld10sICVbcHRyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNv ZGUgIiAieiIgIiovXG4iIDogIj1AY2MiICJ6IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0 ciksIFtvbGRdICIrYSIgKF9fb2xkKSA6IFtuZXddICJyIiAoX19uZXcpIDogIm1lbW9yeSIpOyBi cmVhazsgfSBjYXNlIDg6IHsgdm9sYXRpbGUgdTY0ICpfX3B0ciA9ICh2b2xhdGlsZSB1NjQgKiko KCgmdi0+Y291bnRlcikpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2Nrcyxc ImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIg IjY3MToiICJcblx0bG9jazsgIiAiY21weGNoZ3EgJVtuZXddLCAlW3B0cl0iICJcblx0Lyogb3V0 cHV0IGNvbmRpdGlvbiBjb2RlICIgInoiICIqL1xuIiA6ICI9QGNjIiAieiIgKHN1Y2Nlc3MpLCBb cHRyXSAiK20iICgqX19wdHIpLCBbb2xkXSAiK2EiIChfX29sZCkgOiBbbmV3XSAiciIgKF9fbmV3 KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gZGVmYXVsdDogX19jbXB4Y2hnX3dyb25nX3NpemUoKTsg fSBpZiAoX19idWlsdGluX2V4cGVjdCghISghc3VjY2VzcyksIDApKSAqX29sZCA9IF9fb2xkOyBf X2J1aWx0aW5fZXhwZWN0KCEhKHN1Y2Nlc3MpLCAxKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NCBhcmNoX2F0b21pYzY0X3hjaGcoYXRvbWljNjRfdCAqdiwgczY0IG5ldykKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKHsgX190eXBlb2ZfXyAoKigoJnYtPmNvdW50ZXIpKSkgX19yZXQg PSAoKG5ldykpOyBzd2l0Y2ggKHNpemVvZigqKCgmdi0+Y291bnRlcikpKSkgeyBjYXNlIDE6IGFz bSB2b2xhdGlsZSAoIiIgInhjaGciICJiICViMCwgJTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIg KCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDI6IGFz bSB2b2xhdGlsZSAoIiIgInhjaGciICJ3ICV3MCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIg KCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFz bSB2b2xhdGlsZSAoIiIgInhjaGciICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAo KigoJnYtPmNvdW50ZXIpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNt IHZvbGF0aWxlICgiIiAieGNoZyIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAo KigoJnYtPmNvdW50ZXIpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGRlZmF1bHQ6IF9f eGNoZ193cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGFyY2hfYXRvbWljNjRfYW5kKHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3 NDogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxp Z24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxv Y2s7ICIgImFuZHEgJTEsJTAiCjE0NDc0OiAgICA6ICIrbSIgKHYtPmNvdW50ZXIpCjE0NDc0OiAg ICA6ICJlciIgKGkpCjE0NDc0OiAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgczY0IGFyY2hfYXRvbWljNjRfZmV0Y2hfYW5kKHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3 NDogewoxNDQ3NDogIHM2NCB2YWwgPSBhcmNoX2F0b21pYzY0X3JlYWQodik7CjE0NDc0OiAKMTQ0 NzQ6ICBkbyB7CjE0NDc0OiAgfSB3aGlsZSAoIWFyY2hfYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwg JnZhbCwgdmFsICYgaSkpOwoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgYXJjaF9hdG9taWM2NF9vcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsK MTQ0NzQ6ICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJvcnEgJTEsJTAiCjE0NDc0OiAgICA6ICIrbSIgKHYtPmNvdW50ZXIpCjE0NDc0 OiAgICA6ICJlciIgKGkpCjE0NDc0OiAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgczY0IGFyY2hfYXRvbWljNjRfZmV0Y2hfb3IoczY0IGksIGF0b21pYzY0X3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgczY0IHZhbCA9IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKMTQ0NzQ6IAox NDQ3NDogIGRvIHsKMTQ0NzQ6ICB9IHdoaWxlICghYXJjaF9hdG9taWM2NF90cnlfY21weGNoZyh2 LCAmdmFsLCB2YWwgfCBpKSk7CjE0NDc0OiAgcmV0dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBhcmNoX2F0b21pYzY0X3hvcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJ4b3JxICUxLCUwIgoxNDQ3NDogICAgOiAiK20iICh2LT5jb3VudGVyKQox NDQ3NDogICAgOiAiZXIiIChpKQoxNDQ3NDogICAgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X2ZldGNoX3hvcihzNjQgaSwgYXRvbWljNjRfdCAq dikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzNjQgdmFsID0gYXJjaF9hdG9taWM2NF9yZWFkKHYpOwoxNDQ3 NDogCjE0NDc0OiAgZG8gewoxNDQ3NDogIH0gd2hpbGUgKCFhcmNoX2F0b21pYzY0X3RyeV9jbXB4 Y2hnKHYsICZ2YWwsIHZhbCBeIGkpKTsKMTQ0NzQ6ICByZXR1cm4gdmFsOwoxNDQ3NDogfQoxNDQ3 NDogIyAyNjMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVk LmgiIDEKMTQ0NzQ6ICMgMjAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVu dGVkLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9idWlsZF9idWcuaCIgMQoxNDQ3NDog IyAyMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIgMgoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX3JlYWQoY29uc3QgYXRvbWljX3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfcmVhZCh2LCBzaXplb2YoKnYpKTsKMTQ0 NzQ6ICByZXR1cm4gYXJjaF9hdG9taWNfcmVhZCh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDEgIi4v aW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0 NDc0OiBhdG9taWNfc2V0KGF0b21pY190ICp2LCBpbnQgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNh bl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICBhcmNoX2F0b21pY19zZXQodiwg aSk7CjE0NDc0OiB9CjE0NDc0OiAjIDU5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWlu c3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2FkZChpbnQgaSwgYXRvbWlj X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7 CjE0NDc0OiAgYXJjaF9hdG9taWNfYWRkKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfYWRkX3JldHVybihpbnQgaSwgYXRvbWlj X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7 CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljX2FkZF9yZXR1cm4oaSwgdik7CjE0NDc0OiB9CjE0 NDc0OiAjIDEwOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludAoxNDQ3NDogYXRvbWljX2ZldGNoX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAg cmV0dXJuIGFyY2hfYXRvbWljX2ZldGNoX2FkZChpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQ3 ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZAoxNDQ3NDogYXRvbWljX3N1YihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg a2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJjaF9hdG9taWNfc3Vi KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0 OiBhdG9taWNfc3ViX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg a2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRv bWljX3N1Yl9yZXR1cm4oaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDE5NiAiLi9pbmNsdWRlL2Fz bS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWlj X2ZldGNoX3N1YihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hl Y2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljX2ZldGNo X3N1YihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjM2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv YXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2luYyhhdG9t aWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYp KTsKMTQ0NzQ6ICBhcmNoX2F0b21pY19pbmModik7CjE0NDc0OiB9CjE0NDc0OiAjIDMyNiAiLi9p bmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0 NzQ6IGF0b21pY19kZWMoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tf d3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJjaF9hdG9taWNfZGVjKHYpOwoxNDQ3NDog fQoxNDQ3NDogIyA0MTUgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVk LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWNfYW5kKGludCBpLCBhdG9taWNfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICBh cmNoX2F0b21pY19hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRjaF9hbmQoaW50IGksIGF0b21pY190ICp2KQoxNDQ3 NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIHJl dHVybiBhcmNoX2F0b21pY19mZXRjaF9hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDUxMyAi Li9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK MTQ0NzQ6IGF0b21pY19vcihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2Fz YW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJjaF9hdG9taWNfb3IoaSwg dik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0 b21pY19mZXRjaF9vcihpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5f Y2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljX2Zl dGNoX29yKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogIyA1NjEgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWNfeG9yKGlu dCBpLCBhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBz aXplb2YoKnYpKTsKMTQ0NzQ6ICBhcmNoX2F0b21pY194b3IoaSwgdik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRjaF94b3IoaW50 IGksIGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNp emVvZigqdikpOwoxNDQ3NDogIHJldHVybiBhcmNoX2F0b21pY19mZXRjaF94b3IoaSwgdik7CjE0 NDc0OiB9CjE0NDc0OiAjIDYxMCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVt ZW50ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX3hjaGcoYXRvbWljX3QgKnYsIGludCBp KQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3 NDogIHJldHVybiBhcmNoX2F0b21pY194Y2hnKHYsIGkpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NTAg Ii4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQK MTQ0NzQ6IGF0b21pY19jbXB4Y2hnKGF0b21pY190ICp2LCBpbnQgb2xkLCBpbnQgbmV3KQoxNDQ3 NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIHJl dHVybiBhcmNoX2F0b21pY19jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg NjkwICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbAoxNDQ3NDogYXRvbWljX3RyeV9jbXB4Y2hnKGF0b21pY190ICp2LCBpbnQgKm9sZCwgaW50 IG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsK MTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShvbGQsIHNpemVvZigqb2xkKSk7CjE0NDc0OiAgcmV0 dXJuIGFyY2hfYXRvbWljX3RyeV9jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgNzM0ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbAoxNDQ3NDogYXRvbWljX3N1Yl9hbmRfdGVzdChpbnQgaSwgYXRvbWljX3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAg cmV0dXJuIGFyY2hfYXRvbWljX3N1Yl9hbmRfdGVzdChpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2RlY19hbmRf dGVzdChhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBz aXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9hdG9taWNfZGVjX2FuZF90ZXN0KHYpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0 OiBhdG9taWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIGthc2Fu X2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIHJldHVybiBhcmNoX2F0b21pY19p bmNfYW5kX3Rlc3Qodik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2 KQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3 NDogIHJldHVybiBhcmNoX2F0b21pY19hZGRfbmVnYXRpdmUoaSwgdik7CjE0NDc0OiB9CjE0NDc0 OiAjIDgzMyAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NAoxNDQ3NDogYXRvbWljNjRfcmVhZChjb25zdCBhdG9taWM2NF90ICp2KQoxNDQ3NDog ewoxNDQ3NDogIGthc2FuX2NoZWNrX3JlYWQodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJu IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODUxICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRv bWljNjRfc2V0KGF0b21pYzY0X3QgKnYsIHM2NCBpKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2No ZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIGFyY2hfYXRvbWljNjRfc2V0KHYsIGkp OwoxNDQ3NDogfQoxNDQ3NDogIyA4NjkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5z dHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWM2NF9hZGQoczY0IGksIGF0b21p YzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2 KSk7CjE0NDc0OiAgYXJjaF9hdG9taWM2NF9hZGQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKMTQ0NzQ6IGF0b21pYzY0X2FkZF9yZXR1cm4oczY0IGks IGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6 ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljNjRfYWRkX3JldHVybihpLCB2KTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgOTE4ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3Ry dW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9taWM2NF9mZXRjaF9hZGQoczY0IGksIGF0 b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9m KCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljNjRfZmV0Y2hfYWRkKGksIHYpOwoxNDQ3 NDogfQoxNDQ3NDogIyA5NTcgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVu dGVkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWM2NF9zdWIoczY0IGksIGF0b21pYzY0X3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0 NDc0OiAgYXJjaF9hdG9taWM2NF9zdWIoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzNjQKMTQ0NzQ6IGF0b21pYzY0X3N1Yl9yZXR1cm4oczY0IGksIGF0b21p YzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2 KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMTAwNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50 ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfc3ViKHM2NCBpLCBhdG9taWM2 NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikp OwoxNDQ3NDogIHJldHVybiBhcmNoX2F0b21pYzY0X2ZldGNoX3N1YihpLCB2KTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMTA0NiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQKMTQ0NzQ6IGF0b21pYzY0X2luYyhhdG9taWM2NF90ICp2KQoxNDQ3NDog ewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIGFyY2hf YXRvbWljNjRfaW5jKHYpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMTM2ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljNjRf ZGVjKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwg c2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJjaF9hdG9taWM2NF9kZWModik7CjE0NDc0OiB9CjE0NDc0 OiAjIDEyMjUgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkCjE0NDc0OiBhdG9taWM2NF9hbmQoczY0IGksIGF0b21pYzY0X3QgKnYpCjE0NDc0 OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgYXJj aF9hdG9taWM2NF9hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQKMTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2FuZChzNjQgaSwgYXRvbWljNjRfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6 ICByZXR1cm4gYXJjaF9hdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAj IDEzMjMgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkCjE0NDc0OiBhdG9taWM2NF9vcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsK MTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICBhcmNoX2F0 b21pYzY0X29yKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg czY0CjE0NDc0OiBhdG9taWM2NF9mZXRjaF9vcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1 cm4gYXJjaF9hdG9taWM2NF9mZXRjaF9vcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTM3MSAi Li9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK MTQ0NzQ6IGF0b21pYzY0X3hvcihzNjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICBhcmNoX2F0b21pYzY0 X3hvcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAox NDQ3NDogYXRvbWljNjRfZmV0Y2hfeG9yKHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDogewox NDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDogIHJldHVybiBh cmNoX2F0b21pYzY0X2ZldGNoX3hvcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQyMCAiLi9p bmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3 NDogYXRvbWljNjRfeGNoZyhhdG9taWM2NF90ICp2LCBzNjQgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBr YXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9hdG9t aWM2NF94Y2hnKHYsIGkpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNDYwICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9taWM2NF9j bXB4Y2hnKGF0b21pYzY0X3QgKnYsIHM2NCBvbGQsIHM2NCBuZXcpCjE0NDc0OiB7CjE0NDc0OiAg a2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRv bWljNjRfY21weGNoZyh2LCBvbGQsIG5ldyk7CjE0NDc0OiB9CjE0NDc0OiAjIDE1MDAgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0 OiBhdG9taWM2NF90cnlfY21weGNoZyhhdG9taWM2NF90ICp2LCBzNjQgKm9sZCwgczY0IG5ldykK MTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6 ICBrYXNhbl9jaGVja193cml0ZShvbGQsIHNpemVvZigqb2xkKSk7CjE0NDc0OiAgcmV0dXJuIGFy Y2hfYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgb2xkLCBuZXcpOwoxNDQ3NDogfQoxNDQ3NDogIyAx NTQ0ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbAoxNDQ3NDogYXRvbWljNjRfc3ViX2FuZF90ZXN0KHM2NCBpLCBhdG9taWM2NF90ICp2KQox NDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoxNDQ3NDog IHJldHVybiBhcmNoX2F0b21pYzY0X3N1Yl9hbmRfdGVzdChpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljNjRfZGVj X2FuZF90ZXN0KGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAga2FzYW5fY2hlY2tfd3Jp dGUodiwgc2l6ZW9mKCp2KSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfYXRvbWljNjRfZGVjX2FuZF90 ZXN0KHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sCjE0NDc0OiBhdG9taWM2NF9pbmNfYW5kX3Rlc3QoYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsK MTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1cm4g YXJjaF9hdG9taWM2NF9pbmNfYW5kX3Rlc3Qodik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pYzY0X2FkZF9uZWdhdGl2ZShz NjQgaSwgYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZSh2 LCBzaXplb2YoKnYpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9hdG9taWM2NF9hZGRfbmVnYXRpdmUo aSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDI2NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9t aWMuaCIgMgoxNDQ3NDogIyA4ICIuL2luY2x1ZGUvbGludXgvYXRvbWljLmgiIDIKMTQ0NzQ6ICMg NzQgIi4vaW5jbHVkZS9saW51eC9hdG9taWMuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L2F0b21pYy1mYWxsYmFjay5oIiAxCjE0NDc0OiAjIDc5ICIuL2luY2x1ZGUvbGludXgvYXRvbWlj LWZhbGxiYWNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19yZWFkX2FjcXVpcmUoY29uc3Qg YXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHR5cGVvZigqJih2KS0+Y291 bnRlcikgX19fcDEgPSAoeyB1bmlvbiB7IHR5cGVvZigqJih2KS0+Y291bnRlcikgX192YWw7IGNo YXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigqJih2KS0+Y291bnRl ciksIF9fdS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBlbHNlIF9fcmVhZF9vbmNlX3Np emVfbm9jaGVjaygmKComKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKComKHYpLT5jb3Vu dGVyKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgZXh0ZXJuIHZvaWQg X19jb21waWxldGltZV9hc3NlcnRfODIodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJO ZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlm ICghKChzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihjaGFyKSB8fCBzaXplb2YoKiYo diktPmNvdW50ZXIpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComKHYpLT5jb3VudGVyKSA9 PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihsb25nKSkp KSBfX2NvbXBpbGV0aW1lX2Fzc2VydF84MigpOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0 aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgX19fcDE7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWNfc2V0X3JlbGVhc2Uo YXRvbWljX3QgKnYsIGludCBpKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyBleHRlcm4gdm9p ZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF85MSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18o Ik5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsg aWYgKCEoKHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigq Jih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIp ID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGxvbmcp KSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzkxKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9s YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJih2KS0+Y291bnRl cikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYodikt PmNvdW50ZXIpKSAoaSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJih2KS0+Y291bnRlciksIF9f dS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgw KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjgxICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNr LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19pbmNfcmV0dXJuKGF0b21pY190ICp2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBhdG9taWNfYWRkX3JldHVybigxLCB2KTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfaW5j X3JldHVybl9hY3F1aXJlKGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9t aWNfYWRkX3JldHVybigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfaW5jX3JldHVybl9yZWxlYXNlKGF0b21pY190 ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWNfYWRkX3JldHVybigxLCB2KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBh dG9taWNfaW5jX3JldHVybl9yZWxheGVkKGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBhdG9taWNfYWRkX3JldHVybigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzYyICIuL2lu Y2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19m ZXRjaF9pbmMoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRj aF9hZGQoMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludAoxNDQ3NDogYXRvbWljX2ZldGNoX2luY19hY3F1aXJlKGF0b21pY190ICp2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBhdG9taWNfZmV0Y2hfYWRkKDEsIHYpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRj aF9pbmNfcmVsZWFzZShhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWlj X2ZldGNoX2FkZCgxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfZmV0Y2hfaW5jX3JlbGF4ZWQoYXRvbWljX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9hZGQoMSwgdik7CjE0NDc0OiB9 CjE0NDc0OiAjIDQ1MiAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50CjE0NDc0OiBhdG9taWNfZGVjX3JldHVybihhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljX3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX2RlY19yZXR1cm5fYWNx dWlyZShhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljX3N1Yl9yZXR1 cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludAoxNDQ3NDogYXRvbWljX2RlY19yZXR1cm5fcmVsZWFzZShhdG9taWNfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljX3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX2RlY19y ZXR1cm5fcmVsYXhlZChhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWlj X3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDUzMyAiLi9pbmNsdWRlL2xpbnV4 L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfZmV0Y2hfZGVjKGF0 b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWNfZmV0Y2hfc3ViKDEsIHYp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0 NzQ6IGF0b21pY19mZXRjaF9kZWNfYWNxdWlyZShhdG9taWNfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljX2ZldGNoX3N1YigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBhdG9taWNfZmV0Y2hfZGVjX3JlbGVh c2UoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9zdWIo MSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dAoxNDQ3NDogYXRvbWljX2ZldGNoX2RlY19yZWxheGVkKGF0b21pY190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWNfZmV0Y2hfc3ViKDEsIHYpOwoxNDQ3NDogfQoxNDQ3NDogIyA2 NDkgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6 IGF0b21pY19hbmRub3QoaW50IGksIGF0b21pY190ICp2KQoxNDQ3NDogewoxNDQ3NDogIGF0b21p Y19hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NjUgIi4vaW5jbHVkZS9saW51eC9hdG9t aWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogYXRvbWljX2ZldGNoX2FuZG5vdChpbnQg aSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9hbmQo fmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQKMTQ0NzQ6IGF0b21pY19mZXRjaF9hbmRub3RfYWNxdWlyZShpbnQgaSwgYXRvbWljX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9hbmQofmksIHYpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21p Y19mZXRjaF9hbmRub3RfcmVsZWFzZShpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGF0b21pY19mZXRjaF9hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRjaF9hbmRub3Rf cmVsYXhlZChpbnQgaSwgYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21p Y19mZXRjaF9hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMDgzICIuL2luY2x1ZGUvbGlu dXgvYXRvbWljLWZhbGxiYWNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IGF0b21pY19mZXRjaF9hZGRf dW5sZXNzKGF0b21pY190ICp2LCBpbnQgYSwgaW50IHUpCjE0NDc0OiB7CjE0NDc0OiAgaW50IGMg PSBhdG9taWNfcmVhZCh2KTsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsKMTQ0NzQ6ICAgaWYgKF9fYnVp bHRpbl9leHBlY3QoISEoYyA9PSB1KSwgMCkpCjE0NDc0OiAgICBicmVhazsKMTQ0NzQ6ICB9IHdo aWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKHYsICZjLCBjICsgYSkpOwoxNDQ3NDogCjE0NDc0OiAg cmV0dXJuIGM7CjE0NDc0OiB9CjE0NDc0OiAjIDExMDggIi4vaW5jbHVkZS9saW51eC9hdG9taWMt ZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19hZGRfdW5sZXNzKGF0b21pY190 ICp2LCBpbnQgYSwgaW50IHUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19mZXRjaF9h ZGRfdW5sZXNzKHYsIGEsIHUpICE9IHU7CjE0NDc0OiB9CjE0NDc0OiAjIDExMjQgIi4vaW5jbHVk ZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19pbmNf bm90X3plcm8oYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19hZGRf dW5sZXNzKHYsIDEsIDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sCjE0NDc0OiBhdG9taWNfaW5jX3VubGVzc19uZWdhdGl2ZShhdG9taWNfdCAq dikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgYyA9IGF0b21pY19yZWFkKHYpOwoxNDQ3NDogCjE0NDc0 OiAgZG8gewoxNDQ3NDogICBpZiAoX19idWlsdGluX2V4cGVjdCghIShjIDwgMCksIDApKQoxNDQ3 NDogICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogIH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGco diwgJmMsIGMgKyAxKSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2Rl Y191bmxlc3NfcG9zaXRpdmUoYXRvbWljX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgaW50IGMgPSBh dG9taWNfcmVhZCh2KTsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRp bl9leHBlY3QoISEoYyA+IDApLCAwKSkKMTQ0NzQ6ICAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICB9 IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKHYsICZjLCBjIC0gMSkpOwoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludAoxNDQ3NDogYXRvbWljX2RlY19pZl9wb3NpdGl2ZShhdG9taWNfdCAqdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBpbnQgZGVjLCBjID0gYXRvbWljX3JlYWQodik7CjE0NDc0OiAKMTQ0NzQ6 ICBkbyB7CjE0NDc0OiAgIGRlYyA9IGMgLSAxOwoxNDQ3NDogICBpZiAoX19idWlsdGluX2V4cGVj dCghIShkZWMgPCAwKSwgMCkpCjE0NDc0OiAgICBicmVhazsKMTQ0NzQ6ICB9IHdoaWxlICghYXRv bWljX3RyeV9jbXB4Y2hnKHYsICZjLCBkZWMpKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBkZWM7 CjE0NDc0OiB9CjE0NDc0OiAjIDExODkgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2su aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfcmVhZF9hY3F1aXJlKGNvbnN0IGF0b21pYzY0 X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHR5cGVvZigqJih2KS0+Y291bnRlcikg X19fcDEgPSAoeyB1bmlvbiB7IHR5cGVvZigqJih2KS0+Y291bnRlcikgX192YWw7IGNoYXIgX19j WzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigqJih2KS0+Y291bnRlciksIF9f dS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9j aGVjaygmKComKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKComKHYpLT5jb3VudGVyKSk7 IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21w aWxldGltZV9hc3NlcnRfMTE5Mih2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIk5lZWQg bmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsgaWYgKCEo KHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJih2KS0+ Y291bnRlcikgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNp emVvZihpbnQpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGxvbmcpKSkpIF9f Y29tcGlsZXRpbWVfYXNzZXJ0XzExOTIoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7IF9fX3AxOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljNjRfc2V0X3JlbGVhc2Uo YXRvbWljNjRfdCAqdiwgczY0IGkpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBkbyB7IGV4dGVybiB2 b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzEyMDEodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJv cl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIp KSk7IGlmICghKChzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihjaGFyKSB8fCBzaXpl b2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComKHYpLT5jb3Vu dGVyKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihs b25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xMjAxKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJih2KS0+ Y291bnRlcikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo KiYodiktPmNvdW50ZXIpKSAoaSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJih2KS0+Y291bnRl ciksIF9fdS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBfX3UuX192YWw7IH0pOyB9IHdo aWxlICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTM5MSAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1m YWxsYmFjay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9taWM2NF9pbmNfcmV0dXJuKGF0b21pYzY0 X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2FkZF9yZXR1cm4oMSwgdik7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3 NDogYXRvbWljNjRfaW5jX3JldHVybl9hY3F1aXJlKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGF0b21pYzY0X2FkZF9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfaW5jX3Jl dHVybl9yZWxlYXNlKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21p YzY0X2FkZF9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfaW5jX3JldHVybl9yZWxheGVkKGF0b21p YzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2FkZF9yZXR1cm4oMSwg dik7CjE0NDc0OiB9CjE0NDc0OiAjIDE0NzIgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJh Y2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfaW5jKGF0b21pYzY0X3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZCgxLCB2KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9t aWM2NF9mZXRjaF9pbmNfYWNxdWlyZShhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBhdG9taWM2NF9mZXRjaF9hZGQoMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfaW5jX3JlbGVh c2UoYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hf YWRkKDEsIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBzNjQKMTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2luY19yZWxheGVkKGF0b21pYzY0X3QgKnYpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZCgxLCB2KTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMTU2MiAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg czY0CjE0NDc0OiBhdG9taWM2NF9kZWNfcmV0dXJuKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGF0b21pYzY0X3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZGVjX3Jl dHVybl9hY3F1aXJlKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21p YzY0X3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZGVjX3JldHVybl9yZWxlYXNlKGF0b21p YzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3N1Yl9yZXR1cm4oMSwg dik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAox NDQ3NDogYXRvbWljNjRfZGVjX3JldHVybl9yZWxheGVkKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3N1Yl9yZXR1cm4oMSwgdik7CjE0NDc0OiB9CjE0NDc0 OiAjIDE2NDMgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAox NDQ3NDogYXRvbWljNjRfZmV0Y2hfZGVjKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGF0b21pYzY0X2ZldGNoX3N1YigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CjE0NDc0OiBhdG9taWM2NF9mZXRjaF9kZWNfYWNx dWlyZShhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRj aF9zdWIoMSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfZGVjX3JlbGVhc2UoYXRvbWljNjRfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKDEsIHYpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKMTQ0NzQ6IGF0b21p YzY0X2ZldGNoX2RlY19yZWxheGVkKGF0b21pYzY0X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGF0b21pYzY0X2ZldGNoX3N1YigxLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTc1OSAiLi9p bmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWlj NjRfYW5kbm90KHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIGF0b21pYzY0 X2FuZCh+aSwgdik7CjE0NDc0OiB9CjE0NDc0OiAjIDE3NzUgIi4vaW5jbHVkZS9saW51eC9hdG9t aWMtZmFsbGJhY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZmV0Y2hfYW5kbm90KHM2 NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRj aF9hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQKMTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2FuZG5vdF9hY3F1aXJlKHM2NCBpLCBhdG9t aWM2NF90ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQofmks IHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQK MTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2FuZG5vdF9yZWxlYXNlKHM2NCBpLCBhdG9taWM2NF90ICp2 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQofmksIHYpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKMTQ0NzQ6IGF0 b21pYzY0X2ZldGNoX2FuZG5vdF9yZWxheGVkKHM2NCBpLCBhdG9taWM2NF90ICp2KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQofmksIHYpOwoxNDQ3NDogfQoxNDQ3 NDogIyAyMTkzICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNrLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQK MTQ0NzQ6IGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3MoYXRvbWljNjRfdCAqdiwgczY0IGEsIHM2 NCB1KQoxNDQ3NDogewoxNDQ3NDogIHM2NCBjID0gYXRvbWljNjRfcmVhZCh2KTsKMTQ0NzQ6IAox NDQ3NDogIGRvIHsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoYyA9PSB1KSwgMCkp CjE0NDc0OiAgICBicmVhazsKMTQ0NzQ6ICB9IHdoaWxlICghYXRvbWljNjRfdHJ5X2NtcHhjaGco diwgJmMsIGMgKyBhKSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYzsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjIxOCAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAox NDQ3NDogYXRvbWljNjRfYWRkX3VubGVzcyhhdG9taWM2NF90ICp2LCBzNjQgYSwgczY0IHUpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3ModiwgYSwgdSkg IT0gdTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjIzNCAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxs YmFjay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljNjRfaW5jX25vdF96ZXJvKGF0b21pYzY0 X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2FkZF91bmxlc3ModiwgMSwg MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wK MTQ0NzQ6IGF0b21pYzY0X2luY191bmxlc3NfbmVnYXRpdmUoYXRvbWljNjRfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBzNjQgYyA9IGF0b21pYzY0X3JlYWQodik7CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7 CjE0NDc0OiAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGMgPCAwKSwgMCkpCjE0NDc0OiAgICBy ZXR1cm4gZmFsc2U7CjE0NDc0OiAgfSB3aGlsZSAoIWF0b21pYzY0X3RyeV9jbXB4Y2hnKHYsICZj LCBjICsgMSkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pYzY0X2RlY191 bmxlc3NfcG9zaXRpdmUoYXRvbWljNjRfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzNjQgYyA9IGF0 b21pYzY0X3JlYWQodik7CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7CjE0NDc0OiAgIGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKGMgPiAwKSwgMCkpCjE0NDc0OiAgICByZXR1cm4gZmFsc2U7CjE0NDc0OiAg fSB3aGlsZSAoIWF0b21pYzY0X3RyeV9jbXB4Y2hnKHYsICZjLCBjIC0gMSkpOwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NAoxNDQ3NDogYXRvbWljNjRfZGVjX2lmX3Bvc2l0aXZlKGF0b21pYzY0X3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAgczY0IGRlYywgYyA9IGF0b21pYzY0X3JlYWQodik7CjE0NDc0 OiAKMTQ0NzQ6ICBkbyB7CjE0NDc0OiAgIGRlYyA9IGMgLSAxOwoxNDQ3NDogICBpZiAoX19idWls dGluX2V4cGVjdCghIShkZWMgPCAwKSwgMCkpCjE0NDc0OiAgICBicmVhazsKMTQ0NzQ6ICB9IHdo aWxlICghYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgJmMsIGRlYykpOwoxNDQ3NDogCjE0NDc0OiAg cmV0dXJuIGRlYzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzUgIi4vaW5jbHVkZS9saW51eC9hdG9taWMu aCIgMgoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9u Zy5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9uZy5oIgox NDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgi IDEKMTQ0NzQ6ICMgMTAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtbG9uZy5oIiAyCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBhdG9taWM2NF90IGF0b21pY19sb25nX3Q7CjE0 NDc0OiAjIDI1ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWxvbmcuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxv bmcKMTQ0NzQ6IGF0b21pY19sb25nX3JlYWQoY29uc3QgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfcmVhZCh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfcmVhZF9hY3F1aXJlKGNvbnN0IGF0b21pY19sb25n X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3JlYWRfYWNxdWlyZSh2KTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2xvbmdfc2V0KGF0b21p Y19sb25nX3QgKnYsIGxvbmcgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhdG9taWM2NF9zZXQodiwgaSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IGF0b21pY19sb25nX3NldF9yZWxl YXNlKGF0b21pY19sb25nX3QgKnYsIGxvbmcgaSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhdG9taWM2NF9z ZXRfcmVsZWFzZSh2LCBpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRv bWljX2xvbmdfYWRkKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBh dG9taWM2NF9hZGQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0 b21pY19sb25nX2FkZF9yZXR1cm4obG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWM2NF9hZGRfcmV0dXJuKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19hZGRfcmV0dXJuX2FjcXVpcmUobG9uZyBp LCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9hZGRf cmV0dXJuKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNf bG9uZ19hZGRfcmV0dXJuX3JlbGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9hZGRfcmV0dXJuKGksIHYpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19hZGRfcmV0dXJuX3JlbGF4ZWQobG9u ZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9h ZGRfcmV0dXJuKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9t aWNfbG9uZ19mZXRjaF9hZGQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX2FkZF9hY3F1aXJlKGxvbmcgaSwgYXRv bWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYWRk KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19m ZXRjaF9hZGRfcmVsZWFzZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZChpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0Y2hfYWRkX3JlbGF4ZWQobG9uZyBpLCBhdG9t aWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQo aSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IGF0b21pY19sb25nX3N1 Yihsb25nIGksIGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgYXRvbWljNjRfc3Vi KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19z dWJfcmV0dXJuKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9u ZwoxNDQ3NDogYXRvbWljX2xvbmdfc3ViX3JldHVybl9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xv bmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2 KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfc3ViX3Jl dHVybl9yZWxlYXNlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg bG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfc3ViX3JldHVybl9yZWxheGVkKGxvbmcgaSwgYXRvbWlj X2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihp LCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0 Y2hfc3ViKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g YXRvbWljNjRfZmV0Y2hfc3ViKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0 NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9zdWJfYWNxdWlyZShsb25nIGksIGF0b21pY19sb25nX3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX3N1YihpLCB2KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0Y2hfc3ViX3Jl bGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBh dG9taWM2NF9mZXRjaF9zdWIoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0 NzQ6IGF0b21pY19sb25nX2ZldGNoX3N1Yl9yZWxheGVkKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAq dikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKGksIHYpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhdG9taWNfbG9uZ19pbmMoYXRvbWljX2xv bmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhdG9taWM2NF9pbmModik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2luY19yZXR1cm4oYXRvbWljX2xvbmdf dCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfaW5jX3JldHVybih2KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfaW5jX3JldHVybl9h Y3F1aXJlKGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0 X2luY19yZXR1cm5fYWNxdWlyZSh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3 NDogYXRvbWljX2xvbmdfaW5jX3JldHVybl9yZWxlYXNlKGF0b21pY19sb25nX3QgKnYpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2luY19yZXR1cm5fcmVsZWFzZSh2KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfaW5jX3JldHVybl9yZWxh eGVkKGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2lu Y19yZXR1cm5fcmVsYXhlZCh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDog YXRvbWljX2xvbmdfZmV0Y2hfaW5jKGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGF0b21pYzY0X2ZldGNoX2luYyh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9u ZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0Y2hfaW5jX2FjcXVpcmUoYXRvbWljX2xvbmdfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfaW5jX2FjcXVpcmUodik7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX2luY19y ZWxlYXNlKGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0 X2ZldGNoX2luY19yZWxlYXNlKHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0 OiBhdG9taWNfbG9uZ19mZXRjaF9pbmNfcmVsYXhlZChhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9pbmNfcmVsYXhlZCh2KTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2xvbmdfZGVjKGF0b21pY19sb25nX3Qg KnYpCjE0NDc0OiB7CjE0NDc0OiAgYXRvbWljNjRfZGVjKHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19kZWNfcmV0dXJuKGF0b21pY19sb25nX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2RlY19yZXR1cm4odik7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2RlY19yZXR1cm5fYWNxdWly ZShhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9kZWNf cmV0dXJuX2FjcXVpcmUodik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0 b21pY19sb25nX2RlY19yZXR1cm5fcmVsZWFzZShhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWM2NF9kZWNfcmV0dXJuX3JlbGVhc2Uodik7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2RlY19yZXR1cm5fcmVsYXhlZChh dG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9kZWNfcmV0 dXJuX3JlbGF4ZWQodik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21p Y19sb25nX2ZldGNoX2RlYyhhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBhdG9taWM2NF9mZXRjaF9kZWModik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0 NzQ6IGF0b21pY19sb25nX2ZldGNoX2RlY19hY3F1aXJlKGF0b21pY19sb25nX3QgKnYpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2RlY19hY3F1aXJlKHYpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9kZWNfcmVsZWFz ZShhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRj aF9kZWNfcmVsZWFzZSh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRv bWljX2xvbmdfZmV0Y2hfZGVjX3JlbGF4ZWQoYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfZGVjX3JlbGF4ZWQodik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQKMTQ0NzQ6IGF0b21pY19sb25nX2FuZChsb25nIGksIGF0b21pY19sb25n X3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgYXRvbWljNjRfYW5kKGksIHYpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9hbmQobG9uZyBpLCBhdG9t aWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQo aSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2Zl dGNoX2FuZF9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9hbmRfcmVsZWFzZShsb25nIGksIGF0b21p Y19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FuZChp LCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0 Y2hfYW5kX3JlbGF4ZWQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQKMTQ0NzQ6IGF0b21pY19sb25nX2FuZG5vdChsb25nIGksIGF0b21pY19sb25nX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgYXRvbWljNjRfYW5kbm90KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19mZXRjaF9hbmRub3QobG9uZyBpLCBhdG9t aWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmRu b3QoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25n X2ZldGNoX2FuZG5vdF9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kbm90X2FjcXVpcmUoaSwgdik7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX2FuZG5vdF9y ZWxlYXNlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g YXRvbWljNjRfZmV0Y2hfYW5kbm90X3JlbGVhc2UoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX2FuZG5vdF9yZWxheGVkKGxvbmcgaSwg YXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hf YW5kbm90X3JlbGF4ZWQoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6 IGF0b21pY19sb25nX29yKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBhdG9taWM2NF9vcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDog YXRvbWljX2xvbmdfZmV0Y2hfb3IobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9vcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfZmV0Y2hfb3JfYWNxdWlyZShsb25nIGksIGF0 b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX29y KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19m ZXRjaF9vcl9yZWxlYXNlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljNjRfZmV0Y2hfb3IoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX29yX3JlbGF4ZWQobG9uZyBpLCBhdG9taWNf bG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF9vcihpLCB2 KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogYXRvbWljX2xvbmdfeG9yKGxv bmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICBhdG9taWM2NF94b3IoaSwg dik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNo X3hvcihsb25nIGksIGF0b21pY19sb25nX3QgKnYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0 b21pYzY0X2ZldGNoX3hvcihpLCB2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3 NDogYXRvbWljX2xvbmdfZmV0Y2hfeG9yX2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9mZXRjaF94b3IoaSwgdik7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2ZldGNoX3hvcl9yZWxl YXNlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRv bWljNjRfZmV0Y2hfeG9yKGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0 OiBhdG9taWNfbG9uZ19mZXRjaF94b3JfcmVsYXhlZChsb25nIGksIGF0b21pY19sb25nX3QgKnYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX3hvcihpLCB2KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfeGNoZyhhdG9taWNfbG9u Z190ICp2LCBsb25nIGkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3hjaGcodiwg aSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX3hjaGdf YWNxdWlyZShhdG9taWNfbG9uZ190ICp2LCBsb25nIGkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IGF0b21pYzY0X3hjaGcodiwgaSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6 IGF0b21pY19sb25nX3hjaGdfcmVsZWFzZShhdG9taWNfbG9uZ190ICp2LCBsb25nIGkpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX3hjaGdfcmVsYXhlZChhdG9taWNfbG9uZ190 ICp2LCBsb25nIGkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0b21pY19sb25nX2NtcHhjaGco YXRvbWljX2xvbmdfdCAqdiwgbG9uZyBvbGQsIGxvbmcgbmV3KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBhdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwoxNDQ3NDogYXRvbWljX2xvbmdfY21weGNoZ19hY3F1aXJlKGF0b21pY19sb25nX3Qg KnYsIGxvbmcgb2xkLCBsb25nIG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRf Y21weGNoZyh2LCBvbGQsIG5ldyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6 IGF0b21pY19sb25nX2NtcHhjaGdfcmVsZWFzZShhdG9taWNfbG9uZ190ICp2LCBsb25nIG9sZCwg bG9uZyBuZXcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2NtcHhjaGcodiwgb2xk LCBuZXcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19j bXB4Y2hnX3JlbGF4ZWQoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyBvbGQsIGxvbmcgbmV3KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoYXRv bWljX2xvbmdfdCAqdiwgbG9uZyAqb2xkLCBsb25nIG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgKHM2NCAqKW9sZCwgbmV3KTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGdfYWNxdWlyZShh dG9taWNfbG9uZ190ICp2LCBsb25nICpvbGQsIGxvbmcgbmV3KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBhdG9taWM2NF90cnlfY21weGNoZyh2LCAoczY0ICopb2xkLCBuZXcpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sCjE0NDc0OiBhdG9taWNfbG9uZ190cnlfY21weGNoZ19yZWxlYXNl KGF0b21pY19sb25nX3QgKnYsIGxvbmcgKm9sZCwgbG9uZyBuZXcpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGF0b21pYzY0X3RyeV9jbXB4Y2hnKHYsIChzNjQgKilvbGQsIG5ldyk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19sb25nX3RyeV9jbXB4Y2hnX3JlbGF4 ZWQoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyAqb2xkLCBsb25nIG5ldykKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgKHM2NCAqKW9sZCwgbmV3KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogYXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KGxv bmcgaSwgYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRf c3ViX2FuZF90ZXN0KGksIHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0OiBh dG9taWNfbG9uZ19kZWNfYW5kX3Rlc3QoYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYXRvbWljNjRfZGVjX2FuZF90ZXN0KHYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sCjE0NDc0OiBhdG9taWNfbG9uZ19pbmNfYW5kX3Rlc3QoYXRvbWljX2xvbmdfdCAqdikK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRfaW5jX2FuZF90ZXN0KHYpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0OiBhdG9taWNfbG9uZ19hZGRfbmVnYXRpdmUobG9u ZyBpLCBhdG9taWNfbG9uZ190ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9h ZGRfbmVnYXRpdmUoaSwgdik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKMTQ0NzQ6IGF0 b21pY19sb25nX2ZldGNoX2FkZF91bmxlc3MoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyBhLCBsb25n IHUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3Modiwg YSwgdSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19sb25nX2Fk ZF91bmxlc3MoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyBhLCBsb25nIHUpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGF0b21pYzY0X2FkZF91bmxlc3ModiwgYSwgdSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19sb25nX2luY19ub3RfemVybyhhdG9taWNfbG9uZ190 ICp2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9pbmNfbm90X3plcm8odik7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGF0b21pY19sb25nX2luY191bmxlc3Nf bmVnYXRpdmUoYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWlj NjRfaW5jX3VubGVzc19uZWdhdGl2ZSh2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAox NDQ3NDogYXRvbWljX2xvbmdfZGVjX3VubGVzc19wb3NpdGl2ZShhdG9taWNfbG9uZ190ICp2KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBhdG9taWM2NF9kZWNfdW5sZXNzX3Bvc2l0aXZlKHYpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCjE0NDc0OiBhdG9taWNfbG9uZ19kZWNfaWZfcG9z aXRpdmUoYXRvbWljX2xvbmdfdCAqdikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljNjRf ZGVjX2lmX3Bvc2l0aXZlKHYpOwoxNDQ3NDogfQoxNDQ3NDogIyA3NyAiLi9pbmNsdWRlL2xpbnV4 L2F0b21pYy5oIiAyCjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGludXgva2dkYi5oIiAyCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rZ2RiLmgiIDEKMTQ0NzQ6ICMg MTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va2dkYi5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiIDEKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvY29uc3Qu aCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9s aW51eC9jb25zdC5oIiAxCjE0NDc0OiAjIDUgIi4vaW5jbHVkZS9saW51eC9jb25zdC5oIiAyCjE0 NDc0OiAjIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2VnbWVudC5oIiAyCjE0NDc0OiAjIDE2 OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCjE0NDc0OiAjIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vY2FjaGUuaCIgMQoxNDQ3NDogIyAxNzAgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vc2VnbWVudC5oIiAyCjE0NDc0OiAjIDI0OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9z ZWdtZW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHZkc29fZW5jb2RlX2NwdW5vZGUoaW50IGNw dSwgdW5zaWduZWQgbG9uZyBub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAobm9kZSA8PCAx MikgfCBjcHU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdmRzb19yZWFkX2NwdW5vZGUo dW5zaWduZWQgKmNwdSwgdW5zaWduZWQgKm5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQg aW50IHA7CjE0NDc0OiAjIDI2NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCjE0 NDc0OiAgYXNtIF9faW5saW5lIHZvbGF0aWxlICgiIyBBTFQ6IG9sZG5zdHJcbiIgIjY2MTpcblx0 IiAibHNsICVbc2VnXSwlW3BdIiAiXG42NjI6XG4iICIjIEFMVDogcGFkZGluZ1xuIiAiLnNraXAg LSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpID4gMCkg KiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpLDB4 OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4i ICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQg IiAiKDE2KjMyKzIyKSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUg IiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJc biIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCBc ImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIxIiAiXG4iICI2NjQiIjEiIjpcblx0IiAi LmJ5dGUgMHhmMywweDBmLDB4YzcsMHhmOCIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rp b25cbiIgOiBbcF0gIj1hIiAocCkgOiAiaSIgKDApLCBbc2VnXSAiciIgKCgxNSo4ICsgMykpKQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoY3B1KQoxNDQ3NDogICAqY3B1ID0gKHAgJiAw eGZmZik7CjE0NDc0OiAgaWYgKG5vZGUpCjE0NDc0OiAgICpub2RlID0gKHAgPj4gMTIpOwoxNDQ3 NDogfQoxNDQ3NDogIyAzMDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2VnbWVudC5oIgoxNDQ3 NDogZXh0ZXJuIGNvbnN0IGNoYXIgZWFybHlfaWR0X2hhbmRsZXJfYXJyYXlbMzJdWzldOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgZWFybHlfaWdub3JlX2lycSh2b2lkKTsKMTQ0NzQ6ICMgMzQ3ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19sb2Fkc2VnbWVudF9m cyh1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIgkJ CQkJCVxuIgoxNDQ3NDogICAgICAgICIxOgltb3Z3ICUwLCAlJWZzCQkJXG4iCjE0NDc0OiAgICAg ICAgIjI6CQkJCQlcbiIKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICIgLnB1c2hzZWN0aW9uIFwiX19l eF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjFiIiAiKSAtIC5c biIgIiAubG9uZyAoIiAiMmIiICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5kbGVyX2NsZWFy X2ZzIiAiKSAtIC5cbiIgIiAucG9wc2VjdGlvblxuIgoxNDQ3NDogCjE0NDc0OiAgICAgICAgOiA6 ICJybSIgKHZhbHVlKSA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3BhZ2VfdHlwZXMuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbWVtX2VuY3J5cHQuaCIgMQox NDQ3NDogIyAxNyAiLi9pbmNsdWRlL2xpbnV4L21lbV9lbmNyeXB0LmgiCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vbWVtX2VuY3J5cHQuaCIgMQoxNDQ3NDogIyAxNyAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9tZW1fZW5jcnlwdC5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2lu Y2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiIDEKMTQ0NzQ6ICMgNDMgIi4vYXJjaC94ODYvaW5j bHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Nj cmVlbl9pbmZvLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zY3JlZW5faW5mby5oIiAxCjE0NDc0OiAjIDExICIuL2lu Y2x1ZGUvdWFwaS9saW51eC9zY3JlZW5faW5mby5oIgoxNDQ3NDogc3RydWN0IHNjcmVlbl9pbmZv IHsKMTQ0NzQ6ICBfX3U4IG9yaWdfeDsKMTQ0NzQ6ICBfX3U4IG9yaWdfeTsKMTQ0NzQ6ICBfX3Ux NiBleHRfbWVtX2s7CjE0NDc0OiAgX191MTYgb3JpZ192aWRlb19wYWdlOwoxNDQ3NDogIF9fdTgg b3JpZ192aWRlb19tb2RlOwoxNDQ3NDogIF9fdTggb3JpZ192aWRlb19jb2xzOwoxNDQ3NDogIF9f dTggZmxhZ3M7CjE0NDc0OiAgX191OCB1bnVzZWQyOwoxNDQ3NDogIF9fdTE2IG9yaWdfdmlkZW9f ZWdhX2J4OwoxNDQ3NDogIF9fdTE2IHVudXNlZDM7CjE0NDc0OiAgX191OCBvcmlnX3ZpZGVvX2xp bmVzOwoxNDQ3NDogIF9fdTggb3JpZ192aWRlb19pc1ZHQTsKMTQ0NzQ6ICBfX3UxNiBvcmlnX3Zp ZGVvX3BvaW50czsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MTYgbGZiX3dpZHRoOwoxNDQ3 NDogIF9fdTE2IGxmYl9oZWlnaHQ7CjE0NDc0OiAgX191MTYgbGZiX2RlcHRoOwoxNDQ3NDogIF9f dTMyIGxmYl9iYXNlOwoxNDQ3NDogIF9fdTMyIGxmYl9zaXplOwoxNDQ3NDogIF9fdTE2IGNsX21h Z2ljLCBjbF9vZmZzZXQ7CjE0NDc0OiAgX191MTYgbGZiX2xpbmVsZW5ndGg7CjE0NDc0OiAgX191 OCByZWRfc2l6ZTsKMTQ0NzQ6ICBfX3U4IHJlZF9wb3M7CjE0NDc0OiAgX191OCBncmVlbl9zaXpl OwoxNDQ3NDogIF9fdTggZ3JlZW5fcG9zOwoxNDQ3NDogIF9fdTggYmx1ZV9zaXplOwoxNDQ3NDog IF9fdTggYmx1ZV9wb3M7CjE0NDc0OiAgX191OCByc3ZkX3NpemU7CjE0NDc0OiAgX191OCByc3Zk X3BvczsKMTQ0NzQ6ICBfX3UxNiB2ZXNhcG1fc2VnOwoxNDQ3NDogIF9fdTE2IHZlc2FwbV9vZmY7 CjE0NDc0OiAgX191MTYgcGFnZXM7CjE0NDc0OiAgX191MTYgdmVzYV9hdHRyaWJ1dGVzOwoxNDQ3 NDogIF9fdTMyIGNhcGFiaWxpdGllczsKMTQ0NzQ6ICBfX3UzMiBleHRfbGZiX2Jhc2U7CjE0NDc0 OiAgX191OCBfcmVzZXJ2ZWRbMl07CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwox NDQ3NDogIyA2ICIuL2luY2x1ZGUvbGludXgvc2NyZWVuX2luZm8uaCIgMgoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gc3RydWN0IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwoxNDQ3NDogIyA0NCAiLi9h cmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2Jvb3RwYXJhbS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC9hcG1fYmlvcy5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9hcG1f Ymlvcy5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9hcG1fYmlvcy5oIiAxCjE0 NDc0OiAjIDIyICIuL2luY2x1ZGUvdWFwaS9saW51eC9hcG1fYmlvcy5oIgoxNDQ3NDogdHlwZWRl ZiB1bnNpZ25lZCBzaG9ydCBhcG1fZXZlbnRfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgc2hv cnQgYXBtX2V2ZW50aW5mb190OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXBtX2Jpb3NfaW5mbyB7 CjE0NDc0OiAgX191MTYgdmVyc2lvbjsKMTQ0NzQ6ICBfX3UxNiBjc2VnOwoxNDQ3NDogIF9fdTMy IG9mZnNldDsKMTQ0NzQ6ICBfX3UxNiBjc2VnXzE2OwoxNDQ3NDogIF9fdTE2IGRzZWc7CjE0NDc0 OiAgX191MTYgZmxhZ3M7CjE0NDc0OiAgX191MTYgY3NlZ19sZW47CjE0NDc0OiAgX191MTYgY3Nl Z18xNl9sZW47CjE0NDc0OiAgX191MTYgZHNlZ19sZW47CjE0NDc0OiB9OwoxNDQ3NDogIyAxMzMg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2FwbV9iaW9zLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2lvY3RsLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lvY3RsLmgiIDEK MTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2lvY3RsLmgiIDEKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJp Yy9pb2N0bC5oIiAxCjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9pb2N0bC5oIiAy CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGludCBfX2ludmFsaWRfc2l6ZV9hcmd1bWVudF9mb3JfSU9DOwoxNDQ3NDogIyAyICIu L2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lvY3RsLmgiIDIKMTQ0NzQ6ICMg NiAiLi9pbmNsdWRlL3VhcGkvbGludXgvaW9jdGwuaCIgMgoxNDQ3NDogIyAxMzQgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L2FwbV9iaW9zLmgiIDIKMTQ0NzQ6ICMgMTAgIi4vaW5jbHVkZS9saW51eC9h cG1fYmlvcy5oIiAyCjE0NDc0OiAjIDI2ICIuL2luY2x1ZGUvbGludXgvYXBtX2Jpb3MuaCIKMTQ0 NzQ6IHN0cnVjdCBhcG1faW5mbyB7CjE0NDc0OiAgc3RydWN0IGFwbV9iaW9zX2luZm8gYmlvczsK MTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBjb25uZWN0aW9uX3ZlcnNpb247CjE0NDc0OiAgaW50IGdl dF9wb3dlcl9zdGF0dXNfYnJva2VuOwoxNDQ3NDogIGludCBnZXRfcG93ZXJfc3RhdHVzX3N3YWJp bm1pbnV0ZXM7CjE0NDc0OiAgaW50IGFsbG93X2ludHM7CjE0NDc0OiAgaW50IGZvcmJpZF9pZGxl OwoxNDQ3NDogIGludCByZWFsbW9kZV9wb3dlcl9vZmY7CjE0NDc0OiAgaW50IGRpc2FibGVkOwox NDQ3NDogfTsKMTQ0NzQ6ICMgODUgIi4vaW5jbHVkZS9saW51eC9hcG1fYmlvcy5oIgoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCBhcG1faW5mbyBhcG1faW5mbzsKMTQ0NzQ6ICMgNDUgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgvZWRkLmgiIDEKMTQ0NzQ6ICMgMjQgIi4vaW5jbHVkZS9saW51eC9lZGQuaCIKMTQ0NzQ6ICMg MSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZWRkLmgiIDEKMTQ0NzQ6ICMgNzIgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2VkZC5oIgoxNDQ3NDogc3RydWN0IGVkZF9kZXZpY2VfcGFyYW1zIHsKMTQ0NzQ6 ICBfX3UxNiBsZW5ndGg7CjE0NDc0OiAgX191MTYgaW5mb19mbGFnczsKMTQ0NzQ6ICBfX3UzMiBu dW1fZGVmYXVsdF9jeWxpbmRlcnM7CjE0NDc0OiAgX191MzIgbnVtX2RlZmF1bHRfaGVhZHM7CjE0 NDc0OiAgX191MzIgc2VjdG9yc19wZXJfdHJhY2s7CjE0NDc0OiAgX191NjQgbnVtYmVyX29mX3Nl Y3RvcnM7CjE0NDc0OiAgX191MTYgYnl0ZXNfcGVyX3NlY3RvcjsKMTQ0NzQ6ICBfX3UzMiBkcHRl X3B0cjsKMTQ0NzQ6ICBfX3UxNiBrZXk7CjE0NDc0OiAgX191OCBkZXZpY2VfcGF0aF9pbmZvX2xl bmd0aDsKMTQ0NzQ6ICBfX3U4IHJlc2VydmVkMjsKMTQ0NzQ6ICBfX3UxNiByZXNlcnZlZDM7CjE0 NDc0OiAgX191OCBob3N0X2J1c190eXBlWzRdOwoxNDQ3NDogIF9fdTggaW50ZXJmYWNlX3R5cGVb OF07CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgX191MTYgYmFz ZV9hZGRyZXNzOwoxNDQ3NDogICAgX191MTYgcmVzZXJ2ZWQxOwoxNDQ3NDogICAgX191MzIgcmVz ZXJ2ZWQyOwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBpc2E7CjE0NDc0OiAg IHN0cnVjdCB7CjE0NDc0OiAgICBfX3U4IGJ1czsKMTQ0NzQ6ICAgIF9fdTggc2xvdDsKMTQ0NzQ6 ICAgIF9fdTggZnVuY3Rpb247CjE0NDc0OiAgICBfX3U4IGNoYW5uZWw7CjE0NDc0OiAgICBfX3Uz MiByZXNlcnZlZDsKMTQ0NzQ6ICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgcGNpOwoxNDQ3 NDogCjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICBfX3U2NCByZXNlcnZlZDsKMTQ0NzQ6ICAg fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgaWJuZDsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6 ICAgIF9fdTY0IHJlc2VydmVkOwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB4 cHJzOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgX191NjQgcmVzZXJ2ZWQ7CjE0NDc0OiAg IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGh0cHQ7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0 OiAgICBfX3U2NCByZXNlcnZlZDsKMTQ0NzQ6ICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkg dW5rbm93bjsKMTQ0NzQ6ICB9IGludGVyZmFjZV9wYXRoOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6 ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIF9fdTggZGV2aWNlOwoxNDQ3NDogICAgX191OCByZXNlcnZl ZDE7CjE0NDc0OiAgICBfX3UxNiByZXNlcnZlZDI7CjE0NDc0OiAgICBfX3UzMiByZXNlcnZlZDM7 CjE0NDc0OiAgICBfX3U2NCByZXNlcnZlZDQ7CjE0NDc0OiAgIH0gX19hdHRyaWJ1dGVfXyAoKHBh Y2tlZCkpIGF0YTsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIF9fdTggZGV2aWNlOwoxNDQ3 NDogICAgX191OCBsdW47CjE0NDc0OiAgICBfX3U4IHJlc2VydmVkMTsKMTQ0NzQ6ICAgIF9fdTgg cmVzZXJ2ZWQyOwoxNDQ3NDogICAgX191MzIgcmVzZXJ2ZWQzOwoxNDQ3NDogICAgX191NjQgcmVz ZXJ2ZWQ0OwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBhdGFwaTsKMTQ0NzQ6 ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIF9fdTE2IGlkOwoxNDQ3NDogICAgX191NjQgbHVuOwoxNDQ3 NDogICAgX191MTYgcmVzZXJ2ZWQxOwoxNDQ3NDogICAgX191MzIgcmVzZXJ2ZWQyOwoxNDQ3NDog ICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBzY3NpOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3 NDogICAgX191NjQgc2VyaWFsX251bWJlcjsKMTQ0NzQ6ICAgIF9fdTY0IHJlc2VydmVkOwoxNDQ3 NDogICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB1c2I7CjE0NDc0OiAgIHN0cnVjdCB7CjE0 NDc0OiAgICBfX3U2NCBldWk7CjE0NDc0OiAgICBfX3U2NCByZXNlcnZlZDsKMTQ0NzQ6ICAgfSBf X2F0dHJpYnV0ZV9fICgocGFja2VkKSkgaTEzOTQ7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAg ICBfX3U2NCB3d2lkOwoxNDQ3NDogICAgX191NjQgbHVuOwoxNDQ3NDogICB9IF9fYXR0cmlidXRl X18gKChwYWNrZWQpKSBmaWJyZTsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIF9fdTY0IGlk ZW50aXR5X3RhZzsKMTQ0NzQ6ICAgIF9fdTY0IHJlc2VydmVkOwoxNDQ3NDogICB9IF9fYXR0cmli dXRlX18gKChwYWNrZWQpKSBpMm87CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICBfX3UzMiBh cnJheV9udW1iZXI7CjE0NDc0OiAgICBfX3UzMiByZXNlcnZlZDE7CjE0NDc0OiAgICBfX3U2NCBy ZXNlcnZlZDI7CjE0NDc0OiAgIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHJhaWQ7CjE0NDc0 OiAgIHN0cnVjdCB7CjE0NDc0OiAgICBfX3U4IGRldmljZTsKMTQ0NzQ6ICAgIF9fdTggcmVzZXJ2 ZWQxOwoxNDQ3NDogICAgX191MTYgcmVzZXJ2ZWQyOwoxNDQ3NDogICAgX191MzIgcmVzZXJ2ZWQz OwoxNDQ3NDogICAgX191NjQgcmVzZXJ2ZWQ0OwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSBzYXRhOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgX191NjQgcmVzZXJ2ZWQx OwoxNDQ3NDogICAgX191NjQgcmVzZXJ2ZWQyOwoxNDQ3NDogICB9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSB1bmtub3duOwoxNDQ3NDogIH0gZGV2aWNlX3BhdGg7CjE0NDc0OiAgX191OCByZXNl cnZlZDQ7CjE0NDc0OiAgX191OCBjaGVja3N1bTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXyAoKHBh Y2tlZCkpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZWRkX2luZm8gewoxNDQ3NDogIF9fdTggZGV2 aWNlOwoxNDQ3NDogIF9fdTggdmVyc2lvbjsKMTQ0NzQ6ICBfX3UxNiBpbnRlcmZhY2Vfc3VwcG9y dDsKMTQ0NzQ6ICBfX3UxNiBsZWdhY3lfbWF4X2N5bGluZGVyOwoxNDQ3NDogIF9fdTggbGVnYWN5 X21heF9oZWFkOwoxNDQ3NDogIF9fdTggbGVnYWN5X3NlY3RvcnNfcGVyX3RyYWNrOwoxNDQ3NDog IHN0cnVjdCBlZGRfZGV2aWNlX3BhcmFtcyBwYXJhbXM7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18g KChwYWNrZWQpKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVkZCB7CjE0NDc0OiAgdW5zaWduZWQg aW50IG1icl9zaWduYXR1cmVbMTZdOwoxNDQ3NDogIHN0cnVjdCBlZGRfaW5mbyBlZGRfaW5mb1s2 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIG1icl9zaWduYXR1cmVfbnI7CjE0NDc0OiAgdW5zaWdu ZWQgY2hhciBlZGRfaW5mb19ucjsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI1ICIuL2luY2x1ZGUvbGlu dXgvZWRkLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGVkZCBlZGQ7 CjE0NDc0OiAjIDQ2ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiIDIK MTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pc3QuaCIgMQoxNDQ3NDogIyA5ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2lzdC5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvdWFwaS9hc20vaXN0LmgiIDEKMTQ0NzQ6ICMgMjMgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBp L2FzbS9pc3QuaCIKMTQ0NzQ6IHN0cnVjdCBpc3RfaW5mbyB7CjE0NDc0OiAgX191MzIgc2lnbmF0 dXJlOwoxNDQ3NDogIF9fdTMyIGNvbW1hbmQ7CjE0NDc0OiAgX191MzIgZXZlbnQ7CjE0NDc0OiAg X191MzIgcGVyZl9sZXZlbDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDEwICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2lzdC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBpc3Rf aW5mbyBpc3RfaW5mbzsKMTQ0NzQ6ICMgNDcgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9i b290cGFyYW0uaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdmlkZW8vZWRpZC5oIiAxCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvdmlk ZW8vZWRpZC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBlZGlkX2luZm8gewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgZHVtbXlbMTI4XTsKMTQ0NzQ6IH07 CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS92aWRlby9lZGlkLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gc3RydWN0IGVkaWRfaW5mbyBlZGlkX2luZm87CjE0NDc0OiAjIDQ4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3Qgc2V0dXBfZGF0YSB7CjE0NDc0OiAgX191NjQgbmV4dDsKMTQ0NzQ6ICBfX3Uz MiB0eXBlOwoxNDQ3NDogIF9fdTMyIGxlbjsKMTQ0NzQ6ICBfX3U4IGRhdGFbMF07CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzZXR1cF9pbmRpcmVjdCB7CjE0NDc0OiAg X191MzIgdHlwZTsKMTQ0NzQ6ICBfX3UzMiByZXNlcnZlZDsKMTQ0NzQ6ICBfX3U2NCBsZW47CjE0 NDc0OiAgX191NjQgYWRkcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzZXR1cF9o ZWFkZXIgewoxNDQ3NDogIF9fdTggc2V0dXBfc2VjdHM7CjE0NDc0OiAgX191MTYgcm9vdF9mbGFn czsKMTQ0NzQ6ICBfX3UzMiBzeXNzaXplOwoxNDQ3NDogIF9fdTE2IHJhbV9zaXplOwoxNDQ3NDog IF9fdTE2IHZpZF9tb2RlOwoxNDQ3NDogIF9fdTE2IHJvb3RfZGV2OwoxNDQ3NDogIF9fdTE2IGJv b3RfZmxhZzsKMTQ0NzQ6ICBfX3UxNiBqdW1wOwoxNDQ3NDogIF9fdTMyIGhlYWRlcjsKMTQ0NzQ6 ICBfX3UxNiB2ZXJzaW9uOwoxNDQ3NDogIF9fdTMyIHJlYWxtb2RlX3N3dGNoOwoxNDQ3NDogIF9f dTE2IHN0YXJ0X3N5c19zZWc7CjE0NDc0OiAgX191MTYga2VybmVsX3ZlcnNpb247CjE0NDc0OiAg X191OCB0eXBlX29mX2xvYWRlcjsKMTQ0NzQ6ICBfX3U4IGxvYWRmbGFnczsKMTQ0NzQ6ICBfX3Ux NiBzZXR1cF9tb3ZlX3NpemU7CjE0NDc0OiAgX191MzIgY29kZTMyX3N0YXJ0OwoxNDQ3NDogIF9f dTMyIHJhbWRpc2tfaW1hZ2U7CjE0NDc0OiAgX191MzIgcmFtZGlza19zaXplOwoxNDQ3NDogIF9f dTMyIGJvb3RzZWN0X2tsdWRnZTsKMTQ0NzQ6ICBfX3UxNiBoZWFwX2VuZF9wdHI7CjE0NDc0OiAg X191OCBleHRfbG9hZGVyX3ZlcjsKMTQ0NzQ6ICBfX3U4IGV4dF9sb2FkZXJfdHlwZTsKMTQ0NzQ6 ICBfX3UzMiBjbWRfbGluZV9wdHI7CjE0NDc0OiAgX191MzIgaW5pdHJkX2FkZHJfbWF4OwoxNDQ3 NDogIF9fdTMyIGtlcm5lbF9hbGlnbm1lbnQ7CjE0NDc0OiAgX191OCByZWxvY2F0YWJsZV9rZXJu ZWw7CjE0NDc0OiAgX191OCBtaW5fYWxpZ25tZW50OwoxNDQ3NDogIF9fdTE2IHhsb2FkZmxhZ3M7 CjE0NDc0OiAgX191MzIgY21kbGluZV9zaXplOwoxNDQ3NDogIF9fdTMyIGhhcmR3YXJlX3N1YmFy Y2g7CjE0NDc0OiAgX191NjQgaGFyZHdhcmVfc3ViYXJjaF9kYXRhOwoxNDQ3NDogIF9fdTMyIHBh eWxvYWRfb2Zmc2V0OwoxNDQ3NDogIF9fdTMyIHBheWxvYWRfbGVuZ3RoOwoxNDQ3NDogIF9fdTY0 IHNldHVwX2RhdGE7CjE0NDc0OiAgX191NjQgcHJlZl9hZGRyZXNzOwoxNDQ3NDogIF9fdTMyIGlu aXRfc2l6ZTsKMTQ0NzQ6ICBfX3UzMiBoYW5kb3Zlcl9vZmZzZXQ7CjE0NDc0OiAgX191MzIga2Vy bmVsX2luZm9fb2Zmc2V0OwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHN5c19kZXNjX3RhYmxlIHsKMTQ0NzQ6ICBfX3UxNiBsZW5ndGg7CjE0 NDc0OiAgX191OCB0YWJsZVsxNF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBvbHBjX29md19oZWFkZXIgewoxNDQ3NDogIF9fdTMyIG9md19tYWdpYzsKMTQ0NzQ6ICBf X3UzMiBvZndfdmVyc2lvbjsKMTQ0NzQ6ICBfX3UzMiBjaWZfaGFuZGxlcjsKMTQ0NzQ6ICBfX3Uz MiBpcnFfZGVzY190YWJsZTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBlZmlfaW5mbyB7CjE0NDc0OiAgX191MzIgZWZpX2xvYWRlcl9zaWdu YXR1cmU7CjE0NDc0OiAgX191MzIgZWZpX3N5c3RhYjsKMTQ0NzQ6ICBfX3UzMiBlZmlfbWVtZGVz Y19zaXplOwoxNDQ3NDogIF9fdTMyIGVmaV9tZW1kZXNjX3ZlcnNpb247CjE0NDc0OiAgX191MzIg ZWZpX21lbW1hcDsKMTQ0NzQ6ICBfX3UzMiBlZmlfbWVtbWFwX3NpemU7CjE0NDc0OiAgX191MzIg ZWZpX3N5c3RhYl9oaTsKMTQ0NzQ6ICBfX3UzMiBlZmlfbWVtbWFwX2hpOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgMTQwICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiCjE0NDc0 OiBzdHJ1Y3QgYm9vdF9lODIwX2VudHJ5IHsKMTQ0NzQ6ICBfX3U2NCBhZGRyOwoxNDQ3NDogIF9f dTY0IHNpemU7CjE0NDc0OiAgX191MzIgdHlwZTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CjE0NDc0OiAjIDE1NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2Jvb3RwYXJh bS5oIgoxNDQ3NDogc3RydWN0IGphaWxob3VzZV9zZXR1cF9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3Qg ewoxNDQ3NDogICBfX3UxNiB2ZXJzaW9uOwoxNDQ3NDogICBfX3UxNiBjb21wYXRpYmxlX3ZlcnNp b247CjE0NDc0OiAgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSBoZHI7CjE0NDc0OiAgc3RydWN0 IHsKMTQ0NzQ6ICAgX191MTYgcG1fdGltZXJfYWRkcmVzczsKMTQ0NzQ6ICAgX191MTYgbnVtX2Nw dXM7CjE0NDc0OiAgIF9fdTY0IHBjaV9tbWNvbmZpZ19iYXNlOwoxNDQ3NDogICBfX3UzMiB0c2Nf a2h6OwoxNDQ3NDogICBfX3UzMiBhcGljX2toejsKMTQ0NzQ6ICAgX191OCBzdGFuZGFyZF9pb2Fw aWM7CjE0NDc0OiAgIF9fdTggY3B1X2lkc1syNTVdOwoxNDQ3NDogIH0gX19hdHRyaWJ1dGVfXygo cGFja2VkKSkgdjE7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgX191MzIgZmxhZ3M7CjE0NDc0 OiAgfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB2MjsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygo cGFja2VkKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJvb3RfcGFyYW1zIHsKMTQ0 NzQ6ICBzdHJ1Y3Qgc2NyZWVuX2luZm8gc2NyZWVuX2luZm87CjE0NDc0OiAgc3RydWN0IGFwbV9i aW9zX2luZm8gYXBtX2Jpb3NfaW5mbzsKMTQ0NzQ6ICBfX3U4IF9wYWQyWzRdOwoxNDQ3NDogIF9f dTY0IHRib290X2FkZHI7CjE0NDc0OiAgc3RydWN0IGlzdF9pbmZvIGlzdF9pbmZvOwoxNDQ3NDog IF9fdTY0IGFjcGlfcnNkcF9hZGRyOwoxNDQ3NDogIF9fdTggX3BhZDNbOF07CjE0NDc0OiAgX191 OCBoZDBfaW5mb1sxNl07CjE0NDc0OiAgX191OCBoZDFfaW5mb1sxNl07CjE0NDc0OiAgc3RydWN0 IHN5c19kZXNjX3RhYmxlIHN5c19kZXNjX3RhYmxlOwoxNDQ3NDogIHN0cnVjdCBvbHBjX29md19o ZWFkZXIgb2xwY19vZndfaGVhZGVyOwoxNDQ3NDogIF9fdTMyIGV4dF9yYW1kaXNrX2ltYWdlOwox NDQ3NDogIF9fdTMyIGV4dF9yYW1kaXNrX3NpemU7CjE0NDc0OiAgX191MzIgZXh0X2NtZF9saW5l X3B0cjsKMTQ0NzQ6ICBfX3U4IF9wYWQ0WzExNl07CjE0NDc0OiAgc3RydWN0IGVkaWRfaW5mbyBl ZGlkX2luZm87CjE0NDc0OiAgc3RydWN0IGVmaV9pbmZvIGVmaV9pbmZvOwoxNDQ3NDogIF9fdTMy IGFsdF9tZW1fazsKMTQ0NzQ6ICBfX3UzMiBzY3JhdGNoOwoxNDQ3NDogIF9fdTggZTgyMF9lbnRy aWVzOwoxNDQ3NDogIF9fdTggZWRkYnVmX2VudHJpZXM7CjE0NDc0OiAgX191OCBlZGRfbWJyX3Np Z19idWZfZW50cmllczsKMTQ0NzQ6ICBfX3U4IGtiZF9zdGF0dXM7CjE0NDc0OiAgX191OCBzZWN1 cmVfYm9vdDsKMTQ0NzQ6ICBfX3U4IF9wYWQ1WzJdOwoxNDQ3NDogIyAyMTIgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIKMTQ0NzQ6ICBfX3U4IHNlbnRpbmVsOwoxNDQ3 NDogIF9fdTggX3BhZDZbMV07CjE0NDc0OiAgc3RydWN0IHNldHVwX2hlYWRlciBoZHI7CjE0NDc0 OiAgX191OCBfcGFkN1sweDI5MC0weDFmMS1zaXplb2Yoc3RydWN0IHNldHVwX2hlYWRlcildOwox NDQ3NDogIF9fdTMyIGVkZF9tYnJfc2lnX2J1ZmZlclsxNl07CjE0NDc0OiAgc3RydWN0IGJvb3Rf ZTgyMF9lbnRyeSBlODIwX3RhYmxlWzEyOF07CjE0NDc0OiAgX191OCBfcGFkOFs0OF07CjE0NDc0 OiAgc3RydWN0IGVkZF9pbmZvIGVkZGJ1Zls2XTsKMTQ0NzQ6ICBfX3U4IF9wYWQ5WzI3Nl07CjE0 NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoxNDQ3NDogIyAyNjIgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIKMTQ0NzQ6IGVudW0geDg2X2hhcmR3YXJlX3N1 YmFyY2ggewoxNDQ3NDogIFg4Nl9TVUJBUkNIX1BDID0gMCwKMTQ0NzQ6ICBYODZfU1VCQVJDSF9M R1VFU1QsCjE0NDc0OiAgWDg2X1NVQkFSQ0hfWEVOLAoxNDQ3NDogIFg4Nl9TVUJBUkNIX0lOVEVM X01JRCwKMTQ0NzQ6ICBYODZfU1VCQVJDSF9DRTQxMDAsCjE0NDc0OiAgWDg2X05SX1NVQkFSQ0hT LAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbWVtX2VuY3J5 cHQuaCIgMgoxNDQ3NDogIyA1OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tZW1fZW5jcnlwdC5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkg X19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzbWVfZWFybHlfZW5jcnlwdChyZXNvdXJjZV9zaXpl X3QgcGFkZHIsCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpIHsgfQoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1 dGVfXygoX19jb2xkX18pKSBzbWVfZWFybHlfZGVjcnlwdChyZXNvdXJjZV9zaXplX3QgcGFkZHIs CjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpIHsgfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpIHNtZV9tYXBfYm9vdGRhdGEoY2hhciAqcmVhbF9tb2RlX2RhdGEpIHsg fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkg X19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzbWVfdW5tYXBfYm9vdGRhdGEoY2hhciAqcmVhbF9t b2RlX2RhdGEpIHsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNtZV9lYXJseV9p bml0KHZvaWQpIHsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNtZV9lbmNyeXB0 X2tlcm5lbChzdHJ1Y3QgYm9vdF9wYXJhbXMgKmJwKSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1 dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9f KSkgc21lX2VuYWJsZShzdHJ1Y3QgYm9vdF9wYXJhbXMgKmJwKSB7IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBzbWVfYWN0aXZlKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9CjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHNldl9h Y3RpdmUodm9pZCkgeyByZXR1cm4gZmFsc2U7IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmli dXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRf XykpCjE0NDc0OiBlYXJseV9zZXRfbWVtb3J5X2RlY3J5cHRlZCh1bnNpZ25lZCBsb25nIHZhZGRy LCB1bnNpZ25lZCBsb25nIHNpemUpIHsgcmV0dXJuIDA7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0 ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18p KQoxNDQ3NDogZWFybHlfc2V0X21lbW9yeV9lbmNyeXB0ZWQodW5zaWduZWQgbG9uZyB2YWRkciwg dW5zaWduZWQgbG9uZyBzaXplKSB7IHJldHVybiAwOyB9CjE0NDc0OiAjIDkzICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL21lbV9lbmNyeXB0LmgiCjE0NDc0OiBleHRlcm4gY2hhciBfX3N0YXJ0X2Jz c19kZWNyeXB0ZWRbXSwgX19lbmRfYnNzX2RlY3J5cHRlZFtdLCBfX3N0YXJ0X2Jzc19kZWNyeXB0 ZWRfdW51c2VkW107CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgbWVtX2VuY3J5cHRfYWN0aXZlKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIDBVTEw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2 NCBzbWVfZ2V0X21lX21hc2sodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gMFVMTDsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9tZW1fZW5jcnlwdC5oIiAyCjE0NDc0 OiAjIDggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV90eXBlcy5oIiAyCjE0NDc0OiAjIDQ4 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9wYWdlXzY0X3R5cGVzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va2Fz bHIuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBs b25nIGthc2xyX2dldF9yYW5kb21fbG9uZyhjb25zdCBjaGFyICpwdXJwb3NlKTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiB2b2lkIGtlcm5lbF9yYW5kb21pemVfbWVtb3J5KHZvaWQpOwoxNDQ3NDog IyA3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRfdHlwZXMuaCIgMgoxNDQ3NDogIyA0 OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdlX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgNjQgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV90eXBlcy5oIgoxNDQ3NDogZXh0ZXJuIGludCBkZXZt ZW1faXNfYWxsb3dlZCh1bnNpZ25lZCBsb25nIHBhZ2Vucik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biB1bnNpZ25lZCBsb25nIG1heF9sb3dfcGZuX21hcHBlZDsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25l ZCBsb25nIG1heF9wZm5fbWFwcGVkOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaHlzX2FkZHJfdCBnZXRfbWF4 X21hcHBlZCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAocGh5c19hZGRyX3QpbWF4X3Bm bl9tYXBwZWQgPDwgMTI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgcGZuX3JhbmdlX2lz X21hcHBlZCh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW5pdF9tZW1vcnlfbWFwcGluZyh1 bnNpZ25lZCBsb25nIHN0YXJ0LAoxNDQ3NDogICAgICAgdW5zaWduZWQgbG9uZyBlbmQpOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gdm9pZCBpbml0bWVtX2luaXQodm9pZCk7CjE0NDc0OiAjIDcgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vcHRyYWNl LWFiaS5oIiAxCjE0NDc0OiAjIDcgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2Uu aCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci1mbGFncy5o IiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL3VhcGkvYXNtL3Byb2Nlc3Nvci1mbGFncy5oIiAxCjE0NDc0OiAjIDYgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLWZsYWdzLmgiIDIKMTQ0NzQ6ICMgOCAiLi9hcmNo L3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAyCjE0NDc0OiAjIDggIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcHRyYWNlLmgiIDIKMTQ0NzQ6ICMgNTYgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcHRyYWNlLmgiCjE0NDc0OiBzdHJ1Y3QgcHRfcmVncyB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHIxNTsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIHIxNDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHIxMzsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IHIxMjsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGJwOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgYng7 CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHIxMTsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IHIxMDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHI5OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcjg7 CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBheDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGN4OwoxNDQ3 NDogIHVuc2lnbmVkIGxvbmcgZHg7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzaTsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGRpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dW5zaWduZWQgbG9uZyBvcmlnX2F4OwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBpcDsK MTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGNzOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBzcDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNzOwoxNDQ3NDog CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaCIgMQoxNDQ3NDogIyA0MyAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2Rlc2NfZGVmcy5oIiAxCjE0NDc0OiAjIDE2ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2Rlc2NfZGVmcy5oIgoxNDQ3NDogc3RydWN0IGRlc2Nfc3RydWN0IHsKMTQ0NzQ6 ICB1MTYgbGltaXQwOwoxNDQ3NDogIHUxNiBiYXNlMDsKMTQ0NzQ6ICB1MTYgYmFzZTE6IDgsIHR5 cGU6IDQsIHM6IDEsIGRwbDogMiwgcDogMTsKMTQ0NzQ6ICB1MTYgbGltaXQxOiA0LCBhdmw6IDEs IGw6IDEsIGQ6IDEsIGc6IDEsIGJhc2UyOiA4OwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQpKTsKMTQ0NzQ6ICMgNDAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGVzY19kZWZzLmgiCjE0 NDc0OiBlbnVtIHsKMTQ0NzQ6ICBHQVRFX0lOVEVSUlVQVCA9IDB4RSwKMTQ0NzQ6ICBHQVRFX1RS QVAgPSAweEYsCjE0NDc0OiAgR0FURV9DQUxMID0gMHhDLAoxNDQ3NDogIEdBVEVfVEFTSyA9IDB4 NSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFU0NfVFNTID0gMHg5 LAoxNDQ3NDogIERFU0NfTERUID0gMHgyLAoxNDQ3NDogIERFU0NUWVBFX1MgPSAweDEwLAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbGR0dHNzX2Rlc2MgewoxNDQ3NDog IHUxNiBsaW1pdDA7CjE0NDc0OiAgdTE2IGJhc2UwOwoxNDQ3NDogCjE0NDc0OiAgdTE2IGJhc2Ux IDogOCwgdHlwZSA6IDUsIGRwbCA6IDIsIHAgOiAxOwoxNDQ3NDogIHUxNiBsaW1pdDEgOiA0LCB6 ZXJvMCA6IDMsIGcgOiAxLCBiYXNlMiA6IDg7CjE0NDc0OiAKMTQ0NzQ6ICB1MzIgYmFzZTM7CjE0 NDc0OiAgdTMyIHplcm8xOwoxNDQ3NDogCjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkp OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBsZHR0c3NfZGVzYyBsZHRfZGVzYzsKMTQ0 NzQ6IHR5cGVkZWYgc3RydWN0IGxkdHRzc19kZXNjIHRzc19kZXNjOwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgaWR0X2JpdHMgewoxNDQ3NDogIHUxNiBpc3QgOiAzLAoxNDQ3NDogICAgemVybyA6IDUs CjE0NDc0OiAgICB0eXBlIDogNSwKMTQ0NzQ6ICAgIGRwbCA6IDIsCjE0NDc0OiAgICBwIDogMTsK MTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBn YXRlX3N0cnVjdCB7CjE0NDc0OiAgdTE2IG9mZnNldF9sb3c7CjE0NDc0OiAgdTE2IHNlZ21lbnQ7 CjE0NDc0OiAgc3RydWN0IGlkdF9iaXRzIGJpdHM7CjE0NDc0OiAgdTE2IG9mZnNldF9taWRkbGU7 CjE0NDc0OiAKMTQ0NzQ6ICB1MzIgb2Zmc2V0X2hpZ2g7CjE0NDc0OiAgdTMyIHJlc2VydmVkOwox NDQ3NDogCjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoxNDQ3NDogCjE0NDc0OiB0 eXBlZGVmIHN0cnVjdCBnYXRlX3N0cnVjdCBnYXRlX2Rlc2M7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcgZ2F0ZV9vZmZzZXQoY29uc3QgZ2F0ZV9kZXNjICpnKQoxNDQ3NDogewoxNDQ3NDog CjE0NDc0OiAgcmV0dXJuIGctPm9mZnNldF9sb3cgfCAoKHVuc2lnbmVkIGxvbmcpZy0+b2Zmc2V0 X21pZGRsZSA8PCAxNikgfAoxNDQ3NDogICAoKHVuc2lnbmVkIGxvbmcpIGctPm9mZnNldF9oaWdo IDw8IDMyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgbG9uZyBnYXRlX3NlZ21lbnQoY29uc3QgZ2F0ZV9kZXNjICpnKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBnLT5zZWdtZW50OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZGVzY19wdHIgewoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IHNpemU7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBhZGRyZXNzOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSA7CjE0NDc0OiAj IDQ0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgiIDIKMTQ0NzQ6ICMg MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rbWFwX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgOSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9rbWFwX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9rbWFwX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTAgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20va21hcF90eXBlcy5oIiAyCjE0NDc0OiAjIDQ1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BhcmF2aXJ0X3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w Z3RhYmxlX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTMzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bn dGFibGVfdHlwZXMuaCIKMTQ0NzQ6IGVudW0gcGFnZV9jYWNoZV9tb2RlIHsKMTQ0NzQ6ICBfUEFH RV9DQUNIRV9NT0RFX1dCID0gMCwKMTQ0NzQ6ICBfUEFHRV9DQUNIRV9NT0RFX1dDID0gMSwKMTQ0 NzQ6ICBfUEFHRV9DQUNIRV9NT0RFX1VDX01JTlVTID0gMiwKMTQ0NzQ6ICBfUEFHRV9DQUNIRV9N T0RFX1VDID0gMywKMTQ0NzQ6ICBfUEFHRV9DQUNIRV9NT0RFX1dUID0gNCwKMTQ0NzQ6ICBfUEFH RV9DQUNIRV9NT0RFX1dQID0gNSwKMTQ0NzQ6IAoxNDQ3NDogIF9QQUdFX0NBQ0hFX01PREVfTlVN ID0gOAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjU3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFi bGVfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0 X3R5cGVzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oIiAxCjE0NDc0OiAjIDYgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcGd0YWJsZV82NF90eXBlcy5oIiAyCjE0NDc0OiAjIDE0ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBwdGV2YWxfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBwbWR2YWxfdDsK MTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBwdWR2YWxfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5z aWduZWQgbG9uZyBwNGR2YWxfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBwZ2R2YWxf dDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBwZ3Byb3R2YWxfdDsKMTQ0NzQ6IAoxNDQ3 NDogdHlwZWRlZiBzdHJ1Y3QgeyBwdGV2YWxfdCBwdGU7IH0gcHRlX3Q7CjE0NDc0OiAjIDQzICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCIKMTQ0NzQ6IGV4dGVybiB1 bnNpZ25lZCBpbnQgcGdkaXJfc2hpZnQ7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IHB0cnNf cGVyX3A0ZDsKMTQ0NzQ6ICMgMjU4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlw ZXMuaCIgMgoxNDQ3NDogIyAyNzMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBl cy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgcGdwcm90IHsgcGdwcm90dmFsX3QgcGdwcm90OyB9 IHBncHJvdF90OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7IHBnZHZhbF90IHBnZDsg fSBwZ2RfdDsKMTQ0NzQ6ICMgMzAwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlw ZXMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHBnZF90IG5hdGl2ZV9tYWtlX3BnZChwZ2R2YWxfdCB2YWwpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIChwZ2RfdCkgeyB2YWwgJiAofjBVTEwpIH07CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHBnZHZhbF90IG5hdGl2ZV9wZ2RfdmFsKHBnZF90IHBnZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gcGdkLnBnZCAmICh+MFVMTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBn ZHZhbF90IHBnZF9mbGFncyhwZ2RfdCBwZ2QpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG5hdGl2 ZV9wZ2RfdmFsKHBnZCkgJiAofigocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8 IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSkpOwoxNDQ3NDog fQoxNDQ3NDogIyAzMjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIgox NDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJsZS1ub3A0ZC5oIiAxCjE0NDc0 OiAjIDkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9wZ3RhYmxlLW5vcDRkLmgiCjE0NDc0OiB0eXBl ZGVmIHN0cnVjdCB7IHBnZF90IHBnZDsgfSBwNGRfdDsKMTQ0NzQ6ICMgMjIgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9wZ3RhYmxlLW5vcDRkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGdkX25vbmUocGdkX3QgcGdk KSB7IHJldHVybiAwOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGdkX2JhZChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDA7 IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCBwZ2RfcHJlc2VudChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDE7IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgcGdkX2NsZWFyKHBnZF90ICpwZ2QpIHsgfQoxNDQ3NDogIyAzNiAiLi9pbmNsdWRlL2Fz bS1nZW5lcmljL3BndGFibGUtbm9wNGQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZF90ICpwNGRfb2Zmc2V0KHBnZF90 ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHA0 ZF90ICopcGdkOwoxNDQ3NDogfQoxNDQ3NDogIyAzMjkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v cGd0YWJsZV90eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZF90IG5hdGl2ZV9tYWtlX3A0ZChw dWR2YWxfdCB2YWwpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChwNGRfdCkgeyAucGdkID0gbmF0 aXZlX21ha2VfcGdkKChwZ2R2YWxfdCl2YWwpIH07CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0 ZHZhbF90IG5hdGl2ZV9wNGRfdmFsKHA0ZF90IHA0ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g bmF0aXZlX3BnZF92YWwocDRkLnBnZCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7IHB1ZHZhbF90IHB1ZDsgfSBwdWRfdDsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgcHVkX3QgbmF0aXZlX21ha2VfcHVkKHBtZHZhbF90IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gKHB1ZF90KSB7IHZhbCB9OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwdWR2YWxf dCBuYXRpdmVfcHVkX3ZhbChwdWRfdCBwdWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHB1ZC5w dWQ7CjE0NDc0OiB9CjE0NDc0OiAjIDM2OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxl X3R5cGVzLmgiCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7IHBtZHZhbF90IHBtZDsgfSBwbWRfdDsK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgcG1kX3QgbmF0aXZlX21ha2VfcG1kKHBtZHZhbF90IHZhbCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKHBtZF90KSB7IHZhbCB9OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBwbWR2YWxfdCBuYXRpdmVfcG1kX3ZhbChwbWRfdCBwbWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIHBtZC5wbWQ7CjE0NDc0OiB9CjE0NDc0OiAjIDM5MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wZ3RhYmxlX3R5cGVzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwNGR2YWxfdCBwNGRfcGZuX21hc2socDRkX3QgcDRk KQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxv bmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0g MSkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZHZhbF90IHA0ZF9mbGFnc19tYXNrKHA0 ZF90IHA0ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gfnA0ZF9wZm5fbWFzayhwNGQpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBwNGR2YWxfdCBwNGRfZmxhZ3MocDRkX3QgcDRkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBuYXRpdmVfcDRkX3ZhbChwNGQpICYgcDRkX2ZsYWdzX21hc2socDRk KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHVkdmFsX3QgcHVkX3Bmbl9tYXNrKHB1ZF90IHB1 ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAobmF0aXZlX3B1ZF92YWwocHVkKSAmICgoKHB0ZXZhbF90 KSgxKSkgPDwgNykpCjE0NDc0OiAgIHJldHVybiAoKChzaWduZWQgbG9uZykofigoKDFVTCkgPDwg MzApLTEpKSkgJiAoKHBoeXNfYWRkcl90KSgoMVVMTCA8PCA1MikgLSAxKSkpOwoxNDQ3NDogIGVs c2UKMTQ0NzQ6ICAgcmV0dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8 IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHB1ZHZhbF90IHB1ZF9mbGFnc19tYXNrKHB1ZF90IHB1ZCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gfnB1ZF9wZm5fbWFzayhwdWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBwdWR2YWxfdCBwdWRfZmxhZ3MocHVkX3QgcHVkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBuYXRpdmVfcHVkX3ZhbChwdWQpICYgcHVkX2ZsYWdzX21hc2socHVkKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgcG1kdmFsX3QgcG1kX3Bmbl9tYXNrKHBtZF90IHBtZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICBpZiAobmF0aXZlX3BtZF92YWwocG1kKSAmICgoKHB0ZXZhbF90KSgxKSkgPDwgNykpCjE0 NDc0OiAgIHJldHVybiAoKChzaWduZWQgbG9uZykofigoKDFVTCkgPDwgMjEpLTEpKSkgJiAoKHBo eXNfYWRkcl90KSgoMVVMTCA8PCA1MikgLSAxKSkpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgcmV0 dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChw aHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHBtZHZhbF90IHBtZF9mbGFnc19tYXNrKHBtZF90IHBtZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gfnBtZF9wZm5fbWFzayhwbWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwbWR2YWxfdCBw bWRfZmxhZ3MocG1kX3QgcG1kKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBuYXRpdmVfcG1kX3Zh bChwbWQpICYgcG1kX2ZsYWdzX21hc2socG1kKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHRl X3QgbmF0aXZlX21ha2VfcHRlKHB0ZXZhbF90IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g KHB0ZV90KSB7IC5wdGUgPSB2YWwgfTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHRldmFsX3Qg bmF0aXZlX3B0ZV92YWwocHRlX3QgcHRlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBwdGUucHRl OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwdGV2YWxfdCBwdGVfZmxhZ3MocHRlX3QgcHRlKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBuYXRpdmVfcHRlX3ZhbChwdGUpICYgKH4oKHB0ZXZhbF90 KSgoKHNpZ25lZCBsb25nKSh+KCgoMVVMKSA8PCAxMiktMSkpKSAmICgocGh5c19hZGRyX3QpKCgx VUxMIDw8IDUyKSAtIDEpKSkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVpbnQx Nl90IF9fY2FjaGVtb2RlMnB0ZV90YmxbX1BBR0VfQ0FDSEVfTU9ERV9OVU1dOwoxNDQ3NDogZXh0 ZXJuIHVpbnQ4X3QgX19wdGUyY2FjaGVtb2RlX3RibFs4XTsKMTQ0NzQ6ICMgNDcyICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgY2Fj aGVtb2RlMnByb3R2YWwoZW51bSBwYWdlX2NhY2hlX21vZGUgcGNtKQoxNDQ3NDogewoxNDQ3NDog IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHBjbSA9PSAwKSwgMSkpCjE0NDc0OiAgIHJldHVybiAw OwoxNDQ3NDogIHJldHVybiBfX2NhY2hlbW9kZTJwdGVfdGJsW3BjbV07CjE0NDc0OiB9CjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBwZ3Byb3RfdCBjYWNoZW1vZGUycGdwcm90KGVudW0gcGFnZV9jYWNoZV9tb2RlIHBjbSkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKChwZ3Byb3RfdCkgeyAoY2FjaGVtb2RlMnByb3R2YWwocGNt KSkgfSApOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBwYWdlX2NhY2hlX21vZGUgcGdwcm90MmNhY2hl bW9kZShwZ3Byb3RfdCBwZ3Byb3QpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtYXNr ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICBtYXNrZWQgPSAoKHBncHJvdCkucGdwcm90KSAmICgoKChwdGV2 YWxfdCkoMSkpIDw8IDMpIHwgKCgocHRldmFsX3QpKDEpKSA8PCA0KSB8ICgoKHB0ZXZhbF90KSgx KSkgPDwgNykpOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG1hc2tlZCA9PSAwKSwg MSkpCjE0NDc0OiAgIHJldHVybiAwOwoxNDQ3NDogIHJldHVybiBfX3B0ZTJjYWNoZW1vZGVfdGJs WygoKChtYXNrZWQpID4+ICg3IC0gMikpICYgNCkgfCAoKChtYXNrZWQpID4+ICg0IC0gMSkpICYg MikgfCAoKChtYXNrZWQpID4+IDMpICYgMSkpXTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBncHJvdF90IHBn cHJvdF80a18yX2xhcmdlKHBncHJvdF90IHBncHJvdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZ3Byb3R2 YWxfdCB2YWwgPSAoKHBncHJvdCkucGdwcm90KTsKMTQ0NzQ6ICBwZ3Byb3RfdCBuZXc7CjE0NDc0 OiAKMTQ0NzQ6ICAoKG5ldykucGdwcm90KSA9ICh2YWwgJiB+KCgoKHB0ZXZhbF90KSgxKSkgPDwg NykgfCAoKChwdGV2YWxfdCkoMSkpIDw8IDEyKSkpIHwKMTQ0NzQ6ICAgKCh2YWwgJiAoKChwdGV2 YWxfdCkoMSkpIDw8IDcpKSA8PCAoMTIgLSA3KSk7CjE0NDc0OiAgcmV0dXJuIG5ldzsKMTQ0NzQ6 IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHBncHJvdF90IHBncHJvdF9sYXJnZV8yXzRrKHBncHJvdF90IHBncHJvdCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBwZ3Byb3R2YWxfdCB2YWwgPSAoKHBncHJvdCkucGdwcm90KTsKMTQ0NzQ6 ICBwZ3Byb3RfdCBuZXc7CjE0NDc0OiAKMTQ0NzQ6ICAoKG5ldykucGdwcm90KSA9ICh2YWwgJiB+ KCgoKHB0ZXZhbF90KSgxKSkgPDwgNykgfCAoKChwdGV2YWxfdCkoMSkpIDw8IDEyKSkpIHwKMTQ0 NzQ6ICAgICAgKCh2YWwgJiAoKChwdGV2YWxfdCkoMSkpIDw8IDEyKSkgPj4KMTQ0NzQ6ICAgICAg ICgxMiAtIDcpKTsKMTQ0NzQ6ICByZXR1cm4gbmV3OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHBhZ2UgKnBndGFibGVfdDsKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHB0ZXZhbF90IF9fc3VwcG9ydGVkX3B0ZV9tYXNrOwoxNDQ3NDogZXh0ZXJuIHB0ZXZhbF90 IF9fZGVmYXVsdF9rZXJuZWxfcHRlX21hc2s7CjE0NDc0OiBleHRlcm4gdm9pZCBzZXRfbngodm9p ZCk7CjE0NDc0OiBleHRlcm4gaW50IG54X2VuYWJsZWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHBncHJvdF90IHBncHJvdF93cml0ZWNvbWJpbmUocGdwcm90X3QgcHJvdCk7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHBncHJvdF90IHBncHJvdF93cml0ZXRocm91Z2gocGdw cm90X3QgcHJvdCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGZpbGU7CjE0NDc0OiBwZ3Byb3RfdCBwaHlzX21lbV9hY2Nlc3NfcHJvdChzdHJ1 Y3QgZmlsZSAqZmlsZSwgdW5zaWduZWQgbG9uZyBwZm4sCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IHZtYV9wcm90KTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIHNldF9wdGVfdmFkZHIodW5zaWduZWQgbG9uZyB2YWRk ciwgcHRlX3QgcHRlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNlcV9maWxlOwoxNDQ3NDogZXh0ZXJuIHZvaWQg YXJjaF9yZXBvcnRfbWVtaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pOwoxNDQ3NDogCjE0NDc0OiBl bnVtIHBnX2xldmVsIHsKMTQ0NzQ6ICBQR19MRVZFTF9OT05FLAoxNDQ3NDogIFBHX0xFVkVMXzRL LAoxNDQ3NDogIFBHX0xFVkVMXzJNLAoxNDQ3NDogIFBHX0xFVkVMXzFHLAoxNDQ3NDogIFBHX0xF VkVMXzUxMkcsCjE0NDc0OiAgUEdfTEVWRUxfTlVNCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiB2b2lkIHVwZGF0ZV9wYWdlX2NvdW50KGludCBsZXZlbCwgdW5zaWduZWQg bG9uZyBwYWdlcyk7CjE0NDc0OiAjIDU2NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxl X3R5cGVzLmgiCjE0NDc0OiBleHRlcm4gcHRlX3QgKmxvb2t1cF9hZGRyZXNzKHVuc2lnbmVkIGxv bmcgYWRkcmVzcywgdW5zaWduZWQgaW50ICpsZXZlbCk7CjE0NDc0OiBleHRlcm4gcHRlX3QgKmxv b2t1cF9hZGRyZXNzX2luX3BnZChwZ2RfdCAqcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCjE0 NDc0OiAgICAgICAgIHVuc2lnbmVkIGludCAqbGV2ZWwpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg bW1fc3RydWN0OwoxNDQ3NDogZXh0ZXJuIHB0ZV90ICpsb29rdXBfYWRkcmVzc19pbl9tbShzdHJ1 Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAoxNDQ3NDogICAgICAgIHVu c2lnbmVkIGludCAqbGV2ZWwpOwoxNDQ3NDogZXh0ZXJuIHBtZF90ICpsb29rdXBfcG1kX2FkZHJl c3ModW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKMTQ0NzQ6IGV4dGVybiBwaHlzX2FkZHJfdCBzbG93 X3ZpcnRfdG9fcGh5cyh2b2lkICpfX2FkZHJlc3MpOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJp YnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xk X18pKSBrZXJuZWxfbWFwX3BhZ2VzX2luX3BnZChwZ2RfdCAqcGdkLCB1NjQgcGZuLAoxNDQ3NDog ICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBudW1w YWdlcywKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBsb25nIHBhZ2VfZmxhZ3MpOwoxNDQ3NDogZXh0 ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRy aWJ1dGVfXygoX19jb2xkX18pKSBrZXJuZWxfdW5tYXBfcGFnZXNfaW5fcGdkKHBnZF90ICpwZ2Qs IHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnVt cGFnZXMpOwoxNDQ3NDogIyA0NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBl cy5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5o IiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvc3RhdGljX2tleS5oIiAxCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51 eC9qdW1wX2xhYmVsLmgiIDEKMTQ0NzQ6ICMgNzkgIi4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVs LmgiCjE0NDc0OiBleHRlcm4gYm9vbCBzdGF0aWNfa2V5X2luaXRpYWxpemVkOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgc3RhdGljX2tleSB7CjE0NDc0OiAgYXRvbWljX3QgZW5hYmxlZDsKMTQ0NzQ6ICMgMTAyICIu L2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIgoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgdW5z aWduZWQgbG9uZyB0eXBlOwoxNDQ3NDogICBzdHJ1Y3QganVtcF9lbnRyeSAqZW50cmllczsKMTQ0 NzQ6ICAgc3RydWN0IHN0YXRpY19rZXlfbW9kICpuZXh0OwoxNDQ3NDogIH07CjE0NDc0OiB9Owox NDQ3NDogIyAxMTcgIi4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oIiAxCjE0NDc0OiAjIDIzICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgYm9vbCBhcmNoX3N0YXRpY19icmFuY2goc3RydWN0IHN0YXRpY19rZXkg KmtleSwgYm9vbCBicmFuY2gpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBhc20gZ290bygiMToiICIu Ynl0ZSAiICIweDBmLDB4MWYsMHg0NCwweDAwLDAiICJcblx0IiAiLnB1c2hzZWN0aW9uIF9fanVt cF90YWJsZSwgIFwiYXdcIiBcblx0IiAiICIgIi5iYWxpZ24gOCIgIiAiICJcblx0IiAiLmxvbmcg MWIgLSAuLCAlbFtsX3llc10gLSAuIFxuXHQiICIgIiAiLnF1YWQiICIgIiAiJWMwICsgJWMxIC0g LlxuXHQiICIucG9wc2VjdGlvbiBcblx0IiA6IDogImkiIChrZXkpLCAiaSIgKGJyYW5jaCkgOiA6 IGxfeWVzKTsgYXNtICgiIik7IH0gd2hpbGUgKDApCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBmYWxzZTsKMTQ0NzQ6IGxfeWVz OgoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgYXJjaF9zdGF0aWNfYnJhbmNoX2p1bXAoc3Ry dWN0IHN0YXRpY19rZXkgKmtleSwgYm9vbCBicmFuY2gpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBh c20gZ290bygiMToiICIuYnl0ZSAweGU5XG5cdCAubG9uZyAlbFtsX3llc10gLSAyZlxuXHQiICIy OlxuXHQiICIucHVzaHNlY3Rpb24gX19qdW1wX3RhYmxlLCAgXCJhd1wiIFxuXHQiICIgIiAiLmJh bGlnbiA4IiAiICIgIlxuXHQiICIubG9uZyAxYiAtIC4sICVsW2xfeWVzXSAtIC4gXG5cdCIgIiAi ICIucXVhZCIgIiAiICIlYzAgKyAlYzEgLSAuXG5cdCIgIi5wb3BzZWN0aW9uIFxuXHQiIDogOiAi aSIgKGtleSksICJpIiAoYnJhbmNoKSA6IDogbF95ZXMpOyBhc20gKCIiKTsgfSB3aGlsZSAoMCkK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiAK MTQ0NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiBsX3llczoKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgMTE4ICIuL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIiAyCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBqdW1wX2VudHJ5IHsK MTQ0NzQ6ICBzMzIgY29kZTsKMTQ0NzQ6ICBzMzIgdGFyZ2V0OwoxNDQ3NDogIGxvbmcga2V5Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBqdW1wX2VudHJ5X2NvZGUoY29u c3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodW5z aWduZWQgbG9uZykmZW50cnktPmNvZGUgKyBlbnRyeS0+Y29kZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdW5zaWduZWQgbG9uZyBqdW1wX2VudHJ5X3RhcmdldChjb25zdCBzdHJ1Y3QganVtcF9l bnRyeSAqZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSZlbnRy eS0+dGFyZ2V0ICsgZW50cnktPnRhcmdldDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IHN0YXRpY19rZXkgKmp1bXBfZW50cnlfa2V5KGNvbnN0IHN0cnVjdCBqdW1wX2VudHJ5ICplbnRy eSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBsb25nIG9mZnNldCA9IGVudHJ5LT5rZXkgJiB+M0w7CjE0NDc0 OiAKMTQ0NzQ6ICByZXR1cm4gKHN0cnVjdCBzdGF0aWNfa2V5ICopKCh1bnNpZ25lZCBsb25nKSZl bnRyeS0+a2V5ICsgb2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTY0ICIuL2luY2x1ZGUvbGlu dXgvanVtcF9sYWJlbC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBqdW1wX2VudHJ5X2lzX2JyYW5jaChjb25zdCBz dHJ1Y3QganVtcF9lbnRyeSAqZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1bnNpZ25l ZCBsb25nKWVudHJ5LT5rZXkgJiAxVUw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wganVt cF9lbnRyeV9pc19pbml0KGNvbnN0IHN0cnVjdCBqdW1wX2VudHJ5ICplbnRyeSkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpZW50cnktPmtleSAmIDJVTDsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBqdW1wX2VudHJ5X3NldF9pbml0KHN0cnVjdCBqdW1wX2VudHJ5 ICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBlbnRyeS0+a2V5IHw9IDI7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGp1 bXBfbGFiZWxfdHlwZSB7CjE0NDc0OiAgSlVNUF9MQUJFTF9OT1AgPSAwLAoxNDQ3NDogIEpVTVBf TEFCRUxfSk1QLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1vZHVsZTsKMTQ0NzQ6 ICMgMTk4ICIuL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSBib29sIHN0YXRpY19rZXlfZmFsc2Uoc3RydWN0IHN0YXRp Y19rZXkgKmtleSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9zdGF0aWNfYnJhbmNoKGtl eSwgZmFsc2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGJvb2wgc3RhdGljX2tleV90cnVlKHN0cnVjdCBzdGF0aWNfa2V5ICprZXkp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICFhcmNoX3N0YXRpY19icmFuY2goa2V5LCB0cnVlKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBqdW1wX2VudHJ5IF9fc3RhcnRf X19qdW1wX3RhYmxlW107CjE0NDc0OiBleHRlcm4gc3RydWN0IGp1bXBfZW50cnkgX19zdG9wX19f anVtcF90YWJsZVtdOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBqdW1wX2xhYmVsX2luaXQo dm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBqdW1wX2xhYmVsX2xvY2sodm9pZCk7CjE0NDc0OiBl eHRlcm4gdm9pZCBqdW1wX2xhYmVsX3VubG9jayh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGFy Y2hfanVtcF9sYWJlbF90cmFuc2Zvcm0oc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5LAoxNDQ3NDog ICAgICAgICAgIGVudW0ganVtcF9sYWJlbF90eXBlIHR5cGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQg YXJjaF9qdW1wX2xhYmVsX3RyYW5zZm9ybV9zdGF0aWMoc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5 LAoxNDQ3NDogICAgICAgICAgIGVudW0ganVtcF9sYWJlbF90eXBlIHR5cGUpOwoxNDQ3NDogZXh0 ZXJuIGJvb2wgYXJjaF9qdW1wX2xhYmVsX3RyYW5zZm9ybV9xdWV1ZShzdHJ1Y3QganVtcF9lbnRy eSAqZW50cnksCjE0NDc0OiAgICAgICAgICBlbnVtIGp1bXBfbGFiZWxfdHlwZSB0eXBlKTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIGFyY2hfanVtcF9sYWJlbF90cmFuc2Zvcm1fYXBwbHkodm9pZCk7CjE0 NDc0OiBleHRlcm4gaW50IGp1bXBfbGFiZWxfdGV4dF9yZXNlcnZlZCh2b2lkICpzdGFydCwgdm9p ZCAqZW5kKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHN0YXRpY19rZXlfc2xvd19pbmMoc3RydWN0IHN0 YXRpY19rZXkgKmtleSk7CjE0NDc0OiBleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfZGVjKHN0 cnVjdCBzdGF0aWNfa2V5ICprZXkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc3RhdGljX2tleV9zbG93 X2luY19jcHVzbG9ja2VkKHN0cnVjdCBzdGF0aWNfa2V5ICprZXkpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgc3RhdGljX2tleV9zbG93X2RlY19jcHVzbG9ja2VkKHN0cnVjdCBzdGF0aWNfa2V5ICprZXkp OwoxNDQ3NDogZXh0ZXJuIHZvaWQganVtcF9sYWJlbF9hcHBseV9ub3BzKHN0cnVjdCBtb2R1bGUg Km1vZCk7CjE0NDc0OiBleHRlcm4gaW50IHN0YXRpY19rZXlfY291bnQoc3RydWN0IHN0YXRpY19r ZXkgKmtleSk7CjE0NDc0OiBleHRlcm4gdm9pZCBzdGF0aWNfa2V5X2VuYWJsZShzdHJ1Y3Qgc3Rh dGljX2tleSAqa2V5KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHN0YXRpY19rZXlfZGlzYWJsZShzdHJ1 Y3Qgc3RhdGljX2tleSAqa2V5KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHN0YXRpY19rZXlfZW5hYmxl X2NwdXNsb2NrZWQoc3RydWN0IHN0YXRpY19rZXkgKmtleSk7CjE0NDc0OiBleHRlcm4gdm9pZCBz dGF0aWNfa2V5X2Rpc2FibGVfY3B1c2xvY2tlZChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5KTsKMTQ0 NzQ6ICMgMzQ2ICIuL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIgoxNDQ3NDogc3RydWN0IHN0 YXRpY19rZXlfdHJ1ZSB7CjE0NDc0OiAgc3RydWN0IHN0YXRpY19rZXkga2V5OwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHN0YXRpY19rZXlfZmFsc2UgewoxNDQ3NDogIHN0cnVjdCBz dGF0aWNfa2V5IGtleTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM4NSAiLi9pbmNsdWRlL2xpbnV4L2p1 bXBfbGFiZWwuaCIKMTQ0NzQ6IGV4dGVybiBib29sIF9fX193cm9uZ19icmFuY2hfZXJyb3Iodm9p ZCk7CjE0NDc0OiAjIDIgIi4vaW5jbHVkZS9saW51eC9zdGF0aWNfa2V5LmgiIDIKMTQ0NzQ6ICMg NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWx0ZXJuYXRpdmUtYXNtLmgi IDEKMTQ0NzQ6ICMgMTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIiAy CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3ItaW5kZXguaCIg MQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9iaXRzLmgiIDEKMTQ0NzQ6ICMgNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3ItaW5k ZXguaCIgMgoxNDQ3NDogIyAxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNo LmgiIDIKMTQ0NzQ6ICMgMjEzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFuY2gu aCIKMTQ0NzQ6IGVudW0gc3BlY3RyZV92Ml9taXRpZ2F0aW9uIHsKMTQ0NzQ6ICBTUEVDVFJFX1Yy X05PTkUsCjE0NDc0OiAgU1BFQ1RSRV9WMl9SRVRQT0xJTkVfR0VORVJJQywKMTQ0NzQ6ICBTUEVD VFJFX1YyX1JFVFBPTElORV9BTUQsCjE0NDc0OiAgU1BFQ1RSRV9WMl9JQlJTX0VOSEFOQ0VELAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHNwZWN0cmVfdjJfdXNlcl9taXRp Z2F0aW9uIHsKMTQ0NzQ6ICBTUEVDVFJFX1YyX1VTRVJfTk9ORSwKMTQ0NzQ6ICBTUEVDVFJFX1Yy X1VTRVJfU1RSSUNULAoxNDQ3NDogIFNQRUNUUkVfVjJfVVNFUl9TVFJJQ1RfUFJFRkVSUkVELAox NDQ3NDogIFNQRUNUUkVfVjJfVVNFUl9QUkNUTCwKMTQ0NzQ6ICBTUEVDVFJFX1YyX1VTRVJfU0VD Q09NUCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzc2JfbWl0aWdhdGlv biB7CjE0NDc0OiAgU1BFQ19TVE9SRV9CWVBBU1NfTk9ORSwKMTQ0NzQ6ICBTUEVDX1NUT1JFX0JZ UEFTU19ESVNBQkxFLAoxNDQ3NDogIFNQRUNfU1RPUkVfQllQQVNTX1BSQ1RMLAoxNDQ3NDogIFNQ RUNfU1RPUkVfQllQQVNTX1NFQ0NPTVAsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g Y2hhciBfX2luZGlyZWN0X3RodW5rX3N0YXJ0W107CjE0NDc0OiBleHRlcm4gY2hhciBfX2luZGly ZWN0X3RodW5rX2VuZFtdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHZtZXhpdF9maWxsX1JTQih2b2lkKQoxNDQ3NDog ewoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb29wczsKMTQ0NzQ6IAoxNDQ3NDogIGFz bSB2b2xhdGlsZSAoIjk5OTpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLmlnbm9yZV9hbHRz XG5cdCIgIi5sb25nIDk5OWIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIKMTQ0NzQ6ICAgICAg ICAgIiMgQUxUOiBvbGRuc3RyXG4iICI2NjE6XG5cdCIgImptcCA5MTBmIiAiXG42NjI6XG4iICIj IEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikt KCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAu YWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2 NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA3KjMyKzEyKSIgIlxuIiAiIC5ieXRlICIgIjY2 MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIg LmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24g LmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIx IiAiXG4iICI2NjQiIjEiIjpcblx0IiAibW92ICQoMzIvMiksICUwOyA3NzE6IGNhbGwgNzcyZjsg NzczOiBwYXVzZTsgbGZlbmNlOyBqbXAgNzczYjsgNzcyOiBjYWxsIDc3NGY7IDc3NTogcGF1c2U7 IGxmZW5jZTsgam1wIDc3NWI7IDc3NDogZGVjICUwOyBqbnogNzcxYjsgYWRkICQoNjQvOCkgKiAz MiwgJTE7IiAiXG4iICI2NjUiIjEiICI6XG4iICIucG9wc2VjdGlvblxuIgoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgIjkxMDoiCjE0NDc0OiAgICAgICAgIDogIj1yIiAobG9vcHMpLCAi K3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpCjE0NDc0OiAgICAgICAgIDogOiAibWVtb3J5IiAp OwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKMTQ0NzQ6IHZvaWQgYWx0ZXJuYXRpdmVfbXNyX3dyaXRlKHVuc2lnbmVkIGlu dCBtc3IsIHU2NCB2YWwsIHVuc2lnbmVkIGludCBmZWF0dXJlKQoxNDQ3NDogewoxNDQ3NDogIGFz bSB2b2xhdGlsZSgiIyBBTFQ6IG9sZG5zdHJcbiIgIjY2MTpcblx0IiAiIiAiXG42NjI6XG4iICIj IEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikt KCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAu YWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2 NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiJWNbZmVhdHVyZV0iICJcbiIgIiAuYnl0ZSAiICI2 NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAi IC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9u IC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAi MSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgIndybXNyIiAiXG4iICI2NjUiIjEiICI6XG4iICIucG9w c2VjdGlvblxuIgoxNDQ3NDogICA6IDogImMiIChtc3IpLAoxNDQ3NDogICAgICAgImEiICgodTMy KXZhbCksCjE0NDc0OiAgICAgICAiZCIgKCh1MzIpKHZhbCA+PiAzMikpLAoxNDQ3NDogICAgICAg W2ZlYXR1cmVdICJpIiAoZmVhdHVyZSkKMTQ0NzQ6ICAgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcih2b2lk KQoxNDQ3NDogewoxNDQ3NDogIHU2NCB2YWwgPSAoKCgoMVVMKSkpIDw8ICgwKSk7CjE0NDc0OiAK MTQ0NzQ6ICBhbHRlcm5hdGl2ZV9tc3Jfd3JpdGUoMHgwMDAwMDA0OSwgdmFsLCAoIDcqMzIrMjEp KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdTY0IHg4Nl9zcGVjX2N0 cmxfYmFzZTsKMTQ0NzQ6ICMgMzA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vc3BlYy1icmFu Y2guaCIKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSBzd2l0Y2hfdG9fY29u ZF9zdGlicDsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSBzd2l0Y2hfbW1f Y29uZF9pYnBiOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHN3aXRjaF9t bV9hbHdheXNfaWJwYjsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5X2Zh bHNlIG1kc191c2VyX2NsZWFyOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNl IG1kc19pZGxlX2NsZWFyOwoxNDQ3NDogIyAzMjIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9z cGVjLWJyYW5jaC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtZHNfY2xlYXJfY3B1X2J1ZmZlcnModm9pZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzdGF0aWMgY29uc3QgdTE2IGRzID0gKDMqOCk7CjE0NDc0OiAjIDMzNSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgiCjE0NDc0OiAgYXNtIHZvbGF0 aWxlKCJ2ZXJ3ICVbZHNdIiA6IDogW2RzXSAibSIgKGRzKSA6ICJjYyIpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBt ZHNfdXNlcl9jbGVhcl9jcHVfYnVmZmVycyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGlmICgoeyBi b29sIGJyYW5jaDsgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCombWRz X3VzZXJfY2xlYXIpLCBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlKSkgYnJhbmNoID0gIWFyY2hfc3Rh dGljX2JyYW5jaCgmKCZtZHNfdXNlcl9jbGVhciktPmtleSwgdHJ1ZSk7IGVsc2UgaWYgKF9fYnVp bHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCombWRzX3VzZXJfY2xlYXIpLCBzdHJ1Y3Qg c3RhdGljX2tleV9mYWxzZSkpIGJyYW5jaCA9ICFhcmNoX3N0YXRpY19icmFuY2hfanVtcCgmKCZt ZHNfdXNlcl9jbGVhciktPmtleSwgdHJ1ZSk7IGVsc2UgYnJhbmNoID0gX19fX3dyb25nX2JyYW5j aF9lcnJvcigpOyBfX2J1aWx0aW5fZXhwZWN0KCEhKGJyYW5jaCksIDEpOyB9KSkKMTQ0NzQ6ICAg bWRzX2NsZWFyX2NwdV9idWZmZXJzKCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG1kc19pZGxlX2NsZWFyX2NwdV9i dWZmZXJzKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKCh7IGJvb2wgYnJhbmNoOyBpZiAoX19i dWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKiZtZHNfaWRsZV9jbGVhciksIHN0cnVj dCBzdGF0aWNfa2V5X3RydWUpKSBicmFuY2ggPSAhYXJjaF9zdGF0aWNfYnJhbmNoKCYoJm1kc19p ZGxlX2NsZWFyKS0+a2V5LCB0cnVlKTsgZWxzZSBpZiAoX19idWlsdGluX3R5cGVzX2NvbXBhdGli bGVfcCh0eXBlb2YoKiZtZHNfaWRsZV9jbGVhciksIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlKSkg YnJhbmNoID0gIWFyY2hfc3RhdGljX2JyYW5jaF9qdW1wKCYoJm1kc19pZGxlX2NsZWFyKS0+a2V5 LCB0cnVlKTsgZWxzZSBicmFuY2ggPSBfX19fd3JvbmdfYnJhbmNoX2Vycm9yKCk7IF9fYnVpbHRp bl9leHBlY3QoISEoYnJhbmNoKSwgMSk7IH0pKQoxNDQ3NDogICBtZHNfY2xlYXJfY3B1X2J1ZmZl cnMoKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZp cnRfdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IHN0cnVjdCB0 aHJlYWRfc3RydWN0OwoxNDQ3NDogc3RydWN0IGRlc2NfcHRyOwoxNDQ3NDogc3RydWN0IHRzc19z dHJ1Y3Q7CjE0NDc0OiBzdHJ1Y3QgbW1fc3RydWN0OwoxNDQ3NDogc3RydWN0IGRlc2Nfc3RydWN0 OwoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogc3RydWN0IGNwdW1hc2s7CjE0NDc0 OiBzdHJ1Y3QgZmx1c2hfdGxiX2luZm87CjE0NDc0OiBzdHJ1Y3QgbW11X2dhdGhlcjsKMTQ0NzQ6 IHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGFyYXZpcnRfY2FsbGVlX3NhdmUgewoxNDQ3NDogIHZvaWQg KmZ1bmM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwdl9pbmZvIHsK MTQ0NzQ6ICMgNzkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaCIKMTQ0 NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHB2 X2luaXRfb3BzIHsKMTQ0NzQ6ICMgOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRf dHlwZXMuaCIKMTQ0NzQ6ICB1bnNpZ25lZCAoKnBhdGNoKSh1OCB0eXBlLCB2b2lkICppbnNuX2J1 ZmYsCjE0NDc0OiAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbGVuKTsKMTQ0NzQ6 IH0gOwoxNDQ3NDogIyAxMDQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMu aCIKMTQ0NzQ6IHN0cnVjdCBwdl90aW1lX29wcyB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25n ICgqc2NoZWRfY2xvY2spKHZvaWQpOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyAoKnN0ZWFs X2Nsb2NrKShpbnQgY3B1KTsKMTQ0NzQ6IH0gOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHZfY3B1 X29wcyB7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaW9fZGVsYXkpKHZvaWQpOwoxNDQ3NDogIyAx ODMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaCIKMTQ0NzQ6IH0gOwox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHZfaXJxX29wcyB7CjE0NDc0OiAjIDIwNCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgoxNDQ3NDogfSA7CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBwdl9tbXVfb3BzIHsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpmbHVzaF90bGJfdXNl cikodm9pZCk7CjE0NDc0OiAgdm9pZCAoKmZsdXNoX3RsYl9rZXJuZWwpKHZvaWQpOwoxNDQ3NDog IHZvaWQgKCpmbHVzaF90bGJfb25lX3VzZXIpKHVuc2lnbmVkIGxvbmcgYWRkcik7CjE0NDc0OiAg dm9pZCAoKmZsdXNoX3RsYl9vdGhlcnMpKGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVzLAoxNDQ3 NDogICAgICBjb25zdCBzdHJ1Y3QgZmx1c2hfdGxiX2luZm8gKmluZm8pOwoxNDQ3NDogCjE0NDc0 OiAgdm9pZCAoKnRsYl9yZW1vdmVfdGFibGUpKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHZvaWQg KnRhYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmV4aXRfbW1hcCkoc3RydWN0 IG1tX3N0cnVjdCAqbW0pOwoxNDQ3NDogIyAzMDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnRfdHlwZXMuaCIKMTQ0NzQ6IH0gOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXJjaF9zcGlu bG9jazsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2Nr X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3BpbmxvY2tf dHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgdTggX190aWNrZXRfdDsKMTQ0NzQ6IHR5cGVkZWYgdTE2 IF9fdGlja2V0cGFpcl90OwoxNDQ3NDogIyAyNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlu bG9ja190eXBlcy5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXNwaW5sb2Nr X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMjIgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2tf dHlwZXMuaCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHFzcGlubG9jayB7CjE0NDc0OiAgdW5pb24g ewoxNDQ3NDogICBhdG9taWNfdCB2YWw7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHU4IGxv Y2tlZDsKMTQ0NzQ6ICAgIHU4IHBlbmRpbmc7CjE0NDc0OiAgIH07CjE0NDc0OiAgIHN0cnVjdCB7 CjE0NDc0OiAgICB1MTYgbG9ja2VkX3BlbmRpbmc7CjE0NDc0OiAgICB1MTYgdGFpbDsKMTQ0NzQ6 ICAgfTsKMTQ0NzQ6ICMgNTEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2tfdHlwZXMu aCIKMTQ0NzQ6ICB9OwoxNDQ3NDogfSBhcmNoX3NwaW5sb2NrX3Q7CjE0NDc0OiAjIDI4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrX3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXJ3bG9ja190eXBlcy5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20vYnl0ZW9yZGVyLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBp L2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDEKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC9zd2FiLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vc3dhYi5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fY29u c3RfXykpIF9fdTMyIF9fYXJjaF9zd2FiMzIoX191MzIgdmFsKQoxNDQ3NDogewoxNDQ3NDogIGFz bSgiYnN3YXBsICUwIiA6ICI9ciIgKHZhbCkgOiAiMCIgKHZhbCkpOwoxNDQ3NDogIHJldHVybiB2 YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19jb25z dF9fKSkgX191NjQgX19hcmNoX3N3YWI2NChfX3U2NCB2YWwpCjE0NDc0OiB7CjE0NDc0OiAjIDMx ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc3dhYi5oIgoxNDQ3NDogIGFzbSgiYnN3YXBx ICUwIiA6ICI9ciIgKHZhbCkgOiAiMCIgKHZhbCkpOwoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0 OiAKMTQ0NzQ6IH0KMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3dhYi5oIiAyCjE0 NDc0OiAjIDQ4ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbnN0X18pKSBfX3UxNiBfX2Zzd2FiMTYoX191MTYgdmFsKQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoKF9fdTE2KSggKCgoX191MTYpKHZh bCkgJiAoX191MTYpMHgwMGZmVSkgPDwgOCkgfCAoKChfX3UxNikodmFsKSAmIChfX3UxNikweGZm MDBVKSA+PiA4KSkpOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fY29uc3RfXykpIF9fdTMyIF9fZnN3YWIzMihfX3UzMiB2YWwpCjE0NDc0OiB7CjE0NDc0 OiAKMTQ0NzQ6ICByZXR1cm4gX19hcmNoX3N3YWIzMih2YWwpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBf X3U2NCBfX2Zzd2FiNjQoX191NjQgdmFsKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgcmV0dXJu IF9fYXJjaF9zd2FiNjQodmFsKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FodzMyKF9fdTMyIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gKChfX3UzMikoICgoKF9fdTMyKSh2YWwp ICYgKF9fdTMyKTB4MDAwMGZmZmZVTCkgPDwgMTYpIHwgKCgoX191MzIpKHZhbCkgJiAoX191MzIp MHhmZmZmMDAwMFVMKSA+PiAxNikpKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FoYjMyKF9fdTMyIHZhbCkKMTQ0 NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gKChfX3UzMikoICgo KF9fdTMyKSh2YWwpICYgKF9fdTMyKTB4MDBmZjAwZmZVTCkgPDwgOCkgfCAoKChfX3UzMikodmFs KSAmIChfX3UzMikweGZmMDBmZjAwVUwpID4+IDgpKSk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMTM2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgX19zd2FiKGNvbnN0IHVuc2lnbmVk IGxvbmcgeSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoX191NjQpX19idWlsdGlu X2Jzd2FwNjQoKF9fdTY0KSh5KSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9CjE0 NDc0OiAjIDE3MSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3dhYi5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX3UxNiBfX3N3YWIxNnAoY29uc3QgX191MTYgKnAp CjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIChfX3UxNilf X2J1aWx0aW5fYnN3YXAxNigoX191MTYpKCpwKSk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIF9fdTMyIF9fc3dhYjMycChjb25zdCBfX3UzMiAqcCkKMTQ0NzQ6IHsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gKF9fdTMyKV9fYnVpbHRpbl9i c3dhcDMyKChfX3UzMikoKnApKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgX191NjQgX19zd2FiNjRwKGNvbnN0IF9fdTY0ICpwKQoxNDQ3NDogewoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoX191NjQpX19idWlsdGluX2Jzd2FwNjQoKF9f dTY0KSgqcCkpOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fdTMyIF9fc3dhaHczMnAoY29uc3Qg X191MzIgKnApCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmV0dXJu IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCpwKSkgPyAoKF9fdTMyKSggKCgoX191MzIp KCpwKSAmIChfX3UzMikweDAwMDBmZmZmVUwpIDw8IDE2KSB8ICgoKF9fdTMyKSgqcCkgJiAoX191 MzIpMHhmZmZmMDAwMFVMKSA+PiAxNikpKSA6IF9fZnN3YWh3MzIoKnApKTsKMTQ0NzQ6IAoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX3UzMiBfX3N3YWhiMzJwKGNvbnN0IF9fdTMyICpwKQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAoX19idWlsdGluX2NvbnN0YW50X3Ao KF9fdTMyKSgqcCkpID8gKChfX3UzMikoICgoKF9fdTMyKSgqcCkgJiAoX191MzIpMHgwMGZmMDBm ZlVMKSA8PCA4KSB8ICgoKF9fdTMyKSgqcCkgJiAoX191MzIpMHhmZjAwZmYwMFVMKSA+PiA4KSkp IDogX19mc3dhaGIzMigqcCkpOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3N3YWIxNnMoX191MTYgKnApCjE0NDc0 OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgKnAgPSBfX3N3YWIxNnAocCk7CjE0 NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fc3dhYjMycyhfX3UzMiAqcCkK MTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAqcCA9IF9fc3dhYjMycChw KTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX3N3YWI2 NHMoX191NjQgKnApCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgKnAg PSBfX3N3YWI2NHAocCk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3N3YWh3MzJzKF9f dTMyICpwKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICpwID0gX19z d2FodzMycChwKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fc3dhaGIzMnMoX191MzIg KnApCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgKnAgPSBfX3N3YWhi MzJwKHApOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9zd2Fi LmgiIDIKMTQ0NzQ6ICMgMTQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2J5dGVvcmRlci9saXR0bGVf ZW5kaWFuLmgiIDIKMTQ0NzQ6ICMgNDQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2J5dGVvcmRlci9s aXR0bGVfZW5kaWFuLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IF9fbGU2NCBfX2NwdV90b19sZTY0cChjb25zdCBfX3U2NCAqcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gKCBfX2xlNjQpKnA7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIF9fdTY0IF9fbGU2NF90b19jcHVwKGNvbnN0IF9fbGU2NCAqcCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKCBfX3U2NCkqcDsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgX19sZTMyIF9fY3B1X3RvX2xlMzJwKGNvbnN0IF9fdTMy ICpwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoIF9fbGUzMikqcDsKMTQ0NzQ6IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX191MzIgX19sZTMyX3RvX2NwdXAo Y29uc3QgX19sZTMyICpwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoIF9fdTMyKSpwOwoxNDQ3 NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX2xlMTYgX19j cHVfdG9fbGUxNnAoY29uc3QgX191MTYgKnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICggX19s ZTE2KSpwOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBfX3UxNiBfX2xlMTZfdG9fY3B1cChjb25zdCBfX2xlMTYgKnApCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuICggX191MTYpKnA7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIF9fYmU2NCBfX2NwdV90b19iZTY0cChjb25zdCBfX3U2NCAqcCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKCBfX2JlNjQpX19zd2FiNjRwKHApOwoxNDQ3NDogfQoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX3U2NCBfX2JlNjRfdG9fY3B1cChj b25zdCBfX2JlNjQgKnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fc3dhYjY0cCgoX191NjQg KilwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg X19iZTMyIF9fY3B1X3RvX2JlMzJwKGNvbnN0IF9fdTMyICpwKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAoIF9fYmUzMilfX3N3YWIzMnAocCk7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIF9fdTMyIF9fYmUzMl90b19jcHVwKGNvbnN0IF9fYmUzMiAq cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19zd2FiMzJwKChfX3UzMiAqKXApOwoxNDQ3NDog fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX2JlMTYgX19jcHVf dG9fYmUxNnAoY29uc3QgX191MTYgKnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICggX19iZTE2 KV9fc3dhYjE2cChwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgX191MTYgX19iZTE2X3RvX2NwdXAoY29uc3QgX19iZTE2ICpwKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBfX3N3YWIxNnAoKF9fdTE2ICopcCk7CjE0NDc0OiB9CjE0NDc0OiAjIDYg Ii4vaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv Ynl0ZW9yZGVyL2dlbmVyaWMuaCIgMQoxNDQ3NDogIyAxNDQgIi4vaW5jbHVkZS9saW51eC9ieXRl b3JkZXIvZ2VuZXJpYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsZTE2X2FkZF9jcHUoX19sZTE2ICp2YXIsIHUx NiB2YWwpCjE0NDc0OiB7CjE0NDc0OiAgKnZhciA9ICgoIF9fbGUxNikoX191MTYpKCgoIF9fdTE2 KShfX2xlMTYpKCp2YXIpKSArIHZhbCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxl MzJfYWRkX2NwdShfX2xlMzIgKnZhciwgdTMyIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAqdmFyID0g KCggX19sZTMyKShfX3UzMikoKCggX191MzIpKF9fbGUzMikoKnZhcikpICsgdmFsKSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGU2NF9hZGRfY3B1KF9fbGU2NCAqdmFyLCB1NjQgdmFs KQoxNDQ3NDogewoxNDQ3NDogICp2YXIgPSAoKCBfX2xlNjQpKF9fdTY0KSgoKCBfX3U2NCkoX19s ZTY0KSgqdmFyKSkgKyB2YWwpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGxlMzJfdG9fY3B1X2FycmF5KHUzMiAqYnVmLCB1bnNpZ25lZCBpbnQgd29yZHMpCjE0NDc0OiB7 CjE0NDc0OiAgd2hpbGUgKHdvcmRzLS0pIHsKMTQ0NzQ6ICAgZG8geyAodm9pZCkoYnVmKTsgfSB3 aGlsZSAoMCk7CjE0NDc0OiAgIGJ1ZisrOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBjcHVfdG9fbGUzMl9hcnJheSh1MzIgKmJ1ZiwgdW5zaWduZWQgaW50IHdvcmRzKQox NDQ3NDogewoxNDQ3NDogIHdoaWxlICh3b3Jkcy0tKSB7CjE0NDc0OiAgIGRvIHsgKHZvaWQpKGJ1 Zik7IH0gd2hpbGUgKDApOwoxNDQ3NDogICBidWYrKzsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYmUxNl9hZGRfY3B1KF9fYmUxNiAqdmFyLCB1MTYgdmFsKQoxNDQ3NDog ewoxNDQ3NDogICp2YXIgPSAoKCBfX2JlMTYpKF9fdTE2KV9fYnVpbHRpbl9ic3dhcDE2KChfX3Ux NikoKChfX3UxNilfX2J1aWx0aW5fYnN3YXAxNigoX191MTYpKCggX191MTYpKF9fYmUxNikoKnZh cikpKSArIHZhbCkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYmUzMl9hZGRfY3B1 KF9fYmUzMiAqdmFyLCB1MzIgdmFsKQoxNDQ3NDogewoxNDQ3NDogICp2YXIgPSAoKCBfX2JlMzIp KF9fdTMyKV9fYnVpbHRpbl9ic3dhcDMyKChfX3UzMikoKChfX3UzMilfX2J1aWx0aW5fYnN3YXAz MigoX191MzIpKCggX191MzIpKF9fYmUzMikoKnZhcikpKSArIHZhbCkpKSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgYmU2NF9hZGRfY3B1KF9fYmU2NCAqdmFyLCB1NjQgdmFsKQoxNDQ3 NDogewoxNDQ3NDogICp2YXIgPSAoKCBfX2JlNjQpKF9fdTY0KV9fYnVpbHRpbl9ic3dhcDY0KChf X3U2NCkoKChfX3U2NClfX2J1aWx0aW5fYnN3YXA2NCgoX191NjQpKCggX191NjQpKF9fYmU2NCko KnZhcikpKSArIHZhbCkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1X3RvX2Jl MzJfYXJyYXkoX19iZTMyICpkc3QsIGNvbnN0IHUzMiAqc3JjLCBzaXplX3QgbGVuKQoxNDQ3NDog ewoxNDQ3NDogIGludCBpOwoxNDQ3NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsr KQoxNDQ3NDogICBkc3RbaV0gPSAoKCBfX2JlMzIpKF9fdTMyKV9fYnVpbHRpbl9ic3dhcDMyKChf X3UzMikoKHNyY1tpXSkpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYmUzMl90b19j cHVfYXJyYXkodTMyICpkc3QsIGNvbnN0IF9fYmUzMiAqc3JjLCBzaXplX3QgbGVuKQoxNDQ3NDog ewoxNDQ3NDogIGludCBpOwoxNDQ3NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsr KQoxNDQ3NDogICBkc3RbaV0gPSAoX191MzIpX19idWlsdGluX2Jzd2FwMzIoKF9fdTMyKSgoIF9f dTMyKShfX2JlMzIpKHNyY1tpXSkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTIgIi4vaW5jbHVkZS9s aW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAyCjE0NDc0OiAjIDYgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ieXRlb3JkZXIuaCIgMgoxNDQ3NDogIyA3ICIuL2luY2x1ZGUvYXNt LWdlbmVyaWMvcXJ3bG9ja190eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vc3BpbmxvY2tfdHlwZXMuaCIgMQoxNDQ3NDogIyA4ICIuL2luY2x1ZGUvYXNtLWdlbmVy aWMvcXJ3bG9ja190eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgcXJ3bG9jayB7CjE0NDc0OiAgdW5pb24gewoxNDQ3 NDogICBhdG9taWNfdCBjbnRzOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAgICB1 OCB3bG9ja2VkOwoxNDQ3NDogICAgdTggX19sc3RhdGVbM107CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICAgfTsKMTQ0NzQ6ICB9OwoxNDQ3NDogIGFyY2hfc3BpbmxvY2tf dCB3YWl0X2xvY2s7CjE0NDc0OiB9IGFyY2hfcndsb2NrX3Q7CjE0NDc0OiAjIDMwICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMzExICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgcXNwaW5sb2NrOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHZfbG9ja19vcHMgewox NDQ3NDogIHZvaWQgKCpxdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKShzdHJ1Y3QgcXNwaW5sb2Nr ICpsb2NrLCB1MzIgdmFsKTsKMTQ0NzQ6ICBzdHJ1Y3QgcGFyYXZpcnRfY2FsbGVlX3NhdmUgcXVl dWVkX3NwaW5fdW5sb2NrOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKndhaXQpKHU4ICpwdHIsIHU4 IHZhbCk7CjE0NDc0OiAgdm9pZCAoKmtpY2spKGludCBjcHUpOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IHBhcmF2aXJ0X2NhbGxlZV9zYXZlIHZjcHVfaXNfcHJlZW1wdGVkOwoxNDQ3NDogfSA7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwYXJhdmlydF9wYXRj aF90ZW1wbGF0ZSB7CjE0NDc0OiAgc3RydWN0IHB2X2luaXRfb3BzIGluaXQ7CjE0NDc0OiAgc3Ry dWN0IHB2X3RpbWVfb3BzIHRpbWU7CjE0NDc0OiAgc3RydWN0IHB2X2NwdV9vcHMgY3B1OwoxNDQ3 NDogIHN0cnVjdCBwdl9pcnFfb3BzIGlycTsKMTQ0NzQ6ICBzdHJ1Y3QgcHZfbW11X29wcyBtbXU7 CjE0NDc0OiAgc3RydWN0IHB2X2xvY2tfb3BzIGxvY2s7CjE0NDc0OiB9IDsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHN0cnVjdCBwdl9pbmZvIHB2X2luZm87CjE0NDc0OiBleHRlcm4gc3RydWN0IHBh cmF2aXJ0X3BhdGNoX3RlbXBsYXRlIHB2X29wczsKMTQ0NzQ6ICMgMzcwICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgiCjE0NDc0OiB1bnNpZ25lZCBwYXJhdmlydF9wYXRj aF9pZGVudF82NCh2b2lkICppbnNuX2J1ZmYsIHVuc2lnbmVkIGxlbik7CjE0NDc0OiB1bnNpZ25l ZCBwYXJhdmlydF9wYXRjaF9kZWZhdWx0KHU4IHR5cGUsIHZvaWQgKmluc25fYnVmZiwgdW5zaWdu ZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsZW4pOwoxNDQ3NDogdW5zaWduZWQgcGFyYXZpcnRfcGF0 Y2hfaW5zbnModm9pZCAqaW5zbl9idWZmLCB1bnNpZ25lZCBsZW4sIGNvbnN0IGNoYXIgKnN0YXJ0 LCBjb25zdCBjaGFyICplbmQpOwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBuYXRpdmVfcGF0Y2go dTggdHlwZSwgdm9pZCAqaW5zbl9idWZmLCB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxl bik7CjE0NDc0OiAKMTQ0NzQ6IGludCBwYXJhdmlydF9kaXNhYmxlX2lvc3BhY2Uodm9pZCk7CjE0 NDc0OiAjIDY1MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgoxNDQ3 NDogZW51bSBwYXJhdmlydF9sYXp5X21vZGUgewoxNDQ3NDogIFBBUkFWSVJUX0xBWllfTk9ORSwK MTQ0NzQ6ICBQQVJBVklSVF9MQVpZX01NVSwKMTQ0NzQ6ICBQQVJBVklSVF9MQVpZX0NQVSwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGFyYXZpcnRfbGF6eV9tb2RlIHBhcmF2aXJ0X2dl dF9sYXp5X21vZGUodm9pZCk7CjE0NDc0OiB2b2lkIHBhcmF2aXJ0X3N0YXJ0X2NvbnRleHRfc3dp dGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldik7CjE0NDc0OiB2b2lkIHBhcmF2aXJ0X2VuZF9j b250ZXh0X3N3aXRjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIHBhcmF2aXJ0X2VudGVyX2xhenlfbW11KHZvaWQpOwoxNDQ3NDogdm9pZCBwYXJhdmlydF9s ZWF2ZV9sYXp5X21tdSh2b2lkKTsKMTQ0NzQ6IHZvaWQgcGFyYXZpcnRfZmx1c2hfbGF6eV9tbXUo dm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgX3BhcmF2aXJ0X25vcCh2b2lkKTsKMTQ0NzQ6IHU2 NCBfcGFyYXZpcnRfaWRlbnRfNjQodTY0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3NpdGUgewoxNDQ3NDogIHU4ICppbnN0cjsK MTQ0NzQ6ICB1OCB0eXBlOwoxNDQ3NDogIHU4IGxlbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfc2l0ZSBfX3BhcmFpbnN0cnVjdGlvbnNbXSwK MTQ0NzQ6ICBfX3BhcmFpbnN0cnVjdGlvbnNfZW5kW107CjE0NDc0OiAjIDk1ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNw dWluZm9feDg2OwoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdW5zaWduZWQgbG9uZyBwcm9maWxlX3BjKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcKMTQ0NzQ6IGNvbnZlcnRfaXBfdG9fbGluZWFy KHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKMTQ0NzQ6 IGV4dGVybiB2b2lkIHNlbmRfc2lndHJhcChzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IGVycm9y X2NvZGUsIGludCBzaV9jb2RlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25n IHJlZ3NfcmV0dXJuX3ZhbHVlKHN0cnVjdCBwdF9yZWdzICpyZWdzKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiByZWdzLT5heDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByZWdzX3NldF9y ZXR1cm5fdmFsdWUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgcmMpCjE0NDc0 OiB7CjE0NDc0OiAgcmVncy0+YXggPSByYzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTI2ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVzZXJfbW9kZShzdHJ1Y3QgcHRf cmVncyAqcmVncykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1 cm4gISEocmVncy0+Y3MgJiAzKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg djgwODZfbW9kZShzdHJ1Y3QgcHRfcmVncyAqcmVncykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIHVzZXJfNjRiaXRfbW9kZShzdHJ1Y3QgcHRfcmVncyAqcmVncykKMTQ0NzQ6IHsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1 cm4gcmVncy0+Y3MgPT0gKDYqOCArIDMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhbnlfNjRiaXRfbW9kZShzdHJ1Y3QgcHRfcmVn cyAqcmVncykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAhdXNlcl9tb2RlKHJlZ3Mp IHx8IHVzZXJfNjRiaXRfbW9kZShyZWdzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHVuc2lnbmVkIGxvbmcga2VybmVsX3N0YWNrX3BvaW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3Mp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlZ3MtPnNwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nIGluc3RydWN0aW9uX3BvaW50ZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3Mp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlZ3MtPmlwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGluc3RydWN0aW9uX3BvaW50ZXJfc2V0KHN0cnVjdCBwdF9yZWdzICpyZWdzLAoxNDQ3 NDogICB1bnNpZ25lZCBsb25nIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZWdzLT5pcCA9IHZhbDsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmcmFtZV9wb2ludGVyKHN0cnVj dCBwdF9yZWdzICpyZWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiByZWdzLT5icDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyB1c2VyX3N0YWNrX3BvaW50ZXIoc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlZ3MtPnNwOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVzZXJfc3RhY2tfcG9pbnRlcl9zZXQoc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgdmFsKQoxNDQ3NDogewoxNDQ3NDogIHJl Z3MtPnNwID0gdmFsOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQg cmVnc19xdWVyeV9yZWdpc3Rlcl9vZmZzZXQoY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiBleHRl cm4gY29uc3QgY2hhciAqcmVnc19xdWVyeV9yZWdpc3Rlcl9uYW1lKHVuc2lnbmVkIGludCBvZmZz ZXQpOwoxNDQ3NDogIyAyMjYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nIHJlZ3NfZ2V0X3JlZ2lzdGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLAox NDQ3NDogICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoxNDQ3NDogewoxNDQ3NDogIGlm IChfX2J1aWx0aW5fZXhwZWN0KCEhKG9mZnNldCA+IChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0 IHB0X3JlZ3MsIHNzKSkpLCAwKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAjIDI0MyAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKMTQ0NzQ6ICByZXR1cm4gKih1bnNpZ25lZCBs b25nICopKCh1bnNpZ25lZCBsb25nKXJlZ3MgKyBvZmZzZXQpOwoxNDQ3NDogfQoxNDQ3NDogIyAy NTQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVnc193aXRo aW5fa2VybmVsX3N0YWNrKHN0cnVjdCBwdF9yZWdzICpyZWdzLAoxNDQ3NDogICAgICAgICB1bnNp Z25lZCBsb25nIGFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoYWRkciAmIH4oKCgoMVVM KSA8PCAxMikgPDwgKDIgKyAwKSkgLSAxKSkgPT0gKHJlZ3MtPnNwICYgfigoKCgxVUwpIDw8IDEy KSA8PCAoMiArIDApKSAtIDEpKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDI2OSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9wdHJhY2UuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgKnJlZ3NfZ2V0X2tlcm5l bF9zdGFja19udGhfYWRkcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgaW50IG4pCjE0 NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyAqYWRkciA9ICh1bnNpZ25lZCBsb25nICopcmVn cy0+c3A7CjE0NDc0OiAKMTQ0NzQ6ICBhZGRyICs9IG47CjE0NDc0OiAgaWYgKHJlZ3Nfd2l0aGlu X2tlcm5lbF9zdGFjayhyZWdzLCAodW5zaWduZWQgbG9uZylhZGRyKSkKMTQ0NzQ6ICAgcmV0dXJu IGFkZHI7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGxvbmcgcHJvYmVfa2VybmVsX3JlYWQodm9p ZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBzaXplKTsKMTQ0NzQ6ICMgMjkyICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyByZWdzX2dl dF9rZXJuZWxfc3RhY2tfbnRoKHN0cnVjdCBwdF9yZWdzICpyZWdzLAoxNDQ3NDogICAgICAgICAg ICAgdW5zaWduZWQgaW50IG4pCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyAqYWRkcjsK MTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHZhbDsKMTQ0NzQ6ICBsb25nIHJldDsKMTQ0NzQ6IAoxNDQ3 NDogIGFkZHIgPSByZWdzX2dldF9rZXJuZWxfc3RhY2tfbnRoX2FkZHIocmVncywgbik7CjE0NDc0 OiAgaWYgKGFkZHIpIHsKMTQ0NzQ6ICAgcmV0ID0gcHJvYmVfa2VybmVsX3JlYWQoJnZhbCwgYWRk ciwgc2l6ZW9mKHZhbCkpOwoxNDQ3NDogICBpZiAoIXJldCkKMTQ0NzQ6ICAgIHJldHVybiB2YWw7 CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogIyAzMTkgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHJlZ3NfZ2V0 X2tlcm5lbF9hcmd1bWVudChzdHJ1Y3QgcHRfcmVncyAqcmVncywKMTQ0NzQ6ICAgICAgICAgICAg dW5zaWduZWQgaW50IG4pCjE0NDc0OiB7CjE0NDc0OiAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu dCBhcmd1bWVudF9vZmZzW10gPSB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywg ZGkpLAoxNDQ3NDogICBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHNpKSwKMTQ0 NzQ6ICAgX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBkeCksCjE0NDc0OiAgIF9f YnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgY3gpLAoxNDQ3NDogICBfX2J1aWx0aW5f b2Zmc2V0b2Yoc3RydWN0IHB0X3JlZ3MsIHI4KSwKMTQ0NzQ6ICAgX19idWlsdGluX29mZnNldG9m KHN0cnVjdCBwdF9yZWdzLCByOSksCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIH07CjE0NDc0OiAK MTQ0NzQ6ICBpZiAobiA+PSA2KSB7CjE0NDc0OiAgIG4gLT0gNiAtIDE7CjE0NDc0OiAgIHJldHVy biByZWdzX2dldF9rZXJuZWxfc3RhY2tfbnRoKHJlZ3MsIG4pOwoxNDQ3NDogIH0gZWxzZQoxNDQ3 NDogICByZXR1cm4gcmVnc19nZXRfcmVnaXN0ZXIocmVncywgYXJndW1lbnRfb2Zmc1tuXSk7CjE0 NDc0OiB9CjE0NDc0OiAjIDM1NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKMTQ0 NzQ6IHN0cnVjdCB1c2VyX2Rlc2M7CjE0NDc0OiBleHRlcm4gaW50IGRvX2dldF90aHJlYWRfYXJl YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBpZHgsCjE0NDc0OiAgICAgICAgICBzdHJ1Y3Qg dXNlcl9kZXNjICppbmZvKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZG9fc2V0X3RocmVhZF9hcmVhKHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IGlkeCwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCB1c2Vy X2Rlc2MgKmluZm8sIGludCBjYW5fYWxsb2NhdGUpOwoxNDQ3NDogIyAxMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9rZ2RiLmgiIDIKMTQ0NzQ6ICMgNDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v a2dkYi5oIgoxNDQ3NDogZW51bSByZWduYW1lcyB7CjE0NDc0OiAgR0RCX0FYLAoxNDQ3NDogIEdE Ql9CWCwKMTQ0NzQ6ICBHREJfQ1gsCjE0NDc0OiAgR0RCX0RYLAoxNDQ3NDogIEdEQl9TSSwKMTQ0 NzQ6ICBHREJfREksCjE0NDc0OiAgR0RCX0JQLAoxNDQ3NDogIEdEQl9TUCwKMTQ0NzQ6ICBHREJf UjgsCjE0NDc0OiAgR0RCX1I5LAoxNDQ3NDogIEdEQl9SMTAsCjE0NDc0OiAgR0RCX1IxMSwKMTQ0 NzQ6ICBHREJfUjEyLAoxNDQ3NDogIEdEQl9SMTMsCjE0NDc0OiAgR0RCX1IxNCwKMTQ0NzQ6ICBH REJfUjE1LAoxNDQ3NDogIEdEQl9QQywKMTQ0NzQ6ICBHREJfUFMsCjE0NDc0OiAgR0RCX0NTLAox NDQ3NDogIEdEQl9TUywKMTQ0NzQ6ICBHREJfRFMsCjE0NDc0OiAgR0RCX0VTLAoxNDQ3NDogIEdE Ql9GUywKMTQ0NzQ6ICBHREJfR1MsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2tnZGJfYnJlYWtwb2ludCh2 b2lkKQoxNDQ3NDogewoxNDQ3NDogIGFzbSgiICAgaW50ICQzIik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQga2dkYl9sbF90cmFwKGlu dCBjbWQsIGNvbnN0IGNoYXIgKnN0ciwKMTQ0NzQ6ICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBs b25nIGVyciwgaW50IHRyYXAsIGludCBzaWcpOwoxNDQ3NDogIyAyMSAiLi9pbmNsdWRlL2xpbnV4 L2tnZGIuaCIgMgoxNDQ3NDogIyAzMzMgIi4vaW5jbHVkZS9saW51eC9rZ2RiLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGtnZGJfcGFuaWMoY29uc3QgY2hhciAqbXNnKSB7fQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6ICMg MSAiLi9pbmNsdWRlL2xpbnV4L2tyZWYuaCIgMQoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4 L2tyZWYuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDEKMTQ0NzQ6 ICMgNTAgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUv bGludXgvdHlwZWNoZWNrLmgiIDEKMTQ0NzQ6ICMgNTEgIi4vaW5jbHVkZS9saW51eC9zcGlubG9j ay5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiIDEKMTQ0NzQ6ICMg MTEgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51 eC9saXN0LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3BvaXNvbi5oIiAxCjE0NDc0OiAjIDggIi4v aW5jbHVkZS9saW51eC9saXN0LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgva2VybmVsLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAjIDEgIi91c3IvbGliL2djYy94ODZfNjQtbGludXgtZ251LzEwL2luY2x1ZGUvc3RkYXJn LmgiIDEgMyA0CjE0NDc0OiAjIDQwICIvdXNyL2xpYi9nY2MveDg2XzY0LWxpbnV4LWdudS8xMC9p bmNsdWRlL3N0ZGFyZy5oIiAzIDQKMTQ0NzQ6IAoxNDQ3NDogIyA0MCAiL3Vzci9saWIvZ2NjL3g4 Nl82NC1saW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CjE0NDc0OiB0eXBlZGVmIF9f YnVpbHRpbl92YV9saXN0IF9fZ251Y192YV9saXN0OwoxNDQ3NDogIyA5OSAiL3Vzci9saWIvZ2Nj L3g4Nl82NC1saW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CjE0NDc0OiB0eXBlZGVm IF9fZ251Y192YV9saXN0IHZhX2xpc3Q7CjE0NDc0OiAjIDcgIi4vaW5jbHVkZS9saW51eC9rZXJu ZWwuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9s aW1pdHMuaCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDIKMTQ0NzQ6 ICMgOCAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQv dWFwaS9hc20vdHlwZXMuaCIgMQoxNDQ3NDogIyA1ICIuL2luY2x1ZGUvbGludXgvYml0b3BzLmgi IDIKMTQ0NzQ6ICMgMjAgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKMTQ0NzQ6IAoxNDQ3NDog IyAyMCAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGlu dCBfX3N3X2h3ZWlnaHQ4KHVuc2lnbmVkIGludCB3KTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBp bnQgX19zd19od2VpZ2h0MTYodW5zaWduZWQgaW50IHcpOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVk IGludCBfX3N3X2h3ZWlnaHQzMih1bnNpZ25lZCBpbnQgdyk7CjE0NDc0OiBleHRlcm4gdW5zaWdu ZWQgbG9uZyBfX3N3X2h3ZWlnaHQ2NChfX3U2NCB3KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3Bz LmgiIDEKMTQ0NzQ6ICMgNTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQKMTQ0NzQ6IGFyY2hfc2V0 X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3 NDogIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChucikpIHsKMTQ0NzQ6ICAgYXNtIHZvbGF0aWxl KCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2 NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAib3JiICUxLCUw IgoxNDQ3NDogICAgOiAiK20iICgqKHZvbGF0aWxlIGNoYXIgKikgKCh2b2lkICopKGFkZHIpICsg KChucik+PjMpKSkKMTQ0NzQ6ICAgIDogImlxIiAoKHU4KSgxIDw8ICgobnIpICYgNykpKQoxNDQ3 NDogICAgOiAibWVtb3J5Iik7CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgYXNtIHZvbGF0aWxl KCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2 NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiICIgImJ0c3Ei ICIgIiAiICUxLCUwIgoxNDQ3NDogICAgOiA6ICJtIiAoKih2b2xhdGlsZSBsb25nICopIChhZGRy KSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZAoxNDQ3NDogYXJjaF9f X3NldF9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsK MTQ0NzQ6ICBhc20gdm9sYXRpbGUoIiAiICJidHNxIiAiICIgIiAlMSwlMCIgOiA6ICJtIiAoKih2 b2xhdGlsZSBsb25nICopIChhZGRyKSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkCjE0 NDc0OiBhcmNoX2NsZWFyX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRy KQoxNDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChucikpIHsKMTQ0NzQ6 ICAgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAiYW5kYiAlMSwlMCIKMTQ0NzQ6ICAgIDogIittIiAoKih2b2xhdGlsZSBjaGFyICopICgo dm9pZCAqKShhZGRyKSArICgobnIpPj4zKSkpCjE0NDc0OiAgICA6ICJpcSIgKCh1OCl+KDEgPDwg KChucikgJiA3KSkpKTsKMTQ0NzQ6ICB9IGVsc2UgewoxNDQ3NDogICBhc20gdm9sYXRpbGUoIi5w dXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYg LSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICIgIiAiYnRycSIgIiAi ICIgJTEsJTAiCjE0NDc0OiAgICA6IDogIm0iICgqKHZvbGF0aWxlIGxvbmcgKikgKGFkZHIpKSwg IklyIiAobnIpIDogIm1lbW9yeSIpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkCjE0NDc0OiBhcmNoX2NsZWFy X2JpdF91bmxvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDog IGFyY2hfY2xlYXJfYml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkCjE0NDc0OiBhcmNoX19fY2xlYXJfYml0 KGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAg YXNtIHZvbGF0aWxlKCIgIiAiYnRycSIgIiAiICIgJTEsJTAiIDogOiAibSIgKCoodm9sYXRpbGUg bG9uZyAqKSAoYWRkcikpLCAiSXIiIChucikgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbAoxNDQ3NDogYXJj aF9jbGVhcl9iaXRfdW5sb2NrX2lzX25lZ2F0aXZlX2J5dGUobG9uZyBuciwgdm9sYXRpbGUgdW5z aWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBib29sIG5lZ2F0aXZlOwoxNDQ3NDog IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24g NFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7 ICIgImFuZGIgJTIsJTEiCjE0NDc0OiAgICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIg InMiICIqL1xuIgoxNDQ3NDogICA6ICI9QGNjIiAicyIgKG5lZ2F0aXZlKSwgIittIiAoKih2b2xh dGlsZSBjaGFyICopIChhZGRyKSkKMTQ0NzQ6ICAgOiAiaXIiICgoY2hhcikgfigxIDw8IG5yKSkg OiAibWVtb3J5Iik7CjE0NDc0OiAgcmV0dXJuIG5lZ2F0aXZlOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2 b2lkCjE0NDc0OiBhcmNoX19fY2xlYXJfYml0X3VubG9jayhsb25nIG5yLCB2b2xhdGlsZSB1bnNp Z25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGFyY2hfX19jbGVhcl9iaXQobnIsIGFk ZHIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQKMTQ0NzQ6IGFyY2hfX19jaGFuZ2VfYml0KGxvbmcgbnIsIHZvbGF0aWxlIHVu c2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCIgIiAiYnRj cSIgIiAiICIgJTEsJTAiIDogOiAibSIgKCoodm9sYXRpbGUgbG9uZyAqKSAoYWRkcikpLCAiSXIi IChucikgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZAoxNDQ3NDogYXJjaF9jaGFuZ2VfYml0KGxvbmcgbnIs IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVp bHRpbl9jb25zdGFudF9wKG5yKSkgewoxNDQ3NDogICBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlv biAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIu cG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4b3JiICUxLCUwIgoxNDQ3NDogICAg OiAiK20iICgqKHZvbGF0aWxlIGNoYXIgKikgKCh2b2lkICopKGFkZHIpICsgKChucik+PjMpKSkK MTQ0NzQ6ICAgIDogImlxIiAoKHU4KSgxIDw8ICgobnIpICYgNykpKSk7CjE0NDc0OiAgfSBlbHNl IHsKMTQ0NzQ6ICAgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxu IiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToi ICJcblx0bG9jazsgIiAiICIgImJ0Y3EiICIgIiAiICUxLCUwIgoxNDQ3NDogICAgOiA6ICJtIiAo Kih2b2xhdGlsZSBsb25nICopIChhZGRyKSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKMTQ0NzQ6 ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgYm9vbAoxNDQ3NDogYXJjaF90ZXN0X2FuZF9zZXRfYml0KGxvbmcgbnIsIHZvbGF0aWxl IHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGJvb2wgYzsg YXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24g NFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7 ICIgIiAiICJidHNxIiAiICIgIiAlW3ZhbF0sICIgIiVbdmFyXSIgIlxuXHQvKiBvdXRwdXQgY29u ZGl0aW9uIGNvZGUgIiAiYyIgIiovXG4iIDogW3Zhcl0gIittIiAoKmFkZHIpLCAiPUBjYyIgImMi IChjKSA6IFt2YWxdICJJciIgKG5yKSA6ICJtZW1vcnkiKTsgYzsgfSk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbAoxNDQ3NDog YXJjaF90ZXN0X2FuZF9zZXRfYml0X2xvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9u ZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJjaF90ZXN0X2FuZF9zZXRfYml0KG5y LCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSBib29sCjE0NDc0OiBhcmNoX19fdGVzdF9hbmRfc2V0X2JpdChsb25nIG5yLCB2 b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGJvb2wgb2xkYml0 OwoxNDQ3NDogCjE0NDc0OiAgYXNtKCIgIiAiYnRzcSIgIiAiICIgJTIsJTEiCjE0NDc0OiAgICAg ICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgImMiICIqL1xuIgoxNDQ3NDogICAgICA6 ICI9QGNjIiAiYyIgKG9sZGJpdCkKMTQ0NzQ6ICAgICAgOiAibSIgKCoodm9sYXRpbGUgbG9uZyAq KSAoYWRkcikpLCAiSXIiIChucikgOiAibWVtb3J5Iik7CjE0NDc0OiAgcmV0dXJuIG9sZGJpdDsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBib29sCjE0NDc0OiBhcmNoX3Rlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1 bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFz bSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRc biIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAi ICIgIiAiYnRycSIgIiAiICIgJVt2YWxdLCAiICIlW3Zhcl0iICJcblx0Lyogb3V0cHV0IGNvbmRp dGlvbiBjb2RlICIgImMiICIqL1xuIiA6IFt2YXJdICIrbSIgKCphZGRyKSwgIj1AY2MiICJjIiAo YykgOiBbdmFsXSAiSXIiIChucikgOiAibWVtb3J5Iik7IGM7IH0pOwoxNDQ3NDogfQoxNDQ3NDog IyAxNzMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wKMTQ0NzQ6IGFyY2hfX190ZXN0X2FuZF9jbGVh cl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0 NzQ6ICBib29sIG9sZGJpdDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiICIgImJ0cnEi ICIgIiAiICUyLCUxIgoxNDQ3NDogICAgICAgICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2Rl ICIgImMiICIqL1xuIgoxNDQ3NDogICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0KQoxNDQ3NDog ICAgICAgIDogIm0iICgqKHZvbGF0aWxlIGxvbmcgKikgKGFkZHIpKSwgIklyIiAobnIpIDogIm1l bW9yeSIpOwoxNDQ3NDogIHJldHVybiBvbGRiaXQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbAoxNDQ3NDogYXJjaF9fX3Rlc3Rf YW5kX2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBib29sIG9sZGJpdDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgi ICIgImJ0Y3EiICIgIiAiICUyLCUxIgoxNDQ3NDogICAgICAgICJcblx0Lyogb3V0cHV0IGNvbmRp dGlvbiBjb2RlICIgImMiICIqL1xuIgoxNDQ3NDogICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0 KQoxNDQ3NDogICAgICAgIDogIm0iICgqKHZvbGF0aWxlIGxvbmcgKikgKGFkZHIpKSwgIklyIiAo bnIpIDogIm1lbW9yeSIpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIG9sZGJpdDsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sCjE0 NDc0OiBhcmNoX3Rlc3RfYW5kX2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgYm9vbCBjOyBhc20gdm9sYXRp bGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9u ZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiICIgImJ0 Y3EiICIgIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29k ZSAiICJjIiAiKi9cbiIgOiBbdmFyXSAiK20iICgqYWRkciksICI9QGNjIiAiYyIgKGMpIDogW3Zh bF0gIklyIiAobnIpIDogIm1lbW9yeSIpOyBjOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGNvbnN0YW50X3Rlc3RfYml0 KGxvbmcgbnIsIGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICgoMVVMIDw8IChuciAmICg2NCAtMSkpKSAmCjE0NDc0OiAgIChhZGRyW25y ID4+IDZdKSkgIT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBib29sIHZhcmlhYmxlX3Rlc3RfYml0KGxvbmcgbnIsIHZvbGF0aWxl IGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgYm9vbCBvbGRiaXQ7 CjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIiAiICJidHEiICIgIiAiICUyLCUxIgoxNDQ3 NDogICAgICAgICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgImMiICIqL1xuIgoxNDQ3 NDogICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0KQoxNDQ3NDogICAgICAgIDogIm0iICgqKHVu c2lnbmVkIGxvbmcgKilhZGRyKSwgIklyIiAobnIpIDogIm1lbW9yeSIpOwoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIG9sZGJpdDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjMzICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2JpdG9wcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB1bnNpZ25lZCBsb25nIF9fZmZzKHVuc2lnbmVkIGxvbmcgd29yZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBhc20oInJlcDsgYnNmICUxLCUwIgoxNDQ3NDogICA6ICI9ciIgKHdvcmQpCjE0NDc0OiAgIDog InJtIiAod29yZCkpOwoxNDQ3NDogIHJldHVybiB3b3JkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgZmZ6KHVuc2lnbmVkIGxv bmcgd29yZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20oInJlcDsgYnNmICUxLCUwIgoxNDQ3NDogICA6 ICI9ciIgKHdvcmQpCjE0NDc0OiAgIDogInIiICh+d29yZCkpOwoxNDQ3NDogIHJldHVybiB3b3Jk OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2ln bmVkIGxvbmcgX19mbHModW5zaWduZWQgbG9uZyB3b3JkKQoxNDQ3NDogewoxNDQ3NDogIGFzbSgi YnNyICUxLCUwIgoxNDQ3NDogICAgICA6ICI9ciIgKHdvcmQpCjE0NDc0OiAgICAgIDogInJtIiAo d29yZCkpOwoxNDQ3NDogIHJldHVybiB3b3JkOwoxNDQ3NDogfQoxNDQ3NDogIyAyODMgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBmZnMoaW50IHgpCjE0NDc0OiB7CjE0NDc0OiAgaW50IHI7CjE0NDc0 OiAjIDI5NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKMTQ0NzQ6ICBhc20oImJz ZmwgJTEsJTAiCjE0NDc0OiAgICAgIDogIj1yIiAocikKMTQ0NzQ6ICAgICAgOiAicm0iICh4KSwg IjAiICgtMSkpOwoxNDQ3NDogIyAzMTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgi CjE0NDc0OiAgcmV0dXJuIHIgKyAxOwoxNDQ3NDogfQoxNDQ3NDogIyAzMjQgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIGludCBmbHModW5zaWduZWQgaW50IHgpCjE0NDc0OiB7CjE0NDc0OiAgaW50IHI7CjE0 NDc0OiAjIDMzOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKMTQ0NzQ6ICBhc20o ImJzcmwgJTEsJTAiCjE0NDc0OiAgICAgIDogIj1yIiAocikKMTQ0NzQ6ICAgICAgOiAicm0iICh4 KSwgIjAiICgtMSkpOwoxNDQ3NDogIyAzNTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3Bz LmgiCjE0NDc0OiAgcmV0dXJuIHIgKyAxOwoxNDQ3NDogfQoxNDQ3NDogIyAzNjYgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGludCBmbHM2NChfX3U2NCB4KQoxNDQ3NDogewoxNDQ3NDogIGludCBiaXRwb3Mg PSAtMTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYXNt KCJic3JxICUxLCVxMCIKMTQ0NzQ6ICAgICAgOiAiK3IiIChiaXRwb3MpCjE0NDc0OiAgICAgIDog InJtIiAoeCkpOwoxNDQ3NDogIHJldHVybiBiaXRwb3MgKyAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9i aXRvcHMvZmluZC5oIiAxCjE0NDc0OiAjIDE1ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3Bz L2ZpbmQuaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF9iaXQoY29uc3Qg dW5zaWduZWQgbG9uZyAqYWRkciwgdW5zaWduZWQgbG9uZwoxNDQ3NDogICBzaXplLCB1bnNpZ25l ZCBsb25nIG9mZnNldCk7CjE0NDc0OiAjIDMwICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3Bz L2ZpbmQuaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF9hbmRfYml0KGNv bnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIxLAoxNDQ3NDogICBjb25zdCB1bnNpZ25lZCBsb25nICph ZGRyMiwgdW5zaWduZWQgbG9uZyBzaXplLAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIG9mZnNldCk7 CjE0NDc0OiAjIDQ1ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2ZpbmQuaCIKMTQ0NzQ6 IGV4dGVybiB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdChjb25zdCB1bnNpZ25lZCBs b25nICphZGRyLCB1bnNpZ25lZAoxNDQ3NDogICBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgb2Zm c2V0KTsKMTQ0NzQ6ICMgNTkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIgox NDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZmluZF9maXJzdF9iaXQoY29uc3QgdW5zaWduZWQg bG9uZyAqYWRkciwKMTQ0NzQ6ICAgICAgICAgdW5zaWduZWQgbG9uZyBzaXplKTsKMTQ0NzQ6ICMg NzAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIgoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGxvbmcgZmluZF9maXJzdF96ZXJvX2JpdChjb25zdCB1bnNpZ25lZCBsb25nICphZGRy LAoxNDQ3NDogICAgICAgdW5zaWduZWQgbG9uZyBzaXplKTsKMTQ0NzQ6ICMgOTMgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIgoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg ZmluZF9uZXh0X2NsdW1wOCh1bnNpZ25lZCBsb25nICpjbHVtcCwKMTQ0NzQ6ICAgICAgICAgICBj b25zdCB1bnNpZ25lZCBsb25nICphZGRyLAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGxvbmcg c2l6ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpOwoxNDQ3NDogIyAzODQgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vYml0b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYml0b3BzL3NjaGVkLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20v dHlwZXMuaCIgMQoxNDQ3NDogIyA3ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL3NjaGVk LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludCBzY2hlZF9maW5kX2ZpcnN0X2JpdChjb25zdCB1bnNpZ25lZCBsb25nICpiKQoxNDQ3 NDogewoxNDQ3NDogCjE0NDc0OiAgaWYgKGJbMF0pCjE0NDc0OiAgIHJldHVybiBfX2ZmcyhiWzBd KTsKMTQ0NzQ6ICByZXR1cm4gX19mZnMoYlsxXSkgKyA2NDsKMTQ0NzQ6ICMgMzAgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9iaXRvcHMvc2NoZWQuaCIKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzg2ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hcmNoX2h3ZWlnaHQuaCIgMQoxNDQ3NDogIyAxNSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9hcmNoX2h3ZWlnaHQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdW5zaWduZWQgaW50IF9fYXJjaF9od2VpZ2h0MzIodW5zaWduZWQgaW50 IHcpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlczsKMTQ0NzQ6IAoxNDQ3NDogIGFz bSAoIiMgQUxUOiBvbGRuc3RyXG4iICI2NjE6XG5cdCIgImNhbGwgX19zd19od2VpZ2h0MzIiICJc bjY2MjpcbiIgIiMgQUxUOiBwYWRkaW5nXG4iICIuc2tpcCAtKCgoIiAiNjY1IiIxIiJmLSIiNjY0 IiIxIiJmIiAiKS0oIiAiNjYyYi02NjFiIiAiKSkgPiAwKSAqICIgIigoIiAiNjY1IiIxIiJmLSIi NjY0IiIxIiJmIiAiKS0oIiAiNjYyYi02NjFiIiAiKSksMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1 c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAi IC5sb25nICIgIjY2NCIiMSIiZiAtIC5cbiIgIiAud29yZCAiICIoIDQqMzIrMjMpIiAiXG4iICIg LmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEi ImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5w dXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxh Y2VtZW50ICIgIjEiICJcbiIgIjY2NCIiMSIiOlxuXHQiICJwb3BjbnRsICUxLCAlMCIgIlxuIiAi NjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rpb25cbiIKMTQ0NzQ6ICAgICA6ICI9IiJhIiAocmVzKQox NDQ3NDogICAgIDogIkQiICh3KSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gcmVzOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgX19hcmNoX2h3ZWlnaHQxNih1bnNpZ25lZCBp bnQgdykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19hcmNoX2h3ZWlnaHQzMih3ICYgMHhmZmZm KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IF9fYXJjaF9od2VpZ2h0OCh1 bnNpZ25lZCBpbnQgdykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19hcmNoX2h3ZWlnaHQzMih3 ICYgMHhmZik7CjE0NDc0OiB9CjE0NDc0OiAjIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2Fy Y2hfaHdlaWdodC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB1 bnNpZ25lZCBsb25nIF9fYXJjaF9od2VpZ2h0NjQoX191NjQgdykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIHJlczsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSAoIiMgQUxUOiBvbGRuc3RyXG4i ICI2NjE6XG5cdCIgImNhbGwgX19zd19od2VpZ2h0NjQiICJcbjY2MjpcbiIgIiMgQUxUOiBwYWRk aW5nXG4iICIuc2tpcCAtKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAiNjYyYi02 NjFiIiAiKSkgPiAwKSAqICIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAiNjYy Yi02NjFiIiAiKSksMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVj dGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIiMSIiZiAt IC5cbiIgIiAud29yZCAiICIoIDQqMzIrMjMpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIi ICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIgIiAuYnl0ZSAiICI2 NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJf cmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEiICJcbiIgIjY2 NCIiMSIiOlxuXHQiICJwb3BjbnRxICUxLCAlMCIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNl Y3Rpb25cbiIKMTQ0NzQ6ICAgICA6ICI9IiJhIiAocmVzKQoxNDQ3NDogICAgIDogIkQiICh3KSk7 CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogIyAzODggIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2NvbnN0X2h3ZWlnaHQuaCIgMQoxNDQ3NDogIyAzOTAgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1hdG9taWMuaCIgMQoxNDQ3NDog IyAyNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtYXRvbWljLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHNldF9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRk cikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCks IHNpemVvZihsb25nKSk7CjE0NDc0OiAgYXJjaF9zZXRfYml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMzkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0 b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChu cikgLyA2NCksIHNpemVvZihsb25nKSk7CjE0NDc0OiAgYXJjaF9jbGVhcl9iaXQobnIsIGFkZHIp OwoxNDQ3NDogfQoxNDQ3NDogIyA1NSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0 cnVtZW50ZWQtYXRvbWljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRp bGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0 ZShhZGRyICsgKChucikgLyA2NCksIHNpemVvZihsb25nKSk7CjE0NDc0OiAgYXJjaF9jaGFuZ2Vf Yml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjggIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0ZXN0X2FuZF9zZXRf Yml0KGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0 OiAga2FzYW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwox NDQ3NDogIHJldHVybiBhcmNoX3Rlc3RfYW5kX3NldF9iaXQobnIsIGFkZHIpOwoxNDQ3NDogfQox NDQ3NDogIyA4MSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtYXRv bWljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIHRlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1 bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFk ZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF90ZXN0 X2FuZF9jbGVhcl9iaXQobnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyA5NCAiLi9pbmNsdWRl L2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtYXRvbWljLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRl c3RfYW5kX2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikK MTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNp emVvZihsb25nKSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfdGVzdF9hbmRfY2hhbmdlX2JpdChuciwg YWRkcik7CjE0NDc0OiB9CjE0NDc0OiAjIDM5MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRv cHMuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1l bnRlZC1ub24tYXRvbWljLmgiIDEKMTQ0NzQ6ICMgMjUgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9i aXRvcHMvaW5zdHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19zZXRfYml0KGxv bmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAga2Fz YW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwoxNDQ3NDog IGFyY2hfX19zZXRfYml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDAgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgX19jbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNpemVv Zihsb25nKSk7CjE0NDc0OiAgYXJjaF9fX2NsZWFyX2JpdChuciwgYWRkcik7CjE0NDc0OiB9CjE0 NDc0OiAjIDU1ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1ub24t YXRvbWljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fY2hhbmdlX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNp Z25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIg KyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICBhcmNoX19fY2hhbmdlX2JpdChu ciwgYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAjIDY5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0 b3BzL2luc3RydW1lbnRlZC1ub24tYXRvbWljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIF9fdGVzdF9hbmRfc2V0 X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3 NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsK MTQ0NzQ6ICByZXR1cm4gYXJjaF9fX3Rlc3RfYW5kX3NldF9iaXQobnIsIGFkZHIpOwoxNDQ3NDog fQoxNDQ3NDogIyA4MyAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQt bm9uLWF0b21pYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2 b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNr X3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICByZXR1cm4g YXJjaF9fX3Rlc3RfYW5kX2NsZWFyX2JpdChuciwgYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAjIDk3 ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1ub24tYXRvbWljLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIF9fdGVzdF9hbmRfY2hhbmdlX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNp Z25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIg KyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9fX3Rlc3Rf YW5kX2NoYW5nZV9iaXQobnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0ZXN0X2JpdChsb25nIG5yLCBj b25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2Fu X2NoZWNrX3JlYWQoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwoxNDQ3NDogIHJl dHVybiAoX19idWlsdGluX2NvbnN0YW50X3AoKG5yKSkgPyBjb25zdGFudF90ZXN0X2JpdCgobnIp LCAoYWRkcikpIDogdmFyaWFibGVfdGVzdF9iaXQoKG5yKSwgKGFkZHIpKSk7CjE0NDc0OiB9CjE0 NDc0OiAjIDM5MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIgMgoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1sb2NrLmgiIDEKMTQ0 NzQ6ICMgMjMgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxvY2su aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgY2xlYXJfYml0X3VubG9jayhsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25l ZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAo KG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICBhcmNoX2NsZWFyX2JpdF91bmxvY2so bnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyAzOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2Jp dG9wcy9pbnN0cnVtZW50ZWQtbG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NsZWFyX2JpdF91bmxvY2so bG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBr YXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNpemVvZihsb25nKSk7CjE0NDc0 OiAgYXJjaF9fX2NsZWFyX2JpdF91bmxvY2sobnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyA1 MyAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtbG9jay5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCB0ZXN0X2FuZF9zZXRfYml0X2xvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChu cikgLyA2NCksIHNpemVvZihsb25nKSk7CjE0NDc0OiAgcmV0dXJuIGFyY2hfdGVzdF9hbmRfc2V0 X2JpdF9sb2NrKG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzEgIi4vaW5jbHVkZS9hc20t Z2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKMTQ0NzQ6IGNs ZWFyX2JpdF91bmxvY2tfaXNfbmVnYXRpdmVfYnl0ZShsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25l ZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAo KG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKMTQ0NzQ6ICByZXR1cm4gYXJjaF9jbGVhcl9iaXRf dW5sb2NrX2lzX25lZ2F0aXZlX2J5dGUobnIsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyAzOTQg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2xlLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkv YXNtL3R5cGVzLmgiIDEKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9s ZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdF9sZShjb25zdCB2b2lkICphZGRy LAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIHNpemUsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBmaW5kX25leHRfemVyb19iaXQoYWRkciwgc2l6ZSwgb2Zmc2V0 KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmaW5kX25leHRfYml0X2xl KGNvbnN0IHZvaWQgKmFkZHIsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQg bG9uZyBvZmZzZXQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZpbmRfbmV4dF9iaXQoYWRkciwg c2l6ZSwgb2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmaW5k X2ZpcnN0X3plcm9fYml0X2xlKGNvbnN0IHZvaWQgKmFkZHIsCjE0NDc0OiAgIHVuc2lnbmVkIGxv bmcgc2l6ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmluZF9maXJzdF96ZXJvX2JpdChhZGRy LCBzaXplKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTMgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRv cHMvbGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2JpdF9sZShpbnQgbnIsIGNvbnN0IHZvaWQgKmFkZHIp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRlc3RfYml0KG5yIF4gMCwgYWRkcik7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X2JpdF9sZShpbnQgbnIsIHZvaWQgKmFkZHIpCjE0NDc0 OiB7CjE0NDc0OiAgc2V0X2JpdChuciBeIDAsIGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGNsZWFyX2JpdF9sZShpbnQgbnIsIHZvaWQgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAg Y2xlYXJfYml0KG5yIF4gMCwgYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19z ZXRfYml0X2xlKGludCBuciwgdm9pZCAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3NldF9iaXQo bnIgXiAwLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NsZWFyX2JpdF9s ZShpbnQgbnIsIHZvaWQgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAgX19jbGVhcl9iaXQobnIgXiAw LCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHRlc3RfYW5kX3NldF9iaXRfbGUo aW50IG5yLCB2b2lkICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0ZXN0X2FuZF9zZXRf Yml0KG5yIF4gMCwgYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9j bGVhcl9iaXRfbGUoaW50IG5yLCB2b2lkICphZGRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0 ZXN0X2FuZF9jbGVhcl9iaXQobnIgXiAwLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IF9fdGVzdF9hbmRfc2V0X2JpdF9sZShpbnQgbnIsIHZvaWQgKmFkZHIpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIF9fdGVzdF9hbmRfc2V0X2JpdChuciBeIDAsIGFkZHIpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgX190ZXN0X2FuZF9jbGVhcl9iaXRfbGUoaW50IG5yLCB2b2lkICph ZGRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX3Rlc3RfYW5kX2NsZWFyX2JpdChuciBeIDAs IGFkZHIpOwoxNDQ3NDogfQoxNDQ3NDogIyAzOTYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0 b3BzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3Bz L2V4dDItYXRvbWljLXNldGJpdC5oIiAxCjE0NDc0OiAjIDM5OCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9iaXRvcHMuaCIgMgoxNDQ3NDogIyAzMCAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAy CjE0NDc0OiAjIDY1ICIuL2luY2x1ZGUvbGludXgvYml0b3BzLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZ2V0X2Jp dG1hc2tfb3JkZXIodW5zaWduZWQgaW50IGNvdW50KQoxNDQ3NDogewoxNDQ3NDogIGludCBvcmRl cjsKMTQ0NzQ6IAoxNDQ3NDogIG9yZGVyID0gZmxzKGNvdW50KTsKMTQ0NzQ6ICByZXR1cm4gb3Jk ZXI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdW5zaWduZWQgbG9uZyBod2VpZ2h0X2xvbmcodW5zaWduZWQgbG9uZyB3KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBzaXplb2YodykgPT0gNCA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCh3 KSA/ICgoKCh1bnNpZ25lZCBpbnQpICgoISEoKHcpICYgKDFVTEwgPDwgMCkpKSArICghISgodykg JiAoMVVMTCA8PCAxKSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDIpKSkgKyAoISEoKHcpICYgKDFV TEwgPDwgMykpKSArICghISgodykgJiAoMVVMTCA8PCA0KSkpICsgKCEhKCh3KSAmICgxVUxMIDw8 IDUpKSkgKyAoISEoKHcpICYgKDFVTEwgPDwgNikpKSArICghISgodykgJiAoMVVMTCA8PCA3KSkp KSkgKyAoKHVuc2lnbmVkIGludCkgKCghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMCkpKSArICgh ISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwg MikpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMykpKSArICghISgoKHcpID4+IDgpICYg KDFVTEwgPDwgNCkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNSkpKSArICghISgoKHcp ID4+IDgpICYgKDFVTEwgPDwgNikpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNykpKSkp KSArICgoKHVuc2lnbmVkIGludCkgKCghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDApKSkgKyAo ISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCAxKSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwg PDwgMikpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCh3KSA+PiAx NikgJiAoMVVMTCA8PCA0KSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgNSkpKSArICgh ISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDYpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8 PCA3KSkpKSkgKyAoKHVuc2lnbmVkIGludCkgKCghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVM TCA8PCAwKSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDEpKSkgKyAoISEo KCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMikpKSArICghISgoKCh3KSA+PiAxNikgPj4g OCkgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDQp KSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNSkpKSArICghISgoKCh3KSA+ PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA2KSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgx VUxMIDw8IDcpKSkpKSkpIDogX19hcmNoX2h3ZWlnaHQzMih3KSkgOiAoX19idWlsdGluX2NvbnN0 YW50X3AodykgPyAoKCgoKHVuc2lnbmVkIGludCkgKCghISgodykgJiAoMVVMTCA8PCAwKSkpICsg KCEhKCh3KSAmICgxVUxMIDw8IDEpKSkgKyAoISEoKHcpICYgKDFVTEwgPDwgMikpKSArICghISgo dykgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKHcpICYg KDFVTEwgPDwgNSkpKSArICghISgodykgJiAoMVVMTCA8PCA2KSkpICsgKCEhKCh3KSAmICgxVUxM IDw8IDcpKSkpKSArICgodW5zaWduZWQgaW50KSAoKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAw KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAxKSkpICsgKCEhKCgodykgPj4gOCkgJiAo MVVMTCA8PCAyKSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCgodykg Pj4gOCkgJiAoMVVMTCA8PCA0KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsg KCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA2KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8 PCA3KSkpKSkpICsgKCgodW5zaWduZWQgaW50KSAoKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwg MCkpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDEpKSkgKyAoISEoKCh3KSA+PiAxNikg JiAoMVVMTCA8PCAyKSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgMykpKSArICghISgo KHcpID4+IDE2KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCA1 KSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgNikpKSArICghISgoKHcpID4+IDE2KSAm ICgxVUxMIDw8IDcpKSkpKSArICgodW5zaWduZWQgaW50KSAoKCEhKCgoKHcpID4+IDE2KSA+PiA4 KSAmICgxVUxMIDw8IDApKSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMSkp KSArICghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgoKHcpID4+ IDE2KSA+PiA4KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFV TEwgPDwgNCkpKSArICghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsgKCEh KCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDYpKSkgKyAoISEoKCgodykgPj4gMTYpID4+ IDgpICYgKDFVTEwgPDwgNykpKSkpKSkgKyAoKCgodW5zaWduZWQgaW50KSAoKCEhKCgodykgPj4g MzIpICYgKDFVTEwgPDwgMCkpKSArICghISgoKHcpID4+IDMyKSAmICgxVUxMIDw8IDEpKSkgKyAo ISEoKCh3KSA+PiAzMikgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgodykgPj4gMzIpICYgKDFVTEwg PDwgMykpKSArICghISgoKHcpID4+IDMyKSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKCh3KSA+PiAz MikgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgodykgPj4gMzIpICYgKDFVTEwgPDwgNikpKSArICgh ISgoKHcpID4+IDMyKSAmICgxVUxMIDw8IDcpKSkpKSArICgodW5zaWduZWQgaW50KSAoKCEhKCgo KHcpID4+IDMyKSA+PiA4KSAmICgxVUxMIDw8IDApKSkgKyAoISEoKCgodykgPj4gMzIpID4+IDgp ICYgKDFVTEwgPDwgMSkpKSArICghISgoKCh3KSA+PiAzMikgPj4gOCkgJiAoMVVMTCA8PCAyKSkp ICsgKCEhKCgoKHcpID4+IDMyKSA+PiA4KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCgodykgPj4g MzIpID4+IDgpICYgKDFVTEwgPDwgNCkpKSArICghISgoKCh3KSA+PiAzMikgPj4gOCkgJiAoMVVM TCA8PCA1KSkpICsgKCEhKCgoKHcpID4+IDMyKSA+PiA4KSAmICgxVUxMIDw8IDYpKSkgKyAoISEo KCgodykgPj4gMzIpID4+IDgpICYgKDFVTEwgPDwgNykpKSkpKSArICgoKHVuc2lnbmVkIGludCkg KCghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMCkpKSArICghISgoKCh3KSA+PiAz MikgPj4gMTYpICYgKDFVTEwgPDwgMSkpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFV TEwgPDwgMikpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMykpKSArICgh ISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgNCkpKSArICghISgoKCh3KSA+PiAzMikg Pj4gMTYpICYgKDFVTEwgPDwgNSkpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwg PDwgNikpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgNykpKSkpICsgKCh1 bnNpZ25lZCBpbnQpICgoISEoKCgoKHcpID4+IDMyKSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAw KSkpICsgKCEhKCgoKCh3KSA+PiAzMikgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICgh ISgoKCgodykgPj4gMzIpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDIpKSkgKyAoISEoKCgoKHcp ID4+IDMyKSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCgoKCh3KSA+PiAzMikg Pj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNCkpKSArICghISgoKCgodykgPj4gMzIpID4+IDE2KSA+ PiA4KSAmICgxVUxMIDw8IDUpKSkgKyAoISEoKCgoKHcpID4+IDMyKSA+PiAxNikgPj4gOCkgJiAo MVVMTCA8PCA2KSkpICsgKCEhKCgoKCh3KSA+PiAzMikgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwg NykpKSkpKSkpIDogX19hcmNoX2h3ZWlnaHQ2NCh3KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3U2NCByb2w2NChfX3U2 NCB3b3JkLCB1bnNpZ25lZCBpbnQgc2hpZnQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh3b3Jk IDw8IChzaGlmdCAmIDYzKSkgfCAod29yZCA+PiAoKC1zaGlmdCkgJiA2MykpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX191 NjQgcm9yNjQoX191NjQgd29yZCwgdW5zaWduZWQgaW50IHNoaWZ0KQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiAod29yZCA+PiAoc2hpZnQgJiA2MykpIHwgKHdvcmQgPDwgKCgtc2hpZnQpICYgNjMp KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fdTMyIHJvbDMyKF9fdTMyIHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgMzEpKSB8ICh3b3JkID4+ICgo LXNoaWZ0KSAmIDMxKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3UzMiByb3IzMihfX3UzMiB3b3JkLCB1bnNpZ25lZCBp bnQgc2hpZnQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh3b3JkID4+IChzaGlmdCAmIDMxKSkg fCAod29yZCA8PCAoKC1zaGlmdCkgJiAzMSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX191MTYgcm9sMTYoX191MTYgd29y ZCwgdW5zaWduZWQgaW50IHNoaWZ0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAod29yZCA8PCAo c2hpZnQgJiAxNSkpIHwgKHdvcmQgPj4gKCgtc2hpZnQpICYgMTUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fdTE2IHJv cjE2KF9fdTE2IHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHdvcmQgPj4gKHNoaWZ0ICYgMTUpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0KSAmIDE1KSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX3U4IHJvbDgoX191OCB3b3JkLCB1bnNpZ25lZCBpbnQgc2hpZnQpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICh3b3JkIDw8IChzaGlmdCAmIDcpKSB8ICh3b3JkID4+ICgoLXNoaWZ0KSAm IDcpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fdTggcm9yOChfX3U4IHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHdvcmQgPj4gKHNoaWZ0ICYgNykpIHwgKHdvcmQgPDwgKCgt c2hpZnQpICYgNykpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNjUgIi4vaW5jbHVkZS9saW51eC9iaXRv cHMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fczMyIHNpZ25fZXh0ZW5kMzIoX191MzIgdmFsdWUsIGludCBpbmRleCkK MTQ0NzQ6IHsKMTQ0NzQ6ICBfX3U4IHNoaWZ0ID0gMzEgLSBpbmRleDsKMTQ0NzQ6ICByZXR1cm4g KF9fczMyKSh2YWx1ZSA8PCBzaGlmdCkgPj4gc2hpZnQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3M2NCBzaWduX2V4dGVu ZDY0KF9fdTY0IHZhbHVlLCBpbnQgaW5kZXgpCjE0NDc0OiB7CjE0NDc0OiAgX191OCBzaGlmdCA9 IDYzIC0gaW5kZXg7CjE0NDc0OiAgcmV0dXJuIChfX3M2NCkodmFsdWUgPDwgc2hpZnQpID4+IHNo aWZ0OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBmbHNfbG9uZyh1bnNpZ25lZCBs b25nIGwpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHNpemVvZihsKSA9PSA0KQoxNDQ3NDogICByZXR1 cm4gZmxzKGwpOwoxNDQ3NDogIHJldHVybiBmbHM2NChsKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IGdldF9jb3VudF9vcmRlcih1bnNpZ25lZCBpbnQgY291bnQpCjE0NDc0OiB7CjE0NDc0 OiAgaW50IG9yZGVyOwoxNDQ3NDogCjE0NDc0OiAgb3JkZXIgPSBmbHMoY291bnQpIC0gMTsKMTQ0 NzQ6ICBpZiAoY291bnQgJiAoY291bnQgLSAxKSkKMTQ0NzQ6ICAgb3JkZXIrKzsKMTQ0NzQ6ICBy ZXR1cm4gb3JkZXI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZXRfY291bnRfb3JkZXJfbG9uZyh1bnNp Z25lZCBsb25nIGwpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGwgPT0gMFVMKQoxNDQ3NDogICByZXR1 cm4gLTE7CjE0NDc0OiAgZWxzZSBpZiAobCAmIChsIC0gMVVMKSkKMTQ0NzQ6ICAgcmV0dXJuIChp bnQpZmxzX2xvbmcobCk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gKGludClmbHNfbG9u ZyhsKSAtIDE7CjE0NDc0OiB9CjE0NDc0OiAjIDIyMyAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX2ZmczY0KHU2NCB3b3JkKQoxNDQ3NDogewoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBf X2ZmcygodW5zaWduZWQgbG9uZyl3b3JkKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFzc2lnbl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5z aWduZWQgbG9uZyAqYWRkciwKMTQ0NzQ6ICAgICAgICAgICAgYm9vbCB2YWx1ZSkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAodmFsdWUpCjE0NDc0OiAgIHNldF9iaXQobnIsIGFkZHIpOwoxNDQ3NDogIGVs c2UKMTQ0NzQ6ICAgY2xlYXJfYml0KG5yLCBhZGRyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fYXNzaWduX2JpdChsb25n IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyLAoxNDQ3NDogICAgICAgYm9vbCB2YWx1 ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAodmFsdWUpCjE0NDc0OiAgIF9fc2V0X2JpdChuciwgYWRk cik7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBfX2NsZWFyX2JpdChuciwgYWRkcik7CjE0NDc0OiB9 CjE0NDc0OiAjIDI5OSAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGxvbmcgZmluZF9sYXN0X2JpdChjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLAoxNDQ3 NDogICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CjE0NDc0OiAjIDEzICIuL2luY2x1ZGUvbGlu dXgva2VybmVsLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIgMQoxNDQ3 NDogIyAyMSAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKGNv bnN0KSkKMTQ0NzQ6IGludCBfX2lsb2cyX3UzMih1MzIgbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gZmxzKG4pIC0gMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKGNvbnN0KSkKMTQ0NzQ6IGludCBfX2lsb2cyX3U2NCh1NjQgbikKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gZmxzNjQobikgLSAxOwoxNDQ3NDogfQoxNDQ3NDogIyA0NCAiLi9p bmNsdWRlL2xpbnV4L2xvZzIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKGNvbnN0KSkKMTQ0NzQ6 IGJvb2wgaXNfcG93ZXJfb2ZfMih1bnNpZ25lZCBsb25nIG4pCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIChuICE9IDAgJiYgKChuICYgKG4gLSAxKSkgPT0gMCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKGNvbnN0 KSkKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgX19yb3VuZHVwX3Bvd19vZl90d28odW5zaWduZWQgbG9u ZyBuKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAxVUwgPDwgZmxzX2xvbmcobiAtIDEpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKGNvbnN0KSkKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgX19yb3VuZGRvd25fcG93X29m X3R3byh1bnNpZ25lZCBsb25nIG4pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIDFVTCA8PCAoZmxz X2xvbmcobikgLSAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTk3ICIuL2luY2x1ZGUvbGludXgvbG9n Mi5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSkKMTQ0NzQ6IGludCBfX29yZGVy X2Jhc2VfMih1bnNpZ25lZCBsb25nIG4pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG4gPiAxID8g KCBfX2J1aWx0aW5fY29uc3RhbnRfcChuIC0gMSkgPyAoIF9fYnVpbHRpbl9jb25zdGFudF9wKG4g LSAxKSA/ICggKG4gLSAxKSA8IDIgPyAwIDogKG4gLSAxKSAmICgxVUxMIDw8IDYzKSA/IDYzIDog KG4gLSAxKSAmICgxVUxMIDw8IDYyKSA/IDYyIDogKG4gLSAxKSAmICgxVUxMIDw8IDYxKSA/IDYx IDogKG4gLSAxKSAmICgxVUxMIDw8IDYwKSA/IDYwIDogKG4gLSAxKSAmICgxVUxMIDw8IDU5KSA/ IDU5IDogKG4gLSAxKSAmICgxVUxMIDw8IDU4KSA/IDU4IDogKG4gLSAxKSAmICgxVUxMIDw8IDU3 KSA/IDU3IDogKG4gLSAxKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKG4gLSAxKSAmICgxVUxMIDw8 IDU1KSA/IDU1IDogKG4gLSAxKSAmICgxVUxMIDw8IDU0KSA/IDU0IDogKG4gLSAxKSAmICgxVUxM IDw8IDUzKSA/IDUzIDogKG4gLSAxKSAmICgxVUxMIDw8IDUyKSA/IDUyIDogKG4gLSAxKSAmICgx VUxMIDw8IDUxKSA/IDUxIDogKG4gLSAxKSAmICgxVUxMIDw8IDUwKSA/IDUwIDogKG4gLSAxKSAm ICgxVUxMIDw8IDQ5KSA/IDQ5IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ4KSA/IDQ4IDogKG4gLSAx KSAmICgxVUxMIDw8IDQ3KSA/IDQ3IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ2KSA/IDQ2IDogKG4g LSAxKSAmICgxVUxMIDw8IDQ1KSA/IDQ1IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ0KSA/IDQ0IDog KG4gLSAxKSAmICgxVUxMIDw8IDQzKSA/IDQzIDogKG4gLSAxKSAmICgxVUxMIDw8IDQyKSA/IDQy IDogKG4gLSAxKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKG4gLSAxKSAmICgxVUxMIDw8IDQwKSA/ IDQwIDogKG4gLSAxKSAmICgxVUxMIDw8IDM5KSA/IDM5IDogKG4gLSAxKSAmICgxVUxMIDw8IDM4 KSA/IDM4IDogKG4gLSAxKSAmICgxVUxMIDw8IDM3KSA/IDM3IDogKG4gLSAxKSAmICgxVUxMIDw8 IDM2KSA/IDM2IDogKG4gLSAxKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKG4gLSAxKSAmICgxVUxM IDw8IDM0KSA/IDM0IDogKG4gLSAxKSAmICgxVUxMIDw8IDMzKSA/IDMzIDogKG4gLSAxKSAmICgx VUxMIDw8IDMyKSA/IDMyIDogKG4gLSAxKSAmICgxVUxMIDw8IDMxKSA/IDMxIDogKG4gLSAxKSAm ICgxVUxMIDw8IDMwKSA/IDMwIDogKG4gLSAxKSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKG4gLSAx KSAmICgxVUxMIDw8IDI4KSA/IDI4IDogKG4gLSAxKSAmICgxVUxMIDw8IDI3KSA/IDI3IDogKG4g LSAxKSAmICgxVUxMIDw8IDI2KSA/IDI2IDogKG4gLSAxKSAmICgxVUxMIDw8IDI1KSA/IDI1IDog KG4gLSAxKSAmICgxVUxMIDw8IDI0KSA/IDI0IDogKG4gLSAxKSAmICgxVUxMIDw8IDIzKSA/IDIz IDogKG4gLSAxKSAmICgxVUxMIDw8IDIyKSA/IDIyIDogKG4gLSAxKSAmICgxVUxMIDw8IDIxKSA/ IDIxIDogKG4gLSAxKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKG4gLSAxKSAmICgxVUxMIDw8IDE5 KSA/IDE5IDogKG4gLSAxKSAmICgxVUxMIDw8IDE4KSA/IDE4IDogKG4gLSAxKSAmICgxVUxMIDw8 IDE3KSA/IDE3IDogKG4gLSAxKSAmICgxVUxMIDw8IDE2KSA/IDE2IDogKG4gLSAxKSAmICgxVUxM IDw8IDE1KSA/IDE1IDogKG4gLSAxKSAmICgxVUxMIDw8IDE0KSA/IDE0IDogKG4gLSAxKSAmICgx VUxMIDw8IDEzKSA/IDEzIDogKG4gLSAxKSAmICgxVUxMIDw8IDEyKSA/IDEyIDogKG4gLSAxKSAm ICgxVUxMIDw8IDExKSA/IDExIDogKG4gLSAxKSAmICgxVUxMIDw8IDEwKSA/IDEwIDogKG4gLSAx KSAmICgxVUxMIDw8IDkpID8gOSA6IChuIC0gMSkgJiAoMVVMTCA8PCA4KSA/IDggOiAobiAtIDEp ICYgKDFVTEwgPDwgNykgPyA3IDogKG4gLSAxKSAmICgxVUxMIDw8IDYpID8gNiA6IChuIC0gMSkg JiAoMVVMTCA8PCA1KSA/IDUgOiAobiAtIDEpICYgKDFVTEwgPDwgNCkgPyA0IDogKG4gLSAxKSAm ICgxVUxMIDw8IDMpID8gMyA6IChuIC0gMSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6 IChzaXplb2YobiAtIDEpIDw9IDQpID8gX19pbG9nMl91MzIobiAtIDEpIDogX19pbG9nMl91NjQo biAtIDEpICkgKyAxIDogMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjI0ICIuL2luY2x1ZGUvbGludXgv bG9nMi5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoY29uc3QpKQoxNDQ3NDogaW50IF9fYml0c19w ZXIodW5zaWduZWQgbG9uZyBuKQoxNDQ3NDogewoxNDQ3NDogIGlmIChuIDwgMikKMTQ0NzQ6ICAg cmV0dXJuIDE7CjE0NDc0OiAgaWYgKGlzX3Bvd2VyX29mXzIobikpCjE0NDc0OiAgIHJldHVybiAo IF9fYnVpbHRpbl9jb25zdGFudF9wKG4pID8gKCAoKG4pID09IDAgfHwgKG4pID09IDEpID8gMCA6 ICggX19idWlsdGluX2NvbnN0YW50X3AoKG4pIC0gMSkgPyAoIF9fYnVpbHRpbl9jb25zdGFudF9w KChuKSAtIDEpID8gKCAoKG4pIC0gMSkgPCAyID8gMCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYz KSA/IDYzIDogKChuKSAtIDEpICYgKDFVTEwgPDwgNjIpID8gNjIgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCA2MSkgPyA2MSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYwKSA/IDYwIDogKChuKSAtIDEp ICYgKDFVTEwgPDwgNTkpID8gNTkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1OCkgPyA1OCA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDU3KSA/IDU3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTYpID8g NTYgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1NSkgPyA1NSA6ICgobikgLSAxKSAmICgxVUxMIDw8 IDU0KSA/IDU0IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTMpID8gNTMgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCA1MikgPyA1MiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUxKSA/IDUxIDogKChuKSAt IDEpICYgKDFVTEwgPDwgNTApID8gNTAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0OSkgPyA0OSA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDQ4KSA/IDQ4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDcp ID8gNDcgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0NikgPyA0NiA6ICgobikgLSAxKSAmICgxVUxM IDw8IDQ1KSA/IDQ1IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDQpID8gNDQgOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCA0MykgPyA0MyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQyKSA/IDQyIDogKChu KSAtIDEpICYgKDFVTEwgPDwgNDEpID8gNDEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0MCkgPyA0 MCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDM5KSA/IDM5IDogKChuKSAtIDEpICYgKDFVTEwgPDwg MzgpID8gMzggOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzNykgPyAzNyA6ICgobikgLSAxKSAmICgx VUxMIDw8IDM2KSA/IDM2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzUpID8gMzUgOiAoKG4pIC0g MSkgJiAoMVVMTCA8PCAzNCkgPyAzNCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMzKSA/IDMzIDog KChuKSAtIDEpICYgKDFVTEwgPDwgMzIpID8gMzIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzMSkg PyAzMSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMwKSA/IDMwIDogKChuKSAtIDEpICYgKDFVTEwg PDwgMjkpID8gMjkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyOCkgPyAyOCA6ICgobikgLSAxKSAm ICgxVUxMIDw8IDI3KSA/IDI3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjYpID8gMjYgOiAoKG4p IC0gMSkgJiAoMVVMTCA8PCAyNSkgPyAyNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDI0KSA/IDI0 IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjMpID8gMjMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAy MikgPyAyMiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIxKSA/IDIxIDogKChuKSAtIDEpICYgKDFV TEwgPDwgMjApID8gMjAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxOSkgPyAxOSA6ICgobikgLSAx KSAmICgxVUxMIDw8IDE4KSA/IDE4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTcpID8gMTcgOiAo KG4pIC0gMSkgJiAoMVVMTCA8PCAxNikgPyAxNiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDE1KSA/ IDE1IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTQpID8gMTQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCAxMykgPyAxMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDEyKSA/IDEyIDogKChuKSAtIDEpICYg KDFVTEwgPDwgMTEpID8gMTEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxMCkgPyAxMCA6ICgobikg LSAxKSAmICgxVUxMIDw8IDkpID8gOSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDgpID8gOCA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDcpID8gNyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYpID8gNiA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDUpID8gNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQpID8g NCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMpID8gMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIp ID8gMiA6IDEpIDogLTEpIDogKHNpemVvZigobikgLSAxKSA8PSA0KSA/IF9faWxvZzJfdTMyKChu KSAtIDEpIDogX19pbG9nMl91NjQoKG4pIC0gMSkgKSArIDEpIDogX19vcmRlcl9iYXNlXzIobikg KSArIDE7CjE0NDc0OiAgcmV0dXJuICggX19idWlsdGluX2NvbnN0YW50X3AobikgPyAoICgobikg PT0gMCB8fCAobikgPT0gMSkgPyAwIDogKCBfX2J1aWx0aW5fY29uc3RhbnRfcCgobikgLSAxKSA/ ICggX19idWlsdGluX2NvbnN0YW50X3AoKG4pIC0gMSkgPyAoICgobikgLSAxKSA8IDIgPyAwIDog KChuKSAtIDEpICYgKDFVTEwgPDwgNjMpID8gNjMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA2Mikg PyA2MiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYxKSA/IDYxIDogKChuKSAtIDEpICYgKDFVTEwg PDwgNjApID8gNjAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1OSkgPyA1OSA6ICgobikgLSAxKSAm ICgxVUxMIDw8IDU4KSA/IDU4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTcpID8gNTcgOiAoKG4p IC0gMSkgJiAoMVVMTCA8PCA1NikgPyA1NiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDU1KSA/IDU1 IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTQpID8gNTQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1 MykgPyA1MyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUyKSA/IDUyIDogKChuKSAtIDEpICYgKDFV TEwgPDwgNTEpID8gNTEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1MCkgPyA1MCA6ICgobikgLSAx KSAmICgxVUxMIDw8IDQ5KSA/IDQ5IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDgpID8gNDggOiAo KG4pIC0gMSkgJiAoMVVMTCA8PCA0NykgPyA0NyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQ2KSA/ IDQ2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDUpID8gNDUgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCA0NCkgPyA0NCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQzKSA/IDQzIDogKChuKSAtIDEpICYg KDFVTEwgPDwgNDIpID8gNDIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0MSkgPyA0MSA6ICgobikg LSAxKSAmICgxVUxMIDw8IDQwKSA/IDQwIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzkpID8gMzkg OiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzOCkgPyAzOCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDM3 KSA/IDM3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzYpID8gMzYgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCAzNSkgPyAzNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDM0KSA/IDM0IDogKChuKSAtIDEp ICYgKDFVTEwgPDwgMzMpID8gMzMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzMikgPyAzMiA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDMxKSA/IDMxIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzApID8g MzAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyOSkgPyAyOSA6ICgobikgLSAxKSAmICgxVUxMIDw8 IDI4KSA/IDI4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjcpID8gMjcgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCAyNikgPyAyNiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDI1KSA/IDI1IDogKChuKSAt IDEpICYgKDFVTEwgPDwgMjQpID8gMjQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyMykgPyAyMyA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDIyKSA/IDIyIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjEp ID8gMjEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyMCkgPyAyMCA6ICgobikgLSAxKSAmICgxVUxM IDw8IDE5KSA/IDE5IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTgpID8gMTggOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCAxNykgPyAxNyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDE2KSA/IDE2IDogKChu KSAtIDEpICYgKDFVTEwgPDwgMTUpID8gMTUgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxNCkgPyAx NCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDEzKSA/IDEzIDogKChuKSAtIDEpICYgKDFVTEwgPDwg MTIpID8gMTIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxMSkgPyAxMSA6ICgobikgLSAxKSAmICgx VUxMIDw8IDEwKSA/IDEwIDogKChuKSAtIDEpICYgKDFVTEwgPDwgOSkgPyA5IDogKChuKSAtIDEp ICYgKDFVTEwgPDwgOCkgPyA4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNykgPyA3IDogKChuKSAt IDEpICYgKDFVTEwgPDwgNikgPyA2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNSkgPyA1IDogKChu KSAtIDEpICYgKDFVTEwgPDwgNCkgPyA0IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMykgPyAzIDog KChuKSAtIDEpICYgKDFVTEwgPDwgMikgPyAyIDogMSkgOiAtMSkgOiAoc2l6ZW9mKChuKSAtIDEp IDw9IDQpID8gX19pbG9nMl91MzIoKG4pIC0gMSkgOiBfX2lsb2cyX3U2NCgobikgLSAxKSApICsg MSkgOiBfX29yZGVyX2Jhc2VfMihuKSApOwoxNDQ3NDogfQoxNDQ3NDogIyAxNCAiLi9pbmNsdWRl L2xpbnV4L2tlcm5lbC5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3By aW50ay5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9rZXJuX2xldmVscy5oIiAxCjE0NDc0OiAjIDgg Ii4vaW5jbHVkZS9saW51eC9wcmludGsuaCIgMgoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9jYWNoZS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgva2VybmVsLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zeXNpbmZvLmgi IDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHN5c2luZm8gewoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCB1cHRpbWU7 CjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBsb2Fkc1szXTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9u Z190IHRvdGFscmFtOwoxNDQ3NDogIF9fa2VybmVsX3Vsb25nX3QgZnJlZXJhbTsKMTQ0NzQ6ICBf X2tlcm5lbF91bG9uZ190IHNoYXJlZHJhbTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IGJ1ZmZl cnJhbTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHRvdGFsc3dhcDsKMTQ0NzQ6ICBfX2tlcm5l bF91bG9uZ190IGZyZWVzd2FwOwoxNDQ3NDogIF9fdTE2IHByb2NzOwoxNDQ3NDogIF9fdTE2IHBh ZDsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHRvdGFsaGlnaDsKMTQ0NzQ6ICBfX2tlcm5lbF91 bG9uZ190IGZyZWVoaWdoOwoxNDQ3NDogIF9fdTMyIG1lbV91bml0OwoxNDQ3NDogIGNoYXIgX2Zb MjAtMipzaXplb2YoX19rZXJuZWxfdWxvbmdfdCktc2l6ZW9mKF9fdTMyKV07CjE0NDc0OiB9Owox NDQ3NDogIyA2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9rZXJuZWwuaCIgMgoxNDQ3NDogIyA2ICIu L2luY2x1ZGUvbGludXgvY2FjaGUuaCIgMgoxNDQ3NDogIyAxMCAiLi9pbmNsdWRlL2xpbnV4L3By aW50ay5oIiAyCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyIGxpbnV4X2Jhbm5lcltd OwoxNDQ3NDogZXh0ZXJuIGNvbnN0IGNoYXIgbGludXhfcHJvY19iYW5uZXJbXTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwcmludGtfZ2V0X2xldmVsKGNvbnN0IGNoYXIgKmJ1 ZmZlcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoYnVmZmVyWzBdID09ICdcMDAxJyAmJiBidWZmZXJb MV0pIHsKMTQ0NzQ6ICAgc3dpdGNoIChidWZmZXJbMV0pIHsKMTQ0NzQ6ICAgY2FzZSAnMCcgLi4u ICc3JzoKMTQ0NzQ6ICAgY2FzZSAnYyc6CjE0NDc0OiAgICByZXR1cm4gYnVmZmVyWzFdOwoxNDQ3 NDogICB9CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBjb25zdCBjaGFyICpwcmludGtfc2tpcF9sZXZlbChjb25zdCBjaGFyICpidWZmZXIpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKHByaW50a19nZXRfbGV2ZWwoYnVmZmVyKSkKMTQ0NzQ6ICAgcmV0dXJu IGJ1ZmZlciArIDI7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYnVmZmVyOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBjb25zdCBjaGFyICpwcmludGtfc2tpcF9oZWFkZXJzKGNvbnN0IGNoYXIgKmJ1 ZmZlcikKMTQ0NzQ6IHsKMTQ0NzQ6ICB3aGlsZSAocHJpbnRrX2dldF9sZXZlbChidWZmZXIpKQox NDQ3NDogICBidWZmZXIgPSBwcmludGtfc2tpcF9sZXZlbChidWZmZXIpOwoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIGJ1ZmZlcjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjIgIi4vaW5jbHVkZS9saW51eC9w cmludGsuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgY29uc29sZV9wcmludGtbXTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY29uc29sZV9z aWxlbnQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoY29uc29sZV9wcmludGtbMF0pID0gMDsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjb25zb2xlX3ZlcmJvc2Uodm9pZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAoKGNvbnNvbGVfcHJpbnRrWzBdKSkKMTQ0NzQ6ICAgKGNvbnNvbGVfcHJpbnRr WzBdKSA9IDE1OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGNoYXIgZGV2a21zZ19sb2dfc3RyW107CjE0NDc0OiBzdHJ1Y3QgY3RsX3RhYmxlOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IHN1cHByZXNzX3ByaW50azsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHZhX2Zvcm1hdCB7CjE0NDc0OiAgY29uc3QgY2hhciAqZm10OwoxNDQ3NDogIHZhX2xpc3QgKnZh OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTQyICIuL2luY2x1ZGUvbGludXgvcHJpbnRrLmgiCjE0NDc0 OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDEsIDIpKSkKMTQ0NzQ6 IHZvaWQgZWFybHlfcHJpbnRrKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHByaW50 a19ubWlfZW50ZXIodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBwcmludGtfbm1pX2V4aXQodm9p ZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBwcmludGtfbm1pX2RpcmVjdF9lbnRlcih2b2lkKTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIHByaW50a19ubWlfZGlyZWN0X2V4aXQodm9pZCk7CjE0NDc0OiAjIDE2 MiAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgoxNDQ3NDogIF9fYXR0cmlidXRlX18oKF9fZm9y bWF0X18ocHJpbnRmLCA1LCAwKSkpCjE0NDc0OiBpbnQgdnByaW50a19lbWl0KGludCBmYWNpbGl0 eSwgaW50IGxldmVsLAoxNDQ3NDogICAgY29uc3QgY2hhciAqZGljdCwgc2l6ZV90IGRpY3RsZW4s CjE0NDc0OiAgICBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CjE0NDc0OiAKMTQ0NzQ6 ICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMCkpKQoxNDQ3NDogaW50IHZw cmludGsoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoxNDQ3NDogCjE0NDc0OiAgX19h dHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDEsIDIpKSkgX19hdHRyaWJ1dGVfXygoX19j b2xkX18pKQoxNDQ3NDogaW50IHByaW50ayhjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o cHJpbnRmLCAxLCAyKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgaW50IHByaW50a19kZWZl cnJlZChjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fcHJpbnRrX3JhdGVsaW1pdChj b25zdCBjaGFyICpmdW5jKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgcHJpbnRrX3RpbWVk X3JhdGVsaW1pdCh1bnNpZ25lZCBsb25nICpjYWxsZXJfamlmZmllcywKMTQ0NzQ6ICAgICAgICB1 bnNpZ25lZCBpbnQgaW50ZXJ2YWxfbXNlYyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcHJp bnRrX2RlbGF5X21zZWM7CjE0NDc0OiBleHRlcm4gaW50IGRtZXNnX3Jlc3RyaWN0OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50CjE0NDc0OiBkZXZrbXNnX3N5c2N0bF9zZXRfbG9nbHZsKHN0cnVj dCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsIHZvaWQgKmJ1ZiwKMTQ0NzQ6ICAgICAgc2l6 ZV90ICpsZW5wLCBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCB3YWtl X3VwX2tsb2dkKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBjaGFyICpsb2dfYnVmX2FkZHJfZ2V0KHZv aWQpOwoxNDQ3NDogdTMyIGxvZ19idWZfbGVuX2dldCh2b2lkKTsKMTQ0NzQ6IHZvaWQgbG9nX2J1 Zl92bWNvcmVpbmZvX3NldHVwKHZvaWQpOwoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzZXR1cF9s b2dfYnVmKGludCBlYXJseSk7CjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50 ZiwgMSwgMikpKSB2b2lkIGR1bXBfc3RhY2tfc2V0X2FyY2hfZGVzYyhjb25zdCBjaGFyICpmbXQs IC4uLik7CjE0NDc0OiB2b2lkIGR1bXBfc3RhY2tfcHJpbnRfaW5mbyhjb25zdCBjaGFyICpsb2df bHZsKTsKMTQ0NzQ6IHZvaWQgc2hvd19yZWdzX3ByaW50X2luZm8oY29uc3QgY2hhciAqbG9nX2x2 bCk7CjE0NDc0OiBleHRlcm4gdm9pZCBkdW1wX3N0YWNrKHZvaWQpIF9fYXR0cmlidXRlX18oKF9f Y29sZF9fKSk7CjE0NDc0OiBleHRlcm4gdm9pZCBwcmludGtfc2FmZV9pbml0KHZvaWQpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgcHJpbnRrX3NhZmVfZmx1c2godm9pZCk7CjE0NDc0OiBleHRlcm4gdm9p ZCBwcmludGtfc2FmZV9mbHVzaF9vbl9wYW5pYyh2b2lkKTsKMTQ0NzQ6ICMgMjg1ICIuL2luY2x1 ZGUvbGludXgvcHJpbnRrLmgiCjE0NDc0OiBleHRlcm4gaW50IGtwdHJfcmVzdHJpY3Q7CjE0NDc0 OiAjIDMzMSAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUv bGludXgvZHluYW1pY19kZWJ1Zy5oIiAxCjE0NDc0OiAjIDE0ICIuL2luY2x1ZGUvbGludXgvZHlu YW1pY19kZWJ1Zy5oIgoxNDQ3NDogc3RydWN0IF9kZGVidWcgewoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgY29uc3QgY2hhciAqbW9kbmFtZTsKMTQ0NzQ6ICBjb25zdCBj aGFyICpmdW5jdGlvbjsKMTQ0NzQ6ICBjb25zdCBjaGFyICpmaWxlbmFtZTsKMTQ0NzQ6ICBjb25z dCBjaGFyICpmb3JtYXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGxpbmVubzoxODsKMTQ0NzQ6ICMg NDAgIi4vaW5jbHVkZS9saW51eC9keW5hbWljX2RlYnVnLmgiCjE0NDc0OiAgdW5zaWduZWQgaW50 IGZsYWdzOjg7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBzdGF0aWNf a2V5X3RydWUgZGRfa2V5X3RydWU7CjE0NDc0OiAgIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIGRk X2tleV9mYWxzZTsKMTQ0NzQ6ICB9IGtleTsKMTQ0NzQ6IAoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9f KChhbGlnbmVkKDgpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGlu dCBkZGVidWdfYWRkX21vZHVsZShzdHJ1Y3QgX2RkZWJ1ZyAqdGFiLCB1bnNpZ25lZCBpbnQgbiwK MTQ0NzQ6ICAgICBjb25zdCBjaGFyICptb2RuYW1lKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZGRlYnVn X3JlbW92ZV9tb2R1bGUoY29uc3QgY2hhciAqbW9kX25hbWUpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0 cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCjE0NDc0OiB2b2lkIF9fZHluYW1p Y19wcl9kZWJ1ZyhzdHJ1Y3QgX2RkZWJ1ZyAqZGVzY3JpcHRvciwgY29uc3QgY2hhciAqZm10LCAu Li4pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGRkZWJ1Z19keW5kYmdfbW9kdWxlX3BhcmFt X2NiKGNoYXIgKnBhcmFtLCBjaGFyICp2YWwsCjE0NDc0OiAgICAgIGNvbnN0IGNoYXIgKm1vZG5h bWUpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g X19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IHZvaWQgX19k eW5hbWljX2Rldl9kYmcoc3RydWN0IF9kZGVidWcgKmRlc2NyaXB0b3IsIGNvbnN0IHN0cnVjdCBk ZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IG5ldF9kZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJp YnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKQoxNDQ3NDogdm9pZCBfX2R5bmFtaWNf bmV0ZGV2X2RiZyhzdHJ1Y3QgX2RkZWJ1ZyAqZGVzY3JpcHRvciwKMTQ0NzQ6ICAgICAgY29uc3Qg c3RydWN0IG5ldF9kZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgY29uc3QgY2hhciAqZm10LCAuLi4p OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaWJfZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g X19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IHZvaWQgX19k eW5hbWljX2liZGV2X2RiZyhzdHJ1Y3QgX2RkZWJ1ZyAqZGVzY3JpcHRvciwKMTQ0NzQ6ICAgICBj b25zdCBzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwKMTQ0NzQ6ICAgICBjb25zdCBjaGFyICpmbXQs IC4uLik7CjE0NDc0OiAjIDMzMiAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIiAyCjE0NDc0OiAj IDQ3NiAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgoxNDQ3NDogZXh0ZXJuIGNvbnN0IHN0cnVj dCBmaWxlX29wZXJhdGlvbnMga21zZ19mb3BzOwoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6 ICBEVU1QX1BSRUZJWF9OT05FLAoxNDQ3NDogIERVTVBfUFJFRklYX0FERFJFU1MsCjE0NDc0OiAg RFVNUF9QUkVGSVhfT0ZGU0VUCjE0NDc0OiB9OwoxNDQ3NDogZXh0ZXJuIGludCBoZXhfZHVtcF90 b19idWZmZXIoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBpbnQgcm93c2l6ZSwKMTQ0NzQ6 ICAgICAgICAgIGludCBncm91cHNpemUsIGNoYXIgKmxpbmVidWYsIHNpemVfdCBsaW5lYnVmbGVu LAoxNDQ3NDogICAgICAgICAgYm9vbCBhc2NpaSk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lk IHByaW50X2hleF9kdW1wKGNvbnN0IGNoYXIgKmxldmVsLCBjb25zdCBjaGFyICpwcmVmaXhfc3Ry LAoxNDQ3NDogICAgICAgaW50IHByZWZpeF90eXBlLCBpbnQgcm93c2l6ZSwgaW50IGdyb3Vwc2l6 ZSwKMTQ0NzQ6ICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgYm9vbCBhc2NpaSk7 CjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGl2NjQuaCIgMQoxNDQ3NDogIyA3 NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9kaXY2NC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvZGl2NjQuaCIgMQoxNDQ3NDogIyA3NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9kaXY2NC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBtdWxfdTY0X3UzMl9kaXYodTY0IGEsIHUz MiBtdWwsIHUzMiBkaXYpCjE0NDc0OiB7CjE0NDc0OiAgdTY0IHE7CjE0NDc0OiAKMTQ0NzQ6ICBh c20gKCJtdWxxICUyOyBkaXZxICUzIiA6ICI9YSIgKHEpCjE0NDc0OiAgICAgOiAiYSIgKGEpLCAi cm0iICgodTY0KW11bCksICJybSIgKCh1NjQpZGl2KQoxNDQ3NDogICAgIDogInJkeCIpOwoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIHE7CjE0NDc0OiB9CjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGlu dXgva2VybmVsLmgiIDIKMTQ0NzQ6ICMgMTkxICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiCjE0 NDc0OiBzdHJ1Y3QgY29tcGxldGlvbjsKMTQ0NzQ6IHN0cnVjdCBwdF9yZWdzOwoxNDQ3NDogc3Ry dWN0IHVzZXI7CjE0NDc0OiAjIDI0NyAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgoxNDQ3NDog ICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIF9fX21pZ2h0X3NsZWVwKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLAoxNDQ3NDog ICAgICAgIGludCBwcmVlbXB0X29mZnNldCkgeyB9CjE0NDc0OiAgIHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19taWdodF9zbGVl cChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwKMTQ0NzQ6ICAgICAgICBpbnQgcHJlZW1wdF9v ZmZzZXQpIHsgfQoxNDQ3NDogIyAyOTcgIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHUzMiByZWNpcHJvY2FsX3NjYWxlKHUzMiB2YWwsIHUzMiBlcF9ybykKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gKHUzMikoKCh1NjQpIHZhbCAqIGVwX3JvKSA+PiAzMik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG1p Z2h0X2ZhdWx0KHZvaWQpIHsgfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg YXRvbWljX25vdGlmaWVyX2hlYWQgcGFuaWNfbm90aWZpZXJfbGlzdDsKMTQ0NzQ6IGV4dGVybiBs b25nICgqcGFuaWNfYmxpbmspKGludCBzdGF0ZSk7CjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zv cm1hdF9fKHByaW50ZiwgMSwgMikpKQoxNDQ3NDogdm9pZCBwYW5pYyhjb25zdCBjaGFyICpmbXQs IC4uLikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkgX19hdHRyaWJ1dGVfXygoX19jb2xk X18pKTsKMTQ0NzQ6IHZvaWQgbm1pX3BhbmljKHN0cnVjdCBwdF9yZWdzICpyZWdzLCBjb25zdCBj aGFyICptc2cpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgb29wc19lbnRlcih2b2lkKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIG9vcHNfZXhpdCh2b2lkKTsKMTQ0NzQ6IHZvaWQgcHJpbnRfb29wc19lbmRfbWFy a2VyKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCBvb3BzX21heV9wcmludCh2b2lkKTsKMTQ0NzQ6 IHZvaWQgZG9fZXhpdChsb25nIGVycm9yX2NvZGUpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5f XykpOwoxNDQ3NDogdm9pZCBjb21wbGV0ZV9hbmRfZXhpdChzdHJ1Y3QgY29tcGxldGlvbiAqLCBs b25nKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9rc3RydG91bChj b25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgdW5zaWduZWQgbG9uZyAqcmVzKTsKMTQ0 NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX2tzdHJ0b2wo Y29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIGxvbmcgKnJlcyk7CjE0NDc0OiAKMTQ0 NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdWxs KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCB1bnNpZ25lZCBsb25nIGxvbmcgKnJl cyk7CjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtz dHJ0b2xsKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCBsb25nIGxvbmcgKnJlcyk7 CjE0NDc0OiAjIDM0NCAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0 cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91bChjb25zdCBjaGFyICpz LCB1bnNpZ25lZCBpbnQgYmFzZSwgdW5zaWduZWQgbG9uZyAqcmVzKQoxNDQ3NDogewoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaWYgKHNpemVvZih1bnNpZ25lZCBsb25n KSA9PSBzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSAmJgoxNDQ3NDogICAgICBfX2FsaWdub2Zf Xyh1bnNpZ25lZCBsb25nKSA9PSBfX2FsaWdub2ZfXyh1bnNpZ25lZCBsb25nIGxvbmcpKQoxNDQ3 NDogICByZXR1cm4ga3N0cnRvdWxsKHMsIGJhc2UsICh1bnNpZ25lZCBsb25nIGxvbmcgKilyZXMp OwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIF9rc3RydG91bChzLCBiYXNlLCByZXMpOwox NDQ3NDogfQoxNDQ3NDogIyAzNzIgIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvbChjb25zdCBj aGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgbG9uZyAqcmVzKQoxNDQ3NDogewoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaWYgKHNpemVvZihsb25nKSA9PSBzaXplb2Yo bG9uZyBsb25nKSAmJgoxNDQ3NDogICAgICBfX2FsaWdub2ZfXyhsb25nKSA9PSBfX2FsaWdub2Zf Xyhsb25nIGxvbmcpKQoxNDQ3NDogICByZXR1cm4ga3N0cnRvbGwocywgYmFzZSwgKGxvbmcgbG9u ZyAqKXJlcyk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gX2tzdHJ0b2wocywgYmFzZSwg cmVzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKSBrc3RydG91aW50KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBi YXNlLCB1bnNpZ25lZCBpbnQgKnJlcyk7CjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2ludChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgaW50ICpyZXMpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3U2NChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgdTY0ICpyZXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtzdHJ0b3VsbChzLCBiYXNl LCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3M2NChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgczY0ICpyZXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtzdHJ0b2xsKHMsIGJhc2Us IHJlcyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdTMyKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBi YXNlLCB1MzIgKnJlcykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3N0cnRvdWludChzLCBiYXNl LCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3MzMihjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgczMyICpyZXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtzdHJ0b2ludChzLCBiYXNl LCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UxNihjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgdTE2ICpyZXMpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBrc3RydG9zMTYoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIHMx NiAqcmVzKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkga3N0cnRvdTgoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIHU4ICpyZXMpOwox NDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG9z OChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgczggKnJlcyk7CjE0NDc0OiBpbnQg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2Jvb2woY29uc3Qg Y2hhciAqcywgYm9vbCAqcmVzKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91bGxfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMs IHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGxvbmcgbG9uZyAqcmVz KTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0 cnRvbGxfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50 IGJhc2UsIGxvbmcgbG9uZyAqcmVzKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdWxfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVf dCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGxvbmcgKnJlcyk7CjE0NDc0OiBp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2xfZnJvbV91 c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIGxvbmcg KnJlcyk7CjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGtzdHJ0b3VpbnRfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWdu ZWQgaW50IGJhc2UsIHVuc2lnbmVkIGludCAqcmVzKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9f KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvaW50X2Zyb21fdXNlcihjb25zdCBjaGFy ICpzLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGludCBiYXNlLCBpbnQgKnJlcyk7CjE0NDc0OiBp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UxNl9mcm9t X3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgdTE2 ICpyZXMpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSBrc3RydG9zMTZfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWdu ZWQgaW50IGJhc2UsIHMxNiAqcmVzKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdThfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVf dCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHU4ICpyZXMpOwoxNDQ3NDogaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG9zOF9mcm9tX3VzZXIoY29uc3Qg Y2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgczggKnJlcyk7CjE0NDc0 OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2Jvb2xf ZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgYm9vbCAqcmVzKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3Ry dG91NjRfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50 IGJhc2UsIHU2NCAqcmVzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrc3RydG91bGxfZnJvbV91 c2VyKHMsIGNvdW50LCBiYXNlLCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3M2NF9mcm9tX3VzZXIo Y29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgczY0ICpyZXMp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtzdHJ0b2xsX2Zyb21fdXNlcihzLCBjb3VudCwgYmFz ZSwgcmVzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91MzJfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNp emVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHUzMiAqcmVzKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBrc3RydG91aW50X2Zyb21fdXNlcihzLCBjb3VudCwgYmFzZSwgcmVzKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0 X18pKSBrc3RydG9zMzJfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5z aWduZWQgaW50IGJhc2UsIHMzMiAqcmVzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrc3RydG9p bnRfZnJvbV91c2VyKHMsIGNvdW50LCBiYXNlLCByZXMpOwoxNDQ3NDogfQoxNDQ3NDogIyA0NTkg Ii4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIHNp bXBsZV9zdHJ0b3VsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CjE0NDc0OiBl eHRlcm4gbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGlu dCk7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHNpbXBsZV9zdHJ0b3VsbChjb25z dCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGxvbmcgbG9uZyBz aW1wbGVfc3RydG9sbChjb25zdCBjaGFyICosY2hhciAqKix1bnNpZ25lZCBpbnQpOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IG51bV90b19zdHIoY2hhciAqYnVmLCBpbnQgc2l6ZSwKMTQ0NzQ6 ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIG51bSwgdW5zaWduZWQgaW50IHdpZHRoKTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1h dF9fKHByaW50ZiwgMiwgMykpKSBpbnQgc3ByaW50ZihjaGFyICpidWYsIGNvbnN0IGNoYXIgKiBm bXQsIC4uLik7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYs IDIsIDApKSkgaW50IHZzcHJpbnRmKGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsK MTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKQox NDQ3NDogaW50IHNucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZt dCwgLi4uKTsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50Ziwg MywgMCkpKQoxNDQ3NDogaW50IHZzbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25z dCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygo X19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IGludCBzY25wcmludGYoY2hhciAqYnVm LCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogZXh0ZXJuIF9fYXR0 cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCAwKSkpCjE0NDc0OiBpbnQgdnNjbnByaW50 ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7 CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkg X19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpCjE0NDc0OiBjaGFyICprYXNwcmludGYoZ2ZwX3Qg Z2ZwLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygo X19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpCjE0 NDc0OiBjaGFyICprdmFzcHJpbnRmKGdmcF90IGdmcCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0 IGFyZ3MpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAy LCAwKSkpCjE0NDc0OiBjb25zdCBjaGFyICprdmFzcHJpbnRmX2NvbnN0KGdmcF90IGdmcCwgY29u c3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhzY2FuZiwgMiwgMykpKQoxNDQ3NDogaW50IHNzY2FuZihjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fKHNjYW5mLCAyLCAwKSkpCjE0NDc0OiBpbnQgdnNzY2FuZihjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2V0 X29wdGlvbihjaGFyICoqc3RyLCBpbnQgKnBpbnQpOwoxNDQ3NDogZXh0ZXJuIGNoYXIgKmdldF9v cHRpb25zKGNvbnN0IGNoYXIgKnN0ciwgaW50IG5pbnRzLCBpbnQgKmludHMpOwoxNDQ3NDogZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1wYXJzZShjb25zdCBjaGFyICpwdHIsIGNoYXIgKipy ZXRwdHIpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgcGFyc2Vfb3B0aW9uX3N0cihjb25zdCBjaGFyICpz dHIsIGNvbnN0IGNoYXIgKm9wdGlvbik7CjE0NDc0OiBleHRlcm4gY2hhciAqbmV4dF9hcmcoY2hh ciAqYXJncywgY2hhciAqKnBhcmFtLCBjaGFyICoqdmFsKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGludCBjb3JlX2tlcm5lbF90ZXh0KHVuc2lnbmVkIGxvbmcgYWRkcik7CjE0NDc0OiBleHRlcm4g aW50IGluaXRfa2VybmVsX3RleHQodW5zaWduZWQgbG9uZyBhZGRyKTsKMTQ0NzQ6IGV4dGVybiBp bnQgY29yZV9rZXJuZWxfZGF0YSh1bnNpZ25lZCBsb25nIGFkZHIpOwoxNDQ3NDogZXh0ZXJuIGlu dCBfX2tlcm5lbF90ZXh0X2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRyKTsKMTQ0NzQ6IGV4dGVy biBpbnQga2VybmVsX3RleHRfYWRkcmVzcyh1bnNpZ25lZCBsb25nIGFkZHIpOwoxNDQ3NDogZXh0 ZXJuIGludCBmdW5jX3B0cl9pc19rZXJuZWxfdGV4dCh2b2lkICpwdHIpOwoxNDQ3NDogCjE0NDc0 OiB1NjQgaW50X3Bvdyh1NjQgYmFzZSwgdW5zaWduZWQgaW50IGV4cCk7CjE0NDc0OiB1bnNpZ25l ZCBsb25nIGludF9zcXJ0KHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1MzIgaW50X3NxcnQ2NCh1NjQgeCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHUzMilpbnRfc3FydCh4KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBidXN0X3NwaW5sb2NrcyhpbnQgeWVzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgb29wc19p bl9wcm9ncmVzczsKMTQ0NzQ6IGV4dGVybiBpbnQgcGFuaWNfdGltZW91dDsKMTQ0NzQ6IGV4dGVy biB1bnNpZ25lZCBsb25nIHBhbmljX3ByaW50OwoxNDQ3NDogZXh0ZXJuIGludCBwYW5pY19vbl9v b3BzOwoxNDQ3NDogZXh0ZXJuIGludCBwYW5pY19vbl91bnJlY292ZXJlZF9ubWk7CjE0NDc0OiBl eHRlcm4gaW50IHBhbmljX29uX2lvX25taTsKMTQ0NzQ6IGV4dGVybiBpbnQgcGFuaWNfb25fd2Fy bjsKMTQ0NzQ6IGV4dGVybiBpbnQgc3lzY3RsX3BhbmljX29uX3JjdV9zdGFsbDsKMTQ0NzQ6IGV4 dGVybiBpbnQgc3lzY3RsX3BhbmljX29uX3N0YWNrb3ZlcmZsb3c7CjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBib29sIGNyYXNoX2tleGVjX3Bvc3Rfbm90aWZpZXJzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGF0b21pY190IHBhbmlj X2NwdTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgc2V0X2FyY2hfcGFuaWNfdGltZW91dChpbnQgdGltZW91dCwgaW50IGFyY2hfZGVm YXVsdF90aW1lb3V0KQoxNDQ3NDogewoxNDQ3NDogIGlmIChwYW5pY190aW1lb3V0ID09IGFyY2hf ZGVmYXVsdF90aW1lb3V0KQoxNDQ3NDogICBwYW5pY190aW1lb3V0ID0gdGltZW91dDsKMTQ0NzQ6 IH0KMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyICpwcmludF90YWludGVkKHZvaWQpOwoxNDQ3NDog ZW51bSBsb2NrZGVwX29rIHsKMTQ0NzQ6ICBMT0NLREVQX1NUSUxMX09LLAoxNDQ3NDogIExPQ0tE RVBfTk9XX1VOUkVMSUFCTEUKMTQ0NzQ6IH07CjE0NDc0OiBleHRlcm4gdm9pZCBhZGRfdGFpbnQo dW5zaWduZWQgZmxhZywgZW51bSBsb2NrZGVwX29rKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdGVzdF90 YWludCh1bnNpZ25lZCBmbGFnKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGdldF90YWlu dCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcm9vdF9tb3VudGZsYWdzOwoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gYm9vbCBlYXJseV9ib290X2lycXNfZGlzYWJsZWQ7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGVudW0gc3lzdGVtX3N0YXRlcyB7 CjE0NDc0OiAgU1lTVEVNX0JPT1RJTkcsCjE0NDc0OiAgU1lTVEVNX1NDSEVEVUxJTkcsCjE0NDc0 OiAgU1lTVEVNX1JVTk5JTkcsCjE0NDc0OiAgU1lTVEVNX0hBTFQsCjE0NDc0OiAgU1lTVEVNX1BP V0VSX09GRiwKMTQ0NzQ6ICBTWVNURU1fUkVTVEFSVCwKMTQ0NzQ6ICBTWVNURU1fU1VTUEVORCwK MTQ0NzQ6IH0gc3lzdGVtX3N0YXRlOwoxNDQ3NDogIyA1OTMgIi4vaW5jbHVkZS9saW51eC9rZXJu ZWwuaCIKMTQ0NzQ6IHN0cnVjdCB0YWludF9mbGFnIHsKMTQ0NzQ6ICBjaGFyIGNfdHJ1ZTsKMTQ0 NzQ6ICBjaGFyIGNfZmFsc2U7CjE0NDc0OiAgYm9vbCBtb2R1bGU7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gY29uc3Qgc3RydWN0IHRhaW50X2ZsYWcgdGFpbnRfZmxhZ3NbMThdOwox NDQ3NDogCjE0NDc0OiBleHRlcm4gY29uc3QgY2hhciBoZXhfYXNjW107CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBjaGFyICpoZXhfYnl0ZV9wYWNrKGNoYXIgKmJ1ZiwgdTggYnl0ZSkK MTQ0NzQ6IHsKMTQ0NzQ6ICAqYnVmKysgPSBoZXhfYXNjWygoYnl0ZSkgJiAweGYwKSA+PiA0XTsK MTQ0NzQ6ICAqYnVmKysgPSBoZXhfYXNjWygoYnl0ZSkgJiAweDBmKV07CjE0NDc0OiAgcmV0dXJu IGJ1ZjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IGNoYXIgaGV4X2FzY191 cHBlcltdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2hhciAqaGV4X2J5dGVfcGFj a191cHBlcihjaGFyICpidWYsIHU4IGJ5dGUpCjE0NDc0OiB7CjE0NDc0OiAgKmJ1ZisrID0gaGV4 X2FzY191cHBlclsoKGJ5dGUpICYgMHhmMCkgPj4gNF07CjE0NDc0OiAgKmJ1ZisrID0gaGV4X2Fz Y191cHBlclsoKGJ5dGUpICYgMHgwZildOwoxNDQ3NDogIHJldHVybiBidWY7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgaGV4X3RvX2JpbihjaGFyIGNoKTsKMTQ0NzQ6IGV4dGVy biBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGhleDJiaW4odTgg KmRzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3QgY291bnQpOwoxNDQ3NDogZXh0ZXJuIGNoYXIg KmJpbjJoZXgoY2hhciAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCk7CjE0NDc0 OiAKMTQ0NzQ6IGJvb2wgbWFjX3B0b24oY29uc3QgY2hhciAqcywgdTggKm1hYyk7CjE0NDc0OiAj IDY0OSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgoxNDQ3NDogZW51bSBmdHJhY2VfZHVtcF9t b2RlIHsKMTQ0NzQ6ICBEVU1QX05PTkUsCjE0NDc0OiAgRFVNUF9BTEwsCjE0NDc0OiAgRFVNUF9P UklHLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIHRyYWNpbmdfb24odm9p ZCk7CjE0NDc0OiB2b2lkIHRyYWNpbmdfb2ZmKHZvaWQpOwoxNDQ3NDogaW50IHRyYWNpbmdfaXNf b24odm9pZCk7CjE0NDc0OiB2b2lkIHRyYWNpbmdfc25hcHNob3Qodm9pZCk7CjE0NDc0OiB2b2lk IHRyYWNpbmdfc25hcHNob3RfYWxsb2Modm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lk IHRyYWNpbmdfc3RhcnQodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB0cmFjaW5nX3N0b3Aodm9p ZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAy KSkpCjE0NDc0OiB2b2lkIF9fX190cmFjZV9wcmludGtfY2hlY2tfZm9ybWF0KGNvbnN0IGNoYXIg KmZtdCwgLi4uKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogIyA3MjggIi4vaW5jbHVkZS9saW51 eC9rZXJuZWwuaCIKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50 ZiwgMiwgMykpKQoxNDQ3NDogaW50IF9fdHJhY2VfYnByaW50ayh1bnNpZ25lZCBsb25nIGlwLCBj b25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQoxNDQ3NDogaW50IF9fdHJhY2VfcHJpbnRrKHVu c2lnbmVkIGxvbmcgaXAsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKMTQ0NzQ6ICMgNzY5ICIuL2lu Y2x1ZGUvbGludXgva2VybmVsLmgiCjE0NDc0OiBleHRlcm4gaW50IF9fdHJhY2VfYnB1dHModW5z aWduZWQgbG9uZyBpcCwgY29uc3QgY2hhciAqc3RyKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX190cmFj ZV9wdXRzKHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IGNoYXIgKnN0ciwgaW50IHNpemUpOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gdm9pZCB0cmFjZV9kdW1wX3N0YWNrKGludCBza2lwKTsKMTQ0NzQ6 ICMgNzkxICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1 dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkgaW50CjE0NDc0OiBfX2Z0cmFjZV92YnBy aW50ayh1bnNpZ25lZCBsb25nIGlwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDAp KSkgaW50CjE0NDc0OiBfX2Z0cmFjZV92cHJpbnRrKHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IGNo YXIgKmZtdCwgdmFfbGlzdCBhcCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGZ0cmFjZV9k dW1wKGVudW0gZnRyYWNlX2R1bXBfbW9kZSBvb3BzX2R1bXBfbW9kZSk7CjE0NDc0OiAjIDEwICIu L2luY2x1ZGUvbGludXgvbGlzdC5oIiAyCjE0NDc0OiAjIDMzICIuL2luY2x1ZGUvbGludXgvbGlz dC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBJTklUX0xJU1RfSEVBRChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQox NDQ3NDogewoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKGxpc3QtPm5leHQpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGxpc3QtPm5leHQpKSAobGlzdCkg fTsgX193cml0ZV9vbmNlX3NpemUoJihsaXN0LT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKGxpc3Qt Pm5leHQpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBsaXN0LT5wcmV2ID0gbGlzdDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBfX2xpc3RfYWRkX3ZhbGlkKHN0 cnVjdCBsaXN0X2hlYWQgKm5ldywKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnBy ZXYsCjE0NDc0OiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0KTsKMTQ0NzQ6IGV4dGVy biBib29sIF9fbGlzdF9kZWxfZW50cnlfdmFsaWQoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpOwox NDQ3NDogIyA2MyAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19saXN0X2Fk ZChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsCjE0NDc0OiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpwcmV2LAoxNDQ3NDogICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAoIV9fbGlzdF9hZGRfdmFsaWQobmV3LCBwcmV2LCBuZXh0KSkKMTQ0NzQ6ICAg cmV0dXJuOwoxNDQ3NDogCjE0NDc0OiAgbmV4dC0+cHJldiA9IG5ldzsKMTQ0NzQ6ICBuZXctPm5l eHQgPSBuZXh0OwoxNDQ3NDogIG5ldy0+cHJldiA9IHByZXY7CjE0NDc0OiAgKHsgdW5pb24geyB0 eXBlb2YocHJldi0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0g KCB0eXBlb2YocHJldi0+bmV4dCkpIChuZXcpIH07IF9fd3JpdGVfb25jZV9zaXplKCYocHJldi0+ bmV4dCksIF9fdS5fX2MsIHNpemVvZihwcmV2LT5uZXh0KSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0 OiB9CjE0NDc0OiAjIDg0ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0 X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCjE0NDc0 OiB7CjE0NDc0OiAgX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOwoxNDQ3NDogfQox NDQ3NDogIyA5OCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9hZGRf dGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCjE0NDc0 OiB7CjE0NDc0OiAgX19saXN0X2FkZChuZXcsIGhlYWQtPnByZXYsIGhlYWQpOwoxNDQ3NDogfQox NDQ3NDogIyAxMTAgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9k ZWwoc3RydWN0IGxpc3RfaGVhZCAqIHByZXYsIHN0cnVjdCBsaXN0X2hlYWQgKiBuZXh0KQoxNDQ3 NDogewoxNDQ3NDogIG5leHQtPnByZXYgPSBwcmV2OwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9m KHByZXYtPm5leHQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlw ZW9mKHByZXYtPm5leHQpKSAobmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihwcmV2LT5uZXh0 KSwgX191Ll9fYywgc2l6ZW9mKHByZXYtPm5leHQpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMTI0ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3Rf ZGVsX2NsZWFycHJldihzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBf X2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7CjE0NDc0OiAgZW50cnktPnByZXYg PSAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3RfZGVsX2Vu dHJ5KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIGlmICghX19saXN0 X2RlbF9lbnRyeV92YWxpZChlbnRyeSkpCjE0NDc0OiAgIHJldHVybjsKMTQ0NzQ6IAoxNDQ3NDog IF9fbGlzdF9kZWwoZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBsaXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2xp c3RfZGVsX2VudHJ5KGVudHJ5KTsKMTQ0NzQ6ICBlbnRyeS0+bmV4dCA9ICgodm9pZCAqKSAweDEw MCArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwoxNDQ3NDogIGVudHJ5LT5wcmV2ID0gKCh2b2lk ICopIDB4MTIyICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE1 OCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9yZXBsYWNlKHN0cnVj dCBsaXN0X2hlYWQgKm9sZCwKMTQ0NzQ6ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXcpCjE0NDc0 OiB7CjE0NDc0OiAgbmV3LT5uZXh0ID0gb2xkLT5uZXh0OwoxNDQ3NDogIG5ldy0+bmV4dC0+cHJl diA9IG5ldzsKMTQ0NzQ6ICBuZXctPnByZXYgPSBvbGQtPnByZXY7CjE0NDc0OiAgbmV3LT5wcmV2 LT5uZXh0ID0gbmV3OwoxNDQ3NDogfQoxNDQ3NDogIyAxNzQgIi4vaW5jbHVkZS9saW51eC9saXN0 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGxpc3RfcmVwbGFjZV9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKm9sZCwK MTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5ldykKMTQ0NzQ6IHsKMTQ0NzQ6ICBs aXN0X3JlcGxhY2Uob2xkLCBuZXcpOwoxNDQ3NDogIElOSVRfTElTVF9IRUFEKG9sZCk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGxpc3Rfc3dhcChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTEsCjE0NDc0OiAgICAgICAg IHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5MikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9o ZWFkICpwb3MgPSBlbnRyeTItPnByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBsaXN0X2RlbChlbnRyeTIp OwoxNDQ3NDogIGxpc3RfcmVwbGFjZShlbnRyeTEsIGVudHJ5Mik7CjE0NDc0OiAgaWYgKHBvcyA9 PSBlbnRyeTEpCjE0NDc0OiAgIHBvcyA9IGVudHJ5MjsKMTQ0NzQ6ICBsaXN0X2FkZChlbnRyeTEs IHBvcyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBsaXN0X2RlbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQoxNDQ3NDog ewoxNDQ3NDogIF9fbGlzdF9kZWxfZW50cnkoZW50cnkpOwoxNDQ3NDogIElOSVRfTElTVF9IRUFE KGVudHJ5KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9tb3ZlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsIHN0 cnVjdCBsaXN0X2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgX19saXN0X2RlbF9lbnRyeShs aXN0KTsKMTQ0NzQ6ICBsaXN0X2FkZChsaXN0LCBoZWFkKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9tb3Zl X3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBsaXN0X2hl YWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgX19saXN0X2RlbF9lbnRyeShsaXN0KTsKMTQ0NzQ6 ICBsaXN0X2FkZF90YWlsKGxpc3QsIGhlYWQpOwoxNDQ3NDogfQoxNDQ3NDogIyAyNDAgIi4vaW5j bHVkZS9saW51eC9saXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3RfYnVsa19tb3ZlX3RhaWwoc3RydWN0 IGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZmly c3QsCjE0NDc0OiAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxhc3QpCjE0NDc0OiB7CjE0 NDc0OiAgZmlyc3QtPnByZXYtPm5leHQgPSBsYXN0LT5uZXh0OwoxNDQ3NDogIGxhc3QtPm5leHQt PnByZXYgPSBmaXJzdC0+cHJldjsKMTQ0NzQ6IAoxNDQ3NDogIGhlYWQtPnByZXYtPm5leHQgPSBm aXJzdDsKMTQ0NzQ6ICBmaXJzdC0+cHJldiA9IGhlYWQtPnByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBs YXN0LT5uZXh0ID0gaGVhZDsKMTQ0NzQ6ICBoZWFkLT5wcmV2ID0gbGFzdDsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBs aXN0X2lzX2ZpcnN0KGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0OiAgICAgIGNv bnN0IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGxpc3Qt PnByZXYgPT0gaGVhZDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBsaXN0X2lzX2xhc3QoY29uc3Qgc3RydWN0IGxpc3Rf aGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICBjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBsaXN0LT5uZXh0ID09IGhlYWQ7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxpc3RfZW1wdHkoY29u c3Qgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5p b24geyB0eXBlb2YoaGVhZC0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEp IF9fcmVhZF9vbmNlX3NpemUoJihoZWFkLT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKGhlYWQtPm5l eHQpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihoZWFkLT5uZXh0KSwgX191Ll9f Yywgc2l6ZW9mKGhlYWQtPm5leHQpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KSA9 PSBoZWFkOwoxNDQ3NDogfQoxNDQ3NDogIyAyOTggIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgbGlzdF9lbXB0eV9jYXJlZnVsKGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQp CjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCA9IGhlYWQtPm5leHQ7CjE0 NDc0OiAgcmV0dXJuIChuZXh0ID09IGhlYWQpICYmIChuZXh0ID09IGhlYWQtPnByZXYpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg bGlzdF9yb3RhdGVfbGVmdChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDog IHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0OwoxNDQ3NDogCjE0NDc0OiAgaWYgKCFsaXN0X2VtcHR5 KGhlYWQpKSB7CjE0NDc0OiAgIGZpcnN0ID0gaGVhZC0+bmV4dDsKMTQ0NzQ6ICAgbGlzdF9tb3Zl X3RhaWwoZmlyc3QsIGhlYWQpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzI1ICIuL2lu Y2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3JvdGF0ZV90b19mcm9udChzdHJ1 Y3QgbGlzdF9oZWFkICpsaXN0LAoxNDQ3NDogICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQox NDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBs aXN0X21vdmVfdGFpbChoZWFkLCBsaXN0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbGlzdF9pc19zaW5ndWxhcihjb25zdCBzdHJ1 Y3QgbGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhbGlzdF9lbXB0eSho ZWFkKSAmJiAoaGVhZC0+bmV4dCA9PSBoZWFkLT5wcmV2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBfX2xpc3RfY3V0X3Bvc2l0aW9uKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0 OiAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQoxNDQ3 NDogewoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgKm5ld19maXJzdCA9IGVudHJ5LT5uZXh0Owox NDQ3NDogIGxpc3QtPm5leHQgPSBoZWFkLT5uZXh0OwoxNDQ3NDogIGxpc3QtPm5leHQtPnByZXYg PSBsaXN0OwoxNDQ3NDogIGxpc3QtPnByZXYgPSBlbnRyeTsKMTQ0NzQ6ICBlbnRyeS0+bmV4dCA9 IGxpc3Q7CjE0NDc0OiAgaGVhZC0+bmV4dCA9IG5ld19maXJzdDsKMTQ0NzQ6ICBuZXdfZmlyc3Qt PnByZXYgPSBoZWFkOwoxNDQ3NDogfQoxNDQ3NDogIyAzNzEgIi4vaW5jbHVkZS9saW51eC9saXN0 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGxpc3RfY3V0X3Bvc2l0aW9uKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Qs CjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5 KQoxNDQ3NDogewoxNDQ3NDogIGlmIChsaXN0X2VtcHR5KGhlYWQpKQoxNDQ3NDogICByZXR1cm47 CjE0NDc0OiAgaWYgKGxpc3RfaXNfc2luZ3VsYXIoaGVhZCkgJiYKMTQ0NzQ6ICAgKGhlYWQtPm5l eHQgIT0gZW50cnkgJiYgaGVhZCAhPSBlbnRyeSkpCjE0NDc0OiAgIHJldHVybjsKMTQ0NzQ6ICBp ZiAoZW50cnkgPT0gaGVhZCkKMTQ0NzQ6ICAgSU5JVF9MSVNUX0hFQUQobGlzdCk7CjE0NDc0OiAg ZWxzZQoxNDQ3NDogICBfX2xpc3RfY3V0X3Bvc2l0aW9uKGxpc3QsIGhlYWQsIGVudHJ5KTsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgMzk5ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBs aXN0X2N1dF9iZWZvcmUoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgICBzdHJ1 Y3QgbGlzdF9oZWFkICpoZWFkLAoxNDQ3NDogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5 KQoxNDQ3NDogewoxNDQ3NDogIGlmIChoZWFkLT5uZXh0ID09IGVudHJ5KSB7CjE0NDc0OiAgIElO SVRfTElTVF9IRUFEKGxpc3QpOwoxNDQ3NDogICByZXR1cm47CjE0NDc0OiAgfQoxNDQ3NDogIGxp c3QtPm5leHQgPSBoZWFkLT5uZXh0OwoxNDQ3NDogIGxpc3QtPm5leHQtPnByZXYgPSBsaXN0Owox NDQ3NDogIGxpc3QtPnByZXYgPSBlbnRyeS0+cHJldjsKMTQ0NzQ6ICBsaXN0LT5wcmV2LT5uZXh0 ID0gbGlzdDsKMTQ0NzQ6ICBoZWFkLT5uZXh0ID0gZW50cnk7CjE0NDc0OiAgZW50cnktPnByZXYg PSBoZWFkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9zcGxpY2UoY29uc3Qg c3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcHJl diwKMTQ0NzQ6ICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBz dHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7CjE0NDc0OiAgc3RydWN0IGxpc3Rf aGVhZCAqbGFzdCA9IGxpc3QtPnByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBmaXJzdC0+cHJldiA9IHBy ZXY7CjE0NDc0OiAgcHJldi0+bmV4dCA9IGZpcnN0OwoxNDQ3NDogCjE0NDc0OiAgbGFzdC0+bmV4 dCA9IG5leHQ7CjE0NDc0OiAgbmV4dC0+cHJldiA9IGxhc3Q7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3Rfc3Bs aWNlKGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0OiAgICAgc3RydWN0IGxpc3Rf aGVhZCAqaGVhZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWxpc3RfZW1wdHkobGlzdCkpCjE0NDc0 OiAgIF9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCwgaGVhZC0+bmV4dCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxp c3Rfc3BsaWNlX3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDogIGlmICghbGlzdF9lbXB0eShsaXN0KSkK MTQ0NzQ6ICAgX19saXN0X3NwbGljZShsaXN0LCBoZWFkLT5wcmV2LCBoZWFkKTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgNDYwICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3Nw bGljZV9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0OiAgICAgICAgIHN0cnVjdCBs aXN0X2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7 CjE0NDc0OiAgIF9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCwgaGVhZC0+bmV4dCk7CjE0NDc0OiAg IElOSVRfTElTVF9IRUFEKGxpc3QpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDc3ICIu L2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3NwbGljZV90YWlsX2luaXQo c3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhl YWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7CjE0NDc0OiAgIF9f bGlzdF9zcGxpY2UobGlzdCwgaGVhZC0+cHJldiwgaGVhZCk7CjE0NDc0OiAgIElOSVRfTElTVF9I RUFEKGxpc3QpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzY1ICIuL2luY2x1ZGUvbGlu dXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBJTklUX0hMSVNUX05PREUoc3RydWN0IGhsaXN0X25vZGUg KmgpCjE0NDc0OiB7CjE0NDc0OiAgaC0+bmV4dCA9ICgodm9pZCAqKTApOwoxNDQ3NDogIGgtPnBw cmV2ID0gKCh2b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDc3OSAiLi9pbmNsdWRlL2xpbnV4 L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBobGlzdF91bmhhc2hlZChjb25zdCBzdHJ1Y3QgaGxpc3Rfbm9k ZSAqaCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIWgtPnBwcmV2OwoxNDQ3NDogfQoxNDQ3NDog IyA3OTIgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaGxpc3RfdW5oYXNoZWRf bG9ja2xlc3MoY29uc3Qgc3RydWN0IGhsaXN0X25vZGUgKmgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuICEoeyB1bmlvbiB7IHR5cGVvZihoLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihoLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZiho LT5wcHJldikpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKGgtPnBwcmV2KSwgX191 Ll9fYywgc2l6ZW9mKGgtPnBwcmV2KSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGhsaXN0X2VtcHR5KGNvbnN0IHN0cnVjdCBobGlzdF9oZWFkICpoKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAhKHsgdW5pb24geyB0eXBlb2YoaC0+Zmlyc3QpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoaC0+Zmlyc3QpLCBfX3UuX19jLCBz aXplb2YoaC0+Zmlyc3QpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihoLT5maXJz dCksIF9fdS5fX2MsIHNpemVvZihoLT5maXJzdCkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192 YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9faGxpc3RfZGVsKHN0cnVjdCBo bGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlICpuZXh0ID0g bi0+bmV4dDsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqKnBwcmV2ID0gbi0+cHByZXY7CjE0 NDc0OiAKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZigqcHByZXYpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCpwcHJldikpIChuZXh0KSB9OyBfX3dyaXRl X29uY2Vfc2l6ZSgmKCpwcHJldiksIF9fdS5fX2MsIHNpemVvZigqcHByZXYpKTsgX191Ll9fdmFs OyB9KTsKMTQ0NzQ6ICBpZiAobmV4dCkKMTQ0NzQ6ICAgKHsgdW5pb24geyB0eXBlb2YobmV4dC0+ cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG5l eHQtPnBwcmV2KSkgKHBwcmV2KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG5leHQtPnBwcmV2KSwg X191Ll9fYywgc2l6ZW9mKG5leHQtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0 NDc0OiAjIDgyMyAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfZGVs KHN0cnVjdCBobGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIF9faGxpc3RfZGVsKG4pOwox NDQ3NDogIG4tPm5leHQgPSAoKHZvaWQgKikgMHgxMDAgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwp KTsKMTQ0NzQ6ICBuLT5wcHJldiA9ICgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAw MDBVTCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2RlbF9pbml0KHN0cnVjdCBobGlzdF9u b2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIGlmICghaGxpc3RfdW5oYXNoZWQobikpIHsKMTQ0NzQ6 ICAgX19obGlzdF9kZWwobik7CjE0NDc0OiAgIElOSVRfSExJU1RfTk9ERShuKTsKMTQ0NzQ6ICB9 CjE0NDc0OiB9CjE0NDc0OiAjIDg1MiAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaGxpc3RfYWRkX2hlYWQoc3RydWN0IGhsaXN0X25vZGUgKm4sIHN0cnVjdCBobGlzdF9oZWFk ICpoKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlICpmaXJzdCA9IGgtPmZpcnN0 OwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPm5leHQpIF9fdmFsOyBjaGFyIF9fY1sxXTsg fSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPm5leHQpKSAoZmlyc3QpIH07IF9fd3JpdGVf b25jZV9zaXplKCYobi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihuLT5uZXh0KSk7IF9fdS5fX3Zh bDsgfSk7CjE0NDc0OiAgaWYgKGZpcnN0KQoxNDQ3NDogICAoeyB1bmlvbiB7IHR5cGVvZihmaXJz dC0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9m KGZpcnN0LT5wcHJldikpICgmbi0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihmaXJzdC0+ cHByZXYpLCBfX3UuX19jLCBzaXplb2YoZmlyc3QtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CjE0 NDc0OiAgKHsgdW5pb24geyB0eXBlb2YoaC0+Zmlyc3QpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBf X3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGgtPmZpcnN0KSkgKG4pIH07IF9fd3JpdGVfb25jZV9z aXplKCYoaC0+Zmlyc3QpLCBfX3UuX19jLCBzaXplb2YoaC0+Zmlyc3QpKTsgX191Ll9fdmFsOyB9 KTsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFd OyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYpKSAoJmgtPmZpcnN0KSB9OyBf X3dyaXRlX29uY2Vfc2l6ZSgmKG4tPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG4tPnBwcmV2KSk7 IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2FkZF9iZWZvcmUoc3RydWN0IGhsaXN0 X25vZGUgKm4sCjE0NDc0OiAgICAgICAgIHN0cnVjdCBobGlzdF9ub2RlICpuZXh0KQoxNDQ3NDog ewoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5wcHJldikpIChuZXh0LT5wcHJldikgfTsg X193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJldikp OyBfX3UuX192YWw7IH0pOwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPm5leHQpIF9fdmFs OyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPm5leHQpKSAobmV4 dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKG4tPm5l eHQpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZihuZXh0LT5wcHJl dikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YobmV4dC0+ cHByZXYpKSAoJm4tPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobmV4dC0+cHByZXYpLCBf X3UuX19jLCBzaXplb2YobmV4dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICAoeyB1 bmlvbiB7IHR5cGVvZigqKG4tPnBwcmV2KSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsg Ll9fdmFsID0gKCB0eXBlb2YoKihuLT5wcHJldikpKSAobikgfTsgX193cml0ZV9vbmNlX3NpemUo JigqKG4tPnBwcmV2KSksIF9fdS5fX2MsIHNpemVvZigqKG4tPnBwcmV2KSkpOyBfX3UuX192YWw7 IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9hZGRfYmVoaW5kKHN0cnVjdCBobGlzdF9ub2RlICpuLAox NDQ3NDogICAgICAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqcHJldikKMTQ0NzQ6IHsKMTQ0NzQ6ICAo eyB1bmlvbiB7IHR5cGVvZihuLT5uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAu X192YWwgPSAoIHR5cGVvZihuLT5uZXh0KSkgKHByZXYtPm5leHQpIH07IF9fd3JpdGVfb25jZV9z aXplKCYobi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihuLT5uZXh0KSk7IF9fdS5fX3ZhbDsgfSk7 CjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2YocHJldi0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFd OyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YocHJldi0+bmV4dCkpIChuKSB9OyBfX3dyaXRl X29uY2Vfc2l6ZSgmKHByZXYtPm5leHQpLCBfX3UuX19jLCBzaXplb2YocHJldi0+bmV4dCkpOyBf X3UuX192YWw7IH0pOwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsg Y2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5wcHJldikpICgmcHJl di0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVv ZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogCjE0NDc0OiAgaWYgKG4tPm5leHQp CjE0NDc0OiAgICh7IHVuaW9uIHsgdHlwZW9mKG4tPm5leHQtPnBwcmV2KSBfX3ZhbDsgY2hhciBf X2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5uZXh0LT5wcHJldikpICgmbi0+ bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5uZXh0LT5wcHJldiksIF9fdS5fX2MsIHNp emVvZihuLT5uZXh0LT5wcHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA5 MDAgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2FkZF9mYWtlKHN0 cnVjdCBobGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIG4tPnBwcmV2ID0gJm4tPm5leHQ7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBobGlzdF9mYWtlKHN0cnVjdCBobGlzdF9ub2RlICpoKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBoLT5wcHJldiA9PSAmaC0+bmV4dDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgOTIyICIuL2luY2x1 ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogaGxpc3RfaXNfc2luZ3VsYXJfbm9k ZShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwgc3RydWN0IGhsaXN0X2hlYWQgKmgpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICFuLT5uZXh0ICYmIG4tPnBwcmV2ID09ICZoLT5maXJzdDsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgOTM2ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9t b3ZlX2xpc3Qoc3RydWN0IGhsaXN0X2hlYWQgKm9sZCwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgaGxp c3RfaGVhZCAqbmV3KQoxNDQ3NDogewoxNDQ3NDogIG5ldy0+Zmlyc3QgPSBvbGQtPmZpcnN0Owox NDQ3NDogIGlmIChuZXctPmZpcnN0KQoxNDQ3NDogICBuZXctPmZpcnN0LT5wcHJldiA9ICZuZXct PmZpcnN0OwoxNDQ3NDogIG9sZC0+Zmlyc3QgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMTIgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiIDIKMTQ0NzQ6ICMgNzggIi4vaW5jbHVk ZS9saW51eC9wcmVlbXB0LmgiCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJl ZW1wdC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BlcmNwdS5oIiAxCjE0NDc0OiAjIDg4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3BlcmNwdS5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iYWRfcGVy Y3B1X3NpemUodm9pZCk7CjE0NDc0OiAjIDUyNCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZXJj cHUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCB4ODZf dGhpc19jcHVfY29uc3RhbnRfdGVzdF9iaXQodW5zaWduZWQgaW50IG5yLAoxNDQ3NDogICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nICphID0KMTQ0NzQ6ICAgKHVuc2lnbmVkIGxvbmcgKilhZGRyICsg bnIgLyA2NDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICgoMVVMIDw8IChuciAlIDY0 KSkgJiAoeyB0eXBlb2YoKmEpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoKmEpKSB7IGNhc2Ug MTogYXNtICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3Jl dF9fKSA6ICJtIiAoKmEpKTsgYnJlYWs7IGNhc2UgMjogYXNtICgibW92IiAidyAiIiUlIiJncyIi OiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoKmEpKTsgYnJlYWs7IGNh c2UgNDogYXNtICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZv X3JldF9fKSA6ICJtIiAoKmEpKTsgYnJlYWs7IGNhc2UgODogYXNtICgibW92IiAicSAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoKmEpKTsgYnJlYWs7 IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KSkgIT0gMDsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4ODZfdGhp c19jcHVfdmFyaWFibGVfdGVzdF9iaXQoaW50IG5yLAoxNDQ3NDogICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBib29sIG9s ZGJpdDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiYnRsICIiJSUiImdzIiI6IiAiJSIg IjIiIiwlMSIKMTQ0NzQ6ICAgICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgImMiICIq L1xuIgoxNDQ3NDogICAgOiAiPUBjYyIgImMiIChvbGRiaXQpCjE0NDc0OiAgICA6ICJtIiAoKih1 bnNpZ25lZCBsb25nICopYWRkciksICJJciIgKG5yKSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4g b2xkYml0OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9wZXJjcHUu aCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3RocmVhZHMuaCIgMQoxNDQ3NDogIyA3ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvcGVyY3B1LmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1kZWZz LmgiIDEKMTQ0NzQ6ICMgMzA4ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LWRlZnMuaCIKMTQ0NzQ6 IGV4dGVybiB2b2lkIF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIodm9pZCk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX190aGlzX2NwdV9wcmVlbXB0X2NoZWNr KGNvbnN0IGNoYXIgKm9wKSB7IH0KMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3Bl cmNwdS5oIiAyCjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGVyY3B1LmgiCjE0 NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBfX3Blcl9jcHVfb2Zmc2V0WzhdOwoxNDQ3NDogIyA0 OCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BlcmNwdS5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0 dXBfcGVyX2NwdV9hcmVhcyh2b2lkKTsKMTQ0NzQ6ICMgNTU3ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3BlcmNwdS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRl X18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVvZl9f KHVuc2lnbmVkIGxvbmcpIHRoaXNfY3B1X29mZjsKMTQ0NzQ6ICMgNyAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wcmVlbXB0LmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RocmVhZF9p bmZvLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIgoxNDQ3 NDogIyAxICIuL2luY2x1ZGUvbGludXgvYnVnLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2J1Zy5oIiAxCjE0NDc0 OiAjIDgzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2J1Zy5oIgoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvYXNtLWdlbmVyaWMvYnVnLmgiIDEKMTQ0NzQ6ICMgMjQgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9idWcuaCIKMTQ0NzQ6IHN0cnVjdCBidWdfZW50cnkgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHNpZ25lZCBpbnQgYnVnX2FkZHJfZGlzcDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc2lnbmVkIGludCBmaWxlX2Rpc3A7CjE0NDc0OiAK MTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBsaW5lOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgc2hv cnQgZmxhZ3M7CjE0NDc0OiB9OwoxNDQ3NDogIyA4OSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2J1 Zy5oIgoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAy KSkpIHZvaWQgX193YXJuX3ByaW50ayhjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAjIDEw NSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2J1Zy5oIgoxNDQ3NDogc3RydWN0IHdhcm5fYXJnczsK MTQ0NzQ6IHN0cnVjdCBwdF9yZWdzOwoxNDQ3NDogCjE0NDc0OiB2b2lkIF9fd2Fybihjb25zdCBj aGFyICpmaWxlLCBpbnQgbGluZSwgdm9pZCAqY2FsbGVyLCB1bnNpZ25lZCB0YWludCwKMTQ0NzQ6 ICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHN0cnVjdCB3YXJuX2FyZ3MgKmFyZ3MpOwoxNDQ3 NDogIyA4NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWcuaCIgMgoxNDQ3NDogIyA2ICIuL2lu Y2x1ZGUvbGludXgvYnVnLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0g YnVnX3RyYXBfdHlwZSB7CjE0NDc0OiAgQlVHX1RSQVBfVFlQRV9OT05FID0gMCwKMTQ0NzQ6ICBC VUdfVFJBUF9UWVBFX1dBUk4gPSAxLAoxNDQ3NDogIEJVR19UUkFQX1RZUEVfQlVHID0gMiwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwdF9yZWdzOwoxNDQ3NDogIyAzNCAiLi9pbmNs dWRlL2xpbnV4L2J1Zy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlzX3dhcm5pbmdfYnVnKGNvbnN0IHN0cnVjdCBi dWdfZW50cnkgKmJ1ZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYnVnLT5mbGFncyAmICgxIDw8 IDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnVnX2VudHJ5ICpmaW5kX2J1Zyh1 bnNpZ25lZCBsb25nIGJ1Z2FkZHIpOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJ1Z190cmFwX3R5cGUg cmVwb3J0X2J1Zyh1bnNpZ25lZCBsb25nIGJ1Z19hZGRyLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogaW50IGlzX3ZhbGlkX2J1Z2FkZHIodW5zaWduZWQgbG9u ZyBhZGRyKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBnZW5lcmljX2J1Z19jbGVhcl9vbmNlKHZvaWQp OwoxNDQ3NDogIyA3MCAiLi9pbmNsdWRlL2xpbnV4L2J1Zy5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGJvb2wgY2hlY2tfZGF0YV9jb3JydXB0aW9uKGJv b2wgdikgeyByZXR1cm4gdjsgfQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L3RocmVhZF9p bmZvLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Jlc3RhcnRfYmxvY2suaCIgMQox NDQ3NDogIyAxMCAiLi9pbmNsdWRlL2xpbnV4L3Jlc3RhcnRfYmxvY2suaCIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3RpbWU2NC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L21hdGg2NC5oIiAxCjE0NDc0OiAjIDI0ICIu L2luY2x1ZGUvbGludXgvbWF0aDY0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgZGl2X3U2NF9yZW0odTY0IGRpdmlk ZW5kLCB1MzIgZGl2aXNvciwgdTMyICpyZW1haW5kZXIpCjE0NDc0OiB7CjE0NDc0OiAgKnJlbWFp bmRlciA9IGRpdmlkZW5kICUgZGl2aXNvcjsKMTQ0NzQ6ICByZXR1cm4gZGl2aWRlbmQgLyBkaXZp c29yOwoxNDQ3NDogfQoxNDQ3NDogIyAzOCAiLi9pbmNsdWRlL2xpbnV4L21hdGg2NC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgczY0IGRpdl9zNjRfcmVtKHM2NCBkaXZpZGVuZCwgczMyIGRpdmlzb3IsIHMzMiAqcmVtYWlu ZGVyKQoxNDQ3NDogewoxNDQ3NDogICpyZW1haW5kZXIgPSBkaXZpZGVuZCAlIGRpdmlzb3I7CjE0 NDc0OiAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTIgIi4v aW5jbHVkZS9saW51eC9tYXRoNjQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBkaXY2NF91NjRfcmVtKHU2NCBkaXZp ZGVuZCwgdTY0IGRpdmlzb3IsIHU2NCAqcmVtYWluZGVyKQoxNDQ3NDogewoxNDQ3NDogICpyZW1h aW5kZXIgPSBkaXZpZGVuZCAlIGRpdmlzb3I7CjE0NDc0OiAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2 aXNvcjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjUgIi4vaW5jbHVkZS9saW51eC9tYXRoNjQuaCIKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHU2NCBkaXY2NF91NjQodTY0IGRpdmlkZW5kLCB1NjQgZGl2aXNvcikKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gZGl2aWRlbmQgLyBkaXZpc29yOwoxNDQ3NDogfQoxNDQ3NDogIyA3NyAiLi9p bmNsdWRlL2xpbnV4L21hdGg2NC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGRpdjY0X3M2NChzNjQgZGl2aWRlbmQs IHM2NCBkaXZpc29yKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkaXZpZGVuZCAvIGRpdmlzb3I7 CjE0NDc0OiB9CjE0NDc0OiAjIDEyMyAiLi9pbmNsdWRlL2xpbnV4L21hdGg2NC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dTY0IGRpdl91NjQodTY0IGRpdmlkZW5kLCB1MzIgZGl2aXNvcikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 MzIgcmVtYWluZGVyOwoxNDQ3NDogIHJldHVybiBkaXZfdTY0X3JlbShkaXZpZGVuZCwgZGl2aXNv ciwgJnJlbWFpbmRlcik7CjE0NDc0OiB9CjE0NDc0OiAjIDEzNiAiLi9pbmNsdWRlL2xpbnV4L21h dGg2NC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0IGRpdl9zNjQoczY0IGRpdmlkZW5kLCBzMzIgZGl2aXNvcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzMzIgcmVtYWluZGVyOwoxNDQ3NDogIHJldHVybiBkaXZfczY0X3JlbShk aXZpZGVuZCwgZGl2aXNvciwgJnJlbWFpbmRlcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdTMyIGl0ZXJfZGl2X3U2NF9yZW0odTY0IGRpdmlkZW5kLCB1MzIgZGl2aXNvciwgdTY0 ICpyZW1haW5kZXIpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHUzMgoxNDQ3NDogX19pdGVyX2Rpdl91NjRfcmVtKHU2NCBkaXZpZGVuZCwgdTMyIGRp dmlzb3IsIHU2NCAqcmVtYWluZGVyKQoxNDQ3NDogewoxNDQ3NDogIHUzMiByZXQgPSAwOwoxNDQ3 NDogCjE0NDc0OiAgd2hpbGUgKGRpdmlkZW5kID49IGRpdmlzb3IpIHsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgIGFzbSgiIiA6ICIrcm0iKGRpdmlkZW5kKSk7CjE0NDc0OiAKMTQ0NzQ6ICAgZGl2 aWRlbmQgLT0gZGl2aXNvcjsKMTQ0NzQ6ICAgcmV0Kys7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0 OiAgKnJlbWFpbmRlciA9IGRpdmlkZW5kOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQg bXVsX3UzMl91MzIodTMyIGEsIHUzMiBiKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodTY0KWEg KiBiOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHU2NCBtdWxfdTY0X3UzMl9zaHIodTY0IGEsIHUzMiBtdWwsIHVuc2lnbmVkIGludCBzaGlm dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHU2NCkoKCh1bnNpZ25lZCBfX2ludDEyOClhICog bXVsKSA+PiBzaGlmdCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1 NjQgbXVsX3U2NF91NjRfc2hyKHU2NCBhLCB1NjQgbXVsLCB1bnNpZ25lZCBpbnQgc2hpZnQpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1NjQpKCgodW5zaWduZWQgX19pbnQxMjgpYSAqIG11bCkg Pj4gc2hpZnQpOwoxNDQ3NDogfQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvbGludXgvdGltZTY0Lmgi IDIKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBfX3M2NCB0aW1lNjRfdDsKMTQ0NzQ6IHR5cGVkZWYg X191NjQgdGltZXU2NF90OwoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L3RpbWUuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvdGltZV90eXBlcy5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX19rZXJuZWxf dGltZXNwZWMgewoxNDQ3NDogIF9fa2VybmVsX3RpbWU2NF90IHR2X3NlYzsKMTQ0NzQ6ICBsb25n IGxvbmcgdHZfbnNlYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfX2tlcm5lbF9p dGltZXJzcGVjIHsKMTQ0NzQ6ICBzdHJ1Y3QgX19rZXJuZWxfdGltZXNwZWMgaXRfaW50ZXJ2YWw7 CjE0NDc0OiAgc3RydWN0IF9fa2VybmVsX3RpbWVzcGVjIGl0X3ZhbHVlOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgMjUgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWVfdHlwZXMuaCIKMTQ0NzQ6IHN0cnVj dCBfX2tlcm5lbF9vbGRfdGltZXZhbCB7CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IHR2X3NlYzsK MTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgdHZfdXNlYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IF9fa2VybmVsX29sZF90aW1lc3BlYyB7CjE0NDc0OiAgX19rZXJuZWxf b2xkX3RpbWVfdCB0dl9zZWM7CjE0NDc0OiAgbG9uZyB0dl9uc2VjOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IF9fa2VybmVsX29sZF9pdGltZXJ2YWwgewoxNDQ3NDogIHN0cnVjdCBf X2tlcm5lbF9vbGRfdGltZXZhbCBpdF9pbnRlcnZhbDsKMTQ0NzQ6ICBzdHJ1Y3QgX19rZXJuZWxf b2xkX3RpbWV2YWwgaXRfdmFsdWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX19r ZXJuZWxfc29ja190aW1ldmFsIHsKMTQ0NzQ6ICBfX3M2NCB0dl9zZWM7CjE0NDc0OiAgX19zNjQg dHZfdXNlYzsKMTQ0NzQ6IH07CjE0NDc0OiAjIDcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWUu aCIgMgoxNDQ3NDogIyAzMyAiLi9pbmNsdWRlL3VhcGkvbGludXgvdGltZS5oIgoxNDQ3NDogc3Ry dWN0IHRpbWV6b25lIHsKMTQ0NzQ6ICBpbnQgdHpfbWludXRlc3dlc3Q7CjE0NDc0OiAgaW50IHR6 X2RzdHRpbWU7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWU2NC5o IiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0aW1lc3BlYzY0IHsKMTQ0NzQ6ICB0aW1lNjRfdCB0 dl9zZWM7CjE0NDc0OiAgbG9uZyB0dl9uc2VjOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGl0aW1lcnNwZWM2NCB7CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgaXRfaW50ZXJ2YWw7 CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgaXRfdmFsdWU7CjE0NDc0OiB9OwoxNDQ3NDogIyA0 OSAiLi9pbmNsdWRlL2xpbnV4L3RpbWU2NC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHRpbWVzcGVjNjRfZXF1YWwo Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKmEsCjE0NDc0OiAgICAgICAgY29uc3Qgc3RydWN0IHRp bWVzcGVjNjQgKmIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChhLT50dl9zZWMgPT0gYi0+dHZf c2VjKSAmJiAoYS0+dHZfbnNlYyA9PSBiLT50dl9uc2VjKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0aW1lc3BlYzY0 X2NvbXBhcmUoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKmxocywgY29uc3Qgc3RydWN0IHRpbWVz cGVjNjQgKnJocykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAobGhzLT50dl9zZWMgPCByaHMtPnR2X3Nl YykKMTQ0NzQ6ICAgcmV0dXJuIC0xOwoxNDQ3NDogIGlmIChsaHMtPnR2X3NlYyA+IHJocy0+dHZf c2VjKQoxNDQ3NDogICByZXR1cm4gMTsKMTQ0NzQ6ICByZXR1cm4gbGhzLT50dl9uc2VjIC0gcmhz LT50dl9uc2VjOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzZXRfbm9ybWFs aXplZF90aW1lc3BlYzY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cywgdGltZTY0X3Qgc2VjLCBzNjQg bnNlYyk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB0aW1lc3BlYzY0IHRpbWVzcGVjNjRfYWRkKHN0 cnVjdCB0aW1lc3BlYzY0IGxocywKMTQ0NzQ6ICAgICAgIHN0cnVjdCB0aW1lc3BlYzY0IHJocykK MTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZXNwZWM2NCB0c19kZWx0YTsKMTQ0NzQ6ICBzZXRf bm9ybWFsaXplZF90aW1lc3BlYzY0KCZ0c19kZWx0YSwgbGhzLnR2X3NlYyArIHJocy50dl9zZWMs CjE0NDc0OiAgICAgbGhzLnR2X25zZWMgKyByaHMudHZfbnNlYyk7CjE0NDc0OiAgcmV0dXJuIHRz X2RlbHRhOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBz dHJ1Y3QgdGltZXNwZWM2NCB0aW1lc3BlYzY0X3N1YihzdHJ1Y3QgdGltZXNwZWM2NCBsaHMsCjE0 NDc0OiAgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCByaHMpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0 IHRpbWVzcGVjNjQgdHNfZGVsdGE7CjE0NDc0OiAgc2V0X25vcm1hbGl6ZWRfdGltZXNwZWM2NCgm dHNfZGVsdGEsIGxocy50dl9zZWMgLSByaHMudHZfc2VjLAoxNDQ3NDogICAgIGxocy50dl9uc2Vj IC0gcmhzLnR2X25zZWMpOwoxNDQ3NDogIHJldHVybiB0c19kZWx0YTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0aW1lc3BlYzY0X3ZhbGlkKGNv bnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIGlmICh0 cy0+dHZfc2VjIDwgMCkKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogCjE0NDc0OiAgaWYg KCh1bnNpZ25lZCBsb25nKXRzLT50dl9uc2VjID49IDEwMDAwMDAwMDBMKQoxNDQ3NDogICByZXR1 cm4gZmFsc2U7CjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgdGltZXNwZWM2NF92YWxpZF9zdHJpY3QoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKQox NDQ3NDogewoxNDQ3NDogIGlmICghdGltZXNwZWM2NF92YWxpZCh0cykpCjE0NDc0OiAgIHJldHVy biBmYWxzZTsKMTQ0NzQ6IAoxNDQ3NDogIGlmICgodW5zaWduZWQgbG9uZyBsb25nKXRzLT50dl9z ZWMgPj0gKCgoczY0KX4oKHU2NCkxIDw8IDYzKSkgLyAxMDAwMDAwMDAwTCkpCjE0NDc0OiAgIHJl dHVybiBmYWxzZTsKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCB0aW1lc3BlYzY0X3ZhbGlkX3NldHRvZChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMp CjE0NDc0OiB7CjE0NDc0OiAgaWYgKCF0aW1lc3BlYzY0X3ZhbGlkKHRzKSkKMTQ0NzQ6ICAgcmV0 dXJuIGZhbHNlOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCh1bnNpZ25lZCBsb25nIGxvbmcpdHMtPnR2 X3NlYyA+PSAoKCgoczY0KX4oKHU2NCkxIDw8IDYzKSkgLyAxMDAwMDAwMDAwTCkgLSAoMzBMTCAq IDM2NSAqIDI0ICozNjAwKSkpCjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICByZXR1cm4g dHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTMzICIuL2luY2x1ZGUvbGludXgvdGltZTY0LmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQgdGltZXNwZWM2NF90b19ucyhjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoczY0KSB0cy0+dHZfc2VjICogMTAwMDAwMDAwMEwpICsg dHMtPnR2X25zZWM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgdGltZXNwZWM2NCBuc190 b190aW1lc3BlYzY0KGNvbnN0IHM2NCBuc2VjKTsKMTQ0NzQ6ICMgMTU0ICIuL2luY2x1ZGUvbGlu dXgvdGltZTY0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgdGltZXNwZWM2NF9hZGRfbnMoc3RydWN0IHRpbWVzcGVjNjQgKmEsIHU2NCBucykKMTQ0NzQ6 IHsKMTQ0NzQ6ICBhLT50dl9zZWMgKz0gX19pdGVyX2Rpdl91NjRfcmVtKGEtPnR2X25zZWMgKyBu cywgMTAwMDAwMDAwMEwsICZucyk7CjE0NDc0OiAgYS0+dHZfbnNlYyA9IG5zOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1 Y3QgdGltZXNwZWM2NCB0aW1lc3BlYzY0X2FkZF9zYWZlKGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0 IGxocywKMTQ0NzQ6ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0IHJocyk7CjE0NDc0OiAj IDExICIuL2luY2x1ZGUvbGludXgvcmVzdGFydF9ibG9jay5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCB0aW1lc3BlYzsKMTQ0NzQ6IHN0cnVjdCBvbGRfdGltZXNwZWMzMjsKMTQ0NzQ6IHN0cnVj dCBwb2xsZmQ7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gdGltZXNwZWNfdHlwZSB7CjE0NDc0OiAgVFRf Tk9ORSA9IDAsCjE0NDc0OiAgVFRfTkFUSVZFID0gMSwKMTQ0NzQ6ICBUVF9DT01QQVQgPSAyLAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJl c3RhcnRfYmxvY2sgewoxNDQ3NDogIGxvbmcgKCpmbikoc3RydWN0IHJlc3RhcnRfYmxvY2sgKik7 CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICB1MzIg KnVhZGRyOwoxNDQ3NDogICAgdTMyIHZhbDsKMTQ0NzQ6ICAgIHUzMiBmbGFnczsKMTQ0NzQ6ICAg IHUzMiBiaXRzZXQ7CjE0NDc0OiAgICB1NjQgdGltZTsKMTQ0NzQ6ICAgIHUzMiAqdWFkZHIyOwox NDQ3NDogICB9IGZ1dGV4OwoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICBjbG9j a2lkX3QgY2xvY2tpZDsKMTQ0NzQ6ICAgIGVudW0gdGltZXNwZWNfdHlwZSB0eXBlOwoxNDQ3NDog ICAgdW5pb24gewoxNDQ3NDogICAgIHN0cnVjdCBfX2tlcm5lbF90aW1lc3BlYyAqcm10cDsKMTQ0 NzQ6ICAgICBzdHJ1Y3Qgb2xkX3RpbWVzcGVjMzIgKmNvbXBhdF9ybXRwOwoxNDQ3NDogICAgfTsK MTQ0NzQ6ICAgIHU2NCBleHBpcmVzOwoxNDQ3NDogICB9IG5hbm9zbGVlcDsKMTQ0NzQ6IAoxNDQ3 NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgc3RydWN0IHBvbGxmZCAqdWZkczsKMTQ0NzQ6ICAgIGlu dCBuZmRzOwoxNDQ3NDogICAgaW50IGhhc190aW1lb3V0OwoxNDQ3NDogICAgdW5zaWduZWQgbG9u ZyB0dl9zZWM7CjE0NDc0OiAgICB1bnNpZ25lZCBsb25nIHR2X25zZWM7CjE0NDc0OiAgIH0gcG9s bDsKMTQ0NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGxvbmcgZG9fbm9f cmVzdGFydF9zeXNjYWxsKHN0cnVjdCByZXN0YXJ0X2Jsb2NrICpwYXJtKTsKMTQ0NzQ6ICMgMTQg Ii4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9jdXJyZW50LmgiIDEKMTQ0NzQ6ICMgOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9jdXJyZW50LmgiCjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1Y3Q7CjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikpKSBfX3R5cGVv Zl9fKHN0cnVjdCB0YXNrX3N0cnVjdCAqKSBjdXJyZW50X3Rhc2s7CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgc3RydWN0IHRhc2tfc3RydWN0ICpnZXRf Y3VycmVudCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoY3VycmVudF90 YXNrKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGN1cnJlbnRfdGFzaykpIHsgY2FzZSAxOiBh c20oIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18p IDogInAiICgmKGN1cnJlbnRfdGFzaykpKTsgYnJlYWs7IGNhc2UgMjogYXNtKCJtb3YiICJ3ICIi JSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJwIiAoJihjdXJy ZW50X3Rhc2spKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSgibW92IiAibCAiIiUlIiJncyIiOiIgIiUi ICJQMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAicCIgKCYoY3VycmVudF90YXNrKSkpOyBi cmVhazsgY2FzZSA4OiBhc20oIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogInAiICgmKGN1cnJlbnRfdGFzaykpKTsgYnJlYWs7IGRlZmF1bHQ6 IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MjIgIi4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIiAyCjE0NDc0OiAjIDMxICIuL2luY2x1 ZGUvbGludXgvdGhyZWFkX2luZm8uaCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIEJBRF9TVEFDSyA9 IC0xLAoxNDQ3NDogIE5PVF9TVEFDSyA9IDAsCjE0NDc0OiAgR09PRF9GUkFNRSwKMTQ0NzQ6ICBH T09EX1NUQUNLLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3RocmVhZF9pbmZvLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vdGhyZWFkX2luZm8uaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdl LmgiIDEKMTQ0NzQ6ICMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZS5oIgoxNDQ3NDog IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjQuaCIgMQoxNDQ3NDogIyAxMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdlXzY0LmgiCjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9u ZyBtYXhfcGZuOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGh5c19iYXNlOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBwYWdlX29mZnNldF9iYXNlOwoxNDQ3NDogZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgdm1hbGxvY19iYXNlOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxv bmcgdm1lbW1hcF9iYXNlOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9fcGh5c19hZGRy X25vZGVidWcodW5zaWduZWQgbG9uZyB4KQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg eSA9IHggLSAoMHhmZmZmZmZmZjgwMDAwMDAwVUwpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB4 ID0geSArICgoeCA+IHkpID8gcGh5c19iYXNlIDogKCgweGZmZmZmZmZmODAwMDAwMDBVTCkgLSAo KHVuc2lnbmVkIGxvbmcpcGFnZV9vZmZzZXRfYmFzZSkpKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biB4OwoxNDQ3NDogfQoxNDQ3NDogIyA0MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdlXzY0 LmgiCjE0NDc0OiB2b2lkIGNsZWFyX3BhZ2Vfb3JpZyh2b2lkICpwYWdlKTsKMTQ0NzQ6IHZvaWQg Y2xlYXJfcGFnZV9yZXAodm9pZCAqcGFnZSk7CjE0NDc0OiB2b2lkIGNsZWFyX3BhZ2VfZXJtcyh2 b2lkICpwYWdlKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl9wYWdlKHZvaWQgKnBhZ2UpCjE0 NDc0OiB7CjE0NDc0OiAgYXNtIF9faW5saW5lIHZvbGF0aWxlICgiIyBBTFQ6IG9sZGluc3RyMlxu IiAiNjYxOlxuXHQiICJjYWxsICVQW29sZF0iICJcbjY2MjpcbiIgIiMgQUxUOiBwYWRkaW5nMlxu IiAiLnNraXAgLSgoIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCgoIiAiNjY1 IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSBeICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSAm IC0oLSgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSA8ICgiICI2NjUiIjIiImYtIiI2NjQi IjIiImYiICIpKSkpKSIgIiAtICgiICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCIgIigoIiAi NjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSBeICgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IikgXiAoIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkgJiAtKC0oKCIgIjY2NSIiMSIiZi0i IjY2NCIiMSIiZiIgIikgPCAoIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkpKSkiICIgLSAo IiAiNjYyYi02NjFiIiAiKSksIDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0 aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQi IjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCAzKjMyKzE2KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIi Yi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5 dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2 NCIiMiIiZiAtIC5cbiIgIiAud29yZCAiICIoIDkqMzIrIDkpIiAiXG4iICIgLmJ5dGUgIiAiNjYz IiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICJcbiIgIiAu Ynl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAu YWx0aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEi ICJcbiIgIjY2NCIiMSIiOlxuXHQiICJjYWxsICVQW25ldzFdIiAiXG4iICI2NjUiIjEiICI6XG4i ICIjIEFMVDogcmVwbGFjZW1lbnQgIiAiMiIgIlxuIiAiNjY0IiIyIiI6XG5cdCIgImNhbGwgJVBb bmV3Ml0iICJcbiIgIjY2NSIiMiIgIjpcbiIgIi5wb3BzZWN0aW9uXG4iIDogIj1EIiAocGFnZSks ICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbb2xkXSAiaSIgKGNsZWFyX3BhZ2Vfb3Jp ZyksIFtuZXcxXSAiaSIgKGNsZWFyX3BhZ2VfcmVwKSwgW25ldzJdICJpIiAoY2xlYXJfcGFnZV9l cm1zKSwgIjAiIChwYWdlKSA6ICJjYyIsICJtZW1vcnkiLCAicmF4IiwgInJjeCIpCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgY29weV9wYWdlKHZvaWQg KnRvLCB2b2lkICpmcm9tKTsKMTQ0NzQ6ICMgMTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFn ZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvcmFu Z2UuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcmFu Z2UgewoxNDQ3NDogIHU2NCBzdGFydDsKMTQ0NzQ6ICB1NjQgZW5kOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogaW50IGFkZF9yYW5nZShzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQgYXosIGludCBu cl9yYW5nZSwKMTQ0NzQ6ICAgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBpbnQgYWRkX3JhbmdlX3dpdGhfbWVyZ2Uoc3RydWN0IHJhbmdlICpyYW5nZSwgaW50IGF6 LCBpbnQgbnJfcmFuZ2UsCjE0NDc0OiAgICAgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBzdWJ0cmFjdF9yYW5nZShzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQgYXosIHU2 NCBzdGFydCwgdTY0IGVuZCk7CjE0NDc0OiAKMTQ0NzQ6IGludCBjbGVhbl9zb3J0X3JhbmdlKHN0 cnVjdCByYW5nZSAqcmFuZ2UsIGludCBheik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc29ydF9yYW5n ZShzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQgbnJfcmFuZ2UpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHJlc291cmNlX3NpemVfdCBjYXBfcmVzb3VyY2UodTY0IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpZiAodmFsID4gKChyZXNvdXJjZV9zaXplX3QpfjApKQoxNDQ3NDogICByZXR1cm4gKChyZXNv dXJjZV9zaXplX3QpfjApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgMjIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZS5oIiAyCjE0NDc0OiBleHRlcm4g c3RydWN0IHJhbmdlIHBmbl9tYXBwZWRbXTsKMTQ0NzQ6IGV4dGVybiBpbnQgbnJfcGZuX21hcHBl ZDsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl91c2VyX3BhZ2Uodm9pZCAqcGFnZSwgdW5zaWdu ZWQgbG9uZyB2YWRkciwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgcGFnZSAqcGcpCjE0NDc0OiB7CjE0 NDc0OiAgY2xlYXJfcGFnZShwYWdlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjb3B5 X3VzZXJfcGFnZSh2b2lkICp0bywgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyB2YWRkciwKMTQ0 NzQ6ICAgICAgIHN0cnVjdCBwYWdlICp0b3BhZ2UpCjE0NDc0OiB7CjE0NDc0OiAgY29weV9wYWdl KHRvLCBmcm9tKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v cGFnZS5oIgoxNDQ3NDogZXh0ZXJuIGJvb2wgX192aXJ0X2FkZHJfdmFsaWQodW5zaWduZWQgbG9u ZyBrYWRkcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9p bmNsdWRlL2FzbS1nZW5lcmljL21lbW9yeV9tb2RlbC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Bmbi5oIiAxCjE0NDc0OiAj IDEzICIuL2luY2x1ZGUvbGludXgvcGZuLmgiCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0NDc0 OiAgdTY0IHZhbDsKMTQ0NzQ6IH0gcGZuX3Q7CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9tZW1vcnlfbW9kZWwuaCIgMgoxNDQ3NDogIyA3NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wYWdlLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2dldG9yZGVyLmgi IDEKMTQ0NzQ6ICMgMjkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9nZXRvcmRlci5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSkgaW50IGdldF9vcmRlcih1bnNpZ25lZCBsb25nIHNp emUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKSB7CjE0 NDc0OiAgIGlmICghc2l6ZSkKMTQ0NzQ6ICAgIHJldHVybiA2NCAtIDEyOwoxNDQ3NDogCjE0NDc0 OiAgIGlmIChzaXplIDwgKDFVTCA8PCAxMikpCjE0NDc0OiAgICByZXR1cm4gMDsKMTQ0NzQ6IAox NDQ3NDogICByZXR1cm4gKCBfX2J1aWx0aW5fY29uc3RhbnRfcCgoc2l6ZSkgLSAxKSA/ICggX19i dWlsdGluX2NvbnN0YW50X3AoKHNpemUpIC0gMSkgPyAoICgoc2l6ZSkgLSAxKSA8IDIgPyAwIDog KChzaXplKSAtIDEpICYgKDFVTEwgPDwgNjMpID8gNjMgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8 PCA2MikgPyA2MiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDYxKSA/IDYxIDogKChzaXplKSAt IDEpICYgKDFVTEwgPDwgNjApID8gNjAgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1OSkgPyA1 OSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDU4KSA/IDU4IDogKChzaXplKSAtIDEpICYgKDFV TEwgPDwgNTcpID8gNTcgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1NikgPyA1NiA6ICgoc2l6 ZSkgLSAxKSAmICgxVUxMIDw8IDU1KSA/IDU1IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNTQp ID8gNTQgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1MykgPyA1MyA6ICgoc2l6ZSkgLSAxKSAm ICgxVUxMIDw8IDUyKSA/IDUyIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNTEpID8gNTEgOiAo KHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1MCkgPyA1MCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8 IDQ5KSA/IDQ5IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDgpID8gNDggOiAoKHNpemUpIC0g MSkgJiAoMVVMTCA8PCA0NykgPyA0NyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQ2KSA/IDQ2 IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDUpID8gNDUgOiAoKHNpemUpIC0gMSkgJiAoMVVM TCA8PCA0NCkgPyA0NCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQzKSA/IDQzIDogKChzaXpl KSAtIDEpICYgKDFVTEwgPDwgNDIpID8gNDIgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA0MSkg PyA0MSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQwKSA/IDQwIDogKChzaXplKSAtIDEpICYg KDFVTEwgPDwgMzkpID8gMzkgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzOCkgPyAzOCA6ICgo c2l6ZSkgLSAxKSAmICgxVUxMIDw8IDM3KSA/IDM3IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwg MzYpID8gMzYgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzNSkgPyAzNSA6ICgoc2l6ZSkgLSAx KSAmICgxVUxMIDw8IDM0KSA/IDM0IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMzMpID8gMzMg OiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzMikgPyAzMiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxM IDw8IDMxKSA/IDMxIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMzApID8gMzAgOiAoKHNpemUp IC0gMSkgJiAoMVVMTCA8PCAyOSkgPyAyOSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDI4KSA/ IDI4IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMjcpID8gMjcgOiAoKHNpemUpIC0gMSkgJiAo MVVMTCA8PCAyNikgPyAyNiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDI1KSA/IDI1IDogKChz aXplKSAtIDEpICYgKDFVTEwgPDwgMjQpID8gMjQgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAy MykgPyAyMyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDIyKSA/IDIyIDogKChzaXplKSAtIDEp ICYgKDFVTEwgPDwgMjEpID8gMjEgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAyMCkgPyAyMCA6 ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDE5KSA/IDE5IDogKChzaXplKSAtIDEpICYgKDFVTEwg PDwgMTgpID8gMTggOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxNykgPyAxNyA6ICgoc2l6ZSkg LSAxKSAmICgxVUxMIDw8IDE2KSA/IDE2IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMTUpID8g MTUgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxNCkgPyAxNCA6ICgoc2l6ZSkgLSAxKSAmICgx VUxMIDw8IDEzKSA/IDEzIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMTIpID8gMTIgOiAoKHNp emUpIC0gMSkgJiAoMVVMTCA8PCAxMSkgPyAxMSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDEw KSA/IDEwIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgOSkgPyA5IDogKChzaXplKSAtIDEpICYg KDFVTEwgPDwgOCkgPyA4IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNykgPyA3IDogKChzaXpl KSAtIDEpICYgKDFVTEwgPDwgNikgPyA2IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNSkgPyA1 IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNCkgPyA0IDogKChzaXplKSAtIDEpICYgKDFVTEwg PDwgMykgPyAzIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMikgPyAyIDogMSkgOiAtMSkgOiAo c2l6ZW9mKChzaXplKSAtIDEpIDw9IDQpID8gX19pbG9nMl91MzIoKHNpemUpIC0gMSkgOiBfX2ls b2cyX3U2NCgoc2l6ZSkgLSAxKSApIC0gMTIgKyAxOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDog IHNpemUtLTsKMTQ0NzQ6ICBzaXplID4+PSAxMjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICByZXR1cm4gZmxzNjQoc2l6ZSk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzggIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZS5oIiAyCjE0NDc0OiAjIDEzICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2 L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTUgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCIgMgoxNDQ3NDogIyA1MiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIgoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0Owox NDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIgMQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcHJvY2Vzc29yLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogc3RydWN0 IG1tX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCBpb19iaXRtYXA7CjE0NDc0OiBzdHJ1Y3Qgdm04NjsK MTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21hdGhfZW11LmgiIDEK MTQ0NzQ6ICMgMTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbWF0aF9lbXUuaCIKMTQ0NzQ6IHN0 cnVjdCBtYXRoX2VtdV9pbmZvIHsKMTQ0NzQ6ICBsb25nIF9fX29yaWdfZWlwOwoxNDQ3NDogIHN0 cnVjdCBwdF9yZWdzICpyZWdzOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTQgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2lu Y2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTYgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNs dWRlL3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIgMQoxNDQ3NDogIyA0MCAiLi9hcmNoL3g4Ni9pbmNs dWRlL3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIKMTQ0NzQ6IHN0cnVjdCBfZnB4X3N3X2J5dGVzIHsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIG1hZ2ljMTsKMTQ0 NzQ6ICMgNTQgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdjb250ZXh0LmgiCjE0NDc0 OiAgX191MzIgZXh0ZW5kZWRfc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgX191NjQgeGZlYXR1cmVzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiB4c3RhdGVfc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgX191MzIgcGFkZGluZ1s3XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDg1ICIuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oIgoxNDQ3NDogc3RydWN0IF9mcHJlZyB7 CjE0NDc0OiAgX191MTYgc2lnbmlmaWNhbmRbNF07CjE0NDc0OiAgX191MTYgZXhwb25lbnQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfZnB4cmVnIHsKMTQ0NzQ6ICBf X3UxNiBzaWduaWZpY2FuZFs0XTsKMTQ0NzQ6ICBfX3UxNiBleHBvbmVudDsKMTQ0NzQ6ICBfX3Ux NiBwYWRkaW5nWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3ht bXJlZyB7CjE0NDc0OiAgX191MzIgZWxlbWVudFs0XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX2Zwc3RhdGVf MzIgewoxNDQ3NDogCjE0NDc0OiAgX191MzIgY3c7CjE0NDc0OiAgX191MzIgc3c7CjE0NDc0OiAg X191MzIgdGFnOwoxNDQ3NDogIF9fdTMyIGlwb2ZmOwoxNDQ3NDogIF9fdTMyIGNzc2VsOwoxNDQ3 NDogIF9fdTMyIGRhdGFvZmY7CjE0NDc0OiAgX191MzIgZGF0YXNlbDsKMTQ0NzQ6ICBzdHJ1Y3Qg X2ZwcmVnIF9zdFs4XTsKMTQ0NzQ6ICBfX3UxNiBzdGF0dXM7CjE0NDc0OiAgX191MTYgbWFnaWM7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgX2Z4c3JfZW52WzZdOwoxNDQ3 NDogIF9fdTMyIG14Y3NyOwoxNDQ3NDogIF9fdTMyIHJlc2VydmVkOwoxNDQ3NDogIHN0cnVjdCBf ZnB4cmVnIF9meHNyX3N0WzhdOwoxNDQ3NDogIHN0cnVjdCBfeG1tcmVnIF94bW1bOF07CjE0NDc0 OiAgdW5pb24gewoxNDQ3NDogICBfX3UzMiBwYWRkaW5nMVs0NF07CjE0NDc0OiAgIF9fdTMyIHBh ZGRpbmdbNDRdOwoxNDQ3NDogIH07CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIF9f dTMyIHBhZGRpbmcyWzEyXTsKMTQ0NzQ6ICAgc3RydWN0IF9mcHhfc3dfYnl0ZXMgc3dfcmVzZXJ2 ZWQ7CjE0NDc0OiAgfTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE0OSAiLi9hcmNoL3g4Ni9pbmNsdWRl L3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIKMTQ0NzQ6IHN0cnVjdCBfZnBzdGF0ZV82NCB7CjE0NDc0 OiAgX191MTYgY3dkOwoxNDQ3NDogIF9fdTE2IHN3ZDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTE2IHR3 ZDsKMTQ0NzQ6ICBfX3UxNiBmb3A7CjE0NDc0OiAgX191NjQgcmlwOwoxNDQ3NDogIF9fdTY0IHJk cDsKMTQ0NzQ6ICBfX3UzMiBteGNzcjsKMTQ0NzQ6ICBfX3UzMiBteGNzcl9tYXNrOwoxNDQ3NDog IF9fdTMyIHN0X3NwYWNlWzMyXTsKMTQ0NzQ6ICBfX3UzMiB4bW1fc3BhY2VbNjRdOwoxNDQ3NDog IF9fdTMyIHJlc2VydmVkMlsxMl07CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBfX3UzMiByZXNl cnZlZDNbMTJdOwoxNDQ3NDogICBzdHJ1Y3QgX2ZweF9zd19ieXRlcyBzd19yZXNlcnZlZDsKMTQ0 NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF9oZWFkZXIgewoxNDQ3NDogIF9fdTY0IHhm ZWF0dXJlczsKMTQ0NzQ6ICBfX3U2NCByZXNlcnZlZDFbMl07CjE0NDc0OiAgX191NjQgcmVzZXJ2 ZWQyWzVdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF95bW1oX3N0YXRlIHsKMTQ0 NzQ6IAoxNDQ3NDogIF9fdTMyIHltbWhfc3BhY2VbNjRdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTky ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oIgoxNDQ3NDogc3RydWN0 IF94c3RhdGUgewoxNDQ3NDogIHN0cnVjdCBfZnBzdGF0ZV82NCBmcHN0YXRlOwoxNDQ3NDogIHN0 cnVjdCBfaGVhZGVyIHhzdGF0ZV9oZHI7CjE0NDc0OiAgc3RydWN0IF95bW1oX3N0YXRlIHltbWg7 CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBzaWdjb250ZXh0XzMyIHsKMTQ0NzQ6ICBfX3UxNiBncywgX19nc2g7CjE0NDc0OiAg X191MTYgZnMsIF9fZnNoOwoxNDQ3NDogIF9fdTE2IGVzLCBfX2VzaDsKMTQ0NzQ6ICBfX3UxNiBk cywgX19kc2g7CjE0NDc0OiAgX191MzIgZGk7CjE0NDc0OiAgX191MzIgc2k7CjE0NDc0OiAgX191 MzIgYnA7CjE0NDc0OiAgX191MzIgc3A7CjE0NDc0OiAgX191MzIgYng7CjE0NDc0OiAgX191MzIg ZHg7CjE0NDc0OiAgX191MzIgY3g7CjE0NDc0OiAgX191MzIgYXg7CjE0NDc0OiAgX191MzIgdHJh cG5vOwoxNDQ3NDogIF9fdTMyIGVycjsKMTQ0NzQ6ICBfX3UzMiBpcDsKMTQ0NzQ6ICBfX3UxNiBj cywgX19jc2g7CjE0NDc0OiAgX191MzIgZmxhZ3M7CjE0NDc0OiAgX191MzIgc3BfYXRfc2lnbmFs OwoxNDQ3NDogIF9fdTE2IHNzLCBfX3NzaDsKMTQ0NzQ6ICMgMjMwICIuL2FyY2gveDg2L2luY2x1 ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oIgoxNDQ3NDogIF9fdTMyIGZwc3RhdGU7CjE0NDc0OiAg X191MzIgb2xkbWFzazsKMTQ0NzQ6ICBfX3UzMiBjcjI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2lnY29udGV4dF82NCB7CjE0NDc0OiAg X191NjQgcjg7CjE0NDc0OiAgX191NjQgcjk7CjE0NDc0OiAgX191NjQgcjEwOwoxNDQ3NDogIF9f dTY0IHIxMTsKMTQ0NzQ6ICBfX3U2NCByMTI7CjE0NDc0OiAgX191NjQgcjEzOwoxNDQ3NDogIF9f dTY0IHIxNDsKMTQ0NzQ6ICBfX3U2NCByMTU7CjE0NDc0OiAgX191NjQgZGk7CjE0NDc0OiAgX191 NjQgc2k7CjE0NDc0OiAgX191NjQgYnA7CjE0NDc0OiAgX191NjQgYng7CjE0NDc0OiAgX191NjQg ZHg7CjE0NDc0OiAgX191NjQgYXg7CjE0NDc0OiAgX191NjQgY3g7CjE0NDc0OiAgX191NjQgc3A7 CjE0NDc0OiAgX191NjQgaXA7CjE0NDc0OiAgX191NjQgZmxhZ3M7CjE0NDc0OiAgX191MTYgY3M7 CjE0NDc0OiAgX191MTYgZ3M7CjE0NDc0OiAgX191MTYgZnM7CjE0NDc0OiAgX191MTYgc3M7CjE0 NDc0OiAgX191NjQgZXJyOwoxNDQ3NDogIF9fdTY0IHRyYXBubzsKMTQ0NzQ6ICBfX3U2NCBvbGRt YXNrOwoxNDQ3NDogIF9fdTY0IGNyMjsKMTQ0NzQ6ICMgMjczICIuL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20vc2lnY29udGV4dC5oIgoxNDQ3NDogIF9fdTY0IGZwc3RhdGU7CjE0NDc0OiAgX191 NjQgcmVzZXJ2ZWQxWzhdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTcgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgiIDEKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L21zci1pbmRleC5oIiAxCjE0NDc0OiAjIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2 L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2Vycm5vLmgiIDEKMTQ0NzQ6ICMgMSAiLi9pbmNs dWRlL3VhcGkvYXNtLWdlbmVyaWMvZXJybm8uaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2Vycm5vLWJhc2Uu aCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9lcnJuby5oIiAyCjE0 NDc0OiAjIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vZXJybm8uaCIg MgoxNDQ3NDogIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIgMgoxNDQ3NDogIyAx ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdW1hc2suaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiIDEKMTQ0 NzQ6ICMgMTIgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9iaXRtYXAuaCIgMQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvYml0bWFwLmgi CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMQoxNDQ3NDogIyAxMCAiLi9p bmNsdWRlL2xpbnV4L3N0cmluZy5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9z dHJpbmcuaCIgMQoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICpzdHJuZHVwX3VzZXIoY29uc3QgY2hhciAqLCBsb25nKTsK MTQ0NzQ6IGV4dGVybiB2b2lkICptZW1kdXBfdXNlcihjb25zdCB2b2lkICosIHNpemVfdCk7CjE0 NDc0OiBleHRlcm4gdm9pZCAqdm1lbWR1cF91c2VyKGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKMTQ0 NzQ6IGV4dGVybiB2b2lkICptZW1kdXBfdXNlcl9udWwoY29uc3Qgdm9pZCAqLCBzaXplX3QpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vc3RyaW5nLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZ182NC5oIiAxCjE0NDc0OiAjIDE0 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZ182NC5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQg Km1lbWNweSh2b2lkICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IGxlbik7CjE0NDc0OiBl eHRlcm4gdm9pZCAqX19tZW1jcHkodm9pZCAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBs ZW4pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgKm1lbXNldCh2b2lkICpzLCBpbnQgYywg c2l6ZV90IG4pOwoxNDQ3NDogdm9pZCAqX19tZW1zZXQodm9pZCAqcywgaW50IGMsIHNpemVfdCBu KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQxNih1aW50MTZfdCAqcywgdWlu dDE2X3Qgdiwgc2l6ZV90IG4pCjE0NDc0OiB7CjE0NDc0OiAgbG9uZyBkMCwgZDE7CjE0NDc0OiAg YXNtIHZvbGF0aWxlKCJyZXBcblx0IgoxNDQ3NDogICAgICAgICJzdG9zdyIKMTQ0NzQ6ICAgICAg ICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKMTQ0NzQ6ICAgICAgICA6ICJhIiAodiksICIxIiAo cyksICIwIiAobikKMTQ0NzQ6ICAgICAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6ICByZXR1cm4gczsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQzMih1aW50MzJfdCAq cywgdWludDMyX3Qgdiwgc2l6ZV90IG4pCjE0NDc0OiB7CjE0NDc0OiAgbG9uZyBkMCwgZDE7CjE0 NDc0OiAgYXNtIHZvbGF0aWxlKCJyZXBcblx0IgoxNDQ3NDogICAgICAgICJzdG9zbCIKMTQ0NzQ6 ICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKMTQ0NzQ6ICAgICAgICA6ICJhIiAodiks ICIxIiAocyksICIwIiAobikKMTQ0NzQ6ICAgICAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6ICByZXR1 cm4gczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQ2NCh1aW50 NjRfdCAqcywgdWludDY0X3Qgdiwgc2l6ZV90IG4pCjE0NDc0OiB7CjE0NDc0OiAgbG9uZyBkMCwg ZDE7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJyZXBcblx0IgoxNDQ3NDogICAgICAgICJzdG9zcSIK MTQ0NzQ6ICAgICAgICA6ICI9JmMiIChkMCksICI9JkQiIChkMSkKMTQ0NzQ6ICAgICAgICA6ICJh IiAodiksICIxIiAocyksICIwIiAobikKMTQ0NzQ6ICAgICAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6 ICByZXR1cm4gczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkICptZW1tb3Zl KHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNvdW50KTsKMTQ0NzQ6IHZvaWQg Kl9fbWVtbW92ZSh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCk7CjE0 NDc0OiAKMTQ0NzQ6IGludCBtZW1jbXAoY29uc3Qgdm9pZCAqY3MsIGNvbnN0IHZvaWQgKmN0LCBz aXplX3QgY291bnQpOwoxNDQ3NDogc2l6ZV90IHN0cmxlbihjb25zdCBjaGFyICpzKTsKMTQ0NzQ6 IGNoYXIgKnN0cmNweShjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpOwoxNDQ3NDogY2hhciAq c3RyY2F0KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYyk7CjE0NDc0OiBpbnQgc3RyY21wKGNv bnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCk7CjE0NDc0OiAjIDg2ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3N0cmluZ182NC5oIgoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIHVuc2lnbmVkIGxvbmcgX19tZW1jcHlfbWNzYWZlKHZvaWQgKmRzdCwgY29u c3Qgdm9pZCAqc3JjLAoxNDQ3NDogICBzaXplX3QgY250KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg c3RhdGljX2tleV9mYWxzZSBtY3NhZmVfa2V5OwoxNDQ3NDogIyAxMDUgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vc3RyaW5nXzY0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB1bnNpZ25lZCBs b25nCjE0NDc0OiBtZW1jcHlfbWNzYWZlKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXpl X3QgY250KQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgaWYgKCh7IGJvb2wgYnJhbmNoOyBpZiAo X19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKiZtY3NhZmVfa2V5KSwgc3RydWN0 IHN0YXRpY19rZXlfdHJ1ZSkpIGJyYW5jaCA9IGFyY2hfc3RhdGljX2JyYW5jaF9qdW1wKCYoJm1j c2FmZV9rZXkpLT5rZXksIGZhbHNlKTsgZWxzZSBpZiAoX19idWlsdGluX3R5cGVzX2NvbXBhdGli bGVfcCh0eXBlb2YoKiZtY3NhZmVfa2V5KSwgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UpKSBicmFu Y2ggPSBhcmNoX3N0YXRpY19icmFuY2goJigmbWNzYWZlX2tleSktPmtleSwgZmFsc2UpOyBlbHNl IGJyYW5jaCA9IF9fX193cm9uZ19icmFuY2hfZXJyb3IoKTsgX19idWlsdGluX2V4cGVjdCghIShi cmFuY2gpLCAwKTsgfSkpCjE0NDc0OiAgIHJldHVybiBfX21lbWNweV9tY3NhZmUoZHN0LCBzcmMs IGNudCk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogCjE0NDc0OiAgIG1lbWNweShkc3QsIHNyYywgY250 KTsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgX19tZW1jcHlfZmx1c2hjYWNoZSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywg c2l6ZV90IGNudCk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgbWVtY3B5X2ZsdXNoY2FjaGUodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBj bnQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKGNudCkpIHsKMTQ0 NzQ6ICAgc3dpdGNoIChjbnQpIHsKMTQ0NzQ6ICAgIGNhc2UgNDoKMTQ0NzQ6ICAgICBhc20gKCJt b3ZudGlsICUxLCAlMCIgOiAiPW0iKCoodTMyICopZHN0KSA6ICJyIigqKHUzMiAqKXNyYykpOwox NDQ3NDogICAgIHJldHVybjsKMTQ0NzQ6ICAgIGNhc2UgODoKMTQ0NzQ6ICAgICBhc20gKCJtb3Zu dGlxICUxLCAlMCIgOiAiPW0iKCoodTY0ICopZHN0KSA6ICJyIigqKHU2NCAqKXNyYykpOwoxNDQ3 NDogICAgIHJldHVybjsKMTQ0NzQ6ICAgIGNhc2UgMTY6CjE0NDc0OiAgICAgYXNtICgibW92bnRp cSAlMSwgJTAiIDogIj1tIigqKHU2NCAqKWRzdCkgOiAiciIoKih1NjQgKilzcmMpKTsKMTQ0NzQ6 ICAgICBhc20gKCJtb3ZudGlxICUxLCAlMCIgOiAiPW0iKCoodTY0ICopKGRzdCArIDgpKSA6ICJy IigqKHU2NCAqKShzcmMgKyA4KSkpOwoxNDQ3NDogICAgIHJldHVybjsKMTQ0NzQ6ICAgfQoxNDQ3 NDogIH0KMTQ0NzQ6ICBfX21lbWNweV9mbHVzaGNhY2hlKGRzdCwgc3JjLCBjbnQpOwoxNDQ3NDog fQoxNDQ3NDogIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3N0cmluZy5oIiAyCjE0NDc0OiAj IDIxICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gY2hhciAqIHN0cmNweShjaGFyICosY29uc3QgY2hhciAqKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gY2hhciAqIHN0cm5jcHkoY2hhciAqLGNvbnN0IGNoYXIgKiwgX19rZXJu ZWxfc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzaXplX3Qgc3RybGNweShjaGFyICos IGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzc2l6ZV90IHN0 cnNjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzc2l6ZV90IHN0cnNjcHlfcGFkKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNy Yywgc2l6ZV90IGNvdW50KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY2hhciAqIHN0 cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGNoYXIgKiBzdHJuY2F0KGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzaXplX3Qgc3RybGNhdChjaGFyICosIGNvbnN0 IGNoYXIgKiwgX19rZXJuZWxfc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4g aW50IHN0cmNtcChjb25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IHN0cm5jbXAoY29uc3QgY2hhciAqLGNvbnN0IGNoYXIgKixfX2tlcm5l bF9zaXplX3QpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgc3RyY2FzZWNtcChj b25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBzaXpl X3Qgbik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNoYXIgKiBzdHJjaHIoY29uc3Qg Y2hhciAqLGludCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNoYXIgKiBzdHJjaHJu dWwoY29uc3QgY2hhciAqLGludCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICogc3RybmNo cm51bChjb25zdCBjaGFyICosIHNpemVfdCwgaW50KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNo YXIgKiBzdHJuY2hyKGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBpbnQpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBjaGFyICogc3RycmNocihjb25zdCBjaGFyICosaW50KTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkgc2tpcF9zcGFjZXMoY29uc3QgY2hhciAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNoYXIg KnN0cmltKGNoYXIgKik7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVz ZWRfcmVzdWx0X18pKSBjaGFyICpzdHJzdHJpcChjaGFyICpzdHIpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHN0cmltKHN0cik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGNoYXIgKiBzdHJzdHIoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICogc3RybnN0cihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kiwgc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19rZXJuZWxfc2l6ZV90 IHN0cmxlbihjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2tl cm5lbF9zaXplX3Qgc3Rybmxlbihjb25zdCBjaGFyICosX19rZXJuZWxfc2l6ZV90KTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY2hhciAqIHN0cnBicmsoY29uc3QgY2hhciAqLGNvbnN0 IGNoYXIgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNoYXIgKiBzdHJzZXAoY2hh ciAqKixjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2tlcm5l bF9zaXplX3Qgc3Ryc3BuKGNvbnN0IGNoYXIgKixjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBfX2tlcm5lbF9zaXplX3Qgc3RyY3Nwbihjb25zdCBjaGFyICosY29u c3QgY2hhciAqKTsKMTQ0NzQ6ICMgMTIyICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkICptZW1zZXRfbCh1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHYsCjE0NDc0 OiAgIF9fa2VybmVsX3NpemVfdCBuKQoxNDQ3NDogewoxNDQ3NDogIGlmICg2NCA9PSAzMikKMTQ0 NzQ6ICAgcmV0dXJuIG1lbXNldDMyKCh1aW50MzJfdCAqKXAsIHYsIG4pOwoxNDQ3NDogIGVsc2UK MTQ0NzQ6ICAgcmV0dXJuIG1lbXNldDY0KCh1aW50NjRfdCAqKXAsIHYsIG4pOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXRfcCh2b2lkICoqcCwgdm9pZCAqdiwgX19rZXJuZWxf c2l6ZV90IG4pCjE0NDc0OiB7CjE0NDc0OiAgaWYgKDY0ID09IDMyKQoxNDQ3NDogICByZXR1cm4g bWVtc2V0MzIoKHVpbnQzMl90ICopcCwgKHVpbnRwdHJfdCl2LCBuKTsKMTQ0NzQ6ICBlbHNlCjE0 NDc0OiAgIHJldHVybiBtZW1zZXQ2NCgodWludDY0X3QgKilwLCAodWludHB0cl90KXYsIG4pOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCAqKl9fbWVtY2F0X3Aodm9pZCAqKmEs IHZvaWQgKipiKTsKMTQ0NzQ6ICMgMTUzICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCjE0NDc0 OiBleHRlcm4gdm9pZCAqIG1lbXNjYW4odm9pZCAqLGludCxfX2tlcm5lbF9zaXplX3QpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbWVtY21wKGNvbnN0IHZvaWQgKixjb25zdCB2 b2lkICosX19rZXJuZWxfc2l6ZV90KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50 IGJjbXAoY29uc3Qgdm9pZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkICogbWVtY2hyKGNvbnN0IHZvaWQgKixpbnQsX19r ZXJuZWxfc2l6ZV90KTsKMTQ0NzQ6ICMgMTc4ICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCjE0 NDc0OiB2b2lkICptZW1jaHJfaW52KGNvbnN0IHZvaWQgKnMsIGludCBjLCBzaXplX3Qgbik7CjE0 NDc0OiBjaGFyICpzdHJyZXBsYWNlKGNoYXIgKnMsIGNoYXIgb2xkLCBjaGFyIG5ldyk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGtmcmVlX2NvbnN0KGNvbnN0IHZvaWQgKngpOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gY2hhciAqa3N0cmR1cChjb25zdCBjaGFyICpzLCBnZnBfdCBnZnApIF9f YXR0cmlidXRlX18oKF9fbWFsbG9jX18pKTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyICprc3Ry ZHVwX2NvbnN0KGNvbnN0IGNoYXIgKnMsIGdmcF90IGdmcCk7CjE0NDc0OiBleHRlcm4gY2hhciAq a3N0cm5kdXAoY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgZ2ZwX3QgZ2ZwKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkICprbWVtZHVwKGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbiwgZ2ZwX3QgZ2Zw KTsKMTQ0NzQ6IGV4dGVybiBjaGFyICprbWVtZHVwX251bChjb25zdCBjaGFyICpzLCBzaXplX3Qg bGVuLCBnZnBfdCBnZnApOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY2hhciAqKmFyZ3Zfc3BsaXQo Z2ZwX3QgZ2ZwLCBjb25zdCBjaGFyICpzdHIsIGludCAqYXJnY3ApOwoxNDQ3NDogZXh0ZXJuIHZv aWQgYXJndl9mcmVlKGNoYXIgKiphcmd2KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgc3lz ZnNfc3RyZXEoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKMTQ0NzQ6IGV4dGVybiBp bnQga3N0cnRvYm9vbChjb25zdCBjaGFyICpzLCBib29sICpyZXMpOwoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN0cnRv Ym9vbChjb25zdCBjaGFyICpzLCBib29sICpyZXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtz dHJ0b2Jvb2wocywgcmVzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogaW50IG1hdGNoX3N0cmlu Zyhjb25zdCBjaGFyICogY29uc3QgKmFycmF5LCBzaXplX3QgbiwgY29uc3QgY2hhciAqc3RyaW5n KTsKMTQ0NzQ6IGludCBfX3N5c2ZzX21hdGNoX3N0cmluZyhjb25zdCBjaGFyICogY29uc3QgKmFy cmF5LCBzaXplX3QgbiwgY29uc3QgY2hhciAqcyk7CjE0NDc0OiAjIDIxMiAiLi9pbmNsdWRlL2xp bnV4L3N0cmluZy5oIgoxNDQ3NDogaW50IHZiaW5fcHJpbnRmKHUzMiAqYmluX2J1Ziwgc2l6ZV90 IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsKMTQ0NzQ6IGludCBic3RyX3By aW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIGNvbnN0IHUzMiAq YmluX2J1Zik7CjE0NDc0OiBpbnQgYnByaW50Zih1MzIgKmJpbl9idWYsIHNpemVfdCBzaXplLCBj b25zdCBjaGFyICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMs IDQpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHNzaXplX3QgbWVtb3J5X3JlYWRf ZnJvbV9idWZmZXIodm9pZCAqdG8sIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zLAoxNDQ3NDog ICAgICAgICAgICBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgYXZhaWxhYmxlKTsKMTQ0NzQ6IAox NDQ3NDogaW50IHB0cl90b19oYXNodmFsKGNvbnN0IHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyAq aGFzaHZhbF9vdXQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBzdHJzdGFydHMoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpw cmVmaXgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHN0cm5jbXAoc3RyLCBwcmVmaXgsIHN0cmxl bihwcmVmaXgpKSA9PSAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzaXplX3QgbWVtd2VpZ2h0 KGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGJ5dGVzKTsKMTQ0NzQ6ICMgMjQ4ICIuL2luY2x1ZGUv bGludXgvc3RyaW5nLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG1lbXplcm9fZXhwbGljaXQodm9pZCAqcywgc2l6 ZV90IGNvdW50KQoxNDQ3NDogewoxNDQ3NDogIG1lbXNldChzLCAwLCBjb3VudCk7CjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDoiciIocykgOiJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0 IGNoYXIgKmtiYXNlbmFtZShjb25zdCBjaGFyICpwYXRoKQoxNDQ3NDogewoxNDQ3NDogIGNvbnN0 IGNoYXIgKnRhaWwgPSBzdHJyY2hyKHBhdGgsICcvJyk7CjE0NDc0OiAgcmV0dXJuIHRhaWwgPyB0 YWlsICsgMSA6IHBhdGg7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHZvaWQgZm9ydGlmeV9wYW5pYyhjb25zdCBjaGFyICpuYW1lKSBfX2F0dHJpYnV0ZV9f KChfX25vcmV0dXJuX18pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpOwoxNDQ3NDogdm9pZCBf X3JlYWRfb3ZlcmZsb3codm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJkZXRlY3RlZCBy ZWFkIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQgYXMgMXN0IHBhcmFtZXRlciIpKSk7CjE0 NDc0OiB2b2lkIF9fcmVhZF9vdmVyZmxvdzIodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9f KCJkZXRlY3RlZCByZWFkIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQgYXMgMm5kIHBhcmFt ZXRlciIpKSk7CjE0NDc0OiB2b2lkIF9fcmVhZF9vdmVyZmxvdzModm9pZCkgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fKCJkZXRlY3RlZCByZWFkIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQg YXMgM3JkIHBhcmFtZXRlciIpKSk7CjE0NDc0OiB2b2lkIF9fd3JpdGVfb3ZlcmZsb3codm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJkZXRlY3RlZCB3cml0ZSBiZXlvbmQgc2l6ZSBvZiBv YmplY3QgcGFzc2VkIGFzIDFzdCBwYXJhbWV0ZXIiKSkpOwoxNDQ3NDogIyA0NzggIi4vaW5jbHVk ZS9saW51eC9zdHJpbmcuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWVtY3B5X2FuZF9wYWQodm9pZCAqZGVzdCwg c2l6ZV90IGRlc3RfbGVuLAoxNDQ3NDogICAgICAgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgY291 bnQsIGludCBwYWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGRlc3RfbGVuID4gY291bnQpIHsKMTQ0 NzQ6ICAgbWVtY3B5KGRlc3QsIHNyYywgY291bnQpOwoxNDQ3NDogICBtZW1zZXQoZGVzdCArIGNv dW50LCBwYWQsIGRlc3RfbGVuIC0gY291bnQpOwoxNDQ3NDogIH0gZWxzZQoxNDQ3NDogICBtZW1j cHkoZGVzdCwgc3JjLCBkZXN0X2xlbik7CjE0NDc0OiB9CjE0NDc0OiAjIDUwMyAiLi9pbmNsdWRl L2xpbnV4L3N0cmluZy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBzaXplX3Qgc3RyX2hhc19wcmVmaXgoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpwcmVm aXgpCjE0NDc0OiB7CjE0NDc0OiAgc2l6ZV90IGxlbiA9IHN0cmxlbihwcmVmaXgpOwoxNDQ3NDog IHJldHVybiBzdHJuY21wKHN0ciwgcHJlZml4LCBsZW4pID09IDAgPyBsZW4gOiAwOwoxNDQ3NDog fQoxNDQ3NDogIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIiAyCjE0NDc0OiAjIDExNSAi Li9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIgoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgKmJp dG1hcF9hbGxvYyh1bnNpZ25lZCBpbnQgbmJpdHMsIGdmcF90IGZsYWdzKTsKMTQ0NzQ6IGV4dGVy biB1bnNpZ25lZCBsb25nICpiaXRtYXBfemFsbG9jKHVuc2lnbmVkIGludCBuYml0cywgZ2ZwX3Qg ZmxhZ3MpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYml0bWFwX2ZyZWUoY29uc3QgdW5zaWduZWQgbG9u ZyAqYml0bWFwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gaW50IF9fYml0bWFwX2VtcHR5KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwg dW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19iaXRtYXBfZnVsbChjb25z dCB1bnNpZ25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBuYml0cyk7CjE0NDc0OiBleHRl cm4gaW50IF9fYml0bWFwX2VxdWFsKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCjE0NDc0 OiAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDIsIHVuc2lnbmVkIGludCBuYml0cyk7 CjE0NDc0OiBleHRlcm4gYm9vbCBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIF9fYml0bWFwX29y X2VxdWFsKGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzEsCjE0NDc0OiAgICAgICAgICBjb25zdCB1 bnNpZ25lZCBsb25nICpzcmMyLAoxNDQ3NDogICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAq c3JjMywKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGludCBuYml0cyk7CjE0NDc0OiBleHRlcm4g dm9pZCBfX2JpdG1hcF9jb21wbGVtZW50KHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWdu ZWQgbG9uZyAqc3JjLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIF9fYml0bWFwX3NoaWZ0X3JpZ2h0KHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5z aWduZWQgbG9uZyAqc3JjLAoxNDQ3NDogICAgIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQg aW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYml0bWFwX3NoaWZ0X2xlZnQodW5zaWdu ZWQgbG9uZyAqZHN0LCBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMsCjE0NDc0OiAgICAgdW5zaWdu ZWQgaW50IHNoaWZ0LCB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYml0 bWFwX2N1dCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKMTQ0 NzQ6ICAgICAgICAgIHVuc2lnbmVkIGludCBmaXJzdCwgdW5zaWduZWQgaW50IGN1dCwKMTQ0NzQ6 ICAgICAgICAgIHVuc2lnbmVkIGludCBuYml0cyk7CjE0NDc0OiBleHRlcm4gaW50IF9fYml0bWFw X2FuZCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCjE0 NDc0OiAgICBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iaXRtYXBfb3IodW5zaWduZWQgbG9uZyAqZHN0LCBjb25z dCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAoxNDQ3NDogICAgY29uc3QgdW5zaWduZWQgbG9uZyAq Yml0bWFwMiwgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYml0bWFw X3hvcih1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCjE0 NDc0OiAgICBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMp OwoxNDQ3NDogZXh0ZXJuIGludCBfX2JpdG1hcF9hbmRub3QodW5zaWduZWQgbG9uZyAqZHN0LCBj b25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAoxNDQ3NDogICAgY29uc3QgdW5zaWduZWQgbG9u ZyAqYml0bWFwMiwgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYml0 bWFwX3JlcGxhY2UodW5zaWduZWQgbG9uZyAqZHN0LAoxNDQ3NDogICAgY29uc3QgdW5zaWduZWQg bG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsCjE0NDc0OiAgICBjb25zdCB1bnNp Z25lZCBsb25nICptYXNrLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3NDogZXh0ZXJuIGludCBf X2JpdG1hcF9pbnRlcnNlY3RzKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCjE0NDc0OiAg ICBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3 NDogZXh0ZXJuIGludCBfX2JpdG1hcF9zdWJzZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFw MSwKMTQ0NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDIsIHVuc2lnbmVkIGludCBu Yml0cyk7CjE0NDc0OiBleHRlcm4gaW50IF9fYml0bWFwX3dlaWdodChjb25zdCB1bnNpZ25lZCBs b25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBuYml0cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2Jp dG1hcF9zZXQodW5zaWduZWQgbG9uZyAqbWFwLCB1bnNpZ25lZCBpbnQgc3RhcnQsIGludCBsZW4p OwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iaXRtYXBfY2xlYXIodW5zaWduZWQgbG9uZyAqbWFwLCB1 bnNpZ25lZCBpbnQgc3RhcnQsIGludCBsZW4pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdW5zaWdu ZWQgbG9uZyBiaXRtYXBfZmluZF9uZXh0X3plcm9fYXJlYV9vZmYodW5zaWduZWQgbG9uZyAqbWFw LAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKMTQ0NzQ6ICAgICAgICAgICB1 bnNpZ25lZCBsb25nIHN0YXJ0LAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGludCBuciwKMTQ0 NzQ6ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFsaWduX21hc2ssCjE0NDc0OiAgICAgICAgICAg dW5zaWduZWQgbG9uZyBhbGlnbl9vZmZzZXQpOwoxNDQ3NDogIyAxNzggIi4vaW5jbHVkZS9saW51 eC9iaXRtYXAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcKMTQ0NzQ6IGJpdG1hcF9maW5kX25leHRf emVyb19hcmVhKHVuc2lnbmVkIGxvbmcgKm1hcCwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcg c2l6ZSwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCjE0NDc0OiAgICAgICB1bnNp Z25lZCBpbnQgbnIsCjE0NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIGFsaWduX21hc2spCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29mZihtYXAsIHNp emUsIHN0YXJ0LCBuciwKMTQ0NzQ6ICAgICAgICAgICAgYWxpZ25fbWFzaywgMCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgYml0bWFwX3BhcnNlKGNvbnN0IGNoYXIgKmJ1Ziwg dW5zaWduZWQgaW50IGJ1ZmxlbiwKMTQ0NzQ6ICAgIHVuc2lnbmVkIGxvbmcgKmRzdCwgaW50IG5i aXRzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYml0bWFwX3BhcnNlX3VzZXIoY29uc3QgY2hhciAqdWJ1 ZiwgdW5zaWduZWQgaW50IHVsZW4sCjE0NDc0OiAgICB1bnNpZ25lZCBsb25nICpkc3QsIGludCBu Yml0cyk7CjE0NDc0OiBleHRlcm4gaW50IGJpdG1hcF9wYXJzZWxpc3QoY29uc3QgY2hhciAqYnVm LCB1bnNpZ25lZCBsb25nICptYXNrcCwKMTQ0NzQ6ICAgIGludCBubWFza2JpdHMpOwoxNDQ3NDog ZXh0ZXJuIGludCBiaXRtYXBfcGFyc2VsaXN0X3VzZXIoY29uc3QgY2hhciAqdWJ1ZiwgdW5zaWdu ZWQgaW50IHVsZW4sCjE0NDc0OiAgICB1bnNpZ25lZCBsb25nICpkc3QsIGludCBuYml0cyk7CjE0 NDc0OiBleHRlcm4gdm9pZCBiaXRtYXBfcmVtYXAodW5zaWduZWQgbG9uZyAqZHN0LCBjb25zdCB1 bnNpZ25lZCBsb25nICpzcmMsCjE0NDc0OiAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm9sZCwgY29u c3QgdW5zaWduZWQgbG9uZyAqbmV3LCB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3NDogZXh0ZXJu IGludCBiaXRtYXBfYml0cmVtYXAoaW50IG9sZGJpdCwKMTQ0NzQ6ICAgY29uc3QgdW5zaWduZWQg bG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsIGludCBiaXRzKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGJpdG1hcF9vbnRvKHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQg bG9uZyAqb3JpZywKMTQ0NzQ6ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqcmVsbWFwLCB1bnNpZ25l ZCBpbnQgYml0cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBiaXRtYXBfZm9sZCh1bnNpZ25lZCBsb25n ICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm9yaWcsCjE0NDc0OiAgIHVuc2lnbmVkIGludCBz eiwgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYml0bWFwX2ZpbmRfZnJl ZV9yZWdpb24odW5zaWduZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25lZCBpbnQgYml0cywgaW50IG9y ZGVyKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGJpdG1hcF9yZWxlYXNlX3JlZ2lvbih1bnNpZ25lZCBs b25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBwb3MsIGludCBvcmRlcik7CjE0NDc0OiBleHRlcm4g aW50IGJpdG1hcF9hbGxvY2F0ZV9yZWdpb24odW5zaWduZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25l ZCBpbnQgcG9zLCBpbnQgb3JkZXIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBiaXRtYXBfb3JkX3RvX3Bv cyhjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBvcmQsIHVuc2lnbmVk IGludCBuYml0cyk7CjE0NDc0OiBleHRlcm4gaW50IGJpdG1hcF9wcmludF90b19wYWdlYnVmKGJv b2wgbGlzdCwgY2hhciAqYnVmLAoxNDQ3NDogICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm1h c2twLCBpbnQgbm1hc2tiaXRzKTsKMTQ0NzQ6ICMgMjI5ICIuL2luY2x1ZGUvbGludXgvYml0bWFw LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF96ZXJvKHVuc2lnbmVkIGxvbmcgKmRzdCwgdW5zaWduZWQg aW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGludCBsZW4gPSAoKChuYml0cykg KyAoKHNpemVvZihsb25nKSAqIDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4KSkpICogc2l6 ZW9mKHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogIG1lbXNldChkc3QsIDAsIGxlbik7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX2ZpbGwodW5zaWduZWQgbG9uZyAqZHN0LCB1bnNp Z25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGxlbiA9ICgoKG5i aXRzKSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkgLyAoKHNpemVvZihsb25nKSAqIDgpKSkg KiBzaXplb2YodW5zaWduZWQgbG9uZyk7CjE0NDc0OiAgbWVtc2V0KGRzdCwgMHhmZiwgbGVuKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfY29weSh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBuYml0 cykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbGVuID0gKCgobmJpdHMpICsgKChzaXpl b2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKSAqIHNpemVvZih1bnNp Z25lZCBsb25nKTsKMTQ0NzQ6ICBtZW1jcHkoZHN0LCBzcmMsIGxlbik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX2NvcHlfY2xlYXJf dGFpbCh1bnNpZ25lZCBsb25nICpkc3QsCjE0NDc0OiAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNy YywgdW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIGJpdG1hcF9jb3B5KGRzdCwg c3JjLCBuYml0cyk7CjE0NDc0OiAgaWYgKG5iaXRzICUgNjQpCjE0NDc0OiAgIGRzdFtuYml0cyAv IDY0XSAmPSAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZv aWQgYml0bWFwX2Zyb21fYXJyMzIodW5zaWduZWQgbG9uZyAqYml0bWFwLCBjb25zdCB1MzIgKmJ1 ZiwKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBpbnQgbmJpdHMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQg Yml0bWFwX3RvX2FycjMyKHUzMiAqYnVmLCBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAsCjE0 NDc0OiAgICAgICAgdW5zaWduZWQgaW50IG5iaXRzKTsKMTQ0NzQ6ICMgMjc3ICIuL2luY2x1ZGUv bGludXgvYml0bWFwLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgYml0bWFwX2FuZCh1bnNpZ25lZCBsb25nICpkc3Qs IGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzEsCjE0NDc0OiAgICBjb25zdCB1bnNpZ25lZCBsb25n ICpzcmMyLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKChfX2J1aWx0 aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMpID4gMCkpCjE0 NDc0OiAgIHJldHVybiAoKmRzdCA9ICpzcmMxICYgKnNyYzIgJiAofjBVTCA+PiAoLShuYml0cykg JiAoNjQgLSAxKSkpKSAhPSAwOwoxNDQ3NDogIHJldHVybiBfX2JpdG1hcF9hbmQoZHN0LCBzcmMx LCBzcmMyLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX29yKHVu c2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKMTQ0NzQ6ICAgIGNv bnN0IHVuc2lnbmVkIGxvbmcgKnNyYzIsIHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0 NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYm IChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgKmRzdCA9ICpzcmMxIHwgKnNyYzI7CjE0NDc0OiAgZWxz ZQoxNDQ3NDogICBfX2JpdG1hcF9vcihkc3QsIHNyYzEsIHNyYzIsIG5iaXRzKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfeG9yKHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3Qg dW5zaWduZWQgbG9uZyAqc3JjMSwKMTQ0NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzIs IHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25z dGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAg KmRzdCA9ICpzcmMxIF4gKnNyYzI7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBfX2JpdG1hcF94b3Io ZHN0LCBzcmMxLCBzcmMyLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRt YXBfYW5kbm90KHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwK MTQ0NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzIsIHVuc2lnbmVkIGludCBuYml0cykK MTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJp dHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgcmV0dXJuICgqZHN0ID0gKnNyYzEg JiB+KCpzcmMyKSAmICh+MFVMID4+ICgtKG5iaXRzKSAmICg2NCAtIDEpKSkpICE9IDA7CjE0NDc0 OiAgcmV0dXJuIF9fYml0bWFwX2FuZG5vdChkc3QsIHNyYzEsIHNyYzIsIG5iaXRzKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfY29tcGxlbWVudCh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBuYml0 cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAo bmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgKmRzdCA9IH4oKnNyYyk7CjE0 NDc0OiAgZWxzZQoxNDQ3NDogICBfX2JpdG1hcF9jb21wbGVtZW50KGRzdCwgc3JjLCBuYml0cyk7 CjE0NDc0OiB9CjE0NDc0OiAjIDMyNyAiLi9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGJpdG1hcF9lcXVhbChjb25zdCB1bnNpZ25lZCBsb25nICpzcmMxLAoxNDQ3NDogICAgY29u c3QgdW5zaWduZWQgbG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3 NDogIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AobmJpdHMpICYmIChuYml0cykgPD0gNjQgJiYg KG5iaXRzKSA+IDApKQoxNDQ3NDogICByZXR1cm4gISgoKnNyYzEgXiAqc3JjMikgJiAofjBVTCA+ PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKTsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2NvbnN0YW50 X3AobmJpdHMgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgICAoKChuYml0cykgJiAoKHR5cGVvZihu Yml0cykpKDgpIC0gMSkpID09IDApKQoxNDQ3NDogICByZXR1cm4gIW1lbWNtcChzcmMxLCBzcmMy LCBuYml0cyAvIDgpOwoxNDQ3NDogIHJldHVybiBfX2JpdG1hcF9lcXVhbChzcmMxLCBzcmMyLCBu Yml0cyk7CjE0NDc0OiB9CjE0NDc0OiAjIDM0NyAiLi9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCBiaXRtYXBfb3JfZXF1YWwoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKMTQ0 NzQ6ICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMyLAoxNDQ3NDogICAgICAgIGNvbnN0 IHVuc2lnbmVkIGxvbmcgKnNyYzMsCjE0NDc0OiAgICAgICAgdW5zaWduZWQgaW50IG5iaXRzKQox NDQ3NDogewoxNDQ3NDogIGlmICghKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJp dHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgcmV0dXJuIF9fYml0bWFwX29yX2Vx dWFsKHNyYzEsIHNyYzIsIHNyYzMsIG5iaXRzKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAhKCgo KnNyYzEgfCAqc3JjMikgXiAqc3JjMykgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkp KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJpdG1hcF9pbnRlcnNlY3RzKGNvbnN0IHVu c2lnbmVkIGxvbmcgKnNyYzEsCjE0NDc0OiAgICBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMyLCB1 bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKChfX2J1aWx0aW5fY29uc3Rh bnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMpID4gMCkpCjE0NDc0OiAgIHJl dHVybiAoKCpzcmMxICYgKnNyYzIpICYgKH4wVUwgPj4gKC0obmJpdHMpICYgKDY0IC0gMSkpKSkg IT0gMDsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIHJldHVybiBfX2JpdG1hcF9pbnRlcnNlY3RzKHNy YzEsIHNyYzIsIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJpdG1hcF9zdWJz ZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKMTQ0NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGxv bmcgKnNyYzIsIHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVp bHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkK MTQ0NzQ6ICAgcmV0dXJuICEgKCgqc3JjMSAmIH4oKnNyYzIpKSAmICh+MFVMID4+ICgtKG5iaXRz KSAmICg2NCAtIDEpKSkpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIF9fYml0bWFwX3N1 YnNldChzcmMxLCBzcmMyLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRt YXBfZW1wdHkoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLCB1bnNpZ25lZCBuYml0cykKMTQ0NzQ6 IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9 IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgcmV0dXJuICEgKCpzcmMgJiAofjBVTCA+PiAo LShuYml0cykgJiAoNjQgLSAxKSkpKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBmaW5kX2ZpcnN0 X2JpdChzcmMsIG5iaXRzKSA9PSBuYml0czsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJp dG1hcF9mdWxsKGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywgdW5zaWduZWQgaW50IG5iaXRzKQox NDQ3NDogewoxNDQ3NDogIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AobmJpdHMpICYmIChuYml0 cykgPD0gNjQgJiYgKG5iaXRzKSA+IDApKQoxNDQ3NDogICByZXR1cm4gISAofigqc3JjKSAmICh+ MFVMID4+ICgtKG5iaXRzKSAmICg2NCAtIDEpKSkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGZp bmRfZmlyc3RfemVyb19iaXQoc3JjLCBuYml0cykgPT0gbmJpdHM7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGJpdG1hcF93ZWln aHQoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7 CjE0NDc0OiAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2 NCAmJiAobmJpdHMpID4gMCkpCjE0NDc0OiAgIHJldHVybiBod2VpZ2h0X2xvbmcoKnNyYyAmICh+ MFVMID4+ICgtKG5iaXRzKSAmICg2NCAtIDEpKSkpOwoxNDQ3NDogIHJldHVybiBfX2JpdG1hcF93 ZWlnaHQoc3JjLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBiaXRtYXBfc2V0KHVuc2lnbmVkIGxvbmcgKm1hcCwg dW5zaWduZWQgaW50IHN0YXJ0LAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7 CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiBuYml0cyA9PSAxKQox NDQ3NDogICBfX3NldF9iaXQoc3RhcnQsIG1hcCk7CjE0NDc0OiAgZWxzZSBpZiAoX19idWlsdGlu X2NvbnN0YW50X3Aoc3RhcnQgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgKCgoc3RhcnQpICYgKCh0 eXBlb2Yoc3RhcnQpKSg4KSAtIDEpKSA9PSAwKSAmJgoxNDQ3NDogICAgX19idWlsdGluX2NvbnN0 YW50X3AobmJpdHMgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgKCgobmJpdHMpICYgKCh0eXBlb2Yo bmJpdHMpKSg4KSAtIDEpKSA9PSAwKSkKMTQ0NzQ6ICAgbWVtc2V0KChjaGFyICopbWFwICsgc3Rh cnQgLyA4LCAweGZmLCBuYml0cyAvIDgpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgX19iaXRtYXBf c2V0KG1hcCwgc3RhcnQsIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGJpdG1hcF9jbGVhcih1bnNpZ25lZCBsb25n ICptYXAsIHVuc2lnbmVkIGludCBzdGFydCwKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IG5iaXRzKQox NDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgbmJpdHMg PT0gMSkKMTQ0NzQ6ICAgX19jbGVhcl9iaXQoc3RhcnQsIG1hcCk7CjE0NDc0OiAgZWxzZSBpZiAo X19idWlsdGluX2NvbnN0YW50X3Aoc3RhcnQgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgKCgoc3Rh cnQpICYgKCh0eXBlb2Yoc3RhcnQpKSg4KSAtIDEpKSA9PSAwKSAmJgoxNDQ3NDogICAgX19idWls dGluX2NvbnN0YW50X3AobmJpdHMgJiAoOCAtIDEpKSAmJgoxNDQ3NDogICAgKCgobmJpdHMpICYg KCh0eXBlb2YobmJpdHMpKSg4KSAtIDEpKSA9PSAwKSkKMTQ0NzQ6ICAgbWVtc2V0KChjaGFyICop bWFwICsgc3RhcnQgLyA4LCAwLCBuYml0cyAvIDgpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgX19i aXRtYXBfY2xlYXIobWFwLCBzdGFydCwgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGJpdG1hcF9zaGlmdF9yaWdodCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVk IGxvbmcgKnNyYywKMTQ0NzQ6ICAgICB1bnNpZ25lZCBpbnQgc2hpZnQsIHVuc2lnbmVkIGludCBu Yml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAm JiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0NzQ6ICAgKmRzdCA9ICgqc3JjICYg KH4wVUwgPj4gKC0obmJpdHMpICYgKDY0IC0gMSkpKSkgPj4gc2hpZnQ7CjE0NDc0OiAgZWxzZQox NDQ3NDogICBfX2JpdG1hcF9zaGlmdF9yaWdodChkc3QsIHNyYywgc2hpZnQsIG5iaXRzKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfc2hpZnRfbGVmdCh1bnNpZ25lZCBsb25n ICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKMTQ0NzQ6ICAgICB1bnNpZ25lZCBpbnQg c2hpZnQsIHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRp bl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKMTQ0 NzQ6ICAgKmRzdCA9ICgqc3JjIDw8IHNoaWZ0KSAmICh+MFVMID4+ICgtKG5iaXRzKSAmICg2NCAt IDEpKSk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBfX2JpdG1hcF9zaGlmdF9sZWZ0KGRzdCwgc3Jj LCBzaGlmdCwgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF9yZXBs YWNlKHVuc2lnbmVkIGxvbmcgKmRzdCwKMTQ0NzQ6ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcg Km9sZCwKMTQ0NzQ6ICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm5ldywKMTQ0NzQ6ICAgICAg IGNvbnN0IHVuc2lnbmVkIGxvbmcgKm1hc2ssCjE0NDc0OiAgICAgICB1bnNpZ25lZCBpbnQgbmJp dHMpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYg KG5iaXRzKSA8PSA2NCAmJiAobmJpdHMpID4gMCkpCjE0NDc0OiAgICpkc3QgPSAoKm9sZCAmIH4o Km1hc2spKSB8ICgqbmV3ICYgKm1hc2spOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgX19iaXRtYXBf cmVwbGFjZShkc3QsIG9sZCwgbmV3LCBtYXNrLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgYml0bWFwX25leHRfY2xlYXJfcmVnaW9uKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwK MTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGludCAqcnMsIHVuc2lnbmVkIGludCAqcmUsCjE0NDc0 OiAgICAgICAgICB1bnNpZ25lZCBpbnQgZW5kKQoxNDQ3NDogewoxNDQ3NDogICpycyA9IGZpbmRf bmV4dF96ZXJvX2JpdChiaXRtYXAsIGVuZCwgKnJzKTsKMTQ0NzQ6ICAqcmUgPSBmaW5kX25leHRf Yml0KGJpdG1hcCwgZW5kLCAqcnMgKyAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBi aXRtYXBfbmV4dF9zZXRfcmVnaW9uKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwKMTQ0NzQ6ICAgICAg ICB1bnNpZ25lZCBpbnQgKnJzLCB1bnNpZ25lZCBpbnQgKnJlLAoxNDQ3NDogICAgICAgIHVuc2ln bmVkIGludCBlbmQpCjE0NDc0OiB7CjE0NDc0OiAgKnJzID0gZmluZF9uZXh0X2JpdChiaXRtYXAs IGVuZCwgKnJzKTsKMTQ0NzQ6ICAqcmUgPSBmaW5kX25leHRfemVyb19iaXQoYml0bWFwLCBlbmQs ICpycyArIDEpOwoxNDQ3NDogfQoxNDQ3NDogIyA1MzUgIi4vaW5jbHVkZS9saW51eC9iaXRtYXAu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYml0bWFwX2Zyb21fdTY0KHVuc2lnbmVkIGxvbmcgKmRzdCwgdTY0IG1h c2spCjE0NDc0OiB7CjE0NDc0OiAgZHN0WzBdID0gbWFzayAmICh+MFVMKTsKMTQ0NzQ6IAoxNDQ3 NDogIGlmIChzaXplb2YobWFzaykgPiBzaXplb2YodW5zaWduZWQgbG9uZykpCjE0NDc0OiAgIGRz dFsxXSA9IG1hc2sgPj4gMzI7CjE0NDc0OiB9CjE0NDc0OiAjIDU1MSAiLi9pbmNsdWRlL2xpbnV4 L2JpdG1hcC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBiaXRtYXBfZ2V0X3ZhbHVlOChjb25zdCB1 bnNpZ25lZCBsb25nICptYXAsCjE0NDc0OiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQp CjE0NDc0OiB7CjE0NDc0OiAgY29uc3Qgc2l6ZV90IGluZGV4ID0gKChzdGFydCkgLyA2NCk7CjE0 NDc0OiAgY29uc3QgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBzdGFydCAlIDY0OwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuIChtYXBbaW5kZXhdID4+IG9mZnNldCkgJiAweEZGOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGJpdG1hcF9zZXRfdmFsdWU4KHVuc2lnbmVkIGxvbmcgKm1hcCwgdW5zaWduZWQgbG9u ZyB2YWx1ZSwKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQpCjE0NDc0OiB7CjE0 NDc0OiAgY29uc3Qgc2l6ZV90IGluZGV4ID0gKChzdGFydCkgLyA2NCk7CjE0NDc0OiAgY29uc3Qg dW5zaWduZWQgbG9uZyBvZmZzZXQgPSBzdGFydCAlIDY0OwoxNDQ3NDogCjE0NDc0OiAgbWFwW2lu ZGV4XSAmPSB+KDB4RkZVTCA8PCBvZmZzZXQpOwoxNDQ3NDogIG1hcFtpbmRleF0gfD0gdmFsdWUg PDwgb2Zmc2V0OwoxNDQ3NDogfQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2su aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVj dCBjcHVtYXNrIHsgdW5zaWduZWQgbG9uZyBiaXRzWygoKDgpICsgKChzaXplb2YobG9uZykgKiA4 KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKV07IH0gY3B1bWFza190OwoxNDQ3NDogIyAz OSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQg bnJfY3B1X2lkczsKMTQ0NzQ6ICMgOTAgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0 OiBleHRlcm4gc3RydWN0IGNwdW1hc2sgX19jcHVfcG9zc2libGVfbWFzazsKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgY3B1bWFzayBfX2NwdV9vbmxpbmVfbWFzazsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg Y3B1bWFzayBfX2NwdV9wcmVzZW50X21hc2s7CjE0NDc0OiBleHRlcm4gc3RydWN0IGNwdW1hc2sg X19jcHVfYWN0aXZlX21hc2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIGF0b21pY190IF9fbnVtX29ubGluZV9jcHVzOwoxNDQ3NDogIyAxMTAg Ii4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgbnVtX29ubGlu ZV9jcHVzKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19yZWFkKCZfX251bV9v bmxpbmVfY3B1cyk7CjE0NDc0OiB9CjE0NDc0OiAjIDEzMiAiLi9pbmNsdWRlL2xpbnV4L2NwdW1h c2suaCIKMTQ0NzQ6IGV4dGVybiBjcHVtYXNrX3QgY3B1c19ib290ZWRfb25jZV9tYXNrOwoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGNwdV9tYXhfYml0c193YXJuKHVuc2lnbmVkIGludCBjcHUsIHVuc2ln bmVkIGludCBiaXRzKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVtYXNrX2NoZWNrKHVuc2lnbmVk IGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgY3B1X21heF9iaXRzX3dhcm4oY3B1LCAoKHVuc2ln bmVkIGludCk4KSk7CjE0NDc0OiAgcmV0dXJuIGNwdTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjEyICIu L2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGNwdW1hc2tfZmly c3QoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZp bmRfZmlyc3RfYml0KCgoc3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGludCBjcHVtYXNrX2xhc3QoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNy Y3ApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZpbmRfbGFzdF9iaXQoKChzcmNwKS0+Yml0cyks ICgodW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdW5zaWduZWQgaW50 IGNwdW1hc2tfbmV4dChpbnQgbiwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApOwoxNDQ3NDog IyAyMzcgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgY3B1 bWFza19uZXh0X3plcm8oaW50IG4sIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwKQoxNDQ3NDog ewoxNDQ3NDogCjE0NDc0OiAgaWYgKG4gIT0gLTEpCjE0NDc0OiAgIGNwdW1hc2tfY2hlY2sobik7 CjE0NDc0OiAgcmV0dXJuIGZpbmRfbmV4dF96ZXJvX2JpdCgoKHNyY3ApLT5iaXRzKSwgKCh1bnNp Z25lZCBpbnQpOCksIG4rMSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGludCBjcHVtYXNrX25l eHRfYW5kKGludCBuLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqLCBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqKTsKMTQ0NzQ6IGludCBjcHVtYXNrX2FueV9idXQoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1h c2ssIHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogdW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxf c3ByZWFkKHVuc2lnbmVkIGludCBpLCBpbnQgbm9kZSk7CjE0NDc0OiAjIDI3MyAiLi9pbmNsdWRl L2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IGV4dGVybiBpbnQgY3B1bWFza19uZXh0X3dyYXAoaW50 IG4sIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCBpbnQgc3RhcnQsIGJvb2wgd3JhcCk7CjE0 NDc0OiAjIDMyNSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFz a19zZXRfY3B1KHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDog ewoxNDQ3NDogIHNldF9iaXQoY3B1bWFza19jaGVjayhjcHUpLCAoKGRzdHApLT5iaXRzKSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19jcHVtYXNrX3NldF9jcHUodW5zaWduZWQgaW50 IGNwdSwgc3RydWN0IGNwdW1hc2sgKmRzdHApCjE0NDc0OiB7CjE0NDc0OiAgX19zZXRfYml0KGNw dW1hc2tfY2hlY2soY3B1KSwgKChkc3RwKS0+Yml0cykpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNw dW1hc2tfY2xlYXJfY3B1KGludCBjcHUsIHN0cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDogewox NDQ3NDogIGNsZWFyX2JpdChjcHVtYXNrX2NoZWNrKGNwdSksICgoZHN0cCktPmJpdHMpKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NwdW1hc2tfY2xlYXJfY3B1KGludCBjcHUsIHN0 cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDogewoxNDQ3NDogIF9fY2xlYXJfYml0KGNwdW1hc2tf Y2hlY2soY3B1KSwgKChkc3RwKS0+Yml0cykpOwoxNDQ3NDogfQoxNDQ3NDogIyAzNTggIi4vaW5j bHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza190ZXN0X2NwdShpbnQgY3B1 LCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1bWFzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g dGVzdF9iaXQoY3B1bWFza19jaGVjayhjcHUpLCAoKChjcHVtYXNrKSktPmJpdHMpKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMzcyICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNw dW1hc2tfdGVzdF9hbmRfc2V0X2NwdShpbnQgY3B1LCBzdHJ1Y3QgY3B1bWFzayAqY3B1bWFzaykK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChjcHVtYXNrX2NoZWNrKGNw dSksICgoY3B1bWFzayktPmJpdHMpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzg2ICIuL2luY2x1ZGUv bGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNwdW1hc2tfdGVzdF9hbmRfY2xlYXJfY3B1KGlu dCBjcHUsIHN0cnVjdCBjcHVtYXNrICpjcHVtYXNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0 ZXN0X2FuZF9jbGVhcl9iaXQoY3B1bWFza19jaGVjayhjcHUpLCAoKGNwdW1hc2spLT5iaXRzKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBjcHVtYXNrX3NldGFsbChzdHJ1Y3QgY3B1bWFzayAqZHN0cCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBiaXRtYXBfZmlsbCgoKGRzdHApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1 bWFza19jbGVhcihzdHJ1Y3QgY3B1bWFzayAqZHN0cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBf emVybygoKGRzdHApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3NDog IyA0MTcgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19hbmQo c3RydWN0IGNwdW1hc2sgKmRzdHAsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1h c2sgKnNyYzFwLAoxNDQ3NDogICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMycCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0bWFwX2FuZCgoKGRzdHApLT5iaXRzKSwgKChzcmMx cCktPmJpdHMpLAoxNDQ3NDogICAgICAgICAgICAoKHNyYzJwKS0+Yml0cyksICgodW5zaWduZWQg aW50KTgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVtYXNrX29yKHN0cnVjdCBjcHVtYXNrICpk c3RwLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCjE0NDc0OiAgICAgICAgICBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX29yKCgoZHN0cCkt PmJpdHMpLCAoKHNyYzFwKS0+Yml0cyksCjE0NDc0OiAgICAgICAgICAgKChzcmMycCktPmJpdHMp LCAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza194b3Ioc3Ry dWN0IGNwdW1hc2sgKmRzdHAsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sg KnNyYzFwLAoxNDQ3NDogICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMycCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfeG9yKCgoZHN0cCktPmJpdHMpLCAoKHNyYzFwKS0+Yml0cyks CjE0NDc0OiAgICAgICAgICAgICgoc3JjMnApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwox NDQ3NDogfQoxNDQ3NDogIyA0NjAgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgY3B1bWFza19hbmRub3Qoc3RydWN0IGNwdW1hc2sgKmRzdHAsCjE0NDc0OiAgICAgICBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9hbmRub3QoKChkc3RwKS0+ Yml0cyksICgoc3JjMXApLT5iaXRzKSwKMTQ0NzQ6ICAgICAgICAoKHNyYzJwKS0+Yml0cyksICgo dW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza19jb21wbGVtZW50KHN0cnVjdCBj cHVtYXNrICpkc3RwLAoxNDQ3NDogICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNw KQoxNDQ3NDogewoxNDQ3NDogIGJpdG1hcF9jb21wbGVtZW50KCgoZHN0cCktPmJpdHMpLCAoKHNy Y3ApLT5iaXRzKSwKMTQ0NzQ6ICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBjcHVtYXNrX2VxdWFsKGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMxcCwKMTQ0NzQ6ICAg ICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJp dG1hcF9lcXVhbCgoKHNyYzFwKS0+Yml0cyksICgoc3JjMnApLT5iaXRzKSwKMTQ0NzQ6ICAgICAg ICAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgY3B1bWFza19vcl9lcXVh bChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCjE0NDc0OiAgICAgICAgIGNvbnN0IHN0cnVj dCBjcHVtYXNrICpzcmMycCwKMTQ0NzQ6ICAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNy YzNwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBfb3JfZXF1YWwoKChzcmMxcCktPmJp dHMpLCAoKHNyYzJwKS0+Yml0cyksCjE0NDc0OiAgICAgICAgICAgKChzcmMzcCktPmJpdHMpLCAo KHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNwdW1hc2tfaW50ZXJzZWN0cyhjb25zdCBz dHJ1Y3QgY3B1bWFzayAqc3JjMXAsCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9pbnRlcnNlY3RzKCgoc3Jj MXApLT5iaXRzKSwgKChzcmMycCktPmJpdHMpLAoxNDQ3NDogICAgICAgICAgICAgKCh1bnNpZ25l ZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3NDogIyA1MjUgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNr LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgY3B1bWFza19zdWJzZXQoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzFw LAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGJpdG1hcF9zdWJzZXQoKChzcmMxcCktPmJpdHMpLCAoKHNyYzJwKS0+Yml0cyks CjE0NDc0OiAgICAgICAgICgodW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNwdW1hc2tfZW1wdHkoY29u c3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9l bXB0eSgoKHNyY3ApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgY3B1bWFza19mdWxs KGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRt YXBfZnVsbCgoKHNyY3ApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBj cHVtYXNrX3dlaWdodChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gYml0bWFwX3dlaWdodCgoKHNyY3ApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNwdW1hc2tfc2hpZnRfcmlnaHQoc3RydWN0IGNwdW1hc2sg KmRzdHAsCjE0NDc0OiAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwLCBpbnQg bikKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfc2hpZnRfcmlnaHQoKChkc3RwKS0+Yml0cyksICgo c3JjcCktPmJpdHMpLCBuLAoxNDQ3NDogICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQpOCkpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGNwdW1hc2tfc2hpZnRfbGVmdChzdHJ1Y3QgY3B1bWFzayAqZHN0 cCwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCwgaW50IG4pCjE0 NDc0OiB7CjE0NDc0OiAgYml0bWFwX3NoaWZ0X2xlZnQoKChkc3RwKS0+Yml0cyksICgoc3JjcCkt PmJpdHMpLCBuLAoxNDQ3NDogICAgICAgICAgICAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGNwdW1hc2tfY29weShzdHJ1Y3QgY3B1bWFzayAqZHN0cCwKMTQ0NzQ6ICAgICBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqc3JjcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfY29weSgoKGRzdHAp LT5iaXRzKSwgKChzcmNwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgNjM2ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNwdW1hc2tf cGFyc2VfdXNlcihjb25zdCBjaGFyICpidWYsIGludCBsZW4sCjE0NDc0OiAgICAgICAgICBzdHJ1 Y3QgY3B1bWFzayAqZHN0cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0bWFwX3BhcnNlX3Vz ZXIoYnVmLCBsZW4sICgoZHN0cCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7CjE0NDc0OiB9 CjE0NDc0OiAjIDY1MCAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBjcHVt YXNrX3BhcnNlbGlzdF91c2VyKGNvbnN0IGNoYXIgKmJ1ZiwgaW50IGxlbiwKMTQ0NzQ6ICAgICAg ICAgIHN0cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBf cGFyc2VsaXN0X3VzZXIoYnVmLCBsZW4sICgoZHN0cCktPmJpdHMpLAoxNDQ3NDogICAgICAgICAg KCh1bnNpZ25lZCBpbnQpOCkpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NjQgIi4vaW5jbHVkZS9saW51 eC9jcHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19wYXJzZShjb25zdCBjaGFyICpidWYsIHN0 cnVjdCBjcHVtYXNrICpkc3RwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBfcGFyc2Uo YnVmLCAofjBVKSwgKChkc3RwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgNjc2ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNwdWxp c3RfcGFyc2UoY29uc3QgY2hhciAqYnVmLCBzdHJ1Y3QgY3B1bWFzayAqZHN0cCkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gYml0bWFwX3BhcnNlbGlzdChidWYsICgoZHN0cCktPmJpdHMpLCAoKHVu c2lnbmVkIGludCk4KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGludCBjcHVtYXNrX3NpemUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gKCgoKCh1bnNpZ25lZCBpbnQpOCkpICsgKChzaXplb2YobG9uZykgKiA4KSkgLSAxKSAv ICgoc2l6ZW9mKGxvbmcpICogOCkpKSAqIHNpemVvZihsb25nKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg NzQ5ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgY3B1 bWFzayBjcHVtYXNrX3Zhcl90WzFdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGFsbG9jX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgKm1hc2ssIGdmcF90IGZs YWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGFsbG9jX2NwdW1hc2tfdmFyX25vZGUoY3B1bWFza192YXJfdCAqbWFzaywgZ2ZwX3Qg ZmxhZ3MsCjE0NDc0OiAgICAgICAgaW50IG5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRy dWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgemFsbG9jX2NwdW1hc2tfdmFyKGNwdW1h c2tfdmFyX3QgKm1hc2ssIGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGNwdW1hc2tfY2xl YXIoKm1hc2spOwoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIHphbGxvY19jcHVtYXNrX3Zhcl9ub2RlKGNwdW1hc2tfdmFyX3QgKm1hc2ssIGdmcF90IGZs YWdzLAoxNDQ3NDogICAgICAgIGludCBub2RlKQoxNDQ3NDogewoxNDQ3NDogIGNwdW1hc2tfY2xl YXIoKm1hc2spOwoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGFsbG9jX2Jvb3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCAqbWFzaykKMTQ0NzQ6 IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmcmVlX2NwdW1hc2tfdmFyKGNwdW1hc2tf dmFyX3QgbWFzaykKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmcmVlX2Jv b3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCBtYXNrKQoxNDQ3NDogewoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIGNwdW1hc2tfYXZhaWxhYmxlKGNwdW1hc2tfdmFyX3QgbWFzaykK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGxvbmcgY3B1X2FsbF9i aXRzWygoKDgpICsgKChzaXplb2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICog OCkpKV07CjE0NDc0OiAjIDgwOSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0NzQ6IHZv aWQgaW5pdF9jcHVfcHJlc2VudChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjKTsKMTQ0NzQ6IHZv aWQgaW5pdF9jcHVfcG9zc2libGUoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYyk7CjE0NDc0OiB2 b2lkIGluaXRfY3B1X29ubGluZShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjKTsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCByZXNldF9jcHVfcG9zc2libGVfbWFzayh2b2lkKQoxNDQ3NDogewoxNDQ3NDog IGJpdG1hcF96ZXJvKCgoJl9fY3B1X3Bvc3NpYmxlX21hc2spLT5iaXRzKSwgOCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IHNldF9jcHVfcG9zc2libGUodW5zaWduZWQgaW50 IGNwdSwgYm9vbCBwb3NzaWJsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAocG9zc2libGUpCjE0NDc0 OiAgIGNwdW1hc2tfc2V0X2NwdShjcHUsICZfX2NwdV9wb3NzaWJsZV9tYXNrKTsKMTQ0NzQ6ICBl bHNlCjE0NDc0OiAgIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X3Bvc3NpYmxlX21hc2sp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBzZXRfY3B1X3ByZXNlbnQodW5z aWduZWQgaW50IGNwdSwgYm9vbCBwcmVzZW50KQoxNDQ3NDogewoxNDQ3NDogIGlmIChwcmVzZW50 KQoxNDQ3NDogICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmX19jcHVfcHJlc2VudF9tYXNrKTsKMTQ0 NzQ6ICBlbHNlCjE0NDc0OiAgIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X3ByZXNlbnRf bWFzayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2V0X2NwdV9vbmxpbmUodW5zaWdu ZWQgaW50IGNwdSwgYm9vbCBvbmxpbmUpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBzZXRf Y3B1X2FjdGl2ZSh1bnNpZ25lZCBpbnQgY3B1LCBib29sIGFjdGl2ZSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpZiAoYWN0aXZlKQoxNDQ3NDogICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmX19jcHVfYWN0aXZl X21hc2spOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgY3B1bWFza19jbGVhcl9jcHUoY3B1LCAmX19j cHVfYWN0aXZlX21hc2spOwoxNDQ3NDogfQoxNDQ3NDogIyA4NjIgIi4vaW5jbHVkZS9saW51eC9j cHVtYXNrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgX19jaGVja19pc19iaXRtYXAoY29uc3QgdW5zaWduZWQgbG9u ZyAqYml0bWFwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAxOwoxNDQ3NDogfQoxNDQ3NDogIyA4 NzQgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCjE0NDc0OiBleHRlcm4gY29uc3QgdW5zaWdu ZWQgbG9uZwoxNDQ3NDogIGNwdV9iaXRfYml0bWFwWzY0ICsxXVsoKCg4KSArICgoc2l6ZW9mKGxv bmcpICogOCkpIC0gMSkgLyAoKHNpemVvZihsb25nKSAqIDgpKSldOwoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBj b25zdCBzdHJ1Y3QgY3B1bWFzayAqZ2V0X2NwdV9tYXNrKHVuc2lnbmVkIGludCBjcHUpCjE0NDc0 OiB7CjE0NDc0OiAgY29uc3QgdW5zaWduZWQgbG9uZyAqcCA9IGNwdV9iaXRfYml0bWFwWzEgKyBj cHUgJSA2NF07CjE0NDc0OiAgcCAtPSBjcHUgLyA2NDsKMTQ0NzQ6ICByZXR1cm4gKChzdHJ1Y3Qg Y3B1bWFzayAqKSgxID8gKHApIDogKHZvaWQgKilzaXplb2YoX19jaGVja19pc19iaXRtYXAocCkp KSk7CjE0NDc0OiB9CjE0NDc0OiAjIDkxMSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHNzaXplX3QKMTQ0NzQ6IGNwdW1hcF9wcmludF90b19wYWdlYnVmKGJvb2wgbGlzdCwgY2hh ciAqYnVmLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYml0bWFwX3ByaW50X3RvX3BhZ2VidWYobGlzdCwgYnVmLCAoKG1hc2spLT5iaXRzKSwKMTQ0 NzQ6ICAgICAgICAgICBucl9jcHVfaWRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9jcHVtYXNrLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNwdW1hc2tf dmFyX3QgY3B1X2NhbGxpbl9tYXNrOwoxNDQ3NDogZXh0ZXJuIGNwdW1hc2tfdmFyX3QgY3B1X2Nh bGxvdXRfbWFzazsKMTQ0NzQ6IGV4dGVybiBjcHVtYXNrX3Zhcl90IGNwdV9pbml0aWFsaXplZF9t YXNrOwoxNDQ3NDogZXh0ZXJuIGNwdW1hc2tfdmFyX3QgY3B1X3NpYmxpbmdfc2V0dXBfbWFzazsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0dXBfY3B1X2xvY2FsX21hc2tzKHZvaWQpOwox NDQ3NDogIyAxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIgMgoxNDQ3NDogIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vbXNyLmgiIDEKMTQ0NzQ6ICMgMTMgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vbXNyLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1zciB7CjE0NDc0 OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdTMyIGw7CjE0NDc0OiAgICB1 MzIgaDsKMTQ0NzQ6ICAgfTsKMTQ0NzQ6ICAgdTY0IHE7CjE0NDc0OiAgfTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtc3JfaW5mbyB7CjE0NDc0OiAgdTMyIG1zcl9ubzsKMTQ0NzQ6 ICBzdHJ1Y3QgbXNyIHJlZzsKMTQ0NzQ6ICBzdHJ1Y3QgbXNyICptc3JzOwoxNDQ3NDogIGludCBl cnI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbXNyX3JlZ3NfaW5mbyB7CjE0NDc0 OiAgdTMyICpyZWdzOwoxNDQ3NDogIGludCBlcnI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3Qgc2F2ZWRfbXNyIHsKMTQ0NzQ6ICBib29sIHZhbGlkOwoxNDQ3NDogIHN0cnVjdCBtc3Jf aW5mbyBpbmZvOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNhdmVkX21zcnMgewox NDQ3NDogIHVuc2lnbmVkIGludCBudW07CjE0NDc0OiAgc3RydWN0IHNhdmVkX21zciAqYXJyYXk7 CjE0NDc0OiB9OwoxNDQ3NDogIyA2OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIKMTQ0 NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oIiAxCjE0NDc0OiAjIDEy ICIuL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC1kZWZzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9zdGF0aWNfa2V5LmgiIDEKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVkZS9saW51eC90cmFj ZXBvaW50LWRlZnMuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdHJhY2VfcHJpbnRfZmxhZ3Mg ewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbWFzazsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRyYWNlX3ByaW50X2ZsYWdzX3U2NCB7CjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIG1hc2s7CjE0NDc0OiAgY29uc3QgY2hhciAqbmFtZTsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0cmFjZXBvaW50X2Z1bmMgewoxNDQ3NDog IHZvaWQgKmZ1bmM7CjE0NDc0OiAgdm9pZCAqZGF0YTsKMTQ0NzQ6ICBpbnQgcHJpbzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0cmFjZXBvaW50IHsKMTQ0NzQ6ICBjb25zdCBjaGFy ICpuYW1lOwoxNDQ3NDogIHN0cnVjdCBzdGF0aWNfa2V5IGtleTsKMTQ0NzQ6ICBpbnQgKCpyZWdm dW5jKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqdW5yZWdmdW5jKSh2b2lkKTsKMTQ0NzQ6ICBzdHJ1 Y3QgdHJhY2Vwb2ludF9mdW5jICpmdW5jczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogdHlwZWRlZiBjb25zdCBpbnQgdHJhY2Vwb2ludF9wdHJfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwIHsKMTQ0NzQ6ICBz dHJ1Y3QgdHJhY2Vwb2ludCAqdHA7CjE0NDc0OiAgdm9pZCAqYnBmX2Z1bmM7CjE0NDc0OiAgdTMy IG51bV9hcmdzOwoxNDQ3NDogIHUzMiB3cml0YWJsZV9zaXplOwoxNDQ3NDogfSBfX2F0dHJpYnV0 ZV9fKChfX2FsaWduZWRfXygzMikpKTsKMTQ0NzQ6ICMgNjkgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXNyLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJh Y2Vwb2ludF9yZWFkX21zcjsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgdHJhY2Vwb2ludCBfX3RyYWNl cG9pbnRfd3JpdGVfbXNyOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJhY2Vw b2ludF9yZHBtYzsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZG9fdHJhY2Vfd3JpdGVfbXNy KHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwsIGludCBmYWlsZWQpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgZG9fdHJhY2VfcmVhZF9tc3IodW5zaWduZWQgaW50IG1zciwgdTY0IHZhbCwgaW50IGZhaWxl ZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBkb190cmFjZV9yZHBtYyh1bnNpZ25lZCBpbnQgbXNyLCB1 NjQgdmFsLCBpbnQgZmFpbGVkKTsKMTQ0NzQ6ICMgOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v bXNyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fcmRtc3IodW5zaWduZWQgaW50IG1zcikKMTQ0NzQ6IHsKMTQ0NzQ6 ICB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgi MTogcmRtc3JcbiIKMTQ0NzQ6ICAgICAgICAiMjpcbiIKMTQ0NzQ6ICAgICAgICAiIC5wdXNoc2Vj dGlvbiBcIl9fZXhfdGFibGVcIixcImFcIlxuIiAiIC5iYWxpZ24gNFxuIiAiIC5sb25nICgiICIx YiIgIikgLSAuXG4iICIgLmxvbmcgKCIgIjJiIiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiZXhfaGFu ZGxlcl9yZG1zcl91bnNhZmUiICIpIC0gLlxuIiAiIC5wb3BzZWN0aW9uXG4iCjE0NDc0OiAgICAg ICAgOiAiPWEiIChsb3cpLCAiPWQiIChoaWdoKSA6ICJjIiAobXNyKSk7CjE0NDc0OiAKMTQ0NzQ6 ICByZXR1cm4gKChsb3cpIHwgKGhpZ2gpIDw8IDMyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX193cm1zcih1bnNp Z25lZCBpbnQgbXNyLCB1MzIgbG93LCB1MzIgaGlnaCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9s YXRpbGUoIjE6IHdybXNyXG4iCjE0NDc0OiAgICAgICAgIjI6XG4iCjE0NDc0OiAgICAgICAgIiAu cHVzaHNlY3Rpb24gXCJfX2V4X3RhYmxlXCIsXCJhXCJcbiIgIiAuYmFsaWduIDRcbiIgIiAubG9u ZyAoIiAiMWIiICIpIC0gLlxuIiAiIC5sb25nICgiICIyYiIgIikgLSAuXG4iICIgLmxvbmcgKCIg ImV4X2hhbmRsZXJfd3Jtc3JfdW5zYWZlIiAiKSAtIC5cbiIgIiAucG9wc2VjdGlvblxuIgoxNDQ3 NDogICAgICAgIDogOiAiYyIgKG1zciksICJhIihsb3cpLCAiZCIgKGhpZ2gpIDogIm1lbW9yeSIp OwoxNDQ3NDogfQoxNDQ3NDogIyAxMjUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlX3JlYWRfbXNyKHVuc2lnbmVkIGludCBtc3Ip CjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKMTQ0NzQ6IAoxNDQ3NDog IHZhbCA9IF9fcmRtc3IobXNyKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChzdGF0aWNfa2V5X2ZhbHNl KCYoX190cmFjZXBvaW50X3JlYWRfbXNyKS5rZXkpKQoxNDQ3NDogICBkb190cmFjZV9yZWFkX21z cihtc3IsIHZhbCwgMCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdmFsOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlX3JlYWRfbXNyX3NhZmUodW5zaWdu ZWQgaW50IG1zciwKMTQ0NzQ6ICAgICAgICAgICAgIGludCAqZXJyKQoxNDQ3NDogewoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgbG93LCBoaWdoOwoxNDQ3NDogCjE0NDc0OiAgYXNtIHZvbGF0aWxlKCIy OiByZG1zciA7IHhvciAlW2Vycl0sJVtlcnJdXG4iCjE0NDc0OiAgICAgICAgIjE6XG5cdCIKMTQ0 NzQ6ICAgICAgICAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuXHQiCjE0NDc0OiAgICAgICAgIjM6 IG1vdiAlW2ZhdWx0XSwlW2Vycl1cblx0IgoxNDQ3NDogICAgICAgICJ4b3JsICUlZWF4LCAlJWVh eFxuXHQiCjE0NDc0OiAgICAgICAgInhvcmwgJSVlZHgsICUlZWR4XG5cdCIKMTQ0NzQ6ICAgICAg ICAiam1wIDFiXG5cdCIKMTQ0NzQ6ICAgICAgICAiLnByZXZpb3VzXG5cdCIKMTQ0NzQ6ICAgICAg ICAiIC5wdXNoc2VjdGlvbiBcIl9fZXhfdGFibGVcIixcImFcIlxuIiAiIC5iYWxpZ24gNFxuIiAi IC5sb25nICgiICIyYiIgIikgLSAuXG4iICIgLmxvbmcgKCIgIjNiIiAiKSAtIC5cbiIgIiAubG9u ZyAoIiAiZXhfaGFuZGxlcl9kZWZhdWx0IiAiKSAtIC5cbiIgIiAucG9wc2VjdGlvblxuIgoxNDQ3 NDogICAgICAgIDogW2Vycl0gIj1yIiAoKmVyciksICI9YSIgKGxvdyksICI9ZCIgKGhpZ2gpCjE0 NDc0OiAgICAgICAgOiAiYyIgKG1zciksIFtmYXVsdF0gImkiICgtNSkpOwoxNDQ3NDogIGlmIChz dGF0aWNfa2V5X2ZhbHNlKCYoX190cmFjZXBvaW50X3JlYWRfbXNyKS5rZXkpKQoxNDQ3NDogICBk b190cmFjZV9yZWFkX21zcihtc3IsICgobG93KSB8IChoaWdoKSA8PCAzMiksICplcnIpOwoxNDQ3 NDogIHJldHVybiAoKGxvdykgfCAoaGlnaCkgPDwgMzIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpCjE0 NDc0OiBuYXRpdmVfd3JpdGVfbXNyKHVuc2lnbmVkIGludCBtc3IsIHUzMiBsb3csIHUzMiBoaWdo KQoxNDQ3NDogewoxNDQ3NDogIF9fd3Jtc3IobXNyLCBsb3csIGhpZ2gpOwoxNDQ3NDogCjE0NDc0 OiAgaWYgKHN0YXRpY19rZXlfZmFsc2UoJihfX3RyYWNlcG9pbnRfd3JpdGVfbXNyKS5rZXkpKQox NDQ3NDogICBkb190cmFjZV93cml0ZV9tc3IobXNyLCAoKHU2NCloaWdoIDw8IDMyIHwgbG93KSwg MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKQoxNDQ3NDogbmF0aXZlX3dyaXRlX21zcl9zYWZlKHVuc2ln bmVkIGludCBtc3IsIHUzMiBsb3csIHUzMiBoaWdoKQoxNDQ3NDogewoxNDQ3NDogIGludCBlcnI7 CjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoIjI6IHdybXNyIDsgeG9yICVbZXJyXSwlW2Vy cl1cbiIKMTQ0NzQ6ICAgICAgICAiMTpcblx0IgoxNDQ3NDogICAgICAgICIuc2VjdGlvbiAuZml4 dXAsXCJheFwiXG5cdCIKMTQ0NzQ6ICAgICAgICAiMzogIG1vdiAlW2ZhdWx0XSwlW2Vycl0gOyBq bXAgMWJcblx0IgoxNDQ3NDogICAgICAgICIucHJldmlvdXNcblx0IgoxNDQ3NDogICAgICAgICIg LnB1c2hzZWN0aW9uIFwiX19leF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxv bmcgKCIgIjJiIiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiM2IiICIpIC0gLlxuIiAiIC5sb25nICgi ICJleF9oYW5kbGVyX2RlZmF1bHQiICIpIC0gLlxuIiAiIC5wb3BzZWN0aW9uXG4iCjE0NDc0OiAg ICAgICAgOiBbZXJyXSAiPWEiIChlcnIpCjE0NDc0OiAgICAgICAgOiAiYyIgKG1zciksICIwIiAo bG93KSwgImQiIChoaWdoKSwKMTQ0NzQ6ICAgICAgICAgIFtmYXVsdF0gImkiICgtNSkKMTQ0NzQ6 ICAgICAgICA6ICJtZW1vcnkiKTsKMTQ0NzQ6ICBpZiAoc3RhdGljX2tleV9mYWxzZSgmKF9fdHJh Y2Vwb2ludF93cml0ZV9tc3IpLmtleSkpCjE0NDc0OiAgIGRvX3RyYWNlX3dyaXRlX21zcihtc3Is ICgodTY0KWhpZ2ggPDwgMzIgfCBsb3cpLCBlcnIpOwoxNDQ3NDogIHJldHVybiBlcnI7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcmRtc3Jfc2FmZV9yZWdzKHUzMiByZWdzWzhd KTsKMTQ0NzQ6IGV4dGVybiBpbnQgd3Jtc3Jfc2FmZV9yZWdzKHUzMiByZWdzWzhdKTsKMTQ0NzQ6 ICMgMjAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGxvbmcgcmR0c2Modm9pZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKMTQ0NzQ6IAoxNDQ3NDogIGFz bSB2b2xhdGlsZSgicmR0c2MiIDogIj1hIiAobG93KSwgIj1kIiAoaGlnaCkpOwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuICgobG93KSB8IChoaWdoKSA8PCAzMik7CjE0NDc0OiB9CjE0NDc0OiAjIDIx OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgdW5zaWduZWQgbG9uZyBsb25nIHJkdHNjX29yZGVyZWQodm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKMTQ0NzQ6ICMgMjM2ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiIyBBTFQ6 IG9sZGluc3RyMlxuIiAiNjYxOlxuXHQiICJyZHRzYyIgIlxuNjYyOlxuIiAiIyBBTFQ6IHBhZGRp bmcyXG4iICIuc2tpcCAtKCgiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikgXiAoKCgi ICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIg IikpICYgLSgtKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIDwgKCIgIjY2NSIiMiIiZi0i IjY2NCIiMiIiZiIgIikpKSkpIiAiIC0gKCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoIiAi KCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIx IiJmIiAiKSBeICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSAmIC0oLSgoIiAiNjY1IiIx IiJmLSIiNjY0IiIxIiJmIiAiKSA8ICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSkpKSIg IiAtICgiICI2NjJiLTY2MWIiICIpKSwgMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9u IC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIg IjY2NCIiMSIiZiAtIC5cbiIgIiAud29yZCAiICIoIDMqMzIrMTgpIiAiXG4iICIgLmJ5dGUgIiAi NjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIg IiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcg IiAiNjY0IiIyIiJmIC0gLlxuIiAiIC53b3JkICIgIiggMSozMisyNykiICJcbiIgIiAuYnl0ZSAi ICI2NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIlxu IiAiIC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0 aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQg IiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgImxmZW5jZTsgcmR0c2MiICJcbiIgIjY2NSIiMSIg IjpcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIyIiAiXG4iICI2NjQiIjIiIjpcblx0IiAicmR0 c2NwIiAiXG4iICI2NjUiIjIiICI6XG4iICIucG9wc2VjdGlvblxuIgoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICAgIDogIj1hIiAobG93KSwgIj1kIiAoaGlnaCkKMTQ0NzQ6IAoxNDQ3NDogICAgOjog ImVjeCIpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICgobG93KSB8IChoaWdoKSA8PCAzMik7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVfcmVhZF9wbWMo aW50IGNvdW50ZXIpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb3csIGhpZ2g7CjE0 NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoInJkcG1jIiA6ICI9YSIgKGxvdyksICI9ZCIgKGhp Z2gpIDogImMiIChjb3VudGVyKSk7CjE0NDc0OiAgaWYgKHN0YXRpY19rZXlfZmFsc2UoJihfX3Ry YWNlcG9pbnRfcmRwbWMpLmtleSkpCjE0NDc0OiAgIGRvX3RyYWNlX3JkcG1jKGNvdW50ZXIsICgo bG93KSB8IChoaWdoKSA8PCAzMiksIDApOwoxNDQ3NDogIHJldHVybiAoKGxvdykgfCAoaGlnaCkg PDwgMzIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS9saW51eC9lcnJuby5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZXJybm8uaCIgMQoxNDQ3NDog IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2Vycm5vLmgiIDEKMTQ0 NzQ6ICMgMiAiLi9pbmNsdWRlL3VhcGkvbGludXgvZXJybm8uaCIgMgoxNDQ3NDogIyA2ICIuL2lu Y2x1ZGUvbGludXgvZXJybm8uaCIgMgoxNDQ3NDogIyAyNjAgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXNyLmgiIDIKMTQ0NzQ6ICMgMjczICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB3cm1zcih1bnNpZ25lZCBpbnQgbXNyLCB1MzIgbG93LCB1MzIgaGlnaCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfd3JpdGVfbXNyKG1zciwgbG93LCBoaWdoKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cm1zcmwodW5zaWdu ZWQgaW50IG1zciwgdTY0IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfd3JpdGVfbXNyKG1z ciwgKHUzMikodmFsICYgMHhmZmZmZmZmZlVMTCksICh1MzIpKHZhbCA+PiAzMikpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB3cm1zcl9zYWZlKHVuc2lnbmVkIGludCBtc3Is IHUzMiBsb3csIHUzMiBoaWdoKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBuYXRpdmVfd3JpdGVf bXNyX3NhZmUobXNyLCBsb3csIGhpZ2gpOwoxNDQ3NDogfQoxNDQ3NDogIyAzMDIgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vbXNyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmRtc3JsX3NhZmUodW5zaWduZWQgaW50 IG1zciwgdW5zaWduZWQgbG9uZyBsb25nICpwKQoxNDQ3NDogewoxNDQ3NDogIGludCBlcnI7CjE0 NDc0OiAKMTQ0NzQ6ICAqcCA9IG5hdGl2ZV9yZWFkX21zcl9zYWZlKG1zciwgJmVycik7CjE0NDc0 OiAgcmV0dXJuIGVycjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzI0ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL21zci5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHdybXNybF9zYWZlKHUzMiBtc3IsIHU2NCB2YWwpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIHdybXNyX3NhZmUobXNyLCAodTMyKXZhbCwgKHUzMikodmFsID4+ IDMyKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IG1zciAqbXNyc19hbGxvYyh2b2lkKTsKMTQ0NzQ6IHZvaWQgbXNyc19mcmVl KHN0cnVjdCBtc3IgKm1zcnMpOwoxNDQ3NDogaW50IG1zcl9zZXRfYml0KHUzMiBtc3IsIHU4IGJp dCk7CjE0NDc0OiBpbnQgbXNyX2NsZWFyX2JpdCh1MzIgbXNyLCB1OCBiaXQpOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGludCByZG1zcl9vbl9jcHUodW5zaWduZWQgaW50IGNwdSwgdTMyIG1zcl9u bywgdTMyICpsLCB1MzIgKmgpOwoxNDQ3NDogaW50IHdybXNyX29uX2NwdSh1bnNpZ25lZCBpbnQg Y3B1LCB1MzIgbXNyX25vLCB1MzIgbCwgdTMyIGgpOwoxNDQ3NDogaW50IHJkbXNybF9vbl9jcHUo dW5zaWduZWQgaW50IGNwdSwgdTMyIG1zcl9ubywgdTY0ICpxKTsKMTQ0NzQ6IGludCB3cm1zcmxf b25fY3B1KHVuc2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHU2NCBxKTsKMTQ0NzQ6IHZvaWQg cmRtc3Jfb25fY3B1cyhjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgdTMyIG1zcl9ubywgc3Ry dWN0IG1zciAqbXNycyk7CjE0NDc0OiB2b2lkIHdybXNyX29uX2NwdXMoY29uc3Qgc3RydWN0IGNw dW1hc2sgKm1hc2ssIHUzMiBtc3Jfbm8sIHN0cnVjdCBtc3IgKm1zcnMpOwoxNDQ3NDogaW50IHJk bXNyX3NhZmVfb25fY3B1KHVuc2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHUzMiAqbCwgdTMy ICpoKTsKMTQ0NzQ6IGludCB3cm1zcl9zYWZlX29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIg bXNyX25vLCB1MzIgbCwgdTMyIGgpOwoxNDQ3NDogaW50IHJkbXNybF9zYWZlX29uX2NwdSh1bnNp Z25lZCBpbnQgY3B1LCB1MzIgbXNyX25vLCB1NjQgKnEpOwoxNDQ3NDogaW50IHdybXNybF9zYWZl X29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIgbXNyX25vLCB1NjQgcSk7CjE0NDc0OiBpbnQg cmRtc3Jfc2FmZV9yZWdzX29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIgcmVnc1s4XSk7CjE0 NDc0OiBpbnQgd3Jtc3Jfc2FmZV9yZWdzX29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIgcmVn c1s4XSk7CjE0NDc0OiAjIDIzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAy CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwZWNp YWxfaW5zbnMuaCIgMQoxNDQ3NDogIyAxOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGVjaWFs X2luc25zLmgiCjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBfX2ZvcmNlX29yZGVyOwoxNDQ3 NDogCjE0NDc0OiB2b2lkIG5hdGl2ZV93cml0ZV9jcjAodW5zaWduZWQgbG9uZyB2YWwpOwoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5hdGl2ZV9yZWFkX2NyMCh2b2lkKQoxNDQ3NDogewox NDQ3NDogIHVuc2lnbmVkIGxvbmcgdmFsOwoxNDQ3NDogIGFzbSB2b2xhdGlsZSgibW92ICUlY3Iw LCUwXG5cdCIgOiAiPXIiICh2YWwpLCAiPW0iIChfX2ZvcmNlX29yZGVyKSk7CjE0NDc0OiAgcmV0 dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBuYXRpdmVfcmVh ZF9jcjIodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHZhbDsKMTQ0NzQ6ICBh c20gdm9sYXRpbGUoIm1vdiAlJWNyMiwlMFxuXHQiIDogIj1yIiAodmFsKSwgIj1tIiAoX19mb3Jj ZV9vcmRlcikpOwoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgbmF0aXZlX3dyaXRlX2NyMih1bnNpZ25lZCBsb25nIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBh c20gdm9sYXRpbGUoIm1vdiAlMCwlJWNyMiI6IDogInIiICh2YWwpLCAibSIgKF9fZm9yY2Vfb3Jk ZXIpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX25hdGl2ZV9yZWFk X2NyMyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgdmFsOwoxNDQ3NDogIGFz bSB2b2xhdGlsZSgibW92ICUlY3IzLCUwXG5cdCIgOiAiPXIiICh2YWwpLCAiPW0iIChfX2ZvcmNl X29yZGVyKSk7CjE0NDc0OiAgcmV0dXJuIHZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBuYXRpdmVfd3JpdGVfY3IzKHVuc2lnbmVkIGxvbmcgdmFsKQoxNDQ3NDogewoxNDQ3NDogIGFz bSB2b2xhdGlsZSgibW92ICUwLCUlY3IzIjogOiAiciIgKHZhbCksICJtIiAoX19mb3JjZV9vcmRl cikpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5hdGl2ZV9yZWFkX2Ny NCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgdmFsOwoxNDQ3NDogIyA2OSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGVjaWFsX2luc25zLmgiCjE0NDc0OiAgYXNtIHZvbGF0 aWxlKCJtb3YgJSVjcjQsJTBcblx0IiA6ICI9ciIgKHZhbCksICI9bSIgKF9fZm9yY2Vfb3JkZXIp KTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiB2YWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZv aWQgbmF0aXZlX3dyaXRlX2NyNCh1bnNpZ25lZCBsb25nIHZhbCk7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdTMyIHJkcGtydSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHUzMiBlY3ggPSAwOwoxNDQ3 NDogIHUzMiBlZHgsIHBrcnU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgiLmJ5dGUgMHgwZiwweDAxLDB4ZWVcblx0IgoxNDQ3NDog ICAgICAgIDogIj1hIiAocGtydSksICI9ZCIgKGVkeCkKMTQ0NzQ6ICAgICAgICA6ICJjIiAoZWN4 KSk7CjE0NDc0OiAgcmV0dXJuIHBrcnU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3Jw a3J1KHUzMiBwa3J1KQoxNDQ3NDogewoxNDQ3NDogIHUzMiBlY3ggPSAwLCBlZHggPSAwOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUo Ii5ieXRlIDB4MGYsMHgwMSwweGVmXG5cdCIKMTQ0NzQ6ICAgICAgICA6IDogImEiIChwa3J1KSwg ImMiKGVjeCksICJkIihlZHgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3dyaXRl X3BrcnUodTMyIHBrcnUpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBpZiAocGtydSA9PSByZHBrcnUoKSkKMTQ0NzQ6ICAgcmV0dXJuOwoxNDQ3NDogCjE0 NDc0OiAgd3Jwa3J1KHBrcnUpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjcgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vc3BlY2lhbF9pbnNucy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVfd2JpbnZkKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJ3YmludmQiOiA6IDoibWVtb3J5Iik7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIG5hdGl2ZV9sb2FkX2dzX2luZGV4KHVu c2lnbmVkKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3JlYWRfY3I0KHZvaWQpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG5hdGl2ZV9yZWFkX2NyNCgpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgcmVh ZF9jcjAodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbmF0aXZlX3JlYWRfY3IwKCk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3JpdGVfY3IwKHVuc2lnbmVkIGxvbmcgeCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfd3JpdGVfY3IwKHgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nIHJlYWRfY3IyKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG5h dGl2ZV9yZWFkX2NyMigpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX2NyMih1 bnNpZ25lZCBsb25nIHgpCjE0NDc0OiB7CjE0NDc0OiAgbmF0aXZlX3dyaXRlX2NyMih4KTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNp Z25lZCBsb25nIF9fcmVhZF9jcjModm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19uYXRp dmVfcmVhZF9jcjMoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9jcjModW5z aWduZWQgbG9uZyB4KQoxNDQ3NDogewoxNDQ3NDogIG5hdGl2ZV93cml0ZV9jcjMoeCk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX193cml0ZV9jcjQodW5zaWduZWQgbG9uZyB4KQoxNDQ3 NDogewoxNDQ3NDogIG5hdGl2ZV93cml0ZV9jcjQoeCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgd2JpbnZkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgbmF0aXZlX3diaW52ZCgpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2FkX2dzX2luZGV4KHVu c2lnbmVkIHNlbGVjdG9yKQoxNDQ3NDogewoxNDQ3NDogIG5hdGl2ZV9sb2FkX2dzX2luZGV4KHNl bGVjdG9yKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGNsZmx1c2godm9sYXRpbGUgdm9pZCAqX19wKQoxNDQ3NDogewoxNDQ3NDog IGFzbSB2b2xhdGlsZSgiY2xmbHVzaCAlMCIgOiAiK20iICgqKHZvbGF0aWxlIGNoYXIgKilfX3Ap KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGZsdXNob3B0KHZvbGF0aWxlIHZvaWQg Kl9fcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIjIEFMVDogb2xk bnN0clxuIiAiNjYxOlxuXHQiICIuYnl0ZSAiICIweDNlIiAiOyBjbGZsdXNoICVQMCIgIlxuNjYy OlxuIiAiIyBBTFQ6IHBhZGRpbmdcbiIgIi5za2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQiIjEi ImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2NjQi IjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSwweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNl Y3Rpb24gLmFsdGluc3RydWN0aW9ucyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxv bmcgIiAiNjY0IiIxIiJmIC0gLlxuIiAiIC53b3JkICIgIiggOSozMisyMykiICJcbiIgIiAuYnl0 ZSAiICI2NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hz ZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1l bnQgIiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgIi5ieXRlIDB4NjY7IGNsZmx1c2ggJVAwIiAi XG4iICI2NjUiIjEiICI6XG4iICIucG9wc2VjdGlvblxuIiA6ICIrbSIgKCoodm9sYXRpbGUgY2hh ciAqKV9fcCkgOiAiaSIgKDApKQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgY2x3Yih2b2xhdGlsZSB2b2lkICpfX3ApCjE0NDc0OiB7CjE0NDc0OiAgdm9sYXRpbGUg c3RydWN0IHsgY2hhciB4WzY0XTsgfSAqcCA9IF9fcDsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xh dGlsZSgiIyBBTFQ6IG9sZGluc3RyMlxuIiAiNjYxOlxuXHQiICIuYnl0ZSAiICIweDNlIiAiOyBj bGZsdXNoICglW3BheF0pIiAiXG42NjI6XG4iICIjIEFMVDogcGFkZGluZzJcbiIgIi5za2lwIC0o KCIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSBeICgoKCIgIjY2NSIiMSIiZi0iIjY2 NCIiMSIiZiIgIikgXiAoIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkgJiAtKC0oKCIgIjY2 NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikgPCAoIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkp KSkiICIgLSAoIiAiNjYyYi02NjFiIiAiKSkgPiAwKSAqICIgIigiICIoKCIgIjY2NSIiMSIiZi0i IjY2NCIiMSIiZiIgIikgXiAoKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCIgIjY2 NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpICYgLSgtKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYi ICIpIDwgKCIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpKSkpIiAiIC0gKCIgIjY2MmItNjYx YiIgIikpLCAweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9u cyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAiNjY0IiIxIiJmIC0gLlxu IiAiIC53b3JkICIgIiggOSozMisyMykiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxu IiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIi Yi02NjJiIiAiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQiIjIiImYgLSAu XG4iICIgLndvcmQgIiAiKCA5KjMyKzI0KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAi XG4iICIgLmJ5dGUgIiAiNjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYz IiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RyX3Jl cGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIxIiAiXG4iICI2NjQi IjEiIjpcblx0IiAiLmJ5dGUgMHg2NjsgY2xmbHVzaCAoJVtwYXhdKSIgIlxuIiAiNjY1IiIxIiAi OlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjIiICJcbiIgIjY2NCIiMiIiOlxuXHQiICIuYnl0 ZSAweDY2LCAweDBmLCAweGFlLCAweDMwIiAiXG4iICI2NjUiIjIiICI6XG4iICIucG9wc2VjdGlv blxuIgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgOiBb cF0gIittIiAoKnApCjE0NDc0OiAgIDogW3BheF0gImEiIChwKSk7CjE0NDc0OiB9CjE0NDc0OiAj IDI2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vZnB1L3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgZnJlZ3Nfc3RhdGUgewox NDQ3NDogIHUzMiBjd2Q7CjE0NDc0OiAgdTMyIHN3ZDsKMTQ0NzQ6ICB1MzIgdHdkOwoxNDQ3NDog IHUzMiBmaXA7CjE0NDc0OiAgdTMyIGZjczsKMTQ0NzQ6ICB1MzIgZm9vOwoxNDQ3NDogIHUzMiBm b3M7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHUzMiBzdF9zcGFjZVsyMF07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHUzMiBzdGF0dXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZnhyZWdzX3N0 YXRlIHsKMTQ0NzQ6ICB1MTYgY3dkOwoxNDQ3NDogIHUxNiBzd2Q7CjE0NDc0OiAgdTE2IHR3ZDsK MTQ0NzQ6ICB1MTYgZm9wOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6 ICAgIHU2NCByaXA7CjE0NDc0OiAgICB1NjQgcmRwOwoxNDQ3NDogICB9OwoxNDQ3NDogICBzdHJ1 Y3QgewoxNDQ3NDogICAgdTMyIGZpcDsKMTQ0NzQ6ICAgIHUzMiBmY3M7CjE0NDc0OiAgICB1MzIg Zm9vOwoxNDQ3NDogICAgdTMyIGZvczsKMTQ0NzQ6ICAgfTsKMTQ0NzQ6ICB9OwoxNDQ3NDogIHUz MiBteGNzcjsKMTQ0NzQ6ICB1MzIgbXhjc3JfbWFzazsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dTMyIHN0X3NwYWNlWzMyXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTMyIHhtbV9zcGFjZVs2 NF07CjE0NDc0OiAKMTQ0NzQ6ICB1MzIgcGFkZGluZ1sxMl07CjE0NDc0OiAKMTQ0NzQ6ICB1bmlv biB7CjE0NDc0OiAgIHUzMiBwYWRkaW5nMVsxMl07CjE0NDc0OiAgIHUzMiBzd19yZXNlcnZlZFsx Ml07CjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2 KSkpOwoxNDQ3NDogIyA3OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUvdHlwZXMuaCIKMTQ0 NzQ6IHN0cnVjdCBzd3JlZ3Nfc3RhdGUgewoxNDQ3NDogIHUzMiBjd2Q7CjE0NDc0OiAgdTMyIHN3 ZDsKMTQ0NzQ6ICB1MzIgdHdkOwoxNDQ3NDogIHUzMiBmaXA7CjE0NDc0OiAgdTMyIGZjczsKMTQ0 NzQ6ICB1MzIgZm9vOwoxNDQ3NDogIHUzMiBmb3M7CjE0NDc0OiAKMTQ0NzQ6ICB1MzIgc3Rfc3Bh Y2VbMjBdOwoxNDQ3NDogIHU4IGZ0b3A7CjE0NDc0OiAgdTggY2hhbmdlZDsKMTQ0NzQ6ICB1OCBs b29rYWhlYWQ7CjE0NDc0OiAgdTggbm9fdXBkYXRlOwoxNDQ3NDogIHU4IHJtOwoxNDQ3NDogIHU4 IGFsaW1pdDsKMTQ0NzQ6ICBzdHJ1Y3QgbWF0aF9lbXVfaW5mbyAqaW5mbzsKMTQ0NzQ6ICB1MzIg ZW50cnlfZWlwOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZW51bSB4ZmVhdHVyZSB7CjE0NDc0OiAgWEZFQVRVUkVfRlAsCjE0NDc0OiAgWEZFQVRVUkVf U1NFLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgWEZFQVRVUkVfWU1N LAoxNDQ3NDogIFhGRUFUVVJFX0JORFJFR1MsCjE0NDc0OiAgWEZFQVRVUkVfQk5EQ1NSLAoxNDQ3 NDogIFhGRUFUVVJFX09QTUFTSywKMTQ0NzQ6ICBYRkVBVFVSRV9aTU1fSGkyNTYsCjE0NDc0OiAg WEZFQVRVUkVfSGkxNl9aTU0sCjE0NDc0OiAgWEZFQVRVUkVfUFRfVU5JTVBMRU1FTlRFRF9TT19G QVIsCjE0NDc0OiAgWEZFQVRVUkVfUEtSVSwKMTQ0NzQ6IAoxNDQ3NDogIFhGRUFUVVJFX01BWCwK MTQ0NzQ6IH07CjE0NDc0OiAjIDEzOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUvdHlwZXMu aCIKMTQ0NzQ6IHN0cnVjdCByZWdfMTI4X2JpdCB7CjE0NDc0OiAgdTggcmVnYnl0ZXNbMTI4Lzhd OwoxNDQ3NDogfTsKMTQ0NzQ6IHN0cnVjdCByZWdfMjU2X2JpdCB7CjE0NDc0OiAgdTggcmVnYnl0 ZXNbMjU2LzhdOwoxNDQ3NDogfTsKMTQ0NzQ6IHN0cnVjdCByZWdfNTEyX2JpdCB7CjE0NDc0OiAg dTggcmVnYnl0ZXNbNTEyLzhdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTU5ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2ZwdS90eXBlcy5oIgoxNDQ3NDogc3RydWN0IHltbWhfc3RydWN0IHsKMTQ0NzQ6 ICBzdHJ1Y3QgcmVnXzEyOF9iaXQgaGlfeW1tWzE2XTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygo X19wYWNrZWRfXykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1weF9i bmRyZWcgewoxNDQ3NDogIHU2NCBsb3dlcl9ib3VuZDsKMTQ0NzQ6ICB1NjQgdXBwZXJfYm91bmQ7 CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtcHhfYm5kcmVnX3N0YXRlIHsKMTQ0NzQ6ICBzdHJ1Y3QgbXB4 X2JuZHJlZyBibmRyZWdbNF07CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBtcHhfYm5kY3NyIHsKMTQ0NzQ6ICB1NjQgYm5kY2ZndTsKMTQ0NzQ6ICB1NjQgYm5kc3Rh dHVzOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtcHhfYm5kY3NyX3N0YXRlIHsKMTQ0NzQ6 ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBtcHhfYm5kY3NyIGJuZGNzcjsKMTQ0NzQ6ICAgdTgg cGFkX3RvXzY0X2J5dGVzWzY0XTsKMTQ0NzQ6ICB9OwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChf X3BhY2tlZF9fKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdnhfNTEyX29wbWFza19zdGF0ZSB7CjE0NDc0OiAg dTY0IG9wbWFza19yZWdbOF07CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdnhfNTEyX3ptbV91cHBlcnNfc3RhdGUgewoxNDQ3NDogIHN0cnVjdCByZWdfMjU2X2Jp dCB6bW1fdXBwZXJbMTZdOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF2eF81 MTJfaGkxNl9zdGF0ZSB7CjE0NDc0OiAgc3RydWN0IHJlZ181MTJfYml0IGhpMTZfem1tWzE2XTsK MTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwa3J1X3N0YXRlIHsKMTQ0NzQ6ICB1 MzIgcGtydTsKMTQ0NzQ6ICB1MzIgcGFkOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tl ZF9fKSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB4c3RhdGVfaGVhZGVyIHsKMTQ0NzQ6ICB1NjQg eGZlYXR1cmVzOwoxNDQ3NDogIHU2NCB4Y29tcF9idjsKMTQ0NzQ6ICB1NjQgcmVzZXJ2ZWRbNl07 CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoxNDQ3NDogIyAyNTMgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vZnB1L3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgeHJlZ3Nfc3RhdGUgewox NDQ3NDogIHN0cnVjdCBmeHJlZ3Nfc3RhdGUgaTM4NzsKMTQ0NzQ6ICBzdHJ1Y3QgeHN0YXRlX2hl YWRlciBoZWFkZXI7CjE0NDc0OiAgdTggZXh0ZW5kZWRfc3RhdGVfYXJlYVswXTsKMTQ0NzQ6IH0g X19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCAoNjQpKSk7CjE0NDc0OiAjIDI2OCAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUvdHlwZXMuaCIKMTQ0NzQ6IHVuaW9uIGZwcmVnc19zdGF0 ZSB7CjE0NDc0OiAgc3RydWN0IGZyZWdzX3N0YXRlIGZzYXZlOwoxNDQ3NDogIHN0cnVjdCBmeHJl Z3Nfc3RhdGUgZnhzYXZlOwoxNDQ3NDogIHN0cnVjdCBzd3JlZ3Nfc3RhdGUgc29mdDsKMTQ0NzQ6 ICBzdHJ1Y3QgeHJlZ3Nfc3RhdGUgeHNhdmU7CjE0NDc0OiAgdTggX19wYWRkaW5nWygoMVVMKSA8 PCAxMildOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmcHUgewoxNDQ3NDogIyAyOTQgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vZnB1L3R5cGVzLmgiCjE0NDc0OiAgdW5zaWduZWQgaW50IGxhc3RfY3B1OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgYXZ4NTEyX3RpbWVzdGFtcDsKMTQ0NzQ6ICMgMzEyICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2ZwdS90eXBlcy5oIgoxNDQ3NDogIHVuaW9uIGZwcmVnc19zdGF0ZSBzdGF0ZTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjcgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS91bndpbmRfaGludHMuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL29yY190eXBlcy5oIiAxCjE0NDc0OiAjIDcz ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL29yY190eXBlcy5oIgoxNDQ3NDogc3RydWN0IG9yY19l bnRyeSB7CjE0NDc0OiAgczE2IHNwX29mZnNldDsKMTQ0NzQ6ICBzMTYgYnBfb2Zmc2V0OwoxNDQ3 NDogIHVuc2lnbmVkIHNwX3JlZzo0OwoxNDQ3NDogIHVuc2lnbmVkIGJwX3JlZzo0OwoxNDQ3NDog IHVuc2lnbmVkIHR5cGU6MjsKMTQ0NzQ6ICB1bnNpZ25lZCBlbmQ6MTsKMTQ0NzQ6IH0gX19hdHRy aWJ1dGVfXygoX19wYWNrZWRfXykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdW53aW5kX2hpbnQgewoxNDQ3NDog IHUzMiBpcDsKMTQ0NzQ6ICBzMTYgc3Bfb2Zmc2V0OwoxNDQ3NDogIHU4IHNwX3JlZzsKMTQ0NzQ6 ICB1OCB0eXBlOwoxNDQ3NDogIHU4IGVuZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDUgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vdW53aW5kX2hpbnRzLmgiIDIKMTQ0NzQ6ICMgMjggIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS92bXhmZWF0dXJlcy5oIiAxCjE0NDc0OiAjIDI5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3Byb2Nlc3Nvci5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3BlcnNv bmFsaXR5LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvdWFwaS9saW51eC9wZXJzb25hbGl0eS5oIiAxCjE0NDc0OiAjIDExICIuL2luY2x1 ZGUvdWFwaS9saW51eC9wZXJzb25hbGl0eS5oIgoxNDQ3NDogZW51bSB7CjE0NDc0OiAgVU5BTUUy NiA9IDB4MDAyMDAwMCwKMTQ0NzQ6ICBBRERSX05PX1JBTkRPTUlaRSA9IDB4MDA0MDAwMCwKMTQ0 NzQ6ICBGRFBJQ19GVU5DUFRSUyA9IDB4MDA4MDAwMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg TU1BUF9QQUdFX1pFUk8gPSAweDAxMDAwMDAsCjE0NDc0OiAgQUREUl9DT01QQVRfTEFZT1VUID0g MHgwMjAwMDAwLAoxNDQ3NDogIFJFQURfSU1QTElFU19FWEVDID0gMHgwNDAwMDAwLAoxNDQ3NDog IEFERFJfTElNSVRfMzJCSVQgPSAweDA4MDAwMDAsCjE0NDc0OiAgU0hPUlRfSU5PREUgPSAweDEw MDAwMDAsCjE0NDc0OiAgV0hPTEVfU0VDT05EUyA9IDB4MjAwMDAwMCwKMTQ0NzQ6ICBTVElDS1lf VElNRU9VVFMgPSAweDQwMDAwMDAsCjE0NDc0OiAgQUREUl9MSU1JVF8zR0IgPSAweDgwMDAwMDAs CjE0NDc0OiB9OwoxNDQ3NDogIyA0MiAiLi9pbmNsdWRlL3VhcGkvbGludXgvcGVyc29uYWxpdHku aCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIFBFUl9MSU5VWCA9IDB4MDAwMCwKMTQ0NzQ6ICBQRVJf TElOVVhfMzJCSVQgPSAweDAwMDAgfCBBRERSX0xJTUlUXzMyQklULAoxNDQ3NDogIFBFUl9MSU5V WF9GRFBJQyA9IDB4MDAwMCB8IEZEUElDX0ZVTkNQVFJTLAoxNDQ3NDogIFBFUl9TVlI0ID0gMHgw MDAxIHwgU1RJQ0tZX1RJTUVPVVRTIHwgTU1BUF9QQUdFX1pFUk8sCjE0NDc0OiAgUEVSX1NWUjMg PSAweDAwMDIgfCBTVElDS1lfVElNRU9VVFMgfCBTSE9SVF9JTk9ERSwKMTQ0NzQ6ICBQRVJfU0NP U1ZSMyA9IDB4MDAwMyB8IFNUSUNLWV9USU1FT1VUUyB8CjE0NDc0OiAgICAgICBXSE9MRV9TRUNP TkRTIHwgU0hPUlRfSU5PREUsCjE0NDc0OiAgUEVSX09TUjUgPSAweDAwMDMgfCBTVElDS1lfVElN RU9VVFMgfCBXSE9MRV9TRUNPTkRTLAoxNDQ3NDogIFBFUl9XWVNFVjM4NiA9IDB4MDAwNCB8IFNU SUNLWV9USU1FT1VUUyB8IFNIT1JUX0lOT0RFLAoxNDQ3NDogIFBFUl9JU0NSNCA9IDB4MDAwNSB8 IFNUSUNLWV9USU1FT1VUUywKMTQ0NzQ6ICBQRVJfQlNEID0gMHgwMDA2LAoxNDQ3NDogIFBFUl9T VU5PUyA9IDB4MDAwNiB8IFNUSUNLWV9USU1FT1VUUywKMTQ0NzQ6ICBQRVJfWEVOSVggPSAweDAw MDcgfCBTVElDS1lfVElNRU9VVFMgfCBTSE9SVF9JTk9ERSwKMTQ0NzQ6ICBQRVJfTElOVVgzMiA9 IDB4MDAwOCwKMTQ0NzQ6ICBQRVJfTElOVVgzMl8zR0IgPSAweDAwMDggfCBBRERSX0xJTUlUXzNH QiwKMTQ0NzQ6ICBQRVJfSVJJWDMyID0gMHgwMDA5IHwgU1RJQ0tZX1RJTUVPVVRTLAoxNDQ3NDog IFBFUl9JUklYTjMyID0gMHgwMDBhIHwgU1RJQ0tZX1RJTUVPVVRTLAoxNDQ3NDogIFBFUl9JUklY NjQgPSAweDAwMGIgfCBTVElDS1lfVElNRU9VVFMsCjE0NDc0OiAgUEVSX1JJU0NPUyA9IDB4MDAw YywKMTQ0NzQ6ICBQRVJfU09MQVJJUyA9IDB4MDAwZCB8IFNUSUNLWV9USU1FT1VUUywKMTQ0NzQ6 ICBQRVJfVVc3ID0gMHgwMDBlIHwgU1RJQ0tZX1RJTUVPVVRTIHwgTU1BUF9QQUdFX1pFUk8sCjE0 NDc0OiAgUEVSX09TRjQgPSAweDAwMGYsCjE0NDc0OiAgUEVSX0hQVVggPSAweDAwMTAsCjE0NDc0 OiAgUEVSX01BU0sgPSAweDAwZmYsCjE0NDc0OiB9OwoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvbGlu dXgvcGVyc29uYWxpdHkuaCIgMgoxNDQ3NDogIyAzMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w cm9jZXNzb3IuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvZXJyLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVk L3VhcGkvYXNtL2Vycm5vLmgiIDEKMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L2Vyci5oIiAy CjE0NDc0OiAjIDI0ICIuL2luY2x1ZGUvbGludXgvZXJyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICogX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIEVSUl9QVFIobG9uZyBlcnJvcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHZvaWQgKikgZXJyb3I7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIFBUUl9FUlIo IGNvbnN0IHZvaWQgKnB0cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKGxvbmcpIHB0cjsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgSVNfRVJSKCBjb25zdCB2b2lkICpwdHIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IF9fYnVpbHRpbl9leHBlY3QoISEoKHVuc2lnbmVkIGxvbmcpKHZvaWQgKikoKHVuc2lnbmVkIGxv bmcpcHRyKSA+PSAodW5zaWduZWQgbG9uZyktNDA5NSksIDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBJU19FUlJf T1JfTlVMTCggY29uc3Qgdm9pZCAqcHRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2J1aWx0 aW5fZXhwZWN0KCEhKCFwdHIpLCAwKSB8fCBfX2J1aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBs b25nKSh2b2lkICopKCh1bnNpZ25lZCBsb25nKXB0cikgPj0gKHVuc2lnbmVkIGxvbmcpLTQwOTUp LCAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTEgIi4vaW5jbHVkZS9saW51eC9lcnIuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgRVJSX0NBU1Qo IGNvbnN0IHZvaWQgKnB0cikKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAodm9pZCAq KSBwdHI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgUFRSX0VSUl9PUl9aRVJPKCBjb25zdCB2b2lkICpwdHIpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKElTX0VSUihwdHIpKQoxNDQ3NDogICByZXR1cm4gUFRSX0VSUihwdHIp OwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAjIDM1ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9pcnFmbGFncy5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvaXJxZmxh Z3MuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFmbGFncy5oIiAxCjE0 NDc0OiAjIDE5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycWZsYWdzLmgiCjE0NDc0OiBleHRl cm4gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNp Z25lZCBsb25nIG5hdGl2ZV9zYXZlX2ZsKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBuYXRp dmVfc2F2ZV9mbCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYXNt IHZvbGF0aWxlKCIjIF9fcmF3X3NhdmVfZmxhZ3Ncblx0IgoxNDQ3NDogICAgICAgICJwdXNoZiA7 IHBvcCAlMCIKMTQ0NzQ6ICAgICAgICA6ICI9cm0iIChmbGFncykKMTQ0NzQ6ICAgICAgICA6CjE0 NDc0OiAgICAgICAgOiAibWVtb3J5Iik7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZmxhZ3M7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbmF0aXZlX3Jlc3RvcmVfZmwodW5zaWduZWQgbG9u ZyBmbGFncyk7CjE0NDc0OiBleHRlcm4gaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9yZXN0b3JlX2ZsKHVuc2lnbmVkIGxvbmcgZmxh Z3MpCjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJwdXNoICUwIDsgcG9wZiIKMTQ0NzQ6 ICAgICAgICA6CjE0NDc0OiAgICAgICAgOiJnIiAoZmxhZ3MpCjE0NDc0OiAgICAgICAgOiJtZW1v cnkiLCAiY2MiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVfaXJxX2Rpc2Fi bGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoImNsaSI6IDogOiJtZW1vcnki KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVfaXJxX2VuYWJsZSh2b2lkKQox NDQ3NDogewoxNDQ3NDogIGFzbSB2b2xhdGlsZSgic3RpIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmNwdWlkbGUudGV4 dCIpKSkgdm9pZCBuYXRpdmVfc2FmZV9oYWx0KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgbWRzX2lk bGVfY2xlYXJfY3B1X2J1ZmZlcnMoKTsKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoInN0aTsgaGx0Ijog OiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmNwdWlkbGUudGV4dCIpKSkgdm9pZCBuYXRpdmVfaGFsdCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIG1kc19pZGxlX2NsZWFyX2NwdV9idWZmZXJzKCk7CjE0NDc0OiAgYXNtIHZvbGF0 aWxlKCJobHQiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAjIDc3ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL2lycWZsYWdzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBhcmNoX2xvY2FsX3NhdmVfZmxhZ3Modm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbmF0aXZlX3NhdmVfZmwoKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJj aF9sb2NhbF9pcnFfcmVzdG9yZSh1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDog IG5hdGl2ZV9yZXN0b3JlX2ZsKGZsYWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJjaF9sb2NhbF9pcnFfZGlz YWJsZSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIG5hdGl2ZV9pcnFfZGlzYWJsZSgpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBhcmNoX2xvY2FsX2lycV9lbmFibGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVf aXJxX2VuYWJsZSgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuY3B1aWRsZS50ZXh0Iikp KSB2b2lkIGFyY2hfc2FmZV9oYWx0KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgbmF0aXZlX3NhZmVf aGFsdCgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuY3B1aWRsZS50ZXh0IikpKSB2b2lk IGhhbHQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfaGFsdCgpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBhcmNoX2xvY2FsX2lycV9zYXZlKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFncyA9IGFyY2hfbG9jYWxfc2F2ZV9m bGFncygpOwoxNDQ3NDogIGFyY2hfbG9jYWxfaXJxX2Rpc2FibGUoKTsKMTQ0NzQ6ICByZXR1cm4g ZmxhZ3M7CjE0NDc0OiB9CjE0NDc0OiAjIDE2MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFm bGFncy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IGFyY2hfaXJxc19kaXNhYmxlZF9mbGFncyh1bnNpZ25lZCBsb25n IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhKGZsYWdzICYgKCgoMVVMKSkgPDwgKDkp KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBhcmNoX2lycXNfZGlzYWJsZWQodm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdzID0gYXJjaF9sb2NhbF9zYXZlX2Zs YWdzKCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYXJjaF9pcnFzX2Rpc2FibGVkX2ZsYWdzKGZs YWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51eC9pcnFmbGFncy5oIiAy CjE0NDc0OiAjIDI1ICIuL2luY2x1ZGUvbGludXgvaXJxZmxhZ3MuaCIKMTQ0NzQ6ICAgc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0 cmFjZV9zb2Z0aXJxc19vbih1bnNpZ25lZCBsb25nIGlwKSB7IH0KMTQ0NzQ6ICAgc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0cmFj ZV9zb2Z0aXJxc19vZmYodW5zaWduZWQgbG9uZyBpcCkgeyB9CjE0NDc0OiAgIHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2Rl cF9oYXJkaXJxc19vbih1bnNpZ25lZCBsb25nIGlwKSB7IH0KMTQ0NzQ6ICAgc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NrZGVw X2hhcmRpcnFzX29mZih1bnNpZ25lZCBsb25nIGlwKSB7IH0KMTQ0NzQ6ICMgMzYgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiIDIKMTQ0NzQ6ICMgNjEgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmgiCjE0NDc0OiBlbnVtIHRsYl9pbmZvcyB7CjE0NDc0OiAgRU5U UklFUywKMTQ0NzQ6ICBOUl9JTkZPCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdTE2 IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9s bGlfNGtbTlJfSU5GT107CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlv bl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGlfMm1bTlJfSU5GT107CjE0NDc0OiBl eHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHki KSkpIHRsYl9sbGlfNG1bTlJfSU5GT107CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGRfNGtbTlJfSU5GT107 CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVh ZF9tb3N0bHkiKSkpIHRsYl9sbGRfMm1bTlJfSU5GT107CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0 cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGRfNG1b TlJfSU5GT107CjE0NDc0OiBleHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIu ZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGRfMWdbTlJfSU5GT107CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBj cHVpbmZvX3g4NiB7CjE0NDc0OiAgX191OCB4ODY7CjE0NDc0OiAgX191OCB4ODZfdmVuZG9yOwox NDQ3NDogIF9fdTggeDg2X21vZGVsOwoxNDQ3NDogIF9fdTggeDg2X3N0ZXBwaW5nOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgeDg2X3RsYnNpemU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IF9fdTMyIHZteF9jYXBhYmlsaXR5WzNdOwoxNDQ3NDogCjE0NDc0OiAgX191OCB4ODZfdmlydF9i aXRzOwoxNDQ3NDogIF9fdTggeDg2X3BoeXNfYml0czsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTggeDg2 X2NvcmVpZF9iaXRzOwoxNDQ3NDogIF9fdTggY3VfaWQ7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBl eHRlbmRlZF9jcHVpZF9sZXZlbDsKMTQ0NzQ6IAoxNDQ3NDogIGludCBjcHVpZF9sZXZlbDsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5pb24gewoxNDQ3 NDogICBfX3UzMiB4ODZfY2FwYWJpbGl0eVsxOSArIDFdOwoxNDQ3NDogICB1bnNpZ25lZCBsb25n IHg4Nl9jYXBhYmlsaXR5X2FsaWdubWVudDsKMTQ0NzQ6ICB9OwoxNDQ3NDogIGNoYXIgeDg2X3Zl bmRvcl9pZFsxNl07CjE0NDc0OiAgY2hhciB4ODZfbW9kZWxfaWRbNjRdOwoxNDQ3NDogCjE0NDc0 OiAgdW5zaWduZWQgaW50IHg4Nl9jYWNoZV9zaXplOwoxNDQ3NDogIGludCB4ODZfY2FjaGVfYWxp Z25tZW50OwoxNDQ3NDogCjE0NDc0OiAgaW50IHg4Nl9jYWNoZV9tYXhfcm1pZDsKMTQ0NzQ6ICBp bnQgeDg2X2NhY2hlX29jY19zY2FsZTsKMTQ0NzQ6ICBpbnQgeDg2X3Bvd2VyOwoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgbG9vcHNfcGVyX2ppZmZ5OwoxNDQ3NDogCjE0NDc0OiAgdTE2IHg4Nl9tYXhf Y29yZXM7CjE0NDc0OiAgdTE2IGFwaWNpZDsKMTQ0NzQ6ICB1MTYgaW5pdGlhbF9hcGljaWQ7CjE0 NDc0OiAgdTE2IHg4Nl9jbGZsdXNoX3NpemU7CjE0NDc0OiAKMTQ0NzQ6ICB1MTYgYm9vdGVkX2Nv cmVzOwoxNDQ3NDogCjE0NDc0OiAgdTE2IHBoeXNfcHJvY19pZDsKMTQ0NzQ6IAoxNDQ3NDogIHUx NiBsb2dpY2FsX3Byb2NfaWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1MTYgY3B1X2NvcmVfaWQ7CjE0NDc0 OiAgdTE2IGNwdV9kaWVfaWQ7CjE0NDc0OiAgdTE2IGxvZ2ljYWxfZGllX2lkOwoxNDQ3NDogCjE0 NDc0OiAgdTE2IGNwdV9pbmRleDsKMTQ0NzQ6ICB1MzIgbWljcm9jb2RlOwoxNDQ3NDogCjE0NDc0 OiAgdTggeDg2X2NhY2hlX2JpdHM7CjE0NDc0OiAgdW5zaWduZWQgaW5pdGlhbGl6ZWQgOiAxOwox NDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBjcHVpZF9yZWdzIHsKMTQ0NzQ6ICB1MzIgZWF4LCBlYngsIGVjeCwgZWR4Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjcHVpZF9yZWdzX2lkeCB7CjE0NDc0OiAgQ1BV SURfRUFYID0gMCwKMTQ0NzQ6ICBDUFVJRF9FQlgsCjE0NDc0OiAgQ1BVSURfRUNYLAoxNDQ3NDog IENQVUlEX0VEWCwKMTQ0NzQ6IH07CjE0NDc0OiAjIDE3MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgYm9vdF9jcHVf ZGF0YTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgbmV3X2NwdV9kYXRhOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gX191MzIgY3B1X2NhcHNfY2xlYXJlZFsxOSArIDFdOwoxNDQ3NDog ZXh0ZXJuIF9fdTMyIGNwdV9jYXBzX3NldFsxOSArIDFdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21v c3RseSIpKSkgX190eXBlb2ZfXyhzdHJ1Y3QgY3B1aW5mb194ODYpIGNwdV9pbmZvOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNv bnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBjcHVpbmZvX29wOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgY3B1X2RldGVjdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMp OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbDF0Zl9wZm5fbGltaXQodm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCgoKDFVTEwpKSkgPDwgKGJvb3RfY3B1X2RhdGEueDg2 X2NhY2hlX2JpdHMgLSAxIC0gMTIpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZv aWQgZWFybHlfY3B1X2luaXQodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBpZGVudGlmeV9ib290 X2NwdSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGlkZW50aWZ5X3NlY29uZGFyeV9jcHUoc3Ry dWN0IGNwdWluZm9feDg2ICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgcHJpbnRfY3B1X2luZm8oc3Ry dWN0IGNwdWluZm9feDg2ICopOwoxNDQ3NDogdm9pZCBwcmludF9jcHVfbXNyKHN0cnVjdCBjcHVp bmZvX3g4NiAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGhh dmVfY3B1aWRfcCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAxOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9jcHVpZCh1bnNpZ25lZCBpbnQgKmVheCwgdW5zaWduZWQg aW50ICplYngsCjE0NDc0OiAgICAgdW5zaWduZWQgaW50ICplY3gsIHVuc2lnbmVkIGludCAqZWR4 KQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJjcHVpZCIKMTQ0NzQ6ICAg ICAgOiAiPWEiICgqZWF4KSwKMTQ0NzQ6ICAgICAgICAiPWIiICgqZWJ4KSwKMTQ0NzQ6ICAgICAg ICAiPWMiICgqZWN4KSwKMTQ0NzQ6ICAgICAgICAiPWQiICgqZWR4KQoxNDQ3NDogICAgICA6ICIw IiAoKmVheCksICIyIiAoKmVjeCkKMTQ0NzQ6ICAgICAgOiAibWVtb3J5Iik7CjE0NDc0OiB9CjE0 NDc0OiAjIDIzNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVu c2lnbmVkIGludCBuYXRpdmVfY3B1aWRfZWF4KHVuc2lnbmVkIGludCBvcCkgeyB1bnNpZ25lZCBp bnQgZWF4ID0gb3AsIGVieCwgZWN4ID0gMCwgZWR4OyBuYXRpdmVfY3B1aWQoJmVheCwgJmVieCwg JmVjeCwgJmVkeCk7IHJldHVybiBlYXg7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBuYXRpdmVfY3B1 aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkgeyB1bnNpZ25lZCBpbnQgZWF4ID0gb3AsIGVieCwgZWN4 ID0gMCwgZWR4OyBuYXRpdmVfY3B1aWQoJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7IHJldHVybiBl Yng7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBuYXRpdmVfY3B1aWRfZWN4KHVuc2lnbmVkIGludCBv cCkgeyB1bnNpZ25lZCBpbnQgZWF4ID0gb3AsIGVieCwgZWN4ID0gMCwgZWR4OyBuYXRpdmVfY3B1 aWQoJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7IHJldHVybiBlY3g7IH0KMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVk IGludCBuYXRpdmVfY3B1aWRfZWR4KHVuc2lnbmVkIGludCBvcCkgeyB1bnNpZ25lZCBpbnQgZWF4 ID0gb3AsIGVieCwgZWN4ID0gMCwgZWR4OyBuYXRpdmVfY3B1aWQoJmVheCwgJmVieCwgJmVjeCwg JmVkeCk7IHJldHVybiBlZHg7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdW5zaWduZWQgbG9uZyByZWFkX2NyM19wYSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBfX3JlYWRfY3IzKCkgJiAoMHg3RkZGRkZGRkZGRkZGMDAwdWxsKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBuYXRpdmVfcmVhZF9jcjNfcGEodm9pZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gX19uYXRpdmVfcmVhZF9jcjMoKSAmICgweDdGRkZGRkZGRkZGRkYwMDB1 bGwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvYWRfY3IzKHBnZF90ICpwZ2RpcikK MTQ0NzQ6IHsKMTQ0NzQ6ICB3cml0ZV9jcjMoKF9fcGh5c19hZGRyX25vZGVidWcoKHVuc2lnbmVk IGxvbmcpKHBnZGlyKSkgfCAwVUxMKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDMxMiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IHN0cnVjdCB4ODZfaHdfdHNzIHsKMTQ0 NzQ6ICB1MzIgcmVzZXJ2ZWQxOwoxNDQ3NDogIHU2NCBzcDA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHU2NCBzcDE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IHNwMjsKMTQ0NzQ6IAoxNDQ3 NDogIHU2NCByZXNlcnZlZDI7CjE0NDc0OiAgdTY0IGlzdFs3XTsKMTQ0NzQ6ICB1MzIgcmVzZXJ2 ZWQzOwoxNDQ3NDogIHUzMiByZXNlcnZlZDQ7CjE0NDc0OiAgdTE2IHJlc2VydmVkNTsKMTQ0NzQ6 ICB1MTYgaW9fYml0bWFwX2Jhc2U7CjE0NDc0OiAKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CjE0NDc0OiAjIDM3MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIK MTQ0NzQ6IHN0cnVjdCBlbnRyeV9zdGFjayB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB3b3Jkc1s2 NF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZW50cnlfc3RhY2tfcGFnZSB7CjE0 NDc0OiAgc3RydWN0IGVudHJ5X3N0YWNrIHN0YWNrOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChf X2FsaWduZWRfXygoKDFVTCkgPDwgMTIpKSkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgeDg2X2lvX2JpdG1hcCB7CjE0NDc0OiAKMTQ0NzQ6ICB1NjQgcHJl dl9zZXF1ZW5jZTsKMTQ0NzQ6ICMgMzkyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIgoxNDQ3NDogIHVuc2lnbmVkIGludCBwcmV2X21heDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg Yml0bWFwWygoNjU1MzYgLyA4KSAvIHNpemVvZihsb25nKSkgKyAxXTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtYXBhbGxbKCg2 NTUzNiAvIDgpIC8gc2l6ZW9mKGxvbmcpKSArIDFdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHRzc19zdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBzdHJ1Y3QgeDg2X2h3X3RzcyB4ODZfdHNzOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IHg4Nl9pb19iaXRtYXAgaW9fYml0bWFwOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2Fs aWduZWRfXygoKDFVTCkgPDwgMTIpKSkpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1 dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucGFnZV9hbGlnbmVkIikpKSBfX3R5cGVv Zl9fKHN0cnVjdCB0c3Nfc3RydWN0KSBjcHVfdHNzX3J3IF9fYXR0cmlidXRlX18oKF9fYWxpZ25l ZF9fKCgoMVVMKSA8PCAxMikpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGlycV9z dGFjayB7CjE0NDc0OiAgY2hhciBzdGFja1soKCgxVUwpIDw8IDEyKSA8PCAoMiArIDApKV07CjE0 NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgoKDFVTCkgPDwgMTIpIDw8ICgyICsg MCkpKSkpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRh dGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhzdHJ1Y3QgaXJxX3N0YWNrICopIGhhcmRpcnFf c3RhY2tfcHRyOwoxNDQ3NDogIyA0MzcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29y LmgiCjE0NDc0OiBzdHJ1Y3QgZml4ZWRfcGVyY3B1X2RhdGEgewoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBjaGFyIGdzX2Jhc2VbNDBdOwoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgc3RhY2tfY2FuYXJ5OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLmZpcnN0IikpKSBfX3R5 cGVvZl9fKHN0cnVjdCBmaXhlZF9wZXJjcHVfZGF0YSkgZml4ZWRfcGVyY3B1X2RhdGEgX19hdHRy aWJ1dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpOwoxNDQ3NDogZXh0ZXJuIHR5cGVvZihm aXhlZF9wZXJjcHVfZGF0YSkgaW5pdF9wZXJfY3B1X19maXhlZF9wZXJjcHVfZGF0YTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBjcHVfa2VybmVsbW9kZV9nc19iYXNlKGludCBjcHUpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSgqKHsgZG8geyBjb25zdCB2b2lk ICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGZpeGVkX3BlcmNwdV9kYXRhLmdzX2Jhc2UpKSAr IDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNp Z25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2Yo KigoJihmaXhlZF9wZXJjcHVfZGF0YS5nc19iYXNlKSkpKSAqKSgoJihmaXhlZF9wZXJjcHVfZGF0 YS5nc19iYXNlKSkpKSk7ICh0eXBlb2YoKHR5cGVvZigqKCgmKGZpeGVkX3BlcmNwdV9kYXRhLmdz X2Jhc2UpKSkpICopKCgmKGZpeGVkX3BlcmNwdV9kYXRhLmdzX2Jhc2UpKSkpKSAoX19wdHIgKyAo KChfX3Blcl9jcHVfb2Zmc2V0WyhjcHUpXSkpKSk7IH0pOyB9KSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikp KSBfX3R5cGVvZl9fKHVuc2lnbmVkIGludCkgaXJxX2NvdW50OwoxNDQ3NDogZXh0ZXJuIHZvaWQg aWdub3JlX3N5c3JldCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQg c2F2ZV9mc2dzX2Zvcl9rdm0odm9pZCk7CjE0NDc0OiAjIDQ4MCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgZnB1X2tlcm5lbF94 c3RhdGVfc2l6ZTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgZnB1X3VzZXJfeHN0YXRlX3Np emU7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwZXJmX2V2ZW50OwoxNDQ3NDogCjE0NDc0OiB0eXBl ZGVmIHN0cnVjdCB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzZWc7CjE0NDc0OiB9IG1tX3NlZ21l bnRfdDsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRocmVhZF9zdHJ1Y3QgewoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGRlc2Nfc3RydWN0IHRsc19hcnJheVszXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIHNob3J0IGVzOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IGRzOwoxNDQ3NDog IHVuc2lnbmVkIHNob3J0IGZzaW5kZXg7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgZ3NpbmRleDsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZzYmFzZTsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIGdzYmFzZTsKMTQ0NzQ6ICMgNTE4ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oIgoxNDQ3NDogIHN0cnVjdCBwZXJmX2V2ZW50ICpwdHJhY2VfYnBz WzRdOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBkZWJ1Z3JlZzY7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIHB0cmFjZV9kcjc7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIGNyMjsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHRyYXBfbnI7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBlcnJvcl9jb2RlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgaW9fYml0bWFwICppb19iaXRtYXA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBpb3BsX2Vt dWw7CjE0NDc0OiAKMTQ0NzQ6ICBtbV9zZWdtZW50X3QgYWRkcl9saW1pdDsKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIGludCBzaWdfb25fdWFjY2Vzc19lcnI6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgdWFjY2Vzc19lcnI6MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGZwdSBmcHU7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBhcmNoX3RocmVhZF9zdHJ1Y3Rfd2hpdGVsaXN0KHVuc2lnbmVkIGxvbmcg Km9mZnNldCwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcgKnNpemUpCjE0NDc0OiB7CjE0NDc0 OiAgKm9mZnNldCA9IF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgdGhyZWFkX3N0cnVjdCwgZnB1 LnN0YXRlKTsKMTQ0NzQ6ICAqc2l6ZSA9IGZwdV9rZXJuZWxfeHN0YXRlX3NpemU7CjE0NDc0OiB9 CjE0NDc0OiAjIDU3MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQKMTQ0NzQ6IG5hdGl2ZV9sb2FkX3NwMCh1bnNpZ25lZCBsb25nIHNwMCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJihj cHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVy aWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZihjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkg eyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSBw dG9fVF9fOyBpZiAoMCkgeyBwdG9fVF9fIHB0b190bXBfXzsgcHRvX3RtcF9fID0gKHNwMCk7ICh2 b2lkKXB0b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkp KSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAlMSwiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicWkiICgocHRvX1RfXykoc3Aw KSkpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICUxLCIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9f VF9fKShzcDApKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgJTEsIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJp IiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAi cSAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3Aw KSkgOiAicmUiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSAyOiBkbyB7IHR5cGVkZWYgdHlwZW9m KChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgcHRvX1RfXzsgaWYgKDApIHsgcHRvX1RfXyBwdG9f dG1wX187IHB0b190bXBfXyA9IChzcDApOyAodm9pZClwdG9fdG1wX187IH0gc3dpdGNoIChzaXpl b2YoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1v diIgImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNz LnNwMCkpIDogInFpIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0 aWxlICgibW92IiAidyAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3 Lng4Nl90c3Muc3AwKSkgOiAicmkiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2FzZSA0OiBh c20gdm9sYXRpbGUgKCJtb3YiICJsICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNw dV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBj YXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJlIiAoKHB0b19UX18pKHNwMCkpKTsg YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7 IGNhc2UgNDogZG8geyB0eXBlZGVmIHR5cGVvZigoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIHB0 b19UX187IGlmICgwKSB7IHB0b19UX18gcHRvX3RtcF9fOyBwdG9fdG1wX18gPSAoc3AwKTsgKHZv aWQpcHRvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkp IHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICUxLCIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJxaSIgKChwdG9fVF9fKShzcDAp KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgJTEsIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJpIiAoKHB0b19U X18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAlMSwiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicmki ICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJx ICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDAp KSA6ICJyZSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVf c2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2Yo KGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSBwdG9fVF9fOyBpZiAoMCkgeyBwdG9fVF9fIHB0b190 bXBfXzsgcHRvX3RtcF9fID0gKHNwMCk7ICh2b2lkKXB0b190bXBfXzsgfSBzd2l0Y2ggKHNpemVv ZigoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92 IiAiYiAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Mu c3AwKSkgOiAicWkiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRp bGUgKCJtb3YiICJ3ICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3Nfcncu eDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBjYXNlIDQ6IGFz bSB2b2xhdGlsZSAoIm1vdiIgImwgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1 X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJpIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNh c2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicmUiICgocHRvX1RfXykoc3AwKSkpOyBi cmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsg ZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFtZXRlcigpO2JyZWFrOyB9IH0gd2hpbGUgKDAp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9zd2FwZ3Modm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgic3dhcGdzIiA6OjogIm1lbW9yeSIpOwox NDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgY3VycmVudF90b3Bf b2Zfc3RhY2sodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgcmV0dXJuICh7IHR5cGVvZihjcHVfdHNzX3J3Lng4Nl90c3Muc3AxKSBw Zm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV90c3NfcncueDg2X3Rzcy5zcDEpKSB7IGNhc2Ug MTogYXNtKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1xIiAocGZvX3Jl dF9fKSA6ICJwIiAoJihjcHVfdHNzX3J3Lng4Nl90c3Muc3AxKSkpOyBicmVhazsgY2FzZSAyOiBh c20oIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogInAiICgmKGNwdV90c3NfcncueDg2X3Rzcy5zcDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSgi bW92IiAibCAiIiUlIiJncyIiOiIgIiUiICJQMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi cCIgKCYoY3B1X3Rzc19ydy54ODZfdHNzLnNwMSkpKTsgYnJlYWs7IGNhc2UgODogYXNtKCJtb3Yi ICJxICIiJSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJwIiAo JihjcHVfdHNzX3J3Lng4Nl90c3Muc3AxKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG9u X3RocmVhZF9zdGFjayh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodW5zaWduZWQgbG9u ZykoY3VycmVudF90b3Bfb2Zfc3RhY2soKSAtCjE0NDc0OiAgICAgICAgICAgY3VycmVudF9zdGFj a19wb2ludGVyKSA8ICgoKDFVTCkgPDwgMTIpIDw8ICgyICsgMCkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2Fk X3NwMCh1bnNpZ25lZCBsb25nIHNwMCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBuYXRpdmVfbG9hZF9zcDAo c3AwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHZvaWQgcmVsZWFzZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoxNDQ3NDogCjE0 NDc0OiB1bnNpZ25lZCBsb25nIGdldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBj cHVpZCh1bnNpZ25lZCBpbnQgb3AsCjE0NDc0OiAgICAgdW5zaWduZWQgaW50ICplYXgsIHVuc2ln bmVkIGludCAqZWJ4LAoxNDQ3NDogICAgIHVuc2lnbmVkIGludCAqZWN4LCB1bnNpZ25lZCBpbnQg KmVkeCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAqZWF4ID0gb3A7CjE0NDc0OiAgKmVjeCA9IDA7CjE0NDc0 OiAgbmF0aXZlX2NwdWlkKGVheCwgZWJ4LCBlY3gsIGVkeCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBjcHVpZF9jb3VudCh1bnNpZ25lZCBpbnQgb3AsIGludCBjb3VudCwK MTQ0NzQ6ICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmVheCwgdW5zaWduZWQgaW50ICplYngsCjE0 NDc0OiAgICAgICAgICAgdW5zaWduZWQgaW50ICplY3gsIHVuc2lnbmVkIGludCAqZWR4KQoxNDQ3 NDogewoxNDQ3NDogICplYXggPSBvcDsKMTQ0NzQ6ICAqZWN4ID0gY291bnQ7CjE0NDc0OiAgbmF0 aXZlX2NwdWlkKGVheCwgZWJ4LCBlY3gsIGVkeCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVpZF9lYXgodW5zaWduZWQgaW50 IG9wKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7CjE0 NDc0OiAKMTQ0NzQ6ICBjcHVpZChvcCwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7CjE0NDc0OiAK MTQ0NzQ6ICByZXR1cm4gZWF4OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQg Y3B1aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg ZWF4LCBlYngsIGVjeCwgZWR4OwoxNDQ3NDogCjE0NDc0OiAgY3B1aWQob3AsICZlYXgsICZlYngs ICZlY3gsICZlZHgpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGVieDsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBpbnQgb3ApCjE0NDc0OiB7 CjE0NDc0OiAgdW5zaWduZWQgaW50IGVheCwgZWJ4LCBlY3gsIGVkeDsKMTQ0NzQ6IAoxNDQ3NDog IGNwdWlkKG9wLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biBlY3g7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVpZF9lZHgodW5z aWduZWQgaW50IG9wKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4 LCBlZHg7CjE0NDc0OiAKMTQ0NzQ6ICBjcHVpZChvcCwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7 CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZWR4OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCByZXBfbm9wKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgYXNtIHZvbGF0aWxlKCJyZXA7IG5vcCIgOjo6ICJtZW1vcnkiKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIGNwdV9yZWxheCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJlcF9ub3AoKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgNzA1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBzeW5jX2NvcmUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICMgNzM4ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgoxNDQ3NDogIHVuc2lnbmVkIGludCB0bXA7CjE0NDc0 OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUgKAoxNDQ3NDogICAiOTg3OiBcblx0IiAiLnB1c2hzZWN0 aW9uIC5kaXNjYXJkLnVud2luZF9oaW50c1xuXHQiICIubG9uZyA5ODdiIC0gLlxuXHQiICIuc2hv cnQgIiAiMCIgIlxuXHQiICIuYnl0ZSAiICIwIiAiXG5cdCIgIi5ieXRlICIgIjMiICJcblx0IiAi LmJ5dGUgIiAiMCIgIlxuXHQiICIuYmFsaWduIDQgXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIKMTQ0 NzQ6ICAgIm1vdiAlJXNzLCAlMFxuXHQiCjE0NDc0OiAgICJwdXNocSAlcTBcblx0IgoxNDQ3NDog ICAicHVzaHEgJSVyc3Bcblx0IgoxNDQ3NDogICAiYWRkcSAkOCwgKCUlcnNwKVxuXHQiCjE0NDc0 OiAgICJwdXNoZnFcblx0IgoxNDQ3NDogICAibW92ICUlY3MsICUwXG5cdCIKMTQ0NzQ6ICAgInB1 c2hxICVxMFxuXHQiCjE0NDc0OiAgICJwdXNocSAkMWZcblx0IgoxNDQ3NDogICAiaXJldHFcblx0 IgoxNDQ3NDogICAiOTg3OiBcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVud2luZF9oaW50 c1xuXHQiICIubG9uZyA5ODdiIC0gLlxuXHQiICIuc2hvcnQgIiAiMCIgIlxuXHQiICIuYnl0ZSAi ICIwIiAiXG5cdCIgIi5ieXRlICIgIjQiICJcblx0IiAiLmJ5dGUgIiAiMCIgIlxuXHQiICIuYmFs aWduIDQgXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIKMTQ0NzQ6ICAgIjE6IgoxNDQ3NDogICA6ICI9 JnIiICh0bXApLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogOiAiY2MiLCAibWVtb3J5 Iik7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgc2VsZWN0X2lk bGVfcm91dGluZShjb25zdCBzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgYW1kX2U0MDBfYzFlX2FwaWNfc2V0dXAodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1 bnNpZ25lZCBsb25nIGJvb3Rfb3B0aW9uX2lkbGVfb3ZlcnJpZGU7CjE0NDc0OiAKMTQ0NzQ6IGVu dW0gaWRsZV9ib290X292ZXJyaWRlIHtJRExFX05PX09WRVJSSURFPTAsIElETEVfSEFMVCwgSURM RV9OT01XQUlULAoxNDQ3NDogICAgIElETEVfUE9MTH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIGVuYWJsZV9zZXBfY3B1KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCBzeXNlbnRlcl9zZXR1 cCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVz Y19wdHIgZWFybHlfZ2R0X2Rlc2NyOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzd2l0Y2hf dG9fbmV3X2dkdChpbnQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbG9hZF9kaXJlY3RfZ2R0KGludCk7 CjE0NDc0OiBleHRlcm4gdm9pZCBsb2FkX2ZpeG1hcF9nZHQoaW50KTsKMTQ0NzQ6IGV4dGVybiB2 b2lkIGxvYWRfcGVyY3B1X3NlZ21lbnQoaW50KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNwdV9pbml0 KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgY3I0X2luaXQodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHVuc2lnbmVkIGxvbmcgZ2V0X2RlYnVnY3RsbXNyKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyBkZWJ1Z2N0bG1zciA9IDA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogICgoZGVidWdjdGxtc3IpID0gbmF0aXZlX3JlYWRfbXNyKCgweDAw MDAwMWQ5KSkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGRlYnVnY3RsbXNyOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHVwZGF0ZV9kZWJ1Z2N0bG1zcih1bnNpZ25lZCBsb25nIGRlYnVn Y3RsbXNyKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg d3Jtc3JsKDB4MDAwMDAxZDksIGRlYnVnY3RsbXNyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHZvaWQgc2V0X3Rhc2tfYmxvY2tzdGVwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywg Ym9vbCBvbik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBib290bG9hZGVyX3R5 cGU7CjE0NDc0OiBleHRlcm4gaW50IGJvb3Rsb2FkZXJfdmVyc2lvbjsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGNoYXIgaWdub3JlX2ZwdV9pcnE7CjE0NDc0OiAjIDgyNiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wcm9jZXNzb3IuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcHJlZmV0Y2goY29uc3Qgdm9pZCAqeCkK MTQ0NzQ6IHsKMTQ0NzQ6ICBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIjIEFMVDogb2xkbnN0clxu IiAiNjYxOlxuXHQiICJwcmVmZXRjaHQwICVQMSIgIlxuNjYyOlxuIiAiIyBBTFQ6IHBhZGRpbmdc biIgIi5za2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpLSgiICI2NjJiLTY2MWIi ICIpKSA+IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpLSgiICI2NjJiLTY2 MWIiICIpKSwweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9u cyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAiNjY0IiIxIiJmIC0gLlxu IiAiIC53b3JkICIgIiggMCozMisyNSkiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxu IiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIi Yi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBs YWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAiMSIgIlxuIiAiNjY0IiIx IiI6XG5cdCIgInByZWZldGNobnRhICVQMSIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rp b25cbiIgOiA6ICJpIiAoMCksICJtIiAoKihjb25zdCBjaGFyICopeCkpCjE0NDc0OiAKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHByZWZldGNodyhjb25z dCB2b2lkICp4KQoxNDQ3NDogewoxNDQ3NDogIGFzbSBfX2lubGluZSB2b2xhdGlsZSAoIiMgQUxU OiBvbGRuc3RyXG4iICI2NjE6XG5cdCIgInByZWZldGNodDAgJVAxIiAiXG42NjI6XG4iICIjIEFM VDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIg IjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikt KCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0 aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQi IjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA2KjMyKyA4KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIi Yi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5 dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24gLmFs dGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIxIiAi XG4iICI2NjQiIjEiIjpcblx0IiAicHJlZmV0Y2h3ICVQMSIgIlxuIiAiNjY1IiIxIiAiOlxuIiAi LnBvcHNlY3Rpb25cbiIgOiA6ICJpIiAoMCksICJtIiAoKihjb25zdCBjaGFyICopeCkpCjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgc3Bpbl9sb2NrX3ByZWZldGNoKGNvbnN0IHZvaWQgKngpCjE0NDc0OiB7CjE0 NDc0OiAgcHJlZmV0Y2h3KHgpOwoxNDQ3NDogfQoxNDQ3NDogIyA5MjUgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vcHJvY2Vzc29yLmgiCjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBLU1RLX0VT UChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHZvaWQgc3RhcnRfdGhyZWFkKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25l ZCBsb25nIG5ld19pcCwKMTQ0NzQ6ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV3X3NwKTsK MTQ0NzQ6ICMgOTQ1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgoxNDQ3NDog ZXh0ZXJuIGludCBnZXRfdHNjX21vZGUodW5zaWduZWQgbG9uZyBhZHIpOwoxNDQ3NDogZXh0ZXJu IGludCBzZXRfdHNjX21vZGUodW5zaWduZWQgaW50IHZhbCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikpKSBfX3R5cGVvZl9f KHU2NCkgbXNyX21pc2NfZmVhdHVyZXNfc2hhZG93OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiB1MTYgYW1kX2dldF9uYl9pZChpbnQgY3B1KTsKMTQ0NzQ6IGV4dGVybiB1MzIgYW1kX2dl dF9ub2Rlc19wZXJfc29ja2V0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHVpbnQzMl90IGh5cGVydmlzb3JfY3B1aWRfYmFzZShjb25zdCBjaGFy ICpzaWcsIHVpbnQzMl90IGxlYXZlcykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1aW50MzJfdCBiYXNlLCBl YXgsIHNpZ25hdHVyZVszXTsKMTQ0NzQ6IAoxNDQ3NDogIGZvciAoYmFzZSA9IDB4NDAwMDAwMDA7 IGJhc2UgPCAweDQwMDEwMDAwOyBiYXNlICs9IDB4MTAwKSB7CjE0NDc0OiAgIGNwdWlkKGJhc2Us ICZlYXgsICZzaWduYXR1cmVbMF0sICZzaWduYXR1cmVbMV0sICZzaWduYXR1cmVbMl0pOwoxNDQ3 NDogCjE0NDc0OiAgIGlmICghbWVtY21wKHNpZywgc2lnbmF0dXJlLCAxMikgJiYKMTQ0NzQ6ICAg ICAgIChsZWF2ZXMgPT0gMCB8fCAoKGVheCAtIGJhc2UpID49IGxlYXZlcykpKQoxNDQ3NDogICAg cmV0dXJuIGJhc2U7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGFyY2hfYWxpZ25fc3RhY2sodW5z aWduZWQgbG9uZyBzcCk7CjE0NDc0OiB2b2lkIGZyZWVfaW5pdF9wYWdlcyhjb25zdCBjaGFyICp3 aGF0LCB1bnNpZ25lZCBsb25nIGJlZ2luLCB1bnNpZ25lZCBsb25nIGVuZCk7CjE0NDc0OiBleHRl cm4gdm9pZCBmcmVlX2tlcm5lbF9pbWFnZV9wYWdlcyhjb25zdCBjaGFyICp3aGF0LCB2b2lkICpi ZWdpbiwgdm9pZCAqZW5kKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkZWZhdWx0X2lkbGUodm9pZCk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2 b2lkIHN0b3BfdGhpc19jcHUodm9pZCAqZHVtbXkpOwoxNDQ3NDogdm9pZCBtaWNyb2NvZGVfY2hl Y2sodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gbDF0Zl9taXRpZ2F0aW9ucyB7CjE0NDc0OiAg TDFURl9NSVRJR0FUSU9OX09GRiwKMTQ0NzQ6ICBMMVRGX01JVElHQVRJT05fRkxVU0hfTk9XQVJO LAoxNDQ3NDogIEwxVEZfTUlUSUdBVElPTl9GTFVTSCwKMTQ0NzQ6ICBMMVRGX01JVElHQVRJT05f RkxVU0hfTk9TTVQsCjE0NDc0OiAgTDFURl9NSVRJR0FUSU9OX0ZVTEwsCjE0NDc0OiAgTDFURl9N SVRJR0FUSU9OX0ZVTExfRk9SQ0UKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBlbnVt IGwxdGZfbWl0aWdhdGlvbnMgbDF0Zl9taXRpZ2F0aW9uOwoxNDQ3NDogCjE0NDc0OiBlbnVtIG1k c19taXRpZ2F0aW9ucyB7CjE0NDc0OiAgTURTX01JVElHQVRJT05fT0ZGLAoxNDQ3NDogIE1EU19N SVRJR0FUSU9OX0ZVTEwsCjE0NDc0OiAgTURTX01JVElHQVRJT05fVk1XRVJWLAoxNDQ3NDogfTsK MTQ0NzQ6ICMgNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiIDIKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gY3B1 aWRfbGVhZnMKMTQ0NzQ6IHsKMTQ0NzQ6ICBDUFVJRF8xX0VEWCA9IDAsCjE0NDc0OiAgQ1BVSURf ODAwMF8wMDAxX0VEWCwKMTQ0NzQ6ICBDUFVJRF84MDg2XzAwMDFfRURYLAoxNDQ3NDogIENQVUlE X0xOWF8xLAoxNDQ3NDogIENQVUlEXzFfRUNYLAoxNDQ3NDogIENQVUlEX0MwMDBfMDAwMV9FRFgs CjE0NDc0OiAgQ1BVSURfODAwMF8wMDAxX0VDWCwKMTQ0NzQ6ICBDUFVJRF9MTlhfMiwKMTQ0NzQ6 ICBDUFVJRF9MTlhfMywKMTQ0NzQ6ICBDUFVJRF83XzBfRUJYLAoxNDQ3NDogIENQVUlEX0RfMV9F QVgsCjE0NDc0OiAgQ1BVSURfTE5YXzQsCjE0NDc0OiAgQ1BVSURfN18xX0VBWCwKMTQ0NzQ6ICBD UFVJRF84MDAwXzAwMDhfRUJYLAoxNDQ3NDogIENQVUlEXzZfRUFYLAoxNDQ3NDogIENQVUlEXzgw MDBfMDAwQV9FRFgsCjE0NDc0OiAgQ1BVSURfN19FQ1gsCjE0NDc0OiAgQ1BVSURfODAwMF8wMDA3 X0VCWCwKMTQ0NzQ6ICBDUFVJRF83X0VEWCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCB4ODZfY2FwX2ZsYWdzWzE5KjMyXTsKMTQ0NzQ6 IGV4dGVybiBjb25zdCBjaGFyICogY29uc3QgeDg2X3Bvd2VyX2ZsYWdzWzMyXTsKMTQ0NzQ6ICMg NDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIgoxNDQ3NDogZXh0ZXJuIGNv bnN0IGNoYXIgKiBjb25zdCB4ODZfYnVnX2ZsYWdzWzEqMzJdOwoxNDQ3NDogIyAxNDEgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0dXBf Y2xlYXJfY3B1X2NhcCh1bnNpZ25lZCBpbnQgYml0KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNsZWFy X2NwdV9jYXAoc3RydWN0IGNwdWluZm9feDg2ICpjLCB1bnNpZ25lZCBpbnQgYml0KTsKMTQ0NzQ6 ICMgMTczICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBfc3RhdGljX2NwdV9oYXModTE2IGJp dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGFzbSBnb3RvKCIxOiBqbXAgNmZcbiIgIjI6XG4iICIu c2tpcCAtKCgoNWYtNGYpIC0gKDJiLTFiKSkgPiAwKSAqICIgIigoNWYtNGYpIC0gKDJiLTFiKSks MHg5MFxuIiAiMzpcbiIgIi5zZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9u ZyAxYiAtIC5cbiIgIiAubG9uZyA0ZiAtIC5cbiIgIiAud29yZCAlUFthbHdheXNdXG4iICIgLmJ5 dGUgM2IgLSAxYlxuIiAiIC5ieXRlIDVmIC0gNGZcbiIgIiAuYnl0ZSAzYiAtIDJiXG4iICIucHJl dmlvdXNcbiIgIi5zZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCxcImF4XCJcbiIgIjQ6IGpt cCAlbFt0X25vXVxuIiAiNTpcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gLmFsdGluc3RydWN0 aW9ucyxcImFcIlxuIiAiIC5sb25nIDFiIC0gLlxuIiAiIC5sb25nIDBcbiIgIiAud29yZCAlUFtm ZWF0dXJlXVxuIiAiIC5ieXRlIDNiIC0gMWJcbiIgIiAuYnl0ZSAwXG4iICIgLmJ5dGUgMFxuIiAi LnByZXZpb3VzXG4iICIuc2VjdGlvbiAuYWx0aW5zdHJfYXV4LFwiYXhcIlxuIiAiNjpcbiIgIiB0 ZXN0YiAlW2JpdG51bV0sJVtjYXBfYnl0ZV1cbiIgIiBqbnogJWxbdF95ZXNdXG4iICIgam1wICVs W3Rfbm9dXG4iICIucHJldmlvdXNcbiIgOiA6IFtmZWF0dXJlXSAiaSIgKGJpdCksIFthbHdheXNd ICJpIiAoKCAzKjMyKzIxKSksIFtiaXRudW1dICJpIiAoMSA8PCAoYml0ICYgNykpLCBbY2FwX2J5 dGVdICJtIiAoKChjb25zdCBjaGFyICopYm9vdF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0eSlbYml0 ID4+IDNdKSA6IDogdF95ZXMsIHRfbm8pOyBhc20gKCIiKTsgfSB3aGlsZSAoMCkKMTQ0NzQ6ICMg MjEwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIKMTQ0NzQ6ICAgICAgICAg ICAgICAgICAgICA7CjE0NDc0OiB0X3llczoKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IHRf bm86CjE0NDc0OiAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogfQoxNDQ3NDogIyA1NCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IHRocmVhZF9pbmZvIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3NDogIHUz MiBzdGF0dXM7CjE0NDc0OiB9OwoxNDQ3NDogIyAxODYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v dGhyZWFkX2luZm8uaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBhcmNoX3dpdGhpbl9zdGFja19mcmFtZXMoY29uc3Qg dm9pZCAqIGNvbnN0IHN0YWNrLAoxNDQ3NDogICAgICAgICBjb25zdCB2b2lkICogY29uc3Qgc3Rh Y2tlbmQsCjE0NDc0OiAgICAgICAgIGNvbnN0IHZvaWQgKm9iaiwgdW5zaWduZWQgbG9uZyBsZW4p CjE0NDc0OiB7CjE0NDc0OiAjIDIxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5m by5oIgoxNDQ3NDogIHJldHVybiBOT1RfU1RBQ0s7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MjQyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgiCjE0NDc0OiBleHRlcm4g dm9pZCBhcmNoX3Rhc2tfY2FjaGVfaW5pdCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYXJjaF9k dXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVj dCAqc3JjKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGFyY2hfcmVsZWFzZV90YXNrX3N0cnVjdChzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzayk7CjE0NDc0OiBleHRlcm4gdm9pZCBhcmNoX3NldHVwX25ld19l eGVjKHZvaWQpOwoxNDQ3NDogIyAzOSAiLi9pbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmgiIDIK MTQ0NzQ6ICMgNTMgIi4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBz ZXRfdGlfdGhyZWFkX2ZsYWcoc3RydWN0IHRocmVhZF9pbmZvICp0aSwgaW50IGZsYWcpCjE0NDc0 OiB7CjE0NDc0OiAgc2V0X2JpdChmbGFnLCAodW5zaWduZWQgbG9uZyAqKSZ0aS0+ZmxhZ3MpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNsZWFyX3RpX3RocmVhZF9mbGFnKHN0cnVjdCB0 aHJlYWRfaW5mbyAqdGksIGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDogIGNsZWFyX2JpdChmbGFn LCAodW5zaWduZWQgbG9uZyAqKSZ0aS0+ZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHVwZGF0ZV90aV90aHJlYWRfZmxhZyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBpbnQgZmxh ZywKMTQ0NzQ6ICAgICAgIGJvb2wgdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHZhbHVlKQox NDQ3NDogICBzZXRfdGlfdGhyZWFkX2ZsYWcodGksIGZsYWcpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6 ICAgY2xlYXJfdGlfdGhyZWFkX2ZsYWcodGksIGZsYWcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGks IGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KGZsYWcs ICh1bnNpZ25lZCBsb25nICopJnRpLT5mbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCB0ZXN0X2FuZF9jbGVhcl90aV90aHJlYWRfZmxhZyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBp bnQgZmxhZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KGZsYWcs ICh1bnNpZ25lZCBsb25nICopJnRpLT5mbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCB0ZXN0X3RpX3RocmVhZF9mbGFnKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGksIGludCBmbGFnKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiB0ZXN0X2JpdChmbGFnLCAodW5zaWduZWQgbG9uZyAqKSZ0 aS0+ZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjIgIi4vaW5jbHVkZS9saW51eC90aHJlYWRf aW5mby5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja19vYmplY3Rfc2l6ZShjb25zdCB2b2lkICpwdHIsIHVu c2lnbmVkIGxvbmcgbiwKMTQ0NzQ6ICAgICAgICAgIGJvb2wgdG9fdXNlcikKMTQ0NzQ6IHsgfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fZXJyb3Jf XygiY29weSBzb3VyY2Ugc2l6ZSBpcyB0b28gc21hbGwiKSkpCjE0NDc0OiBfX2JhZF9jb3B5X2Zy b20odm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oImNv cHkgZGVzdGluYXRpb24gc2l6ZSBpcyB0b28gc21hbGwiKSkpCjE0NDc0OiBfX2JhZF9jb3B5X3Rv KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNvcHlfb3ZlcmZsb3coaW50IHNpemUsIHVuc2ln bmVkIGxvbmcgY291bnQpCjE0NDc0OiB7CjE0NDc0OiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAh ISgxKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IF9f d2Fybl9wcmludGsoIkJ1ZmZlciBvdmVyZmxvdyBkZXRlY3RlZCAoJWQgPCAlbHUpIVxuIiwgc2l6 ZSwgY291bnQpOyBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUg MHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpc dCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQi ICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQg JWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5 OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNs dWRlL2xpbnV4L3RocmVhZF9pbmZvLmgiKSwgImkiICgxMzQpLCAiaSIgKCgxIDw8IDApfCgoMSA8 PCAzKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3 aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2Nh cmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg OiA6ICJpIiAoMCkpOyB9KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhw ZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIGJvb2wKMTQ0NzQ6IGNoZWNrX2NvcHlfc2l6ZShjb25zdCB2b2lkICph ZGRyLCBzaXplX3QgYnl0ZXMsIGJvb2wgaXNfc291cmNlKQoxNDQ3NDogewoxNDQ3NDogIGludCBz eiA9IF9fYnVpbHRpbl9vYmplY3Rfc2l6ZShhZGRyLCAwKTsKMTQ0NzQ6ICBpZiAoX19idWlsdGlu X2V4cGVjdCghIShzeiA+PSAwICYmIHN6IDwgYnl0ZXMpLCAwKSkgewoxNDQ3NDogICBpZiAoIV9f YnVpbHRpbl9jb25zdGFudF9wKGJ5dGVzKSkKMTQ0NzQ6ICAgIGNvcHlfb3ZlcmZsb3coc3osIGJ5 dGVzKTsKMTQ0NzQ6ICAgZWxzZSBpZiAoaXNfc291cmNlKQoxNDQ3NDogICAgX19iYWRfY29weV9m cm9tKCk7CjE0NDc0OiAgIGVsc2UKMTQ0NzQ6ICAgIF9fYmFkX2NvcHlfdG8oKTsKMTQ0NzQ6ICAg cmV0dXJuIGZhbHNlOwoxNDQ3NDogIH0KMTQ0NzQ6ICBpZiAoKHsgaW50IF9fcmV0X3dhcm5fb24g PSAhIShieXRlcyA+ICgoaW50KSh+MFUgPj4gMSkpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0 IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdc IlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRk clxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIg Ilx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMg YnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAi aSIgKCJpbmNsdWRlL2xpbnV4L3RocmVhZF9pbmZvLmgiKSwgImkiICgxNTApLCAiaSIgKCgxIDw8 IDApfCgoMSA8PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRy eSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rp b24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgOiA6ICJpIiAoMSkpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3Qo ISEoX19yZXRfd2Fybl9vbiksIDApOyB9KSkKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDog IGNoZWNrX29iamVjdF9zaXplKGFkZHIsIGJ5dGVzLCBpc19zb3VyY2UpOwoxNDQ3NDogIHJldHVy biB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogIyA4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ByZWVt cHQuaCIgMgoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRh dGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhpbnQpIF9fcHJlZW1wdF9jb3VudDsKMTQ0NzQ6 ICMgMjQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJlZW1wdC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgcHJlZW1wdF9jb3VudCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoX19wcmVlbXB0X2NvdW50KSBwZm9fcmV0X187IHN3 aXRjaCAoc2l6ZW9mKF9fcHJlZW1wdF9jb3VudCkpIHsgY2FzZSAxOiBhc20gKCJtb3YiICJiICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVt cHRfY291bnQpKTsgYnJlYWs7IGNhc2UgMjogYXNtICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJy ZWFrOyBjYXNlIDQ6IGFzbSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9 ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsgY2FzZSA4OiBh c20gKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9z aXplKCk7IH0gcGZvX3JldF9fOyB9KSAmIH4weDgwMDAwMDAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgcHJlZW1wdF9jb3Vu dF9zZXQoaW50IHBjKQoxNDQ3NDogewoxNDQ3NDogIGludCBvbGQsIG5ldzsKMTQ0NzQ6IAoxNDQ3 NDogIGRvIHsKMTQ0NzQ6ICAgb2xkID0gKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGZvX3Jl dF9fOyBzd2l0Y2ggKHNpemVvZihfX3ByZWVtcHRfY291bnQpKSB7IGNhc2UgMTogYXNtICgibW92 IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAo X19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSAoIm1vdiIgIncgIiIlJSIiZ3Mi IjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3Vu dCkpOyBicmVhazsgY2FzZSA0OiBhc20gKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNh c2UgODogYXNtICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZv X3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7CjE0NDc0OiAgIG5ldyA9IChvbGQgJiAweDgw MDAwMDAwKSB8CjE0NDc0OiAgICAocGMgJiB+MHg4MDAwMDAwMCk7CjE0NDc0OiAgfSB3aGlsZSAo KHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGNvX3JldF9fOyB0eXBlb2YoX19wcmVlbXB0X2Nv dW50KSBwY29fb2xkX18gPSAob2xkKTsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGNvX25ld19f ID0gKG5ldyk7IHN3aXRjaCAoc2l6ZW9mKF9fcHJlZW1wdF9jb3VudCkpIHsgY2FzZSAxOiBhc20g KCJjbXB4Y2hnYiAlMiwgIiIlJSIiZ3MiIjoiICIlIiAiMSIgOiAiPWEiIChwY29fcmV0X18pLCAi K20iIChfX3ByZWVtcHRfY291bnQpIDogInEiIChwY29fbmV3X18pLCAiMCIgKHBjb19vbGRfXykg OiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IGFzbSAoImNtcHhjaGd3ICUyLCAiIiUlIiJncyIi OiIgIiUiICIxIiA6ICI9YSIgKHBjb19yZXRfXyksICIrbSIgKF9fcHJlZW1wdF9jb3VudCkgOiAi ciIgKHBjb19uZXdfXyksICIwIiAocGNvX29sZF9fKSA6ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2Ug NDogYXNtICgiY21weGNoZ2wgJTIsICIiJSUiImdzIiI6IiAiJSIgIjEiIDogIj1hIiAocGNvX3Jl dF9fKSwgIittIiAoX19wcmVlbXB0X2NvdW50KSA6ICJyIiAocGNvX25ld19fKSwgIjAiIChwY29f b2xkX18pIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSA4OiBhc20gKCJjbXB4Y2hncSAlMiwgIiIl JSIiZ3MiIjoiICIlIiAiMSIgOiAiPWEiIChwY29fcmV0X18pLCAiK20iIChfX3ByZWVtcHRfY291 bnQpIDogInIiIChwY29fbmV3X18pLCAiMCIgKHBjb19vbGRfXykgOiAibWVtb3J5Iik7IGJyZWFr OyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBjb19yZXRfXzsgfSkgIT0gb2xkKTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgNTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJlZW1wdC5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNldF9wcmVlbXB0 X25lZWRfcmVzY2hlZCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgdHlwZWRlZiB0eXBlb2Yo KF9fcHJlZW1wdF9jb3VudCkpIHB0b19UX187IGlmICgwKSB7IHB0b19UX18gcHRvX3RtcF9fOyBw dG9fdG1wX18gPSAofjB4ODAwMDAwMDApOyAodm9pZClwdG9fdG1wX187IH0gc3dpdGNoIChzaXpl b2YoKF9fcHJlZW1wdF9jb3VudCkpKSB7IGNhc2UgMTogYXNtICgiYW5kIiAiYiAlMSwiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJxaSIgKChwdG9fVF9f KSh+MHg4MDAwMDAwMCkpKTsgYnJlYWs7IGNhc2UgMjogYXNtICgiYW5kIiAidyAlMSwiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJyaSIgKChwdG9fVF9f KSh+MHg4MDAwMDAwMCkpKTsgYnJlYWs7IGNhc2UgNDogYXNtICgiYW5kIiAibCAlMSwiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJyaSIgKChwdG9fVF9f KSh+MHg4MDAwMDAwMCkpKTsgYnJlYWs7IGNhc2UgODogYXNtICgiYW5kIiAicSAlMSwiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJyZSIgKChwdG9fVF9f KSh+MHg4MDAwMDAwMCkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0g fSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBjbGVhcl9wcmVlbXB0X25lZWRfcmVzY2hlZCh2b2lkKQoxNDQ3 NDogewoxNDQ3NDogIGRvIHsgdHlwZWRlZiB0eXBlb2YoKF9fcHJlZW1wdF9jb3VudCkpIHB0b19U X187IGlmICgwKSB7IHB0b19UX18gcHRvX3RtcF9fOyBwdG9fdG1wX18gPSAoMHg4MDAwMDAwMCk7 ICh2b2lkKXB0b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoX19wcmVlbXB0X2NvdW50KSkpIHsg Y2FzZSAxOiBhc20gKCJvciIgImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19w cmVlbXB0X2NvdW50KSkgOiAicWkiICgocHRvX1RfXykoMHg4MDAwMDAwMCkpKTsgYnJlYWs7IGNh c2UgMjogYXNtICgib3IiICJ3ICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJl ZW1wdF9jb3VudCkpIDogInJpIiAoKHB0b19UX18pKDB4ODAwMDAwMDApKSk7IGJyZWFrOyBjYXNl IDQ6IGFzbSAoIm9yIiAibCAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVt cHRfY291bnQpKSA6ICJyaSIgKChwdG9fVF9fKSgweDgwMDAwMDAwKSkpOyBicmVhazsgY2FzZSA4 OiBhc20gKCJvciIgInEgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0 X2NvdW50KSkgOiAicmUiICgocHRvX1RfXykoMHg4MDAwMDAwMCkpKTsgYnJlYWs7IGRlZmF1bHQ6 IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCB0ZXN0X3ByZWVtcHRf bmVlZF9yZXNjaGVkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICEoKHsgdHlwZW9mKF9f cHJlZW1wdF9jb3VudCkgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihfX3ByZWVtcHRfY291bnQp KSB7IGNhc2UgMTogYXNtICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1x IiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBjYXNlIDI6IGFz bSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykg OiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsgY2FzZSA0OiBhc20gKCJtb3YiICJsICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVt cHRfY291bnQpKTsgYnJlYWs7IGNhc2UgODogYXNtICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSkgJiAweDgw MDAwMDAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19wcmVlbXB0 X2NvdW50X2FkZChpbnQgdmFsKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgdHlwZWRlZiB0eXBlb2Yo KF9fcHJlZW1wdF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0 aW5fY29uc3RhbnRfcCh2YWwpICYmICgodmFsKSA9PSAxIHx8ICh2YWwpID09IC0xKSkgPyAoaW50 KSh2YWwpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9ICh2YWwp OyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKF9fcHJlZW1wdF9jb3VudCkpKSB7 IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkg YXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQp KSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19w cmVlbXB0X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykodmFsKSkpOyBicmVhazsgY2FzZSAyOiBp ZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3 ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBh c20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291 bnQpKSA6ICJyaSIgKChwYW9fVF9fKSh2YWwpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1w dF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGwg JTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInJp IiAoKHBhb19UX18pKHZhbCkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmUiICgocGFvX1Rf XykodmFsKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxl ICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIF9fcHJlZW1wdF9jb3VudF9zdWIoaW50IHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBkbyB7IHR5cGVkZWYgdHlwZW9mKChfX3ByZWVtcHRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBp bnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLXZhbCkgJiYgKCgtdmFsKSA9PSAx IHx8ICgtdmFsKSA9PSAtMSkpID8gKGludCkoLXZhbCkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBh b190bXBfXzsgcGFvX3RtcF9fID0gKC12YWwpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChz aXplb2YoKF9fcHJlZW1wdF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicWkiICgocGFvX1Rf XykoLXZhbCkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3cg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLXZhbCkp KTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURf XyA9PSAtMSkgYXNtICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVt cHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLXZhbCkpKTsgYnJlYWs7 IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkg YXNtICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQp KSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19w cmVlbXB0X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLXZhbCkpKTsgYnJlYWs7IGRlZmF1bHQ6 IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgX19wcmVlbXB0X2NvdW50X2RlY19hbmRfdGVzdCh2 b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoImRl Y2wiICIgIiAiJSUiImdzIiI6IiAiJSIgIlt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24g Y29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iIChfX3ByZWVtcHRfY291bnQpLCAiPUBjYyIg ImUiIChjKSA6IDogIm1lbW9yeSIpOyBjOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBi b29sIHNob3VsZF9yZXNjaGVkKGludCBwcmVlbXB0X29mZnNldCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gX19idWlsdGluX2V4cGVjdCghISgoeyB0eXBlb2YoX19wcmVlbXB0X2NvdW50KSBwZm9f cmV0X187IHN3aXRjaCAoc2l6ZW9mKF9fcHJlZW1wdF9jb3VudCkpIHsgY2FzZSAxOiBhc20gKCJt b3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0i IChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2UgMjogYXNtICgibW92IiAidyAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2Nv dW50KSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIi LCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsg Y2FzZSA4OiBhc20gKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChw Zm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFk X3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KSA9PSBwcmVlbXB0X29mZnNldCksIDApOwox NDQ3NDogfQoxNDQ3NDogIyA3OSAiLi9pbmNsdWRlL2xpbnV4L3ByZWVtcHQuaCIgMgoxNDQ3NDog IyAyNzcgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiCjE0NDc0OiBzdHJ1Y3QgcHJlZW1wdF9u b3RpZmllcjsKMTQ0NzQ6ICMgMjkzICIuL2luY2x1ZGUvbGludXgvcHJlZW1wdC5oIgoxNDQ3NDog c3RydWN0IHByZWVtcHRfb3BzIHsKMTQ0NzQ6ICB2b2lkICgqc2NoZWRfaW4pKHN0cnVjdCBwcmVl bXB0X25vdGlmaWVyICpub3RpZmllciwgaW50IGNwdSk7CjE0NDc0OiAgdm9pZCAoKnNjaGVkX291 dCkoc3RydWN0IHByZWVtcHRfbm90aWZpZXIgKm5vdGlmaWVyLAoxNDQ3NDogICAgICBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKm5leHQpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzA2ICIuL2luY2x1ZGUvbGlu dXgvcHJlZW1wdC5oIgoxNDQ3NDogc3RydWN0IHByZWVtcHRfbm90aWZpZXIgewoxNDQ3NDogIHN0 cnVjdCBobGlzdF9ub2RlIGxpbms7CjE0NDc0OiAgc3RydWN0IHByZWVtcHRfb3BzICpvcHM7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHByZWVtcHRfbm90aWZpZXJfaW5jKHZvaWQpOwox NDQ3NDogdm9pZCBwcmVlbXB0X25vdGlmaWVyX2RlYyh2b2lkKTsKMTQ0NzQ6IHZvaWQgcHJlZW1w dF9ub3RpZmllcl9yZWdpc3RlcihzdHJ1Y3QgcHJlZW1wdF9ub3RpZmllciAqbm90aWZpZXIpOwox NDQ3NDogdm9pZCBwcmVlbXB0X25vdGlmaWVyX3VucmVnaXN0ZXIoc3RydWN0IHByZWVtcHRfbm90 aWZpZXIgKm5vdGlmaWVyKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwcmVlbXB0X25vdGlmaWVyX2lu aXQoc3RydWN0IHByZWVtcHRfbm90aWZpZXIgKm5vdGlmaWVyLAoxNDQ3NDogICAgICAgICAgc3Ry dWN0IHByZWVtcHRfb3BzICpvcHMpCjE0NDc0OiB7CjE0NDc0OiAgSU5JVF9ITElTVF9OT0RFKCZu b3RpZmllci0+bGluayk7CjE0NDc0OiAgbm90aWZpZXItPm9wcyA9IG9wczsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgNTIgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51 eC9ib3R0b21faGFsZi5oIiAxCjE0NDc0OiAjIDEwICIuL2luY2x1ZGUvbGludXgvYm90dG9tX2hh bGYuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX2xv Y2FsX2JoX2Rpc2FibGVfaXAodW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgaW50IGNudCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBfX3ByZWVtcHRfY291bnRfYWRkKGNudCk7CjE0NDc0OiAgX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGxvY2FsX2JoX2Rpc2FibGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2xvY2Fs X2JoX2Rpc2FibGVfaXAoKHsgX19sYWJlbF9fIF9faGVyZTsgX19oZXJlOiAodW5zaWduZWQgbG9u ZykmJl9faGVyZTsgfSksICgyICogKDFVTCA8PCAoMCArIDgpKSkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBfbG9jYWxfYmhfZW5hYmxlKHZvaWQpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgX19sb2NhbF9iaF9lbmFibGVfaXAodW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgaW50 IGNudCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9jYWxfYmhfZW5hYmxlX2lwKHVuc2lnbmVkIGxv bmcgaXApCjE0NDc0OiB7CjE0NDc0OiAgX19sb2NhbF9iaF9lbmFibGVfaXAoaXAsICgyICogKDFV TCA8PCAoMCArIDgpKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvY2FsX2JoX2Vu YWJsZSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIF9fbG9jYWxfYmhfZW5hYmxlX2lwKCh7IF9fbGFi ZWxfXyBfX2hlcmU7IF9faGVyZTogKHVuc2lnbmVkIGxvbmcpJiZfX2hlcmU7IH0pLCAoMiAqICgx VUwgPDwgKDAgKyA4KSkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTkgIi4vaW5jbHVkZS9saW51eC9z cGlubG9jay5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVy YXRlZC9hc20vbW1pb3diLmgiIDEKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL21t aW93Yi5oIiAxCjE0NDc0OiAjIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvYXNtL21t aW93Yi5oIiAyCjE0NDc0OiAjIDYxICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIgMgoxNDQ3 NDogIyA4MyAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9zcGlubG9ja190eXBlcy5oIiAxCjE0NDc0OiAjIDE4ICIuL2luY2x1ZGUvbGludXgv c3BpbmxvY2tfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCIg MQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCIKMTQ0NzQ6IHN0cnVjdCB0 YXNrX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCBsb2NrZGVwX21hcDsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IHByb3ZlX2xvY2tpbmc7CjE0NDc0OiBleHRlcm4gaW50IGxvY2tfc3Rh dDsKMTQ0NzQ6ICMgNDEzICIuL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBs b2NrZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9vZmYodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NrZGVwX29uKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9zZXRfc2VsZnRlc3RfdGFzayhzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAjIDQ1OCAiLi9pbmNsdWRl L2xpbnV4L2xvY2tkZXAuaCIKMTQ0NzQ6IHN0cnVjdCBsb2NrX2NsYXNzX2tleSB7IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgbG9ja2RlcF9yZWdpc3Rlcl9rZXkoc3RydWN0IGxvY2tfY2xhc3Nfa2V5 ICprZXkpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF91bnJl Z2lzdGVyX2tleShzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSkKMTQ0NzQ6IHsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxvY2tkZXBfbWFw IHsgfTsKMTQ0NzQ6ICMgNDg0ICIuL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIgoxNDQ3NDogc3Ry dWN0IHBpbl9jb29raWUgeyB9OwoxNDQ3NDogIyA0OTQgIi4vaW5jbHVkZS9saW51eC9sb2NrZGVw LmgiCjE0NDc0OiBlbnVtIHhobG9ja19jb250ZXh0X3QgewoxNDQ3NDogIFhITE9DS19IQVJELAox NDQ3NDogIFhITE9DS19TT0ZULAoxNDQ3NDogIFhITE9DS19DVFhfTlIsCjE0NDc0OiB9OwoxNDQ3 NDogIyA1MDggIi4vaW5jbHVkZS9saW51eC9sb2NrZGVwLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvY2tkZXBf aW52YXJpYW50X3N0YXRlKGJvb2wgZm9yY2UpIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvY2tkZXBfZnJlZV90 YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykge30KMTQ0NzQ6ICMgNTcwICIuL2luY2x1ZGUv bGludXgvbG9ja2RlcC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwcmludF9pcnF0cmFjZV9ldmVudHMoc3RydWN0 IHRhc2tfc3RydWN0ICpjdXJyKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogIyA2NjggIi4vaW5j bHVkZS9saW51eC9sb2NrZGVwLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBsb2NrZGVwX3JjdV9zdXNw aWNpb3VzKGNvbnN0IGNoYXIgKmZpbGUsIGNvbnN0IGludCBsaW5lLCBjb25zdCBjaGFyICpzKQox NDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogIyAxOSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX3R5 cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgcmF3X3NwaW5sb2NrIHsKMTQ0 NzQ6ICBhcmNoX3NwaW5sb2NrX3QgcmF3X2xvY2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH0gcmF3X3NwaW5sb2NrX3Q7CjE0 NDc0OiAjIDYxICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfdHlwZXMuaCIKMTQ0NzQ6IHR5cGVk ZWYgc3RydWN0IHNwaW5sb2NrIHsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCByYXdf c3BpbmxvY2sgcmxvY2s7CjE0NDc0OiAjIDcyICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfdHlw ZXMuaCIKMTQ0NzQ6ICB9OwoxNDQ3NDogfSBzcGlubG9ja190OwoxNDQ3NDogIyA4MyAiLi9pbmNs dWRlL2xpbnV4L3NwaW5sb2NrX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9y d2xvY2tfdHlwZXMuaCIgMQoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja190eXBl cy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIGFyY2hfcndsb2NrX3QgcmF3X2xv Y2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IH0gcndsb2NrX3Q7CjE0NDc0OiAjIDg0ICIuL2luY2x1ZGUvbGludXgvc3Bpbmxv Y2tfdHlwZXMuaCIgMgoxNDQ3NDogIyA4NCAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vc3BpbmxvY2suaCIgMQoxNDQ3NDogIyAxMCAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zcGlubG9jay5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BhcmF2aXJ0LmgiIDEKMTQ0NzQ6ICMgMTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZp cnQuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcmFtZS5oIiAxCjE0NDc0 OiAjIDE5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0LmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdW5zaWduZWQgbG9uZyBsb25nIHBhcmF2aXJ0X3NjaGVkX2Nsb2NrKHZvaWQpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuICh7IHVuc2lnbmVkIGxvbmcgbG9uZyBfX3JldDsgdW5zaWduZWQgbG9u ZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9f ZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy50aW1lLnNjaGVkX2Nsb2NrKTsgaWYg KHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpID4gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSB7IGFz bSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2Fy ZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNl Y3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1 c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIg IlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5 cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZp cnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMi IChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiPWEiIChfX2VheCksICIrciIg KGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgoX19idWls dGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgdGltZS5zY2hlZF9j bG9jaykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMu dGltZS5zY2hlZF9jbG9jaykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAx KSkgOiAibWVtb3J5IiwgImNjIiAsICJyOCIsICJyOSIsICJyMTAiLCAicjExIik7IF9fcmV0ID0g KHVuc2lnbmVkIGxvbmcgbG9uZykoKCgodTY0KV9fZWR4KSA8PCAzMikgfCBfX2VheCk7IH0gZWxz ZSB7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAi LnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxu IiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4 IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2 aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNb cGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkp LCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiPWEiIChfX2VheCks ICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgo X19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgdGltZS5z Y2hlZF9jbG9jaykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihw dl9vcHMudGltZS5zY2hlZF9jbG9jaykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwg OSkgLSAxKSkgOiAibWVtb3J5IiwgImNjIiAsICJyOCIsICJyOSIsICJyMTAiLCAicjExIik7IF9f cmV0ID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoX19lYXggJiAoeyB1bnNpZ25lZCBsb25nIF9fbWFz ayA9IH4wVUw7IHN3aXRjaCAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykpIHsgY2FzZSAxOiBf X21hc2sgPSAweGZmVUw7IGJyZWFrOyBjYXNlIDI6IF9fbWFzayA9IDB4ZmZmZlVMOyBicmVhazsg Y2FzZSA0OiBfX21hc2sgPSAweGZmZmZmZmZmVUw7IGJyZWFrOyBkZWZhdWx0OiBicmVhazsgfSBf X21hc2s7IH0pKTsgfSBfX3JldDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBz dGF0aWNfa2V5OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5IHBhcmF2aXJ0X3N0ZWFs X2VuYWJsZWQ7CjE0NDc0OiBleHRlcm4gc3RydWN0IHN0YXRpY19rZXkgcGFyYXZpcnRfc3RlYWxf cnFfZW5hYmxlZDsKMTQ0NzQ6IAoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19leHRlcm5hbGx5X3Zp c2libGVfXykpIHZvaWQgX19uYXRpdmVfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3Bpbmxv Y2sgKmxvY2spOwoxNDQ3NDogYm9vbCBwdl9pc19uYXRpdmVfc3Bpbl91bmxvY2sodm9pZCk7CjE0 NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSkgYm9vbCBfX25hdGl2 ZV92Y3B1X2lzX3ByZWVtcHRlZChsb25nIGNwdSk7CjE0NDc0OiBib29sIHB2X2lzX25hdGl2ZV92 Y3B1X2lzX3ByZWVtcHRlZCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IHBhcmF2aXJ0X3N0ZWFs X2Nsb2NrKGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHU2NCBfX3JldDsgdW5z aWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBf X2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy50aW1lLnN0ZWFsX2Ns b2NrKTsgaWYgKHNpemVvZih1NjQpID4gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKSB7IGFzbSB2b2xh dGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRw b2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25c blx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0 aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAi ICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1d IiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xv YmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2Vz aSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiPWEiIChfX2VheCksICIrciIgKGN1cnJl bnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgoX19idWlsdGluX29m ZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgdGltZS5zdGVhbF9jbG9jaykg LyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMudGltZS5z dGVhbF9jbG9jaykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAxKSksICJE IiAoKHVuc2lnbmVkIGxvbmcpKGNwdSkpIDogIm1lbW9yeSIsICJjYyIgLCAicjgiLCAicjkiLCAi cjEwIiwgInIxMSIpOyBfX3JldCA9ICh1NjQpKCgoKHU2NClfX2VkeCkgPDwgMzIpIHwgX19lYXgp OyB9IGVsc2UgeyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNl Y3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTli XG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIg Ijc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5i YWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIl Y1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0 ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIg KF9fZWRpKSwgIj1TIiAoX19lc2kpLCAiPWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIj1hIiAo X19lYXgpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1d ICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUs IHRpbWUuc3RlYWxfY2xvY2spIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAi aSIgKCYocHZfb3BzLnRpbWUuc3RlYWxfY2xvY2spKSwgW3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAo KCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBsb25nKShjcHUpKSA6ICJtZW1vcnkiLCAi Y2MiICwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgX19yZXQgPSAodTY0KShfX2VheCAmICh7 IHVuc2lnbmVkIGxvbmcgX19tYXNrID0gfjBVTDsgc3dpdGNoIChzaXplb2YodTY0KSkgeyBjYXNl IDE6IF9fbWFzayA9IDB4ZmZVTDsgYnJlYWs7IGNhc2UgMjogX19tYXNrID0gMHhmZmZmVUw7IGJy ZWFrOyBjYXNlIDQ6IF9fbWFzayA9IDB4ZmZmZmZmZmZVTDsgYnJlYWs7IGRlZmF1bHQ6IGJyZWFr OyB9IF9fbWFzazsgfSkpOyB9IF9fcmV0OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHNsb3dfZG93bl9pbyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHB2X29wcy5jcHUu aW9fZGVsYXkoKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19mbHVzaF90bGIodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICAoeyB1bnNpZ25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4ID0g X19lZHgsIF9fZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLm1tdS5m bHVzaF90bGJfdXNlcik7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5w dXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAi IDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIg IlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIg IiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRl ICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAu c2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDog Ij1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAi K3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9f YnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5mbHVz aF90bGJfdXNlcikgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihw dl9vcHMubW11LmZsdXNoX3RsYl91c2VyKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8 PCA5KSAtIDEpKSA6ICJtZW1vcnkiLCAiY2MiICwgInJheCIsICJyOCIsICJyOSIsICJyMTAiLCAi cjExIik7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fZmx1c2hfdGxiX2dsb2Jh bCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogICh7IHVuc2lnbmVkIGxvbmcgX19lZGkgPSBfX2VkaSwg X19lc2kgPSBfX2VzaSwgX19lZHggPSBfX2VkeCwgX19lY3ggPSBfX2VjeCwgX19lYXggPSBfX2Vh eDs7ICgodm9pZClwdl9vcHMubW11LmZsdXNoX3RsYl9rZXJuZWwpOyBhc20gdm9sYXRpbGUoIiIg Ijc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3Nh ZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNh bGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFy YWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVh ZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAi ICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAi XG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19lc2kpLCAiPWQi IChfX2VkeCksICI9YyIgKF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtw YXJhdmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0 X3BhdGNoX3RlbXBsYXRlLCBtbXUuZmx1c2hfdGxiX2tlcm5lbCkgLyBzaXplb2Yodm9pZCAqKSkp LCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMubW11LmZsdXNoX3RsYl9rZXJuZWwpKSwg W3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpIDogIm1lbW9yeSIsICJjYyIg LCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19mbHVzaF90bGJfb25lX3VzZXIodW5zaWduZWQgbG9uZyBhZGRyKQoxNDQ3 NDogewoxNDQ3NDogICh7IHVuc2lnbmVkIGxvbmcgX19lZGkgPSBfX2VkaSwgX19lc2kgPSBfX2Vz aSwgX19lZHggPSBfX2VkeCwgX19lY3ggPSBfX2VjeCwgX19lYXggPSBfX2VheDs7ICgodm9pZClw dl9vcHMubW11LmZsdXNoX3RsYl9vbmVfdXNlcik7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQi ICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIg IiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFy YXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rp b25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3 NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3 MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3Bz ZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwg Ij1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5 cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVt cGxhdGUsIG1tdS5mbHVzaF90bGJfb25lX3VzZXIpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2 aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLm1tdS5mbHVzaF90bGJfb25lX3VzZXIpKSwgW3BhcmF2 aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBsb25nKShh ZGRyKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIp OyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmbHVzaF90bGJfb3RoZXJzKGNvbnN0 IHN0cnVjdCBjcHVtYXNrICpjcHVtYXNrLAoxNDQ3NDogICAgICAgICBjb25zdCBzdHJ1Y3QgZmx1 c2hfdGxiX2luZm8gKmluZm8pCjE0NDc0OiB7CjE0NDc0OiAgKHsgdW5zaWduZWQgbG9uZyBfX2Vk aSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBf X2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5tbXUuZmx1c2hfdGxiX290aGVycyk7IGFzbSB2 b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5y ZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rp b25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hz ZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxu IiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVu dW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRf Y2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChf X2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3Bv aW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1 Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5mbHVzaF90bGJfb3RoZXJzKSAvIHNpemVv Zih2b2lkICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2X29wcy5tbXUuZmx1c2hfdGxi X290aGVycykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAxKSksICJEIiAo KHVuc2lnbmVkIGxvbmcpKGNwdW1hc2spKSwgIlMiICgodW5zaWduZWQgbG9uZykoaW5mbykpIDog Im1lbW9yeSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGFyYXZpcnRfdGxiX3JlbW92ZV90YWJsZShzdHJ1 Y3QgbW11X2dhdGhlciAqdGxiLCB2b2lkICp0YWJsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bnNp Z25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4ID0gX19lZHgsIF9f ZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLm1tdS50bGJfcmVtb3Zl X3RhYmxlKTsgYXNtIHZvbGF0aWxlKCIiICI3NzE6XG5cdCIgIjk5OTpcblx0IiAiLnB1c2hzZWN0 aW9uIC5kaXNjYXJkLnJldHBvbGluZV9zYWZlXG5cdCIgIiAiICIucXVhZCIgIiAiICIgOTk5Ylxu XHQiICIucG9wc2VjdGlvblxuXHQiICJjYWxsIColY1twYXJhdmlydF9vcHB0cl07IiAiXG4iICI3 NzI6XG4iICIucHVzaHNlY3Rpb24gLnBhcmFpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAiICIuYmFs aWduIDgiICIgIiAiXG4iICIgIiAiLnF1YWQiICIgIiAiIDc3MWJcbiIgIiAgLmJ5dGUgIiAiJWNb cGFyYXZpcnRfdHlwZW51bV0iICJcbiIgIiAgLmJ5dGUgNzcyYi03NzFiXG4iICIgIC5zaG9ydCAi ICIlY1twYXJhdmlydF9jbG9iYmVyXSIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIiIgOiAiPUQiIChf X2VkaSksICI9UyIgKF9fZXNpKSwgIj1kIiAoX19lZHgpLCAiPWMiIChfX2VjeCksICIrciIgKGN1 cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgoX19idWlsdGlu X29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgbW11LnRsYl9yZW1vdmVf dGFibGUpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3Bz Lm1tdS50bGJfcmVtb3ZlX3RhYmxlKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5 KSAtIDEpKSwgIkQiICgodW5zaWduZWQgbG9uZykodGxiKSksICJTIiAoKHVuc2lnbmVkIGxvbmcp KHRhYmxlKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAicjEwIiwgInIx MSIpOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwYXJhdmlydF9hcmNoX2V4aXRf bW1hcChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bnNpZ25lZCBs b25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4ID0gX19lZHgsIF9fZWN4ID0g X19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLm1tdS5leGl0X21tYXApOyBhc20g dm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQu cmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNo c2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJc biIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBl bnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0 X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAo X19lc2kpLCAiPWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19w b2ludGVyKSA6IFtwYXJhdmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3Ry dWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBsYXRlLCBtbXUuZXhpdF9tbWFwKSAvIHNpemVvZih2b2lk ICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2X29wcy5tbXUuZXhpdF9tbWFwKSksIFtw YXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5KSAtIDEpKSwgIkQiICgodW5zaWduZWQgbG9u ZykobW0pKSA6ICJtZW1vcnkiLCAiY2MiICwgInJheCIsICJyOCIsICJyOSIsICJyMTAiLCAicjEx Iik7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA2NDIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBw dl9xdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2ssCjE0NDc0 OiAgICAgICAgdTMyIHZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bnNpZ25lZCBsb25nIF9fZWRp ID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4ID0gX19lZHgsIF9fZWN4ID0gX19lY3gsIF9f ZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLmxvY2sucXVldWVkX3NwaW5fbG9ja19zbG93cGF0 aCk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAi LnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxu IiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4 IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2 aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNb cGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkp LCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50 X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZz ZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIGxvY2sucXVldWVkX3NwaW5fbG9j a19zbG93cGF0aCkgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihw dl9vcHMubG9jay5xdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKSksIFtwYXJhdmlydF9jbG9iYmVy XSAiaSIgKCgoMSA8PCA5KSAtIDEpKSwgIkQiICgodW5zaWduZWQgbG9uZykobG9jaykpLCAiUyIg KCh1bnNpZ25lZCBsb25nKSh2YWwpKSA6ICJtZW1vcnkiLCAiY2MiICwgInJheCIsICJyOCIsICJy OSIsICJyMTAiLCAicjExIik7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgcHZfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVj dCBxc3BpbmxvY2sgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgKHsgdW5zaWduZWQgbG9uZyBfX2Vk aSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBf X2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5sb2NrLnF1ZXVlZF9zcGluX3VubG9jay5mdW5j KTsgYXNtIHZvbGF0aWxlKCIiICI3NzE6XG5cdCIgIjk5OTpcblx0IiAiLnB1c2hzZWN0aW9uIC5k aXNjYXJkLnJldHBvbGluZV9zYWZlXG5cdCIgIiAiICIucXVhZCIgIiAiICIgOTk5YlxuXHQiICIu cG9wc2VjdGlvblxuXHQiICJjYWxsIColY1twYXJhdmlydF9vcHB0cl07IiAiXG4iICI3NzI6XG4i ICIucHVzaHNlY3Rpb24gLnBhcmFpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAiICIuYmFsaWduIDgi ICIgIiAiXG4iICIgIiAiLnF1YWQiICIgIiAiIDc3MWJcbiIgIiAgLmJ5dGUgIiAiJWNbcGFyYXZp cnRfdHlwZW51bV0iICJcbiIgIiAgLmJ5dGUgNzcyYi03NzFiXG4iICIgIC5zaG9ydCAiICIlY1tw YXJhdmlydF9jbG9iYmVyXSIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIiIgOiAiPWEiIChfX2VheCks ICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgo X19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgbG9jay5x dWV1ZWRfc3Bpbl91bmxvY2suZnVuYykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3Bw dHJdICJpIiAoJihwdl9vcHMubG9jay5xdWV1ZWRfc3Bpbl91bmxvY2suZnVuYykpLCBbcGFyYXZp cnRfY2xvYmJlcl0gImkiICgoKDEgPDwgMCkpKSwgIkQiICgodW5zaWduZWQgbG9uZykobG9jaykp IDogIm1lbW9yeSIsICJjYyIgKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBwdl93YWl0KHU4ICpwdHIsIHU4IHZhbCkK MTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bnNpZ25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0g X19lc2ksIF9fZWR4ID0gX19lZHgsIF9fZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZv aWQpcHZfb3BzLmxvY2sud2FpdCk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQi ICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3Bw dHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwi XG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIg IC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxu IiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4i ICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19l Y3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJp IiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIGxv Y2sud2FpdCkgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9v cHMubG9jay53YWl0KSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5KSAtIDEpKSwg IkQiICgodW5zaWduZWQgbG9uZykocHRyKSksICJTIiAoKHVuc2lnbmVkIGxvbmcpKHZhbCkpIDog Im1lbW9yeSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBwdl9raWNrKGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgKHsgdW5zaWduZWQgbG9uZyBf X2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4 LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5sb2NrLmtpY2spOyBhc20gdm9sYXRpbGUo IiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5l X3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg ImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAu cGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIu cXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxu IiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJd IiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19lc2kpLCAi PWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6 IFtwYXJhdmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2 aXJ0X3BhdGNoX3RlbXBsYXRlLCBsb2NrLmtpY2spIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2 aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLmxvY2sua2ljaykpLCBbcGFyYXZpcnRfY2xvYmJlcl0g ImkiICgoKDEgPDwgOSkgLSAxKSksICJEIiAoKHVuc2lnbmVkIGxvbmcpKGNwdSkpIDogIm1lbW9y eSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBw dl92Y3B1X2lzX3ByZWVtcHRlZChsb25nIGNwdSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsg Ym9vbCBfX3JldDsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBf X2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29w cy5sb2NrLnZjcHVfaXNfcHJlZW1wdGVkLmZ1bmMpOyBpZiAoc2l6ZW9mKGJvb2wpID4gc2l6ZW9m KHVuc2lnbmVkIGxvbmcpKSB7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIg Ii5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIg IiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJd OyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4i ICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5i eXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAi ICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIi IDogIj1hIiAoX19lYXgpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0 X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hf dGVtcGxhdGUsIGxvY2sudmNwdV9pc19wcmVlbXB0ZWQuZnVuYykgLyBzaXplb2Yodm9pZCAqKSkp LCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMubG9jay52Y3B1X2lzX3ByZWVtcHRlZC5m dW5jKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCAwKSkpLCAiRCIgKCh1bnNpZ25l ZCBsb25nKShjcHUpKSA6ICJtZW1vcnkiLCAiY2MiICk7IF9fcmV0ID0gKGJvb2wpKCgoKHU2NClf X2VkeCkgPDwgMzIpIHwgX19lYXgpOyB9IGVsc2UgeyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0 IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAi ICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3Bh cmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0 aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIg NzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3 NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9w c2VjdGlvblxuIiAiIiA6ICI9YSIgKF9fZWF4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVy KSA6IFtwYXJhdmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBh cmF2aXJ0X3BhdGNoX3RlbXBsYXRlLCBsb2NrLnZjcHVfaXNfcHJlZW1wdGVkLmZ1bmMpIC8gc2l6 ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLmxvY2sudmNwdV9p c19wcmVlbXB0ZWQuZnVuYykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgMCkpKSwg IkQiICgodW5zaWduZWQgbG9uZykoY3B1KSkgOiAibWVtb3J5IiwgImNjIiApOyBfX3JldCA9IChi b29sKShfX2VheCAmICh7IHVuc2lnbmVkIGxvbmcgX19tYXNrID0gfjBVTDsgc3dpdGNoIChzaXpl b2YoYm9vbCkpIHsgY2FzZSAxOiBfX21hc2sgPSAweGZmVUw7IGJyZWFrOyBjYXNlIDI6IF9fbWFz ayA9IDB4ZmZmZlVMOyBicmVhazsgY2FzZSA0OiBfX21hc2sgPSAweGZmZmZmZmZmVUw7IGJyZWFr OyBkZWZhdWx0OiBicmVhazsgfSBfX21hc2s7IH0pKTsgfSBfX3JldDsgfSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHZvaWQgX19yYXdfY2FsbGVlX3NhdmVfX19uYXRpdmVfcXVldWVkX3NwaW5f dW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spOwoxNDQ3NDogYm9vbCBfX3Jhd19jYWxsZWVf c2F2ZV9fX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZChsb25nIGNwdSk7CjE0NDc0OiAjIDc5OCAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydC5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgZGVm YXVsdF9iYW5uZXIodm9pZCk7CjE0NDc0OiAjIDkzOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w YXJhdmlydC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwYXJhdmlydF9hcmNoX2R1cF9tbWFwKHN0cnVjdCBtbV9z dHJ1Y3QgKm9sZG1tLAoxNDQ3NDogICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQoxNDQ3NDog ewoxNDQ3NDogfQoxNDQ3NDogIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9jay5o IiAyCjE0NDc0OiAjIDI3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiCjE0NDc0 OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5sb2NrLmgiIDEKMTQ0NzQ6ICMgMTQg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5sb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHUzMiBxdWV1ZWRfZmV0Y2hfc2V0X3BlbmRpbmdfYWNxdWly ZShzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIHUzMiB2YWw7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdmFsID0g KHsgYm9vbCBjOyBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxu IiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToi ICJcblx0bG9jazsgIiAiYnRzbCIgIiAlW3ZhbF0sICIgIiVbdmFyXSIgIlxuXHQvKiBvdXRwdXQg Y29uZGl0aW9uIGNvZGUgIiAiYyIgIiovXG4iIDogW3Zhcl0gIittIiAobG9jay0+dmFsLmNvdW50 ZXIpLCAiPUBjYyIgImMiIChjKSA6IFt2YWxdICJJIiAoKDAgKyA4KSkgOiAibWVtb3J5Iik7IGM7 IH0pCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAoMVUgPDwgKDAg KyA4KSk7CjE0NDc0OiAgdmFsIHw9IGF0b21pY19yZWFkKCZsb2NrLT52YWwpICYgfigoKDFVIDw8 IDgpIC0gMSkgPDwgKDAgKyA4KSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdmFsOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIG5hdGl2ZV9xdWV1ZWRfc3Bpbl9s b2NrX3Nsb3dwYXRoKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2ssIHUzMiB2YWwpOwoxNDQ3NDogZXh0 ZXJuIHZvaWQgX19wdl9pbml0X2xvY2tfaGFzaCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9f cHZfcXVldWVkX3NwaW5fbG9ja19zbG93cGF0aChzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrLCB1MzIg dmFsKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fcmF3X2NhbGxlZV9zYXZlX19fcHZfcXVldWVkX3Nw aW5fdW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spOwoxNDQ3NDogIyA0MyAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9xc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbmF0aXZlX3F1ZXVlZF9zcGlu X3VubG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8g eyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF80NSh2b2lkKSBfX2F0dHJpYnV0ZV9f KChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9t aWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJmxvY2stPmxvY2tlZCkgPT0gc2l6ZW9mKGNoYXIp IHx8IHNpemVvZigqJmxvY2stPmxvY2tlZCkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiZs b2NrLT5sb2NrZWQpID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJmxvY2stPmxvY2tlZCkgPT0g c2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzQ1KCk7IH0gd2hpbGUgKDApOyBf X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigq JmxvY2stPmxvY2tlZCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0 eXBlb2YoKiZsb2NrLT5sb2NrZWQpKSAoMCkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJmxvY2st PmxvY2tlZCksIF9fdS5fX2MsIHNpemVvZigqJmxvY2stPmxvY2tlZCkpOyBfX3UuX192YWw7IH0p OyB9IHdoaWxlICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBxdWV1ZWRfc3Bpbl9s b2NrX3Nsb3dwYXRoKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2ssIHUzMiB2YWwpCjE0NDc0OiB7CjE0 NDc0OiAgcHZfcXVldWVkX3NwaW5fbG9ja19zbG93cGF0aChsb2NrLCB2YWwpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHF1ZXVlZF9zcGluX3VubG9jayhzdHJ1Y3QgcXNwaW5sb2NrICps b2NrKQoxNDQ3NDogewoxNDQ3NDogIHB2X3F1ZXVlZF9zcGluX3VubG9jayhsb2NrKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHZjcHVfaXNfcHJlZW1wdGVkKGxvbmcgY3B1 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBwdl92Y3B1X2lzX3ByZWVtcHRlZChjcHUpOwoxNDQ3 NDogfQoxNDQ3NDogIyA3MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9xc3BpbmxvY2suaCIKMTQ0 NzQ6IGV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tleV90cnVlIHZpcnRfc3Bpbl9sb2NrX2tleTsKMTQ0 NzQ6IAoxNDQ3NDogdm9pZCBuYXRpdmVfcHZfbG9ja19pbml0KHZvaWQpIF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIDsK MTQ0NzQ6ICMgODYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5sb2NrLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIHZpcnRfc3Bpbl9sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKCEoeyBib29sIGJyYW5jaDsgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3Ao dHlwZW9mKComdmlydF9zcGluX2xvY2tfa2V5KSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1ZSkpIGJy YW5jaCA9ICFhcmNoX3N0YXRpY19icmFuY2goJigmdmlydF9zcGluX2xvY2tfa2V5KS0+a2V5LCB0 cnVlKTsgZWxzZSBpZiAoX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKiZ2aXJ0 X3NwaW5fbG9ja19rZXkpLCBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSkpIGJyYW5jaCA9ICFhcmNo X3N0YXRpY19icmFuY2hfanVtcCgmKCZ2aXJ0X3NwaW5fbG9ja19rZXkpLT5rZXksIHRydWUpOyBl bHNlIGJyYW5jaCA9IF9fX193cm9uZ19icmFuY2hfZXJyb3IoKTsgX19idWlsdGluX2V4cGVjdCgh IShicmFuY2gpLCAxKTsgfSkpCjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsKMTQ0 NzQ6ICAgd2hpbGUgKGF0b21pY19yZWFkKCZsb2NrLT52YWwpICE9IDApCjE0NDc0OiAgICBjcHVf cmVsYXgoKTsKMTQ0NzQ6ICB9IHdoaWxlIChhdG9taWNfY21weGNoZygmbG9jay0+dmFsLCAwLCAo MVUgPDwgMCkpICE9IDApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEg Ii4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2suaCIgMQoxNDQ3NDogIyAyMCAiLi9pbmNs dWRlL2FzbS1nZW5lcmljL3FzcGlubG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSBpbnQgcXVldWVkX3NwaW5faXNfbG9ja2VkKHN0cnVjdCBxc3BpbmxvY2sg KmxvY2spCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBy ZXR1cm4gYXRvbWljX3JlYWQoJmxvY2stPnZhbCk7CjE0NDc0OiB9CjE0NDc0OiAjIDM5ICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvcXNwaW5sb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBxdWV1ZWRfc3Bpbl92YWx1ZV91bmxvY2tlZChzdHJ1Y3QgcXNw aW5sb2NrIGxvY2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICFhdG9taWNfcmVhZCgmbG9jay52 YWwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgcXVldWVk X3NwaW5faXNfY29udGVuZGVkKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGF0b21pY19yZWFkKCZsb2NrLT52YWwpICYgfigoKDFVIDw8IDgpIC0gMSkgPDwg MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgcXVldWVkX3NwaW5fdHJ5 bG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIHUzMiB2YWwgPSBh dG9taWNfcmVhZCgmbG9jay0+dmFsKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKHZhbCksIDApKQoxNDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biBfX2J1aWx0aW5fZXhwZWN0KCEhKGF0b21pY190cnlfY21weGNoZygmbG9jay0+dmFsLCAmdmFs LCAoMVUgPDwgMCkpKSwgMSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHF1 ZXVlZF9zcGluX2xvY2tfc2xvd3BhdGgoc3RydWN0IHFzcGlubG9jayAqbG9jaywgdTMyIHZhbCk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHF1ZXVlZF9zcGluX2xvY2soc3RydWN0IHFz cGlubG9jayAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1MzIgdmFsID0gMDsKMTQ0NzQ6IAoxNDQ3 NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGF0b21pY190cnlfY21weGNoZygmbG9jay0+dmFs LCAmdmFsLCAoMVUgPDwgMCkpKSwgMSkpCjE0NDc0OiAgIHJldHVybjsKMTQ0NzQ6IAoxNDQ3NDog IHF1ZXVlZF9zcGluX2xvY2tfc2xvd3BhdGgobG9jaywgdmFsKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MTExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5oIiAyCjE0NDc0OiAjIDI4ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiIDIKMTQ0NzQ6ICMgNDMgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vc3BpbmxvY2suaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9xcndsb2NrLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xcndsb2NrLmgiIDEKMTQ0NzQ6ICMg MzAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xcndsb2NrLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBx dWV1ZWRfcmVhZF9sb2NrX3Nsb3dwYXRoKHN0cnVjdCBxcndsb2NrICpsb2NrKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIHF1ZXVlZF93cml0ZV9sb2NrX3Nsb3dwYXRoKHN0cnVjdCBxcndsb2NrICpsb2Nr KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBxdWV1ZWRfcmVhZF90cnlsb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQoxNDQ3NDogewox NDQ3NDogIHUzMiBjbnRzOwoxNDQ3NDogCjE0NDc0OiAgY250cyA9IGF0b21pY19yZWFkKCZsb2Nr LT5jbnRzKTsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4cGVjdCghISghKGNudHMgJiAweDFmZikp LCAxKSkgewoxNDQ3NDogICBjbnRzID0gKHUzMilhdG9taWNfYWRkX3JldHVybigoMVUgPDwgOSks ICZsb2NrLT5jbnRzKTsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIShjbnRzICYg MHgxZmYpKSwgMSkpCjE0NDc0OiAgICByZXR1cm4gMTsKMTQ0NzQ6ICAgYXRvbWljX3N1YigoMVUg PDwgOSksICZsb2NrLT5jbnRzKTsKMTQ0NzQ6ICB9CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgcXVldWVkX3dyaXRlX3RyeWxvY2soc3RydWN0IHFyd2xvY2sgKmxvY2spCjE0NDc0OiB7CjE0 NDc0OiAgdTMyIGNudHM7CjE0NDc0OiAKMTQ0NzQ6ICBjbnRzID0gYXRvbWljX3JlYWQoJmxvY2st PmNudHMpOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGNudHMpLCAwKSkKMTQ0NzQ6 ICAgcmV0dXJuIDA7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gX19idWlsdGluX2V4cGVjdCghIShh dG9taWNfdHJ5X2NtcHhjaGcoJmxvY2stPmNudHMsICZjbnRzLCAweDBmZikpLCAxKQoxNDQ3NDog ICAgICAgICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBxdWV1ZWRfcmVhZF9sb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQoxNDQ3 NDogewoxNDQ3NDogIHUzMiBjbnRzOwoxNDQ3NDogCjE0NDc0OiAgY250cyA9IGF0b21pY19hZGRf cmV0dXJuKCgxVSA8PCA5KSwgJmxvY2stPmNudHMpOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKCEoY250cyAmIDB4MWZmKSksIDEpKQoxNDQ3NDogICByZXR1cm47CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHF1ZXVlZF9yZWFkX2xvY2tfc2xvd3BhdGgobG9jayk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBxdWV1ZWRf d3JpdGVfbG9jayhzdHJ1Y3QgcXJ3bG9jayAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1MzIgY250 cyA9IDA7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4cGVjdCghIShhdG9taWNfdHJ5 X2NtcHhjaGcoJmxvY2stPmNudHMsICZjbnRzLCAweDBmZikpLCAxKSkKMTQ0NzQ6ICAgcmV0dXJu OwoxNDQ3NDogCjE0NDc0OiAgcXVldWVkX3dyaXRlX2xvY2tfc2xvd3BhdGgobG9jayk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBx dWV1ZWRfcmVhZF91bmxvY2soc3RydWN0IHFyd2xvY2sgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgKHZvaWQpYXRvbWljX3N1Yl9yZXR1cm4oKDFVIDw8IDkp LCAmbG9jay0+Y250cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBxdWV1ZWRfd3JpdGVfdW5sb2NrKHN0cnVjdCBxcndsb2NrICps b2NrKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1l X2Fzc2VydF8xMTYodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3 b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2Yo KiZsb2NrLT53bG9ja2VkKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKCombG9jay0+d2xvY2tl ZCkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiZsb2NrLT53bG9ja2VkKSA9PSBzaXplb2Yo aW50KSB8fCBzaXplb2YoKiZsb2NrLT53bG9ja2VkKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21w aWxldGltZV9hc3NlcnRfMTE2KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJmxvY2stPndsb2NrZWQpIF9fdmFs OyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCombG9jay0+d2xvY2tl ZCkpICgwKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCombG9jay0+d2xvY2tlZCksIF9fdS5fX2Ms IHNpemVvZigqJmxvY2stPndsb2NrZWQpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7CjE0 NDc0OiB9CjE0NDc0OiAjIDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXJ3bG9jay5oIiAyCjE0 NDc0OiAjIDQ0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiIDIKMTQ0NzQ6ICMg OTAgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCjE0NDc0OiAjIDE3OCAiLi9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRvX3Jhd19zcGluX2xvY2socmF3X3NwaW5s b2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6ICBxdWV1ZWRfc3Bp bl9sb2NrKCZsb2NrLT5yYXdfbG9jayk7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0 NDc0OiBkb19yYXdfc3Bpbl9sb2NrX2ZsYWdzKHJhd19zcGlubG9ja190ICpsb2NrLCB1bnNpZ25l ZCBsb25nICpmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDogIHF1ZXVlZF9z cGluX2xvY2soJmxvY2stPnJhd19sb2NrKTsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZG9fcmF3X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tf dCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgcmV0ID0gcXVldWVkX3NwaW5fdHJ5bG9jaygm KGxvY2spLT5yYXdfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAocmV0KQoxNDQ3NDogICBkbyB7 IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBkb19yYXdfc3Bpbl91bmxvY2socmF3X3NwaW5sb2NrX3QgKmxvY2spCjE0 NDc0OiB7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBxdWV1ZWRfc3Bpbl91bmxv Y2soJmxvY2stPnJhd19sb2NrKTsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDogfQoxNDQ3NDogIyAz MTAgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgvcndsb2NrLmgiIDEKMTQ0NzQ6ICMgMzExICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9p bmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaCIgMQoxNDQ3NDogIyAxOCAiLi9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaCIKMTQ0NzQ6IGludCBpbl9sb2NrX2Z1bmN0aW9ucyh1 bnNpZ25lZCBsb25nIGFkZHIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBf X2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX2xvY2so cmF3X3NwaW5sb2NrX3QgKmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlv bigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl9sb2NrX25lc3RlZChyYXdfc3BpbmxvY2tf dCAqbG9jaywgaW50IHN1YmNsYXNzKQoxNDQ3NDogICAgICAgICA7CjE0NDc0OiB2b2lkIF9fYXR0 cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQoxNDQ3NDogX3Jhd19zcGluX2xv Y2tfbmVzdF9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrLCBzdHJ1Y3QgbG9ja2RlcF9tYXAgKm1h cCkKMTQ0NzQ6ICAgICAgICAgOwoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIu c3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX2xvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2sp IDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkp IF9yYXdfc3Bpbl9sb2NrX2lycShyYXdfc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6ICAgICAgICAg OwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5z cGlubG9jay50ZXh0IikpKSBfcmF3X3NwaW5fbG9ja19pcnFzYXZlKHJhd19zcGlubG9ja190ICps b2NrKQoxNDQ3NDogICAgICAgICA7CjE0NDc0OiB1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRlX18o KHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQoxNDQ3NDogX3Jhd19zcGluX2xvY2tfaXJxc2F2 ZV9uZXN0ZWQocmF3X3NwaW5sb2NrX3QgKmxvY2ssIGludCBzdWJjbGFzcykKMTQ0NzQ6ICAgICAg ICAgOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0Iikp KSBfcmF3X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jayk7CjE0NDc0OiBpbnQgX19h dHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl90cnlsb2Nr X2JoKHJhd19zcGlubG9ja190ICpsb2NrKTsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2Vj dGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl91bmxvY2socmF3X3NwaW5sb2NrX3Qg KmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRl eHQiKSkpIF9yYXdfc3Bpbl91bmxvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2spIDsKMTQ0NzQ6 IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bp bl91bmxvY2tfaXJxKHJhd19zcGlubG9ja190ICpsb2NrKSA7CjE0NDc0OiB2b2lkIF9fYXR0cmli dXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQoxNDQ3NDogX3Jhd19zcGluX3VubG9j a19pcnFyZXN0b3JlKHJhd19zcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzKQox NDQ3NDogICAgICAgICA7CjE0NDc0OiAjIDg2ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfYXBp X3NtcC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IF9fcmF3X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9j aykKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OwoxNDQ3NDogIGlmIChkb19yYXdfc3Bpbl90cnlsb2NrKGxvY2spKSB7CjE0NDc0OiAgIGRvIHsg fSB3aGlsZSAoMCk7CjE0NDc0OiAgIHJldHVybiAxOwoxNDQ3NDogIH0KMTQ0NzQ6ICBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDog fQoxNDQ3NDogIyAxMDQgIi4vaW5jbHVkZS9saW51eC9zcGlubG9ja19hcGlfc21wLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nIF9fcmF3X3NwaW5fbG9ja19pcnFzYXZlKHJhd19zcGlubG9ja190ICps b2NrKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0NDc0OiAKMTQ0NzQ6 ICBkbyB7IGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVt bXkyOyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXkyKTsgMTsgfSk7IGZsYWdzID0gYXJjaF9s b2NhbF9pcnFfc2F2ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19hc21f XyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDAp OwoxNDQ3NDogIyAxMTkgIi4vaW5jbHVkZS9saW51eC9zcGlubG9ja19hcGlfc21wLmgiCjE0NDc0 OiAgZG9fcmF3X3NwaW5fbG9ja19mbGFncyhsb2NrLCAmZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAg cmV0dXJuIGZsYWdzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3NwaW5fbG9j a19pcnEocmF3X3NwaW5sb2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBhcmNoX2xv Y2FsX2lycV9kaXNhYmxlKCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBk b19yYXdfc3Bpbl9sb2NrKGxvY2spOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3 X3NwaW5fbG9ja19iaChyYXdfc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2xv Y2FsX2JoX2Rpc2FibGVfaXAoKHVuc2lnbmVkIGxvbmcpX19idWlsdGluX3JldHVybl9hZGRyZXNz KDApLCAoKDIgKiAoMVVMIDw8ICgwICsgOCkpKSArIDApKTsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUg KDApOwoxNDQ3NDogIGRvX3Jhd19zcGluX2xvY2sobG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgX19yYXdfc3Bpbl9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKQoxNDQ3NDogewox NDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgZG8g eyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkb19yYXdfc3Bpbl9sb2NrKGxvY2spOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19zcGluX3VubG9jayhyYXdf c3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3 NDogIGRvX3Jhd19zcGluX3VubG9jayhsb2NrKTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVf XygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3Nw aW5fdW5sb2NrX2lycXJlc3RvcmUocmF3X3NwaW5sb2NrX3QgKmxvY2ssCjE0NDc0OiAgICAgICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7 CjE0NDc0OiAgZG9fcmF3X3NwaW5fdW5sb2NrKGxvY2spOwoxNDQ3NDogIGRvIHsgZG8geyAoeyB1 bnNpZ25lZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFncykgX19kdW1teTI7ICh2b2lkKSgmX19k dW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsgYXJjaF9sb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7 IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3NwaW5f dW5sb2NrX2lycShyYXdfc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IH0g d2hpbGUgKDApOwoxNDQ3NDogIGRvX3Jhd19zcGluX3VubG9jayhsb2NrKTsKMTQ0NzQ6ICBkbyB7 IGFyY2hfbG9jYWxfaXJxX2VuYWJsZSgpOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBfX2FzbV9fIF9f dm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IF9fcmF3X3NwaW5fdW5sb2NrX2JoKHJhd19zcGlubG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3 NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgZG9fcmF3X3NwaW5fdW5sb2NrKGxvY2spOwox NDQ3NDogIF9fbG9jYWxfYmhfZW5hYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRpbl9yZXR1 cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBfX3Jhd19zcGluX3RyeWxvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxv Y2spCjE0NDc0OiB7CjE0NDc0OiAgX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25n KV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAw KSk7CjE0NDc0OiAgaWYgKGRvX3Jhd19zcGluX3RyeWxvY2sobG9jaykpIHsKMTQ0NzQ6ICAgZG8g eyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICAgcmV0dXJuIDE7CjE0NDc0OiAgfQoxNDQ3NDogIF9fbG9j YWxfYmhfZW5hYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygw KSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja19hcGlfc21wLmgi IDEKMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9yd2xvY2tfYXBpX3NtcC5oIgoxNDQ3NDog dm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFk X2xvY2socndsb2NrX3QgKmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlv bigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9jayhyd2xvY2tfdCAqbG9jaykgOwox NDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jh d19yZWFkX2xvY2tfYmgocndsb2NrX3QgKmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9ja19iaChyd2xvY2tf dCAqbG9jaykgOwoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2su dGV4dCIpKSkgX3Jhd19yZWFkX2xvY2tfaXJxKHJ3bG9ja190ICpsb2NrKSA7CjE0NDc0OiB2b2lk IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3X3dyaXRlX2xv Y2tfaXJxKHJ3bG9ja190ICpsb2NrKSA7CjE0NDc0OiB1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRl X18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3X3JlYWRfbG9ja19pcnFzYXZlKHJ3 bG9ja190ICpsb2NrKQoxNDQ3NDogICAgICAgIDsKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgX19hdHRy aWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9ja19pcnFz YXZlKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogICAgICAgIDsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0 ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFkX3RyeWxvY2socndsb2Nr X3QgKmxvY2spOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50 ZXh0IikpKSBfcmF3X3dyaXRlX3RyeWxvY2socndsb2NrX3QgKmxvY2spOwoxNDQ3NDogdm9pZCBf X2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFkX3VubG9j ayhyd2xvY2tfdCAqbG9jaykgOwoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIu c3BpbmxvY2sudGV4dCIpKSkgX3Jhd193cml0ZV91bmxvY2socndsb2NrX3QgKmxvY2spIDsKMTQ0 NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdf cmVhZF91bmxvY2tfYmgocndsb2NrX3QgKmxvY2spIDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfdW5sb2NrX2JoKHJ3bG9j a190ICpsb2NrKSA7CjE0NDc0OiB2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9j ay50ZXh0IikpKSBfcmF3X3JlYWRfdW5sb2NrX2lycShyd2xvY2tfdCAqbG9jaykgOwoxNDQ3NDog dm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd193cml0 ZV91bmxvY2tfaXJxKHJ3bG9ja190ICpsb2NrKSA7CjE0NDc0OiB2b2lkIF9fYXR0cmlidXRlX18o KHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQoxNDQ3NDogX3Jhd19yZWFkX3VubG9ja19pcnFy ZXN0b3JlKHJ3bG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogICAgICAg IDsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkp CjE0NDc0OiBfcmF3X3dyaXRlX3VubG9ja19pcnFyZXN0b3JlKHJ3bG9ja190ICpsb2NrLCB1bnNp Z25lZCBsb25nIGZsYWdzKQoxNDQ3NDogICAgICAgIDsKMTQ0NzQ6ICMgMTE3ICIuL2luY2x1ZGUv bGludXgvcndsb2NrX2FwaV9zbXAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX3Jhd19yZWFkX3RyeWxvY2socnds b2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog OiJtZW1vcnkiKTsKMTQ0NzQ6ICBpZiAocXVldWVkX3JlYWRfdHJ5bG9jaygmKGxvY2spLT5yYXdf bG9jaykpIHsKMTQ0NzQ6ICAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICAgcmV0dXJuIDE7CjE0 NDc0OiAgfQoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0 NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX3Jhd193cml0ZV90 cnlsb2NrKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgaWYgKHF1ZXVlZF93cml0ZV90cnlsb2NrKCYo bG9jayktPnJhd19sb2NrKSkgewoxNDQ3NDogICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogICBy ZXR1cm4gMTsKMTQ0NzQ6ICB9CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQ2ICIuL2luY2x1 ZGUvbGludXgvcndsb2NrX2FwaV9zbXAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfcmVhZF9sb2NrKHJ3 bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6 IDoibWVtb3J5Iik7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7KHZvaWQp MDsgcXVldWVkX3JlYWRfbG9jaygmKGxvY2spLT5yYXdfbG9jayk7IH0gd2hpbGUgKDApOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9fcmF3X3JlYWRfbG9ja19pcnFzYXZl KHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0 NDc0OiAKMTQ0NzQ6ICBkbyB7IGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1bW15OyB0eXBlb2Yo ZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXkyKTsgMTsgfSk7IGZs YWdzID0gYXJjaF9sb2NhbF9pcnFfc2F2ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICBkbyB7 IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHsodm9pZCkwOyBxdWV1ZWRfcmVhZF9sb2NrKCYoKGxv Y2spKS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogIHJldHVybiBmbGFnczsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBfX3Jhd19yZWFkX2xvY2tfaXJxKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDog ewoxNDQ3NDogIGRvIHsgYXJjaF9sb2NhbF9pcnFfZGlzYWJsZSgpOyB9IHdoaWxlICgwKTsKMTQ0 NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogIGRvIHsg fSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8geyh2b2lkKTA7IHF1ZXVlZF9yZWFkX2xvY2soJihsb2Nr KS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBf X3Jhd19yZWFkX2xvY2tfYmgocndsb2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAgX19sb2Nh bF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygw KSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgw KTsKMTQ0NzQ6ICBkbyB7KHZvaWQpMDsgcXVldWVkX3JlYWRfbG9jaygmKGxvY2spLT5yYXdfbG9j ayk7IH0gd2hpbGUgKDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9f cmF3X3dyaXRlX2xvY2tfaXJxc2F2ZShyd2xvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3NDogCjE0NDc0OiAgZG8geyBkbyB7ICh7IHVuc2lnbmVk IGxvbmcgX19kdW1teTsgdHlwZW9mKGZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09 ICZfX2R1bW15Mik7IDE7IH0pOyBmbGFncyA9IGFyY2hfbG9jYWxfaXJxX3NhdmUoKTsgfSB3aGls ZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoi bWVtb3J5Iik7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7KHZvaWQpMDsg cXVldWVkX3dyaXRlX2xvY2soJigobG9jaykpLT5yYXdfbG9jayk7IH0gd2hpbGUgKDApCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogIHJldHVy biBmbGFnczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd193cml0ZV9sb2NrX2ly cShyd2xvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGFyY2hfbG9jYWxfaXJxX2Rp c2FibGUoKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog OiJtZW1vcnkiKTsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHsodm9pZCkw OyBxdWV1ZWRfd3JpdGVfbG9jaygmKGxvY2spLT5yYXdfbG9jayk7IH0gd2hpbGUgKDApOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dyaXRlX2xvY2tfYmgocndsb2NrX3QgKmxv Y2spCjE0NDc0OiB7CjE0NDc0OiAgX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25n KV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAw KSk7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7KHZvaWQpMDsgcXVldWVk X3dyaXRlX2xvY2soJihsb2NrKS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd193cml0ZV9sb2NrKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDog ewoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAg ZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7KHZvaWQpMDsgcXVldWVkX3dyaXRlX2xvY2so Jihsb2NrKS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfd3JpdGVfdW5sb2NrKHJ3bG9ja190ICpsb2NrKQox NDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8ge3F1ZXVlZF93cml0 ZV91bmxvY2soJihsb2NrKS0+cmF3X2xvY2spOyAodm9pZCkwOyB9IHdoaWxlICgwKTsKMTQ0NzQ6 ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fcmF3X3JlYWRfdW5sb2NrKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogewox NDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8ge3F1ZXVlZF9yZWFkX3VubG9jaygm KGxvY2spLT5yYXdfbG9jayk7ICh2b2lkKTA7IH0gd2hpbGUgKDApOwoxNDQ3NDogIF9fYXNtX18g X192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQKMTQ0NzQ6IF9fcmF3X3JlYWRfdW5sb2NrX2lycXJlc3RvcmUocndsb2NrX3QgKmxvY2ssIHVu c2lnbmVkIGxvbmcgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0 NzQ6ICBkbyB7cXVldWVkX3JlYWRfdW5sb2NrKCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsg fSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8geyBkbyB7ICh7IHVuc2lnbmVkIGxvbmcgX19kdW1teTsg dHlwZW9mKGZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09ICZfX2R1bW15Mik7IDE7 IH0pOyBhcmNoX2xvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUg KDApOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfcmVhZF91bmxvY2tfaXJxKHJ3bG9ja190ICps b2NrKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgZG8ge3F1ZXVl ZF9yZWFkX3VubG9jaygmKGxvY2spLT5yYXdfbG9jayk7ICh2b2lkKTA7IH0gd2hpbGUgKDApOwox NDQ3NDogIGRvIHsgYXJjaF9sb2NhbF9pcnFfZW5hYmxlKCk7IH0gd2hpbGUgKDApOwoxNDQ3NDog IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19yYXdfcmVhZF91bmxvY2tfYmgocndsb2NrX3QgKmxvY2spCjE0NDc0OiB7 CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7cXVldWVkX3JlYWRfdW5sb2Nr KCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19sb2Nh bF9iaF9lbmFibGVfaXAoKHVuc2lnbmVkIGxvbmcpX19idWlsdGluX3JldHVybl9hZGRyZXNzKDAp LCAoKDIgKiAoMVVMIDw8ICgwICsgOCkpKSArIDApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBfX3Jhd193cml0ZV91bmxvY2tfaXJxcmVzdG9yZShyd2xvY2tfdCAqbG9jaywKMTQ0NzQ6 ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3 aGlsZSAoMCk7CjE0NDc0OiAgZG8ge3F1ZXVlZF93cml0ZV91bmxvY2soJihsb2NrKS0+cmF3X2xv Y2spOyAodm9pZCkwOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7IGRvIHsgKHsgdW5zaWduZWQg bG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0g Jl9fZHVtbXkyKTsgMTsgfSk7IGFyY2hfbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd193cml0ZV91bmxvY2tf aXJxKHJ3bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAgZG8ge3F1ZXVlZF93cml0ZV91bmxvY2soJihsb2NrKS0+cmF3X2xvY2spOyAodm9pZCkw OyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBkbyB7IGFyY2hfbG9jYWxfaXJxX2VuYWJsZSgpOyB9IHdo aWxlICgwKTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dyaXRlX3VubG9ja19iaChyd2xvY2tf dCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHtx dWV1ZWRfd3JpdGVfdW5sb2NrKCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgX19sb2NhbF9iaF9lbmFibGVfaXAoKHVuc2lnbmVkIGxvbmcpX19idWlsdGlu X3JldHVybl9hZGRyZXNzKDApLCAoKDIgKiAoMVVMIDw8ICgwICsgOCkpKSArIDApKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMTkxICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfYXBpX3NtcC5oIiAyCjE0 NDc0OiAjIDMxNyAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIKMTQ0NzQ6ICMgMzI1ICIu L2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgcmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrX2NoZWNrKHNwaW5sb2NrX3QgKmxv Y2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICZsb2NrLT5ybG9jazsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNwaW5fbG9jayhzcGlubG9j a190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9yYXdfc3Bpbl9sb2NrKCZsb2NrLT5ybG9jayk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkgdm9pZCBzcGluX2xvY2tfYmgoc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBf cmF3X3NwaW5fbG9ja19iaCgmbG9jay0+cmxvY2spOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBzcGluX3RyeWxvY2soc3Bpbmxv Y2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKF9yYXdfc3Bpbl90cnlsb2NrKCZs b2NrLT5ybG9jaykpOwoxNDQ3NDogfQoxNDQ3NDogIyAzNjEgIi4vaW5jbHVkZS9saW51eC9zcGlu bG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNw aW5fbG9ja19pcnEoc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBfcmF3X3NwaW5f bG9ja19pcnEoJmxvY2stPnJsb2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzc2ICIuL2luY2x1ZGUv bGludXgvc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkgdm9pZCBzcGluX3VubG9jayhzcGlubG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9f cmF3X3NwaW5fdW5sb2NrKCZsb2NrLT5ybG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX3VubG9ja19iaChzcGlu bG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogIF9yYXdfc3Bpbl91bmxvY2tfYmgoJmxvY2st PnJsb2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkIHNwaW5fdW5sb2NrX2lycShzcGlubG9ja190ICpsb2NrKQoxNDQ3NDog ewoxNDQ3NDogIF9fcmF3X3NwaW5fdW5sb2NrX2lycSgmbG9jay0+cmxvY2spOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgc3Bp bl91bmxvY2tfaXJxcmVzdG9yZShzcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdz KQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1bW15OyB0eXBlb2Yo ZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXkyKTsgMTsgfSk7IF9y YXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9jay0+cmxvY2ssIGZsYWdzKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IHNwaW5fdHJ5bG9ja19iaChzcGlubG9ja190ICpsb2NrKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAoX3Jhd19zcGluX3RyeWxvY2tfYmgoJmxvY2stPnJsb2NrKSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IHNw aW5fdHJ5bG9ja19pcnEoc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g KHsgZG8geyBhcmNoX2xvY2FsX2lycV9kaXNhYmxlKCk7IH0gd2hpbGUgKDApOyAoX3Jhd19zcGlu X3RyeWxvY2soJmxvY2stPnJsb2NrKSkgPyAxIDogKHsgZG8geyBhcmNoX2xvY2FsX2lycV9lbmFi bGUoKTsgfSB3aGlsZSAoMCk7IDA7IH0pOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDI5ICIuL2lu Y2x1ZGUvbGludXgvc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgaW50IHNwaW5faXNfbG9ja2VkKHNwaW5sb2NrX3QgKmxvY2spCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIHF1ZXVlZF9zcGluX2lzX2xvY2tlZCgmKCZsb2NrLT5ybG9jayktPnJhd19s b2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgc3Bpbl9pc19jb250ZW5kZWQoc3BpbmxvY2tfdCAqbG9jaykKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gcXVldWVkX3NwaW5faXNfY29udGVuZGVkKCYoJmxvY2stPnJsb2NrKS0+ cmF3X2xvY2spOwoxNDQ3NDogfQoxNDQ3NDogIyA0NTQgIi4vaW5jbHVkZS9saW51eC9zcGlubG9j ay5oIgoxNDQ3NDogZXh0ZXJuIGludCBfYXRvbWljX2RlY19hbmRfbG9jayhhdG9taWNfdCAqYXRv bWljLCBzcGlubG9ja190ICpsb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgX2F0b21pY19kZWNfYW5kX2xvY2tfaXJxc2F2ZShhdG9taWNfdCAqYXRvbWljLCBz cGlubG9ja190ICpsb2NrLAoxNDQ3NDogICAgICB1bnNpZ25lZCBsb25nICpmbGFncyk7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgX19hbGxvY19idWNrZXRfc3BpbmxvY2tzKHNw aW5sb2NrX3QgKipsb2NrcywgdW5zaWduZWQgaW50ICpsb2NrX21hc2ssCjE0NDc0OiAgICAgICAg IHNpemVfdCBtYXhfc2l6ZSwgdW5zaWduZWQgaW50IGNwdV9tdWx0LAoxNDQ3NDogICAgICAgICBn ZnBfdCBnZnAsIGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0OiAgICAgICAgIHN0cnVjdCBsb2NrX2Ns YXNzX2tleSAqa2V5KTsKMTQ0NzQ6ICMgNDc4ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIK MTQ0NzQ6IHZvaWQgZnJlZV9idWNrZXRfc3BpbmxvY2tzKHNwaW5sb2NrX3QgKmxvY2tzKTsKMTQ0 NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51eC9rcmVmLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRl L2xpbnV4L3JlZmNvdW50LmgiIDEKMTQ0NzQ6ICMgODggIi4vaW5jbHVkZS9saW51eC9yZWZjb3Vu dC5oIgoxNDQ3NDogc3RydWN0IG11dGV4OwoxNDQ3NDogIyA5OCAiLi9pbmNsdWRlL2xpbnV4L3Jl ZmNvdW50LmgiCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCByZWZjb3VudF9zdHJ1Y3QgewoxNDQ3NDog IGF0b21pY190IHJlZnM7CjE0NDc0OiB9IHJlZmNvdW50X3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSByZWZjb3VudF9zYXR1cmF0aW9uX3R5cGUg ewoxNDQ3NDogIFJFRkNPVU5UX0FERF9OT1RfWkVST19PVkYsCjE0NDc0OiAgUkVGQ09VTlRfQURE X09WRiwKMTQ0NzQ6ICBSRUZDT1VOVF9BRERfVUFGLAoxNDQ3NDogIFJFRkNPVU5UX1NVQl9VQUYs CjE0NDc0OiAgUkVGQ09VTlRfREVDX0xFQUssCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lk IHJlZmNvdW50X3dhcm5fc2F0dXJhdGUocmVmY291bnRfdCAqciwgZW51bSByZWZjb3VudF9zYXR1 cmF0aW9uX3R5cGUgdCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHJlZmNvdW50X3NldChyZWZjb3VudF90ICpyLCBpbnQgbikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBhdG9taWNfc2V0KCZyLT5yZWZzLCBuKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5z aWduZWQgaW50IHJlZmNvdW50X3JlYWQoY29uc3QgcmVmY291bnRfdCAqcikKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gYXRvbWljX3JlYWQoJnItPnJlZnMpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNTUg Ii4vaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGJvb2wgcmVmY291bnRfYWRkX25vdF96ZXJvKGludCBpLCByZWZj b3VudF90ICpyKQoxNDQ3NDogewoxNDQ3NDogIGludCBvbGQgPSByZWZjb3VudF9yZWFkKHIpOwox NDQ3NDogCjE0NDc0OiAgZG8gewoxNDQ3NDogICBpZiAoIW9sZCkKMTQ0NzQ6ICAgIGJyZWFrOwox NDQ3NDogIH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcoJnItPnJlZnMsICZvbGQsIG9sZCAr IGkpKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG9sZCA8IDAgfHwg b2xkICsgaSA8IDApLCAwKSkKMTQ0NzQ6ICAgcmVmY291bnRfd2Fybl9zYXR1cmF0ZShyLCBSRUZD T1VOVF9BRERfTk9UX1pFUk9fT1ZGKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBvbGQ7CjE0NDc0 OiB9CjE0NDc0OiAjIDE4NiAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHJlZmNvdW50X2FkZChpbnQgaSwgcmVmY291bnRfdCAqcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQg b2xkID0gYXRvbWljX2ZldGNoX2FkZChpLCAmci0+cmVmcyk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAo X19idWlsdGluX2V4cGVjdCghISghb2xkKSwgMCkpCjE0NDc0OiAgIHJlZmNvdW50X3dhcm5fc2F0 dXJhdGUociwgUkVGQ09VTlRfQUREX1VBRik7CjE0NDc0OiAgZWxzZSBpZiAoX19idWlsdGluX2V4 cGVjdCghIShvbGQgPCAwIHx8IG9sZCArIGkgPCAwKSwgMCkpCjE0NDc0OiAgIHJlZmNvdW50X3dh cm5fc2F0dXJhdGUociwgUkVGQ09VTlRfQUREX09WRik7CjE0NDc0OiB9CjE0NDc0OiAjIDIwOSAi Li9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgYm9vbCByZWZjb3VudF9pbmNfbm90X3plcm8ocmVmY291bnRfdCAq cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcmVmY291bnRfYWRkX25vdF96ZXJvKDEsIHIpOwox NDQ3NDogfQoxNDQ3NDogIyAyMjYgIi4vaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCByZWZjb3VudF9pbmMocmVmY291bnRfdCAqcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZWZjb3Vu dF9hZGQoMSwgcik7CjE0NDc0OiB9CjE0NDc0OiAjIDI1MSAiLi9pbmNsdWRlL2xpbnV4L3JlZmNv dW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9v bCByZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIpCjE0NDc0OiB7CjE0 NDc0OiAgaW50IG9sZCA9IGF0b21pY19mZXRjaF9zdWIoaSwgJnItPnJlZnMpOwoxNDQ3NDogCjE0 NDc0OiAgaWYgKG9sZCA9PSBpKSB7CjE0NDc0OiAgIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6 IDoibWVtb3J5Iik7CjE0NDc0OiAgIHJldHVybiB0cnVlOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3 NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG9sZCA8IDAgfHwgb2xkIC0gaSA8IDApLCAwKSkK MTQ0NzQ6ICAgcmVmY291bnRfd2Fybl9zYXR1cmF0ZShyLCBSRUZDT1VOVF9TVUJfVUFGKTsKMTQ0 NzQ6IAoxNDQ3NDogIHJldHVybiBmYWxzZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjc5ICIuL2luY2x1 ZGUvbGludXgvcmVmY291bnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19hbmRfdGVzdChyZWZjb3VudF90ICpyKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiByZWZjb3VudF9zdWJfYW5kX3Rlc3QoMSwgcik7CjE0NDc0OiB9 CjE0NDc0OiAjIDI5NCAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJl ZmNvdW50X2RlYyhyZWZjb3VudF90ICpyKQoxNDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5f ZXhwZWN0KCEhKGF0b21pY19mZXRjaF9zdWIoMSwgJnItPnJlZnMpIDw9IDEpLCAwKSkKMTQ0NzQ6 ICAgcmVmY291bnRfd2Fybl9zYXR1cmF0ZShyLCBSRUZDT1VOVF9ERUNfTEVBSyk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkgYm9vbCByZWZjb3VudF9kZWNfaWZfb25lKHJlZmNvdW50X3QgKnIpOwoxNDQ3NDogZXh0 ZXJuIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50 X2RlY19ub3Rfb25lKHJlZmNvdW50X3QgKnIpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18o KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9j ayhyZWZjb3VudF90ICpyLCBzdHJ1Y3QgbXV0ZXggKmxvY2spOwoxNDQ3NDogZXh0ZXJuIF9fYXR0 cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19hbmRf bG9jayhyZWZjb3VudF90ICpyLCBzcGlubG9ja190ICpsb2NrKTsKMTQ0NzQ6IGV4dGVybiBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9vbCByZWZjb3VudF9kZWNfYW5k X2xvY2tfaXJxc2F2ZShyZWZjb3VudF90ICpyLAoxNDQ3NDogICAgICAgICAgICAgIHNwaW5sb2Nr X3QgKmxvY2ssCjE0NDc0OiAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZmxhZ3MpOwoxNDQ3 NDogIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2tyZWYuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg a3JlZiB7CjE0NDc0OiAgcmVmY291bnRfdCByZWZjb3VudDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg a3JlZl9pbml0KHN0cnVjdCBrcmVmICprcmVmKQoxNDQ3NDogewoxNDQ3NDogIHJlZmNvdW50X3Nl dCgma3JlZi0+cmVmY291bnQsIDEpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBp bnQga3JlZl9yZWFkKGNvbnN0IHN0cnVjdCBrcmVmICprcmVmKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiByZWZjb3VudF9yZWFkKCZrcmVmLT5yZWZjb3VudCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrcmVmX2dldChzdHJ1Y3Qg a3JlZiAqa3JlZikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZWZjb3VudF9pbmMoJmtyZWYtPnJlZmNvdW50 KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjIgIi4vaW5jbHVkZS9saW51eC9rcmVmLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQga3JlZl9wdXQoc3RydWN0IGtyZWYgKmtyZWYsIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3Qga3Jl ZiAqa3JlZikpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgma3Jl Zi0+cmVmY291bnQpKSB7CjE0NDc0OiAgIHJlbGVhc2Uoa3JlZik7CjE0NDc0OiAgIHJldHVybiAx OwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 IGtyZWZfcHV0X211dGV4KHN0cnVjdCBrcmVmICprcmVmLAoxNDQ3NDogICAgICB2b2lkICgqcmVs ZWFzZSkoc3RydWN0IGtyZWYgKmtyZWYpLAoxNDQ3NDogICAgICBzdHJ1Y3QgbXV0ZXggKmxvY2sp CjE0NDc0OiB7CjE0NDc0OiAgaWYgKHJlZmNvdW50X2RlY19hbmRfbXV0ZXhfbG9jaygma3JlZi0+ cmVmY291bnQsIGxvY2spKSB7CjE0NDc0OiAgIHJlbGVhc2Uoa3JlZik7CjE0NDc0OiAgIHJldHVy biAxOwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGtyZWZfcHV0X2xvY2soc3RydWN0IGtyZWYgKmtyZWYsCjE0NDc0OiAgICAgdm9pZCAoKnJl bGVhc2UpKHN0cnVjdCBrcmVmICprcmVmKSwKMTQ0NzQ6ICAgICBzcGlubG9ja190ICpsb2NrKQox NDQ3NDogewoxNDQ3NDogIGlmIChyZWZjb3VudF9kZWNfYW5kX2xvY2soJmtyZWYtPnJlZmNvdW50 LCBsb2NrKSkgewoxNDQ3NDogICByZWxlYXNlKGtyZWYpOwoxNDQ3NDogICByZXR1cm4gMTsKMTQ0 NzQ6ICB9CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAjIDEwOSAiLi9pbmNsdWRl L2xpbnV4L2tyZWYuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkga3JlZl9nZXRfdW5sZXNzX3plcm8oc3RydWN0IGtyZWYgKmtyZWYpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIHJlZmNvdW50X2luY19ub3RfemVybygma3JlZi0+cmVmY291bnQpOwox NDQ3NDogfQoxNDQ3NDogIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv c2xhYi5oIiAxCjE0NDc0OiAjIDE1ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvbGludXgvZ2ZwLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbW1kZWJ1Zy5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBw YWdlOwoxNDQ3NDogc3RydWN0IHZtX2FyZWFfc3RydWN0OwoxNDQ3NDogc3RydWN0IG1tX3N0cnVj dDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZHVtcF9wYWdlKHN0cnVjdCBwYWdlICpwYWdl LCBjb25zdCBjaGFyICpyZWFzb24pOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19kdW1wX3BhZ2Uoc3Ry dWN0IHBhZ2UgKnBhZ2UsIGNvbnN0IGNoYXIgKnJlYXNvbik7CjE0NDc0OiB2b2lkIGR1bXBfdm1h KGNvbnN0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKMTQ0NzQ6IHZvaWQgZHVtcF9tbShj b25zdCBzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9n ZnAuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDEKMTQ0NzQ6ICMg MTAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L3dhaXQuaCIgMQoxNDQ3NDogIyAxMiAiLi9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKMTQ0NzQ6ICMg MSAiLi9pbmNsdWRlL3VhcGkvbGludXgvd2FpdC5oIiAxCjE0NDc0OiAjIDEzICIuL2luY2x1ZGUv bGludXgvd2FpdC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHdhaXRfcXVldWVf ZW50cnkgd2FpdF9xdWV1ZV9lbnRyeV90OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGludCAoKndh aXRfcXVldWVfZnVuY190KShzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnksIHVuc2ln bmVkIG1vZGUsIGludCBmbGFncywgdm9pZCAqa2V5KTsKMTQ0NzQ6IGludCBkZWZhdWx0X3dha2Vf ZnVuY3Rpb24oc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCB1bnNpZ25lZCBtb2Rl LCBpbnQgZmxhZ3MsIHZvaWQgKmtleSk7CjE0NDc0OiAjIDI3ICIuL2luY2x1ZGUvbGludXgvd2Fp dC5oIgoxNDQ3NDogc3RydWN0IHdhaXRfcXVldWVfZW50cnkgewoxNDQ3NDogIHVuc2lnbmVkIGlu dCBmbGFnczsKMTQ0NzQ6ICB2b2lkICpwcml2YXRlOwoxNDQ3NDogIHdhaXRfcXVldWVfZnVuY190 IGZ1bmM7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgewoxNDQ3NDogIHNwaW5sb2NrX3QgbG9jazsK MTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7CjE0NDc0OiB9OwoxNDQ3NDogdHlwZWRlZiBz dHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkIHdhaXRfcXVldWVfaGVhZF90OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgdGFza19zdHJ1Y3Q7CjE0NDc0OiAjIDYxICIuL2luY2x1ZGUvbGludXgvd2FpdC5oIgox NDQ3NDogZXh0ZXJuIHZvaWQgX19pbml0X3dhaXRxdWV1ZV9oZWFkKHN0cnVjdCB3YWl0X3F1ZXVl X2hlYWQgKndxX2hlYWQsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAq KTsKMTQ0NzQ6ICMgNzkgIi4vaW5jbHVkZS9saW51eC93YWl0LmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGluaXRf d2FpdHF1ZXVlX2VudHJ5KHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRyeSwgc3RydWN0 IHRhc2tfc3RydWN0ICpwKQoxNDQ3NDogewoxNDQ3NDogIHdxX2VudHJ5LT5mbGFncyA9IDA7CjE0 NDc0OiAgd3FfZW50cnktPnByaXZhdGUgPSBwOwoxNDQ3NDogIHdxX2VudHJ5LT5mdW5jID0gZGVm YXVsdF93YWtlX2Z1bmN0aW9uOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBp bml0X3dhaXRxdWV1ZV9mdW5jX2VudHJ5KHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRy eSwgd2FpdF9xdWV1ZV9mdW5jX3QgZnVuYykKMTQ0NzQ6IHsKMTQ0NzQ6ICB3cV9lbnRyeS0+Zmxh Z3MgPSAwOwoxNDQ3NDogIHdxX2VudHJ5LT5wcml2YXRlID0gKCh2b2lkICopMCk7CjE0NDc0OiAg d3FfZW50cnktPmZ1bmMgPSBmdW5jOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjQgIi4vaW5jbHVkZS9s aW51eC93YWl0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgd2FpdHF1ZXVlX2FjdGl2ZShzdHJ1Y3Qgd2FpdF9xdWV1 ZV9oZWFkICp3cV9oZWFkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhbGlzdF9lbXB0eSgmd3Ff aGVhZC0+aGVhZCk7CjE0NDc0OiB9CjE0NDc0OiAjIDEzNyAiLi9pbmNsdWRlL2xpbnV4L3dhaXQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgd3FfaGFzX3NpbmdsZV9zbGVlcGVyKHN0cnVjdCB3YWl0X3F1ZXVlX2hl YWQgKndxX2hlYWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGxpc3RfaXNfc2luZ3VsYXIoJndx X2hlYWQtPmhlYWQpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNTAgIi4vaW5jbHVkZS9saW51eC93YWl0 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIHdxX2hhc19zbGVlcGVyKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndx X2hlYWQpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoImxvY2s7IGFkZGwgJDAsLTQoJSVy c3ApIiA6OjogIm1lbW9yeSIsICJjYyIpOwoxNDQ3NDogIHJldHVybiB3YWl0cXVldWVfYWN0aXZl KHdxX2hlYWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBhZGRfd2FpdF9x dWV1ZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9l bnRyeSAqd3FfZW50cnkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYWRkX3dhaXRfcXVldWVfZXhjbHVz aXZlKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0cnVjdCB3YWl0X3F1ZXVlX2Vu dHJ5ICp3cV9lbnRyeSk7CjE0NDc0OiBleHRlcm4gdm9pZCByZW1vdmVfd2FpdF9xdWV1ZShzdHJ1 Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3Ff ZW50cnkpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYWRkX3dhaXRfcXVldWUoc3RydWN0IHdhaXRf cXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5KQox NDQ3NDogewoxNDQ3NDogIGxpc3RfYWRkKCZ3cV9lbnRyeS0+ZW50cnksICZ3cV9oZWFkLT5oZWFk KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAox NDQ3NDogX19hZGRfd2FpdF9xdWV1ZV9leGNsdXNpdmUoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAq d3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5KQoxNDQ3NDogewoxNDQ3 NDogIHdxX2VudHJ5LT5mbGFncyB8PSAweDAxOwoxNDQ3NDogIF9fYWRkX3dhaXRfcXVldWUod3Ff aGVhZCwgd3FfZW50cnkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYWRkX3dhaXRf cXVldWVfZW50cnlfdGFpbChzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qg d2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgbGlzdF9hZGRfdGFp bCgmd3FfZW50cnktPmVudHJ5LCAmd3FfaGVhZC0+aGVhZCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQKMTQ0NzQ6IF9fYWRkX3dhaXRfcXVldWVfZW50cnlfdGFpbF9leGNsdXNpdmUoc3Ry dWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndx X2VudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHdxX2VudHJ5LT5mbGFncyB8PSAweDAxOwoxNDQ3NDog IF9fYWRkX3dhaXRfcXVldWVfZW50cnlfdGFpbCh3cV9oZWFkLCB3cV9lbnRyeSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IF9fcmVtb3ZlX3dhaXRfcXVldWUoc3RydWN0IHdh aXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5 KQoxNDQ3NDogewoxNDQ3NDogIGxpc3RfZGVsKCZ3cV9lbnRyeS0+ZW50cnkpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiB2b2lkIF9fd2FrZV91cChzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9o ZWFkLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5yLCB2b2lkICprZXkpOwoxNDQ3NDogdm9pZCBf X3dha2VfdXBfbG9ja2VkX2tleShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCB1bnNp Z25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5KTsKMTQ0NzQ6IHZvaWQgX193YWtlX3VwX2xvY2tlZF9r ZXlfYm9va21hcmsoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwKMTQ0NzQ6ICAgdW5z aWduZWQgaW50IG1vZGUsIHZvaWQgKmtleSwgd2FpdF9xdWV1ZV9lbnRyeV90ICpib29rbWFyayk7 CjE0NDc0OiB2b2lkIF9fd2FrZV91cF9zeW5jX2tleShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3 cV9oZWFkLCB1bnNpZ25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5KTsKMTQ0NzQ6IHZvaWQgX193YWtl X3VwX2xvY2tlZF9zeW5jX2tleShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCB1bnNp Z25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5KTsKMTQ0NzQ6IHZvaWQgX193YWtlX3VwX2xvY2tlZChz dHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCB1bnNpZ25lZCBpbnQgbW9kZSwgaW50IG5y KTsKMTQ0NzQ6IHZvaWQgX193YWtlX3VwX3N5bmMoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3Ff aGVhZCwgdW5zaWduZWQgaW50IG1vZGUpOwoxNDQ3NDogIyAyNDggIi4vaW5jbHVkZS9saW51eC93 YWl0LmgiCjE0NDc0OiBleHRlcm4gdm9pZCBpbml0X3dhaXRfZW50cnkoc3RydWN0IHdhaXRfcXVl dWVfZW50cnkgKndxX2VudHJ5LCBpbnQgZmxhZ3MpOwoxNDQ3NDogIyA3MzIgIi4vaW5jbHVkZS9s aW51eC93YWl0LmgiCjE0NDc0OiBleHRlcm4gaW50IGRvX3dhaXRfaW50cih3YWl0X3F1ZXVlX2hl YWRfdCAqLCB3YWl0X3F1ZXVlX2VudHJ5X3QgKik7CjE0NDc0OiBleHRlcm4gaW50IGRvX3dhaXRf aW50cl9pcnEod2FpdF9xdWV1ZV9oZWFkX3QgKiwgd2FpdF9xdWV1ZV9lbnRyeV90ICopOwoxNDQ3 NDogIyAxMTI2ICIuL2luY2x1ZGUvbGludXgvd2FpdC5oIgoxNDQ3NDogdm9pZCBwcmVwYXJlX3Rv X3dhaXQoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVf ZW50cnkgKndxX2VudHJ5LCBpbnQgc3RhdGUpOwoxNDQ3NDogdm9pZCBwcmVwYXJlX3RvX3dhaXRf ZXhjbHVzaXZlKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0cnVjdCB3YWl0X3F1 ZXVlX2VudHJ5ICp3cV9lbnRyeSwgaW50IHN0YXRlKTsKMTQ0NzQ6IGxvbmcgcHJlcGFyZV90b193 YWl0X2V2ZW50KHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0cnVjdCB3YWl0X3F1 ZXVlX2VudHJ5ICp3cV9lbnRyeSwgaW50IHN0YXRlKTsKMTQ0NzQ6IHZvaWQgZmluaXNoX3dhaXQo c3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkg KndxX2VudHJ5KTsKMTQ0NzQ6IGxvbmcgd2FpdF93b2tlbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRy eSAqd3FfZW50cnksIHVuc2lnbmVkIG1vZGUsIGxvbmcgdGltZW91dCk7CjE0NDc0OiBpbnQgd29r ZW5fd2FrZV9mdW5jdGlvbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnksIHVuc2ln bmVkIG1vZGUsIGludCBzeW5jLCB2b2lkICprZXkpOwoxNDQ3NDogaW50IGF1dG9yZW1vdmVfd2Fr ZV9mdW5jdGlvbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnksIHVuc2lnbmVkIG1v ZGUsIGludCBzeW5jLCB2b2lkICprZXkpOwoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L21t em9uZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9udW1hLmgiIDEKMTQ0NzQ6ICMgMTUgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgox NDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiIDEKMTQ0NzQ6ICMg NDggIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBzZXFj b3VudCB7CjE0NDc0OiAgdW5zaWduZWQgc2VxdWVuY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB9IHNlcWNvdW50X3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19zZXFjb3VudF9pbml0 KHNlcWNvdW50X3QgKnMsIGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0OiAgICAgICAgc3RydWN0IGxv Y2tfY2xhc3Nfa2V5ICprZXkpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgZG8geyAodm9pZCkobmFtZSk7ICh2b2lkKShrZXkpOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBz LT5zZXF1ZW5jZSA9IDA7CjE0NDc0OiB9CjE0NDc0OiAjIDEwOCAiLi9pbmNsdWRlL2xpbnV4L3Nl cWxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIF9fcmVhZF9zZXFjb3VudF9iZWdpbihjb25zdCBzZXFj b3VudF90ICpzKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIHJldDsKMTQ0NzQ6IAoxNDQ3NDog cmVwZWF0OgoxNDQ3NDogIHJldCA9ICh7IHVuaW9uIHsgdHlwZW9mKHMtPnNlcXVlbmNlKSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHMtPnNlcXVl bmNlKSwgX191Ll9fYywgc2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6 ZV9ub2NoZWNrKCYocy0+c2VxdWVuY2UpLCBfX3UuX19jLCBzaXplb2Yocy0+c2VxdWVuY2UpKTsg ZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4 cGVjdCghIShyZXQgJiAxKSwgMCkpIHsKMTQ0NzQ6ICAgY3B1X3JlbGF4KCk7CjE0NDc0OiAgIGdv dG8gcmVwZWF0OwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gcmV0OwoxNDQ3NDogfQoxNDQ3NDog IyAxMzAgIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCByYXdfcmVh ZF9zZXFjb3VudChjb25zdCBzZXFjb3VudF90ICpzKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVk IHJldCA9ICh7IHVuaW9uIHsgdHlwZW9mKHMtPnNlcXVlbmNlKSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHMtPnNlcXVlbmNlKSwgX191Ll9fYywg c2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocy0+ c2VxdWVuY2UpLCBfX3UuX19jLCBzaXplb2Yocy0+c2VxdWVuY2UpKTsgZG8geyB9IHdoaWxlICgw KTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l bW9yeSIpOwoxNDQ3NDogIHJldHVybiByZXQ7CjE0NDc0OiB9CjE0NDc0OiAjIDE0NiAiLi9pbmNs dWRlL2xpbnV4L3NlcWxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJhd19yZWFkX3NlcWNvdW50X2Jl Z2luKGNvbnN0IHNlcWNvdW50X3QgKnMpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgcmV0ID0g X19yZWFkX3NlcWNvdW50X2JlZ2luKHMpOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIi OiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTYy ICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgcmVhZF9zZXFjb3Vu dF9iZWdpbihjb25zdCBzZXFjb3VudF90ICpzKQoxNDQ3NDogewoxNDQ3NDogIDsKMTQ0NzQ6ICBy ZXR1cm4gcmF3X3JlYWRfc2VxY291bnRfYmVnaW4ocyk7CjE0NDc0OiB9CjE0NDc0OiAjIDE4MiAi Li9pbmNsdWRlL2xpbnV4L3NlcWxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJhd19zZXFjb3VudF9i ZWdpbihjb25zdCBzZXFjb3VudF90ICpzKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIHJldCA9 ICh7IHVuaW9uIHsgdHlwZW9mKHMtPnNlcXVlbmNlKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191 OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHMtPnNlcXVlbmNlKSwgX191Ll9fYywgc2l6ZW9m KHMtPnNlcXVlbmNlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocy0+c2VxdWVu Y2UpLCBfX3UuX19jLCBzaXplb2Yocy0+c2VxdWVuY2UpKTsgZG8geyB9IHdoaWxlICgwKTsgX191 Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OwoxNDQ3NDogIHJldHVybiByZXQgJiB+MTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjAzICIuL2luY2x1 ZGUvbGludXgvc2VxbG9jay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fcmVhZF9zZXFjb3VudF9yZXRyeShjb25z dCBzZXFjb3VudF90ICpzLCB1bnNpZ25lZCBzdGFydCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g X19idWlsdGluX2V4cGVjdCghIShzLT5zZXF1ZW5jZSAhPSBzdGFydCksIDApOwoxNDQ3NDogfQox NDQ3NDogIyAyMTggIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVhZF9z ZXFjb3VudF9yZXRyeShjb25zdCBzZXFjb3VudF90ICpzLCB1bnNpZ25lZCBzdGFydCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDog IHJldHVybiBfX3JlYWRfc2VxY291bnRfcmV0cnkocywgc3RhcnQpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByYXdfd3JpdGVfc2VxY291bnRfYmVnaW4oc2Vx Y291bnRfdCAqcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzLT5zZXF1ZW5jZSsrOwoxNDQ3NDogIF9fYXNt X18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgcmF3X3dyaXRlX3NlcWNvdW50X2VuZChzZXFjb3VudF90ICpzKQoxNDQ3NDogewoxNDQ3 NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgcy0+c2Vx dWVuY2UrKzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjcyICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCByYXdfd3JpdGVfc2VxY291bnRfYmFycmllcihzZXFjb3VudF90ICpzKQox NDQ3NDogewoxNDQ3NDogIHMtPnNlcXVlbmNlKys7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxl X18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICBzLT5zZXF1ZW5jZSsrOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgcmF3X3JlYWRfc2VxY291bnRfbGF0Y2goc2VxY291bnRfdCAqcykKMTQ0 NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIGludCBzZXEgPSAoeyB1bmlvbiB7IHR5cGVvZihzLT5zZXF1 ZW5jZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUo JihzLT5zZXF1ZW5jZSksIF9fdS5fX2MsIHNpemVvZihzLT5zZXF1ZW5jZSkpOyBlbHNlIF9fcmVh ZF9vbmNlX3NpemVfbm9jaGVjaygmKHMtPnNlcXVlbmNlKSwgX191Ll9fYywgc2l6ZW9mKHMtPnNl cXVlbmNlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiAgcmV0dXJu IHNlcTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzYzICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCByYXdfd3JpdGVfc2VxY291bnRfbGF0Y2goc2VxY291bnRfdCAqcykKMTQ0NzQ6 IHsKMTQ0NzQ6ICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwox NDQ3NDogICAgICAgIHMtPnNlcXVlbmNlKys7CjE0NDc0OiAgICAgICAgX19hc21fXyBfX3ZvbGF0 aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3NlcWNvdW50X2JlZ2luX25lc3RlZChz ZXFjb3VudF90ICpzLCBpbnQgc3ViY2xhc3MpCjE0NDc0OiB7CjE0NDc0OiAgcmF3X3dyaXRlX3Nl cWNvdW50X2JlZ2luKHMpOwoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgd3JpdGVfc2VxY291bnRfYmVnaW4oc2VxY291bnRfdCAqcykKMTQ0NzQ6 IHsKMTQ0NzQ6ICB3cml0ZV9zZXFjb3VudF9iZWdpbl9uZXN0ZWQocywgMCk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgd3JpdGVfc2VxY291bnRfZW5kKHNlcWNvdW50X3QgKnMpCjE0NDc0 OiB7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICByYXdfd3JpdGVfc2VxY291bnRf ZW5kKHMpOwoxNDQ3NDogfQoxNDQ3NDogIyAzOTggIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHdyaXRlX3NlcWNvdW50X2ludmFsaWRhdGUoc2VxY291bnRfdCAqcykKMTQ0 NzQ6IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3 NDogIHMtPnNlcXVlbmNlKz0yOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVj dCB7CjE0NDc0OiAgc3RydWN0IHNlcWNvdW50IHNlcWNvdW50OwoxNDQ3NDogIHNwaW5sb2NrX3Qg bG9jazsKMTQ0NzQ6IH0gc2VxbG9ja190OwoxNDQ3NDogIyA0MzEgIi4vaW5jbHVkZS9saW51eC9z ZXFsb2NrLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCByZWFkX3NlcWJlZ2luKGNvbnN0IHNlcWxvY2tfdCAq c2wpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlYWRfc2VxY291bnRfYmVnaW4oJnNsLT5zZXFj b3VudCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJlYWRfc2VxcmV0cnkoY29u c3Qgc2VxbG9ja190ICpzbCwgdW5zaWduZWQgc3RhcnQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IHJlYWRfc2VxY291bnRfcmV0cnkoJnNsLT5zZXFjb3VudCwgc3RhcnQpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3 cml0ZV9zZXFsb2NrKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0NDc0OiAgc3Bpbl9sb2NrKCZz bC0+bG9jayk7CjE0NDc0OiAgd3JpdGVfc2VxY291bnRfYmVnaW4oJnNsLT5zZXFjb3VudCk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3JpdGVfc2VxdW5sb2NrKHNlcWxvY2tfdCAqc2wp CjE0NDc0OiB7CjE0NDc0OiAgd3JpdGVfc2VxY291bnRfZW5kKCZzbC0+c2VxY291bnQpOwoxNDQ3 NDogIHNwaW5fdW5sb2NrKCZzbC0+bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg d3JpdGVfc2VxbG9ja19iaChzZXFsb2NrX3QgKnNsKQoxNDQ3NDogewoxNDQ3NDogIHNwaW5fbG9j a19iaCgmc2wtPmxvY2spOwoxNDQ3NDogIHdyaXRlX3NlcWNvdW50X2JlZ2luKCZzbC0+c2VxY291 bnQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3NlcXVubG9ja19iaChzZXFs b2NrX3QgKnNsKQoxNDQ3NDogewoxNDQ3NDogIHdyaXRlX3NlcWNvdW50X2VuZCgmc2wtPnNlcWNv dW50KTsKMTQ0NzQ6ICBzcGluX3VubG9ja19iaCgmc2wtPmxvY2spOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHdyaXRlX3NlcWxvY2tfaXJxKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0 NDc0OiAgc3Bpbl9sb2NrX2lycSgmc2wtPmxvY2spOwoxNDQ3NDogIHdyaXRlX3NlcWNvdW50X2Jl Z2luKCZzbC0+c2VxY291bnQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3Nl cXVubG9ja19pcnEoc2VxbG9ja190ICpzbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB3cml0ZV9zZXFjb3Vu dF9lbmQoJnNsLT5zZXFjb3VudCk7CjE0NDc0OiAgc3Bpbl91bmxvY2tfaXJxKCZzbC0+bG9jayk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgX193cml0ZV9zZXFsb2NrX2ly cXNhdmUoc2VxbG9ja190ICpzbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdz OwoxNDQ3NDogCjE0NDc0OiAgZG8geyBkbyB7ICh7IHVuc2lnbmVkIGxvbmcgX19kdW1teTsgdHlw ZW9mKGZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09ICZfX2R1bW15Mik7IDE7IH0p OyBmbGFncyA9IF9yYXdfc3Bpbl9sb2NrX2lycXNhdmUoc3BpbmxvY2tfY2hlY2soJnNsLT5sb2Nr KSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICB3cml0ZV9zZXFjb3VudF9iZWdp bigmc2wtPnNlcWNvdW50KTsKMTQ0NzQ6ICByZXR1cm4gZmxhZ3M7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IHdyaXRlX3NlcXVubG9j a19pcnFyZXN0b3JlKHNlcWxvY2tfdCAqc2wsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCjE0NDc0OiB7 CjE0NDc0OiAgd3JpdGVfc2VxY291bnRfZW5kKCZzbC0+c2VxY291bnQpOwoxNDQ3NDogIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnNsLT5sb2NrLCBmbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlYWRfc2Vx bG9ja19leGNsKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0NDc0OiAgc3Bpbl9sb2NrKCZzbC0+ bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVhZF9zZXF1bmxvY2tfZXhjbChz ZXFsb2NrX3QgKnNsKQoxNDQ3NDogewoxNDQ3NDogIHNwaW5fdW5sb2NrKCZzbC0+bG9jayk7CjE0 NDc0OiB9CjE0NDc0OiAjIDUyNiAiLi9pbmNsdWRlL2xpbnV4L3NlcWxvY2suaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgcmVhZF9zZXFiZWdpbl9vcl9sb2NrKHNlcWxvY2tfdCAqbG9jaywgaW50ICpzZXEpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKCEoKnNlcSAmIDEpKQoxNDQ3NDogICAqc2VxID0gcmVhZF9zZXFiZWdp bihsb2NrKTsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIHJlYWRfc2VxbG9ja19leGNsKGxvY2spOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbmVlZF9zZXFyZXRyeShzZXFsb2NrX3QgKmxvY2ss IGludCBzZXEpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICEoc2VxICYgMSkgJiYgcmVhZF9zZXFy ZXRyeShsb2NrLCBzZXEpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRvbmVfc2VxcmV0 cnkoc2VxbG9ja190ICpsb2NrLCBpbnQgc2VxKQoxNDQ3NDogewoxNDQ3NDogIGlmIChzZXEgJiAx KQoxNDQ3NDogICByZWFkX3NlcXVubG9ja19leGNsKGxvY2spOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHJlYWRfc2VxbG9ja19leGNsX2JoKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0 NDc0OiAgc3Bpbl9sb2NrX2JoKCZzbC0+bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgcmVhZF9zZXF1bmxvY2tfZXhjbF9iaChzZXFsb2NrX3QgKnNsKQoxNDQ3NDogewoxNDQ3NDog IHNwaW5fdW5sb2NrX2JoKCZzbC0+bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg cmVhZF9zZXFsb2NrX2V4Y2xfaXJxKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0NDc0OiAgc3Bp bl9sb2NrX2lycSgmc2wtPmxvY2spOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlYWRf c2VxdW5sb2NrX2V4Y2xfaXJxKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0NDc0OiAgc3Bpbl91 bmxvY2tfaXJxKCZzbC0+bG9jayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxv bmcgX19yZWFkX3NlcWxvY2tfZXhjbF9pcnFzYXZlKHNlcWxvY2tfdCAqc2wpCjE0NDc0OiB7CjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFnczsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsgZG8geyAoeyB1 bnNpZ25lZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFncykgX19kdW1teTI7ICh2b2lkKSgmX19k dW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsgZmxhZ3MgPSBfcmF3X3NwaW5fbG9ja19pcnFzYXZl KHNwaW5sb2NrX2NoZWNrKCZzbC0+bG9jaykpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAgcmV0dXJuIGZsYWdzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiByZWFkX3NlcXVubG9ja19leGNsX2lycXJlc3RvcmUoc2Vx bG9ja190ICpzbCwgdW5zaWduZWQgbG9uZyBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZzbC0+bG9jaywgZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBsb25nCjE0NDc0OiByZWFkX3NlcWJlZ2luX29yX2xvY2tfaXJxc2F2ZShzZXFs b2NrX3QgKmxvY2ssIGludCAqc2VxKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxh Z3MgPSAwOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCEoKnNlcSAmIDEpKQoxNDQ3NDogICAqc2VxID0g cmVhZF9zZXFiZWdpbihsb2NrKTsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIGRvIHsgZmxhZ3MgPSBf X3JlYWRfc2VxbG9ja19leGNsX2lycXNhdmUobG9jayk7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuIGZsYWdzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBk b25lX3NlcXJldHJ5X2lycXJlc3RvcmUoc2VxbG9ja190ICpsb2NrLCBpbnQgc2VxLCB1bnNpZ25l ZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGlmIChzZXEgJiAxKQoxNDQ3NDogICByZWFk X3NlcXVubG9ja19leGNsX2lycXJlc3RvcmUobG9jaywgZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDog IyAxNyAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9ub2RlbWFzay5oIiAxCjE0NDc0OiAjIDk4ICIuL2luY2x1ZGUvbGludXgvbm9kZW1hc2su aCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgbG9uZyBiaXRzWygoKCgxIDw8IDAp KSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkgLyAoKHNpemVvZihsb25nKSAqIDgpKSldOyB9 IG5vZGVtYXNrX3Q7CjE0NDc0OiBleHRlcm4gbm9kZW1hc2tfdCBfdW51c2VkX25vZGVtYXNrX2Fy Z187CjE0NDc0OiAjIDEwOSAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNp Z25lZCBpbnQgX19ub2RlbWFza19wcl9udW1ub2Rlcyhjb25zdCBub2RlbWFza190ICptKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBtID8gKDEgPDwgMCkgOiAwOwoxNDQ3NDogfQoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29u c3QgdW5zaWduZWQgbG9uZyAqX19ub2RlbWFza19wcl9iaXRzKGNvbnN0IG5vZGVtYXNrX3QgKm0p CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG0gPyBtLT5iaXRzIDogKCh2b2lkICopMCk7CjE0NDc0 OiB9CjE0NDc0OiAjIDEyOCAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19ub2RlX3NldChpbnQgbm9kZSwg dm9sYXRpbGUgbm9kZW1hc2tfdCAqZHN0cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzZXRfYml0KG5vZGUs IGRzdHAtPmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19ub2Rl X2NsZWFyKGludCBub2RlLCB2b2xhdGlsZSBub2RlbWFza190ICpkc3RwKQoxNDQ3NDogewoxNDQ3 NDogIGNsZWFyX2JpdChub2RlLCBkc3RwLT5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fbm9kZXNfc2V0YWxsKG5vZGVtYXNrX3QgKmRzdHAsIHVuc2lnbmVkIGlu dCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfZmlsbChkc3RwLT5iaXRzLCBuYml0cyk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX25vZGVzX2NsZWFyKG5vZGVt YXNrX3QgKmRzdHAsIHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBf emVybyhkc3RwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19ub2RlX3Rlc3RfYW5kX3NldChp bnQgbm9kZSwgbm9kZW1hc2tfdCAqYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGVzdF9h bmRfc2V0X2JpdChub2RlLCBhZGRyLT5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgX19ub2Rlc19hbmQobm9kZW1hc2tfdCAqZHN0cCwgY29uc3Qgbm9k ZW1hc2tfdCAqc3JjMXAsCjE0NDc0OiAgICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyYzJwLCB1bnNp Z25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX2FuZChkc3RwLT5iaXRzLCBz cmMxcC0+Yml0cywgc3JjMnAtPmJpdHMsIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgX19ub2Rlc19vcihub2RlbWFza190ICpkc3RwLCBjb25zdCBu b2RlbWFza190ICpzcmMxcCwKMTQ0NzQ6ICAgICAgY29uc3Qgbm9kZW1hc2tfdCAqc3JjMnAsIHVu c2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBiaXRtYXBfb3IoZHN0cC0+Yml0cywg c3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfeG9yKG5vZGVtYXNrX3QgKmRzdHAsIGNvbnN0 IG5vZGVtYXNrX3QgKnNyYzFwLAoxNDQ3NDogICAgICBjb25zdCBub2RlbWFza190ICpzcmMycCwg dW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIGJpdG1hcF94b3IoZHN0cC0+Yml0 cywgc3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfYW5kbm90KG5vZGVtYXNrX3QgKmRzdHAs IGNvbnN0IG5vZGVtYXNrX3QgKnNyYzFwLAoxNDQ3NDogICAgICBjb25zdCBub2RlbWFza190ICpz cmMycCwgdW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIGJpdG1hcF9hbmRub3Qo ZHN0cC0+Yml0cywgc3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfY29tcGxlbWVudChub2Rl bWFza190ICpkc3RwLAoxNDQ3NDogICAgICBjb25zdCBub2RlbWFza190ICpzcmNwLCB1bnNpZ25l ZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX2NvbXBsZW1lbnQoZHN0cC0+Yml0 cywgc3JjcC0+Yml0cywgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IF9fbm9kZXNfZXF1YWwoY29uc3Qgbm9kZW1hc2tfdCAqc3JjMXAsCjE0NDc0OiAg ICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyYzJwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGJpdG1hcF9lcXVhbChzcmMxcC0+Yml0cywgc3JjMnAtPmJpdHMsIG5i aXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVz X2ludGVyc2VjdHMoY29uc3Qgbm9kZW1hc2tfdCAqc3JjMXAsCjE0NDc0OiAgICAgIGNvbnN0IG5v ZGVtYXNrX3QgKnNyYzJwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGJpdG1hcF9pbnRlcnNlY3RzKHNyYzFwLT5iaXRzLCBzcmMycC0+Yml0cywgbmJpdHMpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZXNfc3Vic2V0 KGNvbnN0IG5vZGVtYXNrX3QgKnNyYzFwLAoxNDQ3NDogICAgICBjb25zdCBub2RlbWFza190ICpz cmMycCwgdW5zaWduZWQgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBf c3Vic2V0KHNyYzFwLT5iaXRzLCBzcmMycC0+Yml0cywgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVzX2VtcHR5KGNvbnN0IG5vZGVtYXNrX3QgKnNyY3As IHVuc2lnbmVkIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0bWFwX2VtcHR5 KHNyY3AtPmJpdHMsIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg X19ub2Rlc19mdWxsKGNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIHVuc2lnbmVkIGludCBuYml0cykK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0bWFwX2Z1bGwoc3JjcC0+Yml0cywgbmJpdHMpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVzX3dlaWdodChjb25zdCBu b2RlbWFza190ICpzcmNwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGJpdG1hcF93ZWlnaHQoc3JjcC0+Yml0cywgbmJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX25vZGVzX3NoaWZ0X3JpZ2h0KG5vZGVtYXNrX3Qg KmRzdHAsCjE0NDc0OiAgICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIGludCBuLCBpbnQgbmJp dHMpCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX3NoaWZ0X3JpZ2h0KGRzdHAtPmJpdHMsIHNyY3At PmJpdHMsIG4sIG5iaXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgX19ub2Rlc19zaGlmdF9sZWZ0KG5vZGVtYXNrX3QgKmRzdHAsCjE0NDc0OiAgICAgIGNv bnN0IG5vZGVtYXNrX3QgKnNyY3AsIGludCBuLCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAg Yml0bWFwX3NoaWZ0X2xlZnQoZHN0cC0+Yml0cywgc3JjcC0+Yml0cywgbiwgbmJpdHMpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBf X2ZpcnN0X25vZGUoY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gX19idWlsdGluX2Nob29zZV9leHByKCgoISEoc2l6ZW9mKCh0eXBlb2YoKGludCkoKDEgPDwg MCkpKSAqKTEgPT0gKHR5cGVvZigoaW50KShmaW5kX2ZpcnN0X2JpdChzcmNwLT5iaXRzLCAoMSA8 PCAwKSkpKSAqKTEpKSkgJiYgKChzaXplb2YoaW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICop KChsb25nKSgoaW50KSgoMSA8PCAwKSkpICogMGwpKSA6IChpbnQgKik4KSkpICYmIChzaXplb2Yo aW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgoaW50KShmaW5kX2ZpcnN0X2Jp dChzcmNwLT5iaXRzLCAoMSA8PCAwKSkpKSAqIDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKChpbnQp KCgxIDw8IDApKSkgPCAoKGludCkoZmluZF9maXJzdF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCkp KSkgPyAoKGludCkoKDEgPDwgMCkpKSA6ICgoaW50KShmaW5kX2ZpcnN0X2JpdChzcmNwLT5iaXRz LCAoMSA8PCAwKSkpKSksICh7IHR5cGVvZigoaW50KSgoMSA8PCAwKSkpIF9fVU5JUVVFX0lEX19f eDIgPSAoKGludCkoKDEgPDwgMCkpKTsgdHlwZW9mKChpbnQpKGZpbmRfZmlyc3RfYml0KHNyY3At PmJpdHMsICgxIDw8IDApKSkpIF9fVU5JUVVFX0lEX19feTMgPSAoKGludCkoZmluZF9maXJzdF9i aXQoc3JjcC0+Yml0cywgKDEgPDwgMCkpKSk7ICgoX19VTklRVUVfSURfX194MikgPCAoX19VTklR VUVfSURfX195MykgPyAoX19VTklRVUVfSURfX194MikgOiAoX19VTklRVUVfSURfX195MykpOyB9 KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbmV4dF9ub2RlKGludCBu LCBjb25zdCBub2RlbWFza190ICpzcmNwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2J1aWx0 aW5fY2hvb3NlX2V4cHIoKCghIShzaXplb2YoKHR5cGVvZigoaW50KSgoMSA8PCAwKSkpICopMSA9 PSAodHlwZW9mKChpbnQpKGZpbmRfbmV4dF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCksIG4rMSkp KSAqKTEpKSkgJiYgKChzaXplb2YoaW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25n KSgoaW50KSgoMSA8PCAwKSkpICogMGwpKSA6IChpbnQgKik4KSkpICYmIChzaXplb2YoaW50KSA9 PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgoaW50KShmaW5kX25leHRfYml0KHNyY3At PmJpdHMsICgxIDw8IDApLCBuKzEpKSkgKiAwbCkpIDogKGludCAqKTgpKSkpKSwgKCgoaW50KSgo MSA8PCAwKSkpIDwgKChpbnQpKGZpbmRfbmV4dF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCksIG4r MSkpKSA/ICgoaW50KSgoMSA8PCAwKSkpIDogKChpbnQpKGZpbmRfbmV4dF9iaXQoc3JjcC0+Yml0 cywgKDEgPDwgMCksIG4rMSkpKSksICh7IHR5cGVvZigoaW50KSgoMSA8PCAwKSkpIF9fVU5JUVVF X0lEX19feDQgPSAoKGludCkoKDEgPDwgMCkpKTsgdHlwZW9mKChpbnQpKGZpbmRfbmV4dF9iaXQo c3JjcC0+Yml0cywgKDEgPDwgMCksIG4rMSkpKSBfX1VOSVFVRV9JRF9fX3k1ID0gKChpbnQpKGZp bmRfbmV4dF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCksIG4rMSkpKTsgKChfX1VOSVFVRV9JRF9f X3g0KSA8IChfX1VOSVFVRV9JRF9fX3k1KSA/IChfX1VOSVFVRV9JRF9fX3g0KSA6IChfX1VOSVFV RV9JRF9fX3k1KSk7IH0pKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGludCBfX25leHRfbm9kZV9pbihpbnQgbm9kZSwgY29u c3Qgbm9kZW1hc2tfdCAqc3JjcCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5pdF9ub2RlbWFza19v Zl9ub2RlKG5vZGVtYXNrX3QgKm1hc2ssIGludCBub2RlKQoxNDQ3NDogewoxNDQ3NDogIF9fbm9k ZXNfY2xlYXIoJigqbWFzayksICgxIDw8IDApKTsKMTQ0NzQ6ICBfX25vZGVfc2V0KChub2RlKSwg JigqbWFzaykpOwoxNDQ3NDogfQoxNDQ3NDogIyAyOTkgIi4vaW5jbHVkZS9saW51eC9ub2RlbWFz ay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IF9fZmlyc3RfdW5zZXRfbm9kZShjb25zdCBub2RlbWFza190ICptYXNr cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19idWlsdGluX2Nob29zZV9leHByKCgoISEoc2l6 ZW9mKCh0eXBlb2YoKGludCkoKDEgPDwgMCkpKSAqKTEgPT0gKHR5cGVvZigoaW50KShmaW5kX2Zp cnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8PCAwKSkpKSAqKTEpKSkgJiYgKChzaXplb2Yo aW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgoaW50KSgoMSA8PCAwKSkpICog MGwpKSA6IChpbnQgKik4KSkpICYmIChzaXplb2YoaW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lk ICopKChsb25nKSgoaW50KShmaW5kX2ZpcnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8PCAw KSkpKSAqIDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKChpbnQpKCgxIDw8IDApKSkgPCAoKGludCko ZmluZF9maXJzdF96ZXJvX2JpdChtYXNrcC0+Yml0cywgKDEgPDwgMCkpKSkgPyAoKGludCkoKDEg PDwgMCkpKSA6ICgoaW50KShmaW5kX2ZpcnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8PCAw KSkpKSksICh7IHR5cGVvZigoaW50KSgoMSA8PCAwKSkpIF9fVU5JUVVFX0lEX19feDYgPSAoKGlu dCkoKDEgPDwgMCkpKTsgdHlwZW9mKChpbnQpKGZpbmRfZmlyc3RfemVyb19iaXQobWFza3AtPmJp dHMsICgxIDw8IDApKSkpIF9fVU5JUVVFX0lEX19feTcgPSAoKGludCkoZmluZF9maXJzdF96ZXJv X2JpdChtYXNrcC0+Yml0cywgKDEgPDwgMCkpKSk7ICgoX19VTklRVUVfSURfX194NikgPCAoX19V TklRVUVfSURfX195NykgPyAoX19VTklRVUVfSURfX194NikgOiAoX19VTklRVUVfSURfX195Nykp OyB9KSkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogIyAzMzMgIi4vaW5jbHVkZS9saW51eC9ub2RlbWFzay5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fbm9kZW1hc2tfcGFyc2VfdXNlcihjb25zdCBjaGFyICpidWYsIGludCBs ZW4sCjE0NDc0OiAgICAgIG5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gYml0bWFwX3BhcnNlX3VzZXIoYnVmLCBsZW4sIGRzdHAtPmJpdHMsIG5iaXRz KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19ub2RlbGlzdF9wYXJzZShj b25zdCBjaGFyICpidWYsIG5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gYml0bWFwX3BhcnNlbGlzdChidWYsIGRzdHAtPmJpdHMsIG5iaXRzKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVfcmVtYXAoaW50 IG9sZGJpdCwKMTQ0NzQ6ICAgY29uc3Qgbm9kZW1hc2tfdCAqb2xkcCwgY29uc3Qgbm9kZW1hc2tf dCAqbmV3cCwgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBiaXRtYXBfYml0cmVt YXAob2xkYml0LCBvbGRwLT5iaXRzLCBuZXdwLT5iaXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfcmVtYXAobm9kZW1hc2tfdCAq ZHN0cCwgY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCwKMTQ0NzQ6ICAgY29uc3Qgbm9kZW1hc2tfdCAq b2xkcCwgY29uc3Qgbm9kZW1hc2tfdCAqbmV3cCwgaW50IG5iaXRzKQoxNDQ3NDogewoxNDQ3NDog IGJpdG1hcF9yZW1hcChkc3RwLT5iaXRzLCBzcmNwLT5iaXRzLCBvbGRwLT5iaXRzLCBuZXdwLT5i aXRzLCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IF9fbm9kZXNfb250byhub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFza190ICpvcmlncCwK MTQ0NzQ6ICAgY29uc3Qgbm9kZW1hc2tfdCAqcmVsbWFwcCwgaW50IG5iaXRzKQoxNDQ3NDogewox NDQ3NDogIGJpdG1hcF9vbnRvKGRzdHAtPmJpdHMsIG9yaWdwLT5iaXRzLCByZWxtYXBwLT5iaXRz LCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9f bm9kZXNfZm9sZChub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFza190ICpvcmlncCwKMTQ0 NzQ6ICAgaW50IHN6LCBpbnQgbmJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgYml0bWFwX2ZvbGQoZHN0 cC0+Yml0cywgb3JpZ3AtPmJpdHMsIHN6LCBuYml0cyk7CjE0NDc0OiB9CjE0NDc0OiAjIDM5MSAi Li9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCjE0NDc0OiBlbnVtIG5vZGVfc3RhdGVzIHsKMTQ0 NzQ6ICBOX1BPU1NJQkxFLAoxNDQ3NDogIE5fT05MSU5FLAoxNDQ3NDogIE5fTk9STUFMX01FTU9S WSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBOX0hJR0hfTUVNT1JZID0gTl9OT1JN QUxfTUVNT1JZLAoxNDQ3NDogCjE0NDc0OiAgTl9NRU1PUlksCjE0NDc0OiAgTl9DUFUsCjE0NDc0 OiAgTlJfTk9ERV9TVEFURVMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gbm9kZW1hc2tfdCBub2RlX3N0YXRlc1tO Ul9OT0RFX1NUQVRFU107CjE0NDc0OiAjIDQ2NCAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgbm9kZV9zdGF0ZShpbnQgbm9kZSwgZW51bSBub2RlX3N0YXRlcyBzdGF0ZSkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbm9kZSA9PSAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIG5vZGVfc2V0X3N0YXRlKGludCBub2RlLCBlbnVtIG5vZGVfc3RhdGVzIHN0YXRlKQox NDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5vZGVfY2xlYXJfc3RhdGUoaW50 IG5vZGUsIGVudW0gbm9kZV9zdGF0ZXMgc3RhdGUpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCBudW1fbm9kZV9zdGF0ZShlbnVtIG5vZGVfc3RhdGVzIHN0YXRlKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAxOwoxNDQ3NDogfQoxNDQ3NDogIyA0OTkgIi4vaW5jbHVkZS9saW51 eC9ub2RlbWFzay5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG5vZGVfcmFuZG9tKGNvbnN0IG5vZGVtYXNrX3QgKm1h c2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAjIDUzMSAiLi9p bmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCjE0NDc0OiBzdHJ1Y3Qgbm9kZW1hc2tfc2NyYXRjaCB7 CjE0NDc0OiAgbm9kZW1hc2tfdCBtYXNrMTsKMTQ0NzQ6ICBub2RlbWFza190IG1hc2syOwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgiIDEKMTQ0NzQ6ICMgMTggIi4vaW5j bHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaCIKMTQ0NzQ6IGVudW0gcGFnZWJsb2NrX2JpdHMg ewoxNDQ3NDogIFBCX21pZ3JhdGUsCjE0NDc0OiAgUEJfbWlncmF0ZV9lbmQgPSBQQl9taWdyYXRl ICsgMyAtIDEsCjE0NDc0OiAKMTQ0NzQ6ICBQQl9taWdyYXRlX3NraXAsCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIE5SX1BBR0VCTE9DS19CSVRTCjE0NDc0 OiB9OwoxNDQ3NDogIyA1NSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFncy5oIgoxNDQ3 NDogc3RydWN0IHBhZ2U7CjE0NDc0OiAKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgZ2V0X3BmbmJsb2Nr X2ZsYWdzX21hc2soc3RydWN0IHBhZ2UgKnBhZ2UsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBw Zm4sCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBlbmRfYml0aWR4LAoxNDQ3NDogICAgIHVuc2ln bmVkIGxvbmcgbWFzayk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2V0X3BmbmJsb2NrX2ZsYWdzX21h c2soc3RydWN0IHBhZ2UgKnBhZ2UsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBmbGFncywKMTQ0 NzQ6ICAgICB1bnNpZ25lZCBsb25nIHBmbiwKMTQ0NzQ6ICAgICB1bnNpZ25lZCBsb25nIGVuZF9i aXRpZHgsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBtYXNrKTsKMTQ0NzQ6ICMgMTkgIi4vaW5j bHVkZS9saW51eC9tbXpvbmUuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvcGFnZS1m bGFncy1sYXlvdXQuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2dlbmVyYXRlZC9ib3VuZHMuaCIgMQoxNDQ3NDogIyA3ICIu L2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy1sYXlvdXQuaCIgMgoxNDQ3NDogIyAyMCAiLi9pbmNs dWRlL2xpbnV4L21tem9uZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L21tX3R5cGVzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXNfdGFzay5oIiAxCjE0NDc0OiAjIDE5ICIuL2luY2x1 ZGUvbGludXgvbW1fdHlwZXNfdGFzay5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3RsYmJhdGNoLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhcmNoX3RsYmZsdXNoX3VubWFwX2JhdGNoIHsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjcHVtYXNrIGNwdW1hc2s7 CjE0NDc0OiB9OwoxNDQ3NDogIyAyMCAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzX3Rhc2suaCIg MgoxNDQ3NDogIyAzNCAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzX3Rhc2suaCIKMTQ0NzQ6IHN0 cnVjdCB2bWFjYWNoZSB7CjE0NDc0OiAgdTY0IHNlcW51bTsKMTQ0NzQ6ICBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYXNbKDFVIDw8IDIpXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTU1fRklMRVBBR0VTLAox NDQ3NDogIE1NX0FOT05QQUdFUywKMTQ0NzQ6ICBNTV9TV0FQRU5UUywKMTQ0NzQ6ICBNTV9TSE1F TVBBR0VTLAoxNDQ3NDogIE5SX01NX0NPVU5URVJTCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdGFza19yc3Nfc3RhdCB7CjE0NDc0OiAgaW50 IGV2ZW50czsKMTQ0NzQ6ICBpbnQgY291bnRbTlJfTU1fQ09VTlRFUlNdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbW1fcnNzX3N0YXQgewoxNDQ3NDogIGF0b21pY19s b25nX3QgY291bnRbTlJfTU1fQ09VTlRFUlNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IHBhZ2VfZnJhZyB7CjE0NDc0OiAgc3RydWN0IHBhZ2UgKnBhZ2U7CjE0NDc0OiAKMTQ0NzQ6 ICBfX3UzMiBvZmZzZXQ7CjE0NDc0OiAgX191MzIgc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdGxiZmx1 c2hfdW5tYXBfYmF0Y2ggewoxNDQ3NDogIyA4NSAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzX3Rh c2suaCIKMTQ0NzQ6ICBzdHJ1Y3QgYXJjaF90bGJmbHVzaF91bm1hcF9iYXRjaCBhcmNoOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIGZsdXNoX3JlcXVpcmVkOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgd3JpdGFibGU7CjE0 NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAy CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2F1eHZlYy5oIiAxCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgv YXV4dmVjLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYXV4dmVjLmgiIDEKMTQ0NzQ6ICMgNiAiLi9pbmNs dWRlL3VhcGkvbGludXgvYXV4dmVjLmgiIDIKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2xpbnV4L2F1 eHZlYy5oIiAyCjE0NDc0OiAjIDggIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEKMTQ0NzQ6 ICMgMjIgIi4vaW5jbHVkZS9saW51eC9yYnRyZWUuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xp bnV4L3JjdXBkYXRlLmgiIDEKMTQ0NzQ6ICMgMzggIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5o IgoxNDQ3NDogdm9pZCBjYWxsX3JjdShzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCwgcmN1X2Nh bGxiYWNrX3QgZnVuYyk7CjE0NDc0OiB2b2lkIHJjdV9iYXJyaWVyX3Rhc2tzKHZvaWQpOwoxNDQ3 NDogdm9pZCBzeW5jaHJvbml6ZV9yY3Uodm9pZCk7CjE0NDc0OiAjIDU3ICIuL2luY2x1ZGUvbGlu dXgvcmN1cGRhdGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yY3VfcmVhZF9sb2NrKHZvaWQpCjE0NDc0OiB7 CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3JjdV9yZWFkX3VubG9jayh2b2lkKQoxNDQ3NDogewoxNDQ3 NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCByY3VfcHJlZW1wdF9kZXB0aCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2 b2lkIHJjdV9pbml0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCByY3Vfc2NoZWR1bGVyX2FjdGl2 ZSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKTsKMTQ0 NzQ6IHZvaWQgcmN1X3NjaGVkX2Nsb2NrX2lycShpbnQgdXNlcik7CjE0NDc0OiB2b2lkIHJjdV9y ZXBvcnRfZGVhZCh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IHZvaWQgcmN1dHJlZV9taWdyYXRl X2NhbGxiYWNrcyhpbnQgY3B1KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIHJjdV9zeXNy cV9zdGFydCh2b2lkKTsKMTQ0NzQ6IHZvaWQgcmN1X3N5c3JxX2VuZCh2b2lkKTsKMTQ0NzQ6ICMg OTMgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3VfdXNlcl9lbnRl cih2b2lkKSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3VzZXJfZXhpdCh2b2lkKSB7IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9pbml0X25vaHoo dm9pZCkgeyB9CjE0NDc0OiAjIDE0OCAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGV4aXRfdGFza3NfcmN1X3N0YXJ0KHZvaWQpIHsgfQoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBleGl0X3Rh c2tzX3JjdV9maW5pc2godm9pZCkgeyB9CjE0NDc0OiAjIDE3MSAiLi9pbmNsdWRlL2xpbnV4L3Jj dXBkYXRlLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yY3V0cmVlLmgiIDEKMTQ0NzQ6 ICMgMjAgIi4vaW5jbHVkZS9saW51eC9yY3V0cmVlLmgiCjE0NDc0OiB2b2lkIHJjdV9zb2Z0aXJx X3FzKHZvaWQpOwoxNDQ3NDogdm9pZCByY3Vfbm90ZV9jb250ZXh0X3N3aXRjaChib29sIHByZWVt cHQpOwoxNDQ3NDogaW50IHJjdV9uZWVkc19jcHUodTY0IGJhc2VtLCB1NjQgKm5leHRldnQpOwox NDQ3NDogdm9pZCByY3VfY3B1X3N0YWxsX3Jlc2V0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3VfdmlydF9ub3RlX2Nv bnRleHRfc3dpdGNoKGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgcmN1X25vdGVfY29udGV4dF9z d2l0Y2goZmFsc2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2b2lkIHN5bmNocm9uaXplX3Jj dV9leHBlZGl0ZWQodm9pZCk7CjE0NDc0OiB2b2lkIGtmcmVlX2NhbGxfcmN1KHN0cnVjdCBjYWxs YmFja19oZWFkICpoZWFkLCByY3VfY2FsbGJhY2tfdCBmdW5jKTsKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCByY3VfYmFycmllcih2b2lkKTsKMTQ0NzQ6IGJvb2wgcmN1X2Vxc19zcGVjaWFsX3NldChpbnQg Y3B1KTsKMTQ0NzQ6IHZvaWQgcmN1X21vbWVudGFyeV9keW50aWNrX2lkbGUodm9pZCk7CjE0NDc0 OiB2b2lkIGtmcmVlX3JjdV9zY2hlZHVsZXJfcnVubmluZyh2b2lkKTsKMTQ0NzQ6IHVuc2lnbmVk IGxvbmcgZ2V0X3N0YXRlX3N5bmNocm9uaXplX3JjdSh2b2lkKTsKMTQ0NzQ6IHZvaWQgY29uZF9z eW5jaHJvbml6ZV9yY3UodW5zaWduZWQgbG9uZyBvbGRzdGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6IHZv aWQgcmN1X2lkbGVfZW50ZXIodm9pZCk7CjE0NDc0OiB2b2lkIHJjdV9pZGxlX2V4aXQodm9pZCk7 CjE0NDc0OiB2b2lkIHJjdV9pcnFfZW50ZXIodm9pZCk7CjE0NDc0OiB2b2lkIHJjdV9pcnFfZXhp dCh2b2lkKTsKMTQ0NzQ6IHZvaWQgcmN1X2lycV9lbnRlcl9pcnFzb24odm9pZCk7CjE0NDc0OiB2 b2lkIHJjdV9pcnFfZXhpdF9pcnFzb24odm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZXhpdF9y Y3Uodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcmN1X3NjaGVkdWxlcl9zdGFydGluZyh2b2lk KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcmN1X3NjaGVkdWxlcl9hY3RpdmUgX19hdHRyaWJ1dGVfXygo X19zZWN0aW9uX18oIi5kYXRhLi5yZWFkX21vc3RseSIpKSk7CjE0NDc0OiB2b2lkIHJjdV9lbmRf aW5rZXJuZWxfYm9vdCh2b2lkKTsKMTQ0NzQ6IGJvb2wgcmN1X2lzX3dhdGNoaW5nKHZvaWQpOwox NDQ3NDogCjE0NDc0OiB2b2lkIHJjdV9hbGxfcXModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBpbnQgcmN1dHJlZV9wcmVwYXJlX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0 NzQ6IGludCByY3V0cmVlX29ubGluZV9jcHUodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiBpbnQg cmN1dHJlZV9vZmZsaW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGludCByY3V0cmVl X2RlYWRfY3B1KHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogaW50IHJjdXRyZWVfZHlpbmdfY3B1 KHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogdm9pZCByY3VfY3B1X3N0YXJ0aW5nKHVuc2lnbmVk IGludCBjcHUpOwoxNDQ3NDogIyAxNzIgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIiAyCjE0 NDc0OiAjIDE5MiAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGluaXRf cmN1X2hlYWQoc3RydWN0IGNhbGxiYWNrX2hlYWQgKmhlYWQpIHsgfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXN0 cm95X3JjdV9oZWFkKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKSB7IH0KMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg aW5pdF9yY3VfaGVhZF9vbl9zdGFjayhzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCkgeyB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGRlc3Ryb3lfcmN1X2hlYWRfb25fc3RhY2soc3RydWN0IGNhbGxiYWNrX2hlYWQg KmhlYWQpIHsgfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgcmN1X2xvY2tkZXBfY3VycmVudF9jcHVfb25saW5lKHZvaWQpIHsgcmV0dXJuIHRydWU7 IH0KMTQ0NzQ6ICMgMjMxICIuL2luY2x1ZGUvbGludXgvcmN1cGRhdGUuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBy Y3VfcmVhZF9sb2NrX2hlbGQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gMTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJjdV9yZWFkX2xvY2tfYmhfaGVsZCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmN1X3JlYWRf bG9ja19zY2hlZF9oZWxkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICEwOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgcmN1X3JlYWRfbG9ja19hbnlfaGVsZCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAhMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTk3ICIuL2luY2x1ZGUvbGlu dXgvcmN1cGRhdGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCByY3VfcmVhZF9sb2NrKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgX19yY3VfcmVhZF9sb2Nr KCk7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRv IHsgfSB3aGlsZSAoMCkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjQ5ICIuL2luY2x1ZGUvbGludXgvcmN1 cGRhdGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3JlYWRfdW5sb2NrKHZvaWQpCjE0NDc0OiB7CjE0NDc0 OiAgZG8geyB9IHdoaWxlICgwKQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6ICBfX3JjdV9yZWFk X3VubG9jaygpOwoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDY3 MCAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9yZWFkX2xvY2tf Ymgodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBsb2NhbF9iaF9kaXNhYmxlKCk7CjE0NDc0OiAgKHZv aWQpMDsKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCkK MTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgcmN1X3JlYWRfdW5sb2NrX2JoKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAg ZG8geyB9IHdoaWxlICgwKQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICAo dm9pZCkwOwoxNDQ3NDogIGxvY2FsX2JoX2VuYWJsZSgpOwoxNDQ3NDogfQoxNDQ3NDogIyA3MDUg Ii4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3VfcmVhZF9sb2NrX3Nj aGVkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0 OiAgZG8geyB9IHdoaWxlICgwKQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9yZWFkX2xv Y2tfc2NoZWRfbm90cmFjZSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3Jl YWRfdW5sb2NrX3NjaGVkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKQox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDog IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgcmN1X3JlYWRfdW5sb2NrX3NjaGVkX25vdHJhY2Uodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAo dm9pZCkwOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0 NDc0OiB9CjE0NDc0OiAjIDg3MCAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHJjdV9oZWFkX2luaXQoc3RydWN0IGNhbGxiYWNrX2hlYWQgKnJocCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByaHAtPmZ1bmMgPSAocmN1X2NhbGxiYWNrX3QpfjBMOwoxNDQ3NDogfQoxNDQ3NDogIyA4 ODggIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAoxNDQ3NDogcmN1X2hl YWRfYWZ0ZXJfY2FsbF9yY3Uoc3RydWN0IGNhbGxiYWNrX2hlYWQgKnJocCwgcmN1X2NhbGxiYWNr X3QgZikKMTQ0NzQ6IHsKMTQ0NzQ6ICByY3VfY2FsbGJhY2tfdCBmdW5jID0gKHsgdW5pb24geyB0 eXBlb2YocmhwLT5mdW5jKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFk X29uY2Vfc2l6ZSgmKHJocC0+ZnVuYyksIF9fdS5fX2MsIHNpemVvZihyaHAtPmZ1bmMpKTsgZWxz ZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihyaHAtPmZ1bmMpLCBfX3UuX19jLCBzaXplb2Yo cmhwLT5mdW5jKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiAKMTQ0 NzQ6ICBpZiAoZnVuYyA9PSBmKQoxNDQ3NDogICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6ICAoeyBpbnQg X19yZXRfd2Fybl9vbiA9ICEhKGZ1bmMgIT0gKHJjdV9jYWxsYmFja190KX4wTCk7IGlmIChfX2J1 aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGlu ZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBf X2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1 Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVn X2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0 LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5w b3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIiksICJpIiAoODk1 KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0 cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0 IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxu XHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDgpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1 aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0NDc0OiAgcmV0dXJuIGZh bHNlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcmN1X2V4cGVk aXRlZDsKMTQ0NzQ6IGV4dGVybiBpbnQgcmN1X25vcm1hbDsKMTQ0NzQ6ICMgMjMgIi4vaW5jbHVk ZS9saW51eC9yYnRyZWUuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcmJfbm9kZSB7CjE0NDc0 OiAgdW5zaWduZWQgbG9uZyBfX3JiX3BhcmVudF9jb2xvcjsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9k ZSAqcmJfcmlnaHQ7CjE0NDc0OiAgc3RydWN0IHJiX25vZGUgKnJiX2xlZnQ7CjE0NDc0OiB9IF9f YXR0cmlidXRlX18oKGFsaWduZWQoc2l6ZW9mKGxvbmcpKSkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCByYl9yb290IHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSAqcmJfbm9kZTsKMTQ0 NzQ6IH07CjE0NDc0OiAjIDQ5ICIuL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiCjE0NDc0OiBleHRl cm4gdm9pZCByYl9pbnNlcnRfY29sb3Ioc3RydWN0IHJiX25vZGUgKiwgc3RydWN0IHJiX3Jvb3Qg Kik7CjE0NDc0OiBleHRlcm4gdm9pZCByYl9lcmFzZShzdHJ1Y3QgcmJfbm9kZSAqLCBzdHJ1Y3Qg cmJfcm9vdCAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg cmJfbm9kZSAqcmJfbmV4dChjb25zdCBzdHJ1Y3QgcmJfbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiBz dHJ1Y3QgcmJfbm9kZSAqcmJfcHJldihjb25zdCBzdHJ1Y3QgcmJfbm9kZSAqKTsKMTQ0NzQ6IGV4 dGVybiBzdHJ1Y3QgcmJfbm9kZSAqcmJfZmlyc3QoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKik7CjE0 NDc0OiBleHRlcm4gc3RydWN0IHJiX25vZGUgKnJiX2xhc3QoY29uc3Qgc3RydWN0IHJiX3Jvb3Qg Kik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCByYl9ub2RlICpyYl9maXJz dF9wb3N0b3JkZXIoY29uc3Qgc3RydWN0IHJiX3Jvb3QgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0 IHJiX25vZGUgKnJiX25leHRfcG9zdG9yZGVyKGNvbnN0IHN0cnVjdCByYl9ub2RlICopOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHJiX3JlcGxhY2Vfbm9kZShzdHJ1Y3QgcmJf bm9kZSAqdmljdGltLCBzdHJ1Y3QgcmJfbm9kZSAqbmV3LAoxNDQ3NDogICAgICAgIHN0cnVjdCBy Yl9yb290ICpyb290KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHJiX3JlcGxhY2Vfbm9kZV9yY3Uoc3Ry dWN0IHJiX25vZGUgKnZpY3RpbSwgc3RydWN0IHJiX25vZGUgKm5ldywKMTQ0NzQ6ICAgICBzdHJ1 Y3QgcmJfcm9vdCAqcm9vdCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmJfbGlua19ub2RlKHN0cnVj dCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LAoxNDQ3NDogICAgIHN0cnVj dCByYl9ub2RlICoqcmJfbGluaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBub2RlLT5fX3JiX3BhcmVudF9j b2xvciA9ICh1bnNpZ25lZCBsb25nKXBhcmVudDsKMTQ0NzQ6ICBub2RlLT5yYl9sZWZ0ID0gbm9k ZS0+cmJfcmlnaHQgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IAoxNDQ3NDogICpyYl9saW5rID0gbm9k ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByYl9saW5rX25vZGVfcmN1KHN0cnVjdCBy Yl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LAoxNDQ3NDogICAgICAgICBzdHJ1 Y3QgcmJfbm9kZSAqKnJiX2xpbmspCjE0NDc0OiB7CjE0NDc0OiAgbm9kZS0+X19yYl9wYXJlbnRf Y29sb3IgPSAodW5zaWduZWQgbG9uZylwYXJlbnQ7CjE0NDc0OiAgbm9kZS0+cmJfbGVmdCA9IG5v ZGUtPnJiX3JpZ2h0ID0gKCh2b2lkICopMCk7CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7IHVpbnRwdHJf dCBfcl9hX3BfX3YgPSAodWludHB0cl90KShub2RlKTsgOyBpZiAoX19idWlsdGluX2NvbnN0YW50 X3Aobm9kZSkgJiYgKF9yX2FfcF9fdikgPT0gKHVpbnRwdHJfdCkoKHZvaWQgKikwKSkgKHsgdW5p b24geyB0eXBlb2YoKCpyYl9saW5rKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9f dmFsID0gKCB0eXBlb2YoKCpyYl9saW5rKSkpICgodHlwZW9mKCpyYl9saW5rKSkoX3JfYV9wX192 KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigoKnJiX2xpbmspKSwgX191Ll9fYywgc2l6ZW9mKCgq cmJfbGluaykpKTsgX191Ll9fdmFsOyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19j b21waWxldGltZV9hc3NlcnRfODQodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVk IG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICgh KChzaXplb2YoKiYqcmJfbGluaykgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJipyYl9saW5r KSA9PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJipyYl9saW5rKSA9PSBzaXplb2YoaW50KSB8 fCBzaXplb2YoKiYqcmJfbGluaykgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNz ZXJ0Xzg0KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9y eSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJipyYl9saW5rKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0g X191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJipyYl9saW5rKSkgKCh0eXBlb2YoKigodHlwZW9m KCpyYl9saW5rKSlfcl9hX3BfX3YpKSAqKSgodHlwZW9mKCpyYl9saW5rKSlfcl9hX3BfX3YpKSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKnJiX2xpbmspLCBfX3UuX19jLCBzaXplb2YoKiYqcmJf bGluaykpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiB9 CjE0NDc0OiAjIDEyNSAiLi9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIgoxNDQ3NDogc3RydWN0IHJi X3Jvb3RfY2FjaGVkIHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfcm9vdCByYl9yb290OwoxNDQ3NDogIHN0 cnVjdCByYl9ub2RlICpyYl9sZWZ0bW9zdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJiX2luc2VydF9jb2xvcl9j YWNoZWQoc3RydWN0IHJiX25vZGUgKm5vZGUsCjE0NDc0OiAgICAgICAgc3RydWN0IHJiX3Jvb3Rf Y2FjaGVkICpyb290LAoxNDQ3NDogICAgICAgIGJvb2wgbGVmdG1vc3QpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKGxlZnRtb3N0KQoxNDQ3NDogICByb290LT5yYl9sZWZ0bW9zdCA9IG5vZGU7CjE0NDc0 OiAgcmJfaW5zZXJ0X2NvbG9yKG5vZGUsICZyb290LT5yYl9yb290KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCByYl9lcmFzZV9jYWNoZWQoc3RydWN0IHJiX25vZGUgKm5vZGUsCjE0NDc0 OiAgICAgICAgc3RydWN0IHJiX3Jvb3RfY2FjaGVkICpyb290KQoxNDQ3NDogewoxNDQ3NDogIGlm IChyb290LT5yYl9sZWZ0bW9zdCA9PSBub2RlKQoxNDQ3NDogICByb290LT5yYl9sZWZ0bW9zdCA9 IHJiX25leHQobm9kZSk7CjE0NDc0OiAgcmJfZXJhc2Uobm9kZSwgJnJvb3QtPnJiX3Jvb3QpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJiX3JlcGxhY2Vfbm9kZV9jYWNoZWQoc3RydWN0 IHJiX25vZGUgKnZpY3RpbSwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgcmJfbm9kZSAqbmV3LAoxNDQ3 NDogICAgICAgIHN0cnVjdCByYl9yb290X2NhY2hlZCAqcm9vdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBp ZiAocm9vdC0+cmJfbGVmdG1vc3QgPT0gdmljdGltKQoxNDQ3NDogICByb290LT5yYl9sZWZ0bW9z dCA9IG5ldzsKMTQ0NzQ6ICByYl9yZXBsYWNlX25vZGUodmljdGltLCBuZXcsICZyb290LT5yYl9y b290KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTEgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAy CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yd3NlbS5oIiAxCjE0NDc0OiAjIDIwICIuL2lu Y2x1ZGUvbGludXgvcndzZW0uaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L29zcV9sb2Nr LmgiIDEKMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L29zcV9sb2NrLmgiCjE0NDc0OiBzdHJ1 Y3Qgb3B0aW1pc3RpY19zcGluX25vZGUgewoxNDQ3NDogIHN0cnVjdCBvcHRpbWlzdGljX3NwaW5f bm9kZSAqbmV4dCwgKnByZXY7CjE0NDc0OiAgaW50IGxvY2tlZDsKMTQ0NzQ6ICBpbnQgY3B1Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG9wdGltaXN0aWNfc3Bpbl9xdWV1ZSB7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfdCB0YWlsOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgb3NxX2xvY2tfaW5pdChzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVlICpsb2Nr KQoxNDQ3NDogewoxNDQ3NDogIGF0b21pY19zZXQoJmxvY2stPnRhaWwsICgwKSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBib29sIG9zcV9sb2NrKHN0cnVjdCBvcHRpbWlzdGljX3Nw aW5fcXVldWUgKmxvY2spOwoxNDQ3NDogZXh0ZXJuIHZvaWQgb3NxX3VubG9jayhzdHJ1Y3Qgb3B0 aW1pc3RpY19zcGluX3F1ZXVlICpsb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBvc3FfaXNfbG9j a2VkKHN0cnVjdCBvcHRpbWlzdGljX3NwaW5fcXVldWUgKmxvY2spCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGF0b21pY19yZWFkKCZsb2NrLT50YWlsKSAhPSAoMCk7CjE0NDc0OiB9CjE0NDc0OiAj IDIxICIuL2luY2x1ZGUvbGludXgvcndzZW0uaCIgMgoxNDQ3NDogIyAzNSAiLi9pbmNsdWRlL2xp bnV4L3J3c2VtLmgiCjE0NDc0OiBzdHJ1Y3Qgcndfc2VtYXBob3JlIHsKMTQ0NzQ6ICBhdG9taWNf bG9uZ190IGNvdW50OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBhdG9taWNfbG9uZ190IG93bmVyOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IG9wdGltaXN0 aWNfc3Bpbl9xdWV1ZSBvc3E7CjE0NDc0OiAKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCB3YWl0X2xv Y2s7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCB3YWl0X2xpc3Q7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogIyA2MyAiLi9p bmNsdWRlL2xpbnV4L3J3c2VtLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcndzZW1faXNfbG9ja2VkKHN0cnVjdCBy d19zZW1hcGhvcmUgKnNlbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRvbWljX2xvbmdfcmVh ZCgmc2VtLT5jb3VudCkgIT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTAzICIuL2luY2x1ZGUvbGlu dXgvcndzZW0uaCIKMTQ0NzQ6IGV4dGVybiB2b2lkIF9faW5pdF9yd3NlbShzdHJ1Y3Qgcndfc2Vt YXBob3JlICpzZW0sIGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0OiAgICAgc3RydWN0IGxvY2tfY2xh c3Nfa2V5ICprZXkpOwoxNDQ3NDogIyAxMTkgIi4vaW5jbHVkZS9saW51eC9yd3NlbS5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IHJ3c2VtX2lzX2NvbnRlbmRlZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuICFsaXN0X2VtcHR5KCZzZW0tPndhaXRfbGlzdCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRvd25f cmVhZChzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJp YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZG93bl9yZWFkX2tpbGxhYmxlKHN0cnVj dCByd19zZW1hcGhvcmUgKnNlbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBpbnQgZG93bl9yZWFkX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2Vt KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZG93 bl93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZG93bl93cml0ZV9raWxsYWJsZShz dHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IGRvd25fd3JpdGVfdHJ5bG9jayhzdHJ1Y3Qgcndfc2VtYXBob3Jl ICpzZW0pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCB1cF9yZWFkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHVwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhv cmUgKnNlbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIGRvd25ncmFkZV93cml0ZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogIyAx MiAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xp bnV4L2NvbXBsZXRpb24uaCIgMQoxNDQ3NDogIyAyNiAiLi9pbmNsdWRlL2xpbnV4L2NvbXBsZXRp b24uaCIKMTQ0NzQ6IHN0cnVjdCBjb21wbGV0aW9uIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZG9u ZTsKMTQ0NzQ6ICB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY29tcGxldGVfYWNxdWlyZShzdHJ1Y3QgY29tcGxldGlv biAqeCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY29tcGxldGVfcmVsZWFzZShzdHJ1Y3QgY29tcGxldGlvbiAq eCkge30KMTQ0NzQ6ICMgODUgIi4vaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9faW5pdF9jb21wbGV0aW9uKHN0cnVjdCBjb21wbGV0aW9uICp4KQoxNDQ3NDogewoxNDQ3 NDogIHgtPmRvbmUgPSAwOwoxNDQ3NDogIGRvIHsgc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tl eSBfX2tleTsgX19pbml0X3dhaXRxdWV1ZV9oZWFkKCgmeC0+d2FpdCksICImeC0+d2FpdCIsICZf X2tleSk7IH0gd2hpbGUgKDApOwoxNDQ3NDogfQoxNDQ3NDogIyA5OCAiLi9pbmNsdWRlL2xpbnV4 L2NvbXBsZXRpb24uaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVpbml0X2NvbXBsZXRpb24oc3RydWN0IGNvbXBs ZXRpb24gKngpCjE0NDc0OiB7CjE0NDc0OiAgeC0+ZG9uZSA9IDA7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiB2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24g Kik7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKHN0cnVjdCBjb21w bGV0aW9uICopOwoxNDQ3NDogZXh0ZXJuIGludCB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVw dGlibGUoc3RydWN0IGNvbXBsZXRpb24gKngpOwoxNDQ3NDogZXh0ZXJuIGludCB3YWl0X2Zvcl9j b21wbGV0aW9uX2tpbGxhYmxlKHN0cnVjdCBjb21wbGV0aW9uICp4KTsKMTQ0NzQ6IGV4dGVybiB1 bnNpZ25lZCBsb25nIHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChzdHJ1Y3QgY29tcGxldGlv biAqeCwKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCk7CjE0NDc0OiBleHRl cm4gdW5zaWduZWQgbG9uZyB3YWl0X2Zvcl9jb21wbGV0aW9uX2lvX3RpbWVvdXQoc3RydWN0IGNv bXBsZXRpb24gKngsCjE0NDc0OiAgICAgICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKMTQ0 NzQ6IGV4dGVybiBsb25nIHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0 KAoxNDQ3NDogIHN0cnVjdCBjb21wbGV0aW9uICp4LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwox NDQ3NDogZXh0ZXJuIGxvbmcgd2FpdF9mb3JfY29tcGxldGlvbl9raWxsYWJsZV90aW1lb3V0KAox NDQ3NDogIHN0cnVjdCBjb21wbGV0aW9uICp4LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwoxNDQ3 NDogZXh0ZXJuIGJvb2wgdHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24g KngpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgY29tcGxldGlvbl9kb25lKHN0cnVjdCBjb21wbGV0aW9u ICp4KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRp b24gKik7CjE0NDc0OiBleHRlcm4gdm9pZCBjb21wbGV0ZV9hbGwoc3RydWN0IGNvbXBsZXRpb24g Kik7CjE0NDc0OiAjIDEzICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIgMgoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC91cHJvYmVzLmgiIDEKMTQ0NzQ6ICMgMTkgIi4vaW5j bHVkZS9saW51eC91cHJvYmVzLmgiCjE0NDc0OiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CjE0NDc0 OiBzdHJ1Y3QgbW1fc3RydWN0OwoxNDQ3NDogc3RydWN0IGlub2RlOwoxNDQ3NDogc3RydWN0IG5v dGlmaWVyX2Jsb2NrOwoxNDQ3NDogc3RydWN0IHBhZ2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHVwcm9iZV9maWx0ZXJfY3R4IHsK MTQ0NzQ6ICBVUFJPQkVfRklMVEVSX1JFR0lTVEVSLAoxNDQ3NDogIFVQUk9CRV9GSUxURVJfVU5S RUdJU1RFUiwKMTQ0NzQ6ICBVUFJPQkVfRklMVEVSX01NQVAsCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgdXByb2JlX2NvbnN1bWVyIHsKMTQ0NzQ6ICBpbnQgKCpoYW5kbGVyKShzdHJ1 Y3QgdXByb2JlX2NvbnN1bWVyICpzZWxmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CjE0NDc0OiAg aW50ICgqcmV0X2hhbmRsZXIpKHN0cnVjdCB1cHJvYmVfY29uc3VtZXIgKnNlbGYsCjE0NDc0OiAg ICAgdW5zaWduZWQgbG9uZyBmdW5jLAoxNDQ3NDogICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsK MTQ0NzQ6ICBib29sICgqZmlsdGVyKShzdHJ1Y3QgdXByb2JlX2NvbnN1bWVyICpzZWxmLAoxNDQ3 NDogICAgIGVudW0gdXByb2JlX2ZpbHRlcl9jdHggY3R4LAoxNDQ3NDogICAgIHN0cnVjdCBtbV9z dHJ1Y3QgKm1tKTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB1cHJvYmVfY29uc3VtZXIgKm5leHQ7 CjE0NDc0OiB9OwoxNDQ3NDogIyAxNDIgIi4vaW5jbHVkZS9saW51eC91cHJvYmVzLmgiCjE0NDc0 OiBzdHJ1Y3QgdXByb2Jlc19zdGF0ZSB7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVw cm9iZXNfaW5pdCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50CjE0NDc0OiB1cHJvYmVfcmVnaXN0ZXIoc3RydWN0IGlub2RlICppbm9kZSwg bG9mZl90IG9mZnNldCwgc3RydWN0IHVwcm9iZV9jb25zdW1lciAqdWMpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIC0zODsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB1cHJvYmVfcmVnaXN0ZXJfcmVmY3Ry KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCByZWZfY3RyX29mZnNl dCwgc3RydWN0IHVwcm9iZV9jb25zdW1lciAqdWMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIC0z ODsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogdXByb2JlX2FwcGx5KHN0cnVjdCBpbm9kZSAq aW5vZGUsIGxvZmZfdCBvZmZzZXQsIHN0cnVjdCB1cHJvYmVfY29uc3VtZXIgKnVjLCBib29sIGFk ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gLTM4OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3 NDogdXByb2JlX3VucmVnaXN0ZXIoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwg c3RydWN0IHVwcm9iZV9jb25zdW1lciAqdWMpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg dXByb2JlX21tYXAoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiB1cHJvYmVfbXVubWFwKHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25n IGVuZCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdXByb2JlX3N0YXJ0X2R1cF9tbWFw KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVwcm9iZV9lbmRfZHVwX21tYXAo dm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKMTQ0NzQ6IHVwcm9iZV9kdXBfbW1h cChzdHJ1Y3QgbW1fc3RydWN0ICpvbGRtbSwgc3RydWN0IG1tX3N0cnVjdCAqbmV3bW0pCjE0NDc0 OiB7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVwcm9iZV9ub3RpZnlfcmVzdW1lKHN0cnVjdCBwdF9y ZWdzICpyZWdzKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1cHJvYmVfZGVueV9zaWdu YWwodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiB9CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHVwcm9iZV9mcmVlX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkKMTQ0NzQ6IHsKMTQ0 NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgdXByb2JlX2NvcHlfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnQsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVw cm9iZV9jbGVhcl9zdGF0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMTUgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVk ZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgi IDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS9saW51eC9rdGltZS5oIiAxCjE0NDc0OiAjIDI0ICIuL2luY2x1ZGUvbGludXgva3Rp bWUuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQoxNDQ3NDogIyAxMCAi Li9pbmNsdWRlL2xpbnV4L3RpbWUuaCIKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgdGltZXpvbmUgc3lz X3R6OwoxNDQ3NDogCjE0NDc0OiBpbnQgZ2V0X3RpbWVzcGVjNjQoc3RydWN0IHRpbWVzcGVjNjQg KnRzLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgX19rZXJuZWxfdGltZXNwZWMgKnV0cyk7CjE0NDc0 OiBpbnQgcHV0X3RpbWVzcGVjNjQoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzLAoxNDQ3NDog ICBzdHJ1Y3QgX19rZXJuZWxfdGltZXNwZWMgKnV0cyk7CjE0NDc0OiBpbnQgZ2V0X2l0aW1lcnNw ZWM2NChzdHJ1Y3QgaXRpbWVyc3BlYzY0ICppdCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBfX2tl cm5lbF9pdGltZXJzcGVjICp1aXQpOwoxNDQ3NDogaW50IHB1dF9pdGltZXJzcGVjNjQoY29uc3Qg c3RydWN0IGl0aW1lcnNwZWM2NCAqaXQsCjE0NDc0OiAgICBzdHJ1Y3QgX19rZXJuZWxfaXRpbWVy c3BlYyAqdWl0KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHRpbWU2NF90IG1rdGltZTY0KGNvbnN0 IHVuc2lnbmVkIGludCB5ZWFyLCBjb25zdCB1bnNpZ25lZCBpbnQgbW9uLAoxNDQ3NDogICAgY29u c3QgdW5zaWduZWQgaW50IGRheSwgY29uc3QgdW5zaWduZWQgaW50IGhvdXIsCjE0NDc0OiAgICBj b25zdCB1bnNpZ25lZCBpbnQgbWluLCBjb25zdCB1bnNpZ25lZCBpbnQgc2VjKTsKMTQ0NzQ6ICMg MzkgIi4vaW5jbHVkZS9saW51eC90aW1lLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBjbGVhcl9pdGlt ZXIodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBs b25nIGRvX3V0aW1lcyhpbnQgZGZkLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IHRpbWVz cGVjNjQgKnRpbWVzLCBpbnQgZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0bSB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBpbnQgdG1fc2VjOwoxNDQ3NDogCjE0NDc0OiAgaW50IHRtX21pbjsKMTQ0NzQ6 IAoxNDQ3NDogIGludCB0bV9ob3VyOwoxNDQ3NDogCjE0NDc0OiAgaW50IHRtX21kYXk7CjE0NDc0 OiAKMTQ0NzQ6ICBpbnQgdG1fbW9uOwoxNDQ3NDogCjE0NDc0OiAgbG9uZyB0bV95ZWFyOwoxNDQ3 NDogCjE0NDc0OiAgaW50IHRtX3dkYXk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgdG1feWRheTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgdGltZTY0X3RvX3RtKHRpbWU2NF90IHRvdGFsc2Vj cywgaW50IG9mZnNldCwgc3RydWN0IHRtICpyZXN1bHQpOwoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS9saW51eC90aW1lMzIuaCIgMQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L3Rp bWUzMi5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvdGltZXguaCIgMQoxNDQ3NDogIyA1 NiAiLi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xp bnV4L3RpbWV4LmgiIDEKMTQ0NzQ6ICMgNTYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWV4Lmgi CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC90aW1lLmgiIDEKMTQ0NzQ6ICMgNTcgIi4vaW5j bHVkZS91YXBpL2xpbnV4L3RpbWV4LmgiIDIKMTQ0NzQ6ICMgOTcgIi4vaW5jbHVkZS91YXBpL2xp bnV4L3RpbWV4LmgiCjE0NDc0OiBzdHJ1Y3QgX19rZXJuZWxfdGltZXhfdGltZXZhbCB7CjE0NDc0 OiAgX19rZXJuZWxfdGltZTY0X3QgdHZfc2VjOwoxNDQ3NDogIGxvbmcgbG9uZyB0dl91c2VjOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF9fa2VybmVsX3RpbWV4IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgbW9kZXM7CjE0NDc0OiAgaW50IDozMjsKMTQ0NzQ6ICBsb25nIGxvbmcgb2Zm c2V0OwoxNDQ3NDogIGxvbmcgbG9uZyBmcmVxOwoxNDQ3NDogIGxvbmcgbG9uZyBtYXhlcnJvcjsK MTQ0NzQ6ICBsb25nIGxvbmcgZXN0ZXJyb3I7CjE0NDc0OiAgaW50IHN0YXR1czsKMTQ0NzQ6ICBp bnQgOjMyOwoxNDQ3NDogIGxvbmcgbG9uZyBjb25zdGFudDsKMTQ0NzQ6ICBsb25nIGxvbmcgcHJl Y2lzaW9uOwoxNDQ3NDogIGxvbmcgbG9uZyB0b2xlcmFuY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCBfX2tlcm5lbF90aW1leF90aW1ldmFsIHRpbWU7CjE0NDc0OiAgbG9uZyBsb25n IHRpY2s7CjE0NDc0OiAKMTQ0NzQ6ICBsb25nIGxvbmcgcHBzZnJlcTsKMTQ0NzQ6ICBsb25nIGxv bmcgaml0dGVyOwoxNDQ3NDogIGludCBzaGlmdDsKMTQ0NzQ6ICBpbnQgOjMyOwoxNDQ3NDogIGxv bmcgbG9uZyBzdGFiaWw7CjE0NDc0OiAgbG9uZyBsb25nIGppdGNudDsKMTQ0NzQ6ICBsb25nIGxv bmcgY2FsY250OwoxNDQ3NDogIGxvbmcgbG9uZyBlcnJjbnQ7CjE0NDc0OiAgbG9uZyBsb25nIHN0 YmNudDsKMTQ0NzQ6IAoxNDQ3NDogIGludCB0YWk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgOjMyOyBp bnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwoxNDQ3NDogIGludCA6MzI7IGludCA6MzI7IGludCA6 MzI7IGludCA6MzI7CjE0NDc0OiAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKMTQ0NzQ6IH07 CjE0NDc0OiAjIDU3ICIuL2luY2x1ZGUvbGludXgvdGltZXguaCIgMgoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFw aS9saW51eC9wYXJhbS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9wYXJhbS5oIiAxCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9wYXJhbS5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMv cGFyYW0uaCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGFyYW0uaCIgMgox NDQ3NDogIyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3BhcmFtLmgi IDIKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvcGFyYW0uaCIgMgoxNDQ3NDogIyA2 NCAiLi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3RpbWV4LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmgiIDEKMTQ0 NzQ6ICMgMTYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmgiCjE0NDc0OiB0eXBlZGVmIHVu c2lnbmVkIGxvbmcgbG9uZyBjeWNsZXNfdDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVk IGludCBjcHVfa2h6OwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCB0c2Nfa2h6OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBkaXNhYmxlX1RTQyh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY3lj bGVzX3QgZ2V0X2N5Y2xlcyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gcmR0c2MoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHN0cnVjdCBzeXN0ZW1fY291bnRlcnZhbF90IGNvbnZlcnRfYXJ0X3RvX3Rz Yyh1NjQgYXJ0KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgc3lzdGVtX2NvdW50ZXJ2YWxfdCBjb252 ZXJ0X2FydF9uc190b190c2ModTY0IGFydF9ucyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lk IHRzY19lYXJseV9pbml0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgdHNjX2luaXQodm9pZCk7 CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBjYWxpYnJhdGVfZGVsYXlfaXNfa25vd24odm9p ZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBtYXJrX3RzY191bnN0YWJsZShjaGFyICpyZWFzb24pOwox NDQ3NDogZXh0ZXJuIGludCB1bnN5bmNocm9uaXplZF90c2Modm9pZCk7CjE0NDc0OiBleHRlcm4g aW50IGNoZWNrX3RzY191bnN0YWJsZSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIG1hcmtfdHNj X2FzeW5jX3Jlc2V0cyhjaGFyICpyZWFzb24pOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg bmF0aXZlX2NhbGlicmF0ZV9jcHVfZWFybHkodm9pZCk7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQg bG9uZyBuYXRpdmVfY2FsaWJyYXRlX3RzYyh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBs b25nIGxvbmcgbmF0aXZlX3NjaGVkX2Nsb2NrX2Zyb21fdHNjKHU2NCB0c2MpOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IHRzY19jbG9ja3NvdXJjZV9yZWxpYWJsZTsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGJvb2wgdHNjX2FzeW5jX3Jlc2V0czsKMTQ0NzQ6ICMgNTkgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vdHNjLmgiCjE0NDc0OiBleHRlcm4gYm9vbCB0c2Nfc3RvcmVfYW5kX2NoZWNrX3Rz Y19hZGp1c3QoYm9vbCBib290Y3B1KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRzY192ZXJpZnlfdHNj X2FkanVzdChib29sIHJlc3VtZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBjaGVja190c2Nfc3luY19z b3VyY2UoaW50IGNwdSk7CjE0NDc0OiBleHRlcm4gdm9pZCBjaGVja190c2Nfc3luY190YXJnZXQo dm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbm90c2Nfc2V0dXAoY2hhciAqKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIHRzY19zYXZlX3NjaGVkX2Nsb2NrX3N0YXRlKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgdHNjX3Jlc3RvcmVfc2NoZWRfY2xvY2tfc3RhdGUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHVu c2lnbmVkIGxvbmcgY3B1X2toel9mcm9tX21zcih2b2lkKTsKMTQ0NzQ6ICMgNyAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS90aW1leC5oIiAyCjE0NDc0OiAjIDY2ICIuL2luY2x1ZGUvbGludXgvdGlt ZXguaCIgMgoxNDQ3NDogIyAxMzkgIi4vaW5jbHVkZS9saW51eC90aW1leC5oIgoxNDQ3NDogZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgdGlja191c2VjOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg dGlja19uc2VjOwoxNDQ3NDogIyAxNTQgIi4vaW5jbHVkZS9saW51eC90aW1leC5oIgoxNDQ3NDog ZXh0ZXJuIGludCBkb19hZGp0aW1leChzdHJ1Y3QgX19rZXJuZWxfdGltZXggKik7CjE0NDc0OiBl eHRlcm4gaW50IGRvX2Nsb2NrX2FkanRpbWUoY29uc3QgY2xvY2tpZF90IHdoaWNoX2Nsb2NrLCBz dHJ1Y3QgX19rZXJuZWxfdGltZXggKiBrdHgpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBo YXJkcHBzKGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICosIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0 ICopOwoxNDQ3NDogCjE0NDc0OiBpbnQgcmVhZF9jdXJyZW50X3RpbWVyKHVuc2lnbmVkIGxvbmcg KnRpbWVyX3ZhbCk7CjE0NDc0OiB2b2lkIG50cF9ub3RpZnlfY21vc190aW1lcih2b2lkKTsKMTQ0 NzQ6ICMgMTQgIi4vaW5jbHVkZS9saW51eC90aW1lMzIuaCIgMgoxNDQ3NDogCjE0NDc0OiB0eXBl ZGVmIHMzMiBvbGRfdGltZTMyX3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvbGRfdGltZXNwZWMz MiB7CjE0NDc0OiAgb2xkX3RpbWUzMl90IHR2X3NlYzsKMTQ0NzQ6ICBzMzIgdHZfbnNlYzsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvbGRfdGltZXZhbDMyIHsKMTQ0NzQ6ICBvbGRf dGltZTMyX3QgdHZfc2VjOwoxNDQ3NDogIHMzMiB0dl91c2VjOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IG9sZF9pdGltZXJzcGVjMzIgewoxNDQ3NDogIHN0cnVjdCBvbGRfdGltZXNw ZWMzMiBpdF9pbnRlcnZhbDsKMTQ0NzQ6ICBzdHJ1Y3Qgb2xkX3RpbWVzcGVjMzIgaXRfdmFsdWU7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgb2xkX3V0aW1idWYzMiB7CjE0NDc0OiAg b2xkX3RpbWUzMl90IGFjdGltZTsKMTQ0NzQ6ICBvbGRfdGltZTMyX3QgbW9kdGltZTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvbGRfdGltZXgzMiB7CjE0NDc0OiAgdTMyIG1vZGVz OwoxNDQ3NDogIHMzMiBvZmZzZXQ7CjE0NDc0OiAgczMyIGZyZXE7CjE0NDc0OiAgczMyIG1heGVy cm9yOwoxNDQ3NDogIHMzMiBlc3RlcnJvcjsKMTQ0NzQ6ICBzMzIgc3RhdHVzOwoxNDQ3NDogIHMz MiBjb25zdGFudDsKMTQ0NzQ6ICBzMzIgcHJlY2lzaW9uOwoxNDQ3NDogIHMzMiB0b2xlcmFuY2U7 CjE0NDc0OiAgc3RydWN0IG9sZF90aW1ldmFsMzIgdGltZTsKMTQ0NzQ6ICBzMzIgdGljazsKMTQ0 NzQ6ICBzMzIgcHBzZnJlcTsKMTQ0NzQ6ICBzMzIgaml0dGVyOwoxNDQ3NDogIHMzMiBzaGlmdDsK MTQ0NzQ6ICBzMzIgc3RhYmlsOwoxNDQ3NDogIHMzMiBqaXRjbnQ7CjE0NDc0OiAgczMyIGNhbGNu dDsKMTQ0NzQ6ICBzMzIgZXJyY250OwoxNDQ3NDogIHMzMiBzdGJjbnQ7CjE0NDc0OiAgczMyIHRh aTsKMTQ0NzQ6IAoxNDQ3NDogIHMzMjozMjsgczMyOjMyOyBzMzI6MzI7IHMzMjozMjsKMTQ0NzQ6 ICBzMzI6MzI7IHMzMjozMjsgczMyOjMyOyBzMzI6MzI7CjE0NDc0OiAgczMyOjMyOyBzMzI6MzI7 IHMzMjozMjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2V0X29sZF90aW1l c3BlYzMyKHN0cnVjdCB0aW1lc3BlYzY0ICosIGNvbnN0IHZvaWQgKik7CjE0NDc0OiBleHRlcm4g aW50IHB1dF9vbGRfdGltZXNwZWMzMihjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqLCB2b2lkICop OwoxNDQ3NDogZXh0ZXJuIGludCBnZXRfb2xkX2l0aW1lcnNwZWMzMihzdHJ1Y3QgaXRpbWVyc3Bl YzY0ICppdHMsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMzMiAqdWl0cyk7 CjE0NDc0OiBleHRlcm4gaW50IHB1dF9vbGRfaXRpbWVyc3BlYzMyKGNvbnN0IHN0cnVjdCBpdGlt ZXJzcGVjNjQgKml0cywKMTQ0NzQ6ICAgIHN0cnVjdCBvbGRfaXRpbWVyc3BlYzMyICp1aXRzKTsK MTQ0NzQ6IHN0cnVjdCBfX2tlcm5lbF90aW1leDsKMTQ0NzQ6IGludCBnZXRfb2xkX3RpbWV4MzIo c3RydWN0IF9fa2VybmVsX3RpbWV4ICosIGNvbnN0IHN0cnVjdCBvbGRfdGltZXgzMiAqKTsKMTQ0 NzQ6IGludCBwdXRfb2xkX3RpbWV4MzIoc3RydWN0IG9sZF90aW1leDMyICosIGNvbnN0IHN0cnVj dCBfX2tlcm5lbF90aW1leCAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBfX2tlcm5lbF9vbGRfdGlt ZXZhbCBuc190b19rZXJuZWxfb2xkX3RpbWV2YWwoczY0IG5zZWMpOwoxNDQ3NDogIyA3NSAiLi9p bmNsdWRlL2xpbnV4L3RpbWUuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGl0aW1lcnNwZWM2NF92 YWxpZChjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICppdHMpCjE0NDc0OiB7CjE0NDc0OiAgaWYg KCF0aW1lc3BlYzY0X3ZhbGlkKCYoaXRzLT5pdF9pbnRlcnZhbCkpIHx8CjE0NDc0OiAgICF0aW1l c3BlYzY0X3ZhbGlkKCYoaXRzLT5pdF92YWx1ZSkpKQoxNDQ3NDogICByZXR1cm4gZmFsc2U7CjE0 NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTE0ICIuL2luY2x1 ZGUvbGludXgvdGltZS5oIgoxNDQ3NDogc3RydWN0IHRpbWVuc19vZmZzZXQgewoxNDQ3NDogIHM2 NCBzZWM7CjE0NDc0OiAgdTY0IG5zZWM7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNSAiLi9pbmNsdWRl L2xpbnV4L2t0aW1lLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIg MQoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIKMTQ0NzQ6ICMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9wYXJhbS5oIiAxCjE0NDc0OiAjIDEy ICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9nZW5l cmF0ZWQvdGltZWNvbnN0LmgiIDEKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVz LmgiIDIKMTQ0NzQ6ICMgNjAgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCjE0NDc0OiBleHRl cm4gaW50IHJlZ2lzdGVyX3JlZmluZWRfamlmZmllcyhsb25nIGNsb2NrX3RpY2tfcmF0ZSk7CjE0 NDc0OiAjIDgwICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIgoxNDQ3NDogZXh0ZXJuIHU2NCBf X2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSwgX19zZWN0aW9uX18oIi5kYXRh Li5jYWNoZWxpbmVfYWxpZ25lZCIpKSkgamlmZmllc182NDsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25l ZCBsb25nIHZvbGF0aWxlIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpLCBf X3NlY3Rpb25fXygiLmRhdGEuLmNhY2hlbGluZV9hbGlnbmVkIikpKSBqaWZmaWVzOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgZ2V0X2ppZmZpZXNfNjQodm9pZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHU2NClqaWZmaWVzOwoxNDQ3NDogfQoxNDQ3NDogIyAx OTAgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9u ZyBwcmVzZXRfbHBqOwoxNDQ3NDogIyAyOTEgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCjE0 NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IGppZmZpZXNfdG9fbXNlY3MoY29uc3QgdW5zaWduZWQg bG9uZyBqKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgamlmZmllc190b191c2Vjcyhjb25z dCB1bnNpZ25lZCBsb25nIGopOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgamlmZmllc190b19uc2Vjcyhj b25zdCB1bnNpZ25lZCBsb25nIGopCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1NjQpamlmZmll c190b191c2VjcyhqKSAqIDEwMDBMOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdTY0 IGppZmZpZXM2NF90b19uc2Vjcyh1NjQgaik7CjE0NDc0OiBleHRlcm4gdTY0IGppZmZpZXM2NF90 b19tc2Vjcyh1NjQgaik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIF9fbXNl Y3NfdG9famlmZmllcyhjb25zdCB1bnNpZ25lZCBpbnQgbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9tc2Vjc190 b19qaWZmaWVzKGNvbnN0IHVuc2lnbmVkIGludCBtKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAo bSArICgxMDAwTCAvIDI1MCkgLSAxKSAvICgxMDAwTCAvIDI1MCk7CjE0NDc0OiB9CjE0NDc0OiAj IDM2NCAiLi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgdW5zaWduZWQgbG9uZyBtc2Vjc190b19qaWZmaWVzKGNvbnN0IHVu c2lnbmVkIGludCBtKQoxNDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCht KSkgewoxNDQ3NDogICBpZiAoKGludCltIDwgMCkKMTQ0NzQ6ICAgIHJldHVybiAoKCgobG9uZyko fjBVTCA+PiAxKSkgPj4gMSktMSk7CjE0NDc0OiAgIHJldHVybiBfbXNlY3NfdG9famlmZmllcyht KTsKMTQ0NzQ6ICB9IGVsc2UgewoxNDQ3NDogICByZXR1cm4gX19tc2Vjc190b19qaWZmaWVzKG0p OwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcg X191c2Vjc190b19qaWZmaWVzKGNvbnN0IHVuc2lnbmVkIGludCB1KTsKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgbG9uZyBfdXNlY3NfdG9famlmZmllcyhjb25zdCB1bnNpZ25lZCBpbnQgdSkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHUgKyAoMTAwMDAwMEwgLyAyNTApIC0gMSkgLyAoMTAwMDAw MEwgLyAyNTApOwoxNDQ3NDogfQoxNDQ3NDogIyA0MTEgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVz LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxv bmcgdXNlY3NfdG9famlmZmllcyhjb25zdCB1bnNpZ25lZCBpbnQgdSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AodSkpIHsKMTQ0NzQ6ICAgaWYgKHUgPiBqaWZmaWVz X3RvX3VzZWNzKCgoKChsb25nKSh+MFVMID4+IDEpKSA+PiAxKS0xKSkpCjE0NDc0OiAgICByZXR1 cm4gKCgoKGxvbmcpKH4wVUwgPj4gMSkpID4+IDEpLTEpOwoxNDQ3NDogICByZXR1cm4gX3VzZWNz X3RvX2ppZmZpZXModSk7CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgcmV0dXJuIF9fdXNlY3Nf dG9famlmZmllcyh1KTsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1 bnNpZ25lZCBsb25nIHRpbWVzcGVjNjRfdG9famlmZmllcyhjb25zdCBzdHJ1Y3QgdGltZXNwZWM2 NCAqdmFsdWUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgamlmZmllc190b190aW1lc3BlYzY0KGNvbnN0 IHVuc2lnbmVkIGxvbmcgamlmZmllcywKMTQ0NzQ6ICAgICAgIHN0cnVjdCB0aW1lc3BlYzY0ICp2 YWx1ZSk7CjE0NDc0OiBleHRlcm4gY2xvY2tfdCBqaWZmaWVzX3RvX2Nsb2NrX3QodW5zaWduZWQg bG9uZyB4KTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGNsb2NrX3QgamlmZmllc19kZWx0YV90b19jbG9ja190KGxvbmcgZGVs dGEpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGppZmZpZXNfdG9fY2xvY2tfdChfX2J1aWx0aW5f Y2hvb3NlX2V4cHIoKCghIShzaXplb2YoKHR5cGVvZigwTCkgKikxID09ICh0eXBlb2YoZGVsdGEp ICopMSkpKSAmJiAoKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcp KDBMKSAqIDBsKSkgOiAoaW50ICopOCkpKSAmJiAoc2l6ZW9mKGludCkgPT0gc2l6ZW9mKCooOCA/ ICgodm9pZCAqKSgobG9uZykoZGVsdGEpICogMGwpKSA6IChpbnQgKik4KSkpKSksICgoMEwpID4g KGRlbHRhKSA/ICgwTCkgOiAoZGVsdGEpKSwgKHsgdHlwZW9mKDBMKSBfX1VOSVFVRV9JRF9fX3g5 ID0gKDBMKTsgdHlwZW9mKGRlbHRhKSBfX1VOSVFVRV9JRF9fX3kxMCA9IChkZWx0YSk7ICgoX19V TklRVUVfSURfX194OSkgPiAoX19VTklRVUVfSURfX195MTApID8gKF9fVU5JUVVFX0lEX19feDkp IDogKF9fVU5JUVVFX0lEX19feTEwKSk7IH0pKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVu c2lnbmVkIGludCBqaWZmaWVzX2RlbHRhX3RvX21zZWNzKGxvbmcgZGVsdGEpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGppZmZpZXNfdG9fbXNlY3MoX19idWlsdGluX2Nob29zZV9leHByKCgoISEo c2l6ZW9mKCh0eXBlb2YoMEwpICopMSA9PSAodHlwZW9mKGRlbHRhKSAqKTEpKSkgJiYgKChzaXpl b2YoaW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgwTCkgKiAwbCkpIDogKGlu dCAqKTgpKSkgJiYgKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcp KGRlbHRhKSAqIDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKDBMKSA+IChkZWx0YSkgPyAoMEwpIDog KGRlbHRhKSksICh7IHR5cGVvZigwTCkgX19VTklRVUVfSURfX194MTEgPSAoMEwpOyB0eXBlb2Yo ZGVsdGEpIF9fVU5JUVVFX0lEX19feTEyID0gKGRlbHRhKTsgKChfX1VOSVFVRV9JRF9fX3gxMSkg PiAoX19VTklRVUVfSURfX195MTIpID8gKF9fVU5JUVVFX0lEX19feDExKSA6IChfX1VOSVFVRV9J RF9fX3kxMikpOyB9KSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdW5zaWduZWQg bG9uZyBjbG9ja190X3RvX2ppZmZpZXModW5zaWduZWQgbG9uZyB4KTsKMTQ0NzQ6IGV4dGVybiB1 NjQgamlmZmllc182NF90b19jbG9ja190KHU2NCB4KTsKMTQ0NzQ6IGV4dGVybiB1NjQgbnNlY190 b19jbG9ja190KHU2NCB4KTsKMTQ0NzQ6IGV4dGVybiB1NjQgbnNlY3NfdG9famlmZmllczY0KHU2 NCBuKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIG5zZWNzX3RvX2ppZmZpZXModTY0IG4p OwoxNDQ3NDogIyAyNiAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiIDIKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB0eXBlZGVmIHM2NCBrdGltZV90OwoxNDQ3NDogIyAzNyAiLi9pbmNsdWRlL2xpbnV4 L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0aW1lX3NldChjb25zdCBzNjQgc2VjcywgY29uc3Qg dW5zaWduZWQgbG9uZyBuc2VjcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4cGVj dCghIShzZWNzID49ICgoKHM2NCl+KCh1NjQpMSA8PCA2MykpIC8gMTAwMDAwMDAwMEwpKSwgMCkp CjE0NDc0OiAgIHJldHVybiAoKHM2NCl+KCh1NjQpMSA8PCA2MykpOwoxNDQ3NDogCjE0NDc0OiAg cmV0dXJuIHNlY3MgKiAxMDAwMDAwMDAwTCArIChzNjQpbnNlY3M7CjE0NDc0OiB9CjE0NDc0OiAj IDcwICIuL2luY2x1ZGUvbGludXgva3RpbWUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgdGltZXNwZWM2NF90 b19rdGltZShzdHJ1Y3QgdGltZXNwZWM2NCB0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3Rp bWVfc2V0KHRzLnR2X3NlYywgdHMudHZfbnNlYyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGt0aW1lX3RvX25zKGNvbnN0IGt0aW1l X3Qga3QpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0OwoxNDQ3NDogfQoxNDQ3NDogIyA5NCAi Li9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQga3RpbWVfY29tcGFyZShjb25zdCBr dGltZV90IGNtcDEsIGNvbnN0IGt0aW1lX3QgY21wMikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoY21w MSA8IGNtcDIpCjE0NDc0OiAgIHJldHVybiAtMTsKMTQ0NzQ6ICBpZiAoY21wMSA+IGNtcDIpCjE0 NDc0OiAgIHJldHVybiAxOwoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogIyAxMTAg Ii4vaW5jbHVkZS9saW51eC9rdGltZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrdGltZV9hZnRlcihjb25zdCBr dGltZV90IGNtcDEsIGNvbnN0IGt0aW1lX3QgY21wMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g a3RpbWVfY29tcGFyZShjbXAxLCBjbXAyKSA+IDA7CjE0NDc0OiB9CjE0NDc0OiAjIDEyMiAiLi9p bmNsdWRlL2xpbnV4L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGt0aW1lX2JlZm9yZShjb25zdCBrdGlt ZV90IGNtcDEsIGNvbnN0IGt0aW1lX3QgY21wMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3Rp bWVfY29tcGFyZShjbXAxLCBjbXAyKSA8IDA7CjE0NDc0OiB9CjE0NDc0OiAjIDE0NyAiLi9pbmNs dWRlL2xpbnV4L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQga3RpbWVfZGl2bnMoY29uc3Qga3RpbWVfdCBr dCwgczY0IGRpdikKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogICh7IGludCBfX3JldF93YXJuX29uID0gISEoZGl2IDwgMCk7IGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGls ZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJs ZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6 YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpm aWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMy IiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9u IiA6IDogImkiICgiaW5jbHVkZS9saW51eC9rdGltZS5oIiksICJpIiAoMTUzKSwgImkiICgoMSA8 PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdo aWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2Fy ZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6 IDogImkiICgxMykpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRf d2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6ICByZXR1cm4ga3QgLyBkaXY7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgczY0IGt0aW1lX3RvX3VzKGNvbnN0IGt0aW1lX3Qga3QpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX2Rpdm5zKGt0LCAxMDAwTCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NCBrdGltZV90b19tcyhjb25zdCBrdGltZV90IGt0KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBrdGltZV9kaXZucyhrdCwgMTAwMDAwMEwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQga3RpbWVfdXNfZGVsdGEoY29uc3Qga3RpbWVfdCBsYXRlciwgY29uc3Qga3RpbWVf dCBlYXJsaWVyKQoxNDQ3NDogewoxNDQ3NDogICAgICAgIHJldHVybiBrdGltZV90b191cygoKGxh dGVyKSAtIChlYXJsaWVyKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQga3RpbWVfbXNf ZGVsdGEoY29uc3Qga3RpbWVfdCBsYXRlciwgY29uc3Qga3RpbWVfdCBlYXJsaWVyKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBrdGltZV90b19tcygoKGxhdGVyKSAtIChlYXJsaWVyKSkpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0aW1lX2FkZF91cyhjb25zdCBrdGltZV90IGt0 LCBjb25zdCB1NjQgdXNlYykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKChrdCkgKyAodXNlYyAq IDEwMDBMKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfYWRkX21zKGNv bnN0IGt0aW1lX3Qga3QsIGNvbnN0IHU2NCBtc2VjKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAo KGt0KSArIChtc2VjICogMTAwMDAwMEwpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVf dCBrdGltZV9zdWJfdXMoY29uc3Qga3RpbWVfdCBrdCwgY29uc3QgdTY0IHVzZWMpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuICgoa3QpIC0gKHVzZWMgKiAxMDAwTCkpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBrdGltZV90IGt0aW1lX3N1Yl9tcyhjb25zdCBrdGltZV90IGt0LCBjb25zdCB1NjQg bXNlYykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKChrdCkgLSAobXNlYyAqIDEwMDAwMDBMKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBrdGltZV90IGt0aW1lX2FkZF9zYWZlKGNv bnN0IGt0aW1lX3QgbGhzLCBjb25zdCBrdGltZV90IHJocyk7CjE0NDc0OiAjIDIwOCAiLi9pbmNs dWRlL2xpbnV4L2t0aW1lLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgYm9vbCBrdGltZV90b190aW1lc3BlYzY0X2NvbmQoY29uc3Qga3RpbWVfdCBrdCwK MTQ0NzQ6ICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKGt0KSB7CjE0NDc0OiAgICp0cyA9IG5zX3RvX3RpbWVzcGVjNjQoKGt0KSk7CjE0NDc0 OiAgIHJldHVybiB0cnVlOwoxNDQ3NDogIH0gZWxzZSB7CjE0NDc0OiAgIHJldHVybiBmYWxzZTsK MTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAjIDIyOCAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBrdGltZV90IG5zX3RvX2t0aW1lKHU2NCBucykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gbnM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgbXNfdG9fa3RpbWUodTY0IG1z KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBtcyAqIDEwMDAwMDBMOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIiAxCjE0NDc0OiAjIDkg Ii4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIgoxNDQ3NDogdm9pZCB0aW1la2VlcGluZ19p bml0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCB0aW1la2VlcGluZ19zdXNwZW5kZWQ7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVz ZXIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgeHRpbWVfdXBkYXRlKHVuc2lnbmVkIGxvbmcgdGlja3Mp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGRvX3Nl dHRpbWVvZmRheTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CjE0NDc0OiBleHRlcm4g aW50IGRvX3N5c19zZXR0aW1lb2ZkYXk2NChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHYsCjE0 NDc0OiAgICAgIGNvbnN0IHN0cnVjdCB0aW1lem9uZSAqdHopOwoxNDQ3NDogIyA0MSAiLi9pbmNs dWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBrdGltZV9nZXRfcmF3 X3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGt0aW1lX2dl dF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBrdGltZV9n ZXRfcmVhbF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0dik7CjE0NDc0OiBleHRlcm4gdm9pZCBr dGltZV9nZXRfY29hcnNlX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIGt0aW1lX2dldF9jb2Fyc2VfcmVhbF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7 CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZ2V0Ym9vdHRpbWU2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdGltZTY0X3Qg a3RpbWVfZ2V0X3NlY29uZHModm9pZCk7CjE0NDc0OiBleHRlcm4gdGltZTY0X3QgX19rdGltZV9n ZXRfcmVhbF9zZWNvbmRzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHRpbWU2NF90IGt0aW1lX2dldF9y ZWFsX3NlY29uZHModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bSB0a19vZmZzZXRzIHsKMTQ0NzQ6ICBUS19PRkZTX1JFQUwsCjE0NDc0OiAg VEtfT0ZGU19CT09ULAoxNDQ3NDogIFRLX09GRlNfVEFJLAoxNDQ3NDogIFRLX09GRlNfTUFYLAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGt0aW1lX3Qga3RpbWVfZ2V0KHZvaWQpOwox NDQ3NDogZXh0ZXJuIGt0aW1lX3Qga3RpbWVfZ2V0X3dpdGhfb2Zmc2V0KGVudW0gdGtfb2Zmc2V0 cyBvZmZzKTsKMTQ0NzQ6IGV4dGVybiBrdGltZV90IGt0aW1lX2dldF9jb2Fyc2Vfd2l0aF9vZmZz ZXQoZW51bSB0a19vZmZzZXRzIG9mZnMpOwoxNDQ3NDogZXh0ZXJuIGt0aW1lX3Qga3RpbWVfbW9u b190b19hbnkoa3RpbWVfdCB0bW9ubywgZW51bSB0a19vZmZzZXRzIG9mZnMpOwoxNDQ3NDogZXh0 ZXJuIGt0aW1lX3Qga3RpbWVfZ2V0X3Jhdyh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB1MzIga3RpbWVf Z2V0X3Jlc29sdXRpb25fbnModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X3JlYWwodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4ga3RpbWVfZ2V0X3dpdGhfb2Zmc2V0KFRLX09GRlNfUkVBTCk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2NvYXJzZV9yZWFsKHZvaWQpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGt0aW1lX2dldF9jb2Fyc2Vfd2l0aF9vZmZzZXQoVEtfT0ZGU19SRUFMKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9nZXRfYm9vdHRpbWUodm9pZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4ga3RpbWVfZ2V0X3dpdGhfb2Zmc2V0KFRLX09GRlNfQk9PVCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2NvYXJzZV9ib290dGltZSh2b2lkKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0KFRLX09G RlNfQk9PVCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGt0aW1lX3Qga3RpbWVfZ2V0X2Nsb2NrdGFpKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IGt0aW1lX2dldF93aXRoX29mZnNldChUS19PRkZTX1RBSSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGt0aW1lX3Qga3RpbWVfZ2V0X2NvYXJzZV9jbG9ja3RhaSh2b2lkKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0KFRLX09GRlNfVEFJKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9nZXRfY29hcnNlKHZvaWQpCjE0NDc0 OiB7CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgdHM7CjE0NDc0OiAKMTQ0NzQ6ICBrdGltZV9n ZXRfY29hcnNlX3RzNjQoJnRzKTsKMTQ0NzQ6ICByZXR1cm4gdGltZXNwZWM2NF90b19rdGltZSh0 cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY29hcnNlX25zKHZvaWQp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX3RvX25zKGt0aW1lX2dldF9jb2Fyc2UoKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY29hcnNlX3JlYWxfbnModm9p ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X2NvYXJzZV9y ZWFsKCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVfZ2V0X2NvYXJzZV9ib290 dGltZV9ucyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGltZV90b19ucyhrdGltZV9n ZXRfY29hcnNlX2Jvb3R0aW1lKCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVf Z2V0X2NvYXJzZV9jbG9ja3RhaV9ucyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGlt ZV90b19ucyhrdGltZV9nZXRfY29hcnNlX2Nsb2NrdGFpKCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0aW1lX21vbm9fdG9fcmVhbChr dGltZV90IG1vbm8pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX21vbm9fdG9fYW55KG1v bm8sIFRLX09GRlNfUkVBTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRf bnModm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0KCkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVfZ2V0X3JlYWxfbnModm9pZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X3JlYWwoKSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfYm9vdHRpbWVfbnModm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X2Jvb3R0aW1lKCkpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVfZ2V0X2Nsb2NrdGFpX25zKHZvaWQpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX3RvX25zKGt0aW1lX2dldF9jbG9ja3RhaSgpKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IGt0aW1lX2dldF9yYXdfbnModm9pZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0X3JhdygpKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHU2NCBrdGltZV9nZXRfbW9ub19mYXN0X25zKHZvaWQpOwoxNDQ3 NDogZXh0ZXJuIHU2NCBrdGltZV9nZXRfcmF3X2Zhc3RfbnModm9pZCk7CjE0NDc0OiBleHRlcm4g dTY0IGt0aW1lX2dldF9ib290X2Zhc3RfbnModm9pZCk7CjE0NDc0OiBleHRlcm4gdTY0IGt0aW1l X2dldF9yZWFsX2Zhc3RfbnModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0aW1lX2dldF9ib290dGltZV90czY0KHN0cnVj dCB0aW1lc3BlYzY0ICp0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICAqdHMgPSBuc190b190aW1lc3BlYzY0 KChrdGltZV9nZXRfYm9vdHRpbWUoKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0 aW1lX2dldF9jb2Fyc2VfYm9vdHRpbWVfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCjE0NDc0 OiB7CjE0NDc0OiAgKnRzID0gbnNfdG9fdGltZXNwZWM2NCgoa3RpbWVfZ2V0X2NvYXJzZV9ib290 dGltZSgpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHRpbWU2NF90IGt0aW1lX2dldF9ib290 dGltZV9zZWNvbmRzKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX2Rpdm5zKGt0 aW1lX2dldF9jb2Fyc2VfYm9vdHRpbWUoKSwgMTAwMDAwMDAwMEwpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGt0aW1lX2dldF9jbG9ja3RhaV90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0 cykKMTQ0NzQ6IHsKMTQ0NzQ6ICAqdHMgPSBuc190b190aW1lc3BlYzY0KChrdGltZV9nZXRfY2xv Y2t0YWkoKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0aW1lX2dldF9jb2Fyc2Vf Y2xvY2t0YWlfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCjE0NDc0OiB7CjE0NDc0OiAgKnRz ID0gbnNfdG9fdGltZXNwZWM2NCgoa3RpbWVfZ2V0X2NvYXJzZV9jbG9ja3RhaSgpKSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHRpbWU2NF90IGt0aW1lX2dldF9jbG9ja3RhaV9zZWNvbmRzKHZv aWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGt0aW1lX2Rpdm5zKGt0aW1lX2dldF9jb2Fyc2Vf Y2xvY2t0YWkoKSwgMTAwMDAwMDAwMEwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCB0aW1la2VlcGluZ19ydGNfc2tpcHN1c3BlbmQo dm9pZCk7CjE0NDc0OiBleHRlcm4gYm9vbCB0aW1la2VlcGluZ19ydGNfc2tpcHJlc3VtZSh2b2lk KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgdGltZWtlZXBpbmdfaW5qZWN0X3NsZWVwdGlt ZTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICpkZWx0YSk7CjE0NDc0OiAjIDIzNCAiLi9pbmNs dWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgiCjE0NDc0OiBzdHJ1Y3Qgc3lzdGVtX3RpbWVfc25hcHNo b3QgewoxNDQ3NDogIHU2NCBjeWNsZXM7CjE0NDc0OiAga3RpbWVfdCByZWFsOwoxNDQ3NDogIGt0 aW1lX3QgcmF3OwoxNDQ3NDogIHVuc2lnbmVkIGludCBjbG9ja193YXNfc2V0X3NlcTsKMTQ0NzQ6 ICB1OCBjc193YXNfY2hhbmdlZF9zZXE7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNDkgIi4vaW5jbHVk ZS9saW51eC90aW1la2VlcGluZy5oIgoxNDQ3NDogc3RydWN0IHN5c3RlbV9kZXZpY2VfY3Jvc3N0 c3RhbXAgewoxNDQ3NDogIGt0aW1lX3QgZGV2aWNlOwoxNDQ3NDogIGt0aW1lX3Qgc3lzX3JlYWx0 aW1lOwoxNDQ3NDogIGt0aW1lX3Qgc3lzX21vbm9yYXc7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNjIg Ii4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIgoxNDQ3NDogc3RydWN0IHN5c3RlbV9jb3Vu dGVydmFsX3QgewoxNDQ3NDogIHU2NCBjeWNsZXM7CjE0NDc0OiAgc3RydWN0IGNsb2Nrc291cmNl ICpjczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgZ2V0X2RldmljZV9zeXN0ZW1fY3Jvc3N0c3RhbXAoCjE0NDc0OiAgICBpbnQgKCpn ZXRfdGltZV9mbikoa3RpbWVfdCAqZGV2aWNlX3RpbWUsCjE0NDc0OiAgICAgc3RydWN0IHN5c3Rl bV9jb3VudGVydmFsX3QgKnN5c3RlbV9jb3VudGVydmFsLAoxNDQ3NDogICAgIHZvaWQgKmN0eCks CjE0NDc0OiAgICB2b2lkICpjdHgsCjE0NDc0OiAgICBzdHJ1Y3Qgc3lzdGVtX3RpbWVfc25hcHNo b3QgKmhpc3RvcnksCjE0NDc0OiAgICBzdHJ1Y3Qgc3lzdGVtX2RldmljZV9jcm9zc3RzdGFtcCAq eHRzdGFtcCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIGt0aW1lX2dldF9zbmFwc2hvdChzdHJ1Y3Qgc3lzdGVtX3RpbWVfc25hcHNob3QgKnN5c3Rp bWVfc25hcHNob3QpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gaW50IHBlcnNpc3RlbnRfY2xvY2tfaXNfbG9jYWw7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIHJlYWRfcGVyc2lzdGVudF9jbG9jazY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CjE0NDc0 OiB2b2lkIHJlYWRfcGVyc2lzdGVudF93YWxsX2FuZF9ib290X29mZnNldChzdHJ1Y3QgdGltZXNw ZWM2NCAqd2FsbF9jbG9jaywKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgdGltZXNwZWM2NCAqYm9vdF9v ZmZzZXQpOwoxNDQ3NDogZXh0ZXJuIGludCB1cGRhdGVfcGVyc2lzdGVudF9jbG9jazY0KHN0cnVj dCB0aW1lc3BlYzY0IG5vdyk7CjE0NDc0OiAjIDIzOSAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgi IDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nMzIuaCIgMQoxNDQ3NDog IyA5ICIuL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmczMi5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9u ZyBnZXRfc2Vjb25kcyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGltZV9nZXRfcmVh bF9zZWNvbmRzKCk7CjE0NDc0OiB9CjE0NDc0OiAjIDI0MCAiLi9pbmNsdWRlL2xpbnV4L2t0aW1l LmgiIDIKMTQ0NzQ6ICMgNyAiLi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogIyAxICIuL2luY2x1ZGUvbGludXgvZGVidWdvYmplY3RzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkZWJ1 Z19vYmpfc3RhdGUgewoxNDQ3NDogIE9ERUJVR19TVEFURV9OT05FLAoxNDQ3NDogIE9ERUJVR19T VEFURV9JTklULAoxNDQ3NDogIE9ERUJVR19TVEFURV9JTkFDVElWRSwKMTQ0NzQ6ICBPREVCVUdf U1RBVEVfQUNUSVZFLAoxNDQ3NDogIE9ERUJVR19TVEFURV9ERVNUUk9ZRUQsCjE0NDc0OiAgT0RF QlVHX1NUQVRFX05PVEFWQUlMQUJMRSwKMTQ0NzQ6ICBPREVCVUdfU1RBVEVfTUFYLAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlYnVnX29ial9kZXNjcjsKMTQ0NzQ6ICMgMjggIi4v aW5jbHVkZS9saW51eC9kZWJ1Z29iamVjdHMuaCIKMTQ0NzQ6IHN0cnVjdCBkZWJ1Z19vYmogewox NDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIG5vZGU7CjE0NDc0OiAgZW51bSBkZWJ1Z19vYmpfc3Rh dGUgc3RhdGU7CjE0NDc0OiAgdW5zaWduZWQgaW50IGFzdGF0ZTsKMTQ0NzQ6ICB2b2lkICpvYmpl Y3Q7CjE0NDc0OiAgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3I7CjE0NDc0OiB9OwoxNDQ3 NDogIyA1NSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnb2JqZWN0cy5oIgoxNDQ3NDogc3RydWN0IGRl YnVnX29ial9kZXNjciB7CjE0NDc0OiAgY29uc3QgY2hhciAqbmFtZTsKMTQ0NzQ6ICB2b2lkICoo KmRlYnVnX2hpbnQpKHZvaWQgKmFkZHIpOwoxNDQ3NDogIGJvb2wgKCppc19zdGF0aWNfb2JqZWN0 KSh2b2lkICphZGRyKTsKMTQ0NzQ6ICBib29sICgqZml4dXBfaW5pdCkodm9pZCAqYWRkciwgZW51 bSBkZWJ1Z19vYmpfc3RhdGUgc3RhdGUpOwoxNDQ3NDogIGJvb2wgKCpmaXh1cF9hY3RpdmF0ZSko dm9pZCAqYWRkciwgZW51bSBkZWJ1Z19vYmpfc3RhdGUgc3RhdGUpOwoxNDQ3NDogIGJvb2wgKCpm aXh1cF9kZXN0cm95KSh2b2lkICphZGRyLCBlbnVtIGRlYnVnX29ial9zdGF0ZSBzdGF0ZSk7CjE0 NDc0OiAgYm9vbCAoKmZpeHVwX2ZyZWUpKHZvaWQgKmFkZHIsIGVudW0gZGVidWdfb2JqX3N0YXRl IHN0YXRlKTsKMTQ0NzQ6ICBib29sICgqZml4dXBfYXNzZXJ0X2luaXQpKHZvaWQgKmFkZHIsIGVu dW0gZGVidWdfb2JqX3N0YXRlIHN0YXRlKTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDg4ICIuL2luY2x1 ZGUvbGludXgvZGVidWdvYmplY3RzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBkZWJ1Z19vYmplY3Rf aW5pdCAodm9pZCAqYWRkciwgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3IpIHsgfQoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZAoxNDQ3NDogZGVidWdfb2JqZWN0X2luaXRfb25fc3RhY2sodm9pZCAqYWRkciwgc3Ry dWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3IpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiBkZWJ1Z19v YmplY3RfYWN0aXZhdGUgKHZvaWQgKmFkZHIsIHN0cnVjdCBkZWJ1Z19vYmpfZGVzY3IgKmRlc2Ny KSB7IHJldHVybiAwOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBkZWJ1Z19vYmplY3RfZGVhY3RpdmF0 ZSh2b2lkICphZGRyLCBzdHJ1Y3QgZGVidWdfb2JqX2Rlc2NyICpkZXNjcikgeyB9CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkCjE0NDc0OiBkZWJ1Z19vYmplY3RfZGVzdHJveSAodm9pZCAqYWRkciwgc3RydWN0IGRlYnVn X29ial9kZXNjciAqZGVzY3IpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogZGVidWdfb2JqZWN0X2Zy ZWUgKHZvaWQgKmFkZHIsIHN0cnVjdCBkZWJ1Z19vYmpfZGVzY3IgKmRlc2NyKSB7IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQKMTQ0NzQ6IGRlYnVnX29iamVjdF9hc3NlcnRfaW5pdCh2b2lkICphZGRyLCBzdHJ1Y3Qg ZGVidWdfb2JqX2Rlc2NyICpkZXNjcikgeyB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGVidWdfb2Jq ZWN0c19lYXJseV9pbml0KHZvaWQpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWJ1Z19vYmplY3RzX21lbV9p bml0KHZvaWQpIHsgfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQKMTQ0NzQ6IGRlYnVnX2NoZWNrX25vX29ial9mcmVlZChjb25zdCB2b2lkICphZGRy ZXNzLCB1bnNpZ25lZCBsb25nIHNpemUpIHsgfQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgv dGltZXIuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0aW1lcl9saXN0IHsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIGVu dHJ5OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZXhwaXJlczsKMTQ0NzQ6ICB2b2lkICgqZnVuY3Rp b24pKHN0cnVjdCB0aW1lcl9saXN0ICopOwoxNDQ3NDogIHUzMiBmbGFnczsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTAgIi4vaW5jbHVkZS9saW51 eC90aW1lci5oIgoxNDQ3NDogdm9pZCBpbml0X3RpbWVyX2tleShzdHJ1Y3QgdGltZXJfbGlzdCAq dGltZXIsCjE0NDc0OiAgICAgICB2b2lkICgqZnVuYykoc3RydWN0IHRpbWVyX2xpc3QgKiksIHVu c2lnbmVkIGludCBmbGFncywKMTQ0NzQ6ICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBs b2NrX2NsYXNzX2tleSAqa2V5KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbml0X3RpbWVyX29uX3N0YWNrX2tleShz dHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIsCjE0NDc0OiAgICAgICAgIHZvaWQgKCpmdW5jKShzdHJ1 Y3QgdGltZXJfbGlzdCAqKSwKMTQ0NzQ6ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAoxNDQ3 NDogICAgICAgICBjb25zdCBjaGFyICpuYW1lLAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgbG9ja19j bGFzc19rZXkgKmtleSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbml0X3RpbWVyX2tleSh0aW1lciwgZnVu YywgZmxhZ3MsIG5hbWUsIGtleSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE0OSAiLi9pbmNsdWRlL2xp bnV4L3RpbWVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRlc3Ryb3lfdGltZXJfb25fc3RhY2soc3RydWN0IHRp bWVyX2xpc3QgKnRpbWVyKSB7IH0KMTQ0NzQ6ICMgMTY1ICIuL2luY2x1ZGUvbGludXgvdGltZXIu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCB0aW1lcl9wZW5kaW5nKGNvbnN0IHN0cnVjdCB0aW1lcl9saXN0ICogdGlt ZXIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRpbWVyLT5lbnRyeS5wcHJldiAhPSAoKHZvaWQg KikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgYWRkX3RpbWVyX29uKHN0 cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgaW50IGNwdSk7CjE0NDc0OiBleHRlcm4gaW50IGRlbF90 aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKTsKMTQ0NzQ6IGV4dGVybiBpbnQgbW9kX3Rp bWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgdW5zaWduZWQgbG9uZyBleHBpcmVzKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgbW9kX3RpbWVyX3BlbmRpbmcoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVy LCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoxNDQ3NDogZXh0ZXJuIGludCB0aW1lcl9yZWR1Y2Uo c3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyLCB1bnNpZ25lZCBsb25nIGV4cGlyZXMpOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gdm9pZCBhZGRfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCB0cnlfdG9fZGVsX3RpbWVyX3N5bmMoc3RydWN0IHRpbWVyX2xpc3Qg KnRpbWVyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIGV4dGVybiBpbnQgZGVsX3RpbWVyX3N5 bmMoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGluaXRfdGltZXJzKHZvaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgcnVuX2xvY2FsX3RpbWVycyh2b2lkKTsKMTQ0NzQ6IHN0cnVj dCBocnRpbWVyOwoxNDQ3NDogZXh0ZXJuIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGl0X3JlYWxfZm4o c3RydWN0IGhydGltZXIgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGN0bF90YWJs ZTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBzeXNjdGxfdGltZXJfbWlncmF0 aW9uOwoxNDQ3NDogaW50IHRpbWVyX21pZ3JhdGlvbl9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUg KnRhYmxlLCBpbnQgd3JpdGUsCjE0NDc0OiAgICAgICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxl bnAsCjE0NDc0OiAgICAgICAgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1 bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllcyh1bnNpZ25lZCBsb25nIGosIGludCBjcHUpOwox NDQ3NDogdW5zaWduZWQgbG9uZyBfX3JvdW5kX2ppZmZpZXNfcmVsYXRpdmUodW5zaWduZWQgbG9u ZyBqLCBpbnQgY3B1KTsKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgcm91bmRfamlmZmllcyh1bnNpZ25l ZCBsb25nIGopOwoxNDQ3NDogdW5zaWduZWQgbG9uZyByb3VuZF9qaWZmaWVzX3JlbGF0aXZlKHVu c2lnbmVkIGxvbmcgaik7CjE0NDc0OiAKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgX19yb3VuZF9qaWZm aWVzX3VwKHVuc2lnbmVkIGxvbmcgaiwgaW50IGNwdSk7CjE0NDc0OiB1bnNpZ25lZCBsb25nIF9f cm91bmRfamlmZmllc191cF9yZWxhdGl2ZSh1bnNpZ25lZCBsb25nIGosIGludCBjcHUpOwoxNDQ3 NDogdW5zaWduZWQgbG9uZyByb3VuZF9qaWZmaWVzX3VwKHVuc2lnbmVkIGxvbmcgaik7CjE0NDc0 OiB1bnNpZ25lZCBsb25nIHJvdW5kX2ppZmZpZXNfdXBfcmVsYXRpdmUodW5zaWduZWQgbG9uZyBq KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgdGltZXJzX3ByZXBhcmVfY3B1KHVuc2lnbmVk IGludCBjcHUpOwoxNDQ3NDogaW50IHRpbWVyc19kZWFkX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsK MTQ0NzQ6ICMgMTAgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIgMgoxNDQ3NDogIyAxOCAi Li9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgoxNDQ3NDogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1 Y3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB3b3JrX3N0cnVjdDsKMTQ0NzQ6IHR5cGVkZWYgdm9p ZCAoKndvcmtfZnVuY190KShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwoxNDQ3NDogdm9pZCBk ZWxheWVkX3dvcmtfdGltZXJfZm4oc3RydWN0IHRpbWVyX2xpc3QgKnQpOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsK MTQ0NzQ6ICBXT1JLX1NUUlVDVF9QRU5ESU5HX0JJVCA9IDAsCjE0NDc0OiAgV09SS19TVFJVQ1Rf REVMQVlFRF9CSVQgPSAxLAoxNDQ3NDogIFdPUktfU1RSVUNUX1BXUV9CSVQgPSAyLAoxNDQ3NDog IFdPUktfU1RSVUNUX0xJTktFRF9CSVQgPSAzLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgV09SS19TVFJVQ1RfQ09MT1JfU0hJRlQgPSA0LAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBXT1JLX1NUUlVDVF9DT0xPUl9CSVRTID0gNCwKMTQ0NzQ6IAoxNDQ3NDogIFdPUktf U1RSVUNUX1BFTkRJTkcgPSAxIDw8IFdPUktfU1RSVUNUX1BFTkRJTkdfQklULAoxNDQ3NDogIFdP UktfU1RSVUNUX0RFTEFZRUQgPSAxIDw8IFdPUktfU1RSVUNUX0RFTEFZRURfQklULAoxNDQ3NDog IFdPUktfU1RSVUNUX1BXUSA9IDEgPDwgV09SS19TVFJVQ1RfUFdRX0JJVCwKMTQ0NzQ6ICBXT1JL X1NUUlVDVF9MSU5LRUQgPSAxIDw8IFdPUktfU1RSVUNUX0xJTktFRF9CSVQsCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgV09SS19TVFJVQ1RfU1RBVElDID0gMCwKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBXT1JLX05SX0NPTE9S UyA9ICgxIDw8IFdPUktfU1RSVUNUX0NPTE9SX0JJVFMpIC0gMSwKMTQ0NzQ6ICBXT1JLX05PX0NP TE9SID0gV09SS19OUl9DT0xPUlMsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFdPUktfQ1BVX1VO Qk9VTkQgPSA4LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIFdPUktfU1RSVUNUX0ZMQUdfQklUUyA9IFdPUktfU1RSVUNUX0NPTE9SX1NISUZU ICsKMTQ0NzQ6ICAgICAgIFdPUktfU1RSVUNUX0NPTE9SX0JJVFMsCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIFdPUktfT0ZGUV9GTEFHX0JBU0UgPSBXT1JLX1NUUlVDVF9DT0xPUl9TSElGVCwKMTQ0 NzQ6IAoxNDQ3NDogIF9fV09SS19PRkZRX0NBTkNFTElORyA9IFdPUktfT0ZGUV9GTEFHX0JBU0Us CjE0NDc0OiAgV09SS19PRkZRX0NBTkNFTElORyA9ICgxIDw8IF9fV09SS19PRkZRX0NBTkNFTElO RyksCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgV09SS19PRkZRX0ZMQUdfQklUUyA9IDEsCjE0NDc0OiAgV09SS19PRkZRX1BPT0xfU0hJRlQg PSBXT1JLX09GRlFfRkxBR19CQVNFICsgV09SS19PRkZRX0ZMQUdfQklUUywKMTQ0NzQ6ICBXT1JL X09GRlFfTEVGVCA9IDY0IC0gV09SS19PRkZRX1BPT0xfU0hJRlQsCjE0NDc0OiAgV09SS19PRkZR X1BPT0xfQklUUyA9IFdPUktfT0ZGUV9MRUZUIDw9IDMxID8gV09SS19PRkZRX0xFRlQgOiAzMSwK MTQ0NzQ6ICBXT1JLX09GRlFfUE9PTF9OT05FID0gKDFMVSA8PCBXT1JLX09GRlFfUE9PTF9CSVRT KSAtIDEsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFdPUktfU1RSVUNUX0ZMQUdfTUFTSyA9ICgx VUwgPDwgV09SS19TVFJVQ1RfRkxBR19CSVRTKSAtIDEsCjE0NDc0OiAgV09SS19TVFJVQ1RfV1Ff REFUQV9NQVNLID0gfldPUktfU1RSVUNUX0ZMQUdfTUFTSywKMTQ0NzQ6ICBXT1JLX1NUUlVDVF9O T19QT09MID0gKHVuc2lnbmVkIGxvbmcpV09SS19PRkZRX1BPT0xfTk9ORSA8PCBXT1JLX09GRlFf UE9PTF9TSElGVCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgV09SS19CVVNZX1BFTkRJTkcgPSAx IDw8IDAsCjE0NDc0OiAgV09SS19CVVNZX1JVTk5JTkcgPSAxIDw8IDEsCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIFdPUktFUl9ERVNDX0xFTiA9IDI0LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHdvcmtfc3RydWN0IHsKMTQ0NzQ6ICBhdG9taWNfbG9uZ190IGRhdGE7CjE0NDc0OiAg c3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKMTQ0NzQ6ICB3b3JrX2Z1bmNfdCBmdW5jOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGVsYXllZF93b3JrIHsKMTQ0NzQ6ICBzdHJ1Y3Qgd29y a19zdHJ1Y3Qgd29yazsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZXJfbGlzdCB0aW1lcjsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwoxNDQ3NDogIGludCBj cHU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcmN1X3dvcmsgewoxNDQ3NDogIHN0 cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwoxNDQ3NDogIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCB3b3JrcXVldWVfYXR0cnMgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIGludCBuaWNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgY3B1 bWFza192YXJfdCBjcHVtYXNrOwoxNDQ3NDogIyAxNTUgIi4vaW5jbHVkZS9saW51eC93b3JrcXVl dWUuaCIKMTQ0NzQ6ICBib29sIG5vX251bWE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgZGVsYXllZF93b3JrICp0b19kZWxheWVkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKSh3b3Jr KTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNjAodm9pZCkgX19hdHRy aWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFpbmVyX29m KCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKHdv cmspKSwgdHlwZW9mKCgoc3RydWN0IGRlbGF5ZWRfd29yayAqKTApLT53b3JrKSkgJiYgIV9fYnVp bHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCood29yaykpLCB0eXBlb2Yodm9pZCkpKSkp IF9fY29tcGlsZXRpbWVfYXNzZXJ0XzE2MCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgZGVsYXll ZF93b3JrICopKF9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgZGVsYXllZF93b3Jr LCB3b3JrKSkpOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHJjdV93b3JrICp0 b19yY3Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICopKHdvcmspOyBkbyB7IGV4dGVybiB2b2lkIF9f Y29tcGlsZXRpbWVfYXNzZXJ0XzE2NSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBv aW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVp bHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCood29yaykpLCB0eXBlb2YoKChzdHJ1Y3Qg cmN1X3dvcmsgKikwKS0+d29yaykpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5 cGVvZigqKHdvcmspKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNjUo KTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IHJjdV93b3JrICopKF9fbXB0ciAtIF9fYnVpbHRpbl9v ZmZzZXRvZihzdHJ1Y3QgcmN1X3dvcmssIHdvcmspKSk7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZXhlY3V0ZV93b3JrIHsKMTQ0NzQ6ICBzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29y azsKMTQ0NzQ6IH07CjE0NDc0OiAjIDIxNSAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBfX2luaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmssIGludCBvbnN0 YWNrKSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgZGVzdHJveV93b3JrX29uX3N0YWNrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykgeyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRlc3Ryb3lfZGVsYXllZF93b3JrX29uX3N0YWNr KHN0cnVjdCBkZWxheWVkX3dvcmsgKndvcmspIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IHdvcmtf c3RhdGljKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykgeyByZXR1cm4gMDsgfQoxNDQ3NDogIyAz MDggIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIFdR X1VOQk9VTkQgPSAxIDw8IDEsCjE0NDc0OiAgV1FfRlJFRVpBQkxFID0gMSA8PCAyLAoxNDQ3NDog IFdRX01FTV9SRUNMQUlNID0gMSA8PCAzLAoxNDQ3NDogIFdRX0hJR0hQUkkgPSAxIDw8IDQsCjE0 NDc0OiAgV1FfQ1BVX0lOVEVOU0lWRSA9IDEgPDwgNSwKMTQ0NzQ6ICBXUV9TWVNGUyA9IDEgPDwg NiwKMTQ0NzQ6ICMgMzQxICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCjE0NDc0OiAgV1Ff UE9XRVJfRUZGSUNJRU5UID0gMSA8PCA3LAoxNDQ3NDogCjE0NDc0OiAgX19XUV9EUkFJTklORyA9 IDEgPDwgMTYsCjE0NDc0OiAgX19XUV9PUkRFUkVEID0gMSA8PCAxNywKMTQ0NzQ6ICBfX1dRX0xF R0FDWSA9IDEgPDwgMTgsCjE0NDc0OiAgX19XUV9PUkRFUkVEX0VYUExJQ0lUID0gMSA8PCAxOSwK MTQ0NzQ6IAoxNDQ3NDogIFdRX01BWF9BQ1RJVkUgPSA1MTIsCjE0NDc0OiAgV1FfTUFYX1VOQk9V TkRfUEVSX0NQVSA9IDQsCjE0NDc0OiAgV1FfREZMX0FDVElWRSA9IFdRX01BWF9BQ1RJVkUgLyAy LAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzg1ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCjE0 NDc0OiBleHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV93cTsKMTQ0NzQ6IGV4 dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2hpZ2hwcmlfd3E7CjE0NDc0OiBl eHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9sb25nX3dxOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fdW5ib3VuZF93cTsKMTQ0NzQ6IGV4 dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2ZyZWV6YWJsZV93cTsKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93 cTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX2ZyZWV6YWJs ZV9wb3dlcl9lZmZpY2llbnRfd3E7CjE0NDc0OiAjIDQwNyAiLi9pbmNsdWRlL2xpbnV4L3dvcmtx dWV1ZS5oIgoxNDQ3NDogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmFsbG9jX3dvcmtxdWV1ZShj b25zdCBjaGFyICpmbXQsCjE0NDc0OiAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCjE0NDc0OiAg ICAgICBpbnQgbWF4X2FjdGl2ZSwgLi4uKTsKMTQ0NzQ6ICMgNDM2ICIuL2luY2x1ZGUvbGludXgv d29ya3F1ZXVlLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBkZXN0cm95X3dvcmtxdWV1ZShzdHJ1Y3Qg d29ya3F1ZXVlX3N0cnVjdCAqd3EpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd29ya3F1ZXVlX2F0 dHJzICphbGxvY193b3JrcXVldWVfYXR0cnModm9pZCk7CjE0NDc0OiB2b2lkIGZyZWVfd29ya3F1 ZXVlX2F0dHJzKHN0cnVjdCB3b3JrcXVldWVfYXR0cnMgKmF0dHJzKTsKMTQ0NzQ6IGludCBhcHBs eV93b3JrcXVldWVfYXR0cnMoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAoxNDQ3NDogICAg ICBjb25zdCBzdHJ1Y3Qgd29ya3F1ZXVlX2F0dHJzICphdHRycyk7CjE0NDc0OiBpbnQgd29ya3F1 ZXVlX3NldF91bmJvdW5kX2NwdW1hc2soY3B1bWFza192YXJfdCBjcHVtYXNrKTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGJvb2wgcXVldWVfd29ya19vbihpbnQgY3B1LCBzdHJ1Y3Qgd29ya3F1ZXVl X3N0cnVjdCAqd3EsCjE0NDc0OiAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwoxNDQ3NDog ZXh0ZXJuIGJvb2wgcXVldWVfd29ya19ub2RlKGludCBub2RlLCBzdHJ1Y3Qgd29ya3F1ZXVlX3N0 cnVjdCAqd3EsCjE0NDc0OiAgICAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKMTQ0NzQ6 IGV4dGVybiBib29sIHF1ZXVlX2RlbGF5ZWRfd29ya19vbihpbnQgY3B1LCBzdHJ1Y3Qgd29ya3F1 ZXVlX3N0cnVjdCAqd3EsCjE0NDc0OiAgICBzdHJ1Y3QgZGVsYXllZF93b3JrICp3b3JrLCB1bnNp Z25lZCBsb25nIGRlbGF5KTsKMTQ0NzQ6IGV4dGVybiBib29sIG1vZF9kZWxheWVkX3dvcmtfb24o aW50IGNwdSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAoxNDQ3NDogICAgc3RydWN0IGRl bGF5ZWRfd29yayAqZHdvcmssIHVuc2lnbmVkIGxvbmcgZGVsYXkpOwoxNDQ3NDogZXh0ZXJuIGJv b2wgcXVldWVfcmN1X3dvcmsoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLCBzdHJ1Y3QgcmN1 X3dvcmsgKnJ3b3JrKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZmx1c2hfd29ya3F1ZXVl KHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcmFpbl93 b3JrcXVldWUoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIGludCBzY2hlZHVsZV9vbl9lYWNoX2NwdSh3b3JrX2Z1bmNfdCBmdW5jKTsKMTQ0NzQ6IAox NDQ3NDogaW50IGV4ZWN1dGVfaW5fcHJvY2Vzc19jb250ZXh0KHdvcmtfZnVuY190IGZuLCBzdHJ1 Y3QgZXhlY3V0ZV93b3JrICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBmbHVzaF93b3Jr KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CjE0NDc0OiBleHRlcm4gYm9vbCBjYW5jZWxfd29y a19zeW5jKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBi b29sIGZsdXNoX2RlbGF5ZWRfd29yayhzdHJ1Y3QgZGVsYXllZF93b3JrICpkd29yayk7CjE0NDc0 OiBleHRlcm4gYm9vbCBjYW5jZWxfZGVsYXllZF93b3JrKHN0cnVjdCBkZWxheWVkX3dvcmsgKmR3 b3JrKTsKMTQ0NzQ6IGV4dGVybiBib29sIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhzdHJ1Y3Qg ZGVsYXllZF93b3JrICpkd29yayk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBib29sIGZsdXNoX3Jj dV93b3JrKHN0cnVjdCByY3Vfd29yayAqcndvcmspOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCB3b3JrcXVldWVfc2V0X21heF9hY3RpdmUoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAox NDQ3NDogICAgICAgICAgaW50IG1heF9hY3RpdmUpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB3b3Jr X3N0cnVjdCAqY3VycmVudF93b3JrKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgY3VycmVudF9p c193b3JrcXVldWVfcmVzY3Vlcih2b2lkKTsKMTQ0NzQ6IGV4dGVybiBib29sIHdvcmtxdWV1ZV9j b25nZXN0ZWQoaW50IGNwdSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxKTsKMTQ0NzQ6IGV4 dGVybiB1bnNpZ25lZCBpbnQgd29ya19idXN5KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CjE0 NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDEsIDIpKSkgdm9p ZCBzZXRfd29ya2VyX2Rlc2MoY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogZXh0ZXJuIHZv aWQgcHJpbnRfd29ya2VyX2luZm8oY29uc3QgY2hhciAqbG9nX2x2bCwgc3RydWN0IHRhc2tfc3Ry dWN0ICp0YXNrKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNob3dfd29ya3F1ZXVlX3N0YXRlKHZvaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgd3Ffd29ya2VyX2NvbW0oY2hhciAqYnVmLCBzaXplX3Qgc2l6 ZSwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsKMTQ0NzQ6ICMgNTA0ICIuL2luY2x1ZGUvbGlu dXgvd29ya3F1ZXVlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHF1ZXVlX3dvcmsoc3RydWN0IHdvcmtxdWV1ZV9z dHJ1Y3QgKndxLAoxNDQ3NDogICAgICAgICAgc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBxdWV1ZV93b3JrX29uKFdPUktfQ1BVX1VOQk9VTkQsIHdxLCB3 b3JrKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTE4ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIHF1ZXVlX2RlbGF5ZWRfd29yayhzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAq d3EsCjE0NDc0OiAgICAgICAgICAgc3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmssCjE0NDc0OiAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBkZWxheSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcXVl dWVfZGVsYXllZF93b3JrX29uKFdPUktfQ1BVX1VOQk9VTkQsIHdxLCBkd29yaywgZGVsYXkpOwox NDQ3NDogfQoxNDQ3NDogIyA1MzMgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgbW9kX2RlbGF5ZWRfd29yayhzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3EsCjE0NDc0 OiAgICAgICAgIHN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrLAoxNDQ3NDogICAgICAgICB1bnNp Z25lZCBsb25nIGRlbGF5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBtb2RfZGVsYXllZF93b3Jr X29uKFdPUktfQ1BVX1VOQk9VTkQsIHdxLCBkd29yaywgZGVsYXkpOwoxNDQ3NDogfQoxNDQ3NDog IyA1NDcgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2NoZWR1bGVf d29ya19vbihpbnQgY3B1LCBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIHF1ZXVlX3dvcmtfb24oY3B1LCBzeXN0ZW1fd3EsIHdvcmspOwoxNDQ3NDogfQox NDQ3NDogIyA1NjYgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2No ZWR1bGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIHF1ZXVlX3dvcmsoc3lzdGVtX3dxLCB3b3JrKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTk1ICIu L2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZsdXNoX3NjaGVkdWxlZF93 b3JrKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgZmx1c2hfd29ya3F1ZXVlKHN5c3RlbV93cSk7CjE0 NDc0OiB9CjE0NDc0OiAjIDYwOSAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBzY2hlZHVsZV9kZWxheWVkX3dvcmtfb24oaW50IGNwdSwgc3RydWN0IGRlbGF5ZWRfd29y ayAqZHdvcmssCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIGRlbGF5KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBxdWV1ZV9kZWxheWVkX3dvcmtfb24oY3B1LCBzeXN0ZW1fd3EsIGR3b3Jr LCBkZWxheSk7CjE0NDc0OiB9CjE0NDc0OiAjIDYyMyAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1 ZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBzY2hlZHVsZV9kZWxheWVkX3dvcmsoc3RydWN0IGRlbGF5ZWRfd29y ayAqZHdvcmssCjE0NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIGRlbGF5KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCBkd29yaywgZGVsYXkpOwox NDQ3NDogfQoxNDQ3NDogIyA2MzkgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKMTQ0NzQ6 IGxvbmcgd29ya19vbl9jcHUoaW50IGNwdSwgbG9uZyAoKmZuKSh2b2lkICopLCB2b2lkICphcmcp OwoxNDQ3NDogbG9uZyB3b3JrX29uX2NwdV9zYWZlKGludCBjcHUsIGxvbmcgKCpmbikodm9pZCAq KSwgdm9pZCAqYXJnKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lk IGZyZWV6ZV93b3JrcXVldWVzX2JlZ2luKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgZnJlZXpl X3dvcmtxdWV1ZXNfYnVzeSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRoYXdfd29ya3F1ZXVl cyh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGludCB3b3JrcXVldWVfc3lz ZnNfcmVnaXN0ZXIoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxKTsKMTQ0NzQ6ICMgNjU5ICIu L2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdxX3dhdGNoZG9nX3RvdWNo KGludCBjcHUpIHsgfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogaW50IHdvcmtxdWV1 ZV9wcmVwYXJlX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGludCB3b3JrcXVldWVfb25s aW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGludCB3b3JrcXVldWVfb2ZmbGluZV9j cHUodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogaW50IF9fYXR0cmli dXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRf XykpIHdvcmtxdWV1ZV9pbml0X2Vhcmx5KHZvaWQpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHdv cmtxdWV1ZV9pbml0KHZvaWQpOwoxNDQ3NDogIyAxNyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVz LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21tdS5oIiAx CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS9saW51eC9tdXRleC5oIiAxCjE0NDc0OiAjIDIxICIuL2luY2x1ZGUvbGlu dXgvbXV0ZXguaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnX2xvY2tzLmgiIDEK MTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnX2xvY2tzLmgiCjE0NDc0OiBzdHJ1Y3Qg dGFza19zdHJ1Y3Q7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZGVidWdfbG9ja3MgX19hdHRy aWJ1dGVfXygoX19zZWN0aW9uX18oIi5kYXRhLi5yZWFkX21vc3RseSIpKSk7CjE0NDc0OiBleHRl cm4gaW50IGRlYnVnX2xvY2tzX3NpbGVudCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRh dGEuLnJlYWRfbW9zdGx5IikpKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19kZWJ1Z19s b2Nrc19vZmYodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdHlwZW9mKCZkZWJ1Z19s b2NrcykgX19haV9wdHIgPSAoJmRlYnVnX2xvY2tzKTsga2FzYW5fY2hlY2tfd3JpdGUoX19haV9w dHIsIHNpemVvZigqX19haV9wdHIpKTsgKHsgX190eXBlb2ZfXyAoKigoX19haV9wdHIpKSkgX19y ZXQgPSAoKDApKTsgc3dpdGNoIChzaXplb2YoKigoX19haV9wdHIpKSkpIHsgY2FzZSAxOiBhc20g dm9sYXRpbGUgKCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20iICgq KChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9s YXRpbGUgKCIiICJ4Y2hnIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKChf X2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRp bGUgKCIiICJ4Y2hnIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlf cHRyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAo IiIgInhjaGciICJxICVxMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlfcHRy KSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdfc2l6 ZSgpOyB9IF9fcmV0OyB9KTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZGVidWdfbG9ja3Nfb2ZmKHZvaWQpOwoxNDQ3NDogIyA0 OSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnX2xvY2tzLmgiCjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1 Y3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZGVidWdfc2hvd19hbGxfbG9ja3Modm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWJ1Z19zaG93X2hlbGRfbG9ja3Moc3RydWN0IHRhc2tf c3RydWN0ICp0YXNrKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0 OiBkZWJ1Z19jaGVja19ub19sb2Nrc19mcmVlZChjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBs b25nIGxlbikKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogZGVi dWdfY2hlY2tfbm9fbG9ja3NfaGVsZCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogIyAy MiAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHd3X2Fj cXVpcmVfY3R4OwoxNDQ3NDogIyA1MyAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiCjE0NDc0OiBz dHJ1Y3QgbXV0ZXggewoxNDQ3NDogIGF0b21pY19sb25nX3Qgb3duZXI7CjE0NDc0OiAgc3Bpbmxv Y2tfdCB3YWl0X2xvY2s7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1 ZXVlIG9zcTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgd2FpdF9saXN0OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbXV0ZXhf d2FpdGVyIHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CjE0NDc0OiAgc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrOwoxNDQ3NDogIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqd3dfY3R4Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTIgIi4vaW5jbHVkZS9s aW51eC9tdXRleC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtdXRleF9kZXN0cm95KHN0cnVjdCBtdXRleCAqbG9j aykge30KMTQ0NzQ6ICMgMTI4ICIuL2luY2x1ZGUvbGludXgvbXV0ZXguaCIKMTQ0NzQ6IGV4dGVy biB2b2lkIF9fbXV0ZXhfaW5pdChzdHJ1Y3QgbXV0ZXggKmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUs CjE0NDc0OiAgICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9v bCBtdXRleF9pc19sb2NrZWQoc3RydWN0IG11dGV4ICpsb2NrKTsKMTQ0NzQ6ICMgMTY1ICIuL2lu Y2x1ZGUvbGludXgvbXV0ZXguaCIKMTQ0NzQ6IGV4dGVybiB2b2lkIG11dGV4X2xvY2soc3RydWN0 IG11dGV4ICpsb2NrKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgbXV0ZXggKmxv Y2spOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkgbXV0ZXhfbG9ja19raWxsYWJsZShzdHJ1Y3QgbXV0ZXggKmxvY2spOwoxNDQ3NDogZXh0 ZXJuIHZvaWQgbXV0ZXhfbG9ja19pbyhzdHJ1Y3QgbXV0ZXggKmxvY2spOwoxNDQ3NDogIyAxODMg Ii4vaW5jbHVkZS9saW51eC9tdXRleC5oIgoxNDQ3NDogZXh0ZXJuIGludCBtdXRleF90cnlsb2Nr KHN0cnVjdCBtdXRleCAqbG9jayk7CjE0NDc0OiBleHRlcm4gdm9pZCBtdXRleF91bmxvY2soc3Ry dWN0IG11dGV4ICpsb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBhdG9taWNfZGVjX2Fu ZF9tdXRleF9sb2NrKGF0b21pY190ICpjbnQsIHN0cnVjdCBtdXRleCAqbG9jayk7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBtdXRleF90cnlsb2Nr X3JlY3Vyc2l2ZV9lbnVtIHsKMTQ0NzQ6ICBNVVRFWF9UUllMT0NLX0ZBSUxFRCA9IDAsCjE0NDc0 OiAgTVVURVhfVFJZTE9DS19TVUNDRVNTID0gMSwKMTQ0NzQ6ICBNVVRFWF9UUllMT0NLX1JFQ1VS U0lWRSwKMTQ0NzQ6IH07CjE0NDc0OiAjIDIxMCAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiCjE0 NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGVudW0g bXV0ZXhfdHJ5bG9ja19yZWN1cnNpdmVfZW51bQoxNDQ3NDogbXV0ZXhfdHJ5bG9ja19yZWN1cnNp dmUoc3RydWN0IG11dGV4ICpsb2NrKTsKMTQ0NzQ6ICMgOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9tbXUuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHR5cGVkZWYgc3RydWN0IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHU2NCBjdHhfaWQ7CjE0NDc0OiAjIDI4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21tdS5oIgox NDQ3NDogIGF0b21pYzY0X3QgdGxiX2dlbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0 IHJ3X3NlbWFwaG9yZSBsZHRfdXNyX3NlbTsKMTQ0NzQ6ICBzdHJ1Y3QgbGR0X3N0cnVjdCAqbGR0 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgc2hvcnQg aWEzMl9jb21wYXQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBtdXRleCBsb2NrOwox NDQ3NDogIHZvaWQgKnZkc287CjE0NDc0OiAgY29uc3Qgc3RydWN0IHZkc29faW1hZ2UgKnZkc29f aW1hZ2U7CjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfdCBwZXJmX3JkcG1jX2FsbG93ZWQ7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHUxNiBwa2V5X2FsbG9j YXRpb25fbWFwOwoxNDQ3NDogIHMxNiBleGVjdXRlX29ubHlfcGtleTsKMTQ0NzQ6IAoxNDQ3NDog fSBtbV9jb250ZXh0X3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgbGVhdmVfbW0oaW50IGNwdSk7CjE0NDc0OiAjIDE5 ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYWRkcmVzc19zcGFj ZTsKMTQ0NzQ6IHN0cnVjdCBtZW1fY2dyb3VwOwoxNDQ3NDogIyA2OCAiLi9pbmNsdWRlL2xpbnV4 L21tX3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgcGFnZSB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBm bGFnczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsKMTQ0 NzQ6IAoxNDQ3NDogICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7CjE0NDc0OiAgICB1 bnNpZ25lZCBsb25nIGluZGV4OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBwcml2YXRlOwoxNDQ3NDogICB9Owox NDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg ICBkbWFfYWRkcl90IGRtYV9hZGRyOwoxNDQ3NDogICB9OwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3 NDogICAgdW5pb24gewoxNDQ3NDogICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xhYl9saXN0OwoxNDQ3 NDogICAgIHN0cnVjdCB7CjE0NDc0OiAgICAgIHN0cnVjdCBwYWdlICpuZXh0OwoxNDQ3NDogCjE0 NDc0OiAgICAgIGludCBwYWdlczsKMTQ0NzQ6ICAgICAgaW50IHBvYmplY3RzOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgICAgfTsKMTQ0NzQ6ICAgIH07CjE0NDc0OiAg ICBzdHJ1Y3Qga21lbV9jYWNoZSAqc2xhYl9jYWNoZTsKMTQ0NzQ6IAoxNDQ3NDogICAgdm9pZCAq ZnJlZWxpc3Q7CjE0NDc0OiAgICB1bmlvbiB7CjE0NDc0OiAgICAgdm9pZCAqc19tZW07CjE0NDc0 OiAgICAgdW5zaWduZWQgbG9uZyBjb3VudGVyczsKMTQ0NzQ6ICAgICBzdHJ1Y3QgewoxNDQ3NDog ICAgICB1bnNpZ25lZCBpbnVzZToxNjsKMTQ0NzQ6ICAgICAgdW5zaWduZWQgb2JqZWN0czoxNTsK MTQ0NzQ6ICAgICAgdW5zaWduZWQgZnJvemVuOjE7CjE0NDc0OiAgICAgfTsKMTQ0NzQ6ICAgIH07 CjE0NDc0OiAgIH07CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICB1bnNpZ25lZCBsb25nIGNv bXBvdW5kX2hlYWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICAgdW5zaWduZWQgY2hhciBjb21w b3VuZF9kdG9yOwoxNDQ3NDogICAgdW5zaWduZWQgY2hhciBjb21wb3VuZF9vcmRlcjsKMTQ0NzQ6 ICAgIGF0b21pY190IGNvbXBvdW5kX21hcGNvdW50OwoxNDQ3NDogICB9OwoxNDQ3NDogICBzdHJ1 Y3QgewoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBfY29tcG91bmRfcGFkXzE7CjE0NDc0OiAgICB1 bnNpZ25lZCBsb25nIF9jb21wb3VuZF9wYWRfMjsKMTQ0NzQ6IAoxNDQ3NDogICAgc3RydWN0IGxp c3RfaGVhZCBkZWZlcnJlZF9saXN0OwoxNDQ3NDogICB9OwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3 NDogICAgdW5zaWduZWQgbG9uZyBfcHRfcGFkXzE7CjE0NDc0OiAgICBwZ3RhYmxlX3QgcG1kX2h1 Z2VfcHRlOwoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBfcHRfcGFkXzI7CjE0NDc0OiAgICB1bmlv biB7CjE0NDc0OiAgICAgc3RydWN0IG1tX3N0cnVjdCAqcHRfbW07CjE0NDc0OiAgICAgYXRvbWlj X3QgcHRfZnJhZ19yZWZjb3VudDsKMTQ0NzQ6ICAgIH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgICBzcGlubG9ja190IHB0bDsKMTQ0NzQ6IAoxNDQ3NDogICB9OwoxNDQ3NDogICBz dHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwOwoxNDQ3 NDogICAgdm9pZCAqem9uZV9kZXZpY2VfZGF0YTsKMTQ0NzQ6ICMgMTcyICIuL2luY2x1ZGUvbGlu dXgvbW1fdHlwZXMuaCIKMTQ0NzQ6ICAgfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHN0cnVj dCBjYWxsYmFja19oZWFkIGNhbGxiYWNrX2hlYWQ7CjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3NDog IHVuaW9uIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBhdG9taWNf dCBfbWFwY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHBhZ2VfdHlwZTsKMTQ0NzQ6IAoxNDQ3 NDogICB1bnNpZ25lZCBpbnQgYWN0aXZlOwoxNDQ3NDogICBpbnQgdW5pdHM7CjE0NDc0OiAgfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYXRvbWljX3QgX3JlZmNvdW50OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtX2Nncm91cDsKMTQ0NzQ6ICMgMjIyICIu L2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IH0gOwoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBhdG9t aWNfdCAqY29tcG91bmRfbWFwY291bnRfcHRyKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiAmcGFnZVsxXS5jb21wb3VuZF9tYXBjb3VudDsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjQwICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IHN0cnVjdCBwYWdlX2Zy YWdfY2FjaGUgewoxNDQ3NDogIHZvaWQgKiB2YTsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTE2IG9mZnNl dDsKMTQ0NzQ6ICBfX3UxNiBzaXplOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBwYWdlY250X2JpYXM7CjE0NDc0OiAg Ym9vbCBwZm1lbWFsbG9jOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bnNpZ25l ZCBsb25nIHZtX2ZsYWdzX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgdm1fcmVnaW9uIHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9k ZSB2bV9yYjsKMTQ0NzQ6ICB2bV9mbGFnc190IHZtX2ZsYWdzOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgdm1fc3RhcnQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB2bV9lbmQ7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyB2bV90b3A7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB2bV9wZ29mZjsKMTQ0NzQ6ICBz dHJ1Y3QgZmlsZSAqdm1fZmlsZTsKMTQ0NzQ6IAoxNDQ3NDogIGludCB2bV91c2FnZTsKMTQ0NzQ6 ICBib29sIHZtX2ljYWNoZV9mbHVzaGVkIDogMTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMg MjgzICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IHN0cnVjdCB2bV91c2VyZmF1 bHRmZF9jdHgge307CjE0NDc0OiAjIDI5MiAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCjE0 NDc0OiBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHZtX3N0YXJ0OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgdm1fZW5kOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1fbmV4dCwg KnZtX3ByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSB2bV9yYjsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgcmJfc3VidHJlZV9nYXA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IG1tX3N0cnVjdCAqdm1fbW07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIHBncHJvdF90IHZtX3BhZ2VfcHJvdDsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIHZtX2ZsYWdzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICBzdHJ1Y3QgcmJfbm9kZSByYjsKMTQ0NzQ6ICAgdW5z aWduZWQgbG9uZyByYl9zdWJ0cmVlX2xhc3Q7CjE0NDc0OiAgfSBzaGFyZWQ7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3QgbGlzdF9oZWFkIGFub25fdm1hX2NoYWluOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGFub25f dm1hICphbm9uX3ZtYTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgY29uc3Qgc3RydWN0IHZtX29w ZXJhdGlvbnNfc3RydWN0ICp2bV9vcHM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGxvbmcgdm1fcGdvZmY7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZmlsZSAqIHZtX2ZpbGU7CjE0 NDc0OiAgdm9pZCAqIHZtX3ByaXZhdGVfZGF0YTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYXRv bWljX2xvbmdfdCBzd2FwX3JlYWRhaGVhZF9pbmZvOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHZtX3VzZXJmYXVs dGZkX2N0eCB2bV91c2VyZmF1bHRmZF9jdHg7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fZGVz aWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNvcmVfdGhyZWFkIHsKMTQ0 NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CjE0NDc0OiAgc3RydWN0IGNvcmVfdGhyZWFk ICpuZXh0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNvcmVfc3RhdGUgewoxNDQ3 NDogIGF0b21pY190IG5yX3RocmVhZHM7CjE0NDc0OiAgc3RydWN0IGNvcmVfdGhyZWFkIGR1bXBl cjsKMTQ0NzQ6ICBzdHJ1Y3QgY29tcGxldGlvbiBzdGFydHVwOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGtpb2N0eF90YWJsZTsKMTQ0NzQ6IHN0cnVjdCBtbV9zdHJ1Y3QgewoxNDQ3 NDogIHN0cnVjdCB7CjE0NDc0OiAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqbW1hcDsKMTQ0NzQ6 ICAgc3RydWN0IHJiX3Jvb3QgbW1fcmI7CjE0NDc0OiAgIHU2NCB2bWFjYWNoZV9zZXFudW07CjE0 NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyAoKmdldF91bm1hcHBlZF9hcmVhKSAoc3RydWN0 IGZpbGUgKmZpbHAsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25n IGxlbiwKMTQ0NzQ6ICAgICB1bnNpZ25lZCBsb25nIHBnb2ZmLCB1bnNpZ25lZCBsb25nIGZsYWdz KTsKMTQ0NzQ6IAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIG1tYXBfYmFzZTsKMTQ0NzQ6ICAgdW5z aWduZWQgbG9uZyBtbWFwX2xlZ2FjeV9iYXNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyB0YXNrX3NpemU7CjE0NDc0OiAgIHVu c2lnbmVkIGxvbmcgaGlnaGVzdF92bV9lbmQ7CjE0NDc0OiAgIHBnZF90ICogcGdkOwoxNDQ3NDog IyA0MDMgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgoxNDQ3NDogICBhdG9taWNfdCBtZW1i YXJyaWVyX3N0YXRlOwoxNDQ3NDogIyA0MTUgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgox NDQ3NDogICBhdG9taWNfdCBtbV91c2VyczsKMTQ0NzQ6ICMgNDI0ICIuL2luY2x1ZGUvbGludXgv bW1fdHlwZXMuaCIKMTQ0NzQ6ICAgYXRvbWljX3QgbW1fY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogICBhdG9taWNfbG9uZ190IHBndGFibGVzX2J5dGVzOwoxNDQ3NDogCjE0NDc0OiAgIGlu dCBtYXBfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6ICAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3Qgcndfc2VtYXBob3JlIG1tYXBfc2VtOwox NDQ3NDogCjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgbW1saXN0OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGhp d2F0ZXJfcnNzOwoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGhpd2F0ZXJfdm07CjE0NDc0OiAKMTQ0 NzQ6ICAgdW5zaWduZWQgbG9uZyB0b3RhbF92bTsKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBsb2Nr ZWRfdm07CjE0NDc0OiAgIGF0b21pYzY0X3QgcGlubmVkX3ZtOwoxNDQ3NDogICB1bnNpZ25lZCBs b25nIGRhdGFfdm07CjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgZXhlY192bTsKMTQ0NzQ6ICAgdW5z aWduZWQgbG9uZyBzdGFja192bTsKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CjE0 NDc0OiAKMTQ0NzQ6ICAgc3BpbmxvY2tfdCBhcmdfbG9jazsKMTQ0NzQ6ICAgdW5zaWduZWQgbG9u ZyBzdGFydF9jb2RlLCBlbmRfY29kZSwgc3RhcnRfZGF0YSwgZW5kX2RhdGE7CjE0NDc0OiAgIHVu c2lnbmVkIGxvbmcgc3RhcnRfYnJrLCBicmssIHN0YXJ0X3N0YWNrOwoxNDQ3NDogICB1bnNpZ25l ZCBsb25nIGFyZ19zdGFydCwgYXJnX2VuZCwgZW52X3N0YXJ0LCBlbnZfZW5kOwoxNDQ3NDogCjE0 NDc0OiAgIHVuc2lnbmVkIGxvbmcgc2F2ZWRfYXV4dlsoMiooMSArIDIwICsgMSkpXTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCBtbV9yc3Nf c3RhdCByc3Nfc3RhdDsKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgbGludXhfYmluZm10ICpiaW5m bXQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBtbV9jb250ZXh0X3QgY29udGV4dDsKMTQ0NzQ6 IAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCBj b3JlX3N0YXRlICpjb3JlX3N0YXRlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgc3BpbmxvY2tf dCBpb2N0eF9sb2NrOwoxNDQ3NDogICBzdHJ1Y3Qga2lvY3R4X3RhYmxlICppb2N0eF90YWJsZTsK MTQ0NzQ6ICMgNDkxICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6ICAgc3RydWN0 IHRhc2tfc3RydWN0ICpvd25lcjsKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgdXNlcl9uYW1lc3Bh Y2UgKnVzZXJfbnM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgZmlsZSAqZXhlX2Zp bGU7CjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zICpu b3RpZmllcl9zdWJzY3JpcHRpb25zOwoxNDQ3NDogIyA1MjIgIi4vaW5jbHVkZS9saW51eC9tbV90 eXBlcy5oIgoxNDQ3NDogICBhdG9taWNfdCB0bGJfZmx1c2hfcGVuZGluZzsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgIGJvb2wgdGxiX2ZsdXNoX2JhdGNoZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgc3Ry dWN0IHVwcm9iZXNfc3RhdGUgdXByb2Jlc19zdGF0ZTsKMTQ0NzQ6IAoxNDQ3NDogICBhdG9taWNf bG9uZ190IGh1Z2V0bGJfdXNhZ2U7CjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IHdvcmtfc3RydWN0 IGFzeW5jX3B1dF93b3JrOwoxNDQ3NDogIH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2lu aXRfXykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGNwdV9iaXRtYXBbXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgbW1fc3RydWN0IGluaXRfbW07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBt bV9pbml0X2NwdW1hc2soc3RydWN0IG1tX3N0cnVjdCAqbW0pCjE0NDc0OiB7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyBjcHVfYml0bWFwID0gKHVuc2lnbmVkIGxvbmcpbW07CjE0NDc0OiAKMTQ0NzQ6 ICBjcHVfYml0bWFwICs9IF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgbW1fc3RydWN0LCBjcHVf Yml0bWFwKTsKMTQ0NzQ6ICBjcHVtYXNrX2NsZWFyKChzdHJ1Y3QgY3B1bWFzayAqKWNwdV9iaXRt YXApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGNwdW1hc2tfdCAqbW1fY3B1bWFz ayhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHN0cnVjdCBj cHVtYXNrICopJm1tLT5jcHVfYml0bWFwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg bW11X2dhdGhlcjsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRsYl9nYXRoZXJfbW11KHN0cnVjdCBtbXVf Z2F0aGVyICp0bGIsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAoxNDQ3NDogICAgIHVuc2lnbmVkIGxv bmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRsYl9maW5p c2hfbW11KHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsCjE0NDc0OiAgICAgdW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGluaXRfdGxiX2Zs dXNoX3BlbmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCjE0NDc0OiB7CjE0NDc0OiAgYXRvbWlj X3NldCgmbW0tPnRsYl9mbHVzaF9wZW5kaW5nLCAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBpbmNfdGxiX2ZsdXNoX3BlbmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCjE0NDc0OiB7 CjE0NDc0OiAgYXRvbWljX2luYygmbW0tPnRsYl9mbHVzaF9wZW5kaW5nKTsKMTQ0NzQ6ICMgNjA4 ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBkZWNfdGxiX2ZsdXNoX3BlbmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCjE0NDc0OiB7CjE0 NDc0OiAjIDYyMCAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCjE0NDc0OiAgYXRvbWljX2Rl YygmbW0tPnRsYl9mbHVzaF9wZW5kaW5nKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBt bV90bGJfZmx1c2hfcGVuZGluZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICMgNjMzICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6ICByZXR1cm4gYXRvbWlj X3JlYWQoJm1tLT50bGJfZmx1c2hfcGVuZGluZyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgbW1fdGxiX2ZsdXNoX25lc3RlZChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKMTQ0NzQ6IHsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBhdG9taWNfcmVhZCgmbW0tPnRsYl9mbHVzaF9wZW5kaW5nKSA+IDE7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB2bV9mYXVsdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IHZt X2ZhdWx0X3Q7CjE0NDc0OiAjIDY4MiAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCjE0NDc0 OiBlbnVtIHZtX2ZhdWx0X3JlYXNvbiB7CjE0NDc0OiAgVk1fRkFVTFRfT09NID0gKCB2bV9mYXVs dF90KTB4MDAwMDAxLAoxNDQ3NDogIFZNX0ZBVUxUX1NJR0JVUyA9ICggdm1fZmF1bHRfdCkweDAw MDAwMiwKMTQ0NzQ6ICBWTV9GQVVMVF9NQUpPUiA9ICggdm1fZmF1bHRfdCkweDAwMDAwNCwKMTQ0 NzQ6ICBWTV9GQVVMVF9XUklURSA9ICggdm1fZmF1bHRfdCkweDAwMDAwOCwKMTQ0NzQ6ICBWTV9G QVVMVF9IV1BPSVNPTiA9ICggdm1fZmF1bHRfdCkweDAwMDAxMCwKMTQ0NzQ6ICBWTV9GQVVMVF9I V1BPSVNPTl9MQVJHRSA9ICggdm1fZmF1bHRfdCkweDAwMDAyMCwKMTQ0NzQ6ICBWTV9GQVVMVF9T SUdTRUdWID0gKCB2bV9mYXVsdF90KTB4MDAwMDQwLAoxNDQ3NDogIFZNX0ZBVUxUX05PUEFHRSA9 ICggdm1fZmF1bHRfdCkweDAwMDEwMCwKMTQ0NzQ6ICBWTV9GQVVMVF9MT0NLRUQgPSAoIHZtX2Zh dWx0X3QpMHgwMDAyMDAsCjE0NDc0OiAgVk1fRkFVTFRfUkVUUlkgPSAoIHZtX2ZhdWx0X3QpMHgw MDA0MDAsCjE0NDc0OiAgVk1fRkFVTFRfRkFMTEJBQ0sgPSAoIHZtX2ZhdWx0X3QpMHgwMDA4MDAs CjE0NDc0OiAgVk1fRkFVTFRfRE9ORV9DT1cgPSAoIHZtX2ZhdWx0X3QpMHgwMDEwMDAsCjE0NDc0 OiAgVk1fRkFVTFRfTkVFRERTWU5DID0gKCB2bV9mYXVsdF90KTB4MDAyMDAwLAoxNDQ3NDogIFZN X0ZBVUxUX0hJTkRFWF9NQVNLID0gKCB2bV9mYXVsdF90KTB4MGYwMDAwLAoxNDQ3NDogfTsKMTQ0 NzQ6ICMgNzIyICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKMTQ0NzQ6IHN0cnVjdCB2bV9z cGVjaWFsX21hcHBpbmcgewoxNDQ3NDogIGNvbnN0IGNoYXIgKm5hbWU7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg cGFnZSAqKnBhZ2VzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICB2bV9mYXVsdF90ICgqZmF1bHQpKGNvbnN0IHN0cnVjdCB2bV9zcGVjaWFsX21hcHBpbmcg KnNtLAoxNDQ3NDogICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAoxNDQ3NDogICAgIHN0 cnVjdCB2bV9mYXVsdCAqdm1mKTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKm1yZW1hcCkoY29uc3Qg c3RydWN0IHZtX3NwZWNpYWxfbWFwcGluZyAqc20sCjE0NDc0OiAgICAgICAgc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICpuZXdfdm1hKTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gdGxiX2Zs dXNoX3JlYXNvbiB7CjE0NDc0OiAgVExCX0ZMVVNIX09OX1RBU0tfU1dJVENILAoxNDQ3NDogIFRM Ql9SRU1PVEVfU0hPT1RET1dOLAoxNDQ3NDogIFRMQl9MT0NBTF9TSE9PVERPV04sCjE0NDc0OiAg VExCX0xPQ0FMX01NX1NIT09URE9XTiwKMTQ0NzQ6ICBUTEJfUkVNT1RFX1NFTkRfSVBJLAoxNDQ3 NDogIE5SX1RMQl9GTFVTSF9SRUFTT05TLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyB2YWw7CjE0NDc0OiB9IHN3cF9lbnRyeV90OwoxNDQ3NDogIyAyMiAiLi9pbmNsdWRl L2xpbnV4L21tem9uZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdz LmgiIDEKMTQ0NzQ6ICMgOTkgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiCjE0NDc0OiBl bnVtIHBhZ2VmbGFncyB7CjE0NDc0OiAgUEdfbG9ja2VkLAoxNDQ3NDogIFBHX3JlZmVyZW5jZWQs CjE0NDc0OiAgUEdfdXB0b2RhdGUsCjE0NDc0OiAgUEdfZGlydHksCjE0NDc0OiAgUEdfbHJ1LAox NDQ3NDogIFBHX2FjdGl2ZSwKMTQ0NzQ6ICBQR193b3JraW5nc2V0LAoxNDQ3NDogIFBHX3dhaXRl cnMsCjE0NDc0OiAgUEdfZXJyb3IsCjE0NDc0OiAgUEdfc2xhYiwKMTQ0NzQ6ICBQR19vd25lcl9w cml2XzEsCjE0NDc0OiAgUEdfYXJjaF8xLAoxNDQ3NDogIFBHX3Jlc2VydmVkLAoxNDQ3NDogIFBH X3ByaXZhdGUsCjE0NDc0OiAgUEdfcHJpdmF0ZV8yLAoxNDQ3NDogIFBHX3dyaXRlYmFjaywKMTQ0 NzQ6ICBQR19oZWFkLAoxNDQ3NDogIFBHX21hcHBlZHRvZGlzaywKMTQ0NzQ6ICBQR19yZWNsYWlt LAoxNDQ3NDogIFBHX3N3YXBiYWNrZWQsCjE0NDc0OiAgUEdfdW5ldmljdGFibGUsCjE0NDc0OiAK MTQ0NzQ6ICBQR19tbG9ja2VkLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBQR191bmNhY2hlZCwK MTQ0NzQ6ICMgMTM0ICIuL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgoxNDQ3NDogIF9fTlJf UEFHRUZMQUdTLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBQR19jaGVja2VkID0gUEdfb3duZXJf cHJpdl8xLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBQR19zd2FwY2FjaGUgPSBQR19vd25lcl9w cml2XzEsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFBH X2ZzY2FjaGUgPSBQR19wcml2YXRlXzIsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg UEdfcGlubmVkID0gUEdfb3duZXJfcHJpdl8xLAoxNDQ3NDogCjE0NDc0OiAgUEdfc2F2ZXBpbm5l ZCA9IFBHX2RpcnR5LAoxNDQ3NDogCjE0NDc0OiAgUEdfZm9yZWlnbiA9IFBHX293bmVyX3ByaXZf MSwKMTQ0NzQ6IAoxNDQ3NDogIFBHX3hlbl9yZW1hcHBlZCA9IFBHX293bmVyX3ByaXZfMSwKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgUEdfc2xvYl9mcmVlID0gUEdfcHJpdmF0ZSwKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgUEdfZG91YmxlX21hcCA9IFBHX3ByaXZhdGVfMiwKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgUEdfaXNvbGF0ZWQgPSBQR19yZWNsYWltLAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwYWdlOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qg cGFnZSAqY29tcG91bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGhlYWQgPSAoeyB1bmlvbiB7IHR5cGVvZihwYWdlLT5jb21wb3VuZF9oZWFk KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHBh Z2UtPmNvbXBvdW5kX2hlYWQpLCBfX3UuX19jLCBzaXplb2YocGFnZS0+Y29tcG91bmRfaGVhZCkp OyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKHBhZ2UtPmNvbXBvdW5kX2hlYWQpLCBf X3UuX19jLCBzaXplb2YocGFnZS0+Y29tcG91bmRfaGVhZCkpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pOwoxNDQ3NDogCjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoaGVh ZCAmIDEpLCAwKSkKMTQ0NzQ6ICAgcmV0dXJuIChzdHJ1Y3QgcGFnZSAqKSAoaGVhZCAtIDEpOwox NDQ3NDogIHJldHVybiBwYWdlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlVGFpbChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5pb24geyB0eXBlb2YocGFnZS0+Y29tcG91bmRfaGVh ZCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihw YWdlLT5jb21wb3VuZF9oZWFkKSwgX191Ll9fYywgc2l6ZW9mKHBhZ2UtPmNvbXBvdW5kX2hlYWQp KTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihwYWdlLT5jb21wb3VuZF9oZWFkKSwg X191Ll9fYywgc2l6ZW9mKHBhZ2UtPmNvbXBvdW5kX2hlYWQpKTsgZG8geyB9IHdoaWxlICgwKTsg X191Ll9fdmFsOyB9KSAmIDE7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VDb21wb3VuZChzdHJ1Y3QgcGFnZSAqcGFnZSkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGVzdF9iaXQoUEdfaGVhZCwgJnBhZ2UtPmZsYWdzKSB8 fCBQYWdlVGFpbChwYWdlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgUGFn ZVBvaXNvbmVkKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBwYWdlLT5mbGFncyA9PSAtMWw7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgcGFnZV9pbml0X3BvaXNvbihzdHJ1Y3QgcGFnZSAqcGFnZSwgc2l6 ZV90IHNpemUpCjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAjIDMxMiAiLi9pbmNsdWRlL2xpbnV4 L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg aW50IFBhZ2VMb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX2xv Y2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7 ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0UGFnZUxvY2tlZChzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdfbG9ja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25n KSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9 KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg X19DbGVhclBhZ2VMb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfbG9j a2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsg KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVdhaXRlcnMoc3RydWN0IHBh Z2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3dhaXRlcnMsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVdhaXRlcnMoc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgc2V0X2JpdChQR193YWl0ZXJzLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVk KHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVdhaXRlcnMoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg Y2xlYXJfYml0KFBHX3dhaXRlcnMsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VUYWls KHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkp KSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgX19DbGVhclBhZ2VXYWl0ZXJzKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xl YXJfYml0KFBHX3dhaXRlcnMsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VUYWlsKHBh Z2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSBpbnQgUGFnZUVycm9yKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0 X2JpdChQR19lcnJvciwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChw YWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5k X2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0g c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VFcnJvcihzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX2Vycm9yLCAmKHsgKCh2b2lkKShzaXplb2YoKCBs b25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgQ2xlYXJQYWdlRXJyb3Ioc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX2Vycm9y LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkp KSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlRXJyb3Ioc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19lcnJvciwgJih7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9m KCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRf aGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgaW50IFBhZ2VSZWZlcmVuY2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJl dHVybiB0ZXN0X2JpdChQR19yZWZlcmVuY2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBT ZXRQYWdlUmVmZXJlbmNlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3JlZmVyZW5j ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFk KHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVJlZmVyZW5jZWQoc3RydWN0 IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3JlZmVyZW5jZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5k X2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlUmVmZXJlbmNlZChzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3JlZmVyZW5jZWQsICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNv bXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlUmVmZXJlbmNlZChzdHJ1Y3QgcGFnZSAq cGFnZSkgeyBfX3NldF9iaXQoUEdfcmVmZXJlbmNlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChw YWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSBpbnQgUGFnZURpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQ R19kaXJ0eSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5k X2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZURpcnR5KHN0cnVjdCBw YWdlICpwYWdlKSB7IHNldF9iaXQoUEdfZGlydHksICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lk IENsZWFyUGFnZURpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19kaXJ0eSwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0U2V0UGFnZURpcnR5KHN0cnVjdCBwYWdlICpw YWdlKSB7IHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KFBHX2RpcnR5LCAmKHsgKCh2b2lkKShzaXpl b2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3Vu ZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VEaXJ0eShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g dGVzdF9hbmRfY2xlYXJfYml0KFBHX2RpcnR5LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIF9fQ2xlYXJQYWdlRGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQo UEdfZGlydHksICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3Vu ZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0KMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VMUlUoc3RydWN0 IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX2xydSwgJih7ICgodm9pZCkoc2l6ZW9m KCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRf aGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgU2V0UGFnZUxSVShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX2xydSwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlTFJVKHN0cnVjdCBwYWdlICpwYWdl KSB7IGNsZWFyX2JpdChQR19scnUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5m bGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQ YWdlTFJVKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX2xydSwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsg Y29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUFjdGl2ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBy ZXR1cm4gdGVzdF9iaXQoUEdfYWN0aXZlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9 KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQ YWdlQWN0aXZlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfYWN0aXZlLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VBY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg Y2xlYXJfYml0KFBHX2FjdGl2ZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNv bmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZs YWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19DbGVhclBh Z2VBY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfYWN0aXZlLCAmKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkp KSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZUFjdGl2ZShzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX2FjdGl2ZSwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkp KTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVdvcmtpbmdzZXQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3dvcmtpbmdzZXQsICYoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hl YWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIFNldFBhZ2VXb3JraW5nc2V0KHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdf d29ya2luZ3NldCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBv dW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlV29ya2luZ3Nl dChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfd29ya2luZ3NldCwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsg Y29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VXb3JraW5nc2V0KHN0cnVjdCBw YWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoUEdfd29ya2luZ3NldCwgJih7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkp KSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVNsYWIoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgcmV0dXJuIHRlc3RfYml0KFBHX3NsYWIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAg JiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9 KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX1Nl dFBhZ2VTbGFiKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19zbGFiLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21w b3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIHZvaWQgX19DbGVhclBhZ2VTbGFiKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9f Y2xlYXJfYml0KFBHX3NsYWIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRh aWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21w b3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3Mp OyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlU2xv YkZyZWUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3Nsb2JfZnJlZSwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkp KTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0UGFnZVNsb2JGcmVlKHN0cnVjdCBwYWdlICpw YWdlKSB7IF9fc2V0X2JpdChQR19zbG9iX2ZyZWUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0p OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X0NsZWFyUGFnZVNsb2JGcmVlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX3Ns b2JfZnJlZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkp KSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQo cGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VDaGVja2VkKHN0cnVj dCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19jaGVja2VkLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7 IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VDaGVja2Vk KHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfY2hlY2tlZCwgJih7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VDaGVja2Vk KHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19jaGVja2VkLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIGludCBQYWdlUGlubmVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQ R19waW5uZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFnZUNvbXBvdW5kKHBh Z2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgU2V0UGFnZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3Bp bm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkp KSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBh Z2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBDbGVhclBhZ2VQaW5uZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3Bp bm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkp KSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBh Z2U7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgVGVzdFNldFBhZ2VQaW5uZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJu IHRlc3RfYW5kX3NldF9iaXQoUEdfcGlubmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgx ICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFn ZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVBpbm5lZChzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3Bpbm5lZCwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+Zmxh Z3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdl U2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfc2F2ZXBp bm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlQ29tcG91bmQocGFnZSkp KSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBh Z2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBTZXRQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3Nh dmVwaW5uZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBh Z2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgQ2xlYXJQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9i aXQoUEdfc2F2ZXBpbm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29t cG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChw YWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9OwoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUZvcmVpZ24oc3RydWN0IHBhZ2UgKnBhZ2UpIHsg cmV0dXJuIHRlc3RfYml0KFBHX2ZvcmVpZ24sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZUZvcmVpZ24oc3RydWN0IHBhZ2UgKnBh Z2UpIHsgc2V0X2JpdChQR19mb3JlaWduLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZUZvcmVpZ24oc3RydWN0IHBhZ2UgKnBh Z2UpIHsgY2xlYXJfYml0KFBHX2ZvcmVpZ24sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfTsKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VYZW5SZW1hcHBlZChzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfeGVuX3JlbWFwcGVkLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VYZW5S ZW1hcHBlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3hlbl9yZW1hcHBlZCwgJih7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9 KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVh clBhZ2VYZW5SZW1hcHBlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfeGVuX3Jl bWFwcGVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdl KSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsg cGFnZTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlWGVuUmVtYXBwZWQoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR194ZW5fcmVtYXBwZWQsICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdz KTsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlUmVzZXJ2ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3Jl c2VydmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChwYWdl KSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsg cGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIFNldFBhZ2VSZXNlcnZlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3Jl c2VydmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdl KSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsg cGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIENsZWFyUGFnZVJlc2VydmVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQ R19yZXNlcnZlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQo cGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlUmVzZXJ2ZWQoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgX19jbGVhcl9iaXQoUEdfcmVzZXJ2ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX1NldFBhZ2VSZXNlcnZlZChzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdfcmVzZXJ2ZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2Yo KCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVN3YXBCYWNr ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3N3YXBiYWNrZWQsICYo eyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7 IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlU3dhcEJhY2tlZChzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBzZXRfYml0KFBHX3N3YXBiYWNrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEg JiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9 KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVh clBhZ2VTd2FwQmFja2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19zd2FwYmFj a2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsg KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZVN3YXBCYWNr ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfc3dhcGJhY2tlZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29t cG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlU3dhcEJhY2tlZChzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdfc3dhcGJhY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko UGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdl KTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50 IFBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19wcml2 YXRlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBw YWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCBTZXRQYWdlUHJpdmF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3ByaXZhdGUs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENs ZWFyUGFnZVByaXZhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3ByaXZhdGUs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9f U2V0UGFnZVByaXZhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19zZXRfYml0KFBHX3ByaXZhdGUs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7 IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IHZvaWQgX19DbGVhclBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0 KFBHX3ByaXZhdGUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdl KSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgaW50IFBhZ2VQcml2YXRlMihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g dGVzdF9iaXQoUEdfcHJpdmF0ZV8yLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9p c29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlUHJpdmF0ZTIoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg c2V0X2JpdChQR19wcml2YXRlXzIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVByaXZhdGUyKHN0cnVjdCBwYWdlICpwYWdlKSB7 IGNsZWFyX2JpdChQR19wcml2YXRlXzIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBpbnQgVGVzdFNldFBhZ2VQcml2YXRlMihzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChQR19wcml2YXRlXzIsICYoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0g c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVByaXZh dGUyKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoUEdfcHJp dmF0ZV8yLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIGludCBQYWdlT3duZXJQcml2MShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVz dF9iaXQoUEdfb3duZXJfcHJpdl8xLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9p c29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlT3duZXJQcml2MShzdHJ1Y3QgcGFnZSAqcGFnZSkg eyBzZXRfYml0KFBHX293bmVyX3ByaXZfMSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFn ZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlT3duZXJQcml2MShzdHJ1Y3QgcGFnZSAq cGFnZSkgeyBjbGVhcl9iaXQoUEdfb3duZXJfcHJpdl8xLCAmKHsgKCh2b2lkKShzaXplb2YoKCBs b25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAg c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZU93bmVy UHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19v d25lcl9wcml2XzEsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdl KSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQ YWdlV3JpdGViYWNrKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR193cml0 ZWJhY2ssICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFnZVRhaWwocGFnZSkpKSkp OyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBh Z2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAg c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdFNldFBhZ2VXcml0ZWJh Y2soc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQoUEdfd3JpdGVi YWNrLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsg KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlV3JpdGViYWNrKHN0cnVj dCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoUEdfd3JpdGViYWNrLCAm KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZU1hcHBlZFRvRGlzayhzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfbWFwcGVkdG9kaXNrLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKSgwICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2Yo KCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9o ZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgU2V0UGFnZU1hcHBlZFRvRGlzayhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRf Yml0KFBHX21hcHBlZHRvZGlzaywgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdl VGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZU1h cHBlZFRvRGlzayhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfbWFwcGVkdG9kaXNr LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkp KSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VSZWNs YWltKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19yZWNsYWltLCAmKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBj b21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVJlY2xhaW0oc3RydWN0IHBhZ2UgKnBhZ2UpIHsg c2V0X2JpdChQR19yZWNsYWltLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VU YWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29t cG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdz KTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlUmVj bGFpbShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfcmVjbGFpbSwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91 bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6ICBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlUmVjbGFpbShzdHJ1Y3QgcGFnZSAq cGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3JlY2xhaW0sICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5k X2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBQYWdlUmVhZGFoZWFkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJl dHVybiB0ZXN0X2JpdChQR19yZWNsYWltLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VSZWFkYWhlYWQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgc2V0X2JpdChQR19yZWNsYWltLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVJlYWRhaGVhZChzdHJ1Y3QgcGFnZSAq cGFnZSkgeyBjbGVhcl9iaXQoUEdfcmVjbGFpbSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko MSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBh Z2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAgc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVJlYWRhaGVh ZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3JlY2xh aW0sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkp KTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIyAzNzYgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZs YWdzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgUGFnZUhpZ2hNZW0oY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpIHsg cmV0dXJuIDA7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBTZXRQYWdlSGlnaE1lbShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyB9IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgQ2xlYXJQYWdlSGlnaE1lbShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQ YWdlU3dhcENhY2hlKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAg cGFnZSA9IGNvbXBvdW5kX2hlYWQocGFnZSk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gUGFnZVN3 YXBCYWNrZWQocGFnZSkgJiYgdGVzdF9iaXQoUEdfc3dhcGNhY2hlLCAmcGFnZS0+ZmxhZ3MpOwox NDQ3NDogCjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IHZvaWQgU2V0UGFnZVN3YXBDYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3N3 YXBjYWNoZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkp KSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQo cGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VTd2FwQ2Fj aGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3N3YXBjYWNoZSwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91 bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFn ZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR191bmV2 aWN0YWJsZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5k X2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVVuZXZpY3RhYmxlKHN0 cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfdW5ldmljdGFibGUsICYoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBv dW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIENsZWFyUGFnZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNs ZWFyX2JpdChQR191bmV2aWN0YWJsZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSkt PmZsYWdzKTsgfQoxNDQ3NDogIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCBfX0NsZWFyUGFnZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0 KFBHX3VuZXZpY3RhYmxlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQo Y29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3Mp OyB9CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENs ZWFyUGFnZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9j bGVhcl9iaXQoUEdfdW5ldmljdGFibGUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0p LT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBQYWdlTWxvY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g dGVzdF9iaXQoUEdfbWxvY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdl VGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VNbG9j a2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfbWxvY2tlZCwgJih7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9m KCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRf aGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIENsZWFyUGFnZU1sb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJf Yml0KFBHX21sb2NrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwo cGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3Vu ZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9 CjE0NDc0OiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQ YWdlTWxvY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX2NsZWFyX2JpdChQR19tbG9ja2VkLCAm KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoxNDQ3NDogIHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RTZXRQYWdlTWxvY2tlZChzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChQR19tbG9ja2VkLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21w b3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlTWxvY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkg eyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX21sb2NrZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxv bmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQo cGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IGludCBQYWdlVW5jYWNoZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBH X3VuY2FjaGVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChw YWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkp KTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSB2b2lkIFNldFBhZ2VVbmNhY2hlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBH X3VuY2FjaGVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChw YWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkp KTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSB2b2lkIENsZWFyUGFnZVVuY2FjaGVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2Jp dChQR191bmNhY2hlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91 bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdl KSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAjIDQxOSAiLi9pbmNsdWRlL2xp bnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBQYWdlSFdQb2lzb24oY29uc3Qgc3RydWN0IHBh Z2UgKnBhZ2UpIHsgcmV0dXJuIDA7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBTZXRQYWdlSFdQb2lzb24oc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIENsZWFyUGFnZUhXUG9pc29uKHN0cnVjdCBwYWdlICpwYWdlKSB7IH0K MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgc2V0X2h3cG9pc29uX2ZyZWVfYnVkZHlfcGFnZShzdHJ1Y3QgcGFnZSAqcGFn ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDU2ICIuL2lu Y2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSBpbnQgUGFnZU1hcHBpbmdGbGFncyhzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKCh1bnNpZ25lZCBsb25nKXBhZ2UtPm1hcHBpbmcgJiAoMHgxIHwg MHgyKSkgIT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSBpbnQgUGFnZUFub24oc3RydWN0IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7CjE0 NDc0OiAgcGFnZSA9IGNvbXBvdW5kX2hlYWQocGFnZSk7CjE0NDc0OiAgcmV0dXJuICgodW5zaWdu ZWQgbG9uZylwYWdlLT5tYXBwaW5nICYgMHgxKSAhPSAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBfX1BhZ2VNb3ZhYmxlKHN0 cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKHVuc2lnbmVkIGxvbmcp cGFnZS0+bWFwcGluZyAmICgweDEgfCAweDIpKSA9PQoxNDQ3NDogICAgIDB4MjsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgNDgwICIuL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUtzbShzdHJ1Y3QgcGFnZSAqcGFn ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwYWdlID0gY29tcG91bmRfaGVhZChwYWdlKTsKMTQ0NzQ6ICBy ZXR1cm4gKCh1bnNpZ25lZCBsb25nKXBhZ2UtPm1hcHBpbmcgJiAoMHgxIHwgMHgyKSkgPT0KMTQ0 NzQ6ICAgICAoMHgxIHwgMHgyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogdTY0IHN0YWJsZV9wYWdlX2ZsYWdzKHN0cnVjdCBwYWdlICpwYWdlKTsKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IFBhZ2VVcHRvZGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpbnQgcmV0OwoxNDQ3NDogIHBhZ2UgPSBjb21wb3VuZF9oZWFkKHBhZ2UpOwoxNDQ3 NDogIHJldCA9IHRlc3RfYml0KFBHX3VwdG9kYXRlLCAmKHBhZ2UpLT5mbGFncyk7CjE0NDc0OiAj IDUwNSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6ICBpZiAocmV0KQoxNDQ3 NDogICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0UGFnZVVwdG9kYXRlKHN0cnVjdCBwYWdlICpwYWdl KQoxNDQ3NDogewoxNDQ3NDogICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVRhaWwocGFnZSkp KSkpOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0 OiAgX19zZXRfYml0KFBHX3VwdG9kYXRlLCAmcGFnZS0+ZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVVw dG9kYXRlKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogICgodm9pZCkoc2l6ZW9m KCggbG9uZykoUGFnZVRhaWwocGFnZSkpKSkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OwoxNDQ3NDogIHNldF9iaXQoUEdfdXB0b2RhdGUsICZwYWdlLT5mbGFncyk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVh clBhZ2VVcHRvZGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfdXB0b2RhdGUs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkp KSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CjE0NDc0OiAKMTQ0NzQ6 IGludCB0ZXN0X2NsZWFyX3BhZ2Vfd3JpdGViYWNrKHN0cnVjdCBwYWdlICpwYWdlKTsKMTQ0NzQ6 IGludCBfX3Rlc3Rfc2V0X3BhZ2Vfd3JpdGViYWNrKHN0cnVjdCBwYWdlICpwYWdlLCBib29sIGtl ZXBfd3JpdGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBzZXRfcGFnZV93cml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpCjE0NDc0 OiB7CjE0NDc0OiAgX190ZXN0X3NldF9wYWdlX3dyaXRlYmFjayhwYWdlLCBmYWxzZSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X3BhZ2Vfd3JpdGViYWNrX2tlZXB3cml0ZShzdHJ1 Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3Rlc3Rfc2V0X3BhZ2Vfd3JpdGViYWNr KHBhZ2UsIHRydWUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBQYWdlSGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g dGVzdF9iaXQoUEdfaGVhZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVk KHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHZvaWQgX19TZXRQYWdlSGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX3NldF9i aXQoUEdfaGVhZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2Up KSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgX19DbGVhclBhZ2VIZWFkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0 KFBHX2hlYWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIENsZWFyUGFnZUhlYWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX2hl YWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBh Z2U7IH0pLT5mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkIHNldF9jb21wb3VuZF9oZWFkKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1 Y3QgcGFnZSAqaGVhZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZihwYWdlLT5j b21wb3VuZF9oZWFkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5 cGVvZihwYWdlLT5jb21wb3VuZF9oZWFkKSkgKCh1bnNpZ25lZCBsb25nKWhlYWQgKyAxKSB9OyBf X3dyaXRlX29uY2Vfc2l6ZSgmKHBhZ2UtPmNvbXBvdW5kX2hlYWQpLCBfX3UuX19jLCBzaXplb2Yo cGFnZS0+Y29tcG91bmRfaGVhZCkpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgY2xlYXJfY29tcG91 bmRfaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5 cGVvZihwYWdlLT5jb21wb3VuZF9oZWFkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAu X192YWwgPSAoIHR5cGVvZihwYWdlLT5jb21wb3VuZF9oZWFkKSkgKDApIH07IF9fd3JpdGVfb25j ZV9zaXplKCYocGFnZS0+Y29tcG91bmRfaGVhZCksIF9fdS5fX2MsIHNpemVvZihwYWdlLT5jb21w b3VuZF9oZWFkKSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBDbGVhclBhZ2VDb21wb3VuZChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0 NzQ6ICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFQYWdlSGVhZChwYWdlKSksIDApKSBk byB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIg IlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIg IjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIl YzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1 Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAi XHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3Bh Z2UtZmxhZ3MuaCIpLCAiaSIgKDU2NSksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdf ZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIu cHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0 IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgxNCkpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsg X19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgfSB3aGls ZSAoMCk7CjE0NDc0OiAgQ2xlYXJQYWdlSGVhZChwYWdlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgUGFnZUh1Z2Uoc3RydWN0IHBh Z2UgKnBhZ2UpOwoxNDQ3NDogaW50IFBhZ2VIZWFkSHVnZShzdHJ1Y3QgcGFnZSAqcGFnZSk7CjE0 NDc0OiBib29sIHBhZ2VfaHVnZV9hY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpOwoxNDQ3NDogIyA1 OTYgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgUGFnZVRyYW5zSHVn ZShzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxv bmcpKFBhZ2VUYWlsKHBhZ2UpKSkpKTsKMTQ0NzQ6ICByZXR1cm4gUGFnZUhlYWQocGFnZSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgUGFnZVRyYW5zQ29tcG91bmQoc3RydWN0IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIFBhZ2VDb21wb3VuZChwYWdlKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjMzICIu L2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IFBhZ2VUcmFuc0NvbXBvdW5k TWFwKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBwYWdlICpoZWFk OwoxNDQ3NDogCjE0NDc0OiAgaWYgKCFQYWdlVHJhbnNDb21wb3VuZChwYWdlKSkKMTQ0NzQ6ICAg cmV0dXJuIDA7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoUGFnZUFub24ocGFnZSkpCjE0NDc0OiAgIHJl dHVybiBhdG9taWNfcmVhZCgmcGFnZS0+X21hcGNvdW50KSA8IDA7CjE0NDc0OiAKMTQ0NzQ6ICBo ZWFkID0gY29tcG91bmRfaGVhZChwYWdlKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBhdG9taWNf cmVhZCgmcGFnZS0+X21hcGNvdW50KSA9PQoxNDQ3NDogICAgICAgICBhdG9taWNfcmVhZChjb21w b3VuZF9tYXBjb3VudF9wdHIoaGVhZCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IFBhZ2VUcmFuc1RhaWwoc3RydWN0 IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIFBhZ2VUYWlsKHBhZ2UpOwoxNDQ3 NDogfQoxNDQ3NDogIyA2NzIgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgUGFnZURvdWJsZU1hcChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gUGFnZUhlYWQocGFnZSkgJiYgdGVzdF9iaXQoUEdfZG91YmxlX21hcCwgJnBhZ2VbMV0uZmxh Z3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIFNldFBhZ2VEb3VibGVNYXAoc3RydWN0 IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7CjE0NDc0OiAgKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFn ZUhlYWQocGFnZSkpKSkpOwoxNDQ3NDogIHNldF9iaXQoUEdfZG91YmxlX21hcCwgJnBhZ2VbMV0u ZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIENsZWFyUGFnZURvdWJsZU1hcChz dHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcp KCFQYWdlSGVhZChwYWdlKSkpKSk7CjE0NDc0OiAgY2xlYXJfYml0KFBHX2RvdWJsZV9tYXAsICZw YWdlWzFdLmZsYWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBUZXN0U2V0UGFnZURvdWJsZU1hcChz dHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcp KCFQYWdlSGVhZChwYWdlKSkpKSk7CjE0NDc0OiAgcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQoUEdf ZG91YmxlX21hcCwgJnBhZ2VbMV0uZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg VGVzdENsZWFyUGFnZURvdWJsZU1hcChzdHJ1Y3QgcGFnZSAqcGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlSGVhZChwYWdlKSkpKSk7CjE0NDc0OiAgcmV0 dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19kb3VibGVfbWFwLCAmcGFnZVsxXS5mbGFncyk7CjE0 NDc0OiB9CjE0NDc0OiAjIDczMSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBwYWdlX2hhc190eXBlKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAoaW50KXBhZ2UtPnBhZ2VfdHlwZSA8IC0xMjg7CjE0NDc0OiB9CjE0NDc0OiAjIDc1NiAi Li9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgaW50IFBhZ2VCdWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4g KChwYWdlLT5wYWdlX3R5cGUgJiAoMHhmMDAwMDAwMCB8IDB4MDAwMDAwODApKSA9PSAweGYwMDAw MDAwKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdl QnVkZHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSghKChwYWdl LT5wYWdlX3R5cGUgJiAoMHhmMDAwMDAwMCB8IDApKSA9PSAweGYwMDAwMDAwKSkpKSk7IHBhZ2Ut PnBhZ2VfdHlwZSAmPSB+MHgwMDAwMDA4MDsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgX19DbGVhclBhZ2VCdWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKCFQYWdlQnVkZHkocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5cGUgfD0g MHgwMDAwMDA4MDsgfQoxNDQ3NDogIyA3NjUgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlT2ZmbGlu ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlLT5wYWdlX3R5cGUgJiAoMHhmMDAw MDAwMCB8IDB4MDAwMDAxMDApKSA9PSAweGYwMDAwMDAwKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlT2ZmbGluZShzdHJ1Y3QgcGFnZSAqcGFnZSkg eyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAw IHwgMCkpID09IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwMTAw OyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZU9m ZmxpbmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZU9m ZmxpbmUocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5cGUgfD0gMHgwMDAwMDEwMDsgfQoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VLbWVtY2coc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0 dXJuICgocGFnZS0+cGFnZV90eXBlICYgKDB4ZjAwMDAwMDAgfCAweDAwMDAwMjAwKSkgPT0gMHhm MDAwMDAwMCk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0 UGFnZUttZW1jZyhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCEo KHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMCkpID09IDB4ZjAwMDAwMDApKSkpKTsg cGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwMjAwOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUttZW1jZyhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlS21lbWNnKHBhZ2UpKSkpKTsgcGFnZS0+cGFnZV90 eXBlIHw9IDB4MDAwMDAyMDA7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVRhYmxlKHN0cnVj dCBwYWdlICpwYWdlKSB7IHJldHVybiAoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwg MHgwMDAwMDQwMCkpID09IDB4ZjAwMDAwMDApOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgdm9pZCBfX1NldFBhZ2VUYWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMCkpID09 IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwNDAwOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZVRhYmxlKHN0cnVj dCBwYWdlICpwYWdlKSB7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VUYWJsZShwYWdlKSkp KSk7IHBhZ2UtPnBhZ2VfdHlwZSB8PSAweDAwMDAwNDAwOyB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50 IFBhZ2VHdWFyZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlLT5wYWdlX3R5cGUg JiAoMHhmMDAwMDAwMCB8IDB4MDAwMDA4MDApKSA9PSAweGYwMDAwMDAwKTsgfSBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlR3VhcmQoc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSghKChwYWdlLT5wYWdlX3R5cGUgJiAoMHhm MDAwMDAwMCB8IDApKSA9PSAweGYwMDAwMDAwKSkpKSk7IHBhZ2UtPnBhZ2VfdHlwZSAmPSB+MHgw MDAwMDgwMDsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19DbGVh clBhZ2VHdWFyZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQ YWdlR3VhcmQocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5cGUgfD0gMHgwMDAwMDgwMDsgfQoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gYm9vbCBpc19mcmVlX2J1ZGR5X3BhZ2Uoc3RydWN0IHBhZ2UgKnBh Z2UpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlSXNvbGF0ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX2lz b2xhdGVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBfX1NldFBhZ2VJc29sYXRlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdf aXNvbGF0ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIF9fQ2xlYXJQYWdlSXNvbGF0ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9i aXQoUEdfaXNvbGF0ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChw YWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IFBhZ2VTbGFiUGZtZW1hbGxvYyhzdHJ1Y3QgcGFnZSAq cGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlU2xhYihw YWdlKSkpKSk7CjE0NDc0OiAgcmV0dXJuIFBhZ2VBY3RpdmUocGFnZSk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgU2V0UGFnZVNsYWJQZm1lbWFsbG9jKHN0cnVjdCBwYWdlICpwYWdlKQox NDQ3NDogewoxNDQ3NDogICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VTbGFiKHBhZ2UpKSkp KTsKMTQ0NzQ6ICBTZXRQYWdlQWN0aXZlKHBhZ2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9fQ2xlYXJQYWdlU2xhYlBmbWVtYWxsb2Moc3RydWN0IHBhZ2UgKnBhZ2UpCjE0NDc0OiB7 CjE0NDc0OiAgKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZVNsYWIocGFnZSkpKSkpOwoxNDQ3 NDogIF9fQ2xlYXJQYWdlQWN0aXZlKHBhZ2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IENsZWFyUGFnZVNsYWJQZm1lbWFsbG9jKHN0cnVjdCBwYWdlICpwYWdlKQoxNDQ3NDogewoxNDQ3 NDogICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VTbGFiKHBhZ2UpKSkpKTsKMTQ0NzQ6ICBD bGVhclBhZ2VBY3RpdmUocGFnZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDg1MiAiLi9pbmNsdWRlL2xp bnV4L3BhZ2UtZmxhZ3MuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwYWdlX2hhc19wcml2YXRlKHN0cnVjdCBwYWdl ICpwYWdlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhIShwYWdlLT5mbGFncyAmICgxVUwgPDwg UEdfcHJpdmF0ZSB8IDFVTCA8PCBQR19wcml2YXRlXzIpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjMg Ii4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoxNDQ3NDogIyA0MSAiLi9pbmNsdWRlL2xpbnV4 L21tem9uZS5oIgoxNDQ3NDogZW51bSBtaWdyYXRldHlwZSB7CjE0NDc0OiAgTUlHUkFURV9VTk1P VkFCTEUsCjE0NDc0OiAgTUlHUkFURV9NT1ZBQkxFLAoxNDQ3NDogIE1JR1JBVEVfUkVDTEFJTUFC TEUsCjE0NDc0OiAgTUlHUkFURV9QQ1BUWVBFUywKMTQ0NzQ6ICBNSUdSQVRFX0hJR0hBVE9NSUMg PSBNSUdSQVRFX1BDUFRZUEVTLAoxNDQ3NDogIyA2NCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5o IgoxNDQ3NDogIE1JR1JBVEVfSVNPTEFURSwKMTQ0NzQ6IAoxNDQ3NDogIE1JR1JBVEVfVFlQRVMK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25z dCBtaWdyYXRldHlwZV9uYW1lc1tNSUdSQVRFX1RZUEVTXTsKMTQ0NzQ6ICMgODAgIi4vaW5jbHVk ZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXNfbWlncmF0ZV9tb3ZhYmxlKGludCBtdCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmFsc2UgfHwgbXQgPT0gTUlHUkFURV9NT1ZBQkxFOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgcGFnZV9ncm91cF9ieV9tb2JpbGl0eV9kaXNhYmxlZDsKMTQ0NzQ6ICMgOTggIi4v aW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0cnVjdCBmcmVlX2FyZWEgewoxNDQ3NDog IHN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saXN0W01JR1JBVEVfVFlQRVNdOwoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgbnJfZnJlZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBh ZGRfdG9fZnJlZV9hcmVhKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgZnJlZV9hcmVhICphcmVh LAoxNDQ3NDogICAgICAgICBpbnQgbWlncmF0ZXR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgbGlzdF9h ZGQoJnBhZ2UtPmxydSwgJmFyZWEtPmZyZWVfbGlzdFttaWdyYXRldHlwZV0pOwoxNDQ3NDogIGFy ZWEtPm5yX2ZyZWUrKzsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFkZF90 b19mcmVlX2FyZWFfdGFpbChzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGZyZWVfYXJlYSAqYXJl YSwKMTQ0NzQ6ICAgICAgIGludCBtaWdyYXRldHlwZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBsaXN0X2Fk ZF90YWlsKCZwYWdlLT5scnUsICZhcmVhLT5mcmVlX2xpc3RbbWlncmF0ZXR5cGVdKTsKMTQ0NzQ6 ICBhcmVhLT5ucl9mcmVlKys7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFkZF90b19mcmVlX2FyZWFfcmFuZG9tKHN0 cnVjdCBwYWdlICpwYWdlLAoxNDQ3NDogICBzdHJ1Y3QgZnJlZV9hcmVhICphcmVhLCBpbnQgbWln cmF0ZXR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgYWRkX3RvX2ZyZWVfYXJlYShwYWdlLCBhcmVhLCBt aWdyYXRldHlwZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IG1vdmVfdG9fZnJlZV9hcmVhKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgZnJlZV9hcmVhICph cmVhLAoxNDQ3NDogICAgICAgICBpbnQgbWlncmF0ZXR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgbGlz dF9tb3ZlKCZwYWdlLT5scnUsICZhcmVhLT5mcmVlX2xpc3RbbWlncmF0ZXR5cGVdKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBhZ2UgKmdldF9wYWdlX2Zyb21fZnJlZV9hcmVhKHN0 cnVjdCBmcmVlX2FyZWEgKmFyZWEsCjE0NDc0OiAgICAgICAgICBpbnQgbWlncmF0ZXR5cGUpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWRfXyA9ICgmYXJl YS0+ZnJlZV9saXN0W21pZ3JhdGV0eXBlXSk7IHN0cnVjdCBsaXN0X2hlYWQgKnBvc19fID0gKHsg dW5pb24geyB0eXBlb2YoaGVhZF9fLT5uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBp ZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKGhlYWRfXy0+bmV4dCksIF9fdS5fX2MsIHNpemVvZiho ZWFkX18tPm5leHQpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihoZWFkX18tPm5l eHQpLCBfX3UuX19jLCBzaXplb2YoaGVhZF9fLT5uZXh0KSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9f dS5fX3ZhbDsgfSk7IHBvc19fICE9IGhlYWRfXyA/ICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICop KHBvc19fKTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNDEodm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFp bmVyX29mKCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv ZigqKHBvc19fKSksIHR5cGVvZigoKHN0cnVjdCBwYWdlICopMCktPmxydSkpICYmICFfX2J1aWx0 aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKHBvc19fKSksIHR5cGVvZih2b2lkKSkpKSkg X19jb21waWxldGltZV9hc3NlcnRfMTQxKCk7IH0gd2hpbGUgKDApOyAoKHN0cnVjdCBwYWdlICop KF9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFnZSwgbHJ1KSkpOyB9KSA6ICgo dm9pZCAqKTApOyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBkZWxfcGFnZV9mcm9tX2ZyZWVfYXJlYShzdHJ1Y3QgcGFnZSAqcGFn ZSwKMTQ0NzQ6ICAgc3RydWN0IGZyZWVfYXJlYSAqYXJlYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBsaXN0 X2RlbCgmcGFnZS0+bHJ1KTsKMTQ0NzQ6ICBfX0NsZWFyUGFnZUJ1ZGR5KHBhZ2UpOwoxNDQ3NDog ICgocGFnZSktPnByaXZhdGUgPSAoMCkpOwoxNDQ3NDogIGFyZWEtPm5yX2ZyZWUtLTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBmcmVlX2FyZWFfZW1wdHkoc3RydWN0IGZyZWVfYXJlYSAq YXJlYSwgaW50IG1pZ3JhdGV0eXBlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBsaXN0X2VtcHR5 KCZhcmVhLT5mcmVlX2xpc3RbbWlncmF0ZXR5cGVdKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHBnbGlzdF9kYXRhOwoxNDQ3NDogIyAxNjggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUu aCIKMTQ0NzQ6IHN0cnVjdCB6b25lX3BhZGRpbmcgewoxNDQ3NDogIGNoYXIgeFswXTsKMTQ0NzQ6 IH0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMSA8PCAoNikpKSk7CjE0NDc0OiAjIDE5MCAi Li9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogZW51bSB6b25lX3N0YXRfaXRlbSB7CjE0 NDc0OiAKMTQ0NzQ6ICBOUl9GUkVFX1BBR0VTLAoxNDQ3NDogIE5SX1pPTkVfTFJVX0JBU0UsCjE0 NDc0OiAgTlJfWk9ORV9JTkFDVElWRV9BTk9OID0gTlJfWk9ORV9MUlVfQkFTRSwKMTQ0NzQ6ICBO Ul9aT05FX0FDVElWRV9BTk9OLAoxNDQ3NDogIE5SX1pPTkVfSU5BQ1RJVkVfRklMRSwKMTQ0NzQ6 ICBOUl9aT05FX0FDVElWRV9GSUxFLAoxNDQ3NDogIE5SX1pPTkVfVU5FVklDVEFCTEUsCjE0NDc0 OiAgTlJfWk9ORV9XUklURV9QRU5ESU5HLAoxNDQ3NDogIE5SX01MT0NLLAoxNDQ3NDogIE5SX1BB R0VUQUJMRSwKMTQ0NzQ6ICBOUl9LRVJORUxfU1RBQ0tfS0IsCjE0NDc0OiAKMTQ0NzQ6ICBOUl9C T1VOQ0UsCjE0NDc0OiAKMTQ0NzQ6ICBOUl9aU1BBR0VTLAoxNDQ3NDogCjE0NDc0OiAgTlJfRlJF RV9DTUFfUEFHRVMsCjE0NDc0OiAgTlJfVk1fWk9ORV9TVEFUX0lURU1TIH07CjE0NDc0OiAKMTQ0 NzQ6IGVudW0gbm9kZV9zdGF0X2l0ZW0gewoxNDQ3NDogIE5SX0xSVV9CQVNFLAoxNDQ3NDogIE5S X0lOQUNUSVZFX0FOT04gPSBOUl9MUlVfQkFTRSwKMTQ0NzQ6ICBOUl9BQ1RJVkVfQU5PTiwKMTQ0 NzQ6ICBOUl9JTkFDVElWRV9GSUxFLAoxNDQ3NDogIE5SX0FDVElWRV9GSUxFLAoxNDQ3NDogIE5S X1VORVZJQ1RBQkxFLAoxNDQ3NDogIE5SX1NMQUJfUkVDTEFJTUFCTEUsCjE0NDc0OiAgTlJfU0xB Ql9VTlJFQ0xBSU1BQkxFLAoxNDQ3NDogIE5SX0lTT0xBVEVEX0FOT04sCjE0NDc0OiAgTlJfSVNP TEFURURfRklMRSwKMTQ0NzQ6ICBXT1JLSU5HU0VUX05PREVTLAoxNDQ3NDogIFdPUktJTkdTRVRf UkVGQVVMVCwKMTQ0NzQ6ICBXT1JLSU5HU0VUX0FDVElWQVRFLAoxNDQ3NDogIFdPUktJTkdTRVRf UkVTVE9SRSwKMTQ0NzQ6ICBXT1JLSU5HU0VUX05PREVSRUNMQUlNLAoxNDQ3NDogIE5SX0FOT05f TUFQUEVELAoxNDQ3NDogIE5SX0ZJTEVfTUFQUEVELAoxNDQ3NDogCjE0NDc0OiAgTlJfRklMRV9Q QUdFUywKMTQ0NzQ6ICBOUl9GSUxFX0RJUlRZLAoxNDQ3NDogIE5SX1dSSVRFQkFDSywKMTQ0NzQ6 ICBOUl9XUklURUJBQ0tfVEVNUCwKMTQ0NzQ6ICBOUl9TSE1FTSwKMTQ0NzQ6ICBOUl9TSE1FTV9U SFBTLAoxNDQ3NDogIE5SX1NITUVNX1BNRE1BUFBFRCwKMTQ0NzQ6ICBOUl9GSUxFX1RIUFMsCjE0 NDc0OiAgTlJfRklMRV9QTURNQVBQRUQsCjE0NDc0OiAgTlJfQU5PTl9USFBTLAoxNDQ3NDogIE5S X1VOU1RBQkxFX05GUywKMTQ0NzQ6ICBOUl9WTVNDQU5fV1JJVEUsCjE0NDc0OiAgTlJfVk1TQ0FO X0lNTUVESUFURSwKMTQ0NzQ6ICBOUl9ESVJUSUVELAoxNDQ3NDogIE5SX1dSSVRURU4sCjE0NDc0 OiAgTlJfS0VSTkVMX01JU0NfUkVDTEFJTUFCTEUsCjE0NDc0OiAgTlJfVk1fTk9ERV9TVEFUX0lU RU1TCjE0NDc0OiB9OwoxNDQ3NDogIyAyNjIgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0 NzQ6IGVudW0gbHJ1X2xpc3QgewoxNDQ3NDogIExSVV9JTkFDVElWRV9BTk9OID0gMCwKMTQ0NzQ6 ICBMUlVfQUNUSVZFX0FOT04gPSAwICsgMSwKMTQ0NzQ6ICBMUlVfSU5BQ1RJVkVfRklMRSA9IDAg KyAyLAoxNDQ3NDogIExSVV9BQ1RJVkVfRklMRSA9IDAgKyAyICsgMSwKMTQ0NzQ6ICBMUlVfVU5F VklDVEFCTEUsCjE0NDc0OiAgTlJfTFJVX0xJU1RTCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXNfZmlsZV9scnUoZW51bSBscnVf bGlzdCBscnUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChscnUgPT0gTFJVX0lOQUNUSVZFX0ZJ TEUgfHwgbHJ1ID09IExSVV9BQ1RJVkVfRklMRSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgaXNfYWN0aXZlX2xydShlbnVtIGxydV9saXN0IGxydSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKGxydSA9PSBMUlVfQUNUSVZFX0FOT04gfHwgbHJ1ID09IExSVV9BQ1RJVkVfRklMRSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB6b25lX3JlY2xhaW1fc3RhdCB7CjE0NDc0OiAj IDI5NCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcmVj ZW50X3JvdGF0ZWRbMl07CjE0NDc0OiAgdW5zaWduZWQgbG9uZyByZWNlbnRfc2Nhbm5lZFsyXTsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gbHJ1dmVjX2ZsYWdzIHsKMTQ0NzQ6ICBMUlVW RUNfQ09OR0VTVEVELAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBscnV2ZWMgewoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdHNbTlJfTFJVX0xJU1RT XTsKMTQ0NzQ6ICBzdHJ1Y3Qgem9uZV9yZWNsYWltX3N0YXQgcmVjbGFpbV9zdGF0OwoxNDQ3NDog CjE0NDc0OiAgYXRvbWljX2xvbmdfdCBpbmFjdGl2ZV9hZ2U7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHJlZmF1bHRzOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFnczsK MTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQ7CjE0NDc0OiAKMTQ0NzQ6 IH07CjE0NDc0OiAjIDMyNiAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogdHlwZWRl ZiB1bnNpZ25lZCBpc29sYXRlX21vZGVfdDsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB6b25lX3dhdGVy bWFya3MgewoxNDQ3NDogIFdNQVJLX01JTiwKMTQ0NzQ6ICBXTUFSS19MT1csCjE0NDc0OiAgV01B UktfSElHSCwKMTQ0NzQ6ICBOUl9XTUFSSwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwZXJfY3B1X3BhZ2VzIHsK MTQ0NzQ6ICBpbnQgY291bnQ7CjE0NDc0OiAgaW50IGhpZ2g7CjE0NDc0OiAgaW50IGJhdGNoOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3RzW01JR1JBVEVfUENQ VFlQRVNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBlcl9jcHVfcGFnZXNldCB7 CjE0NDc0OiAgc3RydWN0IHBlcl9jcHVfcGFnZXMgcGNwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzOCBzdGF0X3RocmVzaG9sZDsKMTQ0NzQ6ICBzOCB2 bV9zdGF0X2RpZmZbTlJfVk1fWk9ORV9TVEFUX0lURU1TXTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgewoxNDQ3NDogIHM4IHN0YXRfdGhy ZXNob2xkOwoxNDQ3NDogIHM4IHZtX25vZGVfc3RhdF9kaWZmW05SX1ZNX05PREVfU1RBVF9JVEVN U107CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB6b25lX3R5 cGUgewoxNDQ3NDogIyA0MDAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6ICBaT05F X0RNQSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgWk9ORV9ETUEzMiwKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBaT05FX05PUk1BTCwKMTQ0 NzQ6ICMgNDIyICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiAgWk9ORV9NT1ZBQkxF LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fTUFYX05SX1pPTkVTCjE0NDc0OiAK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgem9uZSB7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBfd2F0ZXJtYXJrW05S X1dNQVJLXTsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHdhdGVybWFya19ib29zdDsKMTQ0NzQ6IAox NDQ3NDogIHVuc2lnbmVkIGxvbmcgbnJfcmVzZXJ2ZWRfaGlnaGF0b21pYzsKMTQ0NzQ6ICMgNDUw ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiAgbG9uZyBsb3dtZW1fcmVzZXJ2ZVs0 XTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwZ2xpc3Rf ZGF0YSAqem9uZV9wZ2RhdDsKMTQ0NzQ6ICBzdHJ1Y3QgcGVyX2NwdV9wYWdlc2V0ICpwYWdlc2V0 OwoxNDQ3NDogIyA0NjcgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIHpvbmVfc3RhcnRfcGZuOwoxNDQ3NDogIyA1MDQgIi4vaW5jbHVkZS9saW51eC9tbXpv bmUuaCIKMTQ0NzQ6ICBhdG9taWNfbG9uZ190IG1hbmFnZWRfcGFnZXM7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBzcGFubmVkX3BhZ2VzOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcHJlc2VudF9wYWdl czsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IGNoYXIgKm5hbWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IG5yX2lzb2xhdGVfcGFnZWJsb2NrOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgc2VxbG9ja190IHNwYW5fc2VxbG9jazsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50 IGluaXRpYWxpemVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgem9uZV9wYWRkaW5n IF9wYWQxXzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGZyZWVfYXJlYSBmcmVlX2Fy ZWFbMTFdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBzcGlubG9ja190IGxvY2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCB6b25lX3BhZGRpbmcgX3BhZDJfOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcGVyY3B1X2RyaWZ0 X21hcms7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBjb21w YWN0X2NhY2hlZF9mcmVlX3BmbjsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgY29tcGFj dF9jYWNoZWRfbWlncmF0ZV9wZm5bMl07CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBjb21wYWN0X2lu aXRfbWlncmF0ZV9wZm47CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBjb21wYWN0X2luaXRfZnJlZV9w Zm47CjE0NDc0OiAjIDU2MyAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogIHVuc2ln bmVkIGludCBjb21wYWN0X2NvbnNpZGVyZWQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNvbXBhY3Rf ZGVmZXJfc2hpZnQ7CjE0NDc0OiAgaW50IGNvbXBhY3Rfb3JkZXJfZmFpbGVkOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBjb21wYWN0X2Jsb2Nrc2tpcF9mbHVz aDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBjb250aWd1b3VzOwoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IHpvbmVfcGFkZGluZyBfcGFkM187CjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfbG9u Z190IHZtX3N0YXRbTlJfVk1fWk9ORV9TVEFUX0lURU1TXTsKMTQ0NzQ6ICBhdG9taWNfbG9uZ190 IHZtX251bWFfc3RhdFswXTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMSA8 PCAoNikpKSk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGdkYXRfZmxhZ3MgewoxNDQ3NDogIFBHREFU X0RJUlRZLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFBHREFUX1dSSVRFQkFDSywK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgUEdEQVRfUkVDTEFJTV9MT0NLRUQsCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBlbnVtIHpvbmVfZmxhZ3MgewoxNDQ3NDogIFpPTkVfQk9PU1RFRF9XQVRF Uk1BUkssCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQg bG9uZyB6b25lX21hbmFnZWRfcGFnZXMoc3RydWN0IHpvbmUgKnpvbmUpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKWF0b21pY19sb25nX3JlYWQoJnpvbmUtPm1hbmFnZWRf cGFnZXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHpvbmVfZW5kX3Bm bihjb25zdCBzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gem9uZS0+ em9uZV9zdGFydF9wZm4gKyB6b25lLT5zcGFubmVkX3BhZ2VzOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIHpvbmVfc3BhbnNfcGZuKGNvbnN0IHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25l ZCBsb25nIHBmbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gem9uZS0+em9uZV9zdGFydF9wZm4g PD0gcGZuICYmIHBmbiA8IHpvbmVfZW5kX3Bmbih6b25lKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCB6b25lX2lzX2luaXRpYWxpemVkKHN0cnVjdCB6b25lICp6b25lKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiB6b25lLT5pbml0aWFsaXplZDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCB6b25lX2lzX2VtcHR5KHN0cnVjdCB6b25lICp6b25lKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiB6b25lLT5zcGFubmVkX3BhZ2VzID09IDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB6b25lX2ludGVyc2VjdHMoc3RydWN0 IHpvbmUgKnpvbmUsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzKQoxNDQ3NDogewoxNDQ3NDogIGlmICh6b25lX2lzX2VtcHR5KHpvbmUpKQox NDQ3NDogICByZXR1cm4gZmFsc2U7CjE0NDc0OiAgaWYgKHN0YXJ0X3BmbiA+PSB6b25lX2VuZF9w Zm4oem9uZSkgfHwKMTQ0NzQ6ICAgICAgc3RhcnRfcGZuICsgbnJfcGFnZXMgPD0gem9uZS0+em9u ZV9zdGFydF9wZm4pCjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogIyA2NDkgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK MTQ0NzQ6IGVudW0gewoxNDQ3NDogIFpPTkVMSVNUX0ZBTExCQUNLLAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgTUFYX1pPTkVM SVNUUwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3Qgem9uZXJlZiB7CjE0NDc0OiAgc3RydWN0IHpvbmUgKnpvbmU7CjE0NDc0OiAg aW50IHpvbmVfaWR4OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNjg0ICIuL2luY2x1ZGUvbGludXgvbW16 b25lLmgiCjE0NDc0OiBzdHJ1Y3Qgem9uZWxpc3QgewoxNDQ3NDogIHN0cnVjdCB6b25lcmVmIF96 b25lcmVmc1soKDEgPDwgMCkgKiA0KSArIDFdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgcGFnZSAqbWVtX21hcDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZWZlcnJlZF9zcGxpdCB7CjE0NDc0OiAgc3BpbmxvY2tf dCBzcGxpdF9xdWV1ZV9sb2NrOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgc3BsaXRfcXVldWU7 CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzcGxpdF9xdWV1ZV9sZW47CjE0NDc0OiB9OwoxNDQ3NDog IyA3MDkgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0cnVjdCBib290bWVtX2Rh dGE7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBwZ2xpc3RfZGF0YSB7CjE0NDc0OiAgc3RydWN0IHpv bmUgbm9kZV96b25lc1s0XTsKMTQ0NzQ6ICBzdHJ1Y3Qgem9uZWxpc3Qgbm9kZV96b25lbGlzdHNb TUFYX1pPTkVMSVNUU107CjE0NDc0OiAgaW50IG5yX3pvbmVzOwoxNDQ3NDogIyA3MzEgIi4vaW5j bHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6ICBzcGlubG9ja190IG5vZGVfc2l6ZV9sb2NrOwox NDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBub2RlX3N0YXJ0X3BmbjsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIG5vZGVfcHJlc2VudF9wYWdlczsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG5vZGVf c3Bhbm5lZF9wYWdlczsKMTQ0NzQ6IAoxNDQ3NDogIGludCBub2RlX2lkOwoxNDQ3NDogIHdhaXRf cXVldWVfaGVhZF90IGtzd2FwZF93YWl0OwoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IHBmbWVt YWxsb2Nfd2FpdDsKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmtzd2FwZDsKMTQ0NzQ6IAox NDQ3NDogIGludCBrc3dhcGRfb3JkZXI7CjE0NDc0OiAgZW51bSB6b25lX3R5cGUga3N3YXBkX2Ns YXNzem9uZV9pZHg7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQga3N3YXBkX2ZhaWx1cmVzOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBpbnQga2NvbXBhY3RkX21heF9vcmRlcjsKMTQ0NzQ6ICBlbnVtIHpv bmVfdHlwZSBrY29tcGFjdGRfY2xhc3N6b25lX2lkeDsKMTQ0NzQ6ICB3YWl0X3F1ZXVlX2hlYWRf dCBrY29tcGFjdGRfd2FpdDsKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmtjb21wYWN0ZDsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQg bG9uZyB0b3RhbHJlc2VydmVfcGFnZXM7CjE0NDc0OiAjIDc2OCAiLi9pbmNsdWRlL2xpbnV4L21t em9uZS5oIgoxNDQ3NDogIHN0cnVjdCB6b25lX3BhZGRpbmcgX3BhZDFfOwoxNDQ3NDogIHNwaW5s b2NrX3QgbHJ1X2xvY2s7CjE0NDc0OiAjIDc4MCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgox NDQ3NDogIHN0cnVjdCBkZWZlcnJlZF9zcGxpdCBkZWZlcnJlZF9zcGxpdF9xdWV1ZTsKMTQ0NzQ6 ICMgNzkwICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiAgc3RydWN0IGxydXZlYyBf X2xydXZlYzsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3Qgem9uZV9wYWRkaW5nIF9wYWQyXzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg c3RydWN0IHBlcl9jcHVfbm9kZXN0YXQgKnBlcl9jcHVfbm9kZXN0YXRzOwoxNDQ3NDogIGF0b21p Y19sb25nX3Qgdm1fc3RhdFtOUl9WTV9OT0RFX1NUQVRfSVRFTVNdOwoxNDQ3NDogfSBwZ19kYXRh X3Q7CjE0NDc0OiAjIDgxMyAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWdu ZWQgbG9uZyBwZ2RhdF9lbmRfcGZuKHBnX2RhdGFfdCAqcGdkYXQpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHBnZGF0LT5ub2RlX3N0YXJ0X3BmbiArIHBnZGF0LT5ub2RlX3NwYW5uZWRfcGFnZXM7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcGdkYXRfaXNfZW1wdHkocGdfZGF0YV90ICpw Z2RhdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIXBnZGF0LT5ub2RlX3N0YXJ0X3BmbiAmJiAh cGdkYXQtPm5vZGVfc3Bhbm5lZF9wYWdlczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMQoxNDQ3NDog IyA2ICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIgMgoxNDQ3NDogCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS9saW51eC9ub3RpZmllci5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUv bGludXgvbm90aWZpZXIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIgMQox NDQ3NDogIyAyMiAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRl L2xpbnV4L3JjdV9zZWdjYmxpc3QuaCIgMQoxNDQ3NDogIyAyMSAiLi9pbmNsdWRlL2xpbnV4L3Jj dV9zZWdjYmxpc3QuaCIKMTQ0NzQ6IHN0cnVjdCByY3VfY2JsaXN0IHsKMTQ0NzQ6ICBzdHJ1Y3Qg Y2FsbGJhY2tfaGVhZCAqaGVhZDsKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqKnRhaWw7 CjE0NDc0OiAgbG9uZyBsZW47CjE0NDc0OiB9OwoxNDQ3NDogIyA2NiAiLi9pbmNsdWRlL2xpbnV4 L3JjdV9zZWdjYmxpc3QuaCIKMTQ0NzQ6IHN0cnVjdCByY3Vfc2VnY2JsaXN0IHsKMTQ0NzQ6ICBz dHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZDsKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAq KnRhaWxzWzRdOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZ3Bfc2VxWzRdOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIGxvbmcgbGVuOwoxNDQ3NDogCjE0NDc0OiAgdTggZW5hYmxlZDsK MTQ0NzQ6ICB1OCBvZmZsb2FkZWQ7CjE0NDc0OiB9OwoxNDQ3NDogIyAyMyAiLi9pbmNsdWRlL2xp bnV4L3NyY3UuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3JjdV9zdHJ1Y3Q7CjE0NDc0OiAj IDQxICIuL2luY2x1ZGUvbGludXgvc3JjdS5oIgoxNDQ3NDogaW50IGluaXRfc3JjdV9zdHJ1Y3Qo c3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zcmN1 dHJlZS5oIiAxCjE0NDc0OiAjIDE0ICIuL2luY2x1ZGUvbGludXgvc3JjdXRyZWUuaCIKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3JjdV9ub2RlX3RyZWUuaCIgMQoxNDQ3NDogIyAxNSAiLi9p bmNsdWRlL2xpbnV4L3NyY3V0cmVlLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg c3JjdV9ub2RlOwoxNDQ3NDogc3RydWN0IHNyY3Vfc3RydWN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzcmN1X2RhdGEgewoxNDQ3NDogCjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBzcmN1X2xvY2tfY291bnRbMl07CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBzcmN1X3VubG9ja19jb3VudFsyXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3Bpbmxv Y2tfdCBsb2NrIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDEgPDwgKDYpKSkpOwoxNDQ3NDog IHN0cnVjdCByY3Vfc2VnY2JsaXN0IHNyY3VfY2JsaXN0OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg c3JjdV9ncF9zZXFfbmVlZGVkOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3JjdV9ncF9zZXFfbmVl ZGVkX2V4cDsKMTQ0NzQ6ICBib29sIHNyY3VfY2JsaXN0X2ludm9raW5nOwoxNDQ3NDogIHN0cnVj dCB0aW1lcl9saXN0IGRlbGF5X3dvcms7CjE0NDc0OiAgc3RydWN0IHdvcmtfc3RydWN0IHdvcms7 CjE0NDc0OiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgc3JjdV9iYXJyaWVyX2hlYWQ7CjE0NDc0OiAg c3RydWN0IHNyY3Vfbm9kZSAqbXlub2RlOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZ3JwbWFzazsK MTQ0NzQ6IAoxNDQ3NDogIGludCBjcHU7CjE0NDc0OiAgc3RydWN0IHNyY3Vfc3RydWN0ICpzc3A7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg c3JjdV9ub2RlIHsKMTQ0NzQ6ICBzcGlubG9ja190IGxvY2s7CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBzcmN1X2hhdmVfY2JzWzRdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IHNyY3VfZGF0YV9oYXZlX2Nic1s0XTsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3Jj dV9ncF9zZXFfbmVlZGVkX2V4cDsKMTQ0NzQ6ICBzdHJ1Y3Qgc3JjdV9ub2RlICpzcmN1X3BhcmVu dDsKMTQ0NzQ6ICBpbnQgZ3JwbG87CjE0NDc0OiAgaW50IGdycGhpOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNyY3Vfc3RydWN0IHsKMTQ0 NzQ6ICBzdHJ1Y3Qgc3JjdV9ub2RlIG5vZGVbMV07CjE0NDc0OiAgc3RydWN0IHNyY3Vfbm9kZSAq bGV2ZWxbMSArIDFdOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IG11dGV4IHNyY3VfY2JfbXV0ZXg7 CjE0NDc0OiAgc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogIHN0cnVjdCBtdXRleCBzcmN1X2dwX211 dGV4OwoxNDQ3NDogIHVuc2lnbmVkIGludCBzcmN1X2lkeDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IHNyY3VfZ3Bfc2VxOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3JjdV9ncF9zZXFfbmVlZGVkOwox NDQ3NDogIHVuc2lnbmVkIGxvbmcgc3JjdV9ncF9zZXFfbmVlZGVkX2V4cDsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHNyY3VfbGFzdF9ncF9lbmQ7CjE0NDc0OiAgc3RydWN0IHNyY3VfZGF0YSAqc2Rh OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3JjdV9iYXJyaWVyX3NlcTsKMTQ0NzQ6ICBzdHJ1Y3Qg bXV0ZXggc3JjdV9iYXJyaWVyX211dGV4OwoxNDQ3NDogIHN0cnVjdCBjb21wbGV0aW9uIHNyY3Vf YmFycmllcl9jb21wbGV0aW9uOwoxNDQ3NDogCjE0NDc0OiAgYXRvbWljX3Qgc3JjdV9iYXJyaWVy X2NwdV9jbnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkZWxheWVkX3dvcmsgd29y azsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAjIDEzNyAiLi9pbmNs dWRlL2xpbnV4L3NyY3V0cmVlLmgiCjE0NDc0OiB2b2lkIHN5bmNocm9uaXplX3NyY3VfZXhwZWRp dGVkKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKMTQ0NzQ6IHZvaWQgc3JjdV9iYXJyaWVyKHN0 cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKMTQ0NzQ6IHZvaWQgc3JjdV90b3J0dXJlX3N0YXRzX3By aW50KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjaGFyICp0dCwgY2hhciAqdGYpOwoxNDQ3NDog IyA1MCAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIGNhbGxfc3JjdShzdHJ1 Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgc3RydWN0IGNhbGxiYWNrX2hlYWQgKmhlYWQsCjE0NDc0OiAg IHZvaWQgKCpmdW5jKShzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCkpOwoxNDQ3NDogdm9pZCBj bGVhbnVwX3NyY3Vfc3RydWN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKMTQ0NzQ6IGludCBf X3NyY3VfcmVhZF9sb2NrKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKSA7CjE0NDc0OiB2b2lkIF9f c3JjdV9yZWFkX3VubG9jayhzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgaW50IGlkeCkgOwoxNDQ3 NDogdm9pZCBzeW5jaHJvbml6ZV9zcmN1KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKMTQ0NzQ6 ICMgOTEgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc3JjdV9yZWFkX2xvY2tf aGVsZChjb25zdCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gMTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTUwICIuL2luY2x1ZGUvbGludXgvc3JjdS5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IHNyY3VfcmVhZF9sb2NrKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKQoxNDQ3NDogewox NDQ3NDogIGludCByZXR2YWw7CjE0NDc0OiAKMTQ0NzQ6ICByZXR2YWwgPSBfX3NyY3VfcmVhZF9s b2NrKHNzcCk7CjE0NDc0OiAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICByZXR1cm4gcmV0dmFs OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IHNyY3VfcmVhZF9sb2NrX25vdHJhY2Uoc3RydWN0 IHNyY3Vfc3RydWN0ICpzc3ApCjE0NDc0OiB7CjE0NDc0OiAgaW50IHJldHZhbDsKMTQ0NzQ6IAox NDQ3NDogIHJldHZhbCA9IF9fc3JjdV9yZWFkX2xvY2soc3NwKTsKMTQ0NzQ6ICByZXR1cm4gcmV0 dmFsOwoxNDQ3NDogfQoxNDQ3NDogIyAxNzYgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHNyY3VfcmVhZF91bmxvY2soc3RydWN0IHNyY3Vfc3RydWN0ICpzc3AsIGludCBpZHgp CjE0NDc0OiAKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGlkeCAm IH4weDEpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsg ZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4i ICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIg IiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2Vu dHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5v cmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvc3JjdS5o IiksICJpIiAoMTc5KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRp bGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9u ZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDE1KSk7IH0pOyB9IHdo aWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3 NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgX19zcmN1X3JlYWRfdW5sb2NrKHNzcCwgaWR4 KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogc3JjdV9yZWFkX3VubG9ja19ub3RyYWNlKHN0 cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBpbnQgaWR4KQoxNDQ3NDogewoxNDQ3NDogIF9fc3JjdV9y ZWFkX3VubG9jayhzc3AsIGlkeCk7CjE0NDc0OiB9CjE0NDc0OiAjIDIwMCAiLi9pbmNsdWRlL2xp bnV4L3NyY3UuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc21wX21iX19hZnRlcl9zcmN1X3JlYWRfdW5sb2NrKHZv aWQpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51 eC9ub3RpZmllci5oIiAyCjE0NDc0OiAjIDQ5ICIuL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIK MTQ0NzQ6IHN0cnVjdCBub3RpZmllcl9ibG9jazsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBpbnQg KCpub3RpZmllcl9mbl90KShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAoxNDQ3NDogICAgdW5z aWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgewoxNDQ3NDogIG5vdGlmaWVyX2ZuX3Qgbm90aWZpZXJfY2FsbDsKMTQ0NzQ6 ICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5leHQ7CjE0NDc0OiAgaW50IHByaW9yaXR5OwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIHsKMTQ0NzQ6 ICBzcGlubG9ja190IGxvY2s7CjE0NDc0OiAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpoZWFkOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJsb2NraW5nX25vdGlmaWVyX2hlYWQgewox NDQ3NDogIHN0cnVjdCByd19zZW1hcGhvcmUgcndzZW07CjE0NDc0OiAgc3RydWN0IG5vdGlmaWVy X2Jsb2NrICpoZWFkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJhd19ub3RpZmll cl9oZWFkIHsKMTQ0NzQ6ICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKmhlYWQ7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3JjdV9ub3RpZmllcl9oZWFkIHsKMTQ0NzQ6ICBzdHJ1Y3Qg bXV0ZXggbXV0ZXg7CjE0NDc0OiAgc3RydWN0IHNyY3Vfc3RydWN0IHNyY3U7CjE0NDc0OiAgc3Ry dWN0IG5vdGlmaWVyX2Jsb2NrICpoZWFkOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTMgIi4vaW5jbHVk ZS9saW51eC9ub3RpZmllci5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgc3JjdV9pbml0X25vdGlmaWVy X2hlYWQoc3RydWN0IHNyY3Vfbm90aWZpZXJfaGVhZCAqbmgpOwoxNDQ3NDogIyAxNDQgIi4vaW5j bHVkZS9saW51eC9ub3RpZmllci5oIgoxNDQ3NDogZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJf Y2hhaW5fcmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAg c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CjE0NDc0OiBleHRlcm4gaW50IGJsb2NraW5nX25v dGlmaWVyX2NoYWluX3JlZ2lzdGVyKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCwK MTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CjE0NDc0OiBleHRlcm4gaW50IHJh d19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLAox NDQ3NDogICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc3Jj dV9ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3Qgc3JjdV9ub3RpZmllcl9oZWFkICpuaCwK MTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGF0b21pY19ub3Rp Zmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CjE0NDc0 OiBleHRlcm4gaW50IGJsb2NraW5nX25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3RydWN0IGJs b2NraW5nX25vdGlmaWVyX2hlYWQgKm5oLAoxNDQ3NDogICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg Km5iKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcmF3X25vdGlmaWVyX2NoYWluX3VucmVnaXN0ZXIoc3Ry dWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYik7CjE0NDc0OiBleHRlcm4gaW50IHNyY3Vfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3Rlcihz dHJ1Y3Qgc3JjdV9ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAgc3RydWN0IG5vdGlmaWVyX2Js b2NrICpuYik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NhbGxf Y2hhaW4oc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICAgdW5zaWduZWQg bG9uZyB2YWwsIHZvaWQgKnYpOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0b21pY19ub3RpZmllcl9j YWxsX2NoYWluKHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCAqbmgsCjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyB2YWwsIHZvaWQgKnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2NhbGxzKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbihzdHJ1Y3QgYmxvY2tp bmdfbm90aWZpZXJfaGVhZCAqbmgsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICp2 KTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19ibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKHN0cnVj dCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCwKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHZhbCwg dm9pZCAqdiwgaW50IG5yX3RvX2NhbGwsIGludCAqbnJfY2FsbHMpOwoxNDQ3NDogZXh0ZXJuIGlu dCByYXdfbm90aWZpZXJfY2FsbF9jaGFpbihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5oLAox NDQ3NDogICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdik7CjE0NDc0OiBleHRlcm4gaW50IF9f cmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJhd19ub3RpZmllcl9oZWFkICpuaCwKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdiwgaW50IG5yX3RvX2NhbGwsIGludCAqbnJf Y2FsbHMpOwoxNDQ3NDogZXh0ZXJuIGludCBzcmN1X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0 IHNyY3Vfbm90aWZpZXJfaGVhZCAqbmgsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lk ICp2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19zcmN1X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0 IHNyY3Vfbm90aWZpZXJfaGVhZCAqbmgsCjE0NDc0OiAgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQg KnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2NhbGxzKTsKMTQ0NzQ6ICMgMTkwICIuL2luY2x1 ZGUvbGludXgvbm90aWZpZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBub3RpZmllcl9mcm9tX2Vycm5vKGludCBl cnIpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGVycikKMTQ0NzQ6ICAgcmV0dXJuIDB4ODAwMCB8ICgw eDAwMDEgLSBlcnIpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIDB4MDAwMTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbm90aWZpZXJfdG9fZXJybm8oaW50IHJldCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXQgJj0gfjB4ODAwMDsKMTQ0NzQ6ICByZXR1cm4gcmV0ID4gMHgwMDAxID8g MHgwMDAxIC0gcmV0IDogMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjM0ICIuL2luY2x1ZGUvbGludXgv bm90aWZpZXIuaCIKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgYmxvY2tpbmdfbm90aWZpZXJfaGVhZCBy ZWJvb3Rfbm90aWZpZXJfbGlzdDsKMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9o b3RwbHVnLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IHN0 cnVjdCB6b25lOwoxNDQ3NDogc3RydWN0IHBnbGlzdF9kYXRhOwoxNDQ3NDogc3RydWN0IG1lbV9z ZWN0aW9uOwoxNDQ3NDogc3RydWN0IG1lbW9yeV9ibG9jazsKMTQ0NzQ6IHN0cnVjdCByZXNvdXJj ZTsKMTQ0NzQ6IHN0cnVjdCB2bWVtX2FsdG1hcDsKMTQ0NzQ6ICMgNDAgIi4vaW5jbHVkZS9saW51 eC9tZW1vcnlfaG90cGx1Zy5oIgoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTUVNT1JZX0hPVFBMVUdf TUlOX0JPT1RNRU1fVFlQRSA9IDEyLAoxNDQ3NDogIFNFQ1RJT05fSU5GTyA9IE1FTU9SWV9IT1RQ TFVHX01JTl9CT09UTUVNX1RZUEUsCjE0NDc0OiAgTUlYX1NFQ1RJT05fSU5GTywKMTQ0NzQ6ICBO T0RFX0lORk8sCjE0NDc0OiAgTUVNT1JZX0hPVFBMVUdfTUFYX0JPT1RNRU1fVFlQRSA9IE5PREVf SU5GTywKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTU1P UF9PRkZMSU5FID0gLTEsCjE0NDc0OiAgTU1PUF9PTkxJTkVfS0VFUCwKMTQ0NzQ6ICBNTU9QX09O TElORV9LRVJORUwsCjE0NDc0OiAgTU1PUF9PTkxJTkVfTU9WQUJMRSwKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg bWhwX3Jlc3RyaWN0aW9ucyB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFnczsKMTQ0NzQ6ICBz dHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDczICIuL2luY2x1 ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHpvbmVfc3Bhbl9zZXFi ZWdpbihzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcmVhZF9zZXFi ZWdpbigmem9uZS0+c3Bhbl9zZXFsb2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB6b25lX3NwYW5f c2VxcmV0cnkoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGl2KQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiByZWFkX3NlcXJldHJ5KCZ6b25lLT5zcGFuX3NlcWxvY2ssIGl2KTsKMTQ0NzQ6IH0K MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgem9uZV9zcGFuX3dyaXRlbG9jayhzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICB3cml0ZV9zZXFsb2NrKCZ6b25lLT5zcGFuX3NlcWxvY2spOwoxNDQ3NDogfQox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB6b25lX3NwYW5fd3JpdGV1bmxvY2soc3RydWN0IHpvbmUgKnpvbmUpCjE0NDc0 OiB7CjE0NDc0OiAgd3JpdGVfc2VxdW5sb2NrKCZ6b25lLT5zcGFuX3NlcWxvY2spOwoxNDQ3NDog fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCB6b25lX3NlcWxvY2tfaW5pdChzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBkbyB7IF9fc2VxY291bnRfaW5pdCgmKCZ6b25lLT5zcGFuX3NlcWxvY2spLT5z ZXFjb3VudCwgKCh2b2lkICopMCksICgodm9pZCAqKTApKTsgZG8geyBzcGlubG9ja19jaGVjaygm KCZ6b25lLT5zcGFuX3NlcWxvY2spLT5sb2NrKTsgZG8geyAqKCYoJigmem9uZS0+c3Bhbl9zZXFs b2NrKS0+bG9jayktPnJsb2NrKSA9IChyYXdfc3BpbmxvY2tfdCkgeyAucmF3X2xvY2sgPSB7IHsg LnZhbCA9IHsgKDApIH0gfSB9LCB9OyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUg KDApOwoxNDQ3NDogfQoxNDQ3NDogZXh0ZXJuIGludCB6b25lX2dyb3dfZnJlZV9saXN0cyhzdHJ1 Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9uZyBuZXdfbnJfcGFnZXMpOwoxNDQ3NDogZXh0ZXJu IGludCB6b25lX2dyb3dfd2FpdHF1ZXVlcyhzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9u ZyBucl9wYWdlcyk7CjE0NDc0OiBleHRlcm4gaW50IGFkZF9vbmVfaGlnaHBhZ2Uoc3RydWN0IHBh Z2UgKnBhZ2UsIGludCBwZm4sIGludCBiYWRfcHBybyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBp bnQgb25saW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2Vz LAoxNDQ3NDogICAgaW50IG9ubGluZV90eXBlLCBpbnQgbmlkKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1 Y3Qgem9uZSAqdGVzdF9wYWdlc19pbl9hX3pvbmUodW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCjE0 NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIGVuZF9wZm4pOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVk IGxvbmcgX19vZmZsaW5lX2lzb2xhdGVkX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLAox NDQ3NDogICAgICAgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRl ZiB2b2lkICgqb25saW5lX3BhZ2VfY2FsbGJhY2tfdCkoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2ln bmVkIGludCBvcmRlcik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGdlbmVyaWNfb25saW5l X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcik7CjE0NDc0OiBleHRl cm4gaW50IHNldF9vbmxpbmVfcGFnZV9jYWxsYmFjayhvbmxpbmVfcGFnZV9jYWxsYmFja190IGNh bGxiYWNrKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcmVzdG9yZV9vbmxpbmVfcGFnZV9jYWxsYmFjayhv bmxpbmVfcGFnZV9jYWxsYmFja190IGNhbGxiYWNrKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGlu dCB0cnlfb25saW5lX25vZGUoaW50IG5pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgYXJj aF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsCjE0NDc0OiAgICBzdHJ1 Y3QgbWhwX3Jlc3RyaWN0aW9ucyAqcmVzdHJpY3Rpb25zKTsKMTQ0NzQ6IGV4dGVybiB1NjQgbWF4 X21lbV9zaXplOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBtZW1ocF9hdXRvX29ubGluZTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgbW92YWJsZV9ub2RlX2VuYWJsZWQ7CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIG1vdmFibGVfbm9kZV9pc19lbmFibGVkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IG1vdmFibGVfbm9kZV9lbmFibGVkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCBhcmNoX3JlbW92ZV9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwKMTQ0NzQ6 ICAgICAgICAgICBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCk7CjE0NDc0OiBleHRlcm4gdm9p ZCBfX3JlbW92ZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBu cl9wYWdlcywKMTQ0NzQ6ICAgICAgIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYWRkX3BhZ2VzKGludCBuaWQsIHVuc2lnbmVk IGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAoxNDQ3NDogICAgICAgICAg c3RydWN0IG1ocF9yZXN0cmljdGlvbnMgKnJlc3RyaWN0aW9ucyk7CjE0NDc0OiAjIDE0MCAiLi9p bmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiCjE0NDc0OiBpbnQgYWRkX3BhZ2VzKGludCBu aWQsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAoxNDQ3 NDogICAgICAgIHN0cnVjdCBtaHBfcmVzdHJpY3Rpb25zICpyZXN0cmljdGlvbnMpOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBtZW1vcnlfYWRkX3Bo eXNhZGRyX3RvX25pZCh1NjQgc3RhcnQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0 OiB9CjE0NDc0OiAjIDE5OSAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBwZ19kYXRhX3QgKmdlbmVyaWNfYWxsb2Nfbm9kZWRhdGEoaW50IG5pZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwg MHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5s b25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9u ZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAi XHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFn c1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xp bnV4L21lbW9yeV9ob3RwbHVnLmgiKSwgImkiICgyMDEpLCAiaSIgKDApLCAiaSIgKHNpemVvZihz dHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVj MDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVj MGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMTYpKTsgfSk7IGFzbSB2b2xh dGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgcmV0dXJuICgodm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBnZW5l cmljX2ZyZWVfbm9kZWRhdGEocGdfZGF0YV90ICpwZ2RhdCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgYXJjaF9yZWZyZXNoX25vZGVkYXRhKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQp CjE0NDc0OiB7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBf X2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHJlZ2lzdGVyX3BhZ2VfYm9vdG1lbV9pbmZvX25vZGUo c3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgcHV0X3BhZ2VfYm9vdG1lbShzdHJ1Y3QgcGFn ZSAqcGFnZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBnZXRfcGFnZV9ib290bWVtKHVuc2lnbmVkIGxv bmcgaW5nbywgc3RydWN0IHBhZ2UgKnBhZ2UsCjE0NDc0OiAgICAgICAgIHVuc2lnbmVkIGxvbmcg dHlwZSk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZ2V0X29ubGluZV9tZW1zKHZvaWQpOwoxNDQ3NDog dm9pZCBwdXRfb25saW5lX21lbXModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgbWVtX2hvdHBs dWdfYmVnaW4odm9pZCk7CjE0NDc0OiB2b2lkIG1lbV9ob3RwbHVnX2RvbmUodm9pZCk7CjE0NDc0 OiAjIDI4MyAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQoxNDQ3NDog dm9pZCBwZ2RhdF9yZXNpemVfbG9jayhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCB1bnNpZ25l ZCBsb25nICpmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGRvIHsgKHsgdW5zaWduZWQgbG9u ZyBfX2R1bW15OyB0eXBlb2YoKmZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09ICZf X2R1bW15Mik7IDE7IH0pOyAqZmxhZ3MgPSBfcmF3X3NwaW5fbG9ja19pcnFzYXZlKHNwaW5sb2Nr X2NoZWNrKCZwZ2RhdC0+bm9kZV9zaXplX2xvY2spKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDAp OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkKMTQ0NzQ6IHZvaWQgcGdkYXRfcmVzaXplX3VubG9jayhzdHJ1Y3Qg cGdsaXN0X2RhdGEgKnBnZGF0LCB1bnNpZ25lZCBsb25nICpmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6 ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwZ2RhdC0+bm9kZV9zaXplX2xvY2ssICpmbGFncyk7 CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKQoxNDQ3NDogdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGds aXN0X2RhdGEgKnBnZGF0KQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgc3BpbmxvY2tfY2hlY2soJnBn ZGF0LT5ub2RlX3NpemVfbG9jayk7IGRvIHsgKigmKCZwZ2RhdC0+bm9kZV9zaXplX2xvY2spLT5y bG9jaykgPSAocmF3X3NwaW5sb2NrX3QpIHsgLnJhd19sb2NrID0geyB7IC52YWwgPSB7ICgwKSB9 IH0gfSwgfTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogfQoxNDQ3NDogIyAzMDkg Ii4vaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oIgoxNDQ3NDogZXh0ZXJuIGJvb2wgaXNf bWVtX3NlY3Rpb25fcmVtb3ZhYmxlKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5y X3BhZ2VzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCk7CjE0 NDc0OiBleHRlcm4gaW50IG9mZmxpbmVfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVu c2lnbmVkIGxvbmcgbnJfcGFnZXMpOwoxNDQ3NDogZXh0ZXJuIGludCByZW1vdmVfbWVtb3J5KGlu dCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19yZW1vdmVf bWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUpOwoxNDQ3NDogIyAzMzcgIi4vaW5j bHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0X3pvbmVf Y29udGlndW91cyhzdHJ1Y3Qgem9uZSAqem9uZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBjbGVhcl96 b25lX2NvbnRpZ3VvdXMoc3RydWN0IHpvbmUgKnpvbmUpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLnJlZi50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX25vaW5saW5lX18pKSBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoaW50IG5pZCk7 CjE0NDc0OiBleHRlcm4gaW50IF9fYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBz aXplKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2 NCBzaXplKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBz dHJ1Y3QgcmVzb3VyY2UgKnJlc291cmNlKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIG1vdmVfcGZuX3Jh bmdlX3RvX3pvbmUoc3RydWN0IHpvbmUgKnpvbmUsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLAox NDQ3NDogICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1h cCk7CjE0NDc0OiBleHRlcm4gdm9pZCByZW1vdmVfcGZuX3JhbmdlX2Zyb21fem9uZShzdHJ1Y3Qg em9uZSAqem9uZSwKMTQ0NzQ6ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCjE0 NDc0OiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwoxNDQ3NDogZXh0ZXJuIGJv b2wgaXNfbWVtYmxvY2tfb2ZmbGluZWQoc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgc3BhcnNlX2FkZF9zZWN0aW9uKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcGZu LAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFs dG1hcCk7CjE0NDc0OiBleHRlcm4gdm9pZCBzcGFyc2VfcmVtb3ZlX3NlY3Rpb24oc3RydWN0IG1l bV9zZWN0aW9uICptcywKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcg bnJfcGFnZXMsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgbWFwX29mZnNldCwgc3RydWN0IHZtZW1f YWx0bWFwICphbHRtYXApOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwYWdlICpzcGFyc2VfZGVjb2Rl X21lbV9tYXAodW5zaWduZWQgbG9uZyBjb2RlZF9tZW1fbWFwLAoxNDQ3NDogICAgICAgIHVuc2ln bmVkIGxvbmcgcG51bSk7CjE0NDc0OiBleHRlcm4gYm9vbCBhbGxvd19vbmxpbmVfcGZuX3Jhbmdl KGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAoxNDQ3 NDogICBpbnQgb25saW5lX3R5cGUpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB6b25lICp6b25lX2Zv cl9wZm5fcmFuZ2UoaW50IG9ubGluZV90eXBlLCBpbnQgbmlkLCB1bnNpZ25lZCBzdGFydF9wZm4s CjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwoxNDQ3NDogIyA4MjQgIi4vaW5jbHVk ZS9saW51eC9tbXpvbmUuaCIgMgoxNDQ3NDogCjE0NDc0OiB2b2lkIGJ1aWxkX2FsbF96b25lbGlz dHMocGdfZGF0YV90ICpwZ2RhdCk7CjE0NDc0OiB2b2lkIHdha2V1cF9rc3dhcGQoc3RydWN0IHpv bmUgKnpvbmUsIGdmcF90IGdmcF9tYXNrLCBpbnQgb3JkZXIsCjE0NDc0OiAgICAgIGVudW0gem9u ZV90eXBlIGNsYXNzem9uZV9pZHgpOwoxNDQ3NDogYm9vbCBfX3pvbmVfd2F0ZXJtYXJrX29rKHN0 cnVjdCB6b25lICp6LCB1bnNpZ25lZCBpbnQgb3JkZXIsIHVuc2lnbmVkIGxvbmcgbWFyaywKMTQ0 NzQ6ICAgICBpbnQgY2xhc3N6b25lX2lkeCwgdW5zaWduZWQgaW50IGFsbG9jX2ZsYWdzLAoxNDQ3 NDogICAgIGxvbmcgZnJlZV9wYWdlcyk7CjE0NDc0OiBib29sIHpvbmVfd2F0ZXJtYXJrX29rKHN0 cnVjdCB6b25lICp6LCB1bnNpZ25lZCBpbnQgb3JkZXIsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcg bWFyaywgaW50IGNsYXNzem9uZV9pZHgsCjE0NDc0OiAgIHVuc2lnbmVkIGludCBhbGxvY19mbGFn cyk7CjE0NDc0OiBib29sIHpvbmVfd2F0ZXJtYXJrX29rX3NhZmUoc3RydWN0IHpvbmUgKnosIHVu c2lnbmVkIGludCBvcmRlciwKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBtYXJrLCBpbnQgY2xhc3N6 b25lX2lkeCk7CjE0NDc0OiBlbnVtIG1lbW1hcF9jb250ZXh0IHsKMTQ0NzQ6ICBNRU1NQVBfRUFS TFksCjE0NDc0OiAgTUVNTUFQX0hPVFBMVUcsCjE0NDc0OiB9OwoxNDQ3NDogZXh0ZXJuIHZvaWQg aW5pdF9jdXJyZW50bHlfZW1wdHlfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9u ZyBzdGFydF9wZm4sCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBscnV2ZWNfaW5pdChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpOwox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGdsaXN0X2RhdGEgKmxydXZlY19wZ2RhdChzdHJ1Y3QgbHJ1 dmVjICpscnV2ZWMpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gbHJ1dmVjLT5wZ2Rh dDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHVuc2lnbmVkIGxvbmcgbHJ1dmVjX2xydV9zaXplKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgZW51 bSBscnVfbGlzdCBscnUsIGludCB6b25lX2lkeCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCBtZW1vcnlfcHJlc2VudChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBs b25nIGVuZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog dm9pZCBtZW1ibG9ja3NfcHJlc2VudCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxvY2FsX21lbW9yeV9ub2Rl KGludCBub2RlX2lkKSB7IHJldHVybiBub2RlX2lkOyB9OwoxNDQ3NDogIyA4ODUgIi4vaW5jbHVk ZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgbWFuYWdlZF96b25lKHN0cnVjdCB6b25lICp6 b25lKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB6b25lX21hbmFnZWRfcGFnZXMoem9uZSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwb3B1bGF0ZWRfem9uZShzdHJ1Y3Qg em9uZSAqem9uZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gem9uZS0+cHJlc2VudF9wYWdlczsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgOTA3ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgem9uZV90b19uaWQoc3RydWN0IHpvbmUgKnpvbmUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgem9uZV9zZXRfbmlkKHN0cnVjdCB6b25l ICp6b25lLCBpbnQgbmlkKSB7fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbW92 YWJsZV96b25lOwoxNDQ3NDogIyA5MjggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBpc19oaWdobWVtX2lkeChlbnVtIHpvbmVfdHlwZSBpZHgpCjE0NDc0OiB7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgaXNfaGlnaG1lbShzdHJ1Y3Qgem9uZSAqem9uZSkKMTQ0NzQ6IHsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGU7CjE0NDc0OiBpbnQgbWluX2ZyZWVf a2J5dGVzX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDogICAg ICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBpbnQgd2F0ZXJtYXJrX2Jvb3N0 X2ZhY3Rvcl9zeXNjdGxfaGFuZGxlcihzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKMTQ0NzQ6ICAg ICAgdm9pZCAqLCBzaXplX3QgKiwgbG9mZl90ICopOwoxNDQ3NDogaW50IHdhdGVybWFya19zY2Fs ZV9mYWN0b3Jfc3lzY3RsX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAg ICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc3lzY3Rs X2xvd21lbV9yZXNlcnZlX3JhdGlvWzRdOwoxNDQ3NDogaW50IGxvd21lbV9yZXNlcnZlX3JhdGlv X3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDogICAgICB2b2lk ICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBpbnQgcGVyY3B1X3BhZ2VsaXN0X2ZyYWN0 aW9uX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDogICAgICB2 b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBpbnQgc3lzY3RsX21pbl91bm1hcHBl ZF9yYXRpb19zeXNjdGxfaGFuZGxlcihzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKMTQ0NzQ6ICAg IHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGludCBzeXNjdGxfbWluX3NsYWJf cmF0aW9fc3lzY3RsX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAgICB2 b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbnVt YV96b25lbGlzdF9vcmRlcl9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDog ICAgdm9pZCAqLCBzaXplX3QgKiwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIGNoYXIgbnVtYV96 b25lbGlzdF9vcmRlcltdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gc3RydWN0IHBnbGlzdF9kYXRhIGNvbnRpZ19wYWdlX2RhdGE7CjE0NDc0OiAjIDk4OCAi Li9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwZ2xpc3RfZGF0 YSAqZmlyc3Rfb25saW5lX3BnZGF0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwZ2xpc3Rf ZGF0YSAqbmV4dF9vbmxpbmVfcGdkYXQoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCk7CjE0NDc0 OiBleHRlcm4gc3RydWN0IHpvbmUgKm5leHRfem9uZShzdHJ1Y3Qgem9uZSAqem9uZSk7CjE0NDc0 OiAjIDEwMjAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB6b25lICp6 b25lbGlzdF96b25lKHN0cnVjdCB6b25lcmVmICp6b25lcmVmKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiB6b25lcmVmLT56b25lOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgem9uZWxpc3Rf em9uZV9pZHgoc3RydWN0IHpvbmVyZWYgKnpvbmVyZWYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IHpvbmVyZWYtPnpvbmVfaWR4OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgem9uZWxpc3Rf bm9kZV9pZHgoc3RydWN0IHpvbmVyZWYgKnpvbmVyZWYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IHpvbmVfdG9fbmlkKHpvbmVyZWYtPnpvbmUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgem9uZXJlZiAqX19uZXh0X3pvbmVzX3pvbmVsaXN0KHN0cnVjdCB6b25lcmVmICp6LAoxNDQ3 NDogICAgICBlbnVtIHpvbmVfdHlwZSBoaWdoZXN0X3pvbmVpZHgsCjE0NDc0OiAgICAgIG5vZGVt YXNrX3QgKm5vZGVzKTsKMTQ0NzQ6ICMgMTA1MSAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBzdHJ1Y3Qgem9uZXJlZiAq bmV4dF96b25lc196b25lbGlzdChzdHJ1Y3Qgem9uZXJlZiAqeiwKMTQ0NzQ6ICAgICAgZW51bSB6 b25lX3R5cGUgaGlnaGVzdF96b25laWR4LAoxNDQ3NDogICAgICBub2RlbWFza190ICpub2RlcykK MTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoX19idWlsdGluX2V4cGVjdCghISghbm9kZXMgJiYgem9uZWxp c3Rfem9uZV9pZHgoeikgPD0gaGlnaGVzdF96b25laWR4KSwgMSkpCjE0NDc0OiAgIHJldHVybiB6 OwoxNDQ3NDogIHJldHVybiBfX25leHRfem9uZXNfem9uZWxpc3QoeiwgaGlnaGVzdF96b25laWR4 LCBub2Rlcyk7CjE0NDc0OiB9CjE0NDc0OiAjIDEwNzYgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCB6b25lcmVmICpmaXJzdF96b25lc196b25lbGlzdChzdHJ1Y3Qgem9u ZWxpc3QgKnpvbmVsaXN0LAoxNDQ3NDogICAgICBlbnVtIHpvbmVfdHlwZSBoaWdoZXN0X3pvbmVp ZHgsCjE0NDc0OiAgICAgIG5vZGVtYXNrX3QgKm5vZGVzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBuZXh0X3pvbmVzX3pvbmVsaXN0KHpvbmVsaXN0LT5fem9uZXJlZnMsCjE0NDc0OiAgICAgICAg aGlnaGVzdF96b25laWR4LCBub2Rlcyk7CjE0NDc0OiB9CjE0NDc0OiAjIDExNjAgIi4vaW5jbHVk ZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgcGZuX3RvX3NlY3Rpb25fbnIo dW5zaWduZWQgbG9uZyBwZm4pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHBmbiA+PiAoMjcgLSAx Mik7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHNlY3Rpb25fbnJfdG9fcGZuKHVuc2ln bmVkIGxvbmcgc2VjKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBzZWMgPDwgKDI3IC0gMTIpOwox NDQ3NDogfQoxNDQ3NDogIyAxMTg3ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiBz dHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3Vic2VjdGlv bl9tYXBbKCgoKDFVTCA8PCAoMjcgLSAyMSkpKSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkg LyAoKHNpemVvZihsb25nKSAqIDgpKSldOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBw YWdlYmxvY2tfZmxhZ3NbMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHN1YnNlY3Rp b25fbWFwX2luaXQodW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpOwox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IHN0cnVjdCBwYWdlX2V4dDsKMTQ0NzQ6 IHN0cnVjdCBtZW1fc2VjdGlvbiB7CjE0NDc0OiAjIDEyMTAgIi4vaW5jbHVkZS9saW51eC9tbXpv bmUuaCIKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNlY3Rpb25fbWVtX21hcDsKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSAqdXNhZ2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwYWdlX2V4dCAqcGFnZV9leHQ7CjE0 NDc0OiAgdW5zaWduZWQgbG9uZyBwYWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTIzOCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5o IgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBtZW1fc2VjdGlvbiAqKm1lbV9zZWN0aW9uOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nICpzZWN0aW9uX3Rv X3VzZW1hcChzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBt cy0+dXNhZ2UtPnBhZ2VibG9ja19mbGFnczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IG1lbV9zZWN0aW9uICpfX25yX3RvX3NlY3Rpb24odW5zaWduZWQgbG9uZyBucikKMTQ0NzQ6IHsK MTQ0NzQ6IAoxNDQ3NDogIGlmICghbWVtX3NlY3Rpb24pCjE0NDc0OiAgIHJldHVybiAoKHZvaWQg KikwKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmICghbWVtX3NlY3Rpb25bKChucikgLyAoKCgxVUwpIDw8 IDEyKSAvIHNpemVvZiAoc3RydWN0IG1lbV9zZWN0aW9uKSkpXSkKMTQ0NzQ6ICAgcmV0dXJuICgo dm9pZCAqKTApOwoxNDQ3NDogIHJldHVybiAmbWVtX3NlY3Rpb25bKChucikgLyAoKCgxVUwpIDw8 IDEyKSAvIHNpemVvZiAoc3RydWN0IG1lbV9zZWN0aW9uKSkpXVtuciAmICgoKCgxVUwpIDw8IDEy KSAvIHNpemVvZiAoc3RydWN0IG1lbV9zZWN0aW9uKSkgLSAxKV07CjE0NDc0OiB9CjE0NDc0OiBl eHRlcm4gdW5zaWduZWQgbG9uZyBfX3NlY3Rpb25fbnIoc3RydWN0IG1lbV9zZWN0aW9uICptcyk7 CjE0NDc0OiBleHRlcm4gc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCk7CjE0NDc0 OiAjIDEyODIgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwYWdlICpf X3NlY3Rpb25fbWVtX21hcF9hZGRyKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbikKMTQ0NzQ6 IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG1hcCA9IHNlY3Rpb24tPnNlY3Rpb25fbWVtX21hcDsK MTQ0NzQ6ICBtYXAgJj0gKH4oKDFVTDw8NCktMSkpOwoxNDQ3NDogIHJldHVybiAoc3RydWN0IHBh Z2UgKiltYXA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwcmVzZW50X3NlY3Rpb24oc3Ry dWN0IG1lbV9zZWN0aW9uICpzZWN0aW9uKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoc2VjdGlv biAmJiAoc2VjdGlvbi0+c2VjdGlvbl9tZW1fbWFwICYgKDFVTDw8MCkpKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHByZXNlbnRfc2VjdGlvbl9ucih1bnNpZ25lZCBsb25nIG5yKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBwcmVzZW50X3NlY3Rpb24oX19ucl90b19zZWN0aW9uKG5yKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB2YWxpZF9zZWN0aW9uKHN0cnVjdCBtZW1fc2Vj dGlvbiAqc2VjdGlvbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHNlY3Rpb24gJiYgKHNlY3Rp b24tPnNlY3Rpb25fbWVtX21hcCAmICgxVUw8PDEpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBlYXJseV9zZWN0aW9uKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbikKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gKHNlY3Rpb24gJiYgKHNlY3Rpb24tPnNlY3Rpb25fbWVtX21hcCAmICgx VUw8PDMpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB2YWxpZF9zZWN0aW9uX25yKHVu c2lnbmVkIGxvbmcgbnIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHZhbGlkX3NlY3Rpb24oX19u cl90b19zZWN0aW9uKG5yKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBvbmxpbmVfc2Vj dGlvbihzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IChzZWN0aW9uICYmIChzZWN0aW9uLT5zZWN0aW9uX21lbV9tYXAgJiAoMVVMPDwyKSkpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgb25saW5lX3NlY3Rpb25fbnIodW5zaWduZWQgbG9uZyBu cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gb25saW5lX3NlY3Rpb24oX19ucl90b19zZWN0aW9u KG5yKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBvbmxpbmVfbWVtX3Nl Y3Rpb25zKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pOwox NDQ3NDogCjE0NDc0OiB2b2lkIG9mZmxpbmVfbWVtX3NlY3Rpb25zKHVuc2lnbmVkIGxvbmcgc3Rh cnRfcGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgc3RydWN0IG1lbV9zZWN0aW9uICpfX3Bmbl90b19zZWN0aW9uKHVuc2lnbmVkIGxvbmcg cGZuKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX25yX3RvX3NlY3Rpb24ocGZuX3RvX3NlY3Rp b25fbnIocGZuKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25n IF9faGlnaGVzdF9wcmVzZW50X3NlY3Rpb25fbnI7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBzdWJzZWN0 aW9uX21hcF9pbmRleCh1bnNpZ25lZCBsb25nIHBmbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g KHBmbiAmIH4oKH4oKDFVTCA8PCAoMjcgLSAxMikpLTEpKSkpIC8gKDFVTCA8PCAoMjEgLSAxMikp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwZm5fc2VjdGlvbl92YWxpZChz dHJ1Y3QgbWVtX3NlY3Rpb24gKm1zLCB1bnNpZ25lZCBsb25nIHBmbikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpbnQgaWR4ID0gc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKTsKMTQ0NzQ6IAoxNDQ3NDogIHJl dHVybiB0ZXN0X2JpdChpZHgsIG1zLT51c2FnZS0+c3Vic2VjdGlvbl9tYXApOwoxNDQ3NDogfQox NDQ3NDogIyAxMzU4ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGZuX3Zh bGlkKHVuc2lnbmVkIGxvbmcgcGZuKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBtZW1fc2VjdGlv biAqbXM7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAocGZuX3RvX3NlY3Rpb25fbnIocGZuKSA+PSAoMVVM IDw8ICgoMCA/IDUyIDogNDYpIC0gMjcpKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgbXMg PSBfX25yX3RvX3NlY3Rpb24ocGZuX3RvX3NlY3Rpb25fbnIocGZuKSk7CjE0NDc0OiAgaWYgKCF2 YWxpZF9zZWN0aW9uKG1zKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZWFybHlfc2VjdGlvbihtcykgfHwgcGZuX3NlY3Rp b25fdmFsaWQobXMsIHBmbik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHBm bl9wcmVzZW50KHVuc2lnbmVkIGxvbmcgcGZuKQoxNDQ3NDogewoxNDQ3NDogIGlmIChwZm5fdG9f c2VjdGlvbl9ucihwZm4pID49ICgxVUwgPDwgKCgwID8gNTIgOiA0NikgLSAyNykpKQoxNDQ3NDog ICByZXR1cm4gMDsKMTQ0NzQ6ICByZXR1cm4gcHJlc2VudF9zZWN0aW9uKF9fbnJfdG9fc2VjdGlv bihwZm5fdG9fc2VjdGlvbl9ucihwZm4pKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcgbmV4dF9wcmVzZW50X3NlY3Rpb25fbnIodW5zaWduZWQgbG9uZyBzZWN0aW9uX25y KQoxNDQ3NDogewoxNDQ3NDogIHdoaWxlICgrK3NlY3Rpb25fbnIgPD0gX19oaWdoZXN0X3ByZXNl bnRfc2VjdGlvbl9ucikgewoxNDQ3NDogICBpZiAocHJlc2VudF9zZWN0aW9uX25yKHNlY3Rpb25f bnIpKQoxNDQ3NDogICAgcmV0dXJuIHNlY3Rpb25fbnI7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0 OiAgcmV0dXJuIC0xOwoxNDQ3NDogfQoxNDQ3NDogIyAxNDA4ICIuL2luY2x1ZGUvbGludXgvbW16 b25lLmgiCjE0NDc0OiB2b2lkIHNwYXJzZV9pbml0KHZvaWQpOwoxNDQ3NDogIyAxNDIxICIuL2lu Y2x1ZGUvbGludXgvbW16b25lLmgiCjE0NDc0OiBzdHJ1Y3QgbW1pbml0X3Bmbm5pZF9jYWNoZSB7 CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsYXN0X3N0YXJ0OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg bGFzdF9lbmQ7CjE0NDc0OiAgaW50IGxhc3RfbmlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIG1lbW9yeV9wcmVzZW50KGludCBu aWQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKMTQ0NzQ6ICMgMTQ2 OSAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBtZW1tYXBfdmFsaWRfd2l0 aGluKHVuc2lnbmVkIGxvbmcgcGZuLAoxNDQ3NDogICAgICBzdHJ1Y3QgcGFnZSAqcGFnZSwgc3Ry dWN0IHpvbmUgKnpvbmUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0 NDc0OiAjIDcgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgiIDEKMTQ0NzQ6ICMgMzAgIi4vaW5jbHVk ZS9saW51eC90b3BvbG9neS5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvYXJjaF90b3Bv bG9neS5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9hcmNoX3RvcG9sb2d5LmgiCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv c21wLmgiIDEKMTQ0NzQ6ICMgMTUgIi4vaW5jbHVkZS9saW51eC9zbXAuaCIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L2xsaXN0LmgiIDEKMTQ0NzQ6ICMgNTQgIi4vaW5jbHVkZS9saW51eC9s bGlzdC5oIgoxNDQ3NDogc3RydWN0IGxsaXN0X2hlYWQgewoxNDQ3NDogIHN0cnVjdCBsbGlzdF9u b2RlICpmaXJzdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsbGlzdF9ub2RlIHsK MTQ0NzQ6ICBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbmV4dDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDY5ICIu L2luY2x1ZGUvbGludXgvbGxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5pdF9sbGlzdF9oZWFkKHN0cnVj dCBsbGlzdF9oZWFkICpsaXN0KQoxNDQ3NDogewoxNDQ3NDogIGxpc3QtPmZpcnN0ID0gKCh2b2lk ICopMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE4NyAiLi9pbmNsdWRlL2xpbnV4L2xsaXN0LmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGxsaXN0X2VtcHR5KGNvbnN0IHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiAoeyB1bmlvbiB7IHR5cGVvZihoZWFkLT5maXJzdCkgX192YWw7 IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihoZWFkLT5maXJz dCksIF9fdS5fX2MsIHNpemVvZihoZWFkLT5maXJzdCkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVf bm9jaGVjaygmKGhlYWQtPmZpcnN0KSwgX191Ll9fYywgc2l6ZW9mKGhlYWQtPmZpcnN0KSk7IGRv IHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSkgPT0gKCh2b2lkICopMCk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHN0cnVjdCBsbGlzdF9ub2RlICpsbGlzdF9uZXh0KHN0cnVjdCBsbGlzdF9u b2RlICpub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBub2RlLT5uZXh0OwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBsbGlzdF9hZGRfYmF0Y2goc3RydWN0IGxsaXN0X25v ZGUgKm5ld19maXJzdCwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbmV3X2xhc3Qs CjE0NDc0OiAgICAgICAgc3RydWN0IGxsaXN0X2hlYWQgKmhlYWQpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGxsaXN0 X2FkZChzdHJ1Y3QgbGxpc3Rfbm9kZSAqbmV3LCBzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVhZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbGxpc3RfYWRkX2JhdGNoKG5ldywgbmV3LCBoZWFkKTsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgMjIwICIuL2luY2x1ZGUvbGludXgvbGxpc3QuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVj dCBsbGlzdF9ub2RlICpsbGlzdF9kZWxfYWxsKHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoJmhlYWQtPmZpcnN0KSBfX2FpX3B0ciA9ICgm aGVhZC0+Zmlyc3QpOyBrYXNhbl9jaGVja193cml0ZShfX2FpX3B0ciwgc2l6ZW9mKCpfX2FpX3B0 cikpOyAoeyBfX3R5cGVvZl9fICgqKChfX2FpX3B0cikpKSBfX3JldCA9ICgoKCh2b2lkICopMCkp KTsgc3dpdGNoIChzaXplb2YoKigoX19haV9wdHIpKSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUg KCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20iICgqKChfX2FpX3B0 cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIi ICJ4Y2hnIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKChfX2FpX3B0cikp KSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIiICJ4 Y2hnIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlfcHRyKSkpIDog OiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGci ICJxICVxMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlfcHRyKSkpIDogOiAi bWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdfc2l6ZSgpOyB9IF9f cmV0OyB9KTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgbGxpc3Rf bm9kZSAqbGxpc3RfZGVsX2ZpcnN0KHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGxsaXN0X25vZGUgKmxsaXN0X3JldmVyc2Vfb3JkZXIoc3RydWN0IGxsaXN0 X25vZGUgKmhlYWQpOwoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3NtcC5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKnNtcF9jYWxsX2Z1bmNfdCkodm9pZCAqaW5mbyk7CjE0 NDc0OiB0eXBlZGVmIGJvb2wgKCpzbXBfY29uZF9mdW5jX3QpKGludCBjcHUsIHZvaWQgKmluZm8p OwoxNDQ3NDogc3RydWN0IF9fY2FsbF9zaW5nbGVfZGF0YSB7CjE0NDc0OiAgc3RydWN0IGxsaXN0 X25vZGUgbGxpc3Q7CjE0NDc0OiAgc21wX2NhbGxfZnVuY190IGZ1bmM7CjE0NDc0OiAgdm9pZCAq aW5mbzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF9fY2FsbF9zaW5nbGVfZGF0YSBjYWxsX3NpbmdsZV9k YXRhX3QKMTQ0NzQ6ICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyhzaXplb2Yoc3RydWN0IF9f Y2FsbF9zaW5nbGVfZGF0YSkpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2ln bmVkIGludCB0b3RhbF9jcHVzOwoxNDQ3NDogCjE0NDc0OiBpbnQgc21wX2NhbGxfZnVuY3Rpb25f c2luZ2xlKGludCBjcHVpZCwgc21wX2NhbGxfZnVuY190IGZ1bmMsIHZvaWQgKmluZm8sCjE0NDc0 OiAgICAgICAgIGludCB3YWl0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogdm9pZCBvbl9lYWNoX2NwdShzbXBfY2FsbF9mdW5jX3QgZnVuYywgdm9pZCAqaW5mbywgaW50 IHdhaXQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZv aWQgb25fZWFjaF9jcHVfbWFzayhjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgc21wX2NhbGxf ZnVuY190IGZ1bmMsCjE0NDc0OiAgIHZvaWQgKmluZm8sIGJvb2wgd2FpdCk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIG9uX2VhY2hf Y3B1X2NvbmQoc21wX2NvbmRfZnVuY190IGNvbmRfZnVuYywgc21wX2NhbGxfZnVuY190IGZ1bmMs CjE0NDc0OiAgICAgICAgIHZvaWQgKmluZm8sIGJvb2wgd2FpdCk7CjE0NDc0OiAKMTQ0NzQ6IHZv aWQgb25fZWFjaF9jcHVfY29uZF9tYXNrKHNtcF9jb25kX2Z1bmNfdCBjb25kX2Z1bmMsIHNtcF9j YWxsX2Z1bmNfdCBmdW5jLAoxNDQ3NDogICAgICAgdm9pZCAqaW5mbywgYm9vbCB3YWl0LCBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqbWFzayk7CjE0NDc0OiAKMTQ0NzQ6IGludCBzbXBfY2FsbF9mdW5j dGlvbl9zaW5nbGVfYXN5bmMoaW50IGNwdSwgY2FsbF9zaW5nbGVfZGF0YV90ICpjc2QpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vc21wLmgiCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXBzcGVjLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjX2RlZi5oIiAxCjE0NDc0OiAj IDIyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIKMTQ0NzQ6IHN0cnVjdCBt cGZfaW50ZWwgewoxNDQ3NDogIGNoYXIgc2lnbmF0dXJlWzRdOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBwaHlzcHRyOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgbGVuZ3RoOwoxNDQ3NDogIHVuc2lnbmVk IGNoYXIgc3BlY2lmaWNhdGlvbjsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGNoZWNrc3VtOwoxNDQ3 NDogIHVuc2lnbmVkIGNoYXIgZmVhdHVyZTE7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBmZWF0dXJl MjsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGZlYXR1cmUzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIg ZmVhdHVyZTQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBmZWF0dXJlNTsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbXBjX3RhYmxlIHsKMTQ0NzQ6ICBjaGFy IHNpZ25hdHVyZVs0XTsKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CjE0NDc0OiAgY2hh ciBzcGVjOwoxNDQ3NDogIGNoYXIgY2hlY2tzdW07CjE0NDc0OiAgY2hhciBvZW1bOF07CjE0NDc0 OiAgY2hhciBwcm9kdWN0aWRbMTJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBvZW1wdHI7CjE0NDc0 OiAgdW5zaWduZWQgc2hvcnQgb2Vtc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBvZW1jb3Vu dDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbGFwaWM7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlc2Vy dmVkOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVj X2RlZi5oIgoxNDQ3NDogc3RydWN0IG1wY19jcHUgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgdHlw ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGFwaWNpZDsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGFw aWN2ZXI7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBjcHVmbGFnOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBjcHVmZWF0dXJlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBmZWF0dXJlZmxhZzsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg bXBjX2J1cyB7CjE0NDc0OiAgdW5zaWduZWQgY2hhciB0eXBlOwoxNDQ3NDogIHVuc2lnbmVkIGNo YXIgYnVzaWQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBidXN0eXBlWzZdOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgMTA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIKMTQ0NzQ6IHN0 cnVjdCBtcGNfaW9hcGljIHsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHR5cGU7CjE0NDc0OiAgdW5z aWduZWQgY2hhciBhcGljaWQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBhcGljdmVyOwoxNDQ3NDog IHVuc2lnbmVkIGNoYXIgZmxhZ3M7CjE0NDc0OiAgdW5zaWduZWQgaW50IGFwaWNhZGRyOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1wY19pbnRzcmMgewoxNDQ3NDogIHVuc2lnbmVk IGNoYXIgdHlwZTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGlycXR5cGU7CjE0NDc0OiAgdW5zaWdu ZWQgc2hvcnQgaXJxZmxhZzsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHNyY2J1czsKMTQ0NzQ6ICB1 bnNpZ25lZCBjaGFyIHNyY2J1c2lycTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRzdGFwaWM7CjE0 NDc0OiAgdW5zaWduZWQgY2hhciBkc3RpcnE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVt IG1wX2lycV9zb3VyY2VfdHlwZXMgewoxNDQ3NDogIG1wX0lOVCA9IDAsCjE0NDc0OiAgbXBfTk1J ID0gMSwKMTQ0NzQ6ICBtcF9TTUkgPSAyLAoxNDQ3NDogIG1wX0V4dElOVCA9IDMKMTQ0NzQ6IH07 CjE0NDc0OiAjIDE0NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tcHNwZWNfZGVmLmgiCjE0NDc0 OiBzdHJ1Y3QgbXBjX2xpbnRzcmMgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgdHlwZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBjaGFyIGlycXR5cGU7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgaXJxZmxhZzsK MTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHNyY2J1c2lkOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgc3Jj YnVzaXJxOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgZGVzdGFwaWM7CjE0NDc0OiAgdW5zaWduZWQg Y2hhciBkZXN0YXBpY2xpbnQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IG1wY19vZW10YWJsZSB7CjE0NDc0OiAgY2hhciBzaWduYXR1cmVbNF07CjE0NDc0 OiAgdW5zaWduZWQgc2hvcnQgbGVuZ3RoOwoxNDQ3NDogIGNoYXIgcmV2OwoxNDQ3NDogIGNoYXIg Y2hlY2tzdW07CjE0NDc0OiAgY2hhciBtcGNbOF07CjE0NDc0OiB9OwoxNDQ3NDogIyAxNzcgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjX2RlZi5oIgoxNDQ3NDogZW51bSBtcF9idXN0eXBl IHsKMTQ0NzQ6ICBNUF9CVVNfSVNBID0gMSwKMTQ0NzQ6ICBNUF9CVVNfRUlTQSwKMTQ0NzQ6ICBN UF9CVVNfUENJLAoxNDQ3NDogfTsKMTQ0NzQ6ICMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9t cHNwZWMuaCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0Lmgi IDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBtcGNfYnVzOwoxNDQ3NDogc3RydWN0IG1wY19jcHU7CjE0NDc0OiBzdHJ1Y3QgbXBj X3RhYmxlOwoxNDQ3NDogc3RydWN0IGNwdWluZm9feDg2OwoxNDQ3NDogIyAyMyAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgoxNDQ3NDogc3RydWN0IHg4Nl9pbml0X21wcGFyc2Ug ewoxNDQ3NDogIHZvaWQgKCptcGNfcmVjb3JkKSh1bnNpZ25lZCBpbnQgbW9kZSk7CjE0NDc0OiAg dm9pZCAoKnNldHVwX2lvYXBpY19pZHMpKHZvaWQpOwoxNDQ3NDogIGludCAoKm1wY19hcGljX2lk KShzdHJ1Y3QgbXBjX2NwdSAqbSk7CjE0NDc0OiAgdm9pZCAoKnNtcF9yZWFkX21wY19vZW0pKHN0 cnVjdCBtcGNfdGFibGUgKm1wYyk7CjE0NDc0OiAgdm9pZCAoKm1wY19vZW1fcGNpX2J1cykoc3Ry dWN0IG1wY19idXMgKm0pOwoxNDQ3NDogIHZvaWQgKCptcGNfb2VtX2J1c19pbmZvKShzdHJ1Y3Qg bXBjX2J1cyAqbSwgY2hhciAqbmFtZSk7CjE0NDc0OiAgdm9pZCAoKmZpbmRfc21wX2NvbmZpZyko dm9pZCk7CjE0NDc0OiAgdm9pZCAoKmdldF9zbXBfY29uZmlnKSh1bnNpZ25lZCBpbnQgZWFybHkp OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNDIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQu aCIKMTQ0NzQ6IHN0cnVjdCB4ODZfaW5pdF9yZXNvdXJjZXMgewoxNDQ3NDogIHZvaWQgKCpwcm9i ZV9yb21zKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqcmVzZXJ2ZV9yZXNvdXJjZXMpKHZvaWQpOwox NDQ3NDogIGNoYXIgKigqbWVtb3J5X3NldHVwKSh2b2lkKTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDU3 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0LmgiCjE0NDc0OiBzdHJ1Y3QgeDg2X2lu aXRfaXJxcyB7CjE0NDc0OiAgdm9pZCAoKnByZV92ZWN0b3JfaW5pdCkodm9pZCk7CjE0NDc0OiAg dm9pZCAoKmludHJfaW5pdCkodm9pZCk7CjE0NDc0OiAgdm9pZCAoKnRyYXBfaW5pdCkodm9pZCk7 CjE0NDc0OiAgdm9pZCAoKmludHJfbW9kZV9zZWxlY3QpKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCpp bnRyX21vZGVfaW5pdCkodm9pZCk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHg4Nl9pbml0X29lbSB7CjE0NDc0 OiAgdm9pZCAoKmFyY2hfc2V0dXApKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCpiYW5uZXIpKHZvaWQp OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgODIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQu aCIKMTQ0NzQ6IHN0cnVjdCB4ODZfaW5pdF9wYWdpbmcgewoxNDQ3NDogIHZvaWQgKCpwYWdldGFi bGVfaW5pdCkodm9pZCk7CjE0NDc0OiB9OwoxNDQ3NDogIyA5MyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS94ODZfaW5pdC5oIgoxNDQ3NDogc3RydWN0IHg4Nl9pbml0X3RpbWVycyB7CjE0NDc0OiAg dm9pZCAoKnNldHVwX3BlcmNwdV9jbG9ja2V2KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqdGltZXJf aW5pdCkodm9pZCk7CjE0NDc0OiAgdm9pZCAoKndhbGxjbG9ja19pbml0KSh2b2lkKTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHg4Nl9pbml0X2lvbW11IHsKMTQ0NzQ6ICBpbnQgKCppb21tdV9pbml0KSh2b2lkKTsKMTQ0NzQ6 IH07CjE0NDc0OiAjIDExNCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgoxNDQ3 NDogc3RydWN0IHg4Nl9pbml0X3BjaSB7CjE0NDc0OiAgaW50ICgqYXJjaF9pbml0KSh2b2lkKTsK MTQ0NzQ6ICBpbnQgKCppbml0KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqaW5pdF9pcnEpKHZvaWQp OwoxNDQ3NDogIHZvaWQgKCpmaXh1cF9pcnFzKSh2b2lkKTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDEy OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgoxNDQ3NDogc3RydWN0IHg4Nl9o eXBlcl9pbml0IHsKMTQ0NzQ6ICB2b2lkICgqaW5pdF9wbGF0Zm9ybSkodm9pZCk7CjE0NDc0OiAg dm9pZCAoKmd1ZXN0X2xhdGVfaW5pdCkodm9pZCk7CjE0NDc0OiAgYm9vbCAoKngyYXBpY19hdmFp bGFibGUpKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCppbml0X21lbV9tYXBwaW5nKSh2b2lkKTsKMTQ0 NzQ6ICB2b2lkICgqaW5pdF9hZnRlcl9ib290bWVtKSh2b2lkKTsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCB4ODZfaW5pdF9hY3BpIHsKMTQ0NzQ6ICB2b2lkICgqc2V0X3Jvb3RfcG9pbnRlcikodTY0 IGFkZHIpOwoxNDQ3NDogIHU2NCAoKmdldF9yb290X3BvaW50ZXIpKHZvaWQpOwoxNDQ3NDogIHZv aWQgKCpyZWR1Y2VkX2h3X2Vhcmx5X2luaXQpKHZvaWQpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgeDg2X2luaXRfb3BzIHsK MTQ0NzQ6ICBzdHJ1Y3QgeDg2X2luaXRfcmVzb3VyY2VzIHJlc291cmNlczsKMTQ0NzQ6ICBzdHJ1 Y3QgeDg2X2luaXRfbXBwYXJzZSBtcHBhcnNlOwoxNDQ3NDogIHN0cnVjdCB4ODZfaW5pdF9pcnFz IGlycXM7CjE0NDc0OiAgc3RydWN0IHg4Nl9pbml0X29lbSBvZW07CjE0NDc0OiAgc3RydWN0IHg4 Nl9pbml0X3BhZ2luZyBwYWdpbmc7CjE0NDc0OiAgc3RydWN0IHg4Nl9pbml0X3RpbWVycyB0aW1l cnM7CjE0NDc0OiAgc3RydWN0IHg4Nl9pbml0X2lvbW11IGlvbW11OwoxNDQ3NDogIHN0cnVjdCB4 ODZfaW5pdF9wY2kgcGNpOwoxNDQ3NDogIHN0cnVjdCB4ODZfaHlwZXJfaW5pdCBoeXBlcjsKMTQ0 NzQ6ICBzdHJ1Y3QgeDg2X2luaXRfYWNwaSBhY3BpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB4ODZfY3B1aW5p dF9vcHMgewoxNDQ3NDogIHZvaWQgKCpzZXR1cF9wZXJjcHVfY2xvY2tldikodm9pZCk7CjE0NDc0 OiAgdm9pZCAoKmVhcmx5X3BlcmNwdV9jbG9ja19pbml0KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgq Zml4dXBfY3B1X2lkKShzdHJ1Y3QgY3B1aW5mb194ODYgKmMsIGludCBub2RlKTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0aW1lc3BlYzY0OwoxNDQ3NDogIyAxOTggIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIKMTQ0NzQ6IHN0cnVjdCB4ODZfbGVnYWN5X2Rldmlj ZXMgewoxNDQ3NDogIGludCBwbnBiaW9zOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjExICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0LmgiCjE0NDc0OiBlbnVtIHg4Nl9sZWdhY3lfaTgwNDJf c3RhdGUgewoxNDQ3NDogIFg4Nl9MRUdBQ1lfSTgwNDJfUExBVEZPUk1fQUJTRU5ULAoxNDQ3NDog IFg4Nl9MRUdBQ1lfSTgwNDJfRklSTVdBUkVfQUJTRU5ULAoxNDQ3NDogIFg4Nl9MRUdBQ1lfSTgw NDJfRVhQRUNURURfUFJFU0VOVCwKMTQ0NzQ6IH07CjE0NDc0OiAjIDIyOSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS94ODZfaW5pdC5oIgoxNDQ3NDogc3RydWN0IHg4Nl9sZWdhY3lfZmVhdHVyZXMg ewoxNDQ3NDogIGVudW0geDg2X2xlZ2FjeV9pODA0Ml9zdGF0ZSBpODA0MjsKMTQ0NzQ6ICBpbnQg cnRjOwoxNDQ3NDogIGludCB3YXJtX3Jlc2V0OwoxNDQ3NDogIGludCBub192Z2E7CjE0NDc0OiAg aW50IHJlc2VydmVfYmlvc19yZWdpb25zOwoxNDQ3NDogIHN0cnVjdCB4ODZfbGVnYWN5X2Rldmlj ZXMgZGV2aWNlczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgeDg2X2h5cGVyX3J1bnRpbWUgewoxNDQ3NDogIHZv aWQgKCpwaW5fdmNwdSkoaW50IGNwdSk7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNjggIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIKMTQ0NzQ6IHN0cnVjdCB4ODZfcGxhdGZvcm1fb3Bz IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nICgqY2FsaWJyYXRlX2NwdSkodm9pZCk7CjE0NDc0OiAg dW5zaWduZWQgbG9uZyAoKmNhbGlicmF0ZV90c2MpKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCpnZXRf d2FsbGNsb2NrKShzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwoxNDQ3NDogIGludCAoKnNldF93YWxs Y2xvY2spKGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CjE0NDc0OiAgdm9pZCAoKmlvbW11 X3NodXRkb3duKSh2b2lkKTsKMTQ0NzQ6ICBib29sICgqaXNfdW50cmFja2VkX3BhdF9yYW5nZSko dTY0IHN0YXJ0LCB1NjQgZW5kKTsKMTQ0NzQ6ICB2b2lkICgqbm1pX2luaXQpKHZvaWQpOwoxNDQ3 NDogIHVuc2lnbmVkIGNoYXIgKCpnZXRfbm1pX3JlYXNvbikodm9pZCk7CjE0NDc0OiAgdm9pZCAo KnNhdmVfc2NoZWRfY2xvY2tfc3RhdGUpKHZvaWQpOwoxNDQ3NDogIHZvaWQgKCpyZXN0b3JlX3Nj aGVkX2Nsb2NrX3N0YXRlKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqYXBpY19wb3N0X2luaXQpKHZv aWQpOwoxNDQ3NDogIHN0cnVjdCB4ODZfbGVnYWN5X2ZlYXR1cmVzIGxlZ2FjeTsKMTQ0NzQ6ICB2 b2lkICgqc2V0X2xlZ2FjeV9mZWF0dXJlcykodm9pZCk7CjE0NDc0OiAgc3RydWN0IHg4Nl9oeXBl cl9ydW50aW1lIGh5cGVyOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBjaV9kZXY7 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB4ODZfbXNpX29wcyB7CjE0NDc0OiAgaW50ICgqc2V0dXBf bXNpX2lycXMpKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBudmVjLCBpbnQgdHlwZSk7CjE0NDc0 OiAgdm9pZCAoKnRlYXJkb3duX21zaV9pcnEpKHVuc2lnbmVkIGludCBpcnEpOwoxNDQ3NDogIHZv aWQgKCp0ZWFyZG93bl9tc2lfaXJxcykoc3RydWN0IHBjaV9kZXYgKmRldik7CjE0NDc0OiAgdm9p ZCAoKnJlc3RvcmVfbXNpX2lycXMpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IHg4Nl9hcGljX29wcyB7CjE0NDc0OiAgdW5zaWduZWQgaW50ICgq aW9fYXBpY19yZWFkKSAodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCByZWcpOwoxNDQ3 NDogIHZvaWQgKCpyZXN0b3JlKSh2b2lkKTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgeDg2X2luaXRfb3BzIHg4Nl9pbml0OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB4ODZf Y3B1aW5pdF9vcHMgeDg2X2NwdWluaXQ7CjE0NDc0OiBleHRlcm4gc3RydWN0IHg4Nl9wbGF0Zm9y bV9vcHMgeDg2X3BsYXRmb3JtOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB4ODZfbXNpX29wcyB4ODZf bXNpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB4ODZfYXBpY19vcHMgeDg2X2FwaWNfb3BzOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gdm9pZCB4ODZfZWFybHlfaW5pdF9wbGF0Zm9ybV9xdWlya3Modm9p ZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB4ODZfaW5pdF9ub29wKHZvaWQpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgeDg2X2luaXRfdWludF9ub29wKHVuc2lnbmVkIGludCB1bnVzZWQpOwoxNDQ3NDogZXh0 ZXJuIGJvb2wgYm9vbF94ODZfaW5pdF9ub29wKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgeDg2 X29wX2ludF9ub29wKGludCBjcHUpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgeDg2X3BucGJpb3NfZGlz YWJsZWQodm9pZCk7CjE0NDc0OiAjIDggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjLmgi IDIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljZGVmLmgiIDEKMTQ0NzQ6 ICMgMTc5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWNkZWYuaCIKMTQ0NzQ6IHN0cnVjdCBs b2NhbF9hcGljIHsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQg X19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzAxOwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0 cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7CjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRfMSA6IDI0LAoxNDQ3NDogICAgcGh5c19hcGljX2lkIDogNCwKMTQ0NzQ6ICAgIF9fcmVzZXJ2 ZWRfMiA6IDQ7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNdOwoxNDQ3NDogIH0g aWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgY29uc3QKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgdmVyc2lvbiA6IDgsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzEgOiA4LAox NDQ3NDogICAgbWF4X2x2dCA6IDgsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzIgOiA4OwoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKMTQ0NzQ6ICB9IHZlcnNpb247CjE0NDc0OiAK MTQ0NzQ6ICAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y ZXNlcnZlZF8wMzsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQg X19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA0OwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0 cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDU7CjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0g X19yZXNlcnZlZF8wNjsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgewoxNDQ3NDogICB1 bnNpZ25lZCBpbnQgcHJpb3JpdHkgOiA4LAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMjQ7CjE0 NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CjE0NDc0OiAgfSB0cHI7CjE0NDc0 OiAKMTQ0NzQ6ICAgICAgICAgY29uc3QKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25l ZCBpbnQgcHJpb3JpdHkgOiA4LAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMjQ7CjE0NDc0OiAg IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CjE0NDc0OiAgfSBhcHI7CjE0NDc0OiAKMTQ0 NzQ6ICAgICAgICAgY29uc3QKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQg cHJpb3JpdHkgOiA4LAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMjQ7CjE0NDc0OiAgIHVuc2ln bmVkIGludCBfX3Jlc2VydmVkXzJbM107CjE0NDc0OiAgfSBwcHI7CjE0NDc0OiAKMTQ0NzQ6ICAg ICAgICAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IGVvaTsKMTQ0NzQ6ICAgdW5zaWdu ZWQgaW50IF9fcmVzZXJ2ZWRbM107CjE0NDc0OiAgfSBlb2k7CjE0NDc0OiAKMTQ0NzQ6ICAgICAg ICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wNzsK MTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgX19y ZXNlcnZlZF8xIDogMjQsCjE0NDc0OiAgICBsb2dpY2FsX2Rlc3QgOiA4OwoxNDQ3NDogICB1bnNp Z25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwoxNDQ3NDogIH0gbGRyOwoxNDQ3NDogCjE0NDc0OiAg ICAgICAgIHN0cnVjdCB7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyOCwK MTQ0NzQ6ICAgIG1vZGVsIDogNDsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlsz XTsKMTQ0NzQ6ICB9IGRmcjsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgewoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgc3B1cmlvdXNfdmVjdG9yIDogOCwKMTQ0NzQ6ICAgIGFwaWNfZW5hYmxl ZCA6IDEsCjE0NDc0OiAgICBmb2N1c19jcHUgOiAxLAoxNDQ3NDogICAgX19yZXNlcnZlZF8yIDog MjI7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CjE0NDc0OiAgfSBzdnI7 CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsKMTQ0NzQ6ICAgICAgICAgIHVuc2lnbmVk IGludCBiaXRmaWVsZDsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CjE0NDc0 OiAgfSBpc3IgWzhdOwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7CjE0NDc0OiAgICAg ICAgICB1bnNpZ25lZCBpbnQgYml0ZmllbGQ7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy dmVkWzNdOwoxNDQ3NDogIH0gdG1yIFs4XTsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3Qg ewoxNDQ3NDogICAgICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwoxNDQ3NDogICB1bnNpZ25l ZCBpbnQgX19yZXNlcnZlZFszXTsKMTQ0NzQ6ICB9IGlyciBbOF07CjE0NDc0OiAKMTQ0NzQ6ICAg ICAgICAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdW5zaWduZWQgaW50IHNl bmRfY3NfZXJyb3IgOiAxLAoxNDQ3NDogICAgIHJlY2VpdmVfY3NfZXJyb3IgOiAxLAoxNDQ3NDog ICAgIHNlbmRfYWNjZXB0X2Vycm9yIDogMSwKMTQ0NzQ6ICAgICByZWNlaXZlX2FjY2VwdF9lcnJv ciA6IDEsCjE0NDc0OiAgICAgX19yZXNlcnZlZF8xIDogMSwKMTQ0NzQ6ICAgICBzZW5kX2lsbGVn YWxfdmVjdG9yIDogMSwKMTQ0NzQ6ICAgICByZWNlaXZlX2lsbGVnYWxfdmVjdG9yIDogMSwKMTQ0 NzQ6ICAgICBpbGxlZ2FsX3JlZ2lzdGVyX2FkZHJlc3MgOiAxLAoxNDQ3NDogICAgIF9fcmVzZXJ2 ZWRfMiA6IDI0OwoxNDQ3NDogICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKMTQ0NzQ6 ICAgfSBlcnJvcl9iaXRzOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdW5zaWduZWQgaW50 IGVycm9yczsKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzNbM107CjE0NDc0OiAg IH0gYWxsX2Vycm9yczsKMTQ0NzQ6ICB9IGVzcjsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1 Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzA4OwoxNDQ3NDog CjE0NDc0OiAgICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9f cmVzZXJ2ZWRfMDk7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50 IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMDsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBz dHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzExOwoxNDQ3 NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9 IF9fcmVzZXJ2ZWRfMTI7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsgdW5zaWduZWQg aW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xMzsKMTQ0NzQ6IAoxNDQ3NDogICAgICAg ICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jlc2VydmVkXzE0Owox NDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7CjE0NDc0OiAgIHVuc2lnbmVkIGludCB2ZWN0 b3IgOiA4LAoxNDQ3NDogICAgZGVsaXZlcnlfbW9kZSA6IDMsCjE0NDc0OiAgICBkZXN0aW5hdGlv bl9tb2RlIDogMSwKMTQ0NzQ6ICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCjE0NDc0OiAgICBfX3Jl c2VydmVkXzEgOiAxLAoxNDQ3NDogICAgbGV2ZWwgOiAxLAoxNDQ3NDogICAgdHJpZ2dlciA6IDEs CjE0NDc0OiAgICBfX3Jlc2VydmVkXzIgOiAyLAoxNDQ3NDogICAgc2hvcnRoYW5kIDogMiwKMTQ0 NzQ6ICAgIF9fcmVzZXJ2ZWRfMyA6IDEyOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgX19yZXNlcnZl ZF80WzNdOwoxNDQ3NDogIH0gaWNyMTsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1Y3Qgewox NDQ3NDogICB1bmlvbiB7CjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQs CjE0NDc0OiAgICAgcGh5c19kZXN0IDogNCwKMTQ0NzQ6ICAgICBfX3Jlc2VydmVkXzIgOiA0Owox NDQ3NDogICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMyA6IDI0LAoxNDQ3NDogICAgIGxvZ2lj YWxfZGVzdCA6IDg7CjE0NDc0OiAgIH0gZGVzdDsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVz ZXJ2ZWRfNFszXTsKMTQ0NzQ6ICB9IGljcjI7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0 IHsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCjE0NDc0OiAgICBfX3Jlc2VydmVk XzEgOiA0LAoxNDQ3NDogICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKMTQ0NzQ6ICAgIF9fcmVzZXJ2 ZWRfMiA6IDMsCjE0NDc0OiAgICBtYXNrIDogMSwKMTQ0NzQ6ICAgIHRpbWVyX21vZGUgOiAxLAox NDQ3NDogICAgX19yZXNlcnZlZF8zIDogMTQ7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2Vy dmVkXzRbM107CjE0NDc0OiAgfSBsdnRfdGltZXI7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3Ry dWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCjE0NDc0OiAgICBkZWxpdmVy eV9tb2RlIDogMywKMTQ0NzQ6ICAgIF9fcmVzZXJ2ZWRfMSA6IDEsCjE0NDc0OiAgICBkZWxpdmVy eV9zdGF0dXMgOiAxLAoxNDQ3NDogICAgX19yZXNlcnZlZF8yIDogMywKMTQ0NzQ6ICAgIG1hc2sg OiAxLAoxNDQ3NDogICAgX19yZXNlcnZlZF8zIDogMTU7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBf X3Jlc2VydmVkXzRbM107CjE0NDc0OiAgfSBsdnRfdGhlcm1hbDsKMTQ0NzQ6IAoxNDQ3NDogICAg ICAgICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKMTQ0NzQ6ICAg IGRlbGl2ZXJ5X21vZGUgOiAzLAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMSwKMTQ0NzQ6ICAg IGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzIgOiAzLAoxNDQ3NDog ICAgbWFzayA6IDEsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzMgOiAxNTsKMTQ0NzQ6ICAgdW5zaWdu ZWQgaW50IF9fcmVzZXJ2ZWRfNFszXTsKMTQ0NzQ6ICB9IGx2dF9wYzsKMTQ0NzQ6IAoxNDQ3NDog ICAgICAgICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKMTQ0NzQ6 ICAgIGRlbGl2ZXJ5X21vZGUgOiAzLAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMSwKMTQ0NzQ6 ICAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCjE0NDc0OiAgICBwb2xhcml0eSA6IDEsCjE0NDc0OiAg ICByZW1vdGVfaXJyIDogMSwKMTQ0NzQ6ICAgIHRyaWdnZXIgOiAxLAoxNDQ3NDogICAgbWFzayA6 IDEsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzIgOiAxNTsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfM1szXTsKMTQ0NzQ6ICB9IGx2dF9saW50MDsKMTQ0NzQ6IAoxNDQ3NDogICAgICAg ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKMTQ0NzQ6ICAgIGRl bGl2ZXJ5X21vZGUgOiAzLAoxNDQ3NDogICAgX19yZXNlcnZlZF8xIDogMSwKMTQ0NzQ6ICAgIGRl bGl2ZXJ5X3N0YXR1cyA6IDEsCjE0NDc0OiAgICBwb2xhcml0eSA6IDEsCjE0NDc0OiAgICByZW1v dGVfaXJyIDogMSwKMTQ0NzQ6ICAgIHRyaWdnZXIgOiAxLAoxNDQ3NDogICAgbWFzayA6IDEsCjE0 NDc0OiAgICBfX3Jlc2VydmVkXzIgOiAxNTsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRfM1szXTsKMTQ0NzQ6ICB9IGx2dF9saW50MTsKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICBzdHJ1 Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKMTQ0NzQ6ICAgIF9fcmVzZXJ2 ZWRfMSA6IDQsCjE0NDc0OiAgICBkZWxpdmVyeV9zdGF0dXMgOiAxLAoxNDQ3NDogICAgX19yZXNl cnZlZF8yIDogMywKMTQ0NzQ6ICAgIG1hc2sgOiAxLAoxNDQ3NDogICAgX19yZXNlcnZlZF8zIDog MTU7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CjE0NDc0OiAgfSBsdnRf ZXJyb3I7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQg aW50IGluaXRpYWxfY291bnQ7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107 CjE0NDc0OiAgfSB0aW1lcl9pY3I7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgY29uc3QKMTQ0NzQ6 ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgY3Vycl9jb3VudDsKMTQ0NzQ6ICAgdW5z aWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKMTQ0NzQ6ICB9IHRpbWVyX2NjcjsKMTQ0NzQ6IAox NDQ3NDogICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBfX3Jl c2VydmVkXzE2OwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTc7CjE0NDc0OiAKMTQ0NzQ6ICAgICAgICAgc3Ry dWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xODsKMTQ0NzQ6 IAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgeyB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFs0XTsgfSBf X3Jlc2VydmVkXzE5OwoxNDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7CjE0NDc0OiAgIHVu c2lnbmVkIGludCBkaXZpc29yIDogNCwKMTQ0NzQ6ICAgIF9fcmVzZXJ2ZWRfMSA6IDI4OwoxNDQ3 NDogICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwoxNDQ3NDogIH0gdGltZXJfZGNyOwox NDQ3NDogCjE0NDc0OiAgICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRd OyB9IF9fcmVzZXJ2ZWRfMjA7CjE0NDc0OiAKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tl ZCkpOwoxNDQ3NDogIyA0MzUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpY2RlZi5oIgoxNDQ3 NDogZW51bSBpb2FwaWNfaXJxX2Rlc3RpbmF0aW9uX3R5cGVzIHsKMTQ0NzQ6ICBkZXN0X0ZpeGVk ID0gMCwKMTQ0NzQ6ICBkZXN0X0xvd2VzdFByaW8gPSAxLAoxNDQ3NDogIGRlc3RfU01JID0gMiwK MTQ0NzQ6ICBkZXN0X19yZXNlcnZlZF8xID0gMywKMTQ0NzQ6ICBkZXN0X05NSSA9IDQsCjE0NDc0 OiAgZGVzdF9JTklUID0gNSwKMTQ0NzQ6ICBkZXN0X19yZXNlcnZlZF8yID0gNiwKMTQ0NzQ6ICBk ZXN0X0V4dElOVCA9IDcKMTQ0NzQ6IH07CjE0NDc0OiAjIDkgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXBzcGVjLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBwaWNfbW9kZTsKMTQ0NzQ6 ICMgNDAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjLmgiCjE0NDc0OiBleHRlcm4gdW5z aWduZWQgbG9uZyBtcF9idXNfbm90X3BjaVsoKCgyNTYpICsgKChzaXplb2YobG9uZykgKiA4KSkg LSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKV07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNp Z25lZCBpbnQgYm9vdF9jcHVfcGh5c2ljYWxfYXBpY2lkOwoxNDQ3NDogZXh0ZXJuIHU4IGJvb3Rf Y3B1X2FwaWNfdmVyc2lvbjsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIG1wX2xhcGljX2Fk ZHI7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzbXBfZm91bmRfY29uZmlnOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGdldF9zbXBfY29uZmln KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgeDg2X2luaXQubXBwYXJzZS5nZXRfc21wX2NvbmZpZygw KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBlYXJseV9nZXRfc21wX2NvbmZpZyh2b2lk KQoxNDQ3NDogewoxNDQ3NDogIHg4Nl9pbml0Lm1wcGFyc2UuZ2V0X3NtcF9jb25maWcoMSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZmluZF9zbXBfY29uZmlnKHZvaWQpCjE0NDc0OiB7 CjE0NDc0OiAgeDg2X2luaXQubXBwYXJzZS5maW5kX3NtcF9jb25maWcoKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBlODIwX19tZW1ibG9ja19hbGxvY19yZXNl cnZlZF9tcGNfbmV3KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCBlbmFibGVfdXBkYXRlX21wdGFi bGU7CjE0NDc0OiBleHRlcm4gaW50IGRlZmF1bHRfbXBjX2FwaWNfaWQoc3RydWN0IG1wY19jcHUg Km0pOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGVmYXVsdF9zbXBfcmVhZF9tcGNfb2VtKHN0cnVjdCBt cGNfdGFibGUgKm1wYyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRlZmF1bHRfbXBjX29l bV9idXNfaW5mbyhzdHJ1Y3QgbXBjX2J1cyAqbSwgY2hhciAqc3RyKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRlZmF1bHRfZmluZF9zbXBfY29uZmlnKHZvaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGVmYXVsdF9nZXRfc21wX2NvbmZpZyh1bnNpZ25lZCBpbnQg ZWFybHkpOwoxNDQ3NDogIyA4OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKMTQ0 NzQ6IGludCBnZW5lcmljX3Byb2Nlc3Nvcl9pbmZvKGludCBhcGljaWQsIGludCB2ZXJzaW9uKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwaHlzaWRfbWFzayB7CjE0NDc0 OiAgdW5zaWduZWQgbG9uZyBtYXNrWygoKDMyNzY4KSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0g MSkgLyAoKHNpemVvZihsb25nKSAqIDgpKSldOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdHlw ZWRlZiBzdHJ1Y3QgcGh5c2lkX21hc2sgcGh5c2lkX21hc2tfdDsKMTQ0NzQ6ICMgMTMyICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL21wc3BlYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBwaHlzaWRz X2NvZXJjZShwaHlzaWRfbWFza190ICptYXApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG1hcC0+ bWFza1swXTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwaHlzaWRzX3Byb21vdGUodW5z aWduZWQgbG9uZyBwaHlzaWRzLCBwaHlzaWRfbWFza190ICptYXApCjE0NDc0OiB7CjE0NDc0OiAg Yml0bWFwX3plcm8oKCptYXApLm1hc2ssIDMyNzY4KTsKMTQ0NzQ6ICBtYXAtPm1hc2tbMF0gPSBw aHlzaWRzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBoeXNpZF9zZXRfbWFza19vZl9w aHlzaWQoaW50IHBoeXNpZCwgcGh5c2lkX21hc2tfdCAqbWFwKQoxNDQ3NDogewoxNDQ3NDogIGJp dG1hcF96ZXJvKCgqbWFwKS5tYXNrLCAzMjc2OCk7CjE0NDc0OiAgc2V0X2JpdChwaHlzaWQsICgq bWFwKS5tYXNrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHBoeXNpZF9tYXNrX3QgcGh5c19jcHVfcHJlc2VudF9tYXA7CjE0NDc0OiAjIDEz ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXBpYy5oIiAxCjE0NDc0OiAjIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L2FwaWMuaCIKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQox NDQ3NDogIyAyOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hY3BpLmgiIDEKMTQ0NzQ6ICMgOSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9hY3BpLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hY3BpL3BkY19pbnRlbC5o IiAxCjE0NDc0OiAjIDEwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIgMgoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbnVtYS5oIiAxCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCIgMQoxNDQ3NDogIyA4NSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS90b3BvbG9neS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG51bWFfbm9kZV9pZCh2b2lkKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludCBlYXJseV9jcHVfdG9fbm9kZShpbnQgY3B1KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldHVwX25v ZGVfdG9fY3B1bWFza19tYXAodm9pZCkgeyB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy90b3BvbG9neS5oIiAxCjE0NDc0OiAjIDEwNCAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90b3BvbG9neS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X2NvcmVncm91cF9tYXNrKGludCBjcHUpOwoxNDQ3 NDogIyAxMTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCIKMTQ0NzQ6IGV4dGVy biB1bnNpZ25lZCBpbnQgX19tYXhfbG9naWNhbF9wYWNrYWdlczsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IF9fbWF4X2RpZV9wZXJfcGFja2FnZTsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IHRvcG9sb2d5X21heF9kaWVfcGVyX3BhY2thZ2Uodm9pZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gX19tYXhfZGllX3Blcl9wYWNrYWdlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gaW50IF9fbWF4X3NtdF90aHJlYWRzOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdG9wb2xv Z3lfbWF4X3NtdF90aHJlYWRzKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fbWF4X3Nt dF90aHJlYWRzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBpbnQgdG9wb2xvZ3lfdXBkYXRlX3Bh Y2thZ2VfbWFwKHVuc2lnbmVkIGludCBhcGljaWQsIHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDog aW50IHRvcG9sb2d5X3VwZGF0ZV9kaWVfbWFwKHVuc2lnbmVkIGludCBkaWVpZCwgdW5zaWduZWQg aW50IGNwdSk7CjE0NDc0OiBpbnQgdG9wb2xvZ3lfcGh5c190b19sb2dpY2FsX3BrZyh1bnNpZ25l ZCBpbnQgcGtnKTsKMTQ0NzQ6IGludCB0b3BvbG9neV9waHlzX3RvX2xvZ2ljYWxfZGllKHVuc2ln bmVkIGludCBkaWUsIHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogYm9vbCB0b3BvbG9neV9pc19w cmltYXJ5X3RocmVhZCh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGJvb2wgdG9wb2xvZ3lfc210 X3N1cHBvcnRlZCh2b2lkKTsKMTQ0NzQ6ICMgMTU2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Rv cG9sb2d5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfZml4X3BoeXNfcGFja2FnZV9pZChpbnQgbnVtLCB1 MzIgc2xvdCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBjaV9idXM7 CjE0NDc0OiBpbnQgeDg2X3BjaV9yb290X2J1c19ub2RlKGludCBidXMpOwoxNDQ3NDogdm9pZCB4 ODZfcGNpX3Jvb3RfYnVzX3Jlc291cmNlcyhpbnQgYnVzLCBzdHJ1Y3QgbGlzdF9oZWFkICpyZXNv dXJjZXMpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCB4ODZfdG9wb2xvZ3lfdXBkYXRlOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkpIF9fdHlwZW9mX18o aW50KSBzY2hlZF9jb3JlX3ByaW9yaXR5OwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBfX2F0 dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKSBzeXNjdGxfc2No ZWRfaXRtdF9lbmFibGVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2NoZWRfc2V0X2l0 bXRfY29yZV9wcmlvKGludCBwcmlvLCBpbnQgY29yZV9jcHUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGludCBzY2hlZF9zZXRfaXRtdF9zdXBwb3J0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgc2NoZWRfY2xlYXJfaXRtdF9zdXBwb3J0KHZvaWQpOwoxNDQ3NDogIyA4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL251bWEuaCIgMgoxNDQ3NDogIyA0NSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9udW1hLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF9hcGljaWRfdG9fbm9kZShpbnQgYXBpY2lk LCBzMTYgbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG51bWFfY3B1 X25vZGUoaW50IGNwdSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKC0xKTsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgNjYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbnVtYS5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBudW1h X3NldF9ub2RlKGludCBjcHUsIGludCBub2RlKSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbnVtYV9jbGVhcl9u b2RlKGludCBjcHUpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbml0X2NwdV90b19ub2RlKHZvaWQpIHsgfQox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBudW1hX2FkZF9jcHUoaW50IGNwdSkgeyB9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG51bWFfcmVt b3ZlX2NwdShpbnQgY3B1KSB7IH0KMTQ0NzQ6ICMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v YWNwaS5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZml4bWFwLmgiIDEK MTQ0NzQ6ICMgMTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIiAyCjE0NDc0OiAjIDIz ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgYWNwaV9s YXBpYzsKMTQ0NzQ6IGV4dGVybiBpbnQgYWNwaV9pb2FwaWM7CjE0NDc0OiBleHRlcm4gaW50IGFj cGlfbm9pcnE7CjE0NDc0OiBleHRlcm4gaW50IGFjcGlfc3RyaWN0OwoxNDQ3NDogZXh0ZXJuIGlu dCBhY3BpX2Rpc2FibGVkOwoxNDQ3NDogZXh0ZXJuIGludCBhY3BpX3BjaV9kaXNhYmxlZDsKMTQ0 NzQ6IGV4dGVybiBpbnQgYWNwaV9za2lwX3RpbWVyX292ZXJyaWRlOwoxNDQ3NDogZXh0ZXJuIGlu dCBhY3BpX3VzZV90aW1lcl9vdmVycmlkZTsKMTQ0NzQ6IGV4dGVybiBpbnQgYWNwaV9maXhfcGlu Ml9wb2xhcml0eTsKMTQ0NzQ6IGV4dGVybiBpbnQgYWNwaV9kaXNhYmxlX2NtY2ZmOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdTggYWNwaV9zY2lfZmxhZ3M7CjE0NDc0OiBleHRlcm4gdTMyIGFjcGlf c2NpX292ZXJyaWRlX2dzaTsKMTQ0NzQ6IHZvaWQgYWNwaV9waWNfc2NpX3NldF90cmlnZ2VyKHVu c2lnbmVkIGludCwgdTE2KTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldmljZTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCAoKl9fYWNwaV9yZWdpc3Rlcl9nc2kpKHN0cnVjdCBkZXZpY2UgKmRl diwgdTMyIGdzaSwKMTQ0NzQ6ICAgICAgIGludCB0cmlnZ2VyLCBpbnQgcG9sYXJpdHkpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgKCpfX2FjcGlfdW5yZWdpc3Rlcl9nc2kpKHUzMiBnc2kpOwoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGRpc2FibGVfYWNwaSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGFjcGlfZGlz YWJsZWQgPSAxOwoxNDQ3NDogIGFjcGlfcGNpX2Rpc2FibGVkID0gMTsKMTQ0NzQ6ICBhY3BpX25v aXJxID0gMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBhY3BpX2dzaV90b19p cnEodTMyIGdzaSwgdW5zaWduZWQgaW50ICppcnEpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFjcGlf bm9pcnFfc2V0KHZvaWQpIHsgYWNwaV9ub2lycSA9IDE7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYWNwaV9kaXNh YmxlX3BjaSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGFjcGlfcGNpX2Rpc2FibGVkID0gMTsKMTQ0 NzQ6ICBhY3BpX25vaXJxX3NldCgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgKCphY3BpX3N1c3BlbmRfbG93bGV2ZWwpKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHVuc2lnbmVkIGxvbmcgYWNwaV9nZXRfd2FrZXVwX2FkZHJlc3Modm9pZCk7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBhY3BpX3Byb2Nl c3Nvcl9jc3RhdGVfY2hlY2sodW5zaWduZWQgaW50IG1heF9jc3RhdGUpCjE0NDc0OiB7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaWYgKGJv b3RfY3B1X2RhdGEueDg2ID09IDB4MEYgJiYKMTQ0NzQ6ICAgICAgYm9vdF9jcHVfZGF0YS54ODZf dmVuZG9yID09IDIgJiYKMTQ0NzQ6ICAgICAgYm9vdF9jcHVfZGF0YS54ODZfbW9kZWwgPD0gMHgw NSAmJgoxNDQ3NDogICAgICBib290X2NwdV9kYXRhLng4Nl9zdGVwcGluZyA8IDB4MEEpCjE0NDc0 OiAgIHJldHVybiAxOwoxNDQ3NDogIGVsc2UgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcCgoMTkq MzIgKyAoNCkpKSAmJiAoICgoKCgxOSozMiArICg0KSkpPj41KT09KDApICYmICgxVUw8PCgoKDE5 KjMyICsgKDQpKSkmMzEpICYgKCgxPDwoKCAwKjMyKyAwKSAmIDMxKSl8MHwoMTw8KCggMCozMisg NSkgJiAzMSkpfCgxPDwoKCAwKjMyKyA2KSAmIDMxKSl8ICgxPDwoKCAwKjMyKyA4KSAmIDMxKSl8 MHwoMTw8KCggMCozMisyNCkgJiAzMSkpfCgxPDwoKCAwKjMyKzE1KSAmIDMxKSl8ICgxPDwoKCAw KjMyKzI1KSAmIDMxKSl8KDE8PCgoIDAqMzIrMjYpICYgMzEpKSkgKSkgfHwgKCgoKDE5KjMyICsg KDQpKSk+PjUpPT0oMSkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAoKDE8PCgoIDEq MzIrMjkpICYgMzEpKXwwKSApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgyKSAmJiAoMVVM PDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0o MykgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAoKDE8PCgoIDMqMzIrMjApICYgMzEp KSkgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oNCkgJiYgKDFVTDw8KCgoMTkqMzIgKyAo NCkpKSYzMSkgJiAoMCkgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oNSkgJiYgKDFVTDw8 KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDYp ICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkp KT4+NSk9PSg3KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5 KjMyICsgKDQpKSk+PjUpPT0oOCkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkp IHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDkpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkm MzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgxMCkgJiYgKDFVTDw8KCgoMTkq MzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDExKSAmJiAo MVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUp PT0oMTIpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIg KyAoNCkpKT4+NSk9PSgxMykgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8 ICgoKCgxOSozMiArICg0KSkpPj41KT09KDE0KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMx KSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oMTUpICYmICgxVUw8PCgoKDE5KjMy ICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgxNikgJiYgKDFV TDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09 KDE3KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsg KDQpKSk+PjUpPT0oMTgpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAo KGludCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkgfHwgKChpbnQp KHNpemVvZihzdHJ1Y3QgeyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpKSA/IDEgOiB0ZXN0X2Jp dCgoMTkqMzIgKyAoNCkpLCAodW5zaWduZWQgbG9uZyAqKSgoJmJvb3RfY3B1X2RhdGEpLT54ODZf Y2FwYWJpbGl0eSkpKSkKMTQ0NzQ6ICAgcmV0dXJuIDE7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBy ZXR1cm4gbWF4X2NzdGF0ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhcmNoX2hhc19h Y3BpX3BkYyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBjcHVpbmZvX3g4NiAqYyA9ICYo Kih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJihjcHVfaW5mbykp ICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7ICh7IHVu c2lnbmVkIGxvbmcgX19wdHI7IF9fYXNtX18gKCIiIDogIj1yIihfX3B0cikgOiAiMCIoKHR5cGVv ZigqKCgmKGNwdV9pbmZvKSkpKSAqKSgoJihjcHVfaW5mbykpKSkpOyAodHlwZW9mKCh0eXBlb2Yo KigoJihjcHVfaW5mbykpKSkgKikoKCYoY3B1X2luZm8pKSkpKSAoX19wdHIgKyAoKChfX3Blcl9j cHVfb2Zmc2V0WygwKV0pKSkpOyB9KTsgfSkpOwoxNDQ3NDogIHJldHVybiAoYy0+eDg2X3ZlbmRv ciA9PSAwIHx8CjE0NDc0OiAgIGMtPng4Nl92ZW5kb3IgPT0gNSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgYXJjaF9hY3BpX3NldF9wZGNfYml0cyh1MzIgKmJ1ZikKMTQ0NzQ6IHsKMTQ0 NzQ6ICBzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSAmKCooeyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBw X3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2luZm8pKSArIDApKSgodm9pZCAqKTApOyAodm9pZClf X3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9f ICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihjcHVfaW5mbykpKSkgKikoKCYo Y3B1X2luZm8pKSkpKTsgKHR5cGVvZigodHlwZW9mKCooKCYoY3B1X2luZm8pKSkpICopKCgmKGNw dV9pbmZvKSkpKSkgKF9fcHRyICsgKCgoX19wZXJfY3B1X29mZnNldFsoMCldKSkpKTsgfSk7IH0p KTsKMTQ0NzQ6IAoxNDQ3NDogIGJ1ZlsyXSB8PSAoKDB4MDAxMCkgfCAoMHgwMDA4KSB8ICgweDAw MDIpIHwgKDB4MDEwMCkgfCAoMHgwMjAwKSk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoKF9fYnVpbHRp bl9jb25zdGFudF9wKCggNCozMisgNykpICYmICggKCgoKCA0KjMyKyA3KSk+PjUpPT0oMCkgJiYg KDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAoKDE8PCgoIDAqMzIrIDApICYgMzEpKXwwfCgxPDwo KCAwKjMyKyA1KSAmIDMxKSl8KDE8PCgoIDAqMzIrIDYpICYgMzEpKXwgKDE8PCgoIDAqMzIrIDgp ICYgMzEpKXwwfCgxPDwoKCAwKjMyKzI0KSAmIDMxKSl8KDE8PCgoIDAqMzIrMTUpICYgMzEpKXwg KDE8PCgoIDAqMzIrMjUpICYgMzEpKXwoMTw8KCggMCozMisyNikgJiAzMSkpKSApKSB8fCAoKCgo IDQqMzIrIDcpKT4+NSk9PSgxKSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmICgoMTw8KCgg MSozMisyOSkgJiAzMSkpfDApICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDIpICYmICgxVUw8 PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgzKSAmJiAo MVVMPDwoKCggNCozMisgNykpJjMxKSAmICgoMTw8KCggMyozMisyMCkgJiAzMSkpKSApKSB8fCAo KCgoIDQqMzIrIDcpKT4+NSk9PSg0KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmICgwKSAp KSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSg1KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAm IDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oNikgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYz MSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDcpICYmICgxVUw8PCgoKCA0KjMyKyA3 KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSg4KSAmJiAoMVVMPDwoKCggNCoz MisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oOSkgJiYgKDFVTDw8KCgo IDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDEwKSAmJiAoMVVM PDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTEpICYm ICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgx MikgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41 KT09KDEzKSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3 KSk+PjUpPT0oMTQpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQq MzIrIDcpKT4+NSk9PSgxNSkgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgo KCggNCozMisgNykpPj41KT09KDE2KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkg fHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTcpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYg MCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgxOCkgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYz MSkgJiAwICkpIHx8ICgoaW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEoMTkgIT0gMTkpKTsg fSkpKSB8fCAoKGludCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkp ID8gMSA6IHRlc3RfYml0KCggNCozMisgNyksICh1bnNpZ25lZCBsb25nICopKChjKS0+eDg2X2Nh cGFiaWxpdHkpKSkpCjE0NDc0OiAgIGJ1ZlsyXSB8PSAoKDB4MDAwOCkgfCAoMHgwMDAyKSB8ICgw eDAwMjApIHwgKDB4MDgwMCkgfCAoMHgwMDAxKSk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoKF9fYnVp bHRpbl9jb25zdGFudF9wKCggMCozMisyMikpICYmICggKCgoKCAwKjMyKzIyKSk+PjUpPT0oMCkg JiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAoKDE8PCgoIDAqMzIrIDApICYgMzEpKXwwfCgx PDwoKCAwKjMyKyA1KSAmIDMxKSl8KDE8PCgoIDAqMzIrIDYpICYgMzEpKXwgKDE8PCgoIDAqMzIr IDgpICYgMzEpKXwwfCgxPDwoKCAwKjMyKzI0KSAmIDMxKSl8KDE8PCgoIDAqMzIrMTUpICYgMzEp KXwgKDE8PCgoIDAqMzIrMjUpICYgMzEpKXwoMTw8KCggMCozMisyNikgJiAzMSkpKSApKSB8fCAo KCgoIDAqMzIrMjIpKT4+NSk9PSgxKSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmICgoMTw8 KCggMSozMisyOSkgJiAzMSkpfDApICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDIpICYmICgx VUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSgzKSAm JiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmICgoMTw8KCggMyozMisyMCkgJiAzMSkpKSApKSB8 fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSg0KSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmICgw KSApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSg1KSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMx KSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oNikgJiYgKDFVTDw8KCgoIDAqMzIrMjIp KSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDcpICYmICgxVUw8PCgoKCAwKjMy KzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSg4KSAmJiAoMVVMPDwoKCgg MCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oOSkgJiYgKDFVTDw8 KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDEwKSAmJiAo MVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oMTEp ICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9 PSgxMikgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikp Pj41KT09KDEzKSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMy KzIyKSk+PjUpPT0oMTQpICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgo IDAqMzIrMjIpKT4+NSk9PSgxNSkgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8 ICgoKCggMCozMisyMikpPj41KT09KDE2KSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAg KSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oMTcpICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEp ICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSgxOCkgJiYgKDFVTDw8KCgoIDAqMzIrMjIp KSYzMSkgJiAwICkpIHx8ICgoaW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEoMTkgIT0gMTkp KTsgfSkpKSB8fCAoKGludCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0p KSkpID8gMSA6IHRlc3RfYml0KCggMCozMisyMiksICh1bnNpZ25lZCBsb25nICopKChjKS0+eDg2 X2NhcGFiaWxpdHkpKSkpCjE0NDc0OiAgIGJ1ZlsyXSB8PSAoMHgwMDA0KTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmICghKF9fYnVpbHRpbl9jb25zdGFudF9wKCgg NCozMisgMykpICYmICggKCgoKCA0KjMyKyAzKSk+PjUpPT0oMCkgJiYgKDFVTDw8KCgoIDQqMzIr IDMpKSYzMSkgJiAoKDE8PCgoIDAqMzIrIDApICYgMzEpKXwwfCgxPDwoKCAwKjMyKyA1KSAmIDMx KSl8KDE8PCgoIDAqMzIrIDYpICYgMzEpKXwgKDE8PCgoIDAqMzIrIDgpICYgMzEpKXwwfCgxPDwo KCAwKjMyKzI0KSAmIDMxKSl8KDE8PCgoIDAqMzIrMTUpICYgMzEpKXwgKDE8PCgoIDAqMzIrMjUp ICYgMzEpKXwoMTw8KCggMCozMisyNikgJiAzMSkpKSApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9 PSgxKSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmICgoMTw8KCggMSozMisyOSkgJiAzMSkp fDApICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDIpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkm MzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgzKSAmJiAoMVVMPDwoKCggNCozMisg MykpJjMxKSAmICgoMTw8KCggMyozMisyMCkgJiAzMSkpKSApKSB8fCAoKCgoIDQqMzIrIDMpKT4+ NSk9PSg0KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmICgwKSApKSB8fCAoKCgoIDQqMzIr IDMpKT4+NSk9PSg1KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0 KjMyKyAzKSk+PjUpPT0oNikgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgo KCggNCozMisgMykpPj41KT09KDcpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8 fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSg4KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAg KSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oOSkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkg JiAwICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDEwKSAmJiAoMVVMPDwoKCggNCozMisgMykp JjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oMTEpICYmICgxVUw8PCgoKCA0KjMy KyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgxMikgJiYgKDFVTDw8KCgo IDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDEzKSAmJiAoMVVM PDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oMTQpICYm ICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgx NSkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykpPj41 KT09KDE2KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAz KSk+PjUpPT0oMTcpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQq MzIrIDMpKT4+NSk9PSgxOCkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgo aW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEoMTkgIT0gMTkpKTsgfSkpKSB8fCAoKGludCko c2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkpID8gMSA6IHRlc3RfYml0 KCggNCozMisgMyksICh1bnNpZ25lZCBsb25nICopKChjKS0+eDg2X2NhcGFiaWxpdHkpKSkpCjE0 NDc0OiAgIGJ1ZlsyXSAmPSB+KCgweDAyMDApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCBhY3BpX2hhc19jcHVfaW5fbWFkdCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhIWFj cGlfbGFwaWM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhY3BpX2FyY2hf c2V0X3Jvb3RfcG9pbnRlcih1NjQgYWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICB4ODZfaW5pdC5hY3Bp LnNldF9yb290X3BvaW50ZXIoYWRkcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dTY0IGFjcGlfYXJjaF9nZXRfcm9vdF9wb2ludGVyKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIHg4Nl9pbml0LmFjcGkuZ2V0X3Jvb3RfcG9pbnRlcigpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiB2b2lkIGFjcGlfZ2VuZXJpY19yZWR1Y2VkX2h3X2luaXQodm9pZCk7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgeDg2X2RlZmF1bHRfc2V0X3Jvb3RfcG9pbnRlcih1NjQgYWRkcik7CjE0NDc0OiB1 NjQgeDg2X2RlZmF1bHRfZ2V0X3Jvb3RfcG9pbnRlcih2b2lkKTsKMTQ0NzQ6ICMgMTY1ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBncHJvdF90IGFyY2hfYXBlaV9nZXRf bWVtX2F0dHJpYnV0ZShwaHlzX2FkZHJfdCBhZGRyKQoxNDQ3NDogewoxNDQ3NDogIyAxODAgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIgoxNDQ3NDogIHJldHVybiAoKHBncHJvdF90KSB7 ICgoKCgoKHB0ZXZhbF90KSgxKSkgPDwgMCl8KCgocHRldmFsX3QpKDEpKSA8PCAxKXwgMHwoKChw dGV2YWxfdCkoMSkpIDw8IDUpfCgoKHB0ZXZhbF90KSgxKSkgPDwgNjMpfCgoKHB0ZXZhbF90KSgx KSkgPDwgNil8IDB8KCgocHRldmFsX3QpKDEpKSA8PCA4KSkgfCAwKSAmIF9fZGVmYXVsdF9rZXJu ZWxfcHRlX21hc2spIH0gKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzAgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vZml4bWFwLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3ZzeXNjYWxs LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB2c3lzY2Fs bF9udW0gewoxNDQ3NDogIF9fTlJfdmdldHRpbWVvZmRheSwKMTQ0NzQ6ICBfX05SX3Z0aW1lLAox NDQ3NDogIF9fTlJfdmdldGNwdSwKMTQ0NzQ6IH07CjE0NDc0OiAjIDM3ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2ZpeG1hcC5oIiAyCjE0NDc0OiAjIDc1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L2ZpeG1hcC5oIgoxNDQ3NDogZW51bSBmaXhlZF9hZGRyZXNzZXMgewoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgVlNZU0NBTExfUEFHRSA9ICgoKCgoKCgtMTBVTCA8PCAy MCkgKyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygoLTEwVUwgPDwgMjApICsgKCgx VUwpIDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8PCAxMikpIC0gKC0xMFVMIDw8 IDIwKSkgPj4gMTIsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEZJWF9EQkdQX0JBU0UsCjE0NDc0 OiAgRklYX0VBUkxZQ09OX01FTV9CQVNFLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgRklYX0FQSUNfQkFTRSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRklYX0lPX0FQ SUNfQkFTRV8wLAoxNDQ3NDogIEZJWF9JT19BUElDX0JBU0VfRU5EID0gRklYX0lPX0FQSUNfQkFT RV8wICsgMTI4IC0gMSwKMTQ0NzQ6ICMgMTAzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ZpeG1h cC5oIgoxNDQ3NDogIEZJWF9QQVJBVklSVF9CT09UTUFQLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRklYX0FQRUlfR0hFU19J UlEsCjE0NDc0OiAgRklYX0FQRUlfR0hFU19OTUksCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9f ZW5kX29mX3Blcm1hbmVudF9maXhlZF9hZGRyZXNzZXMsCjE0NDc0OiAjIDEyNyAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKMTQ0NzQ6ICBGSVhfQlRNQVBfRU5EID0KMTQ0NzQ6ICAg KF9fZW5kX29mX3Blcm1hbmVudF9maXhlZF9hZGRyZXNzZXMgXgoxNDQ3NDogICAgKF9fZW5kX29m X3Blcm1hbmVudF9maXhlZF9hZGRyZXNzZXMgKyAoNjQgKiA4KSAtIDEpKSAmCjE0NDc0OiAgIC01 MTIKMTQ0NzQ6ICAgPyBfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzICsgKDY0ICog OCkgLQoxNDQ3NDogICAgIChfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzICYgKCg2 NCAqIDgpIC0gMSkpCjE0NDc0OiAgIDogX19lbmRfb2ZfcGVybWFuZW50X2ZpeGVkX2FkZHJlc3Nl cywKMTQ0NzQ6ICBGSVhfQlRNQVBfQkVHSU4gPSBGSVhfQlRNQVBfRU5EICsgKDY0ICogOCkgLSAx LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IF9fZW5kX29mX2ZpeGVkX2FkZHJlc3NlcwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gdm9pZCByZXNlcnZlX3RvcF9hZGRyZXNzKHVuc2lnbmVkIGxvbmcgcmVzZXJ2ZSk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gaW50IGZpeG1hcHNfc2V0OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gcHRlX3QgKmttYXBf cHRlOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gcHRlX3QgKnBrbWFwX3BhZ2VfdGFibGU7CjE0NDc0 OiAKMTQ0NzQ6IHZvaWQgX19uYXRpdmVfc2V0X2ZpeG1hcChlbnVtIGZpeGVkX2FkZHJlc3NlcyBp ZHgsIHB0ZV90IHB0ZSk7CjE0NDc0OiB2b2lkIG5hdGl2ZV9zZXRfZml4bWFwKHVuc2lnbmVkIGlk eCwKMTQ0NzQ6ICAgICAgICAgIHBoeXNfYWRkcl90IHBoeXMsIHBncHJvdF90IGZsYWdzKTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fc2V0X2ZpeG1hcChlbnVtIGZpeGVkX2FkZHJlc3Nl cyBpZHgsCjE0NDc0OiAgICAgcGh5c19hZGRyX3QgcGh5cywgcGdwcm90X3QgZmxhZ3MpCjE0NDc0 OiB7CjE0NDc0OiAgbmF0aXZlX3NldF9maXhtYXAoaWR4LCBwaHlzLCBmbGFncyk7CjE0NDc0OiB9 CjE0NDc0OiAjIDE4MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKMTQ0NzQ6IHZv aWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRl X18oKF9fY29sZF9fKSkgKmVhcmx5X21lbXJlbWFwX2VuY3J5cHRlZChyZXNvdXJjZV9zaXplX3Qg cGh5c19hZGRyLAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CjE0NDc0OiB2 b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpICplYXJseV9tZW1yZW1hcF9lbmNyeXB0ZWRfd3AocmVzb3VyY2Vfc2l6 ZV90IHBoeXNfYWRkciwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSk7CjE0NDc0OiB2 b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpICplYXJseV9tZW1yZW1hcF9kZWNyeXB0ZWQocmVzb3VyY2Vfc2l6ZV90 IHBoeXNfYWRkciwKMTQ0NzQ6ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwoxNDQ3NDog dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1 dGVfXygoX19jb2xkX18pKSAqZWFybHlfbWVtcmVtYXBfZGVjcnlwdGVkX3dwKHJlc291cmNlX3Np emVfdCBwaHlzX2FkZHIsCjE0NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9maXhtYXAuaCIgMQoxNDQ3NDogIyAz MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2ZpeG1hcC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGZpeF90b192aXJ0KGNvbnN0IHVuc2ln bmVkIGludCBpZHgpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0 aW1lX2Fzc2VydF8zMih2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJVSUxEX0JVR19P TiBmYWlsZWQ6ICIgImlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMiKSkpOyBpZiAoISgh KGlkeCA+PSBfX2VuZF9vZl9maXhlZF9hZGRyZXNzZXMpKSkgX19jb21waWxldGltZV9hc3NlcnRf MzIoKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgcmV0dXJuICgoKCgoKCgtMTBVTCA8PCAyMCkgKyAo KDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygoLTEwVUwgPDwgMjApICsgKCgxVUwpIDw8 IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8PCAxMikpIC0gKChpZHgpIDw8IDEyKSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgdmlydF90b19maXgoY29uc3Qg dW5zaWduZWQgbG9uZyB2YWRkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGlmIChfX2J1aWx0aW5f ZXhwZWN0KCEhKHZhZGRyID49ICgoKCgoKC0xMFVMIDw8IDIwKSArICgoMVVMKSA8PCAxMikpLTEp IHwgKChfX3R5cGVvZl9fKCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKSkoKDE8PDIxKS0x KSkpKzEpIC0gKCgxVUwpIDw8IDEyKSkgfHwgdmFkZHIgPCAoKCgoKCgoLTEwVUwgPDwgMjApICsg KCgxVUwpIDw8IDEyKSktMSkgfCAoKF9fdHlwZW9mX18oKC0xMFVMIDw8IDIwKSArICgoMVVMKSA8 PCAxMikpKSgoMTw8MjEpLTEpKSkrMSkgLSAoKDFVTCkgPDwgMTIpKSAtIChfX2VuZF9vZl9wZXJt YW5lbnRfZml4ZWRfYWRkcmVzc2VzIDw8IDEyKSkpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGlu ZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBf X2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1 Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVn X2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0 LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5w b3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9hc20tZ2VuZXJpYy9maXhtYXAuaCIpLCAiaSIg KDM4KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAo MCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2Fy ZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQi IDogOiAiaSIgKDE3KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBfX2J1aWx0aW5fdW5yZWFjaGFi bGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICByZXR1 cm4gKCgoKCgoKCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2Zf XygoLTEwVUwgPDwgMjApICsgKCgxVUwpIDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVM KSA8PCAxMikpIC0gKCh2YWRkcikmKH4oKCgxVUwpIDw8IDEyKS0xKSkpKSA+PiAxMik7CjE0NDc0 OiB9CjE0NDc0OiAjIDE5MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMgoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIF9fZWFybHlfc2V0X2ZpeG1h cChlbnVtIGZpeGVkX2FkZHJlc3NlcyBpZHgsCjE0NDc0OiAgICBwaHlzX2FkZHJfdCBwaHlzLCBw Z3Byb3RfdCBmbGFncyk7CjE0NDc0OiAjIDEyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWMu aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9o YXJkaXJxLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHsKMTQ0NzQ6ICB1MTYgX19zb2Z0aXJxX3BlbmRpbmc7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IF9fbm1pX2NvdW50 OwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IGFwaWNfdGltZXJfaXJxczsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgaXJxX3NwdXJpb3VzX2NvdW50OwoxNDQ3NDogIHVuc2lnbmVkIGludCBpY3Jf cmVhZF9yZXRyeV9jb3VudDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IGt2 bV9wb3N0ZWRfaW50cl9pcGlzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBrdm1fcG9zdGVkX2ludHJf d2FrZXVwX2lwaXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGt2bV9wb3N0ZWRfaW50cl9uZXN0ZWRf aXBpczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCB4ODZfcGxhdGZvcm1faXBpczsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgYXBpY19wZXJmX2lycXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGFw aWNfaXJxX3dvcmtfaXJxczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBpcnFfcmVzY2hl ZF9jb3VudDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaXJxX2NhbGxfY291bnQ7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgaXJxX3RsYl9jb3VudDsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGludCBpcnFfdGhlcm1hbF9jb3VudDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQg aW50IGlycV90aHJlc2hvbGRfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGludCBpcnFfZGVmZXJyZWRfZXJyb3JfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVu c2lnbmVkIGludCBpcnFfaHZfY2FsbGJhY2tfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHVuc2lnbmVkIGludCBpcnFfaHZfcmVlbmxpZ2h0ZW5tZW50X2NvdW50OwoxNDQ3NDogIHVuc2ln bmVkIGludCBoeXBlcnZfc3RpbWVyMF9jb3VudDsKMTQ0NzQ6IAoxNDQ3NDogfSBfX2F0dHJpYnV0 ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpIGlycV9jcHVzdGF0X3Q7CjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikpKSBf X3R5cGVvZl9fKGlycV9jcHVzdGF0X3QpIGlycV9zdGF0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25l ZF9fKCgxIDw8ICg2KSkpKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIHZvaWQgYWNrX2JhZF9pcnEodW5zaWduZWQgaW50IGlycSk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB1NjQgYXJjaF9pcnFfc3RhdF9jcHUodW5zaWduZWQgaW50IGNwdSk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHU2NCBhcmNoX2lycV9zdGF0KHZvaWQpOwox NDQ3NDogIyA4MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9oYXJkaXJxLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGt2bV9zZXRfY3B1X2wxdGZfZmx1c2hfbDFkKHZvaWQpIHsgfQoxNDQ3NDogIyAxNSAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiIDIKMTQ0NzQ6ICMgNDUgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vYXBpYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBnZW5lcmljX2FwaWNfcHJvYmUodm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGludCBhcGljX3ZlcmJvc2l0eTsKMTQ0NzQ6IGV4dGVybiBpbnQgbG9jYWxfYXBpY190aW1lcl9j Ml9vazsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBkaXNhYmxlX2FwaWM7CjE0NDc0OiBleHRl cm4gdW5zaWduZWQgaW50IGxhcGljX3RpbWVyX3BlcmlvZDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGVudW0gYXBpY19pbnRyX21vZGVfaWQgYXBpY19pbnRyX21vZGU7CjE0NDc0OiBlbnVtIGFwaWNf aW50cl9tb2RlX2lkIHsKMTQ0NzQ6ICBBUElDX1BJQywKMTQ0NzQ6ICBBUElDX1ZJUlRVQUxfV0lS RSwKMTQ0NzQ6ICBBUElDX1ZJUlRVQUxfV0lSRV9OT19DT05GSUcsCjE0NDc0OiAgQVBJQ19TWU1N RVRSSUNfSU8sCjE0NDc0OiAgQVBJQ19TWU1NRVRSSUNfSU9fTk9fUk9VVElORwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBfX2lucXVpcmVfcmVtb3RlX2FwaWMo aW50IGFwaWNpZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGRlZmF1bHRfaW5xdWlyZV9yZW1vdGVfYXBpYyhpbnQgYXBpY2lkKQox NDQ3NDogewoxNDQ3NDogIGlmIChhcGljX3ZlcmJvc2l0eSA+PSAyKQoxNDQ3NDogICBfX2lucXVp cmVfcmVtb3RlX2FwaWMoYXBpY2lkKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODkgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXBpYy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhcGljX2Zyb21fc21wX2NvbmZpZyh2b2lk KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBzbXBfZm91bmRfY29uZmlnICYmICFkaXNhYmxlX2Fw aWM7CjE0NDc0OiB9CjE0NDc0OiAjIDEwMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgi CjE0NDc0OiBleHRlcm4gaW50IHNldHVwX3Byb2ZpbGluZ190aW1lcih1bnNpZ25lZCBpbnQpOwox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9hcGljX21lbV93cml0ZSh1MzIgcmVnLCB1MzIgdikK MTQ0NzQ6IHsKMTQ0NzQ6ICB2b2xhdGlsZSB1MzIgKmFkZHIgPSAodm9sYXRpbGUgdTMyICopKChm aXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkgKyByZWcpOwoxNDQ3NDogCjE0NDc0OiAgYXNtIF9f aW5saW5lIHZvbGF0aWxlICgiIyBBTFQ6IG9sZG5zdHJcbiIgIjY2MTpcblx0IiAibW92bCAlMCwg JVAxIiAiXG42NjI6XG4iICIjIEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIi Zi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIi MSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpc biIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAt IC5cbiIgIiAubG9uZyAiICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKDE5KjMyICsgKDUp KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJm LSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0 aW9uXG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMg QUxUOiByZXBsYWNlbWVudCAiICIxIiAiXG4iICI2NjQiIjEiIjpcblx0IiAieGNoZ2wgJTAsICVQ MSIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rpb25cbiIgOiAiPXIiICh2KSwgIj1tIiAo KmFkZHIpIDogImkiICgwKSwgIjAiICh2KSwgIm0iICgqYWRkcikpCjE0NDc0OiAKMTQ0NzQ6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHUzMiBuYXRpdmVfYXBpY19tZW1fcmVhZCh1MzIgcmVnKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAqKCh2b2xhdGlsZSB1MzIgKikoKGZpeF90b192aXJ0KEZJWF9BUElDX0JBU0Up KSArIHJlZykpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBuYXRpdmVfYXBp Y193YWl0X2ljcl9pZGxlKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHUzMiBuYXRpdmVfc2FmZV9hcGlj X3dhaXRfaWNyX2lkbGUodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBuYXRpdmVfYXBpY19pY3Jf d3JpdGUodTMyIGxvdywgdTMyIGlkKTsKMTQ0NzQ6IGV4dGVybiB1NjQgbmF0aXZlX2FwaWNfaWNy X3JlYWQodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYXBpY19pc194MmFwaWNfZW5hYmxlZCh2 b2lkKQoxNDQ3NDogewoxNDQ3NDogIHU2NCBtc3I7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAocmRtc3Js X3NhZmUoMHgwMDAwMDAxYiwgJm1zcikpCjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICBy ZXR1cm4gbXNyICYgKDFVTCA8PCAxMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2 b2lkIGVuYWJsZV9JUl94MmFwaWModm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2V0 X3BoeXNpY2FsX2Jyb2FkY2FzdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBsYXBp Y19nZXRfbWF4bHZ0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgY2xlYXJfbG9jYWxfQVBJQyh2 b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRpc2Nvbm5lY3RfYnNwX0FQSUMoaW50IHZpcnRfd2ly ZV9zZXR1cCk7CjE0NDc0OiBleHRlcm4gdm9pZCBkaXNhYmxlX2xvY2FsX0FQSUModm9pZCk7CjE0 NDc0OiBleHRlcm4gdm9pZCBhcGljX3NvZnRfZGlzYWJsZSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2 b2lkIGxhcGljX3NodXRkb3duKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc3luY19BcmJfSURz KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaW5pdF9ic3BfQVBJQyh2b2lkKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGFwaWNfaW50cl9tb2RlX3NlbGVjdCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lk IGFwaWNfaW50cl9tb2RlX2luaXQodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBpbml0X2FwaWNf bWFwcGluZ3Modm9pZCk7CjE0NDc0OiB2b2lkIHJlZ2lzdGVyX2xhcGljX2FkZHJlc3ModW5zaWdu ZWQgbG9uZyBhZGRyZXNzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNldHVwX2Jvb3RfQVBJQ19jbG9j ayh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNldHVwX3NlY29uZGFyeV9BUElDX2Nsb2NrKHZv aWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbGFwaWNfdXBkYXRlX3RzY19mcmVxKHZvaWQpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludCBhcGljX2ZvcmNlX2VuYWJsZSh1bnNpZ25lZCBsb25nIGFk ZHIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIC0xOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBhcGljX2FwX3NldHVwKHZvaWQpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQg YXBpY19pc19jbHVzdGVyZWRfYm94KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHNldHVwX0FQSUNf ZWlsdnQodTggbHZ0X29mZiwgdTggdmVjdG9yLCB1OCBtc2dfdHlwZSwgdTggbWFzayk7CjE0NDc0 OiBleHRlcm4gdm9pZCBsYXBpY19hc3NpZ25fc3lzdGVtX3ZlY3RvcnModm9pZCk7CjE0NDc0OiBl eHRlcm4gdm9pZCBsYXBpY19hc3NpZ25fbGVnYWN5X3ZlY3Rvcih1bnNpZ25lZCBpbnQgaXNhaXJx LCBib29sIHJlcGxhY2UpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbGFwaWNfb25saW5lKHZvaWQpOwox NDQ3NDogZXh0ZXJuIHZvaWQgbGFwaWNfb2ZmbGluZSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiBib29s IGFwaWNfbmVlZHNfcGl0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBhcGljX3Nl bmRfSVBJX2FsbGJ1dHNlbGYodW5zaWduZWQgaW50IHZlY3Rvcik7CjE0NDc0OiAjIDI3MSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNoZWNrX3gyYXBpYyh2b2lk KSB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgeDJhcGljX3NldHVwKHZvaWQpIHsgfQoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHgyYXBp Y19lbmFibGVkKHZvaWQpIHsgcmV0dXJuIDA7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaXJxX2RhdGE7CjE0NDc0OiAjIDI5MCAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiCjE0NDc0OiBzdHJ1Y3QgYXBpYyB7CjE0NDc0OiAKMTQ0 NzQ6ICB2b2lkICgqZW9pX3dyaXRlKSh1MzIgcmVnLCB1MzIgdik7CjE0NDc0OiAgdm9pZCAoKm5h dGl2ZV9lb2lfd3JpdGUpKHUzMiByZWcsIHUzMiB2KTsKMTQ0NzQ6ICB2b2lkICgqd3JpdGUpKHUz MiByZWcsIHUzMiB2KTsKMTQ0NzQ6ICB1MzIgKCpyZWFkKSh1MzIgcmVnKTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKndhaXRfaWNyX2lkbGUpKHZvaWQpOwoxNDQ3NDogIHUzMiAoKnNh ZmVfd2FpdF9pY3JfaWRsZSkodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2VuZF9JUEkp KGludCBjcHUsIGludCB2ZWN0b3IpOwoxNDQ3NDogIHZvaWQgKCpzZW5kX0lQSV9tYXNrKShjb25z dCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgaW50IHZlY3Rvcik7CjE0NDc0OiAgdm9pZCAoKnNlbmRf SVBJX21hc2tfYWxsYnV0c2VsZikoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1zaywgaW50IHZlYyk7 CjE0NDc0OiAgdm9pZCAoKnNlbmRfSVBJX2FsbGJ1dHNlbGYpKGludCB2ZWN0b3IpOwoxNDQ3NDog IHZvaWQgKCpzZW5kX0lQSV9hbGwpKGludCB2ZWN0b3IpOwoxNDQ3NDogIHZvaWQgKCpzZW5kX0lQ SV9zZWxmKShpbnQgdmVjdG9yKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTMyIGRlc3RfbG9n aWNhbDsKMTQ0NzQ6ICB1MzIgZGlzYWJsZV9lc3I7CjE0NDc0OiAgdTMyIGlycV9kZWxpdmVyeV9t b2RlOwoxNDQ3NDogIHUzMiBpcnFfZGVzdF9tb2RlOwoxNDQ3NDogCjE0NDc0OiAgdTMyICgqY2Fs Y19kZXN0X2FwaWNpZCkodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHU2NCAoKmljcl9yZWFkKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqaWNyX3dyaXRlKSh1MzIgbG93 LCB1MzIgaGlnaCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnByb2JlKSh2b2lkKTsK MTQ0NzQ6ICBpbnQgKCphY3BpX21hZHRfb2VtX2NoZWNrKShjaGFyICpvZW1faWQsIGNoYXIgKm9l bV90YWJsZV9pZCk7CjE0NDc0OiAgaW50ICgqYXBpY19pZF92YWxpZCkodTMyIGFwaWNpZCk7CjE0 NDc0OiAgaW50ICgqYXBpY19pZF9yZWdpc3RlcmVkKSh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogIGJv b2wgKCpjaGVja19hcGljaWRfdXNlZCkocGh5c2lkX21hc2tfdCAqbWFwLCBpbnQgYXBpY2lkKTsK MTQ0NzQ6ICB2b2lkICgqaW5pdF9hcGljX2xkcikodm9pZCk7CjE0NDc0OiAgdm9pZCAoKmlvYXBp Y19waHlzX2lkX21hcCkocGh5c2lkX21hc2tfdCAqcGh5c19tYXAsIHBoeXNpZF9tYXNrX3QgKnJl dG1hcCk7CjE0NDc0OiAgdm9pZCAoKnNldHVwX2FwaWNfcm91dGluZykodm9pZCk7CjE0NDc0OiAg aW50ICgqY3B1X3ByZXNlbnRfdG9fYXBpY2lkKShpbnQgbXBzX2NwdSk7CjE0NDc0OiAgdm9pZCAo KmFwaWNpZF90b19jcHVfcHJlc2VudCkoaW50IHBoeXNfYXBpY2lkLCBwaHlzaWRfbWFza190ICpy ZXRtYXApOwoxNDQ3NDogIGludCAoKmNoZWNrX3BoeXNfYXBpY2lkX3ByZXNlbnQpKGludCBwaHlz X2FwaWNpZCk7CjE0NDc0OiAgaW50ICgqcGh5c19wa2dfaWQpKGludCBjcHVpZF9hcGljLCBpbnQg aW5kZXhfbXNiKTsKMTQ0NzQ6IAoxNDQ3NDogIHUzMiAoKmdldF9hcGljX2lkKSh1bnNpZ25lZCBs b25nIHgpOwoxNDQ3NDogIHUzMiAoKnNldF9hcGljX2lkKSh1bnNpZ25lZCBpbnQgaWQpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCp3YWtldXBfc2Vjb25kYXJ5X2NwdSkoaW50IGFwaWNp ZCwgdW5zaWduZWQgbG9uZyBzdGFydF9laXApOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmlucXVp cmVfcmVtb3RlX2FwaWMpKGludCBhcGljaWQpOwoxNDQ3NDogIyAzNTYgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vYXBpYy5oIgoxNDQ3NDogIGNoYXIgKm5hbWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVj dCBhcGljICphcGljOwoxNDQ3NDogIyAzODQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpYy5o IgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBhcGljICpfX2FwaWNkcml2ZXJzW10sICpfX2FwaWNkcml2 ZXJzX2VuZFtdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBpbnQgd2FrZXVwX3NlY29uZGFyeV9jcHVfdmlhX25taShpbnQgYXBpY2lkLCB1bnNp Z25lZCBsb25nIHN0YXJ0X2VpcCk7CjE0NDc0OiBleHRlcm4gaW50IGxhcGljX2Nhbl91bnBsdWdf Y3B1KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgYXBp Y19yZWFkKHUzMiByZWcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFwaWMtPnJlYWQocmVnKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcGljX3dyaXRlKHUzMiByZWcsIHUzMiB2YWwp CjE0NDc0OiB7CjE0NDc0OiAgYXBpYy0+d3JpdGUocmVnLCB2YWwpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGFwaWNfZW9pKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgYXBpYy0+ZW9pX3dy aXRlKDB4QjAsIDB4MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBhcGljX2ljcl9yZWFk KHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFwaWMtPmljcl9yZWFkKCk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgYXBpY19pY3Jfd3JpdGUodTMyIGxvdywgdTMyIGhpZ2gpCjE0 NDc0OiB7CjE0NDc0OiAgYXBpYy0+aWNyX3dyaXRlKGxvdywgaGlnaCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYXBpY193YWl0X2ljcl9pZGxlKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAg YXBpYy0+d2FpdF9pY3JfaWRsZSgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgc2FmZV9h cGljX3dhaXRfaWNyX2lkbGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXBpYy0+c2Fm ZV93YWl0X2ljcl9pZGxlKCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIF9f YXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChf X2NvbGRfXykpIGFwaWNfc2V0X2VvaV93cml0ZSh2b2lkICgqZW9pX3dyaXRlKSh1MzIgcmVnLCB1 MzIgdikpOwoxNDQ3NDogIyA0NDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpYy5oIgoxNDQ3 NDogZXh0ZXJuIHZvaWQgYXBpY19hY2tfaXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSk7CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYWNrX0FQSUNfaXJxKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhcGljX2VvaSgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgbGFwaWNfdmVjdG9yX3NldF9pbl9pcnIodW5zaWduZWQgaW50IHZl Y3RvcikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1MzIgaXJyID0gYXBpY19yZWFkKDB4MjAwICsgKHZlY3Rv ciAvIDMyICogMHgxMCkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICEhKGlyciAmICgxVSA8PCAo dmVjdG9yICUgMzIpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGRlZmF1bHRf Z2V0X2FwaWNfaWQodW5zaWduZWQgbG9uZyB4KQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGlu dCB2ZXIgPSAoKGFwaWNfcmVhZCgweDMwKSkgJiAweEZGdSk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAo KCh2ZXIpID49IDB4MTQpIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoIDMqMzIrMjYpKSAmJiAo ICgoKCggMyozMisyNikpPj41KT09KDApICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgKCgx PDwoKCAwKjMyKyAwKSAmIDMxKSl8MHwoMTw8KCggMCozMisgNSkgJiAzMSkpfCgxPDwoKCAwKjMy KyA2KSAmIDMxKSl8ICgxPDwoKCAwKjMyKyA4KSAmIDMxKSl8MHwoMTw8KCggMCozMisyNCkgJiAz MSkpfCgxPDwoKCAwKjMyKzE1KSAmIDMxKSl8ICgxPDwoKCAwKjMyKzI1KSAmIDMxKSl8KDE8PCgo IDAqMzIrMjYpICYgMzEpKSkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMSkgJiYgKDFVTDw8 KCgoIDMqMzIrMjYpKSYzMSkgJiAoKDE8PCgoIDEqMzIrMjkpICYgMzEpKXwwKSApKSB8fCAoKCgo IDMqMzIrMjYpKT4+NSk9PSgyKSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwg KCgoKCAzKjMyKzI2KSk+PjUpPT0oMykgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAoKDE8 PCgoIDMqMzIrMjApICYgMzEpKSkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oNCkgJiYgKDFV TDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAoMCkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oNSkg JiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09 KDYpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+ NSk9PSg3KSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2 KSk+PjUpPT0oOCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyoz MisyNikpPj41KT09KDkpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgo IDMqMzIrMjYpKT4+NSk9PSgxMCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8 ICgoKCggMyozMisyNikpPj41KT09KDExKSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAg KSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMTIpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEp ICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgxMykgJiYgKDFVTDw8KCgoIDMqMzIrMjYp KSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09KDE0KSAmJiAoMVVMPDwoKCggMyoz MisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMTUpICYmICgxVUw8PCgo KCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgxNikgJiYgKDFV TDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09KDE3KSAm JiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0o MTgpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKGludCkoc2l6ZW9mKHN0 cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkgfHwgKChpbnQpKHNpemVvZihzdHJ1Y3Qg eyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpKSA/IDEgOiB0ZXN0X2JpdCgoIDMqMzIrMjYpLCAo dW5zaWduZWQgbG9uZyAqKSgoJmJvb3RfY3B1X2RhdGEpLT54ODZfY2FwYWJpbGl0eSkpKSkKMTQ0 NzQ6ICAgcmV0dXJuICh4ID4+IDI0KSAmIDB4RkY7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1 cm4gKHggPj4gMjQpICYgMHgwRjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZ2VuZXJpY19i aWdzbXBfcHJvYmUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgiIDEKMTQ0NzQ6ICMgNDg2ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2FwaWMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5Iikp KSBfX3R5cGVvZl9fKHUxNikgeDg2X2Jpb3NfY3B1X2FwaWNpZDsgZXh0ZXJuIF9fdHlwZW9mX18o dTE2KSAqeDg2X2Jpb3NfY3B1X2FwaWNpZF9lYXJseV9wdHI7IGV4dGVybiBfX3R5cGVvZl9fKHUx NikgeDg2X2Jpb3NfY3B1X2FwaWNpZF9lYXJseV9tYXBbXTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHN0cnVjdCBhcGljIGFwaWNfbm9vcDsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IHJlYWRf YXBpY19pZCh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHVuc2lnbmVkIGludCByZWcgPSBhcGljX3Jl YWQoMHgyMCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYXBpYy0+Z2V0X2FwaWNfaWQocmVnKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBkZWZhdWx0X2FwaWNfaWRfdmFsaWQo dTMyIGFwaWNpZCk7CjE0NDc0OiBleHRlcm4gaW50IGRlZmF1bHRfYWNwaV9tYWR0X29lbV9jaGVj ayhjaGFyICosIGNoYXIgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBkZWZhdWx0X3NldHVwX2FwaWNf cm91dGluZyh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHUzMiBhcGljX2RlZmF1bHRfY2Fs Y19hcGljaWQodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiBleHRlcm4gdTMyIGFwaWNfZmxhdF9j YWxjX2FwaWNpZCh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wg ZGVmYXVsdF9jaGVja19hcGljaWRfdXNlZChwaHlzaWRfbWFza190ICptYXAsIGludCBhcGljaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGVmYXVsdF9pb2FwaWNfcGh5c19pZF9tYXAocGh5c2lkX21h c2tfdCAqcGh5c19tYXAsIHBoeXNpZF9tYXNrX3QgKnJldG1hcCk7CjE0NDc0OiBleHRlcm4gaW50 IGRlZmF1bHRfY3B1X3ByZXNlbnRfdG9fYXBpY2lkKGludCBtcHNfY3B1KTsKMTQ0NzQ6IGV4dGVy biBpbnQgZGVmYXVsdF9jaGVja19waHlzX2FwaWNpZF9wcmVzZW50KGludCBwaHlzX2FwaWNpZCk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGJvb2wgYXBpY19pZF9pc19w cmltYXJ5X3RocmVhZCh1bnNpZ25lZCBpbnQgaWQpOwoxNDQ3NDogdm9pZCBhcGljX3NtdF91cGRh dGUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHZvaWQgaXJxX2VudGVyKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaXJxX2V4aXQo dm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZW50ZXJpbmdfaXJxKHZvaWQpCjE0NDc0OiB7CjE0 NDc0OiAgaXJxX2VudGVyKCk7CjE0NDc0OiAga3ZtX3NldF9jcHVfbDF0Zl9mbHVzaF9sMWQoKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBlbnRlcmluZ19hY2tfaXJxKHZvaWQpCjE0NDc0 OiB7CjE0NDc0OiAgZW50ZXJpbmdfaXJxKCk7CjE0NDc0OiAgYWNrX0FQSUNfaXJxKCk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaXBpX2VudGVyaW5nX2Fja19pcnEodm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBpcnFfZW50ZXIoKTsKMTQ0NzQ6ICBhY2tfQVBJQ19pcnEoKTsKMTQ0NzQ6ICBr dm1fc2V0X2NwdV9sMXRmX2ZsdXNoX2wxZCgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGV4aXRpbmdfaXJxKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgaXJxX2V4aXQoKTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBleGl0aW5nX2Fja19pcnEodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBhY2tfQVBJQ19pcnEoKTsKMTQ0NzQ6ICBpcnFfZXhpdCgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gdm9pZCBpb2FwaWNfemFwX2xvY2tzKHZvaWQpOwoxNDQ3NDogIyAxNCAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaCIgMgoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vaW9fYXBpYy5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9pcnFfdmVjdG9ycy5oIiAxCjE0NDc0OiAjIDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v aW9fYXBpYy5oIiAyCjE0NDc0OiAjIDI4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lvX2FwaWMu aCIKMTQ0NzQ6IHVuaW9uIElPX0FQSUNfcmVnXzAwIHsKMTQ0NzQ6ICB1MzIgcmF3OwoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAgIHUzMiBfX3Jlc2VydmVkXzIgOiAxNCwKMTQ0NzQ6ICAgIExUUyA6 IDEsCjE0NDc0OiAgICBkZWxpdmVyeV90eXBlIDogMSwKMTQ0NzQ6ICAgIF9fcmVzZXJ2ZWRfMSA6 IDgsCjE0NDc0OiAgICBJRCA6IDg7CjE0NDc0OiAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkg Yml0czsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIElPX0FQSUNfcmVnXzAxIHsKMTQ0 NzQ6ICB1MzIgcmF3OwoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHUzMiB2ZXJzaW9uIDogOCwK MTQ0NzQ6ICAgIF9fcmVzZXJ2ZWRfMiA6IDcsCjE0NDc0OiAgICBQUlEgOiAxLAoxNDQ3NDogICAg ZW50cmllcyA6IDgsCjE0NDc0OiAgICBfX3Jlc2VydmVkXzEgOiA4OwoxNDQ3NDogIH0gX19hdHRy aWJ1dGVfXyAoKHBhY2tlZCkpIGJpdHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBJ T19BUElDX3JlZ18wMiB7CjE0NDc0OiAgdTMyIHJhdzsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDog ICB1MzIgX19yZXNlcnZlZF8yIDogMjQsCjE0NDc0OiAgICBhcmJpdHJhdGlvbiA6IDQsCjE0NDc0 OiAgICBfX3Jlc2VydmVkXzEgOiA0OwoxNDQ3NDogIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkp IGJpdHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBJT19BUElDX3JlZ18wMyB7CjE0 NDc0OiAgdTMyIHJhdzsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1MzIgYm9vdF9EVCA6IDEs CjE0NDc0OiAgICBfX3Jlc2VydmVkXzEgOiAzMTsKMTQ0NzQ6ICB9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSBiaXRzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IElPX0FQSUNfcm91 dGVfZW50cnkgewoxNDQ3NDogIF9fdTMyIHZlY3RvciA6IDgsCjE0NDc0OiAgIGRlbGl2ZXJ5X21v ZGUgOiAzLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBkZXN0X21vZGUgOiAxLAox NDQ3NDogICBkZWxpdmVyeV9zdGF0dXMgOiAxLAoxNDQ3NDogICBwb2xhcml0eSA6IDEsCjE0NDc0 OiAgIGlyciA6IDEsCjE0NDc0OiAgIHRyaWdnZXIgOiAxLAoxNDQ3NDogICBtYXNrIDogMSwKMTQ0 NzQ6ICAgX19yZXNlcnZlZF8yIDogMTU7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBfX3Jlc2VydmVk XzMgOiAyNCwKMTQ0NzQ6ICAgZGVzdCA6IDg7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18gKChwYWNr ZWQpKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IElSX0lPX0FQSUNfcm91dGVfZW50cnkgewoxNDQ3 NDogIF9fdTY0IHZlY3RvciA6IDgsCjE0NDc0OiAgIHplcm8gOiAzLAoxNDQ3NDogICBpbmRleDIg OiAxLAoxNDQ3NDogICBkZWxpdmVyeV9zdGF0dXMgOiAxLAoxNDQ3NDogICBwb2xhcml0eSA6IDEs CjE0NDc0OiAgIGlyciA6IDEsCjE0NDc0OiAgIHRyaWdnZXIgOiAxLAoxNDQ3NDogICBtYXNrIDog MSwKMTQ0NzQ6ICAgcmVzZXJ2ZWQgOiAzMSwKMTQ0NzQ6ICAgZm9ybWF0IDogMSwKMTQ0NzQ6ICAg aW5kZXggOiAxNTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgaXJxX2FsbG9jX2luZm87CjE0NDc0OiBzdHJ1Y3QgaW9hcGljX2RvbWFpbl9j Zmc7CjE0NDc0OiAjIDEyMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pb19hcGljLmgiCjE0NDc0 OiBleHRlcm4gaW50IG5yX2lvYXBpY3M7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbXBjX2lv YXBpY19pZChpbnQgaW9hcGljKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgbXBjX2lvYXBp Y19hZGRyKGludCBpb2FwaWMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbXBf aXJxX2VudHJpZXM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBtcGNfaW50 c3JjIG1wX2lycXNbKDI1NiAqIDQpXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50 IHNraXBfaW9hcGljX3NldHVwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbm9p b2FwaWNxdWlyazsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IG5vaW9hcGljcmVy b3V0ZTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHUzMiBnc2lfdG9wOwoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gdW5zaWduZWQgbG9uZyBpb19hcGljX2lycXM7CjE0NDc0OiAjIDE1NiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9pb19hcGljLmgiCjE0NDc0OiBzdHJ1Y3QgaXJxX2NmZzsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGlvYXBpY19pbnNlcnRfcmVzb3VyY2VzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGlu dCBhcmNoX2Vhcmx5X2lvYXBpY19pbml0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50 IHNhdmVfaW9hcGljX2VudHJpZXModm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBtYXNrX2lvYXBp Y19lbnRyaWVzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCByZXN0b3JlX2lvYXBpY19lbnRyaWVz KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzZXR1cF9pb2FwaWNfaWRzX2Zyb21f bXBjKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0dXBfaW9hcGljX2lkc19mcm9tX21wY19u b2NoZWNrKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IG1wX2ZpbmRfaW9hcGljKHUz MiBnc2kpOwoxNDQ3NDogZXh0ZXJuIGludCBtcF9maW5kX2lvYXBpY19waW4oaW50IGlvYXBpYywg dTMyIGdzaSk7CjE0NDc0OiBleHRlcm4gaW50IG1wX21hcF9nc2lfdG9faXJxKHUzMiBnc2ksIHVu c2lnbmVkIGludCBmbGFncywKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGlycV9hbGxvY19pbmZvICpp bmZvKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIG1wX3VubWFwX2lycShpbnQgaXJxKTsKMTQ0NzQ6IGV4 dGVybiBpbnQgbXBfcmVnaXN0ZXJfaW9hcGljKGludCBpZCwgdTMyIGFkZHJlc3MsIHUzMiBnc2lf YmFzZSwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBpb2FwaWNfZG9tYWluX2NmZyAqY2ZnKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgbXBfdW5yZWdpc3Rlcl9pb2FwaWModTMyIGdzaV9iYXNlKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgbXBfaW9hcGljX3JlZ2lzdGVyZWQodTMyIGdzaV9iYXNlKTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHZvaWQgaW9hcGljX3NldF9hbGxvY19hdHRyKHN0cnVjdCBpcnFfYWxsb2Nf aW5mbyAqaW5mbywKMTQ0NzQ6ICAgICAgIGludCBub2RlLCBpbnQgdHJpZ2dlciwgaW50IHBvbGFy aXR5KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgbXBfc2F2ZV9pcnEoc3RydWN0IG1wY19p bnRzcmMgKm0pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkaXNhYmxlX2lvYXBpY19zdXBw b3J0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBpb19hcGlj X2luaXRfbWFwcGluZ3Modm9pZCk7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IG5hdGl2ZV9p b19hcGljX3JlYWQodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCByZWcpOwoxNDQ3NDog ZXh0ZXJuIHZvaWQgbmF0aXZlX3Jlc3RvcmVfYm9vdF9pcnFfbW9kZSh2b2lkKTsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdW5zaWduZWQgaW50IGlvX2FwaWNfcmVhZCh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWdu ZWQgaW50IHJlZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4geDg2X2FwaWNfb3BzLmlvX2FwaWNf cmVhZChhcGljLCByZWcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzZXR1 cF9JT19BUElDKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZW5hYmxlX0lPX0FQSUModm9pZCk7 CjE0NDc0OiBleHRlcm4gdm9pZCBjbGVhcl9JT19BUElDKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgcmVzdG9yZV9ib290X2lycV9tb2RlKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGludCBJT19BUElD X2dldF9QQ0lfaXJxX3ZlY3RvcihpbnQgYnVzLCBpbnQgZGV2Zm4sIGludCBwaW4pOwoxNDQ3NDog ZXh0ZXJuIHZvaWQgcHJpbnRfSU9fQVBJQ3Modm9pZCk7CjE0NDc0OiAjIDE2ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3NtcC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzbXBfbnVtX3NpYmxpbmdzOwoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGludCBudW1fcHJvY2Vzc29yczsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIF9fYXR0cmli dXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVv Zl9fKGNwdW1hc2tfdmFyX3QpIGNwdV9zaWJsaW5nX21hcDsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJp YnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBl b2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfY29yZV9tYXA7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1 dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkpIF9fdHlwZW9m X18oY3B1bWFza192YXJfdCkgY3B1X2RpZV9tYXA7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0 dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190 eXBlb2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfbGxjX3NoYXJlZF9tYXA7CjE0NDc0OiBleHRlcm4g X19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkp IF9fdHlwZW9mX18odTE2KSBjcHVfbGxjX2lkOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18o KHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVvZl9fKGlu dCkgY3B1X251bWJlcjsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGNwdW1hc2sgKmNwdV9sbGNfc2hh cmVkX21hc2soaW50IGNwdSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCooeyBkbyB7IGNvbnN0 IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2xsY19zaGFyZWRfbWFwKSkgKyAw KSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgKHsgdW5zaWdu ZWQgbG9uZyBfX3B0cjsgX19hc21fXyAoIiIgOiAiPXIiKF9fcHRyKSA6ICIwIigodHlwZW9mKCoo KCYoY3B1X2xsY19zaGFyZWRfbWFwKSkpKSAqKSgoJihjcHVfbGxjX3NoYXJlZF9tYXApKSkpKTsg KHR5cGVvZigodHlwZW9mKCooKCYoY3B1X2xsY19zaGFyZWRfbWFwKSkpKSAqKSgoJihjcHVfbGxj X3NoYXJlZF9tYXApKSkpKSAoX19wdHIgKyAoKChfX3Blcl9jcHVfb2Zmc2V0WyhjcHUpXSkpKSk7 IH0pOyB9KSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChz ZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1MTYp IHg4Nl9jcHVfdG9fYXBpY2lkOyBleHRlcm4gX190eXBlb2ZfXyh1MTYpICp4ODZfY3B1X3RvX2Fw aWNpZF9lYXJseV9wdHI7IGV4dGVybiBfX3R5cGVvZl9fKHUxNikgeDg2X2NwdV90b19hcGljaWRf ZWFybHlfbWFwW107CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEu LnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkpIF9fdHlwZW9mX18odTMyKSB4ODZfY3B1X3RvX2Fj cGlpZDsgZXh0ZXJuIF9fdHlwZW9mX18odTMyKSAqeDg2X2NwdV90b19hY3BpaWRfZWFybHlfcHRy OyBleHRlcm4gX190eXBlb2ZfXyh1MzIpIHg4Nl9jcHVfdG9fYWNwaWlkX2Vhcmx5X21hcFtdOwox NDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIuLnJl YWRfbW9zdGx5IikpKSBfX3R5cGVvZl9fKHUxNikgeDg2X2Jpb3NfY3B1X2FwaWNpZDsgZXh0ZXJu IF9fdHlwZW9mX18odTE2KSAqeDg2X2Jpb3NfY3B1X2FwaWNpZF9lYXJseV9wdHI7IGV4dGVybiBf X3R5cGVvZl9fKHUxNikgeDg2X2Jpb3NfY3B1X2FwaWNpZF9lYXJseV9tYXBbXTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3Qgc21wX29wcyB7CjE0NDc0OiAgdm9pZCAoKnNtcF9wcmVwYXJlX2Jvb3Rf Y3B1KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqc21wX3ByZXBhcmVfY3B1cykodW5zaWduZWQgbWF4 X2NwdXMpOwoxNDQ3NDogIHZvaWQgKCpzbXBfY3B1c19kb25lKSh1bnNpZ25lZCBtYXhfY3B1cyk7 CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc3RvcF9vdGhlcl9jcHVzKShpbnQgd2FpdCk7CjE0NDc0 OiAgdm9pZCAoKmNyYXNoX3N0b3Bfb3RoZXJfY3B1cykodm9pZCk7CjE0NDc0OiAgdm9pZCAoKnNt cF9zZW5kX3Jlc2NoZWR1bGUpKGludCBjcHUpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqY3B1X3Vw KSh1bnNpZ25lZCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpOwoxNDQ3NDogIGludCAo KmNwdV9kaXNhYmxlKSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICgqY3B1X2RpZSkodW5zaWduZWQgaW50 IGNwdSk7CjE0NDc0OiAgdm9pZCAoKnBsYXlfZGVhZCkodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqc2VuZF9jYWxsX2Z1bmNfaXBpKShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzayk7CjE0 NDc0OiAgdm9pZCAoKnNlbmRfY2FsbF9mdW5jX3NpbmdsZV9pcGkpKGludCBjcHUpOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzZXRfY3B1X3NpYmxpbmdfbWFw KGludCBjcHUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgc21wX29wcyBz bXBfb3BzOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNtcF9zZW5kX3N0b3Aodm9pZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBzbXBfb3BzLnN0b3Bfb3RoZXJfY3B1cygwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBzdG9wX290aGVyX2NwdXModm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzbXBfb3BzLnN0 b3Bfb3RoZXJfY3B1cygxKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzbXBfcHJlcGFy ZV9ib290X2NwdSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHNtcF9vcHMuc21wX3ByZXBhcmVfYm9v dF9jcHUoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzbXBfcHJlcGFyZV9jcHVzKHVu c2lnbmVkIGludCBtYXhfY3B1cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzbXBfb3BzLnNtcF9wcmVwYXJl X2NwdXMobWF4X2NwdXMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNtcF9jcHVzX2Rv bmUodW5zaWduZWQgaW50IG1heF9jcHVzKQoxNDQ3NDogewoxNDQ3NDogIHNtcF9vcHMuc21wX2Nw dXNfZG9uZShtYXhfY3B1cyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2NwdV91cCh1 bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBzbXBfb3BzLmNwdV91cChjcHUsIHRpZGxlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IF9fY3B1X2Rpc2FibGUodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gc21w X29wcy5jcHVfZGlzYWJsZSgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fY3B1X2Rp ZSh1bnNpZ25lZCBpbnQgY3B1KQoxNDQ3NDogewoxNDQ3NDogIHNtcF9vcHMuY3B1X2RpZShjcHUp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBsYXlfZGVhZCh2b2lkKQoxNDQ3NDogewox NDQ3NDogIHNtcF9vcHMucGxheV9kZWFkKCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg c21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KQoxNDQ3NDogewoxNDQ3NDogIHNtcF9vcHMuc21w X3NlbmRfcmVzY2hlZHVsZShjcHUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hf c2VuZF9jYWxsX2Z1bmN0aW9uX3NpbmdsZV9pcGkoaW50IGNwdSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBz bXBfb3BzLnNlbmRfY2FsbF9mdW5jX3NpbmdsZV9pcGkoY3B1KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBhcmNoX3NlbmRfY2FsbF9mdW5jdGlvbl9pcGlfbWFzayhjb25zdCBzdHJ1Y3Qg Y3B1bWFzayAqbWFzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzbXBfb3BzLnNlbmRfY2FsbF9mdW5jX2lw aShtYXNrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBjcHVfZGlzYWJsZV9jb21tb24o dm9pZCk7CjE0NDc0OiB2b2lkIG5hdGl2ZV9zbXBfcHJlcGFyZV9ib290X2NwdSh2b2lkKTsKMTQ0 NzQ6IHZvaWQgbmF0aXZlX3NtcF9wcmVwYXJlX2NwdXModW5zaWduZWQgaW50IG1heF9jcHVzKTsK MTQ0NzQ6IHZvaWQgY2FsY3VsYXRlX21heF9sb2dpY2FsX3BhY2thZ2VzKHZvaWQpOwoxNDQ3NDog dm9pZCBuYXRpdmVfc21wX2NwdXNfZG9uZSh1bnNpZ25lZCBpbnQgbWF4X2NwdXMpOwoxNDQ3NDog aW50IGNvbW1vbl9jcHVfdXAodW5zaWduZWQgaW50IGNwdW51bSwgc3RydWN0IHRhc2tfc3RydWN0 ICp0aWRsZSk7CjE0NDc0OiBpbnQgbmF0aXZlX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1bnVtLCBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRpZGxlKTsKMTQ0NzQ6IGludCBuYXRpdmVfY3B1X2Rpc2FibGUo dm9pZCk7CjE0NDc0OiBpbnQgY29tbW9uX2NwdV9kaWUodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0 OiB2b2lkIG5hdGl2ZV9jcHVfZGllKHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogdm9pZCBobHRf cGxheV9kZWFkKHZvaWQpOwoxNDQ3NDogdm9pZCBuYXRpdmVfcGxheV9kZWFkKHZvaWQpOwoxNDQ3 NDogdm9pZCBwbGF5X2RlYWRfY29tbW9uKHZvaWQpOwoxNDQ3NDogdm9pZCB3YmludmRfb25fY3B1 KGludCBjcHUpOwoxNDQ3NDogaW50IHdiaW52ZF9vbl9hbGxfY3B1cyh2b2lkKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBuYXRpdmVfc21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KTsKMTQ0NzQ6IHZv aWQgbmF0aXZlX3NlbmRfY2FsbF9mdW5jX2lwaShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzayk7 CjE0NDc0OiB2b2lkIG5hdGl2ZV9zZW5kX2NhbGxfZnVuY19zaW5nbGVfaXBpKGludCBjcHUpOwox NDQ3NDogdm9pZCB4ODZfaWRsZV90aHJlYWRfaW5pdCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKmlkbGUpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHNtcF9zdG9yZV9ib290X2Nw dV9pbmZvKHZvaWQpOwoxNDQ3NDogdm9pZCBzbXBfc3RvcmVfY3B1X2luZm8oaW50IGlkKTsKMTQ0 NzQ6IAoxNDQ3NDogIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18pKSB2b2lk IHNtcF9yZWJvb3RfaW50ZXJydXB0KHZvaWQpOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19leHRl cm5hbGx5X3Zpc2libGVfXykpIHZvaWQgc21wX3Jlc2NoZWR1bGVfaW50ZXJydXB0KHN0cnVjdCBw dF9yZWdzICpyZWdzKTsKMTQ0NzQ6IF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxl X18pKSB2b2lkIHNtcF9jYWxsX2Z1bmN0aW9uX2ludGVycnVwdChzdHJ1Y3QgcHRfcmVncyAqcmVn cyk7CjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSkgdm9pZCBz bXBfY2FsbF9mdW5jdGlvbl9zaW5nbGVfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICpyKTsKMTQ0 NzQ6ICMgMTg1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oIgoxNDQ3NDogZXh0ZXJuIHVu c2lnbmVkIGRpc2FibGVkX2NwdXM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBo YXJkX3NtcF9wcm9jZXNzb3JfaWQodm9pZCk7CjE0NDc0OiAjIDY4ICIuL2luY2x1ZGUvbGludXgv c21wLmgiIDIKMTQ0NzQ6ICMgNzcgIi4vaW5jbHVkZS9saW51eC9zbXAuaCIKMTQ0NzQ6IGV4dGVy biB2b2lkIHNtcF9zZW5kX3N0b3Aodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHNtcF9zZW5kX3Jlc2NoZWR1bGUoaW50IGNwdSk7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgc21w X3ByZXBhcmVfY3B1cyh1bnNpZ25lZCBpbnQgbWF4X2NwdXMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHVu dW0sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhf Y3B1cyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc21wX2Nh bGxfZnVuY3Rpb24oc21wX2NhbGxfZnVuY190IGZ1bmMsIHZvaWQgKmluZm8sIGludCB3YWl0KTsK MTQ0NzQ6IHZvaWQgc21wX2NhbGxfZnVuY3Rpb25fbWFueShjb25zdCBzdHJ1Y3QgY3B1bWFzayAq bWFzaywKMTQ0NzQ6ICAgICAgICBzbXBfY2FsbF9mdW5jX3QgZnVuYywgdm9pZCAqaW5mbywgYm9v bCB3YWl0KTsKMTQ0NzQ6IAoxNDQ3NDogaW50IHNtcF9jYWxsX2Z1bmN0aW9uX2FueShjb25zdCBz dHJ1Y3QgY3B1bWFzayAqbWFzaywKMTQ0NzQ6ICAgICAgc21wX2NhbGxfZnVuY190IGZ1bmMsIHZv aWQgKmluZm8sIGludCB3YWl0KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBraWNrX2FsbF9jcHVzX3N5 bmModm9pZCk7CjE0NDc0OiB2b2lkIHdha2VfdXBfYWxsX2lkbGVfY3B1cyh2b2lkKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBjYWxsX2Z1 bmN0aW9uX2luaXQodm9pZCk7CjE0NDc0OiB2b2lkIGdlbmVyaWNfc21wX2NhbGxfZnVuY3Rpb25f c2luZ2xlX2ludGVycnVwdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBzbXBfcHJlcGFyZV9ib290X2NwdSh2 b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBzZXR1cF9tYXhfY3B1czsK MTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0 IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNldHVwX25yX2NwdV9pZHModm9pZCk7CjE0 NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIp KSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzbXBfaW5pdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIGludCBfX2Jvb3RfY3B1X2lkOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZ2V0X2Jvb3Rf Y3B1X2lkKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fYm9vdF9jcHVfaWQ7CjE0NDc0 OiB9CjE0NDc0OiAjIDIyOCAiLi9pbmNsdWRlL2xpbnV4L3NtcC5oIgoxNDQ3NDogZXh0ZXJuIHZv aWQgYXJjaF9kaXNhYmxlX3NtcF9zdXBwb3J0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g dm9pZCBhcmNoX2VuYWJsZV9ub25ib290X2NwdXNfYmVnaW4odm9pZCk7CjE0NDc0OiBleHRlcm4g dm9pZCBhcmNoX2VuYWJsZV9ub25ib290X2NwdXNfZW5kKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIHNtcF9zZXR1cF9wcm9jZXNzb3JfaWQodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGludCBzbXBf Y2FsbF9vbl9jcHUodW5zaWduZWQgaW50IGNwdSwgaW50ICgqZnVuYykodm9pZCAqKSwgdm9pZCAq cGFyLAoxNDQ3NDogICAgICAgYm9vbCBwaHlzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQg c21wY2ZkX3ByZXBhcmVfY3B1KHVuc2lnbmVkIGludCBjcHUpOwoxNDQ3NDogaW50IHNtcGNmZF9k ZWFkX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKMTQ0NzQ6IGludCBzbXBjZmRfZHlpbmdfY3B1KHVu c2lnbmVkIGludCBjcHUpOwoxNDQ3NDogIyA4ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LmgiIDIK MTQ0NzQ6ICMgNjUgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUuaCIKMTQ0NzQ6IGV4dGVybiB2b2lk ICpwY3B1X2Jhc2VfYWRkcjsKMTQ0NzQ6IGV4dGVybiBjb25zdCB1bnNpZ25lZCBsb25nICpwY3B1 X3VuaXRfb2Zmc2V0czsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBjcHVfZ3JvdXBfaW5mbyB7CjE0 NDc0OiAgaW50IG5yX3VuaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgYmFzZV9vZmZzZXQ7CjE0 NDc0OiAgdW5zaWduZWQgaW50ICpjcHVfbWFwOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcGNwdV9hbGxvY19pbmZvIHsKMTQ0NzQ6ICBzaXplX3Qgc3RhdGljX3NpemU7 CjE0NDc0OiAgc2l6ZV90IHJlc2VydmVkX3NpemU7CjE0NDc0OiAgc2l6ZV90IGR5bl9zaXplOwox NDQ3NDogIHNpemVfdCB1bml0X3NpemU7CjE0NDc0OiAgc2l6ZV90IGF0b21fc2l6ZTsKMTQ0NzQ6 ICBzaXplX3QgYWxsb2Nfc2l6ZTsKMTQ0NzQ6ICBzaXplX3QgX19haV9zaXplOwoxNDQ3NDogIGlu dCBucl9ncm91cHM7CjE0NDc0OiAgc3RydWN0IHBjcHVfZ3JvdXBfaW5mbyBncm91cHNbXTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGNwdV9mYyB7CjE0NDc0OiAgUENQVV9GQ19BVVRP LAoxNDQ3NDogIFBDUFVfRkNfRU1CRUQsCjE0NDc0OiAgUENQVV9GQ19QQUdFLAoxNDQ3NDogCjE0 NDc0OiAgUENQVV9GQ19OUiwKMTQ0NzQ6IH07CjE0NDc0OiBleHRlcm4gY29uc3QgY2hhciAqIGNv bnN0IHBjcHVfZmNfbmFtZXNbUENQVV9GQ19OUl07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBlbnVt IHBjcHVfZmMgcGNwdV9jaG9zZW5fZmM7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAqICgq cGNwdV9mY19hbGxvY19mbl90KSh1bnNpZ25lZCBpbnQgY3B1LCBzaXplX3Qgc2l6ZSwKMTQ0NzQ6 ICAgICAgICAgIHNpemVfdCBhbGlnbik7CjE0NDc0OiB0eXBlZGVmIHZvaWQgKCpwY3B1X2ZjX2Zy ZWVfZm5fdCkodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CjE0NDc0OiB0eXBlZGVmIHZvaWQgKCpw Y3B1X2ZjX3BvcHVsYXRlX3B0ZV9mbl90KSh1bnNpZ25lZCBsb25nIGFkZHIpOwoxNDQ3NDogdHlw ZWRlZiBpbnQgKHBjcHVfZmNfY3B1X2Rpc3RhbmNlX2ZuX3QpKHVuc2lnbmVkIGludCBmcm9tLCB1 bnNpZ25lZCBpbnQgdG8pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHBjcHVfYWxsb2Nf aW5mbyAqIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJp YnV0ZV9fKChfX2NvbGRfXykpIHBjcHVfYWxsb2NfYWxsb2NfaW5mbyhpbnQgbnJfZ3JvdXBzLAox NDQ3NDogICAgICAgICAgICAgaW50IG5yX3VuaXRzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0 cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpIHBjcHVfZnJlZV9hbGxvY19pbmZvKHN0cnVjdCBwY3B1X2FsbG9jX2luZm8gKmFpKTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5p bml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgcGNwdV9zZXR1cF9maXJzdF9j aHVuayhjb25zdCBzdHJ1Y3QgcGNwdV9hbGxvY19pbmZvICphaSwKMTQ0NzQ6ICAgICAgIHZvaWQg KmJhc2VfYWRkcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0 ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18p KSBwY3B1X2VtYmVkX2ZpcnN0X2NodW5rKHNpemVfdCByZXNlcnZlZF9zaXplLCBzaXplX3QgZHlu X3NpemUsCjE0NDc0OiAgICAgc2l6ZV90IGF0b21fc2l6ZSwKMTQ0NzQ6ICAgICBwY3B1X2ZjX2Nw dV9kaXN0YW5jZV9mbl90IGNwdV9kaXN0YW5jZV9mbiwKMTQ0NzQ6ICAgICBwY3B1X2ZjX2FsbG9j X2ZuX3QgYWxsb2NfZm4sCjE0NDc0OiAgICAgcGNwdV9mY19mcmVlX2ZuX3QgZnJlZV9mbik7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9f c2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHBjcHVf cGFnZV9maXJzdF9jaHVuayhzaXplX3QgcmVzZXJ2ZWRfc2l6ZSwKMTQ0NzQ6ICAgICBwY3B1X2Zj X2FsbG9jX2ZuX3QgYWxsb2NfZm4sCjE0NDc0OiAgICAgcGNwdV9mY19mcmVlX2ZuX3QgZnJlZV9m biwKMTQ0NzQ6ICAgICBwY3B1X2ZjX3BvcHVsYXRlX3B0ZV9mbl90IHBvcHVsYXRlX3B0ZV9mbik7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgKl9fYWxsb2NfcmVzZXJ2ZWRfcGVy Y3B1KHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pOwoxNDQ3NDogZXh0ZXJuIGJvb2wgX19pc19r ZXJuZWxfcGVyY3B1X2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nICpj YW5fYWRkcik7CjE0NDc0OiBleHRlcm4gYm9vbCBpc19rZXJuZWxfcGVyY3B1X2FkZHJlc3ModW5z aWduZWQgbG9uZyBhZGRyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCAqX19hbGxvY19wZXJjcHVfZ2ZwKHNpemVfdCBzaXplLCBzaXpl X3QgYWxpZ24sIGdmcF90IGdmcCk7CjE0NDc0OiBleHRlcm4gdm9pZCAqX19hbGxvY19wZXJjcHUo c2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbik7CjE0NDc0OiBleHRlcm4gdm9pZCBmcmVlX3BlcmNw dSh2b2lkICpfX3BkYXRhKTsKMTQ0NzQ6IGV4dGVybiBwaHlzX2FkZHJfdCBwZXJfY3B1X3B0cl90 b19waHlzKHZvaWQgKmFkZHIpOwoxNDQ3NDogIyAxNDYgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUu aCIKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIHBjcHVfbnJfcGFnZXModm9pZCk7CjE0NDc0 OiAjIDEwICIuL2luY2x1ZGUvbGludXgvYXJjaF90b3BvbG9neS5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IHZvaWQgdG9wb2xvZ3lfbm9ybWFsaXplX2NwdV9zY2FsZSh2b2lkKTsKMTQ0NzQ6IGludCB0b3Bv bG9neV91cGRhdGVfY3B1X3RvcG9sb2d5KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2 aWNlX25vZGU7CjE0NDc0OiBib29sIHRvcG9sb2d5X3BhcnNlX2NwdV9jYXBhY2l0eShzdHJ1Y3Qg ZGV2aWNlX25vZGUgKmNwdV9ub2RlLCBpbnQgY3B1KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIF9f YXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIiKSkpIF9fdHlwZW9mX18odW5z aWduZWQgbG9uZykgY3B1X3NjYWxlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2NoZWRfZG9tYWlu OwoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgdG9wb2xvZ3lfZ2V0X2NwdV9zY2FsZShpbnQg Y3B1KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBf dmVyaWZ5ID0gKHR5cGVvZigoJihjcHVfc2NhbGUpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClf X3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9f ICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihjcHVfc2NhbGUpKSkpICopKCgm KGNwdV9zY2FsZSkpKSkpOyAodHlwZW9mKCh0eXBlb2YoKigoJihjcHVfc2NhbGUpKSkpICopKCgm KGNwdV9zY2FsZSkpKSkpIChfX3B0ciArICgoKF9fcGVyX2NwdV9vZmZzZXRbKGNwdSldKSkpKTsg fSk7IH0pKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCB0b3BvbG9neV9zZXRfY3B1X3Nj YWxlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgY2FwYWNpdHkpOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIiIpKSkg X190eXBlb2ZfXyh1bnNpZ25lZCBsb25nKSBmcmVxX3NjYWxlOwoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQoxNDQ3 NDogdW5zaWduZWQgbG9uZyB0b3BvbG9neV9nZXRfZnJlcV9zY2FsZShpbnQgY3B1KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoKih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5 cGVvZigoJihmcmVxX3NjYWxlKSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5 OyB9IHdoaWxlICgwKTsgKHsgdW5zaWduZWQgbG9uZyBfX3B0cjsgX19hc21fXyAoIiIgOiAiPXIi KF9fcHRyKSA6ICIwIigodHlwZW9mKCooKCYoZnJlcV9zY2FsZSkpKSkgKikoKCYoZnJlcV9zY2Fs ZSkpKSkpOyAodHlwZW9mKCh0eXBlb2YoKigoJihmcmVxX3NjYWxlKSkpKSAqKSgoJihmcmVxX3Nj YWxlKSkpKSkgKF9fcHRyICsgKCgoX19wZXJfY3B1X29mZnNldFsoY3B1KV0pKSkpOyB9KTsgfSkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3B1X3RvcG9sb2d5IHsKMTQ0NzQ6ICBp bnQgdGhyZWFkX2lkOwoxNDQ3NDogIGludCBjb3JlX2lkOwoxNDQ3NDogIGludCBwYWNrYWdlX2lk OwoxNDQ3NDogIGludCBsbGNfaWQ7CjE0NDc0OiAgY3B1bWFza190IHRocmVhZF9zaWJsaW5nOwox NDQ3NDogIGNwdW1hc2tfdCBjb3JlX3NpYmxpbmc7CjE0NDc0OiAgY3B1bWFza190IGxsY19zaWJs aW5nOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzEgIi4vaW5jbHVkZS9saW51eC90b3BvbG9neS5oIiAy CjE0NDc0OiAjIDQ2ICIuL2luY2x1ZGUvbGludXgvdG9wb2xvZ3kuaCIKMTQ0NzQ6IGludCBhcmNo X3VwZGF0ZV9jcHVfdG9wb2xvZ3kodm9pZCk7CjE0NDc0OiAjIDc1ICIuL2luY2x1ZGUvbGludXgv dG9wb2xvZ3kuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18o Ii5kYXRhLi5yZWFkX21vc3RseSIpKSkgbm9kZV9yZWNsYWltX2Rpc3RhbmNlOwoxNDQ3NDogIyAx NzcgIi4vaW5jbHVkZS9saW51eC90b3BvbG9neS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG51bWFfbWVtX2lkKHZv aWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG51bWFfbm9kZV9pZCgpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG5vZGVfdG9fbWVtX25vZGUoaW50IG5vZGUp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIG5vZGU7CjE0NDc0OiB9CjE0NDc0OiAjIDIxOSAiLi9p bmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1 X3NtdF9tYXNrKGludCBjcHUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoKih7IGRvIHsgY29u c3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJihjcHVfc2libGluZ19tYXApKSArIDAp KSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25l ZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigo JihjcHVfc2libGluZ19tYXApKSkpICopKCgmKGNwdV9zaWJsaW5nX21hcCkpKSkpOyAodHlwZW9m KCh0eXBlb2YoKigoJihjcHVfc2libGluZ19tYXApKSkpICopKCgmKGNwdV9zaWJsaW5nX21hcCkp KSkpIChfX3B0ciArICgoKF9fcGVyX2NwdV9vZmZzZXRbKGNwdSldKSkpKTsgfSk7IH0pKSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9j cHVfbWFzayhpbnQgY3B1KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKHZvaWQpKCh2b2lkKShj cHUpLDApLCAoKGNvbnN0IHN0cnVjdCBjcHVtYXNrICopJl9fY3B1X29ubGluZV9tYXNrKSk7CjE0 NDc0OiB9CjE0NDc0OiAjIDEwICIuL2luY2x1ZGUvbGludXgvZ2ZwLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IHZtX2FyZWFfc3RydWN0OwoxNDQ3NDogIyAzMDggIi4vaW5jbHVkZS9saW51eC9n ZnAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBnZnBmbGFnc190b19taWdyYXRldHlwZShjb25zdCBnZnBfdCBnZnBf ZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgKCh2b2lkKShzaXplb2YoKCBsb25nKSgoZ2ZwX2ZsYWdz ICYgKCgoIGdmcF90KTB4MTB1KXwoKCBnZnBfdCkweDA4dSkpKSA9PSAoKCggZ2ZwX3QpMHgxMHUp fCgoIGdmcF90KTB4MDh1KSkpKSkpOwoxNDQ3NDogIGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxl dGltZV9hc3NlcnRfMzExKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVH X09OIGZhaWxlZDogIiAiKDFVTCA8PCBHRlBfTU9WQUJMRV9TSElGVCkgIT0gX19fR0ZQX01PVkFC TEUiKSkpOyBpZiAoISghKCgxVUwgPDwgMykgIT0gMHgwOHUpKSkgX19jb21waWxldGltZV9hc3Nl cnRfMzExKCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxl dGltZV9hc3NlcnRfMzEyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVH X09OIGZhaWxlZDogIiAiKF9fX0dGUF9NT1ZBQkxFID4+IEdGUF9NT1ZBQkxFX1NISUZUKSAhPSBN SUdSQVRFX01PVkFCTEUiKSkpOyBpZiAoISghKCgweDA4dSA+PiAzKSAhPSBNSUdSQVRFX01PVkFC TEUpKSkgX19jb21waWxldGltZV9hc3NlcnRfMzEyKCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0 NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEocGFnZV9ncm91cF9ieV9tb2JpbGl0eV9kaXNh YmxlZCksIDApKQoxNDQ3NDogICByZXR1cm4gTUlHUkFURV9VTk1PVkFCTEU7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHJldHVybiAoZ2ZwX2ZsYWdzICYgKCgoIGdmcF90KTB4MTB1KXwoKCBnZnBf dCkweDA4dSkpKSA+PiAzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBnZnBmbGFnc19hbGxvd19ibG9ja2luZyhjb25zdCBnZnBfdCBnZnBfZmxhZ3MpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuICEhKGdmcF9mbGFncyAmICgoIGdmcF90KTB4NDAwdSkpOwoxNDQ3 NDogfQoxNDQ3NDogIyAzNDUgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ2Zw ZmxhZ3Nfbm9ybWFsX2NvbnRleHQoY29uc3QgZ2ZwX3QgZ2ZwX2ZsYWdzKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAoZ2ZwX2ZsYWdzICYgKCgoIGdmcF90KTB4NDAwdSkgfCAoKCBnZnBfdCkweDIw MDAwdSkpKSA9PQoxNDQ3NDogICAoKCBnZnBfdCkweDQwMHUpOwoxNDQ3NDogfQoxNDQ3NDogIyA0 NDEgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGVudW0gem9uZV90eXBlIGdmcF96b25l KGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIGVudW0gem9uZV90eXBlIHo7CjE0NDc0OiAg aW50IGJpdCA9ICggaW50KSAoZmxhZ3MgJiAoKCggZ2ZwX3QpMHgwMXUpfCgoIGdmcF90KTB4MDJ1 KXwoKCBnZnBfdCkweDA0dSl8KCggZ2ZwX3QpMHgwOHUpKSk7CjE0NDc0OiAKMTQ0NzQ6ICB6ID0g KCggKFpPTkVfTk9STUFMIDw8IDAgKiAyKSB8IChaT05FX0RNQSA8PCAweDAxdSAqIDIpIHwgKFpP TkVfTk9STUFMIDw8IDB4MDJ1ICogMikgfCAoWk9ORV9ETUEzMiA8PCAweDA0dSAqIDIpIHwgKFpP TkVfTk9STUFMIDw8IDB4MDh1ICogMikgfCAoWk9ORV9ETUEgPDwgKDB4MDh1IHwgMHgwMXUpICog MikgfCAoWk9ORV9NT1ZBQkxFIDw8ICgweDA4dSB8IDB4MDJ1KSAqIDIpIHwgKFpPTkVfRE1BMzIg PDwgKDB4MDh1IHwgMHgwNHUpICogMikpID4+IChiaXQgKiAyKSkgJgoxNDQ3NDogICAgICAgKCgx IDw8IDIpIC0gMSk7CjE0NDc0OiAgKCh2b2lkKShzaXplb2YoKCBsb25nKSgoKCAxIDw8ICgweDAx dSB8IDB4MDJ1KSB8IDEgPDwgKDB4MDF1IHwgMHgwNHUpIHwgMSA8PCAoMHgwNHUgfCAweDAydSkg fCAxIDw8ICgweDAxdSB8IDB4MDR1IHwgMHgwMnUpIHwgMSA8PCAoMHgwOHUgfCAweDAydSB8IDB4 MDF1KSB8IDEgPDwgKDB4MDh1IHwgMHgwNHUgfCAweDAxdSkgfCAxIDw8ICgweDA4dSB8IDB4MDR1 IHwgMHgwMnUpIHwgMSA8PCAoMHgwOHUgfCAweDA0dSB8IDB4MDF1IHwgMHgwMnUpICkgPj4gYml0 KSAmIDEpKSkpOwoxNDQ3NDogIHJldHVybiB6OwoxNDQ3NDogfQoxNDQ3NDogIyA0NTkgIi4vaW5j bHVkZS9saW51eC9nZnAuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZnBfem9uZWxpc3QoZ2ZwX3QgZmxhZ3MpCjE0 NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gWk9O RUxJU1RfRkFMTEJBQ0s7CjE0NDc0OiB9CjE0NDc0OiAjIDQ3NyAiLi9pbmNsdWRlL2xpbnV4L2dm cC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc3RydWN0IHpvbmVsaXN0ICpub2RlX3pvbmVsaXN0KGludCBuaWQsIGdmcF90 IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoJmNvbnRpZ19wYWdlX2RhdGEpLT5ub2Rl X3pvbmVsaXN0cyArIGdmcF96b25lbGlzdChmbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBhcmNoX2ZyZWVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9yZGVy KSB7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfYWxsb2NfcGFnZShzdHJ1Y3Qg cGFnZSAqcGFnZSwgaW50IG9yZGVyKSB7IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg cGFnZSAqCjE0NDc0OiBfX2FsbG9jX3BhZ2VzX25vZGVtYXNrKGdmcF90IGdmcF9tYXNrLCB1bnNp Z25lZCBpbnQgb3JkZXIsIGludCBwcmVmZXJyZWRfbmlkLAoxNDQ3NDogICAgICAgIG5vZGVtYXNr X3QgKm5vZGVtYXNrKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBhZ2UgKgoxNDQ3NDogX19hbGxv Y19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyLCBpbnQgcHJlZmVycmVk X25pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19hbGxvY19wYWdlc19ub2RlbWFzayhnZnBf bWFzaywgb3JkZXIsIHByZWZlcnJlZF9uaWQsICgodm9pZCAqKTApKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGFnZSAqCjE0 NDc0OiBfX2FsbG9jX3BhZ2VzX25vZGUoaW50IG5pZCwgZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVk IGludCBvcmRlcikKMTQ0NzQ6IHsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcpKG5pZCA8 IDAgfHwgbmlkID49ICgxIDw8IDApKSkpKTsKMTQ0NzQ6ICAoKHZvaWQpKHNpemVvZigoIGxvbmcp KChnZnBfbWFzayAmICgoIGdmcF90KTB4MjAwMDAwdSkpICYmICFub2RlX3N0YXRlKChuaWQpLCBO X09OTElORSkpKSkpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIF9fYWxsb2NfcGFnZXMoZ2ZwX21h c2ssIG9yZGVyLCBuaWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBhZ2UgKmFsbG9jX3BhZ2VzX25vZGUoaW50 IG5pZCwgZ2ZwX3QgZ2ZwX21hc2ssCjE0NDc0OiAgICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCjE0 NDc0OiB7CjE0NDc0OiAgaWYgKG5pZCA9PSAoLTEpKQoxNDQ3NDogICBuaWQgPSBudW1hX21lbV9p ZCgpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIF9fYWxsb2NfcGFnZXNfbm9kZShuaWQsIGdmcF9t YXNrLCBvcmRlcik7CjE0NDc0OiB9CjE0NDc0OiAjIDU1MyAiLi9pbmNsdWRlL2xpbnV4L2dmcC5o IgoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19nZXRfZnJlZV9wYWdlcyhnZnBfdCBnZnBf bWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIGdl dF96ZXJvZWRfcGFnZShnZnBfdCBnZnBfbWFzayk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgKmFsbG9j X3BhZ2VzX2V4YWN0KHNpemVfdCBzaXplLCBnZnBfdCBnZnBfbWFzayk7CjE0NDc0OiB2b2lkIGZy ZWVfcGFnZXNfZXhhY3Qodm9pZCAqdmlydCwgc2l6ZV90IHNpemUpOwoxNDQ3NDogdm9pZCAqIF9f YXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIubWVtaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9f KChfX2NvbGRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBhbGxv Y19wYWdlc19leGFjdF9uaWQoaW50IG5pZCwgc2l6ZV90IHNpemUsIGdmcF90IGdmcF9tYXNrKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHZvaWQgX19mcmVlX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25l ZCBpbnQgb3JkZXIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZnJlZV9wYWdlcyh1bnNpZ25lZCBsb25n IGFkZHIsIHVuc2lnbmVkIGludCBvcmRlcik7CjE0NDc0OiBleHRlcm4gdm9pZCBmcmVlX3VucmVm X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZnJlZV91bnJlZl9w YWdlX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBw YWdlX2ZyYWdfY2FjaGU7CjE0NDc0OiBleHRlcm4gdm9pZCBfX3BhZ2VfZnJhZ19jYWNoZV9kcmFp bihzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IGNvdW50KTsKMTQ0NzQ6IGV4dGVybiB2 b2lkICpwYWdlX2ZyYWdfYWxsb2Moc3RydWN0IHBhZ2VfZnJhZ19jYWNoZSAqbmMsCjE0NDc0OiAg ICAgICAgIHVuc2lnbmVkIGludCBmcmFnc3osIGdmcF90IGdmcF9tYXNrKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIHBhZ2VfZnJhZ19mcmVlKHZvaWQgKmFkZHIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiB2b2lkIHBhZ2VfYWxsb2NfaW5pdCh2b2lkKTsKMTQ0NzQ6IHZvaWQg ZHJhaW5fem9uZV9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfcGFnZXMg KnBjcCk7CjE0NDc0OiB2b2lkIGRyYWluX2FsbF9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSk7CjE0 NDc0OiB2b2lkIGRyYWluX2xvY2FsX3BhZ2VzKHN0cnVjdCB6b25lICp6b25lKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBwYWdlX2FsbG9jX2luaXRfbGF0ZSh2b2lkKTsKMTQ0NzQ6ICMgNTk0ICIuL2lu Y2x1ZGUvbGludXgvZ2ZwLmgiCjE0NDc0OiBleHRlcm4gZ2ZwX3QgZ2ZwX2FsbG93ZWRfbWFzazsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBib29sIGdmcF9wZm1lbWFsbG9jX2FsbG93ZWQoZ2ZwX3Qg Z2ZwX21hc2spOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBwbV9yZXN0cmljdF9nZnBfbWFz ayh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHBtX3Jlc3RvcmVfZ2ZwX21hc2sodm9pZCk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgcG1fc3VzcGVuZGVkX3N0b3JhZ2Uodm9p ZCk7CjE0NDc0OiAjIDYxMyAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgoxNDQ3NDogZXh0ZXJuIGlu dCBhbGxvY19jb250aWdfcmFuZ2UodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBl bmQsCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBtaWdyYXRldHlwZSwgZ2ZwX3QgZ2ZwX21hc2sp OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwYWdlICphbGxvY19jb250aWdfcGFnZXModW5zaWduZWQg bG9uZyBucl9wYWdlcywgZ2ZwX3QgZ2ZwX21hc2ssCjE0NDc0OiAgICAgICAgICAgIGludCBuaWQs IG5vZGVtYXNrX3QgKm5vZGVtYXNrKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBmcmVlX2NvbnRpZ19y YW5nZSh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgaW50IG5yX3BhZ2VzKTsKMTQ0NzQ6ICMg MTYgIi4vaW5jbHVkZS9saW51eC9zbGFiLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L292ZXJmbG93LmgiIDEKMTQ0NzQ6ICMgMjUzICIuL2luY2x1ZGUvbGludXgvb3ZlcmZsb3cuaCIK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzaXplX3QgYXJy YXlfc2l6ZShzaXplX3QgYSwgc2l6ZV90IGIpCjE0NDc0OiB7CjE0NDc0OiAgc2l6ZV90IGJ5dGVz OwoxNDQ3NDogCjE0NDc0OiAgaWYgKCh7IHR5cGVvZihhKSBfX2EgPSAoYSk7IHR5cGVvZihiKSBf X2IgPSAoYik7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0g Jl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwg X19iLCBfX2QpOyB9KSkKMTQ0NzQ6ICAgcmV0dXJuICh+KHNpemVfdCkwKTsKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBieXRlczsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjc1ICIuL2luY2x1ZGUvbGludXgv b3ZlcmZsb3cuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSBzaXplX3QgYXJyYXkzX3NpemUoc2l6ZV90IGEsIHNpemVfdCBiLCBzaXplX3QgYykKMTQ0NzQ6 IHsKMTQ0NzQ6ICBzaXplX3QgYnl0ZXM7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoKHsgdHlwZW9mKGEp IF9fYSA9IChhKTsgdHlwZW9mKGIpIF9fYiA9IChiKTsgdHlwZW9mKCZieXRlcykgX19kID0gKCZi eXRlcyk7ICh2b2lkKSAoJl9fYSA9PSAmX19iKTsgKHZvaWQpICgmX19hID09IF9fZCk7IF9fYnVp bHRpbl9tdWxfb3ZlcmZsb3coX19hLCBfX2IsIF9fZCk7IH0pKQoxNDQ3NDogICByZXR1cm4gKH4o c2l6ZV90KTApOwoxNDQ3NDogIGlmICgoeyB0eXBlb2YoYnl0ZXMpIF9fYSA9IChieXRlcyk7IHR5 cGVvZihjKSBfX2IgPSAoYyk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkg KCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292ZXJm bG93KF9fYSwgX19iLCBfX2QpOyB9KSkKMTQ0NzQ6ICAgcmV0dXJuICh+KHNpemVfdCkwKTsKMTQ0 NzQ6IAoxNDQ3NDogIHJldHVybiBieXRlczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgc2l6ZV90IF9fYWJfY19zaXplKHNpemVfdCBhLCBzaXplX3QgYiwgc2l6ZV90IGMp CjE0NDc0OiB7CjE0NDc0OiAgc2l6ZV90IGJ5dGVzOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCh7IHR5 cGVvZihhKSBfX2EgPSAoYSk7IHR5cGVvZihiKSBfX2IgPSAoYik7IHR5cGVvZigmYnl0ZXMpIF9f ZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2Qp OyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSkKMTQ0NzQ6ICAgcmV0 dXJuICh+KHNpemVfdCkwKTsKMTQ0NzQ6ICBpZiAoKHsgdHlwZW9mKGJ5dGVzKSBfX2EgPSAoYnl0 ZXMpOyB0eXBlb2YoYykgX19iID0gKGMpOyB0eXBlb2YoJmJ5dGVzKSBfX2QgPSAoJmJ5dGVzKTsg KHZvaWQpICgmX19hID09ICZfX2IpOyAodm9pZCkgKCZfX2EgPT0gX19kKTsgX19idWlsdGluX2Fk ZF9vdmVyZmxvdyhfX2EsIF9fYiwgX19kKTsgfSkpCjE0NDc0OiAgIHJldHVybiAofihzaXplX3Qp MCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gYnl0ZXM7CjE0NDc0OiB9CjE0NDc0OiAjIDE3ICIu L2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2lu Y2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmgiIDEKMTQ0NzQ6ICMgNTkgIi4vaW5jbHVkZS9s aW51eC9wZXJjcHUtcmVmY291bnQuaCIKMTQ0NzQ6IHN0cnVjdCBwZXJjcHVfcmVmOwoxNDQ3NDog dHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNfdCkoc3RydWN0IHBlcmNwdV9yZWYgKik7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgX19QRVJDUFVfUkVGX0FUT01JQyA9 IDFMVSA8PCAwLAoxNDQ3NDogIF9fUEVSQ1BVX1JFRl9ERUFEID0gMUxVIDw8IDEsCjE0NDc0OiAg X19QRVJDUFVfUkVGX0FUT01JQ19ERUFEID0gX19QRVJDUFVfUkVGX0FUT01JQyB8IF9fUEVSQ1BV X1JFRl9ERUFELAoxNDQ3NDogCjE0NDc0OiAgX19QRVJDUFVfUkVGX0ZMQUdfQklUUyA9IDIsCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgUEVSQ1BVX1JFRl9J TklUX0FUT01JQyA9IDEgPDwgMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBQRVJDUFVfUkVGX0lOSVRfREVBRCA9IDEgPDwgMSwKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFBFUkNQVV9SRUZfQUxMT1dfUkVJTklU ID0gMSA8PCAyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBlcmNwdV9yZWYgewox NDQ3NDogIGF0b21pY19sb25nX3QgY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHBlcmNwdV9jb3VudF9wdHI7CjE0NDc0OiAgcGVyY3B1 X3JlZl9mdW5jX3QgKnJlbGVhc2U7CjE0NDc0OiAgcGVyY3B1X3JlZl9mdW5jX3QgKmNvbmZpcm1f c3dpdGNoOwoxNDQ3NDogIGJvb2wgZm9yY2VfYXRvbWljOjE7CjE0NDc0OiAgYm9vbCBhbGxvd19y ZWluaXQ6MTsKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCByY3U7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHBl cmNwdV9yZWZfaW5pdChzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLAoxNDQ3NDogICAgICBwZXJjcHVf cmVmX2Z1bmNfdCAqcmVsZWFzZSwgdW5zaWduZWQgaW50IGZsYWdzLAoxNDQ3NDogICAgICBnZnBf dCBnZnApOwoxNDQ3NDogdm9pZCBwZXJjcHVfcmVmX2V4aXQoc3RydWN0IHBlcmNwdV9yZWYgKnJl Zik7CjE0NDc0OiB2b2lkIHBlcmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pYyhzdHJ1Y3QgcGVyY3B1 X3JlZiAqcmVmLAoxNDQ3NDogICAgICBwZXJjcHVfcmVmX2Z1bmNfdCAqY29uZmlybV9zd2l0Y2gp OwoxNDQ3NDogdm9pZCBwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWNfc3luYyhzdHJ1Y3QgcGVy Y3B1X3JlZiAqcmVmKTsKMTQ0NzQ6IHZvaWQgcGVyY3B1X3JlZl9zd2l0Y2hfdG9fcGVyY3B1KHN0 cnVjdCBwZXJjcHVfcmVmICpyZWYpOwoxNDQ3NDogdm9pZCBwZXJjcHVfcmVmX2tpbGxfYW5kX2Nv bmZpcm0oc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwKMTQ0NzQ6ICAgICAgcGVyY3B1X3JlZl9mdW5j X3QgKmNvbmZpcm1fa2lsbCk7CjE0NDc0OiB2b2lkIHBlcmNwdV9yZWZfcmVzdXJyZWN0KHN0cnVj dCBwZXJjcHVfcmVmICpyZWYpOwoxNDQ3NDogdm9pZCBwZXJjcHVfcmVmX3JlaW5pdChzdHJ1Y3Qg cGVyY3B1X3JlZiAqcmVmKTsKMTQ0NzQ6ICMgMTM0ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJl ZmNvdW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9yZWZfa2lsbChzdHJ1Y3QgcGVyY3B1X3JlZiAq cmVmKQoxNDQ3NDogewoxNDQ3NDogIHBlcmNwdV9yZWZfa2lsbF9hbmRfY29uZmlybShyZWYsICgo dm9pZCAqKTApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX3JlZl9pc19wZXJjcHUoc3RydWN0IHBl cmNwdV9yZWYgKnJlZiwKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBsb25nICoqcGVyY3B1X2NvdW50 cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHBlcmNwdV9wdHI7CjE0NDc0OiAjIDE2 MSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogIHBlcmNwdV9wdHIg PSAoeyB1bmlvbiB7IHR5cGVvZihyZWYtPnBlcmNwdV9jb3VudF9wdHIpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYocmVmLT5wZXJjcHVfY291bnRf cHRyKSwgX191Ll9fYywgc2l6ZW9mKHJlZi0+cGVyY3B1X2NvdW50X3B0cikpOyBlbHNlIF9fcmVh ZF9vbmNlX3NpemVfbm9jaGVjaygmKHJlZi0+cGVyY3B1X2NvdW50X3B0ciksIF9fdS5fX2MsIHNp emVvZihyZWYtPnBlcmNwdV9jb3VudF9wdHIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFs OyB9KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHBlcmNwdV9wdHIgJiBfX1BFUkNQ VV9SRUZfQVRPTUlDX0RFQUQpLCAwKSkKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogCjE0 NDc0OiAgKnBlcmNwdV9jb3VudHAgPSAodW5zaWduZWQgbG9uZyAqKXBlcmNwdV9wdHI7CjE0NDc0 OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAjIDE4NSAiLi9pbmNsdWRlL2xpbnV4L3Bl cmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVfcmVmX2dldF9tYW55KHN0cnVjdCBw ZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyAqcGVyY3B1X2NvdW50OwoxNDQ3NDogCjE0NDc0OiAgcmN1X3JlYWRfbG9jaygpOwox NDQ3NDogCjE0NDc0OiAgaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsICZwZXJjcHVfY291bnQpKQox NDQ3NDogICBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigq cGVyY3B1X2NvdW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdo aWxlICgwKTsgc3dpdGNoKHNpemVvZigqcGVyY3B1X2NvdW50KSkgeyBjYXNlIDE6IGRvIHsgdHlw ZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18g PSAoX19idWlsdGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkp ID8gKGludCkobnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9 IChucik7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkp KSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXyko bnIpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJp bmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug aWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAo KHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZv bGF0aWxlICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGls ZSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSA6ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09 IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRl Y3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBh c20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2Jh ZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRl ZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAo X19idWlsdGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8g KGludCkobnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChu cik7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7 IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIp KSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3 ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0 aWxlICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAo ImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6 ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEp IGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3Eg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20g dm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRvIHsgdHlwZWRlZiB0 eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19i dWlsdGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGlu dCkobnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7 ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNh c2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0g LTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7 IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19U X18pKG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxl ICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFk ZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJy aSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFz bSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9s YXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJj cHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBl b2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWls dGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCko bnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2 b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2Ug MTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJy ZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18p KG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgi aW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwg JTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIg KChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2 b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRp bGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVf c2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFy YW1ldGVyKCk7YnJlYWs7IH0gfSB3aGlsZSAoMCk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBhdG9t aWNfbG9uZ19hZGQobnIsICZyZWYtPmNvdW50KTsKMTQ0NzQ6IAoxNDQ3NDogIHJjdV9yZWFkX3Vu bG9jaygpOwoxNDQ3NDogfQoxNDQ3NDogIyAyMDcgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVm Y291bnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3JlZl9nZXQoc3RydWN0IHBlcmNwdV9yZWYgKnJl ZikKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZXJjcHVfcmVmX2dldF9tYW55KHJlZiwgMSk7CjE0NDc0OiB9 CjE0NDc0OiAjIDIyMiAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBwZXJjcHVfcmVmX3RyeWdldF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsCjE0NDc0 OiAgICAgICAgdW5zaWduZWQgbG9uZyBucikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n ICpwZXJjcHVfY291bnQ7CjE0NDc0OiAgYm9vbCByZXQ7CjE0NDc0OiAKMTQ0NzQ6ICByY3VfcmVh ZF9sb2NrKCk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgJnBlcmNw dV9jb3VudCkpIHsKMTQ0NzQ6ICAgZG8geyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9 ICh0eXBlb2YoKCYoKnBlcmNwdV9jb3VudCkpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBw X3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoKnBlcmNwdV9jb3VudCkpIHsgY2Fz ZSAxOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3Qg aW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSAmJiAoKG5yKSA9PSAxIHx8 IChucikgPT0gLTEpKSA/IChpbnQpKG5yKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9f OyBwYW9fdG1wX18gPSAobnIpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpw ZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUg KCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRk YiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFp IiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNt IHZvbGF0aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xh dGlsZSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSA6ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9f ID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAo ImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBhc20gdm9sYXRpbGUgKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDg6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g dm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsg ZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSAy OiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50 IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSAmJiAoKG5yKSA9PSAxIHx8IChu cikgPT0gLTEpKSA/IChpbnQpKG5yKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBw YW9fdG1wX18gPSAobnIpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJj cHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJp bmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug aWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAo KHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZv bGF0aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGls ZSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSA6ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09 IDEpIGFzbSB2b2xhdGlsZSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRl Y2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBh c20gdm9sYXRpbGUgKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9s YXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgZGVm YXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA0OiBk byB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBh b19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSAmJiAoKG5yKSA9PSAxIHx8IChucikg PT0gLTEpKSA/IChpbnQpKG5yKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9f dG1wX18gPSAobnIpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVf Y291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNi ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBh b19UX18pKG5yKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0 aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAo ImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6 ICJyaSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEp IGFzbSB2b2xhdGlsZSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20g dm9sYXRpbGUgKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9f SURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRp bGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7 IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgZGVmYXVs dDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA4OiBkbyB7 IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19J RF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSAmJiAoKG5yKSA9PSAxIHx8IChucikgPT0g LTEpKSA/IChpbnQpKG5yKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1w X18gPSAobnIpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVfY291 bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNiICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBhb19U X18pKG5yKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxl ICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFk ZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJy aSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFz bSB2b2xhdGlsZSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9s YXRpbGUgKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUg KCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgZGVmYXVsdDog X19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgZGVmYXVsdDogX19iYWRf c2l6ZV9jYWxsX3BhcmFtZXRlcigpO2JyZWFrOyB9IH0gd2hpbGUgKDApOwoxNDQ3NDogICByZXQg PSB0cnVlOwoxNDQ3NDogIH0gZWxzZSB7CjE0NDc0OiAgIHJldCA9IGF0b21pY19sb25nX2FkZF91 bmxlc3MoJnJlZi0+Y291bnQsIG5yLCAwKTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICByY3Vf cmVhZF91bmxvY2soKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiByZXQ7CjE0NDc0OiB9CjE0NDc0 OiAjIDI1MSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBw ZXJjcHVfcmVmX3RyeWdldChzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBwZXJjcHVfcmVmX3RyeWdldF9tYW55KHJlZiwgMSk7CjE0NDc0OiB9CjE0NDc0OiAj IDI3MSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwZXJj cHVfcmVmX3RyeWdldF9saXZlKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpCjE0NDc0OiB7CjE0NDc0 OiAgdW5zaWduZWQgbG9uZyAqcGVyY3B1X2NvdW50OwoxNDQ3NDogIGJvb2wgcmV0ID0gZmFsc2U7 CjE0NDc0OiAKMTQ0NzQ6ICByY3VfcmVhZF9sb2NrKCk7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoX19y ZWZfaXNfcGVyY3B1KHJlZiwgJnBlcmNwdV9jb3VudCkpIHsKMTQ0NzQ6ICAgZG8geyBkbyB7IGNv bnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoKnBlcmNwdV9jb3VudCkpICsgMCkp KCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXpl b2YoKnBlcmNwdV9jb3VudCkpIHsgY2FzZSAxOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1 X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFu dF9wKDEpICYmICgoMSkgPT0gMSB8fCAoMSkgPT0gLTEpKSA/IChpbnQpKDEpIDogMDsgaWYgKDAp IHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9ICgxKTsgKHZvaWQpcGFvX3RtcF9fOyB9 IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18g PT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgi ZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGFzbSB2b2xhdGlsZSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSA6ICJxaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSAyOiBpZiAo cGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZv bGF0aWxlICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2Fz ZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jbCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAt MSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBi cmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9f SURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9f KSgxKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgw KTticmVhazsgY2FzZSAyOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFv X1RfXzsgY29uc3QgaW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpICYmICgo MSkgPT0gMSB8fCAoMSkgPT0gLTEpKSA/IChpbnQpKDEpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBw YW9fdG1wX187IHBhb190bXBfXyA9ICgxKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6 ZW9mKCgqcGVyY3B1X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZv bGF0aWxlICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGls ZSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSA6ICJxaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0g MSkgYXNtIHZvbGF0aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVj dyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFz bSB2b2xhdGlsZSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFv X0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0 aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA4 OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkg YXNtIHZvbGF0aWxlICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgxKSkpOyBicmVh azsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2Fz ZSA0OiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3Qg aW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpICYmICgoMSkgPT0gMSB8fCAo MSkgPT0gLTEpKSA/IChpbnQpKDEpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBh b190bXBfXyA9ICgxKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1 X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5j YiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChw YW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0 aWxlICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAo ImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6 ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkg YXNtIHZvbGF0aWxlICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2 b2xhdGlsZSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVf Y291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lE X18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxl ICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgZGVmYXVsdDog X19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA4OiBkbyB7IHR5 cGVkZWYgdHlwZW9mKCgqcGVyY3B1X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9f ID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKDEpICYmICgoMSkgPT0gMSB8fCAoMSkgPT0gLTEpKSA/ IChpbnQpKDEpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9ICgx KTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1X2NvdW50KSkpIHsg Y2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jYiAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9 PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEsICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChwYW9fVF9fKSgxKSkp OyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jdyAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChw YW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHcgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9f VF9fKSgxKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxl ICgiaW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFk ZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJy aSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18gPT0gMSkgYXNt IHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjcSAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xh dGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgxKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3Bh cmFtZXRlcigpO2JyZWFrOyB9IH0gd2hpbGUgKDApOwoxNDQ3NDogICByZXQgPSB0cnVlOwoxNDQ3 NDogIH0gZWxzZSBpZiAoIShyZWYtPnBlcmNwdV9jb3VudF9wdHIgJiBfX1BFUkNQVV9SRUZfREVB RCkpIHsKMTQ0NzQ6ICAgcmV0ID0gYXRvbWljX2xvbmdfaW5jX25vdF96ZXJvKCZyZWYtPmNvdW50 KTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICByY3VfcmVhZF91bmxvY2soKTsKMTQ0NzQ6IAox NDQ3NDogIHJldHVybiByZXQ7CjE0NDc0OiB9CjE0NDc0OiAjIDMwMCAiLi9pbmNsdWRlL2xpbnV4 L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVfcmVmX3B1dF9tYW55KHN0cnVj dCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCjE0NDc0OiB7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyAqcGVyY3B1X2NvdW50OwoxNDQ3NDogCjE0NDc0OiAgcmN1X3JlYWRfbG9jaygp OwoxNDQ3NDogCjE0NDc0OiAgaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYsICZwZXJjcHVfY291bnQp KQoxNDQ3NDogICBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigo JigqcGVyY3B1X2NvdW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9 IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZigqcGVyY3B1X2NvdW50KSkgeyBjYXNlIDE6IGRvIHsg dHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lE X18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkg JiYgKCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAxIHx8ICgtKHR5cGVvZigqcGVy Y3B1X2NvdW50KSkobnIpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkp KG5yKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKC0odHlw ZW9mKCpwZXJjcHVfY291bnQpKShucikpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXpl b2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9s YXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxl ICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp IDogInFpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9f ID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0o dHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUg KCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQp KShucikpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUg KCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRk cSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJl IiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBkZWZh dWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRv IHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFv X0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5y KSkgJiYgKCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAxIHx8ICgtKHR5cGVvZigq cGVyY3B1X2NvdW50KSkobnIpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnBlcmNwdV9jb3Vu dCkpKG5yKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKC0o dHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChz aXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g dm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0 aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpIDogInFpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJy ZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18p KC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9f SURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRp bGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7 IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291 bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRp bGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7 IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgi YWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDog InJlIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBk ZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6 IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQg cGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkp KG5yKSkgJiYgKCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAxIHx8ICgtKHR5cGVv ZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnBlcmNwdV9j b3VudCkpKG5yKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0g KC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNo IChzaXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBh c20gdm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZv bGF0aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpIDogInFpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7 IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19U X18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9s YXRpbGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVf Y291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9s YXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxl ICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp IDogInJlIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFr OyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNl IDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBp bnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnBlcmNwdV9jb3Vu dCkpKG5yKSkgJiYgKCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAxIHx8ICgtKHR5 cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnBlcmNw dV9jb3VudCkpKG5yKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9f ID0gKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpOyAodm9pZClwYW9fdG1wX187IH0gc3dp dGNoIChzaXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gdm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNi ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNt IHZvbGF0aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikp KSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3 ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDQ6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g dm9sYXRpbGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJj cHVfY291bnQpKShucikpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g dm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0 aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpIDogInJlIiAoKHBhb19UX18pKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBk ZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJlYWs7IH0gfSB3aGlsZSAoMCk7 CjE0NDc0OiAgZWxzZSBpZiAoX19idWlsdGluX2V4cGVjdCghIShhdG9taWNfbG9uZ19zdWJfYW5k X3Rlc3QobnIsICZyZWYtPmNvdW50KSksIDApKQoxNDQ3NDogICByZWYtPnJlbGVhc2UocmVmKTsK MTQ0NzQ6IAoxNDQ3NDogIHJjdV9yZWFkX3VubG9jaygpOwoxNDQ3NDogfQoxNDQ3NDogIyAzMjMg Ii4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3Jl Zl9wdXQoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZXJjcHVfcmVm X3B1dF9tYW55KHJlZiwgMSk7CjE0NDc0OiB9CjE0NDc0OiAjIDMzNyAiLi9pbmNsdWRlL2xpbnV4 L3BlcmNwdS1yZWZjb3VudC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwZXJjcHVfcmVmX2lzX2R5aW5nKHN0cnVj dCBwZXJjcHVfcmVmICpyZWYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJlZi0+cGVyY3B1X2Nv dW50X3B0ciAmIF9fUEVSQ1BVX1JFRl9ERUFEOwoxNDQ3NDogfQoxNDQ3NDogIyAzNTAgIi4vaW5j bHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcGVyY3B1X3JlZl9pc196 ZXJvKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyAqcGVyY3B1X2NvdW50OwoxNDQ3NDogCjE0NDc0OiAgaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYs ICZwZXJjcHVfY291bnQpKQoxNDQ3NDogICByZXR1cm4gZmFsc2U7CjE0NDc0OiAgcmV0dXJuICFh dG9taWNfbG9uZ19yZWFkKCZyZWYtPmNvdW50KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjAgIi4vaW5j bHVkZS9saW51eC9zbGFiLmgiIDIKMTQ0NzQ6ICMgMTM2ICIuL2luY2x1ZGUvbGludXgvc2xhYi5o IgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgva2FzYW4uaCIgMQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGttZW1fY2FjaGU7 CjE0NDc0OiBzdHJ1Y3QgcGFnZTsKMTQ0NzQ6IHN0cnVjdCB2bV9zdHJ1Y3Q7CjE0NDc0OiBzdHJ1 Y3QgdGFza19zdHJ1Y3Q7CjE0NDc0OiAjIDEwMSAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGthc2FuX3VucG9pc29uX3NoYWRvdyhjb25zdCB2b2lkICphZGRyZXNzLCBzaXpl X3Qgc2l6ZSkge30KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl91bnBvaXNvbl90YXNrX3N0YWNr KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25f c3RhY2tfYWJvdmVfc3BfdG8oY29uc3Qgdm9pZCAqd2F0ZXJtYXJrKSB7fQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGthc2FuX2VuYWJsZV9jdXJyZW50KHZvaWQpIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2Rp c2FibGVfY3VycmVudCh2b2lkKSB7fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2FsbG9jX3Bh Z2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIHt9CjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGthc2FuX2ZyZWVfcGFnZXMoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcikg e30KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9jYWNoZV9jcmVhdGUoc3RydWN0IGttZW1fY2Fj aGUgKmNhY2hlLAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGludCAqc2l6ZSwKMTQ0NzQ6ICAg ICAgICAgICBzbGFiX2ZsYWdzX3QgKmZsYWdzKSB7fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2Fu X3BvaXNvbl9zbGFiKHN0cnVjdCBwYWdlICpwYWdlKSB7fQoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl91bnBv aXNvbl9vYmplY3RfZGF0YShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCjE0NDc0OiAgICAgIHZv aWQgKm9iamVjdCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fcG9pc29uX29iamVjdF9kYXRhKHN0cnVj dCBrbWVtX2NhY2hlICpjYWNoZSwKMTQ0NzQ6ICAgICAgdm9pZCAqb2JqZWN0KSB7fQoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCAqa2FzYW5faW5pdF9zbGFiX29iaihzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCjE0NDc0 OiAgICAgY29uc3Qgdm9pZCAqb2JqZWN0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAq KW9iamVjdDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa2FzYW5fa21hbGxvY19sYXJn ZSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBnZnBfdCBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gcHRyOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9rZnJlZV9sYXJnZSh2b2lkICpw dHIsIHVuc2lnbmVkIGxvbmcgaXApIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX3BvaXNvbl9rZnJlZSh2 b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgaXApIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9rbWFsbG9j KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCB2b2lkICpvYmplY3QsCjE0NDc0OiAgICAgc2l6 ZV90IHNpemUsIGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAqKW9i amVjdDsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmthc2FuX2tyZWFsbG9jKGNvbnN0IHZvaWQgKm9i amVjdCwgc2l6ZV90IG5ld19zaXplLAoxNDQ3NDogICAgICBnZnBfdCBmbGFncykKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gKHZvaWQgKilvYmplY3Q7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgKmthc2FuX3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCwK MTQ0NzQ6ICAgICAgICBnZnBfdCBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gb2JqZWN0 OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrYXNhbl9zbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUg KnMsIHZvaWQgKm9iamVjdCwKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBsb25nIGlwKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBmYWxzZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGthc2Fu X21vZHVsZV9hbGxvYyh2b2lkICphZGRyLCBzaXplX3Qgc2l6ZSkgeyByZXR1cm4gMDsgfQoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBrYXNhbl9mcmVlX3NoYWRvdyhjb25zdCBzdHJ1Y3Qgdm1fc3RydWN0ICp2bSkge30K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IGthc2FuX2FkZF96ZXJvX3NoYWRvdyh2b2lkICpzdGFydCwgdW5z aWduZWQgbG9uZyBzaXplKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBrYXNhbl9yZW1vdmVfemVyb19zaGFkb3codm9pZCAqc3RhcnQsCjE0NDc0OiAgICAg IHVuc2lnbmVkIGxvbmcgc2l6ZSkKMTQ0NzQ6IHt9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5f dW5wb2lzb25fc2xhYihjb25zdCB2b2lkICpwdHIpIHsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc2l6ZV90IGthc2FuX21l dGFkYXRhX3NpemUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKSB7IHJldHVybiAwOyB9CjE0NDc0 OiAjIDE4MCAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2NhY2hl X3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2Nh Y2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSkge30KMTQ0NzQ6ICMgMTk4ICIu L2luY2x1ZGUvbGludXgva2FzYW4uaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5faW5pdF90YWdzKHZvaWQp IHsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9yZXNldF90YWcoY29uc3Qgdm9pZCAqYWRk cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHZvaWQgKilhZGRyOwoxNDQ3NDogfQoxNDQ3NDog IyAyMTUgIi4vaW5jbHVkZS9saW51eC9rYXNhbi5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGthc2FuX3BvcHVsYXRl X3ZtYWxsb2ModW5zaWduZWQgbG9uZyBzdGFydCwKMTQ0NzQ6ICAgICAgdW5zaWduZWQgbG9uZyBz aXplKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGthc2FuX3BvaXNvbl92bWFsbG9jKGNvbnN0IHZvaWQgKnN0YXJ0LCB1bnNpZ25lZCBsb25n IHNpemUpCjE0NDc0OiB7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25fdm1hbGxvYyhjb25z dCB2b2lkICpzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKQoxNDQ3NDogeyB9CjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGthc2FuX3JlbGVhc2Vfdm1hbGxvYyh1bnNpZ25lZCBsb25nIHN0YXJ0LAoxNDQ3NDogICAgICAg dW5zaWduZWQgbG9uZyBlbmQsCjE0NDc0OiAgICAgICB1bnNpZ25lZCBsb25nIGZyZWVfcmVnaW9u X3N0YXJ0LAoxNDQ3NDogICAgICAgdW5zaWduZWQgbG9uZyBmcmVlX3JlZ2lvbl9lbmQpIHt9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9u b25fY2Fub25pY2FsX2hvb2sodW5zaWduZWQgbG9uZyBhZGRyKSB7IH0KMTQ0NzQ6ICMgMTM3ICIu L2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtZW1fY2dyb3Vw OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBrbWVtX2Nh Y2hlX2luaXQodm9pZCk7CjE0NDc0OiBib29sIHNsYWJfaXNfYXZhaWxhYmxlKHZvaWQpOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gYm9vbCB1c2VyY29weV9mYWxsYmFjazsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGttZW1fY2FjaGUgKmttZW1fY2FjaGVfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHVu c2lnbmVkIGludCBzaXplLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IGFsaWduLCBzbGFiX2ZsYWdz X3QgZmxhZ3MsCjE0NDc0OiAgICB2b2lkICgqY3Rvcikodm9pZCAqKSk7CjE0NDc0OiBzdHJ1Y3Qg a21lbV9jYWNoZSAqa21lbV9jYWNoZV9jcmVhdGVfdXNlcmNvcHkoY29uc3QgY2hhciAqbmFtZSwK MTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgYWxpZ24sCjE0NDc0OiAg ICBzbGFiX2ZsYWdzX3QgZmxhZ3MsCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgdXNlcm9mZnNldCwg dW5zaWduZWQgaW50IHVzZXJzaXplLAoxNDQ3NDogICAgdm9pZCAoKmN0b3IpKHZvaWQgKikpOwox NDQ3NDogdm9pZCBrbWVtX2NhY2hlX2Rlc3Ryb3koc3RydWN0IGttZW1fY2FjaGUgKik7CjE0NDc0 OiBpbnQga21lbV9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKik7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgbWVtY2dfY3JlYXRlX2ttZW1fY2FjaGUoc3RydWN0IG1lbV9jZ3JvdXAgKiwgc3Ry dWN0IGttZW1fY2FjaGUgKik7CjE0NDc0OiB2b2lkIG1lbWNnX2RlYWN0aXZhdGVfa21lbV9jYWNo ZXMoc3RydWN0IG1lbV9jZ3JvdXAgKiwgc3RydWN0IG1lbV9jZ3JvdXAgKik7CjE0NDc0OiAjIDE4 NyAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKMTQ0NzQ6IHZvaWQgKiBfX2F0dHJpYnV0ZV9fKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3JlYWxsb2MoY29uc3Qgdm9pZCAqLCBzaXplX3QsIGdm cF90KTsKMTQ0NzQ6IHZvaWQga2ZyZWUoY29uc3Qgdm9pZCAqKTsKMTQ0NzQ6IHZvaWQga3pmcmVl KGNvbnN0IHZvaWQgKik7CjE0NDc0OiBzaXplX3QgX19rc2l6ZShjb25zdCB2b2lkICopOwoxNDQ3 NDogc2l6ZV90IGtzaXplKGNvbnN0IHZvaWQgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCBfX2NoZWNrX2hlYXBfb2JqZWN0KGNvbnN0IHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBuLCBz dHJ1Y3QgcGFnZSAqcGFnZSwKMTQ0NzQ6ICAgIGJvb2wgdG9fdXNlcik7CjE0NDc0OiAjIDMwOCAi Li9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKMTQ0NzQ6IGVudW0ga21hbGxvY19jYWNoZV90eXBlIHsK MTQ0NzQ6ICBLTUFMTE9DX05PUk1BTCA9IDAsCjE0NDc0OiAgS01BTExPQ19SRUNMQUlNLAoxNDQ3 NDogCjE0NDc0OiAgS01BTExPQ19ETUEsCjE0NDc0OiAKMTQ0NzQ6ICBOUl9LTUFMTE9DX1RZUEVT CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga21lbV9jYWNo ZSAqCjE0NDc0OiBrbWFsbG9jX2NhY2hlc1tOUl9LTUFMTE9DX1RZUEVTXVsoKDExICsgMTIgLSAx KSA8PSAyNSA/ICgxMSArIDEyIC0gMSkgOiAyNSkgKyAxXTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBlbnVtIGttYWxsb2NfY2FjaGVfdHlwZSBrbWFs bG9jX3R5cGUoZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKChmbGFncyAmICgo KCBnZnBfdCkweDAxdSkgfCAoKCBnZnBfdCkweDEwdSkpKSA9PSAwKSwgMSkpCjE0NDc0OiAgIHJl dHVybiBLTUFMTE9DX05PUk1BTDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIGZsYWdzICYgKCggZ2ZwX3QpMHgwMXUpID8gS01BTExPQ19ETUEg OiBLTUFMTE9DX1JFQ0xBSU07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0 OiAjIDM0OSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgdW5zaWduZWQgaW50IGttYWxsb2NfaW5kZXgoc2l6ZV90IHNpemUp CjE0NDc0OiB7CjE0NDc0OiAgaWYgKCFzaXplKQoxNDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6IAox NDQ3NDogIGlmIChzaXplIDw9ICgxIDw8IDUpKQoxNDQ3NDogICByZXR1cm4gNTsKMTQ0NzQ6IAox NDQ3NDogIGlmICgoMSA8PCA1KSA8PSAzMiAmJiBzaXplID4gNjQgJiYgc2l6ZSA8PSA5NikKMTQ0 NzQ6ICAgcmV0dXJuIDE7CjE0NDc0OiAgaWYgKCgxIDw8IDUpIDw9IDY0ICYmIHNpemUgPiAxMjgg JiYgc2l6ZSA8PSAxOTIpCjE0NDc0OiAgIHJldHVybiAyOwoxNDQ3NDogIGlmIChzaXplIDw9IDgp IHJldHVybiAzOwoxNDQ3NDogIGlmIChzaXplIDw9IDE2KSByZXR1cm4gNDsKMTQ0NzQ6ICBpZiAo c2l6ZSA8PSAzMikgcmV0dXJuIDU7CjE0NDc0OiAgaWYgKHNpemUgPD0gNjQpIHJldHVybiA2Owox NDQ3NDogIGlmIChzaXplIDw9IDEyOCkgcmV0dXJuIDc7CjE0NDc0OiAgaWYgKHNpemUgPD0gMjU2 KSByZXR1cm4gODsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSA1MTIpIHJldHVybiA5OwoxNDQ3NDogIGlm IChzaXplIDw9IDEwMjQpIHJldHVybiAxMDsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAyICogMTAyNCkg cmV0dXJuIDExOwoxNDQ3NDogIGlmIChzaXplIDw9IDQgKiAxMDI0KSByZXR1cm4gMTI7CjE0NDc0 OiAgaWYgKHNpemUgPD0gOCAqIDEwMjQpIHJldHVybiAxMzsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAx NiAqIDEwMjQpIHJldHVybiAxNDsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAzMiAqIDEwMjQpIHJldHVy biAxNTsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSA2NCAqIDEwMjQpIHJldHVybiAxNjsKMTQ0NzQ6ICBp ZiAoc2l6ZSA8PSAxMjggKiAxMDI0KSByZXR1cm4gMTc7CjE0NDc0OiAgaWYgKHNpemUgPD0gMjU2 ICogMTAyNCkgcmV0dXJuIDE4OwoxNDQ3NDogIGlmIChzaXplIDw9IDUxMiAqIDEwMjQpIHJldHVy biAxOTsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAxMDI0ICogMTAyNCkgcmV0dXJuIDIwOwoxNDQ3NDog IGlmIChzaXplIDw9IDIgKiAxMDI0ICogMTAyNCkgcmV0dXJuIDIxOwoxNDQ3NDogIGlmIChzaXpl IDw9IDQgKiAxMDI0ICogMTAyNCkgcmV0dXJuIDIyOwoxNDQ3NDogIGlmIChzaXplIDw9IDggKiAx MDI0ICogMTAyNCkgcmV0dXJuIDIzOwoxNDQ3NDogIGlmIChzaXplIDw9IDE2ICogMTAyNCAqIDEw MjQpIHJldHVybiAyNDsKMTQ0NzQ6ICBpZiAoc2l6ZSA8PSAzMiAqIDEwMjQgKiAxMDI0KSByZXR1 cm4gMjU7CjE0NDc0OiAgaWYgKHNpemUgPD0gNjQgKiAxMDI0ICogMTAyNCkgcmV0dXJuIDI2Owox NDQ3NDogIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBm LCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAi LmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5s b25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEi ICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZs YWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUv bGludXgvc2xhYi5oIiksICJpIiAoMzg1KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1 Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIg Ii5wdXNoc2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxu XHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDE4KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIp OyBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gLTE7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdm9pZCAqX19rbWFsbG9jKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncykgX19hdHRyaWJ1 dGVfXygoX19hc3N1bWVfYWxpZ25lZF9fKF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykp KSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpOwoxNDQ3NDogdm9pZCAqa21lbV9jYWNoZV9h bGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqLCBnZnBfdCBmbGFncykgX19hdHRyaWJ1dGVfXygoX19h c3N1bWVfYWxpZ25lZF9fKF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykpKSkgX19hdHRy aWJ1dGVfXygoX19tYWxsb2NfXykpOwoxNDQ3NDogdm9pZCBrbWVtX2NhY2hlX2ZyZWUoc3RydWN0 IGttZW1fY2FjaGUgKiwgdm9pZCAqKTsKMTQ0NzQ6ICMgNDAzICIuL2luY2x1ZGUvbGludXgvc2xh Yi5oIgoxNDQ3NDogdm9pZCBrbWVtX2NhY2hlX2ZyZWVfYnVsayhzdHJ1Y3Qga21lbV9jYWNoZSAq LCBzaXplX3QsIHZvaWQgKiopOwoxNDQ3NDogaW50IGttZW1fY2FjaGVfYWxsb2NfYnVsayhzdHJ1 Y3Qga21lbV9jYWNoZSAqLCBnZnBfdCwgc2l6ZV90LCB2b2lkICoqKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHZvaWQga2ZyZWVfYnVsayhzaXplX3Qgc2l6ZSwgdm9pZCAqKnApCjE0NDc0OiB7 CjE0NDc0OiAga21lbV9jYWNoZV9mcmVlX2J1bGsoKCh2b2lkICopMCksIHNpemUsIHApOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCAqX19rbWFsbG9jX25vZGUoc2l6ZV90 IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19r bWFsbG9jKHNpemUsIGZsYWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkICprbWVtX2NhY2hlX2FsbG9jX25vZGUoc3RydWN0 IGttZW1fY2FjaGUgKnMsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4ga21lbV9jYWNoZV9hbGxvYyhzLCBmbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCAqa21lbV9jYWNoZV9hbGxvY190cmFjZShzdHJ1 Y3Qga21lbV9jYWNoZSAqLCBnZnBfdCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fKChfX2Fzc3VtZV9h bGlnbmVkX18oX19hbGlnbm9mX18odW5zaWduZWQgbG9uZyBsb25nKSkpKSBfX2F0dHJpYnV0ZV9f KChfX21hbGxvY19fKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKgox NDQ3NDoga21lbV9jYWNoZV9hbGxvY19ub2RlX3RyYWNlKHN0cnVjdCBrbWVtX2NhY2hlICpzLAox NDQ3NDogICAgICAgICAgZ2ZwX3QgZ2ZwZmxhZ3MsCjE0NDc0OiAgICAgICAgICBpbnQgbm9kZSwg c2l6ZV90IHNpemUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGttZW1fY2FjaGVfYWxsb2NfdHJh Y2UocywgZ2ZwZmxhZ3MsIHNpemUpOwoxNDQ3NDogfQoxNDQ3NDogIyA0NjkgIi4vaW5jbHVkZS9s aW51eC9zbGFiLmgiCjE0NDc0OiBleHRlcm4gdm9pZCAqa21hbGxvY19vcmRlcihzaXplX3Qgc2l6 ZSwgZ2ZwX3QgZmxhZ3MsIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygoX19hc3N1 bWVfYWxpZ25lZF9fKCgoMVVMKSA8PCAxMikpKSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkICprbWFsbG9jX29yZGVyX3RyYWNl KHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgdW5zaWduZWQgaW50IG9yZGVyKSBfX2F0dHJpYnV0 ZV9fKChfX2Fzc3VtZV9hbGlnbmVkX18oKCgxVUwpIDw8IDEyKSkpKSBfX2F0dHJpYnV0ZV9fKChf X21hbGxvY19fKSk7CjE0NDc0OiAjIDQ4MSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCAqa21hbGxvY19sYXJnZShz aXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgaW50IG9y ZGVyID0gZ2V0X29yZGVyKHNpemUpOwoxNDQ3NDogIHJldHVybiBrbWFsbG9jX29yZGVyX3RyYWNl KHNpemUsIGZsYWdzLCBvcmRlcik7CjE0NDc0OiB9CjE0NDc0OiAjIDU0MSAiLi9pbmNsdWRlL2xp bnV4L3NsYWIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCAqa21hbGxvYyhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgaWYg KF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKSB7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQg aW50IGluZGV4OwoxNDQ3NDogCjE0NDc0OiAgIGlmIChzaXplID4gKDFVTCA8PCAoKDExICsgMTIg LSAxKSA8PSAyNSA/ICgxMSArIDEyIC0gMSkgOiAyNSkpKQoxNDQ3NDogICAgcmV0dXJuIGttYWxs b2NfbGFyZ2Uoc2l6ZSwgZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAgIGluZGV4ID0ga21hbGxvY19p bmRleChzaXplKTsKMTQ0NzQ6IAoxNDQ3NDogICBpZiAoIWluZGV4KQoxNDQ3NDogICAgcmV0dXJu ICgodm9pZCAqKTE2KTsKMTQ0NzQ6IAoxNDQ3NDogICByZXR1cm4ga21lbV9jYWNoZV9hbGxvY190 cmFjZSgKMTQ0NzQ6ICAgICBrbWFsbG9jX2NhY2hlc1trbWFsbG9jX3R5cGUoZmxhZ3MpXVtpbmRl eF0sCjE0NDc0OiAgICAgZmxhZ3MsIHNpemUpOwoxNDQ3NDogCjE0NDc0OiAgfQoxNDQ3NDogIHJl dHVybiBfX2ttYWxsb2Moc2l6ZSwgZmxhZ3MpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKmttYWxsb2Nfbm9kZShzaXplX3Qg c2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgaWYg KF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpICYmCjE0NDc0OiAgIHNpemUgPD0gKDFVTCA8PCAo KDExICsgMTIgLSAxKSA8PSAyNSA/ICgxMSArIDEyIC0gMSkgOiAyNSkpKSB7CjE0NDc0OiAgIHVu c2lnbmVkIGludCBpID0ga21hbGxvY19pbmRleChzaXplKTsKMTQ0NzQ6IAoxNDQ3NDogICBpZiAo IWkpCjE0NDc0OiAgICByZXR1cm4gKCh2b2lkICopMTYpOwoxNDQ3NDogCjE0NDc0OiAgIHJldHVy biBrbWVtX2NhY2hlX2FsbG9jX25vZGVfdHJhY2UoCjE0NDc0OiAgICAga21hbGxvY19jYWNoZXNb a21hbGxvY190eXBlKGZsYWdzKV1baV0sCjE0NDc0OiAgICAgICBmbGFncywgbm9kZSwgc2l6ZSk7 CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIF9fa21hbGxvY19ub2RlKHNpemUsIGZs YWdzLCBub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogaW50IG1lbWNnX3VwZGF0ZV9hbGxf Y2FjaGVzKGludCBudW1fbWVtY2dzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa21hbGxvY19hcnJheShzaXplX3Qg biwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHNpemVfdCBieXRl czsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCh7IHR5cGVvZihuKSBf X2EgPSAobik7IHR5cGVvZihzaXplKSBfX2IgPSAoc2l6ZSk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9 ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBf X2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSksIDApKQoxNDQ3NDogICBy ZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pICYm IF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKQoxNDQ3NDogICByZXR1cm4ga21hbGxvYyhieXRl cywgZmxhZ3MpOwoxNDQ3NDogIHJldHVybiBfX2ttYWxsb2MoYnl0ZXMsIGZsYWdzKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCAqa2NhbGxvYyhzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdz KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrbWFsbG9jX2FycmF5KG4sIHNpemUsIGZsYWdzIHwg KCggZ2ZwX3QpMHgxMDB1KSk7CjE0NDc0OiB9CjE0NDc0OiAjIDYxOSAiLi9pbmNsdWRlL2xpbnV4 L3NsYWIuaCIKMTQ0NzQ6IGV4dGVybiB2b2lkICpfX2ttYWxsb2NfdHJhY2tfY2FsbGVyKHNpemVf dCwgZ2ZwX3QsIHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCAqa21hbGxvY19hcnJheV9ub2RlKHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxh Z3MsCjE0NDc0OiAgICAgICAgICAgIGludCBub2RlKQoxNDQ3NDogewoxNDQ3NDogIHNpemVfdCBi eXRlczsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCh7IHR5cGVvZihu KSBfX2EgPSAobik7IHR5cGVvZihzaXplKSBfX2IgPSAoc2l6ZSk7IHR5cGVvZigmYnl0ZXMpIF9f ZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2Qp OyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSksIDApKQoxNDQ3NDog ICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG4p ICYmIF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKQoxNDQ3NDogICByZXR1cm4ga21hbGxvY19u b2RlKGJ5dGVzLCBmbGFncywgbm9kZSk7CjE0NDc0OiAgcmV0dXJuIF9fa21hbGxvY19ub2RlKGJ5 dGVzLCBmbGFncywgbm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmtjYWxsb2Nf bm9kZShzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4ga21hbGxvY19hcnJheV9ub2RlKG4sIHNpemUsIGZsYWdzIHwgKCgg Z2ZwX3QpMHgxMDB1KSwgbm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDY1NyAiLi9pbmNsdWRlL2xp bnV4L3NsYWIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmttZW1fY2FjaGVfemFsbG9jKHN0cnVjdCBrbWVtX2Nh Y2hlICprLCBnZnBfdCBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga21lbV9jYWNoZV9h bGxvYyhrLCBmbGFncyB8ICgoIGdmcF90KTB4MTAwdSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa3phbGxvYyhz aXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGttYWxsb2Mo c2l6ZSwgZmxhZ3MgfCAoKCBnZnBfdCkweDEwMHUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa3ph bGxvY19ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5vZGUpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGttYWxsb2Nfbm9kZShzaXplLCBmbGFncyB8ICgoIGdmcF90KTB4MTAwdSks IG5vZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBpbnQga21lbV9jYWNoZV9z aXplKHN0cnVjdCBrbWVtX2NhY2hlICpzKTsKMTQ0NzQ6IHZvaWQgX19hdHRyaWJ1dGVfXygoX19z ZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkga21lbV9j YWNoZV9pbml0X2xhdGUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogaW50IHNsYWJfcHJl cGFyZV9jcHUodW5zaWduZWQgaW50IGNwdSk7CjE0NDc0OiBpbnQgc2xhYl9kZWFkX2NwdSh1bnNp Z25lZCBpbnQgY3B1KTsKMTQ0NzQ6ICMgMzQgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9vc190eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiIDEKMTQ0NzQ6ICMgMzEgIi4vaW5jbHVk ZS9kcm0vZHJtX3ByaW50LmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zZXFfZmlsZS5o IiAxCjE0NDc0OiAjIDExICIuL2luY2x1ZGUvbGludXgvc2VxX2ZpbGUuaCIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L2ZzLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIiAxCjE0NDc0OiAj IDEwICIuL2luY2x1ZGUvbGludXgvd2FpdF9iaXQuaCIKMTQ0NzQ6IHN0cnVjdCB3YWl0X2JpdF9r ZXkgewoxNDQ3NDogIHZvaWQgKmZsYWdzOwoxNDQ3NDogIGludCBiaXRfbnI7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyB0aW1lb3V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHdhaXRf Yml0X3F1ZXVlX2VudHJ5IHsKMTQ0NzQ6ICBzdHJ1Y3Qgd2FpdF9iaXRfa2V5IGtleTsKMTQ0NzQ6 ICBzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSB3cV9lbnRyeTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgaW50IHdhaXRfYml0X2FjdGlvbl9m KHN0cnVjdCB3YWl0X2JpdF9rZXkgKmtleSwgaW50IG1vZGUpOwoxNDQ3NDogCjE0NDc0OiB2b2lk IF9fd2FrZV91cF9iaXQoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgdm9pZCAqd29y ZCwgaW50IGJpdCk7CjE0NDc0OiBpbnQgX193YWl0X29uX2JpdChzdHJ1Y3Qgd2FpdF9xdWV1ZV9o ZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9iaXRfcXVldWVfZW50cnkgKndicV9lbnRyeSwgd2Fp dF9iaXRfYWN0aW9uX2YgKmFjdGlvbiwgdW5zaWduZWQgaW50IG1vZGUpOwoxNDQ3NDogaW50IF9f d2FpdF9vbl9iaXRfbG9jayhzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qg d2FpdF9iaXRfcXVldWVfZW50cnkgKndicV9lbnRyeSwgd2FpdF9iaXRfYWN0aW9uX2YgKmFjdGlv biwgdW5zaWduZWQgaW50IG1vZGUpOwoxNDQ3NDogdm9pZCB3YWtlX3VwX2JpdCh2b2lkICp3b3Jk LCBpbnQgYml0KTsKMTQ0NzQ6IGludCBvdXRfb2ZfbGluZV93YWl0X29uX2JpdCh2b2lkICp3b3Jk LCBpbnQsIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGludCBtb2RlKTsKMTQ0 NzQ6IGludCBvdXRfb2ZfbGluZV93YWl0X29uX2JpdF90aW1lb3V0KHZvaWQgKndvcmQsIGludCwg d2FpdF9iaXRfYWN0aW9uX2YgKmFjdGlvbiwgdW5zaWduZWQgaW50IG1vZGUsIHVuc2lnbmVkIGxv bmcgdGltZW91dCk7CjE0NDc0OiBpbnQgb3V0X29mX2xpbmVfd2FpdF9vbl9iaXRfbG9jayh2b2lk ICp3b3JkLCBpbnQsIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGludCBtb2Rl KTsKMTQ0NzQ6IHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKmJpdF93YWl0cXVldWUodm9pZCAqd29y ZCwgaW50IGJpdCk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25f XygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSB3YWl0X2JpdF9pbml0 KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBpbnQgd2FrZV9iaXRfZnVuY3Rpb24oc3RydWN0IHdhaXRf cXVldWVfZW50cnkgKndxX2VudHJ5LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdm9pZCAqa2V5 KTsKMTQ0NzQ6ICMgNDkgIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIgoxNDQ3NDogZXh0ZXJu IGludCBiaXRfd2FpdChzdHJ1Y3Qgd2FpdF9iaXRfa2V5ICprZXksIGludCBtb2RlKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgYml0X3dhaXRfaW8oc3RydWN0IHdhaXRfYml0X2tleSAqa2V5LCBpbnQgbW9k ZSk7CjE0NDc0OiBleHRlcm4gaW50IGJpdF93YWl0X3RpbWVvdXQoc3RydWN0IHdhaXRfYml0X2tl eSAqa2V5LCBpbnQgbW9kZSk7CjE0NDc0OiBleHRlcm4gaW50IGJpdF93YWl0X2lvX3RpbWVvdXQo c3RydWN0IHdhaXRfYml0X2tleSAqa2V5LCBpbnQgbW9kZSk7CjE0NDc0OiAjIDcwICIuL2luY2x1 ZGUvbGludXgvd2FpdF9iaXQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogd2FpdF9vbl9iaXQodW5zaWdu ZWQgbG9uZyAqd29yZCwgaW50IGJpdCwgdW5zaWduZWQgbW9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBk byB7IGRvIHsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGlmICghdGVzdF9iaXQo Yml0LCB3b3JkKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgcmV0dXJuIG91dF9vZl9saW5l X3dhaXRfb25fYml0KHdvcmQsIGJpdCwKMTQ0NzQ6ICAgICAgICAgICAgYml0X3dhaXQsCjE0NDc0 OiAgICAgICAgICAgIG1vZGUpOwoxNDQ3NDogfQoxNDQ3NDogIyA5NSAiLi9pbmNsdWRlL2xpbnV4 L3dhaXRfYml0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IHdhaXRfb25fYml0X2lvKHVuc2lnbmVkIGxv bmcgKndvcmQsIGludCBiaXQsIHVuc2lnbmVkIG1vZGUpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBk byB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBpZiAoIXRlc3RfYml0KGJpdCwg d29yZCkpCjE0NDc0OiAgIHJldHVybiAwOwoxNDQ3NDogIHJldHVybiBvdXRfb2ZfbGluZV93YWl0 X29uX2JpdCh3b3JkLCBiaXQsCjE0NDc0OiAgICAgICAgICAgIGJpdF93YWl0X2lvLAoxNDQ3NDog ICAgICAgICAgICBtb2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTIxICIuL2luY2x1ZGUvbGludXgv d2FpdF9iaXQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogd2FpdF9vbl9iaXRfdGltZW91dCh1bnNpZ25l ZCBsb25nICp3b3JkLCBpbnQgYml0LCB1bnNpZ25lZCBtb2RlLAoxNDQ3NDogICAgICAgdW5zaWdu ZWQgbG9uZyB0aW1lb3V0KQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyB9IHdoaWxlICgwKTsg fSB3aGlsZSAoMCk7CjE0NDc0OiAgaWYgKCF0ZXN0X2JpdChiaXQsIHdvcmQpKQoxNDQ3NDogICBy ZXR1cm4gMDsKMTQ0NzQ6ICByZXR1cm4gb3V0X29mX2xpbmVfd2FpdF9vbl9iaXRfdGltZW91dCh3 b3JkLCBiaXQsCjE0NDc0OiAgICAgICAgICAgICBiaXRfd2FpdF90aW1lb3V0LAoxNDQ3NDogICAg ICAgICAgICAgbW9kZSwgdGltZW91dCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE0OSAiLi9pbmNsdWRl L2xpbnV4L3dhaXRfYml0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKMTQ0NzQ6IHdhaXRfb25fYml0X2FjdGlvbih1 bnNpZ25lZCBsb25nICp3b3JkLCBpbnQgYml0LCB3YWl0X2JpdF9hY3Rpb25fZiAqYWN0aW9uLAox NDQ3NDogICAgICB1bnNpZ25lZCBtb2RlKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgaWYgKCF0ZXN0X2JpdChiaXQsIHdvcmQpKQox NDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6ICByZXR1cm4gb3V0X29mX2xpbmVfd2FpdF9vbl9iaXQo d29yZCwgYml0LCBhY3Rpb24sIG1vZGUpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNzggIi4vaW5jbHVk ZS9saW51eC93YWl0X2JpdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CjE0NDc0OiB3YWl0X29uX2JpdF9sb2NrKHVu c2lnbmVkIGxvbmcgKndvcmQsIGludCBiaXQsIHVuc2lnbmVkIG1vZGUpCjE0NDc0OiB7CjE0NDc0 OiAgZG8geyBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBpZiAoIXRlc3Rf YW5kX3NldF9iaXQoYml0LCB3b3JkKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgcmV0dXJu IG91dF9vZl9saW5lX3dhaXRfb25fYml0X2xvY2sod29yZCwgYml0LCBiaXRfd2FpdCwgbW9kZSk7 CjE0NDc0OiB9CjE0NDc0OiAjIDIwMiAiLi9pbmNsdWRlL2xpbnV4L3dhaXRfYml0LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQKMTQ0NzQ6IHdhaXRfb25fYml0X2xvY2tfaW8odW5zaWduZWQgbG9uZyAqd29yZCwgaW50 IGJpdCwgdW5zaWduZWQgbW9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IGRvIHsgfSB3aGlsZSAo MCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGlmICghdGVzdF9hbmRfc2V0X2JpdChiaXQsIHdvcmQp KQoxNDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6ICByZXR1cm4gb3V0X29mX2xpbmVfd2FpdF9vbl9i aXRfbG9jayh3b3JkLCBiaXQsIGJpdF93YWl0X2lvLCBtb2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MjI4ICIuL2luY2x1ZGUvbGludXgvd2FpdF9iaXQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAoxNDQ3NDogd2FpdF9v bl9iaXRfbG9ja19hY3Rpb24odW5zaWduZWQgbG9uZyAqd29yZCwgaW50IGJpdCwgd2FpdF9iaXRf YWN0aW9uX2YgKmFjdGlvbiwKMTQ0NzQ6ICAgIHVuc2lnbmVkIG1vZGUpCjE0NDc0OiB7CjE0NDc0 OiAgZG8geyBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBpZiAoIXRlc3Rf YW5kX3NldF9iaXQoYml0LCB3b3JkKSkKMTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgcmV0dXJu IG91dF9vZl9saW5lX3dhaXRfb25fYml0X2xvY2sod29yZCwgYml0LCBhY3Rpb24sIG1vZGUpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBpbml0X3dhaXRfdmFyX2VudHJ5KHN0 cnVjdCB3YWl0X2JpdF9xdWV1ZV9lbnRyeSAqd2JxX2VudHJ5LCB2b2lkICp2YXIsIGludCBmbGFn cyk7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWtlX3VwX3Zhcih2b2lkICp2YXIpOwoxNDQ3NDogZXh0 ZXJuIHdhaXRfcXVldWVfaGVhZF90ICpfX3Zhcl93YWl0cXVldWUodm9pZCAqcCk7CjE0NDc0OiAj IDMzMCAiLi9pbmNsdWRlL2xpbnV4L3dhaXRfYml0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNsZWFyX2FuZF93 YWtlX3VwX2JpdChpbnQgYml0LCB2b2lkICp3b3JkKQoxNDQ3NDogewoxNDQ3NDogIGNsZWFyX2Jp dF91bmxvY2soYml0LCB3b3JkKTsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAgd2FrZV91cF9iaXQod29yZCwgYml0KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNyAiLi9pbmNs dWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2tkZXZfdC5oIiAx CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3Vh cGkvbGludXgva2Rldl90LmgiIDEKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2xpbnV4L2tkZXZfdC5o IiAyCjE0NDc0OiAjIDI0ICIuL2luY2x1ZGUvbGludXgva2Rldl90LmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG9s ZF92YWxpZF9kZXYoZGV2X3QgZGV2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKHVuc2lnbmVk IGludCkgKChkZXYpID4+IDIwKSkgPCAyNTYgJiYgKCh1bnNpZ25lZCBpbnQpICgoZGV2KSAmICgo MVUgPDwgMjApIC0gMSkpKSA8IDI1NjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTE2IG9sZF9l bmNvZGVfZGV2KGRldl90IGRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCgodW5zaWduZWQg aW50KSAoKGRldikgPj4gMjApKSA8PCA4KSB8ICgodW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFV IDw8IDIwKSAtIDEpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGRldl90IG9sZF9kZWNvZGVf ZGV2KHUxNiB2YWwpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoKCh2YWwgPj4gOCkgJiAyNTUp IDw8IDIwKSB8ICh2YWwgJiAyNTUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIG5ld19l bmNvZGVfZGV2KGRldl90IGRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBtYWpvciA9ICgo dW5zaWduZWQgaW50KSAoKGRldikgPj4gMjApKTsKMTQ0NzQ6ICB1bnNpZ25lZCBtaW5vciA9ICgo dW5zaWduZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDIwKSAtIDEpKSk7CjE0NDc0OiAgcmV0dXJu IChtaW5vciAmIDB4ZmYpIHwgKG1ham9yIDw8IDgpIHwgKChtaW5vciAmIH4weGZmKSA8PCAxMik7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGRldl90IG5ld19kZWNvZGVfZGV2KHUzMiBkZXYpCjE0 NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbWFqb3IgPSAoZGV2ICYgMHhmZmYwMCkgPj4gODsKMTQ0 NzQ6ICB1bnNpZ25lZCBtaW5vciA9IChkZXYgJiAweGZmKSB8ICgoZGV2ID4+IDEyKSAmIDB4ZmZm MDApOwoxNDQ3NDogIHJldHVybiAoKChtYWpvcikgPDwgMjApIHwgKG1pbm9yKSk7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHU2NCBodWdlX2VuY29kZV9kZXYoZGV2X3QgZGV2KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBuZXdfZW5jb2RlX2RldihkZXYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBkZXZfdCBodWdlX2RlY29kZV9kZXYodTY0IGRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g bmV3X2RlY29kZV9kZXYoZGV2KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN5c3ZfdmFs aWRfZGV2KGRldl90IGRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh1bnNpZ25lZCBpbnQp ICgoZGV2KSA+PiAyMCkpIDwgKDE8PDE0KSAmJiAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgx VSA8PCAyMCkgLSAxKSkpIDwgKDE8PDE4KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIHN5 c3ZfZW5jb2RlX2RldihkZXZfdCBkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgodW5zaWdu ZWQgaW50KSAoKGRldikgJiAoKDFVIDw8IDIwKSAtIDEpKSkgfCAoKCh1bnNpZ25lZCBpbnQpICgo ZGV2KSA+PiAyMCkpIDw8IDE4KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgc3lz dl9tYWpvcih1MzIgZGV2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoZGV2ID4+IDE4KSAmIDB4 M2ZmZjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgc3lzdl9taW5vcih1MzIgZGV2 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkZXYgJiAweDNmZmZmOwoxNDQ3NDogfQoxNDQ3NDog IyA4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv ZGNhY2hlLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIgMQoxNDQ3NDogIyAzMSAi Li9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgSU5JVF9MSVNUX0hFQURfUkNV KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCjE0NDc0OiB7CjE0NDc0OiAgKHsgdW5pb24geyB0eXBl b2YobGlzdC0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0 eXBlb2YobGlzdC0+bmV4dCkpIChsaXN0KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKGxpc3QtPm5l eHQpLCBfX3UuX19jLCBzaXplb2YobGlzdC0+bmV4dCkpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDog ICh7IHVuaW9uIHsgdHlwZW9mKGxpc3QtPnByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3Ug PSB7IC5fX3ZhbCA9ICggdHlwZW9mKGxpc3QtPnByZXYpKSAobGlzdCkgfTsgX193cml0ZV9vbmNl X3NpemUoJihsaXN0LT5wcmV2KSwgX191Ll9fYywgc2l6ZW9mKGxpc3QtPnByZXYpKTsgX191Ll9f dmFsOyB9KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzcgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0Lmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fbGlzdF9hZGRfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKm5ldywKMTQ0NzQ6 ICAgc3RydWN0IGxpc3RfaGVhZCAqcHJldiwgc3RydWN0IGxpc3RfaGVhZCAqbmV4dCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBpZiAoIV9fbGlzdF9hZGRfdmFsaWQobmV3LCBwcmV2LCBuZXh0KSkKMTQ0NzQ6 ICAgcmV0dXJuOwoxNDQ3NDogCjE0NDc0OiAgbmV3LT5uZXh0ID0gbmV4dDsKMTQ0NzQ6ICBuZXct PnByZXYgPSBwcmV2OwoxNDQ3NDogIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1aW50cHRy X3QpKG5ldyk7IDsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG5ldykgJiYgKF9yX2FfcF9fdikg PT0gKHVpbnRwdHJfdCkoKHZvaWQgKikwKSkgKHsgdW5pb24geyB0eXBlb2YoKCgqKChzdHJ1Y3Qg bGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYp LT5uZXh0KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5u ZXh0KSkpKSkoX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigoKCooKHN0cnVjdCBs aXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9mKCgoKigoc3Ry dWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpKTsgX191Ll9fdmFsOyB9KTsgZWxz ZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfODUodm9pZCkgX19h dHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2Fk cyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVh ZCAqKikoJihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJigqKChz dHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2Yoc2hvcnQpIHx8 IHNpemVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSA9PSBz aXplb2YoaW50KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+ bmV4dCkpKSkgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0Xzg1KCk7IH0g d2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlv biB7IHR5cGVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJigqKChzdHJ1 Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgq KChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSAqKSgo dHlwZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9hX3Bf X3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYo cHJldiktPm5leHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihwcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGls ZSAoMCk7CjE0NDc0OiAgbmV4dC0+cHJldiA9IG5ldzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTA1ICIu L2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X2FkZF9yY3Uoc3RydWN0 IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDog IF9fbGlzdF9hZGRfcmN1KG5ldywgaGVhZCwgaGVhZC0+bmV4dCk7CjE0NDc0OiB9CjE0NDc0OiAj IDEyNiAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9hZGRfdGFp bF9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqbmV3LAoxNDQ3NDogICAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpoZWFkKQoxNDQ3NDogewoxNDQ3NDogIF9fbGlzdF9hZGRfcmN1KG5ldywgaGVhZC0+cHJldiwg aGVhZCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE1NiAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgbGlzdF9kZWxfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5KQoxNDQ3NDog ewoxNDQ3NDogIF9fbGlzdF9kZWxfZW50cnkoZW50cnkpOwoxNDQ3NDogIGVudHJ5LT5wcmV2ID0g KCh2b2lkICopIDB4MTIyICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSk7CjE0NDc0OiB9CjE0NDc0 OiAjIDE4MiAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfZGVs X2luaXRfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIGlmICghaGxp c3RfdW5oYXNoZWQobikpIHsKMTQ0NzQ6ICAgX19obGlzdF9kZWwobik7CjE0NDc0OiAgICh7IHVu aW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192 YWwgPSAoIHR5cGVvZihuLT5wcHJldikpICgoKHZvaWQgKikwKSkgfTsgX193cml0ZV9vbmNlX3Np emUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0p OwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTk4ICIuL2luY2x1ZGUvbGludXgvcmN1bGlz dC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3JlcGxhY2VfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKm9sZCwK MTQ0NzQ6ICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXcpCjE0NDc0OiB7CjE0NDc0OiAgbmV3LT5u ZXh0ID0gb2xkLT5uZXh0OwoxNDQ3NDogIG5ldy0+cHJldiA9IG9sZC0+cHJldjsKMTQ0NzQ6ICBk byB7IHVpbnRwdHJfdCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuZXcpOyA7IGlmIChfX2J1aWx0 aW5fY29uc3RhbnRfcChuZXcpICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICop MCkpICh7IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnBy ZXYpLT5uZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0 eXBlb2YoKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKSkg KCh0eXBlb2YoKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2KS0+bmV4dCkpKSkp KF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgqKChzdHJ1Y3QgbGlzdF9oZWFk ICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9mKCgoKigoc3RydWN0 IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSkpOyBfX3UuX192YWw7IH0pOyBl bHNlIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8yMDModm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9s b2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiYoKigoc3RydWN0IGxpc3Rf aGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9m KComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2KS0+bmV4dCkpKSkgPT0gc2l6 ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnBy ZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3Rf aGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21w aWxldGltZV9hc3NlcnRfMjAzKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFk ICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7 IC5fX3ZhbCA9ICggdHlwZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2 KS0+bmV4dCkpKSkpICgodHlwZW9mKCooKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKiko JihuZXctPnByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSAqKSgodHlwZW9mKCgqKChzdHJ1Y3Qg bGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKV9yX2FfcF9fdikpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5u ZXh0KSkpKSwgX191Ll9fYywgc2l6ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3 LT5wcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgbmV3LT5uZXh0LT5wcmV2ID0gbmV3OwoxNDQ3NDogIG9sZC0+cHJldiA9ICgo dm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwoxNDQ3NDogfQoxNDQ3NDog IyAyMjcgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9zcGxp Y2VfaW5pdF9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICpwcmV2LAoxNDQ3NDogICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQsCjE0 NDc0OiAgICAgICAgdm9pZCAoKnN5bmMpKHZvaWQpKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBs aXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkICps YXN0ID0gbGlzdC0+cHJldjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIElOSVRfTElTVF9IRUFEX1JDVShsaXN0KTsKMTQ0NzQ6 ICMgMjUwICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgoxNDQ3NDogIHN5bmMoKTsKMTQ0NzQ6 ICMgMjYwICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgoxNDQ3NDogIGxhc3QtPm5leHQgPSBu ZXh0OwoxNDQ3NDogIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1aW50cHRyX3QpKGZpcnN0 KTsgOyBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoZmlyc3QpICYmIChfcl9hX3BfX3YpID09ICh1 aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGxpc3Rf aGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7 IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4 dCkpKSkpKSAoKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkp KSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgqKChzdHJ1Y3QgbGlzdF9o ZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSksIF9fdS5fX2MsIHNpemVvZigoKCooKHN0cnVjdCBs aXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8g eyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI2MSh2b2lkKSBfX2F0dHJp YnV0ZV9fKChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZv ciBhdG9taWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoq KSgmKHByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKCooKHN0cnVj dCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihzaG9ydCkgfHwgc2l6 ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVv ZihpbnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0 KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfMjYxKCk7IH0gd2hp bGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7 IHR5cGVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJigqKChzdHJ1Y3Qg bGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgqKChz dHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSAqKSgodHlw ZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3Yp KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJl diktPm5leHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKiko JihwcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgZmlyc3QtPnByZXYgPSBwcmV2OwoxNDQ3NDogIG5leHQtPnByZXYgPSBsYXN0 OwoxNDQ3NDogfQoxNDQ3NDogIyAyNzMgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGxpc3Rfc3BsaWNlX2luaXRfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCjE0NDc0 OiAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCjE0NDc0OiAgICAgIHZvaWQgKCpzeW5jKSh2 b2lkKSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWxpc3RfZW1wdHkobGlzdCkpCjE0NDc0OiAgIF9f bGlzdF9zcGxpY2VfaW5pdF9yY3UobGlzdCwgaGVhZCwgaGVhZC0+bmV4dCwgc3luYyk7CjE0NDc0 OiB9CjE0NDc0OiAjIDI4OCAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg bGlzdF9zcGxpY2VfdGFpbF9pbml0X3JjdShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAoxNDQ3NDog ICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCjE0NDc0OiAgICAgICAgICAgdm9pZCAo KnN5bmMpKHZvaWQpKQoxNDQ3NDogewoxNDQ3NDogIGlmICghbGlzdF9lbXB0eShsaXN0KSkKMTQ0 NzQ6ICAgX19saXN0X3NwbGljZV9pbml0X3JjdShsaXN0LCBoZWFkLT5wcmV2LCBoZWFkLCBzeW5j KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDgzICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBobGlzdF9kZWxfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3 NDogIF9faGxpc3RfZGVsKG4pOwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5wcHJldikp ICgoKHZvaWQgKikgMHgxMjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwpKSkgfTsgX193cml0ZV9v bmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJldikpOyBfX3UuX192 YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA0OTYgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0Lmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGhsaXN0X3JlcGxhY2VfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpvbGQsCjE0 NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ub2RlICpuZXcpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0 IGhsaXN0X25vZGUgKm5leHQgPSBvbGQtPm5leHQ7CjE0NDc0OiAKMTQ0NzQ6ICBuZXctPm5leHQg PSBuZXh0OwoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKG5ldy0+cHByZXYpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG5ldy0+cHByZXYpKSAob2xkLT5w cHJldikgfTsgX193cml0ZV9vbmNlX3NpemUoJihuZXctPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9m KG5ldy0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICBkbyB7IHVpbnRwdHJfdCBfcl9h X3BfX3YgPSAodWludHB0cl90KShuZXcpOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuZXcp ICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlw ZW9mKCgqKHN0cnVjdCBobGlzdF9ub2RlICoqKW5ldy0+cHByZXYpKSBfX3ZhbDsgY2hhciBfX2Nb MV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigoKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKilu ZXctPnBwcmV2KSkpICgodHlwZW9mKCooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikp KF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCooc3RydWN0IGhsaXN0X25vZGUg KiopbmV3LT5wcHJldikpLCBfX3UuX19jLCBzaXplb2YoKCooc3RydWN0IGhsaXN0X25vZGUgKiop bmV3LT5wcHJldikpKTsgX191Ll9fdmFsOyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQg X19jb21waWxldGltZV9hc3NlcnRfNTAzKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygi TmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBp ZiAoISgoc2l6ZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSA9PSBzaXpl b2YoY2hhcikgfHwgc2l6ZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSA9 PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJiooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5w cHJldikgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKilu ZXctPnBwcmV2KSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfNTAzKCk7 IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1 bmlvbiB7IHR5cGVvZigqJiooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikgX192YWw7 IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYqKHN0cnVjdCBobGlz dF9ub2RlICoqKW5ldy0+cHByZXYpKSAoKHR5cGVvZigqKCh0eXBlb2YoKihzdHJ1Y3QgaGxpc3Rf bm9kZSAqKiluZXctPnBwcmV2KSlfcl9hX3BfX3YpKSAqKSgodHlwZW9mKCooc3RydWN0IGhsaXN0 X25vZGUgKiopbmV3LT5wcHJldikpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigq Jiooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldiksIF9fdS5fX2MsIHNpemVvZigqJioo c3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgaWYgKG5leHQpCjE0NDc0OiAgICh7IHVuaW9uIHsg dHlwZW9mKG5ldy0+bmV4dC0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5f X3ZhbCA9ICggdHlwZW9mKG5ldy0+bmV4dC0+cHByZXYpKSAoJm5ldy0+bmV4dCkgfTsgX193cml0 ZV9vbmNlX3NpemUoJihuZXctPm5leHQtPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG5ldy0+bmV4 dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZihvbGQt PnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihv bGQtPnBwcmV2KSkgKCgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpKSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG9sZC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yob2xkLT5w cHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyA1MzUgIi4vaW5jbHVkZS9s aW51eC9yY3VsaXN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2FkZF9oZWFkX3JjdShzdHJ1Y3QgaGxp c3Rfbm9kZSAqbiwKMTQ0NzQ6ICAgICAgc3RydWN0IGhsaXN0X2hlYWQgKmgpCjE0NDc0OiB7CjE0 NDc0OiAgc3RydWN0IGhsaXN0X25vZGUgKmZpcnN0ID0gaC0+Zmlyc3Q7CjE0NDc0OiAKMTQ0NzQ6 ICBuLT5uZXh0ID0gZmlyc3Q7CjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2Yobi0+cHByZXYpIF9f dmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPnBwcmV2KSkg KCZoLT5maXJzdCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNp emVvZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogIGRvIHsgdWludHB0cl90IF9y X2FfcF9fdiA9ICh1aW50cHRyX3QpKG4pOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuKSAm JiAoX3JfYV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAqKTApKSAoeyB1bmlvbiB7IHR5cGVv ZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0IGhsaXN0X25v ZGUgKiopKCYoaCktPmZpcnN0KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAq KikoJihoKS0+Zmlyc3QpKSkpKShfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCgo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0KSkpKSksIF9fdS5fX2MsIHNpemVv ZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkpKTsgX191Ll9fdmFs OyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfNTQy KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBz dG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKCooKHN0cnVj dCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVv ZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpID09IHNpemVvZihz aG9ydCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkp KSkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgm KGgpLT5maXJzdCkpKSkgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzU0 MigpOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsg KHsgdW5pb24geyB0eXBlb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0 KSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJigq KChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpKSAoKHR5cGVvZigqKCh0eXBl b2YoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkpX3JfYV9wX192KSkg KikoKHR5cGVvZigoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0KSkpKSlfcl9h X3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoq KSgmKGgpLT5maXJzdCkpKSksIF9fdS5fX2MsIHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9k ZSAqKikoJihoKS0+Zmlyc3QpKSkpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7IH0gd2hp bGUgKDApOwoxNDQ3NDogIGlmIChmaXJzdCkKMTQ0NzQ6ICAgKHsgdW5pb24geyB0eXBlb2YoZmly c3QtPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZihmaXJzdC0+cHByZXYpKSAoJm4tPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoZmlyc3Qt PnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKGZpcnN0LT5wcHJldikpOyBfX3UuX192YWw7IH0pOwox NDQ3NDogfQoxNDQ3NDogIyA1NjYgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGhsaXN0X2FkZF90YWlsX3JjdShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwKMTQ0NzQ6ICAgICAg ICAgICBzdHJ1Y3QgaGxpc3RfaGVhZCAqaCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rf bm9kZSAqaSwgKmxhc3QgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZm9y IChpID0gaC0+Zmlyc3Q7IGk7IGkgPSBpLT5uZXh0KQoxNDQ3NDogICBsYXN0ID0gaTsKMTQ0NzQ6 IAoxNDQ3NDogIGlmIChsYXN0KSB7CjE0NDc0OiAgIG4tPm5leHQgPSBsYXN0LT5uZXh0OwoxNDQ3 NDogICAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYpKSAoJmxhc3QtPm5leHQpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYobi0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yobi0+cHByZXYpKTsgX191 Ll9fdmFsOyB9KTsKMTQ0NzQ6ICAgZG8geyB1aW50cHRyX3QgX3JfYV9wX192ID0gKHVpbnRwdHJf dCkobik7IDsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pICYmIChfcl9hX3BfX3YpID09ICh1 aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGhsaXN0 X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0g eyAuX192YWwgPSAoIHR5cGVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5u ZXh0KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4 dCkpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgqKChzdHJ1Y3QgaGxp c3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkpLCBfX3UuX19jLCBzaXplb2YoKCgqKChzdHJ1 Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkpKTsgX191Ll9fdmFsOyB9KTsgZWxz ZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfNTc4KHZvaWQpIF9f YXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9h ZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9u b2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKCoo KHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSA9PSBzaXplb2Yoc2hvcnQp IHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkg PT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxh c3QpLT5uZXh0KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfNTc4 KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAo eyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4 dCkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpKSAoKHR5cGVvZigqKCh0 eXBlb2YoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSlfcl9hX3Bf X3YpKSAqKSgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkp KSkpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJigqKChzdHJ1Y3QgaGxpc3Rf bm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSksIF9fdS5fX2MsIHNpemVvZigqJigqKChzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgaGxpc3RfYWRkX2hl YWRfcmN1KG4sIGgpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjAyICIuL2luY2x1ZGUv bGludXgvcmN1bGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9hZGRfYmVmb3JlX3JjdShzdHJ1Y3Qg aGxpc3Rfbm9kZSAqbiwKMTQ0NzQ6ICAgICAgc3RydWN0IGhsaXN0X25vZGUgKm5leHQpCjE0NDc0 OiB7CjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2Yobi0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPnBwcmV2KSkgKG5leHQtPnBwcmV2KSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG4tPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG4tPnBwcmV2 KSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiAgbi0+bmV4dCA9IG5leHQ7CjE0NDc0OiAgZG8geyB1 aW50cHRyX3QgX3JfYV9wX192ID0gKHVpbnRwdHJfdCkobik7IDsgaWYgKF9fYnVpbHRpbl9jb25z dGFudF9wKG4pICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVu aW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKChuKS0+cHByZXYpKSkpKSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigoKCooKHN0cnVj dCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3QgaGxp c3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9z aXplKCYoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpLCBfX3UuX19j LCBzaXplb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpKTsgX191 Ll9fdmFsOyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3Nl cnRfNjA3KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBz aXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKCoo KHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSA9PSBzaXplb2YoY2hhcikgfHwg c2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSA9PSBzaXpl b2Yoc2hvcnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJl dikpKSkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoq KSgobiktPnBwcmV2KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRf NjA3KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJl dikpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKChuKS0+cHByZXYpKSkpKSAoKHR5cGVvZigqKCh0eXBl b2YoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSlfcl9hX3BfX3YpKSAq KSgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpX3JfYV9w X192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiko KG4pLT5wcHJldikpKSksIF9fdS5fX2MsIHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAq KikoKG4pLT5wcHJldikpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAo MCk7CjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2YobmV4dC0+cHByZXYpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG5leHQtPnBwcmV2KSkgKCZuLT5uZXh0 KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG5leHQtPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG5l eHQtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDYyOSAiLi9pbmNs dWRlL2xpbnV4L3JjdWxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfYWRkX2JlaGluZF9yY3Uoc3Ry dWN0IGhsaXN0X25vZGUgKm4sCjE0NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ub2RlICpwcmV2KQox NDQ3NDogewoxNDQ3NDogIG4tPm5leHQgPSBwcmV2LT5uZXh0OwoxNDQ3NDogICh7IHVuaW9uIHsg dHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAo IHR5cGVvZihuLT5wcHJldikpICgmcHJldi0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihu LT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0pOwoxNDQ3 NDogIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1aW50cHRyX3QpKG4pOyA7IGlmIChfX2J1 aWx0aW5fY29uc3RhbnRfcChuKSAmJiAoX3JfYV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAq KTApKSAoeyB1bmlvbiB7IHR5cGVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKHByZXYp LT5uZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBl b2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkpKSAoKHR5cGVv ZigoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpKShfcl9hX3BfX3Yp KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJl diktPm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9mKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiop KCYocHJldiktPm5leHQpKSkpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVy biB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzYzNCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vy cm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHku IikpKTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+ bmV4dCkpKSkgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9k ZSAqKikoJihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigo c3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihpbnQpIHx8 IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkgPT0g c2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzYzNCgpOyB9IHdoaWxlICgwKTsg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0eXBlb2Yo KiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKComKCooKHN0cnVjdCBobGlzdF9u b2RlICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgqKChzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkpX3JfYV9wX192KSkgKikoKHR5cGVvZigo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpKV9yX2FfcF9fdikpIH07 IF9fd3JpdGVfb25jZV9zaXplKCYoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldikt Pm5leHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYo cHJldiktPm5leHQpKSkpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDAp OwoxNDQ3NDogIGlmIChuLT5uZXh0KQoxNDQ3NDogICAoeyB1bmlvbiB7IHR5cGVvZihuLT5uZXh0 LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo bi0+bmV4dC0+cHByZXYpKSAoJm4tPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+bmV4 dC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yobi0+bmV4dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9 KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0X2JsLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvbGlzdF9ibC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvYml0X3NwaW5sb2NrLmgiIDEKMTQ0NzQ6 ICMgMTYgIi4vaW5jbHVkZS9saW51eC9iaXRfc3BpbmxvY2suaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0X3Nw aW5fbG9jayhpbnQgYml0bnVtLCB1bnNpZ25lZCBsb25nICphZGRyKQoxNDQ3NDogewoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IAoxNDQ3NDogIHdo aWxlIChfX2J1aWx0aW5fZXhwZWN0KCEhKHRlc3RfYW5kX3NldF9iaXRfbG9jayhiaXRudW0sIGFk ZHIpKSwgMCkpIHsKMTQ0NzQ6ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki KTsKMTQ0NzQ6ICAgZG8gewoxNDQ3NDogICAgY3B1X3JlbGF4KCk7CjE0NDc0OiAgIH0gd2hpbGUg KHRlc3RfYml0KGJpdG51bSwgYWRkcikpOwoxNDQ3NDogICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogICh2b2lkKTA7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRfc3Bpbl90 cnlsb2NrKGludCBiaXRudW0sIHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IAoxNDQ3NDogIGlm IChfX2J1aWx0aW5fZXhwZWN0KCEhKHRlc3RfYW5kX3NldF9iaXRfbG9jayhiaXRudW0sIGFkZHIp KSwgMCkpIHsKMTQ0NzQ6ICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK MTQ0NzQ6ICAgcmV0dXJuIDA7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgKHZvaWQpMDsKMTQ0 NzQ6ICByZXR1cm4gMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBiaXRfc3Bpbl91bmxvY2soaW50IGJpdG51bSwgdW5zaWduZWQgbG9uZyAqYWRk cikKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGNsZWFy X2JpdF91bmxvY2soYml0bnVtLCBhZGRyKTsKMTQ0NzQ6IAoxNDQ3NDogIF9fYXNtX18gX192b2xh dGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgKHZvaWQpMDsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19i aXRfc3Bpbl91bmxvY2soaW50IGJpdG51bSwgdW5zaWduZWQgbG9uZyAqYWRkcikKMTQ0NzQ6IHsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fY2xlYXJfYml0X3VubG9j ayhiaXRudW0sIGFkZHIpOwoxNDQ3NDogCjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6 IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICAodm9pZCkwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgYml0X3NwaW5faXNfbG9ja2VkKGludCBiaXRudW0s IHVuc2lnbmVkIGxvbmcgKmFkZHIpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gdGVz dF9iaXQoYml0bnVtLCBhZGRyKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiB9CjE0NDc0OiAjIDcgIi4vaW5jbHVkZS9saW51eC9saXN0X2JsLmgiIDIKMTQ0 NzQ6ICMgMzQgIi4vaW5jbHVkZS9saW51eC9saXN0X2JsLmgiCjE0NDc0OiBzdHJ1Y3QgaGxpc3Rf YmxfaGVhZCB7CjE0NDc0OiAgc3RydWN0IGhsaXN0X2JsX25vZGUgKmZpcnN0OwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGhsaXN0X2JsX25vZGUgewoxNDQ3NDogIHN0cnVjdCBobGlz dF9ibF9ub2RlICpuZXh0LCAqKnBwcmV2OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgSU5JVF9ITElTVF9CTF9OT0RFKHN0cnVjdCBobGlzdF9ibF9ub2RlICpo KQoxNDQ3NDogewoxNDQ3NDogIGgtPm5leHQgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6ICBoLT5wcHJl diA9ICgodm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBobGlzdF9ibF91bmhhc2hlZChjb25zdCBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqaCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIWgtPnBwcmV2OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBz dHJ1Y3QgaGxpc3RfYmxfbm9kZSAqaGxpc3RfYmxfZmlyc3Qoc3RydWN0IGhsaXN0X2JsX2hlYWQg KmgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqKQoxNDQ3 NDogICAoKHVuc2lnbmVkIGxvbmcpaC0+Zmlyc3QgJiB+MVVMKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBobGlzdF9ibF9zZXRfZmlyc3Qoc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgsCjE0 NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ibF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKHVuc2lnbmVkIGxvbmcpbiAmIDFVTCksIDApKSBkbyB7 IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxu IiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFi IiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19l bnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQu b3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2xpc3Rf YmwuaCIpLCAiaSIgKDY2KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkp KTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9w c2VjdGlvblxuXHQiIDogOiAiaSIgKDE5KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBfX2J1aWx0 aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsK MTQ0NzQ6ICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCgodW5zaWduZWQgbG9uZyloLT5m aXJzdCAmIDFVTCkgIT0gMVVMKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUo IjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUs XCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1 Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6Zmls ZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIg Ilx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIg OiA6ICJpIiAoImluY2x1ZGUvbGludXgvbGlzdF9ibC5oIiksICJpIiAoNjcpLCAiaSIgKDApLCAi aSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20g dm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5c dCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjApKTsg fSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICA7CjE0NDc0OiAgaC0+Zmlyc3QgPSAoc3RydWN0IGhsaXN0X2JsX25vZGUgKikoKHVuc2lnbmVk IGxvbmcpbiB8IDFVTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaGxpc3RfYmxfZW1w dHkoY29uc3Qgc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu ICEoKHVuc2lnbmVkIGxvbmcpKHsgdW5pb24geyB0eXBlb2YoaC0+Zmlyc3QpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoaC0+Zmlyc3QpLCBfX3Uu X19jLCBzaXplb2YoaC0+Zmlyc3QpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJiho LT5maXJzdCksIF9fdS5fX2MsIHNpemVvZihoLT5maXJzdCkpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pICYgfjFVTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3Rf YmxfYWRkX2hlYWQoc3RydWN0IGhsaXN0X2JsX25vZGUgKm4sCjE0NDc0OiAgICAgIHN0cnVjdCBo bGlzdF9ibF9oZWFkICpoKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ibF9ub2RlICpm aXJzdCA9IGhsaXN0X2JsX2ZpcnN0KGgpOwoxNDQ3NDogCjE0NDc0OiAgbi0+bmV4dCA9IGZpcnN0 OwoxNDQ3NDogIGlmIChmaXJzdCkKMTQ0NzQ6ICAgZmlyc3QtPnBwcmV2ID0gJm4tPm5leHQ7CjE0 NDc0OiAgbi0+cHByZXYgPSAmaC0+Zmlyc3Q7CjE0NDc0OiAgaGxpc3RfYmxfc2V0X2ZpcnN0KGgs IG4pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX2FkZF9iZWZvcmUoc3Ry dWN0IGhsaXN0X2JsX25vZGUgKm4sCjE0NDc0OiAgICAgICAgICAgIHN0cnVjdCBobGlzdF9ibF9u b2RlICpuZXh0KQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBobGlzdF9ibF9ub2RlICoqcHByZXYg PSBuZXh0LT5wcHJldjsKMTQ0NzQ6IAoxNDQ3NDogIG4tPnBwcmV2ID0gcHByZXY7CjE0NDc0OiAg bi0+bmV4dCA9IG5leHQ7CjE0NDc0OiAgbmV4dC0+cHByZXYgPSAmbi0+bmV4dDsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgKHsgdW5pb24geyB0eXBlb2YoKnBwcmV2KSBfX3ZhbDsgY2hhciBfX2Nb MV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqcHByZXYpKSAoKHN0cnVjdCBobGlzdF9i bF9ub2RlICopICgodWludHB0cl90KW4gfCAoKHVpbnRwdHJfdCkqcHByZXYgJiAxVUwpKSkgfTsg X193cml0ZV9vbmNlX3NpemUoJigqcHByZXYpLCBfX3UuX19jLCBzaXplb2YoKnBwcmV2KSk7IF9f dS5fX3ZhbDsgfSkKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaGxpc3RfYmxfYWRkX2JlaGluZChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbiwKMTQ0NzQ6ICAg ICAgICAgICAgc3RydWN0IGhsaXN0X2JsX25vZGUgKnByZXYpCjE0NDc0OiB7CjE0NDc0OiAgbi0+ bmV4dCA9IHByZXYtPm5leHQ7CjE0NDc0OiAgbi0+cHByZXYgPSAmcHJldi0+bmV4dDsKMTQ0NzQ6 ICBwcmV2LT5uZXh0ID0gbjsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChuLT5uZXh0KQoxNDQ3NDogICBu LT5uZXh0LT5wcHJldiA9ICZuLT5uZXh0OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9f aGxpc3RfYmxfZGVsKHN0cnVjdCBobGlzdF9ibF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIHN0 cnVjdCBobGlzdF9ibF9ub2RlICpuZXh0ID0gbi0+bmV4dDsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rf Ymxfbm9kZSAqKnBwcmV2ID0gbi0+cHByZXY7CjE0NDc0OiAKMTQ0NzQ6ICBkbyB7IGlmIChfX2J1 aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBsb25nKW4gJiAxVUwpLCAwKSkgZG8geyBkbyB7IGFz bSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNo c2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJi IiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6Omxp bmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYisl YzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9saXN0X2JsLmgiKSwg ImkiICgxMjApLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdo aWxlICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5k aXNjYXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9u XG5cdCIgOiA6ICJpIiAoMjEpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJl YWNoYWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICAoeyB1bmlvbiB7IHR5cGVvZigqcHByZXYpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCpwcHJldikpICgoc3RydWN0IGhsaXN0 X2JsX25vZGUgKikgKCh1bnNpZ25lZCBsb25nKW5leHQgfCAoKHVuc2lnbmVkIGxvbmcpKnBwcmV2 ICYgMVVMKSkpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKnBwcmV2KSwgX191Ll9fYywgc2l6ZW9m KCpwcHJldikpOyBfX3UuX192YWw7IH0pCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogIGlmIChuZXh0 KQoxNDQ3NDogICBuZXh0LT5wcHJldiA9IHBwcmV2OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGhsaXN0X2JsX2RlbChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBfX2hsaXN0X2JsX2RlbChuKTsKMTQ0NzQ6ICBuLT5uZXh0ID0gKCh2b2lkICopIDB4MTAwICsg KDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSk7CjE0NDc0OiAgbi0+cHByZXYgPSAoKHZvaWQgKikgMHgx MjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBobGlzdF9ibF9kZWxfaW5pdChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKMTQ0NzQ6IHsKMTQ0 NzQ6ICBpZiAoIWhsaXN0X2JsX3VuaGFzaGVkKG4pKSB7CjE0NDc0OiAgIF9faGxpc3RfYmxfZGVs KG4pOwoxNDQ3NDogICBJTklUX0hMSVNUX0JMX05PREUobik7CjE0NDc0OiAgfQoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX2xvY2soc3RydWN0IGhsaXN0X2JsX2hlYWQgKmIp CjE0NDc0OiB7CjE0NDc0OiAgYml0X3NwaW5fbG9jaygwLCAodW5zaWduZWQgbG9uZyAqKWIpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX3VubG9jayhzdHJ1Y3QgaGxpc3Rf YmxfaGVhZCAqYikKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2JpdF9zcGluX3VubG9jaygwLCAodW5zaWdu ZWQgbG9uZyAqKWIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGhsaXN0X2JsX2lzX2xv Y2tlZChzdHJ1Y3QgaGxpc3RfYmxfaGVhZCAqYikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYml0 X3NwaW5faXNfbG9ja2VkKDAsICh1bnNpZ25lZCBsb25nICopYik7CjE0NDc0OiB9CjE0NDc0OiAj IDkgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0X2JsLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGhsaXN0X2JsX3NldF9maXJzdF9yY3Uoc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgsCjE0 NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ibF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKHVuc2lnbmVkIGxvbmcpbiAmIDFVTCksIDApKSBkbyB7 IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxu IiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFi IiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19l bnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQu b3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3JjdWxp c3RfYmwuaCIpLCAiaSIgKDE0KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRy eSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNo c2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIu cG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDIyKSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBfX2J1 aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgw KTsKMTQ0NzQ6ICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCgodW5zaWduZWQgbG9uZylo LT5maXJzdCAmIDFVTCkgIT0gMVVMKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRp bGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFi bGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6 OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6 ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVj MiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlv biIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvcmN1bGlzdF9ibC5oIiksICJpIiAoMTUpLCAiaSIg KDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAo eyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hh YmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAo MjMpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICA7CjE0NDc0OiAgZG8geyB1aW50cHRyX3QgX3JfYV9wX192ID0gKHVpbnRwdHJfdCko KHN0cnVjdCBobGlzdF9ibF9ub2RlICopKCh1bnNpZ25lZCBsb25nKW4gfCAxVUwpKTsgOyBpZiAo X19idWlsdGluX2NvbnN0YW50X3AoKHN0cnVjdCBobGlzdF9ibF9ub2RlICopKCh1bnNpZ25lZCBs b25nKW4gfCAxVUwpKSAmJiAoX3JfYV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAqKTApKSAo eyB1bmlvbiB7IHR5cGVvZigoaC0+Zmlyc3QpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0g eyAuX192YWwgPSAoIHR5cGVvZigoaC0+Zmlyc3QpKSkgKCh0eXBlb2YoaC0+Zmlyc3QpKShfcl9h X3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKChoLT5maXJzdCkpLCBfX3UuX19jLCBzaXpl b2YoKGgtPmZpcnN0KSkpOyBfX3UuX192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4gdm9p ZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNyh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18o Ik5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsg aWYgKCEoKHNpemVvZigqJmgtPmZpcnN0KSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComaC0+ Zmlyc3QpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComaC0+Zmlyc3QpID09IHNpemVvZihp bnQpIHx8IHNpemVvZigqJmgtPmZpcnN0KSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGlt ZV9hc3NlcnRfMTcoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoi bWVtb3J5Iik7ICh7IHVuaW9uIHsgdHlwZW9mKComaC0+Zmlyc3QpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKComaC0+Zmlyc3QpKSAoKHR5cGVvZigqKCh0 eXBlb2YoaC0+Zmlyc3QpKV9yX2FfcF9fdikpICopKCh0eXBlb2YoaC0+Zmlyc3QpKV9yX2FfcF9f dikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKiZoLT5maXJzdCksIF9fdS5fX2MsIHNpemVvZigq JmgtPmZpcnN0KSk7IF9fdS5fX3ZhbDsgfSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKQoxNDQ3 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGhsaXN0X2JsX25vZGUg KmhsaXN0X2JsX2ZpcnN0X3JjdShzdHJ1Y3QgaGxpc3RfYmxfaGVhZCAqaCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKHN0cnVjdCBobGlzdF9ibF9ub2RlICopCjE0NDc0OiAgICgodW5zaWduZWQg bG9uZykoeyB0eXBlb2YoKihoLT5maXJzdCkpICpfX19fX19fX3AxID0gKHR5cGVvZigqKGgtPmZp cnN0KSkgKikoeyB1bmlvbiB7IHR5cGVvZigoaC0+Zmlyc3QpKSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKChoLT5maXJzdCkpLCBfX3UuX19jLCBz aXplb2YoKGgtPmZpcnN0KSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChoLT5m aXJzdCkpLCBfX3UuX19jLCBzaXplb2YoKGgtPmZpcnN0KSkpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pOyBkbyB7IH0gd2hpbGUgKDApOyA7ICgodHlwZW9mKCooaC0+Zmlyc3QpKSAq KShfX19fX19fX3AxKSk7IH0pICYgfjFVTCk7CjE0NDc0OiB9CjE0NDc0OiAjIDQ2ICIuL2luY2x1 ZGUvbGludXgvcmN1bGlzdF9ibC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9ibF9kZWxfcmN1KHN0cnVj dCBobGlzdF9ibF9ub2RlICpuKQoxNDQ3NDogewoxNDQ3NDogIF9faGxpc3RfYmxfZGVsKG4pOwox NDQ3NDogIG4tPnBwcmV2ID0gKCh2b2lkICopIDB4MTIyICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVM KSk7CjE0NDc0OiB9CjE0NDc0OiAjIDcxICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdF9ibC5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBobGlzdF9ibF9hZGRfaGVhZF9yY3Uoc3RydWN0IGhsaXN0X2JsX25vZGUgKm4s CjE0NDc0OiAgICAgIHN0cnVjdCBobGlzdF9ibF9oZWFkICpoKQoxNDQ3NDogewoxNDQ3NDogIHN0 cnVjdCBobGlzdF9ibF9ub2RlICpmaXJzdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZmlyc3Qg PSBobGlzdF9ibF9maXJzdChoKTsKMTQ0NzQ6IAoxNDQ3NDogIG4tPm5leHQgPSBmaXJzdDsKMTQ0 NzQ6ICBpZiAoZmlyc3QpCjE0NDc0OiAgIGZpcnN0LT5wcHJldiA9ICZuLT5uZXh0OwoxNDQ3NDog IG4tPnBwcmV2ID0gJmgtPmZpcnN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBobGlzdF9ibF9z ZXRfZmlyc3RfcmN1KGgsIG4pOwoxNDQ3NDogfQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgv ZGNhY2hlLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvbG9ja3JlZi5oIiAxCjE0NDc0OiAjIDI1ICIuL2luY2x1ZGUvbGludXgv bG9ja3JlZi5oIgoxNDQ3NDogc3RydWN0IGxvY2tyZWYgewoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6 IAoxNDQ3NDogICBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgbG9ja19jb3VudDsK MTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgc3BpbmxvY2tfdCBsb2NrOwoxNDQ3 NDogICAgaW50IGNvdW50OwoxNDQ3NDogICB9OwoxNDQ3NDogIH07CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBsb2NrcmVmX2dldChzdHJ1Y3QgbG9ja3JlZiAqKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgbG9ja3JlZl9wdXRfcmV0dXJuKHN0cnVjdCBsb2NrcmVmICopOwoxNDQ3NDog ZXh0ZXJuIGludCBsb2NrcmVmX2dldF9ub3RfemVybyhzdHJ1Y3QgbG9ja3JlZiAqKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgbG9ja3JlZl9wdXRfbm90X3plcm8oc3RydWN0IGxvY2tyZWYgKik7CjE0NDc0 OiBleHRlcm4gaW50IGxvY2tyZWZfZ2V0X29yX2xvY2soc3RydWN0IGxvY2tyZWYgKik7CjE0NDc0 OiBleHRlcm4gaW50IGxvY2tyZWZfcHV0X29yX2xvY2soc3RydWN0IGxvY2tyZWYgKik7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGxvY2tyZWZfbWFya19kZWFkKHN0cnVjdCBsb2NrcmVmICop OwoxNDQ3NDogZXh0ZXJuIGludCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9ja3JlZiAq KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIF9fbG9ja3JlZl9pc19kZWFkKGNvbnN0IHN0 cnVjdCBsb2NrcmVmICpsKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKGludClsLT5jb3VudCA8 IDApOwoxNDQ3NDogfQoxNDQ3NDogIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIiAyCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zdHJpbmdoYXNoLmgiIDEKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xp bnV4L2hhc2guaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS90eXBlcy5oIiAx CjE0NDc0OiAjIDcgIi4vaW5jbHVkZS9saW51eC9oYXNoLmgiIDIKMTQ0NzQ6ICMgNjAgIi4vaW5j bHVkZS9saW51eC9oYXNoLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgX19oYXNoXzMyX2dlbmVyaWModTMyIHZhbCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdmFsICogMHg2MUM4ODY0NzsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIGhhc2hfMzJfZ2VuZXJpYyh1MzIg dmFsLCB1bnNpZ25lZCBpbnQgYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBf X2hhc2hfMzJfZ2VuZXJpYyh2YWwpID4+ICgzMiAtIGJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHUzMiBoYXNoXzY0X2dlbmVyaWModTY0IHZhbCwgdW5zaWduZWQgaW50IGJpdHMpCjE0 NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiB2YWwgKiAweDYxQzg4NjQ2ODBC NTgzRUJ1bGwgPj4gKDY0IC0gYml0cyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIGhhc2hfcHRyKGNvbnN0IHZvaWQgKnB0ciwgdW5z aWduZWQgaW50IGJpdHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGhhc2hfNjRfZ2VuZXJpYygo dW5zaWduZWQgbG9uZylwdHIsIGJpdHMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHUzMiBoYXNoMzJfcHRyKGNvbnN0IHZvaWQgKnB0cikKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIHZhbCA9ICh1bnNpZ25lZCBsb25nKXB0cjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dmFsIF49ICh2YWwgPj4gMzIpOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuICh1MzIpdmFsOwoxNDQ3 NDogfQoxNDQ3NDogIyA4ICIuL2luY2x1ZGUvbGludXgvc3RyaW5naGFzaC5oIiAyCjE0NDc0OiAj IDQyICIuL2luY2x1ZGUvbGludXgvc3RyaW5naGFzaC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZwox NDQ3NDogcGFydGlhbF9uYW1lX2hhc2godW5zaWduZWQgbG9uZyBjLCB1bnNpZ25lZCBsb25nIHBy ZXZoYXNoKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAocHJldmhhc2ggKyAoYyA8PCA0KSArIChj ID4+IDQpKSAqIDExOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGVuZF9uYW1lX2hhc2godW5zaWduZWQg bG9uZyBoYXNoKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBoYXNoXzY0X2dlbmVyaWMoaGFzaCwg MzIpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NiAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZ2hhc2guaCIK MTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoX19wdXJlX18pKSBmdWxs X25hbWVfaGFzaChjb25zdCB2b2lkICpzYWx0LCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCk7 CjE0NDc0OiAjIDc3ICIuL2luY2x1ZGUvbGludXgvc3RyaW5naGFzaC5oIgoxNDQ3NDogZXh0ZXJu IHU2NCBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIGhhc2hsZW5fc3RyaW5nKGNvbnN0IHZvaWQg KnNhbHQsIGNvbnN0IGNoYXIgKm5hbWUpOwoxNDQ3NDogIyAxNSAiLi9pbmNsdWRlL2xpbnV4L2Rj YWNoZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBhdGg7CjE0NDc0OiBzdHJ1 Y3QgdmZzbW91bnQ7CjE0NDc0OiAjIDQ3ICIuL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCjE0NDc0 OiBzdHJ1Y3QgcXN0ciB7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDog ICAgdTMyIGhhc2g7IHUzMiBsZW47CjE0NDc0OiAgIH07CjE0NDc0OiAgIHU2NCBoYXNoX2xlbjsK MTQ0NzQ6ICB9OwoxNDQ3NDogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm5hbWU7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IHN0cnVjdCBxc3RyIGVt cHR5X25hbWU7CjE0NDc0OiBleHRlcm4gY29uc3Qgc3RydWN0IHFzdHIgc2xhc2hfbmFtZTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeV9zdGF0X3QgewoxNDQ3NDogIGxvbmcgbnJfZGVudHJ5 OwoxNDQ3NDogIGxvbmcgbnJfdW51c2VkOwoxNDQ3NDogIGxvbmcgYWdlX2xpbWl0OwoxNDQ3NDog IGxvbmcgd2FudF9wYWdlczsKMTQ0NzQ6ICBsb25nIG5yX25lZ2F0aXZlOwoxNDQ3NDogIGxvbmcg ZHVtbXk7CjE0NDc0OiB9OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRy eV9zdGF0OwoxNDQ3NDogIyA4OSAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgoxNDQ3NDogc3Ry dWN0IGRlbnRyeSB7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZF9mbGFnczsKMTQ0NzQ6 ICBzZXFjb3VudF90IGRfc2VxOwoxNDQ3NDogIHN0cnVjdCBobGlzdF9ibF9ub2RlIGRfaGFzaDsK MTQ0NzQ6ICBzdHJ1Y3QgZGVudHJ5ICpkX3BhcmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgcXN0ciBkX25h bWU7CjE0NDc0OiAgc3RydWN0IGlub2RlICpkX2lub2RlOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWdu ZWQgY2hhciBkX2luYW1lWzMyXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxvY2ty ZWYgZF9sb2NrcmVmOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAqZF9v cDsKMTQ0NzQ6ICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmRfc2I7CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBkX3RpbWU7CjE0NDc0OiAgdm9pZCAqZF9mc2RhdGE7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7 CjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgZF9scnU7CjE0NDc0OiAgIHdhaXRfcXVldWVfaGVh ZF90ICpkX3dhaXQ7CjE0NDc0OiAgfTsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGRfY2hpbGQ7 CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBkX3N1YmRpcnM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgaGxpc3Rfbm9kZSBkX2FsaWFzOwox NDQ3NDogICBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSBkX2luX2xvb2t1cF9oYXNoOwoxNDQ3NDogICAg c3RydWN0IGNhbGxiYWNrX2hlYWQgZF9yY3U7CjE0NDc0OiAgfSBkX3U7CjE0NDc0OiB9IF9fYXR0 cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkZW50cnlfZF9sb2Nr X2NsYXNzCjE0NDc0OiB7CjE0NDc0OiAgREVOVFJZX0RfTE9DS19OT1JNQUwsCjE0NDc0OiAgREVO VFJZX0RfTE9DS19ORVNURUQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZW50cnlf b3BlcmF0aW9ucyB7CjE0NDc0OiAgaW50ICgqZF9yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICos IHVuc2lnbmVkIGludCk7CjE0NDc0OiAgaW50ICgqZF93ZWFrX3JldmFsaWRhdGUpKHN0cnVjdCBk ZW50cnkgKiwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6ICBpbnQgKCpkX2hhc2gpKGNvbnN0IHN0cnVj dCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CjE0NDc0OiAgaW50ICgqZF9jb21wYXJlKShjb25z dCBzdHJ1Y3QgZGVudHJ5ICosCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwg Y29uc3Qgc3RydWN0IHFzdHIgKik7CjE0NDc0OiAgaW50ICgqZF9kZWxldGUpKGNvbnN0IHN0cnVj dCBkZW50cnkgKik7CjE0NDc0OiAgaW50ICgqZF9pbml0KShzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3 NDogIHZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAgdm9pZCAoKmRf cHJ1bmUpKHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAgdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRl bnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAgY2hhciAqKCpkX2RuYW1lKShzdHJ1Y3Qg ZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKMTQ0NzQ6ICBzdHJ1Y3QgdmZzbW91bnQgKigqZF9hdXRv bW91bnQpKHN0cnVjdCBwYXRoICopOwoxNDQ3NDogIGludCAoKmRfbWFuYWdlKShjb25zdCBzdHJ1 Y3QgcGF0aCAqLCBib29sKTsKMTQ0NzQ6ICBzdHJ1Y3QgZGVudHJ5ICooKmRfcmVhbCkoc3RydWN0 IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18o KF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSk7CjE0NDc0OiAjIDIyMSAiLi9pbmNsdWRlL2xpbnV4 L2RjYWNoZS5oIgoxNDQ3NDogZXh0ZXJuIHNlcWxvY2tfdCByZW5hbWVfbG9jazsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZF9pbnN0YW50aWF0ZShz dHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRfaW5z dGFudGlhdGVfbmV3KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2luc3RhbnRpYXRlX3VuaXF1ZShzdHJ1Y3QgZGVudHJ5ICos IHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9pbnN0YW50 aWF0ZV9hbm9uKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwoxNDQ3NDogZXh0ZXJu IHZvaWQgX19kX2Ryb3Aoc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKMTQ0NzQ6IGV4dGVybiB2b2lk IGRfZHJvcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZF9kZWxl dGUoc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRfc2V0X2Rfb3Aoc3RydWN0 IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgKm9wKTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfYWxsb2Moc3RydWN0 IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3QgcXN0ciAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVu dHJ5ICogZF9hbGxvY19hbm9uKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKMTQ0NzQ6IGV4dGVybiBz dHJ1Y3QgZGVudHJ5ICogZF9hbGxvY19wYXJhbGxlbChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IHN0 cnVjdCBxc3RyICosCjE0NDc0OiAgICAgIHdhaXRfcXVldWVfaGVhZF90ICopOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCBkZW50cnkgKiBkX3NwbGljZV9hbGlhcyhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IGRlbnRyeSAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hZGRfY2koc3RydWN0 IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHFzdHIgKik7CjE0NDc0OiBleHRlcm4g c3RydWN0IGRlbnRyeSAqIGRfZXhhY3RfYWxpYXMoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5v ZGUgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2FueV9hbGlhcyhzdHJ1 Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9vYnRhaW5f YWxpYXMoc3RydWN0IGlub2RlICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX29i dGFpbl9yb290KHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNocmlua19kY2Fj aGVfc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc2hyaW5rX2Rj YWNoZV9wYXJlbnQoc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNocmlua19k Y2FjaGVfZm9yX3Vtb3VudChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CjE0NDc0OiBleHRlcm4gdm9p ZCBkX2ludmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gc3RydWN0IGRlbnRyeSAqIGRfbWFrZV9yb290KHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkX2dlbm9jaWRlKHN0cnVjdCBkZW50cnkgKik7 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRfdG1wZmlsZShzdHJ1Y3QgZGVudHJ5ICosIHN0 cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmRfZmlu ZF9hbGlhcyhzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBkX3BydW5lX2FsaWFz ZXMoc3RydWN0IGlub2RlICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcGF0 aF9oYXNfc3VibW91bnRzKGNvbnN0IHN0cnVjdCBwYXRoICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkX3JlaGFzaChzdHJ1Y3QgZGVudHJ5ICop OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj dCBpbm9kZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBkX21vdmUoc3Ry dWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZF9leGNo YW5nZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiBleHRlcm4gc3Ry dWN0IGRlbnRyeSAqZF9hbmNlc3RvcihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmRfbG9va3VwKGNv bnN0IHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CjE0NDc0OiBleHRlcm4g c3RydWN0IGRlbnRyeSAqZF9oYXNoX2FuZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg cXN0ciAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpfX2RfbG9va3VwKGNvbnN0IHN0 cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0 IGRlbnRyeSAqX19kX2xvb2t1cF9yY3UoY29uc3Qgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3 NDogICAgIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLCB1bnNpZ25lZCAqc2VxKTsKMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdW5zaWduZWQgZF9jb3VudChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGRlbnRyeS0+ZF9sb2NrcmVmLmNvdW50OwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygo X19mb3JtYXRfXyhwcmludGYsIDQsIDUpKSkKMTQ0NzQ6IGNoYXIgKmR5bmFtaWNfZG5hbWUoc3Ry dWN0IGRlbnRyeSAqLCBjaGFyICosIGludCwgY29uc3QgY2hhciAqLCAuLi4pOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gY2hhciAqX19kX3BhdGgoY29uc3Qgc3RydWN0IHBhdGggKiwgY29uc3Qgc3Ry dWN0IHBhdGggKiwgY2hhciAqLCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGNoYXIgKmRfYWJzb2x1dGVf cGF0aChjb25zdCBzdHJ1Y3QgcGF0aCAqLCBjaGFyICosIGludCk7CjE0NDc0OiBleHRlcm4gY2hh ciAqZF9wYXRoKGNvbnN0IHN0cnVjdCBwYXRoICosIGNoYXIgKiwgaW50KTsKMTQ0NzQ6IGV4dGVy biBjaGFyICpkZW50cnlfcGF0aF9yYXcoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGludCk7CjE0 NDc0OiBleHRlcm4gY2hhciAqZGVudHJ5X3BhdGgoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGlu dCk7CjE0NDc0OiAjIDMxMSAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGRlbnRyeSAqZGdldF9kbG9jayhzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKGRlbnRyeSkKMTQ0NzQ6ICAgZGVudHJ5LT5kX2xvY2tyZWYuY291bnQrKzsKMTQ0NzQ6 ICByZXR1cm4gZGVudHJ5OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGVudHJ5ICpk Z2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoZGVudHJ5KQox NDQ3NDogICBsb2NrcmVmX2dldCgmZGVudHJ5LT5kX2xvY2tyZWYpOwoxNDQ3NDogIHJldHVybiBk ZW50cnk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpkZ2V0 X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoxNDQ3NDogIyAzMzQgIi4vaW5jbHVkZS9s aW51eC9kY2FjaGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkX3VuaGFzaGVkKGNvbnN0IHN0cnVjdCBkZW50cnkg KmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gaGxpc3RfYmxfdW5oYXNoZWQoJmRlbnRy eS0+ZF9oYXNoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGRfdW5saW5rZWQoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkX3VuaGFzaGVk KGRlbnRyeSkgJiYgISgoZGVudHJ5KSA9PSAoZGVudHJ5KS0+ZF9wYXJlbnQpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgY2FudF9tb3VudChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChkZW50cnktPmRfZmxhZ3MgJiAweDAwMDAwMTAwKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkb250X21vdW50KHN0cnVjdCBkZW50cnkgKmRl bnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzcGluX2xvY2soJmRlbnRyeS0+ZF9sb2NrcmVmLmxvY2sp OwoxNDQ3NDogIGRlbnRyeS0+ZF9mbGFncyB8PSAweDAwMDAwMTAwOwoxNDQ3NDogIHNwaW5fdW5s b2NrKCZkZW50cnktPmRfbG9ja3JlZi5sb2NrKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHZvaWQgX19kX2xvb2t1cF9kb25lKHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBkX2luX2xvb2t1cChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIGRlbnRyeS0+ZF9mbGFncyAmIDB4MTAwMDAwMDA7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZF9sb29rdXBfZG9uZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZF9pbl9sb29rdXAoZGVudHJ5KSks IDApKSB7CjE0NDc0OiAgIHNwaW5fbG9jaygmZGVudHJ5LT5kX2xvY2tyZWYubG9jayk7CjE0NDc0 OiAgIF9fZF9sb29rdXBfZG9uZShkZW50cnkpOwoxNDQ3NDogICBzcGluX3VubG9jaygmZGVudHJ5 LT5kX2xvY2tyZWYubG9jayk7CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBkcHV0KHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZF9tYW5h Z2VkKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g ZGVudHJ5LT5kX2ZsYWdzICYgKDB4MDAwMTAwMDB8MHgwMDAyMDAwMHwweDAwMDQwMDAwKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX21vdW50cG9pbnQoY29uc3Qgc3RydWN0IGRlbnRy eSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkZW50cnktPmRfZmxhZ3MgJiAweDAw MDEwMDAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1 bnNpZ25lZCBfX2RfZW50cnlfdHlwZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGRlbnRyeS0+ZF9mbGFncyAmIDB4MDA3MDAwMDA7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgZF9pc19taXNzKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRy eSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19kX2VudHJ5X3R5cGUoZGVudHJ5KSA9PSAweDAw MDAwMDAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRfaXNfd2hpdGVvdXQoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2RfZW50cnlf dHlwZShkZW50cnkpID09IDB4MDAxMDAwMDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZF9jYW5fbG9va3VwKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gX19kX2VudHJ5X3R5cGUoZGVudHJ5KSA9PSAweDAwMjAwMDAwOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIGRfaXNfYXV0b2Rpcihjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgw MDMwMDAwMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX2Rpcihjb25zdCBzdHJ1 Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRfY2FuX2xvb2t1cChk ZW50cnkpIHx8IGRfaXNfYXV0b2RpcihkZW50cnkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIGRfaXNfc3ltbGluayhjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgwMDYwMDAwMDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3JlZyhjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgw MDQwMDAwMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3NwZWNpYWwoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2RfZW50cnlf dHlwZShkZW50cnkpID09IDB4MDA1MDAwMDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZF9pc19maWxlKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gZF9pc19yZWcoZGVudHJ5KSB8fCBkX2lzX3NwZWNpYWwoZGVudHJ5KTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX25lZ2F0aXZlKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRl bnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBkX2lzX21pc3MoZGVudHJ5KTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2ZsYWdzX25lZ2F0aXZlKHVuc2lnbmVkIGZs YWdzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoZmxhZ3MgJiAweDAwNzAwMDAwKSA9PSAweDAw MDAwMDAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRfaXNfcG9zaXRpdmUoY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhZF9pc19uZWdh dGl2ZShkZW50cnkpOwoxNDQ3NDogfQoxNDQ3NDogIyA0NjggIi4vaW5jbHVkZS9saW51eC9kY2Fj aGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgZF9yZWFsbHlfaXNfbmVnYXRpdmUoY29uc3Qgc3RydWN0IGRlbnRy eSAqZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkZW50cnktPmRfaW5vZGUgPT0gKCh2 b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDQ4NiAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBkX3JlYWxseV9pc19wb3NpdGl2ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRlbnRyeS0+ZF9pbm9kZSAhPSAoKHZvaWQg KikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHNpbXBsZV9wb3NpdGl2ZShjb25zdCBz dHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRfcmVhbGx5X2lz X3Bvc2l0aXZlKGRlbnRyeSkgJiYgIWRfdW5oYXNoZWQoZGVudHJ5KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZF9zZXRfZmFsbHRocnUoc3RydWN0IGRlbnRyeSAqZGVudHJ5 KTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX2ZhbGx0aHJ1KGNvbnN0IHN0cnVjdCBkZW50cnkg KmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGVudHJ5LT5kX2ZsYWdzICYgMHgwMTAw MDAwMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHN5c2N0bF92 ZnNfY2FjaGVfcHJlc3N1cmU7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgdmZzX3ByZXNz dXJlX3JhdGlvKHVuc2lnbmVkIGxvbmcgdmFsKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoIHsg dHlwZW9mKHZhbCkgcXVvdCA9ICh2YWwpIC8gKDEwMCk7IHR5cGVvZih2YWwpIHJlbSA9ICh2YWwp ICUgKDEwMCk7IChxdW90ICogKHN5c2N0bF92ZnNfY2FjaGVfcHJlc3N1cmUpKSArICgocmVtICog KHN5c2N0bF92ZnNfY2FjaGVfcHJlc3N1cmUpKSAvICgxMDApKTsgfSApOwoxNDQ3NDogfQoxNDQ3 NDogIyA1MTggIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpbm9kZSAq ZF9pbm9kZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGRlbnRyeS0+ZF9pbm9kZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNTMwICIuL2luY2x1ZGUvbGlu dXgvZGNhY2hlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgaW5vZGUgKmRfaW5vZGVfcmN1KGNvbnN0IHN0cnVj dCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5pb24geyB0eXBl b2YoZGVudHJ5LT5kX2lub2RlKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19y ZWFkX29uY2Vfc2l6ZSgmKGRlbnRyeS0+ZF9pbm9kZSksIF9fdS5fX2MsIHNpemVvZihkZW50cnkt PmRfaW5vZGUpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihkZW50cnktPmRfaW5v ZGUpLCBfX3UuX19jLCBzaXplb2YoZGVudHJ5LT5kX2lub2RlKSk7IGRvIHsgfSB3aGlsZSAoMCk7 IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDU0NSAiLi9pbmNsdWRlL2xpbnV4L2Rj YWNoZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGlub2RlICpkX2JhY2tpbmdfaW5vZGUoY29uc3Qgc3RydWN0 IGRlbnRyeSAqdXBwZXIpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGlub2RlICppbm9kZSA9IHVw cGVyLT5kX2lub2RlOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGlub2RlOwoxNDQ3NDogfQoxNDQ3 NDogIyA1NjIgIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZW50cnkg KmRfYmFja2luZ19kZW50cnkoc3RydWN0IGRlbnRyeSAqdXBwZXIpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHVwcGVyOwoxNDQ3NDogfQoxNDQ3NDogIyA1NzcgIi4vaW5jbHVkZS9saW51eC9kY2Fj aGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHN0cnVjdCBkZW50cnkgKmRfcmVhbChzdHJ1Y3QgZGVudHJ5ICpkZW50cnks CjE0NDc0OiAgICAgICAgIGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZGVudHJ5LT5kX2ZsYWdzICYgMHgwNDAwMDAwMCks IDApKQoxNDQ3NDogICByZXR1cm4gZGVudHJ5LT5kX29wLT5kX3JlYWwoZGVudHJ5LCBpbm9kZSk7 CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gZGVudHJ5OwoxNDQ3NDogfQoxNDQ3NDogIyA1 OTMgIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpbm9kZSAqZF9yZWFs X2lub2RlKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBkX2JhY2tpbmdfaW5vZGUoZF9yZWFsKChzdHJ1Y3QgZGVudHJ5ICopIGRlbnRy eSwgKCh2b2lkICopMCkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG5hbWVfc25h cHNob3QgewoxNDQ3NDogIHN0cnVjdCBxc3RyIG5hbWU7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBp bmxpbmVfbmFtZVszMl07CjE0NDc0OiB9OwoxNDQ3NDogdm9pZCB0YWtlX2RlbnRyeV9uYW1lX3Nu YXBzaG90KHN0cnVjdCBuYW1lX3NuYXBzaG90ICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiB2 b2lkIHJlbGVhc2VfZGVudHJ5X25hbWVfc25hcHNob3Qoc3RydWN0IG5hbWVfc25hcHNob3QgKik7 CjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9wYXRoLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGRlbnRyeTsKMTQ0NzQ6IHN0cnVjdCB2ZnNtb3VudDsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IHBhdGggewoxNDQ3NDogIHN0cnVjdCB2ZnNtb3VudCAqbW50OwoxNDQ3NDogIHN0cnVjdCBk ZW50cnkgKmRlbnRyeTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRf XykpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBwYXRoX2dldChjb25zdCBzdHJ1Y3QgcGF0 aCAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHBhdGhfcHV0KGNvbnN0IHN0cnVjdCBwYXRoICopOwox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgcGF0aF9lcXVhbChjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aDEsIGNv bnN0IHN0cnVjdCBwYXRoICpwYXRoMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcGF0aDEtPm1u dCA9PSBwYXRoMi0+bW50ICYmIHBhdGgxLT5kZW50cnkgPT0gcGF0aDItPmRlbnRyeTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwYXRoX3B1dF9pbml0KHN0cnVjdCBwYXRoICpwYXRoKQox NDQ3NDogewoxNDQ3NDogIHBhdGhfcHV0KHBhdGgpOwoxNDQ3NDogICpwYXRoID0gKHN0cnVjdCBw YXRoKSB7IH07CjE0NDc0OiB9CjE0NDc0OiAjIDEwICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgox NDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9h c20vc3RhdC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wb3NpeF90eXBlcy5oIiAxCjE0NDc0OiAjIDYgIi4vYXJj aC94ODYvaW5jbHVkZS91YXBpL2FzbS9zdGF0LmgiIDIKMTQ0NzQ6ICMgODMgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9zdGF0LmgiCjE0NDc0OiBzdHJ1Y3Qgc3RhdCB7CjE0NDc0OiAgX19r ZXJuZWxfdWxvbmdfdCBzdF9kZXY7CjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBzdF9pbm87CjE0 NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBzdF9ubGluazsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGludCBzdF9tb2RlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBzdF91aWQ7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHN0X2dpZDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgX19wYWQwOwoxNDQ3NDogIF9fa2Vy bmVsX3Vsb25nX3Qgc3RfcmRldjsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3Qgc3Rfc2l6ZTsKMTQ0 NzQ6ICBfX2tlcm5lbF9sb25nX3Qgc3RfYmxrc2l6ZTsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3Qg c3RfYmxvY2tzOwoxNDQ3NDogCjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBzdF9hdGltZTsKMTQ0 NzQ6ICBfX2tlcm5lbF91bG9uZ190IHN0X2F0aW1lX25zZWM7CjE0NDc0OiAgX19rZXJuZWxfdWxv bmdfdCBzdF9tdGltZTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHN0X210aW1lX25zZWM7CjE0 NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBzdF9jdGltZTsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190 IHN0X2N0aW1lX25zZWM7CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IF9fdW51c2VkWzNdOwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgMTE3ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc3RhdC5oIgox NDQ3NDogc3RydWN0IF9fb2xkX2tlcm5lbF9zdGF0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBz dF9kZXY7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgc3RfaW5vOwoxNDQ3NDogIHVuc2lnbmVkIHNo b3J0IHN0X21vZGU7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgc3Rfbmxpbms7CjE0NDc0OiAgdW5z aWduZWQgc2hvcnQgc3RfdWlkOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IHN0X2dpZDsKMTQ0NzQ6 ICB1bnNpZ25lZCBzaG9ydCBzdF9yZGV2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBzdF9zaXplOwoxNDQ3NDogIHVu c2lnbmVkIGludCBzdF9hdGltZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3RfbXRpbWU7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHN0X2N0aW1lOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogIyA3ICIu L2luY2x1ZGUvbGludXgvc3RhdC5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L3N0YXQuaCIgMQoxNDQ3NDogIyA1NiAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3RhdC5oIgoxNDQ3 NDogc3RydWN0IHN0YXR4X3RpbWVzdGFtcCB7CjE0NDc0OiAgX19zNjQgdHZfc2VjOwoxNDQ3NDog IF9fdTMyIHR2X25zZWM7CjE0NDc0OiAgX19zMzIgX19yZXNlcnZlZDsKMTQ0NzQ6IH07CjE0NDc0 OiAjIDk5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zdGF0LmgiCjE0NDc0OiBzdHJ1Y3Qgc3RhdHgg ewoxNDQ3NDogCjE0NDc0OiAgX191MzIgc3R4X21hc2s7CjE0NDc0OiAgX191MzIgc3R4X2Jsa3Np emU7CjE0NDc0OiAgX191NjQgc3R4X2F0dHJpYnV0ZXM7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBz dHhfbmxpbms7CjE0NDc0OiAgX191MzIgc3R4X3VpZDsKMTQ0NzQ6ICBfX3UzMiBzdHhfZ2lkOwox NDQ3NDogIF9fdTE2IHN0eF9tb2RlOwoxNDQ3NDogIF9fdTE2IF9fc3BhcmUwWzFdOwoxNDQ3NDog CjE0NDc0OiAgX191NjQgc3R4X2lubzsKMTQ0NzQ6ICBfX3U2NCBzdHhfc2l6ZTsKMTQ0NzQ6ICBf X3U2NCBzdHhfYmxvY2tzOwoxNDQ3NDogIF9fdTY0IHN0eF9hdHRyaWJ1dGVzX21hc2s7CjE0NDc0 OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3RhdHhfdGltZXN0YW1wIHN0eF9hdGltZTsKMTQ0NzQ6ICBzdHJ1 Y3Qgc3RhdHhfdGltZXN0YW1wIHN0eF9idGltZTsKMTQ0NzQ6ICBzdHJ1Y3Qgc3RhdHhfdGltZXN0 YW1wIHN0eF9jdGltZTsKMTQ0NzQ6ICBzdHJ1Y3Qgc3RhdHhfdGltZXN0YW1wIHN0eF9tdGltZTsK MTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIHN0eF9yZGV2X21ham9yOwoxNDQ3NDogIF9fdTMyIHN0eF9y ZGV2X21pbm9yOwoxNDQ3NDogIF9fdTMyIHN0eF9kZXZfbWFqb3I7CjE0NDc0OiAgX191MzIgc3R4 X2Rldl9taW5vcjsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IF9fc3BhcmUyWzE0XTsKMTQ0NzQ6IAox NDQ3NDogfTsKMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMgoxNDQ3NDogIyAy MCAiLi9pbmNsdWRlL2xpbnV4L3N0YXQuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Vp ZGdpZC5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvdWlkZ2lkLmgiCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS9saW51eC9oaWdodWlkLmgiIDEKMTQ0NzQ6ICMgMzUgIi4vaW5jbHVkZS9s aW51eC9oaWdodWlkLmgiCjE0NDc0OiBleHRlcm4gaW50IG92ZXJmbG93dWlkOwoxNDQ3NDogZXh0 ZXJuIGludCBvdmVyZmxvd2dpZDsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iYWRfdWlk KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19iYWRfZ2lkKHZvaWQpOwoxNDQ3NDogIyA4MiAi Li9pbmNsdWRlL2xpbnV4L2hpZ2h1aWQuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgZnNfb3ZlcmZsb3d1 aWQ7CjE0NDc0OiBleHRlcm4gaW50IGZzX292ZXJmbG93Z2lkOwoxNDQ3NDogIyAxNyAiLi9pbmNs dWRlL2xpbnV4L3VpZGdpZC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB1c2VyX25hbWVzcGFj ZTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgaW5pdF91c2VyX25zOwoxNDQ3 NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0NDc0OiAgdWlkX3QgdmFsOwoxNDQ3NDogfSBr dWlkX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIGdp ZF90IHZhbDsKMTQ0NzQ6IH0ga2dpZF90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHVpZF90IF9fa3VpZF92YWwoa3VpZF90IHVpZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gdWlkLnZhbDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZ2lkX3QgX19rZ2lk X3ZhbChrZ2lkX3QgZ2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBnaWQudmFsOwoxNDQ3NDog fQoxNDQ3NDogIyA2MSAiLi9pbmNsdWRlL2xpbnV4L3VpZGdpZC5oIgoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRf ZXEoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19r dWlkX3ZhbChsZWZ0KSA9PSBfX2t1aWRfdmFsKHJpZ2h0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBnaWRfZXEoa2dpZF90IGxlZnQsIGtnaWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gX19rZ2lkX3ZhbChsZWZ0KSA9PSBfX2tnaWRfdmFsKHJpZ2h0KTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRfZ3Qoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19rdWlkX3ZhbChsZWZ0KSA+IF9fa3VpZF92YWwocmlnaHQp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdpZF9ndChrZ2lkX3QgbGVmdCwga2dpZF90 IHJpZ2h0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2tnaWRfdmFsKGxlZnQpID4gX19rZ2lk X3ZhbChyaWdodCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdWlkX2d0ZShrdWlkX3Qg bGVmdCwga3VpZF90IHJpZ2h0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2t1aWRfdmFsKGxl ZnQpID49IF9fa3VpZF92YWwocmlnaHQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdp ZF9ndGUoa2dpZF90IGxlZnQsIGtnaWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g X19rZ2lkX3ZhbChsZWZ0KSA+PSBfX2tnaWRfdmFsKHJpZ2h0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCB1aWRfbHQoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gX19rdWlkX3ZhbChsZWZ0KSA8IF9fa3VpZF92YWwocmlnaHQpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGdpZF9sdChrZ2lkX3QgbGVmdCwga2dpZF90IHJpZ2h0KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2tnaWRfdmFsKGxlZnQpIDwgX19rZ2lkX3ZhbChyaWdo dCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdWlkX2x0ZShrdWlkX3QgbGVmdCwga3Vp ZF90IHJpZ2h0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2t1aWRfdmFsKGxlZnQpIDw9IF9f a3VpZF92YWwocmlnaHQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdpZF9sdGUoa2dp ZF90IGxlZnQsIGtnaWRfdCByaWdodCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19rZ2lkX3Zh bChsZWZ0KSA8PSBfX2tnaWRfdmFsKHJpZ2h0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCB1aWRfdmFsaWQoa3VpZF90IHVpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19rdWlkX3Zh bCh1aWQpICE9ICh1aWRfdCkgLTE7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ2lkX3Zh bGlkKGtnaWRfdCBnaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fa2dpZF92YWwoZ2lkKSAh PSAoZ2lkX3QpIC0xOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIGt1aWRfdCBtYWtlX2t1aWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpmcm9tLCB1aWRfdCB1 aWQpOwoxNDQ3NDogZXh0ZXJuIGtnaWRfdCBtYWtlX2tnaWQoc3RydWN0IHVzZXJfbmFtZXNwYWNl ICpmcm9tLCBnaWRfdCBnaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdWlkX3QgZnJvbV9rdWlk KHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqdG8sIGt1aWRfdCB1aWQpOwoxNDQ3NDogZXh0ZXJuIGdp ZF90IGZyb21fa2dpZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBrZ2lkX3QgZ2lkKTsKMTQ0 NzQ6IGV4dGVybiB1aWRfdCBmcm9tX2t1aWRfbXVuZ2VkKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAq dG8sIGt1aWRfdCB1aWQpOwoxNDQ3NDogZXh0ZXJuIGdpZF90IGZyb21fa2dpZF9tdW5nZWQoc3Ry dWN0IHVzZXJfbmFtZXNwYWNlICp0bywga2dpZF90IGdpZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg a3VpZF9oYXNfbWFwcGluZyhzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5zLCBrdWlkX3QgdWlkKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBmcm9tX2t1aWQobnMsIHVpZCkgIT0gKHVpZF90KSAtMTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrZ2lkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2Vy X25hbWVzcGFjZSAqbnMsIGtnaWRfdCBnaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZyb21f a2dpZChucywgZ2lkKSAhPSAoZ2lkX3QpIC0xOwoxNDQ3NDogfQoxNDQ3NDogIyAyMSAiLi9pbmNs dWRlL2xpbnV4L3N0YXQuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGtzdGF0IHsKMTQ0NzQ6ICB1MzIgcmVzdWx0X21hc2s7CjE0NDc0OiAgdW1vZGVfdCBtb2RlOwox NDQ3NDogIHVuc2lnbmVkIGludCBubGluazsKMTQ0NzQ6ICB1aW50MzJfdCBibGtzaXplOwoxNDQ3 NDogIHU2NCBhdHRyaWJ1dGVzOwoxNDQ3NDogIHU2NCBhdHRyaWJ1dGVzX21hc2s7CjE0NDc0OiAj IDM5ICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIgoxNDQ3NDogIHU2NCBpbm87CjE0NDc0OiAgZGV2 X3QgZGV2OwoxNDQ3NDogIGRldl90IHJkZXY7CjE0NDc0OiAga3VpZF90IHVpZDsKMTQ0NzQ6ICBr Z2lkX3QgZ2lkOwoxNDQ3NDogIGxvZmZfdCBzaXplOwoxNDQ3NDogIHN0cnVjdCB0aW1lc3BlYzY0 IGF0aW1lOwoxNDQ3NDogIHN0cnVjdCB0aW1lc3BlYzY0IG10aW1lOwoxNDQ3NDogIHN0cnVjdCB0 aW1lc3BlYzY0IGN0aW1lOwoxNDQ3NDogIHN0cnVjdCB0aW1lc3BlYzY0IGJ0aW1lOwoxNDQ3NDog IHU2NCBibG9ja3M7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9saXN0X2xydS5o IiAxCjE0NDc0OiAjIDEzICIuL2luY2x1ZGUvbGludXgvbGlzdF9scnUuaCIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3Nocmlua2VyLmgiIDEKMTQ0NzQ6ICMgMTIgIi4vaW5jbHVkZS9saW51 eC9zaHJpbmtlci5oIgoxNDQ3NDogc3RydWN0IHNocmlua19jb250cm9sIHsKMTQ0NzQ6ICBnZnBf dCBnZnBfbWFzazsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IG5pZDsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IG5yX3RvX3NjYW47CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBucl9zY2FubmVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2c7CjE0NDc0OiB9OwoxNDQ3NDogIyA2MCAiLi9p bmNsdWRlL2xpbnV4L3Nocmlua2VyLmgiCjE0NDc0OiBzdHJ1Y3Qgc2hyaW5rZXIgewoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgKCpjb3VudF9vYmplY3RzKShzdHJ1Y3Qgc2hyaW5rZXIgKiwKMTQ0NzQ6 ICAgICAgICAgICAgc3RydWN0IHNocmlua19jb250cm9sICpzYyk7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyAoKnNjYW5fb2JqZWN0cykoc3RydWN0IHNocmlua2VyICosCjE0NDc0OiAgICAgICAgICAg c3RydWN0IHNocmlua19jb250cm9sICpzYyk7CjE0NDc0OiAKMTQ0NzQ6ICBsb25nIGJhdGNoOwox NDQ3NDogIGludCBzZWVrczsKMTQ0NzQ6ICB1bnNpZ25lZCBmbGFnczsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBp bnQgaWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGF0b21pY19sb25nX3QgKm5yX2RlZmVycmVk OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTAgIi4vaW5jbHVkZS9saW51eC9zaHJpbmtlci5oIgoxNDQ3 NDogZXh0ZXJuIGludCBwcmVhbGxvY19zaHJpbmtlcihzdHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2Vy KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHJlZ2lzdGVyX3Nocmlua2VyX3ByZXBhcmVkKHN0cnVjdCBz aHJpbmtlciAqc2hyaW5rZXIpOwoxNDQ3NDogZXh0ZXJuIGludCByZWdpc3Rlcl9zaHJpbmtlcihz dHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHVucmVnaXN0ZXJf c2hyaW5rZXIoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcik7CjE0NDc0OiBleHRlcm4gdm9pZCBm cmVlX3ByZWFsbG9jZWRfc2hyaW5rZXIoc3RydWN0IHNocmlua2VyICpzaHJpbmtlcik7CjE0NDc0 OiAjIDE0ICIuL2luY2x1ZGUvbGludXgvbGlzdF9scnUuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgbWVtX2Nncm91cDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGxydV9zdGF0dXMgewox NDQ3NDogIExSVV9SRU1PVkVELAoxNDQ3NDogIExSVV9SRU1PVkVEX1JFVFJZLAoxNDQ3NDogCjE0 NDc0OiAgTFJVX1JPVEFURSwKMTQ0NzQ6ICBMUlVfU0tJUCwKMTQ0NzQ6ICBMUlVfUkVUUlksCjE0 NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaXN0X2xydV9vbmUgewoxNDQ3 NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogIGxvbmcgbnJfaXRlbXM7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbGlzdF9scnVfbWVtY2cgewoxNDQ3NDog IHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2xy dV9vbmUgKmxydVswXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaXN0X2xydV9u b2RlIHsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5sb2NrX3QgbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBsaXN0X2xydV9vbmUgbHJ1OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlz dF9scnVfbWVtY2cgKm1lbWNnX2xydXM7CjE0NDc0OiAKMTQ0NzQ6ICBsb25nIG5yX2l0ZW1zOwox NDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpOwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgbGlzdF9scnUgewoxNDQ3NDogIHN0cnVjdCBsaXN0X2xydV9ub2RlICpu b2RlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OwoxNDQ3NDogIGludCBz aHJpbmtlcl9pZDsKMTQ0NzQ6ICBib29sIG1lbWNnX2F3YXJlOwoxNDQ3NDogCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiB2b2lkIGxpc3RfbHJ1X2Rlc3Ryb3koc3RydWN0IGxpc3RfbHJ1ICpscnUp OwoxNDQ3NDogaW50IF9fbGlzdF9scnVfaW5pdChzdHJ1Y3QgbGlzdF9scnUgKmxydSwgYm9vbCBt ZW1jZ19hd2FyZSwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5LCBzdHJ1 Y3Qgc2hyaW5rZXIgKnNocmlua2VyKTsKMTQ0NzQ6ICMgNzIgIi4vaW5jbHVkZS9saW51eC9saXN0 X2xydS5oIgoxNDQ3NDogaW50IG1lbWNnX3VwZGF0ZV9hbGxfbGlzdF9scnVzKGludCBudW1fbWVt Y2dzKTsKMTQ0NzQ6IHZvaWQgbWVtY2dfZHJhaW5fYWxsX2xpc3RfbHJ1cyhpbnQgc3JjX2lkeCwg c3RydWN0IG1lbV9jZ3JvdXAgKmRzdF9tZW1jZyk7CjE0NDc0OiAjIDkxICIuL2luY2x1ZGUvbGlu dXgvbGlzdF9scnUuaCIKMTQ0NzQ6IGJvb2wgbGlzdF9scnVfYWRkKHN0cnVjdCBsaXN0X2xydSAq bHJ1LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsKMTQ0NzQ6ICMgMTA0ICIuL2luY2x1ZGUvbGlu dXgvbGlzdF9scnUuaCIKMTQ0NzQ6IGJvb2wgbGlzdF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAq bHJ1LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsKMTQ0NzQ6ICMgMTE2ICIuL2luY2x1ZGUvbGlu dXgvbGlzdF9scnUuaCIKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgbGlzdF9scnVfY291bnRfb25lKHN0 cnVjdCBsaXN0X2xydSAqbHJ1LAoxNDQ3NDogICAgICBpbnQgbmlkLCBzdHJ1Y3QgbWVtX2Nncm91 cCAqbWVtY2cpOwoxNDQ3NDogdW5zaWduZWQgbG9uZyBsaXN0X2xydV9jb3VudF9ub2RlKHN0cnVj dCBsaXN0X2xydSAqbHJ1LCBpbnQgbmlkKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBs aXN0X2xydV9zaHJpbmtfY291bnQoc3RydWN0IGxpc3RfbHJ1ICpscnUsCjE0NDc0OiAgICAgICAg IHN0cnVjdCBzaHJpbmtfY29udHJvbCAqc2MpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGxpc3Rf bHJ1X2NvdW50X29uZShscnUsIHNjLT5uaWQsIHNjLT5tZW1jZyk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGxvbmcgbGlzdF9scnVfY291bnQoc3RydWN0IGxpc3RfbHJ1ICpscnUp CjE0NDc0OiB7CjE0NDc0OiAgbG9uZyBjb3VudCA9IDA7CjE0NDc0OiAgaW50IG5pZDsKMTQ0NzQ6 IAoxNDQ3NDogIGZvciAoIChuaWQpID0gMDsgKG5pZCkgPT0gMDsgKG5pZCkgPSAxKQoxNDQ3NDog ICBjb3VudCArPSBsaXN0X2xydV9jb3VudF9ub2RlKGxydSwgbmlkKTsKMTQ0NzQ6IAoxNDQ3NDog IHJldHVybiBjb3VudDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBsaXN0X2xydV9pc29s YXRlKHN0cnVjdCBsaXN0X2xydV9vbmUgKmxpc3QsIHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0pOwox NDQ3NDogdm9pZCBsaXN0X2xydV9pc29sYXRlX21vdmUoc3RydWN0IGxpc3RfbHJ1X29uZSAqbGlz dCwgc3RydWN0IGxpc3RfaGVhZCAqaXRlbSwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg KmhlYWQpOwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGVudW0gbHJ1X3N0YXR1cyAoKmxpc3RfbHJ1 X3dhbGtfY2IpKHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0sCjE0NDc0OiAgIHN0cnVjdCBsaXN0X2xy dV9vbmUgKmxpc3QsIHNwaW5sb2NrX3QgKmxvY2ssIHZvaWQgKmNiX2FyZyk7CjE0NDc0OiAjIDE2 NiAiLi9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgiCjE0NDc0OiB1bnNpZ25lZCBsb25nIGxpc3Rf bHJ1X3dhbGtfb25lKHN0cnVjdCBsaXN0X2xydSAqbHJ1LAoxNDQ3NDogICAgIGludCBuaWQsIHN0 cnVjdCBtZW1fY2dyb3VwICptZW1jZywKMTQ0NzQ6ICAgICBsaXN0X2xydV93YWxrX2NiIGlzb2xh dGUsIHZvaWQgKmNiX2FyZywKMTQ0NzQ6ICAgICB1bnNpZ25lZCBsb25nICpucl90b193YWxrKTsK MTQ0NzQ6ICMgMTgzICIuL2luY2x1ZGUvbGludXgvbGlzdF9scnUuaCIKMTQ0NzQ6IHVuc2lnbmVk IGxvbmcgbGlzdF9scnVfd2Fsa19vbmVfaXJxKHN0cnVjdCBsaXN0X2xydSAqbHJ1LAoxNDQ3NDog ICAgICAgICBpbnQgbmlkLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCjE0NDc0OiAgICAgICAg IGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9pZCAqY2JfYXJnLAoxNDQ3NDogICAgICAgICB1 bnNpZ25lZCBsb25nICpucl90b193YWxrKTsKMTQ0NzQ6IHVuc2lnbmVkIGxvbmcgbGlzdF9scnVf d2Fsa19ub2RlKHN0cnVjdCBsaXN0X2xydSAqbHJ1LCBpbnQgbmlkLAoxNDQ3NDogICAgICBsaXN0 X2xydV93YWxrX2NiIGlzb2xhdGUsIHZvaWQgKmNiX2FyZywKMTQ0NzQ6ICAgICAgdW5zaWduZWQg bG9uZyAqbnJfdG9fd2Fsayk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcKMTQ0NzQ6IGxp c3RfbHJ1X3Nocmlua193YWxrKHN0cnVjdCBsaXN0X2xydSAqbHJ1LCBzdHJ1Y3Qgc2hyaW5rX2Nv bnRyb2wgKnNjLAoxNDQ3NDogICAgICAgIGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9pZCAq Y2JfYXJnKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBsaXN0X2xydV93YWxrX29uZShscnUsIHNj LT5uaWQsIHNjLT5tZW1jZywgaXNvbGF0ZSwgY2JfYXJnLAoxNDQ3NDogICAgICAmc2MtPm5yX3Rv X3NjYW4pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nCjE0NDc0OiBsaXN0 X2xydV9zaHJpbmtfd2Fsa19pcnEoc3RydWN0IGxpc3RfbHJ1ICpscnUsIHN0cnVjdCBzaHJpbmtf Y29udHJvbCAqc2MsCjE0NDc0OiAgICAgbGlzdF9scnVfd2Fsa19jYiBpc29sYXRlLCB2b2lkICpj Yl9hcmcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGxpc3RfbHJ1X3dhbGtfb25lX2lycShscnUs IHNjLT5uaWQsIHNjLT5tZW1jZywgaXNvbGF0ZSwgY2JfYXJnLAoxNDQ3NDogICAgICAgICAgJnNj LT5ucl90b19zY2FuKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZwoxNDQ3 NDogbGlzdF9scnVfd2FsayhzdHJ1Y3QgbGlzdF9scnUgKmxydSwgbGlzdF9scnVfd2Fsa19jYiBp c29sYXRlLAoxNDQ3NDogICAgICAgIHZvaWQgKmNiX2FyZywgdW5zaWduZWQgbG9uZyBucl90b193 YWxrKQoxNDQ3NDogewoxNDQ3NDogIGxvbmcgaXNvbGF0ZWQgPSAwOwoxNDQ3NDogIGludCBuaWQ7 CjE0NDc0OiAKMTQ0NzQ6ICBmb3IgKCAobmlkKSA9IDA7IChuaWQpID09IDA7IChuaWQpID0gMSkg ewoxNDQ3NDogICBpc29sYXRlZCArPSBsaXN0X2xydV93YWxrX25vZGUobHJ1LCBuaWQsIGlzb2xh dGUsCjE0NDc0OiAgICAgICAgICAgICBjYl9hcmcsICZucl90b193YWxrKTsKMTQ0NzQ6ICAgaWYg KG5yX3RvX3dhbGsgPD0gMCkKMTQ0NzQ6ICAgIGJyZWFrOwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1 cm4gaXNvbGF0ZWQ7CjE0NDc0OiB9CjE0NDc0OiAjIDE0ICIuL2luY2x1ZGUvbGludXgvZnMuaCIg MgoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiIDEKMTQ0 NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC94YXJyYXkuaCIgMQoxNDQ3NDogIyAxNSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJh eS5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgva2NvbmZpZy5oIiAxCjE0NDc0OiAjIDE2 ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiIDIKMTQ0NzQ6ICMgNTIgIi4vaW5jbHVkZS9saW51 eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX21rX3ZhbHVlKHVuc2lnbmVkIGxvbmcgdikKMTQ0 NzQ6IHsKMTQ0NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKChsb25nKXYgPCAwKTsgaWYg KF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9f aW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0 aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJc dCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0 IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxu IiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xu IiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3hhcnJheS5oIiksICJpIiAo NTQpLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdf ZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hz ZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9w c2VjdGlvblxuXHQiIDogOiAiaSIgKDI0KSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4 cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3NDogIHJldHVybiAodm9pZCAqKSgo diA8PCAxKSB8IDEpOwoxNDQ3NDogfQoxNDQ3NDogIyA2NSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJh eS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyB4YV90b192YWx1ZShjb25zdCB2b2lkICplbnRyeSkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpZW50cnkgPj4gMTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgNzcgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgeGFf aXNfdmFsdWUoY29uc3Qgdm9pZCAqZW50cnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh1bnNp Z25lZCBsb25nKWVudHJ5ICYgMTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgOTUgIi4vaW5jbHVkZS9saW51 eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX3RhZ19wb2ludGVyKHZvaWQgKnAsIHVuc2lnbmVk IGxvbmcgdGFnKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9u ZylwIHwgdGFnKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTEwICIuL2luY2x1ZGUvbGludXgveGFycmF5 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkICp4YV91bnRhZ19wb2ludGVyKHZvaWQgKmVudHJ5KQoxNDQ3NDogewox NDQ3NDogIHJldHVybiAodm9pZCAqKSgodW5zaWduZWQgbG9uZyllbnRyeSAmIH4zVUwpOwoxNDQ3 NDogfQoxNDQ3NDogIyAxMjUgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGludCB4YV9wb2ludGVyX3RhZyh2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHVuc2lnbmVkIGxvbmcpZW50cnkgJiAzVUw7CjE0NDc0OiB9CjE0NDc0OiAjIDE0MyAiLi9p bmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfbWtfaW50ZXJuYWwodW5zaWdu ZWQgbG9uZyB2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodm9pZCAqKSgodiA8PCAyKSB8IDIp OwoxNDQ3NDogfQoxNDQ3NDogIyAxNTUgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHVuc2lnbmVkIGxvbmcgeGFfdG9faW50ZXJuYWwoY29uc3Qgdm9pZCAqZW50cnkpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuICh1bnNpZ25lZCBsb25nKWVudHJ5ID4+IDI7CjE0NDc0OiB9CjE0NDc0 OiAjIDE2NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9pc19pbnRl cm5hbChjb25zdCB2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh1bnNpZ25l ZCBsb25nKWVudHJ5ICYgMykgPT0gMjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTgzICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX3plcm8oY29uc3Qgdm9pZCAqZW50cnkp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoISEoZW50cnkgPT0geGFf bWtfaW50ZXJuYWwoMjU3KSksIDApOwoxNDQ3NDogfQoxNDQ3NDogIyAxOTkgIi4vaW5jbHVkZS9s aW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgeGFfaXNfZXJyKGNvbnN0IHZvaWQgKmVudHJ5KQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KCEhKHhhX2lzX2ludGVybmFs KGVudHJ5KSAmJiBlbnRyeSA+PSB4YV9ta19pbnRlcm5hbCgtNDA5NSkpLCAwKQoxNDQ3NDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogIyAy MTcgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB4YV9lcnIodm9pZCAqZW50 cnkpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoeGFfaXNfZXJyKGVudHJ5KSkKMTQ0NzQ6 ICAgcmV0dXJuIChsb25nKWVudHJ5ID4+IDI7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0 NDc0OiAjIDIzNiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RydWN0IHhhX2xp bWl0IHsKMTQ0NzQ6ICB1MzIgbWF4OwoxNDQ3NDogIHUzMiBtaW47CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1 bnNpZ25lZCB4YV9tYXJrX3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0geGFfbG9ja190eXBlIHsKMTQ0NzQ6ICBYQV9M T0NLX0lSUSA9IDEsCjE0NDc0OiAgWEFfTE9DS19CSCA9IDIsCjE0NDc0OiB9OwoxNDQ3NDogIyAy OTIgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0cnVjdCB4YXJyYXkgewoxNDQ3 NDogIHNwaW5sb2NrX3QgeGFfbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIGdmcF90IHhhX2ZsYWdzOwox NDQ3NDogIHZvaWQgKiB4YV9oZWFkOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzQ3ICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiB2b2lkICp4YV9sb2FkKHN0cnVjdCB4YXJyYXkgKiwgdW5z aWduZWQgbG9uZyBpbmRleCk7CjE0NDc0OiB2b2lkICp4YV9zdG9yZShzdHJ1Y3QgeGFycmF5ICos IHVuc2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCk7CjE0NDc0OiB2b2lkICp4 YV9lcmFzZShzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwoxNDQ3NDogdm9p ZCAqeGFfc3RvcmVfcmFuZ2Uoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGZpcnN0LCB1 bnNpZ25lZCBsb25nIGxhc3QsCjE0NDc0OiAgICB2b2lkICplbnRyeSwgZ2ZwX3QpOwoxNDQ3NDog Ym9vbCB4YV9nZXRfbWFyayhzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHhh X21hcmtfdCk7CjE0NDc0OiB2b2lkIHhhX3NldF9tYXJrKHN0cnVjdCB4YXJyYXkgKiwgdW5zaWdu ZWQgbG9uZyBpbmRleCwgeGFfbWFya190KTsKMTQ0NzQ6IHZvaWQgeGFfY2xlYXJfbWFyayhzdHJ1 Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHhhX21hcmtfdCk7CjE0NDc0OiB2b2lk ICp4YV9maW5kKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nICppbmRleCwKMTQ0NzQ6 ICAgdW5zaWduZWQgbG9uZyBtYXgsIHhhX21hcmtfdCkgX19hdHRyaWJ1dGVfXygobm9ubnVsbCgy KSkpOwoxNDQ3NDogdm9pZCAqeGFfZmluZF9hZnRlcihzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWdu ZWQgbG9uZyAqaW5kZXgsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgbWF4LCB4YV9tYXJrX3QpIF9f YXR0cmlidXRlX18oKG5vbm51bGwoMikpKTsKMTQ0NzQ6IHVuc2lnbmVkIGludCB4YV9leHRyYWN0 KHN0cnVjdCB4YXJyYXkgKiwgdm9pZCAqKmRzdCwgdW5zaWduZWQgbG9uZyBzdGFydCwKMTQ0NzQ6 ICAgdW5zaWduZWQgbG9uZyBtYXgsIHVuc2lnbmVkIGludCBuLCB4YV9tYXJrX3QpOwoxNDQ3NDog dm9pZCB4YV9kZXN0cm95KHN0cnVjdCB4YXJyYXkgKik7CjE0NDc0OiAjIDM3NCAiLi9pbmNsdWRl L2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB4YV9pbml0X2ZsYWdzKHN0cnVjdCB4YXJyYXkg KnhhLCBnZnBfdCBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkbyB7IHNwaW5sb2NrX2NoZWNrKCZ4 YS0+eGFfbG9jayk7IGRvIHsgKigmKCZ4YS0+eGFfbG9jayktPnJsb2NrKSA9IChyYXdfc3Bpbmxv Y2tfdCkgeyAucmF3X2xvY2sgPSB7IHsgLnZhbCA9IHsgKDApIH0gfSB9LCB9OyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgeGEtPnhhX2ZsYWdzID0gZmxhZ3M7CjE0NDc0OiAgeGEt PnhhX2hlYWQgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzg5ICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHhhX2luaXQoc3RydWN0IHhhcnJheSAqeGEpCjE0 NDc0OiB7CjE0NDc0OiAgeGFfaW5pdF9mbGFncyh4YSwgMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDQw MSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9lbXB0eShjb25zdCBz dHJ1Y3QgeGFycmF5ICp4YSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4geGEtPnhhX2hlYWQgPT0g KCh2b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0OiAjIDQxNCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJh eS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCB4YV9tYXJrZWQoY29uc3Qgc3RydWN0IHhhcnJheSAqeGEsIHhhX21h cmtfdCBtYXJrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB4YS0+eGFfZmxhZ3MgJiAoKCBnZnBf dCkoKDFVIDw8ICgyMyArIDApKSA8PCAoIHVuc2lnbmVkKShtYXJrKSkpOwoxNDQ3NDogfQoxNDQ3 NDogIyA1NTQgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHZvaWQgKl9feGFfZXJh c2Uoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKMTQ0NzQ6IHZvaWQgKl9f eGFfc3RvcmUoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4LCB2b2lkICplbnRy eSwgZ2ZwX3QpOwoxNDQ3NDogdm9pZCAqX194YV9jbXB4Y2hnKHN0cnVjdCB4YXJyYXkgKiwgdW5z aWduZWQgbG9uZyBpbmRleCwgdm9pZCAqb2xkLAoxNDQ3NDogICB2b2lkICplbnRyeSwgZ2ZwX3Qp OwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfX3hh X2luc2VydChzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsCjE0NDc0OiAgIHZv aWQgKmVudHJ5LCBnZnBfdCk7CjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIF9feGFfYWxsb2Moc3RydWN0IHhhcnJheSAqLCB1MzIgKmlkLCB2b2lkICpl bnRyeSwKMTQ0NzQ6ICAgc3RydWN0IHhhX2xpbWl0LCBnZnBfdCk7CjE0NDc0OiBpbnQgX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9feGFfYWxsb2NfY3ljbGljKHN0cnVj dCB4YXJyYXkgKiwgdTMyICppZCwgdm9pZCAqZW50cnksCjE0NDc0OiAgIHN0cnVjdCB4YV9saW1p dCwgdTMyICpuZXh0LCBnZnBfdCk7CjE0NDc0OiB2b2lkIF9feGFfc2V0X21hcmsoc3RydWN0IHhh cnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4LCB4YV9tYXJrX3QpOwoxNDQ3NDogdm9pZCBfX3hh X2NsZWFyX21hcmsoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4LCB4YV9tYXJr X3QpOwoxNDQ3NDogIyA1ODEgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg KnhhX3N0b3JlX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LAoxNDQ3 NDogICB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIHZvaWQgKmN1cnI7 CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGN1 cnIgPSBfX3hhX3N0b3JlKHhhLCBpbmRleCwgZW50cnksIGdmcCk7CjE0NDc0OiAgc3Bpbl91bmxv Y2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGN1cnI7CjE0NDc0 OiB9CjE0NDc0OiAjIDYwNyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAq eGFfc3RvcmVfaXJxKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LAoxNDQ3 NDogICB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIHZvaWQgKmN1cnI7 CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2tfaXJxKCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6ICBj dXJyID0gX194YV9zdG9yZSh4YSwgaW5kZXgsIGVudHJ5LCBnZnApOwoxNDQ3NDogIHNwaW5fdW5s b2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gY3VycjsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgNjMyICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk ICp4YV9lcmFzZV9iaChzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICB2b2lkICplbnRyeTsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9ja19iaCgm KHhhKS0+eGFfbG9jayk7CjE0NDc0OiAgZW50cnkgPSBfX3hhX2VyYXNlKHhhLCBpbmRleCk7CjE0 NDc0OiAgc3Bpbl91bmxvY2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogCjE0NDc0OiAgcmV0 dXJuIGVudHJ5OwoxNDQ3NDogfQoxNDQ3NDogIyA2NTYgIi4vaW5jbHVkZS9saW51eC94YXJyYXku aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgKnhhX2VyYXNlX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQg bG9uZyBpbmRleCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB2b2lkICplbnRyeTsKMTQ0NzQ6IAoxNDQ3NDog IHNwaW5fbG9ja19pcnEoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGVudHJ5ID0gX194YV9lcmFz ZSh4YSwgaW5kZXgpOwoxNDQ3NDogIHNwaW5fdW5sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CjE0 NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZW50cnk7CjE0NDc0OiB9CjE0NDc0OiAjIDY4MiAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfY21weGNoZyhzdHJ1Y3QgeGFycmF5 ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCwKMTQ0NzQ6ICAgIHZvaWQgKm9sZCwgdm9pZCAqZW50 cnksIGdmcF90IGdmcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB2b2lkICpjdXJyOwoxNDQ3NDogCjE0NDc0 OiAgc3Bpbl9sb2NrKCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6ICBjdXJyID0gX194YV9jbXB4Y2hn KHhhLCBpbmRleCwgb2xkLCBlbnRyeSwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3VubG9jaygmKHhhKS0+ eGFfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gY3VycjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg NzA5ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YV9jbXB4Y2hnX2Jo KHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LAoxNDQ3NDogICAgdm9pZCAq b2xkLCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIHZvaWQgKmN1cnI7 CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGN1 cnIgPSBfX3hhX2NtcHhjaGcoeGEsIGluZGV4LCBvbGQsIGVudHJ5LCBnZnApOwoxNDQ3NDogIHNw aW5fdW5sb2NrX2JoKCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBjdXJy OwoxNDQ3NDogfQoxNDQ3NDogIyA3MzYgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgKnhhX2NtcHhjaGdfaXJxKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGlu ZGV4LAoxNDQ3NDogICAgdm9pZCAqb2xkLCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQoxNDQ3NDog ewoxNDQ3NDogIHZvaWQgKmN1cnI7CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2tfaXJxKCYoeGEp LT54YV9sb2NrKTsKMTQ0NzQ6ICBjdXJyID0gX194YV9jbXB4Y2hnKHhhLCBpbmRleCwgb2xkLCBl bnRyeSwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3VubG9ja19pcnEoJih4YSktPnhhX2xvY2spOwoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIGN1cnI7CjE0NDc0OiB9CjE0NDc0OiAjIDc2NSAiLi9pbmNsdWRl L2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSB4YV9pbnNlcnQoc3RydWN0IHhhcnJheSAqeGEsCjE0NDc0OiAgIHVuc2lnbmVk IGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0OiAgaW50 IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9jaygmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAg ZXJyID0gX194YV9pbnNlcnQoeGEsIGluZGV4LCBlbnRyeSwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3Vu bG9jaygmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZXJyOwoxNDQ3NDog fQoxNDQ3NDogIyA3OTQgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgeGFfaW5zZXJ0X2JoKHN0cnVjdCB4 YXJyYXkgKnhhLAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGluZGV4LCB2b2lkICplbnRyeSwgZ2Zw X3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIGludCBlcnI7CjE0NDc0OiAKMTQ0NzQ6ICBzcGluX2xv Y2tfYmgoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGVyciA9IF9feGFfaW5zZXJ0KHhhLCBpbmRl eCwgZW50cnksIGdmcCk7CjE0NDc0OiAgc3Bpbl91bmxvY2tfYmgoJih4YSktPnhhX2xvY2spOwox NDQ3NDogCjE0NDc0OiAgcmV0dXJuIGVycjsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODIzICIuL2luY2x1 ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIHhhX2luc2VydF9pcnEoc3RydWN0IHhhcnJheSAqeGEsCjE0NDc0OiAgIHVu c2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0 OiAgaW50IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9ja19pcnEoJih4YSktPnhhX2xvY2sp OwoxNDQ3NDogIGVyciA9IF9feGFfaW5zZXJ0KHhhLCBpbmRleCwgZW50cnksIGdmcCk7CjE0NDc0 OiAgc3Bpbl91bmxvY2tfaXJxKCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biBlcnI7CjE0NDc0OiB9CjE0NDc0OiAjIDg1MiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGludCB4YV9hbGxv YyhzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwKMTQ0NzQ6ICAgdm9pZCAqZW50cnksIHN0cnVj dCB4YV9saW1pdCBsaW1pdCwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIGludCBlcnI7CjE0 NDc0OiAKMTQ0NzQ6ICBzcGluX2xvY2soJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGVyciA9IF9f eGFfYWxsb2MoeGEsIGlkLCBlbnRyeSwgbGltaXQsIGdmcCk7CjE0NDc0OiAgc3Bpbl91bmxvY2so Jih4YSktPnhhX2xvY2spOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGVycjsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgODgxICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHhhX2FsbG9jX2JoKHN0cnVjdCB4YXJyYXkg KnhhLCB1MzIgKmlkLAoxNDQ3NDogICB2b2lkICplbnRyeSwgc3RydWN0IHhhX2xpbWl0IGxpbWl0 LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0OiAgaW50IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNw aW5fbG9ja19iaCgmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAgZXJyID0gX194YV9hbGxvYyh4YSwg aWQsIGVudHJ5LCBsaW1pdCwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3VubG9ja19iaCgmKHhhKS0+eGFf bG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZXJyOwoxNDQ3NDogfQoxNDQ3NDogIyA5MTAg Ii4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSkgeGFfYWxsb2NfaXJxKHN0cnVjdCB4YXJyYXkgKnhhLCB1MzIg KmlkLAoxNDQ3NDogICB2b2lkICplbnRyeSwgc3RydWN0IHhhX2xpbWl0IGxpbWl0LCBnZnBfdCBn ZnApCjE0NDc0OiB7CjE0NDc0OiAgaW50IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9ja19p cnEoJih4YSktPnhhX2xvY2spOwoxNDQ3NDogIGVyciA9IF9feGFfYWxsb2MoeGEsIGlkLCBlbnRy eSwgbGltaXQsIGdmcCk7CjE0NDc0OiAgc3Bpbl91bmxvY2tfaXJxKCYoeGEpLT54YV9sb2NrKTsK MTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBlcnI7CjE0NDc0OiB9CjE0NDc0OiAjIDk0MyAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHhhX2FsbG9jX2N5Y2xpYyhzdHJ1Y3QgeGFy cmF5ICp4YSwgdTMyICppZCwgdm9pZCAqZW50cnksCjE0NDc0OiAgIHN0cnVjdCB4YV9saW1pdCBs aW1pdCwgdTMyICpuZXh0LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0OiAgaW50IGVycjsKMTQ0 NzQ6IAoxNDQ3NDogIHNwaW5fbG9jaygmKHhhKS0+eGFfbG9jayk7CjE0NDc0OiAgZXJyID0gX194 YV9hbGxvY19jeWNsaWMoeGEsIGlkLCBlbnRyeSwgbGltaXQsIG5leHQsIGdmcCk7CjE0NDc0OiAg c3Bpbl91bmxvY2soJih4YSktPnhhX2xvY2spOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGVycjsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgOTc2ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgeGFfYWxsb2NfY3ljbGljX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1MzIgKmlkLCB2b2lkICpl bnRyeSwKMTQ0NzQ6ICAgc3RydWN0IHhhX2xpbWl0IGxpbWl0LCB1MzIgKm5leHQsIGdmcF90IGdm cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgZXJyOwoxNDQ3NDogCjE0NDc0OiAgc3Bpbl9sb2NrX2Jo KCYoeGEpLT54YV9sb2NrKTsKMTQ0NzQ6ICBlcnIgPSBfX3hhX2FsbG9jX2N5Y2xpYyh4YSwgaWQs IGVudHJ5LCBsaW1pdCwgbmV4dCwgZ2ZwKTsKMTQ0NzQ6ICBzcGluX3VubG9ja19iaCgmKHhhKS0+ eGFfbG9jayk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZXJyOwoxNDQ3NDogfQoxNDQ3NDogIyAx MDA5ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgeGFfYWxsb2NfY3ljbGlj X2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwgdm9pZCAqZW50cnksCjE0NDc0OiAgIHN0 cnVjdCB4YV9saW1pdCBsaW1pdCwgdTMyICpuZXh0LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0 OiAgaW50IGVycjsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5fbG9ja19pcnEoJih4YSktPnhhX2xvY2sp OwoxNDQ3NDogIGVyciA9IF9feGFfYWxsb2NfY3ljbGljKHhhLCBpZCwgZW50cnksIGxpbWl0LCBu ZXh0LCBnZnApOwoxNDQ3NDogIHNwaW5fdW5sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CjE0NDc0 OiAKMTQ0NzQ6ICByZXR1cm4gZXJyOwoxNDQ3NDogfQoxNDQ3NDogIyAxMDM5ICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkKMTQ0NzQ6IGludCB4YV9yZXNlcnZlKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBs b25nIGluZGV4LCBnZnBfdCBnZnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHhhX2Vycih4YV9j bXB4Y2hnKHhhLCBpbmRleCwgKCh2b2lkICopMCksIHhhX21rX2ludGVybmFsKDI1NyksIGdmcCkp OwoxNDQ3NDogfQoxNDQ3NDogIyAxMDU3ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkKMTQ0NzQ6IGludCB4YV9y ZXNlcnZlX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4LCBnZnBfdCBn ZnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHhhX2Vycih4YV9jbXB4Y2hnX2JoKHhhLCBpbmRl eCwgKCh2b2lkICopMCksIHhhX21rX2ludGVybmFsKDI1NyksIGdmcCkpOwoxNDQ3NDogfQoxNDQ3 NDogIyAxMDc1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkKMTQ0NzQ6IGludCB4YV9yZXNlcnZlX2lycShzdHJ1 Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCwgZ2ZwX3QgZ2ZwKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiB4YV9lcnIoeGFfY21weGNoZ19pcnEoeGEsIGluZGV4LCAoKHZvaWQgKikw KSwgeGFfbWtfaW50ZXJuYWwoMjU3KSwgZ2ZwKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDEwOTAgIi4v aW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgeGFfcmVsZWFzZShzdHJ1Y3QgeGFy cmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB4YV9jbXB4Y2hn KHhhLCBpbmRleCwgeGFfbWtfaW50ZXJuYWwoMjU3KSwgKCh2b2lkICopMCksIDApOwoxNDQ3NDog fQoxNDQ3NDogIyAxMTIyICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdHJ1Y3Qg eGFfbm9kZSB7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBzaGlmdDsKMTQ0NzQ6ICB1bnNpZ25lZCBj aGFyIG9mZnNldDsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGNvdW50OwoxNDQ3NDogIHVuc2lnbmVk IGNoYXIgbnJfdmFsdWVzOwoxNDQ3NDogIHN0cnVjdCB4YV9ub2RlICpwYXJlbnQ7CjE0NDc0OiAg c3RydWN0IHhhcnJheSAqYXJyYXk7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgbGlz dF9oZWFkIHByaXZhdGVfbGlzdDsKMTQ0NzQ6ICAgc3RydWN0IGNhbGxiYWNrX2hlYWQgY2FsbGJh Y2tfaGVhZDsKMTQ0NzQ6ICB9OwoxNDQ3NDogIHZvaWQgKnNsb3RzWygxVUwgPDwgKDAgPyA0IDog NikpXTsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgdGFnc1szXVsoKCgo MVVMIDw8ICgwID8gNCA6IDYpKSkgKyAoNjQpIC0gMSkgLyAoNjQpKV07CjE0NDc0OiAgIHVuc2ln bmVkIGxvbmcgbWFya3NbM11bKCgoKDFVTCA8PCAoMCA/IDQgOiA2KSkpICsgKDY0KSAtIDEpIC8g KDY0KSldOwoxNDQ3NDogIH07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHhhX2R1bXAo Y29uc3Qgc3RydWN0IHhhcnJheSAqKTsKMTQ0NzQ6IHZvaWQgeGFfZHVtcF9ub2RlKGNvbnN0IHN0 cnVjdCB4YV9ub2RlICopOwoxNDQ3NDogIyAxMTYyICIuL2luY2x1ZGUvbGludXgveGFycmF5Lmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkICp4YV9oZWFkKGNvbnN0IHN0cnVjdCB4YXJyYXkgKnhhKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiAoeyB0eXBlb2YoKih4YS0+eGFfaGVhZCkpICpfX19fX19fX3AxID0gKHR5 cGVvZigqKHhhLT54YV9oZWFkKSkgKikoeyB1bmlvbiB7IHR5cGVvZigoeGEtPnhhX2hlYWQpKSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCh4YS0+ eGFfaGVhZCkpLCBfX3UuX19jLCBzaXplb2YoKHhhLT54YV9oZWFkKSkpOyBlbHNlIF9fcmVhZF9v bmNlX3NpemVfbm9jaGVjaygmKCh4YS0+eGFfaGVhZCkpLCBfX3UuX19jLCBzaXplb2YoKHhhLT54 YV9oZWFkKSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyBkbyB7IH0gd2hpbGUg KDApOyA7ICgodHlwZW9mKCooeGEtPnhhX2hlYWQpKSAqKShfX19fX19fX3AxKSk7IH0pCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfaGVhZF9sb2NrZWQoY29uc3Qgc3RydWN0IHhhcnJheSAq eGEpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBl b2YoKih4YS0+eGFfaGVhZCkpICopKCh4YS0+eGFfaGVhZCkpKTsgfSkKMTQ0NzQ6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkICp4YV9lbnRyeShjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKMTQ0NzQ6ICAgICBj b25zdCBzdHJ1Y3QgeGFfbm9kZSAqbm9kZSwgdW5zaWduZWQgaW50IG9mZnNldCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoKihub2Rl LT5zbG90c1tvZmZzZXRdKSkgKl9fX19fX19fcDEgPSAodHlwZW9mKCoobm9kZS0+c2xvdHNbb2Zm c2V0XSkpICopKHsgdW5pb24geyB0eXBlb2YoKG5vZGUtPnNsb3RzW29mZnNldF0pKSBfX3ZhbDsg Y2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKChub2RlLT5zbG90 c1tvZmZzZXRdKSksIF9fdS5fX2MsIHNpemVvZigobm9kZS0+c2xvdHNbb2Zmc2V0XSkpKTsgZWxz ZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigobm9kZS0+c2xvdHNbb2Zmc2V0XSkpLCBfX3Uu X19jLCBzaXplb2YoKG5vZGUtPnNsb3RzW29mZnNldF0pKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9f dS5fX3ZhbDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihub2RlLT5zbG90c1tv ZmZzZXRdKSkgKikoX19fX19fX19wMSkpOyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhh X2VudHJ5X2xvY2tlZChjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKMTQ0NzQ6ICAgICBjb25zdCBz dHJ1Y3QgeGFfbm9kZSAqbm9kZSwgdW5zaWduZWQgaW50IG9mZnNldCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogIHJldHVybiAoeyBkbyB7IH0gd2hpbGUgKDApOyA7 ICgodHlwZW9mKCoobm9kZS0+c2xvdHNbb2Zmc2V0XSkpICopKChub2RlLT5zbG90c1tvZmZzZXRd KSkpOyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB4YV9ub2RlICp4YV9wYXJlbnQoY29u c3Qgc3RydWN0IHhhcnJheSAqeGEsCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCB4YV9ub2RlICpu b2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoeyB0eXBlb2YoKihub2RlLT5wYXJlbnQpKSAq X19fX19fX19wMSA9ICh0eXBlb2YoKihub2RlLT5wYXJlbnQpKSAqKSh7IHVuaW9uIHsgdHlwZW9m KChub2RlLT5wYXJlbnQpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFk X29uY2Vfc2l6ZSgmKChub2RlLT5wYXJlbnQpKSwgX191Ll9fYywgc2l6ZW9mKChub2RlLT5wYXJl bnQpKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKG5vZGUtPnBhcmVudCkpLCBf X3UuX19jLCBzaXplb2YoKG5vZGUtPnBhcmVudCkpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9f dmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKG5vZGUtPnBhcmVudCkpICop KF9fX19fX19fcDEpKTsgfSkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgeGFfbm9kZSAqeGFf cGFyZW50X2xvY2tlZChjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKMTQ0NzQ6ICAgICAgY29uc3Qg c3RydWN0IHhhX25vZGUgKm5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGRvIHsgfSB3 aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihub2RlLT5wYXJlbnQpKSAqKSgobm9kZS0+cGFyZW50KSkp OyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX21rX25vZGUoY29uc3Qgc3RydWN0IHhh X25vZGUgKm5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh2b2lkICopKCh1bnNpZ25lZCBs b25nKW5vZGUgfCAyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgeGFf bm9kZSAqeGFfdG9fbm9kZShjb25zdCB2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gKHN0cnVjdCB4YV9ub2RlICopKCh1bnNpZ25lZCBsb25nKWVudHJ5IC0gMik7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9pc19ub2RlKGNvbnN0IHZvaWQgKmVudHJ5 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB4YV9pc19pbnRlcm5hbChlbnRyeSkgJiYgKHVuc2ln bmVkIGxvbmcpZW50cnkgPiA0MDk2OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgKnhhX21rX3NpYmxpbmcodW5zaWduZWQgaW50IG9mZnNldCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4geGFfbWtfaW50ZXJuYWwob2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIHhhX3RvX3NpYmxpbmcoY29uc3Qgdm9pZCAqZW50cnkpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIHhhX3RvX2ludGVybmFsKGVudHJ5KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCB4YV9pc19zaWJsaW5nKGNvbnN0IHZvaWQgKmVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAxICYmIHhhX2lzX2ludGVybmFsKGVudHJ5KSAmJgoxNDQ3NDogICAoZW50cnkgPCB4YV9t a19zaWJsaW5nKCgxVUwgPDwgKDAgPyA0IDogNikpIC0gMSkpOwoxNDQ3NDogfQoxNDQ3NDogIyAx MjU5ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX3JldHJ5KGNv bnN0IHZvaWQgKmVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0 KCEhKGVudHJ5ID09IHhhX21rX2ludGVybmFsKDI1NikpLCAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCB4YV9pc19hZHZhbmNlZChjb25zdCB2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4geGFfaXNfaW50ZXJuYWwoZW50cnkpICYmIChlbnRyeSA8PSB4YV9ta19pbnRlcm5hbCgyNTYp KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTI4NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3 NDogdHlwZWRlZiB2b2lkICgqeGFfdXBkYXRlX25vZGVfdCkoc3RydWN0IHhhX25vZGUgKm5vZGUp OwoxNDQ3NDogIyAxMzA2ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdHJ1Y3Qg eGFfc3RhdGUgewoxNDQ3NDogIHN0cnVjdCB4YXJyYXkgKnhhOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgeGFfaW5kZXg7CjE0NDc0OiAgdW5zaWduZWQgY2hhciB4YV9zaGlmdDsKMTQ0NzQ6ICB1bnNp Z25lZCBjaGFyIHhhX3NpYnM7CjE0NDc0OiAgdW5zaWduZWQgY2hhciB4YV9vZmZzZXQ7CjE0NDc0 OiAgdW5zaWduZWQgY2hhciB4YV9wYWQ7CjE0NDc0OiAgc3RydWN0IHhhX25vZGUgKnhhX25vZGU7 CjE0NDc0OiAgc3RydWN0IHhhX25vZGUgKnhhX2FsbG9jOwoxNDQ3NDogIHhhX3VwZGF0ZV9ub2Rl X3QgeGFfdXBkYXRlOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTM4NSAiLi9pbmNsdWRlL2xpbnV4L3hh cnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHhhc19lcnJvcihjb25zdCBzdHJ1Y3QgeGFfc3RhdGUgKnhhcykK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4geGFfZXJyKHhhcy0+eGFfbm9kZSk7CjE0NDc0OiB9CjE0 NDc0OiAjIDEzOTkgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgeGFzX3Nl dF9lcnIoc3RydWN0IHhhX3N0YXRlICp4YXMsIGxvbmcgZXJyKQoxNDQ3NDogewoxNDQ3NDogIHhh cy0+eGFfbm9kZSA9ICgoc3RydWN0IHhhX25vZGUgKikoKCh1bnNpZ25lZCBsb25nKWVyciA8PCAy KSB8IDJVTCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhc19pbnZhbGlkKGNvbnN0IHN0cnVjdCB4 YV9zdGF0ZSAqeGFzKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAodW5zaWduZWQgbG9uZyl4YXMt PnhhX25vZGUgJiAzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhc192YWxpZChjb25zdCBzdHJ1Y3Qg eGFfc3RhdGUgKnhhcykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIXhhc19pbnZhbGlkKHhhcyk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgeGFzX2lzX25vZGUoY29uc3Qgc3RydWN0IHhhX3N0YXRlICp4 YXMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHhhc192YWxpZCh4YXMpICYmIHhhcy0+eGFfbm9k ZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhc19ub3Rfbm9kZShzdHJ1 Y3QgeGFfbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh1bnNpZ25lZCBsb25n KW5vZGUgJiAzKSB8fCAhbm9kZTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IHhhc19mcm96ZW4oc3RydWN0IHhhX25vZGUgKm5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu ICh1bnNpZ25lZCBsb25nKW5vZGUgJiAyOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgeGFzX3RvcChzdHJ1Y3QgeGFfbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gbm9kZSA8PSAoKHN0cnVjdCB4YV9ub2RlICopM1VMKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQ2 NSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB4YXNfcmVzZXQoc3RydWN0 IHhhX3N0YXRlICp4YXMpCjE0NDc0OiB7CjE0NDc0OiAgeGFzLT54YV9ub2RlID0gKChzdHJ1Y3Qg eGFfbm9kZSAqKTNVTCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE0ODIgIi4vaW5jbHVkZS9saW51eC94 YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgeGFzX3JldHJ5KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBjb25z dCB2b2lkICplbnRyeSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoeGFfaXNfemVybyhlbnRyeSkpCjE0 NDc0OiAgIHJldHVybiB0cnVlOwoxNDQ3NDogIGlmICgheGFfaXNfcmV0cnkoZW50cnkpKQoxNDQ3 NDogICByZXR1cm4gZmFsc2U7CjE0NDc0OiAgeGFzX3Jlc2V0KHhhcyk7CjE0NDc0OiAgcmV0dXJu IHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgKnhhc19sb2FkKHN0cnVjdCB4YV9z dGF0ZSAqKTsKMTQ0NzQ6IHZvaWQgKnhhc19zdG9yZShzdHJ1Y3QgeGFfc3RhdGUgKiwgdm9pZCAq ZW50cnkpOwoxNDQ3NDogdm9pZCAqeGFzX2ZpbmQoc3RydWN0IHhhX3N0YXRlICosIHVuc2lnbmVk IGxvbmcgbWF4KTsKMTQ0NzQ6IHZvaWQgKnhhc19maW5kX2NvbmZsaWN0KHN0cnVjdCB4YV9zdGF0 ZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCB4YXNfZ2V0X21hcmsoY29uc3Qgc3RydWN0IHhhX3N0 YXRlICosIHhhX21hcmtfdCk7CjE0NDc0OiB2b2lkIHhhc19zZXRfbWFyayhjb25zdCBzdHJ1Y3Qg eGFfc3RhdGUgKiwgeGFfbWFya190KTsKMTQ0NzQ6IHZvaWQgeGFzX2NsZWFyX21hcmsoY29uc3Qg c3RydWN0IHhhX3N0YXRlICosIHhhX21hcmtfdCk7CjE0NDc0OiB2b2lkICp4YXNfZmluZF9tYXJr ZWQoc3RydWN0IHhhX3N0YXRlICosIHVuc2lnbmVkIGxvbmcgbWF4LCB4YV9tYXJrX3QpOwoxNDQ3 NDogdm9pZCB4YXNfaW5pdF9tYXJrcyhjb25zdCBzdHJ1Y3QgeGFfc3RhdGUgKik7CjE0NDc0OiAK MTQ0NzQ6IGJvb2wgeGFzX25vbWVtKHN0cnVjdCB4YV9zdGF0ZSAqLCBnZnBfdCk7CjE0NDc0OiB2 b2lkIHhhc19wYXVzZShzdHJ1Y3QgeGFfc3RhdGUgKik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgeGFz X2NyZWF0ZV9yYW5nZShzdHJ1Y3QgeGFfc3RhdGUgKik7CjE0NDc0OiAjIDE1MjIgIi4vaW5jbHVk ZS9saW51eC94YXJyYXkuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhc19yZWxvYWQoc3RydWN0IHhhX3N0YXRl ICp4YXMpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IHhhX25vZGUgKm5vZGUgPSB4YXMtPnhhX25v ZGU7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAobm9kZSkKMTQ0NzQ6ICAgcmV0dXJuIHhhX2VudHJ5KHhh cy0+eGEsIG5vZGUsIHhhcy0+eGFfb2Zmc2V0KTsKMTQ0NzQ6ICByZXR1cm4geGFfaGVhZCh4YXMt PnhhKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTU0MCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB4YXNfc2V0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB1bnNpZ25lZCBsb25nIGlu ZGV4KQoxNDQ3NDogewoxNDQ3NDogIHhhcy0+eGFfaW5kZXggPSBpbmRleDsKMTQ0NzQ6ICB4YXMt PnhhX25vZGUgPSAoKHN0cnVjdCB4YV9ub2RlICopM1VMKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB4 YXNfc2V0X29yZGVyKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB1bnNpZ25lZCBsb25nIGluZGV4LAox NDQ3NDogICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICB4 YXMtPnhhX2luZGV4ID0gb3JkZXIgPCA2NCA/IChpbmRleCA+PiBvcmRlcikgPDwgb3JkZXIgOiAw OwoxNDQ3NDogIHhhcy0+eGFfc2hpZnQgPSBvcmRlciAtIChvcmRlciAlICgwID8gNCA6IDYpKTsK MTQ0NzQ6ICB4YXMtPnhhX3NpYnMgPSAoMSA8PCAob3JkZXIgJSAoMCA/IDQgOiA2KSkpIC0gMTsK MTQ0NzQ6ICB4YXMtPnhhX25vZGUgPSAoKHN0cnVjdCB4YV9ub2RlICopM1VMKTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogIyAxNTc0ICIuL2luY2x1ZGUv bGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHhhc19zZXRfdXBkYXRlKHN0cnVjdCB4YV9zdGF0 ZSAqeGFzLCB4YV91cGRhdGVfbm9kZV90IHVwZGF0ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB4YXMtPnhh X3VwZGF0ZSA9IHVwZGF0ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTU5MCAiLi9pbmNsdWRlL2xpbnV4 L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFzX25leHRfZW50cnkoc3RydWN0IHhhX3N0YXRlICp4 YXMsIHVuc2lnbmVkIGxvbmcgbWF4KQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCB4YV9ub2RlICpu b2RlID0geGFzLT54YV9ub2RlOwoxNDQ3NDogIHZvaWQgKmVudHJ5OwoxNDQ3NDogCjE0NDc0OiAg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFzX25vdF9ub2RlKG5vZGUpIHx8IG5vZGUtPnNoaWZ0 IHx8IHhhcy0+eGFfb2Zmc2V0ICE9ICh4YXMtPnhhX2luZGV4ICYgKCgxVUwgPDwgKDAgPyA0IDog NikpIC0gMSkpKSwgMCkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQoxNDQ3NDogICByZXR1cm4geGFzX2ZpbmQoeGFzLCBtYXgpOwox NDQ3NDogCjE0NDc0OiAgZG8gewoxNDQ3NDogICBpZiAoX19idWlsdGluX2V4cGVjdCghISh4YXMt PnhhX2luZGV4ID49IG1heCksIDApKQoxNDQ3NDogICAgcmV0dXJuIHhhc19maW5kKHhhcywgbWF4 KTsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFzLT54YV9vZmZzZXQgPT0gKCgx VUwgPDwgKDAgPyA0IDogNikpIC0gMSkpLCAwKSkKMTQ0NzQ6ICAgIHJldHVybiB4YXNfZmluZCh4 YXMsIG1heCk7CjE0NDc0OiAgIGVudHJ5ID0geGFfZW50cnkoeGFzLT54YSwgbm9kZSwgeGFzLT54 YV9vZmZzZXQgKyAxKTsKMTQ0NzQ6ICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFfaXNfaW50 ZXJuYWwoZW50cnkpKSwgMCkpCjE0NDc0OiAgICByZXR1cm4geGFzX2ZpbmQoeGFzLCBtYXgpOwox NDQ3NDogICB4YXMtPnhhX29mZnNldCsrOwoxNDQ3NDogICB4YXMtPnhhX2luZGV4Kys7CjE0NDc0 OiAgfSB3aGlsZSAoIWVudHJ5KTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBlbnRyeTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgeGFzX2ZpbmRfY2h1bmsoc3Ry dWN0IHhhX3N0YXRlICp4YXMsIGJvb2wgYWR2YW5jZSwKMTQ0NzQ6ICAgeGFfbWFya190IG1hcmsp CjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyAqYWRkciA9IHhhcy0+eGFfbm9kZS0+bWFy a3NbKCB1bnNpZ25lZCltYXJrXTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0geGFzLT54 YV9vZmZzZXQ7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoYWR2YW5jZSkKMTQ0NzQ6ICAgb2Zmc2V0Kys7 CjE0NDc0OiAgaWYgKCgxVUwgPDwgKDAgPyA0IDogNikpID09IDY0KSB7CjE0NDc0OiAgIGlmIChv ZmZzZXQgPCAoMVVMIDw8ICgwID8gNCA6IDYpKSkgewoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBk YXRhID0gKmFkZHIgJiAofjBVTCA8PCBvZmZzZXQpOwoxNDQ3NDogICAgaWYgKGRhdGEpCjE0NDc0 OiAgICAgcmV0dXJuIF9fZmZzKGRhdGEpOwoxNDQ3NDogICB9CjE0NDc0OiAgIHJldHVybiAoMVVM IDw8ICgwID8gNCA6IDYpKTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZmluZF9u ZXh0X2JpdChhZGRyLCAoMVVMIDw8ICgwID8gNCA6IDYpKSwgb2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0 NzQ6ICMgMTY0NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFzX25l eHRfbWFya2VkKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB1bnNpZ25lZCBsb25nIG1heCwKMTQ0NzQ6 ICAgICAgICAgeGFfbWFya190IG1hcmspCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IHhhX25vZGUg Km5vZGUgPSB4YXMtPnhhX25vZGU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG9mZnNldDsKMTQ0NzQ6 IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHhhc19ub3Rfbm9kZShub2RlKSB8fCBu b2RlLT5zaGlmdCksIDApKQoxNDQ3NDogICByZXR1cm4geGFzX2ZpbmRfbWFya2VkKHhhcywgbWF4 LCBtYXJrKTsKMTQ0NzQ6ICBvZmZzZXQgPSB4YXNfZmluZF9jaHVuayh4YXMsIHRydWUsIG1hcmsp OwoxNDQ3NDogIHhhcy0+eGFfb2Zmc2V0ID0gb2Zmc2V0OwoxNDQ3NDogIHhhcy0+eGFfaW5kZXgg PSAoeGFzLT54YV9pbmRleCAmIH4oKDFVTCA8PCAoMCA/IDQgOiA2KSkgLSAxKSkgKyBvZmZzZXQ7 CjE0NDc0OiAgaWYgKHhhcy0+eGFfaW5kZXggPiBtYXgpCjE0NDc0OiAgIHJldHVybiAoKHZvaWQg KikwKTsKMTQ0NzQ6ICBpZiAob2Zmc2V0ID09ICgxVUwgPDwgKDAgPyA0IDogNikpKQoxNDQ3NDog ICByZXR1cm4geGFzX2ZpbmRfbWFya2VkKHhhcywgbWF4LCBtYXJrKTsKMTQ0NzQ6ICByZXR1cm4g eGFfZW50cnkoeGFzLT54YSwgbm9kZSwgb2Zmc2V0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBYQV9DSEVDS19T Q0hFRCA9IDQwOTYsCjE0NDc0OiB9OwoxNDQ3NDogIyAxNzI0ICIuL2luY2x1ZGUvbGludXgveGFy cmF5LmgiCjE0NDc0OiB2b2lkICpfX3hhc19uZXh0KHN0cnVjdCB4YV9zdGF0ZSAqKTsKMTQ0NzQ6 IHZvaWQgKl9feGFzX3ByZXYoc3RydWN0IHhhX3N0YXRlICopOwoxNDQ3NDogIyAxNzQzICIuL2lu Y2x1ZGUvbGludXgveGFycmF5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YXNfcHJldihzdHJ1Y3QgeGFfc3Rh dGUgKnhhcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgeGFfbm9kZSAqbm9kZSA9IHhhcy0+eGFf bm9kZTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHhhc19ub3Rfbm9k ZShub2RlKSB8fCBub2RlLT5zaGlmdCB8fCB4YXMtPnhhX29mZnNldCA9PSAwKSwgMCkKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICkKMTQ0NzQ6ICAgcmV0dXJuIF9feGFzX3ByZXYoeGFz KTsKMTQ0NzQ6IAoxNDQ3NDogIHhhcy0+eGFfaW5kZXgtLTsKMTQ0NzQ6ICB4YXMtPnhhX29mZnNl dC0tOwoxNDQ3NDogIHJldHVybiB4YV9lbnRyeSh4YXMtPnhhLCBub2RlLCB4YXMtPnhhX29mZnNl dCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE3NzIgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgKnhhc19uZXh0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzKQoxNDQ3NDogewoxNDQ3NDog IHN0cnVjdCB4YV9ub2RlICpub2RlID0geGFzLT54YV9ub2RlOwoxNDQ3NDogCjE0NDc0OiAgaWYg KF9fYnVpbHRpbl9leHBlY3QoISEoeGFzX25vdF9ub2RlKG5vZGUpIHx8IG5vZGUtPnNoaWZ0IHx8 IHhhcy0+eGFfb2Zmc2V0ID09ICgoMVVMIDw8ICgwID8gNCA6IDYpKSAtIDEpKSwgMCkKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKMTQ0NzQ6ICAgcmV0dXJuIF9f eGFzX25leHQoeGFzKTsKMTQ0NzQ6IAoxNDQ3NDogIHhhcy0+eGFfaW5kZXgrKzsKMTQ0NzQ6ICB4 YXMtPnhhX29mZnNldCsrOwoxNDQ3NDogIHJldHVybiB4YV9lbnRyeSh4YXMtPnhhLCBub2RlLCB4 YXMtPnhhX29mZnNldCk7CjE0NDc0OiB9CjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGludXgvcmFk aXgtdHJlZS5oIiAyCjE0NDc0OiAjIDQzICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCByYWRpeF90cmVlX2lzX2ludGVybmFsX25vZGUodm9pZCAqcHRyKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoKHVuc2lnbmVkIGxvbmcpcHRyICYgM1VMKSA9PQoxNDQ3NDogICAg IDJVTDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNzQgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgi CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIHJhZGl4X3RyZWVfZW1wdHkoY29uc3Qgc3RydWN0IHhhcnJheSAqcm9vdCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcm9vdC0+eGFfaGVhZCA9PSAoKHZvaWQgKikwKTsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgOTQgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCjE0NDc0OiBz dHJ1Y3QgcmFkaXhfdHJlZV9pdGVyIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGluZGV4OwoxNDQ3 NDogIHVuc2lnbmVkIGxvbmcgbmV4dF9pbmRleDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHRhZ3M7 CjE0NDc0OiAgc3RydWN0IHhhX25vZGUgKm5vZGU7CjE0NDc0OiB9OwoxNDQ3NDogIyAxNjUgIi4v aW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICpyYWRpeF90cmVlX2RlcmVm X3Nsb3Qodm9pZCAqKnNsb3QpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IHR5cGVvZigqKCpz bG90KSkgKl9fX19fX19fcDEgPSAodHlwZW9mKCooKnNsb3QpKSAqKSh7IHVuaW9uIHsgdHlwZW9m KCgqc2xvdCkpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9z aXplKCYoKCpzbG90KSksIF9fdS5fX2MsIHNpemVvZigoKnNsb3QpKSk7IGVsc2UgX19yZWFkX29u Y2Vfc2l6ZV9ub2NoZWNrKCYoKCpzbG90KSksIF9fdS5fX2MsIHNpemVvZigoKnNsb3QpKSk7IGRv IHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBl b2YoKigqc2xvdCkpICopKF9fX19fX19fcDEpKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE3OSAi Li9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnJhZGl4X3RyZWVfZGVy ZWZfc2xvdF9wcm90ZWN0ZWQodm9pZCAqKnNsb3QsCjE0NDc0OiAgICAgICAgc3BpbmxvY2tfdCAq dHJlZWxvY2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICh7IGRvIHsgfSB3aGlsZSAoMCk7IDsg KCh0eXBlb2YoKigqc2xvdCkpICopKCgqc2xvdCkpKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE5 MiAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByYWRpeF90cmVlX2Rl cmVmX3JldHJ5KHZvaWQgKmFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19idWlsdGluX2V4 cGVjdCghIShyYWRpeF90cmVlX2lzX2ludGVybmFsX25vZGUoYXJnKSksIDApOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 IHJhZGl4X3RyZWVfZXhjZXB0aW9uKHZvaWQgKmFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g X19idWlsdGluX2V4cGVjdCghISgodW5zaWduZWQgbG9uZylhcmcgJiAzVUwpLCAwKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogaW50IHJhZGl4X3RyZWVfaW5zZXJ0KHN0cnVjdCB4YXJyYXkgKiwg dW5zaWduZWQgbG9uZyBpbmRleCwKMTQ0NzQ6ICAgIHZvaWQgKik7CjE0NDc0OiB2b2lkICpfX3Jh ZGl4X3RyZWVfbG9va3VwKGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwgdW5zaWduZWQgbG9uZyBpbmRl eCwKMTQ0NzQ6ICAgICAgc3RydWN0IHhhX25vZGUgKipub2RlcCwgdm9pZCAqKipzbG90cCk7CjE0 NDc0OiB2b2lkICpyYWRpeF90cmVlX2xvb2t1cChjb25zdCBzdHJ1Y3QgeGFycmF5ICosIHVuc2ln bmVkIGxvbmcpOwoxNDQ3NDogdm9pZCAqKnJhZGl4X3RyZWVfbG9va3VwX3Nsb3QoY29uc3Qgc3Ry dWN0IHhhcnJheSAqLAoxNDQ3NDogICAgICB1bnNpZ25lZCBsb25nIGluZGV4KTsKMTQ0NzQ6IHZv aWQgX19yYWRpeF90cmVlX3JlcGxhY2Uoc3RydWN0IHhhcnJheSAqLCBzdHJ1Y3QgeGFfbm9kZSAq LAoxNDQ3NDogICAgICB2b2lkICoqc2xvdCwgdm9pZCAqZW50cnkpOwoxNDQ3NDogdm9pZCByYWRp eF90cmVlX2l0ZXJfcmVwbGFjZShzdHJ1Y3QgeGFycmF5ICosCjE0NDc0OiAgIGNvbnN0IHN0cnVj dCByYWRpeF90cmVlX2l0ZXIgKiwgdm9pZCAqKnNsb3QsIHZvaWQgKmVudHJ5KTsKMTQ0NzQ6IHZv aWQgcmFkaXhfdHJlZV9yZXBsYWNlX3Nsb3Qoc3RydWN0IHhhcnJheSAqLAoxNDQ3NDogICAgICAg ICB2b2lkICoqc2xvdCwgdm9pZCAqZW50cnkpOwoxNDQ3NDogdm9pZCByYWRpeF90cmVlX2l0ZXJf ZGVsZXRlKHN0cnVjdCB4YXJyYXkgKiwKMTQ0NzQ6ICAgIHN0cnVjdCByYWRpeF90cmVlX2l0ZXIg Kml0ZXIsIHZvaWQgKipzbG90KTsKMTQ0NzQ6IHZvaWQgKnJhZGl4X3RyZWVfZGVsZXRlX2l0ZW0o c3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwoxNDQ3NDogdm9pZCAqcmFk aXhfdHJlZV9kZWxldGUoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nKTsKMTQ0NzQ6IHVu c2lnbmVkIGludCByYWRpeF90cmVlX2dhbmdfbG9va3VwKGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwK MTQ0NzQ6ICAgIHZvaWQgKipyZXN1bHRzLCB1bnNpZ25lZCBsb25nIGZpcnN0X2luZGV4LAoxNDQ3 NDogICAgdW5zaWduZWQgaW50IG1heF9pdGVtcyk7CjE0NDc0OiBpbnQgcmFkaXhfdHJlZV9wcmVs b2FkKGdmcF90IGdmcF9tYXNrKTsKMTQ0NzQ6IGludCByYWRpeF90cmVlX21heWJlX3ByZWxvYWQo Z2ZwX3QgZ2ZwX21hc2spOwoxNDQ3NDogdm9pZCByYWRpeF90cmVlX2luaXQodm9pZCk7CjE0NDc0 OiB2b2lkICpyYWRpeF90cmVlX3RhZ19zZXQoc3RydWN0IHhhcnJheSAqLAoxNDQ3NDogICAgdW5z aWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgaW50IHRhZyk7CjE0NDc0OiB2b2lkICpyYWRpeF90 cmVlX3RhZ19jbGVhcihzdHJ1Y3QgeGFycmF5ICosCjE0NDc0OiAgICB1bnNpZ25lZCBsb25nIGlu ZGV4LCB1bnNpZ25lZCBpbnQgdGFnKTsKMTQ0NzQ6IGludCByYWRpeF90cmVlX3RhZ19nZXQoY29u c3Qgc3RydWN0IHhhcnJheSAqLAoxNDQ3NDogICAgdW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWdu ZWQgaW50IHRhZyk7CjE0NDc0OiB2b2lkIHJhZGl4X3RyZWVfaXRlcl90YWdfY2xlYXIoc3RydWN0 IHhhcnJheSAqLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyICppdGVyLCB1 bnNpZ25lZCBpbnQgdGFnKTsKMTQ0NzQ6IHVuc2lnbmVkIGludCByYWRpeF90cmVlX2dhbmdfbG9v a3VwX3RhZyhjb25zdCBzdHJ1Y3QgeGFycmF5ICosCjE0NDc0OiAgIHZvaWQgKipyZXN1bHRzLCB1 bnNpZ25lZCBsb25nIGZpcnN0X2luZGV4LAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbWF4X2l0ZW1z LCB1bnNpZ25lZCBpbnQgdGFnKTsKMTQ0NzQ6IHVuc2lnbmVkIGludCByYWRpeF90cmVlX2dhbmdf bG9va3VwX3RhZ19zbG90KGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwKMTQ0NzQ6ICAgdm9pZCAqKipy ZXN1bHRzLCB1bnNpZ25lZCBsb25nIGZpcnN0X2luZGV4LAoxNDQ3NDogICB1bnNpZ25lZCBpbnQg bWF4X2l0ZW1zLCB1bnNpZ25lZCBpbnQgdGFnKTsKMTQ0NzQ6IGludCByYWRpeF90cmVlX3RhZ2dl ZChjb25zdCBzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGludCB0YWcpOwoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHJhZGl4X3RyZWVfcHJlbG9hZF9lbmQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2Fz bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiB2b2lkICoqaWRyX2dldF9mcmVlKHN0cnVjdCB4YXJyYXkgKnJvb3QsCjE0NDc0OiAgICAgICAg ICBzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyICppdGVyLCBnZnBfdCBnZnAsCjE0NDc0OiAgICAgICAg ICB1bnNpZ25lZCBsb25nIG1heCk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIFJBRElY X1RSRUVfSVRFUl9UQUdfTUFTSyA9IDB4MGYsCjE0NDc0OiAgUkFESVhfVFJFRV9JVEVSX1RBR0dF RCA9IDB4MTAsCjE0NDc0OiAgUkFESVhfVFJFRV9JVEVSX0NPTlRJRyA9IDB4MjAsCjE0NDc0OiB9 OwoxNDQ3NDogIyAyNjggIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKioKMTQ0NzQ6IHJhZGl4X3RyZWVf aXRlcl9pbml0KHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGxvbmcgc3Rh cnQpCjE0NDc0OiB7CjE0NDc0OiAjIDI3OSAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIK MTQ0NzQ6ICBpdGVyLT5pbmRleCA9IDA7CjE0NDc0OiAgaXRlci0+bmV4dF9pbmRleCA9IHN0YXJ0 OwoxNDQ3NDogIHJldHVybiAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjk3ICIuL2lu Y2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgoxNDQ3NDogdm9pZCAqKnJhZGl4X3RyZWVfbmV4dF9j aHVuayhjb25zdCBzdHJ1Y3QgeGFycmF5ICosCjE0NDc0OiAgICAgICAgIHN0cnVjdCByYWRpeF90 cmVlX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGZsYWdzKTsKMTQ0NzQ6ICMgMzEwICIuL2luY2x1ZGUv bGludXgvcmFkaXgtdHJlZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqKgoxNDQ3NDogcmFkaXhfdHJlZV9pdGVy X2xvb2t1cChjb25zdCBzdHJ1Y3QgeGFycmF5ICpyb290LAoxNDQ3NDogICAgc3RydWN0IHJhZGl4 X3RyZWVfaXRlciAqaXRlciwgdW5zaWduZWQgbG9uZyBpbmRleCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy YWRpeF90cmVlX2l0ZXJfaW5pdChpdGVyLCBpbmRleCk7CjE0NDc0OiAgcmV0dXJuIHJhZGl4X3Ry ZWVfbmV4dF9jaHVuayhyb290LCBpdGVyLCBSQURJWF9UUkVFX0lURVJfQ09OVElHKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMzI3ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCjE0NDc0OiB2b2lkICoqcmFkaXhf dHJlZV9pdGVyX3JldHJ5KHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIpCjE0NDc0OiB7CjE0 NDc0OiAgaXRlci0+bmV4dF9pbmRleCA9IGl0ZXItPmluZGV4OwoxNDQ3NDogIGl0ZXItPnRhZ3Mg PSAwOwoxNDQ3NDogIHJldHVybiAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgbG9uZwoxNDQ3NDogX19yYWRpeF90cmVlX2l0ZXJfYWRkKHN0cnVjdCByYWRpeF90 cmVlX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGxvbmcgc2xvdHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGl0ZXItPmluZGV4ICsgc2xvdHM7CjE0NDc0OiB9CjE0NDc0OiAjIDM1MSAiLi9pbmNsdWRl L2xpbnV4L3JhZGl4LXRyZWUuaCIKMTQ0NzQ6IHZvaWQgKipfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgcmFkaXhfdHJlZV9pdGVyX3Jlc3VtZSh2b2lkICoqc2xvdCwKMTQ0 NzQ6ICAgICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlcik7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgbG9uZwoxNDQ3NDogcmFkaXhfdHJlZV9jaHVua19zaXpl KHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGl0 ZXItPm5leHRfaW5kZXggLSBpdGVyLT5pbmRleDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzg1ICIuL2lu Y2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkICoqcmFkaXhfdHJlZV9uZXh0X3Nsb3Qodm9pZCAqKnNsb3QsCjE0NDc0 OiAgICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlciwgdW5zaWduZWQgZmxhZ3MpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKGZsYWdzICYgUkFESVhfVFJFRV9JVEVSX1RBR0dFRCkgewoxNDQ3NDog ICBpdGVyLT50YWdzID4+PSAxOwoxNDQ3NDogICBpZiAoX19idWlsdGluX2V4cGVjdCghISghaXRl ci0+dGFncyksIDApKQoxNDQ3NDogICAgcmV0dXJuICgodm9pZCAqKTApOwoxNDQ3NDogICBpZiAo X19idWlsdGluX2V4cGVjdCghIShpdGVyLT50YWdzICYgMXVsKSwgMSkpIHsKMTQ0NzQ6ICAgIGl0 ZXItPmluZGV4ID0gX19yYWRpeF90cmVlX2l0ZXJfYWRkKGl0ZXIsIDEpOwoxNDQ3NDogICAgc2xv dCsrOwoxNDQ3NDogICAgZ290byBmb3VuZDsKMTQ0NzQ6ICAgfQoxNDQ3NDogICBpZiAoIShmbGFn cyAmIFJBRElYX1RSRUVfSVRFUl9DT05USUcpKSB7CjE0NDc0OiAgICB1bnNpZ25lZCBvZmZzZXQg PSBfX2ZmcyhpdGVyLT50YWdzKTsKMTQ0NzQ6IAoxNDQ3NDogICAgaXRlci0+dGFncyA+Pj0gb2Zm c2V0Kys7CjE0NDc0OiAgICBpdGVyLT5pbmRleCA9IF9fcmFkaXhfdHJlZV9pdGVyX2FkZChpdGVy LCBvZmZzZXQpOwoxNDQ3NDogICAgc2xvdCArPSBvZmZzZXQ7CjE0NDc0OiAgICBnb3RvIGZvdW5k OwoxNDQ3NDogICB9CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgbG9uZyBjb3VudCA9IHJhZGl4 X3RyZWVfY2h1bmtfc2l6ZShpdGVyKTsKMTQ0NzQ6IAoxNDQ3NDogICB3aGlsZSAoLS1jb3VudCA+ IDApIHsKMTQ0NzQ6ICAgIHNsb3QrKzsKMTQ0NzQ6ICAgIGl0ZXItPmluZGV4ID0gX19yYWRpeF90 cmVlX2l0ZXJfYWRkKGl0ZXIsIDEpOwoxNDQ3NDogCjE0NDc0OiAgICBpZiAoX19idWlsdGluX2V4 cGVjdCghISgqc2xvdCksIDEpKQoxNDQ3NDogICAgIGdvdG8gZm91bmQ7CjE0NDc0OiAgICBpZiAo ZmxhZ3MgJiBSQURJWF9UUkVFX0lURVJfQ09OVElHKSB7CjE0NDc0OiAKMTQ0NzQ6ICAgICBpdGVy LT5uZXh0X2luZGV4ID0gMDsKMTQ0NzQ6ICAgICBicmVhazsKMTQ0NzQ6ICAgIH0KMTQ0NzQ6ICAg fQoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiAKMTQ0NzQ6ICBm b3VuZDoKMTQ0NzQ6ICByZXR1cm4gc2xvdDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTYgIi4vaW5jbHVk ZS9saW51eC9mcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC9waWQuaCIgMQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCjE0 NDc0OiBlbnVtIHBpZF90eXBlCjE0NDc0OiB7CjE0NDc0OiAgUElEVFlQRV9QSUQsCjE0NDc0OiAg UElEVFlQRV9UR0lELAoxNDQ3NDogIFBJRFRZUEVfUEdJRCwKMTQ0NzQ6ICBQSURUWVBFX1NJRCwK MTQ0NzQ6ICBQSURUWVBFX01BWCwKMTQ0NzQ6IH07CjE0NDc0OiAjIDU0ICIuL2luY2x1ZGUvbGlu dXgvcGlkLmgiCjE0NDc0OiBzdHJ1Y3QgdXBpZCB7CjE0NDc0OiAgaW50IG5yOwoxNDQ3NDogIHN0 cnVjdCBwaWRfbmFtZXNwYWNlICpuczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBw aWQKMTQ0NzQ6IHsKMTQ0NzQ6ICByZWZjb3VudF90IGNvdW50OwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBsZXZlbDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBobGlzdF9oZWFkIHRhc2tzW1BJRFRZUEVf TUFYXTsKMTQ0NzQ6IAoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IHdhaXRfcGlkZmQ7CjE0NDc0 OiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgcmN1OwoxNDQ3NDogIHN0cnVjdCB1cGlkIG51bWJlcnNb MV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHBpZCBpbml0X3N0cnVj dF9waWQ7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IHBpZGZkX2ZvcHM7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmaWxlOwoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gc3RydWN0IHBpZCAqcGlkZmRfcGlkKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKTsKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc3RydWN0IHBpZCAqZ2V0X3BpZChzdHJ1Y3QgcGlkICpwaWQpCjE0NDc0OiB7 CjE0NDc0OiAgaWYgKHBpZCkKMTQ0NzQ6ICAgcmVmY291bnRfaW5jKCZwaWQtPmNvdW50KTsKMTQ0 NzQ6ICByZXR1cm4gcGlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBwdXRf cGlkKHN0cnVjdCBwaWQgKnBpZCk7CjE0NDc0OiBleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpw aWRfdGFzayhzdHJ1Y3QgcGlkICpwaWQsIGVudW0gcGlkX3R5cGUpOwoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwaWRf aGFzX3Rhc2soc3RydWN0IHBpZCAqcGlkLCBlbnVtIHBpZF90eXBlIHR5cGUpCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICFobGlzdF9lbXB0eSgmcGlkLT50YXNrc1t0eXBlXSk7CjE0NDc0OiB9CjE0 NDc0OiBleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpnZXRfcGlkX3Rhc2soc3RydWN0IHBpZCAq cGlkLCBlbnVtIHBpZF90eXBlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwaWQgKmdl dF90YXNrX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGVudW0gcGlkX3R5cGUgdHlwZSk7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGF0dGFj aF9waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBlbnVtIHBpZF90eXBlKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGRldGFjaF9waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBlbnVtIHBpZF90 eXBlKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNoYW5nZV9waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0 YXNrLCBlbnVtIHBpZF90eXBlLAoxNDQ3NDogICAgc3RydWN0IHBpZCAqcGlkKTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIHRyYW5zZmVyX3BpZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm9sZCwgc3RydWN0IHRh c2tfc3RydWN0ICpuZXcsCjE0NDc0OiAgICAgZW51bSBwaWRfdHlwZSk7CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBwaWRfbmFtZXNwYWNlOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBwaWRfbmFtZXNwYWNl IGluaXRfcGlkX25zOwoxNDQ3NDogIyAxMTggIi4vaW5jbHVkZS9saW51eC9waWQuaCIKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3QgcGlkICpmaW5kX3BpZF9ucyhpbnQgbnIsIHN0cnVjdCBwaWRfbmFtZXNw YWNlICpucyk7CjE0NDc0OiBleHRlcm4gc3RydWN0IHBpZCAqZmluZF92cGlkKGludCBucik7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgcGlkICpm aW5kX2dldF9waWQoaW50IG5yKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgcGlkICpmaW5kX2dlX3Bp ZChpbnQgbnIsIHN0cnVjdCBwaWRfbmFtZXNwYWNlICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g c3RydWN0IHBpZCAqYWxsb2NfcGlkKHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucywgcGlkX3QgKnNl dF90aWQsCjE0NDc0OiAgICAgICAgIHNpemVfdCBzZXRfdGlkX3NpemUpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgZnJlZV9waWQoc3RydWN0IHBpZCAqcGlkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRpc2Fi bGVfcGlkX2FsbG9jYXRpb24oc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zKTsKMTQ0NzQ6ICMgMTQy ICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnNf b2ZfcGlkKHN0cnVjdCBwaWQgKnBpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgcGlkX25hbWVz cGFjZSAqbnMgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6ICBpZiAocGlkKQoxNDQ3NDogICBucyA9IHBp ZC0+bnVtYmVyc1twaWQtPmxldmVsXS5uczsKMTQ0NzQ6ICByZXR1cm4gbnM7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgaXNfY2hpbGRfcmVhcGVyKHN0cnVjdCBwaWQgKnBpZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gcGlkLT5udW1iZXJzW3BpZC0+bGV2ZWxdLm5yID09IDE7CjE0NDc0OiB9CjE0NDc0 OiAjIDE3MiAiLi9pbmNsdWRlL2xpbnV4L3BpZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgcGlkX25yKHN0cnVj dCBwaWQgKnBpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwaWRfdCBuciA9IDA7CjE0NDc0OiAgaWYgKHBp ZCkKMTQ0NzQ6ICAgbnIgPSBwaWQtPm51bWJlcnNbMF0ubnI7CjE0NDc0OiAgcmV0dXJuIG5yOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBwaWRfdCBwaWRfbnJfbnMoc3RydWN0IHBpZCAqcGlkLCBz dHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpOwoxNDQ3NDogcGlkX3QgcGlkX3ZucihzdHJ1Y3QgcGlk ICpwaWQpOwoxNDQ3NDogIyAyMCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0 eS5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgoxNDQ3NDog IyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9jYXBhYmlsaXR5LmgiIDEKMTQ0NzQ6ICMgMzkgIi4v aW5jbHVkZS91YXBpL2xpbnV4L2NhcGFiaWxpdHkuaCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF9f dXNlcl9jYXBfaGVhZGVyX3N0cnVjdCB7CjE0NDc0OiAgX191MzIgdmVyc2lvbjsKMTQ0NzQ6ICBp bnQgcGlkOwoxNDQ3NDogfSAqY2FwX3VzZXJfaGVhZGVyX3Q7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVk ZWYgc3RydWN0IF9fdXNlcl9jYXBfZGF0YV9zdHJ1Y3QgewoxNDQ3NDogICAgICAgICBfX3UzMiBl ZmZlY3RpdmU7CjE0NDc0OiAgICAgICAgIF9fdTMyIHBlcm1pdHRlZDsKMTQ0NzQ6ICAgICAgICAg X191MzIgaW5oZXJpdGFibGU7CjE0NDc0OiB9ICpjYXBfdXNlcl9kYXRhX3Q7CjE0NDc0OiAjIDcy ICIuL2luY2x1ZGUvdWFwaS9saW51eC9jYXBhYmlsaXR5LmgiCjE0NDc0OiBzdHJ1Y3QgdmZzX2Nh cF9kYXRhIHsKMTQ0NzQ6ICBfX2xlMzIgbWFnaWNfZXRjOwoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0 OiAgIF9fbGUzMiBwZXJtaXR0ZWQ7CjE0NDc0OiAgIF9fbGUzMiBpbmhlcml0YWJsZTsKMTQ0NzQ6 ICB9IGRhdGFbMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgdmZzX25zX2NhcF9kYXRhIHsKMTQ0NzQ6ICBfX2xlMzIgbWFnaWNfZXRjOwox NDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIF9fbGUzMiBwZXJtaXR0ZWQ7CjE0NDc0OiAgIF9fbGUz MiBpbmhlcml0YWJsZTsKMTQ0NzQ6ICB9IGRhdGFbMl07CjE0NDc0OiAgX19sZTMyIHJvb3RpZDsK MTQ0NzQ6IH07CjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBm aWxlX2NhcHNfZW5hYmxlZDsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3Qga2VybmVsX2Nh cF9zdHJ1Y3QgewoxNDQ3NDogIF9fdTMyIGNhcFsyXTsKMTQ0NzQ6IH0ga2VybmVsX2NhcF90Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjcHVfdmZzX2NhcF9kYXRhIHsKMTQ0NzQ6ICBf X3UzMiBtYWdpY19ldGM7CjE0NDc0OiAga2VybmVsX2NhcF90IHBlcm1pdHRlZDsKMTQ0NzQ6ICBr ZXJuZWxfY2FwX3QgaW5oZXJpdGFibGU7CjE0NDc0OiAga3VpZF90IHJvb3RpZDsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZp bGU7CjE0NDc0OiBzdHJ1Y3QgaW5vZGU7CjE0NDc0OiBzdHJ1Y3QgZGVudHJ5OwoxNDQ3NDogc3Ry dWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogc3RydWN0IHVzZXJfbmFtZXNwYWNlOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gY29uc3Qga2VybmVsX2NhcF90IF9fY2FwX2VtcHR5X3NldDsKMTQ0NzQ6IGV4 dGVybiBjb25zdCBrZXJuZWxfY2FwX3QgX19jYXBfaW5pdF9lZmZfc2V0OwoxNDQ3NDogIyAxMTgg Ii4vaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrZXJuZWxfY2FwX3QgY2FwX2Nv bWJpbmUoY29uc3Qga2VybmVsX2NhcF90IGEsCjE0NDc0OiAgICAgICAgICAgIGNvbnN0IGtlcm5l bF9jYXBfdCBiKQoxNDQ3NDogewoxNDQ3NDogIGtlcm5lbF9jYXBfdCBkZXN0OwoxNDQ3NDogIGRv IHsgdW5zaWduZWQgX19jYXBpOyBmb3IgKF9fY2FwaSA9IDA7IF9fY2FwaSA8IDI7ICsrX19jYXBp KSB7IGRlc3QuY2FwW19fY2FwaV0gPSBhLmNhcFtfX2NhcGldIHwgYi5jYXBbX19jYXBpXTsgfSB9 IHdoaWxlICgwKTsKMTQ0NzQ6ICByZXR1cm4gZGVzdDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg a2VybmVsX2NhcF90IGNhcF9pbnRlcnNlY3QoY29uc3Qga2VybmVsX2NhcF90IGEsCjE0NDc0OiAg ICAgICBjb25zdCBrZXJuZWxfY2FwX3QgYikKMTQ0NzQ6IHsKMTQ0NzQ6ICBrZXJuZWxfY2FwX3Qg ZGVzdDsKMTQ0NzQ6ICBkbyB7IHVuc2lnbmVkIF9fY2FwaTsgZm9yIChfX2NhcGkgPSAwOyBfX2Nh cGkgPCAyOyArK19fY2FwaSkgeyBkZXN0LmNhcFtfX2NhcGldID0gYS5jYXBbX19jYXBpXSAmIGIu Y2FwW19fY2FwaV07IH0gfSB3aGlsZSAoMCk7CjE0NDc0OiAgcmV0dXJuIGRlc3Q7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfZHJvcChjb25zdCBrZXJuZWxfY2FwX3Qg YSwKMTQ0NzQ6ICAgICAgICAgY29uc3Qga2VybmVsX2NhcF90IGRyb3ApCjE0NDc0OiB7CjE0NDc0 OiAga2VybmVsX2NhcF90IGRlc3Q7CjE0NDc0OiAgZG8geyB1bnNpZ25lZCBfX2NhcGk7IGZvciAo X19jYXBpID0gMDsgX19jYXBpIDwgMjsgKytfX2NhcGkpIHsgZGVzdC5jYXBbX19jYXBpXSA9IGEu Y2FwW19fY2FwaV0gJn4gZHJvcC5jYXBbX19jYXBpXTsgfSB9IHdoaWxlICgwKTsKMTQ0NzQ6ICBy ZXR1cm4gZGVzdDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga2VybmVsX2NhcF90IGNhcF9pbnZl cnQoY29uc3Qga2VybmVsX2NhcF90IGMpCjE0NDc0OiB7CjE0NDc0OiAga2VybmVsX2NhcF90IGRl c3Q7CjE0NDc0OiAgZG8geyB1bnNpZ25lZCBfX2NhcGk7IGZvciAoX19jYXBpID0gMDsgX19jYXBp IDwgMjsgKytfX2NhcGkpIHsgZGVzdC5jYXBbX19jYXBpXSA9IH4gYy5jYXBbX19jYXBpXTsgfSB9 IHdoaWxlICgwKTsKMTQ0NzQ6ICByZXR1cm4gZGVzdDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBjYXBfaXNjbGVhcihjb25zdCBrZXJuZWxfY2FwX3QgYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBfX2NhcGk7CjE0NDc0OiAgZm9yIChfX2NhcGkgPSAwOyBfX2NhcGkgPCAyOyArK19f Y2FwaSkgewoxNDQ3NDogICBpZiAoYS5jYXBbX19jYXBpXSAhPSAwKQoxNDQ3NDogICAgcmV0dXJu IGZhbHNlOwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MTY2ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjYXBfaXNzdWJz ZXQoY29uc3Qga2VybmVsX2NhcF90IGEsIGNvbnN0IGtlcm5lbF9jYXBfdCBzZXQpCjE0NDc0OiB7 CjE0NDc0OiAga2VybmVsX2NhcF90IGRlc3Q7CjE0NDc0OiAgZGVzdCA9IGNhcF9kcm9wKGEsIHNl dCk7CjE0NDc0OiAgcmV0dXJuIGNhcF9pc2NsZWFyKGRlc3QpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkga2VybmVsX2NhcF90IGNhcF9kcm9wX2ZzX3NldChjb25zdCBr ZXJuZWxfY2FwX3QgYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBjb25zdCBrZXJuZWxfY2FwX3QgX19jYXBf ZnNfc2V0ID0gKChrZXJuZWxfY2FwX3Qpe3sgKCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwgKCgy NykgJiAzMSkpIHwgKDEgPDwgKCgxKSAmIDMxKSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgxIDw8 ICgoMykgJiAzMSkpIHwgKDEgPDwgKCg0KSAmIDMxKSkpIHwgKDEgPDwgKCg5KSAmIDMxKSksICgo MSA8PCAoKDMyKSAmIDMxKSkpIH0gfSk7CjE0NDc0OiAgcmV0dXJuIGNhcF9kcm9wKGEsIF9fY2Fw X2ZzX3NldCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfcmFpc2Vf ZnNfc2V0KGNvbnN0IGtlcm5lbF9jYXBfdCBhLAoxNDQ3NDogICAgICAgICAgY29uc3Qga2VybmVs X2NhcF90IHBlcm1pdHRlZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBjb25zdCBrZXJuZWxfY2FwX3QgX19j YXBfZnNfc2V0ID0gKChrZXJuZWxfY2FwX3Qpe3sgKCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwg KCgyNykgJiAzMSkpIHwgKDEgPDwgKCgxKSAmIDMxKSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgx IDw8ICgoMykgJiAzMSkpIHwgKDEgPDwgKCg0KSAmIDMxKSkpIHwgKDEgPDwgKCg5KSAmIDMxKSks ICgoMSA8PCAoKDMyKSAmIDMxKSkpIH0gfSk7CjE0NDc0OiAgcmV0dXJuIGNhcF9jb21iaW5lKGEs CjE0NDc0OiAgICAgICBjYXBfaW50ZXJzZWN0KHBlcm1pdHRlZCwgX19jYXBfZnNfc2V0KSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfZHJvcF9uZnNkX3NldChjb25z dCBrZXJuZWxfY2FwX3QgYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBjb25zdCBrZXJuZWxfY2FwX3QgX19j YXBfZnNfc2V0ID0gKChrZXJuZWxfY2FwX3Qpe3sgKCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwg KCgyNykgJiAzMSkpIHwgKDEgPDwgKCgxKSAmIDMxKSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgx IDw8ICgoMykgJiAzMSkpIHwgKDEgPDwgKCg0KSAmIDMxKSkpIHwgKDEgPDwgKCgyNCkgJiAzMSkp LCAoKDEgPDwgKCgzMikgJiAzMSkpKSB9IH0pOwoxNDQ3NDogIHJldHVybiBjYXBfZHJvcChhLCBf X2NhcF9mc19zZXQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrZXJuZWxfY2FwX3QgY2FwX3Jh aXNlX25mc2Rfc2V0KGNvbnN0IGtlcm5lbF9jYXBfdCBhLAoxNDQ3NDogICAgICAgICAgICBjb25z dCBrZXJuZWxfY2FwX3QgcGVybWl0dGVkKQoxNDQ3NDogewoxNDQ3NDogIGNvbnN0IGtlcm5lbF9j YXBfdCBfX2NhcF9uZnNkX3NldCA9ICgoa2VybmVsX2NhcF90KXt7ICgoMSA8PCAoKDApICYgMzEp KSB8ICgxIDw8ICgoMjcpICYgMzEpKSB8ICgxIDw8ICgoMSkgJiAzMSkpIHwgKDEgPDwgKCgyKSAm IDMxKSkgfCAoMSA8PCAoKDMpICYgMzEpKSB8ICgxIDw8ICgoNCkgJiAzMSkpKSB8ICgxIDw8ICgo MjQpICYgMzEpKSwgKCgxIDw8ICgoMzIpICYgMzEpKSkgfSB9KTsKMTQ0NzQ6ICByZXR1cm4gY2Fw X2NvbWJpbmUoYSwKMTQ0NzQ6ICAgICAgIGNhcF9pbnRlcnNlY3QocGVybWl0dGVkLCBfX2NhcF9u ZnNkX3NldCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBib29sIGhh c19jYXBhYmlsaXR5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgaW50IGNhcCk7CjE0NDc0OiBleHRl cm4gYm9vbCBoYXNfbnNfY2FwYWJpbGl0eShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsCjE0NDc0OiAg ICAgICAgICBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5zLCBpbnQgY2FwKTsKMTQ0NzQ6IGV4dGVy biBib29sIGhhc19jYXBhYmlsaXR5X25vYXVkaXQoc3RydWN0IHRhc2tfc3RydWN0ICp0LCBpbnQg Y2FwKTsKMTQ0NzQ6IGV4dGVybiBib29sIGhhc19uc19jYXBhYmlsaXR5X25vYXVkaXQoc3RydWN0 IHRhc2tfc3RydWN0ICp0LAoxNDQ3NDogICAgICAgICAgIHN0cnVjdCB1c2VyX25hbWVzcGFjZSAq bnMsIGludCBjYXApOwoxNDQ3NDogZXh0ZXJuIGJvb2wgY2FwYWJsZShpbnQgY2FwKTsKMTQ0NzQ6 IGV4dGVybiBib29sIG5zX2NhcGFibGUoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpucywgaW50IGNh cCk7CjE0NDc0OiBleHRlcm4gYm9vbCBuc19jYXBhYmxlX25vYXVkaXQoc3RydWN0IHVzZXJfbmFt ZXNwYWNlICpucywgaW50IGNhcCk7CjE0NDc0OiBleHRlcm4gYm9vbCBuc19jYXBhYmxlX3NldGlk KHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbnMsIGludCBjYXApOwoxNDQ3NDogIyAyNTAgIi4vaW5j bHVkZS9saW51eC9jYXBhYmlsaXR5LmgiCjE0NDc0OiBleHRlcm4gYm9vbCBwcml2aWxlZ2VkX3dy dF9pbm9kZV91aWRnaWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpucywgY29uc3Qgc3RydWN0IGlu b2RlICppbm9kZSk7CjE0NDc0OiBleHRlcm4gYm9vbCBjYXBhYmxlX3dydF9pbm9kZV91aWRnaWQo Y29uc3Qgc3RydWN0IGlub2RlICppbm9kZSwgaW50IGNhcCk7CjE0NDc0OiBleHRlcm4gYm9vbCBm aWxlX25zX2NhcGFibGUoY29uc3Qgc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB1c2VyX25hbWVz cGFjZSAqbnMsIGludCBjYXApOwoxNDQ3NDogZXh0ZXJuIGJvb2wgcHRyYWNlcl9jYXBhYmxlKHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5zKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGdldF92ZnNfY2Fwc19mcm9tX2Rpc2soY29uc3Qg c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgY3B1X3Zmc19jYXBfZGF0YSAqY3B1X2NhcHMp OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGNhcF9jb252ZXJ0X25zY2FwKHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwgdm9pZCAqKml2YWx1ZSwgc2l6ZV90IHNpemUpOwoxNDQ3NDogIyAyNSAiLi9p bmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3NlbWFwaG9y ZS5oIiAxCjE0NDc0OiAjIDE1ICIuL2luY2x1ZGUvbGludXgvc2VtYXBob3JlLmgiCjE0NDc0OiBz dHJ1Y3Qgc2VtYXBob3JlIHsKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogIHVu c2lnbmVkIGludCBjb3VudDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRfbGlzdDsKMTQ0 NzQ6IH07CjE0NDc0OiAjIDMxICIuL2luY2x1ZGUvbGludXgvc2VtYXBob3JlLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHNlbWFfaW5pdChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGludCB2YWwpCjE0NDc0OiB7CjE0 NDc0OiAgc3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBfX2tleTsKMTQ0NzQ6ICAqc2VtID0g KHN0cnVjdCBzZW1hcGhvcmUpIHsgLmxvY2sgPSAocmF3X3NwaW5sb2NrX3QpIHsgLnJhd19sb2Nr ID0geyB7IC52YWwgPSB7ICgwKSB9IH0gfSwgfSwgLmNvdW50ID0gdmFsLCAud2FpdF9saXN0ID0g eyAmKCgqc2VtKS53YWl0X2xpc3QpLCAmKCgqc2VtKS53YWl0X2xpc3QpIH0sIH07CjE0NDc0OiAg ZG8geyAodm9pZCkoInNlbWFwaG9yZS0+bG9jayIpOyAodm9pZCkoJl9fa2V5KTsgfSB3aGlsZSAo MCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGRvd24oc3RydWN0IHNlbWFw aG9yZSAqc2VtKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIGRvd25faW50ZXJydXB0aWJsZShzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pOwox NDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg ZG93bl9raWxsYWJsZShzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pOwoxNDQ3NDogZXh0ZXJuIGludCBf X2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZG93bl90cnlsb2NrKHN0cnVj dCBzZW1hcGhvcmUgKnNlbSk7CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKSBkb3duX3RpbWVvdXQoc3RydWN0IHNlbWFwaG9yZSAqc2VtLCBs b25nIGppZmZpZXMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqc2Vt KTsKMTQ0NzQ6ICMgMjYgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCjE0NDc0OiAjIDEgIi4vaW5j bHVkZS9saW51eC9mY250bC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9mY250bC5oIiAxCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dl bmVyYXRlZC91YXBpL2FzbS9mY250bC5oIiAxCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2Fz bS1nZW5lcmljL2ZjbnRsLmgiIDEKMTQ0NzQ6ICMgMTU2ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2Vu ZXJpYy9mY250bC5oIgoxNDQ3NDogc3RydWN0IGZfb3duZXJfZXggewoxNDQ3NDogIGludCB0eXBl OwoxNDQ3NDogIF9fa2VybmVsX3BpZF90IHBpZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE5NiAiLi9p bmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvZmNudGwuaCIKMTQ0NzQ6IHN0cnVjdCBmbG9jayB7CjE0 NDc0OiAgc2hvcnQgbF90eXBlOwoxNDQ3NDogIHNob3J0IGxfd2hlbmNlOwoxNDQ3NDogIF9fa2Vy bmVsX29mZl90IGxfc3RhcnQ7CjE0NDc0OiAgX19rZXJuZWxfb2ZmX3QgbF9sZW47CjE0NDc0OiAg X19rZXJuZWxfcGlkX3QgbF9waWQ7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmbG9j azY0IHsKMTQ0NzQ6ICBzaG9ydCBsX3R5cGU7CjE0NDc0OiAgc2hvcnQgbF93aGVuY2U7CjE0NDc0 OiAgX19rZXJuZWxfbG9mZl90IGxfc3RhcnQ7CjE0NDc0OiAgX19rZXJuZWxfbG9mZl90IGxfbGVu OwoxNDQ3NDogIF9fa2VybmVsX3BpZF90IGxfcGlkOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDog IyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2ZjbnRsLmgiIDIKMTQ0 NzQ6ICMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmNudGwuaCIgMgoxNDQ3NDogIyAxICIuL2lu Y2x1ZGUvdWFwaS9saW51eC9vcGVuYXQyLmgiIDEKMTQ0NzQ6ICMgMTkgIi4vaW5jbHVkZS91YXBp L2xpbnV4L29wZW5hdDIuaCIKMTQ0NzQ6IHN0cnVjdCBvcGVuX2hvdyB7CjE0NDc0OiAgX191NjQg ZmxhZ3M7CjE0NDc0OiAgX191NjQgbW9kZTsKMTQ0NzQ6ICBfX3U2NCByZXNvbHZlOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgNyAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmNudGwuaCIgMgoxNDQ3NDogIyA3 ICIuL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMgoxNDQ3NDogIyAyNyAiLi9pbmNsdWRlL2xpbnV4 L2ZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmllbWFwLmgiIDEKMTQ0 NzQ6ICMgMTcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2ZpZW1hcC5oIgoxNDQ3NDogc3RydWN0IGZp ZW1hcF9leHRlbnQgewoxNDQ3NDogIF9fdTY0IGZlX2xvZ2ljYWw7CjE0NDc0OiAKMTQ0NzQ6ICBf X3U2NCBmZV9waHlzaWNhbDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IGZlX2xlbmd0aDsKMTQ0NzQ6 ICBfX3U2NCBmZV9yZXNlcnZlZDY0WzJdOwoxNDQ3NDogIF9fdTMyIGZlX2ZsYWdzOwoxNDQ3NDog IF9fdTMyIGZlX3Jlc2VydmVkWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZp ZW1hcCB7CjE0NDc0OiAgX191NjQgZm1fc3RhcnQ7CjE0NDc0OiAKMTQ0NzQ6ICBfX3U2NCBmbV9s ZW5ndGg7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBmbV9mbGFnczsKMTQ0NzQ6ICBfX3UzMiBmbV9t YXBwZWRfZXh0ZW50czsKMTQ0NzQ6ICBfX3UzMiBmbV9leHRlbnRfY291bnQ7CjE0NDc0OiAgX191 MzIgZm1fcmVzZXJ2ZWQ7CjE0NDc0OiAgc3RydWN0IGZpZW1hcF9leHRlbnQgZm1fZXh0ZW50c1sw XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvbWlncmF0ZV9tb2Rl LmgiIDEKMTQ0NzQ6ICMgMTUgIi4vaW5jbHVkZS9saW51eC9taWdyYXRlX21vZGUuaCIKMTQ0NzQ6 IGVudW0gbWlncmF0ZV9tb2RlIHsKMTQ0NzQ6ICBNSUdSQVRFX0FTWU5DLAoxNDQ3NDogIE1JR1JB VEVfU1lOQ19MSUdIVCwKMTQ0NzQ6ICBNSUdSQVRFX1NZTkMsCjE0NDc0OiAgTUlHUkFURV9TWU5D X05PX0NPUFksCjE0NDc0OiB9OwoxNDQ3NDogIyAzMiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcndzZW0u aCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9yY3V3YWl0LmgiIDEKMTQ0NzQ6ICMgMTUg Ii4vaW5jbHVkZS9saW51eC9yY3V3YWl0LmgiCjE0NDc0OiBzdHJ1Y3QgcmN1d2FpdCB7CjE0NDc0 OiAgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3V3YWl0X2luaXQoc3RydWN0IHJjdXdhaXQgKncp CjE0NDc0OiB7CjE0NDc0OiAgdy0+dGFzayA9ICgodm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCByY3V3YWl0X3dha2VfdXAoc3RydWN0IHJjdXdhaXQgKncpOwox NDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJ3c2VtLmgiIDIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3JjdV9zeW5jLmgiIDEKMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51 eC9yY3Vfc3luYy5oIgoxNDQ3NDogc3RydWN0IHJjdV9zeW5jIHsKMTQ0NzQ6ICBpbnQgZ3Bfc3Rh dGU7CjE0NDc0OiAgaW50IGdwX2NvdW50OwoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IGdwX3dh aXQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCBjYl9oZWFkOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMzIgIi4vaW5jbHVkZS9saW51eC9yY3Vfc3luYy5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBy Y3Vfc3luY19pc19pZGxlKHN0cnVjdCByY3Vfc3luYyAqcnNwKQoxNDQ3NDogewoxNDQ3NDogIGRv IHsgfSB3aGlsZSAoMCkKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKMTQ0NzQ6ICByZXR1cm4gISh7IHVuaW9uIHsgdHlwZW9mKHJzcC0+Z3Bfc3RhdGUp IF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYocnNw LT5ncF9zdGF0ZSksIF9fdS5fX2MsIHNpemVvZihyc3AtPmdwX3N0YXRlKSk7IGVsc2UgX19yZWFk X29uY2Vfc2l6ZV9ub2NoZWNrKCYocnNwLT5ncF9zdGF0ZSksIF9fdS5fX2MsIHNpemVvZihyc3At PmdwX3N0YXRlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHJjdV9zeW5jX2luaXQoc3RydWN0IHJjdV9zeW5jICop OwoxNDQ3NDogZXh0ZXJuIHZvaWQgcmN1X3N5bmNfZW50ZXJfc3RhcnQoc3RydWN0IHJjdV9zeW5j ICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgcmN1X3N5bmNfZW50ZXIoc3RydWN0IHJjdV9zeW5jICop OwoxNDQ3NDogZXh0ZXJuIHZvaWQgcmN1X3N5bmNfZXhpdChzdHJ1Y3QgcmN1X3N5bmMgKik7CjE0 NDc0OiBleHRlcm4gdm9pZCByY3Vfc3luY19kdG9yKHN0cnVjdCByY3Vfc3luYyAqKTsKMTQ0NzQ6 ICMgMTAgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcndzZW0uaCIgMgoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlIHsKMTQ0NzQ6ICBzdHJ1Y3QgcmN1X3N5 bmMgcnNzOwoxNDQ3NDogIHVuc2lnbmVkIGludCAqcmVhZF9jb3VudDsKMTQ0NzQ6ICBzdHJ1Y3Qg cndfc2VtYXBob3JlIHJ3X3NlbTsKMTQ0NzQ6ICBzdHJ1Y3QgcmN1d2FpdCB3cml0ZXI7CjE0NDc0 OiAgaW50IHJlYWRlcnNfYmxvY2s7CjE0NDc0OiB9OwoxNDQ3NDogIyAzMyAiLi9pbmNsdWRlL2xp bnV4L3BlcmNwdS1yd3NlbS5oIgoxNDQ3NDogZXh0ZXJuIGludCBfX3BlcmNwdV9kb3duX3JlYWQo c3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKiwgaW50KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9f cGVyY3B1X3VwX3JlYWQoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgcGVyY3B1X2Rvd25fcmVhZChzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSAqc2Vt KQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgZG8geyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0 NDc0OiAKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0NDc0OiAgX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICMgNTEgIi4vaW5jbHVkZS9saW51 eC9wZXJjcHUtcndzZW0uaCIKMTQ0NzQ6ICAoeyBfX3RoaXNfY3B1X3ByZWVtcHRfY2hlY2soImFk ZCIpOyBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigqc2Vt LT5yZWFkX2NvdW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdo aWxlICgwKTsgc3dpdGNoKHNpemVvZigqc2VtLT5yZWFkX2NvdW50KSkgeyBjYXNlIDE6IGRvIHsg dHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFv X0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAt MSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9f ID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291 bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9f ID09IC0xKSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJl YWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBj YXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBh c20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2Ug YXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJl YWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRk cSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDog InJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0t PnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2Nv bnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBp ZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1w X187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNlIDE6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNiICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNt ICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJp IiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g KCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7 IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19U X18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNxICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7 IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFr OyBjYXNlIDQ6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9f OyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9 PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190 bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2Yo KCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJp bmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18p KDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJy ZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNl IDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g KCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7 IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2Jh ZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRl ZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18g PSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8g KGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEp OyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkg eyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0x KSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJk ZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9f SURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgi YWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp IDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAo KHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0g d2hpbGUgKDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJl YWs7IH0gfSB3aGlsZSAoMCk7IH0pOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFy Y3Vfc3luY19pc19pZGxlKCZzZW0tPnJzcykpLCAwKSkKMTQ0NzQ6ICAgX19wZXJjcHVfZG93bl9y ZWFkKHNlbSwgZmFsc2UpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IHBlcmNwdV9kb3duX3JlYWRfdHJ5bG9jayhzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFw aG9yZSAqc2VtKQoxNDQ3NDogewoxNDQ3NDogIGludCByZXQgPSAxOwoxNDQ3NDogCjE0NDc0OiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICAoeyBfX3RoaXNfY3B1X3ByZWVtcHRfY2hlY2soImFkZCIpOyBkbyB7IGRv IHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigqc2VtLT5yZWFkX2NvdW50 KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dp dGNoKHNpemVvZigqc2VtLT5yZWFkX2NvdW50KSkgeyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBl b2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19i dWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCko MSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9p ZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNl IDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g KCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7 IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNt ICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJp IiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g KCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7 IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19U X18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUg KDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQp KSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkg JiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9f VF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNo IChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAo KHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJp bmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18p KDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJy ZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZh dWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRv IHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQg cGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9 PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3Rt cF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRf Y291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0x KSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJk ZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9f SURfXyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgi YWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp IDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6 ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpz ZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGlu X2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAw OyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9f dG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpzZW0tPnJlYWRfY291bnQpKSkgeyBjYXNlIDE6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNi ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2Ug YXNtICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJl YWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRk dyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDog InJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBh c20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNx ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2Ug aWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEp KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2Jy ZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJlYWs7IH0gfSB3aGls ZSAoMCk7IH0pOwoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFyY3Vfc3luY19pc19p ZGxlKCZzZW0tPnJzcykpLCAwKSkKMTQ0NzQ6ICAgcmV0ID0gX19wZXJjcHVfZG93bl9yZWFkKHNl bSwgdHJ1ZSk7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaWYgKHJldCkK MTQ0NzQ6ICAgZG8geyB9IHdoaWxlICgwKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiByZXQ7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3VwX3JlYWQoc3RydWN0IHBlcmNwdV9y d19zZW1hcGhvcmUgKnNlbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygi IjogOiA6Im1lbW9yeSIpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1 aWx0aW5fZXhwZWN0KCEhKHJjdV9zeW5jX2lzX2lkbGUoJnNlbS0+cnNzKSksIDEpKQoxNDQ3NDog ICAoeyBfX3RoaXNfY3B1X3ByZWVtcHRfY2hlY2soImFkZCIpOyBkbyB7IGRvIHsgY29uc3Qgdm9p ZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigqc2VtLT5yZWFkX2NvdW50KSkgKyAwKSkoKHZv aWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZigq c2VtLT5yZWFkX2NvdW50KSkgeyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJl YWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0 YW50X3AoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSAmJiAoKC0odHlwZW9mKCpzZW0t PnJlYWRfY291bnQpKSgxKSkgPT0gMSB8fCAoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEp KSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSA6IDA7IGlm ICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnNlbS0+cmVh ZF9jb3VudCkpKDEpKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqc2VtLT5y ZWFkX2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jYiAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChw YW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq c2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJxaSIgKChwYW9fVF9fKSgtKHR5cGVv Zigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJp IiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNh c2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3Vu dCkpKDEpKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jcSAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgtKHR5 cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJj cHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRlZiB0eXBl b2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19i dWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSAmJiAoKC0o dHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0gMSB8fCAoLSh0eXBlb2YoKnNlbS0+cmVh ZF9jb3VudCkpKDEpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkp KDEpKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBl b2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6 ZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNt ICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGIgJTEsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJxaSIgKChwYW9f VF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDI6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3 ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2Ug YXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkp KTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnNl bS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18gPT0gMSkg YXNtICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjcSAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHEgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJyZSIgKChw YW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBkZWZhdWx0 OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRvIHsg dHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFv X0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkp KDEpKSAmJiAoKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0gMSB8fCAoLSh0eXBl b2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSA9PSAtMSkpID8gKGludCkoLSh0eXBlb2YoKnNlbS0+ cmVhZF9jb3VudCkpKDEpKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1w X18gPSAoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKTsgKHZvaWQpcGFvX3RtcF9fOyB9 IHN3aXRjaCAoc2l6ZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lE X18gPT0gMSkgYXNtICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5y ZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFk ZGIgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6 ICJxaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0x KSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291 bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRf Y291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImlu Y2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXyko LSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFv X0lEX18gPT0gMSkgYXNtICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjcSAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAo ImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSA6ICJyZSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBj YXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpzZW0tPnJlYWRfY291bnQpKSBwYW9fVF9fOyBj b25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoLSh0eXBlb2YoKnNlbS0+ cmVhZF9jb3VudCkpKDEpKSAmJiAoKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0g MSB8fCAoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSA9PSAtMSkpID8gKGludCkoLSh0 eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3Rt cF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKTsgKHZvaWQp cGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkpIHsgY2FzZSAx OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgi ZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBl bHNlIGFzbSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJl YWRfY291bnQpKSA6ICJxaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSko MSkpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpz ZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9m KCpzZW0tPnJlYWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09 IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUx LCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmki ICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2Fz ZSA4OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNt ICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkp OyBlbHNlIGFzbSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50 KSkoMSkpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUg KDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJlYWs7IH0g fSB3aGlsZSAoMCk7IH0pOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAgX19wZXJjcHVfdXBfcmVhZChz ZW0pOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0 OiAKMTQ0NzQ6ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBwZXJjcHVfZG93bl93cml0ZShzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSAqKTsK MTQ0NzQ6IGV4dGVybiB2b2lkIHBlcmNwdV91cF93cml0ZShzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFw aG9yZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBfX3BlcmNwdV9pbml0X3J3c2VtKHN0 cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICosCjE0NDc0OiAgICAgY29uc3QgY2hhciAqLCBzdHJ1 Y3QgbG9ja19jbGFzc19rZXkgKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHBlcmNwdV9m cmVlX3J3c2VtKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICopOwoxNDQ3NDogIyAxMTggIi4v aW5jbHVkZS9saW51eC9wZXJjcHUtcndzZW0uaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3J3c2VtX3Jl bGVhc2Uoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSwKMTQ0NzQ6ICAgICAgYm9vbCBy ZWFkLCB1bnNpZ25lZCBsb25nIGlwKQoxNDQ3NDogewoxNDQ3NDogIGRvIHsgfSB3aGlsZSAoMCk7 CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoIXJlYWQpCjE0NDc0OiAgIGF0b21pY19sb25nX3NldCgmc2Vt LT5yd19zZW0ub3duZXIsICgtMkwpKTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHBlcmNwdV9yd3NlbV9hY3F1aXJlKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICpzZW0s CjE0NDc0OiAgICAgIGJvb2wgcmVhZCwgdW5zaWduZWQgbG9uZyBpcCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBkbyB7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCFyZWFkKQoxNDQ3NDogICBh dG9taWNfbG9uZ19zZXQoJnNlbS0+cndfc2VtLm93bmVyLCAobG9uZylnZXRfY3VycmVudCgpKTsK MTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogIyAzNSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0 NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvZGVsYXllZF9jYWxsLmgiIDEKMTQ0NzQ6 ICMgMTAgIi4vaW5jbHVkZS9saW51eC9kZWxheWVkX2NhbGwuaCIKMTQ0NzQ6IHN0cnVjdCBkZWxh eWVkX2NhbGwgewoxNDQ3NDogIHZvaWQgKCpmbikodm9pZCAqKTsKMTQ0NzQ6ICB2b2lkICphcmc7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNl dF9kZWxheWVkX2NhbGwoc3RydWN0IGRlbGF5ZWRfY2FsbCAqY2FsbCwKMTQ0NzQ6ICAgdm9pZCAo KmZuKSh2b2lkICopLCB2b2lkICphcmcpCjE0NDc0OiB7CjE0NDc0OiAgY2FsbC0+Zm4gPSBmbjsK MTQ0NzQ6ICBjYWxsLT5hcmcgPSBhcmc7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZG9f ZGVsYXllZF9jYWxsKHN0cnVjdCBkZWxheWVkX2NhbGwgKmNhbGwpCjE0NDc0OiB7CjE0NDc0OiAg aWYgKGNhbGwtPmZuKQoxNDQ3NDogICBjYWxsLT5mbihjYWxsLT5hcmcpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGNsZWFyX2RlbGF5ZWRfY2FsbChzdHJ1Y3QgZGVsYXllZF9jYWxsICpj YWxsKQoxNDQ3NDogewoxNDQ3NDogIGNhbGwtPmZuID0gKCh2b2lkICopMCk7CjE0NDc0OiB9CjE0 NDc0OiAjIDM3ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUv bGludXgvdXVpZC5oIiAxCjE0NDc0OiAjIDExICIuL2luY2x1ZGUvbGludXgvdXVpZC5oIgoxNDQ3 NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC91dWlkLmgiIDEKMTQ0NzQ6ICMgMjMgIi4vaW5j bHVkZS91YXBpL2xpbnV4L3V1aWQuaCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHsKMTQ0NzQ6ICBf X3U4IGJbMTZdOwoxNDQ3NDogfSBndWlkX3Q7CjE0NDc0OiAjIDM1ICIuL2luY2x1ZGUvdWFwaS9s aW51eC91dWlkLmgiCjE0NDc0OiB0eXBlZGVmIGd1aWRfdCB1dWlkX2xlOwoxNDQ3NDogIyAxMiAi Li9pbmNsdWRlL2xpbnV4L3V1aWQuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCB7CjE0NDc0OiAgX191OCBiWzE2XTsKMTQ0NzQ6IH0gdXVp ZF90OwoxNDQ3NDogIyAzMyAiLi9pbmNsdWRlL2xpbnV4L3V1aWQuaCIKMTQ0NzQ6IGV4dGVybiBj b25zdCBndWlkX3QgZ3VpZF9udWxsOwoxNDQ3NDogZXh0ZXJuIGNvbnN0IHV1aWRfdCB1dWlkX251 bGw7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ3VpZF9lcXVhbChjb25zdCBndWlkX3QgKnUxLCBjb25z dCBndWlkX3QgKnUyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBtZW1jbXAodTEsIHUyLCBzaXpl b2YoZ3VpZF90KSkgPT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBndWlkX2NvcHko Z3VpZF90ICpkc3QsIGNvbnN0IGd1aWRfdCAqc3JjKQoxNDQ3NDogewoxNDQ3NDogIG1lbWNweShk c3QsIHNyYywgc2l6ZW9mKGd1aWRfdCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGd1 aWRfaXNfbnVsbChjb25zdCBndWlkX3QgKmd1aWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGd1 aWRfZXF1YWwoZ3VpZCwgJmd1aWRfbnVsbCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg dXVpZF9lcXVhbChjb25zdCB1dWlkX3QgKnUxLCBjb25zdCB1dWlkX3QgKnUyKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBtZW1jbXAodTEsIHUyLCBzaXplb2YodXVpZF90KSkgPT0gMDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB1dWlkX2NvcHkodXVpZF90ICpkc3QsIGNvbnN0IHV1aWRf dCAqc3JjKQoxNDQ3NDogewoxNDQ3NDogIG1lbWNweShkc3QsIHNyYywgc2l6ZW9mKHV1aWRfdCkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHV1aWRfaXNfbnVsbChjb25zdCB1dWlkX3Qg KnV1aWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHV1aWRfZXF1YWwodXVpZCwgJnV1aWRfbnVs bCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZ2VuZXJhdGVfcmFuZG9tX3V1aWQodW5z aWduZWQgY2hhciB1dWlkWzE2XSk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGd1aWRfZ2Vu KGd1aWRfdCAqdSk7CjE0NDc0OiBleHRlcm4gdm9pZCB1dWlkX2dlbih1dWlkX3QgKnUpOwoxNDQ3 NDogCjE0NDc0OiBib29sIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB1 dWlkX2lzX3ZhbGlkKGNvbnN0IGNoYXIgKnV1aWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY29u c3QgdTggZ3VpZF9pbmRleFsxNl07CjE0NDc0OiBleHRlcm4gY29uc3QgdTggdXVpZF9pbmRleFsx Nl07CjE0NDc0OiAKMTQ0NzQ6IGludCBndWlkX3BhcnNlKGNvbnN0IGNoYXIgKnV1aWQsIGd1aWRf dCAqdSk7CjE0NDc0OiBpbnQgdXVpZF9wYXJzZShjb25zdCBjaGFyICp1dWlkLCB1dWlkX3QgKnUp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB1dWlk X2xlX2NtcChjb25zdCBndWlkX3QgdTEsIGNvbnN0IGd1aWRfdCB1MikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gbWVtY21wKCZ1MSwgJnUyLCBzaXplb2YoZ3VpZF90KSk7CjE0NDc0OiB9CjE0NDc0 OiAjIDM4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGlu dXgvZXJyc2VxLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1MzIgZXJyc2VxX3Q7CjE0NDc0OiAKMTQ0NzQ6 IGVycnNlcV90IGVycnNlcV9zZXQoZXJyc2VxX3QgKmVzZXEsIGludCBlcnIpOwoxNDQ3NDogZXJy c2VxX3QgZXJyc2VxX3NhbXBsZShlcnJzZXFfdCAqZXNlcSk7CjE0NDc0OiBpbnQgZXJyc2VxX2No ZWNrKGVycnNlcV90ICplc2VxLCBlcnJzZXFfdCBzaW5jZSk7CjE0NDc0OiBpbnQgZXJyc2VxX2No ZWNrX2FuZF9hZHZhbmNlKGVycnNlcV90ICplc2VxLCBlcnJzZXFfdCAqc2luY2UpOwoxNDQ3NDog IyAzOSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4 L2lvcHJpby5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDEKMTQ0NzQ6ICMgMTAgIi4vaW5jbHVkZS9saW51eC9z Y2hlZC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zY2hlZC5oIiAxCjE0NDc0 OiAjIDg5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zY2hlZC5oIgoxNDQ3NDogc3RydWN0IGNsb25l X2FyZ3MgewoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBmbGFnczsK MTQ0NzQ6ICBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgcGlkZmQ7CjE0NDc0OiAg X191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpIGNoaWxkX3RpZDsKMTQ0NzQ6ICBfX3U2 NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgcGFyZW50X3RpZDsKMTQ0NzQ6ICBfX3U2NCBf X2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkgZXhpdF9zaWduYWw7CjE0NDc0OiAgX191NjQgX19h dHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpIHN0YWNrOwoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRl X18oKGFsaWduZWQoOCkpKSBzdGFja19zaXplOwoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRlX18o KGFsaWduZWQoOCkpKSB0bHM7CjE0NDc0OiAgX191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4 KSkpIHNldF90aWQ7CjE0NDc0OiAgX191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpIHNl dF90aWRfc2l6ZTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDExICIuL2luY2x1ZGUvbGludXgvc2NoZWQu aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9zZW0uaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAj IDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2lwYy5oIiAxCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9yaGFzaHRhYmxlLXR5cGVzLmgiIDEKMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51 eC9yaGFzaHRhYmxlLXR5cGVzLmgiCjE0NDc0OiBzdHJ1Y3Qgcmhhc2hfaGVhZCB7CjE0NDc0OiAg c3RydWN0IHJoYXNoX2hlYWQgKm5leHQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg cmhsaXN0X2hlYWQgewoxNDQ3NDogIHN0cnVjdCByaGFzaF9oZWFkIHJoZWFkOwoxNDQ3NDogIHN0 cnVjdCByaGxpc3RfaGVhZCAqbmV4dDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBi dWNrZXRfdGFibGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3Qgcmhhc2h0YWJsZV9jb21wYXJlX2FyZyB7CjE0NDc0OiAgc3RydWN0 IHJoYXNodGFibGUgKmh0OwoxNDQ3NDogIGNvbnN0IHZvaWQgKmtleTsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgdTMyICgqcmh0X2hhc2hmbl90KShjb25zdCB2b2lkICpkYXRhLCB1 MzIgbGVuLCB1MzIgc2VlZCk7CjE0NDc0OiB0eXBlZGVmIHUzMiAoKnJodF9vYmpfaGFzaGZuX3Qp KGNvbnN0IHZvaWQgKmRhdGEsIHUzMiBsZW4sIHUzMiBzZWVkKTsKMTQ0NzQ6IHR5cGVkZWYgaW50 ICgqcmh0X29ial9jbXBmbl90KShzdHJ1Y3Qgcmhhc2h0YWJsZV9jb21wYXJlX2FyZyAqYXJnLAox NDQ3NDogICAgICAgICAgIGNvbnN0IHZvaWQgKm9iaik7CjE0NDc0OiAjIDU2ICIuL2luY2x1ZGUv bGludXgvcmhhc2h0YWJsZS10eXBlcy5oIgoxNDQ3NDogc3RydWN0IHJoYXNodGFibGVfcGFyYW1z IHsKMTQ0NzQ6ICB1MTYgbmVsZW1faGludDsKMTQ0NzQ6ICB1MTYga2V5X2xlbjsKMTQ0NzQ6ICB1 MTYga2V5X29mZnNldDsKMTQ0NzQ6ICB1MTYgaGVhZF9vZmZzZXQ7CjE0NDc0OiAgdW5zaWduZWQg aW50IG1heF9zaXplOwoxNDQ3NDogIHUxNiBtaW5fc2l6ZTsKMTQ0NzQ6ICBib29sIGF1dG9tYXRp Y19zaHJpbmtpbmc7CjE0NDc0OiAgcmh0X2hhc2hmbl90IGhhc2hmbjsKMTQ0NzQ6ICByaHRfb2Jq X2hhc2hmbl90IG9ial9oYXNoZm47CjE0NDc0OiAgcmh0X29ial9jbXBmbl90IG9ial9jbXBmbjsK MTQ0NzQ6IH07CjE0NDc0OiAjIDgxICIuL2luY2x1ZGUvbGludXgvcmhhc2h0YWJsZS10eXBlcy5o IgoxNDQ3NDogc3RydWN0IHJoYXNodGFibGUgewoxNDQ3NDogIHN0cnVjdCBidWNrZXRfdGFibGUg KnRibDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQga2V5X2xlbjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg bWF4X2VsZW1zOwoxNDQ3NDogIHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyBwOwoxNDQ3NDogIGJv b2wgcmhsaXN0OwoxNDQ3NDogIHN0cnVjdCB3b3JrX3N0cnVjdCBydW5fd29yazsKMTQ0NzQ6ICBz dHJ1Y3QgbXV0ZXggbXV0ZXg7CjE0NDc0OiAgc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogIGF0b21p Y190IG5lbGVtczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IHJobHRhYmxlIHsKMTQ0NzQ6ICBzdHJ1Y3Qgcmhhc2h0YWJsZSBo dDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3Qgcmhhc2h0YWJsZV93YWxrZXIgewoxNDQ3NDogIHN0cnVjdCBsaXN0 X2hlYWQgbGlzdDsKMTQ0NzQ6ICBzdHJ1Y3QgYnVja2V0X3RhYmxlICp0Ymw7CjE0NDc0OiB9Owox NDQ3NDogIyAxMjAgIi4vaW5jbHVkZS9saW51eC9yaGFzaHRhYmxlLXR5cGVzLmgiCjE0NDc0OiBz dHJ1Y3Qgcmhhc2h0YWJsZV9pdGVyIHsKMTQ0NzQ6ICBzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQ7CjE0 NDc0OiAgc3RydWN0IHJoYXNoX2hlYWQgKnA7CjE0NDc0OiAgc3RydWN0IHJobGlzdF9oZWFkICps aXN0OwoxNDQ3NDogIHN0cnVjdCByaGFzaHRhYmxlX3dhbGtlciB3YWxrZXI7CjE0NDc0OiAgdW5z aWduZWQgaW50IHNsb3Q7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNraXA7CjE0NDc0OiAgYm9vbCBl bmRfb2ZfdGFibGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBpbnQgcmhhc2h0YWJsZV9pbml0 KHN0cnVjdCByaGFzaHRhYmxlICpodCwKMTQ0NzQ6ICAgICAgIGNvbnN0IHN0cnVjdCByaGFzaHRh YmxlX3BhcmFtcyAqcGFyYW1zKTsKMTQ0NzQ6IGludCByaGx0YWJsZV9pbml0KHN0cnVjdCByaGx0 YWJsZSAqaGx0LAoxNDQ3NDogICAgIGNvbnN0IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyAqcGFy YW1zKTsKMTQ0NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L2lwYy5oIiAyCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS91YXBpL2xpbnV4L2lwYy5oIiAxCjE0NDc0OiAjIDEwICIuL2luY2x1ZGUvdWFwaS9s aW51eC9pcGMuaCIKMTQ0NzQ6IHN0cnVjdCBpcGNfcGVybQoxNDQ3NDogewoxNDQ3NDogIF9fa2Vy bmVsX2tleV90IGtleTsKMTQ0NzQ6ICBfX2tlcm5lbF91aWRfdCB1aWQ7CjE0NDc0OiAgX19rZXJu ZWxfZ2lkX3QgZ2lkOwoxNDQ3NDogIF9fa2VybmVsX3VpZF90IGN1aWQ7CjE0NDc0OiAgX19rZXJu ZWxfZ2lkX3QgY2dpZDsKMTQ0NzQ6ICBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKMTQ0NzQ6ICB1bnNp Z25lZCBzaG9ydCBzZXE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9pcGNidWYuaCIgMQoxNDQ3NDogIyAx ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9pcGNidWYuaCIgMQoxNDQ3NDogIyAyMiAiLi9p bmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaXBjYnVmLmgiCjE0NDc0OiBzdHJ1Y3QgaXBjNjRfcGVy bSB7CjE0NDc0OiAgX19rZXJuZWxfa2V5X3Qga2V5OwoxNDQ3NDogIF9fa2VybmVsX3VpZDMyX3Qg dWlkOwoxNDQ3NDogIF9fa2VybmVsX2dpZDMyX3QgZ2lkOwoxNDQ3NDogIF9fa2VybmVsX3VpZDMy X3QgY3VpZDsKMTQ0NzQ6ICBfX2tlcm5lbF9naWQzMl90IGNnaWQ7CjE0NDc0OiAgX19rZXJuZWxf bW9kZV90IG1vZGU7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIF9fcGFkMVs0IC0gc2l6 ZW9mKF9fa2VybmVsX21vZGVfdCldOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IHNlcTsKMTQ0NzQ6 ICB1bnNpZ25lZCBzaG9ydCBfX3BhZDI7CjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBfX3VudXNl ZDE7CjE0NDc0OiAgX19rZXJuZWxfdWxvbmdfdCBfX3VudXNlZDI7CjE0NDc0OiB9OwoxNDQ3NDog IyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lwY2J1Zi5oIiAyCjE0 NDc0OiAjIDIzICIuL2luY2x1ZGUvdWFwaS9saW51eC9pcGMuaCIgMgoxNDQ3NDogIyA1OCAiLi9p bmNsdWRlL3VhcGkvbGludXgvaXBjLmgiCjE0NDc0OiBzdHJ1Y3QgaXBjX2tsdWRnZSB7CjE0NDc0 OiAgc3RydWN0IG1zZ2J1ZiAqbXNncDsKMTQ0NzQ6ICBsb25nIG1zZ3R5cDsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9pcGMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGtlcm5faXBjX3Blcm0gewoxNDQ3NDogIHNwaW5sb2NrX3QgbG9jazsK MTQ0NzQ6ICBib29sIGRlbGV0ZWQ7CjE0NDc0OiAgaW50IGlkOwoxNDQ3NDogIGtleV90IGtleTsK MTQ0NzQ6ICBrdWlkX3QgdWlkOwoxNDQ3NDogIGtnaWRfdCBnaWQ7CjE0NDc0OiAga3VpZF90IGN1 aWQ7CjE0NDc0OiAga2dpZF90IGNnaWQ7CjE0NDc0OiAgdW1vZGVfdCBtb2RlOwoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgc2VxOwoxNDQ3NDogIHZvaWQgKnNlY3VyaXR5OwoxNDQ3NDogCjE0NDc0OiAg c3RydWN0IHJoYXNoX2hlYWQga2h0bm9kZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjYWxsYmFj a19oZWFkIHJjdTsKMTQ0NzQ6ICByZWZjb3VudF90IHJlZmNvdW50OwoxNDQ3NDogfSBfX2F0dHJp YnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpIF9fYXR0cmlidXRlX18oKF9fZGVzaWdu YXRlZF9pbml0X18pKTsKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2VtLmgiIDIK MTQ0NzQ6ICMgMjUgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIgoxNDQ3NDogc3RydWN0IHNl bWlkX2RzIHsKMTQ0NzQ6ICBzdHJ1Y3QgaXBjX3Blcm0gc2VtX3Blcm07CjE0NDc0OiAgX19rZXJu ZWxfb2xkX3RpbWVfdCBzZW1fb3RpbWU7CjE0NDc0OiAgX19rZXJuZWxfb2xkX3RpbWVfdCBzZW1f Y3RpbWU7CjE0NDc0OiAgc3RydWN0IHNlbSAqc2VtX2Jhc2U7CjE0NDc0OiAgc3RydWN0IHNlbV9x dWV1ZSAqc2VtX3BlbmRpbmc7CjE0NDc0OiAgc3RydWN0IHNlbV9xdWV1ZSAqKnNlbV9wZW5kaW5n X2xhc3Q7CjE0NDc0OiAgc3RydWN0IHNlbV91bmRvICp1bmRvOwoxNDQ3NDogIHVuc2lnbmVkIHNo b3J0IHNlbV9uc2VtczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2VtYnVmLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkv YXNtL2lwY2J1Zi5oIiAxCjE0NDc0OiAjIDYgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9z ZW1idWYuaCIgMgoxNDQ3NDogIyAxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NlbWJ1 Zi5oIgoxNDQ3NDogc3RydWN0IHNlbWlkNjRfZHMgewoxNDQ3NDogIHN0cnVjdCBpcGM2NF9wZXJt IHNlbV9wZXJtOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCBzZW1fb3RpbWU7CjE0NDc0OiAgX19rZXJuZWxfdWxv bmdfdCBfX3VudXNlZDE7CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IHNlbV9jdGltZTsKMTQ0NzQ6 ICBfX2tlcm5lbF91bG9uZ190IF9fdW51c2VkMjsKMTQ0NzQ6IAoxNDQ3NDogIF9fa2VybmVsX3Vs b25nX3Qgc2VtX25zZW1zOwoxNDQ3NDogIF9fa2VybmVsX3Vsb25nX3QgX191bnVzZWQzOwoxNDQ3 NDogIF9fa2VybmVsX3Vsb25nX3QgX191bnVzZWQ0OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzggIi4v aW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHNlbWJ1ZiB7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgc2VtX251bTsKMTQ0NzQ6ICBzaG9ydCBz ZW1fb3A7CjE0NDc0OiAgc2hvcnQgc2VtX2ZsZzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdW5pb24gc2VtdW4gewoxNDQ3NDogIGludCB2YWw7CjE0NDc0OiAgc3RydWN0IHNlbWlk X2RzICpidWY7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgKmFycmF5OwoxNDQ3NDogIHN0cnVjdCBz ZW1pbmZvICpfX2J1ZjsKMTQ0NzQ6ICB2b2lkICpfX3BhZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBzZW1pbmZvIHsKMTQ0NzQ6ICBpbnQgc2VtbWFwOwoxNDQ3NDogIGludCBzZW1t bmk7CjE0NDc0OiAgaW50IHNlbW1uczsKMTQ0NzQ6ICBpbnQgc2VtbW51OwoxNDQ3NDogIGludCBz ZW1tc2w7CjE0NDc0OiAgaW50IHNlbW9wbTsKMTQ0NzQ6ICBpbnQgc2VtdW1lOwoxNDQ3NDogIGlu dCBzZW11c3o7CjE0NDc0OiAgaW50IHNlbXZteDsKMTQ0NzQ6ICBpbnQgc2VtYWVtOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2xpbnV4L3NlbS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCB0YXNrX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCBzZW1fdW5kb19saXN0OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHN5c3Zfc2VtIHsKMTQ0NzQ6ICBzdHJ1Y3Qgc2Vt X3VuZG9fbGlzdCAqdW5kb19saXN0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGlu dCBjb3B5X3NlbXVuZG8odW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncywgc3RydWN0IHRhc2tfc3Ry dWN0ICp0c2spOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZXhpdF9zZW0oc3RydWN0IHRhc2tfc3RydWN0 ICp0c2spOwoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMg MSAiLi9pbmNsdWRlL2xpbnV4L3NobS5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NobS5o IiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2h1Z2V0bGJfZW5jb2RlLmgiIDEKMTQ0 NzQ6ICMgOCAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2htLmgiIDIKMTQ0NzQ6ICMgMjggIi4vaW5j bHVkZS91YXBpL2xpbnV4L3NobS5oIgoxNDQ3NDogc3RydWN0IHNobWlkX2RzIHsKMTQ0NzQ6ICBz dHJ1Y3QgaXBjX3Blcm0gc2htX3Blcm07CjE0NDc0OiAgaW50IHNobV9zZWdzejsKMTQ0NzQ6ICBf X2tlcm5lbF9vbGRfdGltZV90IHNobV9hdGltZTsKMTQ0NzQ6ICBfX2tlcm5lbF9vbGRfdGltZV90 IHNobV9kdGltZTsKMTQ0NzQ6ICBfX2tlcm5lbF9vbGRfdGltZV90IHNobV9jdGltZTsKMTQ0NzQ6 ICBfX2tlcm5lbF9pcGNfcGlkX3Qgc2htX2NwaWQ7CjE0NDc0OiAgX19rZXJuZWxfaXBjX3BpZF90 IHNobV9scGlkOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IHNobV9uYXR0Y2g7CjE0NDc0OiAgdW5z aWduZWQgc2hvcnQgc2htX3VudXNlZDsKMTQ0NzQ6ICB2b2lkICpzaG1fdW51c2VkMjsKMTQ0NzQ6 ICB2b2lkICpzaG1fdW51c2VkMzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAx ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2htYnVmLmgiIDEKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1n ZW5lcmljL3NobWJ1Zi5oIiAxCjE0NDc0OiAjIDI1ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJp Yy9zaG1idWYuaCIKMTQ0NzQ6IHN0cnVjdCBzaG1pZDY0X2RzIHsKMTQ0NzQ6ICBzdHJ1Y3QgaXBj NjRfcGVybSBzaG1fcGVybTsKMTQ0NzQ6ICBzaXplX3Qgc2htX3NlZ3N6OwoxNDQ3NDogCjE0NDc0 OiAgbG9uZyBzaG1fYXRpbWU7CjE0NDc0OiAgbG9uZyBzaG1fZHRpbWU7CjE0NDc0OiAgbG9uZyBz aG1fY3RpbWU7CjE0NDc0OiAjIDQwICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaG1idWYu aCIKMTQ0NzQ6ICBfX2tlcm5lbF9waWRfdCBzaG1fY3BpZDsKMTQ0NzQ6ICBfX2tlcm5lbF9waWRf dCBzaG1fbHBpZDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNobV9uYXR0Y2g7CjE0NDc0OiAgdW5z aWduZWQgbG9uZyBfX3VudXNlZDQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBfX3VudXNlZDU7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2htaW5mbzY0IHsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIHNobW1heDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNobW1pbjsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHNobW1uaTsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNobXNlZzsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIHNobWFsbDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMTsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIF9fdW51 c2VkMzsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKMTQ0NzQ6IH07CjE0NDc0OiAj IDcgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaG1idWYuaCIgMgoxNDQ3NDogIyA0NCAi Li9pbmNsdWRlL3VhcGkvbGludXgvc2htLmgiIDIKMTQ0NzQ6ICMgOTMgIi4vaW5jbHVkZS91YXBp L2xpbnV4L3NobS5oIgoxNDQ3NDogc3RydWN0IHNobWluZm8gewoxNDQ3NDogIGludCBzaG1tYXg7 CjE0NDc0OiAgaW50IHNobW1pbjsKMTQ0NzQ6ICBpbnQgc2htbW5pOwoxNDQ3NDogIGludCBzaG1z ZWc7CjE0NDc0OiAgaW50IHNobWFsbDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBz aG1faW5mbyB7CjE0NDc0OiAgaW50IHVzZWRfaWRzOwoxNDQ3NDogIF9fa2VybmVsX3Vsb25nX3Qg c2htX3RvdDsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHNobV9yc3M7CjE0NDc0OiAgX19rZXJu ZWxfdWxvbmdfdCBzaG1fc3dwOwoxNDQ3NDogIF9fa2VybmVsX3Vsb25nX3Qgc3dhcF9hdHRlbXB0 czsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHN3YXBfc3VjY2Vzc2VzOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgOCAiLi9pbmNsdWRlL2xpbnV4L3NobS5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vc2htcGFyYW0uaCIgMQoxNDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvc2ht LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHN5c3Zfc2htIHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIHNobV9jbGlzdDsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGxvbmcgZG9fc2htYXQoaW50IHNobWlkLCBjaGFyICpzaG1h ZGRyLCBpbnQgc2htZmxnLCB1bnNpZ25lZCBsb25nICphZGRyLAoxNDQ3NDogICAgICAgIHVuc2ln bmVkIGxvbmcgc2htbGJhKTsKMTQ0NzQ6IGJvb2wgaXNfZmlsZV9zaG1faHVnZXBhZ2VzKHN0cnVj dCBmaWxlICpmaWxlKTsKMTQ0NzQ6IHZvaWQgZXhpdF9zaG0oc3RydWN0IHRhc2tfc3RydWN0ICp0 YXNrKTsKMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCjE0NDc0OiAjIDEg Ii4vaW5jbHVkZS9saW51eC9rY292LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9rY292LmgiIDEKMTQ0NzQ6ICMgMTEg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2tjb3YuaCIKMTQ0NzQ6IHN0cnVjdCBrY292X3JlbW90ZV9h cmcgewoxNDQ3NDogIF9fdTMyIHRyYWNlX21vZGU7CjE0NDc0OiAgX191MzIgYXJlYV9zaXplOwox NDQ3NDogIF9fdTMyIG51bV9oYW5kbGVzOwoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRlX18oKGFs aWduZWQoOCkpKSBjb21tb25faGFuZGxlOwoxNDQ3NDogIF9fdTY0IF9fYXR0cmlidXRlX18oKGFs aWduZWQoOCkpKSBoYW5kbGVzWzBdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjYgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2tjb3YuaCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIyAzNSAiLi9pbmNsdWRlL3Vh cGkvbGludXgva2Nvdi5oIgoxNDQ3NDogIEtDT1ZfVFJBQ0VfUEMgPSAwLAoxNDQ3NDogCjE0NDc0 OiAgS0NPVl9UUkFDRV9DTVAgPSAxLAoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTYgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2tjb3YuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fdTY0IGtjb3ZfcmVtb3RlX2hhbmRsZShfX3U2NCBz dWJzeXMsIF9fdTY0IGluc3QpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHN1YnN5cyAmIH4oMHhmZnVs bCA8PCA1NikgfHwgaW5zdCAmIH4oMHhmZmZmZmZmZnVsbCkpCjE0NDc0OiAgIHJldHVybiAwOwox NDQ3NDogIHJldHVybiBzdWJzeXMgfCBpbnN0OwoxNDQ3NDogfQoxNDQ3NDogIyA2ICIuL2luY2x1 ZGUvbGludXgva2Nvdi5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0YXNrX3N0cnVjdDsKMTQ0 NzQ6ICMgNTcgIi4vaW5jbHVkZS9saW51eC9rY292LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtjb3ZfdGFza19p bml0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl90YXNrX2V4aXQo c3RydWN0IHRhc2tfc3RydWN0ICp0KSB7fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrY292X3ByZXBhcmVfc3dpdGNo KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl9maW5pc2hfc3dpdGNo KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl9yZW1vdGVfc3RhcnQo dTY0IGhhbmRsZSkge30KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl9yZW1vdGVfc3RvcCh2b2lkKSB7fQoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdTY0IGtjb3ZfY29tbW9uX2hhbmRsZSh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAw OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrY292X3JlbW90ZV9zdGFydF9jb21tb24odTY0IGlkKSB7 fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBrY292X3JlbW90ZV9zdGFydF91c2IodTY0IGlkKSB7fQoxNDQ3NDogIyAx OCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvcGxpc3QuaCIgMQoxNDQ3NDogIyA3OSAiLi9pbmNsdWRlL2xpbnV4L3BsaXN0Lmgi CjE0NDc0OiBzdHJ1Y3QgcGxpc3RfaGVhZCB7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBub2Rl X2xpc3Q7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGxpc3Rfbm9kZSB7CjE0NDc0 OiAgaW50IHByaW87CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBwcmlvX2xpc3Q7CjE0NDc0OiAg c3RydWN0IGxpc3RfaGVhZCBub2RlX2xpc3Q7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjEgIi4vaW5j bHVkZS9saW51eC9wbGlzdC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAoxNDQ3NDogcGxpc3RfaGVhZF9pbml0KHN0 cnVjdCBwbGlzdF9oZWFkICpoZWFkKQoxNDQ3NDogewoxNDQ3NDogIElOSVRfTElTVF9IRUFEKCZo ZWFkLT5ub2RlX2xpc3QpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwbGlzdF9ub2RlX2luaXQoc3RydWN0IHBsaXN0 X25vZGUgKm5vZGUsIGludCBwcmlvKQoxNDQ3NDogewoxNDQ3NDogIG5vZGUtPnByaW8gPSBwcmlv OwoxNDQ3NDogIElOSVRfTElTVF9IRUFEKCZub2RlLT5wcmlvX2xpc3QpOwoxNDQ3NDogIElOSVRf TElTVF9IRUFEKCZub2RlLT5ub2RlX2xpc3QpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBwbGlzdF9hZGQoc3RydWN0IHBsaXN0X25vZGUgKm5vZGUsIHN0cnVjdCBwbGlzdF9o ZWFkICpoZWFkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHBsaXN0X2RlbChzdHJ1Y3QgcGxpc3Rfbm9k ZSAqbm9kZSwgc3RydWN0IHBsaXN0X2hlYWQgKmhlYWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4g dm9pZCBwbGlzdF9yZXF1ZXVlKHN0cnVjdCBwbGlzdF9ub2RlICpub2RlLCBzdHJ1Y3QgcGxpc3Rf aGVhZCAqaGVhZCk7CjE0NDc0OiAjIDIxMCAiLi9pbmNsdWRlL2xpbnV4L3BsaXN0LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgcGxpc3RfaGVhZF9lbXB0eShjb25zdCBzdHJ1Y3QgcGxpc3RfaGVhZCAqaGVhZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbGlzdF9lbXB0eSgmaGVhZC0+bm9kZV9saXN0KTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGxp c3Rfbm9kZV9lbXB0eShjb25zdCBzdHJ1Y3QgcGxpc3Rfbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gbGlzdF9lbXB0eSgmbm9kZS0+bm9kZV9saXN0KTsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjgwICIuL2luY2x1ZGUvbGludXgvcGxpc3QuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwbGlzdF9ub2Rl ICpwbGlzdF9maXJzdChjb25zdCBzdHJ1Y3QgcGxpc3RfaGVhZCAqaGVhZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikoaGVhZC0+bm9kZV9saXN0Lm5l eHQpOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI4Mih2b2lkKSBfX2F0 dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWluZXJf b2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCoo aGVhZC0+bm9kZV9saXN0Lm5leHQpKSwgdHlwZW9mKCgoc3RydWN0IHBsaXN0X25vZGUgKikwKS0+ bm9kZV9saXN0KSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooaGVh ZC0+bm9kZV9saXN0Lm5leHQpKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF8yODIoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IHBsaXN0X25vZGUgKikoX19tcHRyIC0gX19i dWlsdGluX29mZnNldG9mKHN0cnVjdCBwbGlzdF9ub2RlLCBub2RlX2xpc3QpKSk7IH0pCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgcGxpc3Rfbm9kZSAqcGxpc3RfbGFzdChjb25zdCBzdHJ1Y3QgcGxpc3RfaGVhZCAqaGVhZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikoaGVhZC0+ bm9kZV9saXN0LnByZXYpOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI5 NCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBp biBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxl X3AodHlwZW9mKCooaGVhZC0+bm9kZV9saXN0LnByZXYpKSwgdHlwZW9mKCgoc3RydWN0IHBsaXN0 X25vZGUgKikwKS0+bm9kZV9saXN0KSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3Ao dHlwZW9mKCooaGVhZC0+bm9kZV9saXN0LnByZXYpKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBp bGV0aW1lX2Fzc2VydF8yOTQoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IHBsaXN0X25vZGUgKiko X19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwbGlzdF9ub2RlLCBub2RlX2xpc3Qp KSk7IH0pCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDog fQoxNDQ3NDogIyAyMCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMgMSAiLi9p bmNsdWRlL2xpbnV4L2hydGltZXIuaCIgMQoxNDQ3NDogIyAxNSAiLi9pbmNsdWRlL2xpbnV4L2hy dGltZXIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2hydGltZXJfZGVmcy5oIiAxCjE0 NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lci5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvdGltZXJx dWV1ZS5oIiAxCjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC90aW1lcnF1ZXVlLmgiCjE0NDc0 OiBzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlIHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSBub2RlOwox NDQ3NDogIGt0aW1lX3QgZXhwaXJlczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0 aW1lcnF1ZXVlX2hlYWQgewoxNDQ3NDogIHN0cnVjdCByYl9yb290X2NhY2hlZCByYl9yb290Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCB0aW1lcnF1ZXVlX2Fk ZChzdHJ1Y3QgdGltZXJxdWV1ZV9oZWFkICpoZWFkLAoxNDQ3NDogICAgICAgc3RydWN0IHRpbWVy cXVldWVfbm9kZSAqbm9kZSk7CjE0NDc0OiBleHRlcm4gYm9vbCB0aW1lcnF1ZXVlX2RlbChzdHJ1 Y3QgdGltZXJxdWV1ZV9oZWFkICpoZWFkLAoxNDQ3NDogICAgICAgc3RydWN0IHRpbWVycXVldWVf bm9kZSAqbm9kZSk7CjE0NDc0OiBleHRlcm4gc3RydWN0IHRpbWVycXVldWVfbm9kZSAqdGltZXJx dWV1ZV9pdGVyYXRlX25leHQoCjE0NDc0OiAgICAgICBzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpu b2RlKTsKMTQ0NzQ6ICMgMzMgIi4vaW5jbHVkZS9saW51eC90aW1lcnF1ZXVlLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQox NDQ3NDogc3RydWN0IHRpbWVycXVldWVfbm9kZSAqdGltZXJxdWV1ZV9nZXRuZXh0KHN0cnVjdCB0 aW1lcnF1ZXVlX2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IHJiX25vZGUgKmxl ZnRtb3N0ID0gKCZoZWFkLT5yYl9yb290KS0+cmJfbGVmdG1vc3Q7CjE0NDc0OiAKMTQ0NzQ6ICBy ZXR1cm4gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikobGVmdG1vc3QpOyBkbyB7IGV4dGVybiB2 b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzM4KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3Jf XygicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISgh X19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihsZWZ0bW9zdCkpLCB0eXBlb2Yo KChzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICopMCktPm5vZGUpKSAmJiAhX19idWlsdGluX3R5cGVz X2NvbXBhdGlibGVfcCh0eXBlb2YoKihsZWZ0bW9zdCkpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29t cGlsZXRpbWVfYXNzZXJ0XzM4KCk7IH0gd2hpbGUgKDApOyAoKHN0cnVjdCB0aW1lcnF1ZXVlX25v ZGUgKikoX19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCB0aW1lcnF1ZXVlX25vZGUs IG5vZGUpKSk7IH0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRpbWVycXVldWVfaW5p dChzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpub2RlKQoxNDQ3NDogewoxNDQ3NDogICgoJm5vZGUt Pm5vZGUpLT5fX3JiX3BhcmVudF9jb2xvciA9ICh1bnNpZ25lZCBsb25nKSgmbm9kZS0+bm9kZSkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRpbWVycXVldWVfbm9kZV9xdWV1ZWQoc3Ry dWN0IHRpbWVycXVldWVfbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gISgoJm5v ZGUtPm5vZGUpLT5fX3JiX3BhcmVudF9jb2xvciA9PSAodW5zaWduZWQgbG9uZykoJm5vZGUtPm5v ZGUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0aW1lcnF1ZXVlX25vZGVfZXhwaXJl cyhzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBu b2RlLT5leHBpcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRpbWVycXVldWVfaW5p dF9oZWFkKHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgKmhlYWQpCjE0NDc0OiB7CjE0NDc0OiAgaGVh ZC0+cmJfcm9vdCA9IChzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQpIHsgeygodm9pZCAqKTApLCB9LCAo KHZvaWQgKikwKSB9OwoxNDQ3NDogfQoxNDQ3NDogIyAyMiAiLi9pbmNsdWRlL2xpbnV4L2hydGlt ZXIuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNlOwoxNDQ3NDog c3RydWN0IGhydGltZXJfY3B1X2Jhc2U7CjE0NDc0OiAjIDM4ICIuL2luY2x1ZGUvbGludXgvaHJ0 aW1lci5oIgoxNDQ3NDogZW51bSBocnRpbWVyX21vZGUgewoxNDQ3NDogIEhSVElNRVJfTU9ERV9B QlMgPSAweDAwLAoxNDQ3NDogIEhSVElNRVJfTU9ERV9SRUwgPSAweDAxLAoxNDQ3NDogIEhSVElN RVJfTU9ERV9QSU5ORUQgPSAweDAyLAoxNDQ3NDogIEhSVElNRVJfTU9ERV9TT0ZUID0gMHgwNCwK MTQ0NzQ6ICBIUlRJTUVSX01PREVfSEFSRCA9IDB4MDgsCjE0NDc0OiAKMTQ0NzQ6ICBIUlRJTUVS X01PREVfQUJTX1BJTk5FRCA9IEhSVElNRVJfTU9ERV9BQlMgfCBIUlRJTUVSX01PREVfUElOTkVE LAoxNDQ3NDogIEhSVElNRVJfTU9ERV9SRUxfUElOTkVEID0gSFJUSU1FUl9NT0RFX1JFTCB8IEhS VElNRVJfTU9ERV9QSU5ORUQsCjE0NDc0OiAKMTQ0NzQ6ICBIUlRJTUVSX01PREVfQUJTX1NPRlQg PSBIUlRJTUVSX01PREVfQUJTIHwgSFJUSU1FUl9NT0RFX1NPRlQsCjE0NDc0OiAgSFJUSU1FUl9N T0RFX1JFTF9TT0ZUID0gSFJUSU1FUl9NT0RFX1JFTCB8IEhSVElNRVJfTU9ERV9TT0ZULAoxNDQ3 NDogCjE0NDc0OiAgSFJUSU1FUl9NT0RFX0FCU19QSU5ORURfU09GVCA9IEhSVElNRVJfTU9ERV9B QlNfUElOTkVEIHwgSFJUSU1FUl9NT0RFX1NPRlQsCjE0NDc0OiAgSFJUSU1FUl9NT0RFX1JFTF9Q SU5ORURfU09GVCA9IEhSVElNRVJfTU9ERV9SRUxfUElOTkVEIHwgSFJUSU1FUl9NT0RFX1NPRlQs CjE0NDc0OiAKMTQ0NzQ6ICBIUlRJTUVSX01PREVfQUJTX0hBUkQgPSBIUlRJTUVSX01PREVfQUJT IHwgSFJUSU1FUl9NT0RFX0hBUkQsCjE0NDc0OiAgSFJUSU1FUl9NT0RFX1JFTF9IQVJEID0gSFJU SU1FUl9NT0RFX1JFTCB8IEhSVElNRVJfTU9ERV9IQVJELAoxNDQ3NDogCjE0NDc0OiAgSFJUSU1F Ul9NT0RFX0FCU19QSU5ORURfSEFSRCA9IEhSVElNRVJfTU9ERV9BQlNfUElOTkVEIHwgSFJUSU1F Ul9NT0RFX0hBUkQsCjE0NDc0OiAgSFJUSU1FUl9NT0RFX1JFTF9QSU5ORURfSEFSRCA9IEhSVElN RVJfTU9ERV9SRUxfUElOTkVEIHwgSFJUSU1FUl9NT0RFX0hBUkQsCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGhydGltZXJfcmVzdGFydCB7CjE0 NDc0OiAgSFJUSU1FUl9OT1JFU1RBUlQsCjE0NDc0OiAgSFJUSU1FUl9SRVNUQVJULAoxNDQ3NDog fTsKMTQ0NzQ6ICMgMTE3ICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lci5oIgoxNDQ3NDogc3RydWN0 IGhydGltZXIgewoxNDQ3NDogIHN0cnVjdCB0aW1lcnF1ZXVlX25vZGUgbm9kZTsKMTQ0NzQ6ICBr dGltZV90IF9zb2Z0ZXhwaXJlczsKMTQ0NzQ6ICBlbnVtIGhydGltZXJfcmVzdGFydCAoKmZ1bmN0 aW9uKShzdHJ1Y3QgaHJ0aW1lciAqKTsKMTQ0NzQ6ICBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNl ICpiYXNlOwoxNDQ3NDogIHU4IHN0YXRlOwoxNDQ3NDogIHU4IGlzX3JlbDsKMTQ0NzQ6ICB1OCBp c19zb2Z0OwoxNDQ3NDogIHU4IGlzX2hhcmQ7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMzUgIi4vaW5j bHVkZS9saW51eC9ocnRpbWVyLmgiCjE0NDc0OiBzdHJ1Y3QgaHJ0aW1lcl9zbGVlcGVyIHsKMTQ0 NzQ6ICBzdHJ1Y3QgaHJ0aW1lciB0aW1lcjsKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2s7CjE0NDc0OiB9OwoxNDQ3NDogIyAxNTggIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiCjE0 NDc0OiBzdHJ1Y3QgaHJ0aW1lcl9jbG9ja19iYXNlIHsKMTQ0NzQ6ICBzdHJ1Y3QgaHJ0aW1lcl9j cHVfYmFzZSAqY3B1X2Jhc2U7CjE0NDc0OiAgdW5zaWduZWQgaW50IGluZGV4OwoxNDQ3NDogIGNs b2NraWRfdCBjbG9ja2lkOwoxNDQ3NDogIHNlcWNvdW50X3Qgc2VxOwoxNDQ3NDogIHN0cnVjdCBo cnRpbWVyICpydW5uaW5nOwoxNDQ3NDogIHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgYWN0aXZlOwox NDQ3NDogIGt0aW1lX3QgKCpnZXRfdGltZSkodm9pZCk7CjE0NDc0OiAga3RpbWVfdCBvZmZzZXQ7 CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSk7CjE0NDc0 OiAKMTQ0NzQ6IGVudW0gaHJ0aW1lcl9iYXNlX3R5cGUgewoxNDQ3NDogIEhSVElNRVJfQkFTRV9N T05PVE9OSUMsCjE0NDc0OiAgSFJUSU1FUl9CQVNFX1JFQUxUSU1FLAoxNDQ3NDogIEhSVElNRVJf QkFTRV9CT09UVElNRSwKMTQ0NzQ6ICBIUlRJTUVSX0JBU0VfVEFJLAoxNDQ3NDogIEhSVElNRVJf QkFTRV9NT05PVE9OSUNfU09GVCwKMTQ0NzQ6ICBIUlRJTUVSX0JBU0VfUkVBTFRJTUVfU09GVCwK MTQ0NzQ6ICBIUlRJTUVSX0JBU0VfQk9PVFRJTUVfU09GVCwKMTQ0NzQ6ICBIUlRJTUVSX0JBU0Vf VEFJX1NPRlQsCjE0NDc0OiAgSFJUSU1FUl9NQVhfQ0xPQ0tfQkFTRVMsCjE0NDc0OiB9OwoxNDQ3 NDogIyAyMTMgIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiCjE0NDc0OiBzdHJ1Y3QgaHJ0aW1l cl9jcHVfYmFzZSB7CjE0NDc0OiAgcmF3X3NwaW5sb2NrX3QgbG9jazsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgY3B1OwoxNDQ3NDogIHVuc2lnbmVkIGludCBhY3RpdmVfYmFzZXM7CjE0NDc0OiAgdW5z aWduZWQgaW50IGNsb2NrX3dhc19zZXRfc2VxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBocmVzX2Fj dGl2ZSA6IDEsCjE0NDc0OiAgICAgIGluX2hydGlycSA6IDEsCjE0NDc0OiAgICAgIGhhbmdfZGV0 ZWN0ZWQgOiAxLAoxNDQ3NDogICAgICBzb2Z0aXJxX2FjdGl2YXRlZCA6IDE7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgbnJfZXZlbnRzOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IG5yX3Jl dHJpZXM7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgbnJfaGFuZ3M7CjE0NDc0OiAgdW5zaWduZWQg aW50IG1heF9oYW5nX3RpbWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIGt0aW1lX3QgZXhwaXJlc19uZXh0OwoxNDQ3NDogIHN0cnVjdCBocnRpbWVyICpu ZXh0X3RpbWVyOwoxNDQ3NDogIGt0aW1lX3Qgc29mdGlycV9leHBpcmVzX25leHQ7CjE0NDc0OiAg c3RydWN0IGhydGltZXIgKnNvZnRpcnFfbmV4dF90aW1lcjsKMTQ0NzQ6ICBzdHJ1Y3QgaHJ0aW1l cl9jbG9ja19iYXNlIGNsb2NrX2Jhc2VbSFJUSU1FUl9NQVhfQ0xPQ0tfQkFTRVNdOwoxNDQ3NDog fSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpOwoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGhydGltZXJfc2V0X2V4cGlyZXMoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90 IHRpbWUpCjE0NDc0OiB7CjE0NDc0OiAgdGltZXItPm5vZGUuZXhwaXJlcyA9IHRpbWU7CjE0NDc0 OiAgdGltZXItPl9zb2Z0ZXhwaXJlcyA9IHRpbWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaHJ0aW1lcl9zZXRfZXhwaXJlc19yYW5nZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIGt0aW1l X3QgdGltZSwga3RpbWVfdCBkZWx0YSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB0aW1lci0+X3NvZnRleHBp cmVzID0gdGltZTsKMTQ0NzQ6ICB0aW1lci0+bm9kZS5leHBpcmVzID0ga3RpbWVfYWRkX3NhZmUo dGltZSwgZGVsdGEpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfc2V0X2V4 cGlyZXNfcmFuZ2VfbnMoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbWUsIHU2NCBk ZWx0YSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB0aW1lci0+X3NvZnRleHBpcmVzID0gdGltZTsKMTQ0NzQ6 ICB0aW1lci0+bm9kZS5leHBpcmVzID0ga3RpbWVfYWRkX3NhZmUodGltZSwgbnNfdG9fa3RpbWUo ZGVsdGEpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRpbWVyX3NldF9leHBpcmVz X3R2NjQoc3RydWN0IGhydGltZXIgKnRpbWVyLCBzNjQgdHY2NCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB0 aW1lci0+bm9kZS5leHBpcmVzID0gdHY2NDsKMTQ0NzQ6ICB0aW1lci0+X3NvZnRleHBpcmVzID0g dHY2NDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRpbWVyX2FkZF9leHBpcmVzKHN0 cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCB0aW1lKQoxNDQ3NDogewoxNDQ3NDogIHRpbWVy LT5ub2RlLmV4cGlyZXMgPSBrdGltZV9hZGRfc2FmZSh0aW1lci0+bm9kZS5leHBpcmVzLCB0aW1l KTsKMTQ0NzQ6ICB0aW1lci0+X3NvZnRleHBpcmVzID0ga3RpbWVfYWRkX3NhZmUodGltZXItPl9z b2Z0ZXhwaXJlcywgdGltZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9h ZGRfZXhwaXJlc19ucyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIHU2NCBucykKMTQ0NzQ6IHsKMTQ0 NzQ6ICB0aW1lci0+bm9kZS5leHBpcmVzID0gKCh0aW1lci0+bm9kZS5leHBpcmVzKSArIChucykp OwoxNDQ3NDogIHRpbWVyLT5fc29mdGV4cGlyZXMgPSAoKHRpbWVyLT5fc29mdGV4cGlyZXMpICsg KG5zKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgaHJ0aW1lcl9nZXRfZXhwaXJl cyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHRp bWVyLT5ub2RlLmV4cGlyZXM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgaHJ0aW1l cl9nZXRfc29mdGV4cGlyZXMoY29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiB0aW1lci0+X3NvZnRleHBpcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBzNjQgaHJ0aW1lcl9nZXRfZXhwaXJlc190djY0KGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1l cikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGltZXItPm5vZGUuZXhwaXJlczsKMTQ0NzQ6IH0K MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHM2NCBocnRpbWVyX2dldF9zb2Z0ZXhwaXJlc190djY0KGNvbnN0IHN0cnVjdCBocnRp bWVyICp0aW1lcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGltZXItPl9zb2Z0ZXhwaXJlczsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGhydGltZXJfZ2V0X2V4cGlyZXNfbnMoY29uc3Qg c3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrdGltZV90b19u cyh0aW1lci0+bm9kZS5leHBpcmVzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBo cnRpbWVyX2V4cGlyZXNfcmVtYWluaW5nKGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh0aW1lci0+bm9kZS5leHBpcmVzKSAtICh0aW1lci0+YmFz ZS0+Z2V0X3RpbWUoKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGhydGltZXJf Y2JfZ2V0X3RpbWUoc3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biB0aW1lci0+YmFzZS0+Z2V0X3RpbWUoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGhy dGltZXJfaXNfaHJlc19hY3RpdmUoc3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiAxID8KMTQ0NzQ6ICAgdGltZXItPmJhc2UtPmNwdV9iYXNlLT5ocmVzX2FjdGl2 ZSA6IDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsb2NrX2V2ZW50 X2RldmljZTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgaHJ0aW1lcl9pbnRlcnJ1cHQoc3Ry dWN0IGNsb2NrX2V2ZW50X2RldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQg Y2xvY2tfd2FzX3NldF9kZWxheWVkKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdW5zaWdu ZWQgaW50IGhydGltZXJfcmVzb2x1dGlvbjsKMTQ0NzQ6ICMgMzMyICIuL2luY2x1ZGUvbGludXgv aHJ0aW1lci5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdAoxNDQ3NDogX19ocnRpbWVyX2V4cGlyZXNfcmVtYWlu aW5nX2FkanVzdGVkKGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCBub3cpCjE0 NDc0OiB7CjE0NDc0OiAga3RpbWVfdCByZW0gPSAoKHRpbWVyLT5ub2RlLmV4cGlyZXMpIC0gKG5v dykpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpZiAo MCAmJiB0aW1lci0+aXNfcmVsKQoxNDQ3NDogICByZW0gLT0gaHJ0aW1lcl9yZXNvbHV0aW9uOwox NDQ3NDogIHJldHVybiByZW07CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QKMTQ0NzQ6 IGhydGltZXJfZXhwaXJlc19yZW1haW5pbmdfYWRqdXN0ZWQoY29uc3Qgc3RydWN0IGhydGltZXIg KnRpbWVyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2hydGltZXJfZXhwaXJlc19yZW1haW5p bmdfYWRqdXN0ZWQodGltZXIsCjE0NDc0OiAgICAgICAgICAgdGltZXItPmJhc2UtPmdldF90aW1l KCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBjbG9ja193YXNfc2V0KHZv aWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCB0aW1lcmZkX2Nsb2NrX3dhc19zZXQodm9p ZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBocnRpbWVyc19y ZXN1bWUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9u KCIuZGF0YS4ucGVyY3B1IiAiIikpKSBfX3R5cGVvZl9fKHN0cnVjdCB0aWNrX2RldmljZSkgdGlj a19jcHVfZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGhydGltZXJfY2FuY2VsX3dhaXRfcnVubmluZyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCjE0NDc0 OiB7CjE0NDc0OiAgY3B1X3JlbGF4KCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgaHJ0aW1lcl9pbml0KHN0cnVjdCBo cnRpbWVyICp0aW1lciwgY2xvY2tpZF90IHdoaWNoX2Nsb2NrLAoxNDQ3NDogICAgIGVudW0gaHJ0 aW1lcl9tb2RlIG1vZGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaHJ0aW1lcl9pbml0X3NsZWVwZXIo c3RydWN0IGhydGltZXJfc2xlZXBlciAqc2wsIGNsb2NraWRfdCBjbG9ja19pZCwKMTQ0NzQ6ICAg ICAgZW51bSBocnRpbWVyX21vZGUgbW9kZSk7CjE0NDc0OiAjIDM4OSAiLi9pbmNsdWRlL2xpbnV4 L2hydGltZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9pbml0X29uX3N0YWNrKHN0cnVjdCBocnRp bWVyICp0aW1lciwKMTQ0NzQ6ICAgICAgIGNsb2NraWRfdCB3aGljaF9jbG9jaywKMTQ0NzQ6ICAg ICAgIGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpCjE0NDc0OiB7CjE0NDc0OiAgaHJ0aW1lcl9pbml0 KHRpbWVyLCB3aGljaF9jbG9jaywgbW9kZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg aHJ0aW1lcl9pbml0X3NsZWVwZXJfb25fc3RhY2soc3RydWN0IGhydGltZXJfc2xlZXBlciAqc2ws CjE0NDc0OiAgICAgICAgY2xvY2tpZF90IGNsb2NrX2lkLAoxNDQ3NDogICAgICAgIGVudW0gaHJ0 aW1lcl9tb2RlIG1vZGUpCjE0NDc0OiB7CjE0NDc0OiAgaHJ0aW1lcl9pbml0X3NsZWVwZXIoc2ws IGNsb2NrX2lkLCBtb2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXN0cm95X2hy dGltZXJfb25fc3RhY2soc3RydWN0IGhydGltZXIgKnRpbWVyKSB7IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGhydGltZXJfc3RhcnRfcmFuZ2VfbnMoc3RydWN0 IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbSwKMTQ0NzQ6ICAgICAgICB1NjQgcmFuZ2VfbnMs IGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwoxNDQ3NDogIyA0MTggIi4vaW5jbHVkZS9s aW51eC9ocnRpbWVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfc3RhcnQoc3RydWN0IGhydGltZXIg KnRpbWVyLCBrdGltZV90IHRpbSwKMTQ0NzQ6ICAgICAgY29uc3QgZW51bSBocnRpbWVyX21vZGUg bW9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBocnRpbWVyX3N0YXJ0X3JhbmdlX25zKHRpbWVyLCB0aW0s IDAsIG1vZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGhydGltZXJfY2Fu Y2VsKHN0cnVjdCBocnRpbWVyICp0aW1lcik7CjE0NDc0OiBleHRlcm4gaW50IGhydGltZXJfdHJ5 X3RvX2NhbmNlbChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhy dGltZXJfc3RhcnRfZXhwaXJlcyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsCjE0NDc0OiAgICAgICBl bnVtIGhydGltZXJfbW9kZSBtb2RlKQoxNDQ3NDogewoxNDQ3NDogIHU2NCBkZWx0YTsKMTQ0NzQ6 ICBrdGltZV90IHNvZnQsIGhhcmQ7CjE0NDc0OiAgc29mdCA9IGhydGltZXJfZ2V0X3NvZnRleHBp cmVzKHRpbWVyKTsKMTQ0NzQ6ICBoYXJkID0gaHJ0aW1lcl9nZXRfZXhwaXJlcyh0aW1lcik7CjE0 NDc0OiAgZGVsdGEgPSBrdGltZV90b19ucygoKGhhcmQpIC0gKHNvZnQpKSk7CjE0NDc0OiAgaHJ0 aW1lcl9zdGFydF9yYW5nZV9ucyh0aW1lciwgc29mdCwgZGVsdGEsIG1vZGUpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiB2b2lkIGhydGltZXJfc2xlZXBlcl9zdGFydF9leHBpcmVzKHN0cnVjdCBo cnRpbWVyX3NsZWVwZXIgKnNsLAoxNDQ3NDogICAgICAgIGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUp OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfcmVzdGFydChzdHJ1Y3QgaHJ0aW1lciAqdGlt ZXIpCjE0NDc0OiB7CjE0NDc0OiAgaHJ0aW1lcl9zdGFydF9leHBpcmVzKHRpbWVyLCBIUlRJTUVS X01PREVfQUJTKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4ga3RpbWVf dCBfX2hydGltZXJfZ2V0X3JlbWFpbmluZyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIGJv b2wgYWRqdXN0KTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBocnRpbWVyX2dldF9yZW1haW5pbmco Y29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2hy dGltZXJfZ2V0X3JlbWFpbmluZyh0aW1lciwgZmFsc2UpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gdTY0IGhydGltZXJfZ2V0X25leHRfZXZlbnQodm9pZCk7CjE0NDc0OiBleHRlcm4g dTY0IGhydGltZXJfbmV4dF9ldmVudF93aXRob3V0KGNvbnN0IHN0cnVjdCBocnRpbWVyICpleGNs dWRlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgaHJ0aW1lcl9hY3RpdmUoY29uc3Qgc3Ry dWN0IGhydGltZXIgKnRpbWVyKTsKMTQ0NzQ6ICMgNDY3ICIuL2luY2x1ZGUvbGludXgvaHJ0aW1l ci5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBocnRpbWVyX2lzX3F1ZXVlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIp CjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gISEoKHsgdW5pb24geyB0eXBlb2YodGlt ZXItPnN0YXRlKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vf c2l6ZSgmKHRpbWVyLT5zdGF0ZSksIF9fdS5fX2MsIHNpemVvZih0aW1lci0+c3RhdGUpKTsgZWxz ZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJih0aW1lci0+c3RhdGUpLCBfX3UuX19jLCBzaXpl b2YodGltZXItPnN0YXRlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSkgJiAweDAx KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgaHJ0aW1lcl9jYWxsYmFja19ydW5uaW5nKHN0cnVjdCBocnRpbWVyICp0aW1lcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGltZXItPmJhc2UtPnJ1bm5pbmcgPT0gdGltZXI7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHU2NAoxNDQ3NDogaHJ0aW1lcl9mb3J3 YXJkKHN0cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCBub3csIGt0aW1lX3QgaW50ZXJ2YWwp OwoxNDQ3NDogIyA1MDIgIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgaHJ0 aW1lcl9mb3J3YXJkX25vdyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsCjE0NDc0OiAgICAgICAgICAg a3RpbWVfdCBpbnRlcnZhbCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gaHJ0aW1lcl9mb3J3YXJk KHRpbWVyLCB0aW1lci0+YmFzZS0+Z2V0X3RpbWUoKSwgaW50ZXJ2YWwpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBuYW5vc2xlZXBfY29weW91dChz dHJ1Y3QgcmVzdGFydF9ibG9jayAqLCBzdHJ1Y3QgdGltZXNwZWM2NCAqKTsKMTQ0NzQ6IGV4dGVy biBsb25nIGhydGltZXJfbmFub3NsZWVwKGt0aW1lX3QgcnF0cCwgY29uc3QgZW51bSBocnRpbWVy X21vZGUgbW9kZSwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IGNsb2NraWRfdCBjbG9ja2lkKTsKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzY2hlZHVsZV9ocnRpbWVvdXRfcmFuZ2Uoa3RpbWVfdCAq ZXhwaXJlcywgdTY0IGRlbHRhLAoxNDQ3NDogICAgICAgICBjb25zdCBlbnVtIGhydGltZXJfbW9k ZSBtb2RlKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2NoZWR1bGVfaHJ0aW1lb3V0X3JhbmdlX2Nsb2Nr KGt0aW1lX3QgKmV4cGlyZXMsCjE0NDc0OiAgICAgICAgdTY0IGRlbHRhLAoxNDQ3NDogICAgICAg IGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUsCjE0NDc0OiAgICAgICAgY2xvY2tpZF90IGNs b2NrX2lkKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2NoZWR1bGVfaHJ0aW1lb3V0KGt0aW1lX3QgKmV4 cGlyZXMsIGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiB2b2lkIGhydGltZXJfcnVuX3F1ZXVlcyh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4 dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBocnRpbWVyc19pbml0KHZvaWQpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIHN5c3JxX3RpbWVyX2xpc3Rfc2hvdyh2b2lk KTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGhydGltZXJzX3ByZXBhcmVfY3B1KHVuc2lnbmVkIGludCBj cHUpOwoxNDQ3NDogCjE0NDc0OiBpbnQgaHJ0aW1lcnNfZGVhZF9jcHUodW5zaWduZWQgaW50IGNw dSk7CjE0NDc0OiAjIDIxICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvc2VjY29tcC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2VjY29tcC5oIiAxCjE0NDc0OiAj IDU5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zZWNjb21wLmgiCjE0NDc0OiBzdHJ1Y3Qgc2VjY29t cF9kYXRhIHsKMTQ0NzQ6ICBpbnQgbnI7CjE0NDc0OiAgX191MzIgYXJjaDsKMTQ0NzQ6ICBfX3U2 NCBpbnN0cnVjdGlvbl9wb2ludGVyOwoxNDQ3NDogIF9fdTY0IGFyZ3NbNl07CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2VjY29tcF9ub3RpZl9zaXplcyB7CjE0NDc0OiAgX191MTYg c2VjY29tcF9ub3RpZjsKMTQ0NzQ6ICBfX3UxNiBzZWNjb21wX25vdGlmX3Jlc3A7CjE0NDc0OiAg X191MTYgc2VjY29tcF9kYXRhOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNlY2Nv bXBfbm90aWYgewoxNDQ3NDogIF9fdTY0IGlkOwoxNDQ3NDogIF9fdTMyIHBpZDsKMTQ0NzQ6ICBf X3UzMiBmbGFnczsKMTQ0NzQ6ICBzdHJ1Y3Qgc2VjY29tcF9kYXRhIGRhdGE7CjE0NDc0OiB9Owox NDQ3NDogIyAxMDggIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlY2NvbXAuaCIKMTQ0NzQ6IHN0cnVj dCBzZWNjb21wX25vdGlmX3Jlc3AgewoxNDQ3NDogIF9fdTY0IGlkOwoxNDQ3NDogIF9fczY0IHZh bDsKMTQ0NzQ6ICBfX3MzMiBlcnJvcjsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9zZWNjb21wLmgiIDIKMTQ0NzQ6ICMgMTUgIi4vaW5j bHVkZS9saW51eC9zZWNjb21wLmgiCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v c2VjY29tcC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91bmlzdGQuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS91bmlzdGQu aCIgMQoxNDQ3NDogIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAyCjE0NDc0 OiAjIDE4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZC5oIgoxNDQ3NDogIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3VuaXN0ZF82NC5oIiAxCjE0NDc0OiAj IDE5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAyCjE0NDc0OiAjIDEgIi4vYXJj aC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvYXNtL3VuaXN0ZF82NF94MzIuaCIgMQoxNDQ3NDogIyAy MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91bmlzdGQuaCIgMgoxNDQ3NDogIyA2ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NlY2NvbXAuaCIgMgoxNDQ3NDogIyAxOSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zZWNjb21wLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWNj b21wLmgiIDEKMTQ0NzQ6ICMgMTEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWNjb21wLmgiCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3VuaXN0ZC5oIiAxCjE0NDc0OiAjIDEyICIu L2luY2x1ZGUvYXNtLWdlbmVyaWMvc2VjY29tcC5oIiAyCjE0NDc0OiAjIDIwICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3NlY2NvbXAuaCIgMgoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3Nl Y2NvbXAuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2VjY29tcF9maWx0ZXI7CjE0NDc0OiAj IDI5ICIuL2luY2x1ZGUvbGludXgvc2VjY29tcC5oIgoxNDQ3NDogc3RydWN0IHNlY2NvbXAgewox NDQ3NDogIGludCBtb2RlOwoxNDQ3NDogIHN0cnVjdCBzZWNjb21wX2ZpbHRlciAqZmlsdGVyOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fc2VjdXJlX2NvbXB1 dGluZyhjb25zdCBzdHJ1Y3Qgc2VjY29tcF9kYXRhICpzZCk7CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc2VjdXJlX2Nv bXB1dGluZyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHRl c3RfdGlfdGhyZWFkX2ZsYWcoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKilnZXRfY3VycmVudCgpKSwg OCkpLCAwKSkKMTQ0NzQ6ICAgcmV0dXJuIF9fc2VjdXJlX2NvbXB1dGluZygoKHZvaWQgKikwKSk7 CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBsb25nIHByY3RsX2dldF9zZWNjb21wKHZvaWQpOwoxNDQ3NDogZXh0 ZXJuIGxvbmcgcHJjdGxfc2V0X3NlY2NvbXAodW5zaWduZWQgbG9uZywgdm9pZCAqKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IHNlY2NvbXBfbW9kZShzdHJ1Y3Qgc2VjY29tcCAqcykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gcy0+bW9kZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODQgIi4vaW5jbHVkZS9saW51 eC9zZWNjb21wLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBwdXRfc2VjY29tcF9maWx0ZXIoc3RydWN0 IHRhc2tfc3RydWN0ICp0c2spOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZ2V0X3NlY2NvbXBfZmlsdGVy KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKMTQ0NzQ6ICMgOTggIi4vaW5jbHVkZS9saW51eC9z ZWNjb21wLmgiCjE0NDc0OiBleHRlcm4gbG9uZyBzZWNjb21wX2dldF9maWx0ZXIoc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrLAoxNDQ3NDogICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmlsdGVyX29m Ziwgdm9pZCAqZGF0YSk7CjE0NDc0OiBleHRlcm4gbG9uZyBzZWNjb21wX2dldF9tZXRhZGF0YShz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCjE0NDc0OiAgICAgIHVuc2lnbmVkIGxvbmcgZmlsdGVy X29mZiwgdm9pZCAqZGF0YSk7CjE0NDc0OiAjIDIyICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvcmVz b3VyY2UuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS91YXBpL2xpbnV4L3Jlc291cmNlLmgiIDEKMTQ0NzQ6ICMgMjQgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L3Jlc291cmNlLmgiCjE0NDc0OiBzdHJ1Y3QgcnVzYWdlIHsKMTQ0NzQ6ICBzdHJ1 Y3QgX19rZXJuZWxfb2xkX3RpbWV2YWwgcnVfdXRpbWU7CjE0NDc0OiAgc3RydWN0IF9fa2VybmVs X29sZF90aW1ldmFsIHJ1X3N0aW1lOwoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCBydV9tYXhyc3M7 CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IHJ1X2l4cnNzOwoxNDQ3NDogIF9fa2VybmVsX2xvbmdf dCBydV9pZHJzczsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgcnVfaXNyc3M7CjE0NDc0OiAgX19r ZXJuZWxfbG9uZ190IHJ1X21pbmZsdDsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgcnVfbWFqZmx0 OwoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCBydV9uc3dhcDsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25n X3QgcnVfaW5ibG9jazsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgcnVfb3VibG9jazsKMTQ0NzQ6 ICBfX2tlcm5lbF9sb25nX3QgcnVfbXNnc25kOwoxNDQ3NDogIF9fa2VybmVsX2xvbmdfdCBydV9t c2dyY3Y7CjE0NDc0OiAgX19rZXJuZWxfbG9uZ190IHJ1X25zaWduYWxzOwoxNDQ3NDogIF9fa2Vy bmVsX2xvbmdfdCBydV9udmNzdzsKMTQ0NzQ6ICBfX2tlcm5lbF9sb25nX3QgcnVfbml2Y3N3Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJsaW1pdCB7CjE0NDc0OiAgX19rZXJuZWxf dWxvbmdfdCBybGltX2N1cjsKMTQ0NzQ6ICBfX2tlcm5lbF91bG9uZ190IHJsaW1fbWF4OwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBybGltaXQ2NCB7CjE0 NDc0OiAgX191NjQgcmxpbV9jdXI7CjE0NDc0OiAgX191NjQgcmxpbV9tYXg7CjE0NDc0OiB9Owox NDQ3NDogIyA3OCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcmVzb3VyY2UuaCIKMTQ0NzQ6ICMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9yZXNvdXJjZS5oIiAxCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9yZXNvdXJjZS5oIiAxCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMv cmVzb3VyY2UuaCIgMQoxNDQ3NDogIyA2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcmVzb3VyY2Uu aCIgMgoxNDQ3NDogIyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3Jl c291cmNlLmgiIDIKMTQ0NzQ6ICMgNzkgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Jlc291cmNlLmgi IDIKMTQ0NzQ6ICMgNiAiLi9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1Y3Q7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZ2V0cnVz YWdlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHdobywgc3RydWN0IHJ1c2FnZSAqcnUpOwox NDQ3NDogaW50IGRvX3BybGltaXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVuc2lnbmVkIGlu dCByZXNvdXJjZSwKMTQ0NzQ6ICAgc3RydWN0IHJsaW1pdCAqbmV3X3JsaW0sIHN0cnVjdCBybGlt aXQgKm9sZF9ybGltKTsKMTQ0NzQ6ICMgMjYgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9sYXRlbmN5dG9wLmgiIDEKMTQ0NzQ6ICMgMTQgIi4v aW5jbHVkZS9saW51eC9sYXRlbmN5dG9wLmgiCjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1Y3Q7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgbGF0ZW5jeV9yZWNvcmQgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgYmFja3RyYWNlWzEyXTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY291bnQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0aW1lOwox NDQ3NDogIHVuc2lnbmVkIGxvbmcgbWF4OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgbGF0ZW5jeXRvcF9lbmFibGVkOwoxNDQ3NDogdm9pZCBfX2Fj Y291bnRfc2NoZWR1bGVyX2xhdGVuY3koc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBpbnQgdXNl Y3MsIGludCBpbnRlcik7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBhY2NvdW50X3NjaGVkdWxlcl9sYXRl bmN5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IHVzZWNzLCBpbnQgaW50ZXIpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEobGF0ZW5jeXRvcF9lbmFibGVkKSwg MCkpCjE0NDc0OiAgIF9fYWNjb3VudF9zY2hlZHVsZXJfbGF0ZW5jeSh0YXNrLCB1c2VjcywgaW50 ZXIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2b2lkIGNsZWFyX3Rza19sYXRlbmN5X3RyYWNp bmcoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzeXNj dGxfbGF0ZW5jeXRvcChzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAoxNDQ3NDog ICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7CjE0NDc0OiAjIDI3 ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgv c2NoZWQvcHJpby5oIiAxCjE0NDc0OiAjIDQ4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQvcHJpby5o IgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgbG9uZyBuaWNlX3RvX3JsaW1pdChsb25nIG5pY2UpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuICgxOSAtIG5pY2UgKyAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgbG9uZyBybGltaXRfdG9fbmljZShsb25nIHByaW8pCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICgxOSAtIHByaW8gKyAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjggIi4vaW5j bHVkZS9saW51eC9zY2hlZC5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zY2hlZC90 eXBlcy5oIiAxCjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgvc2NoZWQvdHlwZXMuaCIKMTQ0 NzQ6IHN0cnVjdCB0YXNrX2NwdXRpbWUgewoxNDQ3NDogIHU2NCBzdGltZTsKMTQ0NzQ6ICB1NjQg dXRpbWU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIHN1bV9leGVjX3J1bnRpbWU7CjE0NDc0 OiB9OwoxNDQ3NDogIyAyOSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L3NpZ25hbF90eXBlcy5oIiAxCjE0NDc0OiAjIDEwICIuL2luY2x1ZGUv bGludXgvc2lnbmFsX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Np Z25hbC5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMQoxNDQ3NDogIyAyMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zaWduYWwuaCIKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBvbGRfc2ln c2V0X3Q7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIHNpZ1soNjQgLyA2NCldOwoxNDQ3NDogfSBzaWdzZXRfdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgc2lnc2V0X3QgY29t cGF0X3NpZ3NldF90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiIDEKMTQ0NzQ6ICMgMTEgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaCIKMTQ0NzQ6IHN0cnVjdCBzaWdpbmZvOwoxNDQ3NDog IyA5NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oIgoxNDQ3NDogIyAxICIu L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaWduYWwtZGVmcy5oIiAxCjE0NDc0OiAjIDE4ICIu L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaWduYWwtZGVmcy5oIgoxNDQ3NDogdHlwZWRlZiB2 b2lkIF9fc2lnbmFsZm5fdChpbnQpOwoxNDQ3NDogdHlwZWRlZiBfX3NpZ25hbGZuX3QgKl9fc2ln aGFuZGxlcl90OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHZvaWQgX19yZXN0b3JlZm5fdCh2b2lk KTsKMTQ0NzQ6IHR5cGVkZWYgX19yZXN0b3JlZm5fdCAqX19zaWdyZXN0b3JlX3Q7CjE0NDc0OiAj IDk1ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiIDIKMTQ0NzQ6ICMgMTI4 ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiCjE0NDc0OiB0eXBlZGVmIHN0 cnVjdCBzaWdhbHRzdGFjayB7CjE0NDc0OiAgdm9pZCAqc3Nfc3A7CjE0NDc0OiAgaW50IHNzX2Zs YWdzOwoxNDQ3NDogIHNpemVfdCBzc19zaXplOwoxNDQ3NDogfSBzdGFja190OwoxNDQ3NDogIyAz NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zaWduYWwuaCIgMgoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBkb19zaWduYWwoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwoxNDQ3NDogIyA2ICIuL2lu Y2x1ZGUvdWFwaS9saW51eC9zaWduYWwuaCIgMgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvdWFwaS9hc20vc2lnaW5mby5oIiAxCjE0NDc0OiAjIDEzICIuL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20vc2lnaW5mby5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJp Yy9zaWdpbmZvLmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB1bmlvbiBzaWd2YWwgewoxNDQ3NDogIGludCBz aXZhbF9pbnQ7CjE0NDc0OiAgdm9pZCAqc2l2YWxfcHRyOwoxNDQ3NDogfSBzaWd2YWxfdDsKMTQ0 NzQ6ICMgMzIgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3NpZ2luZm8uaCIKMTQ0NzQ6IHVu aW9uIF9fc2lmaWVsZHMgewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgX19rZXJu ZWxfcGlkX3QgX3BpZDsKMTQ0NzQ6ICAgX19rZXJuZWxfdWlkMzJfdCBfdWlkOwoxNDQ3NDogIH0g X2tpbGw7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIF9fa2VybmVs X3RpbWVyX3QgX3RpZDsKMTQ0NzQ6ICAgaW50IF9vdmVycnVuOwoxNDQ3NDogICBzaWd2YWxfdCBf c2lndmFsOwoxNDQ3NDogICBpbnQgX3N5c19wcml2YXRlOwoxNDQ3NDogIH0gX3RpbWVyOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICBfX2tlcm5lbF9waWRfdCBfcGlk OwoxNDQ3NDogICBfX2tlcm5lbF91aWQzMl90IF91aWQ7CjE0NDc0OiAgIHNpZ3ZhbF90IF9zaWd2 YWw7CjE0NDc0OiAgfSBfcnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0 OiAgIF9fa2VybmVsX3BpZF90IF9waWQ7CjE0NDc0OiAgIF9fa2VybmVsX3VpZDMyX3QgX3VpZDsK MTQ0NzQ6ICAgaW50IF9zdGF0dXM7CjE0NDc0OiAgIF9fa2VybmVsX2Nsb2NrX3QgX3V0aW1lOwox NDQ3NDogICBfX2tlcm5lbF9jbG9ja190IF9zdGltZTsKMTQ0NzQ6ICB9IF9zaWdjaGxkOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB2b2lkICpfYWRkcjsKMTQ0NzQ6 ICMgNzcgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3NpZ2luZm8uaCIKMTQ0NzQ6ICAgdW5p b24gewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgICBzaG9ydCBfYWRk cl9sc2I7CjE0NDc0OiAKMTQ0NzQ6ICAgIHN0cnVjdCB7CjE0NDc0OiAgICAgY2hhciBfZHVtbXlf Ym5kWyhfX2FsaWdub2ZfXyh2b2lkICopIDwgc2l6ZW9mKHNob3J0KSA/IHNpemVvZihzaG9ydCkg OiBfX2FsaWdub2ZfXyh2b2lkICopKV07CjE0NDc0OiAgICAgdm9pZCAqX2xvd2VyOwoxNDQ3NDog ICAgIHZvaWQgKl91cHBlcjsKMTQ0NzQ6ICAgIH0gX2FkZHJfYm5kOwoxNDQ3NDogCjE0NDc0OiAg ICBzdHJ1Y3QgewoxNDQ3NDogICAgIGNoYXIgX2R1bW15X3BrZXlbKF9fYWxpZ25vZl9fKHZvaWQg KikgPCBzaXplb2Yoc2hvcnQpID8gc2l6ZW9mKHNob3J0KSA6IF9fYWxpZ25vZl9fKHZvaWQgKikp XTsKMTQ0NzQ6ICAgICBfX3UzMiBfcGtleTsKMTQ0NzQ6ICAgIH0gX2FkZHJfcGtleTsKMTQ0NzQ6 ICAgfTsKMTQ0NzQ6ICB9IF9zaWdmYXVsdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0 IHsKMTQ0NzQ6ICAgbG9uZyBfYmFuZDsKMTQ0NzQ6ICAgaW50IF9mZDsKMTQ0NzQ6ICB9IF9zaWdw b2xsOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB2b2lkICpfY2Fs bF9hZGRyOwoxNDQ3NDogICBpbnQgX3N5c2NhbGw7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBfYXJj aDsKMTQ0NzQ6ICB9IF9zaWdzeXM7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjkgIi4vaW5jbHVkZS91 YXBpL2FzbS1nZW5lcmljL3NpZ2luZm8uaCIKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IHNpZ2luZm8g ewoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsgaW50IHNpX3NpZ25vOyBpbnQgc2lf ZXJybm87IGludCBzaV9jb2RlOyB1bmlvbiBfX3NpZmllbGRzIF9zaWZpZWxkczsgfTsKMTQ0NzQ6 ICAgaW50IF9zaV9wYWRbMTI4L3NpemVvZihpbnQpXTsKMTQ0NzQ6ICB9OwoxNDQ3NDogfSBzaWdp bmZvX3Q7CjE0NDc0OiAjIDMyMCAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvc2lnaW5mby5o IgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewoxNDQ3NDogIHNpZ3ZhbF90IHNpZ2V2 X3ZhbHVlOwoxNDQ3NDogIGludCBzaWdldl9zaWdubzsKMTQ0NzQ6ICBpbnQgc2lnZXZfbm90aWZ5 OwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgaW50IF9wYWRbKCg2NCAtIChzaXplb2YoaW50KSAq IDIgKyBzaXplb2Yoc2lndmFsX3QpKSkgLyBzaXplb2YoaW50KSldOwoxNDQ3NDogICAgaW50IF90 aWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHZvaWQgKCpfZnVuY3Rpb24p KHNpZ3ZhbF90KTsKMTQ0NzQ6ICAgIHZvaWQgKl9hdHRyaWJ1dGU7CjE0NDc0OiAgIH0gX3NpZ2V2 X3RocmVhZDsKMTQ0NzQ6ICB9IF9zaWdldl91bjsKMTQ0NzQ6IH0gc2lnZXZlbnRfdDsKMTQ0NzQ6 ICMgMTQgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdpbmZvLmgiIDIKMTQ0NzQ6ICMg NyAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2lnbmFsLmgiIDIKMTQ0NzQ6ICMgMTEgIi4vaW5jbHVk ZS9saW51eC9zaWduYWxfdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBr ZXJuZWxfc2lnaW5mbyB7CjE0NDc0OiAgc3RydWN0IHsgaW50IHNpX3NpZ25vOyBpbnQgc2lfZXJy bm87IGludCBzaV9jb2RlOyB1bmlvbiBfX3NpZmllbGRzIF9zaWZpZWxkczsgfTsKMTQ0NzQ6IH0g a2VybmVsX3NpZ2luZm9fdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3Qgc2lncXVldWUgewoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsK MTQ0NzQ6ICBpbnQgZmxhZ3M7CjE0NDc0OiAga2VybmVsX3NpZ2luZm9fdCBpbmZvOwoxNDQ3NDog IHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzaWdwZW5kaW5nIHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlz dF9oZWFkIGxpc3Q7CjE0NDc0OiAgc2lnc2V0X3Qgc2lnbmFsOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IHNpZ2FjdGlvbiB7CjE0NDc0OiAKMTQ0NzQ6ICBfX3NpZ2hhbmRsZXJfdCBz YV9oYW5kbGVyOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc2FfZmxhZ3M7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fc2lncmVzdG9yZV90IHNhX3Jlc3Rv cmVyOwoxNDQ3NDogCjE0NDc0OiAgc2lnc2V0X3Qgc2FfbWFzazsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBrX3NpZ2FjdGlvbiB7CjE0NDc0OiAgc3RydWN0IHNpZ2FjdGlvbiBzYTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAjIDY1ICIuL2luY2x1ZGUv bGludXgvc2lnbmFsX3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3Qga3NpZ25hbCB7CjE0NDc0OiAgc3Ry dWN0IGtfc2lnYWN0aW9uIGthOwoxNDQ3NDogIGtlcm5lbF9zaWdpbmZvX3QgaW5mbzsKMTQ0NzQ6 ICBpbnQgc2lnOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzAgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5o IiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3Rhc2tfaW9fYWNjb3VudGlu Zy5oIiAxCjE0NDc0OiAjIDEyICIuL2luY2x1ZGUvbGludXgvdGFza19pb19hY2NvdW50aW5nLmgi CjE0NDc0OiBzdHJ1Y3QgdGFza19pb19hY2NvdW50aW5nIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgdTY0IHJjaGFyOwoxNDQ3NDogCjE0NDc0OiAgdTY0IHdjaGFyOwoxNDQ3NDogCjE0NDc0OiAg dTY0IHN5c2NyOwoxNDQ3NDogCjE0NDc0OiAgdTY0IHN5c2N3OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IHJlYWRfYnl0 ZXM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHU2NCB3 cml0ZV9ieXRlczsKMTQ0NzQ6ICMgNDQgIi4vaW5jbHVkZS9saW51eC90YXNrX2lvX2FjY291bnRp bmcuaCIKMTQ0NzQ6ICB1NjQgY2FuY2VsbGVkX3dyaXRlX2J5dGVzOwoxNDQ3NDogCjE0NDc0OiB9 OwoxNDQ3NDogIyAzMiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMgMSAiLi9p bmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oIiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9hbGFybXRp bWVyLmgiIDEKMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L2FsYXJtdGltZXIuaCIKMTQ0NzQ6 IHN0cnVjdCBydGNfZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGFsYXJtdGltZXJfdHlwZSB7 CjE0NDc0OiAgQUxBUk1fUkVBTFRJTUUsCjE0NDc0OiAgQUxBUk1fQk9PVFRJTUUsCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIEFMQVJNX05VTVRZUEUsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEFM QVJNX1JFQUxUSU1FX0ZSRUVaRVIsCjE0NDc0OiAgQUxBUk1fQk9PVFRJTUVfRlJFRVpFUiwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYWxhcm10aW1lcl9yZXN0YXJ0IHsKMTQ0NzQ6ICBB TEFSTVRJTUVSX05PUkVTVEFSVCwKMTQ0NzQ6ICBBTEFSTVRJTUVSX1JFU1RBUlQsCjE0NDc0OiB9 OwoxNDQ3NDogIyA0MiAiLi9pbmNsdWRlL2xpbnV4L2FsYXJtdGltZXIuaCIKMTQ0NzQ6IHN0cnVj dCBhbGFybSB7CjE0NDc0OiAgc3RydWN0IHRpbWVycXVldWVfbm9kZSBub2RlOwoxNDQ3NDogIHN0 cnVjdCBocnRpbWVyIHRpbWVyOwoxNDQ3NDogIGVudW0gYWxhcm10aW1lcl9yZXN0YXJ0ICgqZnVu Y3Rpb24pKHN0cnVjdCBhbGFybSAqLCBrdGltZV90IG5vdyk7CjE0NDc0OiAgZW51bSBhbGFybXRp bWVyX3R5cGUgdHlwZTsKMTQ0NzQ6ICBpbnQgc3RhdGU7CjE0NDc0OiAgdm9pZCAqZGF0YTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgYWxhcm1faW5pdChzdHJ1Y3QgYWxhcm0gKmFsYXJt LCBlbnVtIGFsYXJtdGltZXJfdHlwZSB0eXBlLAoxNDQ3NDogICBlbnVtIGFsYXJtdGltZXJfcmVz dGFydCAoKmZ1bmN0aW9uKShzdHJ1Y3QgYWxhcm0gKiwga3RpbWVfdCkpOwoxNDQ3NDogdm9pZCBh bGFybV9zdGFydChzdHJ1Y3QgYWxhcm0gKmFsYXJtLCBrdGltZV90IHN0YXJ0KTsKMTQ0NzQ6IHZv aWQgYWxhcm1fc3RhcnRfcmVsYXRpdmUoc3RydWN0IGFsYXJtICphbGFybSwga3RpbWVfdCBzdGFy dCk7CjE0NDc0OiB2b2lkIGFsYXJtX3Jlc3RhcnQoc3RydWN0IGFsYXJtICphbGFybSk7CjE0NDc0 OiBpbnQgYWxhcm1fdHJ5X3RvX2NhbmNlbChzdHJ1Y3QgYWxhcm0gKmFsYXJtKTsKMTQ0NzQ6IGlu dCBhbGFybV9jYW5jZWwoc3RydWN0IGFsYXJtICphbGFybSk7CjE0NDc0OiAKMTQ0NzQ6IHU2NCBh bGFybV9mb3J3YXJkKHN0cnVjdCBhbGFybSAqYWxhcm0sIGt0aW1lX3Qgbm93LCBrdGltZV90IGlu dGVydmFsKTsKMTQ0NzQ6IHU2NCBhbGFybV9mb3J3YXJkX25vdyhzdHJ1Y3QgYWxhcm0gKmFsYXJt LCBrdGltZV90IGludGVydmFsKTsKMTQ0NzQ6IGt0aW1lX3QgYWxhcm1fZXhwaXJlc19yZW1haW5p bmcoY29uc3Qgc3RydWN0IGFsYXJtICphbGFybSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcnRjX2RldmljZSAqYWxhcm10aW1lcl9nZXRfcnRjZGV2KHZvaWQpOwoxNDQ3 NDogIyA4ICIuL2luY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3Qga2VybmVsX3NpZ2luZm87CjE0NDc0OiBzdHJ1Y3QgdGFza19zdHJ1Y3Q7 CjE0NDc0OiAjIDM4ICIuL2luY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgiCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjbG9j a2lkX3QgbWFrZV9wcm9jZXNzX2NwdWNsb2NrKGNvbnN0IHVuc2lnbmVkIGludCBwaWQsCjE0NDc0 OiAgIGNvbnN0IGNsb2NraWRfdCBjbG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh+cGlk KSA8PCAzKSB8IGNsb2NrOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2xvY2tpZF90IG1ha2VfdGhyZWFkX2Nw dWNsb2NrKGNvbnN0IHVuc2lnbmVkIGludCB0aWQsCjE0NDc0OiAgIGNvbnN0IGNsb2NraWRfdCBj bG9jaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbWFrZV9wcm9jZXNzX2NwdWNsb2NrKHRpZCwg Y2xvY2sgfCA0KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2xvY2tpZF90IGZkX3RvX2Nsb2Nr aWQoY29uc3QgaW50IGZkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBtYWtlX3Byb2Nlc3NfY3B1 Y2xvY2soKHVuc2lnbmVkIGludCkgZmQsIDMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg Y2xvY2tpZF90b19mZChjb25zdCBjbG9ja2lkX3QgY2xrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biB+KGNsayA+PiAzKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjkgIi4vaW5jbHVkZS9saW51eC9wb3Np eC10aW1lcnMuaCIKMTQ0NzQ6IHN0cnVjdCBjcHVfdGltZXIgewoxNDQ3NDogIHN0cnVjdCB0aW1l cnF1ZXVlX25vZGUgbm9kZTsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZXJxdWV1ZV9oZWFkICpoZWFkOwox NDQ3NDogIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFk IGVsaXN0OwoxNDQ3NDogIGludCBmaXJpbmc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IGNwdV90aW1lcl9lbnF1ZXVlKHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgKmhlYWQsCjE0NDc0OiAg ICAgICAgICBzdHJ1Y3QgY3B1X3RpbWVyICpjdG1yKQoxNDQ3NDogewoxNDQ3NDogIGN0bXItPmhl YWQgPSBoZWFkOwoxNDQ3NDogIHJldHVybiB0aW1lcnF1ZXVlX2FkZChoZWFkLCAmY3Rtci0+bm9k ZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1X3RpbWVyX2RlcXVldWUoc3RydWN0 IGNwdV90aW1lciAqY3RtcikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoY3Rtci0+aGVhZCkgewoxNDQ3 NDogICB0aW1lcnF1ZXVlX2RlbChjdG1yLT5oZWFkLCAmY3Rtci0+bm9kZSk7CjE0NDc0OiAgIGN0 bXItPmhlYWQgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHU2NCBjcHVfdGltZXJfZ2V0ZXhwaXJlcyhzdHJ1Y3QgY3B1X3RpbWVyICpjdG1yKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBjdG1yLT5ub2RlLmV4cGlyZXM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgY3B1X3RpbWVyX3NldGV4cGlyZXMoc3RydWN0IGNwdV90aW1lciAqY3RtciwgdTY0 IGV4cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBjdG1yLT5ub2RlLmV4cGlyZXMgPSBleHA7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgcG9zaXhfY3B1dGltZXJfYmFzZSB7CjE0NDc0OiAgdTY0IG5leHRldnQ7CjE0NDc0OiAg c3RydWN0IHRpbWVycXVldWVfaGVhZCB0cWhlYWQ7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjIgIi4v aW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaCIKMTQ0NzQ6IHN0cnVjdCBwb3NpeF9jcHV0aW1l cnMgewoxNDQ3NDogIHN0cnVjdCBwb3NpeF9jcHV0aW1lcl9iYXNlIGJhc2VzWzNdOwoxNDQ3NDog IHVuc2lnbmVkIGludCB0aW1lcnNfYWN0aXZlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBleHBpcnlf YWN0aXZlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwb3NpeF9jcHV0aW1lcnNfaW5p dChzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzICpwY3QpCjE0NDc0OiB7CjE0NDc0OiAgbWVtc2V0KHBj dCwgMCwgc2l6ZW9mKCpwY3QpKTsKMTQ0NzQ6ICBwY3QtPmJhc2VzWzBdLm5leHRldnQgPSAoKHU2 NCl+MFVMTCk7CjE0NDc0OiAgcGN0LT5iYXNlc1sxXS5uZXh0ZXZ0ID0gKCh1NjQpfjBVTEwpOwox NDQ3NDogIHBjdC0+YmFzZXNbMl0ubmV4dGV2dCA9ICgodTY0KX4wVUxMKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogdm9pZCBwb3NpeF9jcHV0aW1lcnNfZ3JvdXBfaW5pdChzdHJ1Y3QgcG9zaXhf Y3B1dGltZXJzICpwY3QsIHU2NCBjcHVfbGltaXQpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBvc2l4 X2NwdXRpbWVyc19ydF93YXRjaGRvZyhzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzICpwY3QsCjE0NDc0 OiAgICAgICAgICAgICB1NjQgcnVudGltZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwY3QtPmJhc2VzWzJd Lm5leHRldnQgPSBydW50aW1lOwoxNDQ3NDogfQoxNDQ3NDogIyAxOTMgIi4vaW5jbHVkZS9saW51 eC9wb3NpeC10aW1lcnMuaCIKMTQ0NzQ6IHN0cnVjdCBrX2l0aW1lciB7CjE0NDc0OiAgc3RydWN0 IGxpc3RfaGVhZCBsaXN0OwoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIHRfaGFzaDsKMTQ0NzQ6 ICBzcGlubG9ja190IGl0X2xvY2s7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGtfY2xvY2sgKmtjbG9j azsKMTQ0NzQ6ICBjbG9ja2lkX3QgaXRfY2xvY2s7CjE0NDc0OiAgdGltZXJfdCBpdF9pZDsKMTQ0 NzQ6ICBpbnQgaXRfYWN0aXZlOwoxNDQ3NDogIHM2NCBpdF9vdmVycnVuOwoxNDQ3NDogIHM2NCBp dF9vdmVycnVuX2xhc3Q7CjE0NDc0OiAgaW50IGl0X3JlcXVldWVfcGVuZGluZzsKMTQ0NzQ6ICBp bnQgaXRfc2lnZXZfbm90aWZ5OwoxNDQ3NDogIGt0aW1lX3QgaXRfaW50ZXJ2YWw7CjE0NDc0OiAg c3RydWN0IHNpZ25hbF9zdHJ1Y3QgKml0X3NpZ25hbDsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAg IHN0cnVjdCBwaWQgKml0X3BpZDsKMTQ0NzQ6ICAgc3RydWN0IHRhc2tfc3RydWN0ICppdF9wcm9j ZXNzOwoxNDQ3NDogIH07CjE0NDc0OiAgc3RydWN0IHNpZ3F1ZXVlICpzaWdxOwoxNDQ3NDogIHVu aW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHN0cnVjdCBocnRpbWVyIHRpbWVyOwox NDQ3NDogICB9IHJlYWw7CjE0NDc0OiAgIHN0cnVjdCBjcHVfdGltZXIgY3B1OwoxNDQ3NDogICBz dHJ1Y3QgewoxNDQ3NDogICAgc3RydWN0IGFsYXJtIGFsYXJtdGltZXI7CjE0NDc0OiAgIH0gYWxh cm07CjE0NDc0OiAgfSBpdDsKMTQ0NzQ6ICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCByY3U7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpOwoxNDQ3 NDogdm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTsK MTQ0NzQ6IHZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVj dCAqdGFzayk7CjE0NDc0OiB2b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsCjE0NDc0OiAgICAgICB1NjQgKm5l d3ZhbCwgdTY0ICpvbGR2YWwpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHVwZGF0ZV9ybGltaXRfY3B1 KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdW5zaWduZWQgbG9uZyBybGltX25ldyk7CjE0NDc0 OiAKMTQ0NzQ6IHZvaWQgcG9zaXh0aW1lcl9yZWFybShzdHJ1Y3Qga2VybmVsX3NpZ2luZm8gKmlu Zm8pOwoxNDQ3NDogIyAzMyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5oIiAxCjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvdWFw aS9saW51eC9yc2VxLmgiCjE0NDc0OiBlbnVtIHJzZXFfY3B1X2lkX3N0YXRlIHsKMTQ0NzQ6ICBS U0VRX0NQVV9JRF9VTklOSVRJQUxJWkVEID0gLTEsCjE0NDc0OiAgUlNFUV9DUFVfSURfUkVHSVNU UkFUSU9OX0ZBSUxFRCA9IC0yLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSByc2VxX2Zs YWdzIHsKMTQ0NzQ6ICBSU0VRX0ZMQUdfVU5SRUdJU1RFUiA9ICgxIDw8IDApLAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSByc2VxX2NzX2ZsYWdzX2JpdCB7CjE0NDc0OiAgUlNFUV9DU19G TEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVF9CSVQgPSAwLAoxNDQ3NDogIFJTRVFfQ1NfRkxBR19O T19SRVNUQVJUX09OX1NJR05BTF9CSVQgPSAxLAoxNDQ3NDogIFJTRVFfQ1NfRkxBR19OT19SRVNU QVJUX09OX01JR1JBVEVfQklUID0gMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcnNl cV9jc19mbGFncyB7CjE0NDc0OiAgUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVCA9 CjE0NDc0OiAgICgxVSA8PCBSU0VRX0NTX0ZMQUdfTk9fUkVTVEFSVF9PTl9QUkVFTVBUX0JJVCks CjE0NDc0OiAgUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fU0lHTkFMID0KMTQ0NzQ6ICAgKDFV IDw8IFJTRVFfQ1NfRkxBR19OT19SRVNUQVJUX09OX1NJR05BTF9CSVQpLAoxNDQ3NDogIFJTRVFf Q1NfRkxBR19OT19SRVNUQVJUX09OX01JR1JBVEUgPQoxNDQ3NDogICAoMVUgPDwgUlNFUV9DU19G TEFHX05PX1JFU1RBUlRfT05fTUlHUkFURV9CSVQpLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCByc2VxX2NzIHsK MTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIHZlcnNpb247CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBmbGFn czsKMTQ0NzQ6ICBfX3U2NCBzdGFydF9pcDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IHBvc3RfY29t bWl0X29mZnNldDsKMTQ0NzQ6ICBfX3U2NCBhYm9ydF9pcDsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVf XygoYWxpZ25lZCg0ICogc2l6ZW9mKF9fdTY0KSkpKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJzZXEgewoxNDQ3 NDogIyA3NSAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5oIgoxNDQ3NDogIF9fdTMyIGNwdV9p ZF9zdGFydDsKMTQ0NzQ6ICMgOTAgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3JzZXEuaCIKMTQ0NzQ6 ICBfX3UzMiBjcHVfaWQ7CjE0NDc0OiAjIDEwOSAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5o IgoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgX191NjQgcHRyNjQ7CjE0NDc0OiAKMTQ0NzQ6ICAg X191NjQgcHRyOwoxNDQ3NDogIyAxMjQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3JzZXEuaCIKMTQ0 NzQ6ICB9IHJzZXFfY3M7CjE0NDc0OiAjIDE0NCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5o IgoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQg KiBzaXplb2YoX191NjQpKSkpOwoxNDQ3NDogIyAzNCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXVkaXRfY29udGV4dDsKMTQ0NzQ6IHN0 cnVjdCBiYWNraW5nX2Rldl9pbmZvOwoxNDQ3NDogc3RydWN0IGJpb19saXN0OwoxNDQ3NDogc3Ry dWN0IGJsa19wbHVnOwoxNDQ3NDogc3RydWN0IGNhcHR1cmVfY29udHJvbDsKMTQ0NzQ6IHN0cnVj dCBjZnNfcnE7CjE0NDc0OiBzdHJ1Y3QgZnNfc3RydWN0OwoxNDQ3NDogc3RydWN0IGZ1dGV4X3Bp X3N0YXRlOwoxNDQ3NDogc3RydWN0IGlvX2NvbnRleHQ7CjE0NDc0OiBzdHJ1Y3QgbWVtcG9saWN5 OwoxNDQ3NDogc3RydWN0IG5hbWVpZGF0YTsKMTQ0NzQ6IHN0cnVjdCBuc3Byb3h5OwoxNDQ3NDog c3RydWN0IHBlcmZfZXZlbnRfY29udGV4dDsKMTQ0NzQ6IHN0cnVjdCBwaWRfbmFtZXNwYWNlOwox NDQ3NDogc3RydWN0IHBpcGVfaW5vZGVfaW5mbzsKMTQ0NzQ6IHN0cnVjdCByY3Vfbm9kZTsKMTQ0 NzQ6IHN0cnVjdCByZWNsYWltX3N0YXRlOwoxNDQ3NDogc3RydWN0IHJvYnVzdF9saXN0X2hlYWQ7 CjE0NDc0OiBzdHJ1Y3Qgcm9vdF9kb21haW47CjE0NDc0OiBzdHJ1Y3QgcnE7CjE0NDc0OiBzdHJ1 Y3Qgc2NoZWRfYXR0cjsKMTQ0NzQ6IHN0cnVjdCBzY2hlZF9wYXJhbTsKMTQ0NzQ6IHN0cnVjdCBz ZXFfZmlsZTsKMTQ0NzQ6IHN0cnVjdCBzaWdoYW5kX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCBzaWdu YWxfc3RydWN0OwoxNDQ3NDogc3RydWN0IHRhc2tfZGVsYXlfaW5mbzsKMTQ0NzQ6IHN0cnVjdCB0 YXNrX2dyb3VwOwoxNDQ3NDogIyAyMTUgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDog ZXh0ZXJuIHZvaWQgc2NoZWR1bGVyX3RpY2sodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0KGxvbmcgdGltZW91dCk7CjE0NDc0 OiBleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X2ludGVycnVwdGlibGUobG9uZyB0aW1lb3V0 KTsKMTQ0NzQ6IGV4dGVybiBsb25nIHNjaGVkdWxlX3RpbWVvdXRfa2lsbGFibGUobG9uZyB0aW1l b3V0KTsKMTQ0NzQ6IGV4dGVybiBsb25nIHNjaGVkdWxlX3RpbWVvdXRfdW5pbnRlcnJ1cHRpYmxl KGxvbmcgdGltZW91dCk7CjE0NDc0OiBleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X2lkbGUo bG9uZyB0aW1lb3V0KTsKMTQ0NzQ6ICB2b2lkIHNjaGVkdWxlKHZvaWQpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgc2NoZWR1bGVfcHJlZW1wdF9kaXNhYmxlZCh2b2lkKTsKMTQ0NzQ6ICB2b2lkIHByZWVt cHRfc2NoZWR1bGVfaXJxKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBpb19zY2hlZHVsZV9wcmVwYXJlKHZvaWQp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgaW9fc2NoZWR1bGVfZmluaXNoKGludCB0b2tlbik7CjE0NDc0 OiBleHRlcm4gbG9uZyBpb19zY2hlZHVsZV90aW1lb3V0KGxvbmcgdGltZW91dCk7CjE0NDc0OiBl eHRlcm4gdm9pZCBpb19zY2hlZHVsZSh2b2lkKTsKMTQ0NzQ6ICMgMjQyICIuL2luY2x1ZGUvbGlu dXgvc2NoZWQuaCIKMTQ0NzQ6IHN0cnVjdCBwcmV2X2NwdXRpbWUgewoxNDQ3NDogCjE0NDc0OiAg dTY0IHV0aW1lOwoxNDQ3NDogIHU2NCBzdGltZTsKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCBsb2Nr OwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHZ0aW1lX3N0YXRlIHsKMTQ0 NzQ6IAoxNDQ3NDogIFZUSU1FX0lOQUNUSVZFID0gMCwKMTQ0NzQ6IAoxNDQ3NDogIFZUSU1FX0lE TEUsCjE0NDc0OiAKMTQ0NzQ6ICBWVElNRV9TWVMsCjE0NDc0OiAKMTQ0NzQ6ICBWVElNRV9VU0VS LAoxNDQ3NDogCjE0NDc0OiAgVlRJTUVfR1VFU1QsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgdnRpbWUgewoxNDQ3NDogIHNlcWNvdW50X3Qgc2VxY291bnQ7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBsb25nIHN0YXJ0dGltZTsKMTQ0NzQ6ICBlbnVtIHZ0aW1lX3N0YXRlIHN0YXRlOwox NDQ3NDogIHVuc2lnbmVkIGludCBjcHU7CjE0NDc0OiAgdTY0IHV0aW1lOwoxNDQ3NDogIHU2NCBz dGltZTsKMTQ0NzQ6ICB1NjQgZ3RpbWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHVjbGFtcF9pZCB7 CjE0NDc0OiAgVUNMQU1QX01JTiA9IDAsCjE0NDc0OiAgVUNMQU1QX01BWCwKMTQ0NzQ6ICBVQ0xB TVBfQ05UCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgcm9v dF9kb21haW4gZGVmX3Jvb3RfZG9tYWluOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBtdXRleCBzY2hl ZF9kb21haW5zX211dGV4OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzY2hlZF9pbmZv IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg cGNvdW50OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvbmcgcnVuX2Rl bGF5OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBsb25nIGxhc3RfYXJyaXZhbDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBsb25nIGxhc3RfcXVldWVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAjIDMy NSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBzdHJ1Y3QgbG9hZF93ZWlnaHQgewox NDQ3NDogIHVuc2lnbmVkIGxvbmcgd2VpZ2h0OwoxNDQ3NDogIHUzMiBpbnZfd2VpZ2h0OwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgMzUyICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IHN0cnVj dCB1dGlsX2VzdCB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGVucXVldWVkOwoxNDQ3NDogIHVuc2ln bmVkIGludCBld21hOwoxNDQ3NDogCjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9f KHNpemVvZih1NjQpKSkpOwoxNDQ3NDogIyA0MDEgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgox NDQ3NDogc3RydWN0IHNjaGVkX2F2ZyB7CjE0NDc0OiAgdTY0IGxhc3RfdXBkYXRlX3RpbWU7CjE0 NDc0OiAgdTY0IGxvYWRfc3VtOwoxNDQ3NDogIHU2NCBydW5uYWJsZV9sb2FkX3N1bTsKMTQ0NzQ6 ICB1MzIgdXRpbF9zdW07CjE0NDc0OiAgdTMyIHBlcmlvZF9jb250cmliOwoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgbG9hZF9hdmc7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBydW5uYWJsZV9sb2FkX2F2 ZzsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHV0aWxfYXZnOwoxNDQ3NDogIHN0cnVjdCB1dGlsX2Vz dCB1dGlsX2VzdDsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYp KSkpKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNjaGVkX3N0YXRpc3RpY3MgewoxNDQ3NDogCjE0 NDc0OiAgdTY0IHdhaXRfc3RhcnQ7CjE0NDc0OiAgdTY0IHdhaXRfbWF4OwoxNDQ3NDogIHU2NCB3 YWl0X2NvdW50OwoxNDQ3NDogIHU2NCB3YWl0X3N1bTsKMTQ0NzQ6ICB1NjQgaW93YWl0X2NvdW50 OwoxNDQ3NDogIHU2NCBpb3dhaXRfc3VtOwoxNDQ3NDogCjE0NDc0OiAgdTY0IHNsZWVwX3N0YXJ0 OwoxNDQ3NDogIHU2NCBzbGVlcF9tYXg7CjE0NDc0OiAgczY0IHN1bV9zbGVlcF9ydW50aW1lOwox NDQ3NDogCjE0NDc0OiAgdTY0IGJsb2NrX3N0YXJ0OwoxNDQ3NDogIHU2NCBibG9ja19tYXg7CjE0 NDc0OiAgdTY0IGV4ZWNfbWF4OwoxNDQ3NDogIHU2NCBzbGljZV9tYXg7CjE0NDc0OiAKMTQ0NzQ6 ICB1NjQgbnJfbWlncmF0aW9uc19jb2xkOwoxNDQ3NDogIHU2NCBucl9mYWlsZWRfbWlncmF0aW9u c19hZmZpbmU7CjE0NDc0OiAgdTY0IG5yX2ZhaWxlZF9taWdyYXRpb25zX3J1bm5pbmc7CjE0NDc0 OiAgdTY0IG5yX2ZhaWxlZF9taWdyYXRpb25zX2hvdDsKMTQ0NzQ6ICB1NjQgbnJfZm9yY2VkX21p Z3JhdGlvbnM7CjE0NDc0OiAKMTQ0NzQ6ICB1NjQgbnJfd2FrZXVwczsKMTQ0NzQ6ICB1NjQgbnJf d2FrZXVwc19zeW5jOwoxNDQ3NDogIHU2NCBucl93YWtldXBzX21pZ3JhdGU7CjE0NDc0OiAgdTY0 IG5yX3dha2V1cHNfbG9jYWw7CjE0NDc0OiAgdTY0IG5yX3dha2V1cHNfcmVtb3RlOwoxNDQ3NDog IHU2NCBucl93YWtldXBzX2FmZmluZTsKMTQ0NzQ6ICB1NjQgbnJfd2FrZXVwc19hZmZpbmVfYXR0 ZW1wdHM7CjE0NDc0OiAgdTY0IG5yX3dha2V1cHNfcGFzc2l2ZTsKMTQ0NzQ6ICB1NjQgbnJfd2Fr ZXVwc19pZGxlOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2NoZWRf ZW50aXR5IHsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsb2FkX3dlaWdodCBsb2FkOwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgcnVubmFibGVfd2VpZ2h0OwoxNDQ3NDogIHN0cnVjdCByYl9ub2RlIHJ1 bl9ub2RlOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgZ3JvdXBfbm9kZTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgb25fcnE7CjE0NDc0OiAKMTQ0NzQ6ICB1NjQgZXhlY19zdGFydDsKMTQ0NzQ6ICB1 NjQgc3VtX2V4ZWNfcnVudGltZTsKMTQ0NzQ6ICB1NjQgdnJ1bnRpbWU7CjE0NDc0OiAgdTY0IHBy ZXZfc3VtX2V4ZWNfcnVudGltZTsKMTQ0NzQ6IAoxNDQ3NDogIHU2NCBucl9taWdyYXRpb25zOwox NDQ3NDogCjE0NDc0OiAgc3RydWN0IHNjaGVkX3N0YXRpc3RpY3Mgc3RhdGlzdGljczsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgaW50IGRlcHRoOwoxNDQ3NDogIHN0cnVjdCBzY2hlZF9lbnRpdHkg KnBhcmVudDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjZnNfcnEgKmNmc19ycTsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBjZnNfcnEgKm15X3E7CjE0NDc0OiAjIDQ4MiAiLi9pbmNsdWRlL2xpbnV4 L3NjaGVkLmgiCjE0NDc0OiAgc3RydWN0IHNjaGVkX2F2ZyBhdmc7CjE0NDc0OiAKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzY2hlZF9ydF9lbnRpdHkgewoxNDQ3NDogIHN0cnVjdCBs aXN0X2hlYWQgcnVuX2xpc3Q7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0aW1lb3V0OwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgd2F0Y2hkb2dfc3RhbXA7CjE0NDc0OiAgdW5zaWduZWQgaW50IHRpbWVf c2xpY2U7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgb25fcnE7CjE0NDc0OiAgdW5zaWduZWQgc2hv cnQgb25fbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBzY2hlZF9ydF9lbnRpdHkgKmJhY2s7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5IHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSByYl9u b2RlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHU2NCBkbF9ydW50aW1lOwoxNDQ3NDogIHU2NCBkbF9kZWFkbGluZTsKMTQ0NzQ6ICB1NjQg ZGxfcGVyaW9kOwoxNDQ3NDogIHU2NCBkbF9idzsKMTQ0NzQ6ICB1NjQgZGxfZGVuc2l0eTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzNjQg cnVudGltZTsKMTQ0NzQ6ICB1NjQgZGVhZGxpbmU7CjE0NDc0OiAgdW5zaWduZWQgaW50IGZsYWdz OwoxNDQ3NDogIyA1NTEgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogIHVuc2lnbmVk IGludCBkbF90aHJvdHRsZWQgOiAxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkbF9ib29zdGVkIDog MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZGxfeWllbGRlZCA6IDE7CjE0NDc0OiAgdW5zaWduZWQg aW50IGRsX25vbl9jb250ZW5kaW5nIDogMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZGxfb3ZlcnJ1 biA6IDE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBocnRpbWVyIGRsX3RpbWVyOwoxNDQ3NDogIyA1NzAgIi4vaW5jbHVkZS9saW51eC9zY2hl ZC5oIgoxNDQ3NDogIHN0cnVjdCBocnRpbWVyIGluYWN0aXZlX3RpbWVyOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgNjA4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IHVuaW9uIHJjdV9zcGVj aWFsIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1OCBibG9ja2VkOwoxNDQ3NDogICB1OCBu ZWVkX3FzOwoxNDQ3NDogICB1OCBleHBfaGludDsKMTQ0NzQ6ICAgdTggZGVmZXJyZWRfcXM7CjE0 NDc0OiAgfSBiOwoxNDQ3NDogIHUzMiBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBw ZXJmX2V2ZW50X3Rhc2tfY29udGV4dCB7CjE0NDc0OiAgcGVyZl9pbnZhbGlkX2NvbnRleHQgPSAt MSwKMTQ0NzQ6ICBwZXJmX2h3X2NvbnRleHQgPSAwLAoxNDQ3NDogIHBlcmZfc3dfY29udGV4dCwK MTQ0NzQ6ICBwZXJmX25yX3Rhc2tfY29udGV4dHMsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3Qgd2FrZV9xX25vZGUgewoxNDQ3NDogIHN0cnVjdCB3YWtlX3Ffbm9kZSAqbmV4dDsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0YXNrX3N0cnVjdCB7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB0aHJlYWRfaW5mbyB0aHJl YWRfaW5mbzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9sYXRpbGUgbG9uZyBzdGF0ZTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHZvaWQgKnN0YWNrOwoxNDQ3NDogIHJlZmNvdW50X3QgdXNhZ2U7CjE0NDc0OiAKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CjE0NDc0OiAgdW5zaWduZWQgaW50IHB0cmFjZTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxsaXN0X25vZGUgd2FrZV9lbnRyeTsKMTQ0NzQ6ICBp bnQgb25fY3B1OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY3B1OwoxNDQ3 NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IHdha2VlX2ZsaXBzOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgd2FrZWVfZmxpcF9kZWNheV90czsKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmxhc3Rf d2FrZWU7CjE0NDc0OiAjIDY3MCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiAgaW50 IHJlY2VudF91c2VkX2NwdTsKMTQ0NzQ6ICBpbnQgd2FrZV9jcHU7CjE0NDc0OiAKMTQ0NzQ6ICBp bnQgb25fcnE7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgcHJpbzsKMTQ0NzQ6ICBpbnQgc3RhdGljX3By aW87CjE0NDc0OiAgaW50IG5vcm1hbF9wcmlvOwoxNDQ3NDogIHVuc2lnbmVkIGludCBydF9wcmlv cml0eTsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBzY2hlZF9jbGFzcyAqc2NoZWRfY2xh c3M7CjE0NDc0OiAgc3RydWN0IHNjaGVkX2VudGl0eSBzZTsKMTQ0NzQ6ICBzdHJ1Y3Qgc2NoZWRf cnRfZW50aXR5IHJ0OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRhc2tfZ3JvdXAgKnNjaGVkX3Rh c2tfZ3JvdXA7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5IGRsOwoxNDQ3 NDogIyA2OTcgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogIHN0cnVjdCBobGlzdF9o ZWFkIHByZWVtcHRfbm90aWZpZXJzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVu c2lnbmVkIGludCBidHJhY2Vfc2VxOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgcG9saWN5OwoxNDQ3NDogIGludCBucl9jcHVzX2FsbG93ZWQ7CjE0NDc0OiAgY29uc3QgY3B1 bWFza190ICpjcHVzX3B0cjsKMTQ0NzQ6ICBjcHVtYXNrX3QgY3B1c19tYXNrOwoxNDQ3NDogIyA3 MjQgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogIHN0cnVjdCBzY2hlZF9pbmZvIHNj aGVkX2luZm87CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIHRhc2tzOwoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IHBsaXN0X25vZGUgcHVzaGFibGVfdGFza3M7CjE0NDc0OiAgc3RydWN0 IHJiX25vZGUgcHVzaGFibGVfZGxfdGFza3M7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVj dCBtbV9zdHJ1Y3QgKm1tOwoxNDQ3NDogIHN0cnVjdCBtbV9zdHJ1Y3QgKmFjdGl2ZV9tbTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHZtYWNhY2hlIHZtYWNhY2hlOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19yc3Nfc3RhdCByc3Nfc3RhdDsKMTQ0NzQ6IAoxNDQ3 NDogIGludCBleGl0X3N0YXRlOwoxNDQ3NDogIGludCBleGl0X2NvZGU7CjE0NDc0OiAgaW50IGV4 aXRfc2lnbmFsOwoxNDQ3NDogCjE0NDc0OiAgaW50IHBkZWF0aF9zaWduYWw7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIGpvYmN0bDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWdu ZWQgaW50IHBlcnNvbmFsaXR5OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBzY2hl ZF9yZXNldF9vbl9mb3JrOjE7CjE0NDc0OiAgdW5zaWduZWQgc2NoZWRfY29udHJpYnV0ZXNfdG9f bG9hZDoxOwoxNDQ3NDogIHVuc2lnbmVkIHNjaGVkX21pZ3JhdGVkOjE7CjE0NDc0OiAgdW5zaWdu ZWQgc2NoZWRfcmVtb3RlX3dha2V1cDoxOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCA6MDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGluX2V4ZWN2ZToxOwoxNDQ3NDogIHVuc2lnbmVkIGluX2lv d2FpdDoxOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgcmVzdG9yZV9zaWdtYXNrOjE7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGluX3VzZXJfZmF1bHQ6MTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBub19j Z3JvdXBfbWlncmF0aW9uOjE7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBmcm96ZW46MTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCB1c2VfbWVtZGVsYXk6MTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBhdG9taWNfZmxhZ3M7CjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgcmVzdGFydF9ibG9jayByZXN0YXJ0X2Jsb2NrOwoxNDQ3NDogCjE0NDc0 OiAgcGlkX3QgcGlkOwoxNDQ3NDogIHBpZF90IHRnaWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzdGFja19jYW5hcnk7CjE0NDc0OiAjIDgwNyAiLi9pbmNs dWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiAgc3RydWN0IHRhc2tfc3RydWN0ICpyZWFsX3BhcmVu dDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRhc2tfc3RydWN0ICpwYXJlbnQ7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGNo aWxkcmVuOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgc2libGluZzsKMTQ0NzQ6ICBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKmdyb3VwX2xlYWRlcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgcHRyYWNl ZDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIHB0cmFjZV9lbnRyeTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IHBpZCAqdGhyZWFkX3BpZDsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rfbm9k ZSBwaWRfbGlua3NbUElEVFlQRV9NQVhdOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFk X2dyb3VwOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFkX25vZGU7CjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgaW50ICpzZXRfY2hpbGRfdGlkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKmNsZWFy X2NoaWxkX3RpZDsKMTQ0NzQ6IAoxNDQ3NDogIHU2NCB1dGltZTsKMTQ0NzQ6ICB1NjQgc3RpbWU7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1NjQgZ3RpbWU7CjE0NDc0 OiAgc3RydWN0IHByZXZfY3B1dGltZSBwcmV2X2NwdXRpbWU7CjE0NDc0OiAjIDg1OCAiLi9pbmNs dWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBudmNzdzsKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIG5pdmNzdzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IHN0YXJ0X3Rp bWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHU2NCBzdGFydF9ib290dGltZTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtaW5fZmx0OwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgbWFqX2ZsdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHBvc2l4X2NwdXRpbWVy cyBwb3NpeF9jcHV0aW1lcnM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBjb25zdCBzdHJ1Y3QgY3JlZCAqcHRyYWNlcl9jcmVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBjb25zdCBzdHJ1Y3QgY3JlZCAqcmVhbF9jcmVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBj b25zdCBzdHJ1Y3QgY3JlZCAqY3JlZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBz dHJ1Y3Qga2V5ICpjYWNoZWRfcmVxdWVzdGVkX2tleTsKMTQ0NzQ6ICMgODk3ICIuL2luY2x1ZGUv bGludXgvc2NoZWQuaCIKMTQ0NzQ6ICBjaGFyIGNvbW1bMTZdOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IG5hbWVpZGF0YSAqbmFtZWlkYXRhOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg c3lzdl9zZW0gc3lzdnNlbTsKMTQ0NzQ6ICBzdHJ1Y3Qgc3lzdl9zaG0gc3lzdnNobTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsYXN0X3N3aXRjaF9jb3VudDsKMTQ0NzQ6 ICB1bnNpZ25lZCBsb25nIGxhc3Rfc3dpdGNoX3RpbWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHN0cnVjdCBmc19zdHJ1Y3QgKmZzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZmls ZXNfc3RydWN0ICpmaWxlczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IG5zcHJveHkg Km5zcHJveHk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBzaWduYWxfc3RydWN0ICpz aWduYWw7CjE0NDc0OiAgc3RydWN0IHNpZ2hhbmRfc3RydWN0ICpzaWdoYW5kOwoxNDQ3NDogIHNp Z3NldF90IGJsb2NrZWQ7CjE0NDc0OiAgc2lnc2V0X3QgcmVhbF9ibG9ja2VkOwoxNDQ3NDogCjE0 NDc0OiAgc2lnc2V0X3Qgc2F2ZWRfc2lnbWFzazsKMTQ0NzQ6ICBzdHJ1Y3Qgc2lncGVuZGluZyBw ZW5kaW5nOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc2FzX3NzX3NwOwoxNDQ3NDogIHNpemVfdCBz YXNfc3Nfc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc2FzX3NzX2ZsYWdzOwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgKnRhc2tfd29ya3M7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGF1ZGl0X2NvbnRleHQgKmF1ZGl0X2NvbnRleHQ7CjE0NDc0 OiAKMTQ0NzQ6ICBrdWlkX3QgbG9naW51aWQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNlc3Npb25p ZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBzZWNjb21wIHNlY2NvbXA7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHUzMiBwYXJlbnRfZXhlY19pZDsKMTQ0NzQ6ICB1MzIgc2VsZl9leGVjX2lkOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzcGlubG9ja190IGFsbG9jX2xvY2s7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHJhd19zcGlubG9ja190IHBpX2xvY2s7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3Qgd2FrZV9xX25vZGUgd2FrZV9xOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCByYl9yb290X2NhY2hlZCBwaV93YWl0ZXJzOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRh c2tfc3RydWN0ICpwaV90b3BfdGFzazsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBydF9tdXRleF93 YWl0ZXIgKnBpX2Jsb2NrZWRfb247CjE0NDc0OiAjIDEwMDAgIi4vaW5jbHVkZS9saW51eC9zY2hl ZC5oIgoxNDQ3NDogIHZvaWQgKmpvdXJuYWxfaW5mbzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg c3RydWN0IGJpb19saXN0ICpiaW9fbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBzdHJ1Y3QgYmxrX3BsdWcgKnBsdWc7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg c3RydWN0IHJlY2xhaW1fc3RhdGUgKnJlY2xhaW1fc3RhdGU7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3QgYmFja2luZ19kZXZfaW5mbyAqYmFja2luZ19kZXZfaW5mbzsKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBpb19jb250ZXh0ICppb19jb250ZXh0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3QgY2FwdHVyZV9jb250cm9sICpjYXB0dXJlX2NvbnRyb2w7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIGxvbmcgcHRyYWNlX21lc3NhZ2U7CjE0NDc0OiAga2VybmVsX3NpZ2luZm9f dCAqbGFzdF9zaWdpbmZvOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRhc2tfaW9fYWNjb3VudGlu ZyBpb2FjOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIHU2NCBhY2N0X3Jzc19tZW0xOwoxNDQ3NDogCjE0NDc0OiAgdTY0IGFjY3Rfdm1fbWVt MTsKMTQ0NzQ6IAoxNDQ3NDogIHU2NCBhY2N0X3RpbWV4cGQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgbm9kZW1hc2tfdCBtZW1zX2FsbG93ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICBzZXFj b3VudF90IG1lbXNfYWxsb3dlZF9zZXE7CjE0NDc0OiAgaW50IGNwdXNldF9tZW1fc3ByZWFkX3Jv dG9yOwoxNDQ3NDogIGludCBjcHVzZXRfc2xhYl9zcHJlYWRfcm90b3I7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGNzc19zZXQgKmNncm91cHM7CjE0NDc0OiAKMTQ0NzQ6 ICBzdHJ1Y3QgbGlzdF9oZWFkIGNnX2xpc3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHJvYnVzdF9saXN0X2hlYWQgKnJvYnVz dF9saXN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQg cGlfc3RhdGVfbGlzdDsKMTQ0NzQ6ICBzdHJ1Y3QgZnV0ZXhfcGlfc3RhdGUgKnBpX3N0YXRlX2Nh Y2hlOwoxNDQ3NDogIHN0cnVjdCBtdXRleCBmdXRleF9leGl0X211dGV4OwoxNDQ3NDogIHVuc2ln bmVkIGludCBmdXRleF9zdGF0ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHBlcmZf ZXZlbnRfY29udGV4dCAqcGVyZl9ldmVudF9jdHhwW3BlcmZfbnJfdGFza19jb250ZXh0c107CjE0 NDc0OiAgc3RydWN0IG11dGV4IHBlcmZfZXZlbnRfbXV0ZXg7CjE0NDc0OiAgc3RydWN0IGxpc3Rf aGVhZCBwZXJmX2V2ZW50X2xpc3Q7CjE0NDc0OiAjIDExMzAgIi4vaW5jbHVkZS9saW51eC9zY2hl ZC5oIgoxNDQ3NDogIHN0cnVjdCByc2VxICpyc2VxOwoxNDQ3NDogIHUzMiByc2VxX3NpZzsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcnNlcV9l dmVudF9tYXNrOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgdGxiZmx1c2hfdW5tYXBf YmF0Y2ggdGxiX3ViYzsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgcmVmY291bnRf dCByY3VfdXNlcnM7CjE0NDc0OiAgIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0NzQ6ICB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpzcGxpY2Vf cGlwZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwYWdlX2ZyYWcgdGFza19mcmFnOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19kZWxheV9pbmZvICpkZWxheXM7CjE0NDc0OiAj IDExNjMgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogIGludCBucl9kaXJ0aWVkOwox NDQ3NDogIGludCBucl9kaXJ0aWVkX3BhdXNlOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBkaXJ0eV9wYXVzZWRfd2hlbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IGxhdGVuY3lf cmVjb3JkX2NvdW50OwoxNDQ3NDogIHN0cnVjdCBsYXRlbmN5X3JlY29yZCBsYXRlbmN5X3JlY29y ZFszMl07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHU2 NCB0aW1lcl9zbGFja19uczsKMTQ0NzQ6ICB1NjQgZGVmYXVsdF90aW1lcl9zbGFja19uczsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIGludCBjdXJyX3JldF9zdGFjazsKMTQ0NzQ6ICBpbnQgY3Vycl9yZXRfZGVwdGg7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBmdHJhY2VfcmV0X3N0YWNrICpyZXRfc3RhY2s7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyBmdHJhY2VfdGltZXN0YW1w OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNf dCB0cmFjZV9vdmVycnVuOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfdCB0cmFjaW5n X2dyYXBoX3BhdXNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5z aWduZWQgbG9uZyB0cmFjZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0 cmFjZV9yZWN1cnNpb247CjE0NDc0OiAjIDEyMzUgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgox NDQ3NDogIHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZ19pbl9vb207CjE0NDc0OiAgZ2ZwX3QgbWVt Y2dfb29tX2dmcF9tYXNrOwoxNDQ3NDogIGludCBtZW1jZ19vb21fb3JkZXI7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBtZW1jZ19ucl9wYWdlc19vdmVyX2hpZ2g7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBtZW1fY2dyb3VwICphY3RpdmVfbWVtY2c7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHJlcXVlc3RfcXVldWUgKnRocm90dGxl X3F1ZXVlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIHVuc2lnbmVkIGludCBzZXF1ZW50aWFsX2lvOwoxNDQ3NDogIHVuc2lnbmVkIGludCBz ZXF1ZW50aWFsX2lvX2F2ZzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IGludCBwYWdlZmF1bHRfZGlzYWJsZWQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKm9vbV9yZWFwZXJfbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHZtX3N0 cnVjdCAqc3RhY2tfdm1fYXJlYTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByZWZj b3VudF90IHN0YWNrX3JlZmNvdW50OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKnNlY3VyaXR5OwoxNDQ3NDogIyAxMjg4ICIuL2lu Y2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1 Y3QgdGhyZWFkX3N0cnVjdCB0aHJlYWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBw aWQgKnRhc2tfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gdGFzay0+dGhyZWFkX3BpZDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTMxNyAiLi9pbmNsdWRl L2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBwaWRfdCBfX3Rhc2tfcGlkX25yX25zKHN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzaywgZW51bSBwaWRfdHlwZSB0eXBlLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAq bnMpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3BpZF9ucihzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHNrLT5waWQ7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHBpZF90IHRhc2tfcGlkX25yX25zKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1 Y3QgcGlkX25hbWVzcGFjZSAqbnMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fdGFza19waWRf bnJfbnModHNrLCBQSURUWVBFX1BJRCwgbnMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRf dCB0YXNrX3BpZF92bnIoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIF9fdGFza19waWRfbnJfbnModHNrLCBQSURUWVBFX1BJRCwgKCh2b2lkICopMCkpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBpZF90IHRhc2tfdGdpZF9ucihzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHNrLT50Z2lkOwoxNDQ3 NDogfQoxNDQ3NDogIyAxMzUwICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBw aWRfYWxpdmUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBwLT50aHJlYWRfcGlkICE9ICgodm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBwaWRfdCB0YXNrX3BncnBfbnJfbnMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBw aWRfbmFtZXNwYWNlICpucykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX190YXNrX3BpZF9ucl9u cyh0c2ssIFBJRFRZUEVfUEdJRCwgbnMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0 YXNrX3BncnBfdm5yKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBfX3Rhc2tfcGlkX25yX25zKHRzaywgUElEVFlQRV9QR0lELCAoKHZvaWQgKikwKSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19zZXNzaW9uX25yX25zKHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNrLCBQSURUWVBFX1NJRCwgbnMpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3Nlc3Npb25fdm5yKHN0cnVjdCB0YXNr X3N0cnVjdCAqdHNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX3Rhc2tfcGlkX25yX25zKHRz aywgUElEVFlQRV9TSUQsICgodm9pZCAqKTApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlk X3QgdGFza190Z2lkX25yX25zKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgcGlkX25h bWVzcGFjZSAqbnMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNr LCBQSURUWVBFX1RHSUQsIG5zKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza190 Z2lkX3ZucihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g X190YXNrX3BpZF9ucl9ucyh0c2ssIFBJRFRZUEVfVEdJRCwgKCh2b2lkICopMCkpOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3BwaWRfbnJfbnMoY29uc3Qgc3RydWN0IHRhc2tf c3RydWN0ICp0c2ssIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucykKMTQ0NzQ6IHsKMTQ0NzQ6ICBw aWRfdCBwaWQgPSAwOwoxNDQ3NDogCjE0NDc0OiAgcmN1X3JlYWRfbG9jaygpOwoxNDQ3NDogIGlm IChwaWRfYWxpdmUodHNrKSkKMTQ0NzQ6ICAgcGlkID0gdGFza190Z2lkX25yX25zKCh7IHR5cGVv ZigqKHRzay0+cmVhbF9wYXJlbnQpKSAqX19fX19fX19wMSA9ICh0eXBlb2YoKih0c2stPnJlYWxf cGFyZW50KSkgKikoeyB1bmlvbiB7IHR5cGVvZigodHNrLT5yZWFsX3BhcmVudCkpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKHRzay0+cmVhbF9w YXJlbnQpKSwgX191Ll9fYywgc2l6ZW9mKCh0c2stPnJlYWxfcGFyZW50KSkpOyBlbHNlIF9fcmVh ZF9vbmNlX3NpemVfbm9jaGVjaygmKCh0c2stPnJlYWxfcGFyZW50KSksIF9fdS5fX2MsIHNpemVv ZigodHNrLT5yZWFsX3BhcmVudCkpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsg ZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKHRzay0+cmVhbF9wYXJlbnQpKSAqKShfX19f X19fX3AxKSk7IH0pLCBucyk7CjE0NDc0OiAgcmN1X3JlYWRfdW5sb2NrKCk7CjE0NDc0OiAKMTQ0 NzQ6ICByZXR1cm4gcGlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3BwaWRf bnIoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IHRhc2tfcHBpZF9ucl9ucyh0c2ssICZpbml0X3BpZF9ucyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19wZ3JwX25yKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiB0YXNrX3BncnBfbnJfbnModHNrLCAmaW5pdF9waWRfbnMp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25l ZCBpbnQgdGFza19zdGF0ZV9pbmRleChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdHNrX3N0YXRlID0gKHsgdW5pb24geyB0eXBlb2YodHNrLT5z dGF0ZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUo Jih0c2stPnN0YXRlKSwgX191Ll9fYywgc2l6ZW9mKHRzay0+c3RhdGUpKTsgZWxzZSBfX3JlYWRf b25jZV9zaXplX25vY2hlY2soJih0c2stPnN0YXRlKSwgX191Ll9fYywgc2l6ZW9mKHRzay0+c3Rh dGUpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgc3RhdGUgPSAodHNrX3N0YXRlIHwgdHNrLT5leGl0X3N0YXRlKSAmICgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp OwoxNDQ3NDogCjE0NDc0OiAgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8x NDE3KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDog IiAiKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAx MCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgPT0gMCB8fCAoKCgoKCgweDAwMDAgfCAw eDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAw NDApICsgMSkgPDwgMSkpICYgKCgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQg fCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpIC0gMSkpICE9 IDApIikpKTsgaWYgKCEoISgoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwg MHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA9PSAwIHx8ICgo KCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8 IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4 MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8 PCAxKSkgLSAxKSkgIT0gMCkpKSkgX19jb21waWxldGltZV9hc3NlcnRfMTQxNygpOyB9IHdoaWxl ICgwKTsKMTQ0NzQ6IAoxNDQ3NDogIGlmICh0c2tfc3RhdGUgPT0gKDB4MDAwMiB8IDB4MDQwMCkp CjE0NDc0OiAgIHN0YXRlID0gKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAw eDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSk7CjE0NDc0OiAKMTQ0NzQ6ICBy ZXR1cm4gZmxzKHN0YXRlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2hhciB0YXNrX2luZGV4 X3RvX2NoYXIodW5zaWduZWQgaW50IHN0YXRlKQoxNDQ3NDogewoxNDQ3NDogIHN0YXRpYyBjb25z dCBjaGFyIHN0YXRlX2NoYXJbXSA9ICJSU0RUdFhaUEkiOwoxNDQ3NDogCjE0NDc0OiAgZG8geyBl eHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNDI5KHZvaWQpIF9fYXR0cmlidXRlX18o KF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiMSArIGlsb2cyKFRBU0tfUkVQT1JU X01BWCkgIT0gc2l6ZW9mKHN0YXRlX2NoYXIpIC0gMSIpKSk7IGlmICghKCEoMSArICggX19idWls dGluX2NvbnN0YW50X3AoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgw MDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA/ICggX19idWlsdGlu X2NvbnN0YW50X3AoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4 IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA/ICggKCgoKDB4MDAwMCB8 IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4 MDA0MCkgKyAxKSA8PCAxKSkgPCAyID8gMCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIg fCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkp ICYgKDFVTEwgPDwgNjMpID8gNjMgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgw MDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgx VUxMIDw8IDYyKSA/IDYyIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8 IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8 PCA2MSkgPyA2MSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAw MDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNjAp ID8gNjAgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwg MHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDU5KSA/IDU5 IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAx MCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1OCkgPyA1OCA6ICgo KCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAw eDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNTcpID8gNTcgOiAoKCgoMHgw MDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIw IHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKCgoKDB4MDAwMCB8 IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4 MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1NSkgPyA1NSA6ICgoKCgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp ICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNTQpID8gNTQgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwg MHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEp IDw8IDEpKSAmICgxVUxMIDw8IDUzKSA/IDUzIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAw MiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAx KSkgJiAoMVVMTCA8PCA1MikgPyA1MiA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAw eDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYg KDFVTEwgPDwgNTEpID8gNTEgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0 IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxM IDw8IDUwKSA/IDUwIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0 OSkgPyA0OSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDgg fCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNDgpID8g NDggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgw MDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQ3KSA/IDQ3IDog KCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8 IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0NikgPyA0NiA6ICgoKCgw eDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAw MjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNDUpID8gNDUgOiAoKCgoMHgwMDAw IHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwg MHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQ0KSA/IDQ0IDogKCgoKDB4MDAwMCB8IDB4 MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0 MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0MykgPyA0MyA6ICgoKCgweDAwMDAgfCAweDAwMDEg fCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsg MSkgPDwgMSkpICYgKDFVTEwgPDwgNDIpID8gNDIgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgw MDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8 IDEpKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8 IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkg JiAoMVVMTCA8PCA0MCkgPyA0MCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFV TEwgPDwgMzkpID8gMzkgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwg MHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8 IDM4KSA/IDM4IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAw OCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzNykg PyAzNyA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAw eDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMzYpID8gMzYg OiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEw IHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKCgo KDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4 MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzNCkgPyAzNCA6ICgoKCgweDAw MDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAg fCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMzMpID8gMzMgOiAoKCgoMHgwMDAwIHwg MHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgw MDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDMyKSA/IDMyIDogKCgoKDB4MDAwMCB8IDB4MDAw MSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkg KyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzMSkgPyAzMSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAw eDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkg PDwgMSkpICYgKDFVTEwgPDwgMzApID8gMzAgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAy IHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEp KSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4 MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAo MVVMTCA8PCAyOCkgPyAyOCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQg fCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwg PDwgMjcpID8gMjcgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgw MDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDI2 KSA/IDI2IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8 IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyNSkgPyAy NSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAw MTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMjQpID8gMjQgOiAo KCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwg MHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDIzKSA/IDIzIDogKCgoKDB4 MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAy MCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyMikgPyAyMiA6ICgoKCgweDAwMDAg fCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAw eDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMjEpID8gMjEgOiAoKCgoMHgwMDAwIHwgMHgw MDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQw KSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8 IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAx KSA8PCAxKSkgJiAoMVVMTCA8PCAxOSkgPyAxOSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAw MDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwg MSkpICYgKDFVTEwgPDwgMTgpID8gMTggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwg MHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAm ICgxVUxMIDw8IDE3KSA/IDE3IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAw NCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVM TCA8PCAxNikgPyAxNiA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAw eDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwg MTUpID8gMTUgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4 IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDE0KSA/ IDE0IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4 MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAxMykgPyAxMyA6 ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAg fCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMTIpID8gMTIgOiAoKCgo MHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgw MDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDExKSA/IDExIDogKCgoKDB4MDAw MCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8 IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAxMCkgPyAxMCA6ICgoKCgweDAwMDAgfCAw eDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAw NDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgOSkgPyA5IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8 IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAx KSA8PCAxKSkgJiAoMVVMTCA8PCA4KSA/IDggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAy IHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEp KSAmICgxVUxMIDw8IDcpID8gNyA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFV TEwgPDwgNikgPyA2IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1 KSA/IDUgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwg MHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQpID8gNCA6 ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAg fCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMykgPyAzIDogKCgoKDB4 MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAy MCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6IChz aXplb2YoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgw MDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA8PSA0KSA/IF9faWxvZzJfdTMyKCgo KDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4 MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgOiBfX2lsb2cyX3U2NCgoKCgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp ICsgMSkgPDwgMSkpICkgIT0gc2l6ZW9mKHN0YXRlX2NoYXIpIC0gMSkpKSBfX2NvbXBpbGV0aW1l X2Fzc2VydF8xNDI5KCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHN0YXRl X2NoYXJbc3RhdGVdOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjaGFyIHRhc2tfc3RhdGVfdG9f Y2hhcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdGFz a19pbmRleF90b19jaGFyKHRhc2tfc3RhdGVfaW5kZXgodHNrKSk7CjE0NDc0OiB9CjE0NDc0OiAj IDE0NDggIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlzX2dsb2JhbF9pbml0 KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB0YXNrX3Rn aWRfbnIodHNrKSA9PSAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHBp ZCAqY2FkX3BpZDsKMTQ0NzQ6ICMgMTUxNyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGlzX3BlcmNwdV90aHJlYWQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJl dHVybiAoZ2V0X2N1cnJlbnQoKS0+ZmxhZ3MgJiAweDA0MDAwMDAwKSAmJgoxNDQ3NDogICAoZ2V0 X2N1cnJlbnQoKS0+bnJfY3B1c19hbGxvd2VkID09IDEpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogfQoxNDQ3NDogIyAxNTQ5ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgdGFza19ub19uZXdfcHJpdnMoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0 ZXN0X2JpdCgwLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0YXNrX3NldF9ub19u ZXdfcHJpdnMoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHNldF9iaXQoMCwgJnAtPmF0b21pY19m bGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwcmVhZF9wYWdlKHN0cnVjdCB0YXNr X3N0cnVjdCAqcCkgeyByZXR1cm4gdGVzdF9iaXQoMSwgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgdGFza19zZXRfc3ByZWFkX3BhZ2Uoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHNl dF9iaXQoMSwgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFza19jbGVhcl9zcHJl YWRfcGFnZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgY2xlYXJfYml0KDEsICZwLT5hdG9taWNf ZmxhZ3MpOyB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19zcHJlYWRfc2xhYihzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnApIHsgcmV0dXJuIHRlc3RfYml0KDIsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHRhc2tfc2V0X3NwcmVhZF9zbGFiKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBz ZXRfYml0KDIsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfY2xlYXJfc3By ZWFkX3NsYWIoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IGNsZWFyX2JpdCgyLCAmcC0+YXRvbWlj X2ZsYWdzKTsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRhc2tfc3BlY19zc2JfZGlzYWJsZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnApIHsgcmV0dXJuIHRlc3RfYml0KDMsICZwLT5hdG9taWNfZmxhZ3Mp OyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfc3NiX2Rpc2FibGUoc3RydWN0IHRhc2tfc3Ry dWN0ICpwKSB7IHNldF9iaXQoMywgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFz a19jbGVhcl9zcGVjX3NzYl9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBjbGVhcl9i aXQoMywgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwZWNf c3NiX25vZXhlYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgcmV0dXJuIHRlc3RfYml0KDcsICZw LT5hdG9taWNfZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfc3NiX25vZXhlYyhz dHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgc2V0X2JpdCg3LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB0YXNrX2NsZWFyX3NwZWNfc3NiX25vZXhlYyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnApIHsgY2xlYXJfYml0KDcsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgdGFza19zcGVjX3NzYl9mb3JjZV9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBy ZXR1cm4gdGVzdF9iaXQoNCwgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFza19z ZXRfc3BlY19zc2JfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgc2V0X2Jp dCg0LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRhc2tfc3BlY19p Yl9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyByZXR1cm4gdGVzdF9iaXQoNSwgJnAt PmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFza19zZXRfc3BlY19pYl9kaXNhYmxlKHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBzZXRfYml0KDUsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHRhc2tfY2xlYXJfc3BlY19pYl9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAq cCkgeyBjbGVhcl9iaXQoNSwgJnAtPmF0b21pY19mbGFncyk7IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCB0YXNrX3NwZWNfaWJfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgcmV0 dXJuIHRlc3RfYml0KDYsICZwLT5hdG9taWNfZmxhZ3MpOyB9CjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0 X3NwZWNfaWJfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgc2V0X2JpdCg2 LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiBjdXJyZW50 X3Jlc3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyBvcmlnX2ZsYWdzLCB1bnNpZ25lZCBsb25nIGZs YWdzKQoxNDQ3NDogewoxNDQ3NDogIGdldF9jdXJyZW50KCktPmZsYWdzICY9IH5mbGFnczsKMTQ0 NzQ6ICBnZXRfY3VycmVudCgpLT5mbGFncyB8PSBvcmlnX2ZsYWdzICYgZmxhZ3M7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgY3B1c2V0X2NwdW1hc2tfY2FuX3Nocmluayhjb25z dCBzdHJ1Y3QgY3B1bWFzayAqY3VyLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqdHJpYWwpOwoxNDQ3 NDogZXh0ZXJuIGludCB0YXNrX2Nhbl9hdHRhY2goc3RydWN0IHRhc2tfc3RydWN0ICpwLCBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqY3NfY3B1c19hbGxvd2VkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHZvaWQgZG9fc2V0X2NwdXNfYWxsb3dlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0 cnVjdCBjcHVtYXNrICpuZXdfbWFzayk7CjE0NDc0OiBleHRlcm4gaW50IHNldF9jcHVzX2FsbG93 ZWRfcHRyKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm5ld19t YXNrKTsKMTQ0NzQ6ICMgMTYwMiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBleHRl cm4gaW50IHlpZWxkX3RvKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgYm9vbCBwcmVlbXB0KTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIHNldF91c2VyX25pY2Uoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBsb25n IG5pY2UpOwoxNDQ3NDogZXh0ZXJuIGludCB0YXNrX3ByaW8oY29uc3Qgc3RydWN0IHRhc2tfc3Ry dWN0ICpwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHRhc2tfbmljZShjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoKHApLT5zdGF0aWNfcHJpbykgLSAoMTAwICsgKDE5 IC0gLTIwICsgMSkgLyAyKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgY2Fu X25pY2UoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBjb25zdCBpbnQgbmljZSk7CjE0NDc0 OiBleHRlcm4gaW50IHRhc2tfY3Vycihjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwoxNDQ3 NDogZXh0ZXJuIGludCBpZGxlX2NwdShpbnQgY3B1KTsKMTQ0NzQ6IGV4dGVybiBpbnQgYXZhaWxh YmxlX2lkbGVfY3B1KGludCBjcHUpOwoxNDQ3NDogZXh0ZXJuIGludCBzY2hlZF9zZXRzY2hlZHVs ZXIoc3RydWN0IHRhc2tfc3RydWN0ICosIGludCwgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICop OwoxNDQ3NDogZXh0ZXJuIGludCBzY2hlZF9zZXRzY2hlZHVsZXJfbm9jaGVjayhzdHJ1Y3QgdGFz a19zdHJ1Y3QgKiwgaW50LCBjb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKik7CjE0NDc0OiBleHRl cm4gaW50IHNjaGVkX3NldGF0dHIoc3RydWN0IHRhc2tfc3RydWN0ICosIGNvbnN0IHN0cnVjdCBz Y2hlZF9hdHRyICopOwoxNDQ3NDogZXh0ZXJuIGludCBzY2hlZF9zZXRhdHRyX25vY2hlY2soc3Ry dWN0IHRhc2tfc3RydWN0ICosIGNvbnN0IHN0cnVjdCBzY2hlZF9hdHRyICopOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCB0YXNrX3N0cnVjdCAqaWRsZV90YXNrKGludCBjcHUpOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlz X2lkbGVfdGFzayhjb25zdCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuICEhKHAtPmZsYWdzICYgMHgwMDAwMDAwMik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJfdGFzayhpbnQgY3B1KTsKMTQ0NzQ6IGV4 dGVybiB2b2lkIGlhNjRfc2V0X2N1cnJfdGFzayhpbnQgY3B1LCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnApOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHlpZWxkKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiB1bmlv biB0aHJlYWRfdW5pb24gewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRhc2tfc3RydWN0IHRhc2s7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHN0 YWNrWygoKDFVTCkgPDwgMTIpIDw8ICgyICsgMCkpL3NpemVvZihsb25nKV07CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB1bnNp Z25lZCBsb25nIGluaXRfc3RhY2tbKCgoMVVMKSA8PCAxMikgPDwgKDIgKyAwKSkgLyBzaXplb2Yo dW5zaWduZWQgbG9uZyldOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB0aHJlYWRfaW5m byAqdGFza190aHJlYWRfaW5mbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICZ0YXNrLT50aHJlYWRfaW5mbzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTY3OSAi Li9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0 ICpmaW5kX3Rhc2tfYnlfdnBpZChwaWRfdCBucik7CjE0NDc0OiBleHRlcm4gc3RydWN0IHRhc2tf c3RydWN0ICpmaW5kX3Rhc2tfYnlfcGlkX25zKHBpZF90IG5yLCBzdHJ1Y3QgcGlkX25hbWVzcGFj ZSAqbnMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3Ry dWN0IHRhc2tfc3RydWN0ICpmaW5kX2dldF90YXNrX2J5X3ZwaWQocGlkX3QgbnIpOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IHdha2VfdXBfc3RhdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ss IHVuc2lnbmVkIGludCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gaW50IHdha2VfdXBfcHJvY2Vzcyhz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWtlX3VwX25ld190 YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBraWNrX3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBfX3NldF90YXNrX2NvbW0o c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmZyb20sIGJvb2wgZXhlYyk7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywg Y29uc3QgY2hhciAqZnJvbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3NldF90YXNrX2NvbW0odHNrLCBm cm9tLCBmYWxzZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICpfX2dldF90 YXNrX2NvbW0oY2hhciAqdG8sIHNpemVfdCBsZW4sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZv aWQgc2NoZWR1bGVyX2lwaSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBsb25nIHdhaXRf dGFza19pbmFjdGl2ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgbG9uZyBtYXRjaF9zdGF0ZSk7CjE0 NDc0OiAjIDE3MjUgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXRfdHNr X3RocmVhZF9mbGFnKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgZmxhZykKMTQ0NzQ6IHsK MTQ0NzQ6ICBzZXRfdGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0c2spLCBmbGFnKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl90c2tfdGhyZWFkX2ZsYWcoc3RydWN0 IHRhc2tfc3RydWN0ICp0c2ssIGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDogIGNsZWFyX3RpX3Ro cmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxhZyk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgdXBkYXRlX3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz aywgaW50IGZsYWcsCjE0NDc0OiAgICAgICAgYm9vbCB2YWx1ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICB1 cGRhdGVfdGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0c2spLCBmbGFnLCB2YWx1ZSk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9zZXRfdHNrX3RocmVhZF9mbGFn KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgZmxhZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gdGVzdF9hbmRfc2V0X3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxh Zyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9jbGVhcl90c2tfdGhyZWFk X2ZsYWcoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiB0ZXN0X2FuZF9jbGVhcl90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVhZF9pbmZvKHRz ayksIGZsYWcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGVzdF90c2tfdGhyZWFkX2Zs YWcoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGludCBmbGFnKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiB0ZXN0X3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxhZyk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X3Rza19uZWVkX3Jlc2NoZWQoc3RydWN0IHRh c2tfc3RydWN0ICp0c2spCjE0NDc0OiB7CjE0NDc0OiAgc2V0X3Rza190aHJlYWRfZmxhZyh0c2ss Myk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY2xlYXJfdHNrX25lZWRfcmVzY2hlZChz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBjbGVhcl90c2tfdGhyZWFk X2ZsYWcodHNrLDMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGVzdF90c2tfbmVlZF9y ZXNjaGVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBf X2J1aWx0aW5fZXhwZWN0KCEhKHRlc3RfdHNrX3RocmVhZF9mbGFnKHRzaywzKSksIDApOwoxNDQ3 NDogfQoxNDQ3NDogIyAxNzc4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKMTQ0NzQ6IGV4dGVy biBpbnQgX2NvbmRfcmVzY2hlZCh2b2lkKTsKMTQ0NzQ6ICMgMTc4OCAiLi9pbmNsdWRlL2xpbnV4 L3NjaGVkLmgiCjE0NDc0OiBleHRlcm4gaW50IF9fY29uZF9yZXNjaGVkX2xvY2soc3BpbmxvY2tf dCAqbG9jayk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGNvbmRfcmVzY2hlZF9yY3Uodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3 NDogIHJjdV9yZWFkX3VubG9jaygpOwoxNDQ3NDogICh7IF9fX21pZ2h0X3NsZWVwKCJpbmNsdWRl L2xpbnV4L3NjaGVkLmgiLCAxNzk5LCAwKTsgX2NvbmRfcmVzY2hlZCgpOyB9KTsKMTQ0NzQ6ICBy Y3VfcmVhZF9sb2NrKCk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBzcGluX25lZWRicmVhayhzcGlubG9j a190ICpsb2NrKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVy biAwOwoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgYm9vbCBuZWVkX3Jlc2NoZWQodm9pZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gX19idWlsdGluX2V4cGVjdCghISh0ZXN0X3RpX3RocmVhZF9mbGFnKCgoc3RydWN0IHRo cmVhZF9pbmZvICopZ2V0X2N1cnJlbnQoKSksIDMpKSwgMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQg dGFza19jcHUoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0ICpwKQoxNDQ3NDogewoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKHAtPmNwdSkgX192YWw7IGNoYXIgX19jWzFd OyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihwLT5jcHUpLCBfX3UuX19jLCBzaXpl b2YocC0+Y3B1KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocC0+Y3B1KSwgX191 Ll9fYywgc2l6ZW9mKHAtPmNwdSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCBzZXRfdGFza19jcHUoc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1bnNpZ25lZCBpbnQgY3B1KTsK MTQ0NzQ6ICMgMTg2NyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCjE0NDc0OiBleHRlcm4gbG9u ZyBzY2hlZF9zZXRhZmZpbml0eShwaWRfdCBwaWQsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpuZXdf bWFzayk7CjE0NDc0OiBleHRlcm4gbG9uZyBzY2hlZF9nZXRhZmZpbml0eShwaWRfdCBwaWQsIHN0 cnVjdCBjcHVtYXNrICptYXNrKTsKMTQ0NzQ6ICMgMTg4MCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVk LmgiCjE0NDc0OiBlbnVtIHJzZXFfZXZlbnRfbWFza19iaXRzIHsKMTQ0NzQ6ICBSU0VRX0VWRU5U X1BSRUVNUFRfQklUID0gUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVF9CSVQsCjE0 NDc0OiAgUlNFUV9FVkVOVF9TSUdOQUxfQklUID0gUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05f U0lHTkFMX0JJVCwKMTQ0NzQ6ICBSU0VRX0VWRU5UX01JR1JBVEVfQklUID0gUlNFUV9DU19GTEFH X05PX1JFU1RBUlRfT05fTUlHUkFURV9CSVQsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVt IHJzZXFfZXZlbnRfbWFzayB7CjE0NDc0OiAgUlNFUV9FVkVOVF9QUkVFTVBUID0gKDFVIDw8IFJT RVFfRVZFTlRfUFJFRU1QVF9CSVQpLAoxNDQ3NDogIFJTRVFfRVZFTlRfU0lHTkFMID0gKDFVIDw8 IFJTRVFfRVZFTlRfU0lHTkFMX0JJVCksCjE0NDc0OiAgUlNFUV9FVkVOVF9NSUdSQVRFID0gKDFV IDw8IFJTRVFfRVZFTlRfTUlHUkFURV9CSVQpLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCByc2VxX3NldF9ub3RpZnlfcmVzdW1lKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAodC0+cnNlcSkKMTQ0NzQ6ICAgc2V0X3Rza190aHJlYWRfZmxhZyh0LCAxKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBfX3JzZXFfaGFuZGxlX25vdGlmeV9yZXN1bWUo c3RydWN0IGtzaWduYWwgKnNpZywgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHJzZXFfaGFuZGxlX25vdGlmeV9yZXN1bWUoc3RydWN0IGtzaWduYWwgKmtzaWcsCjE0 NDc0OiAgICAgICAgICAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCjE0NDc0OiB7CjE0NDc0OiAgaWYg KGdldF9jdXJyZW50KCktPnJzZXEpCjE0NDc0OiAgIF9fcnNlcV9oYW5kbGVfbm90aWZ5X3Jlc3Vt ZShrc2lnLCByZWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByc2VxX3NpZ25hbF9k ZWxpdmVyKHN0cnVjdCBrc2lnbmFsICprc2lnLAoxNDQ3NDogICAgICAgICAgICBzdHJ1Y3QgcHRf cmVncyAqcmVncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6 Im1lbW9yeSIpOwoxNDQ3NDogIF9fc2V0X2JpdChSU0VRX0VWRU5UX1NJR05BTF9CSVQsICZnZXRf Y3VycmVudCgpLT5yc2VxX2V2ZW50X21hc2spOwoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9f KCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiAgcnNlcV9oYW5kbGVfbm90aWZ5X3Jlc3VtZShrc2ln LCByZWdzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFfcHJlZW1w dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCjE0NDc0OiB7CjE0NDc0OiAgX19zZXRfYml0KFJTRVFf RVZFTlRfUFJFRU1QVF9CSVQsICZ0LT5yc2VxX2V2ZW50X21hc2spOwoxNDQ3NDogIHJzZXFfc2V0 X25vdGlmeV9yZXN1bWUodCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBy c2VxX21pZ3JhdGUoc3RydWN0IHRhc2tfc3RydWN0ICp0KQoxNDQ3NDogewoxNDQ3NDogIF9fc2V0 X2JpdChSU0VRX0VWRU5UX01JR1JBVEVfQklULCAmdC0+cnNlcV9ldmVudF9tYXNrKTsKMTQ0NzQ6 ICByc2VxX3NldF9ub3RpZnlfcmVzdW1lKHQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9mb3JrKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdCwgdW5zaWduZWQgbG9uZyBjbG9uZV9mbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo Y2xvbmVfZmxhZ3MgJiAweDAwMDAwMTAwKSB7CjE0NDc0OiAgIHQtPnJzZXEgPSAoKHZvaWQgKikw KTsKMTQ0NzQ6ICAgdC0+cnNlcV9zaWcgPSAwOwoxNDQ3NDogICB0LT5yc2VxX2V2ZW50X21hc2sg PSAwOwoxNDQ3NDogIH0gZWxzZSB7CjE0NDc0OiAgIHQtPnJzZXEgPSBnZXRfY3VycmVudCgpLT5y c2VxOwoxNDQ3NDogICB0LT5yc2VxX3NpZyA9IGdldF9jdXJyZW50KCktPnJzZXFfc2lnOwoxNDQ3 NDogICB0LT5yc2VxX2V2ZW50X21hc2sgPSBnZXRfY3VycmVudCgpLT5yc2VxX2V2ZW50X21hc2s7 CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFfZXhlY3ZlKHN0cnVj dCB0YXNrX3N0cnVjdCAqdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICB0LT5yc2VxID0gKCh2b2lkICopMCk7 CjE0NDc0OiAgdC0+cnNlcV9zaWcgPSAwOwoxNDQ3NDogIHQtPnJzZXFfZXZlbnRfbWFzayA9IDA7 CjE0NDc0OiB9CjE0NDc0OiAjIDE5ODIgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgoxNDQ3NDog dm9pZCBfX2V4aXRfdW1oKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBleGl0X3VtaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBp ZiAoX19idWlsdGluX2V4cGVjdCghISh0c2stPmZsYWdzICYgMHgwMjAwMDAwMCksIDApKQoxNDQ3 NDogICBfX2V4aXRfdW1oKHRzayk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9zeXNjYWxsKHN0 cnVjdCBwdF9yZWdzICpyZWdzKQoxNDQ3NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAqc2NoZWRfdHJhY2VfY2ZzX3JxX2F2 ZyhzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEpOwoxNDQ3NDogY2hhciAqc2NoZWRfdHJhY2VfY2ZzX3Jx X3BhdGgoc3RydWN0IGNmc19ycSAqY2ZzX3JxLCBjaGFyICpzdHIsIGludCBsZW4pOwoxNDQ3NDog aW50IHNjaGVkX3RyYWNlX2Nmc19ycV9jcHUoc3RydWN0IGNmc19ycSAqY2ZzX3JxKTsKMTQ0NzQ6 IAoxNDQ3NDogY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAqc2NoZWRfdHJhY2VfcnFfYXZnX3J0KHN0 cnVjdCBycSAqcnEpOwoxNDQ3NDogY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAqc2NoZWRfdHJhY2Vf cnFfYXZnX2RsKHN0cnVjdCBycSAqcnEpOwoxNDQ3NDogY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAq c2NoZWRfdHJhY2VfcnFfYXZnX2lycShzdHJ1Y3QgcnEgKnJxKTsKMTQ0NzQ6IAoxNDQ3NDogaW50 IHNjaGVkX3RyYWNlX3JxX2NwdShzdHJ1Y3QgcnEgKnJxKTsKMTQ0NzQ6IAoxNDQ3NDogY29uc3Qg c3RydWN0IGNwdW1hc2sgKnNjaGVkX3RyYWNlX3JkX3NwYW4oc3RydWN0IHJvb3RfZG9tYWluICpy ZCk7CjE0NDc0OiAjIDYgIi4vaW5jbHVkZS9saW51eC9pb3ByaW8uaCIgMgoxNDQ3NDogIyAxICIu L2luY2x1ZGUvbGludXgvc2NoZWQvcnQuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgcnRfcHJpbyhpbnQgcHJpbykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoX19idWlsdGlu X2V4cGVjdCghIShwcmlvIDwgMTAwKSwgMCkpCjE0NDc0OiAgIHJldHVybiAxOwoxNDQ3NDogIHJl dHVybiAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcnRfdGFzayhzdHJ1Y3QgdGFza19z dHJ1Y3QgKnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJ0X3ByaW8ocC0+cHJpbyk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19pc19yZWFsdGltZShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgcG9saWN5ID0gdHNrLT5wb2xpY3k7CjE0NDc0 OiAKMTQ0NzQ6ICBpZiAocG9saWN5ID09IDEgfHwgcG9saWN5ID09IDIpCjE0NDc0OiAgIHJldHVy biB0cnVlOwoxNDQ3NDogIGlmIChwb2xpY3kgPT0gNikKMTQ0NzQ6ICAgcmV0dXJuIHRydWU7CjE0 NDc0OiAgcmV0dXJuIGZhbHNlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB0YXNrX3N0cnVjdCAqcnRfbXV0ZXhfZ2V0X3RvcF90 YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcC0+cGlf dG9wX3Rhc2s7CjE0NDc0OiB9CjE0NDc0OiBleHRlcm4gdm9pZCBydF9tdXRleF9zZXRwcmlvKHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHRhc2tfc3RydWN0ICpwaV90YXNrKTsKMTQ0NzQ6 IGV4dGVybiB2b2lkIHJ0X211dGV4X2FkanVzdF9waShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApOwox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCB0c2tfaXNfcGlfYmxvY2tlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdHNrLT5waV9ibG9ja2VkX29uICE9ICgodm9pZCAqKTApOwox NDQ3NDogfQoxNDQ3NDogIyA1OCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkL3J0LmgiCjE0NDc0OiBl eHRlcm4gdm9pZCBub3JtYWxpemVfcnRfdGFza3Modm9pZCk7CjE0NDc0OiAjIDcgIi4vaW5jbHVk ZS9saW51eC9pb3ByaW8uaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvaW9jb250ZXh0 LmgiIDEKMTQ0NzQ6ICMgOSAiLi9pbmNsdWRlL2xpbnV4L2lvY29udGV4dC5oIgoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgSUNRX0VYSVRFRCA9IDEgPDwgMiwKMTQ0NzQ6IH07CjE0NDc0OiAjIDcyICIu L2luY2x1ZGUvbGludXgvaW9jb250ZXh0LmgiCjE0NDc0OiBzdHJ1Y3QgaW9fY3EgewoxNDQ3NDog IHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxOwoxNDQ3NDogIHN0cnVjdCBpb19jb250ZXh0ICppb2M7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgcV9ub2RlOwoxNDQ3NDog ICBzdHJ1Y3Qga21lbV9jYWNoZSAqX19yY3VfaWNxX2NhY2hlOwoxNDQ3NDogIH07CjE0NDc0OiAg dW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgaGxpc3Rfbm9kZSBpb2Nfbm9kZTsKMTQ0NzQ6ICAgc3Ry dWN0IGNhbGxiYWNrX2hlYWQgX19yY3VfaGVhZDsKMTQ0NzQ6ICB9OwoxNDQ3NDogCjE0NDc0OiAg dW5zaWduZWQgaW50IGZsYWdzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaW9fY29udGV4dCB7CjE0NDc0OiAgYXRvbWljX2xv bmdfdCByZWZjb3VudDsKMTQ0NzQ6ICBhdG9taWNfdCBhY3RpdmVfcmVmOwoxNDQ3NDogIGF0b21p Y190IG5yX3Rhc2tzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzcGlubG9ja190IGxvY2s7CjE0 NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBpb3ByaW87CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgbnJfYmF0Y2hfcmVxdWVzdHM7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBsYXN0X3dhaXRlZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB4YXJyYXkgaWNxX3Ry ZWU7CjE0NDc0OiAgc3RydWN0IGlvX2NxICppY3FfaGludDsKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3Rf aGVhZCBpY3FfbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB3b3JrX3N0cnVjdCByZWxlYXNl X3dvcms7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjkgIi4vaW5jbHVkZS9saW51eC9pb2NvbnRleHQu aCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZ2V0X2lvX2NvbnRleHRfYWN0aXZlKHN0cnVjdCBpb19jb250ZXh0ICpp b2MpCjE0NDc0OiB7CjE0NDc0OiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhIShhdG9taWNfbG9u Z19yZWFkKCZpb2MtPnJlZmNvdW50KSA8PSAwKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19y ZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAi LmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxu IiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxu IiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0 LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVn X2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIg KCJpbmNsdWRlL2xpbnV4L2lvY29udGV4dC5oIiksICJpIiAoMTMxKSwgImkiICgoMSA8PCAwKXwo KDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7 IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5k aXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxu XHQiIDogOiAiaSIgKDI1KSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShf X3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3NDogICh7IGludCBfX3JldF93YXJuX29uID0gISEo YXRvbWljX3JlYWQoJmlvYy0+YWN0aXZlX3JlZikgPD0gMCk7IGlmIChfX2J1aWx0aW5fZXhwZWN0 KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgi MTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxc ImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVn X2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxl XG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAi XHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6 IDogImkiICgiaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaCIpLCAiaSIgKDEzMiksICJpIiAoKDEg PDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2Vu dHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNl Y3Rpb25cblx0IiA6IDogImkiICgyNikpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBl Y3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6ICBhdG9taWNfbG9uZ19pbmMoJmlv Yy0+cmVmY291bnQpOwoxNDQ3NDogIGF0b21pY19pbmMoJmlvYy0+YWN0aXZlX3JlZik7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW9jX3Rhc2tfbGluayhzdHJ1Y3QgaW9fY29udGV4dCAq aW9jKQoxNDQ3NDogewoxNDQ3NDogIGdldF9pb19jb250ZXh0X2FjdGl2ZShpb2MpOwoxNDQ3NDog CjE0NDc0OiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhIShhdG9taWNfcmVhZCgmaW9jLT5ucl90 YXNrcykgPD0gMCk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkg ZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIi ICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAi ICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAi JWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBi dWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIg Ilx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9p b2NvbnRleHQuaCIpLCAiaSIgKDE0MSksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8 PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsg YXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVc blx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgyNykp OyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDAp OyB9KTsKMTQ0NzQ6ICBhdG9taWNfaW5jKCZpb2MtPm5yX3Rhc2tzKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHRhc2tfc3RydWN0OwoxNDQ3NDogCjE0NDc0OiB2b2lkIHB1dF9pb19j b250ZXh0KHN0cnVjdCBpb19jb250ZXh0ICppb2MpOwoxNDQ3NDogdm9pZCBwdXRfaW9fY29udGV4 dF9hY3RpdmUoc3RydWN0IGlvX2NvbnRleHQgKmlvYyk7CjE0NDc0OiB2b2lkIGV4aXRfaW9fY29u dGV4dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwoxNDQ3NDogc3RydWN0IGlvX2NvbnRleHQg KmdldF90YXNrX2lvX2NvbnRleHQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLAoxNDQ3NDogICAg ICAgICAgICBnZnBfdCBnZnBfZmxhZ3MsIGludCBub2RlKTsKMTQ0NzQ6ICMgOCAiLi9pbmNsdWRl L2xpbnV4L2lvcHJpby5oIiAyCjE0NDc0OiAjIDI3ICIuL2luY2x1ZGUvbGludXgvaW9wcmlvLmgi CjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBJT1BSSU9fQ0xBU1NfTk9ORSwKMTQ0NzQ6ICBJT1BSSU9f Q0xBU1NfUlQsCjE0NDc0OiAgSU9QUklPX0NMQVNTX0JFLAoxNDQ3NDogIElPUFJJT19DTEFTU19J RExFLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIElPUFJJT19XSE9fUFJPQ0VTUyA9IDEsCjE0NDc0 OiAgSU9QUklPX1dIT19QR1JQLAoxNDQ3NDogIElPUFJJT19XSE9fVVNFUiwKMTQ0NzQ6IH07CjE0 NDc0OiAjIDU0ICIuL2luY2x1ZGUvbGludXgvaW9wcmlvLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGFza19uaWNl X2lvcHJpbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu ICh0YXNrX25pY2UodGFzaykgKyAyMCkgLyA1OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0YXNrX25pY2VfaW9jbGFzcyhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2spCjE0NDc0OiB7CjE0NDc0OiAgaWYgKHRhc2stPnBvbGljeSA9PSA1 KQoxNDQ3NDogICByZXR1cm4gSU9QUklPX0NMQVNTX0lETEU7CjE0NDc0OiAgZWxzZSBpZiAodGFz a19pc19yZWFsdGltZSh0YXNrKSkKMTQ0NzQ6ICAgcmV0dXJuIElPUFJJT19DTEFTU19SVDsKMTQ0 NzQ6ICBlbHNlCjE0NDc0OiAgIHJldHVybiBJT1BSSU9fQ0xBU1NfQkU7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGdldF9jdXJyZW50 X2lvcHJpbyh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBpb19jb250ZXh0ICppb2MgPSBn ZXRfY3VycmVudCgpLT5pb19jb250ZXh0OwoxNDQ3NDogCjE0NDc0OiAgaWYgKGlvYykKMTQ0NzQ6 ICAgcmV0dXJuIGlvYy0+aW9wcmlvOwoxNDQ3NDogIHJldHVybiAoKChJT1BSSU9fQ0xBU1NfTk9O RSkgPDwgKDEzKSkgfCAwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIGludCBpb3ByaW9fYmVzdCh1bnNpZ25lZCBzaG9ydCBhcHJpbywgdW5z aWduZWQgc2hvcnQgYnByaW8pOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHNldF90YXNrX2lv cHJpbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGludCBpb3ByaW8pOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgaW9wcmlvX2NoZWNrX2NhcChpbnQgaW9wcmlvKTsKMTQ0NzQ6 ICMgNDAgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51 eC9mc190eXBlcy5oIiAxCjE0NDc0OiAjIDcxICIuL2luY2x1ZGUvbGludXgvZnNfdHlwZXMuaCIK MTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBjaGFyIGZzX2Z0eXBlX3RvX2R0eXBlKHVuc2lnbmVkIGlu dCBmaWxldHlwZSk7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgY2hhciBmc191bW9kZV90b19mdHlw ZSh1bW9kZV90IG1vZGUpOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGNoYXIgZnNfdW1vZGVfdG9f ZHR5cGUodW1vZGVfdCBtb2RlKTsKMTQ0NzQ6ICMgNDEgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAy CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL3Vh cGkvbGludXgvZnMuaCIgMQoxNDQ3NDogIyA1NCAiLi9pbmNsdWRlL3VhcGkvbGludXgvZnMuaCIK MTQ0NzQ6IHN0cnVjdCBmaWxlX2Nsb25lX3JhbmdlIHsKMTQ0NzQ6ICBfX3M2NCBzcmNfZmQ7CjE0 NDc0OiAgX191NjQgc3JjX29mZnNldDsKMTQ0NzQ6ICBfX3U2NCBzcmNfbGVuZ3RoOwoxNDQ3NDog IF9fdTY0IGRlc3Rfb2Zmc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZzdHJp bV9yYW5nZSB7CjE0NDc0OiAgX191NjQgc3RhcnQ7CjE0NDc0OiAgX191NjQgbGVuOwoxNDQ3NDog IF9fdTY0IG1pbmxlbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmlsZV9kZWR1cGVfcmFuZ2VfaW5mbyB7CjE0 NDc0OiAgX19zNjQgZGVzdF9mZDsKMTQ0NzQ6ICBfX3U2NCBkZXN0X29mZnNldDsKMTQ0NzQ6ICBf X3U2NCBieXRlc19kZWR1cGVkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fczMyIHN0YXR1czsKMTQ0NzQ6ICBfX3UzMiByZXNlcnZlZDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGVfZGVkdXBlX3Jhbmdl IHsKMTQ0NzQ6ICBfX3U2NCBzcmNfb2Zmc2V0OwoxNDQ3NDogIF9fdTY0IHNyY19sZW5ndGg7CjE0 NDc0OiAgX191MTYgZGVzdF9jb3VudDsKMTQ0NzQ6ICBfX3UxNiByZXNlcnZlZDE7CjE0NDc0OiAg X191MzIgcmVzZXJ2ZWQyOwoxNDQ3NDogIHN0cnVjdCBmaWxlX2RlZHVwZV9yYW5nZV9pbmZvIGlu Zm9bMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmaWxlc19zdGF0 X3N0cnVjdCB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBucl9maWxlczsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIG5yX2ZyZWVfZmlsZXM7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtYXhfZmlsZXM7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaW5vZGVzX3N0YXRfdCB7CjE0NDc0OiAgbG9u ZyBucl9pbm9kZXM7CjE0NDc0OiAgbG9uZyBucl91bnVzZWQ7CjE0NDc0OiAgbG9uZyBkdW1teVs1 XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmc3hhdHRyIHsKMTQ0NzQ6ICBfX3UzMiBmc3hfeGZs YWdzOwoxNDQ3NDogIF9fdTMyIGZzeF9leHRzaXplOwoxNDQ3NDogIF9fdTMyIGZzeF9uZXh0ZW50 czsKMTQ0NzQ6ICBfX3UzMiBmc3hfcHJvamlkOwoxNDQ3NDogIF9fdTMyIGZzeF9jb3dleHRzaXpl OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgZnN4X3BhZFs4XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI4 NSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZnMuaCIKMTQ0NzQ6IHR5cGVkZWYgaW50IF9fa2VybmVs X3J3Zl90OwoxNDQ3NDogIyA0NiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGJhY2tpbmdfZGV2X2luZm87CjE0NDc0OiBzdHJ1Y3QgYmRpX3dyaXRlYmFjazsK MTQ0NzQ6IHN0cnVjdCBiaW87CjE0NDc0OiBzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnM7CjE0NDc0 OiBzdHJ1Y3QgaGRfZ2VvbWV0cnk7CjE0NDc0OiBzdHJ1Y3QgaW92ZWM7CjE0NDc0OiBzdHJ1Y3Qg a2lvY2I7CjE0NDc0OiBzdHJ1Y3Qga29iamVjdDsKMTQ0NzQ6IHN0cnVjdCBwaXBlX2lub2RlX2lu Zm87CjE0NDc0OiBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3Q7CjE0NDc0OiBzdHJ1Y3Qga3N0YXRm czsKMTQ0NzQ6IHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKMTQ0NzQ6IHN0cnVjdCB2ZnNtb3VudDsK MTQ0NzQ6IHN0cnVjdCBjcmVkOwoxNDQ3NDogc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3Q7CjE0NDc0 OiBzdHJ1Y3Qgc2VxX2ZpbGU7CjE0NDc0OiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdDsKMTQ0NzQ6 IHN0cnVjdCBpb3ZfaXRlcjsKMTQ0NzQ6IHN0cnVjdCBmc2NyeXB0X2luZm87CjE0NDc0OiBzdHJ1 Y3QgZnNjcnlwdF9vcGVyYXRpb25zOwoxNDQ3NDogc3RydWN0IGZzdmVyaXR5X2luZm87CjE0NDc0 OiBzdHJ1Y3QgZnN2ZXJpdHlfb3BlcmF0aW9uczsKMTQ0NzQ6IHN0cnVjdCBmc19jb250ZXh0Owox NDQ3NDogc3RydWN0IGZzX3BhcmFtZXRlcl9zcGVjOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9p ZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVf XygoX19jb2xkX18pKSBpbm9kZV9pbml0KHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19hdHRy aWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29s ZF9fKSkgaW5vZGVfaW5pdF9lYXJseSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmli dXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRf XykpIGZpbGVzX2luaXQodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChf X3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBmaWxl c19tYXhmaWxlc19pbml0KHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGZpbGVz X3N0YXRfc3RydWN0IGZpbGVzX3N0YXQ7CjE0NDc0OiBleHRlcm4gdW5zaWduZWQgbG9uZyBnZXRf bWF4X2ZpbGVzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGludCBzeXNjdGxfbnJfb3Bl bjsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaW5vZGVzX3N0YXRfdCBpbm9kZXNfc3RhdDsKMTQ0NzQ6 IGV4dGVybiBpbnQgbGVhc2VzX2VuYWJsZSwgbGVhc2VfYnJlYWtfdGltZTsKMTQ0NzQ6IGV4dGVy biBpbnQgc3lzY3RsX3Byb3RlY3RlZF9zeW1saW5rczsKMTQ0NzQ6IGV4dGVybiBpbnQgc3lzY3Rs X3Byb3RlY3RlZF9oYXJkbGlua3M7CjE0NDc0OiBleHRlcm4gaW50IHN5c2N0bF9wcm90ZWN0ZWRf Zmlmb3M7CjE0NDc0OiBleHRlcm4gaW50IHN5c2N0bF9wcm90ZWN0ZWRfcmVndWxhcjsKMTQ0NzQ6 IAoxNDQ3NDogdHlwZWRlZiBfX2tlcm5lbF9yd2ZfdCByd2ZfdDsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGJ1ZmZlcl9oZWFkOwoxNDQ3NDogdHlwZWRlZiBpbnQgKGdldF9ibG9ja190KShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzZWN0b3JfdCBpYmxvY2ssCjE0NDc0OiAgICBzdHJ1Y3QgYnVmZmVyX2hl YWQgKmJoX3Jlc3VsdCwgaW50IGNyZWF0ZSk7CjE0NDc0OiB0eXBlZGVmIGludCAoZGlvX2lvZG9u ZV90KShzdHJ1Y3Qga2lvY2IgKmlvY2IsIGxvZmZfdCBvZmZzZXQsCjE0NDc0OiAgICBzc2l6ZV90 IGJ5dGVzLCB2b2lkICpwcml2YXRlKTsKMTQ0NzQ6ICMgMjI0ICIuL2luY2x1ZGUvbGludXgvZnMu aCIKMTQ0NzQ6IHN0cnVjdCBpYXR0ciB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGlhX3ZhbGlkOwox NDQ3NDogIHVtb2RlX3QgaWFfbW9kZTsKMTQ0NzQ6ICBrdWlkX3QgaWFfdWlkOwoxNDQ3NDogIGtn aWRfdCBpYV9naWQ7CjE0NDc0OiAgbG9mZl90IGlhX3NpemU7CjE0NDc0OiAgc3RydWN0IHRpbWVz cGVjNjQgaWFfYXRpbWU7CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgaWFfbXRpbWU7CjE0NDc0 OiAgc3RydWN0IHRpbWVzcGVjNjQgaWFfY3RpbWU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGZpbGUgKmlhX2ZpbGU7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVk ZS9saW51eC9xdW90YS5oIiAxCjE0NDc0OiAjIDQwICIuL2luY2x1ZGUvbGludXgvcXVvdGEuaCIK MTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdV9jb3VudGVyLmgiIDEKMTQ0NzQ6ICMg MjAgIi4vaW5jbHVkZS9saW51eC9wZXJjcHVfY291bnRlci5oIgoxNDQ3NDogc3RydWN0IHBlcmNw dV9jb3VudGVyIHsKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogIHM2NCBjb3Vu dDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKMTQ0NzQ6IAoxNDQ3NDog IHMzMiAqY291bnRlcnM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHBlcmNw dV9jb3VudGVyX2JhdGNoOwoxNDQ3NDogCjE0NDc0OiBpbnQgX19wZXJjcHVfY291bnRlcl9pbml0 KHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50LCBnZnBfdCBnZnAsCjE0NDc0 OiAgICAgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTsKMTQ0NzQ6ICMgNDEgIi4vaW5jbHVk ZS9saW51eC9wZXJjcHVfY291bnRlci5oIgoxNDQ3NDogdm9pZCBwZXJjcHVfY291bnRlcl9kZXN0 cm95KHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKTsKMTQ0NzQ6IHZvaWQgcGVyY3B1X2NvdW50 ZXJfc2V0KHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50KTsKMTQ0NzQ6IHZv aWQgcGVyY3B1X2NvdW50ZXJfYWRkX2JhdGNoKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBz NjQgYW1vdW50LAoxNDQ3NDogICAgICAgICAgczMyIGJhdGNoKTsKMTQ0NzQ6IHM2NCBfX3BlcmNw dV9jb3VudGVyX3N1bShzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYyk7CjE0NDc0OiBpbnQgX19w ZXJjcHVfY291bnRlcl9jb21wYXJlKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgcmhz LCBzMzIgYmF0Y2gpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGVyY3B1X2NvdW50ZXJfY29tcGFyZShz dHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYywgczY0IHJocykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gX19wZXJjcHVfY291bnRlcl9jb21wYXJlKGZiYywgcmhzLCBwZXJjcHVfY291bnRlcl9iYXRj aCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X2NvdW50ZXJfYWRkKHN0cnVj dCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50KQoxNDQ3NDogewoxNDQ3NDogIHBlcmNw dV9jb3VudGVyX2FkZF9iYXRjaChmYmMsIGFtb3VudCwgcGVyY3B1X2NvdW50ZXJfYmF0Y2gpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgcGVyY3B1X2NvdW50ZXJfc3VtX3Bvc2l0aXZlKHN0 cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQoxNDQ3NDogewoxNDQ3NDogIHM2NCByZXQgPSBfX3Bl cmNwdV9jb3VudGVyX3N1bShmYmMpOwoxNDQ3NDogIHJldHVybiByZXQgPCAwID8gMCA6IHJldDsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IHBlcmNwdV9jb3VudGVyX3N1bShzdHJ1Y3QgcGVy Y3B1X2NvdW50ZXIgKmZiYykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19wZXJjcHVfY291bnRl cl9zdW0oZmJjKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IHBlcmNwdV9jb3VudGVyX3Jl YWQoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZi Yy0+Y291bnQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzNjQgcGVyY3B1X2NvdW50ZXJfcmVhZF9wb3NpdGl2ZShzdHJ1Y3Qg cGVyY3B1X2NvdW50ZXIgKmZiYykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzNjQgcmV0ID0gZmJjLT5jb3Vu dDsKMTQ0NzQ6IAoxNDQ3NDogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7 CjE0NDc0OiAgaWYgKHJldCA+PSAwKQoxNDQ3NDogICByZXR1cm4gcmV0OwoxNDQ3NDogIHJldHVy biAwOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHBlcmNwdV9jb3VudGVyX2luaXRpYWxp emVkKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAo ZmJjLT5jb3VudGVycyAhPSAoKHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDE3NyAiLi9p bmNsdWRlL2xpbnV4L3BlcmNwdV9jb3VudGVyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9jb3VudGVy X2luYyhzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYykKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZXJjcHVf Y291bnRlcl9hZGQoZmJjLCAxKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVf Y291bnRlcl9kZWMoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpCjE0NDc0OiB7CjE0NDc0OiAg cGVyY3B1X2NvdW50ZXJfYWRkKGZiYywgLTEpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHBlcmNwdV9jb3VudGVyX3N1YihzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYywgczY0IGFtb3Vu dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBwZXJjcHVfY291bnRlcl9hZGQoZmJjLCAtYW1vdW50KTsKMTQ0 NzQ6IH0KMTQ0NzQ6ICMgNDEgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCjE0NDc0OiAKMTQ0 NzQ6ICMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZHFibGtfeGZzLmgiIDEKMTQ0NzQ6ICMgNTMg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2RxYmxrX3hmcy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3Qg ZnNfZGlza19xdW90YSB7CjE0NDc0OiAgX19zOCBkX3ZlcnNpb247CjE0NDc0OiAgX19zOCBkX2Zs YWdzOwoxNDQ3NDogIF9fdTE2IGRfZmllbGRtYXNrOwoxNDQ3NDogIF9fdTMyIGRfaWQ7CjE0NDc0 OiAgX191NjQgZF9ibGtfaGFyZGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRfYmxrX3NvZnRsaW1pdDsK MTQ0NzQ6ICBfX3U2NCBkX2lub19oYXJkbGltaXQ7CjE0NDc0OiAgX191NjQgZF9pbm9fc29mdGxp bWl0OwoxNDQ3NDogIF9fdTY0IGRfYmNvdW50OwoxNDQ3NDogIF9fdTY0IGRfaWNvdW50OwoxNDQ3 NDogIF9fczMyIGRfaXRpbWVyOwoxNDQ3NDogCjE0NDc0OiAgX19zMzIgZF9idGltZXI7CjE0NDc0 OiAgX191MTYgZF9pd2FybnM7CjE0NDc0OiAgX191MTYgZF9id2FybnM7CjE0NDc0OiAgX19zMzIg ZF9wYWRkaW5nMjsKMTQ0NzQ6ICBfX3U2NCBkX3J0Yl9oYXJkbGltaXQ7CjE0NDc0OiAgX191NjQg ZF9ydGJfc29mdGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRfcnRiY291bnQ7CjE0NDc0OiAgX19zMzIg ZF9ydGJ0aW1lcjsKMTQ0NzQ6ICBfX3UxNiBkX3J0Yndhcm5zOwoxNDQ3NDogIF9fczE2IGRfcGFk ZGluZzM7CjE0NDc0OiAgY2hhciBkX3BhZGRpbmc0WzhdOwoxNDQ3NDogfSBmc19kaXNrX3F1b3Rh X3Q7CjE0NDc0OiAjIDE0OSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZHFibGtfeGZzLmgiCjE0NDc0 OiB0eXBlZGVmIHN0cnVjdCBmc19xZmlsZXN0YXQgewoxNDQ3NDogIF9fdTY0IHFmc19pbm87CjE0 NDc0OiAgX191NjQgcWZzX25ibGtzOwoxNDQ3NDogIF9fdTMyIHFmc19uZXh0ZW50czsKMTQ0NzQ6 IH0gZnNfcWZpbGVzdGF0X3Q7CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IGZzX3F1b3Rh X3N0YXQgewoxNDQ3NDogIF9fczggcXNfdmVyc2lvbjsKMTQ0NzQ6ICBfX3UxNiBxc19mbGFnczsK MTQ0NzQ6ICBfX3M4IHFzX3BhZDsKMTQ0NzQ6ICBmc19xZmlsZXN0YXRfdCBxc191cXVvdGE7CjE0 NDc0OiAgZnNfcWZpbGVzdGF0X3QgcXNfZ3F1b3RhOwoxNDQ3NDogIF9fdTMyIHFzX2luY29yZWRx czsKMTQ0NzQ6ICBfX3MzMiBxc19idGltZWxpbWl0OwoxNDQ3NDogIF9fczMyIHFzX2l0aW1lbGlt aXQ7CjE0NDc0OiAgX19zMzIgcXNfcnRidGltZWxpbWl0OwoxNDQ3NDogIF9fdTE2IHFzX2J3YXJu bGltaXQ7CjE0NDc0OiAgX191MTYgcXNfaXdhcm5saW1pdDsKMTQ0NzQ6IH0gZnNfcXVvdGFfc3Rh dF90OwoxNDQ3NDogIyAxOTIgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2RxYmxrX3hmcy5oIgoxNDQ3 NDogc3RydWN0IGZzX3FmaWxlc3RhdHYgewoxNDQ3NDogIF9fdTY0IHFmc19pbm87CjE0NDc0OiAg X191NjQgcWZzX25ibGtzOwoxNDQ3NDogIF9fdTMyIHFmc19uZXh0ZW50czsKMTQ0NzQ6ICBfX3Uz MiBxZnNfcGFkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZzX3F1b3RhX3N0YXR2 IHsKMTQ0NzQ6ICBfX3M4IHFzX3ZlcnNpb247CjE0NDc0OiAgX191OCBxc19wYWQxOwoxNDQ3NDog IF9fdTE2IHFzX2ZsYWdzOwoxNDQ3NDogIF9fdTMyIHFzX2luY29yZWRxczsKMTQ0NzQ6ICBzdHJ1 Y3QgZnNfcWZpbGVzdGF0diBxc191cXVvdGE7CjE0NDc0OiAgc3RydWN0IGZzX3FmaWxlc3RhdHYg cXNfZ3F1b3RhOwoxNDQ3NDogIHN0cnVjdCBmc19xZmlsZXN0YXR2IHFzX3BxdW90YTsKMTQ0NzQ6 ICBfX3MzMiBxc19idGltZWxpbWl0OwoxNDQ3NDogIF9fczMyIHFzX2l0aW1lbGltaXQ7CjE0NDc0 OiAgX19zMzIgcXNfcnRidGltZWxpbWl0OwoxNDQ3NDogIF9fdTE2IHFzX2J3YXJubGltaXQ7CjE0 NDc0OiAgX191MTYgcXNfaXdhcm5saW1pdDsKMTQ0NzQ6ICBfX3U2NCBxc19wYWQyWzhdOwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgNDMgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCjE0NDc0OiAjIDEg Ii4vaW5jbHVkZS9saW51eC9kcWJsa192MS5oIiAxCjE0NDc0OiAjIDQ0ICIuL2luY2x1ZGUvbGlu dXgvcXVvdGEuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIgMQox NDQ3NDogIyA5ICIuL2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNs dWRlL2xpbnV4L2RxYmxrX3F0cmVlLmgiIDEKMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9k cWJsa19xdHJlZS5oIgoxNDQ3NDogc3RydWN0IGRxdW90OwoxNDQ3NDogc3RydWN0IGtxaWQ7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHF0cmVlX2ZtdF9vcGVyYXRpb25zIHsKMTQ0NzQ6 ICB2b2lkICgqbWVtMmRpc2tfZHFibGspKHZvaWQgKmRpc2ssIHN0cnVjdCBkcXVvdCAqZHF1b3Qp OwoxNDQ3NDogIHZvaWQgKCpkaXNrMm1lbV9kcWJsaykoc3RydWN0IGRxdW90ICpkcXVvdCwgdm9p ZCAqZGlzayk7CjE0NDc0OiAgaW50ICgqaXNfaWQpKHZvaWQgKmRpc2ssIHN0cnVjdCBkcXVvdCAq ZHF1b3QpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcXRyZWVfbWVt X2RxaW5mbyB7CjE0NDc0OiAgc3RydWN0IHN1cGVyX2Jsb2NrICpkcWlfc2I7CjE0NDc0OiAgaW50 IGRxaV90eXBlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcWlfYmxvY2tzOwoxNDQ3NDogIHVuc2ln bmVkIGludCBkcWlfZnJlZV9ibGs7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRxaV9mcmVlX2VudHJ5 OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcWlfYmxvY2tzaXplX2JpdHM7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGRxaV9lbnRyeV9zaXplOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcWlfdXNhYmxlX2Jz OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcWlfcXRyZWVfZGVwdGg7CjE0NDc0OiAgY29uc3Qgc3Ry dWN0IHF0cmVlX2ZtdF9vcGVyYXRpb25zICpkcWlfb3BzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogaW50IHF0cmVlX3dyaXRlX2RxdW90KHN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZvLCBz dHJ1Y3QgZHF1b3QgKmRxdW90KTsKMTQ0NzQ6IGludCBxdHJlZV9yZWFkX2RxdW90KHN0cnVjdCBx dHJlZV9tZW1fZHFpbmZvICppbmZvLCBzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKMTQ0NzQ6IGludCBx dHJlZV9kZWxldGVfZHF1b3Qoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8sIHN0cnVjdCBk cXVvdCAqZHF1b3QpOwoxNDQ3NDogaW50IHF0cmVlX3JlbGVhc2VfZHF1b3Qoc3RydWN0IHF0cmVl X21lbV9kcWluZm8gKmluZm8sIHN0cnVjdCBkcXVvdCAqZHF1b3QpOwoxNDQ3NDogaW50IHF0cmVl X2VudHJ5X3VudXNlZChzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyAqaW5mbywgY2hhciAqZGlzayk7 CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgcXRyZWVfZGVwdGgoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8pCjE0 NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGVwYiA9IGluZm8tPmRxaV91c2FibGVfYnMgPj4g MjsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvbmcgZW50cmllcyA9IGVwYjsKMTQ0NzQ6ICBpbnQg aTsKMTQ0NzQ6IAoxNDQ3NDogIGZvciAoaSA9IDE7IGVudHJpZXMgPCAoMVVMTCA8PCAzMik7IGkr KykKMTQ0NzQ6ICAgZW50cmllcyAqPSBlcGI7CjE0NDc0OiAgcmV0dXJuIGk7CjE0NDc0OiB9CjE0 NDc0OiBpbnQgcXRyZWVfZ2V0X25leHRfaWQoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8s IHN0cnVjdCBrcWlkICpxaWQpOwoxNDQ3NDogIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2RxYmxrX3Yy LmgiIDIKMTQ0NzQ6ICMgNDUgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9wcm9qaWQuaCIgMQoxNDQ3 NDogIyAxNyAiLi9pbmNsdWRlL2xpbnV4L3Byb2ppZC5oIgoxNDQ3NDogc3RydWN0IHVzZXJfbmFt ZXNwYWNlOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB1c2VyX25hbWVzcGFjZSBpbml0X3VzZXJfbnM7 CjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgX19rZXJuZWxfdWlkMzJfdCBwcm9qaWRfdDsKMTQ0NzQ6 IAoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIHByb2ppZF90IHZhbDsKMTQ0NzQ6IH0g a3Byb2ppZF90OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwcm9qaWRfdCBfX2twcm9qaWRfdmFsKGtwcm9qaWRf dCBwcm9qaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHByb2ppZC52YWw7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IHByb2ppZF9lcShrcHJvamlkX3QgbGVmdCwga3Byb2ppZF90IHJpZ2h0KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBfX2twcm9qaWRfdmFsKGxlZnQpID09IF9fa3Byb2ppZF92YWwocmlnaHQpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHByb2ppZF9sdChrcHJvamlkX3QgbGVmdCwga3By b2ppZF90IHJpZ2h0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBfX2twcm9qaWRfdmFsKGxlZnQp IDwgX19rcHJvamlkX3ZhbChyaWdodCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcHJv amlkX3ZhbGlkKGtwcm9qaWRfdCBwcm9qaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICFwcm9q aWRfZXEocHJvamlkLCAoa3Byb2ppZF90KXsgLTEgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4ga3Byb2ppZF90IG1ha2Vfa3Byb2ppZChzdHJ1Y3QgdXNl cl9uYW1lc3BhY2UgKmZyb20sIHByb2ppZF90IHByb2ppZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBwcm9qaWRfdCBmcm9tX2twcm9qaWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICp0bywga3Byb2pp ZF90IHByb2ppZCk7CjE0NDc0OiBleHRlcm4gcHJvamlkX3QgZnJvbV9rcHJvamlkX211bmdlZChz dHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBrcHJvamlkX3QgcHJvamlkKTsKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBrcHJvamlkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbnMsIGtw cm9qaWRfdCBwcm9qaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZyb21fa3Byb2ppZChucywg cHJvamlkKSAhPSAocHJvamlkX3QpLTE7CjE0NDc0OiB9CjE0NDc0OiAjIDQ5ICIuL2luY2x1ZGUv bGludXgvcXVvdGEuaCIgMgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9xdW90YS5o IiAxCjE0NDc0OiAjIDkwICIuL2luY2x1ZGUvdWFwaS9saW51eC9xdW90YS5oIgoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgUUlGX0JMSU1JVFNfQiA9IDAsCjE0NDc0OiAgUUlGX1NQQUNFX0IsCjE0NDc0 OiAgUUlGX0lMSU1JVFNfQiwKMTQ0NzQ6ICBRSUZfSU5PREVTX0IsCjE0NDc0OiAgUUlGX0JUSU1F X0IsCjE0NDc0OiAgUUlGX0lUSU1FX0IsCjE0NDc0OiB9OwoxNDQ3NDogIyAxMTAgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L3F1b3RhLmgiCjE0NDc0OiBzdHJ1Y3QgaWZfZHFibGsgewoxNDQ3NDogIF9f dTY0IGRxYl9iaGFyZGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRxYl9ic29mdGxpbWl0OwoxNDQ3NDog IF9fdTY0IGRxYl9jdXJzcGFjZTsKMTQ0NzQ6ICBfX3U2NCBkcWJfaWhhcmRsaW1pdDsKMTQ0NzQ6 ICBfX3U2NCBkcWJfaXNvZnRsaW1pdDsKMTQ0NzQ6ICBfX3U2NCBkcWJfY3VyaW5vZGVzOwoxNDQ3 NDogIF9fdTY0IGRxYl9idGltZTsKMTQ0NzQ6ICBfX3U2NCBkcWJfaXRpbWU7CjE0NDc0OiAgX191 MzIgZHFiX3ZhbGlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGlmX25leHRkcWJs ayB7CjE0NDc0OiAgX191NjQgZHFiX2JoYXJkbGltaXQ7CjE0NDc0OiAgX191NjQgZHFiX2Jzb2Z0 bGltaXQ7CjE0NDc0OiAgX191NjQgZHFiX2N1cnNwYWNlOwoxNDQ3NDogIF9fdTY0IGRxYl9paGFy ZGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRxYl9pc29mdGxpbWl0OwoxNDQ3NDogIF9fdTY0IGRxYl9j dXJpbm9kZXM7CjE0NDc0OiAgX191NjQgZHFiX2J0aW1lOwoxNDQ3NDogIF9fdTY0IGRxYl9pdGlt ZTsKMTQ0NzQ6ICBfX3UzMiBkcWJfdmFsaWQ7CjE0NDc0OiAgX191MzIgZHFiX2lkOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMTQ0ICIuL2luY2x1ZGUvdWFwaS9saW51eC9xdW90YS5oIgoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgRFFGX1JPT1RfU1FVQVNIX0IgPSAwLAoxNDQ3NDogIERRRl9TWVNfRklMRV9C ID0gMTYsCjE0NDc0OiAKMTQ0NzQ6ICBEUUZfUFJJVkFURQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBpZl9kcWlu Zm8gewoxNDQ3NDogIF9fdTY0IGRxaV9iZ3JhY2U7CjE0NDc0OiAgX191NjQgZHFpX2lncmFjZTsK MTQ0NzQ6ICBfX3UzMiBkcWlfZmxhZ3M7CjE0NDc0OiAgX191MzIgZHFpX3ZhbGlkOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMTc4ICIuL2luY2x1ZGUvdWFwaS9saW51eC9xdW90YS5oIgoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgUVVPVEFfTkxfQ19VTlNQRUMsCjE0NDc0OiAgUVVPVEFfTkxfQ19XQVJOSU5H LAoxNDQ3NDogIF9fUVVPVEFfTkxfQ19NQVgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gewoxNDQ3NDogIFFVT1RBX05MX0FfVU5TUEVDLAoxNDQ3NDogIFFVT1RBX05MX0Ff UVRZUEUsCjE0NDc0OiAgUVVPVEFfTkxfQV9FWENFU1NfSUQsCjE0NDc0OiAgUVVPVEFfTkxfQV9X QVJOSU5HLAoxNDQ3NDogIFFVT1RBX05MX0FfREVWX01BSk9SLAoxNDQ3NDogIFFVT1RBX05MX0Ff REVWX01JTk9SLAoxNDQ3NDogIFFVT1RBX05MX0FfQ0FVU0VEX0lELAoxNDQ3NDogIFFVT1RBX05M X0FfUEFELAoxNDQ3NDogIF9fUVVPVEFfTkxfQV9NQVgsCjE0NDc0OiB9OwoxNDQ3NDogIyA1MCAi Li9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBxdW90YV90eXBlIHsKMTQ0NzQ6ICBVU1JRVU9UQSA9IDAsCjE0NDc0OiAg R1JQUVVPVEEgPSAxLAoxNDQ3NDogIFBSSlFVT1RBID0gMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIF9fa2Vy bmVsX3VpZDMyX3QgcWlkX3Q7CjE0NDc0OiB0eXBlZGVmIGxvbmcgbG9uZyBxc2l6ZV90OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3Qga3FpZCB7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBrdWlkX3Qg dWlkOwoxNDQ3NDogICBrZ2lkX3QgZ2lkOwoxNDQ3NDogICBrcHJvamlkX3QgcHJvamlkOwoxNDQ3 NDogIH07CjE0NDc0OiAgZW51bSBxdW90YV90eXBlIHR5cGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gYm9vbCBxaWRfZXEoc3RydWN0IGtxaWQgbGVmdCwgc3RydWN0IGtxaWQgcmln aHQpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgcWlkX2x0KHN0cnVjdCBrcWlkIGxlZnQsIHN0cnVjdCBr cWlkIHJpZ2h0KTsKMTQ0NzQ6IGV4dGVybiBxaWRfdCBmcm9tX2txaWQoc3RydWN0IHVzZXJfbmFt ZXNwYWNlICp0bywgc3RydWN0IGtxaWQgcWlkKTsKMTQ0NzQ6IGV4dGVybiBxaWRfdCBmcm9tX2tx aWRfbXVuZ2VkKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqdG8sIHN0cnVjdCBrcWlkIHFpZCk7CjE0 NDc0OiBleHRlcm4gYm9vbCBxaWRfdmFsaWQoc3RydWN0IGtxaWQgcWlkKTsKMTQ0NzQ6ICMgOTcg Ii4vaW5jbHVkZS9saW51eC9xdW90YS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtxaWQgbWFrZV9rcWlkKHN0 cnVjdCB1c2VyX25hbWVzcGFjZSAqZnJvbSwKMTQ0NzQ6ICAgICAgICAgZW51bSBxdW90YV90eXBl IHR5cGUsIHFpZF90IHFpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBrcWlkOwoxNDQ3 NDogCjE0NDc0OiAga3FpZC50eXBlID0gdHlwZTsKMTQ0NzQ6ICBzd2l0Y2ggKHR5cGUpIHsKMTQ0 NzQ6ICBjYXNlIFVTUlFVT1RBOgoxNDQ3NDogICBrcWlkLnVpZCA9IG1ha2Vfa3VpZChmcm9tLCBx aWQpOwoxNDQ3NDogICBicmVhazsKMTQ0NzQ6ICBjYXNlIEdSUFFVT1RBOgoxNDQ3NDogICBrcWlk LmdpZCA9IG1ha2Vfa2dpZChmcm9tLCBxaWQpOwoxNDQ3NDogICBicmVhazsKMTQ0NzQ6ICBjYXNl IFBSSlFVT1RBOgoxNDQ3NDogICBrcWlkLnByb2ppZCA9IG1ha2Vfa3Byb2ppZChmcm9tLCBxaWQp OwoxNDQ3NDogICBicmVhazsKMTQ0NzQ6ICBkZWZhdWx0OgoxNDQ3NDogICBkbyB7IGRvIHsgYXNt IF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hz ZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIg Ilx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGlu ZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVj M1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3F1b3RhLmgiKSwgImki ICgxMTQpLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxl ICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNj YXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5c dCIgOiA6ICJpIiAoMjgpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNo YWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVy biBrcWlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga3FpZCBtYWtlX2txaWRfaW52YWxpZChlbnVt IHF1b3RhX3R5cGUgdHlwZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBrcWlkOwoxNDQ3 NDogCjE0NDc0OiAga3FpZC50eXBlID0gdHlwZTsKMTQ0NzQ6ICBzd2l0Y2ggKHR5cGUpIHsKMTQ0 NzQ6ICBjYXNlIFVTUlFVT1RBOgoxNDQ3NDogICBrcWlkLnVpZCA9IChrdWlkX3QpeyAtMSB9Owox NDQ3NDogICBicmVhazsKMTQ0NzQ6ICBjYXNlIEdSUFFVT1RBOgoxNDQ3NDogICBrcWlkLmdpZCA9 IChrZ2lkX3QpeyAtMSB9OwoxNDQ3NDogICBicmVhazsKMTQ0NzQ6ICBjYXNlIFBSSlFVT1RBOgox NDQ3NDogICBrcWlkLnByb2ppZCA9IChrcHJvamlkX3QpeyAtMSB9OwoxNDQ3NDogICBicmVhazsK MTQ0NzQ6ICBkZWZhdWx0OgoxNDQ3NDogICBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxl KCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxl LFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpi dWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZp bGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIi ICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24i IDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3F1b3RhLmgiKSwgImkiICgxNDEpLCAiaSIgKDApLCAi aSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20g dm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5c dCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjkpKTsg fSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVybiBrcWlkOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrcWlk IG1ha2Vfa3FpZF91aWQoa3VpZF90IHVpZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBr cWlkOwoxNDQ3NDogIGtxaWQudHlwZSA9IFVTUlFVT1RBOwoxNDQ3NDogIGtxaWQudWlkID0gdWlk OwoxNDQ3NDogIHJldHVybiBrcWlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrcWlkIG1ha2Vfa3FpZF9naWQoa2dpZF90IGdp ZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBrcWlkOwoxNDQ3NDogIGtxaWQudHlwZSA9 IEdSUFFVT1RBOwoxNDQ3NDogIGtxaWQuZ2lkID0gZ2lkOwoxNDQ3NDogIHJldHVybiBrcWlkOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBrcWlkIG1ha2Vfa3FpZF9wcm9qaWQoa3Byb2ppZF90IHByb2ppZCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICBzdHJ1Y3Qga3FpZCBrcWlkOwoxNDQ3NDogIGtxaWQudHlwZSA9IFBSSlFVT1RBOwoxNDQ3 NDogIGtxaWQucHJvamlkID0gcHJvamlkOwoxNDQ3NDogIHJldHVybiBrcWlkOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCBxaWRfaGFzX21hcHBpbmcoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpucywgc3RydWN0IGtxaWQg cWlkKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBmcm9tX2txaWQobnMsIHFpZCkgIT0gKHFpZF90 KSAtMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3BpbmxvY2tfdCBk cV9kYXRhX2xvY2s7CjE0NDc0OiAjIDIwNSAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCjE0NDc0 OiBzdHJ1Y3QgbWVtX2RxYmxrIHsKMTQ0NzQ6ICBxc2l6ZV90IGRxYl9iaGFyZGxpbWl0OwoxNDQ3 NDogIHFzaXplX3QgZHFiX2Jzb2Z0bGltaXQ7CjE0NDc0OiAgcXNpemVfdCBkcWJfY3Vyc3BhY2U7 CjE0NDc0OiAgcXNpemVfdCBkcWJfcnN2c3BhY2U7CjE0NDc0OiAgcXNpemVfdCBkcWJfaWhhcmRs aW1pdDsKMTQ0NzQ6ICBxc2l6ZV90IGRxYl9pc29mdGxpbWl0OwoxNDQ3NDogIHFzaXplX3QgZHFi X2N1cmlub2RlczsKMTQ0NzQ6ICB0aW1lNjRfdCBkcWJfYnRpbWU7CjE0NDc0OiAgdGltZTY0X3Qg ZHFiX2l0aW1lOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IHF1b3RhX2Zvcm1hdF90eXBlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbWVtX2Rx aW5mbyB7CjE0NDc0OiAgc3RydWN0IHF1b3RhX2Zvcm1hdF90eXBlICpkcWlfZm9ybWF0OwoxNDQ3 NDogIGludCBkcWlfZm10X2lkOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBkcWlf ZGlydHlfbGlzdDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGRxaV9mbGFnczsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgZHFpX2JncmFjZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHFpX2lncmFjZTsKMTQ0 NzQ6ICBxc2l6ZV90IGRxaV9tYXhfc3BjX2xpbWl0OwoxNDQ3NDogIHFzaXplX3QgZHFpX21heF9p bm9fbGltaXQ7CjE0NDc0OiAgdm9pZCAqZHFpX3ByaXY7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3Qgc3VwZXJfYmxvY2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBEUUZfSU5GT19ESVJUWV9CID0gRFFG X1BSSVZBVEUsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIG1h cmtfaW5mb19kaXJ0eShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSk7CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgaW5mb19kaXJ0eShzdHJ1Y3QgbWVtX2RxaW5mbyAqaW5mbykKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gdGVzdF9iaXQoRFFGX0lORk9fRElSVFlfQiwgJmluZm8tPmRxaV9mbGFncyk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERRU1RfTE9PS1VQUywKMTQ0NzQ6ICBE UVNUX0RST1BTLAoxNDQ3NDogIERRU1RfUkVBRFMsCjE0NDc0OiAgRFFTVF9XUklURVMsCjE0NDc0 OiAgRFFTVF9DQUNIRV9ISVRTLAoxNDQ3NDogIERRU1RfQUxMT0NfRFFVT1RTLAoxNDQ3NDogIERR U1RfRlJFRV9EUVVPVFMsCjE0NDc0OiAgRFFTVF9TWU5DUywKMTQ0NzQ6ICBfRFFTVF9EUVNUQVRf TEFTVAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRxc3RhdHMgewoxNDQ3NDogIHVu c2lnbmVkIGxvbmcgc3RhdFtfRFFTVF9EUVNUQVRfTEFTVF07CjE0NDc0OiAgc3RydWN0IHBlcmNw dV9jb3VudGVyIGNvdW50ZXJbX0RRU1RfRFFTVEFUX0xBU1RdOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHN0cnVjdCBkcXN0YXRzIGRxc3RhdHM7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg ZHFzdGF0c19pbmModW5zaWduZWQgaW50IHR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgcGVyY3B1X2Nv dW50ZXJfaW5jKCZkcXN0YXRzLmNvdW50ZXJbdHlwZV0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGRxc3RhdHNfZGVjKHVuc2lnbmVkIGludCB0eXBlKQoxNDQ3NDogewoxNDQ3NDogIHBl cmNwdV9jb3VudGVyX2RlYygmZHFzdGF0cy5jb3VudGVyW3R5cGVdKTsKMTQ0NzQ6IH0KMTQ0NzQ6 ICMgMjk0ICIuL2luY2x1ZGUvbGludXgvcXVvdGEuaCIKMTQ0NzQ6IHN0cnVjdCBkcXVvdCB7CjE0 NDc0OiAgc3RydWN0IGhsaXN0X25vZGUgZHFfaGFzaDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFk IGRxX2ludXNlOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgZHFfZnJlZTsKMTQ0NzQ6ICBzdHJ1 Y3QgbGlzdF9oZWFkIGRxX2RpcnR5OwoxNDQ3NDogIHN0cnVjdCBtdXRleCBkcV9sb2NrOwoxNDQ3 NDogIHNwaW5sb2NrX3QgZHFfZHFiX2xvY2s7CjE0NDc0OiAgYXRvbWljX3QgZHFfY291bnQ7CjE0 NDc0OiAgc3RydWN0IHN1cGVyX2Jsb2NrICpkcV9zYjsKMTQ0NzQ6ICBzdHJ1Y3Qga3FpZCBkcV9p ZDsKMTQ0NzQ6ICBsb2ZmX3QgZHFfb2ZmOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZHFfZmxhZ3M7 CjE0NDc0OiAgc3RydWN0IG1lbV9kcWJsayBkcV9kcWI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBxdW90YV9mb3JtYXRfb3BzIHsKMTQ0NzQ6ICBpbnQgKCpjaGVja19x dW90YV9maWxlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSk7CjE0NDc0OiAgaW50 ICgqcmVhZF9maWxlX2luZm8pKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlKTsKMTQ0 NzQ6ICBpbnQgKCp3cml0ZV9maWxlX2luZm8pKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0 eXBlKTsKMTQ0NzQ6ICBpbnQgKCpmcmVlX2ZpbGVfaW5mbykoc3RydWN0IHN1cGVyX2Jsb2NrICpz YiwgaW50IHR5cGUpOwoxNDQ3NDogIGludCAoKnJlYWRfZHFibGspKHN0cnVjdCBkcXVvdCAqZHF1 b3QpOwoxNDQ3NDogIGludCAoKmNvbW1pdF9kcWJsaykoc3RydWN0IGRxdW90ICpkcXVvdCk7CjE0 NDc0OiAgaW50ICgqcmVsZWFzZV9kcWJsaykoc3RydWN0IGRxdW90ICpkcXVvdCk7CjE0NDc0OiAg aW50ICgqZ2V0X25leHRfaWQpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrcWlkICpx aWQpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHF1b3Rfb3BlcmF0 aW9ucyB7CjE0NDc0OiAgaW50ICgqd3JpdGVfZHF1b3QpIChzdHJ1Y3QgZHF1b3QgKik7CjE0NDc0 OiAgc3RydWN0IGRxdW90ICooKmFsbG9jX2RxdW90KShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50 KTsKMTQ0NzQ6ICB2b2lkICgqZGVzdHJveV9kcXVvdCkoc3RydWN0IGRxdW90ICopOwoxNDQ3NDog IGludCAoKmFjcXVpcmVfZHF1b3QpIChzdHJ1Y3QgZHF1b3QgKik7CjE0NDc0OiAgaW50ICgqcmVs ZWFzZV9kcXVvdCkgKHN0cnVjdCBkcXVvdCAqKTsKMTQ0NzQ6ICBpbnQgKCptYXJrX2RpcnR5KSAo c3RydWN0IGRxdW90ICopOwoxNDQ3NDogIGludCAoKndyaXRlX2luZm8pIChzdHJ1Y3Qgc3VwZXJf YmxvY2sgKiwgaW50KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcXNpemVfdCAqKCpnZXRfcmVz ZXJ2ZWRfc3BhY2UpIChzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAgaW50ICgqZ2V0X3Byb2ppZCkg KHN0cnVjdCBpbm9kZSAqLCBrcHJvamlkX3QgKik7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpnZXRf aW5vZGVfdXNhZ2UpIChzdHJ1Y3QgaW5vZGUgKiwgcXNpemVfdCAqKTsKMTQ0NzQ6IAoxNDQ3NDog IGludCAoKmdldF9uZXh0X2lkKSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtxaWQg KnFpZCk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGF0aDsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgcWNfZHFibGsgewoxNDQ3NDogIGludCBkX2ZpZWxkbWFzazsKMTQ0 NzQ6ICB1NjQgZF9zcGNfaGFyZGxpbWl0OwoxNDQ3NDogIHU2NCBkX3NwY19zb2Z0bGltaXQ7CjE0 NDc0OiAgdTY0IGRfaW5vX2hhcmRsaW1pdDsKMTQ0NzQ6ICB1NjQgZF9pbm9fc29mdGxpbWl0Owox NDQ3NDogIHU2NCBkX3NwYWNlOwoxNDQ3NDogIHU2NCBkX2lub19jb3VudDsKMTQ0NzQ6ICBzNjQg ZF9pbm9fdGltZXI7CjE0NDc0OiAKMTQ0NzQ6ICBzNjQgZF9zcGNfdGltZXI7CjE0NDc0OiAgaW50 IGRfaW5vX3dhcm5zOwoxNDQ3NDogIGludCBkX3NwY193YXJuczsKMTQ0NzQ6ICB1NjQgZF9ydF9z cGNfaGFyZGxpbWl0OwoxNDQ3NDogIHU2NCBkX3J0X3NwY19zb2Z0bGltaXQ7CjE0NDc0OiAgdTY0 IGRfcnRfc3BhY2U7CjE0NDc0OiAgczY0IGRfcnRfc3BjX3RpbWVyOwoxNDQ3NDogIGludCBkX3J0 X3NwY193YXJuczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM5NSAiLi9pbmNsdWRlL2xpbnV4L3F1b3Rh LmgiCjE0NDc0OiBzdHJ1Y3QgcWNfdHlwZV9zdGF0ZSB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGZs YWdzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBzcGNfdGltZWxpbWl0OwoxNDQ3NDogCjE0NDc0OiAg dW5zaWduZWQgaW50IGlub190aW1lbGltaXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJ0X3NwY190 aW1lbGltaXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNwY193YXJubGltaXQ7CjE0NDc0OiAgdW5z aWduZWQgaW50IGlub193YXJubGltaXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJ0X3NwY193YXJu bGltaXQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIGlubzsKMTQ0NzQ6ICBibGtjbnRfdCBi bG9ja3M7CjE0NDc0OiAgYmxrY250X3QgbmV4dGVudHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgcWNfc3RhdGUgewoxNDQ3NDogIHVuc2lnbmVkIGludCBzX2luY29yZWRxczsKMTQ0 NzQ6ICBzdHJ1Y3QgcWNfdHlwZV9zdGF0ZSBzX3N0YXRlWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcWNfaW5mbyB7CjE0NDc0OiAgaW50IGlfZmllbGRtYXNrOwox NDQ3NDogIHVuc2lnbmVkIGludCBpX2ZsYWdzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBpX3NwY190 aW1lbGltaXQ7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaV9pbm9fdGltZWxpbWl0Owox NDQ3NDogIHVuc2lnbmVkIGludCBpX3J0X3NwY190aW1lbGltaXQ7CjE0NDc0OiAgdW5zaWduZWQg aW50IGlfc3BjX3dhcm5saW1pdDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaV9pbm9fd2FybmxpbWl0 OwoxNDQ3NDogIHVuc2lnbmVkIGludCBpX3J0X3NwY193YXJubGltaXQ7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBxdW90YWN0bF9vcHMgewoxNDQ3NDogIGludCAoKnF1 b3RhX29uKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50LCBpbnQsIGNvbnN0IHN0cnVjdCBwYXRo ICopOwoxNDQ3NDogIGludCAoKnF1b3RhX29mZikoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7 CjE0NDc0OiAgaW50ICgqcXVvdGFfZW5hYmxlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWdu ZWQgaW50KTsKMTQ0NzQ6ICBpbnQgKCpxdW90YV9kaXNhYmxlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sg KiwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6ICBpbnQgKCpxdW90YV9zeW5jKShzdHJ1Y3Qgc3VwZXJf YmxvY2sgKiwgaW50KTsKMTQ0NzQ6ICBpbnQgKCpzZXRfaW5mbykoc3RydWN0IHN1cGVyX2Jsb2Nr ICosIGludCwgc3RydWN0IHFjX2luZm8gKik7CjE0NDc0OiAgaW50ICgqZ2V0X2RxYmxrKShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtxaWQsIHN0cnVjdCBxY19kcWJsayAqKTsKMTQ0NzQ6 ICBpbnQgKCpnZXRfbmV4dGRxYmxrKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtxaWQg KiwKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHFjX2RxYmxrICopOwoxNDQ3NDogIGludCAoKnNldF9k cWJsaykoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBrcWlkLCBzdHJ1Y3QgcWNfZHFibGsg Kik7CjE0NDc0OiAgaW50ICgqZ2V0X3N0YXRlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0 IHFjX3N0YXRlICopOwoxNDQ3NDogIGludCAoKnJtX3hxdW90YSkoc3RydWN0IHN1cGVyX2Jsb2Nr ICosIHVuc2lnbmVkIGludCk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcXVvdGFf Zm9ybWF0X3R5cGUgewoxNDQ3NDogIGludCBxZl9mbXRfaWQ7CjE0NDc0OiAgY29uc3Qgc3RydWN0 IHF1b3RhX2Zvcm1hdF9vcHMgKnFmX29wczsKMTQ0NzQ6ICBzdHJ1Y3QgbW9kdWxlICpxZl9vd25l cjsKMTQ0NzQ6ICBzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgKnFmX25leHQ7CjE0NDc0OiB9Owox NDQ3NDogIyA0NjMgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIgoxNDQ3NDogZW51bSB7CjE0NDc0 OiAgX0RRVU9UX1VTQUdFX0VOQUJMRUQgPSAwLAoxNDQ3NDogIF9EUVVPVF9MSU1JVFNfRU5BQkxF RCwKMTQ0NzQ6ICBfRFFVT1RfU1VTUEVOREVELAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfRFFV T1RfU1RBVEVfRkxBR1MKMTQ0NzQ6IH07CjE0NDc0OiAjIDQ5MCAiLi9pbmNsdWRlL2xpbnV4L3F1 b3RhLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgZHF1b3Rfc3RhdGVfZmxhZyh1bnNpZ25lZCBpbnQg ZmxhZ3MsIGludCB0eXBlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBmbGFncyA8PCB0eXBlOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgZHF1b3RfZ2VuZXJpY19mbGFnKHVu c2lnbmVkIGludCBmbGFncywgaW50IHR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChmbGFn cyA+PiB0eXBlKSAmICgoMSA8PCBfRFFVT1RfVVNBR0VfRU5BQkxFRCAqIDMpIHwgKDEgPDwgX0RR VU9UX0xJTUlUU19FTkFCTEVEICogMykgfCAoMSA8PCBfRFFVT1RfU1VTUEVOREVEICogMykpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgdW5zaWduZWQgZHF1b3Rfc3RhdGVfdHlwZXModW5zaWduZWQgZmxhZ3MsIHVuc2ln bmVkIGZsYWcpCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1l X2Fzc2VydF81MDModm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJCVUlMRF9CVUdfT04g ZmFpbGVkOiAiICIoZmxhZykgPT0gMCB8fCAoKChmbGFnKSAmICgoZmxhZykgLSAxKSkgIT0gMCki KSkpOyBpZiAoISghKChmbGFnKSA9PSAwIHx8ICgoKGZsYWcpICYgKChmbGFnKSAtIDEpKSAhPSAw KSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF81MDMoKTsgfSB3aGlsZSAoMCk7CjE0NDc0OiAgcmV0 dXJuIChmbGFncyAvIGZsYWcpICYgKCgxIDw8IDMpIC0gMSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgcXVvdGFfc2VuZF93YXJuaW5nKHN0cnVjdCBrcWlkIHFp ZCwgZGV2X3QgZGV2LAoxNDQ3NDogICAgICAgICAgIGNvbnN0IGNoYXIgd2FybnR5cGUpOwoxNDQ3 NDogIyA1MTggIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIgoxNDQ3NDogc3RydWN0IHF1b3RhX2lu Zm8gewoxNDQ3NDogIHVuc2lnbmVkIGludCBmbGFnczsKMTQ0NzQ6ICBzdHJ1Y3Qgcndfc2VtYXBo b3JlIGRxaW9fc2VtOwoxNDQ3NDogIHN0cnVjdCBpbm9kZSAqZmlsZXNbM107CjE0NDc0OiAgc3Ry dWN0IG1lbV9kcWluZm8gaW5mb1szXTsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgcXVvdGFfZm9ybWF0 X29wcyAqb3BzWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogaW50IHJlZ2lzdGVyX3F1b3Rh X2Zvcm1hdChzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgKmZtdCk7CjE0NDc0OiB2b2lkIHVucmVn aXN0ZXJfcXVvdGFfZm9ybWF0KHN0cnVjdCBxdW90YV9mb3JtYXRfdHlwZSAqZm10KTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHF1b3RhX21vZHVsZV9uYW1lIHsKMTQ0NzQ6ICBpbnQgcW1fZm10X2lk OwoxNDQ3NDogIGNoYXIgKnFtX21vZF9uYW1lOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjQ2ICIuL2lu Y2x1ZGUvbGludXgvZnMuaCIgMgoxNDQ3NDogIyAyNzkgIi4vaW5jbHVkZS9saW51eC9mcy5oIgox NDQ3NDogZW51bSBwb3NpdGl2ZV9hb3BfcmV0dXJucyB7CjE0NDc0OiAgQU9QX1dSSVRFUEFHRV9B Q1RJVkFURSA9IDB4ODAwMDAsCjE0NDc0OiAgQU9QX1RSVU5DQVRFRF9QQUdFID0gMHg4MDAwMSwK MTQ0NzQ6IH07CjE0NDc0OiAjIDI5MiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdHJ1 Y3QgcGFnZTsKMTQ0NzQ6IHN0cnVjdCBhZGRyZXNzX3NwYWNlOwoxNDQ3NDogc3RydWN0IHdyaXRl YmFja19jb250cm9sOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gcndfaGludCB7CjE0NDc0OiAgV1JJVEVfTElGRV9OT1RfU0VUID0gMCwKMTQ0NzQ6 ICBXUklURV9MSUZFX05PTkUgPSAxLAoxNDQ3NDogIFdSSVRFX0xJRkVfU0hPUlQgPSAyLAoxNDQ3 NDogIFdSSVRFX0xJRkVfTUVESVVNID0gMywKMTQ0NzQ6ICBXUklURV9MSUZFX0xPTkcgPSA0LAox NDQ3NDogIFdSSVRFX0xJRkVfRVhUUkVNRSA9IDUsCjE0NDc0OiB9OwoxNDQ3NDogIyAzMTggIi4v aW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RydWN0IGtpb2NiIHsKMTQ0NzQ6ICBzdHJ1Y3Qg ZmlsZSAqa2lfZmlscDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGxv ZmZfdCBraV9wb3M7CjE0NDc0OiAgdm9pZCAoKmtpX2NvbXBsZXRlKShzdHJ1Y3Qga2lvY2IgKmlv Y2IsIGxvbmcgcmV0LCBsb25nIHJldDIpOwoxNDQ3NDogIHZvaWQgKnByaXZhdGU7CjE0NDc0OiAg aW50IGtpX2ZsYWdzOwoxNDQ3NDogIHUxNiBraV9oaW50OwoxNDQ3NDogIHUxNiBraV9pb3ByaW87 CjE0NDc0OiAgdW5zaWduZWQgaW50IGtpX2Nvb2tpZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGlzX3N5bmNfa2lvY2Ioc3RydWN0IGtpb2NiICpraW9jYikK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga2lvY2ItPmtpX2NvbXBsZXRlID09ICgodm9pZCAqKTAp OwoxNDQ3NDogfQoxNDQ3NDogIyAzNDkgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogdHlw ZWRlZiBzdHJ1Y3QgewoxNDQ3NDogIHNpemVfdCB3cml0dGVuOwoxNDQ3NDogIHNpemVfdCBjb3Vu dDsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIGNoYXIgKmJ1ZjsKMTQ0NzQ6ICAgdm9pZCAqZGF0 YTsKMTQ0NzQ6ICB9IGFyZzsKMTQ0NzQ6ICBpbnQgZXJyb3I7CjE0NDc0OiB9IHJlYWRfZGVzY3Jp cHRvcl90OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGludCAoKnJlYWRfYWN0b3JfdCkocmVhZF9k ZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZywgdW5z aWduZWQgbG9uZyk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlv bnMgewoxNDQ3NDogIGludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3 cml0ZWJhY2tfY29udHJvbCAqd2JjKTsKMTQ0NzQ6ICBpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZp bGUgKiwgc3RydWN0IHBhZ2UgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKndyaXRl cGFnZXMpKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAq KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50ICgqc2V0X3BhZ2VfZGlydHkpKHN0cnVjdCBw YWdlICpwYWdlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgaW50ICgqcmVhZHBhZ2VzKShzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcsCjE0NDc0OiAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlcywgdW5zaWduZWQg bnJfcGFnZXMpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqd3JpdGVfYmVnaW4pKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDogICAgIGxvZmZfdCBwb3Ms IHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3MsCjE0NDc0OiAgICAgc3RydWN0IHBhZ2UgKipw YWdlcCwgdm9pZCAqKmZzZGF0YSk7CjE0NDc0OiAgaW50ICgqd3JpdGVfZW5kKShzdHJ1Y3QgZmls ZSAqLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKMTQ0NzQ6ICAgICBsb2ZmX3QgcG9z LCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwKMTQ0NzQ6ICAgICBzdHJ1Y3QgcGFnZSAq cGFnZSwgdm9pZCAqZnNkYXRhKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc2VjdG9yX3QgKCpi bWFwKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBzZWN0b3JfdCk7CjE0NDc0OiAgdm9pZCAoKmlu dmFsaWRhdGVwYWdlKSAoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQp OwoxNDQ3NDogIGludCAoKnJlbGVhc2VwYWdlKSAoc3RydWN0IHBhZ2UgKiwgZ2ZwX3QpOwoxNDQ3 NDogIHZvaWQgKCpmcmVlcGFnZSkoc3RydWN0IHBhZ2UgKik7CjE0NDc0OiAgc3NpemVfdCAoKmRp cmVjdF9JTykoc3RydWN0IGtpb2NiICosIHN0cnVjdCBpb3ZfaXRlciAqaXRlcik7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCptaWdyYXRlcGFnZSkgKHN0cnVj dCBhZGRyZXNzX3NwYWNlICosCjE0NDc0OiAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAq LCBlbnVtIG1pZ3JhdGVfbW9kZSk7CjE0NDc0OiAgYm9vbCAoKmlzb2xhdGVfcGFnZSkoc3RydWN0 IHBhZ2UgKiwgaXNvbGF0ZV9tb2RlX3QpOwoxNDQ3NDogIHZvaWQgKCpwdXRiYWNrX3BhZ2UpKHN0 cnVjdCBwYWdlICopOwoxNDQ3NDogIGludCAoKmxhdW5kZXJfcGFnZSkgKHN0cnVjdCBwYWdlICop OwoxNDQ3NDogIGludCAoKmlzX3BhcnRpYWxseV91cHRvZGF0ZSkgKHN0cnVjdCBwYWdlICosIHVu c2lnbmVkIGxvbmcsCjE0NDc0OiAgICAgIHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogIHZvaWQgKCpp c19kaXJ0eV93cml0ZWJhY2spIChzdHJ1Y3QgcGFnZSAqLCBib29sICosIGJvb2wgKik7CjE0NDc0 OiAgaW50ICgqZXJyb3JfcmVtb3ZlX3BhZ2UpKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIHN0cnVj dCBwYWdlICopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpzd2FwX2FjdGl2YXRlKShz dHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqc2lzLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKMTQ0NzQ6ICAg ICBzZWN0b3JfdCAqc3Bhbik7CjE0NDc0OiAgdm9pZCAoKnN3YXBfZGVhY3RpdmF0ZSkoc3RydWN0 IGZpbGUgKmZpbGUpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IHN0cnVj dCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgZW1wdHlfYW9wczsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgcGFnZWNhY2hlX3dyaXRlX2JlZ2luKHN0 cnVjdCBmaWxlICosIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDogICAgIGxv ZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3MsCjE0NDc0OiAgICAgc3RydWN0 IHBhZ2UgKipwYWdlcCwgdm9pZCAqKmZzZGF0YSk7CjE0NDc0OiAKMTQ0NzQ6IGludCBwYWdlY2Fj aGVfd3JpdGVfZW5kKHN0cnVjdCBmaWxlICosIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n LAoxNDQ3NDogICAgIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgY29waWVkLAox NDQ3NDogICAgIHN0cnVjdCBwYWdlICpwYWdlLCB2b2lkICpmc2RhdGEpOwoxNDQ3NDogIyA0NDUg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RydWN0IGFkZHJlc3Nfc3BhY2UgewoxNDQ3 NDogIHN0cnVjdCBpbm9kZSAqaG9zdDsKMTQ0NzQ6ICBzdHJ1Y3QgeGFycmF5IGlfcGFnZXM7CjE0 NDc0OiAgZ2ZwX3QgZ2ZwX21hc2s7CjE0NDc0OiAgYXRvbWljX3QgaV9tbWFwX3dyaXRhYmxlOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHJiX3Jvb3RfY2Fj aGVkIGlfbW1hcDsKMTQ0NzQ6ICBzdHJ1Y3Qgcndfc2VtYXBob3JlIGlfbW1hcF9yd3NlbTsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIG5ycGFnZXM7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBucmV4Y2Vw dGlvbmFsOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgd3JpdGViYWNrX2luZGV4OwoxNDQ3NDogIGNv bnN0IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgKmFfb3BzOwoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgZmxhZ3M7CjE0NDc0OiAgZXJyc2VxX3Qgd2JfZXJyOwoxNDQ3NDogIHNwaW5sb2Nr X3QgcHJpdmF0ZV9sb2NrOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgcHJpdmF0ZV9saXN0Owox NDQ3NDogIHZvaWQgKnByaXZhdGVfZGF0YTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoYWxpZ25l ZChzaXplb2YobG9uZykpKSkgX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCByZXF1 ZXN0X3F1ZXVlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYmxvY2tfZGV2aWNlIHsKMTQ0NzQ6ICBk ZXZfdCBiZF9kZXY7CjE0NDc0OiAgaW50IGJkX29wZW5lcnM7CjE0NDc0OiAgc3RydWN0IGlub2Rl ICogYmRfaW5vZGU7CjE0NDc0OiAgc3RydWN0IHN1cGVyX2Jsb2NrICogYmRfc3VwZXI7CjE0NDc0 OiAgc3RydWN0IG11dGV4IGJkX211dGV4OwoxNDQ3NDogIHZvaWQgKiBiZF9jbGFpbWluZzsKMTQ0 NzQ6ICB2b2lkICogYmRfaG9sZGVyOwoxNDQ3NDogIGludCBiZF9ob2xkZXJzOwoxNDQ3NDogIGJv b2wgYmRfd3JpdGVfaG9sZGVyOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBiZF9o b2xkZXJfZGlza3M7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICogYmRfY29u dGFpbnM7CjE0NDc0OiAgdW5zaWduZWQgYmRfYmxvY2tfc2l6ZTsKMTQ0NzQ6ICB1OCBiZF9wYXJ0 bm87CjE0NDc0OiAgc3RydWN0IGhkX3N0cnVjdCAqIGJkX3BhcnQ7CjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBiZF9wYXJ0X2NvdW50OwoxNDQ3NDogIGludCBiZF9pbnZhbGlkYXRlZDsKMTQ0NzQ6 ICBzdHJ1Y3QgZ2VuZGlzayAqIGJkX2Rpc2s7CjE0NDc0OiAgc3RydWN0IHJlcXVlc3RfcXVldWUg KiBiZF9xdWV1ZTsKMTQ0NzQ6ICBzdHJ1Y3QgYmFja2luZ19kZXZfaW5mbyAqYmRfYmRpOwoxNDQ3 NDogIHN0cnVjdCBsaXN0X2hlYWQgYmRfbGlzdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGJkX3ByaXZhdGU7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCBiZF9mc2ZyZWV6ZV9jb3VudDsKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCBtdXRleCBiZF9mc2ZyZWV6ZV9tdXRleDsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVf XygoX19kZXNpZ25hdGVkX2luaXRfXykpOwoxNDQ3NDogIyA1MTkgIi4vaW5jbHVkZS9saW51eC9m cy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBtYXBwaW5nX3RhZ2dlZChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZywgeGFfbWFya190IHRhZykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4geGFfbWFya2VkKCZt YXBwaW5nLT5pX3BhZ2VzLCB0YWcpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfbW1h cF9sb2NrX3dyaXRlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3 NDogIGRvd25fd3JpdGUoJm1hcHBpbmctPmlfbW1hcF9yd3NlbSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgaV9tbWFwX3VubG9ja193cml0ZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1cF93cml0ZSgmbWFwcGluZy0+aV9tbWFwX3J3c2VtKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpX21tYXBfbG9ja19yZWFkKHN0cnVjdCBhZGRy ZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDogIGRvd25fcmVhZCgmbWFwcGluZy0+ aV9tbWFwX3J3c2VtKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpX21tYXBfdW5sb2Nr X3JlYWQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCjE0NDc0OiB7CjE0NDc0OiAgdXBf cmVhZCgmbWFwcGluZy0+aV9tbWFwX3J3c2VtKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG1hcHBpbmdfbWFwcGVkKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhKCh7IHVuaW9uIHsgdHlwZW9m KCgmbWFwcGluZy0+aV9tbWFwLnJiX3Jvb3QpLT5yYl9ub2RlKSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCgmbWFwcGluZy0+aV9tbWFwLnJiX3Jv b3QpLT5yYl9ub2RlKSwgX191Ll9fYywgc2l6ZW9mKCgmbWFwcGluZy0+aV9tbWFwLnJiX3Jvb3Qp LT5yYl9ub2RlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKCZtYXBwaW5nLT5p X21tYXAucmJfcm9vdCktPnJiX25vZGUpLCBfX3UuX19jLCBzaXplb2YoKCZtYXBwaW5nLT5pX21t YXAucmJfcm9vdCktPnJiX25vZGUpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KSA9 PSAoKHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAjIDU2MSAiLi9pbmNsdWRlL2xpbnV4L2Zz LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgbWFwcGluZ193cml0YWJseV9tYXBwZWQoc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19yZWFkKCZtYXBwaW5n LT5pX21tYXBfd3JpdGFibGUpID4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG1hcHBp bmdfbWFwX3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBhdG9taWNfaW5jX3VubGVzc19uZWdhdGl2ZSgmbWFwcGluZy0+aV9tbWFw X3dyaXRhYmxlKSA/CjE0NDc0OiAgIDAgOiAtMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBtYXBwaW5nX3VubWFwX3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQox NDQ3NDogewoxNDQ3NDogIGF0b21pY19kZWMoJm1hcHBpbmctPmlfbW1hcF93cml0YWJsZSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBtYXBwaW5nX2Rlbnlfd3JpdGFibGUoc3RydWN0IGFk ZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19kZWNf dW5sZXNzX3Bvc2l0aXZlKCZtYXBwaW5nLT5pX21tYXBfd3JpdGFibGUpID8KMTQ0NzQ6ICAgMCA6 IC0xNjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtYXBwaW5nX2FsbG93X3dyaXRhYmxl KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDogIGF0b21pY19p bmMoJm1hcHBpbmctPmlfbW1hcF93cml0YWJsZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDU5OSAiLi9p bmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdHJ1Y3QgcG9zaXhfYWNsOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBvc2l4X2FjbCAqCjE0NDc0OiB1bmNhY2hlZF9hY2xf c2VudGluZWwoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biAodm9pZCAqKXRhc2sgKyAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCjE0NDc0OiBp c191bmNhY2hlZF9hY2woc3RydWN0IHBvc2l4X2FjbCAqYWNsKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAobG9uZylhY2wgJiAxOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZnNub3RpZnlfbWFya19j b25uZWN0b3I7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgaW5vZGUgewoxNDQ3NDogIHVtb2RlX3QgaV9tb2RlOwoxNDQ3NDogIHVu c2lnbmVkIHNob3J0IGlfb3BmbGFnczsKMTQ0NzQ6ICBrdWlkX3QgaV91aWQ7CjE0NDc0OiAga2dp ZF90IGlfZ2lkOwoxNDQ3NDogIHVuc2lnbmVkIGludCBpX2ZsYWdzOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgcG9zaXhfYWNsICppX2FjbDsKMTQ0NzQ6ICBzdHJ1Y3QgcG9zaXhfYWNs ICppX2RlZmF1bHRfYWNsOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgaW5v ZGVfb3BlcmF0aW9ucyAqaV9vcDsKMTQ0NzQ6ICBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmlfc2I7CjE0 NDc0OiAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmlfbWFwcGluZzsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAqaV9zZWN1cml0eTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGlfaW5vOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBjb25zdCB1bnNpZ25l ZCBpbnQgaV9ubGluazsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IF9faV9ubGluazsKMTQ0NzQ6ICB9 OwoxNDQ3NDogIGRldl90IGlfcmRldjsKMTQ0NzQ6ICBsb2ZmX3QgaV9zaXplOwoxNDQ3NDogIHN0 cnVjdCB0aW1lc3BlYzY0IGlfYXRpbWU7CjE0NDc0OiAgc3RydWN0IHRpbWVzcGVjNjQgaV9tdGlt ZTsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZXNwZWM2NCBpX2N0aW1lOwoxNDQ3NDogIHNwaW5sb2NrX3Qg aV9sb2NrOwoxNDQ3NDogIHVuc2lnbmVkIHNob3J0IGlfYnl0ZXM7CjE0NDc0OiAgdTggaV9ibGti aXRzOwoxNDQ3NDogIHU4IGlfd3JpdGVfaGludDsKMTQ0NzQ6ICBibGtjbnRfdCBpX2Jsb2NrczsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGlfc3RhdGU7CjE0NDc0OiAgc3RydWN0IHJ3X3NlbWFwaG9yZSBpX3J3c2Vt OwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBkaXJ0aWVkX3doZW47CjE0NDc0OiAgdW5z aWduZWQgbG9uZyBkaXJ0aWVkX3RpbWVfd2hlbjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBobGlz dF9ub2RlIGlfaGFzaDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGlfaW9fbGlzdDsKMTQ0NzQ6 IAoxNDQ3NDogIHN0cnVjdCBiZGlfd3JpdGViYWNrICppX3diOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBpbnQgaV93Yl9mcm5fd2lubmVyOwoxNDQ3NDogIHUxNiBpX3diX2Zybl9hdmdfdGltZTsK MTQ0NzQ6ICB1MTYgaV93Yl9mcm5faGlzdG9yeTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0 X2hlYWQgaV9scnU7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBpX3NiX2xpc3Q7CjE0NDc0OiAg c3RydWN0IGxpc3RfaGVhZCBpX3diX2xpc3Q7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1 Y3QgaGxpc3RfaGVhZCBpX2RlbnRyeTsKMTQ0NzQ6ICAgc3RydWN0IGNhbGxiYWNrX2hlYWQgaV9y Y3U7CjE0NDc0OiAgfTsKMTQ0NzQ6ICBhdG9taWM2NF90IGlfdmVyc2lvbjsKMTQ0NzQ6ICBhdG9t aWM2NF90IGlfc2VxdWVuY2U7CjE0NDc0OiAgYXRvbWljX3QgaV9jb3VudDsKMTQ0NzQ6ICBhdG9t aWNfdCBpX2Rpb19jb3VudDsKMTQ0NzQ6ICBhdG9taWNfdCBpX3dyaXRlY291bnQ7CjE0NDc0OiAK MTQ0NzQ6ICBhdG9taWNfdCBpX3JlYWRjb3VudDsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIHsKMTQ0 NzQ6ICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CjE0NDc0OiAgIHZvaWQg KCpmcmVlX2lub2RlKShzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAgfTsKMTQ0NzQ6ICBzdHJ1Y3Qg ZmlsZV9sb2NrX2NvbnRleHQgKmlfZmxjdHg7CjE0NDc0OiAgc3RydWN0IGFkZHJlc3Nfc3BhY2Ug aV9kYXRhOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgaV9kZXZpY2VzOwoxNDQ3NDogIHVuaW9u IHsKMTQ0NzQ6ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqaV9waXBlOwoxNDQ3NDogICBzdHJ1 Y3QgYmxvY2tfZGV2aWNlICppX2JkZXY7CjE0NDc0OiAgIHN0cnVjdCBjZGV2ICppX2NkZXY7CjE0 NDc0OiAgIGNoYXIgKmlfbGluazsKMTQ0NzQ6ICAgdW5zaWduZWQgaV9kaXJfc2VxOwoxNDQ3NDog IH07CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBpX2dlbmVyYXRpb247CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIF9fdTMyIGlfZnNub3RpZnlfbWFzazsKMTQ0NzQ6ICBzdHJ1Y3QgZnNub3RpZnlfbWFy a19jb25uZWN0b3IgKmlfZnNub3RpZnlfbWFya3M7CjE0NDc0OiAjIDczOCAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiCjE0NDc0OiAgdm9pZCAqaV9wcml2YXRlOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9f KChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0aW1lc3BlYzY0 IHRpbWVzdGFtcF90cnVuY2F0ZShzdHJ1Y3QgdGltZXNwZWM2NCB0LCBzdHJ1Y3QgaW5vZGUgKmlu b2RlKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGlfYmxvY2tzaXplKGNvbnN0IHN0cnVj dCBpbm9kZSAqbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKDEgPDwgbm9kZS0+aV9ibGti aXRzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlub2RlX3VuaGFzaGVkKHN0cnVjdCBp bm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGhsaXN0X3VuaGFzaGVkKCZpbm9k ZS0+aV9oYXNoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9mYWtlX2hhc2goc3RydWN0IGlu b2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBobGlzdF9hZGRfZmFrZSgmaW5vZGUtPmlfaGFz aCk7CjE0NDc0OiB9CjE0NDc0OiAjIDc4MCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBl bnVtIGlub2RlX2lfbXV0ZXhfbG9ja19jbGFzcwoxNDQ3NDogewoxNDQ3NDogIElfTVVURVhfTk9S TUFMLAoxNDQ3NDogIElfTVVURVhfUEFSRU5ULAoxNDQ3NDogIElfTVVURVhfQ0hJTEQsCjE0NDc0 OiAgSV9NVVRFWF9YQVRUUiwKMTQ0NzQ6ICBJX01VVEVYX05PTkRJUjIsCjE0NDc0OiAgSV9NVVRF WF9QQVJFTlQyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9sb2NrKHN0cnVj dCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgZG93bl93cml0ZSgmaW5vZGUtPmlfcndz ZW0pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX3VubG9jayhzdHJ1Y3QgaW5v ZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDogIHVwX3dyaXRlKCZpbm9kZS0+aV9yd3NlbSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfbG9ja19zaGFyZWQoc3RydWN0IGlub2Rl ICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBkb3duX3JlYWQoJmlub2RlLT5pX3J3c2VtKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV91bmxvY2tfc2hhcmVkKHN0cnVjdCBpbm9k ZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgdXBfcmVhZCgmaW5vZGUtPmlfcndzZW0pOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaW5vZGVfdHJ5bG9jayhzdHJ1Y3QgaW5vZGUgKmlub2Rl KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkb3duX3dyaXRlX3RyeWxvY2soJmlub2RlLT5pX3J3 c2VtKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlub2RlX3RyeWxvY2tfc2hhcmVkKHN0 cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRvd25fcmVhZF90cnls b2NrKCZpbm9kZS0+aV9yd3NlbSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBpbm9kZV9p c19sb2NrZWQoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gcndz ZW1faXNfbG9ja2VkKCZpbm9kZS0+aV9yd3NlbSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaW5vZGVfbG9ja19uZXN0ZWQoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgc3ViY2xh c3MpCjE0NDc0OiB7CjE0NDc0OiAgZG93bl93cml0ZSgmaW5vZGUtPmlfcndzZW0pOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX2xvY2tfc2hhcmVkX25lc3RlZChzdHJ1Y3QgaW5v ZGUgKmlub2RlLCB1bnNpZ25lZCBzdWJjbGFzcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkb3duX3JlYWQo Jmlub2RlLT5pX3J3c2VtKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBsb2NrX3R3b19u b25kaXJlY3RvcmllcyhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGlub2RlKik7CjE0NDc0OiB2b2lk IHVubG9ja190d29fbm9uZGlyZWN0b3JpZXMoc3RydWN0IGlub2RlICosIHN0cnVjdCBpbm9kZSop OwoxNDQ3NDogIyA4NDggIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9mZl90IGlfc2l6 ZV9yZWFkKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAjIDg2NyAi Li9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiAgcmV0dXJuIGlub2RlLT5pX3NpemU7CjE0NDc0 OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgaV9zaXplX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBp X3NpemUpCjE0NDc0OiB7CjE0NDc0OiAjIDg4OSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0 OiAgaW5vZGUtPmlfc2l6ZSA9IGlfc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBpbWlub3IoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKCh1bnNpZ25lZCBpbnQpICgoaW5vZGUtPmlfcmRldikgJiAoKDFVIDw8IDIw KSAtIDEpKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGltYWpvcihjb25zdCBz dHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoKHVuc2lnbmVkIGlu dCkgKChpbm9kZS0+aV9yZGV2KSA+PiAyMCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRl cm4gc3RydWN0IGJsb2NrX2RldmljZSAqSV9CREVWKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZm93bl9zdHJ1Y3QgewoxNDQ3NDogIHJ3bG9ja190IGxvY2s7CjE0 NDc0OiAgc3RydWN0IHBpZCAqcGlkOwoxNDQ3NDogIGVudW0gcGlkX3R5cGUgcGlkX3R5cGU7CjE0 NDc0OiAga3VpZF90IHVpZCwgZXVpZDsKMTQ0NzQ6ICBpbnQgc2lnbnVtOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGVfcmFfc3RhdGUg ewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgc3RhcnQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNpemU7 CjE0NDc0OiAgdW5zaWduZWQgaW50IGFzeW5jX3NpemU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHVuc2lnbmVkIGludCByYV9wYWdlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbW1hcF9taXNzOwox NDQ3NDogIGxvZmZfdCBwcmV2X3BvczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCByYV9oYXNfaW5kZXgoc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJh LCB1bnNpZ25lZCBsb25nIGluZGV4KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoaW5kZXggPj0g cmEtPnN0YXJ0ICYmCjE0NDc0OiAgIGluZGV4IDwgcmEtPnN0YXJ0ICsgcmEtPnNpemUpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmlsZSB7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDog ICBzdHJ1Y3QgbGxpc3Rfbm9kZSBmdV9sbGlzdDsKMTQ0NzQ6ICAgc3RydWN0IGNhbGxiYWNrX2hl YWQgZnVfcmN1aGVhZDsKMTQ0NzQ6ICB9IGZfdTsKMTQ0NzQ6ICBzdHJ1Y3QgcGF0aCBmX3BhdGg7 CjE0NDc0OiAgc3RydWN0IGlub2RlICpmX2lub2RlOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgKmZfb3A7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHNwaW5sb2NrX3QgZl9sb2NrOwoxNDQ3NDogIGVudW0gcndfaGludCBmX3dyaXRl X2hpbnQ7CjE0NDc0OiAgYXRvbWljX2xvbmdfdCBmX2NvdW50OwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBmX2ZsYWdzOwoxNDQ3NDogIGZtb2RlX3QgZl9tb2RlOwoxNDQ3NDogIHN0cnVjdCBtdXRleCBm X3Bvc19sb2NrOwoxNDQ3NDogIGxvZmZfdCBmX3BvczsKMTQ0NzQ6ICBzdHJ1Y3QgZm93bl9zdHJ1 Y3QgZl9vd25lcjsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgY3JlZCAqZl9jcmVkOwoxNDQ3NDogIHN0 cnVjdCBmaWxlX3JhX3N0YXRlIGZfcmE7CjE0NDc0OiAKMTQ0NzQ6ICB1NjQgZl92ZXJzaW9uOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAqZl9zZWN1cml0eTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dm9pZCAqcHJpdmF0ZV9kYXRhOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVj dCBsaXN0X2hlYWQgZl9lcF9saW5rczsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGZfdGZpbGVf bGxpbms7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqZl9tYXBwaW5nOwox NDQ3NDogIGVycnNlcV90IGZfd2JfZXJyOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2ln bmF0ZWRfaW5pdF9fKSkKMTQ0NzQ6ICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg0KSkpOwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZmlsZV9oYW5kbGUgewoxNDQ3NDogIF9fdTMyIGhhbmRsZV9ieXRl czsKMTQ0NzQ6ICBpbnQgaGFuZGxlX3R5cGU7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFy IGZfaGFuZGxlWzBdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpbGUgKmdldF9m aWxlKHN0cnVjdCBmaWxlICpmKQoxNDQ3NDogewoxNDQ3NDogIGF0b21pY19sb25nX2luYygmZi0+ Zl9jb3VudCk7CjE0NDc0OiAgcmV0dXJuIGY7CjE0NDc0OiB9CjE0NDc0OiAjIDEwMjYgIi4vaW5j bHVkZS9saW51eC9mcy5oIgoxNDQ3NDogdHlwZWRlZiB2b2lkICpmbF9vd25lcl90OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZmlsZV9sb2NrOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmlsZV9sb2Nr X29wZXJhdGlvbnMgewoxNDQ3NDogIHZvaWQgKCpmbF9jb3B5X2xvY2spKHN0cnVjdCBmaWxlX2xv Y2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKMTQ0NzQ6ICB2b2lkICgqZmxfcmVsZWFzZV9wcml2 YXRlKShzdHJ1Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGxvY2tfbWFuYWdlcl9vcGVyYXRpb25zIHsKMTQ0NzQ6ICBmbF9vd25lcl90ICgqbG1fZ2V0X293 bmVyKShmbF9vd25lcl90KTsKMTQ0NzQ6ICB2b2lkICgqbG1fcHV0X293bmVyKShmbF9vd25lcl90 KTsKMTQ0NzQ6ICB2b2lkICgqbG1fbm90aWZ5KShzdHJ1Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDog IGludCAoKmxtX2dyYW50KShzdHJ1Y3QgZmlsZV9sb2NrICosIGludCk7CjE0NDc0OiAgYm9vbCAo KmxtX2JyZWFrKShzdHJ1Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDogIGludCAoKmxtX2NoYW5nZSko c3RydWN0IGZpbGVfbG9jayAqLCBpbnQsIHN0cnVjdCBsaXN0X2hlYWQgKik7CjE0NDc0OiAgdm9p ZCAoKmxtX3NldHVwKShzdHJ1Y3QgZmlsZV9sb2NrICosIHZvaWQgKiopOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGxvY2tfbWFuYWdlciB7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVh ZCBsaXN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBibG9j a19vcGVuczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBuZXQ7CjE0NDc0OiB2b2lk IGxvY2tzX3N0YXJ0X2dyYWNlKHN0cnVjdCBuZXQgKiwgc3RydWN0IGxvY2tfbWFuYWdlciAqKTsK MTQ0NzQ6IHZvaWQgbG9ja3NfZW5kX2dyYWNlKHN0cnVjdCBsb2NrX21hbmFnZXIgKik7CjE0NDc0 OiBib29sIGxvY2tzX2luX2dyYWNlKHN0cnVjdCBuZXQgKik7CjE0NDc0OiBib29sIG9wZW5zX2lu X2dyYWNlKHN0cnVjdCBuZXQgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvbmZzX2ZzX2kuaCIgMQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgbmxtX2xvY2tvd25lcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IG5mc19sb2NrX2luZm8gewoxNDQ3NDogIHUzMiBzdGF0ZTsKMTQ0NzQ6 ICBzdHJ1Y3QgbmxtX2xvY2tvd25lciAqb3duZXI7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBs aXN0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG5mczRfbG9ja19zdGF0ZTsKMTQ0 NzQ6IHN0cnVjdCBuZnM0X2xvY2tfaW5mbyB7CjE0NDc0OiAgc3RydWN0IG5mczRfbG9ja19zdGF0 ZSAqb3duZXI7CjE0NDc0OiB9OwoxNDQ3NDogIyAxMDYyICIuL2luY2x1ZGUvbGludXgvZnMuaCIg MgoxNDQ3NDogIyAxMDgwICIuL2luY2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IHN0cnVjdCBmaWxl X2xvY2sgewoxNDQ3NDogIHN0cnVjdCBmaWxlX2xvY2sgKmZsX2Jsb2NrZXI7CjE0NDc0OiAgc3Ry dWN0IGxpc3RfaGVhZCBmbF9saXN0OwoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIGZsX2xpbms7 CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9ja2VkX3JlcXVlc3RzOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGZsX2Jsb2NrZWRfbWVtYmVyOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBmbF9vd25lcl90IGZsX293bmVyOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBmbF9mbGFnczsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGZsX3R5cGU7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGZsX3BpZDsKMTQ0NzQ6ICBpbnQgZmxfbGlua19jcHU7CjE0NDc0OiAgd2FpdF9xdWV1 ZV9oZWFkX3QgZmxfd2FpdDsKMTQ0NzQ6ICBzdHJ1Y3QgZmlsZSAqZmxfZmlsZTsKMTQ0NzQ6ICBs b2ZmX3QgZmxfc3RhcnQ7CjE0NDc0OiAgbG9mZl90IGZsX2VuZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQg bG9uZyBmbF9icmVha190aW1lOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZmxfZG93bmdyYWRlX3Rp bWU7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZmlsZV9sb2NrX29wZXJhdGlvbnMgKmZs X29wczsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgbG9ja19tYW5hZ2VyX29wZXJhdGlvbnMgKmZsX2xt b3BzOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IG5mc19sb2NrX2luZm8gbmZzX2Zs OwoxNDQ3NDogICBzdHJ1Y3QgbmZzNF9sb2NrX2luZm8gbmZzNF9mbDsKMTQ0NzQ6ICAgc3RydWN0 IHsKMTQ0NzQ6ICAgIHN0cnVjdCBsaXN0X2hlYWQgbGluazsKMTQ0NzQ6ICAgIGludCBzdGF0ZTsK MTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBkZWJ1Z19pZDsKMTQ0NzQ6ICAgfSBhZnM7CjE0NDc0OiAg fSBmbF91OwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmaWxlX2xvY2tfY29udGV4dCB7CjE0NDc0OiAgc3BpbmxvY2tf dCBmbGNfbG9jazsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGZsY19mbG9jazsKMTQ0NzQ6ICBz dHJ1Y3QgbGlzdF9oZWFkIGZsY19wb3NpeDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGZsY19s ZWFzZTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDExMzIgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3 NDogZXh0ZXJuIHZvaWQgc2VuZF9zaWdpbyhzdHJ1Y3QgZm93bl9zdHJ1Y3QgKmZvd24sIGludCBm ZCwgaW50IGJhbmQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gaW50IGZjbnRsX2dldGxrKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgc3RydWN0IGZs b2NrICopOwoxNDQ3NDogZXh0ZXJuIGludCBmY250bF9zZXRsayh1bnNpZ25lZCBpbnQsIHN0cnVj dCBmaWxlICosIHVuc2lnbmVkIGludCwKMTQ0NzQ6ICAgIHN0cnVjdCBmbG9jayAqKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGludCBmY250bF9zZXRsZWFzZSh1bnNpZ25lZCBpbnQgZmQsIHN0cnVjdCBmaWxlICpm aWxwLCBsb25nIGFyZyk7CjE0NDc0OiBleHRlcm4gaW50IGZjbnRsX2dldGxlYXNlKHN0cnVjdCBm aWxlICpmaWxwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIGxvY2tzX2ZyZWVfbG9ja19j b250ZXh0KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3NDogdm9pZCBsb2Nrc19mcmVlX2xvY2so c3RydWN0IGZpbGVfbG9jayAqZmwpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbG9ja3NfaW5pdF9sb2Nr KHN0cnVjdCBmaWxlX2xvY2sgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGZpbGVfbG9jayAqIGxv Y2tzX2FsbG9jX2xvY2sodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBsb2Nrc19jb3B5X2xvY2so c3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDogZXh0ZXJuIHZv aWQgbG9ja3NfY29weV9jb25mbG9jayhzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xv Y2sgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfcG9zaXgoc3RydWN0IGZpbGUg KiwgZmxfb3duZXJfdCk7CjE0NDc0OiBleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfZmlsZShzdHJ1 Y3QgZmlsZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGxvY2tzX3JlbGVhc2VfcHJpdmF0ZShzdHJ1 Y3QgZmlsZV9sb2NrICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgcG9zaXhfdGVzdF9sb2NrKHN0cnVj dCBmaWxlICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CjE0NDc0OiBleHRlcm4gaW50IHBvc2l4X2xv Y2tfZmlsZShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xv Y2sgKik7CjE0NDc0OiBleHRlcm4gaW50IGxvY2tzX2RlbGV0ZV9ibG9jayhzdHJ1Y3QgZmlsZV9s b2NrICopOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfdGVzdF9sb2NrKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBmaWxlX2xvY2sgKik7CjE0NDc0OiBleHRlcm4gaW50IHZmc19sb2NrX2ZpbGUoc3RydWN0 IGZpbGUgKiwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xv Y2sgKik7CjE0NDc0OiBleHRlcm4gaW50IHZmc19jYW5jZWxfbG9jayhzdHJ1Y3QgZmlsZSAqZmls cCwgc3RydWN0IGZpbGVfbG9jayAqZmwpOwoxNDQ3NDogZXh0ZXJuIGludCBsb2Nrc19sb2NrX2lu b2RlX3dhaXQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGVfbG9jayAqZmwpOwoxNDQ3 NDogZXh0ZXJuIGludCBfX2JyZWFrX2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVk IGludCBmbGFncywgdW5zaWduZWQgaW50IHR5cGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgbGVhc2Vf Z2V0X210aW1lKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdGltZSk7CjE0NDc0 OiBleHRlcm4gaW50IGdlbmVyaWNfc2V0bGVhc2Uoc3RydWN0IGZpbGUgKiwgbG9uZywgc3RydWN0 IGZpbGVfbG9jayAqKiwgdm9pZCAqKnByaXYpOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfc2V0bGVh c2Uoc3RydWN0IGZpbGUgKiwgbG9uZywgc3RydWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CjE0 NDc0OiBleHRlcm4gaW50IGxlYXNlX21vZGlmeShzdHJ1Y3QgZmlsZV9sb2NrICosIGludCwgc3Ry dWN0IGxpc3RfaGVhZCAqKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG5vdGlmaWVyX2Jsb2NrOwox NDQ3NDogZXh0ZXJuIGludCBsZWFzZV9yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBsZWFzZV91bnJlZ2lzdGVyX25vdGlmaWVyKHN0 cnVjdCBub3RpZmllcl9ibG9jayAqKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGVzX3N0cnVj dDsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNob3dfZmRfbG9ja3Moc3RydWN0IHNlcV9maWxlICpmLAox NDQ3NDogICAgIHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlcyk7 CjE0NDc0OiAjIDEzMTcgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGlub2Rl ICpmaWxlX2lub2RlKGNvbnN0IHN0cnVjdCBmaWxlICpmKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biBmLT5mX2lub2RlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGVudHJ5ICpmaWxl X2RlbnRyeShjb25zdCBzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g ZF9yZWFsKGZpbGUtPmZfcGF0aC5kZW50cnksIGZpbGVfaW5vZGUoZmlsZSkpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgbG9ja3NfbG9ja19maWxlX3dhaXQoc3RydWN0IGZpbGUgKmZpbHAs IHN0cnVjdCBmaWxlX2xvY2sgKmZsKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBsb2Nrc19sb2Nr X2lub2RlX3dhaXQoZmlsZV9pbm9kZShmaWxwKSwgZmwpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCB7CjE0NDc0OiAgcndsb2NrX3QgZmFfbG9jazsKMTQ0NzQ6 ICBpbnQgbWFnaWM7CjE0NDc0OiAgaW50IGZhX2ZkOwoxNDQ3NDogIHN0cnVjdCBmYXN5bmNfc3Ry dWN0ICpmYV9uZXh0OwoxNDQ3NDogIHN0cnVjdCBmaWxlICpmYV9maWxlOwoxNDQ3NDogIHN0cnVj dCBjYWxsYmFja19oZWFkIGZhX3JjdTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZmFzeW5jX2hlbHBlcihpbnQsIHN0cnVjdCBmaWxl ICosIGludCwgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBm YXN5bmNfc3RydWN0ICpmYXN5bmNfaW5zZXJ0X2VudHJ5KGludCwgc3RydWN0IGZpbGUgKiwgc3Ry dWN0IGZhc3luY19zdHJ1Y3QgKiosIHN0cnVjdCBmYXN5bmNfc3RydWN0ICopOwoxNDQ3NDogZXh0 ZXJuIGludCBmYXN5bmNfcmVtb3ZlX2VudHJ5KHN0cnVjdCBmaWxlICosIHN0cnVjdCBmYXN5bmNf c3RydWN0ICoqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jX2Fs bG9jKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZmFzeW5jX2ZyZWUoc3RydWN0IGZhc3luY19z dHJ1Y3QgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga2lsbF9mYXN5bmMo c3RydWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHZvaWQgX19mX3NldG93bihzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHBpZCAqLCBlbnVtIHBp ZF90eXBlLCBpbnQgZm9yY2UpOwoxNDQ3NDogZXh0ZXJuIGludCBmX3NldG93bihzdHJ1Y3QgZmls ZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcsIGludCBmb3JjZSk7CjE0NDc0OiBleHRlcm4gdm9p ZCBmX2RlbG93bihzdHJ1Y3QgZmlsZSAqZmlscCk7CjE0NDc0OiBleHRlcm4gcGlkX3QgZl9nZXRv d24oc3RydWN0IGZpbGUgKmZpbHApOwoxNDQ3NDogZXh0ZXJuIGludCBzZW5kX3NpZ3VyZyhzdHJ1 Y3QgZm93bl9zdHJ1Y3QgKmZvd24pOwoxNDQ3NDogIyAxNDA4ICIuL2luY2x1ZGUvbGludXgvZnMu aCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIFNCX1VORlJPWkVOID0gMCwKMTQ0NzQ6ICBTQl9GUkVF WkVfV1JJVEUgPSAxLAoxNDQ3NDogIFNCX0ZSRUVaRV9QQUdFRkFVTFQgPSAyLAoxNDQ3NDogIFNC X0ZSRUVaRV9GUyA9IDMsCjE0NDc0OiAKMTQ0NzQ6ICBTQl9GUkVFWkVfQ09NUExFVEUgPSA0LAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzYl93cml0ZXJz IHsKMTQ0NzQ6ICBpbnQgZnJvemVuOwoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IHdhaXRfdW5m cm96ZW47CjE0NDc0OiAgc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgcndfc2VtWyhTQl9GUkVF WkVfQ09NUExFVEUgLSAxKV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3VwZXJf YmxvY2sgewoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgc19saXN0OwoxNDQ3NDogIGRldl90IHNf ZGV2OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgc19ibG9ja3NpemVfYml0czsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHNfYmxvY2tzaXplOwoxNDQ3NDogIGxvZmZfdCBzX21heGJ5dGVzOwoxNDQ3NDog IHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpzX3R5cGU7CjE0NDc0OiAgY29uc3Qgc3RydWN0IHN1 cGVyX29wZXJhdGlvbnMgKnNfb3A7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRxdW90X29wZXJhdGlv bnMgKmRxX29wOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBxdW90YWN0bF9vcHMgKnNfcWNvcDsKMTQ0 NzQ6ICBjb25zdCBzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnMgKnNfZXhwb3J0X29wOwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgc19mbGFnczsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNfaWZsYWdzOwox NDQ3NDogIHVuc2lnbmVkIGxvbmcgc19tYWdpYzsKMTQ0NzQ6ICBzdHJ1Y3QgZGVudHJ5ICpzX3Jv b3Q7CjE0NDc0OiAgc3RydWN0IHJ3X3NlbWFwaG9yZSBzX3Vtb3VudDsKMTQ0NzQ6ICBpbnQgc19j b3VudDsKMTQ0NzQ6ICBhdG9taWNfdCBzX2FjdGl2ZTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKnNf c2VjdXJpdHk7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgeGF0dHJfaGFuZGxlciAqKnNf eGF0dHI7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgaGxpc3RfYmxfaGVhZCBzX3Jvb3RzOwoxNDQ3NDogIHN0cnVj dCBsaXN0X2hlYWQgc19tb3VudHM7CjE0NDc0OiAgc3RydWN0IGJsb2NrX2RldmljZSAqc19iZGV2 OwoxNDQ3NDogIHN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpzX2JkaTsKMTQ0NzQ6ICBzdHJ1Y3Qg bXRkX2luZm8gKnNfbXRkOwoxNDQ3NDogIHN0cnVjdCBobGlzdF9ub2RlIHNfaW5zdGFuY2VzOwox NDQ3NDogIHVuc2lnbmVkIGludCBzX3F1b3RhX3R5cGVzOwoxNDQ3NDogIHN0cnVjdCBxdW90YV9p bmZvIHNfZHF1b3Q7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc2Jfd3JpdGVycyBzX3dyaXRlcnM7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dm9pZCAqc19mc19pbmZvOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1MzIgc190aW1lX2dyYW47 CjE0NDc0OiAKMTQ0NzQ6ICB0aW1lNjRfdCBzX3RpbWVfbWluOwoxNDQ3NDogIHRpbWU2NF90IHNf dGltZV9tYXg7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBzX2Zzbm90aWZ5X21hc2s7CjE0NDc0OiAg c3RydWN0IGZzbm90aWZ5X21hcmtfY29ubmVjdG9yICpzX2Zzbm90aWZ5X21hcmtzOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBjaGFyIHNfaWRbMzJdOwoxNDQ3NDogIHV1aWRfdCBzX3V1aWQ7CjE0 NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc19tYXhfbGlua3M7CjE0NDc0OiAgZm1vZGVfdCBz X21vZGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0 cnVjdCBtdXRleCBzX3Zmc19yZW5hbWVfbXV0ZXg7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IGNoYXIgKnNfc3VidHlwZTsKMTQ0NzQ6IAoxNDQ3 NDogIGNvbnN0IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAqc19kX29wOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IGNsZWFuY2FjaGVfcG9vbGlkOwoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IHNocmlua2VyIHNfc2hyaW5rOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBhdG9taWNfbG9uZ190IHNfcmVtb3ZlX2NvdW50OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBh dG9taWNfbG9uZ190IHNfZnNub3RpZnlfaW5vZGVfcmVmczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgaW50IHNfcmVhZG9ubHlfcmVtb3VudDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0 IHdvcmtxdWV1ZV9zdHJ1Y3QgKnNfZGlvX2RvbmVfd3E7CjE0NDc0OiAgc3RydWN0IGhsaXN0X2hl YWQgc19waW5zOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqc191c2VyX25zOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2xy dSBzX2RlbnRyeV9scnU7CjE0NDc0OiAgc3RydWN0IGxpc3RfbHJ1IHNfaW5vZGVfbHJ1OwoxNDQ3 NDogIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0NzQ6ICBzdHJ1Y3Qgd29ya19zdHJ1Y3Qg ZGVzdHJveV93b3JrOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IG11dGV4IHNfc3luY19sb2NrOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IHNfc3RhY2tfZGVwdGg7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5sb2NrX3Qgc19pbm9kZV9saXN0X2xvY2sgX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYpKSkpKTsKMTQ0NzQ6ICBzdHJ1Y3QgbGlz dF9oZWFkIHNfaW5vZGVzOwoxNDQ3NDogCjE0NDc0OiAgc3BpbmxvY2tfdCBzX2lub2RlX3dibGlz dF9sb2NrOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgc19pbm9kZXNfd2I7CjE0NDc0OiB9IF9f YXR0cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVpZF90IGlfdWlkX3JlYWQoY29uc3Qg c3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZnJvbV9rdWlkKGlu b2RlLT5pX3NiLT5zX3VzZXJfbnMsIGlub2RlLT5pX3VpZCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGdpZF90IGlfZ2lkX3JlYWQoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gZnJvbV9rZ2lkKGlub2RlLT5pX3NiLT5zX3VzZXJfbnMsIGlub2RlLT5p X2dpZCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaV91aWRfd3JpdGUoc3RydWN0IGlu b2RlICppbm9kZSwgdWlkX3QgdWlkKQoxNDQ3NDogewoxNDQ3NDogIGlub2RlLT5pX3VpZCA9IG1h a2Vfa3VpZChpbm9kZS0+aV9zYi0+c191c2VyX25zLCB1aWQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGlfZ2lkX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGdpZF90IGdpZCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBpbm9kZS0+aV9naWQgPSBtYWtlX2tnaWQoaW5vZGUtPmlfc2ItPnNfdXNl cl9ucywgZ2lkKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB0aW1lc3Bl YzY0IGN1cnJlbnRfdGltZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIF9fc2JfZW5kX3dyaXRlKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIGludCBsZXZlbCk7CjE0NDc0OiBpbnQgX19zYl9zdGFydF93cml0ZShz dHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgbGV2ZWwsIGJvb2wgd2FpdCk7CjE0NDc0OiAjIDE2 MDAgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzYl9lbmRfd3JpdGUoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYikKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3NiX2VuZF93cml0ZShzYiwgU0Jf RlJFRVpFX1dSSVRFKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTYxMiAiLi9pbmNsdWRlL2xpbnV4L2Zz LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHNiX2VuZF9wYWdlZmF1bHQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikK MTQ0NzQ6IHsKMTQ0NzQ6ICBfX3NiX2VuZF93cml0ZShzYiwgU0JfRlJFRVpFX1BBR0VGQVVMVCk7 CjE0NDc0OiB9CjE0NDc0OiAjIDE2MjQgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBzYl9lbmRfaW50d3JpdGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBfX3NiX2VuZF93cml0ZShzYiwgU0JfRlJFRVpFX0ZTKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTY0 OCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNiX3N0YXJ0X3dyaXRlKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IpCjE0NDc0OiB7CjE0NDc0OiAgX19zYl9zdGFydF93cml0ZShzYiwg U0JfRlJFRVpFX1dSSVRFLCB0cnVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHNiX3N0 YXJ0X3dyaXRlX3RyeWxvY2soc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gX19zYl9zdGFydF93cml0ZShzYiwgU0JfRlJFRVpFX1dSSVRFLCBmYWxzZSk7CjE0 NDc0OiB9CjE0NDc0OiAjIDE2NzcgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBz Yl9zdGFydF9wYWdlZmF1bHQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBfX3NiX3N0YXJ0X3dyaXRlKHNiLCBTQl9GUkVFWkVfUEFHRUZBVUxULCB0cnVlKTsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMTY5NSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNiX3N0 YXJ0X2ludHdyaXRlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCjE0NDc0OiB7CjE0NDc0OiAgX19z Yl9zdGFydF93cml0ZShzYiwgU0JfRlJFRVpFX0ZTLCB0cnVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IHNiX3N0YXJ0X2ludHdyaXRlX3RyeWxvY2soc3RydWN0IHN1cGVyX2Jsb2NrICpz YikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19zYl9zdGFydF93cml0ZShzYiwgU0JfRlJFRVpF X0ZTLCBmYWxzZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wg aW5vZGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfY3JlYXRlKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVtb2RlX3QsIGJvb2wpOwoxNDQ3NDogZXh0 ZXJuIGludCB2ZnNfbWtkaXIoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgdW1vZGVf dCk7CjE0NDc0OiBleHRlcm4gaW50IHZmc19ta25vZChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRl bnRyeSAqLCB1bW9kZV90LCBkZXZfdCk7CjE0NDc0OiBleHRlcm4gaW50IHZmc19zeW1saW5rKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CjE0NDc0OiBleHRl cm4gaW50IHZmc19saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBk ZW50cnkgKiwgc3RydWN0IGlub2RlICoqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdmZzX3JtZGlyKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfdW5s aW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKik7CjE0 NDc0OiBleHRlcm4gaW50IHZmc19yZW5hbWUoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkg Kiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICoqLCB1bnNp Z25lZCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfd2hpdGVvdXQoc3RydWN0IGlub2RlICos IHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICp2 ZnNfdG1wZmlsZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAg ICAgIGludCBvcGVuX2ZsYWcpOwoxNDQ3NDogCjE0NDc0OiBpbnQgdmZzX21rb2JqKHN0cnVjdCBk ZW50cnkgKiwgdW1vZGVfdCwKMTQ0NzQ6ICAgaW50ICgqZikoc3RydWN0IGRlbnRyeSAqLCB1bW9k ZV90LCB2b2lkICopLAoxNDQ3NDogICB2b2lkICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gbG9u ZyB2ZnNfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVk IGxvbmcgYXJnKTsKMTQ0NzQ6ICMgMTc0MCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBl eHRlcm4gdm9pZCBpbm9kZV9pbml0X293bmVyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHN0 cnVjdCBpbm9kZSAqZGlyLAoxNDQ3NDogICAgdW1vZGVfdCBtb2RlKTsKMTQ0NzQ6IGV4dGVybiBi b29sIG1heV9vcGVuX2Rldihjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvIHsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgZmlfZmxhZ3M7CjE0NDc0OiAgdW5zaWduZWQgaW50IGZpX2V4dGVudHNfbWFwcGVk OwoxNDQ3NDogIHVuc2lnbmVkIGludCBmaV9leHRlbnRzX21heDsKMTQ0NzQ6ICBzdHJ1Y3QgZmll bWFwX2V4dGVudCAqZmlfZXh0ZW50c19zdGFydDsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IGlu dCBmaWVtYXBfZmlsbF9uZXh0X2V4dGVudChzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICppbmZv LCB1NjQgbG9naWNhbCwKMTQ0NzQ6ICAgICAgICB1NjQgcGh5cywgdTY0IGxlbiwgdTMyIGZsYWdz KTsKMTQ0NzQ6IGludCBmaWVtYXBfY2hlY2tfZmxhZ3Moc3RydWN0IGZpZW1hcF9leHRlbnRfaW5m byAqZmllaW5mbywgdTMyIGZzX2ZsYWdzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRpcl9jb250ZXh0OwoxNDQ3 NDogdHlwZWRlZiBpbnQgKCpmaWxsZGlyX3QpKHN0cnVjdCBkaXJfY29udGV4dCAqLCBjb25zdCBj aGFyICosIGludCwgbG9mZl90LCB1NjQsCjE0NDc0OiAgICAgdW5zaWduZWQpOwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGlyX2NvbnRleHQgewoxNDQ3NDogIGZpbGxkaXJfdCBhY3RvcjsKMTQ0NzQ6 ICBsb2ZmX3QgcG9zOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJsb2NrX2Rldmlj ZV9vcGVyYXRpb25zOwoxNDQ3NDogIyAxODE5ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6 IHN0cnVjdCBpb3ZfaXRlcjsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB7 CjE0NDc0OiAgc3RydWN0IG1vZHVsZSAqb3duZXI7CjE0NDc0OiAgbG9mZl90ICgqbGxzZWVrKSAo c3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwoxNDQ3NDogIHNzaXplX3QgKCpyZWFkKSAoc3Ry dWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKMTQ0NzQ6ICBzc2l6ZV90ICgq d3JpdGUpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwox NDQ3NDogIHNzaXplX3QgKCpyZWFkX2l0ZXIpIChzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9p dGVyICopOwoxNDQ3NDogIHNzaXplX3QgKCp3cml0ZV9pdGVyKSAoc3RydWN0IGtpb2NiICosIHN0 cnVjdCBpb3ZfaXRlciAqKTsKMTQ0NzQ6ICBpbnQgKCppb3BvbGwpKHN0cnVjdCBraW9jYiAqa2lv Y2IsIGJvb2wgc3Bpbik7CjE0NDc0OiAgaW50ICgqaXRlcmF0ZSkgKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBkaXJfY29udGV4dCAqKTsKMTQ0NzQ6ICBpbnQgKCppdGVyYXRlX3NoYXJlZCkgKHN0cnVj dCBmaWxlICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKMTQ0NzQ6ICBfX3BvbGxfdCAoKnBvbGwp IChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3QgKik7CjE0NDc0OiAgbG9u ZyAoKnVubG9ja2VkX2lvY3RsKSAoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25l ZCBsb25nKTsKMTQ0NzQ6ICBsb25nICgqY29tcGF0X2lvY3RsKSAoc3RydWN0IGZpbGUgKiwgdW5z aWduZWQgaW50LCB1bnNpZ25lZCBsb25nKTsKMTQ0NzQ6ICBpbnQgKCptbWFwKSAoc3RydWN0IGZp bGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbW1h cF9zdXBwb3J0ZWRfZmxhZ3M7CjE0NDc0OiAgaW50ICgqb3BlbikgKHN0cnVjdCBpbm9kZSAqLCBz dHJ1Y3QgZmlsZSAqKTsKMTQ0NzQ6ICBpbnQgKCpmbHVzaCkgKHN0cnVjdCBmaWxlICosIGZsX293 bmVyX3QgaWQpOwoxNDQ3NDogIGludCAoKnJlbGVhc2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IGZpbGUgKik7CjE0NDc0OiAgaW50ICgqZnN5bmMpIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxv ZmZfdCwgaW50IGRhdGFzeW5jKTsKMTQ0NzQ6ICBpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBm aWxlICosIGludCk7CjE0NDc0OiAgaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3Ry dWN0IGZpbGVfbG9jayAqKTsKMTQ0NzQ6ICBzc2l6ZV90ICgqc2VuZHBhZ2UpIChzdHJ1Y3QgZmls ZSAqLCBzdHJ1Y3QgcGFnZSAqLCBpbnQsIHNpemVfdCwgbG9mZl90ICosIGludCk7CjE0NDc0OiAg dW5zaWduZWQgbG9uZyAoKmdldF91bm1hcHBlZF9hcmVhKShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25l ZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKMTQ0 NzQ6ICBpbnQgKCpjaGVja19mbGFncykoaW50KTsKMTQ0NzQ6ICBpbnQgKCpmbG9jaykgKHN0cnVj dCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKMTQ0NzQ6ICBzc2l6ZV90ICgqc3Bs aWNlX3dyaXRlKShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICosIHN0cnVjdCBmaWxlICosIGxvZmZf dCAqLCBzaXplX3QsIHVuc2lnbmVkIGludCk7CjE0NDc0OiAgc3NpemVfdCAoKnNwbGljZV9yZWFk KShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqLCBzaXpl X3QsIHVuc2lnbmVkIGludCk7CjE0NDc0OiAgaW50ICgqc2V0bGVhc2UpKHN0cnVjdCBmaWxlICos IGxvbmcsIHN0cnVjdCBmaWxlX2xvY2sgKiosIHZvaWQgKiopOwoxNDQ3NDogIGxvbmcgKCpmYWxs b2NhdGUpKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgbW9kZSwgbG9mZl90IG9mZnNldCwKMTQ0NzQ6 ICAgICAgbG9mZl90IGxlbik7CjE0NDc0OiAgdm9pZCAoKnNob3dfZmRpbmZvKShzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHN0cnVjdCBmaWxlICpmKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBzc2l6ZV90ICgqY29weV9maWxlX3JhbmdlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIHN0cnVj dCBmaWxlICosCjE0NDc0OiAgICBsb2ZmX3QsIHNpemVfdCwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6 ICBsb2ZmX3QgKCpyZW1hcF9maWxlX3JhbmdlKShzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90 IHBvc19pbiwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nf b3V0LAoxNDQ3NDogICAgICAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7 CjE0NDc0OiAgaW50ICgqZmFkdmlzZSkoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBsb2ZmX3QsIGlu dCk7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGlub2RlX29wZXJhdGlvbnMgewoxNDQ3NDogIHN0cnVjdCBkZW50cnkg KiAoKmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQgaW50 KTsKMTQ0NzQ6ICBjb25zdCBjaGFyICogKCpnZXRfbGluaykgKHN0cnVjdCBkZW50cnkgKiwgc3Ry dWN0IGlub2RlICosIHN0cnVjdCBkZWxheWVkX2NhbGwgKik7CjE0NDc0OiAgaW50ICgqcGVybWlz c2lvbikgKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwoxNDQ3NDogIHN0cnVjdCBwb3NpeF9hY2wgKiAo KmdldF9hY2wpKHN0cnVjdCBpbm9kZSAqLCBpbnQpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqcmVh ZGxpbmspIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKixpbnQpOwoxNDQ3NDogCjE0NDc0OiAgaW50 ICgqY3JlYXRlKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLCB1bW9kZV90LCBib29s KTsKMTQ0NzQ6ICBpbnQgKCpsaW5rKSAoc3RydWN0IGRlbnRyeSAqLHN0cnVjdCBpbm9kZSAqLHN0 cnVjdCBkZW50cnkgKik7CjE0NDc0OiAgaW50ICgqdW5saW5rKSAoc3RydWN0IGlub2RlICosc3Ry dWN0IGRlbnRyeSAqKTsKMTQ0NzQ6ICBpbnQgKCpzeW1saW5rKSAoc3RydWN0IGlub2RlICosc3Ry dWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIgKik7CjE0NDc0OiAgaW50ICgqbWtkaXIpIChzdHJ1Y3Qg aW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosdW1vZGVfdCk7CjE0NDc0OiAgaW50ICgqcm1kaXIpIChz dHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogIGludCAoKm1rbm9kKSAoc3Ry dWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLHVtb2RlX3QsZGV2X3QpOwoxNDQ3NDogIGludCAo KnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCjE0NDc0OiAgICBzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCB1bnNpZ25lZCBpbnQpOwoxNDQ3NDogIGludCAo KnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKMTQ0NzQ6ICBpbnQg KCpnZXRhdHRyKSAoY29uc3Qgc3RydWN0IHBhdGggKiwgc3RydWN0IGtzdGF0ICosIHUzMiwgdW5z aWduZWQgaW50KTsKMTQ0NzQ6ICBzc2l6ZV90ICgqbGlzdHhhdHRyKSAoc3RydWN0IGRlbnRyeSAq LCBjaGFyICosIHNpemVfdCk7CjE0NDc0OiAgaW50ICgqZmllbWFwKShzdHJ1Y3QgaW5vZGUgKiwg c3RydWN0IGZpZW1hcF9leHRlbnRfaW5mbyAqLCB1NjQgc3RhcnQsCjE0NDc0OiAgICAgICAgIHU2 NCBsZW4pOwoxNDQ3NDogIGludCAoKnVwZGF0ZV90aW1lKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IHRpbWVzcGVjNjQgKiwgaW50KTsKMTQ0NzQ6ICBpbnQgKCphdG9taWNfb3Blbikoc3RydWN0IGlu b2RlICosIHN0cnVjdCBkZW50cnkgKiwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBmaWxlICosIHVuc2ln bmVkIG9wZW5fZmxhZywKMTQ0NzQ6ICAgICAgIHVtb2RlX3QgY3JlYXRlX21vZGUpOwoxNDQ3NDog IGludCAoKnRtcGZpbGUpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCB1bW9kZV90 KTsKMTQ0NzQ6ICBpbnQgKCpzZXRfYWNsKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHBvc2l4X2Fj bCAqLCBpbnQpOwoxNDQ3NDogfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikp KSkpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzc2l6ZV90IGNhbGxfcmVhZF9pdGVyKHN0cnVjdCBmaWxlICpm aWxlLCBzdHJ1Y3Qga2lvY2IgKmtpbywKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBpb3ZfaXRlciAq aXRlcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmlsZS0+Zl9vcC0+cmVhZF9pdGVyKGtpbywg aXRlcik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHNzaXplX3QgY2FsbF93cml0ZV9pdGVyKHN0 cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga2lvY2IgKmtpbywKMTQ0NzQ6ICAgICAgICAgICBzdHJ1 Y3QgaW92X2l0ZXIgKml0ZXIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGZpbGUtPmZfb3AtPndy aXRlX2l0ZXIoa2lvLCBpdGVyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNhbGxfbW1h cChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGZpbGUtPmZfb3AtPm1tYXAoZmlsZSwgdm1hKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogc3NpemVfdCByd19jb3B5X2NoZWNrX3V2ZWN0b3IoaW50IHR5cGUsIGNvbnN0 IHN0cnVjdCBpb3ZlYyAqIHV2ZWN0b3IsCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBsb25nIG5y X3NlZ3MsIHVuc2lnbmVkIGxvbmcgZmFzdF9zZWdzLAoxNDQ3NDogICAgICAgICAgc3RydWN0IGlv dmVjICpmYXN0X3BvaW50ZXIsCjE0NDc0OiAgICAgICAgICBzdHJ1Y3QgaW92ZWMgKipyZXRfcG9p bnRlcik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IF9fdmZzX3JlYWQoc3RydWN0IGZp bGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IHZm c19yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CjE0NDc0OiBl eHRlcm4gc3NpemVfdCB2ZnNfd3JpdGUoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXpl X3QsIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IHZmc19yZWFkdihzdHJ1Y3QgZmls ZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZywgbG9mZl90 ICosIHJ3Zl90KTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IHZmc19jb3B5X2ZpbGVfcmFuZ2Uoc3Ry dWN0IGZpbGUgKiwgbG9mZl90ICwgc3RydWN0IGZpbGUgKiwKMTQ0NzQ6ICAgICAgICBsb2ZmX3Qs IHNpemVfdCwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNfY29w eV9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlX2luLCBsb2ZmX3QgcG9zX2luLAoxNDQ3NDog ICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAoxNDQ3NDog ICAgICAgICAgICBzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwoxNDQ3NDogZXh0ZXJu IGludCBnZW5lcmljX3JlbWFwX2ZpbGVfcmFuZ2VfcHJlcChzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwg bG9mZl90IHBvc19pbiwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBmaWxlICpmaWxlX291dCwgbG9mZl90 IHBvc19vdXQsCjE0NDc0OiAgICAgICBsb2ZmX3QgKmNvdW50LAoxNDQ3NDogICAgICAgdW5zaWdu ZWQgaW50IHJlbWFwX2ZsYWdzKTsKMTQ0NzQ6IGV4dGVybiBsb2ZmX3QgZG9fY2xvbmVfZmlsZV9y YW5nZShzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19pbiwKMTQ0NzQ6ICAgICAgIHN0 cnVjdCBmaWxlICpmaWxlX291dCwgbG9mZl90IHBvc19vdXQsCjE0NDc0OiAgICAgICBsb2ZmX3Qg bGVuLCB1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpOwoxNDQ3NDogZXh0ZXJuIGxvZmZfdCB2ZnNf Y2xvbmVfZmlsZV9yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19pbiwKMTQ0 NzQ6ICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAoxNDQ3NDog ICAgICAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7CjE0NDc0OiBleHRl cm4gaW50IHZmc19kZWR1cGVfZmlsZV9yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwKMTQ0NzQ6ICAg ICAgc3RydWN0IGZpbGVfZGVkdXBlX3JhbmdlICpzYW1lKTsKMTQ0NzQ6IGV4dGVybiBsb2ZmX3Qg dmZzX2RlZHVwZV9maWxlX3JhbmdlX29uZShzdHJ1Y3QgZmlsZSAqc3JjX2ZpbGUsIGxvZmZfdCBz cmNfcG9zLAoxNDQ3NDogICAgICBzdHJ1Y3QgZmlsZSAqZHN0X2ZpbGUsIGxvZmZfdCBkc3RfcG9z LAoxNDQ3NDogICAgICBsb2ZmX3QgbGVuLCB1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzdXBlcl9vcGVyYXRpb25zIHsKMTQ0NzQ6ICAgICBz dHJ1Y3QgaW5vZGUgKigqYWxsb2NfaW5vZGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3 NDogIHZvaWQgKCpkZXN0cm95X2lub2RlKShzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAgdm9pZCAo KmZyZWVfaW5vZGUpKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogICAgIHZvaWQgKCpk aXJ0eV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBpbnQgZmxhZ3MpOwoxNDQ3NDogIGludCAoKndy aXRlX2lub2RlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2Jj KTsKMTQ0NzQ6ICBpbnQgKCpkcm9wX2lub2RlKSAoc3RydWN0IGlub2RlICopOwoxNDQ3NDogIHZv aWQgKCpldmljdF9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6ICB2b2lkICgqcHV0X3N1 cGVyKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoxNDQ3NDogIGludCAoKnN5bmNfZnMpKHN0cnVj dCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KTsKMTQ0NzQ6ICBpbnQgKCpmcmVlemVfc3VwZXIp IChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CjE0NDc0OiAgaW50ICgqZnJlZXplX2ZzKSAoc3RydWN0 IHN1cGVyX2Jsb2NrICopOwoxNDQ3NDogIGludCAoKnRoYXdfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJf YmxvY2sgKik7CjE0NDc0OiAgaW50ICgqdW5mcmVlemVfZnMpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sg Kik7CjE0NDc0OiAgaW50ICgqc3RhdGZzKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRm cyAqKTsKMTQ0NzQ6ICBpbnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGlu dCAqLCBjaGFyICopOwoxNDQ3NDogIHZvaWQgKCp1bW91bnRfYmVnaW4pIChzdHJ1Y3Qgc3VwZXJf YmxvY2sgKik7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpzaG93X29wdGlvbnMpKHN0cnVjdCBzZXFf ZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogIGludCAoKnNob3dfZGV2bmFtZSkoc3Ry dWN0IHNlcV9maWxlICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiAgaW50ICgqc2hvd19wYXRo KShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6ICBpbnQgKCpzaG93 X3N0YXRzKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IAoxNDQ3 NDogIHNzaXplX3QgKCpxdW90YV9yZWFkKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50LCBjaGFy ICosIHNpemVfdCwgbG9mZl90KTsKMTQ0NzQ6ICBzc2l6ZV90ICgqcXVvdGFfd3JpdGUpKHN0cnVj dCBzdXBlcl9ibG9jayAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QpOwoxNDQ3 NDogIHN0cnVjdCBkcXVvdCAqKigqZ2V0X2RxdW90cykoc3RydWN0IGlub2RlICopOwoxNDQ3NDog CjE0NDc0OiAgaW50ICgqYmRldl90cnlfdG9fZnJlZV9wYWdlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sq LCBzdHJ1Y3QgcGFnZSosIGdmcF90KTsKMTQ0NzQ6ICBsb25nICgqbnJfY2FjaGVkX29iamVjdHMp KHN0cnVjdCBzdXBlcl9ibG9jayAqLAoxNDQ3NDogICAgICAgc3RydWN0IHNocmlua19jb250cm9s ICopOwoxNDQ3NDogIGxvbmcgKCpmcmVlX2NhY2hlZF9vYmplY3RzKShzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKiwKMTQ0NzQ6ICAgICAgICAgc3RydWN0IHNocmlua19jb250cm9sICopOwoxNDQ3NDogfTsK MTQ0NzQ6ICMgMjAxNyAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHNiX3Jkb25s eShjb25zdCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKSB7IHJldHVybiBzYi0+c19mbGFncyAmIDE7 IH0KMTQ0NzQ6ICMgMjA0NyAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIEhBU19V Tk1BUFBFRF9JRChzdHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAh dWlkX3ZhbGlkKGlub2RlLT5pX3VpZCkgfHwgIWdpZF92YWxpZChpbm9kZS0+aV9naWQpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIHJ3X2hpbnQgZmlsZV93cml0ZV9oaW50KHN0cnVjdCBm aWxlICpmaWxlKQoxNDQ3NDogewoxNDQ3NDogIGlmIChmaWxlLT5mX3dyaXRlX2hpbnQgIT0gV1JJ VEVfTElGRV9OT1RfU0VUKQoxNDQ3NDogICByZXR1cm4gZmlsZS0+Zl93cml0ZV9oaW50OwoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIGZpbGVfaW5vZGUoZmlsZSktPmlfd3JpdGVfaGludDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlvY2JfZmxhZ3Moc3RydWN0IGZpbGUgKmZpbGUpOwoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1MTYga2lfaGludF92YWxpZGF0ZShlbnVtIHJ3X2hpbnQgaGludCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICB0eXBlb2YoKChzdHJ1Y3Qga2lvY2IgKikwKS0+a2lfaGludCkgbWF4X2hpbnQg PSAtMTsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChoaW50IDw9IG1heF9oaW50KQoxNDQ3NDogICByZXR1 cm4gaGludDsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBp bml0X3N5bmNfa2lvY2Ioc3RydWN0IGtpb2NiICpraW9jYiwgc3RydWN0IGZpbGUgKmZpbHApCjE0 NDc0OiB7CjE0NDc0OiAgKmtpb2NiID0gKHN0cnVjdCBraW9jYikgewoxNDQ3NDogICAua2lfZmls cCA9IGZpbHAsCjE0NDc0OiAgIC5raV9mbGFncyA9IGlvY2JfZmxhZ3MoZmlscCksCjE0NDc0OiAg IC5raV9oaW50ID0ga2lfaGludF92YWxpZGF0ZShmaWxlX3dyaXRlX2hpbnQoZmlscCkpLAoxNDQ3 NDogICAua2lfaW9wcmlvID0gZ2V0X2N1cnJlbnRfaW9wcmlvKCksCjE0NDc0OiAgfTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBraW9jYl9jbG9uZShzdHJ1Y3Qga2lvY2IgKmtpb2NiLCBz dHJ1Y3Qga2lvY2IgKmtpb2NiX3NyYywKMTQ0NzQ6ICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmls cCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAqa2lvY2IgPSAoc3RydWN0IGtpb2NiKSB7CjE0NDc0OiAgIC5r aV9maWxwID0gZmlscCwKMTQ0NzQ6ICAgLmtpX2ZsYWdzID0ga2lvY2Jfc3JjLT5raV9mbGFncywK MTQ0NzQ6ICAgLmtpX2hpbnQgPSBraW9jYl9zcmMtPmtpX2hpbnQsCjE0NDc0OiAgIC5raV9pb3By aW8gPSBraW9jYl9zcmMtPmtpX2lvcHJpbywKMTQ0NzQ6ICAgLmtpX3BvcyA9IGtpb2NiX3NyYy0+ a2lfcG9zLAoxNDQ3NDogIH07CjE0NDc0OiB9CjE0NDc0OiAjIDIxODEgIi4vaW5jbHVkZS9saW51 eC9mcy5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgX19tYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9k ZSAqLCBpbnQpOwoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtYXJrX2lub2RlX2RpcnR5KHN0cnVjdCBpbm9kZSAqaW5v ZGUpCjE0NDc0OiB7CjE0NDc0OiAgX19tYXJrX2lub2RlX2RpcnR5KGlub2RlLCAoKCgxIDw8IDAp IHwgKDEgPDwgMSkpIHwgKDEgPDwgMikpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBt YXJrX2lub2RlX2RpcnR5X3N5bmMoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsICgxIDw8IDApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIHZvaWQgaW5jX25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3NDog ZXh0ZXJuIHZvaWQgZHJvcF9ubGluayhzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIGNsZWFyX25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgc2V0X25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBubGluayk7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfaW5jX2xpbmtfY291bnQoc3RydWN0IGlub2RlICppbm9k ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbmNfbmxpbmsoaW5vZGUpOwoxNDQ3NDogIG1hcmtfaW5vZGVf ZGlydHkoaW5vZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX2RlY19saW5r X2NvdW50KHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgZHJvcF9ubGluayhp bm9kZSk7CjE0NDc0OiAgbWFya19pbm9kZV9kaXJ0eShpbm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IGVudW0gZmlsZV90aW1lX2ZsYWdzIHsKMTQ0NzQ6ICBTX0FUSU1FID0gMSwKMTQ0NzQ6 ICBTX01USU1FID0gMiwKMTQ0NzQ6ICBTX0NUSU1FID0gNCwKMTQ0NzQ6ICBTX1ZFUlNJT04gPSA4 LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wgYXRpbWVfbmVlZHNfdXBkYXRl KGNvbnN0IHN0cnVjdCBwYXRoICosIHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lk IHRvdWNoX2F0aW1lKGNvbnN0IHN0cnVjdCBwYXRoICopOwoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmaWxlX2FjY2Vz c2VkKHN0cnVjdCBmaWxlICpmaWxlKQoxNDQ3NDogewoxNDQ3NDogIGlmICghKGZpbGUtPmZfZmxh Z3MgJiAwMTAwMDAwMCkpCjE0NDc0OiAgIHRvdWNoX2F0aW1lKCZmaWxlLT5mX3BhdGgpOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGZpbGVfbW9kaWZpZWQoc3RydWN0IGZpbGUg KmZpbGUpOwoxNDQ3NDogCjE0NDc0OiBpbnQgc3luY19pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyk7CjE0NDc0OiBpbnQgc3luY19pbm9kZV9t ZXRhZGF0YShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgd2FpdCk7CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDog IGludCBmc19mbGFnczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBpbnQgKCppbml0X2ZzX2NvbnRleHQpKHN0cnVjdCBmc19jb250ZXh0ICop OwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBmc19wYXJhbWV0ZXJfc3BlYyAqcGFyYW1ldGVyczsKMTQ0 NzQ6ICBzdHJ1Y3QgZGVudHJ5ICooKm1vdW50KSAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiwg aW50LAoxNDQ3NDogICAgICAgICAgY29uc3QgY2hhciAqLCB2b2lkICopOwoxNDQ3NDogIHZvaWQg KCpraWxsX3NiKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOwoxNDQ3NDogIHN0cnVjdCBtb2R1bGUg Km93bmVyOwoxNDQ3NDogIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICogbmV4dDsKMTQ0NzQ6ICBz dHJ1Y3QgaGxpc3RfaGVhZCBmc19zdXBlcnM7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbG9ja19j bGFzc19rZXkgc19sb2NrX2tleTsKMTQ0NzQ6ICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgc191bW91 bnRfa2V5OwoxNDQ3NDogIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBzX3Zmc19yZW5hbWVfa2V5Owox NDQ3NDogIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBzX3dyaXRlcnNfa2V5WyhTQl9GUkVFWkVfQ09N UExFVEUgLSAxKV07CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgaV9sb2Nr X2tleTsKMTQ0NzQ6ICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgaV9tdXRleF9rZXk7CjE0NDc0OiAg c3RydWN0IGxvY2tfY2xhc3Nfa2V5IGlfbXV0ZXhfZGlyX2tleTsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGVudHJ5ICptb3Vu dF9iZGV2KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAoxNDQ3NDogIGludCBmbGFn cywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsCjE0NDc0OiAgaW50ICgqZmlsbF9z dXBlcikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiwgaW50KSk7CjE0NDc0OiAjIDIyNzEg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKm1vdW50 X3NpbmdsZShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKMTQ0NzQ6ICBpbnQgZmxh Z3MsIHZvaWQgKmRhdGEsCjE0NDc0OiAgaW50ICgqZmlsbF9zdXBlcikoc3RydWN0IHN1cGVyX2Js b2NrICosIHZvaWQgKiwgaW50KSk7CjE0NDc0OiBleHRlcm4gc3RydWN0IGRlbnRyeSAqbW91bnRf bm9kZXYoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCjE0NDc0OiAgaW50IGZsYWdz LCB2b2lkICpkYXRhLAoxNDQ3NDogIGludCAoKmZpbGxfc3VwZXIpKHN0cnVjdCBzdXBlcl9ibG9j ayAqLCB2b2lkICosIGludCkpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZW50cnkgKm1vdW50X3N1 YnRyZWUoc3RydWN0IHZmc21vdW50ICptbnQsIGNvbnN0IGNoYXIgKnBhdGgpOwoxNDQ3NDogdm9p ZCBnZW5lcmljX3NodXRkb3duX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDog CjE0NDc0OiB2b2lkIGtpbGxfYmxvY2tfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lk IGtpbGxfYW5vbl9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IHZvaWQga2ls bF9saXR0ZXJfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiB2b2lkIGRlYWN0 aXZhdGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiB2b2lkIGRlYWN0aXZh dGVfbG9ja2VkX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDogaW50IHNldF9h bm9uX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqcywgdm9pZCAqZGF0YSk7CjE0NDc0OiBpbnQg c2V0X2Fub25fc3VwZXJfZmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1Y3QgZnNfY29udGV4 dCAqZmMpOwoxNDQ3NDogaW50IGdldF9hbm9uX2JkZXYoZGV2X3QgKik7CjE0NDc0OiB2b2lkIGZy ZWVfYW5vbl9iZGV2KGRldl90KTsKMTQ0NzQ6IHN0cnVjdCBzdXBlcl9ibG9jayAqc2dldF9mYyhz dHJ1Y3QgZnNfY29udGV4dCAqZmMsCjE0NDc0OiAgICAgICAgaW50ICgqdGVzdCkoc3RydWN0IHN1 cGVyX2Jsb2NrICosIHN0cnVjdCBmc19jb250ZXh0ICopLAoxNDQ3NDogICAgICAgIGludCAoKnNl dCkoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBmc19jb250ZXh0ICopKTsKMTQ0NzQ6IHN0 cnVjdCBzdXBlcl9ibG9jayAqc2dldChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqdHlwZSwKMTQ0 NzQ6ICAgIGludCAoKnRlc3QpKHN0cnVjdCBzdXBlcl9ibG9jayAqLHZvaWQgKiksCjE0NDc0OiAg ICBpbnQgKCpzZXQpKHN0cnVjdCBzdXBlcl9ibG9jayAqLHZvaWQgKiksCjE0NDc0OiAgICBpbnQg ZmxhZ3MsIHZvaWQgKmRhdGEpOwoxNDQ3NDogIyAyMzIwICIuL2luY2x1ZGUvbGludXgvZnMuaCIK MTQ0NzQ6IGV4dGVybiBpbnQgcmVnaXN0ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1f dHlwZSAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxlc3lzdGVtKHN0cnVjdCBm aWxlX3N5c3RlbV90eXBlICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqa2Vybl9t b3VudChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGtlcm5f dW5tb3VudChzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CjE0NDc0OiBleHRlcm4gaW50IG1heV91bW91 bnRfdHJlZShzdHJ1Y3QgdmZzbW91bnQgKik7CjE0NDc0OiBleHRlcm4gaW50IG1heV91bW91bnQo c3RydWN0IHZmc21vdW50ICopOwoxNDQ3NDogZXh0ZXJuIGxvbmcgZG9fbW91bnQoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICosCjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBs b25nLCB2b2lkICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB2ZnNtb3VudCAqY29sbGVjdF9tb3Vu dHMoY29uc3Qgc3RydWN0IHBhdGggKik7CjE0NDc0OiBleHRlcm4gdm9pZCBkcm9wX2NvbGxlY3Rl ZF9tb3VudHMoc3RydWN0IHZmc21vdW50ICopOwoxNDQ3NDogZXh0ZXJuIGludCBpdGVyYXRlX21v dW50cyhpbnQgKCopKHN0cnVjdCB2ZnNtb3VudCAqLCB2b2lkICopLCB2b2lkICosCjE0NDc0OiAg ICAgIHN0cnVjdCB2ZnNtb3VudCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdmZzX3N0YXRmcyhjb25z dCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdXNl cl9zdGF0ZnMoY29uc3QgY2hhciAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKMTQ0NzQ6IGV4dGVybiBp bnQgZmRfc3RhdGZzKGludCwgc3RydWN0IGtzdGF0ZnMgKik7CjE0NDc0OiBleHRlcm4gaW50IGZy ZWV6ZV9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnN1cGVyKTsKMTQ0NzQ6IGV4dGVybiBpbnQg dGhhd19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnN1cGVyKTsKMTQ0NzQ6IGV4dGVybiBib29s IG91cl9tbnQoc3RydWN0IHZmc21vdW50ICptbnQpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRl X18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCjE0NDc0OiBpbnQgc3VwZXJfc2V0dXBfYmRp X25hbWUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogZXh0 ZXJuIGludCBzdXBlcl9zZXR1cF9iZGkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBpbnQgY3VycmVudF91bWFzayh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHZvaWQgaWhvbGQoc3RydWN0IGlub2RlICogaW5vZGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQg aXB1dChzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiBleHRlcm4gaW50IGdlbmVyaWNfdXBkYXRlX3Rp bWUoc3RydWN0IGlub2RlICosIHN0cnVjdCB0aW1lc3BlYzY0ICosIGludCk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICpmc19rb2JqOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9sb2Nr ZWQoc3RydWN0IGZpbGUgKik7CjE0NDc0OiBleHRlcm4gaW50IGxvY2tzX21hbmRhdG9yeV9hcmVh KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgdW5zaWduZWQg Y2hhcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgX19tYW5kYXRvcnlfbG9jayhzdHJ1Y3QgaW5vZGUgKmlubykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKGluby0+aV9tb2RlICYgKDAwMDIwMDAgfCAwMDAxMCkpID09IDAwMDIwMDA7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgbWFuZGF0b3J5X2xvY2soc3RydWN0IGlub2RlICppbm8pCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuICgoaW5vKS0+aV9zYi0+c19mbGFncyAmICg2NCkpICYmIF9fbWFuZGF0b3J5 X2xvY2soaW5vKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxvY2tzX3ZlcmlmeV9sb2Nr ZWQoc3RydWN0IGZpbGUgKmZpbGUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKG1hbmRhdG9yeV9sb2Nr KGZpbGVfaW5vZGUoZmlsZSkpKQoxNDQ3NDogICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2xvY2tl ZChmaWxlKTsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxv Y2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLAoxNDQ3NDogICAgICAgICBz dHJ1Y3QgZmlsZSAqZiwKMTQ0NzQ6ICAgICAgICAgbG9mZl90IHNpemUpCjE0NDc0OiB7CjE0NDc0 OiAgaWYgKCFpbm9kZS0+aV9mbGN0eCB8fCAhbWFuZGF0b3J5X2xvY2soaW5vZGUpKQoxNDQ3NDog ICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChzaXplIDwgaW5vZGUtPmlfc2l6ZSkgewox NDQ3NDogICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2FyZWEoaW5vZGUsIGYsIHNpemUsIGlub2Rl LT5pX3NpemUgLSAxLAoxNDQ3NDogICAgIDEpOwoxNDQ3NDogIH0gZWxzZSB7CjE0NDc0OiAgIHJl dHVybiBsb2Nrc19tYW5kYXRvcnlfYXJlYShpbm9kZSwgZiwgaW5vZGUtPmlfc2l6ZSwgc2l6ZSAt IDEsCjE0NDc0OiAgICAgMSk7CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogIyAyNDM4ICIuL2lu Y2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBicmVha19sZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlLCB1bnNpZ25lZCBpbnQgbW9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBhc20gdm9sYXRpbGUoImxvY2s7IGFkZGwg JDAsLTQoJSVyc3ApIiA6OjogIm1lbW9yeSIsICJjYyIpOwoxNDQ3NDogIGlmIChpbm9kZS0+aV9m bGN0eCAmJiAhbGlzdF9lbXB0eV9jYXJlZnVsKCZpbm9kZS0+aV9mbGN0eC0+ZmxjX2xlYXNlKSkK MTQ0NzQ6ICAgcmV0dXJuIF9fYnJlYWtfbGVhc2UoaW5vZGUsIG1vZGUsIDMyKTsKMTQ0NzQ6ICBy ZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2RlbGVnKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBtb2RlKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGFzbSB2b2xhdGlsZSgibG9j azsgYWRkbCAkMCwtNCglJXJzcCkiIDo6OiAibWVtb3J5IiwgImNjIik7CjE0NDc0OiAgaWYgKGlu b2RlLT5pX2ZsY3R4ICYmICFsaXN0X2VtcHR5X2NhcmVmdWwoJmlub2RlLT5pX2ZsY3R4LT5mbGNf bGVhc2UpKQoxNDQ3NDogICByZXR1cm4gX19icmVha19sZWFzZShpbm9kZSwgbW9kZSwgNCk7CjE0 NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0cnlfYnJlYWtfZGVs ZWcoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGlub2RlICoqZGVsZWdhdGVkX2lub2RlKQox NDQ3NDogewoxNDQ3NDogIGludCByZXQ7CjE0NDc0OiAKMTQ0NzQ6ICByZXQgPSBicmVha19kZWxl Zyhpbm9kZSwgMDAwMDAwMDF8MDAwMDQwMDApOwoxNDQ3NDogIGlmIChyZXQgPT0gLTExICYmIGRl bGVnYXRlZF9pbm9kZSkgewoxNDQ3NDogICAqZGVsZWdhdGVkX2lub2RlID0gaW5vZGU7CjE0NDc0 OiAgIGlob2xkKGlub2RlKTsKMTQ0NzQ6ICB9CjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2RlbGVnX3dhaXQoc3RydWN0IGlub2RlICoqZGVsZWdh dGVkX2lub2RlKQoxNDQ3NDogewoxNDQ3NDogIGludCByZXQ7CjE0NDc0OiAKMTQ0NzQ6ICByZXQg PSBicmVha19kZWxlZygqZGVsZWdhdGVkX2lub2RlLCAwMDAwMDAwMSk7CjE0NDc0OiAgaXB1dCgq ZGVsZWdhdGVkX2lub2RlKTsKMTQ0NzQ6ICAqZGVsZWdhdGVkX2lub2RlID0gKCh2b2lkICopMCk7 CjE0NDc0OiAgcmV0dXJuIHJldDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2xh eW91dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIHdhaXQpCjE0NDc0OiB7CjE0NDc0OiAgYXNt IHZvbGF0aWxlKCJsb2NrOyBhZGRsICQwLC00KCUlcnNwKSIgOjo6ICJtZW1vcnkiLCAiY2MiKTsK MTQ0NzQ6ICBpZiAoaW5vZGUtPmlfZmxjdHggJiYgIWxpc3RfZW1wdHlfY2FyZWZ1bCgmaW5vZGUt PmlfZmxjdHgtPmZsY19sZWFzZSkpCjE0NDc0OiAgIHJldHVybiBfX2JyZWFrX2xlYXNlKGlub2Rl LAoxNDQ3NDogICAgIHdhaXQgPyAwMDAwMDAwMSA6IDAwMDAwMDAxIHwgMDAwMDQwMDAsCjE0NDc0 OiAgICAgMjA0OCk7CjE0NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAjIDI1MjggIi4v aW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RydWN0IGF1ZGl0X25hbWVzOwoxNDQ3NDogc3Ry dWN0IGZpbGVuYW1lIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDogIGNvbnN0IGNo YXIgKnVwdHI7CjE0NDc0OiAgaW50IHJlZmNudDsKMTQ0NzQ6ICBzdHJ1Y3QgYXVkaXRfbmFtZXMg KmFuYW1lOwoxNDQ3NDogIGNvbnN0IGNoYXIgaW5hbWVbXTsKMTQ0NzQ6IH07CjE0NDc0OiBfU3Rh dGljX2Fzc2VydChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGZpbGVuYW1lLCBpbmFtZSkgJSBz aXplb2YobG9uZykgPT0gMCwgIm9mZnNldG9mKHN0cnVjdCBmaWxlbmFtZSwgaW5hbWUpICUgc2l6 ZW9mKGxvbmcpID09IDAiKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGxvbmcgdmZzX3RydW5jYXRl KGNvbnN0IHN0cnVjdCBwYXRoICosIGxvZmZfdCk7CjE0NDc0OiBleHRlcm4gaW50IGRvX3RydW5j YXRlKHN0cnVjdCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgdGltZV9hdHRy cywKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxwKTsKMTQ0NzQ6IGV4dGVybiBpbnQg dmZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQs CjE0NDc0OiAgICBsb2ZmX3QgbGVuKTsKMTQ0NzQ6IGV4dGVybiBsb25nIGRvX3N5c19vcGVuKGlu dCBkZmQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsCjE0NDc0OiAgICB1bW9kZV90 IG1vZGUpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxlX29wZW5fbmFtZShzdHJ1Y3Qg ZmlsZW5hbWUgKiwgaW50LCB1bW9kZV90KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmlsZSAqZmls cF9vcGVuKGNvbnN0IGNoYXIgKiwgaW50LCB1bW9kZV90KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg ZmlsZSAqZmlsZV9vcGVuX3Jvb3Qoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiwK MTQ0NzQ6ICAgICAgICBjb25zdCBjaGFyICosIGludCwgdW1vZGVfdCk7CjE0NDc0OiBleHRlcm4g c3RydWN0IGZpbGUgKiBkZW50cnlfb3Blbihjb25zdCBzdHJ1Y3QgcGF0aCAqLCBpbnQsIGNvbnN0 IHN0cnVjdCBjcmVkICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBmaWxlICogb3Blbl93aXRoX2Zh a2VfcGF0aChjb25zdCBzdHJ1Y3QgcGF0aCAqLCBpbnQsCjE0NDc0OiAgICAgICBzdHJ1Y3QgaW5v ZGUqLCBjb25zdCBzdHJ1Y3QgY3JlZCAqKTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBmaWxlICpmaWxlX2Nsb25l X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRlbnRyeV9v cGVuKCZmaWxlLT5mX3BhdGgsIGZpbGUtPmZfZmxhZ3MsIGZpbGUtPmZfY3JlZCk7CjE0NDc0OiB9 CjE0NDc0OiBleHRlcm4gaW50IGZpbHBfY2xvc2Uoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBp ZCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmlsZW5hbWUgKmdldG5hbWVfZmxhZ3Mo Y29uc3QgY2hhciAqLCBpbnQsIGludCAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmlsZW5hbWUg KmdldG5hbWUoY29uc3QgY2hhciAqKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZmlsZW5hbWUgKmdl dG5hbWVfa2VybmVsKGNvbnN0IGNoYXIgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBwdXRuYW1lKHN0 cnVjdCBmaWxlbmFtZSAqbmFtZSk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZmluaXNoX29w ZW4oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKMTQ0NzQ6ICAgIGlu dCAoKm9wZW4pKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKSk7CjE0NDc0OiBleHRlcm4g aW50IGZpbmlzaF9ub19vcGVuKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9f c2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHZmc19j YWNoZXNfaW5pdF9lYXJseSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHZm c19jYWNoZXNfaW5pdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBrbWVtX2Nh Y2hlICpuYW1lc19jYWNoZXA7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIGludCByZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50LCBjb25zdCBj aGFyICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQgaW50 LCBjb25zdCBjaGFyICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYmRldl91bmhhc2hfaW5vZGUoZGV2 X3QgZGV2KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGdldChkZXZfdCk7 CjE0NDc0OiBleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRncmFiKHN0cnVjdCBibG9ja19k ZXZpY2UgKmJkZXYpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYmRfc2V0X3NpemUoc3RydWN0IGJsb2Nr X2RldmljZSAqLCBsb2ZmX3Qgc2l6ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBiZF9mb3JnZXQoc3Ry dWN0IGlub2RlICppbm9kZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBiZHB1dChzdHJ1Y3QgYmxvY2tf ZGV2aWNlICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9iZGV2KHN0cnVjdCBibG9j a19kZXZpY2UgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBpdGVyYXRlX2JkZXZzKHZvaWQgKCopKHN0 cnVjdCBibG9ja19kZXZpY2UgKiwgdm9pZCAqKSwgdm9pZCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQg c3luY19ibG9ja2RldihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTsKMTQ0NzQ6IGV4dGVybiB2 b2lkIGtpbGxfYmRldihzdHJ1Y3QgYmxvY2tfZGV2aWNlICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVj dCBzdXBlcl9ibG9jayAqZnJlZXplX2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqKTsKMTQ0NzQ6 IGV4dGVybiB2b2lkIGVtZXJnZW5jeV90aGF3X2FsbCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lk IGVtZXJnZW5jeV90aGF3X2JkZXYoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiBleHRl cm4gaW50IHRoYXdfYmRldihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZnN5bmNfYmRldihzdHJ1Y3QgYmxvY2tfZGV2 aWNlICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpibG9ja2Rl dl9zdXBlcmJsb2NrOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHNiX2lzX2Jsa2Rldl9zYihzdHJ1Y3Qg c3VwZXJfYmxvY2sgKnNiKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBzYiA9PSBibG9ja2Rldl9z dXBlcmJsb2NrOwoxNDQ3NDogfQoxNDQ3NDogIyAyNjMxICIuL2luY2x1ZGUvbGludXgvZnMuaCIK MTQ0NzQ6IGV4dGVybiBpbnQgc3luY19maWxlc3lzdGVtKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsK MTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9ibGtfZm9wczsK MTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRlZl9jaHJfZm9wczsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBpb2N0bF9ieV9iZGV2KHN0cnVjdCBibG9ja19kZXZp Y2UgKiwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogZXh0ZXJuIGludCBibGtkZXZf aW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqLCBmbW9kZV90LCB1bnNpZ25lZCwgdW5zaWduZWQg bG9uZyk7CjE0NDc0OiBleHRlcm4gbG9uZyBjb21wYXRfYmxrZGV2X2lvY3RsKHN0cnVjdCBmaWxl ICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYmxrZGV2X2dl dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUsIHZvaWQgKmhvbGRlcik7 CjE0NDc0OiBleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmxrZGV2X2dldF9ieV9wYXRoKGNv bnN0IGNoYXIgKnBhdGgsIGZtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAgICAgIHZvaWQgKmhv bGRlcik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmxrZGV2X2dldF9ieV9k ZXYoZGV2X3QgZGV2LCBmbW9kZV90IG1vZGUsCjE0NDc0OiAgICAgICAgICAgIHZvaWQgKmhvbGRl cik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRfc3RhcnRfY2xhaW1pbmco c3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKMTQ0NzQ6ICAgICAgICAgICAgdm9pZCAqaG9sZGVy KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGJkX2ZpbmlzaF9jbGFpbWluZyhzdHJ1Y3QgYmxvY2tfZGV2 aWNlICpiZGV2LAoxNDQ3NDogICAgICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKndob2xlLCB2 b2lkICpob2xkZXIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYmRfYWJvcnRfY2xhaW1pbmcoc3RydWN0 IGJsb2NrX2RldmljZSAqYmRldiwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2Ug Kndob2xlLCB2b2lkICpob2xkZXIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYmxrZGV2X3B1dChzdHJ1 Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBpbnQgYmRfbGlua19kaXNrX2hvbGRlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpi ZGV2LCBzdHJ1Y3QgZ2VuZGlzayAqZGlzayk7CjE0NDc0OiBleHRlcm4gdm9pZCBiZF91bmxpbmtf ZGlza19ob2xkZXIoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKMTQ0NzQ6ICAgICAgIHN0cnVj dCBnZW5kaXNrICpkaXNrKTsKMTQ0NzQ6ICMgMjY3NiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0 NDc0OiBleHRlcm4gaW50IGFsbG9jX2NocmRldl9yZWdpb24oZGV2X3QgKiwgdW5zaWduZWQsIHVu c2lnbmVkLCBjb25zdCBjaGFyICopOwoxNDQ3NDogZXh0ZXJuIGludCByZWdpc3Rlcl9jaHJkZXZf cmVnaW9uKGRldl90LCB1bnNpZ25lZCwgY29uc3QgY2hhciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQg X19yZWdpc3Rlcl9jaHJkZXYodW5zaWduZWQgaW50IG1ham9yLCB1bnNpZ25lZCBpbnQgYmFzZW1p bm9yLAoxNDQ3NDogICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQsIGNvbnN0IGNoYXIgKm5hbWUs CjE0NDc0OiAgICAgICAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgX191bnJlZ2lzdGVyX2NocmRldih1bnNpZ25lZCBpbnQgbWFqb3IsIHVu c2lnbmVkIGludCBiYXNlbWlub3IsCjE0NDc0OiAgICAgdW5zaWduZWQgaW50IGNvdW50LCBjb25z dCBjaGFyICpuYW1lKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHVucmVnaXN0ZXJfY2hyZGV2X3JlZ2lv bihkZXZfdCwgdW5zaWduZWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgY2hyZGV2X3Nob3coc3RydWN0 IHNlcV9maWxlICosb2ZmX3QpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVnaXN0ZXJfY2hyZGV2KHVu c2lnbmVkIGludCBtYWpvciwgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fcmVn aXN0ZXJfY2hyZGV2KG1ham9yLCAwLCAyNTYsIG5hbWUsIGZvcHMpOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHVucmVnaXN0ZXJfY2hyZGV2KHVuc2lnbmVkIGludCBtYWpvciwgY29uc3Qg Y2hhciAqbmFtZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX3VucmVnaXN0ZXJfY2hyZGV2KG1ham9yLCAw LCAyNTYsIG5hbWUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY29uc3QgY2hhciAqX19iZGV2bmFt ZShkZXZfdCwgY2hhciAqYnVmZmVyKTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyICpiZGV2bmFt ZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBjaGFyICpidWZmZXIpOwoxNDQ3NDogZXh0ZXJu IHN0cnVjdCBibG9ja19kZXZpY2UgKmxvb2t1cF9iZGV2KGNvbnN0IGNoYXIgKik7CjE0NDc0OiBl eHRlcm4gdm9pZCBibGtkZXZfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKixvZmZfdCk7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgaW5pdF9z cGVjaWFsX2lub2RlKHN0cnVjdCBpbm9kZSAqLCB1bW9kZV90LCBkZXZfdCk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgbWFrZV9iYWRfaW5vZGUoc3RydWN0IGlub2RlICopOwox NDQ3NDogZXh0ZXJuIGJvb2wgaXNfYmFkX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHJldmFsaWRhdGVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAq KTsKMTQ0NzQ6IGV4dGVybiBpbnQgY2hlY2tfZGlza19jaGFuZ2Uoc3RydWN0IGJsb2NrX2Rldmlj ZSAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19pbnZhbGlkYXRlX2RldmljZShzdHJ1Y3QgYmxvY2tf ZGV2aWNlICosIGJvb2wpOwoxNDQ3NDogZXh0ZXJuIGludCBpbnZhbGlkYXRlX3BhcnRpdGlvbihz dHJ1Y3QgZ2VuZGlzayAqLCBpbnQpOwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBsb25nIGludmFs aWRhdGVfbWFwcGluZ19wYWdlcyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKMTQ0NzQ6 ICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGludmFsaWRhdGVfcmVtb3RlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0 NDc0OiB7CjE0NDc0OiAgaWYgKCgoKGlub2RlLT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMDAw MDApIHx8ICgoKGlub2RlLT5pX21vZGUpICYgMDAxNzAwMDApID09IDAwNDAwMDApIHx8CjE0NDc0 OiAgICAgICgoKGlub2RlLT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMjAwMDApKQoxNDQ3NDog ICBpbnZhbGlkYXRlX21hcHBpbmdfcGFnZXMoaW5vZGUtPmlfbWFwcGluZywgMCwgLTEpOwoxNDQ3 NDogfQoxNDQ3NDogZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzMihzdHJ1Y3QgYWRk cmVzc19zcGFjZSAqbWFwcGluZyk7CjE0NDc0OiBleHRlcm4gaW50IGludmFsaWRhdGVfaW5vZGVf cGFnZXMyX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDogICAgICAg dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwoxNDQ3NDogZXh0ZXJuIGlu dCB3cml0ZV9pbm9kZV9ub3coc3RydWN0IGlub2RlICosIGludCk7CjE0NDc0OiBleHRlcm4gaW50 IGZpbGVtYXBfZmRhdGF3cml0ZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKMTQ0NzQ6IGV4dGVy biBpbnQgZmlsZW1hcF9mbHVzaChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqKTsKMTQ0NzQ6IGV4dGVy biBpbnQgZmlsZW1hcF9mZGF0YXdhaXRfa2VlcF9lcnJvcnMoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug Km1hcHBpbmcpOwoxNDQ3NDogZXh0ZXJuIGludCBmaWxlbWFwX2ZkYXRhd2FpdF9yYW5nZShzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3QgbHN0YXJ0LAoxNDQ3NDogICAgICAgIGxvZmZfdCBs ZW5kKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZmlsZW1hcF9mZGF0YXdhaXRfcmFuZ2Vfa2VlcF9lcnJv cnMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCjE0NDc0OiAgIGxvZmZfdCBzdGFydF9i eXRlLCBsb2ZmX3QgZW5kX2J5dGUpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZmlsZW1hcF9mZGF0YXdh aXQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IGZpbGVtYXBfZmRhdGF3YWl0X3JhbmdlKG1hcHBpbmcsIDAsICgobG9uZyBsb25nKSh+MFVMTCA+ PiAxKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBmaWxlbWFwX3Jhbmdl X2hhc19wYWdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvZmZfdCBsc3RhcnQsCjE0NDc0OiAg ICAgICBsb2ZmX3QgbGVuZCk7CjE0NDc0OiBleHRlcm4gaW50IGZpbGVtYXBfd3JpdGVfYW5kX3dh aXRfcmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCjE0NDc0OiAgICAgICAgICAg ICBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3QgbGVuZCk7CjE0NDc0OiBleHRlcm4gaW50IF9fZmlsZW1h cF9mZGF0YXdyaXRlX3JhbmdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDog ICAgIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwgaW50IHN5bmNfbW9kZSk7CjE0NDc0OiBleHRl cm4gaW50IGZpbGVtYXBfZmRhdGF3cml0ZV9yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZywKMTQ0NzQ6ICAgICBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQpOwoxNDQ3NDogZXh0ZXJu IGludCBmaWxlbWFwX2NoZWNrX2Vycm9ycyhzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7 CjE0NDc0OiBleHRlcm4gdm9pZCBfX2ZpbGVtYXBfc2V0X3diX2VycihzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqbWFwcGluZywgaW50IGVycik7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBmaWxlbWFwX3dyaXRl X2FuZF93YWl0KHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKG1hcHBpbmcsIDAsICgobG9uZyBs b25nKSh+MFVMTCA+PiAxKSkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBmaWxlX2ZkYXRhd2FpdF9yYW5n ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IGxzdGFydCwKMTQ0NzQ6ICAgICAgIGxvZmZfdCBs ZW5kKTsKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1 bHRfXykpIGZpbGVfY2hlY2tfYW5kX2FkdmFuY2Vfd2JfZXJyKHN0cnVjdCBmaWxlICpmaWxlKTsK MTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGZpbGVfd3JpdGVfYW5kX3dhaXRfcmFuZ2Uoc3RydWN0IGZpbGUgKmZpbGUsCjE0NDc0OiAgICAg ICBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZmlsZV93cml0 ZV9hbmRfd2FpdChzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZmls ZV93cml0ZV9hbmRfd2FpdF9yYW5nZShmaWxlLCAwLCAoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkp KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjc5MSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGZpbGVtYXBfc2V0X3diX2VycihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgaW50 IGVycikKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGVy ciksIDApKQoxNDQ3NDogICBfX2ZpbGVtYXBfc2V0X3diX2VycihtYXBwaW5nLCBlcnIpOwoxNDQ3 NDogfQoxNDQ3NDogIyAyODA4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBmaWxl bWFwX2NoZWNrX3diX2VycihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKMTQ0NzQ6ICAg ICAgZXJyc2VxX3Qgc2luY2UpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGVycnNlcV9jaGVjaygm bWFwcGluZy0+d2JfZXJyLCBzaW5jZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDI4MjEgIi4vaW5jbHVk ZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgZXJyc2VxX3QgZmlsZW1hcF9zYW1wbGVfd2JfZXJyKHN0cnVj dCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBlcnJzZXFf c2FtcGxlKCZtYXBwaW5nLT53Yl9lcnIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZmls ZW1hcF9ucl90aHBzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiAwOwoxNDQ3NDogCjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgZmlsZW1hcF9ucl90aHBzX2luYyhzdHJ1Y3QgYWRkcmVzc19zcGFj ZSAqbWFwcGluZykKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAoeyBp bnQgX19yZXRfd2Fybl9vbiA9ICEhKDEpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93 YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0 ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIy Olx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJc dCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29y ZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50 cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImlu Y2x1ZGUvbGludXgvZnMuaCIpLCAiaSIgKDI4NDApLCAiaSIgKCgxIDw8IDApfCgoMSA8PCAxKSB8 ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAo MCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVh Y2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJp IiAoMzApKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5f b24pLCAwKTsgfSk7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmaWxlbWFw X25yX3RocHNfZGVjKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICh7IGludCBfX3JldF93YXJuX29uID0gISEoMSk7 IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFz bSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNo c2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJi IiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6Omxp bmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYisl YzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9mcy5oIiksICJpIiAo Mjg0OSksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVv ZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6 XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAt IC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzMSkpOyB9KTsgfSB3aGlsZSAoMCk7 IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6IAoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHZmc19mc3luY19yYW5nZShzdHJ1Y3QgZmls ZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLAoxNDQ3NDogICAgICAgaW50IGRhdGFz eW5jKTsKMTQ0NzQ6IGV4dGVybiBpbnQgdmZzX2ZzeW5jKHN0cnVjdCBmaWxlICpmaWxlLCBpbnQg ZGF0YXN5bmMpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHN5bmNfZmlsZV9yYW5nZShzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IG5ieXRlcywKMTQ0NzQ6ICAgICB1 bnNpZ25lZCBpbnQgZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc3NpemVfdCBnZW5lcmljX3dyaXRlX3N5bmMoc3RydWN0IGtpb2Ni ICppb2NiLCBzc2l6ZV90IGNvdW50KQoxNDQ3NDogewoxNDQ3NDogIGlmIChpb2NiLT5raV9mbGFn cyAmICgxIDw8IDQpKSB7CjE0NDc0OiAgIGludCByZXQgPSB2ZnNfZnN5bmNfcmFuZ2UoaW9jYi0+ a2lfZmlscCwKMTQ0NzQ6ICAgICBpb2NiLT5raV9wb3MgLSBjb3VudCwgaW9jYi0+a2lfcG9zIC0g MSwKMTQ0NzQ6ICAgICAoaW9jYi0+a2lfZmxhZ3MgJiAoMSA8PCA1KSkgPyAwIDogMSk7CjE0NDc0 OiAgIGlmIChyZXQpCjE0NDc0OiAgICByZXR1cm4gcmV0OwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBjb3VudDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZW1l cmdlbmN5X3N5bmModm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBlbWVyZ2VuY3lfcmVtb3VudCh2 b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGJtYXAoc3RydWN0IGlub2Rl ICppbm9kZSwgc2VjdG9yX3QgKmJsb2NrKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBub3RpZnlfY2hhbmdl KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICosIHN0cnVjdCBpbm9kZSAqKik7CjE0NDc0 OiBleHRlcm4gaW50IGlub2RlX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICosIGludCk7CjE0NDc0 OiBleHRlcm4gaW50IGdlbmVyaWNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKMTQ0 NzQ6IGV4dGVybiBpbnQgX19jaGVja19zdGlja3koc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBp bm9kZSAqaW5vZGUpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGV4ZWN1dGVfb2soc3RydWN0IGlub2Rl ICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKGlub2RlLT5pX21vZGUgJiAoMDAxMDB8 MDAwMTB8MDAwMDEpKSB8fCAoKChpbm9kZS0+aV9tb2RlKSAmIDAwMTcwMDAwKSA9PSAwMDQwMDAw KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmaWxlX3N0YXJ0X3dyaXRlKHN0cnVjdCBm aWxlICpmaWxlKQoxNDQ3NDogewoxNDQ3NDogIGlmICghKCgoZmlsZV9pbm9kZShmaWxlKS0+aV9t b2RlKSAmIDAwMTcwMDAwKSA9PSAwMTAwMDAwKSkKMTQ0NzQ6ICAgcmV0dXJuOwoxNDQ3NDogIF9f c2Jfc3RhcnRfd3JpdGUoZmlsZV9pbm9kZShmaWxlKS0+aV9zYiwgU0JfRlJFRVpFX1dSSVRFLCB0 cnVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBmaWxlX3N0YXJ0X3dyaXRlX3RyeWxv Y2soc3RydWN0IGZpbGUgKmZpbGUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKCEoKChmaWxlX2lub2Rl KGZpbGUpLT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMDAwMDApKQoxNDQ3NDogICByZXR1cm4g dHJ1ZTsKMTQ0NzQ6ICByZXR1cm4gX19zYl9zdGFydF93cml0ZShmaWxlX2lub2RlKGZpbGUpLT5p X3NiLCBTQl9GUkVFWkVfV1JJVEUsIGZhbHNlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBmaWxlX2VuZF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo ISgoKGZpbGVfaW5vZGUoZmlsZSktPmlfbW9kZSkgJiAwMDE3MDAwMCkgPT0gMDEwMDAwMCkpCjE0 NDc0OiAgIHJldHVybjsKMTQ0NzQ6ICBfX3NiX2VuZF93cml0ZShmaWxlX2lub2RlKGZpbGUpLT5p X3NiLCBTQl9GUkVFWkVfV1JJVEUpOwoxNDQ3NDogfQoxNDQ3NDogIyAyOTM3ICIuL2luY2x1ZGUv bGludXgvZnMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludCBnZXRfd3JpdGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqaW5v ZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19pbmNfdW5sZXNzX25lZ2F0aXZlKCZp bm9kZS0+aV93cml0ZWNvdW50KSA/IDAgOiAtMjY7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZGVueV93 cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGlu b2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlsZSk7CjE0NDc0OiAgcmV0dXJuIGF0b21pY19kZWNf dW5sZXNzX3Bvc2l0aXZlKCZpbm9kZS0+aV93cml0ZWNvdW50KSA/IDAgOiAtMjY7CjE0NDc0OiB9 CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHB1dF93cml0ZV9hY2Nlc3Moc3RydWN0IGlub2RlICogaW5vZGUpCjE0NDc0 OiB7CjE0NDc0OiAgYXRvbWljX2RlYygmaW5vZGUtPmlfd3JpdGVjb3VudCk7CjE0NDc0OiB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFsbG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsK MTQ0NzQ6ICBpZiAoZmlsZSkKMTQ0NzQ6ICAgYXRvbWljX2luYygmZmlsZV9pbm9kZShmaWxlKS0+ aV93cml0ZWNvdW50KTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaW5vZGVfaXNfb3Blbl9mb3Jfd3Jp dGUoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXRv bWljX3JlYWQoJmlub2RlLT5pX3dyaXRlY291bnQpID4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGlfcmVhZGNvdW50X2RlYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3 NDogewoxNDQ3NDogIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIWF0b21pY19yZWFkKCZp bm9kZS0+aV9yZWFkY291bnQpKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUo IjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUs XCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1 Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6Zmls ZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIg Ilx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIg OiA6ICJpIiAoImluY2x1ZGUvbGludXgvZnMuaCIpLCAiaSIgKDI5NjMpLCAiaSIgKDApLCAiaSIg KHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20gdm9s YXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5cdCIg Ii5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMzIpKTsgfSk7 IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgwKTsg fSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGF0b21pY19kZWMoJmlub2RlLT5pX3Jl YWRjb3VudCk7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfcmVhZGNvdW50X2luYyhzdHJ1Y3QgaW5v ZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDogIGF0b21pY19pbmMoJmlub2RlLT5pX3JlYWRjb3Vu dCk7CjE0NDc0OiB9CjE0NDc0OiAjIDI5ODAgIi4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDog ZXh0ZXJuIGludCBkb19waXBlX2ZsYWdzKGludCAqLCBpbnQpOwoxNDQ3NDogIyAyOTk2ICIuL2lu Y2x1ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IGVudW0ga2VybmVsX3JlYWRfZmlsZV9pZCB7CjE0NDc0 OiAgUkVBRElOR19VTktOT1dOLCBSRUFESU5HX0ZJUk1XQVJFLCBSRUFESU5HX0ZJUk1XQVJFX1BS RUFMTE9DX0JVRkZFUiwgUkVBRElOR19NT0RVTEUsIFJFQURJTkdfS0VYRUNfSU1BR0UsIFJFQURJ TkdfS0VYRUNfSU5JVFJBTUZTLCBSRUFESU5HX1BPTElDWSwgUkVBRElOR19YNTA5X0NFUlRJRklD QVRFLCBSRUFESU5HX01BWF9JRCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBjb25z dCBjaGFyICogY29uc3Qga2VybmVsX3JlYWRfZmlsZV9zdHJbXSA9IHsKMTQ0NzQ6ICAidW5rbm93 biIsICJmaXJtd2FyZSIsICJmaXJtd2FyZSIsICJrZXJuZWwtbW9kdWxlIiwgImtleGVjLWltYWdl IiwgImtleGVjLWluaXRyYW1mcyIsICJzZWN1cml0eS1wb2xpY3kiLCAieDUwOS1jZXJ0aWZpY2F0 ZSIsICIiLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29uc3QgY2hhciAqa2VybmVsX3JlYWRf ZmlsZV9pZF9zdHIoZW51bSBrZXJuZWxfcmVhZF9maWxlX2lkIGlkKQoxNDQ3NDogewoxNDQ3NDog IGlmICgodW5zaWduZWQpaWQgPj0gUkVBRElOR19NQVhfSUQpCjE0NDc0OiAgIHJldHVybiBrZXJu ZWxfcmVhZF9maWxlX3N0cltSRUFESU5HX1VOS05PV05dOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJu IGtlcm5lbF9yZWFkX2ZpbGVfc3RyW2lkXTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGludCBrZXJuZWxfcmVhZF9maWxlKHN0cnVjdCBmaWxlICosIHZvaWQgKiosIGxvZmZfdCAqLCBs b2ZmX3QsCjE0NDc0OiAgICAgICAgZW51bSBrZXJuZWxfcmVhZF9maWxlX2lkKTsKMTQ0NzQ6IGV4 dGVybiBpbnQga2VybmVsX3JlYWRfZmlsZV9mcm9tX3BhdGgoY29uc3QgY2hhciAqLCB2b2lkICoq LCBsb2ZmX3QgKiwgbG9mZl90LAoxNDQ3NDogICAgICAgICAgIGVudW0ga2VybmVsX3JlYWRfZmls ZV9pZCk7CjE0NDc0OiBleHRlcm4gaW50IGtlcm5lbF9yZWFkX2ZpbGVfZnJvbV9mZChpbnQsIHZv aWQgKiosIGxvZmZfdCAqLCBsb2ZmX3QsCjE0NDc0OiAgICAgICAgIGVudW0ga2VybmVsX3JlYWRf ZmlsZV9pZCk7CjE0NDc0OiBleHRlcm4gc3NpemVfdCBrZXJuZWxfcmVhZChzdHJ1Y3QgZmlsZSAq LCB2b2lkICosIHNpemVfdCwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIHNzaXplX3Qga2VybmVs X3dyaXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CjE0 NDc0OiBleHRlcm4gc3NpemVfdCBfX2tlcm5lbF93cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCB2 b2lkICosIHNpemVfdCwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBmaWxlICogb3Bl bl9leGVjKGNvbnN0IGNoYXIgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGJvb2wg aXNfc3ViZGlyKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKMTQ0NzQ6IGV4dGVy biBib29sIHBhdGhfaXNfdW5kZXIoY29uc3Qgc3RydWN0IHBhdGggKiwgY29uc3Qgc3RydWN0IHBh dGggKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjaGFyICpmaWxlX3BhdGgoc3RydWN0IGZpbGUg KiwgY2hhciAqLCBpbnQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gbG9mZl90IGRlZmF1bHRfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zm c2V0LCBpbnQgd2hlbmNlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGxvZmZfdCB2ZnNfbGxzZWVr KHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCBpbm9kZV9pbml0X2Fsd2F5cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwg c3RydWN0IGlub2RlICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaW5vZGVfaW5pdF9vbmNlKHN0cnVj dCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGFkZHJlc3Nfc3BhY2VfaW5pdF9vbmNlKHN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaW5vZGUg KiBpZ3JhYihzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiBleHRlcm4gaW5vX3QgaXVuaXF1ZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKiwgaW5vX3QpOwoxNDQ3NDogZXh0ZXJuIGludCBpbm9kZV9uZWVkc19z eW5jKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoxNDQ3NDogZXh0ZXJuIGludCBnZW5lcmljX2RlbGV0 ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZW5lcmljX2Ryb3BfaW5v ZGUoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gIWlub2RlLT5p X25saW5rIHx8IGlub2RlX3VuaGFzaGVkKGlub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCBpbm9kZSAqaWxvb2t1cDVfbm93YWl0KHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsCjE0NDc0OiAgIHVuc2lnbmVkIGxvbmcgaGFzaHZhbCwgaW50ICgqdGVzdCkoc3RydWN0IGlu b2RlICosIHZvaWQgKiksCjE0NDc0OiAgIHZvaWQgKmRhdGEpOwoxNDQ3NDogZXh0ZXJuIHN0cnVj dCBpbm9kZSAqaWxvb2t1cDUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBo YXNodmFsLAoxNDQ3NDogICBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwgdm9p ZCAqZGF0YSk7CjE0NDc0OiBleHRlcm4gc3RydWN0IGlub2RlICppbG9va3VwKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0 cnVjdCBpbm9kZSAqaW5vZGVfaW5zZXJ0NShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBs b25nIGhhc2h2YWwsCjE0NDc0OiAgIGludCAoKnRlc3QpKHN0cnVjdCBpbm9kZSAqLCB2b2lkICop LAoxNDQ3NDogICBpbnQgKCpzZXQpKHN0cnVjdCBpbm9kZSAqLCB2b2lkICopLAoxNDQ3NDogICB2 b2lkICpkYXRhKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaW5vZGUgKiBpZ2V0NV9sb2NrZWQoc3Ry dWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGxvbmcsIGludCAoKnRlc3QpKHN0cnVjdCBpbm9k ZSAqLCB2b2lkICopLCBpbnQgKCpzZXQpKHN0cnVjdCBpbm9kZSAqLCB2b2lkICopLCB2b2lkICop OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBpbm9kZSAqIGlnZXRfbG9ja2VkKHN0cnVjdCBzdXBlcl9i bG9jayAqLCB1bnNpZ25lZCBsb25nKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaW5vZGUgKmZpbmRf aW5vZGVfbm93YWl0KHN0cnVjdCBzdXBlcl9ibG9jayAqLAoxNDQ3NDogICAgICAgICAgICB1bnNp Z25lZCBsb25nLAoxNDQ3NDogICAgICAgICAgICBpbnQgKCptYXRjaCkoc3RydWN0IGlub2RlICos CjE0NDc0OiAgICAgICAgICAgdW5zaWduZWQgbG9uZywgdm9pZCAqKSwKMTQ0NzQ6ICAgICAgICAg ICAgdm9pZCAqZGF0YSk7CjE0NDc0OiBleHRlcm4gaW50IGluc2VydF9pbm9kZV9sb2NrZWQ0KHN0 cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25nLCBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwg dm9pZCAqKSwgdm9pZCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgaW5zZXJ0X2lub2RlX2xvY2tlZChz dHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxvY2tk ZXBfYW5ub3RhdGVfaW5vZGVfbXV0ZXhfa2V5KHN0cnVjdCBpbm9kZSAqaW5vZGUpIHsgfTsKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgdW5sb2NrX25ld19pbm9kZShzdHJ1Y3QgaW5vZGUgKik7 CjE0NDc0OiBleHRlcm4gdm9pZCBkaXNjYXJkX25ld19pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CjE0 NDc0OiBleHRlcm4gdW5zaWduZWQgaW50IGdldF9uZXh0X2lubyh2b2lkKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIGV2aWN0X2lub2RlcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHZvaWQgX19pZ2V0KHN0cnVjdCBpbm9kZSAqIGlub2RlKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIGlnZXRfZmFpbGVkKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNs ZWFyX2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIF9fZGVzdHJveV9p bm9kZShzdHJ1Y3QgaW5vZGUgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGlub2RlICpuZXdfaW5v ZGVfcHNldWRvKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBp bm9kZSAqbmV3X2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgZnJlZV9pbm9kZV9ub25yY3Uoc3RydWN0IGlub2RlICppbm9kZSk7CjE0NDc0OiBleHRlcm4g aW50IHNob3VsZF9yZW1vdmVfc3VpZChzdHJ1Y3QgZGVudHJ5ICopOwoxNDQ3NDogZXh0ZXJuIGlu dCBmaWxlX3JlbW92ZV9wcml2cyhzdHJ1Y3QgZmlsZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHZvaWQgX19pbnNlcnRfaW5vZGVfaGFzaChzdHJ1Y3QgaW5vZGUgKiwgdW5zaWduZWQgbG9uZyBo YXNodmFsKTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgaW5zZXJ0X2lub2RlX2hhc2goc3RydWN0IGlub2RlICppbm9k ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBfX2luc2VydF9pbm9kZV9oYXNoKGlub2RlLCBpbm9kZS0+aV9p bm8pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBfX3JlbW92ZV9pbm9kZV9o YXNoKHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0 IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWlub2RlX3VuaGFzaGVkKGlub2Rl KSAmJiAhaGxpc3RfZmFrZSgmaW5vZGUtPmlfaGFzaCkpCjE0NDc0OiAgIF9fcmVtb3ZlX2lub2Rl X2hhc2goaW5vZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBpbm9kZV9z Yl9saXN0X2FkZChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gaW50IGJkZXZfcmVhZF9vbmx5KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBpbnQgc2V0X2Jsb2Nrc2l6ZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGlu dCk7CjE0NDc0OiBleHRlcm4gaW50IHNiX3NldF9ibG9ja3NpemUoc3RydWN0IHN1cGVyX2Jsb2Nr ICosIGludCk7CjE0NDc0OiBleHRlcm4gaW50IHNiX21pbl9ibG9ja3NpemUoc3RydWN0IHN1cGVy X2Jsb2NrICosIGludCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2VuZXJpY19maWxlX21t YXAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICopOwoxNDQ3NDogZXh0ZXJu IGludCBnZW5lcmljX2ZpbGVfcmVhZG9ubHlfbW1hcChzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKik7CjE0NDc0OiBleHRlcm4gc3NpemVfdCBnZW5lcmljX3dyaXRlX2NoZWNr cyhzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9pdGVyICopOwoxNDQ3NDogZXh0ZXJuIGludCBn ZW5lcmljX3JlbWFwX2NoZWNrcyhzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19pbiwK MTQ0NzQ6ICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAoxNDQ3NDog ICAgIGxvZmZfdCAqY291bnQsIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7CjE0NDc0OiBleHRl cm4gaW50IGdlbmVyaWNfZmlsZV9yd19jaGVja3Moc3RydWN0IGZpbGUgKmZpbGVfaW4sIHN0cnVj dCBmaWxlICpmaWxlX291dCk7CjE0NDc0OiBleHRlcm4gaW50IGdlbmVyaWNfY29weV9maWxlX2No ZWNrcyhzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19pbiwKMTQ0NzQ6ICAgICAgICAg c3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCwKMTQ0NzQ6ICAgICAgICAgc2l6 ZV90ICpjb3VudCwgdW5zaWduZWQgaW50IGZsYWdzKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdl bmVyaWNfZmlsZV9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICosIHN0cnVjdCBpb3ZfaXRlciAqKTsK MTQ0NzQ6IGV4dGVybiBzc2l6ZV90IF9fZ2VuZXJpY19maWxlX3dyaXRlX2l0ZXIoc3RydWN0IGtp b2NiICosIHN0cnVjdCBpb3ZfaXRlciAqKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNf ZmlsZV93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKik7CjE0NDc0 OiBleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfZGlyZWN0X3dyaXRlKHN0cnVjdCBraW9jYiAq LCBzdHJ1Y3QgaW92X2l0ZXIgKik7CjE0NDc0OiBleHRlcm4gc3NpemVfdCBnZW5lcmljX3BlcmZv cm1fd3JpdGUoc3RydWN0IGZpbGUgKiwgc3RydWN0IGlvdl9pdGVyICosIGxvZmZfdCk7CjE0NDc0 OiAKMTQ0NzQ6IHNzaXplX3QgdmZzX2l0ZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0 IGlvdl9pdGVyICppdGVyLCBsb2ZmX3QgKnBwb3MsCjE0NDc0OiAgIHJ3Zl90IGZsYWdzKTsKMTQ0 NzQ6IHNzaXplX3QgdmZzX2l0ZXJfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBpb3Zf aXRlciAqaXRlciwgbG9mZl90ICpwcG9zLAoxNDQ3NDogICByd2ZfdCBmbGFncyk7CjE0NDc0OiBz c2l6ZV90IHZmc19pb2NiX2l0ZXJfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtpb2Ni ICppb2NiLAoxNDQ3NDogICAgICAgc3RydWN0IGlvdl9pdGVyICppdGVyKTsKMTQ0NzQ6IHNzaXpl X3QgdmZzX2lvY2JfaXRlcl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtpb2NiICpp b2NiLAoxNDQ3NDogICAgICAgIHN0cnVjdCBpb3ZfaXRlciAqaXRlcik7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIHNzaXplX3QgYmxrZGV2X3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlv Y2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pOwoxNDQ3NDogZXh0ZXJuIHNzaXplX3QgYmxrZGV2X3dy aXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pOwoxNDQ3 NDogZXh0ZXJuIGludCBibGtkZXZfZnN5bmMoc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBzdGFy dCwgbG9mZl90IGVuZCwKMTQ0NzQ6ICAgIGludCBkYXRhc3luYyk7CjE0NDc0OiBleHRlcm4gdm9p ZCBibG9ja19zeW5jX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNfZmlsZV9zcGxpY2VfcmVhZChzdHJ1Y3QgZmlsZSAq LCBsb2ZmX3QgKiwKMTQ0NzQ6ICAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqLCBzaXplX3QsIHVu c2lnbmVkIGludCk7CjE0NDc0OiBleHRlcm4gc3NpemVfdCBpdGVyX2ZpbGVfc3BsaWNlX3dyaXRl KHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKiwKMTQ0NzQ6ICAgc3RydWN0IGZpbGUgKiwgbG9mZl90 ICosIHNpemVfdCwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdlbmVyaWNf c3BsaWNlX3NlbmRwYWdlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsCjE0NDc0OiAgIHN0 cnVjdCBmaWxlICpvdXQsIGxvZmZfdCAqLCBzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3Mp OwoxNDQ3NDogZXh0ZXJuIGxvbmcgZG9fc3BsaWNlX2RpcmVjdChzdHJ1Y3QgZmlsZSAqaW4sIGxv ZmZfdCAqcHBvcywgc3RydWN0IGZpbGUgKm91dCwKMTQ0NzQ6ICAgbG9mZl90ICpvcG9zLCBzaXpl X3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biB2b2lkCjE0NDc0OiBmaWxlX3JhX3N0YXRlX2luaXQoc3RydWN0IGZpbGVfcmFfc3RhdGUgKnJh LCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CjE0NDc0OiBleHRlcm4gbG9mZl90IG5v b3BfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKTsK MTQ0NzQ6IGV4dGVybiBsb2ZmX3Qgbm9fbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qg b2Zmc2V0LCBpbnQgd2hlbmNlKTsKMTQ0NzQ6IGV4dGVybiBsb2ZmX3QgdmZzX3NldHBvcyhzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IG1heHNpemUpOwoxNDQ3NDogZXh0 ZXJuIGxvZmZfdCBnZW5lcmljX2ZpbGVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qg b2Zmc2V0LCBpbnQgd2hlbmNlKTsKMTQ0NzQ6IGV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xs c2Vla19zaXplKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAoxNDQ3NDogICBpbnQg d2hlbmNlLCBsb2ZmX3QgbWF4c2l6ZSwgbG9mZl90IGVvZik7CjE0NDc0OiBleHRlcm4gbG9mZl90 IGZpeGVkX3NpemVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAoxNDQ3 NDogICBpbnQgd2hlbmNlLCBsb2ZmX3Qgc2l6ZSk7CjE0NDc0OiBleHRlcm4gbG9mZl90IG5vX3Nl ZWtfZW5kX2xsc2Vla19zaXplKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50LCBsb2ZmX3QpOwox NDQ3NDogZXh0ZXJuIGxvZmZfdCBub19zZWVrX2VuZF9sbHNlZWsoc3RydWN0IGZpbGUgKiwgbG9m Zl90LCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5v ZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKMTQ0NzQ6IGV4dGVybiBpbnQgbm9uc2Vl a2FibGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUgKiBmaWxwKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgc3RyZWFtX29wZW4oc3RydWN0IGlub2RlICogaW5vZGUsIHN0cnVjdCBm aWxlICogZmlscCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB2b2lkIChkaW9fc3Vi bWl0X3QpKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGlub2RlICppbm9kZSwKMTQ0NzQ6ICAgICAg ICBsb2ZmX3QgZmlsZV9vZmZzZXQpOwoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6IAoxNDQ3 NDogIERJT19MT0NLSU5HID0gMHgwMSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRElPX1NLSVBf SE9MRVMgPSAweDAyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkaW9fZW5kX2lvKHN0 cnVjdCBiaW8gKmJpbyk7CjE0NDc0OiAKMTQ0NzQ6IHNzaXplX3QgX19ibG9ja2Rldl9kaXJlY3Rf SU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAoxNDQ3NDogICAgICAg ICBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCjE0NDc0 OiAgICAgICAgIGdldF9ibG9ja190IGdldF9ibG9jaywKMTQ0NzQ6ICAgICAgICAgZGlvX2lvZG9u ZV90IGVuZF9pbywgZGlvX3N1Ym1pdF90IHN1Ym1pdF9pbywKMTQ0NzQ6ICAgICAgICAgaW50IGZs YWdzKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3NpemVfdCBibG9ja2Rldl9kaXJlY3RfSU8oc3RydWN0IGtp b2NiICppb2NiLAoxNDQ3NDogICAgICAgc3RydWN0IGlub2RlICppbm9kZSwKMTQ0NzQ6ICAgICAg IHN0cnVjdCBpb3ZfaXRlciAqaXRlciwKMTQ0NzQ6ICAgICAgIGdldF9ibG9ja190IGdldF9ibG9j aykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gX19ibG9ja2Rldl9kaXJlY3RfSU8oaW9jYiwgaW5v ZGUsIGlub2RlLT5pX3NiLT5zX2JkZXYsIGl0ZXIsCjE0NDc0OiAgICBnZXRfYmxvY2ssICgodm9p ZCAqKTApLCAoKHZvaWQgKikwKSwgRElPX0xPQ0tJTkcgfCBESU9fU0tJUF9IT0xFUyk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBpbm9kZV9kaW9fd2FpdChzdHJ1Y3QgaW5v ZGUgKmlub2RlKTsKMTQ0NzQ6ICMgMzIwOCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGlub2RlX2Rpb19iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3NDog IGF0b21pY19pbmMoJmlub2RlLT5pX2Rpb19jb3VudCk7CjE0NDc0OiB9CjE0NDc0OiAjIDMyMjAg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9kaW9fZW5kKHN0cnVjdCBp bm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmlu b2RlLT5pX2Rpb19jb3VudCkpCjE0NDc0OiAgIHdha2VfdXBfYml0KCZpbm9kZS0+aV9zdGF0ZSwg OSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQg ZGlvX3dhcm5fc3RhbGVfcGFnZWNhY2hlKHN0cnVjdCBmaWxlICpmaWxwKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHZvaWQgaW5vZGVfc2V0X2ZsYWdzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2ln bmVkIGludCBmbGFncywKMTQ0NzQ6ICAgICAgICB1bnNpZ25lZCBpbnQgbWFzayk7CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdlbmVyaWNfcm9fZm9w czsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcmVhZGxpbmtfY29w eShjaGFyICosIGludCwgY29uc3QgY2hhciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcGFnZV9yZWFk bGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBj aGFyICpwYWdlX2dldF9saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosCjE0NDc0 OiAgICAgIHN0cnVjdCBkZWxheWVkX2NhbGwgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBwYWdlX3B1 dF9saW5rKHZvaWQgKik7CjE0NDc0OiBleHRlcm4gaW50IF9fcGFnZV9zeW1saW5rKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnN5bW5hbWUsIGludCBsZW4sCjE0NDc0OiAgIGludCBu b2ZzKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcGFnZV9zeW1saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGNvbnN0IGNoYXIgKnN5bW5hbWUsIGludCBsZW4pOwoxNDQ3NDogZXh0ZXJuIGNvbnN0IHN0cnVj dCBpbm9kZV9vcGVyYXRpb25zIHBhZ2Vfc3ltbGlua19pbm9kZV9vcGVyYXRpb25zOwoxNDQ3NDog ZXh0ZXJuIHZvaWQga2ZyZWVfbGluayh2b2lkICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZ2VuZXJp Y19maWxsYXR0cihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGtzdGF0ICopOwoxNDQ3NDogZXh0ZXJu IGludCB2ZnNfZ2V0YXR0cl9ub3NlYyhjb25zdCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXQg KiwgdTMyLCB1bnNpZ25lZCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGludCB2ZnNfZ2V0YXR0cihjb25z dCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXQgKiwgdTMyLCB1bnNpZ25lZCBpbnQpOwoxNDQ3 NDogdm9pZCBfX2lub2RlX2FkZF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0 ZXMpOwoxNDQ3NDogdm9pZCBpbm9kZV9hZGRfYnl0ZXMoc3RydWN0IGlub2RlICppbm9kZSwgbG9m Zl90IGJ5dGVzKTsKMTQ0NzQ6IHZvaWQgX19pbm9kZV9zdWJfYnl0ZXMoc3RydWN0IGlub2RlICpp bm9kZSwgbG9mZl90IGJ5dGVzKTsKMTQ0NzQ6IHZvaWQgaW5vZGVfc3ViX2J5dGVzKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGxvZmZfdCBieXRlcyk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb2ZmX3QgX19pbm9kZV9nZXRfYnl0 ZXMoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCgobG9mZl90 KWlub2RlLT5pX2Jsb2NrcykgPDwgOSkgKyBpbm9kZS0+aV9ieXRlczsKMTQ0NzQ6IH0KMTQ0NzQ6 IGxvZmZfdCBpbm9kZV9nZXRfYnl0ZXMoc3RydWN0IGlub2RlICppbm9kZSk7CjE0NDc0OiB2b2lk IGlub2RlX3NldF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpOwoxNDQ3 NDogY29uc3QgY2hhciAqc2ltcGxlX2dldF9saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlu b2RlICosCjE0NDc0OiAgICAgICAgc3RydWN0IGRlbGF5ZWRfY2FsbCAqKTsKMTQ0NzQ6IGV4dGVy biBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBzaW1wbGVfc3ltbGlua19pbm9kZV9vcGVy YXRpb25zOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGl0ZXJhdGVfZGlyKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCB2ZnNf c3RhdHgoaW50LCBjb25zdCBjaGFyICosIGludCwgc3RydWN0IGtzdGF0ICosIHUzMik7CjE0NDc0 OiBleHRlcm4gaW50IHZmc19zdGF0eF9mZCh1bnNpZ25lZCBpbnQsIHN0cnVjdCBrc3RhdCAqLCB1 MzIsIHVuc2lnbmVkIGludCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB2ZnNfc3RhdChjb25zdCBjaGFy ICpmaWxlbmFtZSwgc3RydWN0IGtzdGF0ICpzdGF0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB2 ZnNfc3RhdHgoLTEwMCwgZmlsZW5hbWUsIDB4ODAwLAoxNDQ3NDogICAgIHN0YXQsIDB4MDAwMDA3 ZmZVKTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB2ZnNfbHN0YXQoY29uc3QgY2hhciAqbmFtZSwgc3Ry dWN0IGtzdGF0ICpzdGF0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiB2ZnNfc3RhdHgoLTEwMCwg bmFtZSwgMHgxMDAgfCAweDgwMCwKMTQ0NzQ6ICAgICBzdGF0LCAweDAwMDAwN2ZmVSk7CjE0NDc0 OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgdmZzX2ZzdGF0YXQoaW50IGRmZCwgY29uc3QgY2hhciAqZmlsZW5hbWUs CjE0NDc0OiAgICAgICAgICBzdHJ1Y3Qga3N0YXQgKnN0YXQsIGludCBmbGFncykKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gdmZzX3N0YXR4KGRmZCwgZmlsZW5hbWUsIGZsYWdzIHwgMHg4MDAsCjE0 NDc0OiAgICAgc3RhdCwgMHgwMDAwMDdmZlUpOwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHZmc19mc3Rh dChpbnQgZmQsIHN0cnVjdCBrc3RhdCAqc3RhdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gdmZz X3N0YXR4X2ZkKGZkLCBzdGF0LCAweDAwMDAwN2ZmVSwgMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGNvbnN0IGNoYXIgKnZmc19nZXRfbGluayhzdHJ1Y3QgZGVudHJ5 ICosIHN0cnVjdCBkZWxheWVkX2NhbGwgKik7CjE0NDc0OiBleHRlcm4gaW50IHZmc19yZWFkbGlu ayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGlu dCBfX2dlbmVyaWNfYmxvY2tfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsCjE0NDc0OiAgICAg ICBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICpmaWVpbmZvLAoxNDQ3NDogICAgICAgbG9mZl90 IHN0YXJ0LCBsb2ZmX3QgbGVuLAoxNDQ3NDogICAgICAgZ2V0X2Jsb2NrX3QgKmdldF9ibG9jayk7 CjE0NDc0OiBleHRlcm4gaW50IGdlbmVyaWNfYmxvY2tfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5v ZGUsCjE0NDc0OiAgICAgc3RydWN0IGZpZW1hcF9leHRlbnRfaW5mbyAqZmllaW5mbywgdTY0IHN0 YXJ0LAoxNDQ3NDogICAgIHU2NCBsZW4sIGdldF9ibG9ja190ICpnZXRfYmxvY2spOwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmdldF9maWxlc3lzdGVtKHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmcyk7CjE0NDc0OiBleHRlcm4gdm9pZCBwdXRfZmlsZXN5 c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnMpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBm aWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpuYW1lKTsKMTQ0NzQ6IGV4 dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmdldF9zdXBlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICop OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyX3RoYXdlZChzdHJ1 Y3QgYmxvY2tfZGV2aWNlICopOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0 X3N1cGVyX2V4Y2x1c2l2ZV90aGF3ZWQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7CjE0NDc0 OiBleHRlcm4gc3RydWN0IHN1cGVyX2Jsb2NrICpnZXRfYWN0aXZlX3N1cGVyKHN0cnVjdCBibG9j a19kZXZpY2UgKmJkZXYpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZHJvcF9zdXBlcihzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRyb3Bfc3VwZXJfZXhjbHVzaXZlKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgaXRlcmF0ZV9zdXBlcnMo dm9pZCAoKikoc3RydWN0IHN1cGVyX2Jsb2NrICosIHZvaWQgKiksIHZvaWQgKik7CjE0NDc0OiBl eHRlcm4gdm9pZCBpdGVyYXRlX3N1cGVyc190eXBlKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICos CjE0NDc0OiAgICAgICAgICAgIHZvaWQgKCopKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICop LCB2b2lkICopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGRjYWNoZV9kaXJfb3BlbihzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CjE0NDc0OiBleHRlcm4gaW50IGRjYWNoZV9kaXJf Y2xvc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwoxNDQ3NDogZXh0ZXJuIGxvZmZf dCBkY2FjaGVfZGlyX2xzZWVrKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50KTsKMTQ0NzQ6IGV4 dGVybiBpbnQgZGNhY2hlX3JlYWRkaXIoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRpcl9jb250ZXh0 ICopOwoxNDQ3NDogZXh0ZXJuIGludCBzaW1wbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICosIHN0 cnVjdCBpYXR0ciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2ltcGxlX2dldGF0dHIoY29uc3Qgc3Ry dWN0IHBhdGggKiwgc3RydWN0IGtzdGF0ICosIHUzMiwgdW5zaWduZWQgaW50KTsKMTQ0NzQ6IGV4 dGVybiBpbnQgc2ltcGxlX3N0YXRmcyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdGZzICop OwoxNDQ3NDogZXh0ZXJuIGludCBzaW1wbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZmlsZSAqZmlsZSk7CjE0NDc0OiBleHRlcm4gaW50IHNpbXBsZV9saW5rKHN0cnVjdCBkZW50 cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiBleHRlcm4gaW50 IHNpbXBsZV91bmxpbmsoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiBl eHRlcm4gaW50IHNpbXBsZV9ybWRpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsK MTQ0NzQ6IGV4dGVybiBpbnQgc2ltcGxlX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRl bnRyeSAqLAoxNDQ3NDogICAgIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVuc2ln bmVkIGludCk7CjE0NDc0OiBleHRlcm4gdm9pZCBzaW1wbGVfcmVjdXJzaXZlX3JlbW92YWwoc3Ry dWN0IGRlbnRyeSAqLAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAo KmNhbGxiYWNrKShzdHJ1Y3QgZGVudHJ5ICopKTsKMTQ0NzQ6IGV4dGVybiBpbnQgbm9vcF9mc3lu YyhzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTsKMTQ0NzQ6IGV4dGVybiBpbnQg bm9vcF9zZXRfcGFnZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqcGFnZSk7CjE0NDc0OiBleHRlcm4gdm9p ZCBub29wX2ludmFsaWRhdGVwYWdlKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb2Zm c2V0LAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90 IG5vb3BfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICppdGVy KTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2ltcGxlX2VtcHR5KHN0cnVjdCBkZW50cnkgKik7CjE0NDc0 OiBleHRlcm4gaW50IHNpbXBsZV9yZWFkcGFnZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHBh Z2UgKnBhZ2UpOwoxNDQ3NDogZXh0ZXJuIGludCBzaW1wbGVfd3JpdGVfYmVnaW4oc3RydWN0IGZp bGUgKmZpbGUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAoxNDQ3NDogICAgbG9mZl90 IHBvcywgdW5zaWduZWQgbGVuLCB1bnNpZ25lZCBmbGFncywKMTQ0NzQ6ICAgIHN0cnVjdCBwYWdl ICoqcGFnZXAsIHZvaWQgKipmc2RhdGEpOwoxNDQ3NDogZXh0ZXJuIGludCBzaW1wbGVfd3JpdGVf ZW5kKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKMTQ0 NzQ6ICAgIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgY29waWVkLAoxNDQ3NDog ICAgc3RydWN0IHBhZ2UgKnBhZ2UsIHZvaWQgKmZzZGF0YSk7CjE0NDc0OiBleHRlcm4gaW50IGFs d2F5c19kZWxldGVfZGVudHJ5KGNvbnN0IHN0cnVjdCBkZW50cnkgKik7CjE0NDc0OiBleHRlcm4g c3RydWN0IGlub2RlICphbGxvY19hbm9uX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKMTQ0 NzQ6IGV4dGVybiBpbnQgc2ltcGxlX25vc2V0bGVhc2Uoc3RydWN0IGZpbGUgKiwgbG9uZywgc3Ry dWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CjE0NDc0OiBleHRlcm4gY29uc3Qgc3RydWN0IGRl bnRyeV9vcGVyYXRpb25zIHNpbXBsZV9kZW50cnlfb3BlcmF0aW9uczsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCBkZW50cnkgKnNpbXBsZV9sb29rdXAoc3RydWN0IGlub2RlICosIHN0cnVj dCBkZW50cnkgKiwgdW5zaWduZWQgaW50IGZsYWdzKTsKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IGdl bmVyaWNfcmVhZF9kaXIoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsK MTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHNpbXBsZV9kaXJfb3Bl cmF0aW9uczsKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBzaW1w bGVfZGlyX2lub2RlX29wZXJhdGlvbnM7CjE0NDc0OiBleHRlcm4gdm9pZCBtYWtlX2VtcHR5X2Rp cl9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IGV4dGVybiBib29sIGlzX2VtcHR5 X2Rpcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKMTQ0NzQ6IHN0cnVjdCB0cmVlX2Rlc2Ny IHsgY29uc3QgY2hhciAqbmFtZTsgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqb3BzOyBp bnQgbW9kZTsgfTsKMTQ0NzQ6IHN0cnVjdCBkZW50cnkgKmRfYWxsb2NfbmFtZShzdHJ1Y3QgZGVu dHJ5ICosIGNvbnN0IGNoYXIgKik7CjE0NDc0OiBleHRlcm4gaW50IHNpbXBsZV9maWxsX3N1cGVy KHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nLAoxNDQ3NDogICAgICAgICBjb25z dCBzdHJ1Y3QgdHJlZV9kZXNjciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2ltcGxlX3Bpbl9mcyhz dHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqLCBzdHJ1Y3QgdmZzbW91bnQgKiptb3VudCwgaW50ICpj b3VudCk7CjE0NDc0OiBleHRlcm4gdm9pZCBzaW1wbGVfcmVsZWFzZV9mcyhzdHJ1Y3QgdmZzbW91 bnQgKiptb3VudCwgaW50ICpjb3VudCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzc2l6ZV90IHNp bXBsZV9yZWFkX2Zyb21fYnVmZmVyKHZvaWQgKnRvLCBzaXplX3QgY291bnQsCjE0NDc0OiAgICBs b2ZmX3QgKnBwb3MsIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBhdmFpbGFibGUpOwoxNDQ3NDog ZXh0ZXJuIHNzaXplX3Qgc2ltcGxlX3dyaXRlX3RvX2J1ZmZlcih2b2lkICp0bywgc2l6ZV90IGF2 YWlsYWJsZSwgbG9mZl90ICpwcG9zLAoxNDQ3NDogICBjb25zdCB2b2lkICpmcm9tLCBzaXplX3Qg Y291bnQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fZ2VuZXJpY19maWxlX2ZzeW5jKHN0 cnVjdCBmaWxlICosIGxvZmZfdCwgbG9mZl90LCBpbnQpOwoxNDQ3NDogZXh0ZXJuIGludCBnZW5l cmljX2ZpbGVfZnN5bmMoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBsb2ZmX3QsIGludCk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZ2VuZXJpY19jaGVja19hZGRyZXNzYWJsZSh1bnNpZ25lZCwg dTY0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGJ1ZmZlcl9taWdyYXRlX3Bh Z2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKMTQ0NzQ6ICAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1 Y3QgcGFnZSAqLAoxNDQ3NDogICAgIGVudW0gbWlncmF0ZV9tb2RlKTsKMTQ0NzQ6IGV4dGVybiBp bnQgYnVmZmVyX21pZ3JhdGVfcGFnZV9ub3JlZnMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKMTQ0 NzQ6ICAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAqLAoxNDQ3NDogICAgIGVudW0gbWln cmF0ZV9tb2RlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gaW50IHNldGF0dHJfcHJlcGFyZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0 ciAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgaW5vZGVfbmV3c2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW5v ZGUgKiwgbG9mZl90IG9mZnNldCk7CjE0NDc0OiBleHRlcm4gdm9pZCBzZXRhdHRyX2NvcHkoc3Ry dWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IGlhdHRyICphdHRyKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIGludCBmaWxlX3VwZGF0ZV90aW1lKHN0cnVjdCBmaWxlICpmaWxlKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBpb19pc19kaXJlY3Qoc3RydWN0IGZpbGUgKmZpbHApCjE0NDc0OiB7CjE0 NDc0OiAgcmV0dXJuIChmaWxwLT5mX2ZsYWdzICYgMDAwNDAwMDApIHx8ICgoZmlscC0+Zl9tYXBw aW5nLT5ob3N0KS0+aV9mbGFncyAmIDgxOTIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IHZtYV9pc19kYXgoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHZtYS0+dm1fZmlsZSAmJiAoKHZtYS0+dm1fZmlsZS0+Zl9tYXBwaW5nLT5ob3N0KS0+ aV9mbGFncyAmIDgxOTIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHZtYV9pc19mc2Rh eChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgaW5v ZGUgKmlub2RlOwoxNDQ3NDogCjE0NDc0OiAgaWYgKCF2bWEtPnZtX2ZpbGUpCjE0NDc0OiAgIHJl dHVybiBmYWxzZTsKMTQ0NzQ6ICBpZiAoIXZtYV9pc19kYXgodm1hKSkKMTQ0NzQ6ICAgcmV0dXJu IGZhbHNlOwoxNDQ3NDogIGlub2RlID0gZmlsZV9pbm9kZSh2bWEtPnZtX2ZpbGUpOwoxNDQ3NDog IGlmICgoKChpbm9kZS0+aV9tb2RlKSAmIDAwMTcwMDAwKSA9PSAwMDIwMDAwKSkKMTQ0NzQ6ICAg cmV0dXJuIGZhbHNlOwoxNDQ3NDogIHJldHVybiB0cnVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgaW9jYl9mbGFncyhzdHJ1Y3QgZmlsZSAqZmlsZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQg cmVzID0gMDsKMTQ0NzQ6ICBpZiAoZmlsZS0+Zl9mbGFncyAmIDAwMDAyMDAwKQoxNDQ3NDogICBy ZXMgfD0gKDEgPDwgMSk7CjE0NDc0OiAgaWYgKGlvX2lzX2RpcmVjdChmaWxlKSkKMTQ0NzQ6ICAg cmVzIHw9ICgxIDw8IDIpOwoxNDQ3NDogIGlmICgoZmlsZS0+Zl9mbGFncyAmIDAwMDEwMDAwKSB8 fCAoKChmaWxlLT5mX21hcHBpbmctPmhvc3QpLT5pX3NiLT5zX2ZsYWdzICYgKDE2KSkgfHwgKChm aWxlLT5mX21hcHBpbmctPmhvc3QpLT5pX2ZsYWdzICYgMSkpKQoxNDQ3NDogICByZXMgfD0gKDEg PDwgNCk7CjE0NDc0OiAgaWYgKGZpbGUtPmZfZmxhZ3MgJiAwNDAwMDAwMCkKMTQ0NzQ6ICAgcmVz IHw9ICgxIDw8IDUpOwoxNDQ3NDogIHJldHVybiByZXM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBraW9jYl9zZXRfcndfZmxhZ3Moc3RydWN0IGtpb2NiICpraSwgcndmX3QgZmxhZ3MpCjE0 NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZmxhZ3MgJiB+KCgoIF9fa2Vy bmVsX3J3Zl90KTB4MDAwMDAwMDEpIHwgKCggX19rZXJuZWxfcndmX3QpMHgwMDAwMDAwMikgfCAo KCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAwMDA0KSB8ICgoIF9fa2VybmVsX3J3Zl90KTB4MDAwMDAw MDgpIHwgKCggX19rZXJuZWxfcndmX3QpMHgwMDAwMDAxMCkpKSwgMCkpCjE0NDc0OiAgIHJldHVy biAtOTU7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoZmxhZ3MgJiAoKCBfX2tlcm5lbF9yd2ZfdCkweDAw MDAwMDA4KSkgewoxNDQ3NDogICBpZiAoIShraS0+a2lfZmlscC0+Zl9tb2RlICYgKCggZm1vZGVf dCkweDgwMDAwMDApKSkKMTQ0NzQ6ICAgIHJldHVybiAtOTU7CjE0NDc0OiAgIGtpLT5raV9mbGFn cyB8PSAoMSA8PCA3KTsKMTQ0NzQ6ICB9CjE0NDc0OiAgaWYgKGZsYWdzICYgKCggX19rZXJuZWxf cndmX3QpMHgwMDAwMDAwMSkpCjE0NDc0OiAgIGtpLT5raV9mbGFncyB8PSAoMSA8PCAzKTsKMTQ0 NzQ6ICBpZiAoZmxhZ3MgJiAoKCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAwMDAyKSkKMTQ0NzQ6ICAg a2ktPmtpX2ZsYWdzIHw9ICgxIDw8IDQpOwoxNDQ3NDogIGlmIChmbGFncyAmICgoIF9fa2VybmVs X3J3Zl90KTB4MDAwMDAwMDQpKQoxNDQ3NDogICBraS0+a2lfZmxhZ3MgfD0gKCgxIDw8IDQpIHwg KDEgPDwgNSkpOwoxNDQ3NDogIGlmIChmbGFncyAmICgoIF9fa2VybmVsX3J3Zl90KTB4MDAwMDAw MTApKQoxNDQ3NDogICBraS0+a2lfZmxhZ3MgfD0gKDEgPDwgMSk7CjE0NDc0OiAgcmV0dXJuIDA7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IHBhcmVudF9pbm8oc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQoxNDQ3NDogewoxNDQ3NDogIGlub190IHJlczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3Bpbl9sb2NrKCZkZW50cnktPmRfbG9ja3JlZi5s b2NrKTsKMTQ0NzQ6ICByZXMgPSBkZW50cnktPmRfcGFyZW50LT5kX2lub2RlLT5pX2lubzsKMTQ0 NzQ6ICBzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2tyZWYubG9jayk7CjE0NDc0OiAgcmV0dXJu IHJlczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNpbXBsZV90cmFuc2FjdGlvbl9hcmdyZXNwIHsK MTQ0NzQ6ICBzc2l6ZV90IHNpemU7CjE0NDc0OiAgY2hhciBkYXRhWzBdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGNoYXIgKnNpbXBsZV90cmFuc2FjdGlvbl9nZXQo c3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZiwKMTQ0NzQ6ICAgICBzaXplX3Qgc2l6 ZSk7CjE0NDc0OiBzc2l6ZV90IHNpbXBsZV90cmFuc2FjdGlvbl9yZWFkKHN0cnVjdCBmaWxlICpm aWxlLCBjaGFyICpidWYsCjE0NDc0OiAgICAgc2l6ZV90IHNpemUsIGxvZmZfdCAqcG9zKTsKMTQ0 NzQ6IGludCBzaW1wbGVfdHJhbnNhY3Rpb25fcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBz dHJ1Y3QgZmlsZSAqZmlsZSk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2ltcGxlX3RyYW5zYWN0aW9u X3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgc2l6ZV90IG4pOwoxNDQ3NDogIyAzNTE1ICIuL2luY2x1 ZGUvbGludXgvZnMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAx LCAyKSkpCjE0NDc0OiB2b2lkIF9fc2ltcGxlX2F0dHJfY2hlY2tfZm9ybWF0KGNvbnN0IGNoYXIg KmZtdCwgLi4uKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGludCBz aW1wbGVfYXR0cl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLAox NDQ3NDogICAgICAgIGludCAoKmdldCkodm9pZCAqLCB1NjQgKiksIGludCAoKnNldCkodm9pZCAq LCB1NjQpLAoxNDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKmZtdCk7CjE0NDc0OiBpbnQgc2ltcGxl X2F0dHJfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSk7CjE0 NDc0OiBzc2l6ZV90IHNpbXBsZV9hdHRyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgKmJ1 ZiwKMTQ0NzQ6ICAgICBzaXplX3QgbGVuLCBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogc3NpemVfdCBz aW1wbGVfYXR0cl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqYnVmLAoxNDQ3 NDogICAgICBzaXplX3QgbGVuLCBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg Y3RsX3RhYmxlOwoxNDQ3NDogaW50IHByb2NfbnJfZmlsZXMoc3RydWN0IGN0bF90YWJsZSAqdGFi bGUsIGludCB3cml0ZSwKMTQ0NzQ6ICAgICB2b2lkICpidWZmZXIsIHNpemVfdCAqbGVucCwgbG9m Zl90ICpwcG9zKTsKMTQ0NzQ6IGludCBwcm9jX25yX2RlbnRyeShzdHJ1Y3QgY3RsX3RhYmxlICp0 YWJsZSwgaW50IHdyaXRlLAoxNDQ3NDogICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBs b2ZmX3QgKnBwb3MpOwoxNDQ3NDogaW50IHByb2NfbnJfaW5vZGVzKHN0cnVjdCBjdGxfdGFibGUg KnRhYmxlLCBpbnQgd3JpdGUsCjE0NDc0OiAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5w LCBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIu aW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIGdldF9maWxlc3lzdGVtX2xp c3QoY2hhciAqYnVmKTsKMTQ0NzQ6ICMgMzU0NiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGlzX3N4aWQodW1vZGVfdCBtb2RlKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAobW9k ZSAmIDAwMDQwMDApIHx8ICgobW9kZSAmIDAwMDIwMDApICYmIChtb2RlICYgMDAwMTApKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNoZWNrX3N0aWNreShzdHJ1Y3QgaW5vZGUgKmRpciwg c3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIShkaXItPmlfbW9kZSAm IDAwMDEwMDApKQoxNDQ3NDogICByZXR1cm4gMDsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBfX2No ZWNrX3N0aWNreShkaXIsIGlub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9k ZV9oYXNfbm9feGF0dHIoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo IWlzX3N4aWQoaW5vZGUtPmlfbW9kZSkgJiYgKGlub2RlLT5pX3NiLT5zX2ZsYWdzICYgKDE8PDI4 KSkpCjE0NDc0OiAgIGlub2RlLT5pX2ZsYWdzIHw9IDQwOTY7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgaXNfcm9vdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBpbm9kZSA9PSBpbm9kZS0+aV9zYi0+c19yb290LT5kX2lub2RlOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGRpcl9lbWl0KHN0cnVjdCBkaXJfY29udGV4dCAqY3R4LAox NDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLAoxNDQ3NDogICAgICAg IHU2NCBpbm8sIHVuc2lnbmVkIHR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGN0eC0+YWN0 b3IoY3R4LCBuYW1lLCBuYW1lbGVuLCBjdHgtPnBvcywgaW5vLCB0eXBlKSA9PSAwOwoxNDQ3NDog fQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBkaXJfZW1pdF9kb3Qoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkaXJf Y29udGV4dCAqY3R4KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBjdHgtPmFjdG9yKGN0eCwgIi4i LCAxLCBjdHgtPnBvcywKMTQ0NzQ6ICAgICAgZmlsZS0+Zl9wYXRoLmRlbnRyeS0+ZF9pbm9kZS0+ aV9pbm8sIDQpID09IDA7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRpcl9lbWl0X2RvdGRvdChzdHJ1 Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIGN0eC0+YWN0b3IoY3R4LCAiLi4iLCAyLCBjdHgtPnBvcywKMTQ0NzQ6ICAgICAgcGFy ZW50X2lubyhmaWxlLT5mX3BhdGguZGVudHJ5KSwgNCkgPT0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgZGlyX2VtaXRfZG90cyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpj dHgpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGN0eC0+cG9zID09IDApIHsKMTQ0NzQ6ICAgaWYgKCFk aXJfZW1pdF9kb3QoZmlsZSwgY3R4KSkKMTQ0NzQ6ICAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICAg Y3R4LT5wb3MgPSAxOwoxNDQ3NDogIH0KMTQ0NzQ6ICBpZiAoY3R4LT5wb3MgPT0gMSkgewoxNDQ3 NDogICBpZiAoIWRpcl9lbWl0X2RvdGRvdChmaWxlLCBjdHgpKQoxNDQ3NDogICAgcmV0dXJuIGZh bHNlOwoxNDQ3NDogICBjdHgtPnBvcyA9IDI7CjE0NDc0OiAgfQoxNDQ3NDogIHJldHVybiB0cnVl OwoxNDQ3NDogfQoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkaXJfcmVsYXgoc3RydWN0IGlub2RlICppbm9kZSkKMTQ0 NzQ6IHsKMTQ0NzQ6ICBpbm9kZV91bmxvY2soaW5vZGUpOwoxNDQ3NDogIGlub2RlX2xvY2soaW5v ZGUpOwoxNDQ3NDogIHJldHVybiAhKChpbm9kZSktPmlfZmxhZ3MgJiAxNik7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgZGlyX3JlbGF4X3NoYXJlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQox NDQ3NDogewoxNDQ3NDogIGlub2RlX3VubG9ja19zaGFyZWQoaW5vZGUpOwoxNDQ3NDogIGlub2Rl X2xvY2tfc2hhcmVkKGlub2RlKTsKMTQ0NzQ6ICByZXR1cm4gISgoaW5vZGUpLT5pX2ZsYWdzICYg MTYpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gYm9vbCBwYXRoX25vZXhlYyhjb25z dCBzdHJ1Y3QgcGF0aCAqcGF0aCk7CjE0NDc0OiBleHRlcm4gdm9pZCBpbm9kZV9ub2hpZ2htZW0o c3RydWN0IGlub2RlICppbm9kZSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCB2 ZnNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwK MTQ0NzQ6ICAgICAgICAgIGludCBhZHZpY2UpOwoxNDQ3NDogZXh0ZXJuIGludCBnZW5lcmljX2Zh ZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4sCjE0NDc0 OiAgICAgICBpbnQgYWR2aWNlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0 IHNvY2sgKmlvX3VyaW5nX2dldF9zb2NrZXQoc3RydWN0IGZpbGUgKmZpbGUpOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQg dmZzX2lvY19zZXRmbGFnc19wcmVwYXJlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGlu dCBvbGRmbGFncywKMTQ0NzQ6ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsKMTQ0NzQ6IAox NDQ3NDogaW50IHZmc19pb2NfZnNzZXR4YXR0cl9jaGVjayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBj b25zdCBzdHJ1Y3QgZnN4YXR0ciAqb2xkX2ZhLAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgZnN4YXR0 ciAqZmEpOwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNpbXBsZV9maWxsX2ZzeGF0dHIoc3RydWN0IGZz eGF0dHIgKmZhLCBfX3UzMiB4ZmxhZ3MpCjE0NDc0OiB7CjE0NDc0OiAgbWVtc2V0KGZhLCAwLCBz aXplb2YoKmZhKSk7CjE0NDc0OiAgZmEtPmZzeF94ZmxhZ3MgPSB4ZmxhZ3M7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg aW5vZGVfZHJhaW5fd3JpdGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUpCjE0NDc0OiB7CjE0NDc0OiAg aW5vZGVfZGlvX3dhaXQoaW5vZGUpOwoxNDQ3NDogIHJldHVybiBmaWxlbWFwX3dyaXRlX2FuZF93 YWl0KGlub2RlLT5pX21hcHBpbmcpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMiAiLi9pbmNsdWRlL2xp bnV4L3NlcV9maWxlLmgiIDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIgMQox NDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRl L2xpbnV4L2tleS5oIiAxCjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0 OiAjIDEgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIgMQoxNDQ3NDogIyAzMCAiLi9pbmNsdWRl L2xpbnV4L3N5c2N0bC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zeXNjdGwu aCIgMQoxNDQ3NDogIyAzNSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3lzY3RsLmgiCjE0NDc0OiBz dHJ1Y3QgX19zeXNjdGxfYXJncyB7CjE0NDc0OiAgaW50ICpuYW1lOwoxNDQ3NDogIGludCBubGVu OwoxNDQ3NDogIHZvaWQgKm9sZHZhbDsKMTQ0NzQ6ICBzaXplX3QgKm9sZGxlbnA7CjE0NDc0OiAg dm9pZCAqbmV3dmFsOwoxNDQ3NDogIHNpemVfdCBuZXdsZW47CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBfX3VudXNlZFs0XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIENUTF9LRVJOPTEsCjE0NDc0OiAg Q1RMX1ZNPTIsCjE0NDc0OiAgQ1RMX05FVD0zLAoxNDQ3NDogIENUTF9QUk9DPTQsCjE0NDc0OiAg Q1RMX0ZTPTUsCjE0NDc0OiAgQ1RMX0RFQlVHPTYsCjE0NDc0OiAgQ1RMX0RFVj03LAoxNDQ3NDog IENUTF9CVVM9OCwKMTQ0NzQ6ICBDVExfQUJJPTksCjE0NDc0OiAgQ1RMX0NQVT0xMCwKMTQ0NzQ6 ICBDVExfQVJMQU49MjU0LAoxNDQ3NDogIENUTF9TMzkwREJGPTU2NzcsCjE0NDc0OiAgQ1RMX1NV TlJQQz03MjQ5LAoxNDQ3NDogIENUTF9QTT05ODk5LAoxNDQ3NDogIENUTF9GUlY9OTg5OCwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIENUTF9C VVNfSVNBPTEKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewox NDQ3NDogIElOT1RJRllfTUFYX1VTRVJfSU5TVEFOQ0VTPTEsCjE0NDc0OiAgSU5PVElGWV9NQVhf VVNFUl9XQVRDSEVTPTIsCjE0NDc0OiAgSU5PVElGWV9NQVhfUVVFVUVEX0VWRU5UUz0zCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBLRVJOX09T VFlQRT0xLAoxNDQ3NDogIEtFUk5fT1NSRUxFQVNFPTIsCjE0NDc0OiAgS0VSTl9PU1JFVj0zLAox NDQ3NDogIEtFUk5fVkVSU0lPTj00LAoxNDQ3NDogIEtFUk5fU0VDVVJFTUFTSz01LAoxNDQ3NDog IEtFUk5fUFJPRj02LAoxNDQ3NDogIEtFUk5fTk9ERU5BTUU9NywKMTQ0NzQ6ICBLRVJOX0RPTUFJ Tk5BTUU9OCwKMTQ0NzQ6IAoxNDQ3NDogIEtFUk5fUEFOSUM9MTUsCjE0NDc0OiAgS0VSTl9SRUFM Uk9PVERFVj0xNiwKMTQ0NzQ6IAoxNDQ3NDogIEtFUk5fU1BBUkNfUkVCT09UPTIxLAoxNDQ3NDog IEtFUk5fQ1RMQUxUREVMPTIyLAoxNDQ3NDogIEtFUk5fUFJJTlRLPTIzLAoxNDQ3NDogIEtFUk5f TkFNRVRSQU5TPTI0LAoxNDQ3NDogIEtFUk5fUFBDX0hUQUJSRUNMQUlNPTI1LAoxNDQ3NDogIEtF Uk5fUFBDX1pFUk9QQUdFRD0yNiwKMTQ0NzQ6ICBLRVJOX1BQQ19QT1dFUlNBVkVfTkFQPTI3LAox NDQ3NDogIEtFUk5fTU9EUFJPQkU9MjgsCjE0NDc0OiAgS0VSTl9TR19CSUdfQlVGRj0yOSwKMTQ0 NzQ6ICBLRVJOX0FDQ1Q9MzAsCjE0NDc0OiAgS0VSTl9QUENfTDJDUj0zMSwKMTQ0NzQ6IAoxNDQ3 NDogIEtFUk5fUlRTSUdOUj0zMiwKMTQ0NzQ6ICBLRVJOX1JUU0lHTUFYPTMzLAoxNDQ3NDogCjE0 NDc0OiAgS0VSTl9TSE1NQVg9MzQsCjE0NDc0OiAgS0VSTl9NU0dNQVg9MzUsCjE0NDc0OiAgS0VS Tl9NU0dNTkI9MzYsCjE0NDc0OiAgS0VSTl9NU0dQT09MPTM3LAoxNDQ3NDogIEtFUk5fU1lTUlE9 MzgsCjE0NDc0OiAgS0VSTl9NQVhfVEhSRUFEUz0zOSwKMTQ0NzQ6ICAgS0VSTl9SQU5ET009NDAs CjE0NDc0OiAgIEtFUk5fU0hNQUxMPTQxLAoxNDQ3NDogICBLRVJOX01TR01OST00MiwKMTQ0NzQ6 ICAgS0VSTl9TRU09NDMsCjE0NDc0OiAgIEtFUk5fU1BBUkNfU1RPUF9BPTQ0LAoxNDQ3NDogICBL RVJOX1NITU1OST00NSwKMTQ0NzQ6ICBLRVJOX09WRVJGTE9XVUlEPTQ2LAoxNDQ3NDogIEtFUk5f T1ZFUkZMT1dHSUQ9NDcsCjE0NDc0OiAgS0VSTl9TSE1QQVRIPTQ4LAoxNDQ3NDogIEtFUk5fSE9U UExVRz00OSwKMTQ0NzQ6ICBLRVJOX0lFRUVfRU1VTEFUSU9OX1dBUk5JTkdTPTUwLAoxNDQ3NDog IEtFUk5fUzM5MF9VU0VSX0RFQlVHX0xPR0dJTkc9NTEsCjE0NDc0OiAgS0VSTl9DT1JFX1VTRVNf UElEPTUyLAoxNDQ3NDogIEtFUk5fVEFJTlRFRD01MywKMTQ0NzQ6ICBLRVJOX0NBRFBJRD01NCwK MTQ0NzQ6ICBLRVJOX1BJRE1BWD01NSwKMTQ0NzQ6ICAgIEtFUk5fQ09SRV9QQVRURVJOPTU2LAox NDQ3NDogIEtFUk5fUEFOSUNfT05fT09QUz01NywKMTQ0NzQ6ICBLRVJOX0hQUEFfUFdSU1c9NTgs CjE0NDc0OiAgS0VSTl9IUFBBX1VOQUxJR05FRD01OSwKMTQ0NzQ6ICBLRVJOX1BSSU5US19SQVRF TElNSVQ9NjAsCjE0NDc0OiAgS0VSTl9QUklOVEtfUkFURUxJTUlUX0JVUlNUPTYxLAoxNDQ3NDog IEtFUk5fUFRZPTYyLAoxNDQ3NDogIEtFUk5fTkdST1VQU19NQVg9NjMsCjE0NDc0OiAgS0VSTl9T UEFSQ19TQ09OU19QV1JPRkY9NjQsCjE0NDc0OiAgS0VSTl9IWl9USU1FUj02NSwKMTQ0NzQ6ICBL RVJOX1VOS05PV05fTk1JX1BBTklDPTY2LAoxNDQ3NDogIEtFUk5fQk9PVExPQURFUl9UWVBFPTY3 LAoxNDQ3NDogIEtFUk5fUkFORE9NSVpFPTY4LAoxNDQ3NDogIEtFUk5fU0VUVUlEX0RVTVBBQkxF PTY5LAoxNDQ3NDogIEtFUk5fU1BJTl9SRVRSWT03MCwKMTQ0NzQ6ICBLRVJOX0FDUElfVklERU9f RkxBR1M9NzEsCjE0NDc0OiAgS0VSTl9JQTY0X1VOQUxJR05FRD03MiwKMTQ0NzQ6ICBLRVJOX0NP TVBBVF9MT0c9NzMsCjE0NDc0OiAgS0VSTl9NQVhfTE9DS19ERVBUSD03NCwKMTQ0NzQ6ICBLRVJO X05NSV9XQVRDSERPRz03NSwKMTQ0NzQ6ICBLRVJOX1BBTklDX09OX05NST03NiwKMTQ0NzQ6ICBL RVJOX1BBTklDX09OX1dBUk49NzcsCjE0NDc0OiAgS0VSTl9QQU5JQ19QUklOVD03OCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsK MTQ0NzQ6ICBWTV9VTlVTRUQxPTEsCjE0NDc0OiAgVk1fVU5VU0VEMj0yLAoxNDQ3NDogIFZNX1VO VVNFRDM9MywKMTQ0NzQ6ICBWTV9VTlVTRUQ0PTQsCjE0NDc0OiAgVk1fT1ZFUkNPTU1JVF9NRU1P Ulk9NSwKMTQ0NzQ6ICBWTV9VTlVTRUQ1PTYsCjE0NDc0OiAgVk1fVU5VU0VENz03LAoxNDQ3NDog IFZNX1VOVVNFRDg9OCwKMTQ0NzQ6ICBWTV9VTlVTRUQ5PTksCjE0NDc0OiAgVk1fUEFHRV9DTFVT VEVSPTEwLAoxNDQ3NDogIFZNX0RJUlRZX0JBQ0tHUk9VTkQ9MTEsCjE0NDc0OiAgVk1fRElSVFlf UkFUSU89MTIsCjE0NDc0OiAgVk1fRElSVFlfV0JfQ1M9MTMsCjE0NDc0OiAgVk1fRElSVFlfRVhQ SVJFX0NTPTE0LAoxNDQ3NDogIFZNX05SX1BERkxVU0hfVEhSRUFEUz0xNSwKMTQ0NzQ6ICBWTV9P VkVSQ09NTUlUX1JBVElPPTE2LAoxNDQ3NDogIFZNX1BBR0VCVUY9MTcsCjE0NDc0OiAgVk1fSFVH RVRMQl9QQUdFUz0xOCwKMTQ0NzQ6ICBWTV9TV0FQUElORVNTPTE5LAoxNDQ3NDogIFZNX0xPV01F TV9SRVNFUlZFX1JBVElPPTIwLAoxNDQ3NDogIFZNX01JTl9GUkVFX0tCWVRFUz0yMSwKMTQ0NzQ6 ICBWTV9NQVhfTUFQX0NPVU5UPTIyLAoxNDQ3NDogIFZNX0xBUFRPUF9NT0RFPTIzLAoxNDQ3NDog IFZNX0JMT0NLX0RVTVA9MjQsCjE0NDc0OiAgVk1fSFVHRVRMQl9HUk9VUD0yNSwKMTQ0NzQ6ICBW TV9WRlNfQ0FDSEVfUFJFU1NVUkU9MjYsCjE0NDc0OiAgVk1fTEVHQUNZX1ZBX0xBWU9VVD0yNywK MTQ0NzQ6ICBWTV9TV0FQX1RPS0VOX1RJTUVPVVQ9MjgsCjE0NDc0OiAgVk1fRFJPUF9QQUdFQ0FD SEU9MjksCjE0NDc0OiAgVk1fUEVSQ1BVX1BBR0VMSVNUX0ZSQUNUSU9OPTMwLAoxNDQ3NDogIFZN X1pPTkVfUkVDTEFJTV9NT0RFPTMxLAoxNDQ3NDogIFZNX01JTl9VTk1BUFBFRD0zMiwKMTQ0NzQ6 ICBWTV9QQU5JQ19PTl9PT009MzMsCjE0NDc0OiAgVk1fVkRTT19FTkFCTEVEPTM0LAoxNDQ3NDog IFZNX01JTl9TTEFCPTM1LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBORVRfQ09SRT0xLAoxNDQ3NDogIE5FVF9FVEhFUj0yLAox NDQ3NDogIE5FVF84MDI9MywKMTQ0NzQ6ICBORVRfVU5JWD00LAoxNDQ3NDogIE5FVF9JUFY0PTUs CjE0NDc0OiAgTkVUX0lQWD02LAoxNDQ3NDogIE5FVF9BVEFMSz03LAoxNDQ3NDogIE5FVF9ORVRS T009OCwKMTQ0NzQ6ICBORVRfQVgyNT05LAoxNDQ3NDogIE5FVF9CUklER0U9MTAsCjE0NDc0OiAg TkVUX1JPU0U9MTEsCjE0NDc0OiAgTkVUX0lQVjY9MTIsCjE0NDc0OiAgTkVUX1gyNT0xMywKMTQ0 NzQ6ICBORVRfVFI9MTQsCjE0NDc0OiAgTkVUX0RFQ05FVD0xNSwKMTQ0NzQ6ICBORVRfRUNPTkVU PTE2LAoxNDQ3NDogIE5FVF9TQ1RQPTE3LAoxNDQ3NDogIE5FVF9MTEM9MTgsCjE0NDc0OiAgTkVU X05FVEZJTFRFUj0xOSwKMTQ0NzQ6ICBORVRfRENDUD0yMCwKMTQ0NzQ6ICBORVRfSVJEQT00MTIs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBS QU5ET01fUE9PTFNJWkU9MSwKMTQ0NzQ6ICBSQU5ET01fRU5UUk9QWV9DT1VOVD0yLAoxNDQ3NDog IFJBTkRPTV9SRUFEX1RIUkVTSD0zLAoxNDQ3NDogIFJBTkRPTV9XUklURV9USFJFU0g9NCwKMTQ0 NzQ6ICBSQU5ET01fQk9PVF9JRD01LAoxNDQ3NDogIFJBTkRPTV9VVUlEPTYKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIFBUWV9NQVg9MSwKMTQ0 NzQ6ICBQVFlfTlI9MgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtCjE0NDc0 OiB7CjE0NDc0OiAgQlVTX0lTQV9NRU1fQkFTRT0xLAoxNDQ3NDogIEJVU19JU0FfUE9SVF9CQVNF PTIsCjE0NDc0OiAgQlVTX0lTQV9QT1JUX1NISUZUPTMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIE5FVF9DT1JFX1dNRU1fTUFYPTEsCjE0NDc0 OiAgTkVUX0NPUkVfUk1FTV9NQVg9MiwKMTQ0NzQ6ICBORVRfQ09SRV9XTUVNX0RFRkFVTFQ9MywK MTQ0NzQ6ICBORVRfQ09SRV9STUVNX0RFRkFVTFQ9NCwKMTQ0NzQ6IAoxNDQ3NDogIE5FVF9DT1JF X01BWF9CQUNLTE9HPTYsCjE0NDc0OiAgTkVUX0NPUkVfRkFTVFJPVVRFPTcsCjE0NDc0OiAgTkVU X0NPUkVfTVNHX0NPU1Q9OCwKMTQ0NzQ6ICBORVRfQ09SRV9NU0dfQlVSU1Q9OSwKMTQ0NzQ6ICBO RVRfQ09SRV9PUFRNRU1fTUFYPTEwLAoxNDQ3NDogIE5FVF9DT1JFX0hPVF9MSVNUX0xFTkdUSD0x MSwKMTQ0NzQ6ICBORVRfQ09SRV9ESVZFUlRfVkVSU0lPTj0xMiwKMTQ0NzQ6ICBORVRfQ09SRV9O T19DT05HX1RIUkVTSD0xMywKMTQ0NzQ6ICBORVRfQ09SRV9OT19DT05HPTE0LAoxNDQ3NDogIE5F VF9DT1JFX0xPX0NPTkc9MTUsCjE0NDc0OiAgTkVUX0NPUkVfTU9EX0NPTkc9MTYsCjE0NDc0OiAg TkVUX0NPUkVfREVWX1dFSUdIVD0xNywKMTQ0NzQ6ICBORVRfQ09SRV9TT01BWENPTk49MTgsCjE0 NDc0OiAgTkVUX0NPUkVfQlVER0VUPTE5LAoxNDQ3NDogIE5FVF9DT1JFX0FFVkVOVF9FVElNRT0y MCwKMTQ0NzQ6ICBORVRfQ09SRV9BRVZFTlRfUlNFUVRIPTIxLAoxNDQ3NDogIE5FVF9DT1JFX1dB Uk5JTkdTPTIyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIE5FVF9VTklY X0RFU1RST1lfREVMQVk9MSwKMTQ0NzQ6ICBORVRfVU5JWF9ERUxFVEVfREVMQVk9MiwKMTQ0NzQ6 ICBORVRfVU5JWF9NQVhfREdSQU1fUUxFTj0zLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBlbnVtCjE0NDc0OiB7CjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19NQVg9MSwKMTQ0NzQ6 ICBORVRfTkZfQ09OTlRSQUNLX1RDUF9USU1FT1VUX1NZTl9TRU5UPTIsCjE0NDc0OiAgTkVUX05G X0NPTk5UUkFDS19UQ1BfVElNRU9VVF9TWU5fUkVDVj0zLAoxNDQ3NDogIE5FVF9ORl9DT05OVFJB Q0tfVENQX1RJTUVPVVRfRVNUQUJMSVNIRUQ9NCwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1RD UF9USU1FT1VUX0ZJTl9XQUlUPTUsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9V VF9DTE9TRV9XQUlUPTYsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9MQVNU X0FDSz03LAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfVElNRV9XQUlUPTgs CjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9DTE9TRT05LAoxNDQ3NDogIE5F VF9ORl9DT05OVFJBQ0tfVURQX1RJTUVPVVQ9MTAsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19V RFBfVElNRU9VVF9TVFJFQU09MTEsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19JQ01QX1RJTUVP VVQ9MTIsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19HRU5FUklDX1RJTUVPVVQ9MTMsCjE0NDc0 OiAgTkVUX05GX0NPTk5UUkFDS19CVUNLRVRTPTE0LAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tf TE9HX0lOVkFMSUQ9MTUsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9NQVhf UkVUUkFOUz0xNiwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1RDUF9MT09TRT0xNywKMTQ0NzQ6 ICBORVRfTkZfQ09OTlRSQUNLX1RDUF9CRV9MSUJFUkFMPTE4LAoxNDQ3NDogIE5FVF9ORl9DT05O VFJBQ0tfVENQX01BWF9SRVRSQU5TPTE5LAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfU0NUUF9U SU1FT1VUX0NMT1NFRD0yMCwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9D T09LSUVfV0FJVD0yMSwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9DT09L SUVfRUNIT0VEPTIyLAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX0VTVEFC TElTSEVEPTIzLAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX1NIVVRET1dO X1NFTlQ9MjQsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfU0hVVERPV05f UkVDRD0yNSwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9TSFVURE9XTl9B Q0tfU0VOVD0yNiwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX0NPVU5UPTI3LAoxNDQ3NDogIE5F VF9ORl9DT05OVFJBQ0tfSUNNUFY2X1RJTUVPVVQ9MjgsCjE0NDc0OiAgTkVUX05GX0NPTk5UUkFD S19GUkFHNl9USU1FT1VUPTI5LAoxNDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfRlJBRzZfTE9XX1RI UkVTSD0zMCwKMTQ0NzQ6ICBORVRfTkZfQ09OTlRSQUNLX0ZSQUc2X0hJR0hfVEhSRVNIPTMxLAox NDQ3NDogIE5FVF9ORl9DT05OVFJBQ0tfQ0hFQ0tTVU09MzIsCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIE5FVF9JUFY0X0ZPUldB UkQ9OCwKMTQ0NzQ6ICBORVRfSVBWNF9EWU5BRERSPTksCjE0NDc0OiAKMTQ0NzQ6ICBORVRfSVBW NF9DT05GPTE2LAoxNDQ3NDogIE5FVF9JUFY0X05FSUdIPTE3LAoxNDQ3NDogIE5FVF9JUFY0X1JP VVRFPTE4LAoxNDQ3NDogIE5FVF9JUFY0X0ZJQl9IQVNIPTE5LAoxNDQ3NDogIE5FVF9JUFY0X05F VEZJTFRFUj0yMCwKMTQ0NzQ6IAoxNDQ3NDogIE5FVF9JUFY0X1RDUF9USU1FU1RBTVBTPTMzLAox NDQ3NDogIE5FVF9JUFY0X1RDUF9XSU5ET1dfU0NBTElORz0zNCwKMTQ0NzQ6ICBORVRfSVBWNF9U Q1BfU0FDSz0zNSwKMTQ0NzQ6ICBORVRfSVBWNF9UQ1BfUkVUUkFOU19DT0xMQVBTRT0zNiwKMTQ0 NzQ6ICBORVRfSVBWNF9ERUZBVUxUX1RUTD0zNywKMTQ0NzQ6ICBORVRfSVBWNF9BVVRPQ09ORklH PTM4LAoxNDQ3NDogIE5FVF9JUFY0X05PX1BNVFVfRElTQz0zOSwKMTQ0NzQ6ICBORVRfSVBWNF9U Q1BfU1lOX1JFVFJJRVM9NDAsCjE0NDc0OiAgTkVUX0lQVjRfSVBGUkFHX0hJR0hfVEhSRVNIPTQx LAoxNDQ3NDogIE5FVF9JUFY0X0lQRlJBR19MT1dfVEhSRVNIPTQyLAoxNDQ3NDogIE5FVF9JUFY0 X0lQRlJBR19USU1FPTQzLAoxNDQ3NDogIE5FVF9JUFY0X1RDUF9NQVhfS0FfUFJPQkVTPTQ0LAox NDQ3NDogIE5FVF9JUFY0X1RDUF9LRUVQQUxJVkVfVElNRT00NSwKMTQ0NzQ6ICBORVRfSVBWNF9U Q1BfS0VFUEFMSVZFX1BST0JFUz00NiwKMTQ0NzQ6ICBORVRfSVBWNF9UQ1BfUkVUUklFUzE9NDcs CjE0NDc0OiAgTkVUX0lQVjRfVENQX1JFVFJJRVMyPTQ4LAoxNDQ3NDogIE5FVF9JUFY0X1RDUF9G SU5fVElNRU9VVD00OSwKMTQ0NzQ6ICBORVRfSVBWNF9JUF9NQVNRX0RFQlVHPTUwLAoxNDQ3NDog IE5FVF9UQ1BfU1lOQ09PS0lFUz01MSwKMTQ0NzQ6ICBORVRfVENQX1NURFVSRz01MiwKMTQ0NzQ6 ICBORVRfVENQX1JGQzEzMzc9NTMsCjE0NDc0OiAgTkVUX1RDUF9TWU5fVEFJTERST1A9NTQsCjE0 NDc0OiAgTkVUX1RDUF9NQVhfU1lOX0JBQ0tMT0c9NTUsCjE0NDc0OiAgTkVUX0lQVjRfTE9DQUxf UE9SVF9SQU5HRT01NiwKMTQ0NzQ6ICBORVRfSVBWNF9JQ01QX0VDSE9fSUdOT1JFX0FMTD01NywK MTQ0NzQ6ICBORVRfSVBWNF9JQ01QX0VDSE9fSUdOT1JFX0JST0FEQ0FTVFM9NTgsCjE0NDc0OiAg TkVUX0lQVjRfSUNNUF9TT1VSQ0VRVUVOQ0hfUkFURT01OSwKMTQ0NzQ6ICBORVRfSVBWNF9JQ01Q X0RFU1RVTlJFQUNIX1JBVEU9NjAsCjE0NDc0OiAgTkVUX0lQVjRfSUNNUF9USU1FRVhDRUVEX1JB VEU9NjEsCjE0NDc0OiAgTkVUX0lQVjRfSUNNUF9QQVJBTVBST0JfUkFURT02MiwKMTQ0NzQ6ICBO RVRfSVBWNF9JQ01QX0VDSE9SRVBMWV9SQVRFPTYzLAoxNDQ3NDogIE5FVF9JUFY0X0lDTVBfSUdO T1JFX0JPR1VTX0VSUk9SX1JFU1BPTlNFUz02NCwKMTQ0NzQ6ICBORVRfSVBWNF9JR01QX01BWF9N RU1CRVJTSElQUz02NSwKMTQ0NzQ6ICBORVRfVENQX1RXX1JFQ1lDTEU9NjYsCjE0NDc0OiAgTkVU X0lQVjRfQUxXQVlTX0RFRlJBRz02NywKMTQ0NzQ6ICBORVRfSVBWNF9UQ1BfS0VFUEFMSVZFX0lO VFZMPTY4LAoxNDQ3NDogIE5FVF9JUFY0X0lORVRfUEVFUl9USFJFU0hPTEQ9NjksCjE0NDc0OiAg TkVUX0lQVjRfSU5FVF9QRUVSX01JTlRUTD03MCwKMTQ0NzQ6ICBORVRfSVBWNF9JTkVUX1BFRVJf TUFYVFRMPTcxLAoxNDQ3NDogIE5FVF9JUFY0X0lORVRfUEVFUl9HQ19NSU5USU1FPTcyLAoxNDQ3 NDogIE5FVF9JUFY0X0lORVRfUEVFUl9HQ19NQVhUSU1FPTczLAoxNDQ3NDogIE5FVF9UQ1BfT1JQ SEFOX1JFVFJJRVM9NzQsCjE0NDc0OiAgTkVUX1RDUF9BQk9SVF9PTl9PVkVSRkxPVz03NSwKMTQ0 NzQ6ICBORVRfVENQX1NZTkFDS19SRVRSSUVTPTc2LAoxNDQ3NDogIE5FVF9UQ1BfTUFYX09SUEhB TlM9NzcsCjE0NDc0OiAgTkVUX1RDUF9NQVhfVFdfQlVDS0VUUz03OCwKMTQ0NzQ6ICBORVRfVENQ X0ZBQ0s9NzksCjE0NDc0OiAgTkVUX1RDUF9SRU9SREVSSU5HPTgwLAoxNDQ3NDogIE5FVF9UQ1Bf RUNOPTgxLAoxNDQ3NDogIE5FVF9UQ1BfRFNBQ0s9ODIsCjE0NDc0OiAgTkVUX1RDUF9NRU09ODMs CjE0NDc0OiAgTkVUX1RDUF9XTUVNPTg0LAoxNDQ3NDogIE5FVF9UQ1BfUk1FTT04NSwKMTQ0NzQ6 ICBORVRfVENQX0FQUF9XSU49ODYsCjE0NDc0OiAgTkVUX1RDUF9BRFZfV0lOX1NDQUxFPTg3LAox NDQ3NDogIE5FVF9JUFY0X05PTkxPQ0FMX0JJTkQ9ODgsCjE0NDc0OiAgTkVUX0lQVjRfSUNNUF9S QVRFTElNSVQ9ODksCjE0NDc0OiAgTkVUX0lQVjRfSUNNUF9SQVRFTUFTSz05MCwKMTQ0NzQ6ICBO RVRfVENQX1RXX1JFVVNFPTkxLAoxNDQ3NDogIE5FVF9UQ1BfRlJUTz05MiwKMTQ0NzQ6ICBORVRf VENQX0xPV19MQVRFTkNZPTkzLAoxNDQ3NDogIE5FVF9JUFY0X0lQRlJBR19TRUNSRVRfSU5URVJW QUw9OTQsCjE0NDc0OiAgTkVUX0lQVjRfSUdNUF9NQVhfTVNGPTk2LAoxNDQ3NDogIE5FVF9UQ1Bf Tk9fTUVUUklDU19TQVZFPTk3LAoxNDQ3NDogIE5FVF9UQ1BfREVGQVVMVF9XSU5fU0NBTEU9MTA1 LAoxNDQ3NDogIE5FVF9UQ1BfTU9ERVJBVEVfUkNWQlVGPTEwNiwKMTQ0NzQ6ICBORVRfVENQX1RT T19XSU5fRElWSVNPUj0xMDcsCjE0NDc0OiAgTkVUX1RDUF9CSUNfQkVUQT0xMDgsCjE0NDc0OiAg TkVUX0lQVjRfSUNNUF9FUlJPUlNfVVNFX0lOQk9VTkRfSUZBRERSPTEwOSwKMTQ0NzQ6ICBORVRf VENQX0NPTkdfQ09OVFJPTD0xMTAsCjE0NDc0OiAgTkVUX1RDUF9BQkM9MTExLAoxNDQ3NDogIE5F VF9JUFY0X0lQRlJBR19NQVhfRElTVD0xMTIsCjE0NDc0OiAgIE5FVF9UQ1BfTVRVX1BST0JJTkc9 MTEzLAoxNDQ3NDogIE5FVF9UQ1BfQkFTRV9NU1M9MTE0LAoxNDQ3NDogIE5FVF9JUFY0X1RDUF9X T1JLQVJPVU5EX1NJR05FRF9XSU5ET1dTPTExNSwKMTQ0NzQ6ICBORVRfVENQX0RNQV9DT1BZQlJF QUs9MTE2LAoxNDQ3NDogIE5FVF9UQ1BfU0xPV19TVEFSVF9BRlRFUl9JRExFPTExNywKMTQ0NzQ6 ICBORVRfQ0lQU09WNF9DQUNIRV9FTkFCTEU9MTE4LAoxNDQ3NDogIE5FVF9DSVBTT1Y0X0NBQ0hF X0JVQ0tFVF9TSVpFPTExOSwKMTQ0NzQ6ICBORVRfQ0lQU09WNF9SQk1fT1BURk1UPTEyMCwKMTQ0 NzQ6ICBORVRfQ0lQU09WNF9SQk1fU1RSSUNUVkFMSUQ9MTIxLAoxNDQ3NDogIE5FVF9UQ1BfQVZB SUxfQ09OR19DT05UUk9MPTEyMiwKMTQ0NzQ6ICBORVRfVENQX0FMTE9XRURfQ09OR19DT05UUk9M PTEyMywKMTQ0NzQ6ICBORVRfVENQX01BWF9TU1RIUkVTSD0xMjQsCjE0NDc0OiAgTkVUX1RDUF9G UlRPX1JFU1BPTlNFPTEyNSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDog IE5FVF9JUFY0X1JPVVRFX0ZMVVNIPTEsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfTUlOX0RFTEFZ PTIsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfTUFYX0RFTEFZPTMsCjE0NDc0OiAgTkVUX0lQVjRf Uk9VVEVfR0NfVEhSRVNIPTQsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfTUFYX1NJWkU9NSwKMTQ0 NzQ6ICBORVRfSVBWNF9ST1VURV9HQ19NSU5fSU5URVJWQUw9NiwKMTQ0NzQ6ICBORVRfSVBWNF9S T1VURV9HQ19USU1FT1VUPTcsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfR0NfSU5URVJWQUw9OCwK MTQ0NzQ6ICBORVRfSVBWNF9ST1VURV9SRURJUkVDVF9MT0FEPTksCjE0NDc0OiAgTkVUX0lQVjRf Uk9VVEVfUkVESVJFQ1RfTlVNQkVSPTEwLAoxNDQ3NDogIE5FVF9JUFY0X1JPVVRFX1JFRElSRUNU X1NJTEVOQ0U9MTEsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfRVJST1JfQ09TVD0xMiwKMTQ0NzQ6 ICBORVRfSVBWNF9ST1VURV9FUlJPUl9CVVJTVD0xMywKMTQ0NzQ6ICBORVRfSVBWNF9ST1VURV9H Q19FTEFTVElDSVRZPTE0LAoxNDQ3NDogIE5FVF9JUFY0X1JPVVRFX01UVV9FWFBJUkVTPTE1LAox NDQ3NDogIE5FVF9JUFY0X1JPVVRFX01JTl9QTVRVPTE2LAoxNDQ3NDogIE5FVF9JUFY0X1JPVVRF X01JTl9BRFZNU1M9MTcsCjE0NDc0OiAgTkVUX0lQVjRfUk9VVEVfU0VDUkVUX0lOVEVSVkFMPTE4 LAoxNDQ3NDogIE5FVF9JUFY0X1JPVVRFX0dDX01JTl9JTlRFUlZBTF9NUz0xOSwKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBORVRfUFJPVE9fQ09ORl9BTEw9 LTIsCjE0NDc0OiAgTkVUX1BST1RPX0NPTkZfREVGQVVMVD0tMwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6ICBORVRfSVBWNF9DT05G X0ZPUldBUkRJTkc9MSwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX01DX0ZPUldBUkRJTkc9MiwKMTQ0 NzQ6ICBORVRfSVBWNF9DT05GX1BST1hZX0FSUD0zLAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfQUND RVBUX1JFRElSRUNUUz00LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfU0VDVVJFX1JFRElSRUNUUz01 LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfU0VORF9SRURJUkVDVFM9NiwKMTQ0NzQ6ICBORVRfSVBW NF9DT05GX1NIQVJFRF9NRURJQT03LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfUlBfRklMVEVSPTgs CjE0NDc0OiAgTkVUX0lQVjRfQ09ORl9BQ0NFUFRfU09VUkNFX1JPVVRFPTksCjE0NDc0OiAgTkVU X0lQVjRfQ09ORl9CT09UUF9SRUxBWT0xMCwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX0xPR19NQVJU SUFOUz0xMSwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX1RBRz0xMiwKMTQ0NzQ6ICBORVRfSVBWNF9D T05GX0FSUEZJTFRFUj0xMywKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX01FRElVTV9JRD0xNCwKMTQ0 NzQ6ICBORVRfSVBWNF9DT05GX05PWEZSTT0xNSwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX05PUE9M SUNZPTE2LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZfRk9SQ0VfSUdNUF9WRVJTSU9OPTE3LAoxNDQ3 NDogIE5FVF9JUFY0X0NPTkZfQVJQX0FOTk9VTkNFPTE4LAoxNDQ3NDogIE5FVF9JUFY0X0NPTkZf QVJQX0lHTk9SRT0xOSwKMTQ0NzQ6ICBORVRfSVBWNF9DT05GX1BST01PVEVfU0VDT05EQVJJRVM9 MjAsCjE0NDc0OiAgTkVUX0lQVjRfQ09ORl9BUlBfQUNDRVBUPTIxLAoxNDQ3NDogIE5FVF9JUFY0 X0NPTkZfQVJQX05PVElGWT0yMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bQoxNDQ3NDogewoxNDQ3NDogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19NQVg9MSwKMTQ0NzQ6ICBO RVRfSVBWNF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfU1lOX1NFTlQ9MiwKMTQ0NzQ6ICBORVRf SVBWNF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfU1lOX1JFQ1Y9MywKMTQ0NzQ6ICBORVRfSVBW NF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfRVNUQUJMSVNIRUQ9NCwKMTQ0NzQ6ICBORVRfSVBW NF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfRklOX1dBSVQ9NSwKMTQ0NzQ6ICBORVRfSVBWNF9O Rl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfQ0xPU0VfV0FJVD02LAoxNDQ3NDogIE5FVF9JUFY0X05G X0NPTk5UUkFDS19UQ1BfVElNRU9VVF9MQVNUX0FDSz03LAoxNDQ3NDogIE5FVF9JUFY0X05GX0NP Tk5UUkFDS19UQ1BfVElNRU9VVF9USU1FX1dBSVQ9OCwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05O VFJBQ0tfVENQX1RJTUVPVVRfQ0xPU0U9OSwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tf VURQX1RJTUVPVVQ9MTAsCjE0NDc0OiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1VEUF9USU1FT1VU X1NUUkVBTT0xMSwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfSUNNUF9USU1FT1VUPTEy LAoxNDQ3NDogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19HRU5FUklDX1RJTUVPVVQ9MTMsCjE0NDc0 OiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX0JVQ0tFVFM9MTQsCjE0NDc0OiAgTkVUX0lQVjRfTkZf Q09OTlRSQUNLX0xPR19JTlZBTElEPTE1LAoxNDQ3NDogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19U Q1BfVElNRU9VVF9NQVhfUkVUUkFOUz0xNiwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tf VENQX0xPT1NFPTE3LAoxNDQ3NDogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19UQ1BfQkVfTElCRVJB TD0xOCwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfVENQX01BWF9SRVRSQU5TPTE5LAox NDQ3NDogICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX0NMT1NFRD0yMCwKMTQ0 NzQ6ICAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9DT09LSUVfV0FJVD0yMSwK MTQ0NzQ6ICAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9DT09LSUVfRUNIT0VE PTIyLAoxNDQ3NDogICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX0VTVEFCTElT SEVEPTIzLAoxNDQ3NDogICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VUX1NIVVRE T1dOX1NFTlQ9MjQsCjE0NDc0OiAgIE5FVF9JUFY0X05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRf U0hVVERPV05fUkVDRD0yNSwKMTQ0NzQ6ICAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElN RU9VVF9TSFVURE9XTl9BQ0tfU0VOVD0yNiwKMTQ0NzQ6ICBORVRfSVBWNF9ORl9DT05OVFJBQ0tf Q09VTlQ9MjcsCjE0NDc0OiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX0NIRUNLU1VNPTI4LAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfSVBWNl9DT05G PTE2LAoxNDQ3NDogIE5FVF9JUFY2X05FSUdIPTE3LAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFPTE4 LAoxNDQ3NDogIE5FVF9JUFY2X0lDTVA9MTksCjE0NDc0OiAgTkVUX0lQVjZfQklORFY2T05MWT0y MCwKMTQ0NzQ6ICBORVRfSVBWNl9JUDZGUkFHX0hJR0hfVEhSRVNIPTIxLAoxNDQ3NDogIE5FVF9J UFY2X0lQNkZSQUdfTE9XX1RIUkVTSD0yMiwKMTQ0NzQ6ICBORVRfSVBWNl9JUDZGUkFHX1RJTUU9 MjMsCjE0NDc0OiAgTkVUX0lQVjZfSVA2RlJBR19TRUNSRVRfSU5URVJWQUw9MjQsCjE0NDc0OiAg TkVUX0lQVjZfTUxEX01BWF9NU0Y9MjUsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHsK MTQ0NzQ6ICBORVRfSVBWNl9ST1VURV9GTFVTSD0xLAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFX0dD X1RIUkVTSD0yLAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFX01BWF9TSVpFPTMsCjE0NDc0OiAgTkVU X0lQVjZfUk9VVEVfR0NfTUlOX0lOVEVSVkFMPTQsCjE0NDc0OiAgTkVUX0lQVjZfUk9VVEVfR0Nf VElNRU9VVD01LAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFX0dDX0lOVEVSVkFMPTYsCjE0NDc0OiAg TkVUX0lQVjZfUk9VVEVfR0NfRUxBU1RJQ0lUWT03LAoxNDQ3NDogIE5FVF9JUFY2X1JPVVRFX01U VV9FWFBJUkVTPTgsCjE0NDc0OiAgTkVUX0lQVjZfUk9VVEVfTUlOX0FEVk1TUz05LAoxNDQ3NDog IE5FVF9JUFY2X1JPVVRFX0dDX01JTl9JTlRFUlZBTF9NUz0xMAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogZW51bSB7CjE0NDc0OiAgTkVUX0lQVjZfRk9SV0FSRElORz0xLAoxNDQ3NDogIE5FVF9J UFY2X0hPUF9MSU1JVD0yLAoxNDQ3NDogIE5FVF9JUFY2X01UVT0zLAoxNDQ3NDogIE5FVF9JUFY2 X0FDQ0VQVF9SQT00LAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SRURJUkVDVFM9NSwKMTQ0NzQ6 ICBORVRfSVBWNl9BVVRPQ09ORj02LAoxNDQ3NDogIE5FVF9JUFY2X0RBRF9UUkFOU01JVFM9NywK MTQ0NzQ6ICBORVRfSVBWNl9SVFJfU09MSUNJVFM9OCwKMTQ0NzQ6ICBORVRfSVBWNl9SVFJfU09M SUNJVF9JTlRFUlZBTD05LAoxNDQ3NDogIE5FVF9JUFY2X1JUUl9TT0xJQ0lUX0RFTEFZPTEwLAox NDQ3NDogIE5FVF9JUFY2X1VTRV9URU1QQUREUj0xMSwKMTQ0NzQ6ICBORVRfSVBWNl9URU1QX1ZB TElEX0xGVD0xMiwKMTQ0NzQ6ICBORVRfSVBWNl9URU1QX1BSRUZFUkVEX0xGVD0xMywKMTQ0NzQ6 ICBORVRfSVBWNl9SRUdFTl9NQVhfUkVUUlk9MTQsCjE0NDc0OiAgTkVUX0lQVjZfTUFYX0RFU1lO Q19GQUNUT1I9MTUsCjE0NDc0OiAgTkVUX0lQVjZfTUFYX0FERFJFU1NFUz0xNiwKMTQ0NzQ6ICBO RVRfSVBWNl9GT1JDRV9NTERfVkVSU0lPTj0xNywKMTQ0NzQ6ICBORVRfSVBWNl9BQ0NFUFRfUkFf REVGUlRSPTE4LAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SQV9QSU5GTz0xOSwKMTQ0NzQ6ICBO RVRfSVBWNl9BQ0NFUFRfUkFfUlRSX1BSRUY9MjAsCjE0NDc0OiAgTkVUX0lQVjZfUlRSX1BST0JF X0lOVEVSVkFMPTIxLAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SQV9SVF9JTkZPX01BWF9QTEVO PTIyLAoxNDQ3NDogIE5FVF9JUFY2X1BST1hZX05EUD0yMywKMTQ0NzQ6ICBORVRfSVBWNl9BQ0NF UFRfU09VUkNFX1JPVVRFPTI1LAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SQV9GUk9NX0xPQ0FM PTI2LAoxNDQ3NDogIE5FVF9JUFY2X0FDQ0VQVF9SQV9SVF9JTkZPX01JTl9QTEVOPTI3LAoxNDQ3 NDogIF9fTkVUX0lQVjZfTUFYCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0g ewoxNDQ3NDogIE5FVF9JUFY2X0lDTVBfUkFURUxJTUlUID0gMSwKMTQ0NzQ6ICBORVRfSVBWNl9J Q01QX0VDSE9fSUdOT1JFX0FMTCA9IDIKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSB7CjE0NDc0OiAgTkVUX05FSUdIX01DQVNUX1NPTElDSVQ9MSwKMTQ0NzQ6ICBORVRfTkVJ R0hfVUNBU1RfU09MSUNJVD0yLAoxNDQ3NDogIE5FVF9ORUlHSF9BUFBfU09MSUNJVD0zLAoxNDQ3 NDogIE5FVF9ORUlHSF9SRVRSQU5TX1RJTUU9NCwKMTQ0NzQ6ICBORVRfTkVJR0hfUkVBQ0hBQkxF X1RJTUU9NSwKMTQ0NzQ6ICBORVRfTkVJR0hfREVMQVlfUFJPQkVfVElNRT02LAoxNDQ3NDogIE5F VF9ORUlHSF9HQ19TVEFMRV9USU1FPTcsCjE0NDc0OiAgTkVUX05FSUdIX1VOUkVTX1FMRU49OCwK MTQ0NzQ6ICBORVRfTkVJR0hfUFJPWFlfUUxFTj05LAoxNDQ3NDogIE5FVF9ORUlHSF9BTllDQVNU X0RFTEFZPTEwLAoxNDQ3NDogIE5FVF9ORUlHSF9QUk9YWV9ERUxBWT0xMSwKMTQ0NzQ6ICBORVRf TkVJR0hfTE9DS1RJTUU9MTIsCjE0NDc0OiAgTkVUX05FSUdIX0dDX0lOVEVSVkFMPTEzLAoxNDQ3 NDogIE5FVF9ORUlHSF9HQ19USFJFU0gxPTE0LAoxNDQ3NDogIE5FVF9ORUlHSF9HQ19USFJFU0gy PTE1LAoxNDQ3NDogIE5FVF9ORUlHSF9HQ19USFJFU0gzPTE2LAoxNDQ3NDogIE5FVF9ORUlHSF9S RVRSQU5TX1RJTUVfTVM9MTcsCjE0NDc0OiAgTkVUX05FSUdIX1JFQUNIQUJMRV9USU1FX01TPTE4 LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfREND UF9ERUZBVUxUPTEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3 NDogIE5FVF9JUFhfUFBST1BfQlJPQURDQVNUSU5HPTEsCjE0NDc0OiAgTkVUX0lQWF9GT1JXQVJE SU5HPTIKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTkVU X0xMQzI9MSwKMTQ0NzQ6ICBORVRfTExDX1NUQVRJT049MiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTkVUX0xMQzJfVElNRU9VVD0xLAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfTExDX1NUQVRJT05fQUNL X1RJTUVPVVQ9MSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0 OiAgTkVUX0xMQzJfQUNLX1RJTUVPVVQ9MSwKMTQ0NzQ6ICBORVRfTExDMl9QX1RJTUVPVVQ9MiwK MTQ0NzQ6ICBORVRfTExDMl9SRUpfVElNRU9VVD0zLAoxNDQ3NDogIE5FVF9MTEMyX0JVU1lfVElN RU9VVD00LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBO RVRfQVRBTEtfQUFSUF9FWFBJUllfVElNRT0xLAoxNDQ3NDogIE5FVF9BVEFMS19BQVJQX1RJQ0tf VElNRT0yLAoxNDQ3NDogIE5FVF9BVEFMS19BQVJQX1JFVFJBTlNNSVRfTElNSVQ9MywKMTQ0NzQ6 ICBORVRfQVRBTEtfQUFSUF9SRVNPTFZFX1RJTUU9NAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5FVF9ORVRST01fREVGQVVMVF9QQVRIX1FV QUxJVFk9MSwKMTQ0NzQ6ICBORVRfTkVUUk9NX09CU09MRVNDRU5DRV9DT1VOVF9JTklUSUFMSVNF Uj0yLAoxNDQ3NDogIE5FVF9ORVRST01fTkVUV09SS19UVExfSU5JVElBTElTRVI9MywKMTQ0NzQ6 ICBORVRfTkVUUk9NX1RSQU5TUE9SVF9USU1FT1VUPTQsCjE0NDc0OiAgTkVUX05FVFJPTV9UUkFO U1BPUlRfTUFYSU1VTV9UUklFUz01LAoxNDQ3NDogIE5FVF9ORVRST01fVFJBTlNQT1JUX0FDS05P V0xFREdFX0RFTEFZPTYsCjE0NDc0OiAgTkVUX05FVFJPTV9UUkFOU1BPUlRfQlVTWV9ERUxBWT03 LAoxNDQ3NDogIE5FVF9ORVRST01fVFJBTlNQT1JUX1JFUVVFU1RFRF9XSU5ET1dfU0laRT04LAox NDQ3NDogIE5FVF9ORVRST01fVFJBTlNQT1JUX05PX0FDVElWSVRZX1RJTUVPVVQ9OSwKMTQ0NzQ6 ICBORVRfTkVUUk9NX1JPVVRJTkdfQ09OVFJPTD0xMCwKMTQ0NzQ6ICBORVRfTkVUUk9NX0xJTktf RkFJTFNfQ09VTlQ9MTEsCjE0NDc0OiAgTkVUX05FVFJPTV9SRVNFVD0xMgoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfQVgyNV9JUF9ERUZBVUxUX01P REU9MSwKMTQ0NzQ6ICBORVRfQVgyNV9ERUZBVUxUX01PREU9MiwKMTQ0NzQ6ICBORVRfQVgyNV9C QUNLT0ZGX1RZUEU9MywKMTQ0NzQ6ICBORVRfQVgyNV9DT05ORUNUX01PREU9NCwKMTQ0NzQ6ICBO RVRfQVgyNV9TVEFOREFSRF9XSU5ET1c9NSwKMTQ0NzQ6ICBORVRfQVgyNV9FWFRFTkRFRF9XSU5E T1c9NiwKMTQ0NzQ6ICBORVRfQVgyNV9UMV9USU1FT1VUPTcsCjE0NDc0OiAgTkVUX0FYMjVfVDJf VElNRU9VVD04LAoxNDQ3NDogIE5FVF9BWDI1X1QzX1RJTUVPVVQ9OSwKMTQ0NzQ6ICBORVRfQVgy NV9JRExFX1RJTUVPVVQ9MTAsCjE0NDc0OiAgTkVUX0FYMjVfTjI9MTEsCjE0NDc0OiAgTkVUX0FY MjVfUEFDTEVOPTEyLAoxNDQ3NDogIE5FVF9BWDI1X1BST1RPQ09MPTEzLAoxNDQ3NDogIE5FVF9B WDI1X0RBTUFfU0xBVkVfVElNRU9VVD0xNAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBlbnVtIHsKMTQ0NzQ6ICBORVRfUk9TRV9SRVNUQVJUX1JFUVVFU1RfVElNRU9VVD0xLAoxNDQ3 NDogIE5FVF9ST1NFX0NBTExfUkVRVUVTVF9USU1FT1VUPTIsCjE0NDc0OiAgTkVUX1JPU0VfUkVT RVRfUkVRVUVTVF9USU1FT1VUPTMsCjE0NDc0OiAgTkVUX1JPU0VfQ0xFQVJfUkVRVUVTVF9USU1F T1VUPTQsCjE0NDc0OiAgTkVUX1JPU0VfQUNLX0hPTERfQkFDS19USU1FT1VUPTUsCjE0NDc0OiAg TkVUX1JPU0VfUk9VVElOR19DT05UUk9MPTYsCjE0NDc0OiAgTkVUX1JPU0VfTElOS19GQUlMX1RJ TUVPVVQ9NywKMTQ0NzQ6ICBORVRfUk9TRV9NQVhfVkNTPTgsCjE0NDc0OiAgTkVUX1JPU0VfV0lO RE9XX1NJWkU9OSwKMTQ0NzQ6ICBORVRfUk9TRV9OT19BQ1RJVklUWV9USU1FT1VUPTEwCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5FVF9YMjVfUkVTVEFS VF9SRVFVRVNUX1RJTUVPVVQ9MSwKMTQ0NzQ6ICBORVRfWDI1X0NBTExfUkVRVUVTVF9USU1FT1VU PTIsCjE0NDc0OiAgTkVUX1gyNV9SRVNFVF9SRVFVRVNUX1RJTUVPVVQ9MywKMTQ0NzQ6ICBORVRf WDI1X0NMRUFSX1JFUVVFU1RfVElNRU9VVD00LAoxNDQ3NDogIE5FVF9YMjVfQUNLX0hPTERfQkFD S19USU1FT1VUPTUsCjE0NDc0OiAgTkVUX1gyNV9GT1JXQVJEPTYKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogZW51bQoxNDQ3NDogewoxNDQ3NDogIE5FVF9UUl9SSUZfVElNRU9VVD0x CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5FVF9ERUNO RVRfTk9ERV9UWVBFID0gMSwKMTQ0NzQ6ICBORVRfREVDTkVUX05PREVfQUREUkVTUyA9IDIsCjE0 NDc0OiAgTkVUX0RFQ05FVF9OT0RFX05BTUUgPSAzLAoxNDQ3NDogIE5FVF9ERUNORVRfREVGQVVM VF9ERVZJQ0UgPSA0LAoxNDQ3NDogIE5FVF9ERUNORVRfVElNRV9XQUlUID0gNSwKMTQ0NzQ6ICBO RVRfREVDTkVUX0ROX0NPVU5UID0gNiwKMTQ0NzQ6ICBORVRfREVDTkVUX0RJX0NPVU5UID0gNywK MTQ0NzQ6ICBORVRfREVDTkVUX0RSX0NPVU5UID0gOCwKMTQ0NzQ6ICBORVRfREVDTkVUX0RTVF9H Q19JTlRFUlZBTCA9IDksCjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GID0gMTAsCjE0NDc0OiAgTkVU X0RFQ05FVF9OT19GQ19NQVhfQ1dORCA9IDExLAoxNDQ3NDogIE5FVF9ERUNORVRfTUVNID0gMTIs CjE0NDc0OiAgTkVUX0RFQ05FVF9STUVNID0gMTMsCjE0NDc0OiAgTkVUX0RFQ05FVF9XTUVNID0g MTQsCjE0NDc0OiAgTkVUX0RFQ05FVF9ERUJVR19MRVZFTCA9IDI1NQoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBORVRfREVDTkVUX0NPTkZfTE9PUEJBQ0sg PSAtMiwKMTQ0NzQ6ICBORVRfREVDTkVUX0NPTkZfRERDTVAgPSAtMywKMTQ0NzQ6ICBORVRfREVD TkVUX0NPTkZfUFBQID0gLTQsCjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GX1gyNSA9IC01LAoxNDQ3 NDogIE5FVF9ERUNORVRfQ09ORl9HUkUgPSAtNiwKMTQ0NzQ6ICBORVRfREVDTkVUX0NPTkZfRVRI RVIgPSAtNwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSB7CjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GX0RFVl9QUklPUklUWSA9IDEsCjE0NDc0OiAg TkVUX0RFQ05FVF9DT05GX0RFVl9UMSA9IDIsCjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GX0RFVl9U MiA9IDMsCjE0NDc0OiAgTkVUX0RFQ05FVF9DT05GX0RFVl9UMyA9IDQsCjE0NDc0OiAgTkVUX0RF Q05FVF9DT05GX0RFVl9GT1JXQVJESU5HID0gNSwKMTQ0NzQ6ICBORVRfREVDTkVUX0NPTkZfREVW X0JMS1NJWkUgPSA2LAoxNDQ3NDogIE5FVF9ERUNORVRfQ09ORl9ERVZfU1RBVEUgPSA3CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5FVF9TQ1RQX1JUT19J TklUSUFMID0gMSwKMTQ0NzQ6ICBORVRfU0NUUF9SVE9fTUlOID0gMiwKMTQ0NzQ6ICBORVRfU0NU UF9SVE9fTUFYID0gMywKMTQ0NzQ6ICBORVRfU0NUUF9SVE9fQUxQSEEgPSA0LAoxNDQ3NDogIE5F VF9TQ1RQX1JUT19CRVRBID0gNSwKMTQ0NzQ6ICBORVRfU0NUUF9WQUxJRF9DT09LSUVfTElGRSA9 IDYsCjE0NDc0OiAgTkVUX1NDVFBfQVNTT0NJQVRJT05fTUFYX1JFVFJBTlMgPSA3LAoxNDQ3NDog IE5FVF9TQ1RQX1BBVEhfTUFYX1JFVFJBTlMgPSA4LAoxNDQ3NDogIE5FVF9TQ1RQX01BWF9JTklU X1JFVFJBTlNNSVRTID0gOSwKMTQ0NzQ6ICBORVRfU0NUUF9IQl9JTlRFUlZBTCA9IDEwLAoxNDQ3 NDogIE5FVF9TQ1RQX1BSRVNFUlZFX0VOQUJMRSA9IDExLAoxNDQ3NDogIE5FVF9TQ1RQX01BWF9C VVJTVCA9IDEyLAoxNDQ3NDogIE5FVF9TQ1RQX0FERElQX0VOQUJMRSA9IDEzLAoxNDQ3NDogIE5F VF9TQ1RQX1BSU0NUUF9FTkFCTEUgPSAxNCwKMTQ0NzQ6ICBORVRfU0NUUF9TTkRCVUZfUE9MSUNZ ID0gMTUsCjE0NDc0OiAgTkVUX1NDVFBfU0FDS19USU1FT1VUID0gMTYsCjE0NDc0OiAgTkVUX1ND VFBfUkNWQlVGX1BPTElDWSA9IDE3LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl bnVtIHsKMTQ0NzQ6ICBORVRfQlJJREdFX05GX0NBTExfQVJQVEFCTEVTID0gMSwKMTQ0NzQ6ICBO RVRfQlJJREdFX05GX0NBTExfSVBUQUJMRVMgPSAyLAoxNDQ3NDogIE5FVF9CUklER0VfTkZfQ0FM TF9JUDZUQUJMRVMgPSAzLAoxNDQ3NDogIE5FVF9CUklER0VfTkZfRklMVEVSX1ZMQU5fVEFHR0VE ID0gNCwKMTQ0NzQ6ICBORVRfQlJJREdFX05GX0ZJTFRFUl9QUFBPRV9UQUdHRUQgPSA1LAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0KMTQ0NzQ6IHsKMTQ0NzQ6 ICBGU19OUklOT0RFPTEsCjE0NDc0OiAgRlNfU1RBVElOT0RFPTIsCjE0NDc0OiAgRlNfTUFYSU5P REU9MywKMTQ0NzQ6ICBGU19OUkRRVU9UPTQsCjE0NDc0OiAgRlNfTUFYRFFVT1Q9NSwKMTQ0NzQ6 ICBGU19OUkZJTEU9NiwKMTQ0NzQ6ICBGU19NQVhGSUxFPTcsCjE0NDc0OiAgRlNfREVOVFJZPTgs CjE0NDc0OiAgRlNfTlJTVVBFUj05LAoxNDQ3NDogIEZTX01BWFNVUEVSPTEwLAoxNDQ3NDogIEZT X09WRVJGTE9XVUlEPTExLAoxNDQ3NDogIEZTX09WRVJGTE9XR0lEPTEyLAoxNDQ3NDogIEZTX0xF QVNFUz0xMywKMTQ0NzQ6ICBGU19ESVJfTk9USUZZPTE0LAoxNDQ3NDogIEZTX0xFQVNFX1RJTUU9 MTUsCjE0NDc0OiAgRlNfRFFTVEFUUz0xNiwKMTQ0NzQ6ICBGU19YRlM9MTcsCjE0NDc0OiAgRlNf QUlPX05SPTE4LAoxNDQ3NDogIEZTX0FJT19NQVhfTlI9MTksCjE0NDc0OiAgRlNfSU5PVElGWT0y MCwKMTQ0NzQ6ICBGU19PQ0ZTMj05ODgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGVudW0gewoxNDQ3NDogIEZTX0RRX0xPT0tVUFMgPSAxLAoxNDQ3NDogIEZTX0RRX0RST1BTID0g MiwKMTQ0NzQ6ICBGU19EUV9SRUFEUyA9IDMsCjE0NDc0OiAgRlNfRFFfV1JJVEVTID0gNCwKMTQ0 NzQ6ICBGU19EUV9DQUNIRV9ISVRTID0gNSwKMTQ0NzQ6ICBGU19EUV9BTExPQ0FURUQgPSA2LAox NDQ3NDogIEZTX0RRX0ZSRUUgPSA3LAoxNDQ3NDogIEZTX0RRX1NZTkNTID0gOCwKMTQ0NzQ6ICBG U19EUV9XQVJOSU5HUyA9IDksCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBERVZfQ0RST009MSwKMTQ0NzQ6ICBERVZfSFdNT049 MiwKMTQ0NzQ6ICBERVZfUEFSUE9SVD0zLAoxNDQ3NDogIERFVl9SQUlEPTQsCjE0NDc0OiAgREVW X01BQ19ISUQ9NSwKMTQ0NzQ6ICBERVZfU0NTST02LAoxNDQ3NDogIERFVl9JUE1JPTcsCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFVl9DRFJPTV9JTkZP PTEsCjE0NDc0OiAgREVWX0NEUk9NX0FVVE9DTE9TRT0yLAoxNDQ3NDogIERFVl9DRFJPTV9BVVRP RUpFQ1Q9MywKMTQ0NzQ6ICBERVZfQ0RST01fREVCVUc9NCwKMTQ0NzQ6ICBERVZfQ0RST01fTE9D Sz01LAoxNDQ3NDogIERFVl9DRFJPTV9DSEVDS19NRURJQT02CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFVl9QQVJQT1JUX0RFRkFVTFQ9LTMKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgREVWX1JBSURfU1BFRURf TElNSVRfTUlOPTEsCjE0NDc0OiAgREVWX1JBSURfU1BFRURfTElNSVRfTUFYPTIKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgREVWX1BBUlBPUlRfREVGQVVM VF9USU1FU0xJQ0U9MSwKMTQ0NzQ6ICBERVZfUEFSUE9SVF9ERUZBVUxUX1NQSU5USU1FPTIKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgREVWX1BBUlBPUlRf U1BJTlRJTUU9MSwKMTQ0NzQ6ICBERVZfUEFSUE9SVF9CQVNFX0FERFI9MiwKMTQ0NzQ6ICBERVZf UEFSUE9SVF9JUlE9MywKMTQ0NzQ6ICBERVZfUEFSUE9SVF9ETUE9NCwKMTQ0NzQ6ICBERVZfUEFS UE9SVF9NT0RFUz01LAoxNDQ3NDogIERFVl9QQVJQT1JUX0RFVklDRVM9NiwKMTQ0NzQ6ICBERVZf UEFSUE9SVF9BVVRPUFJPQkU9MTYKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bSB7CjE0NDc0OiAgREVWX1BBUlBPUlRfREVWSUNFU19BQ1RJVkU9LTMsCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFVl9QQVJQT1JUX0RFVklDRV9USU1F U0xJQ0U9MSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAg REVWX01BQ19ISURfS0VZQk9BUkRfU0VORFNfTElOVVhfS0VZQ09ERVM9MSwKMTQ0NzQ6ICBERVZf TUFDX0hJRF9LRVlCT0FSRF9MT0NLX0tFWUNPREVTPTIsCjE0NDc0OiAgREVWX01BQ19ISURfTU9V U0VfQlVUVE9OX0VNVUxBVElPTj0zLAoxNDQ3NDogIERFVl9NQUNfSElEX01PVVNFX0JVVFRPTjJf S0VZQ09ERT00LAoxNDQ3NDogIERFVl9NQUNfSElEX01PVVNFX0JVVFRPTjNfS0VZQ09ERT01LAox NDQ3NDogIERFVl9NQUNfSElEX0FEQl9NT1VTRV9TRU5EU19LRVlDT0RFUz02CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERFVl9TQ1NJX0xPR0dJTkdfTEVW RUw9MSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgREVW X0lQTUlfUE9XRVJPRkZfUE9XRVJDWUNMRT0xLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBlbnVtCjE0NDc0OiB7CjE0NDc0OiAgQUJJX0RFRkhBTkRMRVJfQ09GRj0xLAoxNDQ3NDog IEFCSV9ERUZIQU5ETEVSX0VMRj0yLAoxNDQ3NDogIEFCSV9ERUZIQU5ETEVSX0xDQUxMNz0zLAox NDQ3NDogIEFCSV9ERUZIQU5ETEVSX0xJQkNTTz00LAoxNDQ3NDogIEFCSV9UUkFDRT01LAoxNDQ3 NDogIEFCSV9GQUtFX1VUU05BTUU9NiwKMTQ0NzQ6IH07CjE0NDc0OiAjIDMxICIuL2luY2x1ZGUv bGludXgvc3lzY3RsLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY29tcGxldGlv bjsKMTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGU7CjE0NDc0OiBzdHJ1Y3QgbnNwcm94eTsKMTQ0NzQ6 IHN0cnVjdCBjdGxfdGFibGVfcm9vdDsKMTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyOwox NDQ3NDogc3RydWN0IGN0bF9kaXI7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gY29uc3QgaW50IHN5c2N0bF92YWxzW107CjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgaW50IHByb2NfaGFuZGxlciAoc3RydWN0IGN0bF90YWJsZSAqY3Rs LCBpbnQgd3JpdGUsCjE0NDc0OiAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2Zm X3QgKnBwb3MpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHByb2NfZG9zdHJpbmcoc3RydWN0 IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAgICAgdm9pZCAqLCBzaXplX3QgKiwgbG9mZl90ICop OwoxNDQ3NDogZXh0ZXJuIGludCBwcm9jX2RvaW50dmVjKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50 LAoxNDQ3NDogICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBp bnQgcHJvY19kb3VpbnR2ZWMoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAgICAgdm9p ZCAqLCBzaXplX3QgKiwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIGludCBwcm9jX2RvaW50dmVj X21pbm1heChzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKMTQ0NzQ6ICAgICB2b2lkICosIHNpemVf dCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBleHRlcm4gaW50IHByb2NfZG91aW50dmVjX21pbm1heChz dHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAoxNDQ3NDogICAgICB2b2lkICpidWZm ZXIsIHNpemVfdCAqbGVucCwKMTQ0NzQ6ICAgICAgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6IGV4dGVy biBpbnQgcHJvY19kb2ludHZlY19qaWZmaWVzKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3 NDogICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBleHRlcm4gaW50IHBy b2NfZG9pbnR2ZWNfdXNlcmh6X2ppZmZpZXMoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0 OiAgICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBpbnQgcHJv Y19kb2ludHZlY19tc19qaWZmaWVzKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAoxNDQ3NDogICAg ICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBleHRlcm4gaW50IHByb2Nf ZG91bG9uZ3ZlY19taW5tYXgoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAgICAgICB2 b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CjE0NDc0OiBleHRlcm4gaW50IHByb2NfZG91bG9u Z3ZlY19tc19qaWZmaWVzX21pbm1heChzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50LAoxNDQ3 NDogICAgICAgICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKMTQ0NzQ6IGV4dGVybiBp bnQgcHJvY19kb19sYXJnZV9iaXRtYXAoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCjE0NDc0OiAg ICAgdm9pZCAqLCBzaXplX3QgKiwgbG9mZl90ICopOwoxNDQ3NDogZXh0ZXJuIGludCBwcm9jX2Rv X3N0YXRpY19rZXkoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSwKMTQ0NzQ6ICAg ICAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLAoxNDQ3NDogICAgICAgICAgbG9mZl90 ICpwcG9zKTsKMTQ0NzQ6ICMgMTA1ICIuL2luY2x1ZGUvbGludXgvc3lzY3RsLmgiCjE0NDc0OiBz dHJ1Y3QgY3RsX3RhYmxlX3BvbGwgewoxNDQ3NDogIGF0b21pY190IGV2ZW50OwoxNDQ3NDogIHdh aXRfcXVldWVfaGVhZF90IHdhaXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICpwcm9j X3N5c19wb2xsX2V2ZW50KHN0cnVjdCBjdGxfdGFibGVfcG9sbCAqcG9sbCkKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gKHZvaWQgKikodW5zaWduZWQgbG9uZylhdG9taWNfcmVhZCgmcG9sbC0+ZXZl bnQpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjMgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIKMTQ0 NzQ6IHN0cnVjdCBjdGxfdGFibGUgewoxNDQ3NDogIGNvbnN0IGNoYXIgKnByb2NuYW1lOwoxNDQ3 NDogIHZvaWQgKmRhdGE7CjE0NDc0OiAgaW50IG1heGxlbjsKMTQ0NzQ6ICB1bW9kZV90IG1vZGU7 CjE0NDc0OiAgc3RydWN0IGN0bF90YWJsZSAqY2hpbGQ7CjE0NDc0OiAgcHJvY19oYW5kbGVyICpw cm9jX2hhbmRsZXI7CjE0NDc0OiAgc3RydWN0IGN0bF90YWJsZV9wb2xsICpwb2xsOwoxNDQ3NDog IHZvaWQgKmV4dHJhMTsKMTQ0NzQ6ICB2b2lkICpleHRyYTI7CjE0NDc0OiB9IF9fYXR0cmlidXRl X18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGN0bF9ub2Rl IHsKMTQ0NzQ6ICBzdHJ1Y3QgcmJfbm9kZSBub2RlOwoxNDQ3NDogIHN0cnVjdCBjdGxfdGFibGVf aGVhZGVyICpoZWFkZXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGN0bF90YWJsZV9oZWFkZXIgewoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0 IHsKMTQ0NzQ6ICAgIHN0cnVjdCBjdGxfdGFibGUgKmN0bF90YWJsZTsKMTQ0NzQ6ICAgIGludCB1 c2VkOwoxNDQ3NDogICAgaW50IGNvdW50OwoxNDQ3NDogICAgaW50IG5yZWc7CjE0NDc0OiAgIH07 CjE0NDc0OiAgIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0NzQ6ICB9OwoxNDQ3NDogIHN0 cnVjdCBjb21wbGV0aW9uICp1bnJlZ2lzdGVyaW5nOwoxNDQ3NDogIHN0cnVjdCBjdGxfdGFibGUg KmN0bF90YWJsZV9hcmc7CjE0NDc0OiAgc3RydWN0IGN0bF90YWJsZV9yb290ICpyb290OwoxNDQ3 NDogIHN0cnVjdCBjdGxfdGFibGVfc2V0ICpzZXQ7CjE0NDc0OiAgc3RydWN0IGN0bF9kaXIgKnBh cmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgY3RsX25vZGUgKm5vZGU7CjE0NDc0OiAgc3RydWN0IGhsaXN0 X2hlYWQgaW5vZGVzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGN0bF9kaXIgewox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgaGVhZGVyOwoxNDQ3NDogIHN0 cnVjdCByYl9yb290IHJvb3Q7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3RsX3Rh YmxlX3NldCB7CjE0NDc0OiAgaW50ICgqaXNfc2Vlbikoc3RydWN0IGN0bF90YWJsZV9zZXQgKik7 CjE0NDc0OiAgc3RydWN0IGN0bF9kaXIgZGlyOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGN0bF90YWJsZV9yb290IHsKMTQ0NzQ6ICBzdHJ1Y3QgY3RsX3RhYmxlX3NldCBkZWZhdWx0 X3NldDsKMTQ0NzQ6ICBzdHJ1Y3QgY3RsX3RhYmxlX3NldCAqKCpsb29rdXApKHN0cnVjdCBjdGxf dGFibGVfcm9vdCAqcm9vdCk7CjE0NDc0OiAgdm9pZCAoKnNldF9vd25lcnNoaXApKHN0cnVjdCBj dGxfdGFibGVfaGVhZGVyICpoZWFkLAoxNDQ3NDogICAgICAgICAgc3RydWN0IGN0bF90YWJsZSAq dGFibGUsCjE0NDc0OiAgICAgICAgICBrdWlkX3QgKnVpZCwga2dpZF90ICpnaWQpOwoxNDQ3NDog IGludCAoKnBlcm1pc3Npb25zKShzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqaGVhZCwgc3RydWN0 IGN0bF90YWJsZSAqdGFibGUpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgY3RsX3BhdGggewoxNDQ3NDogIGNvbnN0IGNoYXIgKnByb2NuYW1lOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcHJvY19zeXNfcG9sbF9ub3RpZnkoc3Ry dWN0IGN0bF90YWJsZV9wb2xsICpwb2xsKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0 dXBfc3lzY3RsX3NldChzdHJ1Y3QgY3RsX3RhYmxlX3NldCAqcCwKMTQ0NzQ6ICBzdHJ1Y3QgY3Rs X3RhYmxlX3Jvb3QgKnJvb3QsCjE0NDc0OiAgaW50ICgqaXNfc2Vlbikoc3RydWN0IGN0bF90YWJs ZV9zZXQgKikpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgcmV0aXJlX3N5c2N0bF9zZXQoc3RydWN0IGN0 bF90YWJsZV9zZXQgKnNldCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGVfaGVhZGVy ICpfX3JlZ2lzdGVyX3N5c2N0bF90YWJsZSgKMTQ0NzQ6ICBzdHJ1Y3QgY3RsX3RhYmxlX3NldCAq c2V0LAoxNDQ3NDogIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlKTsK MTQ0NzQ6IHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICpfX3JlZ2lzdGVyX3N5c2N0bF9wYXRocygK MTQ0NzQ6ICBzdHJ1Y3QgY3RsX3RhYmxlX3NldCAqc2V0LAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBj dGxfcGF0aCAqcGF0aCwgc3RydWN0IGN0bF90YWJsZSAqdGFibGUpOwoxNDQ3NDogc3RydWN0IGN0 bF90YWJsZV9oZWFkZXIgKnJlZ2lzdGVyX3N5c2N0bChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qg Y3RsX3RhYmxlICp0YWJsZSk7CjE0NDc0OiBzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqcmVnaXN0 ZXJfc3lzY3RsX3RhYmxlKHN0cnVjdCBjdGxfdGFibGUgKiB0YWJsZSk7CjE0NDc0OiBzdHJ1Y3Qg Y3RsX3RhYmxlX2hlYWRlciAqcmVnaXN0ZXJfc3lzY3RsX3BhdGhzKGNvbnN0IHN0cnVjdCBjdGxf cGF0aCAqcGF0aCwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlKTsKMTQ0NzQ6 IAoxNDQ3NDogdm9pZCB1bnJlZ2lzdGVyX3N5c2N0bF90YWJsZShzdHJ1Y3QgY3RsX3RhYmxlX2hl YWRlciAqIHRhYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBzeXNjdGxfaW5pdCh2b2lk KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBjdGxfdGFibGUgc3lzY3RsX21vdW50X3Bv aW50W107CjE0NDc0OiAjIDI0MSAiLi9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIgoxNDQ3NDogaW50 IHN5c2N0bF9tYXhfdGhyZWFkcyhzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAox NDQ3NDogICAgICAgICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7 CjE0NDc0OiAjIDE4ICIuL2luY2x1ZGUvbGludXgva2V5LmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9hc3NvY19hcnJheS5oIiAxCjE0NDc0OiAjIDIyICIu L2luY2x1ZGUvbGludXgvYXNzb2NfYXJyYXkuaCIKMTQ0NzQ6IHN0cnVjdCBhc3NvY19hcnJheSB7 CjE0NDc0OiAgc3RydWN0IGFzc29jX2FycmF5X3B0ciAqcm9vdDsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIG5yX2xlYXZlc19vbl90cmVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGFzc29jX2FycmF5X29wcyB7CjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nICgqZ2V0X2tleV9jaHVuaykoY29uc3Qgdm9pZCAqaW5kZXhfa2V5LCBpbnQg bGV2ZWwpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nICgqZ2V0X29iamVj dF9rZXlfY2h1bmspKGNvbnN0IHZvaWQgKm9iamVjdCwgaW50IGxldmVsKTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgYm9vbCAoKmNvbXBhcmVfb2JqZWN0KShjb25zdCB2b2lkICpvYmplY3QsIGNv bnN0IHZvaWQgKmluZGV4X2tleSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBpbnQgKCpkaWZmX29iamVjdHMpKGNvbnN0IHZvaWQgKm9iamVjdCwgY29uc3Qgdm9pZCAq aW5kZXhfa2V5KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmZyZWVfb2JqZWN0KSh2 b2lkICpvYmplY3QpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGFzc29jX2FycmF5X2VkaXQ7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXNzb2Nf YXJyYXlfaW5pdChzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5KQoxNDQ3NDogewoxNDQ3NDogIGFy cmF5LT5yb290ID0gKCh2b2lkICopMCk7CjE0NDc0OiAgYXJyYXktPm5yX2xlYXZlc19vbl90cmVl ID0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBhc3NvY19hcnJheV9pdGVy YXRlKGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCjE0NDc0OiAgICAgICAgICAgaW50 ICgqaXRlcmF0b3IpKGNvbnN0IHZvaWQgKm9iamVjdCwKMTQ0NzQ6ICAgICAgICAgICAgIHZvaWQg Kml0ZXJhdG9yX2RhdGEpLAoxNDQ3NDogICAgICAgICAgIHZvaWQgKml0ZXJhdG9yX2RhdGEpOwox NDQ3NDogZXh0ZXJuIHZvaWQgKmFzc29jX2FycmF5X2ZpbmQoY29uc3Qgc3RydWN0IGFzc29jX2Fy cmF5ICphcnJheSwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMg Km9wcywKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHZvaWQgKmluZGV4X2tleSk7CjE0NDc0OiBleHRl cm4gdm9pZCBhc3NvY19hcnJheV9kZXN0cm95KHN0cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCjE0 NDc0OiAgICAgY29uc3Qgc3RydWN0IGFzc29jX2FycmF5X29wcyAqb3BzKTsKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqYXNzb2NfYXJyYXlfaW5zZXJ0KHN0cnVjdCBhc3Nv Y19hcnJheSAqYXJyYXksCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlf b3BzICpvcHMsCjE0NDc0OiAgICAgICAgICBjb25zdCB2b2lkICppbmRleF9rZXksCjE0NDc0OiAg ICAgICAgICB2b2lkICpvYmplY3QpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgYXNzb2NfYXJyYXlfaW5z ZXJ0X3NldF9vYmplY3Qoc3RydWN0IGFzc29jX2FycmF5X2VkaXQgKmVkaXQsCjE0NDc0OiAgICAg ICAgdm9pZCAqb2JqZWN0KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAq YXNzb2NfYXJyYXlfZGVsZXRlKHN0cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCjE0NDc0OiAgICAg ICAgICBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMsCjE0NDc0OiAgICAgICAgICBj b25zdCB2b2lkICppbmRleF9rZXkpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBhc3NvY19hcnJheV9l ZGl0ICphc3NvY19hcnJheV9jbGVhcihzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAoxNDQ3NDog ICAgICAgICBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMpOwoxNDQ3NDogZXh0ZXJu IHZvaWQgYXNzb2NfYXJyYXlfYXBwbHlfZWRpdChzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqZWRp dCk7CjE0NDc0OiBleHRlcm4gdm9pZCBhc3NvY19hcnJheV9jYW5jZWxfZWRpdChzdHJ1Y3QgYXNz b2NfYXJyYXlfZWRpdCAqZWRpdCk7CjE0NDc0OiBleHRlcm4gaW50IGFzc29jX2FycmF5X2djKHN0 cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19h cnJheV9vcHMgKm9wcywKMTQ0NzQ6ICAgICAgYm9vbCAoKml0ZXJhdG9yKSh2b2lkICpvYmplY3Qs IHZvaWQgKml0ZXJhdG9yX2RhdGEpLAoxNDQ3NDogICAgICB2b2lkICppdGVyYXRvcl9kYXRhKTsK MTQ0NzQ6ICMgMjEgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIGludDMy X3Qga2V5X3NlcmlhbF90OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdWludDMyX3Qg a2V5X3Blcm1fdDsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtleTsKMTQ0NzQ6IHN0cnVjdCBuZXQ7 CjE0NDc0OiAjIDc0ICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiBzdHJ1Y3Qgc2VxX2Zp bGU7CjE0NDc0OiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Q7CjE0NDc0OiBzdHJ1Y3Qgc2lnbmFsX3N0cnVj dDsKMTQ0NzQ6IHN0cnVjdCBjcmVkOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2V5X3R5cGU7CjE0 NDc0OiBzdHJ1Y3Qga2V5X293bmVyOwoxNDQ3NDogc3RydWN0IGtleV90YWc7CjE0NDc0OiBzdHJ1 Y3Qga2V5cmluZ19saXN0OwoxNDQ3NDogc3RydWN0IGtleXJpbmdfbmFtZTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGtleV90YWcgewoxNDQ3NDogIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKMTQ0 NzQ6ICByZWZjb3VudF90IHVzYWdlOwoxNDQ3NDogIGJvb2wgcmVtb3ZlZDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrZXlyaW5nX2luZGV4X2tleSB7CjE0NDc0OiAKMTQ0NzQ6ICB1 bnNpZ25lZCBsb25nIGhhc2g7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3 NDogCjE0NDc0OiAgICB1MTYgZGVzY19sZW47CjE0NDc0OiAgICBjaGFyIGRlc2Nbc2l6ZW9mKGxv bmcpIC0gMl07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgfTsKMTQ0 NzQ6ICAgdW5zaWduZWQgbG9uZyB4OwoxNDQ3NDogIH07CjE0NDc0OiAgc3RydWN0IGtleV90eXBl ICp0eXBlOwoxNDQ3NDogIHN0cnVjdCBrZXlfdGFnICpkb21haW5fdGFnOwoxNDQ3NDogIGNvbnN0 IGNoYXIgKmRlc2NyaXB0aW9uOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24ga2V5X3Bh eWxvYWQgewoxNDQ3NDogIHZvaWQgKnJjdV9kYXRhMDsKMTQ0NzQ6ICB2b2lkICpkYXRhWzRdOwox NDQ3NDogfTsKMTQ0NzQ6ICMgMTMwICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiB0eXBl ZGVmIHN0cnVjdCBfX2tleV9yZWZlcmVuY2Vfd2l0aF9hdHRyaWJ1dGVzICprZXlfcmVmX3Q7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGtleV9yZWZfdCBtYWtlX2tleV9yZWYoY29uc3Qgc3RydWN0IGtleSAqa2V5 LAoxNDQ3NDogICAgICAgICAgYm9vbCBwb3NzZXNzaW9uKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biAoa2V5X3JlZl90KSAoKHVuc2lnbmVkIGxvbmcpIGtleSB8IHBvc3Nlc3Npb24pOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2V5ICprZXlfcmVmX3RvX3B0cihjb25zdCBrZXlfcmVm X3Qga2V5X3JlZikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHN0cnVjdCBrZXkgKikgKCh1bnNp Z25lZCBsb25nKSBrZXlfcmVmICYgfjFVTCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg aXNfa2V5X3Bvc3Nlc3NlZChjb25zdCBrZXlfcmVmX3Qga2V5X3JlZikKMTQ0NzQ6IHsKMTQ0NzQ6 ICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIGtleV9yZWYgJiAxVUw7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHR5cGVkZWYgaW50ICgqa2V5X3Jlc3RyaWN0X2xpbmtfZnVuY190KShzdHJ1Y3Qga2V5 ICpkZXN0X2tleXJpbmcsCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwK MTQ0NzQ6ICAgICAgY29uc3QgdW5pb24ga2V5X3BheWxvYWQgKnBheWxvYWQsCjE0NDc0OiAgICAg IHN0cnVjdCBrZXkgKnJlc3RyaWN0aW9uX2tleSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrZXlf cmVzdHJpY3Rpb24gewoxNDQ3NDogIGtleV9yZXN0cmljdF9saW5rX2Z1bmNfdCBjaGVjazsKMTQ0 NzQ6ICBzdHJ1Y3Qga2V5ICprZXk7CjE0NDc0OiAgc3RydWN0IGtleV90eXBlICprZXl0eXBlOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBrZXlfc3RhdGUgewoxNDQ3NDogIEtFWV9JU19V TklOU1RBTlRJQVRFRCwKMTQ0NzQ6ICBLRVlfSVNfUE9TSVRJVkUsCjE0NDc0OiB9OwoxNDQ3NDog IyAxNzIgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIKMTQ0NzQ6IHN0cnVjdCBrZXkgewoxNDQ3NDog IHJlZmNvdW50X3QgdXNhZ2U7CjE0NDc0OiAga2V5X3NlcmlhbF90IHNlcmlhbDsKMTQ0NzQ6ICB1 bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBsaXN0X2hlYWQgZ3JhdmV5YXJkX2xpbms7CjE0NDc0OiAg IHN0cnVjdCByYl9ub2RlIHNlcmlhbF9ub2RlOwoxNDQ3NDogIH07CjE0NDc0OiAgc3RydWN0IHJ3 X3NlbWFwaG9yZSBzZW07CjE0NDc0OiAgc3RydWN0IGtleV91c2VyICp1c2VyOwoxNDQ3NDogIHZv aWQgKnNlY3VyaXR5OwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgdGltZTY0X3QgZXhwaXJ5Owox NDQ3NDogICB0aW1lNjRfdCByZXZva2VkX2F0OwoxNDQ3NDogIH07CjE0NDc0OiAgdGltZTY0X3Qg bGFzdF91c2VkX2F0OwoxNDQ3NDogIGt1aWRfdCB1aWQ7CjE0NDc0OiAga2dpZF90IGdpZDsKMTQ0 NzQ6ICBrZXlfcGVybV90IHBlcm07CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgcXVvdGFsZW47CjE0 NDc0OiAgdW5zaWduZWQgc2hvcnQgZGF0YWxlbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBzaG9ydCBzdGF0ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGZsYWdzOwoxNDQ3NDogIyAyMTkgIi4vaW5j bHVkZS9saW51eC9rZXkuaCIKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBrZXlyaW5n X2luZGV4X2tleSBpbmRleF9rZXk7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAgICB1bnNpZ25l ZCBsb25nIGhhc2g7CjE0NDc0OiAgICB1bnNpZ25lZCBsb25nIGxlbl9kZXNjOwoxNDQ3NDogICAg c3RydWN0IGtleV90eXBlICp0eXBlOwoxNDQ3NDogICAgc3RydWN0IGtleV90YWcgKmRvbWFpbl90 YWc7CjE0NDc0OiAgICBjaGFyICpkZXNjcmlwdGlvbjsKMTQ0NzQ6ICAgfTsKMTQ0NzQ6ICB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0 NDc0OiAgIHVuaW9uIGtleV9wYXlsb2FkIHBheWxvYWQ7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0 OiAKMTQ0NzQ6ICAgIHN0cnVjdCBsaXN0X2hlYWQgbmFtZV9saW5rOwoxNDQ3NDogICAgc3RydWN0 IGFzc29jX2FycmF5IGtleXM7CjE0NDc0OiAgIH07CjE0NDc0OiAgfTsKMTQ0NzQ6ICMgMjU0ICIu L2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiAgc3RydWN0IGtleV9yZXN0cmljdGlvbiAqcmVz dHJpY3RfbGluazsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2V5ICpr ZXlfYWxsb2Moc3RydWN0IGtleV90eXBlICp0eXBlLAoxNDQ3NDogICAgICAgICBjb25zdCBjaGFy ICpkZXNjLAoxNDQ3NDogICAgICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAoxNDQ3NDogICAg ICAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCwKMTQ0NzQ6ICAgICAgICAga2V5X3Blcm1fdCBw ZXJtLAoxNDQ3NDogICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLAoxNDQ3NDogICAgICAgICBz dHJ1Y3Qga2V5X3Jlc3RyaWN0aW9uICpyZXN0cmljdF9saW5rKTsKMTQ0NzQ6ICMgMjczICIuL2lu Y2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiBleHRlcm4gdm9pZCBrZXlfcmV2b2tlKHN0cnVjdCBr ZXkgKmtleSk7CjE0NDc0OiBleHRlcm4gdm9pZCBrZXlfaW52YWxpZGF0ZShzdHJ1Y3Qga2V5ICpr ZXkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga2V5X3B1dChzdHJ1Y3Qga2V5ICprZXkpOwoxNDQ3NDog ZXh0ZXJuIGJvb2wga2V5X3B1dF90YWcoc3RydWN0IGtleV90YWcgKnRhZyk7CjE0NDc0OiBleHRl cm4gdm9pZCBrZXlfcmVtb3ZlX2RvbWFpbihzdHJ1Y3Qga2V5X3RhZyAqZG9tYWluX3RhZyk7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHN0cnVjdCBrZXkgKl9fa2V5X2dldChzdHJ1Y3Qga2V5ICprZXkpCjE0NDc0 OiB7CjE0NDc0OiAgcmVmY291bnRfaW5jKCZrZXktPnVzYWdlKTsKMTQ0NzQ6ICByZXR1cm4ga2V5 OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2V5ICprZXlfZ2V0KHN0cnVjdCBrZXkg KmtleSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga2V5ID8gX19rZXlfZ2V0KGtleSkgOiBrZXk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2V5X3JlZl9wdXQoa2V5X3JlZl90IGtleV9y ZWYpCjE0NDc0OiB7CjE0NDc0OiAga2V5X3B1dChrZXlfcmVmX3RvX3B0cihrZXlfcmVmKSk7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2V5ICpyZXF1ZXN0X2tleV90YWco c3RydWN0IGtleV90eXBlICp0eXBlLAoxNDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0 aW9uLAoxNDQ3NDogICAgICAgIHN0cnVjdCBrZXlfdGFnICpkb21haW5fdGFnLAoxNDQ3NDogICAg ICAgIGNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1 Y3Qga2V5ICpyZXF1ZXN0X2tleV9yY3Uoc3RydWN0IGtleV90eXBlICp0eXBlLAoxNDQ3NDogICAg ICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAoxNDQ3NDogICAgICAgIHN0cnVjdCBrZXlfdGFn ICpkb21haW5fdGFnKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBrZXkgKnJlcXVlc3Rf a2V5X3dpdGhfYXV4ZGF0YShzdHJ1Y3Qga2V5X3R5cGUgKnR5cGUsCjE0NDc0OiAgICAgICAgICBj b25zdCBjaGFyICpkZXNjcmlwdGlvbiwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBrZXlfdGFnICpk b21haW5fdGFnLAoxNDQ3NDogICAgICAgICAgY29uc3Qgdm9pZCAqY2FsbG91dF9pbmZvLAoxNDQ3 NDogICAgICAgICAgc2l6ZV90IGNhbGxvdXRfbGVuLAoxNDQ3NDogICAgICAgICAgdm9pZCAqYXV4 KTsKMTQ0NzQ6ICMgMzE5ICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2V5 ICpyZXF1ZXN0X2tleShzdHJ1Y3Qga2V5X3R5cGUgKnR5cGUsCjE0NDc0OiAgICAgICAgICAgY29u c3QgY2hhciAqZGVzY3JpcHRpb24sCjE0NDc0OiAgICAgICAgICAgY29uc3QgY2hhciAqY2FsbG91 dF9pbmZvKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiByZXF1ZXN0X2tleV90YWcodHlwZSwgZGVz Y3JpcHRpb24sICgodm9pZCAqKTApLCBjYWxsb3V0X2luZm8pOwoxNDQ3NDogfQoxNDQ3NDogIyAz NTggIi4vaW5jbHVkZS9saW51eC9rZXkuaCIKMTQ0NzQ6IGV4dGVybiBpbnQgd2FpdF9mb3Jfa2V5 X2NvbnN0cnVjdGlvbihzdHJ1Y3Qga2V5ICprZXksIGJvb2wgaW50cik7CjE0NDc0OiAKMTQ0NzQ6 IGV4dGVybiBpbnQga2V5X3ZhbGlkYXRlKGNvbnN0IHN0cnVjdCBrZXkgKmtleSk7CjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiBrZXlfcmVmX3Qga2V5X2NyZWF0ZV9vcl91cGRhdGUoa2V5X3JlZl90IGtl eXJpbmcsCjE0NDc0OiAgICAgICAgICAgY29uc3QgY2hhciAqdHlwZSwKMTQ0NzQ6ICAgICAgICAg ICBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCB2b2lkICpw YXlsb2FkLAoxNDQ3NDogICAgICAgICAgIHNpemVfdCBwbGVuLAoxNDQ3NDogICAgICAgICAgIGtl eV9wZXJtX3QgcGVybSwKMTQ0NzQ6ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBrZXlfdXBkYXRlKGtleV9yZWZfdCBrZXksCjE0NDc0OiAg ICAgICAgIGNvbnN0IHZvaWQgKnBheWxvYWQsCjE0NDc0OiAgICAgICAgIHNpemVfdCBwbGVuKTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBrZXlfbGluayhzdHJ1Y3Qga2V5ICprZXlyaW5nLAox NDQ3NDogICAgICAgc3RydWN0IGtleSAqa2V5KTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBr ZXlfbW92ZShzdHJ1Y3Qga2V5ICprZXksCjE0NDc0OiAgICAgICBzdHJ1Y3Qga2V5ICpmcm9tX2tl eXJpbmcsCjE0NDc0OiAgICAgICBzdHJ1Y3Qga2V5ICp0b19rZXlyaW5nLAoxNDQ3NDogICAgICAg dW5zaWduZWQgaW50IGZsYWdzKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBrZXlfdW5saW5r KHN0cnVjdCBrZXkgKmtleXJpbmcsCjE0NDc0OiAgICAgICAgIHN0cnVjdCBrZXkgKmtleSk7CjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2V5ICprZXlyaW5nX2FsbG9jKGNvbnN0IGNoYXIg KmRlc2NyaXB0aW9uLCBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAoxNDQ3NDogICAgICBjb25zdCBz dHJ1Y3QgY3JlZCAqY3JlZCwKMTQ0NzQ6ICAgICAga2V5X3Blcm1fdCBwZXJtLAoxNDQ3NDogICAg ICB1bnNpZ25lZCBsb25nIGZsYWdzLAoxNDQ3NDogICAgICBzdHJ1Y3Qga2V5X3Jlc3RyaWN0aW9u ICpyZXN0cmljdF9saW5rLAoxNDQ3NDogICAgICBzdHJ1Y3Qga2V5ICpkZXN0KTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCByZXN0cmljdF9saW5rX3JlamVjdChzdHJ1Y3Qga2V5ICprZXlyaW5n LAoxNDQ3NDogICAgIGNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKMTQ0NzQ6ICAgICBjb25z dCB1bmlvbiBrZXlfcGF5bG9hZCAqcGF5bG9hZCwKMTQ0NzQ6ICAgICBzdHJ1Y3Qga2V5ICpyZXN0 cmljdGlvbl9rZXkpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGtleXJpbmdfY2xlYXIoc3Ry dWN0IGtleSAqa2V5cmluZyk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBrZXlfcmVmX3Qga2V5cmlu Z19zZWFyY2goa2V5X3JlZl90IGtleXJpbmcsCjE0NDc0OiAgICAgc3RydWN0IGtleV90eXBlICp0 eXBlLAoxNDQ3NDogICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAoxNDQ3NDogICAgIGJvb2wg cmVjdXJzZSk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQga2V5cmluZ19hZGRfa2V5KHN0cnVj dCBrZXkgKmtleXJpbmcsCjE0NDc0OiAgICAgICBzdHJ1Y3Qga2V5ICprZXkpOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IGtleXJpbmdfcmVzdHJpY3Qoa2V5X3JlZl90IGtleXJpbmcsIGNvbnN0 IGNoYXIgKnR5cGUsCjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqcmVzdHJpY3Rpb24pOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGtleSAqa2V5X2xvb2t1cChrZXlfc2VyaWFsX3QgaWQp OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBrZXlfc2VyaWFsX3Qga2V5X3NlcmlhbChjb25zdCBzdHJ1Y3Qga2V5 ICprZXkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtleSA/IGtleS0+c2VyaWFsIDogMDsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga2V5X3NldF90aW1lb3V0KHN0cnVjdCBr ZXkgKiwgdW5zaWduZWQpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4ga2V5X3JlZl90IGxvb2t1cF91 c2VyX2tleShrZXlfc2VyaWFsX3QgaWQsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCjE0NDc0OiAgICAg IGtleV9wZXJtX3QgcGVybSk7CjE0NDc0OiBleHRlcm4gdm9pZCBrZXlfZnJlZV91c2VyX25zKHN0 cnVjdCB1c2VyX25hbWVzcGFjZSAqKTsKMTQ0NzQ6ICMgNDM0ICIuL2luY2x1ZGUvbGludXgva2V5 LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzaG9ydCBrZXlfcmVhZF9zdGF0ZShjb25zdCBzdHJ1Y3Qga2V5ICprZXkpCjE0 NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gKHsgdHlwZW9mKComa2V5LT5zdGF0ZSkgX19f cDEgPSAoeyB1bmlvbiB7IHR5cGVvZigqJmtleS0+c3RhdGUpIF9fdmFsOyBjaGFyIF9fY1sxXTsg fSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKiZrZXktPnN0YXRlKSwgX191Ll9fYywg c2l6ZW9mKComa2V5LT5zdGF0ZSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCom a2V5LT5zdGF0ZSksIF9fdS5fX2MsIHNpemVvZigqJmtleS0+c3RhdGUpKTsgZG8geyB9IHdoaWxl ICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF80Mzcodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNp emVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiZrZXkt PnN0YXRlKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComa2V5LT5zdGF0ZSkgPT0gc2l6ZW9m KHNob3J0KSB8fCBzaXplb2YoKiZrZXktPnN0YXRlKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2Yo KiZrZXktPnN0YXRlKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfNDM3 KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBf X19wMTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAjIDQ0NyAiLi9pbmNsdWRlL2xpbnV4L2tleS5oIgox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCBrZXlfaXNfcG9zaXRpdmUoY29uc3Qgc3RydWN0IGtleSAqa2V5KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBrZXlfcmVhZF9zdGF0ZShrZXkpID09IEtFWV9JU19QT1NJVElWRTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrZXlfaXNfbmVnYXRpdmUoY29uc3Qgc3RydWN0 IGtleSAqa2V5KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrZXlfcmVhZF9zdGF0ZShrZXkpIDwg MDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNDcwICIuL2luY2x1ZGUvbGludXgva2V5LmgiCjE0NDc0OiBl eHRlcm4gc3RydWN0IGN0bF90YWJsZSBrZXlfc3lzY3Rsc1tdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IGluc3RhbGxfdGhyZWFkX2tleXJpbmdfdG9f Y3JlZChzdHJ1Y3QgY3JlZCAqY3JlZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBrZXlfZnN1aWRfY2hh bmdlZChzdHJ1Y3QgY3JlZCAqbmV3X2NyZWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga2V5X2ZzZ2lk X2NoYW5nZWQoc3RydWN0IGNyZWQgKm5ld19jcmVkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGtleV9p bml0KHZvaWQpOwoxNDQ3NDogIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIgMgoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvc2NoZWQvdXNlci5o IiAxCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L3JhdGVsaW1pdC5oIiAxCjE0NDc0OiAjIDE1 ICIuL2luY2x1ZGUvbGludXgvcmF0ZWxpbWl0LmgiCjE0NDc0OiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0 YXRlIHsKMTQ0NzQ6ICByYXdfc3BpbmxvY2tfdCBsb2NrOwoxNDQ3NDogCjE0NDc0OiAgaW50IGlu dGVydmFsOwoxNDQ3NDogIGludCBidXJzdDsKMTQ0NzQ6ICBpbnQgcHJpbnRlZDsKMTQ0NzQ6ICBp bnQgbWlzc2VkOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgYmVnaW47CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDQwICIuL2luY2x1ZGUvbGludXgvcmF0ZWxp bWl0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHJhdGVsaW1pdF9zdGF0ZV9pbml0KHN0cnVjdCByYXRlbGltaXRf c3RhdGUgKnJzLAoxNDQ3NDogICAgICBpbnQgaW50ZXJ2YWwsIGludCBidXJzdCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBtZW1zZXQocnMsIDAsIHNpemVvZigqcnMpKTsKMTQ0NzQ6IAoxNDQ3NDogIGRvIHsg KigmcnMtPmxvY2spID0gKHJhd19zcGlubG9ja190KSB7IC5yYXdfbG9jayA9IHsgeyAudmFsID0g eyAoMCkgfSB9IH0sIH07IH0gd2hpbGUgKDApOwoxNDQ3NDogIHJzLT5pbnRlcnZhbCA9IGludGVy dmFsOwoxNDQ3NDogIHJzLT5idXJzdCA9IGJ1cnN0OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHJhdGVsaW1pdF9kZWZhdWx0X2luaXQoc3RydWN0IHJhdGVsaW1pdF9zdGF0ZSAqcnMpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHJhdGVsaW1pdF9zdGF0ZV9pbml0KHJzLCAoNSAqIDI1MCks CjE0NDc0OiAgICAgIDEwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByYXRlbGltaXRf c3RhdGVfZXhpdChzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlICpycykKMTQ0NzQ6IHsKMTQ0NzQ6ICBp ZiAoIShycy0+ZmxhZ3MgJiAoKCgoMVVMKSkpIDw8ICgwKSkpKQoxNDQ3NDogICByZXR1cm47CjE0 NDc0OiAKMTQ0NzQ6ICBpZiAocnMtPm1pc3NlZCkgewoxNDQ3NDogICBwcmludGsoIlwwMDEiICI0 IiAiJXM6ICVkIG91dHB1dCBsaW5lcyBzdXBwcmVzc2VkIGR1ZSB0byByYXRlbGltaXRpbmdcbiIs IGdldF9jdXJyZW50KCktPmNvbW0sIHJzLT5taXNzZWQpCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKMTQ0NzQ6ICAgcnMtPm1pc3NlZCA9IDA7CjE0NDc0OiAgfQoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkCjE0NDc0OiByYXRlbGltaXRfc2V0X2ZsYWdzKHN0cnVjdCBy YXRlbGltaXRfc3RhdGUgKnJzLCB1bnNpZ25lZCBsb25nIGZsYWdzKQoxNDQ3NDogewoxNDQ3NDog IHJzLT5mbGFncyA9IGZsYWdzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0 IHJhdGVsaW1pdF9zdGF0ZSBwcmludGtfcmF0ZWxpbWl0X3N0YXRlOwoxNDQ3NDogCjE0NDc0OiBl eHRlcm4gaW50IF9fX3JhdGVsaW1pdChzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlICpycywgY29uc3Qg Y2hhciAqZnVuYyk7CjE0NDc0OiAjIDkgIi4vaW5jbHVkZS9saW51eC9zY2hlZC91c2VyLmgiIDIK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHVzZXJfc3RydWN0 IHsKMTQ0NzQ6ICByZWZjb3VudF90IF9fY291bnQ7CjE0NDc0OiAgYXRvbWljX3QgcHJvY2Vzc2Vz OwoxNDQ3NDogIGF0b21pY190IHNpZ3BlbmRpbmc7CjE0NDc0OiAKMTQ0NzQ6ICBhdG9taWNfdCBm YW5vdGlmeV9saXN0ZW5lcnM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGF0b21pY19sb25nX3Qg ZXBvbGxfd2F0Y2hlczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIG1xX2J5dGVzOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb2NrZWRfc2htOwox NDQ3NDogIHVuc2lnbmVkIGxvbmcgdW5peF9pbmZsaWdodDsKMTQ0NzQ6ICBhdG9taWNfbG9uZ190 IHBpcGVfYnVmczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGhsaXN0X25vZGUgdWlk aGFzaF9ub2RlOwoxNDQ3NDogIGt1aWRfdCB1aWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgYXRvbWljX2xvbmdfdCBsb2NrZWRfdm07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHJhdGVsaW1pdF9zdGF0ZSByYXRlbGltaXQ7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBleHRlcm4gaW50IHVpZHNfc3lzZnNfaW5pdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVjdCAqZmluZF91c2VyKGt1aWRfdCk7CjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3Qgcm9vdF91c2VyOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0ICogYWxsb2Nf dWlkKGt1aWRfdCk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKmdldF91aWQoc3RydWN0IHVz ZXJfc3RydWN0ICp1KQoxNDQ3NDogewoxNDQ3NDogIHJlZmNvdW50X2luYygmdS0+X19jb3VudCk7 CjE0NDc0OiAgcmV0dXJuIHU7CjE0NDc0OiB9CjE0NDc0OiBleHRlcm4gdm9pZCBmcmVlX3VpZChz dHJ1Y3QgdXNlcl9zdHJ1Y3QgKik7CjE0NDc0OiAjIDE4ICIuL2luY2x1ZGUvbGludXgvY3JlZC5o IiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjcmVkOwoxNDQ3NDogc3RydWN0IGlub2RlOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ3JvdXBfaW5mbyB7CjE0 NDc0OiAgYXRvbWljX3QgdXNhZ2U7CjE0NDc0OiAgaW50IG5ncm91cHM7CjE0NDc0OiAga2dpZF90 IGdpZFswXTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwox NDQ3NDogIyA0MCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBncm91cF9p bmZvICpnZXRfZ3JvdXBfaW5mbyhzdHJ1Y3QgZ3JvdXBfaW5mbyAqZ2kpCjE0NDc0OiB7CjE0NDc0 OiAgYXRvbWljX2luYygmZ2ktPnVzYWdlKTsKMTQ0NzQ6ICByZXR1cm4gZ2k7CjE0NDc0OiB9CjE0 NDc0OiAjIDU2ICIuL2luY2x1ZGUvbGludXgvY3JlZC5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBn cm91cF9pbmZvIGluaXRfZ3JvdXBzOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGdyb3Vw X2luZm8gKmdyb3Vwc19hbGxvYyhpbnQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZ3JvdXBzX2ZyZWUo c3RydWN0IGdyb3VwX2luZm8gKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgaW5fZ3JvdXBf cChrZ2lkX3QpOwoxNDQ3NDogZXh0ZXJuIGludCBpbl9lZ3JvdXBfcChrZ2lkX3QpOwoxNDQ3NDog ZXh0ZXJuIGludCBncm91cHNfc2VhcmNoKGNvbnN0IHN0cnVjdCBncm91cF9pbmZvICosIGtnaWRf dCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgc2V0X2N1cnJlbnRfZ3JvdXBzKHN0cnVjdCBn cm91cF9pbmZvICopOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0X2dyb3VwcyhzdHJ1Y3QgY3JlZCAq LCBzdHJ1Y3QgZ3JvdXBfaW5mbyAqKTsKMTQ0NzQ6IGV4dGVybiBib29sIG1heV9zZXRncm91cHMo dm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBncm91cHNfc29ydChzdHJ1Y3QgZ3JvdXBfaW5mbyAq KTsKMTQ0NzQ6ICMgMTExICIuL2luY2x1ZGUvbGludXgvY3JlZC5oIgoxNDQ3NDogc3RydWN0IGNy ZWQgewoxNDQ3NDogIGF0b21pY190IHVzYWdlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAga3VpZF90IHVpZDsKMTQ0NzQ6ICBr Z2lkX3QgZ2lkOwoxNDQ3NDogIGt1aWRfdCBzdWlkOwoxNDQ3NDogIGtnaWRfdCBzZ2lkOwoxNDQ3 NDogIGt1aWRfdCBldWlkOwoxNDQ3NDogIGtnaWRfdCBlZ2lkOwoxNDQ3NDogIGt1aWRfdCBmc3Vp ZDsKMTQ0NzQ6ICBrZ2lkX3QgZnNnaWQ7CjE0NDc0OiAgdW5zaWduZWQgc2VjdXJlYml0czsKMTQ0 NzQ6ICBrZXJuZWxfY2FwX3QgY2FwX2luaGVyaXRhYmxlOwoxNDQ3NDogIGtlcm5lbF9jYXBfdCBj YXBfcGVybWl0dGVkOwoxNDQ3NDogIGtlcm5lbF9jYXBfdCBjYXBfZWZmZWN0aXZlOwoxNDQ3NDog IGtlcm5lbF9jYXBfdCBjYXBfYnNldDsKMTQ0NzQ6ICBrZXJuZWxfY2FwX3QgY2FwX2FtYmllbnQ7 CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGppdF9rZXlyaW5nOwoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGtleSAqc2Vzc2lvbl9rZXlyaW5nOwoxNDQ3NDogIHN0cnVjdCBrZXkgKnByb2Nl c3Nfa2V5cmluZzsKMTQ0NzQ6ICBzdHJ1Y3Qga2V5ICp0aHJlYWRfa2V5cmluZzsKMTQ0NzQ6ICBz dHJ1Y3Qga2V5ICpyZXF1ZXN0X2tleV9hdXRoOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lk ICpzZWN1cml0eTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsKMTQ0 NzQ6ICBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnVzZXJfbnM7CjE0NDc0OiAgc3RydWN0IGdyb3Vw X2luZm8gKmdyb3VwX2luZm87CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIGludCBu b25fcmN1OwoxNDQ3NDogICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCByY3U7CjE0NDc0OiAgfTsKMTQ0 NzQ6IH0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwoxNDQ3NDogCjE0NDc0 OiBleHRlcm4gdm9pZCBfX3B1dF9jcmVkKHN0cnVjdCBjcmVkICopOwoxNDQ3NDogZXh0ZXJuIHZv aWQgZXhpdF9jcmVkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CjE0NDc0OiBleHRlcm4gaW50IGNv cHlfY3JlZHMoc3RydWN0IHRhc2tfc3RydWN0ICosIHVuc2lnbmVkIGxvbmcpOwoxNDQ3NDogZXh0 ZXJuIGNvbnN0IHN0cnVjdCBjcmVkICpnZXRfdGFza19jcmVkKHN0cnVjdCB0YXNrX3N0cnVjdCAq KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgY3JlZCAqY3JlZF9hbGxvY19ibGFuayh2b2lkKTsKMTQ0 NzQ6IGV4dGVybiBzdHJ1Y3QgY3JlZCAqcHJlcGFyZV9jcmVkcyh2b2lkKTsKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgY3JlZCAqcHJlcGFyZV9leGVjX2NyZWRzKHZvaWQpOwoxNDQ3NDogZXh0ZXJuIGlu dCBjb21taXRfY3JlZHMoc3RydWN0IGNyZWQgKik7CjE0NDc0OiBleHRlcm4gdm9pZCBhYm9ydF9j cmVkcyhzdHJ1Y3QgY3JlZCAqKTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgY3JlZCAqb3Zl cnJpZGVfY3JlZHMoY29uc3Qgc3RydWN0IGNyZWQgKik7CjE0NDc0OiBleHRlcm4gdm9pZCByZXZl cnRfY3JlZHMoY29uc3Qgc3RydWN0IGNyZWQgKik7CjE0NDc0OiBleHRlcm4gc3RydWN0IGNyZWQg KnByZXBhcmVfa2VybmVsX2NyZWQoc3RydWN0IHRhc2tfc3RydWN0ICopOwoxNDQ3NDogZXh0ZXJu IGludCBjaGFuZ2VfY3JlYXRlX2ZpbGVzX2FzKHN0cnVjdCBjcmVkICosIHN0cnVjdCBpbm9kZSAq KTsKMTQ0NzQ6IGV4dGVybiBpbnQgc2V0X3NlY3VyaXR5X292ZXJyaWRlKHN0cnVjdCBjcmVkICos IHUzMik7CjE0NDc0OiBleHRlcm4gaW50IHNldF9zZWN1cml0eV9vdmVycmlkZV9mcm9tX2N0eChz dHJ1Y3QgY3JlZCAqLCBjb25zdCBjaGFyICopOwoxNDQ3NDogZXh0ZXJuIGludCBzZXRfY3JlYXRl X2ZpbGVzX2FzKHN0cnVjdCBjcmVkICosIHN0cnVjdCBpbm9kZSAqKTsKMTQ0NzQ6IGV4dGVybiBp bnQgY3JlZF9mc2NtcChjb25zdCBzdHJ1Y3QgY3JlZCAqLCBjb25zdCBzdHJ1Y3QgY3JlZCAqKTsK MTQ0NzQ6IGV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0 IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIGNyZWRfaW5pdCh2b2lkKTsKMTQ0NzQ6ICMg MjAzICIuL2luY2x1ZGUvbGludXgvY3JlZC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB2YWxpZGF0ZV9jcmVkcyhj b25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCkKMTQ0NzQ6IHsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdmFs aWRhdGVfY3JlZHNfZm9yX2RvX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCjE0NDc0OiB7 CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHZhbGlkYXRlX3Byb2Nlc3NfY3JlZHModm9pZCkKMTQ0NzQ6 IHsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNhcF9hbWJpZW50X2ludmFy aWFudF9vayhjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g Y2FwX2lzc3Vic2V0KGNyZWQtPmNhcF9hbWJpZW50LAoxNDQ3NDogICAgICAgIGNhcF9pbnRlcnNl Y3QoY3JlZC0+Y2FwX3Blcm1pdHRlZCwKMTQ0NzQ6ICAgICAgICBjcmVkLT5jYXBfaW5oZXJpdGFi bGUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjI4ICIuL2luY2x1ZGUvbGludXgvY3JlZC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGNyZWQgKmdldF9uZXdfY3JlZChzdHJ1Y3QgY3JlZCAqY3JlZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBhdG9taWNfaW5jKCZjcmVkLT51c2FnZSk7CjE0NDc0OiAgcmV0dXJuIGNyZWQ7CjE0 NDc0OiB9CjE0NDc0OiAjIDI0NyAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0 IHN0cnVjdCBjcmVkICpnZXRfY3JlZChjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCkKMTQ0NzQ6IHsK MTQ0NzQ6ICBzdHJ1Y3QgY3JlZCAqbm9uY29uc3RfY3JlZCA9IChzdHJ1Y3QgY3JlZCAqKSBjcmVk OwoxNDQ3NDogIGlmICghY3JlZCkKMTQ0NzQ6ICAgcmV0dXJuIGNyZWQ7CjE0NDc0OiAgdmFsaWRh dGVfY3JlZHMoY3JlZCk7CjE0NDc0OiAgbm9uY29uc3RfY3JlZC0+bm9uX3JjdSA9IDA7CjE0NDc0 OiAgcmV0dXJuIGdldF9uZXdfY3JlZChub25jb25zdF9jcmVkKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgY29uc3Qgc3RydWN0IGNyZWQgKmdldF9jcmVkX3JjdShjb25zdCBzdHJ1Y3QgY3JlZCAq Y3JlZCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgY3JlZCAqbm9uY29uc3RfY3JlZCA9IChzdHJ1 Y3QgY3JlZCAqKSBjcmVkOwoxNDQ3NDogIGlmICghY3JlZCkKMTQ0NzQ6ICAgcmV0dXJuICgodm9p ZCAqKTApOwoxNDQ3NDogIGlmICghYXRvbWljX2luY19ub3RfemVybygmbm9uY29uc3RfY3JlZC0+ dXNhZ2UpKQoxNDQ3NDogICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiAgdmFsaWRhdGVfY3Jl ZHMoY3JlZCk7CjE0NDc0OiAgbm9uY29uc3RfY3JlZC0+bm9uX3JjdSA9IDA7CjE0NDc0OiAgcmV0 dXJuIGNyZWQ7CjE0NDc0OiB9CjE0NDc0OiAjIDI4MCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgcHV0X2NyZWQoY29uc3Qgc3RydWN0IGNyZWQgKl9jcmVkKQoxNDQ3NDogewox NDQ3NDogIHN0cnVjdCBjcmVkICpjcmVkID0gKHN0cnVjdCBjcmVkICopIF9jcmVkOwoxNDQ3NDog CjE0NDc0OiAgaWYgKGNyZWQpIHsKMTQ0NzQ6ICAgdmFsaWRhdGVfY3JlZHMoY3JlZCk7CjE0NDc0 OiAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCYoY3JlZCktPnVzYWdlKSkKMTQ0NzQ6ICAgIF9f cHV0X2NyZWQoY3JlZCk7CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogIyAzOTAgIi4vaW5jbHVk ZS9saW51eC9jcmVkLmgiCjE0NDc0OiBleHRlcm4gc3RydWN0IHVzZXJfbmFtZXNwYWNlIGluaXRf dXNlcl9uczsKMTQ0NzQ6ICMgMTMgIi4vaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBzZXFfb3BlcmF0aW9uczsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNl cV9maWxlIHsKMTQ0NzQ6ICBjaGFyICpidWY7CjE0NDc0OiAgc2l6ZV90IHNpemU7CjE0NDc0OiAg c2l6ZV90IGZyb207CjE0NDc0OiAgc2l6ZV90IGNvdW50OwoxNDQ3NDogIHNpemVfdCBwYWRfdW50 aWw7CjE0NDc0OiAgbG9mZl90IGluZGV4OwoxNDQ3NDogIGxvZmZfdCByZWFkX3BvczsKMTQ0NzQ6 ICB1NjQgdmVyc2lvbjsKMTQ0NzQ6ICBzdHJ1Y3QgbXV0ZXggbG9jazsKMTQ0NzQ6ICBjb25zdCBz dHJ1Y3Qgc2VxX29wZXJhdGlvbnMgKm9wOwoxNDQ3NDogIGludCBwb2xsX2V2ZW50OwoxNDQ3NDog IGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlOwoxNDQ3NDogIHZvaWQgKnByaXZhdGU7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgewoxNDQ3NDogIHZvaWQgKiAo KnN0YXJ0KSAoc3RydWN0IHNlcV9maWxlICptLCBsb2ZmX3QgKnBvcyk7CjE0NDc0OiAgdm9pZCAo KnN0b3ApIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpOwoxNDQ3NDogIHZvaWQgKiAoKm5l eHQpIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYsIGxvZmZfdCAqcG9zKTsKMTQ0NzQ6ICBp bnQgKCpzaG93KSAoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KTsKMTQ0NzQ6IH07CjE0NDc0 OiAjIDUxICIuL2luY2x1ZGUvbGludXgvc2VxX2ZpbGUuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2VxX2hhc19v dmVyZmxvd2VkKHN0cnVjdCBzZXFfZmlsZSAqbSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gbS0+ Y291bnQgPT0gbS0+c2l6ZTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjQgIi4vaW5jbHVkZS9saW51eC9z ZXFfZmlsZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc2l6ZV90IHNlcV9nZXRfYnVmKHN0cnVjdCBzZXFfZmlsZSAqbSwg Y2hhciAqKmJ1ZnApCjE0NDc0OiB7CjE0NDc0OiAgZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCgh IShtLT5jb3VudCA+IG0tPnNpemUpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGls ZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJs ZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6 YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpm aWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMy IiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9u IiA6IDogImkiICgiaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIiksICJpIiAoNjYpLCAiaSIgKDAp LCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBh c20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxl XG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMzMp KTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogIGlmIChtLT5jb3VudCA8IG0t PnNpemUpCjE0NDc0OiAgICpidWZwID0gbS0+YnVmICsgbS0+Y291bnQ7CjE0NDc0OiAgZWxzZQox NDQ3NDogICAqYnVmcCA9ICgodm9pZCAqKTApOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIG0tPnNp emUgLSBtLT5jb3VudDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgODQgIi4vaW5jbHVkZS9saW51eC9zZXFf ZmlsZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXFfY29tbWl0KHN0cnVjdCBzZXFfZmlsZSAqbSwgaW50IG51 bSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAobnVtIDwgMCkgewoxNDQ3NDogICBtLT5jb3VudCA9IG0t PnNpemU7CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6ICAgZG8geyBpZiAoX19idWlsdGluX2V4cGVj dCghIShtLT5jb3VudCArIG51bSA+IG0tPnNpemUpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGlu ZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBf X2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1 Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVn X2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0 LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5w b3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIiksICJpIiAoODkp LCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsg ZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVu cmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6 ICJpIiAoMzQpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgp OyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwoxNDQ3NDogICBtLT5jb3Vu dCArPSBudW07CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogIyAxMDIgIi4vaW5jbHVkZS9saW51 eC9zZXFfZmlsZS5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXFfc2V0d2lkdGgoc3RydWN0IHNlcV9maWxlICpt LCBzaXplX3Qgc2l6ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBtLT5wYWRfdW50aWwgPSBtLT5jb3VudCAr IHNpemU7CjE0NDc0OiB9CjE0NDc0OiB2b2lkIHNlcV9wYWQoc3RydWN0IHNlcV9maWxlICptLCBj aGFyIGMpOwoxNDQ3NDogCjE0NDc0OiBjaGFyICptYW5nbGVfcGF0aChjaGFyICpzLCBjb25zdCBj aGFyICpwLCBjb25zdCBjaGFyICplc2MpOwoxNDQ3NDogaW50IHNlcV9vcGVuKHN0cnVjdCBmaWxl ICosIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyAqKTsKMTQ0NzQ6IHNzaXplX3Qgc2VxX3Jl YWQoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKMTQ0NzQ6IGxvZmZf dCBzZXFfbHNlZWsoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwoxNDQ3NDogaW50IHNlcV9y ZWxlYXNlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKMTQ0NzQ6IGludCBzZXFfd3Jp dGUoc3RydWN0IHNlcV9maWxlICpzZXEsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwox NDQ3NDogCjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMCkpKQox NDQ3NDogdm9pZCBzZXFfdnByaW50ZihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKmZt dCwgdmFfbGlzdCBhcmdzKTsKMTQ0NzQ6IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRm LCAyLCAzKSkpCjE0NDc0OiB2b2lkIHNlcV9wcmludGYoc3RydWN0IHNlcV9maWxlICptLCBjb25z dCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiB2b2lkIHNlcV9wdXRjKHN0cnVjdCBzZXFfZmlsZSAq bSwgY2hhciBjKTsKMTQ0NzQ6IHZvaWQgc2VxX3B1dHMoc3RydWN0IHNlcV9maWxlICptLCBjb25z dCBjaGFyICpzKTsKMTQ0NzQ6IHZvaWQgc2VxX3B1dF9kZWNpbWFsX3VsbF93aWR0aChzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKmRlbGltaXRlciwKMTQ0NzQ6ICAgICAgICAgICB1bnNp Z25lZCBsb25nIGxvbmcgbnVtLCB1bnNpZ25lZCBpbnQgd2lkdGgpOwoxNDQ3NDogdm9pZCBzZXFf cHV0X2RlY2ltYWxfdWxsKHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqZGVsaW1pdGVy LAoxNDQ3NDogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBudW0pOwoxNDQ3NDogdm9pZCBzZXFfcHV0 X2RlY2ltYWxfbGwoc3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpkZWxpbWl0ZXIsIGxv bmcgbG9uZyBudW0pOwoxNDQ3NDogdm9pZCBzZXFfcHV0X2hleF9sbChzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIGNvbnN0IGNoYXIgKmRlbGltaXRlciwKMTQ0NzQ6ICAgICAgIHVuc2lnbmVkIGxvbmcgbG9u ZyB2LCB1bnNpZ25lZCBpbnQgd2lkdGgpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHNlcV9lc2NhcGUo c3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplc2MpOwoxNDQ3 NDogdm9pZCBzZXFfZXNjYXBlX21lbV9hc2NpaShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNo YXIgKnNyYywgc2l6ZV90IGlzeik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2VxX2hleF9kdW1wKHN0 cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqcHJlZml4X3N0ciwgaW50IHByZWZpeF90eXBl LAoxNDQ3NDogICAgIGludCByb3dzaXplLCBpbnQgZ3JvdXBzaXplLCBjb25zdCB2b2lkICpidWYs IHNpemVfdCBsZW4sCjE0NDc0OiAgICAgYm9vbCBhc2NpaSk7CjE0NDc0OiAKMTQ0NzQ6IGludCBz ZXFfcGF0aChzdHJ1Y3Qgc2VxX2ZpbGUgKiwgY29uc3Qgc3RydWN0IHBhdGggKiwgY29uc3QgY2hh ciAqKTsKMTQ0NzQ6IGludCBzZXFfZmlsZV9wYXRoKHN0cnVjdCBzZXFfZmlsZSAqLCBzdHJ1Y3Qg ZmlsZSAqLCBjb25zdCBjaGFyICopOwoxNDQ3NDogaW50IHNlcV9kZW50cnkoc3RydWN0IHNlcV9m aWxlICosIHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqKTsKMTQ0NzQ6IGludCBzZXFfcGF0 aF9yb290KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3Qgc3RydWN0IHBhdGggKnBhdGgsCjE0NDc0 OiAgICAgY29uc3Qgc3RydWN0IHBhdGggKnJvb3QsIGNvbnN0IGNoYXIgKmVzYyk7CjE0NDc0OiAK MTQ0NzQ6IGludCBzaW5nbGVfb3BlbihzdHJ1Y3QgZmlsZSAqLCBpbnQgKCopKHN0cnVjdCBzZXFf ZmlsZSAqLCB2b2lkICopLCB2b2lkICopOwoxNDQ3NDogaW50IHNpbmdsZV9vcGVuX3NpemUoc3Ry dWN0IGZpbGUgKiwgaW50ICgqKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgdm9pZCAqKSwgdm9pZCAqLCBz aXplX3QpOwoxNDQ3NDogaW50IHNpbmdsZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qg ZmlsZSAqKTsKMTQ0NzQ6IHZvaWQgKl9fc2VxX29wZW5fcHJpdmF0ZShzdHJ1Y3QgZmlsZSAqLCBj b25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgKiwgaW50KTsKMTQ0NzQ6IGludCBzZXFfb3Blbl9w cml2YXRlKHN0cnVjdCBmaWxlICosIGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyAqLCBpbnQp OwoxNDQ3NDogaW50IHNlcV9yZWxlYXNlX3ByaXZhdGUoc3RydWN0IGlub2RlICosIHN0cnVjdCBm aWxlICopOwoxNDQ3NDogIyAxNzYgIi4vaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIgoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IHVzZXJfbmFtZXNwYWNlICpzZXFfdXNlcl9ucyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSkK MTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBzZXEtPmZpbGUtPmZfY3JlZC0+dXNlcl9u czsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNl cV9zaG93X29wdGlvbihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0 OiAgICAgICAgY29uc3QgY2hhciAqdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgc2VxX3B1dGMobSwg JywnKTsKMTQ0NzQ6ICBzZXFfZXNjYXBlKG0sIG5hbWUsICIsPSBcdFxuXFwiKTsKMTQ0NzQ6ICBp ZiAodmFsdWUpIHsKMTQ0NzQ6ICAgc2VxX3B1dGMobSwgJz0nKTsKMTQ0NzQ6ICAgc2VxX2VzY2Fw ZShtLCB2YWx1ZSwgIiwgXHRcblxcIik7CjE0NDc0OiAgfQoxNDQ3NDogfQoxNDQ3NDogIyAyMjYg Ii4vaW5jbHVkZS9saW51eC9zZXFfZmlsZS5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBsaXN0X2hl YWQgKnNlcV9saXN0X3N0YXJ0KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCjE0NDc0OiAgIGxvZmZf dCBwb3MpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgKnNlcV9saXN0X3N0YXJ0X2hl YWQoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgbG9mZl90IHBvcyk7CjE0NDc0OiBl eHRlcm4gc3RydWN0IGxpc3RfaGVhZCAqc2VxX2xpc3RfbmV4dCh2b2lkICp2LCBzdHJ1Y3QgbGlz dF9oZWFkICpoZWFkLAoxNDQ3NDogICBsb2ZmX3QgKnBwb3MpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqc2Vx X2hsaXN0X3N0YXJ0KHN0cnVjdCBobGlzdF9oZWFkICpoZWFkLAoxNDQ3NDogICAgICAgIGxvZmZf dCBwb3MpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3Rfc3RhcnRf aGVhZChzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgICAgICAgIGxvZmZfdCBw b3MpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3RfbmV4dCh2b2lk ICp2LCBzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgIGxvZmZfdCAqcHBvcyk7 CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqc2VxX2hsaXN0X3N0YXJ0 X3JjdShzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgICAgICAgbG9mZl90IHBv cyk7CjE0NDc0OiBleHRlcm4gc3RydWN0IGhsaXN0X25vZGUgKnNlcV9obGlzdF9zdGFydF9oZWFk X3JjdShzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwKMTQ0NzQ6ICAgICAgICAgIGxvZmZfdCBwb3Mp OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3RfbmV4dF9yY3Uodm9p ZCAqdiwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBobGlzdF9oZWFkICpoZWFkLAoxNDQ3NDogICAg ICAgICAgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0 IGhsaXN0X25vZGUgKnNlcV9obGlzdF9zdGFydF9wZXJjcHUoc3RydWN0IGhsaXN0X2hlYWQgKmhl YWQsIGludCAqY3B1LCBsb2ZmX3QgcG9zKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBo bGlzdF9ub2RlICpzZXFfaGxpc3RfbmV4dF9wZXJjcHUodm9pZCAqdiwgc3RydWN0IGhsaXN0X2hl YWQgKmhlYWQsIGludCAqY3B1LCBsb2ZmX3QgKnBvcyk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgc2Vx X2ZpbGVfaW5pdCh2b2lkKTsKMTQ0NzQ6ICMgMzIgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50Lmgi IDIKMTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIiAxCjE0NDc0OiAjIDE1ICIu L2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9kZXZf cHJpbnRrLmgiIDEKMTQ0NzQ6ICMgMjIgIi4vaW5jbHVkZS9saW51eC9kZXZfcHJpbnRrLmgiCjE0 NDc0OiBzdHJ1Y3QgZGV2aWNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDApKSkgX19hdHRyaWJ1dGVfXygoX19jb2xk X18pKQoxNDQ3NDogaW50IGRldl92cHJpbnRrX2VtaXQoaW50IGxldmVsLCBjb25zdCBzdHJ1Y3Qg ZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3Mp OwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkgX19hdHRy aWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogaW50IGRldl9wcmludGtfZW1pdChpbnQgbGV2ZWws IGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDog CjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKSBfX2F0dHJp YnV0ZV9fKChfX2NvbGRfXykpCjE0NDc0OiB2b2lkIGRldl9wcmludGsoY29uc3QgY2hhciAqbGV2 ZWwsIGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwKMTQ0NzQ6ICAgY29uc3QgY2hhciAqZm10LCAu Li4pOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkgX19h dHRyaWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogdm9pZCBfZGV2X2VtZXJnKGNvbnN0IHN0cnVj dCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1dGVf XygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQox NDQ3NDogdm9pZCBfZGV2X2FsZXJ0KGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hh ciAqZm10LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIs IDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogdm9pZCBfZGV2X2NyaXQoY29u c3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiBfX2F0 dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpCjE0NDc0OiB2b2lkIF9kZXZfZXJyKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgY29u c3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu dGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogdm9pZCBfZGV2X3dh cm4oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLik7CjE0NDc0 OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBfX2F0dHJpYnV0ZV9f KChfX2NvbGRfXykpCjE0NDc0OiB2b2lkIF9kZXZfbm90aWNlKGNvbnN0IHN0cnVjdCBkZXZpY2Ug KmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3Jt YXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQoxNDQ3NDogdm9p ZCBfZGV2X2luZm8oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4u Lik7CjE0NDc0OiAjIDE2ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKMTQ0NzQ6ICMgMSAi Li9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oIiAxCjE0NDc0OiAjIDIwICIuL2luY2x1ZGUvbGludXgv aW9wb3J0LmgiCjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2UgewoxNDQ3NDogIHJlc291cmNlX3NpemVf dCBzdGFydDsKMTQ0NzQ6ICByZXNvdXJjZV9zaXplX3QgZW5kOwoxNDQ3NDogIGNvbnN0IGNoYXIg Km5hbWU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBmbGFnczsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25n IGRlc2M7CjE0NDc0OiAgc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpzaWJsaW5nLCAqY2hpbGQ7 CjE0NDc0OiB9OwoxNDQ3NDogIyAxMjggIi4vaW5jbHVkZS9saW51eC9pb3BvcnQuaCIKMTQ0NzQ6 IGVudW0gewoxNDQ3NDogIElPUkVTX0RFU0NfTk9ORSA9IDAsCjE0NDc0OiAgSU9SRVNfREVTQ19D UkFTSF9LRVJORUwgPSAxLAoxNDQ3NDogIElPUkVTX0RFU0NfQUNQSV9UQUJMRVMgPSAyLAoxNDQ3 NDogIElPUkVTX0RFU0NfQUNQSV9OVl9TVE9SQUdFID0gMywKMTQ0NzQ6ICBJT1JFU19ERVNDX1BF UlNJU1RFTlRfTUVNT1JZID0gNCwKMTQ0NzQ6ICBJT1JFU19ERVNDX1BFUlNJU1RFTlRfTUVNT1JZ X0xFR0FDWSA9IDUsCjE0NDc0OiAgSU9SRVNfREVTQ19ERVZJQ0VfUFJJVkFURV9NRU1PUlkgPSA2 LAoxNDQ3NDogIElPUkVTX0RFU0NfUkVTRVJWRUQgPSA3LAoxNDQ3NDogIElPUkVTX0RFU0NfU09G VF9SRVNFUlZFRCA9IDgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBJT1JFU19NQVBfU1lTVEVNX1JBTSA9ICgoKCgxVUwpKSkg PDwgKDApKSwKMTQ0NzQ6ICBJT1JFU19NQVBfRU5DUllQVEVEID0gKCgoKDFVTCkpKSA8PCAoMSkp LAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTc5ICIuL2luY2x1ZGUvbGludXgvaW9wb3J0LmgiCjE0NDc0 OiBleHRlcm4gc3RydWN0IHJlc291cmNlIGlvcG9ydF9yZXNvdXJjZTsKMTQ0NzQ6IGV4dGVybiBz dHJ1Y3QgcmVzb3VyY2UgaW9tZW1fcmVzb3VyY2U7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1 Y3QgcmVzb3VyY2UgKnJlcXVlc3RfcmVzb3VyY2VfY29uZmxpY3Qoc3RydWN0IHJlc291cmNlICpy b290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CjE0NDc0OiBleHRlcm4gaW50IHJlcXVlc3RfcmVz b3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CjE0NDc0 OiBleHRlcm4gaW50IHJlbGVhc2VfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpuZXcpOwoxNDQ3 NDogdm9pZCByZWxlYXNlX2NoaWxkX3Jlc291cmNlcyhzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CjE0 NDc0OiBleHRlcm4gdm9pZCByZXNlcnZlX3JlZ2lvbl93aXRoX3NwbGl0KHN0cnVjdCByZXNvdXJj ZSAqcm9vdCwKMTQ0NzQ6ICAgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9z aXplX3QgZW5kLAoxNDQ3NDogICAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKMTQ0NzQ6IGV4dGVy biBzdHJ1Y3QgcmVzb3VyY2UgKmluc2VydF9yZXNvdXJjZV9jb25mbGljdChzdHJ1Y3QgcmVzb3Vy Y2UgKnBhcmVudCwgc3RydWN0IHJlc291cmNlICpuZXcpOwoxNDQ3NDogZXh0ZXJuIGludCBpbnNl cnRfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpwYXJlbnQsIHN0cnVjdCByZXNvdXJjZSAqbmV3 KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGluc2VydF9yZXNvdXJjZV9leHBhbmRfdG9fZml0KHN0cnVj dCByZXNvdXJjZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpuZXcpOwoxNDQ3NDogZXh0ZXJuIGlu dCByZW1vdmVfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpvbGQpOwoxNDQ3NDogZXh0ZXJuIHZv aWQgYXJjaF9yZW1vdmVfcmVzZXJ2YXRpb25zKHN0cnVjdCByZXNvdXJjZSAqYXZhaWwpOwoxNDQ3 NDogZXh0ZXJuIGludCBhbGxvY2F0ZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHN0 cnVjdCByZXNvdXJjZSAqbmV3LAoxNDQ3NDogICAgICAgICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwg cmVzb3VyY2Vfc2l6ZV90IG1pbiwKMTQ0NzQ6ICAgICAgICAgcmVzb3VyY2Vfc2l6ZV90IG1heCwg cmVzb3VyY2Vfc2l6ZV90IGFsaWduLAoxNDQ3NDogICAgICAgICByZXNvdXJjZV9zaXplX3QgKCph bGlnbmYpKHZvaWQgKiwKMTQ0NzQ6ICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2Ug KiwKMTQ0NzQ6ICAgICAgICAgICAgICByZXNvdXJjZV9zaXplX3QsCjE0NDc0OiAgICAgICAgICAg ICAgcmVzb3VyY2Vfc2l6ZV90KSwKMTQ0NzQ6ICAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwox NDQ3NDogc3RydWN0IHJlc291cmNlICpsb29rdXBfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpy b290LCByZXNvdXJjZV9zaXplX3Qgc3RhcnQpOwoxNDQ3NDogaW50IGFkanVzdF9yZXNvdXJjZShz dHJ1Y3QgcmVzb3VyY2UgKnJlcywgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAoxNDQ3NDogICAgICAg cmVzb3VyY2Vfc2l6ZV90IHNpemUpOwoxNDQ3NDogcmVzb3VyY2Vfc2l6ZV90IHJlc291cmNlX2Fs aWdubWVudChzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSByZXNvdXJjZV9zaXplX3QgcmVz b3VyY2Vfc2l6ZShjb25zdCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVk IGxvbmcgcmVzb3VyY2VfdHlwZShjb25zdCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gcmVzLT5mbGFncyAmIDB4MDAwMDFmMDA7CjE0NDc0OiB9CjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1 bnNpZ25lZCBsb25nIHJlc291cmNlX2V4dF90eXBlKGNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVz KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiByZXMtPmZsYWdzICYgMHgwMTAwMDAwMDsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCByZXNvdXJjZV9jb250YWlucyhzdHJ1Y3QgcmVzb3VyY2Ug KnIxLCBzdHJ1Y3QgcmVzb3VyY2UgKnIyKQoxNDQ3NDogewoxNDQ3NDogIGlmIChyZXNvdXJjZV90 eXBlKHIxKSAhPSByZXNvdXJjZV90eXBlKHIyKSkKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3 NDogIGlmIChyMS0+ZmxhZ3MgJiAweDIwMDAwMDAwIHx8IHIyLT5mbGFncyAmIDB4MjAwMDAwMDAp CjE0NDc0OiAgIHJldHVybiBmYWxzZTsKMTQ0NzQ6ICByZXR1cm4gcjEtPnN0YXJ0IDw9IHIyLT5z dGFydCAmJiByMS0+ZW5kID49IHIyLT5lbmQ7CjE0NDc0OiB9CjE0NDc0OiAjIDIzOCAiLi9pbmNs dWRlL2xpbnV4L2lvcG9ydC5oIgoxNDQ3NDogZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVx dWVzdF9yZWdpb24oc3RydWN0IHJlc291cmNlICosCjE0NDc0OiAgICAgIHJlc291cmNlX3NpemVf dCBzdGFydCwKMTQ0NzQ6ICAgICAgcmVzb3VyY2Vfc2l6ZV90IG4sCjE0NDc0OiAgICAgIGNvbnN0 IGNoYXIgKm5hbWUsIGludCBmbGFncyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgX19yZWxlYXNlX3JlZ2lvbihzdHJ1Y3QgcmVzb3Vy Y2UgKiwgcmVzb3VyY2Vfc2l6ZV90LAoxNDQ3NDogICAgIHJlc291cmNlX3NpemVfdCk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUoc3RydWN0 IHJlc291cmNlICosIHJlc291cmNlX3NpemVfdCwKMTQ0NzQ6ICAgICByZXNvdXJjZV9zaXplX3Qp OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldmljZTsKMTQ0NzQ6IAox NDQ3NDogZXh0ZXJuIGludCBkZXZtX3JlcXVlc3RfcmVzb3VyY2Uoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsCjE0NDc0OiAgICAgIHN0cnVjdCByZXNvdXJjZSAqbmV3 KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldm1fcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgKiBfX2Rl dm1fcmVxdWVzdF9yZWdpb24oc3RydWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgIHN0cnVjdCBy ZXNvdXJjZSAqcGFyZW50LCByZXNvdXJjZV9zaXplX3Qgc3RhcnQsCjE0NDc0OiAgICAgcmVzb3Vy Y2Vfc2l6ZV90IG4sIGNvbnN0IGNoYXIgKm5hbWUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgX19kZXZtX3JlbGVhc2Vf cmVnaW9uKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHJlc291cmNlICpwYXJlbnQsCjE0NDc0 OiAgICAgICByZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBuKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgaW9tZW1fbWFwX3Nhbml0eV9jaGVjayhyZXNvdXJjZV9zaXplX3QgYWRkciwg dW5zaWduZWQgbG9uZyBzaXplKTsKMTQ0NzQ6IGV4dGVybiBib29sIGlvbWVtX2lzX2V4Y2x1c2l2 ZSh1NjQgYWRkcik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQKMTQ0NzQ6IHdhbGtfc3lzdGVt X3JhbV9yYW5nZSh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdl cywKMTQ0NzQ6ICAgdm9pZCAqYXJnLCBpbnQgKCpmdW5jKSh1bnNpZ25lZCBsb25nLCB1bnNpZ25l ZCBsb25nLCB2b2lkICopKTsKMTQ0NzQ6IGV4dGVybiBpbnQKMTQ0NzQ6IHdhbGtfbWVtX3Jlcyh1 NjQgc3RhcnQsIHU2NCBlbmQsIHZvaWQgKmFyZywKMTQ0NzQ6ICAgICAgIGludCAoKmZ1bmMpKHN0 cnVjdCByZXNvdXJjZSAqLCB2b2lkICopKTsKMTQ0NzQ6IGV4dGVybiBpbnQKMTQ0NzQ6IHdhbGtf c3lzdGVtX3JhbV9yZXModTY0IHN0YXJ0LCB1NjQgZW5kLCB2b2lkICphcmcsCjE0NDc0OiAgICAg ICBpbnQgKCpmdW5jKShzdHJ1Y3QgcmVzb3VyY2UgKiwgdm9pZCAqKSk7CjE0NDc0OiBleHRlcm4g aW50CjE0NDc0OiB3YWxrX2lvbWVtX3Jlc19kZXNjKHVuc2lnbmVkIGxvbmcgZGVzYywgdW5zaWdu ZWQgbG9uZyBmbGFncywgdTY0IHN0YXJ0LCB1NjQgZW5kLAoxNDQ3NDogICAgICAgdm9pZCAqYXJn LCBpbnQgKCpmdW5jKShzdHJ1Y3QgcmVzb3VyY2UgKiwgdm9pZCAqKSk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCByZXNvdXJjZV9vdmVybGFwcyhzdHJ1Y3QgcmVzb3VyY2UgKnIxLCBzdHJ1 Y3QgcmVzb3VyY2UgKnIyKQoxNDQ3NDogewoxNDQ3NDogICAgICAgIHJldHVybiAocjEtPnN0YXJ0 IDw9IHIyLT5lbmQgJiYgcjEtPmVuZCA+PSByMi0+c3RhcnQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcmVzb3VyY2UgKmRldm1fcmVxdWVzdF9mcmVlX21lbV9yZWdpb24oc3RydWN0 IGRldmljZSAqZGV2LAoxNDQ3NDogICBzdHJ1Y3QgcmVzb3VyY2UgKmJhc2UsIHVuc2lnbmVkIGxv bmcgc2l6ZSk7CjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2UgKnJlcXVlc3RfZnJlZV9tZW1fcmVnaW9u KHN0cnVjdCByZXNvdXJjZSAqYmFzZSwKMTQ0NzQ6ICAgdW5zaWduZWQgbG9uZyBzaXplLCBjb25z dCBjaGFyICpuYW1lKTsKMTQ0NzQ6ICMgMTcgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMgox NDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgva29iamVjdC5oIiAxCjE0NDc0OiAjIDIwICIuL2lu Y2x1ZGUvbGludXgva29iamVjdC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvc3lzZnMu aCIgMQoxNDQ3NDogIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgiCjE0NDc0OiAjIDEgIi4v aW5jbHVkZS9saW51eC9rZXJuZnMuaCIgMQoxNDQ3NDogIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2tl cm5mcy5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvaWRyLmgiIDEKMTQ0NzQ6ICMgMTkg Ii4vaW5jbHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6IHN0cnVjdCBpZHIgewoxNDQ3NDogIHN0cnVj dCB4YXJyYXkgaWRyX3J0OwoxNDQ3NDogIHVuc2lnbmVkIGludCBpZHJfYmFzZTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgaWRyX25leHQ7CjE0NDc0OiB9OwoxNDQ3NDogIyA2NiAiLi9pbmNsdWRlL2xp bnV4L2lkci5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGlkcl9nZXRfY3Vyc29yKGNvbnN0IHN0cnVj dCBpZHIgKmlkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdW5pb24geyB0eXBlb2YoaWRy LT5pZHJfbmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNl X3NpemUoJihpZHItPmlkcl9uZXh0KSwgX191Ll9fYywgc2l6ZW9mKGlkci0+aWRyX25leHQpKTsg ZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihpZHItPmlkcl9uZXh0KSwgX191Ll9fYywg c2l6ZW9mKGlkci0+aWRyX25leHQpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgNzkgIi4vaW5jbHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg aWRyX3NldF9jdXJzb3Ioc3RydWN0IGlkciAqaWRyLCB1bnNpZ25lZCBpbnQgdmFsKQoxNDQ3NDog ewoxNDQ3NDogICh7IHVuaW9uIHsgdHlwZW9mKGlkci0+aWRyX25leHQpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGlkci0+aWRyX25leHQpKSAodmFsKSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKGlkci0+aWRyX25leHQpLCBfX3UuX19jLCBzaXplb2YoaWRy LT5pZHJfbmV4dCkpOyBfX3UuX192YWw7IH0pOwoxNDQ3NDogfQoxNDQ3NDogIyAxMTIgIi4vaW5j bHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6IHZvaWQgaWRyX3ByZWxvYWQoZ2ZwX3QgZ2ZwX21hc2sp OwoxNDQ3NDogCjE0NDc0OiBpbnQgaWRyX2FsbG9jKHN0cnVjdCBpZHIgKiwgdm9pZCAqcHRyLCBp bnQgc3RhcnQsIGludCBlbmQsIGdmcF90KTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSkgaWRyX2FsbG9jX3UzMihzdHJ1Y3QgaWRyICosIHZvaWQgKnB0 ciwgdTMyICppZCwKMTQ0NzQ6ICAgICB1bnNpZ25lZCBsb25nIG1heCwgZ2ZwX3QpOwoxNDQ3NDog aW50IGlkcl9hbGxvY19jeWNsaWMoc3RydWN0IGlkciAqLCB2b2lkICpwdHIsIGludCBzdGFydCwg aW50IGVuZCwgZ2ZwX3QpOwoxNDQ3NDogdm9pZCAqaWRyX3JlbW92ZShzdHJ1Y3QgaWRyICosIHVu c2lnbmVkIGxvbmcgaWQpOwoxNDQ3NDogdm9pZCAqaWRyX2ZpbmQoY29uc3Qgc3RydWN0IGlkciAq LCB1bnNpZ25lZCBsb25nIGlkKTsKMTQ0NzQ6IGludCBpZHJfZm9yX2VhY2goY29uc3Qgc3RydWN0 IGlkciAqLAoxNDQ3NDogICAgaW50ICgqZm4pKGludCBpZCwgdm9pZCAqcCwgdm9pZCAqZGF0YSks IHZvaWQgKmRhdGEpOwoxNDQ3NDogdm9pZCAqaWRyX2dldF9uZXh0KHN0cnVjdCBpZHIgKiwgaW50 ICpuZXh0aWQpOwoxNDQ3NDogdm9pZCAqaWRyX2dldF9uZXh0X3VsKHN0cnVjdCBpZHIgKiwgdW5z aWduZWQgbG9uZyAqbmV4dGlkKTsKMTQ0NzQ6IHZvaWQgKmlkcl9yZXBsYWNlKHN0cnVjdCBpZHIg Kiwgdm9pZCAqLCB1bnNpZ25lZCBsb25nIGlkKTsKMTQ0NzQ6IHZvaWQgaWRyX2Rlc3Ryb3koc3Ry dWN0IGlkciAqKTsKMTQ0NzQ6ICMgMTM1ICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGlkcl9pbml0X2Jhc2Uoc3RydWN0IGlkciAqaWRyLCBpbnQgYmFzZSkKMTQ0NzQ6IHsKMTQ0 NzQ6ICB4YV9pbml0X2ZsYWdzKCZpZHItPmlkcl9ydCwgKCgoIGdmcF90KTQpIHwgKCBnZnBfdCkg KDEgPDwgKCgoMjMgKyAwKSkgKyAwKSkpKTsKMTQ0NzQ6ICBpZHItPmlkcl9iYXNlID0gYmFzZTsK MTQ0NzQ6ICBpZHItPmlkcl9uZXh0ID0gMDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQ5ICIuL2luY2x1 ZGUvbGludXgvaWRyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlkcl9pbml0KHN0cnVjdCBpZHIgKmlkcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBpZHJfaW5pdF9iYXNlKGlkciwgMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg aWRyX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBpZHIgKmlkcikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gcmFkaXhfdHJlZV9lbXB0eSgmaWRyLT5pZHJfcnQpICYmCjE0NDc0OiAgIHJhZGl4X3RyZWVf dGFnZ2VkKCZpZHItPmlkcl9ydCwgMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaWRyX3ByZWxvYWRf ZW5kKHZvaWQpCjE0NDc0OiB7CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjQwICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCjE0 NDc0OiBzdHJ1Y3QgaWRhX2JpdG1hcCB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBiaXRtYXBbKDEy OCAvIHNpemVvZihsb25nKSldOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGlkYSB7 CjE0NDc0OiAgc3RydWN0IHhhcnJheSB4YTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI1NSAiLi9pbmNs dWRlL2xpbnV4L2lkci5oIgoxNDQ3NDogaW50IGlkYV9hbGxvY19yYW5nZShzdHJ1Y3QgaWRhICos IHVuc2lnbmVkIGludCBtaW4sIHVuc2lnbmVkIGludCBtYXgsIGdmcF90KTsKMTQ0NzQ6IHZvaWQg aWRhX2ZyZWUoc3RydWN0IGlkYSAqLCB1bnNpZ25lZCBpbnQgaWQpOwoxNDQ3NDogdm9pZCBpZGFf ZGVzdHJveShzdHJ1Y3QgaWRhICppZGEpOwoxNDQ3NDogIyAyNzAgIi4vaW5jbHVkZS9saW51eC9p ZHIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBpZGFfYWxsb2Moc3RydWN0IGlkYSAqaWRhLCBnZnBfdCBnZnApCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGlkYV9hbGxvY19yYW5nZShpZGEsIDAsIH4wLCBnZnApOwox NDQ3NDogfQoxNDQ3NDogIyAyODcgIi4vaW5jbHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBp ZGFfYWxsb2NfbWluKHN0cnVjdCBpZGEgKmlkYSwgdW5zaWduZWQgaW50IG1pbiwgZ2ZwX3QgZ2Zw KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBpZGFfYWxsb2NfcmFuZ2UoaWRhLCBtaW4sIH4wLCBn ZnApOwoxNDQ3NDogfQoxNDQ3NDogIyAzMDQgIi4vaW5jbHVkZS9saW51eC9pZHIuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBpZGFfYWxsb2NfbWF4KHN0cnVjdCBpZGEgKmlkYSwgdW5zaWduZWQgaW50IG1heCwgZ2Zw X3QgZ2ZwKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBpZGFfYWxsb2NfcmFuZ2UoaWRhLCAwLCBt YXgsIGdmcCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaWRhX2luaXQoc3RydWN0IGlk YSAqaWRhKQoxNDQ3NDogewoxNDQ3NDogIHhhX2luaXRfZmxhZ3MoJmlkYS0+eGEsICgoKCBnZnBf dClYQV9MT0NLX0lSUSkgfCAoKCggZ2ZwX3QpNFUpIHwgKCggZ2ZwX3QpKCgxVSA8PCAoMjMgKyAw KSkgPDwgKCB1bnNpZ25lZCkoKCggeGFfbWFya190KTBVKSkpKSkpKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlkYV9pc19lbXB0 eShjb25zdCBzdHJ1Y3QgaWRhICppZGEpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHhhX2VtcHR5 KCZpZGEtPnhhKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMu aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGZpbGU7CjE0NDc0OiBzdHJ1Y3QgZGVudHJ5OwoxNDQ3NDogc3RydWN0IGlhdHRy OwoxNDQ3NDogc3RydWN0IHNlcV9maWxlOwoxNDQ3NDogc3RydWN0IHZtX2FyZWFfc3RydWN0Owox NDQ3NDogc3RydWN0IHN1cGVyX2Jsb2NrOwoxNDQ3NDogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGU7 CjE0NDc0OiBzdHJ1Y3QgcG9sbF90YWJsZV9zdHJ1Y3Q7CjE0NDc0OiBzdHJ1Y3QgZnNfY29udGV4 dDsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtlcm5mc19mc19jb250ZXh0OwoxNDQ3NDogc3RydWN0 IGtlcm5mc19vcGVuX25vZGU7CjE0NDc0OiBzdHJ1Y3Qga2VybmZzX2lhdHRyczsKMTQ0NzQ6IAox NDQ3NDogZW51bSBrZXJuZnNfbm9kZV90eXBlIHsKMTQ0NzQ6ICBLRVJORlNfRElSID0gMHgwMDAx LAoxNDQ3NDogIEtFUk5GU19GSUxFID0gMHgwMDAyLAoxNDQ3NDogIEtFUk5GU19MSU5LID0gMHgw MDA0LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBrZXJuZnNfbm9kZV9mbGFnIHsKMTQ0NzQ6ICBLRVJORlNfQUNUSVZBVEVEID0gMHgwMDEwLAox NDQ3NDogIEtFUk5GU19OUyA9IDB4MDAyMCwKMTQ0NzQ6ICBLRVJORlNfSEFTX1NFUV9TSE9XID0g MHgwMDQwLAoxNDQ3NDogIEtFUk5GU19IQVNfTU1BUCA9IDB4MDA4MCwKMTQ0NzQ6ICBLRVJORlNf TE9DS0RFUCA9IDB4MDEwMCwKMTQ0NzQ6ICBLRVJORlNfU1VJQ0lEQUwgPSAweDA0MDAsCjE0NDc0 OiAgS0VSTkZTX1NVSUNJREVEID0gMHgwODAwLAoxNDQ3NDogIEtFUk5GU19FTVBUWV9ESVIgPSAw eDEwMDAsCjE0NDc0OiAgS0VSTkZTX0hBU19SRUxFQVNFID0gMHgyMDAwLAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGtlcm5mc19yb290X2ZsYWcgewoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEtFUk5GU19ST09UX0NS RUFURV9ERUFDVElWQVRFRCA9IDB4MDAwMSwKMTQ0NzQ6ICMgNzQgIi4vaW5jbHVkZS9saW51eC9r ZXJuZnMuaCIKMTQ0NzQ6ICBLRVJORlNfUk9PVF9FWFRSQV9PUEVOX1BFUk1fQ0hFQ0sgPSAweDAw MDIsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEtFUk5G U19ST09UX1NVUFBPUlRfRVhQT1JUT1AgPSAweDAwMDQsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNfZWxlbV9kaXIgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg c3ViZGlyczsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCByYl9yb290IGNoaWxkcmVuOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qga2VybmZzX3Jv b3QgKnJvb3Q7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2VybmZzX2VsZW1fc3lt bGluayB7CjE0NDc0OiAgc3RydWN0IGtlcm5mc19ub2RlICp0YXJnZXRfa247CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2VybmZzX2VsZW1fYXR0ciB7CjE0NDc0OiAgY29uc3Qgc3Ry dWN0IGtlcm5mc19vcHMgKm9wczsKMTQ0NzQ6ICBzdHJ1Y3Qga2VybmZzX29wZW5fbm9kZSAqb3Bl bjsKMTQ0NzQ6ICBsb2ZmX3Qgc2l6ZTsKMTQ0NzQ6ICBzdHJ1Y3Qga2VybmZzX25vZGUgKm5vdGlm eV9uZXh0OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTE2ICIuL2luY2x1ZGUvbGludXgva2VybmZzLmgi CjE0NDc0OiBzdHJ1Y3Qga2VybmZzX25vZGUgewoxNDQ3NDogIGF0b21pY190IGNvdW50OwoxNDQ3 NDogIGF0b21pY190IGFjdGl2ZTsKMTQ0NzQ6ICMgMTI4ICIuL2luY2x1ZGUvbGludXgva2VybmZz LmgiCjE0NDc0OiAgc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQ7CjE0NDc0OiAgY29uc3QgY2hh ciAqbmFtZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCByYl9ub2RlIHJiOwoxNDQ3NDogCjE0NDc0 OiAgY29uc3Qgdm9pZCAqbnM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGhhc2g7CjE0NDc0OiAgdW5p b24gewoxNDQ3NDogICBzdHJ1Y3Qga2VybmZzX2VsZW1fZGlyIGRpcjsKMTQ0NzQ6ICAgc3RydWN0 IGtlcm5mc19lbGVtX3N5bWxpbmsgc3ltbGluazsKMTQ0NzQ6ICAgc3RydWN0IGtlcm5mc19lbGVt X2F0dHIgYXR0cjsKMTQ0NzQ6ICB9OwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAqcHJpdjsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IGlkOwoxNDQ3NDog CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgZmxhZ3M7CjE0NDc0OiAgdW1vZGVfdCBtb2RlOwoxNDQ3 NDogIHN0cnVjdCBrZXJuZnNfaWF0dHJzICppYXR0cjsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE2MSAi Li9pbmNsdWRlL2xpbnV4L2tlcm5mcy5oIgoxNDQ3NDogc3RydWN0IGtlcm5mc19zeXNjYWxsX29w cyB7CjE0NDc0OiAgaW50ICgqc2hvd19vcHRpb25zKShzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCBzdHJ1 Y3Qga2VybmZzX3Jvb3QgKnJvb3QpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqbWtkaXIpKHN0cnVj dCBrZXJuZnNfbm9kZSAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lLAoxNDQ3NDogICAgICAgIHVt b2RlX3QgbW9kZSk7CjE0NDc0OiAgaW50ICgqcm1kaXIpKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24p OwoxNDQ3NDogIGludCAoKnJlbmFtZSkoc3RydWN0IGtlcm5mc19ub2RlICprbiwgc3RydWN0IGtl cm5mc19ub2RlICpuZXdfcGFyZW50LAoxNDQ3NDogICAgICAgICBjb25zdCBjaGFyICpuZXdfbmFt ZSk7CjE0NDc0OiAgaW50ICgqc2hvd19wYXRoKShzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCBzdHJ1Y3Qg a2VybmZzX25vZGUgKmtuLAoxNDQ3NDogICAgIHN0cnVjdCBrZXJuZnNfcm9vdCAqcm9vdCk7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2VybmZzX3Jvb3QgewoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGtlcm5mc19ub2RlICprbjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBpZHIgaW5vX2lkcjsKMTQ0NzQ6ICB1MzIgbGFz dF9pZF9sb3diaXRzOwoxNDQ3NDogIHUzMiBpZF9oaWdoYml0czsKMTQ0NzQ6ICBzdHJ1Y3Qga2Vy bmZzX3N5c2NhbGxfb3BzICpzeXNjYWxsX29wczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IGxpc3RfaGVhZCBzdXBlcnM7CjE0NDc0OiAKMTQ0NzQ6ICB3YWl0X3F1ZXVlX2hlYWRfdCBk ZWFjdGl2YXRlX3dhaXRxOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtlcm5mc19v cGVuX2ZpbGUgewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGtlcm5mc19ub2RlICprbjsKMTQ0NzQ6 ICBzdHJ1Y3QgZmlsZSAqZmlsZTsKMTQ0NzQ6ICBzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcV9maWxlOwox NDQ3NDogIHZvaWQgKnByaXY7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBtdXRleCBt dXRleDsKMTQ0NzQ6ICBzdHJ1Y3QgbXV0ZXggcHJlYWxsb2NfbXV0ZXg7CjE0NDc0OiAgaW50IGV2 ZW50OwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKMTQ0NzQ6ICBjaGFyICpwcmVhbGxv Y19idWY7CjE0NDc0OiAKMTQ0NzQ6ICBzaXplX3QgYXRvbWljX3dyaXRlX2xlbjsKMTQ0NzQ6ICBi b29sIG1tYXBwZWQ6MTsKMTQ0NzQ6ICBib29sIHJlbGVhc2VkOjE7CjE0NDc0OiAgY29uc3Qgc3Ry dWN0IHZtX29wZXJhdGlvbnNfc3RydWN0ICp2bV9vcHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3Qga2VybmZzX29wcyB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBpbnQgKCpvcGVuKShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YpOwoxNDQ3NDogIHZv aWQgKCpyZWxlYXNlKShzdHJ1Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YpOwoxNDQ3NDogIyAyMjkg Ii4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKMTQ0NzQ6ICBpbnQgKCpzZXFfc2hvdykoc3RydWN0 IHNlcV9maWxlICpzZiwgdm9pZCAqdik7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICooKnNlcV9zdGFy dCkoc3RydWN0IHNlcV9maWxlICpzZiwgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6ICB2b2lkICooKnNl cV9uZXh0KShzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2LCBsb2ZmX3QgKnBwb3MpOwoxNDQ3 NDogIHZvaWQgKCpzZXFfc3RvcCkoc3RydWN0IHNlcV9maWxlICpzZiwgdm9pZCAqdik7CjE0NDc0 OiAKMTQ0NzQ6ICBzc2l6ZV90ICgqcmVhZCkoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBj aGFyICpidWYsIHNpemVfdCBieXRlcywKMTQ0NzQ6ICAgIGxvZmZfdCBvZmYpOwoxNDQ3NDogIyAy NDUgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKMTQ0NzQ6ICBzaXplX3QgYXRvbWljX3dyaXRl X2xlbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBib29sIHByZWFsbG9jOwoxNDQ3NDogIHNzaXplX3QgKCp3cml0ZSkoc3RydWN0IGtlcm5m c19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsIHNpemVfdCBieXRlcywKMTQ0NzQ6ICAgICBsb2Zm X3Qgb2ZmKTsKMTQ0NzQ6IAoxNDQ3NDogIF9fcG9sbF90ICgqcG9sbCkoc3RydWN0IGtlcm5mc19v cGVuX2ZpbGUgKm9mLAoxNDQ3NDogICAgIHN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdCAqcHQpOwox NDQ3NDogCjE0NDc0OiAgaW50ICgqbW1hcCkoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBrZXJuZnNfZnNfY29udGV4dCB7CjE0NDc0OiAgc3RydWN0IGtlcm5mc19yb290ICpyb290Owox NDQ3NDogIHZvaWQgKm5zX3RhZzsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG1hZ2ljOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBib29sIG5ld19zYl9jcmVhdGVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGVudW0ga2VybmZzX25vZGVfdHlwZSBrZXJuZnNfdHlwZShz dHJ1Y3Qga2VybmZzX25vZGUgKmtuKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrbi0+ZmxhZ3Mg JiAweDAwMGY7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IGtlcm5mc19pZF9pbm8odTY0 IGlkKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgaWYgKHNpemVvZihpbm9fdCkgPj0gc2l6ZW9m KHU2NCkpCjE0NDc0OiAgIHJldHVybiBpZDsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIHJldHVybiAo dTMyKWlkOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIga2VybmZzX2lkX2dlbih1NjQgaWQp CjE0NDc0OiB7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoc2l6ZW9mKGlub190KSA+PSBzaXplb2YodTY0 KSkKMTQ0NzQ6ICAgcmV0dXJuIDE7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICByZXR1cm4gaWQgPj4g MzI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IGtlcm5mc19pbm8oc3RydWN0IGtlcm5m c19ub2RlICprbikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga2VybmZzX2lkX2lubyhrbi0+aWQp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbm9fdCBrZXJuZnNfZ2VuKHN0cnVjdCBrZXJuZnNf bm9kZSAqa24pCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtlcm5mc19pZF9nZW4oa24tPmlkKTsK MTQ0NzQ6IH0KMTQ0NzQ6ICMgMzIxICIuL2luY2x1ZGUvbGludXgva2VybmZzLmgiCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGtlcm5mc19lbmFibGVfbnMoc3RydWN0IGtlcm5mc19ub2RlICprbikKMTQ0NzQ6IHsKMTQ0 NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGtlcm5mc190eXBlKGtuKSAhPSBLRVJORlNf RElSKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRv IHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAi LnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAi IC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIg LSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRy eTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3Jn IDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2tlcm5mcy5o IiksICJpIiAoMzIzKSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRp bGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9u ZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDM1KSk7IH0pOyB9IHdo aWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3 NDogICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgoeyB1bmlvbiB7IHR5cGVvZigoJmtuLT5k aXIuY2hpbGRyZW4pLT5yYl9ub2RlKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkg X19yZWFkX29uY2Vfc2l6ZSgmKCgma24tPmRpci5jaGlsZHJlbiktPnJiX25vZGUpLCBfX3UuX19j LCBzaXplb2YoKCZrbi0+ZGlyLmNoaWxkcmVuKS0+cmJfbm9kZSkpOyBlbHNlIF9fcmVhZF9vbmNl X3NpemVfbm9jaGVjaygmKCgma24tPmRpci5jaGlsZHJlbiktPnJiX25vZGUpLCBfX3UuX19jLCBz aXplb2YoKCZrbi0+ZGlyLmNoaWxkcmVuKS0+cmJfbm9kZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pID09ICgodm9pZCAqKTApKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9f cmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIg Ii5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJc biIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJc biIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJc dC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1 Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImki ICgiaW5jbHVkZS9saW51eC9rZXJuZnMuaCIpLCAiaSIgKDMyNCksICJpIiAoKDEgPDwgMCl8KCgx IDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9 IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlz Y2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0 IiA6IDogImkiICgzNikpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19y ZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6ICBrbi0+ZmxhZ3MgfD0gS0VSTkZTX05TOwoxNDQ3 NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIGtlcm5mc19uc19lbmFibGVkKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24p CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtuLT5mbGFncyAmIEtFUk5GU19OUzsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogaW50IGtlcm5mc19uYW1lKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNo YXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7CjE0NDc0OiBpbnQga2VybmZzX3BhdGhfZnJvbV9ub2Rl KHN0cnVjdCBrZXJuZnNfbm9kZSAqcm9vdF9rbiwgc3RydWN0IGtlcm5mc19ub2RlICprbiwKMTQ0 NzQ6ICAgICAgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKTsKMTQ0NzQ6IHZvaWQgcHJfY29udF9r ZXJuZnNfbmFtZShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IHZvaWQgcHJfY29udF9r ZXJuZnNfcGF0aChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNf bm9kZSAqa2VybmZzX2dldF9wYXJlbnQoc3RydWN0IGtlcm5mc19ub2RlICprbik7CjE0NDc0OiBz dHJ1Y3Qga2VybmZzX25vZGUgKmtlcm5mc19maW5kX2FuZF9nZXRfbnMoc3RydWN0IGtlcm5mc19u b2RlICpwYXJlbnQsCjE0NDc0OiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQg Km5zKTsKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZzX3dhbGtfYW5kX2dldF9ucyhz dHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudCwKMTQ0NzQ6ICAgICAgICAgY29uc3QgY2hhciAqcGF0 aCwgY29uc3Qgdm9pZCAqbnMpOwoxNDQ3NDogdm9pZCBrZXJuZnNfZ2V0KHN0cnVjdCBrZXJuZnNf bm9kZSAqa24pOwoxNDQ3NDogdm9pZCBrZXJuZnNfcHV0KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24p OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2VybmZzX25vZGUgKmtlcm5mc19ub2RlX2Zyb21fZGVu dHJ5KHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CjE0NDc0OiBzdHJ1Y3Qga2VybmZzX3Jvb3QgKmtl cm5mc19yb290X2Zyb21fc2Ioc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CjE0NDc0OiBzdHJ1Y3Qg aW5vZGUgKmtlcm5mc19nZXRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtl cm5mc19ub2RlICprbik7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZW50cnkgKmtlcm5mc19ub2Rl X2RlbnRyeShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLAoxNDQ3NDogICAgICAgc3RydWN0IHN1cGVy X2Jsb2NrICpzYik7CjE0NDc0OiBzdHJ1Y3Qga2VybmZzX3Jvb3QgKmtlcm5mc19jcmVhdGVfcm9v dChzdHJ1Y3Qga2VybmZzX3N5c2NhbGxfb3BzICpzY29wcywKMTQ0NzQ6ICAgICAgICAgICAgdW5z aWduZWQgaW50IGZsYWdzLCB2b2lkICpwcml2KTsKMTQ0NzQ6IHZvaWQga2VybmZzX2Rlc3Ryb3lf cm9vdChzdHJ1Y3Qga2VybmZzX3Jvb3QgKnJvb3QpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qga2Vy bmZzX25vZGUgKmtlcm5mc19jcmVhdGVfZGlyX25zKHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50 LAoxNDQ3NDogICAgICAgY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAoxNDQ3NDogICAg ICAga3VpZF90IHVpZCwga2dpZF90IGdpZCwKMTQ0NzQ6ICAgICAgIHZvaWQgKnByaXYsIGNvbnN0 IHZvaWQgKm5zKTsKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZzX2NyZWF0ZV9lbXB0 eV9kaXIoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCjE0NDc0OiAgICAgICAgICBjb25zdCBj aGFyICpuYW1lKTsKMTQ0NzQ6IHN0cnVjdCBrZXJuZnNfbm9kZSAqX19rZXJuZnNfY3JlYXRlX2Zp bGUoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCjE0NDc0OiAgICAgICBjb25zdCBjaGFyICpu YW1lLCB1bW9kZV90IG1vZGUsCjE0NDc0OiAgICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAox NDQ3NDogICAgICAgbG9mZl90IHNpemUsCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3Qga2VybmZz X29wcyAqb3BzLAoxNDQ3NDogICAgICAgdm9pZCAqcHJpdiwgY29uc3Qgdm9pZCAqbnMsCjE0NDc0 OiAgICAgICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7CjE0NDc0OiBzdHJ1Y3Qga2VybmZz X25vZGUgKmtlcm5mc19jcmVhdGVfbGluayhzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudCwKMTQ0 NzQ6ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICAgICAgc3RydWN0 IGtlcm5mc19ub2RlICp0YXJnZXQpOwoxNDQ3NDogdm9pZCBrZXJuZnNfYWN0aXZhdGUoc3RydWN0 IGtlcm5mc19ub2RlICprbik7CjE0NDc0OiB2b2lkIGtlcm5mc19yZW1vdmUoc3RydWN0IGtlcm5m c19ub2RlICprbik7CjE0NDc0OiB2b2lkIGtlcm5mc19icmVha19hY3RpdmVfcHJvdGVjdGlvbihz dHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IHZvaWQga2VybmZzX3VuYnJlYWtfYWN0aXZl X3Byb3RlY3Rpb24oc3RydWN0IGtlcm5mc19ub2RlICprbik7CjE0NDc0OiBib29sIGtlcm5mc19y ZW1vdmVfc2VsZihzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IGludCBrZXJuZnNfcmVt b3ZlX2J5X25hbWVfbnMoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5h bWUsCjE0NDc0OiAgICAgICAgIGNvbnN0IHZvaWQgKm5zKTsKMTQ0NzQ6IGludCBrZXJuZnNfcmVu YW1lX25zKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sIHN0cnVjdCBrZXJuZnNfbm9kZSAqbmV3X3Bh cmVudCwKMTQ0NzQ6ICAgICAgICBjb25zdCBjaGFyICpuZXdfbmFtZSwgY29uc3Qgdm9pZCAqbmV3 X25zKTsKMTQ0NzQ6IGludCBrZXJuZnNfc2V0YXR0cihzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLCBj b25zdCBzdHJ1Y3QgaWF0dHIgKmlhdHRyKTsKMTQ0NzQ6IF9fcG9sbF90IGtlcm5mc19nZW5lcmlj X3BvbGwoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLAoxNDQ3NDogICAgICAgICBzdHJ1Y3Qg cG9sbF90YWJsZV9zdHJ1Y3QgKnB0KTsKMTQ0NzQ6IHZvaWQga2VybmZzX25vdGlmeShzdHJ1Y3Qg a2VybmZzX25vZGUgKmtuKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGtlcm5mc194YXR0cl9nZXQoc3Ry dWN0IGtlcm5mc19ub2RlICprbiwgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICB2b2lk ICp2YWx1ZSwgc2l6ZV90IHNpemUpOwoxNDQ3NDogaW50IGtlcm5mc194YXR0cl9zZXQoc3RydWN0 IGtlcm5mc19ub2RlICprbiwgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICBjb25zdCB2 b2lkICp2YWx1ZSwgc2l6ZV90IHNpemUsIGludCBmbGFncyk7CjE0NDc0OiAKMTQ0NzQ6IGNvbnN0 IHZvaWQgKmtlcm5mc19zdXBlcl9ucyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IGlu dCBrZXJuZnNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKTsKMTQ0NzQ6IHZvaWQga2Vy bmZzX2ZyZWVfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpOwoxNDQ3NDogdm9pZCBr ZXJuZnNfa2lsbF9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCBrZXJuZnNfaW5pdCh2b2lkKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtlcm5mc19ub2RlICpr ZXJuZnNfZmluZF9hbmRfZ2V0X25vZGVfYnlfaWQoc3RydWN0IGtlcm5mc19yb290ICpyb290LAox NDQ3NDogICAgICAgICAgdTY0IGlkKTsKMTQ0NzQ6ICMgNTMzICIuL2luY2x1ZGUvbGludXgva2Vy bmZzLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQga2VybmZzX3BhdGgoc3RydWN0IGtlcm5mc19ub2RlICprbiwgY2hh ciAqYnVmLCBzaXplX3QgYnVmbGVuKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfcGF0 aF9mcm9tX25vZGUoa24sICgodm9pZCAqKTApLCBidWYsIGJ1Zmxlbik7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCBrZXJuZnNfbm9kZSAqCjE0NDc0OiBrZXJuZnNfZmluZF9hbmRfZ2V0 KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNvbnN0IGNoYXIgKm5hbWUpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGtlcm5mc19maW5kX2FuZF9nZXRfbnMoa24sIG5hbWUsICgodm9pZCAqKTApKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtlcm5mc19ub2RlICoKMTQ0NzQ6IGtlcm5m c193YWxrX2FuZF9nZXQoc3RydWN0IGtlcm5mc19ub2RlICprbiwgY29uc3QgY2hhciAqcGF0aCkK MTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga2VybmZzX3dhbGtfYW5kX2dldF9ucyhrbiwgcGF0aCwg KCh2b2lkICopMCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUg KgoxNDQ3NDoga2VybmZzX2NyZWF0ZV9kaXIoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsIGNv bnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICB2b2lkICpwcml2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfY3JlYXRlX2Rpcl9ucyhwYXJlbnQsIG5hbWUsIG1v ZGUsCjE0NDc0OiAgICAgICAgIChrdWlkX3QpeyAwIH0sIChrZ2lkX3QpeyAwIH0sCjE0NDc0OiAg ICAgICAgIHByaXYsICgodm9pZCAqKTApKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGtlcm5mc19ub2RlICoKMTQ0NzQ6IGtlcm5mc19jcmVhdGVfZmlsZV9ucyhzdHJ1Y3Qga2VybmZz X25vZGUgKnBhcmVudCwgY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICAgdW1vZGVfdCBt b2RlLCBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAoxNDQ3NDogICAgICAgICBsb2ZmX3Qgc2l6ZSwg Y29uc3Qgc3RydWN0IGtlcm5mc19vcHMgKm9wcywKMTQ0NzQ6ICAgICAgICAgdm9pZCAqcHJpdiwg Y29uc3Qgdm9pZCAqbnMpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICpr ZXkgPSAoKHZvaWQgKikwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IHJldHVybiBfX2tlcm5mc19jcmVhdGVfZmlsZShwYXJlbnQsIG5hbWUsIG1vZGUsIHVpZCwgZ2lk LAoxNDQ3NDogICAgICAgICBzaXplLCBvcHMsIHByaXYsIG5zLCBrZXkpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUgKgoxNDQ3NDoga2VybmZzX2NyZWF0ZV9maWxl KHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1v ZGUsCjE0NDc0OiAgICAgIGxvZmZfdCBzaXplLCBjb25zdCBzdHJ1Y3Qga2VybmZzX29wcyAqb3Bz LCB2b2lkICpwcml2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfY3JlYXRlX2ZpbGVf bnMocGFyZW50LCBuYW1lLCBtb2RlLAoxNDQ3NDogICAgICAgICAgKGt1aWRfdCl7IDAgfSwgKGtn aWRfdCl7IDAgfSwKMTQ0NzQ6ICAgICAgICAgIHNpemUsIG9wcywgcHJpdiwgKCh2b2lkICopMCkp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQga2VybmZzX3JlbW92ZV9ieV9uYW1lKHN0cnVj dCBrZXJuZnNfbm9kZSAqcGFyZW50LAoxNDQ3NDogICAgICBjb25zdCBjaGFyICpuYW1lKQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfcmVtb3ZlX2J5X25hbWVfbnMocGFyZW50LCBuYW1l LCAoKHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBrZXJuZnNfcmVuYW1l KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sCjE0NDc0OiAgICAgc3RydWN0IGtlcm5mc19ub2RlICpu ZXdfcGFyZW50LAoxNDQ3NDogICAgIGNvbnN0IGNoYXIgKm5ld19uYW1lKQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBrZXJuZnNfcmVuYW1lX25zKGtuLCBuZXdfcGFyZW50LCBuZXdfbmFtZSwgKCh2 b2lkICopMCkpOwoxNDQ3NDogfQoxNDQ3NDogIyAxNyAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1ZGUv bGludXgva29iamVjdF9ucy5oIiAxCjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGludXgva29iamVj dF9ucy5oIgoxNDQ3NDogc3RydWN0IHNvY2s7CjE0NDc0OiBzdHJ1Y3Qga29iamVjdDsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGtvYmpfbnNfdHlw ZSB7CjE0NDc0OiAgS09CSl9OU19UWVBFX05PTkUgPSAwLAoxNDQ3NDogIEtPQkpfTlNfVFlQRV9O RVQsCjE0NDc0OiAgS09CSl9OU19UWVBFUwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzkgIi4vaW5jbHVk ZS9saW51eC9rb2JqZWN0X25zLmgiCjE0NDc0OiBzdHJ1Y3Qga29ial9uc190eXBlX29wZXJhdGlv bnMgewoxNDQ3NDogIGVudW0ga29ial9uc190eXBlIHR5cGU7CjE0NDc0OiAgYm9vbCAoKmN1cnJl bnRfbWF5X21vdW50KSh2b2lkKTsKMTQ0NzQ6ICB2b2lkICooKmdyYWJfY3VycmVudF9ucykodm9p ZCk7CjE0NDc0OiAgY29uc3Qgdm9pZCAqKCpuZXRsaW5rX25zKShzdHJ1Y3Qgc29jayAqc2spOwox NDQ3NDogIGNvbnN0IHZvaWQgKigqaW5pdGlhbF9ucykodm9pZCk7CjE0NDc0OiAgdm9pZCAoKmRy b3BfbnMpKHZvaWQgKik7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBpbnQga29ial9uc190eXBl X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBrb2JqX25zX3R5cGVfb3BlcmF0aW9ucyAqb3BzKTsKMTQ0 NzQ6IGludCBrb2JqX25zX3R5cGVfcmVnaXN0ZXJlZChlbnVtIGtvYmpfbnNfdHlwZSB0eXBlKTsK MTQ0NzQ6IGNvbnN0IHN0cnVjdCBrb2JqX25zX3R5cGVfb3BlcmF0aW9ucyAqa29ial9jaGlsZF9u c19vcHMoc3RydWN0IGtvYmplY3QgKnBhcmVudCk7CjE0NDc0OiBjb25zdCBzdHJ1Y3Qga29ial9u c190eXBlX29wZXJhdGlvbnMgKmtvYmpfbnNfb3BzKHN0cnVjdCBrb2JqZWN0ICprb2JqKTsKMTQ0 NzQ6IAoxNDQ3NDogYm9vbCBrb2JqX25zX2N1cnJlbnRfbWF5X21vdW50KGVudW0ga29ial9uc190 eXBlIHR5cGUpOwoxNDQ3NDogdm9pZCAqa29ial9uc19ncmFiX2N1cnJlbnQoZW51bSBrb2JqX25z X3R5cGUgdHlwZSk7CjE0NDc0OiBjb25zdCB2b2lkICprb2JqX25zX25ldGxpbmsoZW51bSBrb2Jq X25zX3R5cGUgdHlwZSwgc3RydWN0IHNvY2sgKnNrKTsKMTQ0NzQ6IGNvbnN0IHZvaWQgKmtvYmpf bnNfaW5pdGlhbChlbnVtIGtvYmpfbnNfdHlwZSB0eXBlKTsKMTQ0NzQ6IHZvaWQga29ial9uc19k cm9wKGVudW0ga29ial9uc190eXBlIHR5cGUsIHZvaWQgKm5zKTsKMTQ0NzQ6ICMgMjIgIi4vaW5j bHVkZS9saW51eC9zeXNmcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qga29iamVjdDsKMTQ0NzQ6IHN0cnVjdCBtb2R1bGU7CjE0NDc0OiBzdHJ1Y3QgYmluX2F0dHJp YnV0ZTsKMTQ0NzQ6IGVudW0ga29ial9uc190eXBlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXR0 cmlidXRlIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDogIHVtb2RlX3QgbW9kZTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDog IyA4NCAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgiCjE0NDc0OiBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpuYW1lOwoxNDQ3NDogIHVtb2RlX3QgKCppc192aXNp YmxlKShzdHJ1Y3Qga29iamVjdCAqLAoxNDQ3NDogICAgICAgICAgICBzdHJ1Y3QgYXR0cmlidXRl ICosIGludCk7CjE0NDc0OiAgdW1vZGVfdCAoKmlzX2Jpbl92aXNpYmxlKShzdHJ1Y3Qga29iamVj dCAqLAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqLCBpbnQpOwoxNDQ3NDog IHN0cnVjdCBhdHRyaWJ1dGUgKiphdHRyczsKMTQ0NzQ6ICBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAq KmJpbl9hdHRyczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE1OCAiLi9pbmNsdWRlL2xpbnV4L3N5c2Zz LmgiCjE0NDc0OiBzdHJ1Y3QgZmlsZTsKMTQ0NzQ6IHN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGJpbl9hdHRyaWJ1dGUgewoxNDQ3NDogIHN0cnVjdCBhdHRyaWJ1 dGUgYXR0cjsKMTQ0NzQ6ICBzaXplX3Qgc2l6ZTsKMTQ0NzQ6ICB2b2lkICpwcml2YXRlOwoxNDQ3 NDogIHNzaXplX3QgKCpyZWFkKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1 Y3QgYmluX2F0dHJpYnV0ZSAqLAoxNDQ3NDogICAgY2hhciAqLCBsb2ZmX3QsIHNpemVfdCk7CjE0 NDc0OiAgc3NpemVfdCAoKndyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qga29iamVjdCAqLCBz dHJ1Y3QgYmluX2F0dHJpYnV0ZSAqLAoxNDQ3NDogICAgIGNoYXIgKiwgbG9mZl90LCBzaXplX3Qp OwoxNDQ3NDogIGludCAoKm1tYXApKHN0cnVjdCBmaWxlICosIHN0cnVjdCBrb2JqZWN0ICosIHN0 cnVjdCBiaW5fYXR0cmlidXRlICphdHRyLAoxNDQ3NDogICAgICAgc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjIzICIuL2luY2x1ZGUvbGludXgvc3lzZnMu aCIKMTQ0NzQ6IHN0cnVjdCBzeXNmc19vcHMgewoxNDQ3NDogIHNzaXplX3QgKCpzaG93KShzdHJ1 Y3Qga29iamVjdCAqLCBzdHJ1Y3QgYXR0cmlidXRlICosIGNoYXIgKik7CjE0NDc0OiAgc3NpemVf dCAoKnN0b3JlKShzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1Y3QgYXR0cmlidXRlICosIGNvbnN0IGNo YXIgKiwgc2l6ZV90KTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX2NyZWF0ZV9k aXJfbnMoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IHZvaWQgKm5zKTsKMTQ0NzQ6IHZvaWQg c3lzZnNfcmVtb3ZlX2RpcihzdHJ1Y3Qga29iamVjdCAqa29iaik7CjE0NDc0OiBpbnQgX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX3JlbmFtZV9kaXJfbnMoc3Ry dWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5ld19uYW1lLAoxNDQ3NDogICAgICAgICAg Y29uc3Qgdm9pZCAqbmV3X25zKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkgc3lzZnNfbW92ZV9kaXJfbnMoc3RydWN0IGtvYmplY3QgKmtvYmosCjE0 NDc0OiAgICAgICAgc3RydWN0IGtvYmplY3QgKm5ld19wYXJlbnRfa29iaiwKMTQ0NzQ6ICAgICAg ICBjb25zdCB2b2lkICpuZXdfbnMpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKSBzeXNmc19jcmVhdGVfbW91bnRfcG9pbnQoc3RydWN0IGtvYmplY3Qg KnBhcmVudF9rb2JqLAoxNDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwoxNDQ3NDogdm9p ZCBzeXNmc19yZW1vdmVfbW91bnRfcG9pbnQoc3RydWN0IGtvYmplY3QgKnBhcmVudF9rb2JqLAox NDQ3NDogICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiAKMTQ0NzQ6IGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2ZpbGVfbnMo c3RydWN0IGtvYmplY3QgKmtvYmosCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCB2b2lkICpucyk7CjE0NDc0OiBpbnQg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX2NyZWF0ZV9maWxl cyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmli dXRlICogY29uc3QgKmF0dHIpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVz ZWRfcmVzdWx0X18pKSBzeXNmc19jaG1vZF9maWxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3 NDogICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgdW1vZGVfdCBtb2RlKTsKMTQ0 NzQ6IHN0cnVjdCBrZXJuZnNfbm9kZSAqc3lzZnNfYnJlYWtfYWN0aXZlX3Byb3RlY3Rpb24oc3Ry dWN0IGtvYmplY3QgKmtvYmosCjE0NDc0OiAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIpOwoxNDQ3NDogdm9pZCBzeXNmc191bmJyZWFrX2FjdGl2ZV9wcm90ZWN0aW9uKHN0cnVj dCBrZXJuZnNfbm9kZSAqa24pOwoxNDQ3NDogdm9pZCBzeXNmc19yZW1vdmVfZmlsZV9ucyhzdHJ1 Y3Qga29iamVjdCAqa29iaiwgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAg ICAgY29uc3Qgdm9pZCAqbnMpOwoxNDQ3NDogYm9vbCBzeXNmc19yZW1vdmVfZmlsZV9zZWxmKHN0 cnVjdCBrb2JqZWN0ICprb2JqLCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKTsKMTQ0NzQ6 IHZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGVzKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlICogY29uc3QgKmF0dHIpOwoxNDQ3NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZShzdHJ1 Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRy aWJ1dGUgKmF0dHIpOwoxNDQ3NDogdm9pZCBzeXNmc19yZW1vdmVfYmluX2ZpbGUoc3RydWN0IGtv YmplY3QgKmtvYmosCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0 cik7CjE0NDc0OiAKMTQ0NzQ6IGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkgc3lzZnNfY3JlYXRlX2xpbmsoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2Jq ZWN0ICp0YXJnZXQsCjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiBpbnQg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX2NyZWF0ZV9saW5r X25vd2FybihzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICBzdHJ1Y3Qga29iamVj dCAqdGFyZ2V0LAoxNDQ3NDogICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwoxNDQ3NDogdm9pZCBz eXNmc19yZW1vdmVfbGluayhzdHJ1Y3Qga29iamVjdCAqa29iaiwgY29uc3QgY2hhciAqbmFtZSk7 CjE0NDc0OiAKMTQ0NzQ6IGludCBzeXNmc19yZW5hbWVfbGlua19ucyhzdHJ1Y3Qga29iamVjdCAq a29iaiwgc3RydWN0IGtvYmplY3QgKnRhcmdldCwKMTQ0NzQ6ICAgICBjb25zdCBjaGFyICpvbGRf bmFtZSwgY29uc3QgY2hhciAqbmV3X25hbWUsCjE0NDc0OiAgICAgY29uc3Qgdm9pZCAqbmV3X25z KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBzeXNmc19kZWxldGVfbGluayhzdHJ1Y3Qga29iamVjdCAq ZGlyLCBzdHJ1Y3Qga29iamVjdCAqdGFyZywKMTQ0NzQ6ICAgIGNvbnN0IGNoYXIgKm5hbWUpOwox NDQ3NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IHN5c2ZzX2NyZWF0ZV9ncm91cChzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICAg Y29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKMTQ0NzQ6IGludCBfX2F0dHJpYnV0 ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2dyb3VwcyhzdHJ1Y3Qg a29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv dXAgKipncm91cHMpOwoxNDQ3NDogaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKSBzeXNmc191cGRhdGVfZ3JvdXBzKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3NDog ICAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0OiBp bnQgc3lzZnNfdXBkYXRlX2dyb3VwKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3NDogICAgICAg ICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKMTQ0NzQ6IHZvaWQgc3lzZnNf cmVtb3ZlX2dyb3VwKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKMTQ0NzQ6IHZvaWQgc3lzZnNfcmVtb3ZlX2dyb3Vwcyhz dHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwICoqZ3JvdXBzKTsKMTQ0NzQ6IGludCBzeXNmc19hZGRfZmlsZV90b19ncm91cChzdHJ1Y3Qg a29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIGNv bnN0IGNoYXIgKmdyb3VwKTsKMTQ0NzQ6IHZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGVfZnJvbV9ncm91 cChzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsIGNvbnN0IGNoYXIgKmdyb3VwKTsKMTQ0NzQ6IGludCBzeXNmc19tZXJnZV9ncm91cChz dHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgKmdycCk7CjE0NDc0OiB2b2lkIHN5c2ZzX3VubWVyZ2VfZ3JvdXAoc3RydWN0IGtv YmplY3QgKmtvYmosCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3Vw ICpncnApOwoxNDQ3NDogaW50IHN5c2ZzX2FkZF9saW5rX3RvX2dyb3VwKHN0cnVjdCBrb2JqZWN0 ICprb2JqLCBjb25zdCBjaGFyICpncm91cF9uYW1lLAoxNDQ3NDogICAgICAgIHN0cnVjdCBrb2Jq ZWN0ICp0YXJnZXQsIGNvbnN0IGNoYXIgKmxpbmtfbmFtZSk7CjE0NDc0OiB2b2lkIHN5c2ZzX3Jl bW92ZV9saW5rX2Zyb21fZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKmdy b3VwX25hbWUsCjE0NDc0OiAgICAgICBjb25zdCBjaGFyICpsaW5rX25hbWUpOwoxNDQ3NDogaW50 IF9fY29tcGF0X29ubHlfc3lzZnNfbGlua19lbnRyeV90b19rb2JqKHN0cnVjdCBrb2JqZWN0ICpr b2JqLAoxNDQ3NDogICAgICAgICAgIHN0cnVjdCBrb2JqZWN0ICp0YXJnZXRfa29iaiwKMTQ0NzQ6 ICAgICAgICAgICBjb25zdCBjaGFyICp0YXJnZXRfbmFtZSk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQg c3lzZnNfbm90aWZ5KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjb25zdCBjaGFyICpkaXIsIGNvbnN0 IGNoYXIgKmF0dHIpOwoxNDQ3NDogCjE0NDc0OiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIHN5c2ZzX2luaXQodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3lz ZnNfZW5hYmxlX25zKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGtlcm5mc19lbmFibGVfbnMoa24pOwoxNDQ3NDogfQoxNDQ3NDogIyA1MjcgIi4vaW5jbHVk ZS9saW51eC9zeXNmcy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBzeXNmc19jcmVhdGVfZmlsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwKMTQ0NzQ6 ICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBzeXNmc19jcmVhdGVfZmlsZV9ucyhrb2JqLCBhdHRyLCAoKHZvaWQgKikwKSk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGUoc3RydWN0IGtvYmplY3Qg KmtvYmosCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQoxNDQ3 NDogewoxNDQ3NDogIHN5c2ZzX3JlbW92ZV9maWxlX25zKGtvYmosIGF0dHIsICgodm9pZCAqKTAp KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN5c2ZzX3JlbmFtZV9saW5rKHN0cnVjdCBr b2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29iamVjdCAqdGFyZ2V0LAoxNDQ3NDogICAgICAgICBjb25z dCBjaGFyICpvbGRfbmFtZSwgY29uc3QgY2hhciAqbmV3X25hbWUpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIHN5c2ZzX3JlbmFtZV9saW5rX25zKGtvYmosIHRhcmdldCwgb2xkX25hbWUsIG5ld19u YW1lLCAoKHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3lzZnNfbm90 aWZ5X2RpcmVudChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKQoxNDQ3NDogewoxNDQ3NDogIGtlcm5m c19ub3RpZnkoa24pOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUg KnN5c2ZzX2dldF9kaXJlbnQoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCjE0NDc0OiAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrZXJuZnNfZmlu ZF9hbmRfZ2V0KHBhcmVudCwgbmFtZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBr ZXJuZnNfbm9kZSAqc3lzZnNfZ2V0KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pCjE0NDc0OiB7CjE0 NDc0OiAga2VybmZzX2dldChrbik7CjE0NDc0OiAgcmV0dXJuIGtuOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHN5c2ZzX3B1dChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKQoxNDQ3NDogewox NDQ3NDogIGtlcm5mc19wdXQoa24pOwoxNDQ3NDogfQoxNDQ3NDogIyAyMSAiLi9pbmNsdWRlL2xp bnV4L2tvYmplY3QuaCIgMgoxNDQ3NDogIyA0MSAiLi9pbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIK MTQ0NzQ6IGV4dGVybiB1NjQgdWV2ZW50X3NlcW51bTsKMTQ0NzQ6ICMgNTMgIi4vaW5jbHVkZS9s aW51eC9rb2JqZWN0LmgiCjE0NDc0OiBlbnVtIGtvYmplY3RfYWN0aW9uIHsKMTQ0NzQ6ICBLT0JK X0FERCwKMTQ0NzQ6ICBLT0JKX1JFTU9WRSwKMTQ0NzQ6ICBLT0JKX0NIQU5HRSwKMTQ0NzQ6ICBL T0JKX01PVkUsCjE0NDc0OiAgS09CSl9PTkxJTkUsCjE0NDc0OiAgS09CSl9PRkZMSU5FLAoxNDQ3 NDogIEtPQkpfQklORCwKMTQ0NzQ6ICBLT0JKX1VOQklORCwKMTQ0NzQ6ICBLT0JKX01BWAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtvYmplY3QgewoxNDQ3NDogIGNvbnN0IGNoYXIg Km5hbWU7CjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKMTQ0NzQ6ICBzdHJ1Y3Qga29i amVjdCAqcGFyZW50OwoxNDQ3NDogIHN0cnVjdCBrc2V0ICprc2V0OwoxNDQ3NDogIHN0cnVjdCBr b2JqX3R5cGUgKmt0eXBlOwoxNDQ3NDogIHN0cnVjdCBrZXJuZnNfbm9kZSAqc2Q7CjE0NDc0OiAg c3RydWN0IGtyZWYga3JlZjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgc3RhdGVfaW5pdGlhbGl6ZWQ6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3RhdGVfaW5f c3lzZnM6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3RhdGVfYWRkX3VldmVudF9zZW50OjE7CjE0 NDc0OiAgdW5zaWduZWQgaW50IHN0YXRlX3JlbW92ZV91ZXZlbnRfc2VudDoxOwoxNDQ3NDogIHVu c2lnbmVkIGludCB1ZXZlbnRfc3VwcHJlc3M6MTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQoxNDQ3NDogaW50 IGtvYmplY3Rfc2V0X25hbWUoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5hbWUs IC4uLik7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIs IDApKSkKMTQ0NzQ6IGludCBrb2JqZWN0X3NldF9uYW1lX3ZhcmdzKHN0cnVjdCBrb2JqZWN0ICpr b2JqLCBjb25zdCBjaGFyICpmbXQsCjE0NDc0OiAgICAgICB2YV9saXN0IHZhcmdzKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgY29uc3QgY2hhciAqa29iamVjdF9uYW1lKGNvbnN0IHN0cnVjdCBrb2JqZWN0ICpr b2JqKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBrb2JqLT5uYW1lOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBleHRlcm4gdm9pZCBrb2JqZWN0X2luaXQoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0 cnVjdCBrb2JqX3R5cGUgKmt0eXBlKTsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zv cm1hdF9fKHByaW50ZiwgMywgNCkpKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkKMTQ0NzQ6IGludCBrb2JqZWN0X2FkZChzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0 IGtvYmplY3QgKnBhcmVudCwKMTQ0NzQ6ICAgY29uc3QgY2hhciAqZm10LCAuLi4pOwoxNDQ3NDog ZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCA0LCA1KSkpIF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKQoxNDQ3NDogaW50IGtvYmplY3RfaW5pdF9h bmRfYWRkKHN0cnVjdCBrb2JqZWN0ICprb2JqLAoxNDQ3NDogICAgIHN0cnVjdCBrb2JqX3R5cGUg Kmt0eXBlLCBzdHJ1Y3Qga29iamVjdCAqcGFyZW50LAoxNDQ3NDogICAgIGNvbnN0IGNoYXIgKmZt dCwgLi4uKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga29iamVjdF9kZWwoc3RydWN0IGtv YmplY3QgKmtvYmopOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGtvYmplY3QgKiBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga29iamVjdF9jcmVhdGUodm9pZCk7 CjE0NDc0OiBleHRlcm4gc3RydWN0IGtvYmplY3QgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkga29iamVjdF9jcmVhdGVfYW5kX2FkZChjb25zdCBjaGFyICpuYW1lLAox NDQ3NDogICAgICAgc3RydWN0IGtvYmplY3QgKnBhcmVudCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVy biBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtvYmplY3RfcmVu YW1lKHN0cnVjdCBrb2JqZWN0ICosIGNvbnN0IGNoYXIgKm5ld19uYW1lKTsKMTQ0NzQ6IGV4dGVy biBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtvYmplY3RfbW92 ZShzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1Y3Qga29iamVjdCAqKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCBrb2JqZWN0ICprb2JqZWN0X2dldChzdHJ1Y3Qga29iamVjdCAqa29iaik7CjE0 NDc0OiBleHRlcm4gc3RydWN0IGtvYmplY3QgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkga29iamVjdF9nZXRfdW5sZXNzX3plcm8oCjE0NDc0OiAgICAgICBzdHJ1Y3Qg a29iamVjdCAqa29iaik7CjE0NDc0OiBleHRlcm4gdm9pZCBrb2JqZWN0X3B1dChzdHJ1Y3Qga29i amVjdCAqa29iaik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjb25zdCB2b2lkICprb2JqZWN0X25h bWVzcGFjZShzdHJ1Y3Qga29iamVjdCAqa29iaik7CjE0NDc0OiBleHRlcm4gdm9pZCBrb2JqZWN0 X2dldF9vd25lcnNoaXAoc3RydWN0IGtvYmplY3QgKmtvYmosCjE0NDc0OiAgICAgICBrdWlkX3Qg KnVpZCwga2dpZF90ICpnaWQpOwoxNDQ3NDogZXh0ZXJuIGNoYXIgKmtvYmplY3RfZ2V0X3BhdGgo c3RydWN0IGtvYmplY3QgKmtvYmosIGdmcF90IGZsYWcpOwoxNDQ3NDogIyAxMzIgIi4vaW5jbHVk ZS9saW51eC9rb2JqZWN0LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGtvYmplY3RfaGFzX2NoaWxkcmVuKHN0cnVj dCBrb2JqZWN0ICprb2JqKQoxNDQ3NDogewoxNDQ3NDogICh7IGludCBfX3JldF93YXJuX29uID0g ISEoa3JlZl9yZWFkKCZrb2JqLT5rcmVmKSA9PSAwKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0 IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdc IlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRk clxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIg Ilx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMg YnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAi aSIgKCJpbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIpLCAiaSIgKDEzNCksICJpIiAoKDEgPDwgMCl8 KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkp OyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICgzNykpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBrb2JqLT5zZCAm JiBrb2JqLT5zZC0+ZGlyLnN1YmRpcnM7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBr b2JqX3R5cGUgewoxNDQ3NDogIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7 CjE0NDc0OiAgY29uc3Qgc3RydWN0IHN5c2ZzX29wcyAqc3lzZnNfb3BzOwoxNDQ3NDogIHN0cnVj dCBhdHRyaWJ1dGUgKipkZWZhdWx0X2F0dHJzOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgKipkZWZhdWx0X2dyb3VwczsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3Qga29ial9uc190 eXBlX29wZXJhdGlvbnMgKigqY2hpbGRfbnNfdHlwZSkoc3RydWN0IGtvYmplY3QgKmtvYmopOwox NDQ3NDogIGNvbnN0IHZvaWQgKigqbmFtZXNwYWNlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7CjE0 NDc0OiAgdm9pZCAoKmdldF9vd25lcnNoaXApKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBrdWlkX3Qg KnVpZCwga2dpZF90ICpnaWQpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGtvYmpf dWV2ZW50X2VudiB7CjE0NDc0OiAgY2hhciAqYXJndlszXTsKMTQ0NzQ6ICBjaGFyICplbnZwWzMy XTsKMTQ0NzQ6ICBpbnQgZW52cF9pZHg7CjE0NDc0OiAgY2hhciBidWZbMjA0OF07CjE0NDc0OiAg aW50IGJ1ZmxlbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrc2V0X3VldmVudF9v cHMgewoxNDQ3NDogIGludCAoKiBjb25zdCBmaWx0ZXIpKHN0cnVjdCBrc2V0ICprc2V0LCBzdHJ1 Y3Qga29iamVjdCAqa29iaik7CjE0NDc0OiAgY29uc3QgY2hhciAqKCogY29uc3QgbmFtZSkoc3Ry dWN0IGtzZXQgKmtzZXQsIHN0cnVjdCBrb2JqZWN0ICprb2JqKTsKMTQ0NzQ6ICBpbnQgKCogY29u c3QgdWV2ZW50KShzdHJ1Y3Qga3NldCAqa3NldCwgc3RydWN0IGtvYmplY3QgKmtvYmosCjE0NDc0 OiAgICAgICAgIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudik7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgewoxNDQ3NDogIHN0cnVjdCBhdHRyaWJ1dGUg YXR0cjsKMTQ0NzQ6ICBzc2l6ZV90ICgqc2hvdykoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVj dCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgIGNoYXIgKmJ1Zik7CjE0NDc0OiAgc3Np emVfdCAoKnN0b3JlKShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRl ICphdHRyLAoxNDQ3NDogICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3lzZnNfb3BzIGtvYmpfc3lz ZnNfb3BzOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc29jazsKMTQ0NzQ6ICMgMTkzICIuL2luY2x1 ZGUvbGludXgva29iamVjdC5oIgoxNDQ3NDogc3RydWN0IGtzZXQgewoxNDQ3NDogIHN0cnVjdCBs aXN0X2hlYWQgbGlzdDsKMTQ0NzQ6ICBzcGlubG9ja190IGxpc3RfbG9jazsKMTQ0NzQ6ICBzdHJ1 Y3Qga29iamVjdCBrb2JqOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBrc2V0X3VldmVudF9vcHMgKnVl dmVudF9vcHM7CjE0NDc0OiB9IF9fYXR0cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsK MTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga3NldF9pbml0KHN0cnVjdCBrc2V0ICprc2V0KTsK MTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGtzZXRfcmVnaXN0ZXIoc3RydWN0IGtzZXQgKmtzZXQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga3Nl dF91bnJlZ2lzdGVyKHN0cnVjdCBrc2V0ICprc2V0KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga3Nl dCAqIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc2V0X2NyZWF0ZV9h bmRfYWRkKGNvbnN0IGNoYXIgKm5hbWUsCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3Qga3NldF91 ZXZlbnRfb3BzICp1LAoxNDQ3NDogICAgICAgc3RydWN0IGtvYmplY3QgKnBhcmVudF9rb2JqKTsK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtzZXQgKnRvX2tzZXQoc3RydWN0IGtvYmplY3QgKmtvYmop CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGtvYmogPyAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAq KShrb2JqKTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8yMDkodm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFp bmVyX29mKCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv ZigqKGtvYmopKSwgdHlwZW9mKCgoc3RydWN0IGtzZXQgKikwKS0+a29iaikpICYmICFfX2J1aWx0 aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKGtvYmopKSwgdHlwZW9mKHZvaWQpKSkpKSBf X2NvbXBpbGV0aW1lX2Fzc2VydF8yMDkoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IGtzZXQgKiko X19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBrc2V0LCBrb2JqKSkpOyB9KSA6ICgo dm9pZCAqKTApOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga3NldCAqa3NldF9nZXQo c3RydWN0IGtzZXQgKmspCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGsgPyB0b19rc2V0KGtvYmpl Y3RfZ2V0KCZrLT5rb2JqKSkgOiAoKHZvaWQgKikwKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBrc2V0X3B1dChzdHJ1Y3Qga3NldCAqaykKMTQ0NzQ6IHsKMTQ0NzQ6ICBrb2JqZWN0X3B1 dCgmay0+a29iaik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrb2JqX3R5cGUgKmdl dF9rdHlwZShzdHJ1Y3Qga29iamVjdCAqa29iaikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4ga29i ai0+a3R5cGU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga29iamVjdCAq a3NldF9maW5kX29iaihzdHJ1Y3Qga3NldCAqLCBjb25zdCBjaGFyICopOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga29iamVjdCAqa2VybmVsX2tvYmo7CjE0NDc0OiAKMTQ0 NzQ6IGV4dGVybiBzdHJ1Y3Qga29iamVjdCAqbW1fa29iajsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHN0cnVjdCBrb2JqZWN0ICpoeXBlcnZpc29yX2tvYmo7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBz dHJ1Y3Qga29iamVjdCAqcG93ZXJfa29iajsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBr b2JqZWN0ICpmaXJtd2FyZV9rb2JqOwoxNDQ3NDogCjE0NDc0OiBpbnQga29iamVjdF91ZXZlbnQo c3RydWN0IGtvYmplY3QgKmtvYmosIGVudW0ga29iamVjdF9hY3Rpb24gYWN0aW9uKTsKMTQ0NzQ6 IGludCBrb2JqZWN0X3VldmVudF9lbnYoc3RydWN0IGtvYmplY3QgKmtvYmosIGVudW0ga29iamVj dF9hY3Rpb24gYWN0aW9uLAoxNDQ3NDogICAgY2hhciAqZW52cFtdKTsKMTQ0NzQ6IGludCBrb2Jq ZWN0X3N5bnRoX3VldmVudChzdHJ1Y3Qga29iamVjdCAqa29iaiwgY29uc3QgY2hhciAqYnVmLCBz aXplX3QgY291bnQpOwoxNDQ3NDogCjE0NDc0OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHBy aW50ZiwgMiwgMykpKQoxNDQ3NDogaW50IGFkZF91ZXZlbnRfdmFyKHN0cnVjdCBrb2JqX3VldmVu dF9lbnYgKmVudiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwoxNDQ3NDogIyAxOCAiLi9pbmNs dWRlL2xpbnV4L2RldmljZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9rbGlzdC5o IiAxCjE0NDc0OiAjIDE3ICIuL2luY2x1ZGUvbGludXgva2xpc3QuaCIKMTQ0NzQ6IHN0cnVjdCBr bGlzdF9ub2RlOwoxNDQ3NDogc3RydWN0IGtsaXN0IHsKMTQ0NzQ6ICBzcGlubG9ja190IGtfbG9j azsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGtfbGlzdDsKMTQ0NzQ6ICB2b2lkICgqZ2V0KShz dHJ1Y3Qga2xpc3Rfbm9kZSAqKTsKMTQ0NzQ6ICB2b2lkICgqcHV0KShzdHJ1Y3Qga2xpc3Rfbm9k ZSAqKTsKMTQ0NzQ6IH0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKHNpemVvZih2b2lkICopKSkp OwoxNDQ3NDogIyAzNCAiLi9pbmNsdWRlL2xpbnV4L2tsaXN0LmgiCjE0NDc0OiBleHRlcm4gdm9p ZCBrbGlzdF9pbml0KHN0cnVjdCBrbGlzdCAqaywgdm9pZCAoKmdldCkoc3RydWN0IGtsaXN0X25v ZGUgKiksCjE0NDc0OiAgICAgICAgICB2b2lkICgqcHV0KShzdHJ1Y3Qga2xpc3Rfbm9kZSAqKSk7 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrbGlzdF9ub2RlIHsKMTQ0NzQ6ICB2b2lkICpuX2tsaXN0 OwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgbl9ub2RlOwoxNDQ3NDogIHN0cnVjdCBrcmVmIG5f cmVmOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQga2xpc3RfYWRkX3RhaWwo c3RydWN0IGtsaXN0X25vZGUgKm4sIHN0cnVjdCBrbGlzdCAqayk7CjE0NDc0OiBleHRlcm4gdm9p ZCBrbGlzdF9hZGRfaGVhZChzdHJ1Y3Qga2xpc3Rfbm9kZSAqbiwgc3RydWN0IGtsaXN0ICprKTsK MTQ0NzQ6IGV4dGVybiB2b2lkIGtsaXN0X2FkZF9iZWhpbmQoc3RydWN0IGtsaXN0X25vZGUgKm4s IHN0cnVjdCBrbGlzdF9ub2RlICpwb3MpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga2xpc3RfYWRkX2Jl Zm9yZShzdHJ1Y3Qga2xpc3Rfbm9kZSAqbiwgc3RydWN0IGtsaXN0X25vZGUgKnBvcyk7CjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGtsaXN0X2RlbChzdHJ1Y3Qga2xpc3Rfbm9kZSAqbik7CjE0 NDc0OiBleHRlcm4gdm9pZCBrbGlzdF9yZW1vdmUoc3RydWN0IGtsaXN0X25vZGUgKm4pOwoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gaW50IGtsaXN0X25vZGVfYXR0YWNoZWQoc3RydWN0IGtsaXN0X25v ZGUgKm4pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBrbGlzdF9pdGVyIHsKMTQ0NzQ6 ICBzdHJ1Y3Qga2xpc3QgKmlfa2xpc3Q7CjE0NDc0OiAgc3RydWN0IGtsaXN0X25vZGUgKmlfY3Vy OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBrbGlzdF9pdGVy X2luaXQoc3RydWN0IGtsaXN0ICprLCBzdHJ1Y3Qga2xpc3RfaXRlciAqaSk7CjE0NDc0OiBleHRl cm4gdm9pZCBrbGlzdF9pdGVyX2luaXRfbm9kZShzdHJ1Y3Qga2xpc3QgKmssIHN0cnVjdCBrbGlz dF9pdGVyICppLAoxNDQ3NDogICAgICBzdHJ1Y3Qga2xpc3Rfbm9kZSAqbik7CjE0NDc0OiBleHRl cm4gdm9pZCBrbGlzdF9pdGVyX2V4aXQoc3RydWN0IGtsaXN0X2l0ZXIgKmkpOwoxNDQ3NDogZXh0 ZXJuIHN0cnVjdCBrbGlzdF9ub2RlICprbGlzdF9wcmV2KHN0cnVjdCBrbGlzdF9pdGVyICppKTsK MTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2xpc3Rfbm9kZSAqa2xpc3RfbmV4dChzdHJ1Y3Qga2xpc3Rf aXRlciAqaSk7CjE0NDc0OiAjIDE5ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9s aW51eC9wbS5oIiAxCjE0NDc0OiAjIDIyICIuL2luY2x1ZGUvbGludXgvcG0uaCIKMTQ0NzQ6IGV4 dGVybiB2b2lkICgqcG1fcG93ZXJfb2ZmKSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkICgqcG1f cG93ZXJfb2ZmX3ByZXBhcmUpKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlOwox NDQ3NDogCjE0NDc0OiBleHRlcm4gdm9pZCBwbV92dF9zd2l0Y2hfcmVxdWlyZWQoc3RydWN0IGRl dmljZSAqZGV2LCBib29sIHJlcXVpcmVkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHBtX3Z0X3N3aXRj aF91bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAjIDQyICIuL2luY2x1ZGUv bGludXgvcG0uaCIKMTQ0NzQ6IHN0cnVjdCBkZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGNvbnN0IGNoYXIgcG93ZXJfZ3JvdXBfbmFtZVtdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBwbV9tZXNzYWdlIHsKMTQ0NzQ6ICBp bnQgZXZlbnQ7CjE0NDc0OiB9IHBtX21lc3NhZ2VfdDsKMTQ0NzQ6ICMgMjc4ICIuL2luY2x1ZGUv bGludXgvcG0uaCIKMTQ0NzQ6IHN0cnVjdCBkZXZfcG1fb3BzIHsKMTQ0NzQ6ICBpbnQgKCpwcmVw YXJlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIHZvaWQgKCpjb21wbGV0ZSkoc3RydWN0 IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgZGV2aWNlICpkZXYp OwoxNDQ3NDogIGludCAoKnJlc3VtZSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQg KCpmcmVlemUpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqdGhhdykoc3RydWN0 IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpwb3dlcm9mZikoc3RydWN0IGRldmljZSAqZGV2 KTsKMTQ0NzQ6ICBpbnQgKCpyZXN0b3JlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIGlu dCAoKnN1c3BlbmRfbGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpyZXN1 bWVfZWFybHkpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqZnJlZXplX2xhdGUp KHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqdGhhd19lYXJseSkoc3RydWN0IGRl dmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpwb3dlcm9mZl9sYXRlKShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwoxNDQ3NDogIGludCAoKnJlc3RvcmVfZWFybHkpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0 NDc0OiAgaW50ICgqc3VzcGVuZF9ub2lycSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBp bnQgKCpyZXN1bWVfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqZnJl ZXplX25vaXJxKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIGludCAoKnRoYXdfbm9pcnEp KHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqcG93ZXJvZmZfbm9pcnEpKHN0cnVj dCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqcmVzdG9yZV9ub2lycSkoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpydW50aW1lX3N1c3BlbmQpKHN0cnVjdCBkZXZpY2UgKmRl dik7CjE0NDc0OiAgaW50ICgqcnVudGltZV9yZXN1bWUpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0 NDc0OiAgaW50ICgqcnVudGltZV9pZGxlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogfTsK MTQ0NzQ6ICMgNDk2ICIuL2luY2x1ZGUvbGludXgvcG0uaCIKMTQ0NzQ6IGVudW0gcnBtX3N0YXR1 cyB7CjE0NDc0OiAgUlBNX0FDVElWRSA9IDAsCjE0NDc0OiAgUlBNX1JFU1VNSU5HLAoxNDQ3NDog IFJQTV9TVVNQRU5ERUQsCjE0NDc0OiAgUlBNX1NVU1BFTkRJTkcsCjE0NDc0OiB9OwoxNDQ3NDog IyA1MTggIi4vaW5jbHVkZS9saW51eC9wbS5oIgoxNDQ3NDogZW51bSBycG1fcmVxdWVzdCB7CjE0 NDc0OiAgUlBNX1JFUV9OT05FID0gMCwKMTQ0NzQ6ICBSUE1fUkVRX0lETEUsCjE0NDc0OiAgUlBN X1JFUV9TVVNQRU5ELAoxNDQ3NDogIFJQTV9SRVFfQVVUT1NVU1BFTkQsCjE0NDc0OiAgUlBNX1JF UV9SRVNVTUUsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZTsK MTQ0NzQ6IHN0cnVjdCB3YWtlX2lycTsKMTQ0NzQ6IHN0cnVjdCBwbV9kb21haW5fZGF0YTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IHBtX3N1YnN5c19kYXRhIHsKMTQ0NzQ6ICBzcGlubG9ja190IGxv Y2s7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmNvdW50OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0 IGxpc3RfaGVhZCBjbG9ja19saXN0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiB9OwoxNDQ3NDogIyA1NzMgIi4vaW5jbHVkZS9saW51eC9wbS5oIgoxNDQ3NDogc3RydWN0 IGRldl9wbV9pbmZvIHsKMTQ0NzQ6ICBwbV9tZXNzYWdlX3QgcG93ZXJfc3RhdGU7CjE0NDc0OiAg dW5zaWduZWQgaW50IGNhbl93YWtldXA6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgYXN5bmNfc3Vz cGVuZDoxOwoxNDQ3NDogIGJvb2wgaW5fZHBtX2xpc3Q6MTsKMTQ0NzQ6ICBib29sIGlzX3ByZXBh cmVkOjE7CjE0NDc0OiAgYm9vbCBpc19zdXNwZW5kZWQ6MTsKMTQ0NzQ6ICBib29sIGlzX25vaXJx X3N1c3BlbmRlZDoxOwoxNDQ3NDogIGJvb2wgaXNfbGF0ZV9zdXNwZW5kZWQ6MTsKMTQ0NzQ6ICBi b29sIG5vX3BtOjE7CjE0NDc0OiAgYm9vbCBlYXJseV9pbml0OjE7CjE0NDc0OiAgYm9vbCBkaXJl Y3RfY29tcGxldGU6MTsKMTQ0NzQ6ICB1MzIgZHJpdmVyX2ZsYWdzOwoxNDQ3NDogIHNwaW5sb2Nr X3QgbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7CjE0NDc0OiAg c3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjsKMTQ0NzQ6ICBzdHJ1Y3Qgd2FrZXVwX3NvdXJj ZSAqd2FrZXVwOwoxNDQ3NDogIGJvb2wgd2FrZXVwX3BhdGg6MTsKMTQ0NzQ6ICBib29sIHN5c2Nv cmU6MTsKMTQ0NzQ6ICBib29sIG5vX3BtX2NhbGxiYWNrczoxOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBtdXN0X3Jlc3VtZToxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtYXlfc2tpcF9yZXN1bWU6MTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBocnRpbWVyIHN1 c3BlbmRfdGltZXI7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0aW1lcl9leHBpcmVzOwoxNDQ3NDog IHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwoxNDQ3NDogIHdhaXRfcXVldWVfaGVhZF90IHdhaXRf cXVldWU7CjE0NDc0OiAgc3RydWN0IHdha2VfaXJxICp3YWtlaXJxOwoxNDQ3NDogIGF0b21pY190 IHVzYWdlX2NvdW50OwoxNDQ3NDogIGF0b21pY190IGNoaWxkX2NvdW50OwoxNDQ3NDogIHVuc2ln bmVkIGludCBkaXNhYmxlX2RlcHRoOjM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGlkbGVfbm90aWZp Y2F0aW9uOjE7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlcXVlc3RfcGVuZGluZzoxOwoxNDQ3NDog IHVuc2lnbmVkIGludCBkZWZlcnJlZF9yZXN1bWU6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcnVu dGltZV9hdXRvOjE7CjE0NDc0OiAgYm9vbCBpZ25vcmVfY2hpbGRyZW46MTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbm9fY2FsbGJhY2tzOjE7CjE0NDc0OiAgdW5zaWduZWQgaW50IGlycV9zYWZlOjE7 CjE0NDc0OiAgdW5zaWduZWQgaW50IHVzZV9hdXRvc3VzcGVuZDoxOwoxNDQ3NDogIHVuc2lnbmVk IGludCB0aW1lcl9hdXRvc3VzcGVuZHM6MTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWVtYWxsb2Nf bm9pbzoxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBsaW5rc19jb3VudDsKMTQ0NzQ6ICBlbnVtIHJw bV9yZXF1ZXN0IHJlcXVlc3Q7CjE0NDc0OiAgZW51bSBycG1fc3RhdHVzIHJ1bnRpbWVfc3RhdHVz OwoxNDQ3NDogIGludCBydW50aW1lX2Vycm9yOwoxNDQ3NDogIGludCBhdXRvc3VzcGVuZF9kZWxh eTsKMTQ0NzQ6ICB1NjQgbGFzdF9idXN5OwoxNDQ3NDogIHU2NCBhY3RpdmVfdGltZTsKMTQ0NzQ6 ICB1NjQgc3VzcGVuZGVkX3RpbWU7CjE0NDc0OiAgdTY0IGFjY291bnRpbmdfdGltZXN0YW1wOwox NDQ3NDogCjE0NDc0OiAgc3RydWN0IHBtX3N1YnN5c19kYXRhICpzdWJzeXNfZGF0YTsKMTQ0NzQ6 ICB2b2lkICgqc2V0X2xhdGVuY3lfdG9sZXJhbmNlKShzdHJ1Y3QgZGV2aWNlICosIHMzMik7CjE0 NDc0OiAgc3RydWN0IGRldl9wbV9xb3MgKnFvczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4 dGVybiBpbnQgZGV2X3BtX2dldF9zdWJzeXNfZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgZGV2X3BtX3B1dF9zdWJzeXNfZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYp OwoxNDQ3NDogIyA2NTAgIi4vaW5jbHVkZS9saW51eC9wbS5oIgoxNDQ3NDogc3RydWN0IGRldl9w bV9kb21haW4gewoxNDQ3NDogIHN0cnVjdCBkZXZfcG1fb3BzIG9wczsKMTQ0NzQ6ICBpbnQgKCpz dGFydCkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICB2b2lkICgqZGV0YWNoKShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGJvb2wgcG93ZXJfb2ZmKTsKMTQ0NzQ6ICBpbnQgKCphY3RpdmF0ZSkoc3Ry dWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICB2b2lkICgqc3luYykoc3RydWN0IGRldmljZSAqZGV2 KTsKMTQ0NzQ6ICB2b2lkICgqZGlzbWlzcykoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IH07 CjE0NDc0OiAjIDcxNCAiLi9pbmNsdWRlL2xpbnV4L3BtLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBk ZXZpY2VfcG1fbG9jayh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRwbV9yZXN1bWVfc3RhcnQo cG1fbWVzc2FnZV90IHN0YXRlKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRwbV9yZXN1bWVfZW5kKHBt X21lc3NhZ2VfdCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcG1fcmVzdW1lX25vaXJxKHBt X21lc3NhZ2VfdCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcG1fcmVzdW1lX2Vhcmx5KHBt X21lc3NhZ2VfdCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcG1fcmVzdW1lKHBtX21lc3Nh Z2VfdCBzdGF0ZSk7CjE0NDc0OiBleHRlcm4gdm9pZCBkcG1fY29tcGxldGUocG1fbWVzc2FnZV90 IHN0YXRlKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2aWNlX3BtX3VubG9jayh2b2lk KTsKMTQ0NzQ6IGV4dGVybiBpbnQgZHBtX3N1c3BlbmRfZW5kKHBtX21lc3NhZ2VfdCBzdGF0ZSk7 CjE0NDc0OiBleHRlcm4gaW50IGRwbV9zdXNwZW5kX3N0YXJ0KHBtX21lc3NhZ2VfdCBzdGF0ZSk7 CjE0NDc0OiBleHRlcm4gaW50IGRwbV9zdXNwZW5kX25vaXJxKHBtX21lc3NhZ2VfdCBzdGF0ZSk7 CjE0NDc0OiBleHRlcm4gaW50IGRwbV9zdXNwZW5kX2xhdGUocG1fbWVzc2FnZV90IHN0YXRlKTsK MTQ0NzQ6IGV4dGVybiBpbnQgZHBtX3N1c3BlbmQocG1fbWVzc2FnZV90IHN0YXRlKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgZHBtX3ByZXBhcmUocG1fbWVzc2FnZV90IHN0YXRlKTsKMTQ0NzQ6IAoxNDQ3 NDogZXh0ZXJuIHZvaWQgX19zdXNwZW5kX3JlcG9ydF9yZXN1bHQoY29uc3QgY2hhciAqZnVuY3Rp b24sIHZvaWQgKmZuLCBpbnQgcmV0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgZGV2aWNlX3BtX3dhaXRfZm9yX2Rldihz dHJ1Y3QgZGV2aWNlICpzdWIsIHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gdm9p ZCBkcG1fZm9yX2VhY2hfZGV2KHZvaWQgKmRhdGEsIHZvaWQgKCpmbikoc3RydWN0IGRldmljZSAq LCB2b2lkICopKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBwbV9nZW5lcmljX3ByZXBhcmUo c3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJpY19zdXNwZW5k X2xhdGUoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJpY19z dXNwZW5kX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IHBtX2dl bmVyaWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBwbV9n ZW5lcmljX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGlu dCBwbV9nZW5lcmljX3Jlc3VtZV9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0 ZXJuIGludCBwbV9nZW5lcmljX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0 ZXJuIGludCBwbV9nZW5lcmljX2ZyZWV6ZV9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3 NDogZXh0ZXJuIGludCBwbV9nZW5lcmljX2ZyZWV6ZV9sYXRlKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiBleHRlcm4gaW50IHBtX2dlbmVyaWNfZnJlZXplKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiBleHRlcm4gaW50IHBtX2dlbmVyaWNfdGhhd19ub2lycShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBwbV9nZW5lcmljX3RoYXdfZWFybHkoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJpY190aGF3KHN0cnVjdCBkZXZpY2Ug KmRldik7CjE0NDc0OiBleHRlcm4gaW50IHBtX2dlbmVyaWNfcmVzdG9yZV9ub2lycShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBwbV9nZW5lcmljX3Jlc3RvcmVfZWFybHko c3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN0b3Jl KHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IHBtX2dlbmVyaWNfcG93ZXJv ZmZfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBpbnQgcG1fZ2VuZXJp Y19wb3dlcm9mZl9sYXRlKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IHBt X2dlbmVyaWNfcG93ZXJvZmYoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiB2b2lk IHBtX2dlbmVyaWNfY29tcGxldGUoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIGJvb2wgZGV2X3BtX21heV9za2lwX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwox NDQ3NDogZXh0ZXJuIGJvb2wgZGV2X3BtX3NtYXJ0X3N1c3BlbmRfYW5kX3N1c3BlbmRlZChzdHJ1 Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIyA4MDggIi4vaW5jbHVkZS9saW51eC9wbS5oIgoxNDQ3 NDogZW51bSBkcG1fb3JkZXIgewoxNDQ3NDogIERQTV9PUkRFUl9OT05FLAoxNDQ3NDogIERQTV9P UkRFUl9ERVZfQUZURVJfUEFSRU5ULAoxNDQ3NDogIERQTV9PUkRFUl9QQVJFTlRfQkVGT1JFX0RF ViwKMTQ0NzQ6ICBEUE1fT1JERVJfREVWX0xBU1QsCjE0NDc0OiB9OwoxNDQ3NDogIyAyNSAiLi9p bmNsdWRlL2xpbnV4L2RldmljZS5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICMgMSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9idXMuaCIgMQoxNDQ3NDogIyAyMSAi Li9pbmNsdWRlL2xpbnV4L2RldmljZS9idXMuaCIKMTQ0NzQ6IHN0cnVjdCBkZXZpY2VfZHJpdmVy OwoxNDQ3NDogc3RydWN0IGZ3bm9kZV9oYW5kbGU7CjE0NDc0OiAjIDgyICIuL2luY2x1ZGUvbGlu dXgvZGV2aWNlL2J1cy5oIgoxNDQ3NDogc3RydWN0IGJ1c190eXBlIHsKMTQ0NzQ6ICBjb25zdCBj aGFyICpuYW1lOwoxNDQ3NDogIGNvbnN0IGNoYXIgKmRldl9uYW1lOwoxNDQ3NDogIHN0cnVjdCBk ZXZpY2UgKmRldl9yb290OwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipi dXNfZ3JvdXBzOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipkZXZfZ3Jv dXBzOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipkcnZfZ3JvdXBzOwox NDQ3NDogCjE0NDc0OiAgaW50ICgqbWF0Y2gpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl dmljZV9kcml2ZXIgKmRydik7CjE0NDc0OiAgaW50ICgqdWV2ZW50KShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudik7CjE0NDc0OiAgaW50ICgqcHJvYmUpKHN0 cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgdm9pZCAoKnN5bmNfc3RhdGUpKHN0cnVjdCBkZXZp Y2UgKmRldik7CjE0NDc0OiAgaW50ICgqcmVtb3ZlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3 NDogIHZvaWQgKCpzaHV0ZG93bikoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDog IGludCAoKm9ubGluZSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6ICBpbnQgKCpvZmZsaW5l KShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqc3VzcGVuZCkoc3Ry dWN0IGRldmljZSAqZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOwoxNDQ3NDogIGludCAoKnJlc3Vt ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKm51bV92Zikoc3Ry dWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKmRtYV9jb25maWd1cmUpKHN0 cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGV2X3BtX29w cyAqcG07CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzICppb21tdV9vcHM7 CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3Vic3lzX3ByaXZhdGUgKnA7CjE0NDc0OiAgc3RydWN0 IGxvY2tfY2xhc3Nfa2V5IGxvY2tfa2V5OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBuZWVkX3BhcmVu dF9sb2NrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9f KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYnVzX3JlZ2lzdGVyKHN0cnVjdCBidXNfdHlwZSAq YnVzKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgYnVzX3VucmVnaXN0ZXIoc3RydWN0IGJ1 c190eXBlICpidXMpOwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKSBidXNfcmVzY2FuX2RldmljZXMoc3RydWN0IGJ1c190eXBl ICpidXMpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnVzX2F0dHJpYnV0ZSB7CjE0NDc0OiAgc3Ry dWN0IGF0dHJpYnV0ZSBhdHRyOwoxNDQ3NDogIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgYnVzX3R5 cGUgKmJ1cywgY2hhciAqYnVmKTsKMTQ0NzQ6ICBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBidXNf dHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCk7CjE0NDc0OiB9OwoxNDQ3 NDogIyAxMzYgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvYnVzLmgiCjE0NDc0OiBleHRlcm4gaW50 IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBidXNfY3JlYXRlX2ZpbGUo c3RydWN0IGJ1c190eXBlICosCjE0NDc0OiAgICAgIHN0cnVjdCBidXNfYXR0cmlidXRlICopOwox NDQ3NDogZXh0ZXJuIHZvaWQgYnVzX3JlbW92ZV9maWxlKHN0cnVjdCBidXNfdHlwZSAqLCBzdHJ1 Y3QgYnVzX2F0dHJpYnV0ZSAqKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgZGV2aWNlX21h dGNoX25hbWUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpuYW1lKTsKMTQ0NzQ6IGlu dCBkZXZpY2VfbWF0Y2hfb2Zfbm9kZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKm5w KTsKMTQ0NzQ6IGludCBkZXZpY2VfbWF0Y2hfZndub2RlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29u c3Qgdm9pZCAqZndub2RlKTsKMTQ0NzQ6IGludCBkZXZpY2VfbWF0Y2hfZGV2dChzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IHZvaWQgKnBkZXZ0KTsKMTQ0NzQ6IGludCBkZXZpY2VfbWF0Y2hfYWNw aV9kZXYoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICphZGV2KTsKMTQ0NzQ6IGludCBk ZXZpY2VfbWF0Y2hfYW55KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqdW51c2VkKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3Vic3lzX2Rldl9pdGVyIHsKMTQ0NzQ6ICBz dHJ1Y3Qga2xpc3RfaXRlciBraTsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5 cGU7CjE0NDc0OiB9OwoxNDQ3NDogdm9pZCBzdWJzeXNfZGV2X2l0ZXJfaW5pdChzdHJ1Y3Qgc3Vi c3lzX2Rldl9pdGVyICppdGVyLAoxNDQ3NDogICAgIHN0cnVjdCBidXNfdHlwZSAqc3Vic3lzLAox NDQ3NDogICAgIHN0cnVjdCBkZXZpY2UgKnN0YXJ0LAoxNDQ3NDogICAgIGNvbnN0IHN0cnVjdCBk ZXZpY2VfdHlwZSAqdHlwZSk7CjE0NDc0OiBzdHJ1Y3QgZGV2aWNlICpzdWJzeXNfZGV2X2l0ZXJf bmV4dChzdHJ1Y3Qgc3Vic3lzX2Rldl9pdGVyICppdGVyKTsKMTQ0NzQ6IHZvaWQgc3Vic3lzX2Rl dl9pdGVyX2V4aXQoc3RydWN0IHN1YnN5c19kZXZfaXRlciAqaXRlcik7CjE0NDc0OiAKMTQ0NzQ6 IGludCBidXNfZm9yX2VhY2hfZGV2KHN0cnVjdCBidXNfdHlwZSAqYnVzLCBzdHJ1Y3QgZGV2aWNl ICpzdGFydCwgdm9pZCAqZGF0YSwKMTQ0NzQ6ICAgICAgICBpbnQgKCpmbikoc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhKSk7CjE0NDc0OiBzdHJ1Y3QgZGV2aWNlICpidXNfZmluZF9kZXZp Y2Uoc3RydWN0IGJ1c190eXBlICpidXMsIHN0cnVjdCBkZXZpY2UgKnN0YXJ0LAoxNDQ3NDogICAg ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgICAgICAgaW50ICgqbWF0Y2gpKHN0 cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNl ICpidXNfZmluZF9kZXZpY2VfYnlfbmFtZShzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywKMTQ0NzQ6ICAg ICAgICAgICAgc3RydWN0IGRldmljZSAqc3RhcnQsCjE0NDc0OiAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJ1c19maW5kX2RldmljZShidXMsIHN0 YXJ0LCBuYW1lLCBkZXZpY2VfbWF0Y2hfbmFtZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZp Y2UgKgoxNDQ3NDogYnVzX2ZpbmRfZGV2aWNlX2J5X29mX25vZGUoc3RydWN0IGJ1c190eXBlICpi dXMsIGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJu IGJ1c19maW5kX2RldmljZShidXMsICgodm9pZCAqKTApLCBucCwgZGV2aWNlX21hdGNoX29mX25v ZGUpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKMTQ0NzQ6IGJ1c19maW5kX2Rldmlj ZV9ieV9md25vZGUoc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFu ZGxlICpmd25vZGUpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJ1c19maW5kX2RldmljZShidXMs ICgodm9pZCAqKTApLCBmd25vZGUsIGRldmljZV9tYXRjaF9md25vZGUpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBzdHJ1Y3QgZGV2aWNlICpidXNfZmluZF9kZXZpY2VfYnlfZGV2dChzdHJ1Y3QgYnVzX3R5cGUg KmJ1cywKMTQ0NzQ6ICAgICAgICAgICAgZGV2X3QgZGV2dCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYnVzX2ZpbmRfZGV2aWNlKGJ1cywgKCh2b2lkICopMCksICZkZXZ0LCBkZXZpY2VfbWF0Y2hf ZGV2dCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKgoxNDQ3NDogYnVzX2ZpbmRfbmV4 dF9kZXZpY2Uoc3RydWN0IGJ1c190eXBlICpidXMsc3RydWN0IGRldmljZSAqY3VyKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiBidXNfZmluZF9kZXZpY2UoYnVzLCBjdXIsICgodm9pZCAqKTApLCBk ZXZpY2VfbWF0Y2hfYW55KTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YWNwaV9kZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKgoxNDQ3NDogYnVzX2ZpbmRfZGV2aWNl X2J5X2FjcGlfZGV2KHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZp Y2UgKmFkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJ1c19maW5kX2RldmljZShidXMsICgo dm9pZCAqKTApLCBhZGV2LCBkZXZpY2VfbWF0Y2hfYWNwaV9kZXYpOwoxNDQ3NDogfQoxNDQ3NDog IyAyNDkgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvYnVzLmgiCjE0NDc0OiBzdHJ1Y3QgZGV2aWNl ICpzdWJzeXNfZmluZF9kZXZpY2VfYnlfaWQoc3RydWN0IGJ1c190eXBlICpidXMsIHVuc2lnbmVk IGludCBpZCwKMTQ0NzQ6ICAgICAgc3RydWN0IGRldmljZSAqaGludCk7CjE0NDc0OiBpbnQgYnVz X2Zvcl9lYWNoX2RydihzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgc3RydWN0IGRldmljZV9kcml2ZXIg KnN0YXJ0LAoxNDQ3NDogICAgICAgIHZvaWQgKmRhdGEsIGludCAoKmZuKShzdHJ1Y3QgZGV2aWNl X2RyaXZlciAqLCB2b2lkICopKTsKMTQ0NzQ6IHZvaWQgYnVzX3NvcnRfYnJlYWR0aGZpcnN0KHN0 cnVjdCBidXNfdHlwZSAqYnVzLAoxNDQ3NDogICAgICAgaW50ICgqY29tcGFyZSkoY29uc3Qgc3Ry dWN0IGRldmljZSAqYSwKMTQ0NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlICpiKSk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2s7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgYnVzX3JlZ2lzdGVy X25vdGlmaWVyKHN0cnVjdCBidXNfdHlwZSAqYnVzLAoxNDQ3NDogICAgICBzdHJ1Y3Qgbm90aWZp ZXJfYmxvY2sgKm5iKTsKMTQ0NzQ6IGV4dGVybiBpbnQgYnVzX3VucmVnaXN0ZXJfbm90aWZpZXIo c3RydWN0IGJ1c190eXBlICpidXMsCjE0NDc0OiAgICAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYik7CjE0NDc0OiAjIDI4NSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9idXMuaCIKMTQ0NzQ6 IGV4dGVybiBzdHJ1Y3Qga3NldCAqYnVzX2dldF9rc2V0KHN0cnVjdCBidXNfdHlwZSAqYnVzKTsK MTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qga2xpc3QgKmJ1c19nZXRfZGV2aWNlX2tsaXN0KHN0cnVjdCBi dXNfdHlwZSAqYnVzKTsKMTQ0NzQ6ICMgMzAgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMgox NDQ3NDogIyAxICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2NsYXNzLmgiIDEKMTQ0NzQ6ICMgMjIg Ii4vaW5jbHVkZS9saW51eC9kZXZpY2UvY2xhc3MuaCIKMTQ0NzQ6IHN0cnVjdCBkZXZpY2U7CjE0 NDc0OiBzdHJ1Y3QgZndub2RlX2hhbmRsZTsKMTQ0NzQ6ICMgNTQgIi4vaW5jbHVkZS9saW51eC9k ZXZpY2UvY2xhc3MuaCIKMTQ0NzQ6IHN0cnVjdCBjbGFzcyB7CjE0NDc0OiAgY29uc3QgY2hhciAq bmFtZTsKMTQ0NzQ6ICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0 IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipjbGFzc19ncm91cHM7CjE0NDc0OiAgY29uc3Qgc3Ry dWN0IGF0dHJpYnV0ZV9ncm91cCAqKmRldl9ncm91cHM7CjE0NDc0OiAgc3RydWN0IGtvYmplY3Qg KmRldl9rb2JqOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqZGV2X3VldmVudCkoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpOwoxNDQ3NDogIGNoYXIgKigqZGV2 bm9kZSkoc3RydWN0IGRldmljZSAqZGV2LCB1bW9kZV90ICptb2RlKTsKMTQ0NzQ6IAoxNDQ3NDog IHZvaWQgKCpjbGFzc19yZWxlYXNlKShzdHJ1Y3QgY2xhc3MgKmNsYXNzKTsKMTQ0NzQ6ICB2b2lk ICgqZGV2X3JlbGVhc2UpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQg KCpzaHV0ZG93bl9wcmUpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAKMTQ0NzQ6ICBjb25z dCBzdHJ1Y3Qga29ial9uc190eXBlX29wZXJhdGlvbnMgKm5zX3R5cGU7CjE0NDc0OiAgY29uc3Qg dm9pZCAqKCpuYW1lc3BhY2UpKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqZ2V0X293bmVyc2hpcCkoc3RydWN0IGRldmljZSAqZGV2LCBrdWlkX3QgKnVpZCwga2dp ZF90ICpnaWQpOwoxNDQ3NDogCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBtOwox NDQ3NDogCjE0NDc0OiAgc3RydWN0IHN1YnN5c19wcml2YXRlICpwOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGNsYXNzX2Rldl9pdGVyIHsKMTQ0NzQ6ICBzdHJ1Y3Qga2xpc3RfaXRl ciBraTsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGU7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IGtvYmplY3QgKnN5c2ZzX2Rldl9ibG9ja19rb2Jq OwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICpzeXNmc19kZXZfY2hhcl9rb2JqOwoxNDQ3 NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX19j bGFzc19yZWdpc3RlcihzdHJ1Y3QgY2xhc3MgKmNsYXNzLAoxNDQ3NDogICAgICAgc3RydWN0IGxv Y2tfY2xhc3Nfa2V5ICprZXkpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgY2xhc3NfdW5yZWdpc3Rlcihz dHJ1Y3QgY2xhc3MgKmNsYXNzKTsKMTQ0NzQ6ICMgOTkgIi4vaW5jbHVkZS9saW51eC9kZXZpY2Uv Y2xhc3MuaCIKMTQ0NzQ6IHN0cnVjdCBjbGFzc19jb21wYXQ7CjE0NDc0OiBzdHJ1Y3QgY2xhc3Nf Y29tcGF0ICpjbGFzc19jb21wYXRfcmVnaXN0ZXIoY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiB2 b2lkIGNsYXNzX2NvbXBhdF91bnJlZ2lzdGVyKHN0cnVjdCBjbGFzc19jb21wYXQgKmNscyk7CjE0 NDc0OiBpbnQgY2xhc3NfY29tcGF0X2NyZWF0ZV9saW5rKHN0cnVjdCBjbGFzc19jb21wYXQgKmNs cywgc3RydWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXZp Y2VfbGluayk7CjE0NDc0OiB2b2lkIGNsYXNzX2NvbXBhdF9yZW1vdmVfbGluayhzdHJ1Y3QgY2xh c3NfY29tcGF0ICpjbHMsIHN0cnVjdCBkZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgIHN0cnVj dCBkZXZpY2UgKmRldmljZV9saW5rKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgY2xhc3Nf ZGV2X2l0ZXJfaW5pdChzdHJ1Y3QgY2xhc3NfZGV2X2l0ZXIgKml0ZXIsCjE0NDc0OiAgICAgc3Ry dWN0IGNsYXNzICpjbGFzcywKMTQ0NzQ6ICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFydCwKMTQ0NzQ6 ICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGUpOwoxNDQ3NDogZXh0ZXJuIHN0cnVj dCBkZXZpY2UgKmNsYXNzX2Rldl9pdGVyX25leHQoc3RydWN0IGNsYXNzX2Rldl9pdGVyICppdGVy KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNsYXNzX2Rldl9pdGVyX2V4aXQoc3RydWN0IGNsYXNzX2Rl dl9pdGVyICppdGVyKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBjbGFzc19mb3JfZWFjaF9k ZXZpY2Uoc3RydWN0IGNsYXNzICpjbGFzcywgc3RydWN0IGRldmljZSAqc3RhcnQsCjE0NDc0OiAg ICAgIHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgIGludCAoKmZuKShzdHJ1Y3QgZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEpKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGV2aWNlICpjbGFzc19maW5kX2Rl dmljZShzdHJ1Y3QgY2xhc3MgKmNsYXNzLAoxNDQ3NDogICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFy dCwgY29uc3Qgdm9pZCAqZGF0YSwKMTQ0NzQ6ICAgICAgaW50ICgqbWF0Y2gpKHN0cnVjdCBkZXZp Y2UgKiwgY29uc3Qgdm9pZCAqKSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKmNsYXNzX2ZpbmRfZGV2 aWNlX2J5X25hbWUoc3RydWN0IGNsYXNzICpjbGFzcywKMTQ0NzQ6ICAgICAgICAgICAgICBjb25z dCBjaGFyICpuYW1lKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBjbGFzc19maW5kX2RldmljZShj bGFzcywgKCh2b2lkICopMCksIG5hbWUsIGRldmljZV9tYXRjaF9uYW1lKTsKMTQ0NzQ6IH0KMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGRldmljZSAqCjE0NDc0OiBjbGFzc19maW5kX2RldmljZV9ieV9vZl9ub2RlKHN0 cnVjdCBjbGFzcyAqY2xhc3MsIGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGNsYXNzX2ZpbmRfZGV2aWNlKGNsYXNzLCAoKHZvaWQgKikwKSwgbnAs IGRldmljZV9tYXRjaF9vZl9ub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqCjE0 NDc0OiBjbGFzc19maW5kX2RldmljZV9ieV9md25vZGUoc3RydWN0IGNsYXNzICpjbGFzcywKMTQ0 NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQoxNDQ3NDogewox NDQ3NDogIHJldHVybiBjbGFzc19maW5kX2RldmljZShjbGFzcywgKCh2b2lkICopMCksIGZ3bm9k ZSwgZGV2aWNlX21hdGNoX2Z3bm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKmNs YXNzX2ZpbmRfZGV2aWNlX2J5X2RldnQoc3RydWN0IGNsYXNzICpjbGFzcywKMTQ0NzQ6ICAgICAg ICAgICAgICBkZXZfdCBkZXZ0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBjbGFzc19maW5kX2Rl dmljZShjbGFzcywgKCh2b2lkICopMCksICZkZXZ0LCBkZXZpY2VfbWF0Y2hfZGV2dCk7CjE0NDc0 OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGFjcGlfZGV2aWNlOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmlj ZSAqCjE0NDc0OiBjbGFzc19maW5kX2RldmljZV9ieV9hY3BpX2RldihzdHJ1Y3QgY2xhc3MgKmNs YXNzLCBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGNsYXNzX2ZpbmRfZGV2aWNlKGNsYXNzLCAoKHZvaWQgKikwKSwgYWRldiwgZGV2aWNlX21h dGNoX2FjcGlfZGV2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTkxICIuL2luY2x1ZGUvbGludXgvZGV2 aWNlL2NsYXNzLmgiCjE0NDc0OiBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlIHsKMTQ0NzQ6ICBzdHJ1 Y3QgYXR0cmlidXRlIGF0dHI7CjE0NDc0OiAgc3NpemVfdCAoKnNob3cpKHN0cnVjdCBjbGFzcyAq Y2xhc3MsIHN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICBjaGFyICpidWYp OwoxNDQ3NDogIHNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGNsYXNzICpjbGFzcywgc3RydWN0IGNs YXNzX2F0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNv dW50KTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDIwNiAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9jbGFz cy5oIgoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSkgY2xhc3NfY3JlYXRlX2ZpbGVfbnMoc3RydWN0IGNsYXNzICpjbGFzcywKMTQ0NzQ6ICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlICphdHRyLAoxNDQ3NDogICAgICAg ICAgIGNvbnN0IHZvaWQgKm5zKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNsYXNzX3JlbW92ZV9maWxl X25zKHN0cnVjdCBjbGFzcyAqY2xhc3MsCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBjbGFzc19h dHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICAgIGNvbnN0IHZvaWQgKm5zKTsKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBjbGFzc19jcmVh dGVfZmlsZShzdHJ1Y3QgY2xhc3MgKmNsYXNzLAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgY2xh c3NfYXR0cmlidXRlICphdHRyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBjbGFzc19jcmVhdGVf ZmlsZV9ucyhjbGFzcywgYXR0ciwgKCh2b2lkICopMCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGNsYXNzX3JlbW92ZV9maWxlKHN0cnVjdCBjbGFzcyAqY2xhc3MsCjE0NDc0OiAgICAg ICAgICBjb25zdCBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlICphdHRyKQoxNDQ3NDogewoxNDQ3NDog IHJldHVybiBjbGFzc19yZW1vdmVfZmlsZV9ucyhjbGFzcywgYXR0ciwgKCh2b2lkICopMCkpOwox NDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGFzc19hdHRyaWJ1dGVfc3Ry aW5nIHsKMTQ0NzQ6ICBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlIGF0dHI7CjE0NDc0OiAgY2hhciAq c3RyOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjM4ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2NsYXNz LmgiCjE0NDc0OiBleHRlcm4gc3NpemVfdCBzaG93X2NsYXNzX2F0dHJfc3RyaW5nKHN0cnVjdCBj bGFzcyAqY2xhc3MsIHN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICpidWYpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY2xhc3Nf aW50ZXJmYWNlIHsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CjE0NDc0OiAgc3RydWN0 IGNsYXNzICpjbGFzczsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKmFkZF9kZXYpIChzdHJ1Y3QgZGV2 aWNlICosIHN0cnVjdCBjbGFzc19pbnRlcmZhY2UgKik7CjE0NDc0OiAgdm9pZCAoKnJlbW92ZV9k ZXYpIChzdHJ1Y3QgZGV2aWNlICosIHN0cnVjdCBjbGFzc19pbnRlcmZhY2UgKik7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBjbGFzc19pbnRlcmZhY2VfcmVnaXN0ZXIoc3RydWN0IGNsYXNzX2ludGVyZmFj ZSAqKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGNsYXNzX2ludGVyZmFjZV91bnJlZ2lzdGVyKHN0cnVj dCBjbGFzc19pbnRlcmZhY2UgKik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgY2xhc3Mg KiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX19jbGFzc19jcmVhdGUo c3RydWN0IG1vZHVsZSAqb3duZXIsCjE0NDc0OiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCjE0 NDc0OiAgICAgICAgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTsKMTQ0NzQ6IGV4dGVybiB2 b2lkIGNsYXNzX2Rlc3Ryb3koc3RydWN0IGNsYXNzICpjbHMpOwoxNDQ3NDogIyAzMSAiLi9pbmNs dWRlL2xpbnV4L2RldmljZS5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9kZXZpY2Uv ZHJpdmVyLmgiIDEKMTQ0NzQ6ICMgNDQgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvZHJpdmVyLmgi CjE0NDc0OiBlbnVtIHByb2JlX3R5cGUgewoxNDQ3NDogIFBST0JFX0RFRkFVTFRfU1RSQVRFR1ks CjE0NDc0OiAgUFJPQkVfUFJFRkVSX0FTWU5DSFJPTk9VUywKMTQ0NzQ6ICBQUk9CRV9GT1JDRV9T WU5DSFJPTk9VUywKMTQ0NzQ6IH07CjE0NDc0OiAjIDk1ICIuL2luY2x1ZGUvbGludXgvZGV2aWNl L2RyaXZlci5oIgoxNDQ3NDogc3RydWN0IGRldmljZV9kcml2ZXIgewoxNDQ3NDogIGNvbnN0IGNo YXIgKm5hbWU7CjE0NDc0OiAgc3RydWN0IGJ1c190eXBlICpidXM7CjE0NDc0OiAKMTQ0NzQ6ICBz dHJ1Y3QgbW9kdWxlICpvd25lcjsKMTQ0NzQ6ICBjb25zdCBjaGFyICptb2RfbmFtZTsKMTQ0NzQ6 IAoxNDQ3NDogIGJvb2wgc3VwcHJlc3NfYmluZF9hdHRyczsKMTQ0NzQ6ICBlbnVtIHByb2JlX3R5 cGUgcHJvYmVfdHlwZTsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg Km9mX21hdGNoX3RhYmxlOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAqYWNw aV9tYXRjaF90YWJsZTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnByb2JlKSAoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6ICB2b2lkICgqc3luY19zdGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsK MTQ0NzQ6ICBpbnQgKCpyZW1vdmUpIChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIHZvaWQg KCpzaHV0ZG93bikgKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiAgaW50ICgqc3VzcGVuZCkg KHN0cnVjdCBkZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRlKTsKMTQ0NzQ6ICBpbnQgKCpy ZXN1bWUpIChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgKipncm91cHM7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq KmRldl9ncm91cHM7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyAqcG07 CjE0NDc0OiAgdm9pZCAoKmNvcmVkdW1wKSAoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBkcml2ZXJfcHJpdmF0ZSAqcDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkgZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpOwoxNDQ3NDogZXh0 ZXJuIHZvaWQgZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydik7CjE0 NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyX2ZpbmQoY29u c3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBidXNfdHlwZSAqYnVzKTsKMTQ0NzQ6 IGV4dGVybiBpbnQgZHJpdmVyX3Byb2JlX2RvbmUodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB3 YWl0X2Zvcl9kZXZpY2VfcHJvYmUodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHJpdmVyX2F0dHJpYnV0ZSB7CjE0NDc0OiAgc3RydWN0IGF0dHJpYnV0ZSBhdHRy OwoxNDQ3NDogIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyLCBj aGFyICpidWYpOwoxNDQ3NDogIHNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGRldmljZV9kcml2ZXIg KmRyaXZlciwgY29uc3QgY2hhciAqYnVmLAoxNDQ3NDogICAgIHNpemVfdCBjb3VudCk7CjE0NDc0 OiB9OwoxNDQ3NDogIyAxNDggIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvZHJpdmVyLmgiCjE0NDc0 OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkcml2 ZXJfY3JlYXRlX2ZpbGUoc3RydWN0IGRldmljZV9kcml2ZXIgKmRyaXZlciwKMTQ0NzQ6ICAgICAg Y29uc3Qgc3RydWN0IGRyaXZlcl9hdHRyaWJ1dGUgKmF0dHIpOwoxNDQ3NDogZXh0ZXJuIHZvaWQg ZHJpdmVyX3JlbW92ZV9maWxlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcml2ZXIsCjE0NDc0OiAg ICAgICAgICAgY29uc3Qgc3RydWN0IGRyaXZlcl9hdHRyaWJ1dGUgKmF0dHIpOwoxNDQ3NDogCjE0 NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBk cml2ZXJfZm9yX2VhY2hfZGV2aWNlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsCjE0NDc0OiAg ICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFydCwKMTQ0NzQ6ICAgICAgICAgICAgIHZvaWQg KmRhdGEsCjE0NDc0OiAgICAgICAgICAgICBpbnQgKCpmbikoc3RydWN0IGRldmljZSAqZGV2LAox NDQ3NDogICAgICAgICB2b2lkICopKTsKMTQ0NzQ6IHN0cnVjdCBkZXZpY2UgKmRyaXZlcl9maW5k X2RldmljZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LAoxNDQ3NDogICAgICAgc3RydWN0IGRl dmljZSAqc3RhcnQsIGNvbnN0IHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgICBpbnQgKCptYXRjaCko c3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpkYXRhKSk7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZp Y2UgKmRyaXZlcl9maW5kX2RldmljZV9ieV9uYW1lKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYs CjE0NDc0OiAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g ZHJpdmVyX2ZpbmRfZGV2aWNlKGRydiwgKCh2b2lkICopMCksIG5hbWUsIGRldmljZV9tYXRjaF9u YW1lKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqCjE0NDc0OiBkcml2ZXJfZmluZF9k ZXZpY2VfYnlfb2Zfbm9kZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LAoxNDQ3NDogICAgICAg ICAgY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpucCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4g ZHJpdmVyX2ZpbmRfZGV2aWNlKGRydiwgKCh2b2lkICopMCksIG5wLCBkZXZpY2VfbWF0Y2hfb2Zf bm9kZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKgoxNDQ3NDogZHJpdmVyX2ZpbmRf ZGV2aWNlX2J5X2Z3bm9kZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LAoxNDQ3NDogICAgICAg ICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiBkcml2ZXJfZmluZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwgZndub2RlLCBkZXZpY2Vf bWF0Y2hfZndub2RlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRf ZGV2aWNlX2J5X2RldnQoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwKMTQ0NzQ6ICAgICAgICBk ZXZfdCBkZXZ0KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkcml2ZXJfZmluZF9kZXZpY2UoZHJ2 LCAoKHZvaWQgKikwKSwgJmRldnQsIGRldmljZV9tYXRjaF9kZXZ0KTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRfbmV4dF9kZXZpY2Uoc3RydWN0IGRl dmljZV9kcml2ZXIgKmRydiwKMTQ0NzQ6ICAgICAgICAgICAgc3RydWN0IGRldmljZSAqc3RhcnQp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRyaXZlcl9maW5kX2RldmljZShkcnYsIHN0YXJ0LCAo KHZvaWQgKikwKSwgZGV2aWNlX21hdGNoX2FueSk7CjE0NDc0OiB9CjE0NDc0OiAjIDIyNSAiLi9p bmNsdWRlL2xpbnV4L2RldmljZS9kcml2ZXIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKgoxNDQ3 NDogZHJpdmVyX2ZpbmRfZGV2aWNlX2J5X2FjcGlfZGV2KHN0cnVjdCBkZXZpY2VfZHJpdmVyICpk cnYsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQoxNDQ3 NDogewoxNDQ3NDogIHJldHVybiBkcml2ZXJfZmluZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwg YWRldiwgZGV2aWNlX21hdGNoX2FjcGlfZGV2KTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjM5ICIuL2lu Y2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oIgoxNDQ3NDogdm9pZCBkcml2ZXJfZGVmZXJyZWRf cHJvYmVfYWRkKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBpbnQgZHJpdmVyX2RlZmVycmVk X3Byb2JlX2NoZWNrX3N0YXRlKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBpbnQgZHJpdmVy X2RlZmVycmVkX3Byb2JlX2NoZWNrX3N0YXRlX2NvbnRpbnVlKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiB2b2lkIGRyaXZlcl9pbml0KHZvaWQpOwoxNDQ3NDogIyAzMiAiLi9pbmNsdWRlL2xp bnV4L2RldmljZS5oIiAyCjE0NDc0OiAjIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGV2aWNl LmgiIDEKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldl9h cmNoZGF0YSB7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICppb21tdTsKMTQ0NzQ6IAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBkZXZfYXJjaGRhdGEgewoxNDQ3NDogfTsKMTQ0NzQ6ICMg MzMgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2 aWNlOwoxNDQ3NDogc3RydWN0IGRldmljZV9wcml2YXRlOwoxNDQ3NDogc3RydWN0IGRldmljZV9k cml2ZXI7CjE0NDc0OiBzdHJ1Y3QgZHJpdmVyX3ByaXZhdGU7CjE0NDc0OiBzdHJ1Y3QgbW9kdWxl OwoxNDQ3NDogc3RydWN0IGNsYXNzOwoxNDQ3NDogc3RydWN0IHN1YnN5c19wcml2YXRlOwoxNDQ3 NDogc3RydWN0IGRldmljZV9ub2RlOwoxNDQ3NDogc3RydWN0IGZ3bm9kZV9oYW5kbGU7CjE0NDc0 OiBzdHJ1Y3QgaW9tbXVfb3BzOwoxNDQ3NDogc3RydWN0IGlvbW11X2dyb3VwOwoxNDQ3NDogc3Ry dWN0IGlvbW11X2Z3c3BlYzsKMTQ0NzQ6IHN0cnVjdCBkZXZfcGluX2luZm87CjE0NDc0OiBzdHJ1 Y3QgaW9tbXVfcGFyYW07CjE0NDc0OiAjIDYyICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCjE0 NDc0OiBzdHJ1Y3Qgc3Vic3lzX2ludGVyZmFjZSB7CjE0NDc0OiAgY29uc3QgY2hhciAqbmFtZTsK MTQ0NzQ6ICBzdHJ1Y3QgYnVzX3R5cGUgKnN1YnN5czsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFk IG5vZGU7CjE0NDc0OiAgaW50ICgqYWRkX2Rldikoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg c3Vic3lzX2ludGVyZmFjZSAqc2lmKTsKMTQ0NzQ6ICB2b2lkICgqcmVtb3ZlX2Rldikoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc3Vic3lzX2ludGVyZmFjZSAqc2lmKTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGludCBzdWJzeXNfaW50ZXJmYWNlX3JlZ2lzdGVyKHN0cnVjdCBzdWJzeXNf aW50ZXJmYWNlICpzaWYpOwoxNDQ3NDogdm9pZCBzdWJzeXNfaW50ZXJmYWNlX3VucmVnaXN0ZXIo c3RydWN0IHN1YnN5c19pbnRlcmZhY2UgKnNpZik7CjE0NDc0OiAKMTQ0NzQ6IGludCBzdWJzeXNf c3lzdGVtX3JlZ2lzdGVyKHN0cnVjdCBidXNfdHlwZSAqc3Vic3lzLAoxNDQ3NDogICAgICAgY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0OiBpbnQgc3Vic3lzX3Zp cnR1YWxfcmVnaXN0ZXIoc3RydWN0IGJ1c190eXBlICpzdWJzeXMsCjE0NDc0OiAgICAgICAgY29u c3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0OiAjIDg3ICIuL2luY2x1 ZGUvbGludXgvZGV2aWNlLmgiCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlX3R5cGUgewoxNDQ3NDogIGNv bnN0IGNoYXIgKm5hbWU7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdy b3VwczsKMTQ0NzQ6ICBpbnQgKCp1ZXZlbnQpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGtv YmpfdWV2ZW50X2VudiAqZW52KTsKMTQ0NzQ6ICBjaGFyICooKmRldm5vZGUpKHN0cnVjdCBkZXZp Y2UgKmRldiwgdW1vZGVfdCAqbW9kZSwKMTQ0NzQ6ICAgICBrdWlkX3QgKnVpZCwga2dpZF90ICpn aWQpOwoxNDQ3NDogIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDog CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBtOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSB7CjE0NDc0OiAgc3RydWN0IGF0 dHJpYnV0ZSBhdHRyOwoxNDQ3NDogIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAoxNDQ3NDogICAgY2hhciAqYnVmKTsKMTQ0 NzQ6ICBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQp OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldl9leHRfYXR0cmlidXRlIHsKMTQ0 NzQ6ICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBhdHRyOwoxNDQ3NDogIHZvaWQgKnZhcjsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3Nob3dfdWxvbmcoc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgICAgY2hh ciAqYnVmKTsKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3N0b3JlX3Vsb25nKHN0cnVjdCBkZXZpY2Ug KmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCjE0NDc0OiAgICAgICBjb25zdCBj aGFyICpidWYsIHNpemVfdCBjb3VudCk7CjE0NDc0OiBzc2l6ZV90IGRldmljZV9zaG93X2ludChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAoxNDQ3NDog ICAgY2hhciAqYnVmKTsKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3N0b3JlX2ludChzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAoxNDQ3NDogICAgIGNvbnN0 IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3Nob3dfYm9v bChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAoxNDQ3 NDogICAgY2hhciAqYnVmKTsKMTQ0NzQ6IHNzaXplX3QgZGV2aWNlX3N0b3JlX2Jvb2woc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKMTQ0NzQ6ICAgICBj b25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCk7CjE0NDc0OiAjIDE0OSAiLi9pbmNsdWRlL2xp bnV4L2RldmljZS5oIgoxNDQ3NDogZXh0ZXJuIGludCBkZXZpY2VfY3JlYXRlX2ZpbGUoc3RydWN0 IGRldmljZSAqZGV2aWNlLAoxNDQ3NDogICAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmVudHJ5KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldmljZV9yZW1vdmVfZmlsZShzdHJ1 Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIpOwoxNDQ3NDogZXh0ZXJuIGJvb2wgZGV2aWNlX3JlbW92ZV9maWxlX3NlbGYo c3RydWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0cik7CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKSBkZXZpY2VfY3JlYXRlX2Jpbl9maWxlKHN0cnVjdCBkZXZpY2UgKmRl diwKMTQ0NzQ6ICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0dHIpOwoxNDQ3NDog ZXh0ZXJuIHZvaWQgZGV2aWNlX3JlbW92ZV9iaW5fZmlsZShzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0 NDc0OiAgICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0dHIpOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKmRyX3JlbGVhc2VfdCkoc3RydWN0IGRldmljZSAq ZGV2LCB2b2lkICpyZXMpOwoxNDQ3NDogdHlwZWRlZiBpbnQgKCpkcl9tYXRjaF90KShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHZvaWQgKnJlcywgdm9pZCAqbWF0Y2hfZGF0YSk7CjE0NDc0OiAjIDE3MiAi Li9pbmNsdWRlL2xpbnV4L2RldmljZS5oIgoxNDQ3NDogZXh0ZXJuIHZvaWQgKmRldnJlc19hbGxv Y19ub2RlKGRyX3JlbGVhc2VfdCByZWxlYXNlLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwLAoxNDQ3 NDogICAgICAgICAgIGludCBuaWQpIF9fYXR0cmlidXRlX18oKF9fbWFsbG9jX18pKTsKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgKmRldnJlc19hbGxvYyhkcl9yZWxlYXNlX3QgcmVsZWFzZSwgc2l6ZV90IHNpemUsIGdm cF90IGdmcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGV2cmVzX2FsbG9jX25vZGUocmVsZWFz ZSwgc2l6ZSwgZ2ZwLCAoLTEpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRl cm4gdm9pZCBkZXZyZXNfZm9yX2VhY2hfcmVzKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFz ZV90IHJlbGVhc2UsCjE0NDc0OiAgICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0 YSwKMTQ0NzQ6ICAgICB2b2lkICgqZm4pKHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqLCB2b2lkICop LAoxNDQ3NDogICAgIHZvaWQgKmRhdGEpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2cmVzX2ZyZWUo dm9pZCAqcmVzKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldnJlc19hZGQoc3RydWN0IGRldmljZSAq ZGV2LCB2b2lkICpyZXMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgKmRldnJlc19maW5kKHN0cnVjdCBk ZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2UsCjE0NDc0OiAgICAgZHJfbWF0Y2hfdCBt YXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7CjE0NDc0OiBleHRlcm4gdm9pZCAqZGV2cmVzX2dldChz dHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKm5ld19yZXMsCjE0NDc0OiAgICBkcl9tYXRjaF90IG1h dGNoLCB2b2lkICptYXRjaF9kYXRhKTsKMTQ0NzQ6IGV4dGVybiB2b2lkICpkZXZyZXNfcmVtb3Zl KHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2UsCjE0NDc0OiAgICAgICBk cl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTsKMTQ0NzQ6IGV4dGVybiBpbnQgZGV2 cmVzX2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2LCBkcl9yZWxlYXNlX3QgcmVsZWFzZSwKMTQ0 NzQ6ICAgICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7CjE0NDc0OiBleHRl cm4gaW50IGRldnJlc19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJl bGVhc2UsCjE0NDc0OiAgICAgIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkICogX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGRldnJlc19vcGVuX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwg dm9pZCAqaWQsCjE0NDc0OiAgICAgICAgICAgZ2ZwX3QgZ2ZwKTsKMTQ0NzQ6IGV4dGVybiB2b2lk IGRldnJlc19jbG9zZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkKTsKMTQ0NzQ6 IGV4dGVybiB2b2lkIGRldnJlc19yZW1vdmVfZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2LCB2b2lk ICppZCk7CjE0NDc0OiBleHRlcm4gaW50IGRldnJlc19yZWxlYXNlX2dyb3VwKHN0cnVjdCBkZXZp Y2UgKmRldiwgdm9pZCAqaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkICpk ZXZtX2ttYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKSBf X2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CjE0NDc0OiBleHRlcm4gX19hdHRyaWJ1dGVfXygo X19mb3JtYXRfXyhwcmludGYsIDMsIDApKSkKMTQ0NzQ6IGNoYXIgKmRldm1fa3Zhc3ByaW50Zihz dHJ1Y3QgZGV2aWNlICpkZXYsIGdmcF90IGdmcCwgY29uc3QgY2hhciAqZm10LAoxNDQ3NDogICAg ICAgICB2YV9saXN0IGFwKSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CjE0NDc0OiBleHRl cm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IGNoYXIg KmRldm1fa2FzcHJpbnRmKHN0cnVjdCBkZXZpY2UgKmRldiwgZ2ZwX3QgZ2ZwLCBjb25zdCBjaGFy ICpmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpOwoxNDQ3NDogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqZGV2 bV9remFsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGdmcF90IGdmcCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGV2bV9rbWFsbG9jKGRldiwgc2l6ZSwgZ2ZwIHwgKCggZ2Zw X3QpMHgxMDB1KSk7CjE0NDc0OiB9CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICpkZXZtX2ttYWxsb2NfYXJyYXkoc3Ry dWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICAgICAgICBzaXplX3Qgbiwgc2l6ZV90IHNpemUs IGdmcF90IGZsYWdzKQoxNDQ3NDogewoxNDQ3NDogIHNpemVfdCBieXRlczsKMTQ0NzQ6IAoxNDQ3 NDogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCh7IHR5cGVvZihuKSBfX2EgPSAobik7IHR5cGVv ZihzaXplKSBfX2IgPSAoc2l6ZSk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9p ZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292 ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSksIDApKQoxNDQ3NDogICByZXR1cm4gKCh2b2lkICop MCk7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gZGV2bV9rbWFsbG9jKGRldiwgYnl0ZXMsIGZsYWdz KTsKMTQ0NzQ6IH0KMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmRldm1fa2NhbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYs CjE0NDc0OiAgICAgIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCjE0NDc0OiB7 CjE0NDc0OiAgcmV0dXJuIGRldm1fa21hbGxvY19hcnJheShkZXYsIG4sIHNpemUsIGZsYWdzIHwg KCggZ2ZwX3QpMHgxMDB1KSk7CjE0NDc0OiB9CjE0NDc0OiBleHRlcm4gdm9pZCBkZXZtX2tmcmVl KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqcCk7CjE0NDc0OiBleHRlcm4gY2hhciAq ZGV2bV9rc3RyZHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqcywgZ2ZwX3QgZ2Zw KSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CjE0NDc0OiBleHRlcm4gY29uc3QgY2hhciAq ZGV2bV9rc3RyZHVwX2NvbnN0KHN0cnVjdCBkZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgICBj b25zdCBjaGFyICpzLCBnZnBfdCBnZnApOwoxNDQ3NDogZXh0ZXJuIHZvaWQgKmRldm1fa21lbWR1 cChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbiwKMTQ0NzQ6 ICAgICAgZ2ZwX3QgZ2ZwKTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZGV2 bV9nZXRfZnJlZV9wYWdlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICBnZnBfdCBn ZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldm1fZnJl ZV9wYWdlcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgYWRkcik7CjE0NDc0OiAK MTQ0NzQ6IHZvaWQgKmRldm1faW9yZW1hcF9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0 NDc0OiAgICAgICAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKMTQ0NzQ6IHZvaWQgKmRl dm1faW9yZW1hcF9yZXNvdXJjZV93YyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCAqZGV2 bV9vZl9pb21hcChzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAgc3RydWN0IGRldmlj ZV9ub2RlICpub2RlLCBpbnQgaW5kZXgsCjE0NDc0OiAgICAgICAgcmVzb3VyY2Vfc2l6ZV90ICpz aXplKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBpbnQgZGV2bV9hZGRfYWN0aW9uKHN0cnVjdCBk ZXZpY2UgKmRldiwgdm9pZCAoKmFjdGlvbikodm9pZCAqKSwgdm9pZCAqZGF0YSk7CjE0NDc0OiB2 b2lkIGRldm1fcmVtb3ZlX2FjdGlvbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKCphY3Rpb24p KHZvaWQgKiksIHZvaWQgKmRhdGEpOwoxNDQ3NDogdm9pZCBkZXZtX3JlbGVhc2VfYWN0aW9uKHN0 cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAoKmFjdGlvbikodm9pZCAqKSwgdm9pZCAqZGF0YSk7CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoc3RydWN0IGRldmljZSAq ZGV2LAoxNDQ3NDogICAgICAgICB2b2lkICgqYWN0aW9uKSh2b2lkICopLCB2b2lkICpkYXRhKQox NDQ3NDogewoxNDQ3NDogIGludCByZXQ7CjE0NDc0OiAKMTQ0NzQ6ICByZXQgPSBkZXZtX2FkZF9h Y3Rpb24oZGV2LCBhY3Rpb24sIGRhdGEpOwoxNDQ3NDogIGlmIChyZXQpCjE0NDc0OiAgIGFjdGlv bihkYXRhKTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiByZXQ7CjE0NDc0OiB9CjE0NDc0OiAjIDI4 MiAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIgoxNDQ3NDogdm9pZCAqX19kZXZtX2FsbG9jX3Bl cmNwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLAoxNDQ3NDogICAgICAgIHNpemVf dCBhbGlnbik7CjE0NDc0OiB2b2lkIGRldm1fZnJlZV9wZXJjcHUoc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkICpwZGF0YSk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZXZpY2VfZG1hX3BhcmFtZXRl cnMgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50 IG1heF9zZWdtZW50X3NpemU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzZWdtZW50X2JvdW5kYXJ5 X21hc2s7CjE0NDc0OiB9OwoxNDQ3NDogIyAzMDYgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIK MTQ0NzQ6IHN0cnVjdCBkZXZpY2VfY29ubmVjdGlvbiB7CjE0NDc0OiAgc3RydWN0IGZ3bm9kZV9o YW5kbGUgKmZ3bm9kZTsKMTQ0NzQ6ICBjb25zdCBjaGFyICplbmRwb2ludFsyXTsKMTQ0NzQ6ICBj b25zdCBjaGFyICppZDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiB0eXBlZGVmIHZvaWQgKigqZGV2Y29uX21hdGNoX2ZuX3QpKHN0cnVjdCBk ZXZpY2VfY29ubmVjdGlvbiAqY29uLCBpbnQgZXAsCjE0NDc0OiAgICAgICAgdm9pZCAqZGF0YSk7 CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgKmZ3bm9kZV9jb25uZWN0aW9uX2ZpbmRfbWF0Y2goc3RydWN0 IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSwKMTQ0NzQ6ICAgICAgICBjb25zdCBjaGFyICpjb25faWQs IHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgICAgZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gpOwoxNDQ3 NDogdm9pZCAqZGV2aWNlX2Nvbm5lY3Rpb25fZmluZF9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYs IGNvbnN0IGNoYXIgKmNvbl9pZCwKMTQ0NzQ6ICAgICAgICB2b2lkICpkYXRhLCBkZXZjb25fbWF0 Y2hfZm5fdCBtYXRjaCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZXZpY2UgKmRldmljZV9jb25u ZWN0aW9uX2ZpbmQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpjb25faWQpOwoxNDQ3 NDogCjE0NDc0OiB2b2lkIGRldmljZV9jb25uZWN0aW9uX2FkZChzdHJ1Y3QgZGV2aWNlX2Nvbm5l Y3Rpb24gKmNvbik7CjE0NDc0OiB2b2lkIGRldmljZV9jb25uZWN0aW9uX3JlbW92ZShzdHJ1Y3Qg ZGV2aWNlX2Nvbm5lY3Rpb24gKmNvbik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2VfY29ubmVjdGlvbnNfYWRkKHN0cnVjdCBkZXZpY2Vf Y29ubmVjdGlvbiAqY29ucykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rp b24gKmM7CjE0NDc0OiAKMTQ0NzQ6ICBmb3IgKGMgPSBjb25zOyBjLT5lbmRwb2ludFswXTsgYysr KQoxNDQ3NDogICBkZXZpY2VfY29ubmVjdGlvbl9hZGQoYyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2VfY29ubmVjdGlv bnNfcmVtb3ZlKHN0cnVjdCBkZXZpY2VfY29ubmVjdGlvbiAqY29ucykKMTQ0NzQ6IHsKMTQ0NzQ6 ICBzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rpb24gKmM7CjE0NDc0OiAKMTQ0NzQ6ICBmb3IgKGMgPSBj b25zOyBjLT5lbmRwb2ludFswXTsgYysrKQoxNDQ3NDogICBkZXZpY2VfY29ubmVjdGlvbl9yZW1v dmUoYyk7CjE0NDc0OiB9CjE0NDc0OiAjIDM2MCAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIgox NDQ3NDogZW51bSBkZXZpY2VfbGlua19zdGF0ZSB7CjE0NDc0OiAgRExfU1RBVEVfTk9ORSA9IC0x LAoxNDQ3NDogIERMX1NUQVRFX0RPUk1BTlQgPSAwLAoxNDQ3NDogIERMX1NUQVRFX0FWQUlMQUJM RSwKMTQ0NzQ6ICBETF9TVEFURV9DT05TVU1FUl9QUk9CRSwKMTQ0NzQ6ICBETF9TVEFURV9BQ1RJ VkUsCjE0NDc0OiAgRExfU1RBVEVfU1VQUExJRVJfVU5CSU5ELAoxNDQ3NDogfTsKMTQ0NzQ6ICMg NDAzICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlX2xpbmsg ewoxNDQ3NDogIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyOwoxNDQ3NDogIHN0cnVjdCBsaXN0X2hl YWQgc19ub2RlOwoxNDQ3NDogIHN0cnVjdCBkZXZpY2UgKmNvbnN1bWVyOwoxNDQ3NDogIHN0cnVj dCBsaXN0X2hlYWQgY19ub2RlOwoxNDQ3NDogIGVudW0gZGV2aWNlX2xpbmtfc3RhdGUgc3RhdHVz OwoxNDQ3NDogIHUzMiBmbGFnczsKMTQ0NzQ6ICByZWZjb3VudF90IHJwbV9hY3RpdmU7CjE0NDc0 OiAgc3RydWN0IGtyZWYga3JlZjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjYWxsYmFja19oZWFk IGNhbGxiYWNrX2hlYWQ7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIHN1cHBsaWVyX3ByZWFjdGl2YXRl ZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDQyNSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIgoxNDQ3 NDogZW51bSBkbF9kZXZfc3RhdGUgewoxNDQ3NDogIERMX0RFVl9OT19EUklWRVIgPSAwLAoxNDQ3 NDogIERMX0RFVl9QUk9CSU5HLAoxNDQ3NDogIERMX0RFVl9EUklWRVJfQk9VTkQsCjE0NDc0OiAg RExfREVWX1VOQklORElORywKMTQ0NzQ6IH07CjE0NDc0OiAjIDQ0MiAiLi9pbmNsdWRlL2xpbnV4 L2RldmljZS5oIgoxNDQ3NDogc3RydWN0IGRldl9saW5rc19pbmZvIHsKMTQ0NzQ6ICBzdHJ1Y3Qg bGlzdF9oZWFkIHN1cHBsaWVyczsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIGNvbnN1bWVyczsK MTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFkIG5lZWRzX3N1cHBsaWVyczsKMTQ0NzQ6ICBzdHJ1Y3Qg bGlzdF9oZWFkIGRlZmVyX3N5bmM7CjE0NDc0OiAgYm9vbCBuZWVkX2Zvcl9wcm9iZTsKMTQ0NzQ6 ICBlbnVtIGRsX2Rldl9zdGF0ZSBzdGF0dXM7CjE0NDc0OiB9OwoxNDQ3NDogIyA1MzcgIi4vaW5j bHVkZS9saW51eC9kZXZpY2UuaCIKMTQ0NzQ6IHN0cnVjdCBkZXZpY2UgewoxNDQ3NDogIHN0cnVj dCBrb2JqZWN0IGtvYmo7CjE0NDc0OiAgc3RydWN0IGRldmljZSAqcGFyZW50OwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IGRldmljZV9wcml2YXRlICpwOwoxNDQ3NDogCjE0NDc0OiAgY29uc3QgY2hh ciAqaW5pdF9uYW1lOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkZXZpY2VfdHlwZSAqdHlwZTsKMTQ0 NzQ6IAoxNDQ3NDogIHN0cnVjdCBidXNfdHlwZSAqYnVzOwoxNDQ3NDogIHN0cnVjdCBkZXZpY2Vf ZHJpdmVyICpkcml2ZXI7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICpwbGF0Zm9ybV9kYXRhOwoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAqZHJpdmVyX2RhdGE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgbXV0ZXggbXV0ZXg7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGRldl9saW5rc19pbmZvIGxpbmtzOwoxNDQ3NDogIHN0cnVjdCBkZXZf cG1faW5mbyBwb3dlcjsKMTQ0NzQ6ICBzdHJ1Y3QgZGV2X3BtX2RvbWFpbiAqcG1fZG9tYWluOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgaXJxX2RvbWFpbiAqbXNpX2RvbWFpbjsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRldl9waW5faW5mbyAqcGluczsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpc3RfaGVhZCBtc2lfbGlzdDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRtYV9tYXBfb3BzICpkbWFfb3BzOwoxNDQ3NDogIHU2NCAq ZG1hX21hc2s7CjE0NDc0OiAgdTY0IGNvaGVyZW50X2RtYV9tYXNrOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdTY0IGJ1c19kbWFfbGltaXQ7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBkbWFfcGZuX29mZnNldDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkZXZpY2VfZG1h X3BhcmFtZXRlcnMgKmRtYV9wYXJtczsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaXN0X2hlYWQg ZG1hX3Bvb2xzOwoxNDQ3NDogIyA1OTcgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKMTQ0NzQ6 ICBzdHJ1Y3QgZGV2X2FyY2hkYXRhIGFyY2hkYXRhOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRl dmljZV9ub2RlICpvZl9ub2RlOwoxNDQ3NDogIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGU7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBkZXZfdCBkZXZ0OwoxNDQ3 NDogIHUzMiBpZDsKMTQ0NzQ6IAoxNDQ3NDogIHNwaW5sb2NrX3QgZGV2cmVzX2xvY2s7CjE0NDc0 OiAgc3RydWN0IGxpc3RfaGVhZCBkZXZyZXNfaGVhZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBj bGFzcyAqY2xhc3M7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vw czsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwox NDQ3NDogIHN0cnVjdCBpb21tdV9ncm91cCAqaW9tbXVfZ3JvdXA7CjE0NDc0OiAgc3RydWN0IGlv bW11X2Z3c3BlYyAqaW9tbXVfZndzcGVjOwoxNDQ3NDogIHN0cnVjdCBpb21tdV9wYXJhbSAqaW9t bXVfcGFyYW07CjE0NDc0OiAKMTQ0NzQ6ICBib29sIG9mZmxpbmVfZGlzYWJsZWQ6MTsKMTQ0NzQ6 ICBib29sIG9mZmxpbmU6MTsKMTQ0NzQ6ICBib29sIG9mX25vZGVfcmV1c2VkOjE7CjE0NDc0OiAg Ym9vbCBzdGF0ZV9zeW5jZWQ6MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICprb2JqX3RvX2Rldihz dHJ1Y3Qga29iamVjdCAqa29iaikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHsgdm9pZCAqX19t cHRyID0gKHZvaWQgKikoa29iaik7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3Nl cnRfNjMyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21h dGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBh dGlibGVfcCh0eXBlb2YoKihrb2JqKSksIHR5cGVvZigoKHN0cnVjdCBkZXZpY2UgKikwKS0+a29i aikpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKGtvYmopKSwgdHlw ZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF82MzIoKTsgfSB3aGlsZSAoMCk7ICgo c3RydWN0IGRldmljZSAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGRldmlj ZSwga29iaikpKTsgfSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRldmljZV9pb21tdV9tYXBwZWQoc3RydWN0IGRl dmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAoZGV2LT5pb21tdV9ncm91cCAhPSAo KHZvaWQgKikwKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2luY2x1 ZGUvbGludXgvcG1fd2FrZXVwLmgiIDEKMTQ0NzQ6ICMgMTggIi4vaW5jbHVkZS9saW51eC9wbV93 YWtldXAuaCIKMTQ0NzQ6IHN0cnVjdCB3YWtlX2lycTsKMTQ0NzQ6ICMgNDMgIi4vaW5jbHVkZS9s aW51eC9wbV93YWtldXAuaCIKMTQ0NzQ6IHN0cnVjdCB3YWtldXBfc291cmNlIHsKMTQ0NzQ6ICBj b25zdCBjaGFyICpuYW1lOwoxNDQ3NDogIGludCBpZDsKMTQ0NzQ6ICBzdHJ1Y3QgbGlzdF9oZWFk IGVudHJ5OwoxNDQ3NDogIHNwaW5sb2NrX3QgbG9jazsKMTQ0NzQ6ICBzdHJ1Y3Qgd2FrZV9pcnEg Kndha2VpcnE7CjE0NDc0OiAgc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyB0aW1lcl9leHBpcmVzOwoxNDQ3NDogIGt0aW1lX3QgdG90YWxfdGltZTsKMTQ0NzQ6 ICBrdGltZV90IG1heF90aW1lOwoxNDQ3NDogIGt0aW1lX3QgbGFzdF90aW1lOwoxNDQ3NDogIGt0 aW1lX3Qgc3RhcnRfcHJldmVudF90aW1lOwoxNDQ3NDogIGt0aW1lX3QgcHJldmVudF9zbGVlcF90 aW1lOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgZXZlbnRfY291bnQ7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBhY3RpdmVfY291bnQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyByZWxheF9jb3VudDsKMTQ0 NzQ6ICB1bnNpZ25lZCBsb25nIGV4cGlyZV9jb3VudDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHdh a2V1cF9jb3VudDsKMTQ0NzQ6ICBzdHJ1Y3QgZGV2aWNlICpkZXY7CjE0NDc0OiAgYm9vbCBhY3Rp dmU6MTsKMTQ0NzQ6ICBib29sIGF1dG9zbGVlcF9lbmFibGVkOjE7CjE0NDc0OiB9OwoxNDQ3NDog IyA3NyAiLi9pbmNsdWRlL2xpbnV4L3BtX3dha2V1cC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfY2Fu X3dha2V1cChzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+ cG93ZXIuY2FuX3dha2V1cDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfbWF5 X3dha2V1cChzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+ cG93ZXIuY2FuX3dha2V1cCAmJiAhIWRldi0+cG93ZXIud2FrZXVwOwoxNDQ3NDogfQoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGRldmljZV9zZXRfd2FrZXVwX3BhdGgoc3RydWN0IGRldmljZSAqZGV2KQox NDQ3NDogewoxNDQ3NDogIGRldi0+cG93ZXIud2FrZXVwX3BhdGggPSB0cnVlOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd2FrZXVw X3NvdXJjZV9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSk7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWtl dXBfc291cmNlX2Rlc3Ryb3koc3RydWN0IHdha2V1cF9zb3VyY2UgKndzKTsKMTQ0NzQ6IGV4dGVy biB2b2lkIHdha2V1cF9zb3VyY2VfYWRkKHN0cnVjdCB3YWtldXBfc291cmNlICp3cyk7CjE0NDc0 OiBleHRlcm4gdm9pZCB3YWtldXBfc291cmNlX3JlbW92ZShzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAq d3MpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB3YWtldXBfc291cmNlICp3YWtldXBfc291cmNlX3Jl Z2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCBjaGFyICpu YW1lKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHdha2V1cF9zb3VyY2VfdW5yZWdpc3RlcihzdHJ1Y3Qg d2FrZXVwX3NvdXJjZSAqd3MpOwoxNDQ3NDogZXh0ZXJuIGludCB3YWtldXBfc291cmNlc19yZWFk X2xvY2sodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB3YWtldXBfc291cmNlc19yZWFkX3VubG9j ayhpbnQgaWR4KTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd2FrZXVwX3Nv dXJjZXNfd2Fsa19zdGFydCh2b2lkKTsKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qgd2FrZXVwX3NvdXJj ZSAqd2FrZXVwX3NvdXJjZXNfd2Fsa19uZXh0KHN0cnVjdCB3YWtldXBfc291cmNlICp3cyk7CjE0 NDc0OiBleHRlcm4gaW50IGRldmljZV93YWtldXBfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiBleHRlcm4gaW50IGRldmljZV93YWtldXBfZGlzYWJsZShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2aWNlX3NldF93YWtldXBfY2FwYWJsZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGJvb2wgY2FwYWJsZSk7CjE0NDc0OiBleHRlcm4gaW50IGRldmljZV9pbml0 X3dha2V1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIGJvb2wgdmFsKTsKMTQ0NzQ6IGV4dGVybiBpbnQg ZGV2aWNlX3NldF93YWtldXBfZW5hYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCBlbmFibGUp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgX19wbV9zdGF5X2F3YWtlKHN0cnVjdCB3YWtldXBfc291cmNl ICp3cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBwbV9zdGF5X2F3YWtlKHN0cnVjdCBkZXZpY2UgKmRl dik7CjE0NDc0OiBleHRlcm4gdm9pZCBfX3BtX3JlbGF4KHN0cnVjdCB3YWtldXBfc291cmNlICp3 cyk7CjE0NDc0OiBleHRlcm4gdm9pZCBwbV9yZWxheChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3 NDogZXh0ZXJuIHZvaWQgcG1fd2FrZXVwX3dzX2V2ZW50KHN0cnVjdCB3YWtldXBfc291cmNlICp3 cywgdW5zaWduZWQgaW50IG1zZWMsIGJvb2wgaGFyZCk7CjE0NDc0OiBleHRlcm4gdm9pZCBwbV93 YWtldXBfZGV2X2V2ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG1zZWMsIGJv b2wgaGFyZCk7CjE0NDc0OiAjIDE5NSAiLi9pbmNsdWRlL2xpbnV4L3BtX3dha2V1cC5oIgoxNDQ3 NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBfX3BtX3dha2V1cF9ldmVudChzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MsIHVuc2ln bmVkIGludCBtc2VjKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBwbV93YWtldXBfd3NfZXZlbnQo d3MsIG1zZWMsIGZhbHNlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwbV93YWtldXBf ZXZlbnQoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbXNlYykKMTQ0NzQ6IHsKMTQ0 NzQ6ICByZXR1cm4gcG1fd2FrZXVwX2Rldl9ldmVudChkZXYsIG1zZWMsIGZhbHNlKTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwbV93YWtldXBfaGFyZF9ldmVudChzdHJ1Y3QgZGV2aWNl ICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIHBtX3dha2V1cF9kZXZfZXZlbnQoZGV2LCAw LCB0cnVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgNjQ3ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgY29uc3QgY2hhciAqZGV2X25hbWUoY29uc3Qgc3RydWN0IGRldmlj ZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgaWYgKGRldi0+aW5pdF9uYW1lKQoxNDQ3 NDogICByZXR1cm4gZGV2LT5pbml0X25hbWU7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4ga29iamVj dF9uYW1lKCZkZXYtPmtvYmopOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBleHRlcm4gX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkKMTQ0NzQ6IGludCBkZXZfc2V0X25h bWUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lLCAuLi4pOwoxNDQ3NDogIyA2 NzAgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkZXZfdG9fbm9kZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgtMSk7CjE0NDc0OiB9CjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIHNldF9kZXZfbm9kZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBub2RlKQoxNDQ3 NDogewoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpcnFfZG9tYWluICpk ZXZfZ2V0X21zaV9kb21haW4oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3 NDogCjE0NDc0OiAgcmV0dXJuIGRldi0+bXNpX2RvbWFpbjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZfc2V0X21zaV9kb21haW4oc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgaXJxX2RvbWFpbiAqZCkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3 NDogIGRldi0+bXNpX2RvbWFpbiA9IGQ7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCAqZGV2X2dldF9kcnZkYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6IHsK MTQ0NzQ6ICByZXR1cm4gZGV2LT5kcml2ZXJfZGF0YTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBkZXZfc2V0X2RydmRhdGEoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKQoxNDQ3 NDogewoxNDQ3NDogIGRldi0+ZHJpdmVyX2RhdGEgPSBkYXRhOwoxNDQ3NDogfQoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzdHJ1Y3QgcG1fc3Vic3lzX2RhdGEgKmRldl90b19wc2Qoc3RydWN0IGRldmljZSAqZGV2 KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkZXYgPyBkZXYtPnBvd2VyLnN1YnN5c19kYXRhIDog KCh2b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBkZXZfZ2V0 X3VldmVudF9zdXBwcmVzcyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0 OiAgcmV0dXJuIGRldi0+a29iai51ZXZlbnRfc3VwcHJlc3M7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgZGV2X3NldF91ZXZlbnRfc3VwcHJlc3Moc3RydWN0IGRldmljZSAqZGV2LCBpbnQg dmFsKQoxNDQ3NDogewoxNDQ3NDogIGRldi0+a29iai51ZXZlbnRfc3VwcHJlc3MgPSB2YWw7CjE0 NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkZXZpY2VfaXNfcmVnaXN0ZXJlZChzdHJ1Y3QgZGV2 aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+a29iai5zdGF0ZV9pbl9zeXNm czsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2VfZW5hYmxlX2FzeW5jX3N1c3Bl bmQoc3RydWN0IGRldmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogIGlmICghZGV2LT5wb3dlci5p c19wcmVwYXJlZCkKMTQ0NzQ6ICAgZGV2LT5wb3dlci5hc3luY19zdXNwZW5kID0gdHJ1ZTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2VfZGlzYWJsZV9hc3luY19zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWRldi0+cG93ZXIuaXNfcHJl cGFyZWQpCjE0NDc0OiAgIGRldi0+cG93ZXIuYXN5bmNfc3VzcGVuZCA9IGZhbHNlOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGRldmljZV9hc3luY19zdXNwZW5kX2VuYWJsZWQoc3RydWN0 IGRldmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiAhIWRldi0+cG93ZXIuYXN5bmNf c3VzcGVuZDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfcG1fbm90X3JlcXVp cmVkKHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGV2LT5wb3dl ci5ub19wbTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZpY2Vfc2V0X3BtX25vdF9y ZXF1aXJlZChzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgZGV2LT5wb3dlci5u b19wbSA9IHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGV2X3BtX3N5c2NvcmVf ZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCB2YWwpCjE0NDc0OiB7CjE0NDc0OiAKMTQ0 NzQ6ICBkZXYtPnBvd2VyLnN5c2NvcmUgPSB2YWw7CjE0NDc0OiAKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBkZXZfcG1fc2V0X2RyaXZlcl9mbGFncyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHUz MiBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICBkZXYtPnBvd2VyLmRyaXZlcl9mbGFncyA9IGZsYWdz OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRldl9wbV90ZXN0X2RyaXZlcl9mbGFncyhz dHJ1Y3QgZGV2aWNlICpkZXYsIHUzMiBmbGFncykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gISEo ZGV2LT5wb3dlci5kcml2ZXJfZmxhZ3MgJiBmbGFncyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgZGV2aWNlX2xvY2soc3RydWN0IGRldmljZSAqZGV2KQoxNDQ3NDogewoxNDQ3NDogIG11 dGV4X2xvY2soJmRldi0+bXV0ZXgpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZGV2aWNl X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5tdXRleCk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBkZXZpY2VfdHJ5bG9jayhzdHJ1Y3QgZGV2aWNlICpkZXYpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIG11dGV4X3RyeWxvY2soJmRldi0+bXV0ZXgpOwoxNDQ3NDogfQox NDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV91bmxvY2soc3RydWN0IGRldmljZSAqZGV2KQoxNDQ3 NDogewoxNDQ3NDogIG11dGV4X3VubG9jaygmZGV2LT5tdXRleCk7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgZGV2aWNlX2xvY2tfYXNzZXJ0KHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6 IHsKMTQ0NzQ6ICBkbyB7ICh2b2lkKSgmZGV2LT5tdXRleCk7IH0gd2hpbGUgKDApOwoxNDQ3NDog fQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlX25vZGUgKmRldl9vZl9ub2RlKHN0cnVjdCBk ZXZpY2UgKmRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoITAgfHwgIWRldikKMTQ0NzQ6ICAgcmV0 dXJuICgodm9pZCAqKTApOwoxNDQ3NDogIHJldHVybiBkZXYtPm9mX25vZGU7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgZGV2X2hhc19zeW5jX3N0YXRlKHN0cnVjdCBkZXZpY2UgKmRldikK MTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoIWRldikKMTQ0NzQ6ICAgcmV0dXJuIGZhbHNlOwoxNDQ3NDog IGlmIChkZXYtPmRyaXZlciAmJiBkZXYtPmRyaXZlci0+c3luY19zdGF0ZSkKMTQ0NzQ6ICAgcmV0 dXJuIHRydWU7CjE0NDc0OiAgaWYgKGRldi0+YnVzICYmIGRldi0+YnVzLT5zeW5jX3N0YXRlKQox NDQ3NDogICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVf XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldmljZV9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNl ICpkZXYpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldmljZV9pbml0aWFsaXplKHN0cnVjdCBkZXZp Y2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBkZXZpY2VfYWRkKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4g dm9pZCBkZXZpY2VfZGVsKHN0cnVjdCBkZXZpY2UgKmRldik7CjE0NDc0OiBleHRlcm4gaW50IGRl dmljZV9mb3JfZWFjaF9jaGlsZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCjE0NDc0 OiAgICAgICAgaW50ICgqZm4pKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkpOwoxNDQ3 NDogZXh0ZXJuIGludCBkZXZpY2VfZm9yX2VhY2hfY2hpbGRfcmV2ZXJzZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCjE0NDc0OiAgICAgICAgaW50ICgqZm4pKHN0cnVjdCBkZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSkpOwoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKmRldmljZV9m aW5kX2NoaWxkKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKMTQ0NzQ6ICAgICBpbnQg KCptYXRjaCkoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKSk7CjE0NDc0OiBleHRlcm4g c3RydWN0IGRldmljZSAqZGV2aWNlX2ZpbmRfY2hpbGRfYnlfbmFtZShzdHJ1Y3QgZGV2aWNlICpw YXJlbnQsCjE0NDc0OiAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKMTQ0NzQ6IGV4dGVybiBpbnQg ZGV2aWNlX3JlbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5ld19uYW1lKTsK MTQ0NzQ6IGV4dGVybiBpbnQgZGV2aWNlX21vdmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlICpuZXdfcGFyZW50LAoxNDQ3NDogICAgICAgICAgZW51bSBkcG1fb3JkZXIgZHBtX29y ZGVyKTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBjaGFyICpkZXZpY2VfZ2V0X2Rldm5vZGUoc3RydWN0 IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICAgICAgIHVtb2RlX3QgKm1vZGUsIGt1aWRfdCAqdWlk LCBrZ2lkX3QgKmdpZCwKMTQ0NzQ6ICAgICAgICAgICBjb25zdCBjaGFyICoqdG1wKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBkZXZpY2Vfc3VwcG9ydHNfb2ZmbGluZShzdHJ1Y3QgZGV2aWNlICpkZXYp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+YnVzICYmIGRldi0+YnVzLT5vZmZsaW5lICYm IGRldi0+YnVzLT5vbmxpbmU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiB2b2lkIGxv Y2tfZGV2aWNlX2hvdHBsdWcodm9pZCk7CjE0NDc0OiBleHRlcm4gdm9pZCB1bmxvY2tfZGV2aWNl X2hvdHBsdWcodm9pZCk7CjE0NDc0OiBleHRlcm4gaW50IGxvY2tfZGV2aWNlX2hvdHBsdWdfc3lz ZnModm9pZCk7CjE0NDc0OiBleHRlcm4gaW50IGRldmljZV9vZmZsaW5lKHN0cnVjdCBkZXZpY2Ug KmRldik7CjE0NDc0OiBleHRlcm4gaW50IGRldmljZV9vbmxpbmUoc3RydWN0IGRldmljZSAqZGV2 KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHNldF9wcmltYXJ5X2Z3bm9kZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgc2V0 X3NlY29uZGFyeV9md25vZGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZndub2RlX2hhbmRs ZSAqZndub2RlKTsKMTQ0NzQ6IHZvaWQgZGV2aWNlX3NldF9vZl9ub2RlX2Zyb21fZGV2KHN0cnVj dCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZSAqZGV2Mik7CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBkZXZfbnVtX3ZmKHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo ZGV2LT5idXMgJiYgZGV2LT5idXMtPm51bV92ZikKMTQ0NzQ6ICAgcmV0dXJuIGRldi0+YnVzLT5u dW1fdmYoZGV2KTsKMTQ0NzQ6ICByZXR1cm4gMDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKl9fcm9vdF9kZXZpY2Vf cmVnaXN0ZXIoY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAgICAgICBzdHJ1Y3QgbW9kdWxl ICpvd25lcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZXh0ZXJuIHZvaWQgcm9vdF9kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpyb290KTsK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCAqZGV2X2dldF9wbGF0ZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNl ICpkZXYpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRldi0+cGxhdGZvcm1fZGF0YTsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4g aW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZpY2VfYmluZF9k cml2ZXIoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGRldmljZV9yZWxl YXNlX2RyaXZlcihzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJp YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZGV2aWNlX2F0dGFjaChzdHJ1Y3QgZGV2 aWNlICpkZXYpOwoxNDQ3NDogZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkgZHJpdmVyX2F0dGFjaChzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIGRldmljZV9pbml0aWFsX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSBkZXZpY2VfcmVwcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogCjE0NDc0OiBleHRl cm4gYm9vbCBkZXZpY2VfaXNfYm91bmQoc3RydWN0IGRldmljZSAqZGV2KTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18ocHJpbnRmLCA1LCAwKSkpCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfY3JlYXRlX3Zh cmdzKHN0cnVjdCBjbGFzcyAqY2xzLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCjE0NDc0OiAgICAg ICAgZGV2X3QgZGV2dCwgdm9pZCAqZHJ2ZGF0YSwKMTQ0NzQ6ICAgICAgICBjb25zdCBjaGFyICpm bXQsIHZhX2xpc3QgdmFyZ3MpOwoxNDQ3NDogZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18ocHJpbnRmLCA1LCA2KSkpCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlICpkZXZpY2VfY3JlYXRlKHN0 cnVjdCBjbGFzcyAqY2xzLCBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCjE0NDc0OiAgICAgICAgIGRl dl90IGRldnQsIHZvaWQgKmRydmRhdGEsCjE0NDc0OiAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCwg Li4uKTsKMTQ0NzQ6IGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgNiwg NykpKQoxNDQ3NDogc3RydWN0IGRldmljZSAqZGV2aWNlX2NyZWF0ZV93aXRoX2dyb3VwcyhzdHJ1 Y3QgY2xhc3MgKmNscywKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGRldmljZSAqcGFyZW50LCBkZXZf dCBkZXZ0LCB2b2lkICpkcnZkYXRhLAoxNDQ3NDogICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwICoqZ3JvdXBzLAoxNDQ3NDogICAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLik7 CjE0NDc0OiBleHRlcm4gdm9pZCBkZXZpY2VfZGVzdHJveShzdHJ1Y3QgY2xhc3MgKmNscywgZGV2 X3QgZGV2dCk7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGRldmljZV9hZGRfZ3JvdXBzKHN0cnVjdCBkZXZpY2UgKmRldiwK MTQ0NzQ6ICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0 OiBleHRlcm4gdm9pZCBkZXZpY2VfcmVtb3ZlX2dyb3VwcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0 NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOwoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldmlj ZV9hZGRfZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2LAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwICpncnApCjE0NDc0OiB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCAqZ3JvdXBzW10gPSB7IGdycCwgKCh2b2lkICopMCkgfTsKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiBkZXZpY2VfYWRkX2dyb3VwcyhkZXYsIGdyb3Vwcyk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZGV2aWNlX3JlbW92ZV9ncm91cChzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0 NDc0OiAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmdycCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpncm91cHNbXSA9IHsgZ3Jw LCAoKHZvaWQgKikwKSB9OwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGRldmljZV9yZW1vdmVfZ3Jv dXBzKGRldiwgZ3JvdXBzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZGV2bV9kZXZpY2VfYWRkX2dyb3Vw cyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgKipncm91cHMpOwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2bV9kZXZpY2VfcmVtb3ZlX2dy b3VwcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CjE0NDc0OiBleHRlcm4gaW50IF9fYXR0cmlidXRlX18o KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZtX2RldmljZV9hZGRfZ3JvdXAoc3RydWN0IGRl dmljZSAqZGV2LAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpncnAp OwoxNDQ3NDogZXh0ZXJuIHZvaWQgZGV2bV9kZXZpY2VfcmVtb3ZlX2dyb3VwKHN0cnVjdCBkZXZp Y2UgKmRldiwKMTQ0NzQ6ICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmdy cCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGV4dGVybiBpbnQgKCpwbGF0Zm9ybV9ub3RpZnkpKHN0cnVjdCBkZXZpY2UgKmRl dik7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBpbnQgKCpwbGF0Zm9ybV9ub3RpZnlfcmVtb3ZlKShz dHJ1Y3QgZGV2aWNlICpkZXYpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKmdldF9kZXZpY2Uoc3RydWN0 IGRldmljZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiB2b2lkIHB1dF9kZXZpY2Uoc3RydWN0IGRldmlj ZSAqZGV2KTsKMTQ0NzQ6IGV4dGVybiBib29sIGtpbGxfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRl dik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIGludCBkZXZ0bXBmc19tb3VudCh2b2lk KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4g dm9pZCBkZXZpY2Vfc2h1dGRvd24odm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IGNvbnN0IGNoYXIgKmRldl9kcml2ZXJfc3RyaW5nKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldik7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRldmljZV9saW5rICpkZXZpY2VfbGlua19h ZGQoc3RydWN0IGRldmljZSAqY29uc3VtZXIsCjE0NDc0OiAgICAgICAgIHN0cnVjdCBkZXZpY2Ug KnN1cHBsaWVyLCB1MzIgZmxhZ3MpOwoxNDQ3NDogdm9pZCBkZXZpY2VfbGlua19kZWwoc3RydWN0 IGRldmljZV9saW5rICpsaW5rKTsKMTQ0NzQ6IHZvaWQgZGV2aWNlX2xpbmtfcmVtb3ZlKHZvaWQg KmNvbnN1bWVyLCBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcik7CjE0NDc0OiB2b2lkIGRldmljZV9s aW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3BhdXNlKHZvaWQpOwoxNDQ3NDogdm9pZCBkZXZpY2Vf bGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9yZXN1bWUodm9pZCk7CjE0NDc0OiAjIDMzICIuL2lu Y2x1ZGUvZHJtL2RybV9wcmludC5oIiAyCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC9kZWJ1 Z2ZzLmgiIDEKMTQ0NzQ6ICMgMjEgIi4vaW5jbHVkZS9saW51eC9kZWJ1Z2ZzLmgiCjE0NDc0OiBz dHJ1Y3QgZGV2aWNlOwoxNDQ3NDogc3RydWN0IGZpbGVfb3BlcmF0aW9uczsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRlYnVnZnNfYmxvYl93cmFwcGVyIHsKMTQ0NzQ6ICB2b2lkICpkYXRhOwoxNDQ3 NDogIHVuc2lnbmVkIGxvbmcgc2l6ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk ZWJ1Z2ZzX3JlZzMyIHsKMTQ0NzQ6ICBjaGFyICpuYW1lOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg b2Zmc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIg ewoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkZWJ1Z2ZzX3JlZzMyICpyZWdzOwoxNDQ3NDogIGludCBu cmVnczsKMTQ0NzQ6ICB2b2lkICpiYXNlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJu IHN0cnVjdCBkZW50cnkgKmFyY2hfZGVidWdmc19kaXI7CjE0NDc0OiAjIDU3ICIuL2luY2x1ZGUv bGludXgvZGVidWdmcy5oIgoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgdmZzbW91bnQgKigqZGVidWdm c19hdXRvbW91bnRfdCkoc3RydWN0IGRlbnRyeSAqLCB2b2lkICopOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19sb29rdXAoY29uc3QgY2hhciAq bmFtZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50KTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRy eSAqZGVidWdmc19jcmVhdGVfZmlsZShjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCjE0 NDc0OiAgICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB2b2lkICpkYXRhLAoxNDQ3NDogICAg ICAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpOwoxNDQ3NDogc3RydWN0IGRl bnRyeSAqZGVidWdmc19jcmVhdGVfZmlsZV91bnNhZmUoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVf dCBtb2RlLAoxNDQ3NDogICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdm9pZCAqZGF0YSwK MTQ0NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfZmlsZV9zaXplKGNvbnN0IGNo YXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50 LCB2b2lkICpkYXRhLAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpm b3BzLAoxNDQ3NDogICAgICBsb2ZmX3QgZmlsZV9zaXplKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfZGlyKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBkZW50 cnkgKnBhcmVudCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRl X3N5bWxpbmsoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDog ICAgICAgICAgIGNvbnN0IGNoYXIgKmRlc3QpOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGVudHJ5 ICpkZWJ1Z2ZzX2NyZWF0ZV9hdXRvbW91bnQoY29uc3QgY2hhciAqbmFtZSwKMTQ0NzQ6ICAgICAg c3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAgICBkZWJ1Z2ZzX2F1dG9tb3VudF90IGYs CjE0NDc0OiAgICAgIHZvaWQgKmRhdGEpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRlYnVnZnNfcmVt b3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZGVidWdmc19yZWFsX2ZvcHMoY29uc3Qgc3RydWN0IGZp bGUgKmZpbHApOwoxNDQ3NDogCjE0NDc0OiBpbnQgZGVidWdmc19maWxlX2dldChzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpOwoxNDQ3NDogdm9pZCBkZWJ1Z2ZzX2ZpbGVfcHV0KHN0cnVjdCBkZW50cnkg KmRlbnRyeSk7CjE0NDc0OiAKMTQ0NzQ6IHNzaXplX3QgZGVidWdmc19hdHRyX3JlYWQoc3RydWN0 IGZpbGUgKmZpbGUsIGNoYXIgKmJ1ZiwKMTQ0NzQ6ICAgIHNpemVfdCBsZW4sIGxvZmZfdCAqcHBv cyk7CjE0NDc0OiBzc2l6ZV90IGRlYnVnZnNfYXR0cl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwg Y29uc3QgY2hhciAqYnVmLAoxNDQ3NDogICAgc2l6ZV90IGxlbiwgbG9mZl90ICpwcG9zKTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19yZW5hbWUoc3RydWN0IGRlbnRyeSAq b2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZGVudHJ5ICpuZXdfZGlyLCBjb25zdCBjaGFyICpuZXdfbmFtZSk7CjE0NDc0OiAK MTQ0NzQ6IHZvaWQgZGVidWdmc19jcmVhdGVfdTgoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBt b2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICAgICAgICB1OCAqdmFsdWUpOwox NDQ3NDogdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV91MTYoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBt b2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICB1MTYgKnZhbHVlKTsKMTQ0NzQ6 IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX3UzMihjb25zdCBjaGFyICpuYW1lLCB1bW9k ZV90IG1vZGUsCjE0NDc0OiAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHUzMiAqdmFsdWUp OwoxNDQ3NDogdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV91NjQoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVf dCBtb2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICB1NjQgKnZhbHVlKTsKMTQ0 NzQ6IHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX3Vsb25nKGNvbnN0IGNoYXIgKm5hbWUs IHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB1bnNp Z25lZCBsb25nICp2YWx1ZSk7CjE0NDc0OiB2b2lkIGRlYnVnZnNfY3JlYXRlX3g4KGNvbnN0IGNo YXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAg ICAgICAgdTggKnZhbHVlKTsKMTQ0NzQ6IHZvaWQgZGVidWdmc19jcmVhdGVfeDE2KGNvbnN0IGNo YXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAg dTE2ICp2YWx1ZSk7CjE0NDc0OiB2b2lkIGRlYnVnZnNfY3JlYXRlX3gzMihjb25zdCBjaGFyICpu YW1lLCB1bW9kZV90IG1vZGUsIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKMTQ0NzQ6ICAgIHUzMiAq dmFsdWUpOwoxNDQ3NDogdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV94NjQoY29uc3QgY2hhciAqbmFtZSwg dW1vZGVfdCBtb2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICB1NjQgKnZhbHVl KTsKMTQ0NzQ6IHZvaWQgZGVidWdmc19jcmVhdGVfc2l6ZV90KGNvbnN0IGNoYXIgKm5hbWUsIHVt b2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgc2l6ZV90ICp2 YWx1ZSk7CjE0NDc0OiB2b2lkIGRlYnVnZnNfY3JlYXRlX2F0b21pY190KGNvbnN0IGNoYXIgKm5h bWUsIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCBh dG9taWNfdCAqdmFsdWUpOwoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfYm9v bChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCjE0NDc0OiAgICAgICBzdHJ1Y3QgZGVu dHJ5ICpwYXJlbnQsIGJvb2wgKnZhbHVlKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAq ZGVidWdmc19jcmVhdGVfYmxvYihjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCjE0NDc0 OiAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCjE0NDc0OiAgICAgICBzdHJ1Y3QgZGVidWdm c19ibG9iX3dyYXBwZXIgKmJsb2IpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRlYnVnZnNfY3JlYXRl X3JlZ3NldDMyKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAg c3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAgICAgICBzdHJ1Y3QgZGVidWdmc19yZWdz ZXQzMiAqcmVnc2V0KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkZWJ1Z2ZzX3ByaW50X3JlZ3MzMihz dHJ1Y3Qgc2VxX2ZpbGUgKnMsIGNvbnN0IHN0cnVjdCBkZWJ1Z2ZzX3JlZzMyICpyZWdzLAoxNDQ3 NDogICAgICBpbnQgbnJlZ3MsIHZvaWQgKmJhc2UsIGNoYXIgKnByZWZpeCk7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgZGVidWdmc19jcmVhdGVfdTMyX2FycmF5KGNvbnN0IGNoYXIgKm5hbWUsIHVtb2Rl X3QgbW9kZSwKMTQ0NzQ6ICAgICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdTMyICphcnJh eSwgdTMyIGVsZW1lbnRzKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRlbnRyeSAqZGVidWdmc19j cmVhdGVfZGV2bV9zZXFmaWxlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSwK MTQ0NzQ6ICAgICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LAoxNDQ3NDogICAgICAgICBpbnQg KCpyZWFkX2ZuKShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsCjE0NDc0OiAgICAgICAgICB2b2lkICpkYXRh KSk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGVidWdmc19pbml0aWFsaXplZCh2b2lkKTsKMTQ0NzQ6 IAoxNDQ3NDogc3NpemVfdCBkZWJ1Z2ZzX3JlYWRfZmlsZV9ib29sKHN0cnVjdCBmaWxlICpmaWxl LCBjaGFyICp1c2VyX2J1ZiwKMTQ0NzQ6ICAgICAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAq cHBvcyk7CjE0NDc0OiAKMTQ0NzQ6IHNzaXplX3QgZGVidWdmc193cml0ZV9maWxlX2Jvb2woc3Ry dWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnVzZXJfYnVmLAoxNDQ3NDogICAgIHNpemVfdCBj b3VudCwgbG9mZl90ICpwcG9zKTsKMTQ0NzQ6ICMgMzY1ICIuL2luY2x1ZGUvbGludXgvZGVidWdm cy5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV94dWwoY29uc3QgY2hhciAqbmFtZSwgdW1v ZGVfdCBtb2RlLAoxNDQ3NDogICAgICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKMTQ0NzQ6 ICAgICAgICAgICB1bnNpZ25lZCBsb25nICp2YWx1ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoc2l6 ZW9mKCp2YWx1ZSkgPT0gc2l6ZW9mKHUzMikpCjE0NDc0OiAgIGRlYnVnZnNfY3JlYXRlX3gzMihu YW1lLCBtb2RlLCBwYXJlbnQsICh1MzIgKil2YWx1ZSk7CjE0NDc0OiAgZWxzZQoxNDQ3NDogICBk ZWJ1Z2ZzX2NyZWF0ZV94NjQobmFtZSwgbW9kZSwgcGFyZW50LCAodTY0ICopdmFsdWUpOwoxNDQ3 NDogfQoxNDQ3NDogIyAzNCAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIgMgoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIgMQoxNDQ3NDogIyA0MiAiLi9pbmNs dWRlL3VhcGkvZHJtL2RybS5oIgoxNDQ3NDogIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJh dGVkL3VhcGkvYXNtL2lvY3RsLmgiIDEKMTQ0NzQ6ICMgNDMgIi4vaW5jbHVkZS91YXBpL2RybS9k cm0uaCIgMgoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgZHJtX2hhbmRsZV90OwoxNDQ3NDog IyA4NCAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBp bnQgZHJtX2NvbnRleHRfdDsKMTQ0NzQ6IHR5cGVkZWYgdW5zaWduZWQgaW50IGRybV9kcmF3YWJs ZV90OwoxNDQ3NDogdHlwZWRlZiB1bnNpZ25lZCBpbnQgZHJtX21hZ2ljX3Q7CjE0NDc0OiAjIDk3 ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCB7 CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgeDE7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgeTE7CjE0 NDc0OiAgdW5zaWduZWQgc2hvcnQgeDI7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgeTI7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2Ry YXdhYmxlX2luZm8gewoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fcmVjdHM7CjE0NDc0OiAgc3Ry dWN0IGRybV9jbGlwX3JlY3QgKnJlY3RzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV90ZXhfcmVnaW9uIHsKMTQ0NzQ6ICB1bnNpZ25l ZCBjaGFyIG5leHQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBwcmV2OwoxNDQ3NDogIHVuc2lnbmVk IGNoYXIgaW5fdXNlOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcGFkZGluZzsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgYWdlOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTMwICIuL2luY2x1ZGUvdWFwaS9kcm0v ZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX2h3X2xvY2sgewoxNDQ3NDogIF9fdm9sYXRpbGVfXyB1 bnNpZ25lZCBpbnQgbG9jazsKMTQ0NzQ6ICBjaGFyIHBhZGRpbmdbNjBdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBkcm1fdmVyc2lvbiB7CjE0NDc0OiAgaW50IHZlcnNpb25fbWFqb3I7CjE0NDc0OiAgaW50IHZl cnNpb25fbWlub3I7CjE0NDc0OiAgaW50IHZlcnNpb25fcGF0Y2hsZXZlbDsKMTQ0NzQ6ICBfX2tl cm5lbF9zaXplX3QgbmFtZV9sZW47CjE0NDc0OiAgY2hhciAqbmFtZTsKMTQ0NzQ6ICBfX2tlcm5l bF9zaXplX3QgZGF0ZV9sZW47CjE0NDc0OiAgY2hhciAqZGF0ZTsKMTQ0NzQ6ICBfX2tlcm5lbF9z aXplX3QgZGVzY19sZW47CjE0NDc0OiAgY2hhciAqZGVzYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX3Vu aXF1ZSB7CjE0NDc0OiAgX19rZXJuZWxfc2l6ZV90IHVuaXF1ZV9sZW47CjE0NDc0OiAgY2hhciAq dW5pcXVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9saXN0IHsKMTQ0NzQ6 ICBpbnQgY291bnQ7CjE0NDc0OiAgc3RydWN0IGRybV92ZXJzaW9uICp2ZXJzaW9uOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9ibG9jayB7CjE0NDc0OiAgaW50IHVudXNlZDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZHJtX2NvbnRyb2wgewoxNDQ3NDogIGVudW0gewoxNDQ3NDogICBEUk1f QUREX0NPTU1BTkQsCjE0NDc0OiAgIERSTV9STV9DT01NQU5ELAoxNDQ3NDogICBEUk1fSU5TVF9I QU5ETEVSLAoxNDQ3NDogICBEUk1fVU5JTlNUX0hBTkRMRVIKMTQ0NzQ6ICB9IGZ1bmM7CjE0NDc0 OiAgaW50IGlycTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gZHJtX21hcF90eXBlIHsKMTQ0NzQ6ICBfRFJNX0ZSQU1FX0JVRkZFUiA9IDAsCjE0 NDc0OiAgX0RSTV9SRUdJU1RFUlMgPSAxLAoxNDQ3NDogIF9EUk1fU0hNID0gMiwKMTQ0NzQ6ICBf RFJNX0FHUCA9IDMsCjE0NDc0OiAgX0RSTV9TQ0FUVEVSX0dBVEhFUiA9IDQsCjE0NDc0OiAgX0RS TV9DT05TSVNURU5UID0gNQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBkcm1fbWFwX2ZsYWdzIHsKMTQ0NzQ6ICBfRFJNX1JFU1RSSUNURUQgPSAw eDAxLAoxNDQ3NDogIF9EUk1fUkVBRF9PTkxZID0gMHgwMiwKMTQ0NzQ6ICBfRFJNX0xPQ0tFRCA9 IDB4MDQsCjE0NDc0OiAgX0RSTV9LRVJORUwgPSAweDA4LAoxNDQ3NDogIF9EUk1fV1JJVEVfQ09N QklOSU5HID0gMHgxMCwKMTQ0NzQ6ICBfRFJNX0NPTlRBSU5TX0xPQ0sgPSAweDIwLAoxNDQ3NDog IF9EUk1fUkVNT1ZBQkxFID0gMHg0MCwKMTQ0NzQ6ICBfRFJNX0RSSVZFUiA9IDB4ODAKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fY3R4X3ByaXZfbWFwIHsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgY3R4X2lkOwoxNDQ3NDogIHZvaWQgKmhhbmRsZTsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkcm1fbWFwIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG9mZnNldDsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIHNpemU7CjE0NDc0OiAgZW51bSBkcm1fbWFwX3R5cGUgdHlwZTsKMTQ0NzQ6ICBl bnVtIGRybV9tYXBfZmxhZ3MgZmxhZ3M7CjE0NDc0OiAgdm9pZCAqaGFuZGxlOwoxNDQ3NDogCjE0 NDc0OiAgaW50IG10cnI7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fY2xpZW50IHsKMTQ0NzQ6ICBpbnQgaWR4OwoxNDQ3 NDogIGludCBhdXRoOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgcGlkOwoxNDQ3NDogIHVuc2lnbmVk IGxvbmcgdWlkOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbWFnaWM7CjE0NDc0OiAgdW5zaWduZWQg bG9uZyBpb2NzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkcm1fc3RhdF90eXBlIHsK MTQ0NzQ6ICBfRFJNX1NUQVRfTE9DSywKMTQ0NzQ6ICBfRFJNX1NUQVRfT1BFTlMsCjE0NDc0OiAg X0RSTV9TVEFUX0NMT1NFUywKMTQ0NzQ6ICBfRFJNX1NUQVRfSU9DVExTLAoxNDQ3NDogIF9EUk1f U1RBVF9MT0NLUywKMTQ0NzQ6ICBfRFJNX1NUQVRfVU5MT0NLUywKMTQ0NzQ6ICBfRFJNX1NUQVRf VkFMVUUsCjE0NDc0OiAgX0RSTV9TVEFUX0JZVEUsCjE0NDc0OiAgX0RSTV9TVEFUX0NPVU5ULAox NDQ3NDogCjE0NDc0OiAgX0RSTV9TVEFUX0lSUSwKMTQ0NzQ6ICBfRFJNX1NUQVRfUFJJTUFSWSwK MTQ0NzQ6ICBfRFJNX1NUQVRfU0VDT05EQVJZLAoxNDQ3NDogIF9EUk1fU1RBVF9ETUEsCjE0NDc0 OiAgX0RSTV9TVEFUX1NQRUNJQUwsCjE0NDc0OiAgX0RSTV9TVEFUX01JU1NFRAoxNDQ3NDogCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJt X3N0YXRzIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGNvdW50OwoxNDQ3NDogIHN0cnVjdCB7CjE0 NDc0OiAgIHVuc2lnbmVkIGxvbmcgdmFsdWU7CjE0NDc0OiAgIGVudW0gZHJtX3N0YXRfdHlwZSB0 eXBlOwoxNDQ3NDogIH0gZGF0YVsxNV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRybV9sb2NrX2ZsYWdzIHsKMTQ0NzQ6ICBfRFJNX0xPQ0tf UkVBRFkgPSAweDAxLAoxNDQ3NDogIF9EUk1fTE9DS19RVUlFU0NFTlQgPSAweDAyLAoxNDQ3NDog IF9EUk1fTE9DS19GTFVTSCA9IDB4MDQsCjE0NDc0OiAgX0RSTV9MT0NLX0ZMVVNIX0FMTCA9IDB4 MDgsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX0RSTV9IQUxUX0FMTF9RVUVVRVMg PSAweDEwLAoxNDQ3NDogIF9EUk1fSEFMVF9DVVJfUVVFVUVTID0gMHgyMAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBkcm1fbG9jayB7CjE0NDc0OiAgaW50IGNvbnRleHQ7CjE0NDc0OiAgZW51bSBkcm1fbG9ja19m bGFncyBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDMxMCAiLi9pbmNsdWRlL3VhcGkvZHJtL2Ry bS5oIgoxNDQ3NDogZW51bSBkcm1fZG1hX2ZsYWdzIHsKMTQ0NzQ6IAoxNDQ3NDogIF9EUk1fRE1B X0JMT0NLID0gMHgwMSwKMTQ0NzQ6ICMgMzIyICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCjE0 NDc0OiAgX0RSTV9ETUFfV0hJTEVfTE9DS0VEID0gMHgwMiwKMTQ0NzQ6ICBfRFJNX0RNQV9QUklP UklUWSA9IDB4MDQsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9EUk1fRE1BX1dBSVQgPSAweDEw LAoxNDQ3NDogIF9EUk1fRE1BX1NNQUxMRVJfT0sgPSAweDIwLAoxNDQ3NDogIF9EUk1fRE1BX0xB UkdFUl9PSyA9IDB4NDAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2J1Zl9kZXNjIHsKMTQ0NzQ6ICBpbnQg Y291bnQ7CjE0NDc0OiAgaW50IHNpemU7CjE0NDc0OiAgaW50IGxvd19tYXJrOwoxNDQ3NDogIGlu dCBoaWdoX21hcms7CjE0NDc0OiAgZW51bSB7CjE0NDc0OiAgIF9EUk1fUEFHRV9BTElHTiA9IDB4 MDEsCjE0NDc0OiAgIF9EUk1fQUdQX0JVRkZFUiA9IDB4MDIsCjE0NDc0OiAgIF9EUk1fU0dfQlVG RkVSID0gMHgwNCwKMTQ0NzQ6ICAgX0RSTV9GQl9CVUZGRVIgPSAweDA4LAoxNDQ3NDogICBfRFJN X1BDSV9CVUZGRVJfUk8gPSAweDEwCjE0NDc0OiAgfSBmbGFnczsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIGFncF9zdGFydDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fYnVmX2luZm8gewoxNDQ3 NDogIGludCBjb3VudDsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX2J1Zl9kZXNjICpsaXN0OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9idWZf ZnJlZSB7CjE0NDc0OiAgaW50IGNvdW50OwoxNDQ3NDogIGludCAqbGlzdDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZHJtX2J1Zl9wdWIgewoxNDQ3NDogIGludCBpZHg7CjE0NDc0OiAgaW50IHRvdGFsOwoxNDQ3 NDogIGludCB1c2VkOwoxNDQ3NDogIHZvaWQgKmFkZHJlc3M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2J1Zl9tYXAgewoxNDQ3NDog IGludCBjb3VudDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICp2aXJ0dWFs OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRybV9idWZfcHViICpsaXN0OwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgNDAyICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX2Rt YSB7CjE0NDc0OiAgaW50IGNvbnRleHQ7CjE0NDc0OiAgaW50IHNlbmRfY291bnQ7CjE0NDc0OiAg aW50ICpzZW5kX2luZGljZXM7CjE0NDc0OiAgaW50ICpzZW5kX3NpemVzOwoxNDQ3NDogIGVudW0g ZHJtX2RtYV9mbGFncyBmbGFnczsKMTQ0NzQ6ICBpbnQgcmVxdWVzdF9jb3VudDsKMTQ0NzQ6ICBp bnQgcmVxdWVzdF9zaXplOwoxNDQ3NDogIGludCAqcmVxdWVzdF9pbmRpY2VzOwoxNDQ3NDogIGlu dCAqcmVxdWVzdF9zaXplczsKMTQ0NzQ6ICBpbnQgZ3JhbnRlZF9jb3VudDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZHJtX2N0eF9mbGFncyB7CjE0NDc0OiAgX0RSTV9DT05URVhUX1BS RVNFUlZFRCA9IDB4MDEsCjE0NDc0OiAgX0RSTV9DT05URVhUXzJET05MWSA9IDB4MDIKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHJtX2N0eCB7CjE0NDc0OiAgZHJtX2NvbnRleHRfdCBoYW5kbGU7CjE0NDc0OiAg ZW51bSBkcm1fY3R4X2ZsYWdzIGZsYWdzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9jdHhfcmVzIHsKMTQ0NzQ6ICBpbnQgY291bnQ7 CjE0NDc0OiAgc3RydWN0IGRybV9jdHggKmNvbnRleHRzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9kcmF3IHsKMTQ0NzQ6ICBkcm1f ZHJhd2FibGVfdCBoYW5kbGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiB0eXBlZGVmIGVudW0gewoxNDQ3NDogIERSTV9EUkFXQUJMRV9DTElQUkVDVFMK MTQ0NzQ6IH0gZHJtX2RyYXdhYmxlX2luZm9fdHlwZV90OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZHJtX3VwZGF0ZV9kcmF3IHsKMTQ0NzQ6ICBkcm1fZHJhd2FibGVfdCBoYW5kbGU7CjE0NDc0OiAg dW5zaWduZWQgaW50IHR5cGU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bTsKMTQ0NzQ6ICB1bnNp Z25lZCBsb25nIGxvbmcgZGF0YTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fYXV0aCB7CjE0NDc0OiAgZHJtX21hZ2ljX3QgbWFnaWM7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGRybV9pcnFfYnVzaWQgewoxNDQ3NDogIGludCBpcnE7CjE0NDc0OiAg aW50IGJ1c251bTsKMTQ0NzQ6ICBpbnQgZGV2bnVtOwoxNDQ3NDogIGludCBmdW5jbnVtOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkcm1fdmJsYW5rX3NlcV90eXBlIHsKMTQ0NzQ6ICBf RFJNX1ZCTEFOS19BQlNPTFVURSA9IDB4MCwKMTQ0NzQ6ICBfRFJNX1ZCTEFOS19SRUxBVElWRSA9 IDB4MSwKMTQ0NzQ6IAoxNDQ3NDogIF9EUk1fVkJMQU5LX0hJR0hfQ1JUQ19NQVNLID0gMHgwMDAw MDAzZSwKMTQ0NzQ6ICBfRFJNX1ZCTEFOS19FVkVOVCA9IDB4NDAwMDAwMCwKMTQ0NzQ6ICBfRFJN X1ZCTEFOS19GTElQID0gMHg4MDAwMDAwLAoxNDQ3NDogIF9EUk1fVkJMQU5LX05FWFRPTk1JU1Mg PSAweDEwMDAwMDAwLAoxNDQ3NDogIF9EUk1fVkJMQU5LX1NFQ09OREFSWSA9IDB4MjAwMDAwMDAs CjE0NDc0OiAgX0RSTV9WQkxBTktfU0lHTkFMID0gMHg0MDAwMDAwMAoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk cm1fd2FpdF92YmxhbmtfcmVxdWVzdCB7CjE0NDc0OiAgZW51bSBkcm1fdmJsYW5rX3NlcV90eXBl IHR5cGU7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNlcXVlbmNlOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgc2lnbmFsOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV93YWl0X3ZibGFu a19yZXBseSB7CjE0NDc0OiAgZW51bSBkcm1fdmJsYW5rX3NlcV90eXBlIHR5cGU7CjE0NDc0OiAg dW5zaWduZWQgaW50IHNlcXVlbmNlOwoxNDQ3NDogIGxvbmcgdHZhbF9zZWM7CjE0NDc0OiAgbG9u ZyB0dmFsX3VzZWM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHJtX3dhaXRfdmJsYW5rIHsKMTQ0NzQ6ICBzdHJ1 Y3QgZHJtX3dhaXRfdmJsYW5rX3JlcXVlc3QgcmVxdWVzdDsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3dh aXRfdmJsYW5rX3JlcGx5IHJlcGx5OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTI2ICIuL2luY2x1ZGUv dWFwaS9kcm0vZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVzZXRfY3RsIHsKMTQ0NzQ6ICBf X3UzMiBjcnRjOwoxNDQ3NDogIF9fdTMyIGNtZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2FncF9tb2Rl IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIG1vZGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9hZ3BfYnVm ZmVyIHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIHNpemU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBo YW5kbGU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB0eXBlOwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcg cGh5c2ljYWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9hZ3BfYmluZGluZyB7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBoYW5kbGU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7CjE0NDc0OiB9Owox NDQ3NDogIyA1NjkgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIKMTQ0NzQ6IHN0cnVjdCBkcm1f YWdwX2luZm8gewoxNDQ3NDogIGludCBhZ3BfdmVyc2lvbl9tYWpvcjsKMTQ0NzQ6ICBpbnQgYWdw X3ZlcnNpb25fbWlub3I7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtb2RlOwoxNDQ3NDogIHVuc2ln bmVkIGxvbmcgYXBlcnR1cmVfYmFzZTsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGFwZXJ0dXJlX3Np emU7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBtZW1vcnlfYWxsb3dlZDsKMTQ0NzQ6ICB1bnNpZ25l ZCBsb25nIG1lbW9yeV91c2VkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBzaG9y dCBpZF92ZW5kb3I7CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgaWRfZGV2aWNlOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9zY2F0dGVy X2dhdGhlciB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBzaXplOwoxNDQ3NDogIHVuc2lnbmVkIGxv bmcgaGFuZGxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRybV9zZXRfdmVyc2lvbiB7CjE0NDc0OiAgaW50IGRybV9kaV9tYWpvcjsKMTQ0 NzQ6ICBpbnQgZHJtX2RpX21pbm9yOwoxNDQ3NDogIGludCBkcm1fZGRfbWFqb3I7CjE0NDc0OiAg aW50IGRybV9kZF9taW5vcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRybV9nZW1fY2xvc2UgewoxNDQ3NDogCjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3NDogIF9f dTMyIHBhZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9nZW1f ZmxpbmsgewoxNDQ3NDogCjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBfX3UzMiBuYW1lOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZHJtX2dlbV9vcGVuIHsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIG5hbWU7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIF9fdTMyIGhhbmRsZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191NjQgc2l6 ZTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDY1NiAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgoxNDQ3 NDogc3RydWN0IGRybV9nZXRfY2FwIHsKMTQ0NzQ6ICBfX3U2NCBjYXBhYmlsaXR5OwoxNDQ3NDog IF9fdTY0IHZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNzAyICIuL2luY2x1ZGUvdWFwaS9kcm0v ZHJtLmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX3NldF9jbGllbnRfY2FwIHsKMTQ0NzQ6ICBfX3U2NCBj YXBhYmlsaXR5OwoxNDQ3NDogIF9fdTY0IHZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fcHJpbWVfaGFuZGxlIHsKMTQ0NzQ6ICBfX3UzMiBo YW5kbGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBfX3MzMiBmZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1f c3luY29ial9jcmVhdGUgewoxNDQ3NDogIF9fdTMyIGhhbmRsZTsKMTQ0NzQ6IAoxNDQ3NDogIF9f dTMyIGZsYWdzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9zeW5jb2JqX2Rl c3Ryb3kgewoxNDQ3NDogIF9fdTMyIGhhbmRsZTsKMTQ0NzQ6ICBfX3UzMiBwYWQ7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9zeW5jb2JqX2hhbmRs ZSB7CjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogCjE0 NDc0OiAgX19zMzIgZmQ7CjE0NDc0OiAgX191MzIgcGFkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRybV9zeW5jb2JqX3RyYW5zZmVyIHsKMTQ0NzQ6ICBfX3UzMiBzcmNfaGFuZGxl OwoxNDQ3NDogIF9fdTMyIGRzdF9oYW5kbGU7CjE0NDc0OiAgX191NjQgc3JjX3BvaW50OwoxNDQ3 NDogIF9fdTY0IGRzdF9wb2ludDsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6ICBfX3UzMiBw YWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZHJtX3N5bmNvYmpfd2FpdCB7CjE0NDc0OiAgX191NjQgaGFuZGxlczsKMTQ0NzQ6IAoxNDQ3 NDogIF9fczY0IHRpbWVvdXRfbnNlYzsKMTQ0NzQ6ICBfX3UzMiBjb3VudF9oYW5kbGVzOwoxNDQ3 NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogIF9fdTMyIGZpcnN0X3NpZ25hbGVkOwoxNDQ3NDogIF9f dTMyIHBhZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fc3luY29ial90aW1l bGluZV93YWl0IHsKMTQ0NzQ6ICBfX3U2NCBoYW5kbGVzOwoxNDQ3NDogCjE0NDc0OiAgX191NjQg cG9pbnRzOwoxNDQ3NDogCjE0NDc0OiAgX19zNjQgdGltZW91dF9uc2VjOwoxNDQ3NDogIF9fdTMy IGNvdW50X2hhbmRsZXM7CjE0NDc0OiAgX191MzIgZmxhZ3M7CjE0NDc0OiAgX191MzIgZmlyc3Rf c2lnbmFsZWQ7CjE0NDc0OiAgX191MzIgcGFkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZHJtX3N5bmNvYmpfYXJyYXkgewoxNDQ3NDogIF9fdTY0IGhhbmRsZXM7CjE0 NDc0OiAgX191MzIgY291bnRfaGFuZGxlczsKMTQ0NzQ6ICBfX3UzMiBwYWQ7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fc3luY29ial90aW1lbGluZV9hcnJheSB7 CjE0NDc0OiAgX191NjQgaGFuZGxlczsKMTQ0NzQ6ICBfX3U2NCBwb2ludHM7CjE0NDc0OiAgX191 MzIgY291bnRfaGFuZGxlczsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2NydGNfZ2V0X3NlcXVlbmNlIHsKMTQ0 NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGFjdGl2ZTsKMTQ0NzQ6ICBfX3U2NCBz ZXF1ZW5jZTsKMTQ0NzQ6ICBfX3M2NCBzZXF1ZW5jZV9uczsKMTQ0NzQ6IH07CjE0NDc0OiAjIDgw NSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgoxNDQ3NDogc3RydWN0IGRybV9jcnRjX3F1ZXVl X3NlcXVlbmNlIHsKMTQ0NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGZsYWdzOwox NDQ3NDogIF9fdTY0IHNlcXVlbmNlOwoxNDQ3NDogIF9fdTY0IHVzZXJfZGF0YTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2lu Y2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIgMQoxNDQ3NDogIyAzMCAiLi9pbmNsdWRlL3VhcGkv ZHJtL2RybV9tb2RlLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIgMQox NDQ3NDogIyAzMSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiIDIKMTQ0NzQ6ICMgMjIx ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9t b2RlaW5mbyB7CjE0NDc0OiAgX191MzIgY2xvY2s7CjE0NDc0OiAgX191MTYgaGRpc3BsYXk7CjE0 NDc0OiAgX191MTYgaHN5bmNfc3RhcnQ7CjE0NDc0OiAgX191MTYgaHN5bmNfZW5kOwoxNDQ3NDog IF9fdTE2IGh0b3RhbDsKMTQ0NzQ6ICBfX3UxNiBoc2tldzsKMTQ0NzQ6ICBfX3UxNiB2ZGlzcGxh eTsKMTQ0NzQ6ICBfX3UxNiB2c3luY19zdGFydDsKMTQ0NzQ6ICBfX3UxNiB2c3luY19lbmQ7CjE0 NDc0OiAgX191MTYgdnRvdGFsOwoxNDQ3NDogIF9fdTE2IHZzY2FuOwoxNDQ3NDogCjE0NDc0OiAg X191MzIgdnJlZnJlc2g7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6ICBfX3Uz MiB0eXBlOwoxNDQ3NDogIGNoYXIgbmFtZVszMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgZHJtX21vZGVfY2FyZF9yZXMgewoxNDQ3NDogIF9fdTY0IGZiX2lkX3B0cjsKMTQ0NzQ6 ICBfX3U2NCBjcnRjX2lkX3B0cjsKMTQ0NzQ6ICBfX3U2NCBjb25uZWN0b3JfaWRfcHRyOwoxNDQ3 NDogIF9fdTY0IGVuY29kZXJfaWRfcHRyOwoxNDQ3NDogIF9fdTMyIGNvdW50X2ZiczsKMTQ0NzQ6 ICBfX3UzMiBjb3VudF9jcnRjczsKMTQ0NzQ6ICBfX3UzMiBjb3VudF9jb25uZWN0b3JzOwoxNDQ3 NDogIF9fdTMyIGNvdW50X2VuY29kZXJzOwoxNDQ3NDogIF9fdTMyIG1pbl93aWR0aDsKMTQ0NzQ6 ICBfX3UzMiBtYXhfd2lkdGg7CjE0NDc0OiAgX191MzIgbWluX2hlaWdodDsKMTQ0NzQ6ICBfX3Uz MiBtYXhfaGVpZ2h0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2Ny dGMgewoxNDQ3NDogIF9fdTY0IHNldF9jb25uZWN0b3JzX3B0cjsKMTQ0NzQ6ICBfX3UzMiBjb3Vu dF9jb25uZWN0b3JzOwoxNDQ3NDogCjE0NDc0OiAgX191MzIgY3J0Y19pZDsKMTQ0NzQ6ICBfX3Uz MiBmYl9pZDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIHg7CjE0NDc0OiAgX191MzIgeTsKMTQ0NzQ6 IAoxNDQ3NDogIF9fdTMyIGdhbW1hX3NpemU7CjE0NDc0OiAgX191MzIgbW9kZV92YWxpZDsKMTQ0 NzQ6ICBzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8gbW9kZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX3NldF9w bGFuZSB7CjE0NDc0OiAgX191MzIgcGxhbmVfaWQ7CjE0NDc0OiAgX191MzIgY3J0Y19pZDsKMTQ0 NzQ6ICBfX3UzMiBmYl9pZDsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgX19zMzIgY3J0Y194OwoxNDQ3NDogIF9fczMyIGNydGNfeTsKMTQ0NzQ6ICBfX3UzMiBj cnRjX3c7CjE0NDc0OiAgX191MzIgY3J0Y19oOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3Uz MiBzcmNfeDsKMTQ0NzQ6ICBfX3UzMiBzcmNfeTsKMTQ0NzQ6ICBfX3UzMiBzcmNfaDsKMTQ0NzQ6 ICBfX3UzMiBzcmNfdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9n ZXRfcGxhbmUgewoxNDQ3NDogIF9fdTMyIHBsYW5lX2lkOwoxNDQ3NDogCjE0NDc0OiAgX191MzIg Y3J0Y19pZDsKMTQ0NzQ6ICBfX3UzMiBmYl9pZDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIHBvc3Np YmxlX2NydGNzOwoxNDQ3NDogIF9fdTMyIGdhbW1hX3NpemU7CjE0NDc0OiAKMTQ0NzQ6ICBfX3Uz MiBjb3VudF9mb3JtYXRfdHlwZXM7CjE0NDc0OiAgX191NjQgZm9ybWF0X3R5cGVfcHRyOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2dldF9wbGFuZV9yZXMgewoxNDQ3 NDogIF9fdTY0IHBsYW5lX2lkX3B0cjsKMTQ0NzQ6ICBfX3UzMiBjb3VudF9wbGFuZXM7CjE0NDc0 OiB9OwoxNDQ3NDogIyAzMjIgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDog c3RydWN0IGRybV9tb2RlX2dldF9lbmNvZGVyIHsKMTQ0NzQ6ICBfX3UzMiBlbmNvZGVyX2lkOwox NDQ3NDogIF9fdTMyIGVuY29kZXJfdHlwZTsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIGNydGNfaWQ7 CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBwb3NzaWJsZV9jcnRjczsKMTQ0NzQ6ICBfX3UzMiBwb3Nz aWJsZV9jbG9uZXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBkcm1fbW9kZV9zdWJjb25uZWN0b3IgewoxNDQ3NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9B dXRvbWF0aWMgPSAwLAoxNDQ3NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9Vbmtub3duID0gMCwK MTQ0NzQ6ICBEUk1fTU9ERV9TVUJDT05ORUNUT1JfRFZJRCA9IDMsCjE0NDc0OiAgRFJNX01PREVf U1VCQ09OTkVDVE9SX0RWSUEgPSA0LAoxNDQ3NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9Db21w b3NpdGUgPSA1LAoxNDQ3NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9TVklERU8gPSA2LAoxNDQ3 NDogIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9Db21wb25lbnQgPSA4LAoxNDQ3NDogIERSTV9NT0RF X1NVQkNPTk5FQ1RPUl9TQ0FSVCA9IDksCjE0NDc0OiB9OwoxNDQ3NDogIyAzNjYgIi4vaW5jbHVk ZS91YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2dldF9jb25uZWN0 b3IgewoxNDQ3NDogCjE0NDc0OiAgX191NjQgZW5jb2RlcnNfcHRyOwoxNDQ3NDogIF9fdTY0IG1v ZGVzX3B0cjsKMTQ0NzQ6ICBfX3U2NCBwcm9wc19wdHI7CjE0NDc0OiAgX191NjQgcHJvcF92YWx1 ZXNfcHRyOwoxNDQ3NDogCjE0NDc0OiAgX191MzIgY291bnRfbW9kZXM7CjE0NDc0OiAgX191MzIg Y291bnRfcHJvcHM7CjE0NDc0OiAgX191MzIgY291bnRfZW5jb2RlcnM7CjE0NDc0OiAKMTQ0NzQ6 ICBfX3UzMiBlbmNvZGVyX2lkOwoxNDQ3NDogIF9fdTMyIGNvbm5lY3Rvcl9pZDsKMTQ0NzQ6ICBf X3UzMiBjb25uZWN0b3JfdHlwZTsKMTQ0NzQ6ICBfX3UzMiBjb25uZWN0b3JfdHlwZV9pZDsKMTQ0 NzQ6IAoxNDQ3NDogIF9fdTMyIGNvbm5lY3Rpb247CjE0NDc0OiAgX191MzIgbW1fd2lkdGg7CjE0 NDc0OiAgX191MzIgbW1faGVpZ2h0OwoxNDQ3NDogIF9fdTMyIHN1YnBpeGVsOwoxNDQ3NDogCjE0 NDc0OiAgX191MzIgcGFkOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNDE5ICIuL2luY2x1ZGUvdWFwaS9k cm0vZHJtX21vZGUuaCIKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9wcm9wZXJ0eV9lbnVtIHsKMTQ0 NzQ6ICBfX3U2NCB2YWx1ZTsKMTQ0NzQ6ICBjaGFyIG5hbWVbMzJdOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2dldF9wcm9wZXJ0eSB7CjE0NDc0OiAgX191NjQgdmFs dWVzX3B0cjsKMTQ0NzQ6ICBfX3U2NCBlbnVtX2Jsb2JfcHRyOwoxNDQ3NDogCjE0NDc0OiAgX191 MzIgcHJvcF9pZDsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6ICBjaGFyIG5hbWVbMzJdOwox NDQ3NDogCjE0NDc0OiAgX191MzIgY291bnRfdmFsdWVzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBfX3UzMiBjb3VudF9lbnVtX2Jsb2JzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfcHJvcGVydHkgewoxNDQ3NDogIF9fdTY0IHZhbHVlOwox NDQ3NDogIF9fdTMyIHByb3BfaWQ7CjE0NDc0OiAgX191MzIgY29ubmVjdG9yX2lkOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgNDU0ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKMTQ0NzQ6IHN0 cnVjdCBkcm1fbW9kZV9vYmpfZ2V0X3Byb3BlcnRpZXMgewoxNDQ3NDogIF9fdTY0IHByb3BzX3B0 cjsKMTQ0NzQ6ICBfX3U2NCBwcm9wX3ZhbHVlc19wdHI7CjE0NDc0OiAgX191MzIgY291bnRfcHJv cHM7CjE0NDc0OiAgX191MzIgb2JqX2lkOwoxNDQ3NDogIF9fdTMyIG9ial90eXBlOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX29ial9zZXRfcHJvcGVydHkgewoxNDQ3 NDogIF9fdTY0IHZhbHVlOwoxNDQ3NDogIF9fdTMyIHByb3BfaWQ7CjE0NDc0OiAgX191MzIgb2Jq X2lkOwoxNDQ3NDogIF9fdTMyIG9ial90eXBlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRybV9tb2RlX2dldF9ibG9iIHsKMTQ0NzQ6ICBfX3UzMiBibG9iX2lkOwoxNDQ3NDogIF9f dTMyIGxlbmd0aDsKMTQ0NzQ6ICBfX3U2NCBkYXRhOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGRybV9tb2RlX2ZiX2NtZCB7CjE0NDc0OiAgX191MzIgZmJfaWQ7CjE0NDc0OiAgX191 MzIgd2lkdGg7CjE0NDc0OiAgX191MzIgaGVpZ2h0OwoxNDQ3NDogIF9fdTMyIHBpdGNoOwoxNDQ3 NDogIF9fdTMyIGJwcDsKMTQ0NzQ6ICBfX3UzMiBkZXB0aDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMy IGhhbmRsZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIHsKMTQ0NzQ6ICBfX3UzMiBmYl9pZDsKMTQ0NzQ6ICBf X3UzMiB3aWR0aDsKMTQ0NzQ6ICBfX3UzMiBoZWlnaHQ7CjE0NDc0OiAgX191MzIgcGl4ZWxfZm9y bWF0OwoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogIyA1MjAgIi4vaW5jbHVkZS91YXBpL2Ry bS9kcm1fbW9kZS5oIgoxNDQ3NDogIF9fdTMyIGhhbmRsZXNbNF07CjE0NDc0OiAgX191MzIgcGl0 Y2hlc1s0XTsKMTQ0NzQ6ICBfX3UzMiBvZmZzZXRzWzRdOwoxNDQ3NDogIF9fdTY0IG1vZGlmaWVy WzRdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTU5ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUu aCIKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9mYl9kaXJ0eV9jbWQgewoxNDQ3NDogIF9fdTMyIGZi X2lkOwoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogIF9fdTMyIGNvbG9yOwoxNDQ3NDogIF9f dTMyIG51bV9jbGlwczsKMTQ0NzQ6ICBfX3U2NCBjbGlwc19wdHI7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfbW9kZV9jbWQgewoxNDQ3NDogIF9fdTMyIGNvbm5lY3Rv cl9pZDsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX21vZGVfbW9kZWluZm8gbW9kZTsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDU5MCAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCjE0NDc0OiBzdHJ1Y3Qg ZHJtX21vZGVfY3Vyc29yIHsKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6ICBfX3UzMiBjcnRj X2lkOwoxNDQ3NDogIF9fczMyIHg7CjE0NDc0OiAgX19zMzIgeTsKMTQ0NzQ6ICBfX3UzMiB3aWR0 aDsKMTQ0NzQ6ICBfX3UzMiBoZWlnaHQ7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBoYW5kbGU7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfY3Vyc29yMiB7CjE0NDc0OiAg X191MzIgZmxhZ3M7CjE0NDc0OiAgX191MzIgY3J0Y19pZDsKMTQ0NzQ6ICBfX3MzMiB4OwoxNDQ3 NDogIF9fczMyIHk7CjE0NDc0OiAgX191MzIgd2lkdGg7CjE0NDc0OiAgX191MzIgaGVpZ2h0Owox NDQ3NDogCjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3NDogIF9fczMyIGhvdF94OwoxNDQ3NDog IF9fczMyIGhvdF95OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2Ny dGNfbHV0IHsKMTQ0NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGdhbW1hX3NpemU7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IHJlZDsKMTQ0NzQ6ICBfX3U2NCBncmVlbjsK MTQ0NzQ6ICBfX3U2NCBibHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9j b2xvcl9jdG0gewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191NjQg bWF0cml4WzldOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9jb2xvcl9sdXQg ewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MTYgcmVkOwoxNDQ3 NDogIF9fdTE2IGdyZWVuOwoxNDQ3NDogIF9fdTE2IGJsdWU7CjE0NDc0OiAgX191MTYgcmVzZXJ2 ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogIyA2NTIgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5o IgoxNDQ3NDogc3RydWN0IGhkcl9tZXRhZGF0YV9pbmZvZnJhbWUgewoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191OCBlb3RmOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIF9fdTggbWV0YWRhdGFfdHlwZTsKMTQ0NzQ6ICMgNjcwICIuL2luY2x1ZGUvdWFw aS9kcm0vZHJtX21vZGUuaCIKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICBfX3UxNiB4LCB5Owox NDQ3NDogICB9IGRpc3BsYXlfcHJpbWFyaWVzWzNdOwoxNDQ3NDogIyA2ODEgIi4vaW5jbHVkZS91 YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIF9fdTE2IHgsIHk7 CjE0NDc0OiAgIH0gd2hpdGVfcG9pbnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIF9fdTE2IG1heF9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFuY2U7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191 MTYgbWluX2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MTYgbWF4X2NsbDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MTYgbWF4X2ZhbGw7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGhkcl9vdXRwdXRfbWV0YWRhdGEgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIF9fdTMyIG1ldGFkYXRhX3R5cGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg dW5pb24gewoxNDQ3NDogICBzdHJ1Y3QgaGRyX21ldGFkYXRhX2luZm9mcmFtZSBoZG1pX21ldGFk YXRhX3R5cGUxOwoxNDQ3NDogIH07CjE0NDc0OiB9OwoxNDQ3NDogIyA3NjMgIi4vaW5jbHVkZS91 YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2NydGNfcGFnZV9mbGlw IHsKMTQ0NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGZiX2lkOwoxNDQ3NDogIF9f dTMyIGZsYWdzOwoxNDQ3NDogIF9fdTMyIHJlc2VydmVkOwoxNDQ3NDogIF9fdTY0IHVzZXJfZGF0 YTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDc5MSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgi CjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfY3J0Y19wYWdlX2ZsaXBfdGFyZ2V0IHsKMTQ0NzQ6ICBf X3UzMiBjcnRjX2lkOwoxNDQ3NDogIF9fdTMyIGZiX2lkOwoxNDQ3NDogIF9fdTMyIGZsYWdzOwox NDQ3NDogIF9fdTMyIHNlcXVlbmNlOwoxNDQ3NDogIF9fdTY0IHVzZXJfZGF0YTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iIHsKMTQ0 NzQ6ICBfX3UzMiBoZWlnaHQ7CjE0NDc0OiAgX191MzIgd2lkdGg7CjE0NDc0OiAgX191MzIgYnBw OwoxNDQ3NDogIF9fdTMyIGZsYWdzOwoxNDQ3NDogCjE0NDc0OiAgX191MzIgaGFuZGxlOwoxNDQ3 NDogIF9fdTMyIHBpdGNoOwoxNDQ3NDogIF9fdTY0IHNpemU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9tYXBfZHVtYiB7CjE0NDc0OiAKMTQ0NzQ6ICBf X3UzMiBoYW5kbGU7CjE0NDc0OiAgX191MzIgcGFkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3U2NCBvZmZzZXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZHJtX21vZGVfZGVzdHJveV9kdW1iIHsKMTQ0NzQ6ICBfX3UzMiBoYW5kbGU7 CjE0NDc0OiB9OwoxNDQ3NDogIyA4NDAgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgox NDQ3NDogc3RydWN0IGRybV9tb2RlX2F0b21pYyB7CjE0NDc0OiAgX191MzIgZmxhZ3M7CjE0NDc0 OiAgX191MzIgY291bnRfb2JqczsKMTQ0NzQ6ICBfX3U2NCBvYmpzX3B0cjsKMTQ0NzQ6ICBfX3U2 NCBjb3VudF9wcm9wc19wdHI7CjE0NDc0OiAgX191NjQgcHJvcHNfcHRyOwoxNDQ3NDogIF9fdTY0 IHByb3BfdmFsdWVzX3B0cjsKMTQ0NzQ6ICBfX3U2NCByZXNlcnZlZDsKMTQ0NzQ6ICBfX3U2NCB1 c2VyX2RhdGE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2Rp Zmllcl9ibG9iIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgdmVyc2lvbjsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgZmxhZ3M7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9f dTMyIGNvdW50X2Zvcm1hdHM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIGZvcm1hdHNf b2Zmc2V0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBjb3VudF9tb2RpZmllcnM7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIG1vZGlmaWVyc19vZmZzZXQ7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2Zvcm1hdF9t b2RpZmllciB7CjE0NDc0OiAjIDg5MyAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCjE0 NDc0OiAgX191NjQgZm9ybWF0czsKMTQ0NzQ6ICBfX3UzMiBvZmZzZXQ7CjE0NDc0OiAgX191MzIg cGFkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3U2NCBtb2RpZmllcjsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDkwOSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCjE0NDc0OiBzdHJ1Y3Qg ZHJtX21vZGVfY3JlYXRlX2Jsb2IgewoxNDQ3NDogCjE0NDc0OiAgX191NjQgZGF0YTsKMTQ0NzQ6 IAoxNDQ3NDogIF9fdTMyIGxlbmd0aDsKMTQ0NzQ6IAoxNDQ3NDogIF9fdTMyIGJsb2JfaWQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfYmxvYiB7CjE0NDc0OiAgX191MzIgYmxvYl9p ZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDkzNiAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgi CjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2xlYXNlIHsKMTQ0NzQ6IAoxNDQ3NDogIF9f dTY0IG9iamVjdF9pZHM7CjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBvYmplY3RfY291bnQ7CjE0NDc0 OiAKMTQ0NzQ6ICBfX3UzMiBmbGFnczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgbGVz c2VlX2lkOwoxNDQ3NDogCjE0NDc0OiAgX191MzIgZmQ7CjE0NDc0OiB9OwoxNDQ3NDogIyA5NTcg Ii4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgoxNDQ3NDogc3RydWN0IGRybV9tb2RlX2xp c3RfbGVzc2VlcyB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBfX3UzMiBjb3VudF9sZXNzZWVzOwoxNDQ3NDogIF9fdTMyIHBh ZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIF9fdTY0IGxlc3NlZXNf cHRyOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTgxICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUu aCIKMTQ0NzQ6IHN0cnVjdCBkcm1fbW9kZV9nZXRfbGVhc2UgewoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgY291bnRf b2JqZWN0czsKMTQ0NzQ6ICBfX3UzMiBwYWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBfX3U2NCBvYmplY3RzX3B0cjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX21vZGVfcmV2 b2tlX2xlYXNlIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgX191MzIgbGVzc2VlX2lkOwoxNDQ3 NDogfTsKMTQ0NzQ6ICMgMTAyMSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCjE0NDc0 OiBzdHJ1Y3QgZHJtX21vZGVfcmVjdCB7CjE0NDc0OiAgX19zMzIgeDE7CjE0NDc0OiAgX19zMzIg eTE7CjE0NDc0OiAgX19zMzIgeDI7CjE0NDc0OiAgX19zMzIgeTI7CjE0NDc0OiB9OwoxNDQ3NDog IyA4MTcgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIgMgoxNDQ3NDogIyA5NzQgIi4vaW5jbHVk ZS91YXBpL2RybS9kcm0uaCIKMTQ0NzQ6IHN0cnVjdCBkcm1fZXZlbnQgewoxNDQ3NDogIF9fdTMy IHR5cGU7CjE0NDc0OiAgX191MzIgbGVuZ3RoOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJtX2V2ZW50X3ZibGFuayB7CjE0 NDc0OiAgc3RydWN0IGRybV9ldmVudCBiYXNlOwoxNDQ3NDogIF9fdTY0IHVzZXJfZGF0YTsKMTQ0 NzQ6ICBfX3UzMiB0dl9zZWM7CjE0NDc0OiAgX191MzIgdHZfdXNlYzsKMTQ0NzQ6ICBfX3UzMiBz ZXF1ZW5jZTsKMTQ0NzQ6ICBfX3UzMiBjcnRjX2lkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRybV9ldmVudF9jcnRjX3NlcXVlbmNlIHsK MTQ0NzQ6ICBzdHJ1Y3QgZHJtX2V2ZW50IGJhc2U7CjE0NDc0OiAgX191NjQgdXNlcl9kYXRhOwox NDQ3NDogIF9fczY0IHRpbWVfbnM7CjE0NDc0OiAgX191NjQgc2VxdWVuY2U7CjE0NDc0OiB9Owox NDQ3NDogIyAzNiAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIgMgoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IGV4dGVybiB1bnNpZ25lZCBpbnQgX19kcm1fZGVidWc7CjE0NDc0OiAjIDc1ICIuL2lu Y2x1ZGUvZHJtL2RybV9wcmludC5oIgoxNDQ3NDogc3RydWN0IGRybV9wcmludGVyIHsKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCpwcmludGZuKShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHN0cnVjdCB2 YV9mb3JtYXQgKnZhZik7CjE0NDc0OiAgdm9pZCAoKnB1dHMpKHN0cnVjdCBkcm1fcHJpbnRlciAq cCwgY29uc3QgY2hhciAqc3RyKTsKMTQ0NzQ6ICB2b2lkICphcmc7CjE0NDc0OiAgY29uc3QgY2hh ciAqcHJlZml4OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBfX2RybV9wcmludGZuX2Nv cmVkdW1wKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKTsKMTQ0 NzQ6IHZvaWQgX19kcm1fcHV0c19jb3JlZHVtcChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGNvbnN0 IGNoYXIgKnN0cik7CjE0NDc0OiB2b2lkIF9fZHJtX3ByaW50Zm5fc2VxX2ZpbGUoc3RydWN0IGRy bV9wcmludGVyICpwLCBzdHJ1Y3QgdmFfZm9ybWF0ICp2YWYpOwoxNDQ3NDogdm9pZCBfX2RybV9w dXRzX3NlcV9maWxlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgY29uc3QgY2hhciAqc3RyKTsKMTQ0 NzQ6IHZvaWQgX19kcm1fcHJpbnRmbl9pbmZvKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0 IHZhX2Zvcm1hdCAqdmFmKTsKMTQ0NzQ6IHZvaWQgX19kcm1fcHJpbnRmbl9kZWJ1ZyhzdHJ1Y3Qg ZHJtX3ByaW50ZXIgKnAsIHN0cnVjdCB2YV9mb3JtYXQgKnZhZik7CjE0NDc0OiB2b2lkIF9fZHJt X3ByaW50Zm5fZXJyKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0IHZhX2Zvcm1hdCAqdmFm KTsKMTQ0NzQ6IAoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMp KSkKMTQ0NzQ6IHZvaWQgZHJtX3ByaW50ZihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGNvbnN0IGNo YXIgKmYsIC4uLik7CjE0NDc0OiB2b2lkIGRybV9wdXRzKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwg Y29uc3QgY2hhciAqc3RyKTsKMTQ0NzQ6IHZvaWQgZHJtX3ByaW50X3JlZ3NldDMyKHN0cnVjdCBk cm1fcHJpbnRlciAqcCwgc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIgKnJlZ3NldCk7CjE0NDc0OiB2 b2lkIGRybV9wcmludF9iaXRzKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgdW5zaWduZWQgbG9uZyB2 YWx1ZSwKMTQ0NzQ6ICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCBiaXRzW10sIHVuc2lnbmVkIGlu dCBuYml0cyk7CjE0NDc0OiAKMTQ0NzQ6IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRm LCAyLCAwKSkpCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkCjE0NDc0OiBkcm1fdnByaW50ZihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGNv bnN0IGNoYXIgKmZtdCwgdmFfbGlzdCAqdmEpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IHZhX2Zv cm1hdCB2YWYgPSB7IC5mbXQgPSBmbXQsIC52YSA9IHZhIH07CjE0NDc0OiAKMTQ0NzQ6ICBwLT5w cmludGZuKHAsICZ2YWYpOwoxNDQ3NDogfQoxNDQ3NDogIyAxMjggIi4vaW5jbHVkZS9kcm0vZHJt X3ByaW50LmgiCjE0NDc0OiBzdHJ1Y3QgZHJtX3ByaW50X2l0ZXJhdG9yIHsKMTQ0NzQ6ICB2b2lk ICpkYXRhOwoxNDQ3NDogIHNzaXplX3Qgc3RhcnQ7CjE0NDc0OiAgc3NpemVfdCByZW1haW47CjE0 NDc0OiAKMTQ0NzQ6ICBzc2l6ZV90IG9mZnNldDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDE3MiAiLi9p bmNsdWRlL2RybS9kcm1fcHJpbnQuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkcm1fcHJpbnRlcgoxNDQ3NDog ZHJtX2NvcmVkdW1wX3ByaW50ZXIoc3RydWN0IGRybV9wcmludF9pdGVyYXRvciAqaXRlcikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IHsKMTQ0NzQ6ICAgLnByaW50Zm4g PSBfX2RybV9wcmludGZuX2NvcmVkdW1wLAoxNDQ3NDogICAucHV0cyA9IF9fZHJtX3B1dHNfY29y ZWR1bXAsCjE0NDc0OiAgIC5hcmcgPSBpdGVyLAoxNDQ3NDogIH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIGl0ZXItPm9mZnNldCA9IDA7CjE0NDc0OiAKMTQ0NzQ6ICByZXR1cm4gcDsKMTQ0NzQ6 IH0KMTQ0NzQ6ICMgMTk0ICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIgoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGRybV9wcmludGVyIGRybV9zZXFfZmlsZV9wcmludGVyKHN0cnVjdCBzZXFfZmlsZSAqZikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IHsKMTQ0NzQ6ICAgLnByaW50Zm4g PSBfX2RybV9wcmludGZuX3NlcV9maWxlLAoxNDQ3NDogICAucHV0cyA9IF9fZHJtX3B1dHNfc2Vx X2ZpbGUsCjE0NDc0OiAgIC5hcmcgPSBmLAoxNDQ3NDogIH07CjE0NDc0OiAgcmV0dXJuIHA7CjE0 NDc0OiB9CjE0NDc0OiAjIDIxMSAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBkcm1fcHJpbnRlciBkcm1faW5mb19wcmludGVyKHN0cnVjdCBkZXZpY2UgKmRldikKMTQ0 NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IHsKMTQ0NzQ6ICAgLnByaW50Zm4g PSBfX2RybV9wcmludGZuX2luZm8sCjE0NDc0OiAgIC5hcmcgPSBkZXYsCjE0NDc0OiAgfTsKMTQ0 NzQ6ICByZXR1cm4gcDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMjI3ICIuL2luY2x1ZGUvZHJtL2RybV9w cmludC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRybV9wcmludGVyIGRybV9kZWJ1Z19wcmludGVyKGNvbnN0 IGNoYXIgKnByZWZpeCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IHsK MTQ0NzQ6ICAgLnByaW50Zm4gPSBfX2RybV9wcmludGZuX2RlYnVnLAoxNDQ3NDogICAucHJlZml4 ID0gcHJlZml4CjE0NDc0OiAgfTsKMTQ0NzQ6ICByZXR1cm4gcDsKMTQ0NzQ6IH0KMTQ0NzQ6ICMg MjQzICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRybV9wcmludGVy IGRybV9lcnJfcHJpbnRlcihjb25zdCBjaGFyICpwcmVmaXgpCjE0NDc0OiB7CjE0NDc0OiAgc3Ry dWN0IGRybV9wcmludGVyIHAgPSB7CjE0NDc0OiAgIC5wcmludGZuID0gX19kcm1fcHJpbnRmbl9l cnIsCjE0NDc0OiAgIC5wcmVmaXggPSBwcmVmaXgKMTQ0NzQ6ICB9OwoxNDQ3NDogIHJldHVybiBw OwoxNDQ3NDogfQoxNDQ3NDogIyAyNzcgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCjE0NDc0 OiBlbnVtIGRybV9kZWJ1Z19jYXRlZ29yeSB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBEUk1fVVRfQ09SRSA9IDB4MDEsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICBEUk1fVVRfRFJJVkVSID0gMHgwMiwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBEUk1fVVRfS01TID0gMHgwNCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBEUk1fVVRfUFJJTUUgPSAweDA4LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IERSTV9VVF9BVE9NSUMgPSAweDEwLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERS TV9VVF9WQkwgPSAweDIwLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERSTV9VVF9T VEFURSA9IDB4NDAsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRFJNX1VUX0xFQVNF ID0gMHg4MCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBEUk1fVVRfRFAgPSAweDEw MCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZHJtX2RlYnVnX2VuYWJsZWQoZW51bSBk cm1fZGVidWdfY2F0ZWdvcnkgY2F0ZWdvcnkpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIF9fYnVp bHRpbl9leHBlY3QoISEoX19kcm1fZGVidWcgJiBjYXRlZ29yeSksIDApOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKQoxNDQ3NDogdm9pZCBk cm1fZGV2X3ByaW50ayhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmxldmVs LAoxNDQ3NDogICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwoxNDQ3NDogX19hdHRyaWJ1 dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKMTQ0NzQ6IHZvaWQgZHJtX2Rldl9kYmco Y29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGRybV9kZWJ1Z19jYXRlZ29yeSBjYXRlZ29y eSwKMTQ0NzQ6ICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKMTQ0NzQ6ICMgNDg5ICIuL2lu Y2x1ZGUvZHJtL2RybV9wcmludC5oIgoxNDQ3NDogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhw cmludGYsIDIsIDMpKSkKMTQ0NzQ6IHZvaWQgX19kcm1fZGJnKGVudW0gZHJtX2RlYnVnX2NhdGVn b3J5IGNhdGVnb3J5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CjE0NDc0OiBfX2F0dHJpYnV0 ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKQoxNDQ3NDogdm9pZCBfX2RybV9lcnIoY29u c3QgY2hhciAqZm9ybWF0LCAuLi4pOwoxNDQ3NDogIyAzOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvY2dzX2NvbW1vbi5oIiAxCjE0 NDc0OiAjIDI3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvY2dzX2Nv bW1vbi5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1 ZGUvYW1kX3NoYXJlZC5oIiAxCjE0NDc0OiAjIDI2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2luY2x1ZGUvYW1kX3NoYXJlZC5oIgoxNDQ3NDogIyAxICIuL2luY2x1ZGUvZHJtL2Ft ZF9hc2ljX3R5cGUuaCIgMQoxNDQ3NDogIyAyOCAiLi9pbmNsdWRlL2RybS9hbWRfYXNpY190eXBl LmgiCjE0NDc0OiBlbnVtIGFtZF9hc2ljX3R5cGUgewoxNDQ3NDogIENISVBfVEFISVRJID0gMCwK MTQ0NzQ6ICBDSElQX1BJVENBSVJOLAoxNDQ3NDogIENISVBfVkVSREUsCjE0NDc0OiAgQ0hJUF9P TEFORCwKMTQ0NzQ6ICBDSElQX0hBSU5BTiwKMTQ0NzQ6ICBDSElQX0JPTkFJUkUsCjE0NDc0OiAg Q0hJUF9LQVZFUkksCjE0NDc0OiAgQ0hJUF9LQUJJTkksCjE0NDc0OiAgQ0hJUF9IQVdBSUksCjE0 NDc0OiAgQ0hJUF9NVUxMSU5TLAoxNDQ3NDogIENISVBfVE9QQVosCjE0NDc0OiAgQ0hJUF9UT05H QSwKMTQ0NzQ6ICBDSElQX0ZJSkksCjE0NDc0OiAgQ0hJUF9DQVJSSVpPLAoxNDQ3NDogIENISVBf U1RPTkVZLAoxNDQ3NDogIENISVBfUE9MQVJJUzEwLAoxNDQ3NDogIENISVBfUE9MQVJJUzExLAox NDQ3NDogIENISVBfUE9MQVJJUzEyLAoxNDQ3NDogIENISVBfVkVHQU0sCjE0NDc0OiAgQ0hJUF9W RUdBMTAsCjE0NDc0OiAgQ0hJUF9WRUdBMTIsCjE0NDc0OiAgQ0hJUF9WRUdBMjAsCjE0NDc0OiAg Q0hJUF9SQVZFTiwKMTQ0NzQ6ICBDSElQX0FSQ1RVUlVTLAoxNDQ3NDogIENISVBfUkVOT0lSLAox NDQ3NDogIENISVBfTkFWSTEwLAoxNDQ3NDogIENISVBfTkFWSTE0LAoxNDQ3NDogIENISVBfTkFW STEyLAoxNDQ3NDogIENISVBfTEFTVCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBj b25zdCBjaGFyICphbWRncHVfYXNpY19uYW1lW107CjE0NDc0OiAjIDI3ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYW1kX3NoYXJlZC5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYW1k X2NoaXBfZmxhZ3MgewoxNDQ3NDogIEFNRF9BU0lDX01BU0sgPSAweDAwMDBmZmZmVUwsCjE0NDc0 OiAgQU1EX0ZMQUdTX01BU0sgPSAweGZmZmYwMDAwVUwsCjE0NDc0OiAgQU1EX0lTX01PQklMSVRZ ID0gMHgwMDAxMDAwMFVMLAoxNDQ3NDogIEFNRF9JU19BUFUgPSAweDAwMDIwMDAwVUwsCjE0NDc0 OiAgQU1EX0lTX1BYID0gMHgwMDA0MDAwMFVMLAoxNDQ3NDogIEFNRF9FWFBfSFdfU1VQUE9SVCA9 IDB4MDAwODAwMDBVTCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYW1kX2lwX2Jsb2Nr X3R5cGUgewoxNDQ3NDogIEFNRF9JUF9CTE9DS19UWVBFX0NPTU1PTiwKMTQ0NzQ6ICBBTURfSVBf QkxPQ0tfVFlQRV9HTUMsCjE0NDc0OiAgQU1EX0lQX0JMT0NLX1RZUEVfSUgsCjE0NDc0OiAgQU1E X0lQX0JMT0NLX1RZUEVfU01DLAoxNDQ3NDogIEFNRF9JUF9CTE9DS19UWVBFX1BTUCwKMTQ0NzQ6 ICBBTURfSVBfQkxPQ0tfVFlQRV9EQ0UsCjE0NDc0OiAgQU1EX0lQX0JMT0NLX1RZUEVfR0ZYLAox NDQ3NDogIEFNRF9JUF9CTE9DS19UWVBFX1NETUEsCjE0NDc0OiAgQU1EX0lQX0JMT0NLX1RZUEVf VVZELAoxNDQ3NDogIEFNRF9JUF9CTE9DS19UWVBFX1ZDRSwKMTQ0NzQ6ICBBTURfSVBfQkxPQ0tf VFlQRV9BQ1AsCjE0NDc0OiAgQU1EX0lQX0JMT0NLX1RZUEVfVkNOLAoxNDQ3NDogIEFNRF9JUF9C TE9DS19UWVBFX01FUywKMTQ0NzQ6ICBBTURfSVBfQkxPQ0tfVFlQRV9KUEVHCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBlbnVtIGFtZF9jbG9ja2dhdGluZ19zdGF0ZSB7CjE0NDc0OiAgQU1EX0NH X1NUQVRFX0dBVEUgPSAwLAoxNDQ3NDogIEFNRF9DR19TVEFURV9VTkdBVEUsCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYW1kX3Bvd2VyZ2F0aW5nX3N0YXRlIHsKMTQ0NzQ6 ICBBTURfUEdfU1RBVEVfR0FURSA9IDAsCjE0NDc0OiAgQU1EX1BHX1NUQVRFX1VOR0FURSwKMTQ0 NzQ6IH07CjE0NDc0OiAjIDEyNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNs dWRlL2FtZF9zaGFyZWQuaCIKMTQ0NzQ6IGVudW0gUFBfRkVBVFVSRV9NQVNLIHsKMTQ0NzQ6ICBQ UF9TQ0xLX0RQTV9NQVNLID0gMHgxLAoxNDQ3NDogIFBQX01DTEtfRFBNX01BU0sgPSAweDIsCjE0 NDc0OiAgUFBfUENJRV9EUE1fTUFTSyA9IDB4NCwKMTQ0NzQ6ICBQUF9TQ0xLX0RFRVBfU0xFRVBf TUFTSyA9IDB4OCwKMTQ0NzQ6ICBQUF9QT1dFUl9DT05UQUlOTUVOVF9NQVNLID0gMHgxMCwKMTQ0 NzQ6ICBQUF9VVkRfSEFORFNIQUtFX01BU0sgPSAweDIwLAoxNDQ3NDogIFBQX1NNQ19WT0xUQUdF X0NPTlRST0xfTUFTSyA9IDB4NDAsCjE0NDc0OiAgUFBfVkJJX1RJTUVfU1VQUE9SVF9NQVNLID0g MHg4MCwKMTQ0NzQ6ICBQUF9VTFZfTUFTSyA9IDB4MTAwLAoxNDQ3NDogIFBQX0VOQUJMRV9HRlhf Q0dfVEhSVV9TTVUgPSAweDIwMCwKMTQ0NzQ6ICBQUF9DTE9DS19TVFJFVENIX01BU0sgPSAweDQw MCwKMTQ0NzQ6ICBQUF9PRF9GVVpaWV9GQU5fQ09OVFJPTF9NQVNLID0gMHg4MDAsCjE0NDc0OiAg UFBfU09DQ0xLX0RQTV9NQVNLID0gMHgxMDAwLAoxNDQ3NDogIFBQX0RDRUZDTEtfRFBNX01BU0sg PSAweDIwMDAsCjE0NDc0OiAgUFBfT1ZFUkRSSVZFX01BU0sgPSAweDQwMDAsCjE0NDc0OiAgUFBf R0ZYT0ZGX01BU0sgPSAweDgwMDAsCjE0NDc0OiAgUFBfQUNHX01BU0sgPSAweDEwMDAwLAoxNDQ3 NDogIFBQX1NUVVRURVJfTU9ERSA9IDB4MjAwMDAsCjE0NDc0OiAgUFBfQVZGU19NQVNLID0gMHg0 MDAwMCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gRENfRkVBVFVSRV9NQVNLIHsKMTQ0 NzQ6ICBEQ19GQkNfTUFTSyA9IDB4MSwKMTQ0NzQ6ICBEQ19NVUxUSV9NT05fUFBfTUNMS19TV0lU Q0hfTUFTSyA9IDB4MiwKMTQ0NzQ6ICBEQ19ESVNBQkxFX0ZSQUNUSU9OQUxfUFdNX01BU0sgPSAw eDQsCjE0NDc0OiAgRENfUFNSX01BU0sgPSAweDgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBl bnVtIGFtZF9kcG1fZm9yY2VkX2xldmVsOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGFtZF9pcF9mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6ICBjaGFyICpuYW1lOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKmVh cmx5X2luaXQpKHZvaWQgKmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpsYXRlX2luaXQp KHZvaWQgKmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpzd19pbml0KSh2b2lkICpoYW5k bGUpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqc3dfZmluaSkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6 IAoxNDQ3NDogIGludCAoKmh3X2luaXQpKHZvaWQgKmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBp bnQgKCpod19maW5pKSh2b2lkICpoYW5kbGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmxhdGVf ZmluaSkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnN1c3BlbmQpKHZvaWQg KmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCpyZXN1bWUpKHZvaWQgKmhhbmRsZSk7CjE0 NDc0OiAKMTQ0NzQ6ICBib29sICgqaXNfaWRsZSkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3 NDogIGludCAoKndhaXRfZm9yX2lkbGUpKHZvaWQgKmhhbmRsZSk7CjE0NDc0OiAKMTQ0NzQ6ICBi b29sICgqY2hlY2tfc29mdF9yZXNldCkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3NDogIGlu dCAoKnByZV9zb2Z0X3Jlc2V0KSh2b2lkICpoYW5kbGUpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgq c29mdF9yZXNldCkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnBvc3Rfc29m dF9yZXNldCkodm9pZCAqaGFuZGxlKTsKMTQ0NzQ6IAoxNDQ3NDogIGludCAoKnNldF9jbG9ja2dh dGluZ19zdGF0ZSkodm9pZCAqaGFuZGxlLAoxNDQ3NDogICAgICAgICAgZW51bSBhbWRfY2xvY2tn YXRpbmdfc3RhdGUgc3RhdGUpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqc2V0X3Bvd2VyZ2F0aW5n X3N0YXRlKSh2b2lkICpoYW5kbGUsCjE0NDc0OiAgICAgICAgICBlbnVtIGFtZF9wb3dlcmdhdGlu Z19zdGF0ZSBzdGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZ2V0X2Nsb2NrZ2F0aW5nX3N0 YXRlKSh2b2lkICpoYW5kbGUsIHUzMiAqZmxhZ3MpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqZW5h YmxlX3VtZF9wc3RhdGUpKHZvaWQgKmhhbmRsZSwgZW51bSBhbWRfZHBtX2ZvcmNlZF9sZXZlbCAq bGV2ZWwpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vaW5jbHVkZS9jZ3NfY29tbW9uLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNnc19k ZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gY2dzX2lu ZF9yZWcgewoxNDQ3NDogIENHU19JTkRfUkVHX19NTUlPLAoxNDQ3NDogIENHU19JTkRfUkVHX19Q Q0lFLAoxNDQ3NDogIENHU19JTkRfUkVHX19TTUMsCjE0NDc0OiAgQ0dTX0lORF9SRUdfX1VWRF9D VFgsCjE0NDc0OiAgQ0dTX0lORF9SRUdfX0RJRFQsCjE0NDc0OiAgQ0dTX0lORF9SRUdfR0NfQ0FD LAoxNDQ3NDogIENHU19JTkRfUkVHX1NFX0NBQywKMTQ0NzQ6ICBDR1NfSU5EX1JFR19fQVVESU9f RU5EUFQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVu dW0gY2dzX3Vjb2RlX2lkIHsKMTQ0NzQ6ICBDR1NfVUNPREVfSURfU01VID0gMCwKMTQ0NzQ6ICBD R1NfVUNPREVfSURfU01VX1NLLAoxNDQ3NDogIENHU19VQ09ERV9JRF9TRE1BMCwKMTQ0NzQ6ICBD R1NfVUNPREVfSURfU0RNQTEsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX0NQX0NFLAoxNDQ3NDogIENH U19VQ09ERV9JRF9DUF9QRlAsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX0NQX01FLAoxNDQ3NDogIENH U19VQ09ERV9JRF9DUF9NRUMsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX0NQX01FQ19KVDEsCjE0NDc0 OiAgQ0dTX1VDT0RFX0lEX0NQX01FQ19KVDIsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX0dNQ09OX1JF TkcsCjE0NDc0OiAgQ0dTX1VDT0RFX0lEX1JMQ19HLAoxNDQ3NDogIENHU19VQ09ERV9JRF9TVE9S QUdFLAoxNDQ3NDogIENHU19VQ09ERV9JRF9NQVhJTVVNLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNnc19maXJtd2FyZV9pbmZvIHsKMTQ0 NzQ6ICB1aW50MTZfdCB2ZXJzaW9uOwoxNDQ3NDogIHVpbnQxNl90IGZ3X3ZlcnNpb247CjE0NDc0 OiAgdWludDE2X3QgZmVhdHVyZV92ZXJzaW9uOwoxNDQ3NDogIHVpbnQzMl90IGltYWdlX3NpemU7 CjE0NDc0OiAgdWludDY0X3QgbWNfYWRkcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMy X3QgdWNvZGVfc3RhcnRfYWRkcmVzczsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKmtwdHI7CjE0NDc0 OiAgYm9vbCBpc19raWNrZXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHVuc2ln bmVkIGxvbmcgY2dzX2hhbmRsZV90OwoxNDQ3NDogIyA5MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9pbmNsdWRlL2Nnc19jb21tb24uaCIKMTQ0NzQ6IHR5cGVkZWYgdWludDMyX3Qg KCpjZ3NfcmVhZF9yZWdpc3Rlcl90KShzdHJ1Y3QgY2dzX2RldmljZSAqY2dzX2RldmljZSwgdW5z aWduZWQgb2Zmc2V0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB2b2lkICgqY2dzX3dyaXRlX3JlZ2lzdGVyX3Qp KHN0cnVjdCBjZ3NfZGV2aWNlICpjZ3NfZGV2aWNlLCB1bnNpZ25lZCBvZmZzZXQsCjE0NDc0OiAg ICAgICAgICB1aW50MzJfdCB2YWx1ZSk7CjE0NDc0OiAjIDEwOSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9pbmNsdWRlL2Nnc19jb21tb24uaCIKMTQ0NzQ6IHR5cGVkZWYgdWludDMy X3QgKCpjZ3NfcmVhZF9pbmRfcmVnaXN0ZXJfdCkoc3RydWN0IGNnc19kZXZpY2UgKmNnc19kZXZp Y2UsIGVudW0gY2dzX2luZF9yZWcgc3BhY2UsCjE0NDc0OiAgICAgICAgICB1bnNpZ25lZCBpbmRl eCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHR5cGVkZWYgdm9pZCAoKmNnc193cml0ZV9pbmRfcmVnaXN0ZXJfdCkoc3RydWN0 IGNnc19kZXZpY2UgKmNnc19kZXZpY2UsIGVudW0gY2dzX2luZF9yZWcgc3BhY2UsCjE0NDc0OiAg ICAgICB1bnNpZ25lZCBpbmRleCwgdWludDMyX3QgdmFsdWUpOwoxNDQ3NDogIyAxMzcgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9jZ3NfY29tbW9uLmgiCjE0NDc0OiB0 eXBlZGVmIGludCAoKmNnc19nZXRfZmlybXdhcmVfaW5mbykoc3RydWN0IGNnc19kZXZpY2UgKmNn c19kZXZpY2UsCjE0NDc0OiAgICAgICAgICBlbnVtIGNnc191Y29kZV9pZCB0eXBlLAoxNDQ3NDog ICAgICAgICAgc3RydWN0IGNnc19maXJtd2FyZV9pbmZvICppbmZvKTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGNnc19vcHMgewoxNDQ3NDogCjE0NDc0OiAgY2dzX3JlYWRfcmVnaXN0ZXJfdCByZWFk X3JlZ2lzdGVyOwoxNDQ3NDogIGNnc193cml0ZV9yZWdpc3Rlcl90IHdyaXRlX3JlZ2lzdGVyOwox NDQ3NDogIGNnc19yZWFkX2luZF9yZWdpc3Rlcl90IHJlYWRfaW5kX3JlZ2lzdGVyOwoxNDQ3NDog IGNnc193cml0ZV9pbmRfcmVnaXN0ZXJfdCB3cml0ZV9pbmRfcmVnaXN0ZXI7CjE0NDc0OiAKMTQ0 NzQ6ICBjZ3NfZ2V0X2Zpcm13YXJlX2luZm8gZ2V0X2Zpcm13YXJlX2luZm87CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY2dzX29zX29wczsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNn c19kZXZpY2UKMTQ0NzQ6IHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgY2dzX29wcyAqb3BzOwoxNDQ3 NDogCjE0NDc0OiB9OwoxNDQ3NDogIyA0MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgNTUgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9vc190eXBlcy5oIgoxNDQ3NDogIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2ZwdS9hcGkuaCIgMQoxNDQ3NDogIyAyMiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9mcHUvYXBpLmgiCjE0NDc0OiBleHRlcm4gdm9pZCBrZXJuZWxfZnB1X2JlZ2luKHZv aWQpOwoxNDQ3NDogZXh0ZXJuIHZvaWQga2VybmVsX2ZwdV9lbmQodm9pZCk7CjE0NDc0OiBleHRl cm4gYm9vbCBpcnFfZnB1X3VzYWJsZSh2b2lkKTsKMTQ0NzQ6IGV4dGVybiB2b2lkIGZwcmVnc19t YXJrX2FjdGl2YXRlKHZvaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZwcmVnc19sb2NrKHZvaWQpCjE0NDc0OiB7 CjE0NDc0OiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKMTQ0NzQ6ICBs b2NhbF9iaF9kaXNhYmxlKCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZnByZWdzX3Vu bG9jayh2b2lkKQoxNDQ3NDogewoxNDQ3NDogIGxvY2FsX2JoX2VuYWJsZSgpOwoxNDQ3NDogIF9f YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIHZvaWQgZnByZWdzX2Fzc2VydF9zdGF0ZV9jb25zaXN0ZW50KHZv aWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gdm9pZCBzd2l0Y2hfZnB1X3JldHVybih2b2lkKTsKMTQ0NzQ6ICMg NjMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L2FwaS5oIgoxNDQ3NDogZXh0ZXJuIGludCBj cHVfaGFzX3hmZWF0dXJlcyh1NjQgeGZlYXR1cmVzX21hc2ssIGNvbnN0IGNoYXIgKipmZWF0dXJl X25hbWUpOwoxNDQ3NDogIyA1NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL29zX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIgMQoxNDQ3 NDogIyA1NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIgoxNDQ3NDogc3RydWN0IGZpeGVkMzFfMzIgewoxNDQ3NDogIGxvbmcgbG9u ZyB2YWx1ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBk Y19maXhwdF96ZXJvID0geyAwIH07CjE0NDc0OiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpeGVkMzFf MzIgZGNfZml4cHRfZXBzaWxvbiA9IHsgMUxMIH07CjE0NDc0OiBzdGF0aWMgY29uc3Qgc3RydWN0 IGZpeGVkMzFfMzIgZGNfZml4cHRfaGFsZiA9IHsgMHg4MDAwMDAwMExMIH07CjE0NDc0OiBzdGF0 aWMgY29uc3Qgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfb25lID0geyAweDEwMDAwMDAwMExM IH07CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhw dF9waSA9IHsgMTM0OTMwMzc3MDVMTCB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBmaXhl ZDMxXzMyIGRjX2ZpeHB0X3R3b19waSA9IHsgMjY5ODYwNzU0MDlMTCB9OwoxNDQ3NDogc3RhdGlj IGNvbnN0IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X2UgPSB7IDExNjc0OTMxNTU1TEwgfTsK MTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9sbjIgPSB7IDI5 NzcwNDQ0NzFMTCB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2Zp eHB0X2xuMl9kaXZfMiA9IHsgMTQ4ODUyMjIzNkxMIH07CjE0NDc0OiAjIDg3ICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCjE0NDc0 OiBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9mcm9tX2ZyYWN0aW9uKGxvbmcgbG9uZyBudW1l cmF0b3IsIGxvbmcgbG9uZyBkZW5vbWluYXRvcik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfZnJvbV9pbnQo aW50IGFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiByZXM7CjE0NDc0OiAK MTQ0NzQ6ICByZXMudmFsdWUgPSAobG9uZyBsb25nKSBhcmcgPDwgMzI7CjE0NDc0OiAKMTQ0NzQ6 ICByZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogIyAxMTEgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBm aXhlZDMxXzMyIGRjX2ZpeHB0X25lZyhzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpCjE0NDc0OiB7CjE0 NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcmVzOwoxNDQ3NDogCjE0NDc0OiAgcmVzLnZhbHVlID0g LWFyZy52YWx1ZTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiByZXM7CjE0NDc0OiB9CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIg ZGNfZml4cHRfYWJzKHN0cnVjdCBmaXhlZDMxXzMyIGFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAo YXJnLnZhbHVlIDwgMCkKMTQ0NzQ6ICAgcmV0dXJuIGRjX2ZpeHB0X25lZyhhcmcpOwoxNDQ3NDog IGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIGFyZzsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMTQxICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGRjX2ZpeHB0X2x0KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhl ZDMxXzMyIGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFyZzEudmFsdWUgPCBhcmcyLnZh bHVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgZGNfZml4cHRfbGUoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZpeGVk MzFfMzIgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52YWx1ZSA8PSBhcmcyLnZh bHVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgZGNfZml4cHRfZXEoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZpeGVk MzFfMzIgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52YWx1ZSA9PSBhcmcyLnZh bHVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X21pbihzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcx LCBzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcyKQoxNDQ3NDogewoxNDQ3NDogIGlmIChhcmcxLnZhbHVl IDw9IGFyZzIudmFsdWUpCjE0NDc0OiAgIHJldHVybiBhcmcxOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6 ICAgcmV0dXJuIGFyZzI7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfbWF4KHN0cnVjdCBmaXhl ZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAgaWYg KGFyZzEudmFsdWUgPD0gYXJnMi52YWx1ZSkKMTQ0NzQ6ICAgcmV0dXJuIGFyZzI7CjE0NDc0OiAg ZWxzZQoxNDQ3NDogICByZXR1cm4gYXJnMTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFf MzIgZGNfZml4cHRfY2xhbXAoCjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgYXJnLAoxNDQ3NDog IHN0cnVjdCBmaXhlZDMxXzMyIG1pbl92YWx1ZSwKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBt YXhfdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGRjX2ZpeHB0X2xlKGFyZywgbWluX3ZhbHVl KSkKMTQ0NzQ6ICAgcmV0dXJuIG1pbl92YWx1ZTsKMTQ0NzQ6ICBlbHNlIGlmIChkY19maXhwdF9s ZShtYXhfdmFsdWUsIGFyZykpCjE0NDc0OiAgIHJldHVybiBtYXhfdmFsdWU7CjE0NDc0OiAgZWxz ZQoxNDQ3NDogICByZXR1cm4gYXJnOwoxNDQ3NDogfQoxNDQ3NDogIyAyMTYgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X3NobChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcsIHVu c2lnbmVkIGNoYXIgc2hpZnQpCjE0NDc0OiB7CjE0NDc0OiAgKHsgaW50IF9fcmV0X3dhcm5fb24g PSAhISghKCgoYXJnLnZhbHVlID49IDApICYmIChhcmcudmFsdWUgPD0gKChsb25nIGxvbmcpKH4w VUxMID4+IDEpKSA+PiBzaGlmdCkpIHx8ICgoYXJnLnZhbHVlIDwgMCkgJiYgKGFyZy52YWx1ZSA+ PSB+KCgobG9uZyBsb25nKSh+MFVMTCA+PiAxKSkgPj4gc2hpZnQpKSkpKTsgaWYgKF9fYnVpbHRp bl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZv bGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVn X3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50 cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29y ZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNl Y3Rpb24iIDogOiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2lu Y2x1ZGUvZml4ZWQzMV8zMi5oIiksICJpIiAoMjE4KSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4 KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNt IHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0 IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzOCkpOyB9 KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9 KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwoxNDQ3NDogCjE0NDc0OiAgYXJnLnZhbHVlID0gYXJnLnZhbHVlIDw8IHNo aWZ0OwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGFyZzsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhw dF9zaHIoc3RydWN0IGZpeGVkMzFfMzIgYXJnLCB1bnNpZ25lZCBjaGFyIHNoaWZ0KQoxNDQ3NDog ewoxNDQ3NDogIGJvb2wgbmVnYXRpdmUgPSBhcmcudmFsdWUgPCAwOwoxNDQ3NDogCjE0NDc0OiAg aWYgKG5lZ2F0aXZlKQoxNDQ3NDogICBhcmcudmFsdWUgPSAtYXJnLnZhbHVlOwoxNDQ3NDogIGFy Zy52YWx1ZSA9IGFyZy52YWx1ZSA+PiBzaGlmdDsKMTQ0NzQ6ICBpZiAobmVnYXRpdmUpCjE0NDc0 OiAgIGFyZy52YWx1ZSA9IC1hcmcudmFsdWU7CjE0NDc0OiAgcmV0dXJuIGFyZzsKMTQ0NzQ6IH0K MTQ0NzQ6ICMgMjUxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5j bHVkZS9maXhlZDMxXzMyLmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9hZGQo c3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZpeGVkMzFfMzIgYXJnMikKMTQ0NzQ6IHsK MTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiByZXM7CjE0NDc0OiAKMTQ0NzQ6ICAoeyBpbnQgX19y ZXRfd2Fybl9vbiA9ICEhKCEoKChhcmcxLnZhbHVlID49IDApICYmICgoKGxvbmcgbG9uZykofjBV TEwgPj4gMSkpIC0gYXJnMS52YWx1ZSA+PSBhcmcyLnZhbHVlKSkgfHwgKChhcmcxLnZhbHVlIDwg MCkgJiYgKCgtKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSAtIDEpIC0gYXJnMS52YWx1ZSA8PSBh cmcyLnZhbHVlKSkpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDAp KSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgw YiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25n ICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAi ICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQj IGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xu IiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIiksICJpIiAoMjU1 KSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2Vu dHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNl Y3Rpb25cblx0IiA6IDogImkiICgzOSkpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBl Y3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KQoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoxNDQ3NDogCjE0NDc0 OiAgcmVzLnZhbHVlID0gYXJnMS52YWx1ZSArIGFyZzIudmFsdWU7CjE0NDc0OiAKMTQ0NzQ6ICBy ZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X2FkZF9pbnQoc3RydWN0IGZpeGVk MzFfMzIgYXJnMSwgaW50IGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X2Fk ZChhcmcxLCBkY19maXhwdF9mcm9tX2ludChhcmcyKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4 cHRfc3ViKHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIpCjE0 NDc0OiB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcmVzOwoxNDQ3NDogCjE0NDc0OiAgKHsg aW50IF9fcmV0X3dhcm5fb24gPSAhISghKCgoYXJnMi52YWx1ZSA+PSAwKSAmJiAoKC0oKGxvbmcg bG9uZykofjBVTEwgPj4gMSkpIC0gMSkgKyBhcmcyLnZhbHVlIDw9IGFyZzEudmFsdWUpKSB8fCAo KGFyZzIudmFsdWUgPCAwKSAmJiAoKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSArIGFyZzIudmFs dWUgPj0gYXJnMS52YWx1ZSkpKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5f b24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4 MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQi ICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAi LmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVj MSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6 ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIpLCAi aSIgKDI4MCksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0 IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIu cHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIg Ii5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDApKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0 aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSkKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKMTQ0NzQ6 IAoxNDQ3NDogIHJlcy52YWx1ZSA9IGFyZzEudmFsdWUgLSBhcmcyLnZhbHVlOwoxNDQ3NDogCjE0 NDc0OiAgcmV0dXJuIHJlczsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9zdWJfaW50KHN0cnVj dCBmaXhlZDMxXzMyIGFyZzEsIGludCBhcmcyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBkY19m aXhwdF9zdWIoYXJnMSwgZGNfZml4cHRfZnJvbV9pbnQoYXJnMikpOwoxNDQ3NDogfQoxNDQ3NDog IyAzMDcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2Zp eGVkMzFfMzIuaCIKMTQ0NzQ6IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X211bChzdHJ1Y3Qg Zml4ZWQzMV8zMiBhcmcxLCBzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcyKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBmaXhlZDMxXzMy IGRjX2ZpeHB0X211bF9pbnQoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgaW50IGFyZzIpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X211bChhcmcxLCBkY19maXhwdF9mcm9tX2ludChh cmcyKSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfc3FyKHN0cnVjdCBmaXhlZDMxXzMyIGFy Zyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGZpeGVkMzFfMzIgZGNfZml4cHRfZGl2X2ludChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcxLCBsb25n IGxvbmcgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gZGNfZml4cHRfZnJvbV9mcmFjdGlv bihhcmcxLnZhbHVlLCBkY19maXhwdF9mcm9tX2ludChhcmcyKS52YWx1ZSk7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVk MzFfMzIgZGNfZml4cHRfZGl2KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMx XzMyIGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X2Zyb21fZnJhY3Rpb24o YXJnMS52YWx1ZSwgYXJnMi52YWx1ZSk7CjE0NDc0OiB9CjE0NDc0OiAjIDM1NSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgoxNDQ3 NDogc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfcmVjaXAoc3RydWN0IGZpeGVkMzFfMzIgYXJn KTsKMTQ0NzQ6ICMgMzcwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv aW5jbHVkZS9maXhlZDMxXzMyLmgiCjE0NDc0OiBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9z aW5jKHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAjIDM4MCAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgoxNDQ3NDogc3Ry dWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfc2luKHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0 OiAjIDM5MiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIgoxNDQ3NDogc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfY29zKHN0cnVj dCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAjIDQwNiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgoxNDQ3NDogc3RydWN0IGZpeGVk MzFfMzIgZGNfZml4cHRfZXhwKHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAjIDQxOCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8z Mi5oIgoxNDQ3NDogc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfbG9nKHN0cnVjdCBmaXhlZDMx XzMyIGFyZyk7CjE0NDc0OiAjIDQzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNf Zml4cHRfcG93KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIp CjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X2V4cCgKMTQ0NzQ6ICAgZGNfZml4cHRf bXVsKAoxNDQ3NDogICAgZGNfZml4cHRfbG9nKGFyZzEpLAoxNDQ3NDogICAgYXJnMikpOwoxNDQ3 NDogfQoxNDQ3NDogIyA0NDkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkY19maXhwdF9mbG9vcihzdHJ1Y3Qg Zml4ZWQzMV8zMiBhcmcpCjE0NDc0OiB7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIGFyZ192 YWx1ZSA9IGFyZy52YWx1ZSA+IDAgPyBhcmcudmFsdWUgOiAtYXJnLnZhbHVlOwoxNDQ3NDogCjE0 NDc0OiAgaWYgKGFyZy52YWx1ZSA+PSAwKQoxNDQ3NDogICByZXR1cm4gKGludCkoYXJnX3ZhbHVl ID4+IDMyKTsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAgIHJldHVybiAtKGludCkoYXJnX3ZhbHVlID4+ IDMyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgZGNfZml4cHRfcm91bmQoc3RydWN0IGZpeGVkMzFfMzIgYXJnKQoxNDQ3NDogewox NDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdfdmFsdWUgPSBhcmcudmFsdWUgPiAwID8gYXJn LnZhbHVlIDogLWFyZy52YWx1ZTsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IGxvbmcgbG9uZyBzdW1t YW5kID0gZGNfZml4cHRfaGFsZi52YWx1ZTsKMTQ0NzQ6IAoxNDQ3NDogICh7IGludCBfX3JldF93 YXJuX29uID0gISEoISgoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkpIC0gKGxvbmcgbG9uZylhcmdf dmFsdWUgPj0gc3VtbWFuZCkpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29u KSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBm LCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAi LmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5s b25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEi ICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZs YWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiKSwgImki ICg0NjkpLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBi dWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1 c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIu cG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDQxKSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGlu X2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3NDogCjE0NDc0OiAgYXJnX3Zh bHVlICs9IHN1bW1hbmQ7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoYXJnLnZhbHVlID49IDApCjE0NDc0 OiAgIHJldHVybiAoaW50KShhcmdfdmFsdWUgPj4gMzIpOwoxNDQ3NDogIGVsc2UKMTQ0NzQ6ICAg cmV0dXJuIC0oaW50KShhcmdfdmFsdWUgPj4gMzIpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkY19maXhwdF9jZWlsKHN0cnVjdCBm aXhlZDMxXzMyIGFyZykKMTQ0NzQ6IHsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvbmcgYXJnX3Zh bHVlID0gYXJnLnZhbHVlID4gMCA/IGFyZy52YWx1ZSA6IC1hcmcudmFsdWU7CjE0NDc0OiAKMTQ0 NzQ6ICBjb25zdCBsb25nIGxvbmcgc3VtbWFuZCA9IGRjX2ZpeHB0X29uZS52YWx1ZSAtCjE0NDc0 OiAgIGRjX2ZpeHB0X2Vwc2lsb24udmFsdWU7CjE0NDc0OiAKMTQ0NzQ6ICAoeyBpbnQgX19yZXRf d2Fybl9vbiA9ICEhKCEoKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSAtIChsb25nIGxvbmcpYXJn X3ZhbHVlID49IHN1bW1hbmQpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9v biksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgw ZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIg Ii5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIu bG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMx IiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5Ojpm bGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIiksICJp IiAoNDkwKSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3Qg YnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5w dXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAi LnBvcHNlY3Rpb25cblx0IiA6IDogImkiICg0MikpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRp bl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6IAoxNDQ3NDogIGFyZ192 YWx1ZSArPSBzdW1tYW5kOwoxNDQ3NDogCjE0NDc0OiAgaWYgKGFyZy52YWx1ZSA+PSAwKQoxNDQ3 NDogICByZXR1cm4gKGludCkoYXJnX3ZhbHVlID4+IDMyKTsKMTQ0NzQ6ICBlbHNlCjE0NDc0OiAg IHJldHVybiAtKGludCkoYXJnX3ZhbHVlID4+IDMyKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5zaWduZWQg aW50IGRjX2ZpeHB0X3U0ZDE5KHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAKMTQ0NzQ6 IHVuc2lnbmVkIGludCBkY19maXhwdF91M2QxOShzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwoxNDQ3 NDogCjE0NDc0OiB1bnNpZ25lZCBpbnQgZGNfZml4cHRfdTJkMTkoc3RydWN0IGZpeGVkMzFfMzIg YXJnKTsKMTQ0NzQ6IAoxNDQ3NDogdW5zaWduZWQgaW50IGRjX2ZpeHB0X3UwZDE5KHN0cnVjdCBm aXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAKMTQ0NzQ6IHVuc2lnbmVkIGludCBkY19maXhwdF9jbGFt cF91MGQxNChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBp bnQgZGNfZml4cHRfY2xhbXBfdTBkMTAoc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKMTQ0NzQ6IAox NDQ3NDogaW50IGRjX2ZpeHB0X3M0ZDE5KHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7CjE0NDc0OiAK MTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X3RydW5jYXRlKHN0cnVjdCBmaXhlZDMx XzMyIGFyZywgdW5zaWduZWQgaW50IGZyYWNfYml0cykKMTQ0NzQ6IHsKMTQ0NzQ6ICBib29sIG5l Z2F0aXZlID0gYXJnLnZhbHVlIDwgMDsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChmcmFjX2JpdHMgPj0g MzIpIHsKMTQ0NzQ6ICAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhISghKGZyYWNfYml0cyA9PSAz MikpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8g eyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIu cHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIg LSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAt IDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5 OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcg MmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiKSwgImkiICg1MjUpLCAiaSIgKCgx IDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0g d2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNj YXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQi IDogOiAiaSIgKDQzKSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3Jl dF93YXJuX29uKSwgMCk7IH0pOwoxNDQ3NDogICByZXR1cm4gYXJnOwoxNDQ3NDogIH0KMTQ0NzQ6 IAoxNDQ3NDogIGlmIChuZWdhdGl2ZSkKMTQ0NzQ6ICAgYXJnLnZhbHVlID0gLWFyZy52YWx1ZTsK MTQ0NzQ6ICBhcmcudmFsdWUgJj0gKH4wTEwpIDw8ICgzMiAtIGZyYWNfYml0cyk7CjE0NDc0OiAg aWYgKG5lZ2F0aXZlKQoxNDQ3NDogICBhcmcudmFsdWUgPSAtYXJnLnZhbHVlOwoxNDQ3NDogIHJl dHVybiBhcmc7CjE0NDc0OiB9CjE0NDc0OiAjIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaXJxX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pcnFfdHlwZXMuaCIK MTQ0NzQ6IHN0cnVjdCBkY19jb250ZXh0OwoxNDQ3NDogCjE0NDc0OiB0eXBlZGVmIHZvaWQgKCpp bnRlcnJ1cHRfaGFuZGxlcikodm9pZCAqKTsKMTQ0NzQ6IAoxNDQ3NDogdHlwZWRlZiB2b2lkICpp cnFfaGFuZGxlcl9pZHg7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVu dW0gZGNfaXJxX3NvdXJjZSB7CjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0lOVkFMSUQg PSAwLAoxNDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9IUEQxLAoxNDQ3NDogIERDX0lSUV9T T1VSQ0VfSFBEMiwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDMsCjE0NDc0OiAgRENfSVJRX1NP VVJDRV9IUEQ0LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfSFBENSwKMTQ0NzQ6ICBEQ19JUlFfU09V UkNFX0hQRDYsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDFSWCwKMTQ0NzQ6ICBE Q19JUlFfU09VUkNFX0hQRDJSWCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDNSWCwKMTQ0NzQ6 ICBEQ19JUlFfU09VUkNFX0hQRDRSWCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDVSWCwKMTQ0 NzQ6ICBEQ19JUlFfU09VUkNFX0hQRDZSWCwKMTQ0NzQ6IAoxNDQ3NDogIERDX0lSUV9TT1VSQ0Vf STJDX0REQzEsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9JMkNfRERDMiwKMTQ0NzQ6ICBEQ19JUlFf U09VUkNFX0kyQ19EREMzLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfSTJDX0REQzQsCjE0NDc0OiAg RENfSVJRX1NPVVJDRV9JMkNfRERDNSwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0kyQ19EREM2LAox NDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EUFNJTksxLAoxNDQ3NDogIERDX0lSUV9TT1VS Q0VfRFBTSU5LMiwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0RQU0lOSzMsCjE0NDc0OiAgRENfSVJR X1NPVVJDRV9EUFNJTks0LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfRFBTSU5LNSwKMTQ0NzQ6ICBE Q19JUlFfU09VUkNFX0RQU0lOSzYsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1RJTUVS LAoxNDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUF9GSVJTVCwKMTQ0NzQ6ICBEQ19J UlFfU09VUkNFX1BGTElQMSA9IERDX0lSUV9TT1VSQ0VfUEZMSVBfRklSU1QsCjE0NDc0OiAgRENf SVJRX1NPVVJDRV9QRkxJUDIsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUDMsCjE0NDc0OiAg RENfSVJRX1NPVVJDRV9QRkxJUDQsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUDUsCjE0NDc0 OiAgRENfSVJRX1NPVVJDRV9QRkxJUDYsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUF9VTkRF UkxBWTAsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9QRkxJUF9MQVNUID0gRENfSVJRX1NPVVJDRV9Q RkxJUF9VTkRFUkxBWTAsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0dQSU9QQUQwLAox NDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDEsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9HUElP UEFEMiwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0dQSU9QQUQzLAoxNDQ3NDogIERDX0lSUV9TT1VS Q0VfR1BJT1BBRDQsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9HUElPUEFENSwKMTQ0NzQ6ICBEQ19J UlFfU09VUkNFX0dQSU9QQUQ2LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDcsCjE0NDc0 OiAgRENfSVJRX1NPVVJDRV9HUElPUEFEOCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0dQSU9QQUQ5 LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDEwLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0Vf R1BJT1BBRDExLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDEyLAoxNDQ3NDogIERDX0lS UV9TT1VSQ0VfR1BJT1BBRDEzLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE0LAoxNDQ3 NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE1LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BB RDE2LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE3LAoxNDQ3NDogIERDX0lSUV9TT1VS Q0VfR1BJT1BBRDE4LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE5LAoxNDQ3NDogIERD X0lSUV9TT1VSQ0VfR1BJT1BBRDIwLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDIxLAox NDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDIyLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJ T1BBRDIzLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI0LAoxNDQ3NDogIERDX0lSUV9T T1VSQ0VfR1BJT1BBRDI1LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI2LAoxNDQ3NDog IERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI3LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI4 LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI5LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0Vf R1BJT1BBRDMwLAoxNDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzFVTkRFUkZMT1csCjE0 NDc0OiAgRENfSVJRX1NPVVJDRV9EQzJVTkRFUkZMT1csCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9E QzNVTkRFUkZMT1csCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzRVTkRFUkZMT1csCjE0NDc0OiAg RENfSVJRX1NPVVJDRV9EQzVVTkRFUkZMT1csCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzZVTkRF UkZMT1csCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0RNQ1VfU0NQLAoxNDQ3NDogIERD X0lSUV9TT1VSQ0VfVkJJT1NfU1csCjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1ZVUERB VEUxLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfVlVQREFURTIsCjE0NDc0OiAgRENfSVJRX1NPVVJD RV9WVVBEQVRFMywKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1ZVUERBVEU0LAoxNDQ3NDogIERDX0lS UV9TT1VSQ0VfVlVQREFURTUsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9WVVBEQVRFNiwKMTQ0NzQ6 IAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfVkJMQU5LMSwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1ZC TEFOSzIsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9WQkxBTkszLAoxNDQ3NDogIERDX0lSUV9TT1VS Q0VfVkJMQU5LNCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX1ZCTEFOSzUsCjE0NDc0OiAgRENfSVJR X1NPVVJDRV9WQkxBTks2LAoxNDQ3NDogCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzFfVkxJTkUw LAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfREMyX1ZMSU5FMCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNF X0RDM19WTElORTAsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzRfVkxJTkUwLAoxNDQ3NDogIERD X0lSUV9TT1VSQ0VfREM1X1ZMSU5FMCwKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0RDNl9WTElORTAs CjE0NDc0OiAKMTQ0NzQ6ICBEQ19JUlFfU09VUkNFX0RDMV9WTElORTEsCjE0NDc0OiAgRENfSVJR X1NPVVJDRV9EQzJfVkxJTkUxLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfREMzX1ZMSU5FMSwKMTQ0 NzQ6ICBEQ19JUlFfU09VUkNFX0RDNF9WTElORTEsCjE0NDc0OiAgRENfSVJRX1NPVVJDRV9EQzVf VkxJTkUxLAoxNDQ3NDogIERDX0lSUV9TT1VSQ0VfREM2X1ZMSU5FMSwKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgREFMX0lSUV9TT1VSQ0VTX05VTUJFUgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBpcnFfdHlwZQoxNDQ3NDogewoxNDQ3NDogIElSUV9UWVBFX1BGTElQID0gRENfSVJRX1NP VVJDRV9QRkxJUDEsCjE0NDc0OiAgSVJRX1RZUEVfVlVQREFURSA9IERDX0lSUV9TT1VSQ0VfVlVQ REFURTEsCjE0NDc0OiAgSVJRX1RZUEVfVkJMQU5LID0gRENfSVJRX1NPVVJDRV9WQkxBTksxLAox NDQ3NDogfTsKMTQ0NzQ6ICMgMTczICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvaXJxX3R5cGVzLmgiCjE0NDc0OiBlbnVtIGRjX2ludGVycnVwdF9jb250ZXh0IHsK MTQ0NzQ6ICBJTlRFUlJVUFRfTE9XX0lSUV9DT05URVhUID0gMCwKMTQ0NzQ6ICBJTlRFUlJVUFRf SElHSF9JUlFfQ09OVEVYVCwKMTQ0NzQ6ICBJTlRFUlJVUFRfQ09OVEVYVF9OVU1CRVIKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfaW50ZXJydXB0X3Bvcmxhcml0eSB7CjE0NDc0OiAg SU5URVJSVVBUX1BPTEFSSVRZX0RFRkFVTFQgPSAwLAoxNDQ3NDogIElOVEVSUlVQVF9QT0xBUklU WV9MT1cgPSBJTlRFUlJVUFRfUE9MQVJJVFlfREVGQVVMVCwKMTQ0NzQ6ICBJTlRFUlJVUFRfUE9M QVJJVFlfSElHSCwKMTQ0NzQ6ICBJTlRFUlJVUFRfUE9MQVJJVFlfQk9USAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBkY190aW1lcl9pbnRlcnJ1cHRfcGFyYW1zIHsKMTQ0NzQ6ICB1aW50MzJfdCBtaWNyb19zZWNf aW50ZXJ2YWw7CjE0NDc0OiAgZW51bSBkY19pbnRlcnJ1cHRfY29udGV4dCBpbnRfY29udGV4dDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19pbnRlcnJ1cHRfcGFyYW1zIHsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjX2ludGVycnVwdF9wb3JsYXJpdHkg cmVxdWVzdGVkX3BvbGFyaXR5OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgZW51bSBkY19pbnRlcnJ1cHRfcG9ybGFyaXR5IGN1cnJlbnRfcG9sYXJpdHk7CjE0NDc0OiAg ZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2U7CjE0NDc0OiAgZW51bSBkY19pbnRlcnJ1cHRf Y29udGV4dCBpbnRfY29udGV4dDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM1ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfZHBfdHlwZXMuaCIg MQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RjX2RwX3R5cGVzLmgiCjE0NDc0OiBlbnVtIGRjX2xhbmVfY291bnQgewoxNDQ3NDogIExBTkVf Q09VTlRfVU5LTk9XTiA9IDAsCjE0NDc0OiAgTEFORV9DT1VOVF9PTkUgPSAxLAoxNDQ3NDogIExB TkVfQ09VTlRfVFdPID0gMiwKMTQ0NzQ6ICBMQU5FX0NPVU5UX0ZPVVIgPSA0LAoxNDQ3NDogIExB TkVfQ09VTlRfRUlHSFQgPSA4LAoxNDQ3NDogIExBTkVfQ09VTlRfRFBfTUFYID0gTEFORV9DT1VO VF9GT1VSCjE0NDc0OiB9OwoxNDQ3NDogIyA0NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2RjX2RwX3R5cGVzLmgiCjE0NDc0OiBlbnVtIGRjX2xpbmtfcmF0ZSB7 CjE0NDc0OiAgTElOS19SQVRFX1VOS05PV04gPSAwLAoxNDQ3NDogIExJTktfUkFURV9MT1cgPSAw eDA2LAoxNDQ3NDogIExJTktfUkFURV9SQVRFXzIgPSAweDA4LAoxNDQ3NDogIExJTktfUkFURV9S QVRFXzMgPSAweDA5LAoxNDQ3NDogIExJTktfUkFURV9ISUdIID0gMHgwQSwKMTQ0NzQ6ICBMSU5L X1JBVEVfUkJSMiA9IDB4MEMsCjE0NDc0OiAgTElOS19SQVRFX1JBVEVfNiA9IDB4MTAsCjE0NDc0 OiAgTElOS19SQVRFX0hJR0gyID0gMHgxNCwKMTQ0NzQ6ICBMSU5LX1JBVEVfSElHSDMgPSAweDFF CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2xpbmtfc3ByZWFkIHsKMTQ0NzQ6ICBM SU5LX1NQUkVBRF9ESVNBQkxFRCA9IDB4MDAsCjE0NDc0OiAKMTQ0NzQ6ICBMSU5LX1NQUkVBRF8w NV9ET1dOU1BSRUFEXzMwS0haID0gMHgxMCwKMTQ0NzQ6IAoxNDQ3NDogIExJTktfU1BSRUFEXzA1 X0RPV05TUFJFQURfMzNLSFogPSAweDExCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRj X3ZvbHRhZ2Vfc3dpbmcgewoxNDQ3NDogIFZPTFRBR0VfU1dJTkdfTEVWRUwwID0gMCwKMTQ0NzQ6 ICBWT0xUQUdFX1NXSU5HX0xFVkVMMSwKMTQ0NzQ6ICBWT0xUQUdFX1NXSU5HX0xFVkVMMiwKMTQ0 NzQ6ICBWT0xUQUdFX1NXSU5HX0xFVkVMMywKMTQ0NzQ6ICBWT0xUQUdFX1NXSU5HX01BWF9MRVZF TCA9IFZPTFRBR0VfU1dJTkdfTEVWRUwzCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRj X3ByZV9lbXBoYXNpcyB7CjE0NDc0OiAgUFJFX0VNUEhBU0lTX0RJU0FCTEVEID0gMCwKMTQ0NzQ6 ICBQUkVfRU1QSEFTSVNfTEVWRUwxLAoxNDQ3NDogIFBSRV9FTVBIQVNJU19MRVZFTDIsCjE0NDc0 OiAgUFJFX0VNUEhBU0lTX0xFVkVMMywKMTQ0NzQ6ICBQUkVfRU1QSEFTSVNfTUFYX0xFVkVMID0g UFJFX0VNUEhBU0lTX0xFVkVMMwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gZGNfcG9zdF9jdXJzb3IyIHsKMTQ0NzQ6ICBQT1NUX0NVUlNPUjJfRElTQUJMRUQg PSAwLAoxNDQ3NDogIFBPU1RfQ1VSU09SMl9MRVZFTDEsCjE0NDc0OiAgUE9TVF9DVVJTT1IyX0xF VkVMMiwKMTQ0NzQ6ICBQT1NUX0NVUlNPUjJfTEVWRUwzLAoxNDQ3NDogIFBPU1RfQ1VSU09SMl9N QVhfTEVWRUwgPSBQT1NUX0NVUlNPUjJfTEVWRUwzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBkY19kcF90cmFpbmluZ19wYXR0ZXJuIHsKMTQ0NzQ6ICBEUF9UUkFJTklOR19QQVRURVJO X1NFUVVFTkNFXzEgPSAwLAoxNDQ3NDogIERQX1RSQUlOSU5HX1BBVFRFUk5fU0VRVUVOQ0VfMiwK MTQ0NzQ6ICBEUF9UUkFJTklOR19QQVRURVJOX1NFUVVFTkNFXzMsCjE0NDc0OiAgRFBfVFJBSU5J TkdfUEFUVEVSTl9TRVFVRU5DRV80LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgewoxNDQ3NDogIGVudW0gZGNfbGFuZV9jb3VudCBsYW5lX2NvdW50Owox NDQ3NDogIGVudW0gZGNfbGlua19yYXRlIGxpbmtfcmF0ZTsKMTQ0NzQ6ICBlbnVtIGRjX2xpbmtf c3ByZWFkIGxpbmtfc3ByZWFkOwoxNDQ3NDogIGJvb2wgdXNlX2xpbmtfcmF0ZV9zZXQ7CjE0NDc0 OiAgdWludDhfdCBsaW5rX3JhdGVfc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRjX2xhbmVfc2V0dGluZ3MgewoxNDQ3NDogIGVudW0gZGNfdm9sdGFnZV9zd2luZyBWT0xUQUdF X1NXSU5HOwoxNDQ3NDogIGVudW0gZGNfcHJlX2VtcGhhc2lzIFBSRV9FTVBIQVNJUzsKMTQ0NzQ6 ICBlbnVtIGRjX3Bvc3RfY3Vyc29yMiBQT1NUX0NVUlNPUjI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGNfbGlua190cmFpbmluZ19zZXR0aW5ncyB7CjE0NDc0OiAgc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgbGluazsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbGFuZV9zZXR0aW5ncyBsYW5l X3NldHRpbmdzW0xBTkVfQ09VTlRfRFBfTUFYXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkY19saW5rX3RyYWluaW5nX292ZXJyaWRlcyB7CjE0NDc0OiAgZW51bSBkY192b2x0YWdl X3N3aW5nICp2b2x0YWdlX3N3aW5nOwoxNDQ3NDogIGVudW0gZGNfcHJlX2VtcGhhc2lzICpwcmVf ZW1waGFzaXM7CjE0NDc0OiAgZW51bSBkY19wb3N0X2N1cnNvcjIgKnBvc3RfY3Vyc29yMjsKMTQ0 NzQ6IAoxNDQ3NDogIHVpbnQxNl90ICpjcl9wYXR0ZXJuX3RpbWU7CjE0NDc0OiAgdWludDE2X3Qg KmVxX3BhdHRlcm5fdGltZTsKMTQ0NzQ6ICBlbnVtIGRjX2RwX3RyYWluaW5nX3BhdHRlcm4gKnBh dHRlcm5fZm9yX2VxOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19saW5rX3NwcmVhZCAqZG93bnNw cmVhZDsKMTQ0NzQ6ICBib29sICphbHRlcm5hdGVfc2NyYW1ibGVyX3Jlc2V0OwoxNDQ3NDogIGJv b2wgKmVuaGFuY2VkX2ZyYW1pbmc7CjE0NDc0OiAgYm9vbCAqbXN0X2VuYWJsZTsKMTQ0NzQ6ICBi b29sICpmZWNfZW5hYmxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHBjZF9yZXYg ewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgTUlOT1I6NDsKMTQ0NzQ6ICAgdWlu dDhfdCBNQUpPUjo0OwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIG1heF9sYW5lX2NvdW50IHsKMTQ0NzQ6ICBzdHJ1Y3Qg ewoxNDQ3NDogICB1aW50OF90IE1BWF9MQU5FX0NPVU5UOjU7CjE0NDc0OiAgIHVpbnQ4X3QgUE9T VF9MVF9BREpfUkVRX1NVUFBPUlRFRDoxOwoxNDQ3NDogICB1aW50OF90IFRQUzNfU1VQUE9SVEVE OjE7CjE0NDc0OiAgIHVpbnQ4X3QgRU5IQU5DRURfRlJBTUVfQ0FQOjE7CjE0NDc0OiAgfSBiaXRz OwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gbWF4 X2Rvd25fc3ByZWFkIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IE1BWF9ET1dO X1NQUkVBRDoxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEOjU7CjE0NDc0OiAgIHVpbnQ4X3Qg Tk9fQVVYX0hBTkRTSEFLRV9MSU5LX1RSQUlOSU5HOjE7CjE0NDc0OiAgIHVpbnQ4X3QgVFBTNF9T VVBQT1JURUQ6MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBtc3RtX2NhcCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6 ICAgdWludDhfdCBNU1RfQ0FQOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6NzsKMTQ0NzQ6 ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1 bmlvbiBsYW5lX2NvdW50X3NldCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBM QU5FX0NPVU5UX1NFVDo1OwoxNDQ3NDogICB1aW50OF90IFBPU1RfTFRfQURKX1JFUV9HUkFOVEVE OjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6MTsKMTQ0NzQ6ICAgdWludDhfdCBFTkhBTkNF RF9GUkFNSU5HOjE7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gbGFuZV9zdGF0dXMgewoxNDQ3NDogIHN0cnVjdCB7CjE0 NDc0OiAgIHVpbnQ4X3QgQ1JfRE9ORV8wOjE7CjE0NDc0OiAgIHVpbnQ4X3QgQ0hBTk5FTF9FUV9E T05FXzA6MTsKMTQ0NzQ6ICAgdWludDhfdCBTWU1CT0xfTE9DS0VEXzA6MTsKMTQ0NzQ6ICAgdWlu dDhfdCBSRVNFUlZFRDA6MTsKMTQ0NzQ6ICAgdWludDhfdCBDUl9ET05FXzE6MTsKMTQ0NzQ6ICAg dWludDhfdCBDSEFOTkVMX0VRX0RPTkVfMToxOwoxNDQ3NDogICB1aW50OF90IFNZTUJPTF9MT0NL RURfMToxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEXzE6MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0 NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkZXZpY2Vf c2VydmljZV9pcnEgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgUkVNT1RFX0NP TlRST0xfQ01EX1BFTkRJTkc6MTsKMTQ0NzQ6ICAgdWludDhfdCBBVVRPTUFURURfVEVTVDoxOwox NDQ3NDogICB1aW50OF90IENQX0lSUToxOwoxNDQ3NDogICB1aW50OF90IE1DQ1NfSVJROjE7CjE0 NDc0OiAgIHVpbnQ4X3QgRE9XTl9SRVBfTVNHX1JEWToxOwoxNDQ3NDogICB1aW50OF90IFVQX1JF UV9NU0dfUkRZOjE7CjE0NDc0OiAgIHVpbnQ4X3QgU0lOS19TUEVDSUZJQzoxOwoxNDQ3NDogICB1 aW50OF90IHJlc2VydmVkOjE7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gc2lua19jb3VudCB7CjE0NDc0OiAgc3RydWN0 IHsKMTQ0NzQ6ICAgdWludDhfdCBTSU5LX0NPVU5UOjY7CjE0NDc0OiAgIHVpbnQ4X3QgQ1BSRUFE WToxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEOjE7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDog IHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gbGFuZV9hbGlnbl9z dGF0dXNfdXBkYXRlZCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBJTlRFUkxB TkVfQUxJR05fRE9ORToxOwoxNDQ3NDogICB1aW50OF90IFBPU1RfTFRfQURKX1JFUV9JTl9QUk9H UkVTUzoxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEOjQ7CjE0NDc0OiAgIHVpbnQ4X3QgRE9X TlNUUkVBTV9QT1JUX1NUQVRVU19DSEFOR0VEOjE7CjE0NDc0OiAgIHVpbnQ4X3QgTElOS19TVEFU VVNfVVBEQVRFRDoxOwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGxhbmVfYWRqdXN0IHsKMTQ0NzQ6ICBzdHJ1Y3Qgewox NDQ3NDogICB1aW50OF90IFZPTFRBR0VfU1dJTkdfTEFORToyOwoxNDQ3NDogICB1aW50OF90IFBS RV9FTVBIQVNJU19MQU5FOjI7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6NDsKMTQ0NzQ6ICB9 IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlv biBkcGNkX3RyYWluaW5nX3BhdHRlcm4gewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4 X3QgVFJBSU5JTkdfUEFUVEVSTl9TRVQ6NDsKMTQ0NzQ6ICAgdWludDhfdCBSRUNPVkVSRURfQ0xP Q0tfT1VUX0VOOjE7CjE0NDc0OiAgIHVpbnQ4X3QgU0NSQU1CTElOR19ESVNBQkxFOjE7CjE0NDc0 OiAgIHVpbnQ4X3QgU1lNQk9MX0VSUk9SX0NPVU5UX1NFTDoyOwoxNDQ3NDogIH0gdjFfNDsKMTQ0 NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IFRSQUlOSU5HX1BBVFRFUk5fU0VUOjI7CjE0 NDc0OiAgIHVpbnQ4X3QgTElOS19RVUFMX1BBVFRFUk5fU0VUOjI7CjE0NDc0OiAgIHVpbnQ4X3Qg UkVTRVJWRUQ6NDsKMTQ0NzQ6ICB9IHYxXzM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkcGNkX3RyYWlu aW5nX2xhbmUgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgVk9MVEFHRV9TV0lO R19TRVQ6MjsKMTQ0NzQ6ICAgdWludDhfdCBNQVhfU1dJTkdfUkVBQ0hFRDoxOwoxNDQ3NDogICB1 aW50OF90IFBSRV9FTVBIQVNJU19TRVQ6MjsKMTQ0NzQ6ICAgdWludDhfdCBNQVhfUFJFX0VNUEhB U0lTX1JFQUNIRUQ6MTsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRDoyOwoxNDQ3NDogIH0gYml0 czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog dW5pb24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlMCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6 ICAgdWludDhfdCBEV05fU1RSTV9QT1JUWF9UWVBFOjM7CjE0NDc0OiAgIHVpbnQ4X3QgRFdOX1NU Uk1fUE9SVFhfSFBEOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRVJEOjQ7CjE0NDc0OiAgfSBi aXRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBlbnVtIGRwY2RfZG93bnN0cmVhbV9wb3J0X2RldGFpbGVkX3R5cGUgewoxNDQ3NDogIERPV05f U1RSRUFNX0RFVEFJTEVEX0RQID0gMCwKMTQ0NzQ6ICBET1dOX1NUUkVBTV9ERVRBSUxFRF9WR0Es CjE0NDc0OiAgRE9XTl9TVFJFQU1fREVUQUlMRURfRFZJLAoxNDQ3NDogIERPV05fU1RSRUFNX0RF VEFJTEVEX0hETUksCjE0NDc0OiAgRE9XTl9TVFJFQU1fREVUQUlMRURfTk9ORERDLAoxNDQ3NDog IERPV05fU1RSRUFNX0RFVEFJTEVEX0RQX1BMVVNfUExVUwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogdW5pb24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlMiB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0 NzQ6ICAgdWludDhfdCBNQVhfQklUU19QRVJfQ09MT1JfQ09NUE9ORU5UOjI7CjE0NDc0OiAgIHVp bnQ4X3QgUkVTRVJWRUQ6NjsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkcF9kb3duc3RyZWFtX3BvcnRfcHJlc2VudCB7 CjE0NDc0OiAgdWludDhfdCBieXRlOwoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3Qg UE9SVF9QUkVTRU5UOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUE9SVF9UWVBFOjI7CjE0NDc0OiAgIHVp bnQ4X3QgRk1UX0NPTlZFUlNJT046MTsKMTQ0NzQ6ICAgdWludDhfdCBERVRBSUxFRF9DQVBTOjE7 CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6MzsKMTQ0NzQ6ICB9IGZpZWxkczsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGR3bnN0cmVhbV9wb3J0X2NhcHNfYnl0ZTNfZHZpIHsKMTQ0 NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEMToxOwoxNDQ3NDogICB1aW50 OF90IERVQUxfTElOSzoxOwoxNDQ3NDogICB1aW50OF90IEhJR0hfQ09MT1JfREVQVEg6MTsKMTQ0 NzQ6ICAgdWludDhfdCBSRVNFUlZFRDI6NTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhf dCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkd25zdHJlYW1fcG9ydF9jYXBz X2J5dGUzX2hkbWkgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgRlJBTUVfU0VR X1RPX0ZSQU1FX1BBQ0s6MTsKMTQ0NzQ6ICAgdWludDhfdCBZQ3JDcjQyMl9QQVNTX1RIUk9VR0g6 MTsKMTQ0NzQ6ICAgdWludDhfdCBZQ3JDcjQyMF9QQVNTX1RIUk9VR0g6MTsKMTQ0NzQ6ICAgdWlu dDhfdCBZQ3JDcjQyMl9DT05WRVJTSU9OOjE7CjE0NDc0OiAgIHVpbnQ4X3QgWUNyQ3I0MjBfQ09O VkVSU0lPTjoxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEOjM7CjE0NDc0OiAgfSBiaXRzOwox NDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHVuaW9uIGR3bnN0cmVhbV9wb3J0eGNhcHMgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAg IHVuaW9uIGR3bnN0cmVhbV9wb3J0X2NhcHNfYnl0ZTAgYnl0ZTA7CjE0NDc0OiAgIHVuc2lnbmVk IGNoYXIgbWF4X1RNRFNfY2xvY2s7CjE0NDc0OiAgIHVuaW9uIGR3bnN0cmVhbV9wb3J0X2NhcHNf Ynl0ZTIgYnl0ZTI7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5pb24gewoxNDQ3NDogICAgdW5pb24gZHdu c3RyZWFtX3BvcnRfY2Fwc19ieXRlM19kdmkgYnl0ZURWSTsKMTQ0NzQ6ICAgIHVuaW9uIGR3bnN0 cmVhbV9wb3J0X2NhcHNfYnl0ZTNfaGRtaSBieXRlSERNSTsKMTQ0NzQ6ICAgfSBieXRlMzsKMTQ0 NzQ6ICB9IGJ5dGVzOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgY2hhciByYXdbNF07CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkb3duc3RyZWFtX3BvcnQgewoxNDQ3NDogIHN0cnVj dCB7CjE0NDc0OiAgIHVuc2lnbmVkIGNoYXIgcHJlc2VudDoxOwoxNDQ3NDogICB1bnNpZ25lZCBj aGFyIHR5cGU6MjsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBmb3JtYXRfY29udjoxOwoxNDQ3NDog ICB1bnNpZ25lZCBjaGFyIGRldGFpbGVkX2NhcHM6MTsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBy ZXNlcnZlZDozOwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHJhdzsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gc2lua19zdGF0dXMgewoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgUlhfUE9SVDBfU1RBVFVTOjE7CjE0NDc0OiAgIHVp bnQ4X3QgUlhfUE9SVDFfU1RBVFVTOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6NjsKMTQ0 NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gaHBkX2lycV9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3Qgewox NDQ3NDogICB1bmlvbiBzaW5rX2NvdW50IHNpbmtfY250OwoxNDQ3NDogICB1bmlvbiBkZXZpY2Vf c2VydmljZV9pcnEgZGV2aWNlX3NlcnZpY2VfaXJxOwoxNDQ3NDogICB1bmlvbiBsYW5lX3N0YXR1 cyBsYW5lMDFfc3RhdHVzOwoxNDQ3NDogICB1bmlvbiBsYW5lX3N0YXR1cyBsYW5lMjNfc3RhdHVz OwoxNDQ3NDogICB1bmlvbiBsYW5lX2FsaWduX3N0YXR1c191cGRhdGVkIGxhbmVfc3RhdHVzX3Vw ZGF0ZWQ7CjE0NDc0OiAgIHVuaW9uIHNpbmtfc3RhdHVzIHNpbmtfc3RhdHVzOwoxNDQ3NDogIH0g Ynl0ZXM7CjE0NDc0OiAgdWludDhfdCByYXdbNl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1 bmlvbiBkb3duX3N0cmVhbV9wb3J0X2NvdW50IHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1 aW50OF90IERPV05fU1RSX1BPUlRfQ09VTlQ6NDsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRDoy OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgSUdOT1JF X01TQV9USU1JTkdfUEFSQU06MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50OF90IE9VSV9TVVBQT1JUOjE7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVpbnQ4 X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZG93bl9zcHJlYWRfY3RybCB7 CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRDE6NDsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IFNQUkVBRF9BTVA6MTsKMTQ0 NzQ6ICAgdWludDhfdCBSRVNFUlZFRDI6MjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICAgdWludDhfdCBJR05PUkVfTVNBX1RJTUlOR19QQVJBTToxOwoxNDQ3NDogIH0gYml0czsKMTQ0 NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGRwY2RfZWRw X2NvbmZpZyB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBQQU5FTF9NT0RFX0VE UDoxOwoxNDQ3NDogICB1aW50OF90IEZSQU1JTkdfQ0hBTkdFX0VOQUJMRToxOwoxNDQ3NDogICB1 aW50OF90IFJFU0VSVkVEOjU7CjE0NDc0OiAgIHVpbnQ4X3QgUEFORUxfU0VMRl9URVNUX0VOQUJM RToxOwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBkcF9kZXZpY2VfdmVuZG9yX2lkIHsKMTQ0NzQ6ICB1aW50OF90IGll ZWVfb3VpWzNdOwoxNDQ3NDogIHVpbnQ4X3QgaWVlZV9kZXZpY2VfaWRbNl07CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBfc2lua19od19md19yZXZpc2lvbiB7CjE0NDc0OiAgdWlu dDhfdCBpZWVlX2h3X3JldjsKMTQ0NzQ6ICB1aW50OF90IGllZWVfZndfcmV2WzJdOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bmlvbiBlZHBfY29uZmlndXJhdGlvbl9jYXAgewox NDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgQUxUX1NDUkFNQkxFUl9SRVNFVDoxOwox NDQ3NDogICB1aW50OF90IEZSQU1JTkdfQ0hBTkdFOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJW RUQ6MTsKMTQ0NzQ6ICAgdWludDhfdCBEUENEX0RJU1BMQVlfQ09OVFJPTF9DQVBBQkxFOjE7CjE0 NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQyOjQ7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVpbnQ4 X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHByeF9mZWF0dXJlIHsKMTQ0 NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IEdUQ19DQVA6MTsKMTQ0NzQ6ICAgdWludDhf dCBTU1RfU1BMSVRfU0RQX0NBUDoxOwoxNDQ3NDogICB1aW50OF90IEFWX1NZTkNfQ0FQOjE7CjE0 NDc0OiAgIHVpbnQ4X3QgVlNDX1NEUF9DT0xPUklNRVRSWV9TVVBQT1JURUQ6MTsKMTQ0NzQ6ICAg dWludDhfdCBWU0NfRVhUX1ZFU0FfU0RQX1NVUFBPUlRFRDoxOwoxNDQ3NDogICB1aW50OF90IFZT Q19FWFRfVkVTQV9TRFBfQ0hBSU5JTkdfU1VQUE9SVEVEOjE7CjE0NDc0OiAgIHVpbnQ4X3QgVlND X0VYVF9DRUFfU0RQX1NVUFBPUlRFRDoxOwoxNDQ3NDogICB1aW50OF90IFZTQ19FWFRfQ0VBX1NE UF9DSEFJTklOR19TVVBQT1JURUQ6MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCBy YXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiB0cmFpbmluZ19hdXhfcmRfaW50ZXJ2 YWwgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgVFJBSU5JR19BVVhfUkRfSU5U RVJWQUw6NzsKMTQ0NzQ6ICAgdWludDhfdCBFWFRfUkVDRUlWRVJfQ0FQX0ZJRUxEX1BSRVNFTlQ6 MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIHRlc3RfcmVxdWVzdCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0 NzQ6ICB1aW50OF90IExJTktfVFJBSU5JTkcgOjE7CjE0NDc0OiAgdWludDhfdCBMSU5LX1RFU1Rf UEFUVFJOIDoxOwoxNDQ3NDogIHVpbnQ4X3QgRURJRF9SRUFEIDoxOwoxNDQ3NDogIHVpbnQ4X3Qg UEhZX1RFU1RfUEFUVEVSTiA6MTsKMTQ0NzQ6ICB1aW50OF90IFJFU0VSVkVEIDoxOwoxNDQ3NDog IHVpbnQ4X3QgQVVESU9fVEVTVF9QQVRURVJOIDoxOwoxNDQ3NDogIHVpbnQ4X3QgVEVTVF9BVURJ T19ESVNBQkxFRF9WSURFTyA6MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiB0ZXN0X3Jlc3BvbnNlIHsKMTQ0NzQ6ICBz dHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IEFDSyA6MTsKMTQ0NzQ6ICAgdWludDhfdCBOT19BQ0sg OjE7CjE0NDc0OiAgIHVpbnQ4X3QgRURJRF9DSEVDS1NVTV9XUklURToxOwoxNDQ3NDogICB1aW50 OF90IFJFU0VSVkVEIDo1OwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIHBoeV90ZXN0X3BhdHRlcm4gewoxNDQ3NDogIHN0 cnVjdCB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgUEFUVEVSTiA6 MzsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEIDo1OwoxNDQ3NDogIH0gYml0czsK MTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5p b24gY29tcGxpYW5jZV90ZXN0X3N0YXRlIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNp Z25lZCBjaGFyIFNURVJFT18zRF9SVU5OSU5HIDogMTsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBS RVNFUlZFRCA6IDc7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcmF3Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gbGlua190ZXN0X3BhdHRlcm4gewoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBQQVRURVJOIDoyOwoxNDQ3 NDogICB1bnNpZ25lZCBjaGFyIFJFU0VSVkVEOjY7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVu c2lnbmVkIGNoYXIgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gdGVzdF9taXNj IHsKMTQ0NzQ6ICBzdHJ1Y3QgZHBjZF90ZXN0X21pc2NfYml0cyB7CjE0NDc0OiAgIHVuc2lnbmVk IGNoYXIgU1lOQ19DTE9DSyA6MTsKMTQ0NzQ6IAoxNDQ3NDogICB1bnNpZ25lZCBjaGFyIENMUl9G T1JNQVQgOjI7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBEWU5fUkFOR0UgOjE7CjE0 NDc0OiAgIHVuc2lnbmVkIGNoYXIgWUNCQ1JfQ09FRlMgOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5z aWduZWQgY2hhciBCUEMgOjM7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIg cmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gYXVkaW9fdGVzdF9tb2RlIHsKMTQ0 NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBjaGFyIHNhbXBsaW5nX3JhdGUgOjQ7CjE0 NDc0OiAgIHVuc2lnbmVkIGNoYXIgY2hhbm5lbF9jb3VudCA6NDsKMTQ0NzQ6ICB9IGJpdHM7CjE0 NDc0OiAgdW5zaWduZWQgY2hhciByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBh dWRpb190ZXN0X3BhdHRlcm5fcGVyaW9kIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNp Z25lZCBjaGFyIHBhdHRlcm5fcGVyaW9kIDo0OwoxNDQ3NDogICB1bnNpZ25lZCBjaGFyIHJlc2Vy dmVkIDo0OwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIHJhdzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb190ZXN0X3BhdHRlcm5fdHlwZSB7CjE0NDc0 OiAgdW5zaWduZWQgY2hhciB2YWx1ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk cF9hdWRpb190ZXN0X2RhdGFfZmxhZ3MgewoxNDQ3NDogIHVpbnQ4X3QgdGVzdF9yZXF1ZXN0ZWQg OjE7CjE0NDc0OiAgdWludDhfdCBkaXNhYmxlX3ZpZGVvIDoxOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRwX2F1ZGlvX3Rlc3RfZGF0YSB7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg ZHBfYXVkaW9fdGVzdF9kYXRhX2ZsYWdzIGZsYWdzOwoxNDQ3NDogIHVpbnQ4X3Qgc2FtcGxpbmdf cmF0ZTsKMTQ0NzQ6ICB1aW50OF90IGNoYW5uZWxfY291bnQ7CjE0NDc0OiAgdWludDhfdCBwYXR0 ZXJuX3R5cGU7CjE0NDc0OiAgdWludDhfdCBwYXR0ZXJuX3BlcmlvZFs4XTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHBjZF9mZWNfY2FwYWJpbGl0eSB7CjE0NDc0OiAg c3RydWN0IHsKMTQ0NzQ6ICAgdWludDhfdCBGRUNfQ0FQQUJMRToxOwoxNDQ3NDogICB1aW50OF90 IFVOQ09SUkVDVEVEX0JMT0NLX0VSUk9SX0NPVU5UX0NBUEFCTEU6MTsKMTQ0NzQ6ICAgdWludDhf dCBDT1JSRUNURURfQkxPQ0tfRVJST1JfQ09VTlRfQ0FQQUJMRToxOwoxNDQ3NDogICB1aW50OF90 IEJJVF9FUlJPUl9DT1VOVF9DQVBBQkxFOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkVTRVJWRUQ6NDsK MTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX2RzY19zdXBwb3J0IHsKMTQ0NzQ6ICB1aW50OF90IERT Q19TVVBQT1JUIDoxOwoxNDQ3NDogIHVpbnQ4X3QgRFNDX1BBU1NUSFJPVUdIX1NVUFBPUlQgOjE7 CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRCA6NjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkcGNkX2RzY19hbGdvcml0aG1fcmV2aXNpb24gewoxNDQ3NDogIHVpbnQ4X3QgRFNDX1ZF UlNJT05fTUFKT1IgOjQ7CjE0NDc0OiAgdWludDhfdCBEU0NfVkVSU0lPTl9NSU5PUiA6NDsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX2RzY19yY19idWZmZXJfYmxvY2tfc2l6 ZSB7CjE0NDc0OiAgdWludDhfdCBSQ19CTE9DS19CVUZGRVJfU0laRSA6MjsKMTQ0NzQ6ICB1aW50 OF90IFJFU0VSVkVEIDo2OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwY2RfZHNj X3NsaWNlX2NhcGFiaWxpdHkxIHsKMTQ0NzQ6ICB1aW50OF90IE9ORV9TTElDRV9QRVJfRFBfRFND X1NJTktfREVWSUNFIDoxOwoxNDQ3NDogIHVpbnQ4X3QgVFdPX1NMSUNFU19QRVJfRFBfRFNDX1NJ TktfREVWSUNFIDoxOwoxNDQ3NDogIHVpbnQ4X3QgUkVTRVJWRUQgOjE7CjE0NDc0OiAgdWludDhf dCBGT1VSX1NMSUNFU19QRVJfRFBfRFNDX1NJTktfREVWSUNFIDoxOwoxNDQ3NDogIHVpbnQ4X3Qg U0lYX1NMSUNFU19QRVJfRFBfRFNDX1NJTktfREVWSUNFIDoxOwoxNDQ3NDogIHVpbnQ4X3QgRUlH SFRfU0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7CjE0NDc0OiAgdWludDhfdCBURU5f U0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7CjE0NDc0OiAgdWludDhfdCBUV0VMVkVf U0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHBjZF9kc2NfbGluZV9idWZmZXJfYml0X2RlcHRoIHsKMTQ0NzQ6ICB1aW50OF90 IExJTkVfQlVGRkVSX0JJVF9ERVBUSCA6NDsKMTQ0NzQ6ICB1aW50OF90IFJFU0VSVkVEIDo0Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwY2RfZHNjX2Jsb2NrX3ByZWRpY3Rpb25f c3VwcG9ydCB7CjE0NDc0OiAgdWludDhfdCBCTE9DS19QUkVESUNUSU9OX1NVUFBPUlQ6MTsKMTQ0 NzQ6ICB1aW50OF90IFJFU0VSVkVEIDo3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRwY2RfbWF4aW11bV9iaXRzX3Blcl9waXhlbF9zdXBwb3J0ZWRfYnlfdGhlX2RlY29tcHJlc3Nv ciB7CjE0NDc0OiAgdWludDhfdCBNQVhJTVVNX0JJVFNfUEVSX1BJWEVMX1NVUFBPUlRFRF9CWV9U SEVfREVDT01QUkVTU09SX0xPVyA6NzsKMTQ0NzQ6ICB1aW50OF90IE1BWElNVU1fQklUU19QRVJf UElYRUxfU1VQUE9SVEVEX0JZX1RIRV9ERUNPTVBSRVNTT1JfSElHSCA6NzsKMTQ0NzQ6ICB1aW50 OF90IFJFU0VSVkVEIDoyOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwY2RfZHNj X2RlY29kZXJfY29sb3JfZm9ybWF0X2NhcGFiaWxpdGllcyB7CjE0NDc0OiAgdWludDhfdCBSR0Jf U1VQUE9SVCA6MTsKMTQ0NzQ6ICB1aW50OF90IFlfQ0JfQ1JfNDQ0X1NVUFBPUlQgOjE7CjE0NDc0 OiAgdWludDhfdCBZX0NCX0NSX1NJTVBMRV80MjJfU1VQUE9SVCA6MTsKMTQ0NzQ6ICB1aW50OF90 IFlfQ0JfQ1JfTkFUSVZFXzQyMl9TVVBQT1JUIDoxOwoxNDQ3NDogIHVpbnQ4X3QgWV9DQl9DUl9O QVRJVkVfNDIwX1NVUFBPUlQgOjE7CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRCA6MzsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX2RzY19kZWNvZGVyX2NvbG9yX2RlcHRoX2Nh cGFiaWxpdGllcyB7CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRDAgOjE7CjE0NDc0OiAgdWludDhf dCBFSUdIVF9CSVRTX1BFUl9DT0xPUl9TVVBQT1JUIDoxOwoxNDQ3NDogIHVpbnQ4X3QgVEVOX0JJ VFNfUEVSX0NPTE9SX1NVUFBPUlQgOjE7CjE0NDc0OiAgdWludDhfdCBUV0VMVkVfQklUU19QRVJf Q09MT1JfU1VQUE9SVCA6MTsKMTQ0NzQ6ICB1aW50OF90IFJFU0VSVkVEMSA6NDsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX3BlYWtfZHNjX3Rocm91Z2hwdXRfZHNjX3Npbmsg ewoxNDQ3NDogIHVpbnQ4X3QgVEhST1VHSFBVVF9NT0RFXzA6NDsKMTQ0NzQ6ICB1aW50OF90IFRI Uk9VR0hQVVRfTU9ERV8xOjQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBjZF9k c2Nfc2xpY2VfY2FwYWJpbGl0aWVzXzIgewoxNDQ3NDogIHVpbnQ4X3QgU0lYVEVFTl9TTElDRVNf UEVSX0RTQ19TSU5LX0RFVklDRSA6MTsKMTQ0NzQ6ICB1aW50OF90IFRXRU5UWV9TTElDRVNfUEVS X0RTQ19TSU5LX0RFVklDRSA6MTsKMTQ0NzQ6ICB1aW50OF90IFRXRU5UWUZPVVJfU0xJQ0VTX1BF Ul9EU0NfU0lOS19ERVZJQ0UgOjE7CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRCA6NTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcGNkX2JpdHNfcGVyX3BpeGVsX2luY3JlbWVudHsK MTQ0NzQ6ICB1aW50OF90IElOQ1JFTUVOVF9PRl9CSVRTX1BFUl9QSVhFTF9TVVBQT1JURUQgOjM7 CjE0NDc0OiAgdWludDhfdCBSRVNFUlZFRCA6NTsKMTQ0NzQ6IH07CjE0NDc0OiB1bmlvbiBkcGNk X2RzY19iYXNpY19jYXBhYmlsaXRpZXMgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHN0cnVj dCBkcGNkX2RzY19zdXBwb3J0IGRzY19zdXBwb3J0OwoxNDQ3NDogICBzdHJ1Y3QgZHBjZF9kc2Nf YWxnb3JpdGhtX3JldmlzaW9uIGRzY19hbGdvcml0aG1fcmV2aXNpb247CjE0NDc0OiAgIHN0cnVj dCBkcGNkX2RzY19yY19idWZmZXJfYmxvY2tfc2l6ZSBkc2NfcmNfYnVmZmVyX2Jsb2NrX3NpemU7 CjE0NDc0OiAgIHVpbnQ4X3QgZHNjX3JjX2J1ZmZlcl9zaXplOwoxNDQ3NDogICBzdHJ1Y3QgZHBj ZF9kc2Nfc2xpY2VfY2FwYWJpbGl0eTEgZHNjX3NsaWNlX2NhcGFiaWxpdGllc18xOwoxNDQ3NDog ICBzdHJ1Y3QgZHBjZF9kc2NfbGluZV9idWZmZXJfYml0X2RlcHRoIGRzY19saW5lX2J1ZmZlcl9i aXRfZGVwdGg7CjE0NDc0OiAgIHN0cnVjdCBkcGNkX2RzY19ibG9ja19wcmVkaWN0aW9uX3N1cHBv cnQgZHNjX2Jsb2NrX3ByZWRpY3Rpb25fc3VwcG9ydDsKMTQ0NzQ6ICAgc3RydWN0IGRwY2RfbWF4 aW11bV9iaXRzX3Blcl9waXhlbF9zdXBwb3J0ZWRfYnlfdGhlX2RlY29tcHJlc3NvciBtYXhpbXVt X2JpdHNfcGVyX3BpeGVsX3N1cHBvcnRlZF9ieV90aGVfZGVjb21wcmVzc29yOwoxNDQ3NDogICBz dHJ1Y3QgZHBjZF9kc2NfZGVjb2Rlcl9jb2xvcl9mb3JtYXRfY2FwYWJpbGl0aWVzIGRzY19kZWNv ZGVyX2NvbG9yX2Zvcm1hdF9jYXBhYmlsaXRpZXM7CjE0NDc0OiAgIHN0cnVjdCBkcGNkX2RzY19k ZWNvZGVyX2NvbG9yX2RlcHRoX2NhcGFiaWxpdGllcyBkc2NfZGVjb2Rlcl9jb2xvcl9kZXB0aF9j YXBhYmlsaXRpZXM7CjE0NDc0OiAgIHN0cnVjdCBkcGNkX3BlYWtfZHNjX3Rocm91Z2hwdXRfZHNj X3NpbmsgcGVha19kc2NfdGhyb3VnaHB1dF9kc2Nfc2luazsKMTQ0NzQ6ICAgdWludDhfdCBkc2Nf bWF4aW11bV9zbGljZV93aWR0aDsKMTQ0NzQ6ICAgc3RydWN0IGRwY2RfZHNjX3NsaWNlX2NhcGFi aWxpdGllc18yIGRzY19zbGljZV9jYXBhYmlsaXRpZXNfMjsKMTQ0NzQ6ICAgdWludDhfdCByZXNl cnZlZDsKMTQ0NzQ6ICAgc3RydWN0IGRwY2RfYml0c19wZXJfcGl4ZWxfaW5jcmVtZW50IGJpdHNf cGVyX3BpeGVsX2luY3JlbWVudDsKMTQ0NzQ6ICB9IGZpZWxkczsKMTQ0NzQ6ICB1aW50OF90IHJh d1sxNl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkcGNkX2RzY19leHRfY2FwYWJp bGl0aWVzIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IEJSQU5DSF9PVkVSQUxM X1RIUk9VR0hQVVRfMDsKMTQ0NzQ6ICAgdWludDhfdCBCUkFOQ0hfT1ZFUkFMTF9USFJPVUdIUFVU XzE7CjE0NDc0OiAgIHVpbnQ4X3QgQlJBTkNIX01BWF9MSU5FX1dJRFRIOwoxNDQ3NDogIH0gZmll bGRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3WzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRwY2RfZHNjX2NhcGFiaWxpdGllcyB7CjE0NDc0OiAgdW5pb24gZHBjZF9kc2NfYmFzaWNf Y2FwYWJpbGl0aWVzIGRzY19iYXNpY19jYXBzOwoxNDQ3NDogIHVuaW9uIGRwY2RfZHNjX2V4dF9j YXBhYmlsaXRpZXMgZHNjX2V4dF9jYXBzOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzYgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIiAyCjE0NDc0OiAj IDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY19od190eXBl cy5oIiAxCjE0NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvZGNfaHdfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzQgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL3NpZ25hbF90eXBl cy5oIgoxNDQ3NDogZW51bSBzaWduYWxfdHlwZSB7CjE0NDc0OiAgU0lHTkFMX1RZUEVfTk9ORSA9 IDBMLAoxNDQ3NDogIFNJR05BTF9UWVBFX0RWSV9TSU5HTEVfTElOSyA9ICgxIDw8IDApLAoxNDQ3 NDogIFNJR05BTF9UWVBFX0RWSV9EVUFMX0xJTksgPSAoMSA8PCAxKSwKMTQ0NzQ6ICBTSUdOQUxf VFlQRV9IRE1JX1RZUEVfQSA9ICgxIDw8IDIpLAoxNDQ3NDogIFNJR05BTF9UWVBFX0xWRFMgPSAo MSA8PCAzKSwKMTQ0NzQ6ICBTSUdOQUxfVFlQRV9SR0IgPSAoMSA8PCA0KSwKMTQ0NzQ6ICBTSUdO QUxfVFlQRV9ESVNQTEFZX1BPUlQgPSAoMSA8PCA1KSwKMTQ0NzQ6ICBTSUdOQUxfVFlQRV9ESVNQ TEFZX1BPUlRfTVNUID0gKDEgPDwgNiksCjE0NDc0OiAgU0lHTkFMX1RZUEVfRURQID0gKDEgPDwg NyksCjE0NDc0OiAgU0lHTkFMX1RZUEVfVklSVFVBTCA9ICgxIDw8IDkpLAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2hkbWlfdG1kc19zaWduYWwoZW51bSBzaWdu YWxfdHlwZSBzaWduYWwpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChzaWduYWwgPT0gU0lHTkFM X1RZUEVfSERNSV9UWVBFX0EpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2hk bWlfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQoxNDQ3NDogewoxNDQ3NDogIHJldHVy biAoc2lnbmFsID09IFNJR05BTF9UWVBFX0hETUlfVFlQRV9BKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAox NDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCBkY19pc19kcF9zc3Rfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiAoc2lnbmFsID09IFNJR05BTF9UWVBFX0RJU1BMQVlfUE9S VCB8fAoxNDQ3NDogICBzaWduYWwgPT0gU0lHTkFMX1RZUEVfRURQKTsKMTQ0NzQ6IH0KMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBkY19pc19kcF9zaWduYWwoZW51bSBzaWduYWxfdHlwZSBzaWduYWwpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfRElTUExBWV9QT1JU IHx8CjE0NDc0OiAgIHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9FRFAgfHwKMTQ0NzQ6ICAgc2lnbmFs ID09IFNJR05BTF9UWVBFX0RJU1BMQVlfUE9SVF9NU1QpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGRjX2lzX2VtYmVkZGVkX3NpZ25hbChlbnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9FRFAgfHwgc2lnbmFs ID09IFNJR05BTF9UWVBFX0xWRFMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lz X2x2ZHNfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQoxNDQ3NDogewoxNDQ3NDogIHJl dHVybiAoc2lnbmFsID09IFNJR05BTF9UWVBFX0xWRFMpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIGRjX2lzX2R2aV9zaWduYWwoZW51bSBzaWduYWxfdHlwZSBzaWduYWwpCjE0NDc0OiB7 CjE0NDc0OiAgc3dpdGNoIChzaWduYWwpIHsKMTQ0NzQ6ICBjYXNlIFNJR05BTF9UWVBFX0RWSV9T SU5HTEVfTElOSzoKMTQ0NzQ6ICBjYXNlIFNJR05BTF9UWVBFX0RWSV9EVUFMX0xJTks6CjE0NDc0 OiAgIHJldHVybiB0cnVlOwoxNDQ3NDogIGJyZWFrOwoxNDQ3NDogIGRlZmF1bHQ6CjE0NDc0OiAg IHJldHVybiBmYWxzZTsKMTQ0NzQ6ICB9CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGNf aXNfZHZpX3NpbmdsZV9saW5rX3NpZ25hbChlbnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKMTQ0NzQ6 IHsKMTQ0NzQ6ICByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9EVklfU0lOR0xFX0xJTksp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2R1YWxfbGlua19zaWduYWwoZW51 bSBzaWduYWxfdHlwZSBzaWduYWwpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIChzaWduYWwgPT0g U0lHTkFMX1RZUEVfRFZJX0RVQUxfTElOSyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZGNfaXNfYXVkaW9fY2FwYWJsZV9zaWduYWwoZW51bSBzaWduYWxfdHlwZSBzaWduYWwpCjE0NDc0 OiB7CjE0NDc0OiAgcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfRElTUExBWV9QT1JUIHx8 CjE0NDc0OiAgIHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9ESVNQTEFZX1BPUlRfTVNUIHx8CjE0NDc0 OiAgIGRjX2lzX2hkbWlfc2lnbmFsKHNpZ25hbCkpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIGRjX2lzX3ZpcnR1YWxfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAoc2lnbmFsID09IFNJR05BTF9UWVBFX1ZJUlRVQUwpOwoxNDQ3NDog fQoxNDQ3NDogIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RjX2h3X3R5cGVzLmgiIDIKMTQ0NzQ6ICMgNDUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9kY19od190eXBlcy5oIgoxNDQ3NDogdW5pb24gbGFyZ2VfaW50ZWdl ciB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDMyX3QgbG93X3BhcnQ7CjE0NDc0OiAg IGludDMyX3QgaGlnaF9wYXJ0OwoxNDQ3NDogIH07CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgewox NDQ3NDogICB1aW50MzJfdCBsb3dfcGFydDsKMTQ0NzQ6ICAgaW50MzJfdCBoaWdoX3BhcnQ7CjE0 NDc0OiAgfSB1OwoxNDQ3NDogCjE0NDc0OiAgaW50NjRfdCBxdWFkX3BhcnQ7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19wbGFuZV9hZGRyX3R5cGUgewox NDQ3NDogIFBMTl9BRERSX1RZUEVfR1JBUEhJQ1MgPSAwLAoxNDQ3NDogIFBMTl9BRERSX1RZUEVf R1JQSF9TVEVSRU8sCjE0NDc0OiAgUExOX0FERFJfVFlQRV9WSURFT19QUk9HUkVTU0lWRSwKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIHsKMTQ0NzQ6ICBl bnVtIGRjX3BsYW5lX2FkZHJfdHlwZSB0eXBlOwoxNDQ3NDogIGJvb2wgdG16X3N1cmZhY2U7CjE0 NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3R7CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRl Z2VyIGFkZHI7CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRlZ2VyIG1ldGFfYWRkcjsKMTQ0NzQ6 ICAgIHVuaW9uIGxhcmdlX2ludGVnZXIgZGNjX2NvbnN0X2NvbG9yOwoxNDQ3NDogICB9IGdycGg7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdW5pb24gbGFyZ2Vf aW50ZWdlciBsZWZ0X2FkZHI7CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGxlZnRfbWV0 YV9hZGRyOwoxNDQ3NDogICAgdW5pb24gbGFyZ2VfaW50ZWdlciBsZWZ0X2RjY19jb25zdF9jb2xv cjsKMTQ0NzQ6IAoxNDQ3NDogICAgdW5pb24gbGFyZ2VfaW50ZWdlciByaWdodF9hZGRyOwoxNDQ3 NDogICAgdW5pb24gbGFyZ2VfaW50ZWdlciByaWdodF9tZXRhX2FkZHI7CjE0NDc0OiAgICB1bmlv biBsYXJnZV9pbnRlZ2VyIHJpZ2h0X2RjY19jb25zdF9jb2xvcjsKMTQ0NzQ6IAoxNDQ3NDogICB9 IGdycGhfc3RlcmVvOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAg IHVuaW9uIGxhcmdlX2ludGVnZXIgbHVtYV9hZGRyOwoxNDQ3NDogICAgdW5pb24gbGFyZ2VfaW50 ZWdlciBsdW1hX21ldGFfYWRkcjsKMTQ0NzQ6ICAgIHVuaW9uIGxhcmdlX2ludGVnZXIgbHVtYV9k Y2NfY29uc3RfY29sb3I7CjE0NDc0OiAKMTQ0NzQ6ICAgIHVuaW9uIGxhcmdlX2ludGVnZXIgY2hy b21hX2FkZHI7CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGNocm9tYV9tZXRhX2FkZHI7 CjE0NDc0OiAgICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGNocm9tYV9kY2NfY29uc3RfY29sb3I7CjE0 NDc0OiAgIH0gdmlkZW9fcHJvZ3Jlc3NpdmU7CjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3NDogIHVu aW9uIGxhcmdlX2ludGVnZXIgcGFnZV90YWJsZV9iYXNlOwoxNDQ3NDogCjE0NDc0OiAgdWludDhf dCB2bWlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX3NpemUgewoxNDQ3NDog IGludCB3aWR0aDsKMTQ0NzQ6ICBpbnQgaGVpZ2h0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHJlY3QgewoxNDQ3NDogIGludCB4OwoxNDQ3NDogIGludCB5OwoxNDQ3NDogIGludCB3 aWR0aDsKMTQ0NzQ6ICBpbnQgaGVpZ2h0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHBsYW5lX3NpemUgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50 IHN1cmZhY2VfcGl0Y2g7CjE0NDc0OiAgaW50IGNocm9tYV9waXRjaDsKMTQ0NzQ6ICBzdHJ1Y3Qg cmVjdCBzdXJmYWNlX3NpemU7CjE0NDc0OiAgc3RydWN0IHJlY3QgY2hyb21hX3NpemU7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfcGxhbmVfZGNjX3BhcmFtIHsKMTQ0NzQ6ICBi b29sIGVuYWJsZTsKMTQ0NzQ6IAoxNDQ3NDogIGludCBtZXRhX3BpdGNoOwoxNDQ3NDogIGJvb2wg aW5kZXBlbmRlbnRfNjRiX2Jsa3M7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgbWV0YV9waXRjaF9jOwox NDQ3NDogIGJvb2wgaW5kZXBlbmRlbnRfNjRiX2Jsa3NfYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCB7CjE0NDc0OiAgU1VSRkFDRV9Q SVhFTF9GT1JNQVRfR1JQSF9CRUdJTiA9IDAsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVM X0ZPUk1BVF9HUlBIX1BBTEVUQV8yNTZfQ09MT1JTID0KMTQ0NzQ6ICAgU1VSRkFDRV9QSVhFTF9G T1JNQVRfR1JQSF9CRUdJTiwKMTQ0NzQ6IAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dS UEhfQVJHQjE1NTUsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX1JH QjU2NSwKMTQ0NzQ6IAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQVJHQjg4ODgs CjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FCR1I4ODg4LAoxNDQ3 NDogCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9BUkdCMjEwMTAxMCwKMTQ0NzQ6 IAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQUJHUjIxMDEwMTAsCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9BQkdSMjEw MTAxMF9YUl9CSUFTLAoxNDQ3NDogCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9B UkdCMTYxNjE2MTYsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FS R0IxNjE2MTYxNkYsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FC R1IxNjE2MTYxNkYsCjE0NDc0OiAKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX1JH QjExMTExMF9GSVgsCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9CR1IxMDExMTFf RklYLAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfUkdCMTExMTEwX0ZMT0FULAox NDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQkdSMTAxMTExX0ZMT0FULAoxNDQ3NDog IFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJREVPX0JFR0lOLAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxf Rk9STUFUX1ZJREVPXzQyMF9ZQ2JDciA9CjE0NDc0OiAgIFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJ REVPX0JFR0lOLAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJREVPXzQyMF9ZQ3JDYiwK MTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9WSURFT180MjBfMTBicGNfWUNiQ3IsCjE0NDc0 OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfVklERU9fNDIwXzEwYnBjX1lDckNiLAoxNDQ3NDogICBT VVJGQUNFX1BJWEVMX0ZPUk1BVF9TVUJTQU1QTEVfRU5ELAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxf Rk9STUFUX1ZJREVPX0FDcllDYjIxMDEwMTAsCjE0NDc0OiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRf VklERU9fQ3JZQ2JBMTAxMDEwMiwKMTQ0NzQ6ICBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9WSURFT19B WUNyQ2I4ODg4LAoxNDQ3NDogIFNVUkZBQ0VfUElYRUxfRk9STUFUX0lOVkFMSUQKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl bnVtIHBpeGVsX2Zvcm1hdCB7CjE0NDc0OiAKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfVU5JTklUSUFM SVpFRCwKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfSU5ERVg4LAoxNDQ3NDogIFBJWEVMX0ZPUk1BVF9S R0I1NjUsCjE0NDc0OiAgUElYRUxfRk9STUFUX0FSR0I4ODg4LAoxNDQ3NDogIFBJWEVMX0ZPUk1B VF9BUkdCMjEwMTAxMCwKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfQVJHQjIxMDEwMTBfWFJCSUFTLAox NDQ3NDogIFBJWEVMX0ZPUk1BVF9GUDE2LAoxNDQ3NDogCjE0NDc0OiAgUElYRUxfRk9STUFUXzQy MEJQUDgsCjE0NDc0OiAgUElYRUxfRk9STUFUXzQyMEJQUDEwLAoxNDQ3NDogCjE0NDc0OiAgUElY RUxfRk9STUFUX0lOVkFMSUQsCjE0NDc0OiAKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfR1JQSF9CRUdJ TiA9IFBJWEVMX0ZPUk1BVF9JTkRFWDgsCjE0NDc0OiAgUElYRUxfRk9STUFUX0dSUEhfRU5EID0g UElYRUxfRk9STUFUX0ZQMTYsCjE0NDc0OiAgUElYRUxfRk9STUFUX1ZJREVPX0JFR0lOID0gUElY RUxfRk9STUFUXzQyMEJQUDgsCjE0NDc0OiAgUElYRUxfRk9STUFUX1ZJREVPX0VORCA9IFBJWEVM X0ZPUk1BVF80MjBCUFAxMCwKMTQ0NzQ6ICBQSVhFTF9GT1JNQVRfVU5LTk9XTgoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSB0aWxlX3NwbGl0X3ZhbHVlcyB7CjE0NDc0OiAgRENfRElTUExB WV9NSUNST19USUxJTkcgPSAweDAsCjE0NDc0OiAgRENfVEhJTl9NSUNST19USUxJTkcgPSAweDEs CjE0NDc0OiAgRENfREVQVEhfTUlDUk9fVElMSU5HID0gMHgyLAoxNDQ3NDogIERDX1JPVEFURURf TUlDUk9fVElMSU5HID0gMHgzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB0cmlwbGVC dWZmZXJfZW5hYmxlIHsKMTQ0NzQ6ICBEQ19UUklQTEVCVUZGRVJfRElTQUJMRSA9IDB4MCwKMTQ0 NzQ6ICBEQ19UUklQTEVCVUZGRVJfRU5BQkxFID0gMHgxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhcnJheV9tb2RlX3ZhbHVlcyB7CjE0NDc0 OiAgRENfQVJSQVlfTElORUFSX0dFTkVSQUwgPSAwLAoxNDQ3NDogIERDX0FSUkFZX0xJTkVBUl9B TExJR05FRCwKMTQ0NzQ6ICBEQ19BUlJBWV8xRF9USUxFRF9USElOMSwKMTQ0NzQ6ICBEQ19BUlJB WV8xRF9USUxFRF9USElDSywKMTQ0NzQ6ICBEQ19BUlJBWV8yRF9USUxFRF9USElOMSwKMTQ0NzQ6 ICBEQ19BUlJBWV9QUlRfVElMRURfVEhJTjEsCjE0NDc0OiAgRENfQVJSQVlfUFJUXzJEX1RJTEVE X1RISU4xLAoxNDQ3NDogIERDX0FSUkFZXzJEX1RJTEVEX1RISUNLLAoxNDQ3NDogIERDX0FSUkFZ XzJEX1RJTEVEX1hfVEhJQ0ssCjE0NDc0OiAgRENfQVJSQVlfUFJUX1RJTEVEX1RISUNLLAoxNDQ3 NDogIERDX0FSUkFZX1BSVF8yRF9USUxFRF9USElDSywKMTQ0NzQ6ICBEQ19BUlJBWV9QUlRfM0Rf VElMRURfVEhJTjEsCjE0NDc0OiAgRENfQVJSQVlfM0RfVElMRURfVEhJTjEsCjE0NDc0OiAgRENf QVJSQVlfM0RfVElMRURfVEhJQ0ssCjE0NDc0OiAgRENfQVJSQVlfM0RfVElMRURfWF9USElDSywK MTQ0NzQ6ICBEQ19BUlJBWV9QUlRfM0RfVElMRURfVEhJQ0ssCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIHRpbGVfbW9kZV92YWx1ZXMgewoxNDQ3NDogIERDX0FERFJfU1VSRl9NSUNST19U SUxJTkdfRElTUExBWSA9IDB4MCwKMTQ0NzQ6ICBEQ19BRERSX1NVUkZfTUlDUk9fVElMSU5HX05P Tl9ESVNQTEFZID0gMHgxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzd2l6emxlX21v ZGVfdmFsdWVzIHsKMTQ0NzQ6ICBEQ19TV19MSU5FQVIgPSAwLAoxNDQ3NDogIERDX1NXXzI1NkJf UyA9IDEsCjE0NDc0OiAgRENfU1dfMjU2X0QgPSAyLAoxNDQ3NDogIERDX1NXXzI1Nl9SID0gMywK MTQ0NzQ6ICBEQ19TV180S0JfUyA9IDUsCjE0NDc0OiAgRENfU1dfNEtCX0QgPSA2LAoxNDQ3NDog IERDX1NXXzRLQl9SID0gNywKMTQ0NzQ6ICBEQ19TV182NEtCX1MgPSA5LAoxNDQ3NDogIERDX1NX XzY0S0JfRCA9IDEwLAoxNDQ3NDogIERDX1NXXzY0S0JfUiA9IDExLAoxNDQ3NDogIERDX1NXX1ZB Ul9TID0gMTMsCjE0NDc0OiAgRENfU1dfVkFSX0QgPSAxNCwKMTQ0NzQ6ICBEQ19TV19WQVJfUiA9 IDE1LAoxNDQ3NDogIERDX1NXXzY0S0JfU19UID0gMTcsCjE0NDc0OiAgRENfU1dfNjRLQl9EX1Qg PSAxOCwKMTQ0NzQ6ICBEQ19TV180S0JfU19YID0gMjEsCjE0NDc0OiAgRENfU1dfNEtCX0RfWCA9 IDIyLAoxNDQ3NDogIERDX1NXXzRLQl9SX1ggPSAyMywKMTQ0NzQ6ICBEQ19TV182NEtCX1NfWCA9 IDI1LAoxNDQ3NDogIERDX1NXXzY0S0JfRF9YID0gMjYsCjE0NDc0OiAgRENfU1dfNjRLQl9SX1gg PSAyNywKMTQ0NzQ6ICBEQ19TV19WQVJfU19YID0gMjksCjE0NDc0OiAgRENfU1dfVkFSX0RfWCA9 IDMwLAoxNDQ3NDogIERDX1NXX1ZBUl9SX1ggPSAzMSwKMTQ0NzQ6ICBEQ19TV19NQVggPSAzMiwK MTQ0NzQ6ICBEQ19TV19VTktOT1dOID0gRENfU1dfTUFYCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiB1bmlvbiBkY190aWxpbmdfaW5mbyB7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IG51 bV9iYW5rczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg IHVuc2lnbmVkIGludCBiYW5rX3dpZHRoOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgYmFua193aWR0 aF9jOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5z aWduZWQgaW50IGJhbmtfaGVpZ2h0OwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgYmFua19oZWlnaHRf YzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHRpbGVfYXNw ZWN0OwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgdGlsZV9hc3BlY3RfYzsKMTQ0NzQ6ICMgMzE3ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfaHdfdHlwZXMuaCIK MTQ0NzQ6ICAgZW51bSB0aWxlX3NwbGl0X3ZhbHVlcyB0aWxlX3NwbGl0OwoxNDQ3NDogICBlbnVt IHRpbGVfc3BsaXRfdmFsdWVzIHRpbGVfc3BsaXRfYzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgZW51bSB0aWxlX21vZGVfdmFsdWVzIHRp bGVfbW9kZTsKMTQ0NzQ6ICAgZW51bSB0aWxlX21vZGVfdmFsdWVzIHRpbGVfbW9kZV9jOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQgaW50 IHBpcGVfY29uZmlnOwoxNDQ3NDogIyAzNDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9kY19od190eXBlcy5oIgoxNDQ3NDogICBlbnVtIGFycmF5X21vZGVfdmFs dWVzIGFycmF5X21vZGU7CjE0NDc0OiAgfSBnZng4OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHsK MTQ0NzQ6ICAgZW51bSBzd2l6emxlX21vZGVfdmFsdWVzIHN3aXp6bGU7CjE0NDc0OiAgIHVuc2ln bmVkIGludCBudW1fcGlwZXM7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBtYXhfY29tcHJlc3NlZF9m cmFnczsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHBpcGVfaW50ZXJsZWF2ZTsKMTQ0NzQ6IAoxNDQ3 NDogICB1bnNpZ25lZCBpbnQgbnVtX2JhbmtzOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVtX3No YWRlcl9lbmdpbmVzOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVtX3JiX3Blcl9zZTsKMTQ0NzQ6 ICAgYm9vbCBzaGFkZXJFbmFibGU7CjE0NDc0OiAKMTQ0NzQ6ICAgYm9vbCBtZXRhX2xpbmVhcjsK MTQ0NzQ6ICAgYm9vbCByYl9hbGlnbmVkOwoxNDQ3NDogICBib29sIHBpcGVfYWxpZ25lZDsKMTQ0 NzQ6ICB9IGdmeDk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfcm90 YXRpb25fYW5nbGUgewoxNDQ3NDogIFJPVEFUSU9OX0FOR0xFXzAgPSAwLAoxNDQ3NDogIFJPVEFU SU9OX0FOR0xFXzkwLAoxNDQ3NDogIFJPVEFUSU9OX0FOR0xFXzE4MCwKMTQ0NzQ6ICBST1RBVElP Tl9BTkdMRV8yNzAsCjE0NDc0OiAgUk9UQVRJT05fQU5HTEVfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IGVudW0gZGNfc2Nhbl9kaXJlY3Rpb24gewoxNDQ3NDogIFNDQU5fRElSRUNUSU9O X1VOS05PV04gPSAwLAoxNDQ3NDogIFNDQU5fRElSRUNUSU9OX0hPUklaT05UQUwgPSAxLAoxNDQ3 NDogIFNDQU5fRElSRUNUSU9OX1ZFUlRJQ0FMID0gMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY19jdXJzb3JfcG9zaXRpb24gewoxNDQ3NDogIHVpbnQzMl90IHg7CjE0NDc0OiAg dWludDMyX3QgeTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHhfaG90c3BvdDsKMTQ0NzQ6ICB1 aW50MzJfdCB5X2hvdHNwb3Q7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICBib29sIGVuYWJsZTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj X2N1cnNvcl9taV9wYXJhbSB7CjE0NDc0OiAgdW5zaWduZWQgaW50IHBpeGVsX2Nsa19raHo7CjE0 NDc0OiAgdW5zaWduZWQgaW50IHJlZl9jbGtfa2h6OwoxNDQ3NDogIHN0cnVjdCByZWN0IHZpZXdw b3J0OwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGhfc2NhbGVfcmF0aW87CjE0NDc0OiAgc3Ry dWN0IGZpeGVkMzFfMzIgdl9zY2FsZV9yYXRpbzsKMTQ0NzQ6ICBlbnVtIGRjX3JvdGF0aW9uX2Fu Z2xlIHJvdGF0aW9uOwoxNDQ3NDogIGJvb2wgbWlycm9yOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIEdBTU1BX1JHQl8yNTZfRU5UUklFUyA9 IDI1NiwKMTQ0NzQ6ICBHQU1NQV9SR0JfRkxPQVRfMTAyNF9FTlRSSUVTID0gMTAyNCwKMTQ0NzQ6 ICBHQU1NQV9DU19URk1fMURfRU5UUklFUyA9IDQwOTYsCjE0NDc0OiAgR0FNTUFfQ1VTVE9NX0VO VFJJRVMgPSA0MDk2LAoxNDQ3NDogIEdBTU1BX01BWF9FTlRSSUVTID0gNDA5NgoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19nYW1tYV90eXBlIHsKMTQ0NzQ6ICBHQU1NQV9SR0JfMjU2 ID0gMSwKMTQ0NzQ6ICBHQU1NQV9SR0JfRkxPQVRfMTAyNCA9IDIsCjE0NDc0OiAgR0FNTUFfQ1Nf VEZNXzFEID0gMywKMTQ0NzQ6ICBHQU1NQV9DVVNUT00gPSA0LAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gewoxNDQ3NDogIHVpbnQxNl90IG1hdHJpeFsx Ml07CjE0NDc0OiAgYm9vbCBlbmFibGVfYWRqdXN0bWVudDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkY19yZ2JfZml4ZWQgewoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIHJlZDsK MTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBncmVlbjsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8z MiBibHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2dhbW1hIHsKMTQ0NzQ6 ICBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKMTQ0NzQ6ICBlbnVtIGRjX2dhbW1hX3R5cGUgdHlwZTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfZ2FtbWFfZW50cmllcyB7CjE0NDc0OiAgIHN0cnVjdCBmaXhlZDMxXzMyIHJlZFtHQU1NQV9N QVhfRU5UUklFU107CjE0NDc0OiAgIHN0cnVjdCBmaXhlZDMxXzMyIGdyZWVuW0dBTU1BX01BWF9F TlRSSUVTXTsKMTQ0NzQ6ICAgc3RydWN0IGZpeGVkMzFfMzIgYmx1ZVtHQU1NQV9NQVhfRU5UUklF U107CjE0NDc0OiAgfSBlbnRyaWVzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9v bCBpc19pZGVudGl0eTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDQ1NiAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCjE0NDc0OiBlbnVtIGRjX2N1 cnNvcl9jb2xvcl9mb3JtYXQgewoxNDQ3NDogIENVUlNPUl9NT0RFX01PTk8sCjE0NDc0OiAgQ1VS U09SX01PREVfQ09MT1JfMUJJVF9BTkQsCjE0NDc0OiAgQ1VSU09SX01PREVfQ09MT1JfUFJFX01V TFRJUExJRURfQUxQSEEsCjE0NDc0OiAgQ1VSU09SX01PREVfQ09MT1JfVU5fUFJFX01VTFRJUExJ RURfQUxQSEEsCjE0NDc0OiAgQ1VSU09SX01PREVfQ09MT1JfNjRCSVRfRlBfUFJFX01VTFRJUExJ RUQsCjE0NDc0OiAgQ1VSU09SX01PREVfQ09MT1JfNjRCSVRfRlBfVU5fUFJFX01VTFRJUExJRUQK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGRjX2N1cnNvcl9hdHRyaWJ1dGVfZmxhZ3MgewoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQzMl90IEVOQUJMRV9NQUdOSUZJQ0FUSU9OOjE7CjE0NDc0 OiAgIHVpbnQzMl90IElOVkVSU0VfVFJBTlNQQVJFTlRfQ0xBTVBJTkc6MTsKMTQ0NzQ6ICAgdWlu dDMyX3QgSE9SSVpPTlRBTF9NSVJST1I6MTsKMTQ0NzQ6ICAgdWludDMyX3QgVkVSVElDQUxfTUlS Uk9SOjE7CjE0NDc0OiAgIHVpbnQzMl90IElOVkVSVF9QSVhFTF9EQVRBOjE7CjE0NDc0OiAgIHVp bnQzMl90IFpFUk9fRVhQQU5TSU9OOjE7CjE0NDc0OiAgIHVpbnQzMl90IE1JTl9NQVhfSU5WRVJU OjE7CjE0NDc0OiAgIHVpbnQzMl90IEVOQUJMRV9DVVJTT1JfREVHQU1NQToxOwoxNDQ3NDogICB1 aW50MzJfdCBSRVNFUlZFRDoyNDsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDMyX3QgdmFs dWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMg ewoxNDQ3NDogIHVuaW9uIGxhcmdlX2ludGVnZXIgYWRkcmVzczsKMTQ0NzQ6ICB1aW50MzJfdCBw aXRjaDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qgd2lkdGg7CjE0NDc0OiAgdWlu dDMyX3QgaGVpZ2h0OwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19jdXJzb3JfY29sb3JfZm9ybWF0 IGNvbG9yX2Zvcm1hdDsKMTQ0NzQ6ICB1aW50MzJfdCBzZHJfd2hpdGVfbGV2ZWw7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNfcm90YXRpb25fYW5nbGUgcm90YXRpb25fYW5nbGU7CjE0 NDc0OiAKMTQ0NzQ6ICB1bmlvbiBkY19jdXJzb3JfYXR0cmlidXRlX2ZsYWdzIGF0dHJpYnV0ZV9m bGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcHBfY3Vyc29yX2F0dHJpYnV0 ZXMgewoxNDQ3NDogIGludCBiaWFzOwoxNDQ3NDogIGludCBzY2FsZTsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2NvbG9yX3NwYWNlIHsKMTQ0NzQ6ICBD T0xPUl9TUEFDRV9VTktOT1dOLAoxNDQ3NDogIENPTE9SX1NQQUNFX1NSR0IsCjE0NDc0OiAgQ09M T1JfU1BBQ0VfWFJfUkdCLAoxNDQ3NDogIENPTE9SX1NQQUNFX1NSR0JfTElNSVRFRCwKMTQ0NzQ6 ICBDT0xPUl9TUEFDRV9NU1JFRl9TQ1JHQiwKMTQ0NzQ6ICBDT0xPUl9TUEFDRV9ZQ0JDUjYwMSwK MTQ0NzQ6ICBDT0xPUl9TUEFDRV9ZQ0JDUjcwOSwKMTQ0NzQ6ICBDT0xPUl9TUEFDRV9YVl9ZQ0Nf NzA5LAoxNDQ3NDogIENPTE9SX1NQQUNFX1hWX1lDQ182MDEsCjE0NDc0OiAgQ09MT1JfU1BBQ0Vf WUNCQ1I2MDFfTElNSVRFRCwKMTQ0NzQ6ICBDT0xPUl9TUEFDRV9ZQ0JDUjcwOV9MSU1JVEVELAox NDQ3NDogIENPTE9SX1NQQUNFXzIwMjBfUkdCX0ZVTExSQU5HRSwKMTQ0NzQ6ICBDT0xPUl9TUEFD RV8yMDIwX1JHQl9MSU1JVEVEUkFOR0UsCjE0NDc0OiAgQ09MT1JfU1BBQ0VfMjAyMF9ZQ0JDUiwK MTQ0NzQ6ICBDT0xPUl9TUEFDRV9BRE9CRVJHQiwKMTQ0NzQ6ICBDT0xPUl9TUEFDRV9EQ0lQMywK MTQ0NzQ6ICBDT0xPUl9TUEFDRV9ESVNQTEFZTkFUSVZFLAoxNDQ3NDogIENPTE9SX1NQQUNFX0RP TEJZVklTSU9OLAoxNDQ3NDogIENPTE9SX1NQQUNFX0FQUENUUkwsCjE0NDc0OiAgQ09MT1JfU1BB Q0VfQ1VTVE9NUE9JTlRTLAoxNDQ3NDogIENPTE9SX1NQQUNFX1lDQkNSNzA5X0JMQUNLLAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19kaXRoZXJfb3B0aW9uIHsKMTQ0NzQ6ICBESVRI RVJfT1BUSU9OX0RFRkFVTFQsCjE0NDc0OiAgRElUSEVSX09QVElPTl9ESVNBQkxFLAoxNDQ3NDog IERJVEhFUl9PUFRJT05fRk02LAoxNDQ3NDogIERJVEhFUl9PUFRJT05fRk04LAoxNDQ3NDogIERJ VEhFUl9PUFRJT05fRk0xMCwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1NQQVRJQUw2X0ZSQU1FX1JB TkRPTSwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1NQQVRJQUw4X0ZSQU1FX1JBTkRPTSwKMTQ0NzQ6 ICBESVRIRVJfT1BUSU9OX1NQQVRJQUwxMF9GUkFNRV9SQU5ET00sCjE0NDc0OiAgRElUSEVSX09Q VElPTl9TUEFUSUFMNiwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1NQQVRJQUw4LAoxNDQ3NDogIERJ VEhFUl9PUFRJT05fU1BBVElBTDEwLAoxNDQ3NDogIERJVEhFUl9PUFRJT05fVFJVTjYsCjE0NDc0 OiAgRElUSEVSX09QVElPTl9UUlVOOCwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1RSVU4xMCwKMTQ0 NzQ6ICBESVRIRVJfT1BUSU9OX1RSVU4xMF9TUEFUSUFMOCwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9O X1RSVU4xMF9TUEFUSUFMNiwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1RSVU4xMF9GTTgsCjE0NDc0 OiAgRElUSEVSX09QVElPTl9UUlVOMTBfRk02LAoxNDQ3NDogIERJVEhFUl9PUFRJT05fVFJVTjEw X1NQQVRJQUw4X0ZNNiwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX1NQQVRJQUwxMF9GTTgsCjE0NDc0 OiAgRElUSEVSX09QVElPTl9TUEFUSUFMMTBfRk02LAoxNDQ3NDogIERJVEhFUl9PUFRJT05fVFJV TjhfU1BBVElBTDYsCjE0NDc0OiAgRElUSEVSX09QVElPTl9UUlVOOF9GTTYsCjE0NDc0OiAgRElU SEVSX09QVElPTl9TUEFUSUFMOF9GTTYsCjE0NDc0OiAgRElUSEVSX09QVElPTl9NQVggPSBESVRI RVJfT1BUSU9OX1NQQVRJQUw4X0ZNNiwKMTQ0NzQ6ICBESVRIRVJfT1BUSU9OX0lOVkFMSUQKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfcXVhbnRpemF0aW9uX3JhbmdlIHsKMTQ0NzQ6 ICBRVUFOVElaQVRJT05fUkFOR0VfVU5LTk9XTiwKMTQ0NzQ6ICBRVUFOVElaQVRJT05fUkFOR0Vf RlVMTCwKMTQ0NzQ6ICBRVUFOVElaQVRJT05fUkFOR0VfTElNSVRFRAoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBkY19keW5hbWljX2V4cGFuc2lvbiB7CjE0NDc0OiAgRFlOX0VYUEFOU0lP Tl9BVVRPLAoxNDQ3NDogIERZTl9FWFBBTlNJT05fRElTQUJMRQoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNjYWxpbmdfdGFwcyB7CjE0NDc0 OiAgdWludDMyX3Qgdl90YXBzOwoxNDQ3NDogIHVpbnQzMl90IGhfdGFwczsKMTQ0NzQ6ICB1aW50 MzJfdCB2X3RhcHNfYzsKMTQ0NzQ6ICB1aW50MzJfdCBoX3RhcHNfYzsKMTQ0NzQ6ICBib29sIGlu dGVnZXJfc2NhbGluZzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfdGltaW5nX3N0 YW5kYXJkIHsKMTQ0NzQ6ICBEQ19USU1JTkdfU1RBTkRBUkRfVU5ERUZJTkVELAoxNDQ3NDogIERD X1RJTUlOR19TVEFOREFSRF9ETVQsCjE0NDc0OiAgRENfVElNSU5HX1NUQU5EQVJEX0dURiwKMTQ0 NzQ6ICBEQ19USU1JTkdfU1RBTkRBUkRfQ1ZULAoxNDQ3NDogIERDX1RJTUlOR19TVEFOREFSRF9D VlRfUkIsCjE0NDc0OiAgRENfVElNSU5HX1NUQU5EQVJEX0NFQTc3MCwKMTQ0NzQ6ICBEQ19USU1J TkdfU1RBTkRBUkRfQ0VBODYxLAoxNDQ3NDogIERDX1RJTUlOR19TVEFOREFSRF9IRE1JLAoxNDQ3 NDogIERDX1RJTUlOR19TVEFOREFSRF9UVl9OVFNDLAoxNDQ3NDogIERDX1RJTUlOR19TVEFOREFS RF9UVl9OVFNDX0osCjE0NDc0OiAgRENfVElNSU5HX1NUQU5EQVJEX1RWX1BBTCwKMTQ0NzQ6ICBE Q19USU1JTkdfU1RBTkRBUkRfVFZfUEFMX00sCjE0NDc0OiAgRENfVElNSU5HX1NUQU5EQVJEX1RW X1BBTF9DTiwKMTQ0NzQ6ICBEQ19USU1JTkdfU1RBTkRBUkRfVFZfU0VDQU0sCjE0NDc0OiAgRENf VElNSU5HX1NUQU5EQVJEX0VYUExJQ0lULAoxNDQ3NDogCjE0NDc0OiAgRENfVElNSU5HX1NUQU5E QVJEX1VTRVJfT1ZFUlJJREUsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19USU1JTkdfU1RBTkRBUkRfTUFY CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2NvbG9yX2RlcHRoIHsKMTQ0NzQ6ICBD T0xPUl9ERVBUSF9VTkRFRklORUQsCjE0NDc0OiAgQ09MT1JfREVQVEhfNjY2LAoxNDQ3NDogIENP TE9SX0RFUFRIXzg4OCwKMTQ0NzQ6ICBDT0xPUl9ERVBUSF8xMDEwMTAsCjE0NDc0OiAgQ09MT1Jf REVQVEhfMTIxMjEyLAoxNDQ3NDogIENPTE9SX0RFUFRIXzE0MTQxNCwKMTQ0NzQ6ICBDT0xPUl9E RVBUSF8xNjE2MTYsCjE0NDc0OiAgQ09MT1JfREVQVEhfOTk5LAoxNDQ3NDogIENPTE9SX0RFUFRI XzExMTExMSwKMTQ0NzQ6ICBDT0xPUl9ERVBUSF9DT1VOVAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBkY19waXhlbF9lbmNvZGluZyB7CjE0NDc0OiAgUElYRUxfRU5DT0RJTkdfVU5ERUZJ TkVELAoxNDQ3NDogIFBJWEVMX0VOQ09ESU5HX1JHQiwKMTQ0NzQ6ICBQSVhFTF9FTkNPRElOR19Z Q0JDUjQyMiwKMTQ0NzQ6ICBQSVhFTF9FTkNPRElOR19ZQ0JDUjQ0NCwKMTQ0NzQ6ICBQSVhFTF9F TkNPRElOR19ZQ0JDUjQyMCwKMTQ0NzQ6ICBQSVhFTF9FTkNPRElOR19DT1VOVAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19hc3BlY3RfcmF0aW8gewoxNDQ3NDogIEFTUEVDVF9SQVRJ T19OT19EQVRBLAoxNDQ3NDogIEFTUEVDVF9SQVRJT180XzMsCjE0NDc0OiAgQVNQRUNUX1JBVElP XzE2XzksCjE0NDc0OiAgQVNQRUNUX1JBVElPXzY0XzI3LAoxNDQ3NDogIEFTUEVDVF9SQVRJT18y NTZfMTM1LAoxNDQ3NDogIEFTUEVDVF9SQVRJT19GVVRVUkUKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IGVudW0gc2Nhbm5pbmdfdHlwZSB7CjE0NDc0OiAgU0NBTk5JTkdfVFlQRV9OT0RBVEEgPSAw LAoxNDQ3NDogIFNDQU5OSU5HX1RZUEVfT1ZFUlNDQU4sCjE0NDc0OiAgU0NBTk5JTkdfVFlQRV9V TkRFUlNDQU4sCjE0NDc0OiAgU0NBTk5JTkdfVFlQRV9GVVRVUkUsCjE0NDc0OiAgU0NBTk5JTkdf VFlQRV9VTkRFRklORUQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19jcnRjX3Rp bWluZ19mbGFncyB7CjE0NDc0OiAgdWludDMyX3QgSU5URVJMQUNFIDoxOwoxNDQ3NDogIHVpbnQz Ml90IEhTWU5DX1BPU0lUSVZFX1BPTEFSSVRZIDoxOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qg VlNZTkNfUE9TSVRJVkVfUE9MQVJJVFkgOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQz Ml90IEhPUlpfQ09VTlRfQllfVFdPOjE7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBFWENMVVNJ VkVfM0QgOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IFJJR0hUX0VZRV8zRF9Q T0xBUklUWSA6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IFNVQl9TQU1QTEVfM0QgOjE7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBVU0VfSU5fM0RfVklFV19PTkxZIDoxOwoxNDQ3NDogCjE0 NDc0OiAgdWludDMyX3QgU1RFUkVPXzNEX1BSRUZFUkVOQ0UgOjE7CjE0NDc0OiAKMTQ0NzQ6ICB1 aW50MzJfdCBZX09OTFkgOjE7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBZQ0JDUjQyMCA6MTsK MTQ0NzQ6ICB1aW50MzJfdCBEVERfQ09VTlRFUiA6NTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90 IEZPUkNFX0hEUiA6MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBM VEVfMzQwTUNTQ19TQ1JBTUJMRToxOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgRFNDIDogMTsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfdGltaW5nXzNkX2Zvcm1hdCB7CjE0NDc0 OiAgVElNSU5HXzNEX0ZPUk1BVF9OT05FLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfRlJBTUVf QUxURVJOQVRFLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfSU5CQU5EX0ZBLAoxNDQ3NDogIFRJ TUlOR18zRF9GT1JNQVRfRFBfSERNSV9JTkJBTkRfRkEsCjE0NDc0OiAKMTQ0NzQ6ICBUSU1JTkdf M0RfRk9STUFUX1NJREVCQU5EX0ZBLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfSFdfRlJBTUVf UEFDS0lORywKMTQ0NzQ6ICBUSU1JTkdfM0RfRk9STUFUX1NXX0ZSQU1FX1BBQ0tJTkcsCjE0NDc0 OiAgVElNSU5HXzNEX0ZPUk1BVF9ST1dfSU5URVJMRUFWRSwKMTQ0NzQ6ICBUSU1JTkdfM0RfRk9S TUFUX0NPTFVNTl9JTlRFUkxFQVZFLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfUElYRUxfSU5U RVJMRUFWRSwKMTQ0NzQ6ICBUSU1JTkdfM0RfRk9STUFUX1NJREVfQllfU0lERSwKMTQ0NzQ6ICBU SU1JTkdfM0RfRk9STUFUX1RPUF9BTkRfQk9UVE9NLAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRf U0JTX1NXX1BBQ0tFRCwKMTQ0NzQ6IAoxNDQ3NDogIFRJTUlOR18zRF9GT1JNQVRfVEJfU1dfUEFD S0VELAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBUSU1JTkdfM0RfRk9STUFUX01BWCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19kc2NfY29uZmlnIHsKMTQ0NzQ6ICB1aW50MzJf dCBudW1fc2xpY2VzX2g7CjE0NDc0OiAgdWludDMyX3QgbnVtX3NsaWNlc192OwoxNDQ3NDogIHVp bnQzMl90IGJpdHNfcGVyX3BpeGVsOwoxNDQ3NDogIGJvb2wgYmxvY2tfcHJlZF9lbmFibGU7CjE0 NDc0OiAgdWludDMyX3QgbGluZWJ1Zl9kZXB0aDsKMTQ0NzQ6ICB1aW50MzJfdCB2ZXJzaW9uX21p bm9yOwoxNDQ3NDogIGJvb2wgeWNiY3I0MjJfc2ltcGxlOwoxNDQ3NDogIGludDMyX3QgcmNfYnVm ZmVyX3NpemU7CjE0NDc0OiB9OwoxNDQ3NDogc3RydWN0IGRjX2NydGNfdGltaW5nIHsKMTQ0NzQ6 ICB1aW50MzJfdCBoX3RvdGFsOwoxNDQ3NDogIHVpbnQzMl90IGhfYm9yZGVyX2xlZnQ7CjE0NDc0 OiAgdWludDMyX3QgaF9hZGRyZXNzYWJsZTsKMTQ0NzQ6ICB1aW50MzJfdCBoX2JvcmRlcl9yaWdo dDsKMTQ0NzQ6ICB1aW50MzJfdCBoX2Zyb250X3BvcmNoOwoxNDQ3NDogIHVpbnQzMl90IGhfc3lu Y193aWR0aDsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHZfdG90YWw7CjE0NDc0OiAgdWludDMy X3Qgdl9ib3JkZXJfdG9wOwoxNDQ3NDogIHVpbnQzMl90IHZfYWRkcmVzc2FibGU7CjE0NDc0OiAg dWludDMyX3Qgdl9ib3JkZXJfYm90dG9tOwoxNDQ3NDogIHVpbnQzMl90IHZfZnJvbnRfcG9yY2g7 CjE0NDc0OiAgdWludDMyX3Qgdl9zeW5jX3dpZHRoOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qg cGl4X2Nsa18xMDBoejsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHZpYzsKMTQ0NzQ6ICB1aW50 MzJfdCBoZG1pX3ZpYzsKMTQ0NzQ6ICBlbnVtIGRjX3RpbWluZ18zZF9mb3JtYXQgdGltaW5nXzNk X2Zvcm1hdDsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGRpc3BsYXlfY29sb3JfZGVwdGg7 CjE0NDc0OiAgZW51bSBkY19waXhlbF9lbmNvZGluZyBwaXhlbF9lbmNvZGluZzsKMTQ0NzQ6ICBl bnVtIGRjX2FzcGVjdF9yYXRpbyBhc3BlY3RfcmF0aW87CjE0NDc0OiAgZW51bSBzY2FubmluZ190 eXBlIHNjYW5fdHlwZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19jcnRjX3RpbWluZ19mbGFn cyBmbGFnczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfZHNjX2NvbmZpZyBkc2NfY2ZnOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSB0cmlnZ2VyX2RlbGF5IHsKMTQ0NzQ6ICBUUklHR0VSX0RFTEFZ X05FWFRfUElYRUwgPSAwLAoxNDQ3NDogIFRSSUdHRVJfREVMQVlfTkVYVF9MSU5FLAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjcnRjX2V2ZW50IHsKMTQ0NzQ6ICBDUlRDX0VWRU5UX1ZT WU5DX1JJU0lORyA9IDAsCjE0NDc0OiAgQ1JUQ19FVkVOVF9WU1lOQ19GQUxMSU5HCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3J0Y190cmlnZ2VyX2luZm8gewoxNDQ3NDogIGJvb2wg ZW5hYmxlZDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpldmVudF9zb3VyY2U7CjE0 NDc0OiAgZW51bSBjcnRjX2V2ZW50IGV2ZW50OwoxNDQ3NDogIGVudW0gdHJpZ2dlcl9kZWxheSBk ZWxheTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19jcnRjX3RpbWluZ19hZGp1 c3QgewoxNDQ3NDogIHVpbnQzMl90IHZfdG90YWxfbWluOwoxNDQ3NDogIHVpbnQzMl90IHZfdG90 YWxfbWF4OwoxNDQ3NDogIHVpbnQzMl90IHZfdG90YWxfbWlkOwoxNDQ3NDogIHVpbnQzMl90IHZf dG90YWxfbWlkX2ZyYW1lX251bTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBlbnVtIHZyYW1fdHlwZSB7CjE0NDc0OiAgVklERU9fTUVNT1JZX1RZUEVfR0REUjUgPSAy LAoxNDQ3NDogIFZJREVPX01FTU9SWV9UWVBFX0REUjMgPSAzLAoxNDQ3NDogIFZJREVPX01FTU9S WV9UWVBFX0REUjQgPSA0LAoxNDQ3NDogIFZJREVPX01FTU9SWV9UWVBFX0hCTSA9IDUsCjE0NDc0 OiAgVklERU9fTUVNT1JZX1RZUEVfR0REUjYgPSA2LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBkd2JfY252X291dF9icGMgewoxNDQ3NDogIERXQl9DTlZfT1VUX0JQQ184QlBDID0gMCwK MTQ0NzQ6ICBEV0JfQ05WX09VVF9CUENfMTBCUEMgPSAxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBkd2Jfb3V0cHV0X2RlcHRoIHsKMTQ0NzQ6ICBEV0JfT1VUUFVUX1BJWEVMX0RFUFRI XzhCUEMgPSAwLAoxNDQ3NDogIERXQl9PVVRQVVRfUElYRUxfREVQVEhfMTBCUEMgPSAxLAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkd2JfY2FwdHVyZV9yYXRlIHsKMTQ0NzQ6ICBkd2Jf Y2FwdHVyZV9yYXRlXzAgPSAwLAoxNDQ3NDogIGR3Yl9jYXB0dXJlX3JhdGVfMSA9IDEsCjE0NDc0 OiAgZHdiX2NhcHR1cmVfcmF0ZV8yID0gMiwKMTQ0NzQ6ICBkd2JfY2FwdHVyZV9yYXRlXzMgPSAz LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkd2Jfc2NhbGVyX21vZGUgewoxNDQ3NDog IGR3Yl9zY2FsZXJfbW9kZV9ieXBhc3M0NDQgPSAwLAoxNDQ3NDogIGR3Yl9zY2FsZXJfbW9kZV9y Z2I0NDQgPSAxLAoxNDQ3NDogIGR3Yl9zY2FsZXJfbW9kZV95dXY0NDQgPSAyLAoxNDQ3NDogIGR3 Yl9zY2FsZXJfbW9kZV95dXY0MjAgPSAzCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGR3 Yl9zdWJzYW1wbGVfcG9zaXRpb24gewoxNDQ3NDogIERXQl9JTlRFUlNUSVRJQUxfU1VCU0FNUExJ TkcgPSAwLAoxNDQ3NDogIERXQl9DT1NJVEVEX1NVQlNBTVBMSU5HID0gMQoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogZW51bSBkd2Jfc3RlcmVvX2V5ZV9zZWxlY3QgewoxNDQ3NDogIERXQl9TVEVS RU9fRVlFX0xFRlQgPSAxLAoxNDQ3NDogIERXQl9TVEVSRU9fRVlFX1JJR0hUID0gMiwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHdiX3N0ZXJlb190eXBlIHsKMTQ0NzQ6ICBEV0JfU1RF UkVPX1RZUEVfRlJBTUVfUEFDS0lORyA9IDAsCjE0NDc0OiAgRFdCX1NURVJFT19UWVBFX0ZSQU1F X1NFUVVFTlRJQUwgPSAzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBtY2lmX2J1Zl9wYXJhbXMgewoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyBsdW1h X2FkZHJlc3NbNF07CjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIGNocm9tYV9hZGRyZXNzWzRd OwoxNDQ3NDogIHVuc2lnbmVkIGludCBsdW1hX3BpdGNoOwoxNDQ3NDogIHVuc2lnbmVkIGludCBj aHJvbWFfcGl0Y2g7CjE0NDc0OiAgdW5zaWduZWQgaW50IHdhcm11cF9waXRjaDsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgc3dsb2NrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCB0Z19jb2xvciB7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MTZfdCBjb2xvcl9yX2Ny OwoxNDQ3NDogIHVpbnQxNl90IGNvbG9yX2dfeTsKMTQ0NzQ6ICB1aW50MTZfdCBjb2xvcl9iX2Ni OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kY190eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2RhbF90eXBlcy5oIiAxCjE0NDc0OiAjIDI5ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9kYWxfdHlwZXMu aCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2lu Y2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2RhbF90eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIiAxCjE0 NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVk ZS9kYWxfdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGFsX2xvZ2dlcjsKMTQ0NzQ6 IHN0cnVjdCBkY19iaW9zOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjZV92ZXJzaW9uIHsKMTQ0NzQ6 ICBEQ0VfVkVSU0lPTl9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBEQ0VfVkVSU0lPTl84XzAsCjE0 NDc0OiAgRENFX1ZFUlNJT05fOF8xLAoxNDQ3NDogIERDRV9WRVJTSU9OXzhfMywKMTQ0NzQ6ICBE Q0VfVkVSU0lPTl8xMF8wLAoxNDQ3NDogIERDRV9WRVJTSU9OXzExXzAsCjE0NDc0OiAgRENFX1ZF UlNJT05fMTFfMiwKMTQ0NzQ6ICBEQ0VfVkVSU0lPTl8xMV8yMiwKMTQ0NzQ6ICBEQ0VfVkVSU0lP Tl8xMl8wLAoxNDQ3NDogIERDRV9WRVJTSU9OXzEyXzEsCjE0NDc0OiAgRENFX1ZFUlNJT05fTUFY LAoxNDQ3NDogIERDTl9WRVJTSU9OXzFfMCwKMTQ0NzQ6ICBEQ05fVkVSU0lPTl8xXzAxLAoxNDQ3 NDogIERDTl9WRVJTSU9OXzJfMCwKMTQ0NzQ6ICBEQ05fVkVSU0lPTl8yXzEsCjE0NDc0OiAgRENO X1ZFUlNJT05fTUFYCjE0NDc0OiB9OwoxNDQ3NDogIyAzOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX3R5cGVzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmplY3RfZGVmcy5o IiAxCjE0NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv aW5jbHVkZS9ncnBoX29iamVjdF9kZWZzLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiIDEKMTQ0NzQ6 ICMgMzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dy cGhfb2JqZWN0X2lkLmgiCjE0NDc0OiBlbnVtIG9iamVjdF90eXBlIHsKMTQ0NzQ6ICBPQkpFQ1Rf VFlQRV9VTktOT1dOID0gMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgT0JKRUNUX1RZUEVfR1BV LAoxNDQ3NDogIE9CSkVDVF9UWVBFX0VOQ09ERVIsCjE0NDc0OiAgT0JKRUNUX1RZUEVfQ09OTkVD VE9SLAoxNDQ3NDogIE9CSkVDVF9UWVBFX1JPVVRFUiwKMTQ0NzQ6ICBPQkpFQ1RfVFlQRV9HRU5F UklDLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBPQkpFQ1RfVFlQRV9BVURJTywKMTQ0NzQ6ICBP QkpFQ1RfVFlQRV9DT05UUk9MTEVSLAoxNDQ3NDogIE9CSkVDVF9UWVBFX0NMT0NLX1NPVVJDRSwK MTQ0NzQ6ICBPQkpFQ1RfVFlQRV9FTkdJTkUsCjE0NDc0OiAKMTQ0NzQ6ICBPQkpFQ1RfVFlQRV9D T1VOVAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIG9iamVjdF9lbnVtX2lk IHsKMTQ0NzQ6ICBFTlVNX0lEX1VOS05PV04gPSAwLAoxNDQ3NDogIEVOVU1fSURfMSwKMTQ0NzQ6 ICBFTlVNX0lEXzIsCjE0NDc0OiAgRU5VTV9JRF8zLAoxNDQ3NDogIEVOVU1fSURfNCwKMTQ0NzQ6 ICBFTlVNX0lEXzUsCjE0NDc0OiAgRU5VTV9JRF82LAoxNDQ3NDogIEVOVU1fSURfNywKMTQ0NzQ6 IAoxNDQ3NDogIEVOVU1fSURfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBnZW5lcmljX2lkIHsKMTQ0NzQ6ICBHRU5FUklDX0lEX1VOS05PV04gPSAwLAoxNDQ3NDog IEdFTkVSSUNfSURfTVhNX09QTSwKMTQ0NzQ6ICBHRU5FUklDX0lEX0dMU1lOQywKMTQ0NzQ6ICBH RU5FUklDX0lEX1NURVJFTywKMTQ0NzQ6IAoxNDQ3NDogIEdFTkVSSUNfSURfQ09VTlQKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjb250cm9sbGVyX2lkIHsKMTQ0NzQ6ICBD T05UUk9MTEVSX0lEX1VOREVGSU5FRCA9IDAsCjE0NDc0OiAgQ09OVFJPTExFUl9JRF9EMCwKMTQ0 NzQ6ICBDT05UUk9MTEVSX0lEX0QxLAoxNDQ3NDogIENPTlRST0xMRVJfSURfRDIsCjE0NDc0OiAg Q09OVFJPTExFUl9JRF9EMywKMTQ0NzQ6ICBDT05UUk9MTEVSX0lEX0Q0LAoxNDQ3NDogIENPTlRS T0xMRVJfSURfRDUsCjE0NDc0OiAgQ09OVFJPTExFUl9JRF9VTkRFUkxBWTAsCjE0NDc0OiAgQ09O VFJPTExFUl9JRF9NQVggPSBDT05UUk9MTEVSX0lEX1VOREVSTEFZMAoxNDQ3NDogfTsKMTQ0NzQ6 ICMgOTMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dy cGhfb2JqZWN0X2lkLmgiCjE0NDc0OiBlbnVtIGNsb2NrX3NvdXJjZV9pZCB7CjE0NDc0OiAgQ0xP Q0tfU09VUkNFX0lEX1VOREVGSU5FRCA9IDAsCjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0lEX1BMTDAs CjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0lEX1BMTDEsCjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0lEX1BM TDIsCjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0lEX0VYVEVSTkFMLAoxNDQ3NDogIENMT0NLX1NPVVJD RV9JRF9EQ1BMTCwKMTQ0NzQ6ICBDTE9DS19TT1VSQ0VfSURfREZTLAoxNDQ3NDogIENMT0NLX1NP VVJDRV9JRF9WQ0UsCjE0NDc0OiAKMTQ0NzQ6ICBDTE9DS19TT1VSQ0VfSURfRFBfRFRPLAoxNDQ3 NDogCjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEwwLAoxNDQ3NDogIENMT0NLX1NP VVJDRV9DT01CT19QSFlfUExMMSwKMTQ0NzQ6ICBDTE9DS19TT1VSQ0VfQ09NQk9fUEhZX1BMTDIs CjE0NDc0OiAgQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEwzLAoxNDQ3NDogIENMT0NLX1NPVVJD RV9DT01CT19QSFlfUExMNCwKMTQ0NzQ6ICBDTE9DS19TT1VSQ0VfQ09NQk9fUEhZX1BMTDUsCjE0 NDc0OiAgQ0xPQ0tfU09VUkNFX0NPTUJPX0RJU1BMQVlfUExMMAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBlbnVtIGVuY29kZXJfaWQgewoxNDQ3NDogIEVOQ09ERVJfSURfVU5LTk9X TiA9IDAsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfTFZEUywK MTQ0NzQ6ICBFTkNPREVSX0lEX0lOVEVSTkFMX1RNRFMxLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5U RVJOQUxfVE1EUzIsCjE0NDc0OiAgRU5DT0RFUl9JRF9JTlRFUk5BTF9EQUMxLAoxNDQ3NDogIEVO Q09ERVJfSURfSU5URVJOQUxfREFDMiwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRU5DT0RFUl9J RF9JTlRFUk5BTF9MVlRNMSwKMTQ0NzQ6ICBFTkNPREVSX0lEX0lOVEVSTkFMX0hETUksCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX1RNRFMxLAoxNDQ3 NDogIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQX0RBQzEsCjE0NDc0OiAgRU5DT0RFUl9JRF9J TlRFUk5BTF9LTERTQ1BfREFDMiwKMTQ0NzQ6IAoxNDQ3NDogIEVOQ09ERVJfSURfRVhURVJOQUxf TVZQVV9GUEdBLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfRERJLAoxNDQ3NDogIEVOQ09E RVJfSURfSU5URVJOQUxfVU5JUEhZLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfS0xEU0NQ X0xWVE1BLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMSwKMTQ0NzQ6ICBFTkNP REVSX0lEX0lOVEVSTkFMX1VOSVBIWTIsCjE0NDc0OiAgRU5DT0RFUl9JRF9FWFRFUk5BTF9OVVRN RUcsCjE0NDc0OiAgRU5DT0RFUl9JRF9FWFRFUk5BTF9UUkFWSVMsCjE0NDc0OiAKMTQ0NzQ6ICBF TkNPREVSX0lEX0lOVEVSTkFMX1dJUkVMRVNTLAoxNDQ3NDogIEVOQ09ERVJfSURfSU5URVJOQUxf VU5JUEhZMywKMTQ0NzQ6ICBFTkNPREVSX0lEX0lOVEVSTkFMX1ZJUlRVQUwsCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gY29ubmVjdG9yX2lkIHsKMTQ0NzQ6ICBDT05ORUNU T1JfSURfVU5LTk9XTiA9IDAsCjE0NDc0OiAgQ09OTkVDVE9SX0lEX1NJTkdMRV9MSU5LX0RWSUkg PSAxLAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9EVUFMX0xJTktfRFZJSSA9IDIsCjE0NDc0OiAgQ09O TkVDVE9SX0lEX1NJTkdMRV9MSU5LX0RWSUQgPSAzLAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9EVUFM X0xJTktfRFZJRCA9IDQsCjE0NDc0OiAgQ09OTkVDVE9SX0lEX1ZHQSA9IDUsCjE0NDc0OiAgQ09O TkVDVE9SX0lEX0hETUlfVFlQRV9BID0gMTIsCjE0NDc0OiAgQ09OTkVDVE9SX0lEX0xWRFMgPSAx NCwKMTQ0NzQ6ICBDT05ORUNUT1JfSURfUENJRSA9IDE2LAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9I QVJEQ09ERV9EVkkgPSAxOCwKMTQ0NzQ6ICBDT05ORUNUT1JfSURfRElTUExBWV9QT1JUID0gMTks CjE0NDc0OiAgQ09OTkVDVE9SX0lEX0VEUCA9IDIwLAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9NWE0g PSAyMSwKMTQ0NzQ6ICBDT05ORUNUT1JfSURfV0lSRUxFU1MgPSAyMiwKMTQ0NzQ6ICBDT05ORUNU T1JfSURfTUlSQUNBU1QgPSAyMywKMTQ0NzQ6IAoxNDQ3NDogIENPTk5FQ1RPUl9JRF9WSVJUVUFM ID0gMTAwCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXVkaW9faWQgewox NDQ3NDogIEFVRElPX0lEX1VOS05PV04gPSAwLAoxNDQ3NDogIEFVRElPX0lEX0lOVEVSTkFMX0Fa QUxJQQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGVuZ2luZV9pZCB7CjE0 NDc0OiAgRU5HSU5FX0lEX0RJR0EsCjE0NDc0OiAgRU5HSU5FX0lEX0RJR0IsCjE0NDc0OiAgRU5H SU5FX0lEX0RJR0MsCjE0NDc0OiAgRU5HSU5FX0lEX0RJR0QsCjE0NDc0OiAgRU5HSU5FX0lEX0RJ R0UsCjE0NDc0OiAgRU5HSU5FX0lEX0RJR0YsCjE0NDc0OiAgRU5HSU5FX0lEX0RJR0csCjE0NDc0 OiAgRU5HSU5FX0lEX0RBQ0EsCjE0NDc0OiAgRU5HSU5FX0lEX0RBQ0IsCjE0NDc0OiAgRU5HSU5F X0lEX1ZDRSwKMTQ0NzQ6ICBFTkdJTkVfSURfVklSVFVBTCwKMTQ0NzQ6IAoxNDQ3NDogIEVOR0lO RV9JRF9DT1VOVCwKMTQ0NzQ6ICBFTkdJTkVfSURfVU5LTk9XTiA9ICgtMUwpCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBlbnVtIHRyYW5zbWl0dGVyX2NvbG9yX2RlcHRoIHsKMTQ0NzQ6ICBUUkFO U01JVFRFUl9DT0xPUl9ERVBUSF8yNCA9IDAsCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09MT1JfREVQ VEhfMzAsCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09MT1JfREVQVEhfMzYsCjE0NDc0OiAgVFJBTlNN SVRURVJfQ09MT1JfREVQVEhfNDgKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHBfYWx0 X21vZGUgewoxNDQ3NDogIERQX0FsdF9tb2RlX19Vbmtub3duID0gMCwKMTQ0NzQ6ICBEUF9BbHRf bW9kZV9fQ29ubmVjdCwKMTQ0NzQ6ICBEUF9BbHRfbW9kZV9fTm9Db25uZWN0LAoxNDQ3NDogfTsK MTQ0NzQ6ICMgMjIwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5j bHVkZS9ncnBoX29iamVjdF9pZC5oIgoxNDQ3NDogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCB7 CjE0NDc0OiAgdWludDMyX3QgaWQ6ODsKMTQ0NzQ6ICB1aW50MzJfdCBlbnVtX2lkOjQ7CjE0NDc0 OiAgdWludDMyX3QgdHlwZTo0OwoxNDQ3NDogIHVpbnQzMl90IHJlc2VydmVkOjE2OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBncmFwaGljc19vYmplY3Rf aWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9pbml0KAoxNDQ3NDogIHVpbnQzMl90IGlkLAoxNDQ3 NDogIGVudW0gb2JqZWN0X2VudW1faWQgZW51bV9pZCwKMTQ0NzQ6ICBlbnVtIG9iamVjdF90eXBl IHR5cGUpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCByZXN1bHQg PSB7CjE0NDc0OiAgIGlkLCBlbnVtX2lkLCB0eXBlLCAwCjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3 NDogIHJldHVybiByZXN1bHQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdWludDMy X3QgZGFsX2dyYXBoaWNzX29iamVjdF9pZF90b191aW50KAoxNDQ3NDogIHN0cnVjdCBncmFwaGlj c19vYmplY3RfaWQgaWQpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGlkLmlkICsgKGlkLmVudW1f aWQgPDwgMHg4KSArIChpZC50eXBlIDw8IDB4Yyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGVu dW0gY29udHJvbGxlcl9pZCBkYWxfZ3JhcGhpY3Nfb2JqZWN0X2lkX2dldF9jb250cm9sbGVyX2lk KAoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgaWQpCjE0NDc0OiB7CjE0NDc0OiAg aWYgKGlkLnR5cGUgPT0gT0JKRUNUX1RZUEVfQ09OVFJPTExFUikKMTQ0NzQ6ICAgcmV0dXJuIChl bnVtIGNvbnRyb2xsZXJfaWQpIGlkLmlkOwoxNDQ3NDogIHJldHVybiBDT05UUk9MTEVSX0lEX1VO REVGSU5FRDsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBjbG9ja19zb3VyY2VfaWQgZGFs X2dyYXBoaWNzX29iamVjdF9pZF9nZXRfY2xvY2tfc291cmNlX2lkKAoxNDQ3NDogIHN0cnVjdCBn cmFwaGljc19vYmplY3RfaWQgaWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGlkLnR5cGUgPT0gT0JK RUNUX1RZUEVfQ0xPQ0tfU09VUkNFKQoxNDQ3NDogICByZXR1cm4gKGVudW0gY2xvY2tfc291cmNl X2lkKSBpZC5pZDsKMTQ0NzQ6ICByZXR1cm4gQ0xPQ0tfU09VUkNFX0lEX1VOREVGSU5FRDsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBlbmNvZGVyX2lkIGRhbF9ncmFwaGljc19vYmplY3Rf aWRfZ2V0X2VuY29kZXJfaWQoCjE0NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZCkK MTQ0NzQ6IHsKMTQ0NzQ6ICBpZiAoaWQudHlwZSA9PSBPQkpFQ1RfVFlQRV9FTkNPREVSKQoxNDQ3 NDogICByZXR1cm4gKGVudW0gZW5jb2Rlcl9pZCkgaWQuaWQ7CjE0NDc0OiAgcmV0dXJuIEVOQ09E RVJfSURfVU5LTk9XTjsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBjb25uZWN0b3JfaWQg ZGFsX2dyYXBoaWNzX29iamVjdF9pZF9nZXRfY29ubmVjdG9yX2lkKAoxNDQ3NDogIHN0cnVjdCBn cmFwaGljc19vYmplY3RfaWQgaWQpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGlkLnR5cGUgPT0gT0JK RUNUX1RZUEVfQ09OTkVDVE9SKQoxNDQ3NDogICByZXR1cm4gKGVudW0gY29ubmVjdG9yX2lkKSBp ZC5pZDsKMTQ0NzQ6ICByZXR1cm4gQ09OTkVDVE9SX0lEX1VOS05PV047CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGVudW0gYXVkaW9faWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9nZXRfYXVkaW9f aWQoCjE0NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZCkKMTQ0NzQ6IHsKMTQ0NzQ6 ICBpZiAoaWQudHlwZSA9PSBPQkpFQ1RfVFlQRV9BVURJTykKMTQ0NzQ6ICAgcmV0dXJuIChlbnVt IGF1ZGlvX2lkKSBpZC5pZDsKMTQ0NzQ6ICByZXR1cm4gQVVESU9fSURfVU5LTk9XTjsKMTQ0NzQ6 IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBlbmdpbmVfaWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9n ZXRfZW5naW5lX2lkKAoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgaWQpCjE0NDc0 OiB7CjE0NDc0OiAgaWYgKGlkLnR5cGUgPT0gT0JKRUNUX1RZUEVfRU5HSU5FKQoxNDQ3NDogICBy ZXR1cm4gKGVudW0gZW5naW5lX2lkKSBpZC5pZDsKMTQ0NzQ6ICByZXR1cm4gRU5HSU5FX0lEX1VO S05PV047CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGFsX2dyYXBoaWNzX29iamVjdF9p ZF9lcXVhbCgKMTQ0NzQ6ICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGlkXzEsCjE0NDc0OiAg c3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZF8yKQoxNDQ3NDogewoxNDQ3NDogIGlmICgoaWRf MS5pZCA9PSBpZF8yLmlkKSAmJiAoaWRfMS5lbnVtX2lkID09IGlkXzIuZW51bV9pZCkgJiYKMTQ0 NzQ6ICAgKGlkXzEudHlwZSA9PSBpZF8yLnR5cGUpKSB7CjE0NDc0OiAgIHJldHVybiB0cnVlOwox NDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiB9CjE0NDc0OiAjIDMwICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9k ZWZzLmgiIDIKMTQ0NzQ6ICMgNDUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIKMTQ0NzQ6IGVudW0gaHBkX3NvdXJjZV9p ZCB7CjE0NDc0OiAgSFBEX1NPVVJDRUlEMSA9IDAsCjE0NDc0OiAgSFBEX1NPVVJDRUlEMiwKMTQ0 NzQ6ICBIUERfU09VUkNFSUQzLAoxNDQ3NDogIEhQRF9TT1VSQ0VJRDQsCjE0NDc0OiAgSFBEX1NP VVJDRUlENSwKMTQ0NzQ6ICBIUERfU09VUkNFSUQ2LAoxNDQ3NDogCjE0NDc0OiAgSFBEX1NPVVJD RUlEX0NPVU5ULAoxNDQ3NDogIEhQRF9TT1VSQ0VJRF9VTktOT1dOCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IGVudW0gY2hhbm5lbF9pZCB7CjE0NDc0OiAgQ0hBTk5FTF9JRF9VTktO T1dOID0gMCwKMTQ0NzQ6ICBDSEFOTkVMX0lEX0REQzEsCjE0NDc0OiAgQ0hBTk5FTF9JRF9EREMy LAoxNDQ3NDogIENIQU5ORUxfSURfRERDMywKMTQ0NzQ6ICBDSEFOTkVMX0lEX0REQzQsCjE0NDc0 OiAgQ0hBTk5FTF9JRF9EREM1LAoxNDQ3NDogIENIQU5ORUxfSURfRERDNiwKMTQ0NzQ6ICBDSEFO TkVMX0lEX0REQ19WR0EsCjE0NDc0OiAgQ0hBTk5FTF9JRF9JMkNfUEFELAoxNDQ3NDogIENIQU5O RUxfSURfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0OiAjIDgxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9kZWZzLmgiCjE0NDc0OiBlbnVt IHRyYW5zbWl0dGVyIHsKMTQ0NzQ6ICBUUkFOU01JVFRFUl9VTktOT1dOID0gKC0xTCksCjE0NDc0 OiAgVFJBTlNNSVRURVJfVU5JUEhZX0EsCjE0NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZX0IsCjE0 NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZX0MsCjE0NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZX0Qs CjE0NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZX0UsCjE0NDc0OiAgVFJBTlNNSVRURVJfVU5JUEhZ X0YsCjE0NDc0OiAgVFJBTlNNSVRURVJfTlVUTUVHX0NSVCwKMTQ0NzQ6ICBUUkFOU01JVFRFUl9U UkFWSVNfQ1JULAoxNDQ3NDogIFRSQU5TTUlUVEVSX1RSQVZJU19MQ0QsCjE0NDc0OiAgVFJBTlNN SVRURVJfVU5JUEhZX0csCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHN5bmNfc291cmNlIHsKMTQ0NzQ6ICBTWU5D X1NPVVJDRV9OT05FID0gMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgU1lOQ19TT1VSQ0VfQ09O VFJPTExFUjAsCjE0NDc0OiAgU1lOQ19TT1VSQ0VfQ09OVFJPTExFUjEsCjE0NDc0OiAgU1lOQ19T T1VSQ0VfQ09OVFJPTExFUjIsCjE0NDc0OiAgU1lOQ19TT1VSQ0VfQ09OVFJPTExFUjMsCjE0NDc0 OiAgU1lOQ19TT1VSQ0VfQ09OVFJPTExFUjQsCjE0NDc0OiAgU1lOQ19TT1VSQ0VfQ09OVFJPTExF UjUsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFNZTkNfU09VUkNFX0dTTF9HUk9VUDAsCjE0NDc0 OiAgU1lOQ19TT1VSQ0VfR1NMX0dST1VQMSwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfR1JPVVAy LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFNZTkNfU09VUkNFX0dTTF9JT19GSVJT VCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfSU9fR0VOTE9DS19DTE9DSyA9IFNZTkNfU09VUkNF X0dTTF9JT19GSVJTVCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfSU9fR0VOTE9DS19WU1lOQywK MTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfSU9fU1dBUExPQ0tfQSwKMTQ0NzQ6ICBTWU5DX1NPVVJD RV9HU0xfSU9fU1dBUExPQ0tfQiwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9HU0xfSU9fTEFTVCA9IFNZ TkNfU09VUkNFX0dTTF9JT19TV0FQTE9DS19CLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBTWU5D X1NPVVJDRV9JT19GSVJTVCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19HRU5FUklDX0EgPSBTWU5D X1NPVVJDRV9JT19GSVJTVCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19HRU5FUklDX0IsCjE0NDc0 OiAgU1lOQ19TT1VSQ0VfSU9fR0VORVJJQ19DLAoxNDQ3NDogIFNZTkNfU09VUkNFX0lPX0dFTkVS SUNfRCwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19HRU5FUklDX0UsCjE0NDc0OiAgU1lOQ19TT1VS Q0VfSU9fR0VORVJJQ19GLAoxNDQ3NDogIFNZTkNfU09VUkNFX0lPX0hQRDEsCjE0NDc0OiAgU1lO Q19TT1VSQ0VfSU9fSFBEMiwKMTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19IU1lOQ19BLAoxNDQ3NDog IFNZTkNfU09VUkNFX0lPX1ZTWU5DX0EsCjE0NDc0OiAgU1lOQ19TT1VSQ0VfSU9fSFNZTkNfQiwK MTQ0NzQ6ICBTWU5DX1NPVVJDRV9JT19WU1lOQ19CLAoxNDQ3NDogIFNZTkNfU09VUkNFX0lPX0xB U1QgPSBTWU5DX1NPVVJDRV9JT19WU1lOQ19CLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBTWU5D X1NPVVJDRV9EVUFMX0dQVV9QSU4KMTQ0NzQ6IH07CjE0NDc0OiAjIDE1MSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmplY3RfZGVmcy5oIgox NDQ3NDogZW51bSBjb25uZWN0b3JfbGF5b3V0X3R5cGUgewoxNDQ3NDogIENPTk5FQ1RPUl9MQVlP VVRfVFlQRV9VTktOT1dOLAoxNDQ3NDogIENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9EVklfRCwKMTQ0 NzQ6ICBDT05ORUNUT1JfTEFZT1VUX1RZUEVfRFZJX0ksCjE0NDc0OiAgQ09OTkVDVE9SX0xBWU9V VF9UWVBFX1ZHQSwKMTQ0NzQ6ICBDT05ORUNUT1JfTEFZT1VUX1RZUEVfSERNSSwKMTQ0NzQ6ICBD T05ORUNUT1JfTEFZT1VUX1RZUEVfRFAsCjE0NDc0OiAgQ09OTkVDVE9SX0xBWU9VVF9UWVBFX01J TklfRFAsCjE0NDc0OiB9OwoxNDQ3NDogc3RydWN0IGNvbm5lY3Rvcl9sYXlvdXRfaW5mbyB7CjE0 NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBjb25uZWN0b3JfaWQ7CjE0NDc0OiAgZW51 bSBjb25uZWN0b3JfbGF5b3V0X3R5cGUgY29ubmVjdG9yX3R5cGU7CjE0NDc0OiAgdW5zaWduZWQg aW50IGxlbmd0aDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcG9zaXRpb247CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzbG90X2xheW91dF9pbmZvIHsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbGVuZ3RoOwoxNDQ3NDogIHVuc2lnbmVkIGludCB3aWR0aDsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbnVtX29mX2Nvbm5lY3RvcnM7CjE0NDc0OiAgc3RydWN0IGNvbm5lY3Rvcl9sYXlv dXRfaW5mbyBjb25uZWN0b3JzWygxNildOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGJvYXJkX2xheW91dF9pbmZvIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX29mX3Nsb3RzOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaXNfbnVtYmVyX29mX3Nsb3RzX3Zh bGlkIDogMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaXNfc2xvdHNfc2l6ZV92YWxpZCA6IDE7CjE0 NDc0OiAgdW5zaWduZWQgaW50IGlzX2Nvbm5lY3Rvcl9vZmZzZXRzX3ZhbGlkIDogMTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgaXNfY29ubmVjdG9yX2xlbmd0aHNfdmFsaWQgOiAxOwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHNsb3RfbGF5b3V0X2luZm8gc2xvdHNbKDQpXTsKMTQ0NzQ6IH07CjE0NDc0 OiAjIDM5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlw ZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRjX3BsYW5lX3N0YXRlOwoxNDQ3NDogc3RydWN0IGRjX3N0cmVhbV9zdGF0 ZTsKMTQ0NzQ6IHN0cnVjdCBkY19saW5rOwoxNDQ3NDogc3RydWN0IGRjX3Npbms7CjE0NDc0OiBz dHJ1Y3QgZGFsOwoxNDQ3NDogc3RydWN0IGRjX2RtdWJfc3J2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjZV9lbnZpcm9ubWVudCB7CjE0NDc0OiAgRENFX0VO Vl9QUk9EVUNUSU9OX0RSViA9IDAsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRENF X0VOVl9GUEdBX01BWElNVVMsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERDRV9FTlZfRElBRywK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERDRV9FTlZfVklSVFVBTF9I VwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNzggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kY190eXBlcy5oIgoxNDQ3NDogc3RydWN0IGh3X2FzaWNfaWQgewoxNDQ3NDog IHVpbnQzMl90IGNoaXBfaWQ7CjE0NDc0OiAgdWludDMyX3QgY2hpcF9mYW1pbHk7CjE0NDc0OiAg dWludDMyX3QgcGNpX3JldmlzaW9uX2lkOwoxNDQ3NDogIHVpbnQzMl90IGh3X2ludGVybmFsX3Jl djsKMTQ0NzQ6ICB1aW50MzJfdCB2cmFtX3R5cGU7CjE0NDc0OiAgdWludDMyX3QgdnJhbV93aWR0 aDsKMTQ0NzQ6ICB1aW50MzJfdCBmZWF0dXJlX2ZsYWdzOwoxNDQ3NDogIHVpbnQzMl90IGZha2Vf cGF0aHNfbnVtOwoxNDQ3NDogIHZvaWQgKmF0b21iaW9zX2Jhc2VfYWRkcmVzczsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19wZXJmX3RyYWNlIHsKMTQ0NzQ6ICB1bnNpZ25lZCBs b25nIHJlYWRfY291bnQ7CjE0NDc0OiAgdW5zaWduZWQgbG9uZyB3cml0ZV9jb3VudDsKMTQ0NzQ6 ICB1bnNpZ25lZCBsb25nIGxhc3RfZW50cnlfcmVhZDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxh c3RfZW50cnlfd3JpdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY29udGV4 dCB7CjE0NDc0OiAgc3RydWN0IGRjICpkYzsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKmRyaXZlcl9j b250ZXh0OwoxNDQ3NDogIHN0cnVjdCBkY19wZXJmX3RyYWNlICpwZXJmX3RyYWNlOwoxNDQ3NDog IHZvaWQgKmNnc19kZXZpY2U7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjZV9lbnZpcm9ubWVudCBk Y2VfZW52aXJvbm1lbnQ7CjE0NDc0OiAgc3RydWN0IGh3X2FzaWNfaWQgYXNpY19pZDsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNlX3ZlcnNpb24gZGNlX3Zl cnNpb247CjE0NDc0OiAgc3RydWN0IGRjX2Jpb3MgKmRjX2Jpb3M7CjE0NDc0OiAgYm9vbCBjcmVh dGVkX2Jpb3M7CjE0NDc0OiAgc3RydWN0IGdwaW9fc2VydmljZSAqZ3Bpb19zZXJ2aWNlOwoxNDQ3 NDogIHVpbnQzMl90IGRjX3NpbmtfaWRfY291bnQ7CjE0NDc0OiAgdWludDMyX3QgZGNfc3RyZWFt X2lkX2NvdW50OwoxNDQ3NDogIHVpbnQ2NF90IGZiY19ncHVfYWRkcjsKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfZG11Yl9zcnYgKmRtdWJfc3J2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiB9OwoxNDQ3NDogIyAxMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9kY190eXBlcy5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvZGNfZGRjX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMjggIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY19kZGNfdHlwZXMuaCIKMTQ0NzQ6 IGVudW0gYXV4X3RyYW5zYWN0aW9uX3R5cGUgewoxNDQ3NDogIEFVWF9UUkFOU0FDVElPTl9UWVBF X0RQLAoxNDQ3NDogIEFVWF9UUkFOU0FDVElPTl9UWVBFX0kyQwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBlbnVtIGkyY2F1eF90cmFuc2FjdGlvbl9hY3Rpb24gewoxNDQ3NDogIEky Q0FVWF9UUkFOU0FDVElPTl9BQ1RJT05fSTJDX1dSSVRFID0gMHgwMCwKMTQ0NzQ6ICBJMkNBVVhf VFJBTlNBQ1RJT05fQUNUSU9OX0kyQ19SRUFEID0gMHgxMCwKMTQ0NzQ6ICBJMkNBVVhfVFJBTlNB Q1RJT05fQUNUSU9OX0kyQ19TVEFUVVNfUkVRVUVTVCA9IDB4MjAsCjE0NDc0OiAKMTQ0NzQ6ICBJ MkNBVVhfVFJBTlNBQ1RJT05fQUNUSU9OX0kyQ19XUklURV9NT1QgPSAweDQwLAoxNDQ3NDogIEky Q0FVWF9UUkFOU0FDVElPTl9BQ1RJT05fSTJDX1JFQURfTU9UID0gMHg1MCwKMTQ0NzQ6ICBJMkNB VVhfVFJBTlNBQ1RJT05fQUNUSU9OX0kyQ19TVEFUVVNfUkVRVUVTVF9NT1QgPSAweDYwLAoxNDQ3 NDogCjE0NDc0OiAgSTJDQVVYX1RSQU5TQUNUSU9OX0FDVElPTl9EUF9XUklURSA9IDB4ODAsCjE0 NDc0OiAgSTJDQVVYX1RSQU5TQUNUSU9OX0FDVElPTl9EUF9SRUFEID0gMHg5MAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBhdXhfY2hhbm5lbF9vcGVyYXRpb25fcmVzdWx0IHsKMTQ0NzQ6 ICBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fU1VDQ0VFREVELAoxNDQ3NDogIEFVWF9DSEFOTkVMX09Q RVJBVElPTl9GQUlMRURfUkVBU09OX1VOS05PV04sCjE0NDc0OiAgQVVYX0NIQU5ORUxfT1BFUkFU SU9OX0ZBSUxFRF9JTlZBTElEX1JFUExZLAoxNDQ3NDogIEFVWF9DSEFOTkVMX09QRVJBVElPTl9G QUlMRURfVElNRU9VVCwKMTQ0NzQ6ICBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fRkFJTEVEX0hQRF9E SVNDT04sCjE0NDc0OiAgQVVYX0NIQU5ORUxfT1BFUkFUSU9OX0ZBSUxFRF9FTkdJTkVfQUNRVUlS RQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXV4X3JlcXVlc3RfdHJh bnNhY3Rpb25fZGF0YSB7CjE0NDc0OiAgZW51bSBhdXhfdHJhbnNhY3Rpb25fdHlwZSB0eXBlOwox NDQ3NDogIGVudW0gaTJjYXV4X3RyYW5zYWN0aW9uX2FjdGlvbiBhY3Rpb247CjE0NDc0OiAKMTQ0 NzQ6ICB1aW50MzJfdCBhZGRyZXNzOwoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCBkZWxheTsKMTQ0 NzQ6ICB1aW50MzJfdCBsZW5ndGg7CjE0NDc0OiAgdWludDhfdCAqZGF0YTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gYXV4X3RyYW5zYWN0aW9uX3JlcGx5IHsKMTQ0NzQ6ICBBVVhfVFJB TlNBQ1RJT05fUkVQTFlfQVVYX0FDSyA9IDB4MDAsCjE0NDc0OiAgQVVYX1RSQU5TQUNUSU9OX1JF UExZX0FVWF9OQUNLID0gMHgwMSwKMTQ0NzQ6ICBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfQVVYX0RF RkVSID0gMHgwMiwKMTQ0NzQ6ICBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfSTJDX09WRVJfQVVYX05B Q0sgPSAweDA0LAoxNDQ3NDogIEFVWF9UUkFOU0FDVElPTl9SRVBMWV9JMkNfT1ZFUl9BVVhfREVG RVIgPSAweDA4LAoxNDQ3NDogCjE0NDc0OiAgQVVYX1RSQU5TQUNUSU9OX1JFUExZX0kyQ19BQ0sg PSAweDAwLAoxNDQ3NDogIEFVWF9UUkFOU0FDVElPTl9SRVBMWV9JMkNfTkFDSyA9IDB4MTAsCjE0 NDc0OiAgQVVYX1RSQU5TQUNUSU9OX1JFUExZX0kyQ19ERUZFUiA9IDB4MjAsCjE0NDc0OiAKMTQ0 NzQ6ICBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfSFBEX0RJU0NPTiA9IDB4NDAsCjE0NDc0OiAKMTQ0 NzQ6ICBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfSU5WQUxJRCA9IDB4RkYKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdXhfcmVwbHlfdHJhbnNhY3Rpb25fZGF0YSB7CjE0NDc0OiAgZW51 bSBhdXhfdHJhbnNhY3Rpb25fcmVwbHkgc3RhdHVzOwoxNDQ3NDogIHVpbnQzMl90IGxlbmd0aDsK MTQ0NzQ6ICB1aW50OF90ICpkYXRhOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGky Y19wYXlsb2FkIHsKMTQ0NzQ6ICBib29sIHdyaXRlOwoxNDQ3NDogIHVpbnQ4X3QgYWRkcmVzczsK MTQ0NzQ6ICB1aW50MzJfdCBsZW5ndGg7CjE0NDc0OiAgdWludDhfdCAqZGF0YTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gaTJjX2NvbW1hbmRfZW5naW5lIHsKMTQ0NzQ6ICBJMkNfQ09N TUFORF9FTkdJTkVfREVGQVVMVCwKMTQ0NzQ6ICBJMkNfQ09NTUFORF9FTkdJTkVfU1csCjE0NDc0 OiAgSTJDX0NPTU1BTkRfRU5HSU5FX0hXCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg aTJjX2NvbW1hbmQgewoxNDQ3NDogIHN0cnVjdCBpMmNfcGF5bG9hZCAqcGF5bG9hZHM7CjE0NDc0 OiAgdWludDhfdCBudW1iZXJfb2ZfcGF5bG9hZHM7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGkyY19j b21tYW5kX2VuZ2luZSBlbmdpbmU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWlu dDMyX3Qgc3BlZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ3Bpb19kZGNfaHdf aW5mbyB7CjE0NDc0OiAgYm9vbCBod19zdXBwb3J0ZWQ7CjE0NDc0OiAgdWludDMyX3QgZGRjX2No YW5uZWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGRjIHsKMTQ0NzQ6ICBzdHJ1 Y3QgZ3BpbyAqcGluX2RhdGE7CjE0NDc0OiAgc3RydWN0IGdwaW8gKnBpbl9jbG9jazsKMTQ0NzQ6 ICBzdHJ1Y3QgZ3Bpb19kZGNfaHdfaW5mbyBod19pbmZvOwoxNDQ3NDogIHN0cnVjdCBkY19jb250 ZXh0ICpjdHg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkZGNfd2EgewoxNDQ3NDog IHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQzMl90IERQX1NLSVBfUE9XRVJfT0ZGOjE7CjE0NDc0OiAg IHVpbnQzMl90IERQX0FVWF9QT1dFUl9VUF9XQV9ERUxBWToxOwoxNDQ3NDogIH0gYml0czsKMTQ0 NzQ6ICB1aW50MzJfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGRjX2Zs YWdzIHsKMTQ0NzQ6ICB1aW50OF90IEVESURfUVVFUllfRE9ORV9PTkNFOjE7CjE0NDc0OiAgdWlu dDhfdCBJU19JTlRFUk5BTF9ESVNQTEFZOjE7CjE0NDc0OiAgdWludDhfdCBGT1JDRV9SRUFEX1JF UEVBVEVEX1NUQVJUOjE7CjE0NDc0OiAgdWludDhfdCBFRElEX1NUUkVTU19SRUFEOjE7CjE0NDc0 OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGRjX3RyYW5zYWN0aW9uX3R5cGUgewox NDQ3NDogIEREQ19UUkFOU0FDVElPTl9UWVBFX05PTkUgPSAwLAoxNDQ3NDogIEREQ19UUkFOU0FD VElPTl9UWVBFX0kyQywKMTQ0NzQ6ICBERENfVFJBTlNBQ1RJT05fVFlQRV9JMkNfT1ZFUl9BVVgs CjE0NDc0OiAgRERDX1RSQU5TQUNUSU9OX1RZUEVfSTJDX09WRVJfQVVYX1dJVEhfREVGRVIsCjE0 NDc0OiAgRERDX1RSQU5TQUNUSU9OX1RZUEVfSTJDX09WRVJfQVVYX1JFVFJZX0RFRkVSCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgewoxNDQ3NDogIERJ U1BMQVlfRE9OR0xFX05PTkUgPSAwLAoxNDQ3NDogCjE0NDc0OiAgRElTUExBWV9ET05HTEVfRFBf VkdBX0NPTlZFUlRFUiwKMTQ0NzQ6ICBESVNQTEFZX0RPTkdMRV9EUF9EVklfQ09OVkVSVEVSLAox NDQ3NDogIERJU1BMQVlfRE9OR0xFX0RQX0hETUlfQ09OVkVSVEVSLAoxNDQ3NDogCjE0NDc0OiAg RElTUExBWV9ET05HTEVfRFBfRFZJX0RPTkdMRSwKMTQ0NzQ6ICBESVNQTEFZX0RPTkdMRV9EUF9I RE1JX0RPTkdMRSwKMTQ0NzQ6IAoxNDQ3NDogIERJU1BMQVlfRE9OR0xFX0RQX0hETUlfTUlTTUFU Q0hFRF9ET05HTEUsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGRjX3NlcnZpY2Ug ewoxNDQ3NDogIHN0cnVjdCBkZGMgKmRkY19waW47CjE0NDc0OiAgc3RydWN0IGRkY19mbGFncyBm bGFnczsKMTQ0NzQ6ICB1bmlvbiBkZGNfd2Egd2E7CjE0NDc0OiAgZW51bSBkZGNfdHJhbnNhY3Rp b25fdHlwZSB0cmFuc2FjdGlvbl90eXBlOwoxNDQ3NDogIGVudW0gZGlzcGxheV9kb25nbGVfdHlw ZSBkb25nbGVfdHlwZTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHN0 cnVjdCBkY19saW5rICpsaW5rOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgYWRkcmVzczsKMTQ0 NzQ6ICB1aW50MzJfdCBlZGlkX2J1Zl9sZW47CjE0NDc0OiAgdWludDhfdCBlZGlkX2J1ZlsxMDI0 XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDEzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RjX3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogZW51bSB0aWxpbmdfbW9k ZSB7CjE0NDc0OiAgVElMSU5HX01PREVfSU5WQUxJRCwKMTQ0NzQ6ICBUSUxJTkdfTU9ERV9MSU5F QVIsCjE0NDc0OiAgVElMSU5HX01PREVfVElMRUQsCjE0NDc0OiAgVElMSU5HX01PREVfQ09VTlQK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gdmlld18zZF9mb3JtYXQgewoxNDQ3NDogIFZJ RVdfM0RfRk9STUFUX05PTkUgPSAwLAoxNDQ3NDogIFZJRVdfM0RfRk9STUFUX0ZSQU1FX1NFUVVF TlRJQUwsCjE0NDc0OiAgVklFV18zRF9GT1JNQVRfU0lERV9CWV9TSURFLAoxNDQ3NDogIFZJRVdf M0RfRk9STUFUX1RPUF9BTkRfQk9UVE9NLAoxNDQ3NDogIFZJRVdfM0RfRk9STUFUX0NPVU5ULAox NDQ3NDogIFZJRVdfM0RfRk9STUFUX0ZJUlNUID0gVklFV18zRF9GT1JNQVRfRlJBTUVfU0VRVUVO VElBTAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBwbGFuZV9zdGVyZW9fZm9ybWF0IHsK MTQ0NzQ6ICBQTEFORV9TVEVSRU9fRk9STUFUX05PTkUgPSAwLAoxNDQ3NDogIFBMQU5FX1NURVJF T19GT1JNQVRfU0lERV9CWV9TSURFID0gMSwKMTQ0NzQ6ICBQTEFORV9TVEVSRU9fRk9STUFUX1RP UF9BTkRfQk9UVE9NID0gMiwKMTQ0NzQ6ICBQTEFORV9TVEVSRU9fRk9STUFUX0ZSQU1FX0FMVEVS TkFURSA9IDMsCjE0NDc0OiAgUExBTkVfU1RFUkVPX0ZPUk1BVF9ST1dfSU5URVJMRUFWRUQgPSA1 LAoxNDQ3NDogIFBMQU5FX1NURVJFT19GT1JNQVRfQ09MVU1OX0lOVEVSTEVBVkVEID0gNiwKMTQ0 NzQ6ICBQTEFORV9TVEVSRU9fRk9STUFUX0NIRUNLRVJfQk9BUkQgPSA3CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBk Y19lZGlkX2Nvbm5lY3Rvcl90eXBlIHsKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9VTktOT1dO ID0gMCwKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9BTkFMT0cgPSAxLAoxNDQ3NDogIERDX0VE SURfQ09OTkVDVE9SX0RJR0lUQUwgPSAxMCwKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9EVkkg PSAxMSwKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9IRE1JQSA9IDEyLAoxNDQ3NDogIERDX0VE SURfQ09OTkVDVE9SX01EREkgPSAxNCwKMTQ0NzQ6ICBEQ19FRElEX0NPTk5FQ1RPUl9ESVNQTEFZ UE9SVCA9IDE1CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2VkaWRfc3RhdHVzIHsK MTQ0NzQ6ICBFRElEX09LLAoxNDQ3NDogIEVESURfQkFEX0lOUFVULAoxNDQ3NDogIEVESURfTk9f UkVTUE9OU0UsCjE0NDc0OiAgRURJRF9CQURfQ0hFQ0tTVU0sCjE0NDc0OiAgRURJRF9USEVfU0FN RSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYWN0X3JldHVybl9zdGF0dXMgewoxNDQ3 NDogIEFDVF9TVUNDRVNTLAoxNDQ3NDogIEFDVF9MSU5LX0xPU1QsCjE0NDc0OiAgQUNUX0ZBSUxF RAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY2VhX2F1ZGlvX21v ZGUgewoxNDQ3NDogIHVpbnQ4X3QgZm9ybWF0X2NvZGU7CjE0NDc0OiAgdWludDhfdCBjaGFubmVs X2NvdW50OwoxNDQ3NDogIHVpbnQ4X3Qgc2FtcGxlX3JhdGU7CjE0NDc0OiAgdW5pb24gewoxNDQ3 NDogICB1aW50OF90IHNhbXBsZV9zaXplOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2Jp dF9yYXRlOwoxNDQ3NDogICB1aW50OF90IGF1ZGlvX2NvZGVjX3ZlbmRvcl9zcGVjaWZpYzsKMTQ0 NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2VkaWQgewoxNDQ3NDog IHVpbnQzMl90IGxlbmd0aDsKMTQ0NzQ6ICB1aW50OF90IHJhd19lZGlkWzEwMjRdOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMjE1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZGNfdHlwZXMuaCIKMTQ0NzQ6IHVuaW9uIGRpc3BsYXlfY29udGVudF9zdXBwb3J0IHsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgcmF3OwoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVuc2lnbmVk IGludCB2YWxpZF9jb250ZW50X3R5cGUgOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBnYW1lX2Nv bnRlbnQgOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBjaW5lbWFfY29udGVudCA6MTsKMTQ0NzQ6 ICAgdW5zaWduZWQgaW50IHBob3RvX2NvbnRlbnQgOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBn cmFwaGljc19jb250ZW50IDoxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQgOjI3Owox NDQ3NDogIH0gYml0czsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19wYW5lbF9w YXRjaCB7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRwcG93ZXJ1cF9kZWxheTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgZXh0cmFfdDEyX21zOwoxNDQ3NDogIHVuc2lnbmVkIGludCBleHRyYV9kZWxheV9i YWNrbGlnaHRfb2ZmOwoxNDQ3NDogIHVuc2lnbmVkIGludCBleHRyYV90N19tczsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgbWFuYWdlX3NlY29uZGFyeV9saW5rOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRjX2VkaWRfY2FwcyB7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MTZfdCBtYW51ZmFj dHVyZXJfaWQ7CjE0NDc0OiAgdWludDE2X3QgcHJvZHVjdF9pZDsKMTQ0NzQ6ICB1aW50MzJfdCBz ZXJpYWxfbnVtYmVyOwoxNDQ3NDogIHVpbnQ4X3QgbWFudWZhY3R1cmVfd2VlazsKMTQ0NzQ6ICB1 aW50OF90IG1hbnVmYWN0dXJlX3llYXI7CjE0NDc0OiAgdWludDhfdCBkaXNwbGF5X25hbWVbMjBd OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IHNwZWFrZXJfZmxhZ3M7CjE0NDc0OiAg dWludDMyX3QgYXVkaW9fbW9kZV9jb3VudDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY2VhX2F1ZGlvX21v ZGUgYXVkaW9fbW9kZXNbMTZdOwoxNDQ3NDogIHVpbnQzMl90IGF1ZGlvX2xhdGVuY3k7CjE0NDc0 OiAgdWludDMyX3QgdmlkZW9fbGF0ZW5jeTsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIGRpc3BsYXlf Y29udGVudF9zdXBwb3J0IGNvbnRlbnRfc3VwcG9ydDsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQ4X3Qg cXNfYml0OwoxNDQ3NDogIHVpbnQ4X3QgcXlfYml0OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBi b29sIGx0ZV8zNDBtY3NjX3NjcmFtYmxlOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBlZGlkX2hkbWk7 CjE0NDc0OiAgYm9vbCBoZHJfc3VwcG9ydGVkOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3Bh bmVsX3BhdGNoIHBhbmVsX3BhdGNoOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHZp ZXcgewoxNDQ3NDogIHVpbnQzMl90IHdpZHRoOwoxNDQ3NDogIHVpbnQzMl90IGhlaWdodDsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19tb2RlX2ZsYWdzIHsKMTQ0NzQ6IAoxNDQ3 NDogIHVpbnQzMl90IElOVEVSTEFDRSA6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IE5BVElW RSA6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IFBSRUZFUlJFRCA6MTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdWludDMyX3QgUkVEVUNFRF9CTEFOS0lORyA6MTsKMTQ0NzQ6IAoxNDQ3NDog IHVpbnQzMl90IFZJREVPX09QVElNSVpFRF9SQVRFIDoxOwoxNDQ3NDogCjE0NDc0OiAgdWludDMy X3QgUEFDS0VEX1BJWEVMX0ZPUk1BVCA6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IFBSRUZF UlJFRF9WSUVXIDoxOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgVElMRURfTU9ERSA6MTsKMTQ0 NzQ6ICB1aW50MzJfdCBEU0VfTU9ERSA6MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHVpbnQzMl90IE1JUkFDQVNUX1JFRlJFU0hfRElWSURFUjsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY190aW1pbmdfc291cmNlIHsKMTQ0NzQ6ICBUSU1J TkdfU09VUkNFX1VOREVGSU5FRCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgVElNSU5HX1NPVVJD RV9VU0VSX0ZPUkNFRCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX1VTRVJfT1ZFUlJJREUsCjE0NDc0 OiAgVElNSU5HX1NPVVJDRV9DVVNUT00sCjE0NDc0OiAgVElNSU5HX1NPVVJDRV9FWFBMSUNJVCwK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgVElNSU5HX1NPVVJDRV9FRElEX0NFQV9TVkRfM0QsCjE0 NDc0OiAgVElNSU5HX1NPVVJDRV9FRElEX0NFQV9TVkRfUFJFRkVSUkVELAoxNDQ3NDogIFRJTUlO R19TT1VSQ0VfRURJRF9DRUFfU1ZEXzQyMCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0VESURfREVU QUlMRUQsCjE0NDc0OiAgVElNSU5HX1NPVVJDRV9FRElEX0VTVEFCTElTSEVELAoxNDQ3NDogIFRJ TUlOR19TT1VSQ0VfRURJRF9TVEFOREFSRCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0VESURfQ0VB X1NWRCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0VESURfQ1ZUXzNCWVRFLAoxNDQ3NDogIFRJTUlO R19TT1VSQ0VfRURJRF80QllURSwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX1ZCSU9TLAoxNDQ3NDog IFRJTUlOR19TT1VSQ0VfQ1YsCjE0NDc0OiAgVElNSU5HX1NPVVJDRV9UViwKMTQ0NzQ6ICBUSU1J TkdfU09VUkNFX0hETUlfVklDLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBUSU1JTkdfU09VUkNF X0RFRkFVTFQsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFRJTUlOR19TT1VSQ0VfQ1VTVE9NX0JB U0UsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFRJTUlOR19TT1VSQ0VfUkFOR0VMSU1JVCwKMTQ0 NzQ6ICBUSU1JTkdfU09VUkNFX09TX0ZPUkNFRCwKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0lNUExJ Q0lULAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBUSU1JTkdfU09VUkNFX0JBU0lDTU9ERSwKMTQ0 NzQ6IAoxNDQ3NDogIFRJTUlOR19TT1VSQ0VfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHN0ZXJlb18zZF9mZWF0dXJlcyB7CjE0NDc0OiAgYm9vbCBzdXBwb3J0 ZWQgOwoxNDQ3NDogIGJvb2wgYWxsVGltaW5ncyA7CjE0NDc0OiAgYm9vbCBjbG9uZU1vZGUgOwox NDQ3NDogIGJvb2wgc2NhbGluZyA7CjE0NDc0OiAgYm9vbCBzaW5nbGVGcmFtZVNXUGFja2VkOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY190aW1pbmdfc3VwcG9ydF9tZXRob2Qgewox NDQ3NDogIFRJTUlOR19TVVBQT1JUX01FVEhPRF9VTkRFRklORUQsCjE0NDc0OiAgVElNSU5HX1NV UFBPUlRfTUVUSE9EX0VYUExJQ0lULAoxNDQ3NDogIFRJTUlOR19TVVBQT1JUX01FVEhPRF9JTVBM SUNJVCwKMTQ0NzQ6ICBUSU1JTkdfU1VQUE9SVF9NRVRIT0RfTkFUSVZFCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZGNfbW9kZV9pbmZvIHsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF93 aWR0aDsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9oZWlnaHQ7CjE0NDc0OiAgdWludDMyX3QgZmll bGRfcmF0ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjX3RpbWluZ19z dGFuZGFyZCB0aW1pbmdfc3RhbmRhcmQ7CjE0NDc0OiAgZW51bSBkY190aW1pbmdfc291cmNlIHRp bWluZ19zb3VyY2U7CjE0NDc0OiAgc3RydWN0IGRjX21vZGVfZmxhZ3MgZmxhZ3M7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX3Bvd2VyX3N0YXRlIHsKMTQ0NzQ6ICBEQ19QT1dFUl9T VEFURV9PTiA9IDEsCjE0NDc0OiAgRENfUE9XRVJfU1RBVEVfU1RBTkRCWSwKMTQ0NzQ6ICBEQ19Q T1dFUl9TVEFURV9TVVNQRU5ELAoxNDQ3NDogIERDX1BPV0VSX1NUQVRFX09GRgoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX3ZpZGVvX3Bvd2VyX3N0YXRlIHsKMTQ0NzQ6 ICBEQ19WSURFT19QT1dFUl9VTlNQRUNJRklFRCA9IDAsCjE0NDc0OiAgRENfVklERU9fUE9XRVJf T04gPSAxLAoxNDQ3NDogIERDX1ZJREVPX1BPV0VSX1NUQU5EQlksCjE0NDc0OiAgRENfVklERU9f UE9XRVJfU1VTUEVORCwKMTQ0NzQ6ICBEQ19WSURFT19QT1dFUl9PRkYsCjE0NDc0OiAgRENfVklE RU9fUE9XRVJfSElCRVJOQVRFLAoxNDQ3NDogIERDX1ZJREVPX1BPV0VSX1NIVVRET1dOLAoxNDQ3 NDogIERDX1ZJREVPX1BPV0VSX1VMUFMsCjE0NDc0OiAgRENfVklERU9fUE9XRVJfQUZURVJfUkVT RVQsCjE0NDc0OiAgRENfVklERU9fUE9XRVJfTUFYSU1VTQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBkY19hY3BpX2NtX3Bvd2VyX3N0YXRlIHsKMTQ0NzQ6ICBEQ19BQ1BJX0NNX1BPV0VS X1NUQVRFX0QwID0gMSwKMTQ0NzQ6ICBEQ19BQ1BJX0NNX1BPV0VSX1NUQVRFX0QxID0gMiwKMTQ0 NzQ6ICBEQ19BQ1BJX0NNX1BPV0VSX1NUQVRFX0QyID0gNCwKMTQ0NzQ6ICBEQ19BQ1BJX0NNX1BP V0VSX1NUQVRFX0QzID0gOAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19jb25uZWN0 aW9uX3R5cGUgewoxNDQ3NDogIGRjX2Nvbm5lY3Rpb25fbm9uZSwKMTQ0NzQ6ICBkY19jb25uZWN0 aW9uX3NpbmdsZSwKMTQ0NzQ6ICBkY19jb25uZWN0aW9uX21zdF9icmFuY2gsCjE0NDc0OiAgZGNf Y29ubmVjdGlvbl9hY3RpdmVfZG9uZ2xlCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZGNfY3NjX2FkanVzdG1lbnRzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBjb250cmFzdDsK MTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBzYXR1cmF0aW9uOwoxNDQ3NDogIHN0cnVjdCBmaXhl ZDMxXzMyIGJyaWdodG5lc3M7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgaHVlOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkcGNkX2Rvd25zdHJlYW1fcG9ydF9tYXhfYnBjIHsKMTQ0 NzQ6ICBET1dOX1NUUkVBTV9NQVhfOEJQQyA9IDAsCjE0NDc0OiAgRE9XTl9TVFJFQU1fTUFYXzEw QlBDLAoxNDQ3NDogIERPV05fU1RSRUFNX01BWF8xMkJQQywKMTQ0NzQ6ICBET1dOX1NUUkVBTV9N QVhfMTZCUEMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBsaW5rX3RyYWlu aW5nX29mZnNldCB7CjE0NDc0OiAgRFBSWCA9IDAsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVS MSA9IDEsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVSMiA9IDIsCjE0NDc0OiAgTFRUUFJfUEhZ X1JFUEVBVEVSMyA9IDMsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVSNCA9IDQsCjE0NDc0OiAg TFRUUFJfUEhZX1JFUEVBVEVSNSA9IDUsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVSNiA9IDYs CjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVBVEVSNyA9IDcsCjE0NDc0OiAgTFRUUFJfUEhZX1JFUEVB VEVSOCA9IDgKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19sdHRwcl9jYXBzIHsK MTQ0NzQ6ICB1bmlvbiBkcGNkX3JldiByZXZpc2lvbjsKMTQ0NzQ6ICB1aW50OF90IG1vZGU7CjE0 NDc0OiAgdWludDhfdCBtYXhfbGFuZV9jb3VudDsKMTQ0NzQ6ICB1aW50OF90IG1heF9saW5rX3Jh dGU7CjE0NDc0OiAgdWludDhfdCBwaHlfcmVwZWF0ZXJfY250OwoxNDQ3NDogIHVpbnQ4X3QgbWF4 X2V4dF90aW1lb3V0OwoxNDQ3NDogIHVpbnQ4X3QgYXV4X3JkX2ludGVydmFsWzggLSAxXTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19kb25nbGVfY2FwcyB7CjE0NDc0OiAKMTQ0 NzQ6ICBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgZG9uZ2xlX3R5cGU7CjE0NDc0OiAgYm9vbCBl eHRlbmRlZENhcFZhbGlkOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIGlzX2RwX2hkbWlf czNkX2NvbnZlcnRlcjsKMTQ0NzQ6ICBib29sIGlzX2RwX2hkbWlfeWNiY3I0MjJfcGFzc190aHJv dWdoOwoxNDQ3NDogIGJvb2wgaXNfZHBfaGRtaV95Y2JjcjQyMF9wYXNzX3Rocm91Z2g7CjE0NDc0 OiAgYm9vbCBpc19kcF9oZG1pX3ljYmNyNDIyX2NvbnZlcnRlcjsKMTQ0NzQ6ICBib29sIGlzX2Rw X2hkbWlfeWNiY3I0MjBfY29udmVydGVyOwoxNDQ3NDogIHVpbnQzMl90IGRwX2hkbWlfbWF4X2Jw YzsKMTQ0NzQ6ICB1aW50MzJfdCBkcF9oZG1pX21heF9waXhlbF9jbGtfaW5fa2h6OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzY2FsaW5nX3RyYW5zZm9ybWF0aW9uIHsKMTQ0NzQ6ICBT Q0FMSU5HX1RSQU5TRk9STUFUSU9OX1VOSU5JVElBTElaRUQsCjE0NDc0OiAgU0NBTElOR19UUkFO U0ZPUk1BVElPTl9JREVOVElUWSA9IDB4MDAwMSwKMTQ0NzQ6ICBTQ0FMSU5HX1RSQU5TRk9STUFU SU9OX0NFTlRFUl9USU1JTkcgPSAweDAwMDIsCjE0NDc0OiAgU0NBTElOR19UUkFOU0ZPUk1BVElP Tl9GVUxMX1NDUkVFTl9TQ0FMRSA9IDB4MDAwNCwKMTQ0NzQ6ICBTQ0FMSU5HX1RSQU5TRk9STUFU SU9OX1BSRVNFUlZFX0FTUEVDVF9SQVRJT19TQ0FMRSA9IDB4MDAwOCwKMTQ0NzQ6ICBTQ0FMSU5H X1RSQU5TRk9STUFUSU9OX0RBTF9ERUNJREUgPSAweDAwMTAsCjE0NDc0OiAgU0NBTElOR19UUkFO U0ZPUk1BVElPTl9JTlZBTElEID0gMHg4MDAwMDAwMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg U0NBTElOR19UUkFOU0ZPUk1BVElPTl9CRUdJTkcgPSBTQ0FMSU5HX1RSQU5TRk9STUFUSU9OX0lE RU5USVRZLAoxNDQ3NDogIFNDQUxJTkdfVFJBTlNGT1JNQVRJT05fRU5EID0KMTQ0NzQ6ICAgU0NB TElOR19UUkFOU0ZPUk1BVElPTl9QUkVTRVJWRV9BU1BFQ1RfUkFUSU9fU0NBTEUKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGlzcGxheV9jb250ZW50X3R5cGUgewoxNDQ3NDogIERJU1BM QVlfQ09OVEVOVF9UWVBFX05PX0RBVEEgPSAwLAoxNDQ3NDogIERJU1BMQVlfQ09OVEVOVF9UWVBF X0dSQVBISUNTID0gMSwKMTQ0NzQ6ICBESVNQTEFZX0NPTlRFTlRfVFlQRV9QSE9UTyA9IDIsCjE0 NDc0OiAgRElTUExBWV9DT05URU5UX1RZUEVfQ0lORU1BID0gNCwKMTQ0NzQ6ICBESVNQTEFZX0NP TlRFTlRfVFlQRV9HQU1FID0gOAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZHdiX3N0ZXJlb19wYXJhbXMgewoxNDQ3NDogIGJvb2wgc3RlcmVvX2VuYWJsZWQ7CjE0NDc0 OiAgZW51bSBkd2Jfc3RlcmVvX3R5cGUgc3RlcmVvX3R5cGU7CjE0NDc0OiAgYm9vbCBzdGVyZW9f cG9sYXJpdHk7CjE0NDc0OiAgZW51bSBkd2Jfc3RlcmVvX2V5ZV9zZWxlY3Qgc3RlcmVvX2V5ZV9z ZWxlY3Q7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfZHdiX2Nudl9wYXJhbXMg ewoxNDQ3NDogIHVuc2lnbmVkIGludCBzcmNfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNy Y19oZWlnaHQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNyb3Bfd2lkdGg7CjE0NDc0OiAgYm9vbCBj cm9wX2VuOwoxNDQ3NDogIHVuc2lnbmVkIGludCBjcm9wX2hlaWdodDsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgY3JvcF94OwoxNDQ3NDogIHVuc2lnbmVkIGludCBjcm9wX3k7CjE0NDc0OiAgZW51bSBk d2JfY252X291dF9icGMgY252X291dF9icGM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZGNfZHdiX3BhcmFtcyB7CjE0NDc0OiAgc3RydWN0IGRjX2R3Yl9jbnZfcGFyYW1zIGNudl9w YXJhbXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRlc3Rfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQg aW50IGRlc3RfaGVpZ2h0OwoxNDQ3NDogIGVudW0gZHdiX3NjYWxlcl9tb2RlIG91dF9mb3JtYXQ7 CjE0NDc0OiAgZW51bSBkd2Jfb3V0cHV0X2RlcHRoIG91dHB1dF9kZXB0aDsKMTQ0NzQ6ICBlbnVt IGR3Yl9jYXB0dXJlX3JhdGUgY2FwdHVyZV9yYXRlOwoxNDQ3NDogIHN0cnVjdCBzY2FsaW5nX3Rh cHMgc2NhbGVyX3RhcHM7CjE0NDc0OiAgZW51bSBkd2Jfc3Vic2FtcGxlX3Bvc2l0aW9uIHN1YnNh bXBsZV9wb3NpdGlvbjsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqb3V0X3RyYW5z ZmVyX2Z1bmM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdW5pb24g YXVkaW9fc2FtcGxlX3JhdGVzIHsKMTQ0NzQ6ICBzdHJ1Y3Qgc2FtcGxlX3JhdGVzIHsKMTQ0NzQ6 ICAgdWludDhfdCBSQVRFXzMyOjE7CjE0NDc0OiAgIHVpbnQ4X3QgUkFURV80NF8xOjE7CjE0NDc0 OiAgIHVpbnQ4X3QgUkFURV80ODoxOwoxNDQ3NDogICB1aW50OF90IFJBVEVfODhfMjoxOwoxNDQ3 NDogICB1aW50OF90IFJBVEVfOTY6MTsKMTQ0NzQ6ICAgdWludDhfdCBSQVRFXzE3Nl80OjE7CjE0 NDc0OiAgIHVpbnQ4X3QgUkFURV8xOTI6MTsKMTQ0NzQ6ICB9IHJhdGU7CjE0NDc0OiAKMTQ0NzQ6 ICB1aW50OF90IGFsbDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19zcGVh a2VyX2ZsYWdzIHsKMTQ0NzQ6ICB1aW50MzJfdCBGTF9GUjoxOwoxNDQ3NDogIHVpbnQzMl90IExG RToxOwoxNDQ3NDogIHVpbnQzMl90IEZDOjE7CjE0NDc0OiAgdWludDMyX3QgUkxfUlI6MTsKMTQ0 NzQ6ICB1aW50MzJfdCBSQzoxOwoxNDQ3NDogIHVpbnQzMl90IEZMQ19GUkM6MTsKMTQ0NzQ6ICB1 aW50MzJfdCBSTENfUlJDOjE7CjE0NDc0OiAgdWludDMyX3QgU1VQUE9SVF9BSToxOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF1ZGlvX3NwZWFrZXJfaW5mbyB7CjE0NDc0OiAgdWlu dDMyX3QgQUxMU1BFQUtFUlM6NzsKMTQ0NzQ6ICB1aW50MzJfdCBTVVBQT1JUX0FJOjE7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19pbmZvX2ZsYWdzIHsKMTQ0 NzQ6IAoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgYXVkaW9fc3BlYWtl cl9mbGFncyBzcGVha2VyX2ZsYWdzOwoxNDQ3NDogICBzdHJ1Y3QgYXVkaW9fc3BlYWtlcl9pbmZv IGluZm87CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBhbGw7CjE0NDc0OiAgfTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXVkaW9fZm9ybWF0X2NvZGUgewoxNDQ3NDogIEFVRElPX0ZP Uk1BVF9DT0RFX0ZJUlNUID0gMSwKMTQ0NzQ6ICBBVURJT19GT1JNQVRfQ09ERV9MSU5FQVJQQ00g PSBBVURJT19GT1JNQVRfQ09ERV9GSVJTVCwKMTQ0NzQ6IAoxNDQ3NDogIEFVRElPX0ZPUk1BVF9D T0RFX0FDMywKMTQ0NzQ6IAoxNDQ3NDogIEFVRElPX0ZPUk1BVF9DT0RFX01QRUcxLAoxNDQ3NDog CjE0NDc0OiAgQVVESU9fRk9STUFUX0NPREVfTVAzLAoxNDQ3NDogCjE0NDc0OiAgQVVESU9fRk9S TUFUX0NPREVfTVBFRzIsCjE0NDc0OiAgQVVESU9fRk9STUFUX0NPREVfQUFDLAoxNDQ3NDogIEFV RElPX0ZPUk1BVF9DT0RFX0RUUywKMTQ0NzQ6ICBBVURJT19GT1JNQVRfQ09ERV9BVFJBQywKMTQ0 NzQ6ICBBVURJT19GT1JNQVRfQ09ERV8xQklUQVVESU8sCjE0NDc0OiAgQVVESU9fRk9STUFUX0NP REVfRE9MQllESUdJVEFMUExVUywKMTQ0NzQ6ICBBVURJT19GT1JNQVRfQ09ERV9EVFNfSEQsCjE0 NDc0OiAgQVVESU9fRk9STUFUX0NPREVfTUFUX01MUCwKMTQ0NzQ6ICBBVURJT19GT1JNQVRfQ09E RV9EU1QsCjE0NDc0OiAgQVVESU9fRk9STUFUX0NPREVfV01BUFJPLAoxNDQ3NDogIEFVRElPX0ZP Uk1BVF9DT0RFX0xBU1QsCjE0NDc0OiAgQVVESU9fRk9STUFUX0NPREVfQ09VTlQgPQoxNDQ3NDog ICBBVURJT19GT1JNQVRfQ09ERV9MQVNUIC0gQVVESU9fRk9STUFUX0NPREVfRklSU1QKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19tb2RlIHsKMTQ0NzQ6IAoxNDQ3NDogIGVu dW0gYXVkaW9fZm9ybWF0X2NvZGUgZm9ybWF0X2NvZGU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90 IGNoYW5uZWxfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiBhdWRpb19zYW1wbGVfcmF0ZXMg c2FtcGxlX3JhdGVzOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IHNh bXBsZV9zaXplOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2JpdF9yYXRlOwoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgdmVuZG9yX3NwZWNpZmljOwoxNDQ3NDogIH07CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXVkaW9faW5mbyB7CjE0NDc0OiAgc3RydWN0IGF1ZGlvX2lu Zm9fZmxhZ3MgZmxhZ3M7CjE0NDc0OiAgdWludDMyX3QgdmlkZW9fbGF0ZW5jeTsKMTQ0NzQ6ICB1 aW50MzJfdCBhdWRpb19sYXRlbmN5OwoxNDQ3NDogIHVpbnQzMl90IGRpc3BsYXlfaW5kZXg7CjE0 NDc0OiAgdWludDhfdCBkaXNwbGF5X25hbWVbMjBdOwoxNDQ3NDogIHVpbnQzMl90IG1hbnVmYWN0 dXJlX2lkOwoxNDQ3NDogIHVpbnQzMl90IHByb2R1Y3RfaWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 MzJfdCBwb3J0X2lkWzJdOwoxNDQ3NDogIHVpbnQzMl90IG1vZGVfY291bnQ7CjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgYXVkaW9fbW9kZSBtb2Rlc1sxNl07CjE0NDc0OiB9OwoxNDQ3NDogc3RydWN0 IGF1ZGlvX2NoZWNrIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgYXVkaW9fcGFja2V0X3R5cGU7CjE0 NDc0OiAgdW5zaWduZWQgaW50IG1heF9hdWRpb3NhbXBsZV9yYXRlOwoxNDQ3NDogIHVuc2lnbmVk IGludCBhY2F0OwoxNDQ3NDogfTsKMTQ0NzQ6IGVudW0gZGNfaW5mb2ZyYW1lX3R5cGUgewoxNDQ3 NDogIERDX0hETUlfSU5GT0ZSQU1FX1RZUEVfVkVORE9SID0gMHg4MSwKMTQ0NzQ6ICBEQ19IRE1J X0lORk9GUkFNRV9UWVBFX0FWSSA9IDB4ODIsCjE0NDc0OiAgRENfSERNSV9JTkZPRlJBTUVfVFlQ RV9TUEQgPSAweDgzLAoxNDQ3NDogIERDX0hETUlfSU5GT0ZSQU1FX1RZUEVfQVVESU8gPSAweDg0 LAoxNDQ3NDogIERDX0RQX0lORk9GUkFNRV9UWVBFX1BQUyA9IDB4MTAsCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgewoxNDQ3NDogIGJvb2wgdmFsaWQ7CjE0 NDc0OiAgdWludDhfdCBoYjA7CjE0NDc0OiAgdWludDhfdCBoYjE7CjE0NDc0OiAgdWludDhfdCBo YjI7CjE0NDc0OiAgdWludDhfdCBoYjM7CjE0NDc0OiAgdWludDhfdCBzYlszMl07CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXRfMTI4IHsKMTQ0NzQ6ICBib29s IHZhbGlkOwoxNDQ3NDogIHVpbnQ4X3QgaGIwOwoxNDQ3NDogIHVpbnQ4X3QgaGIxOwoxNDQ3NDog IHVpbnQ4X3QgaGIyOwoxNDQ3NDogIHVpbnQ4X3QgaGIzOwoxNDQ3NDogIHVpbnQ4X3Qgc2JbMTI4 XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfcGxh bmVfZmxpcF90aW1lIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdGltZV9lbGFwc2VkX2luX3VzWzEw XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaW5kZXg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHByZXZf dXBkYXRlX3RpbWVfaW5fdXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHNyX2Nv bmZpZyB7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBwc3JfdmVyc2lvbjsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgcHNyX3JmYl9zZXR1cF90aW1lOwoxNDQ3NDogIGJvb2wgcHNyX2V4aXRfbGlua190cmFp bmluZ19yZXF1aXJlZDsKMTQ0NzQ6ICBib29sIHBzcl9mcmFtZV9jYXB0dXJlX2luZGljYXRpb25f cmVxOwoxNDQ3NDogIHVuc2lnbmVkIGludCBwc3Jfc2RwX3RyYW5zbWl0X2xpbmVfbnVtX2RlYWRs aW5lOwoxNDQ3NDogIGJvb2wgYWxsb3dfc211X29wdGltaXphdGlvbnM7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiB1bmlvbiBkbWN1X3Bzcl9sZXZlbCB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6 ICAgdW5zaWduZWQgaW50IFNLSVBfQ1JDOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBTS0lQX0RQ X1ZJRF9TVFJFQU1fRElTQUJMRToxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgU0tJUF9QSFlfUE9X RVJfRE9XTjoxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgU0tJUF9BVVhfQUNLX0NIRUNLOjE7CjE0 NDc0OiAgIHVuc2lnbmVkIGludCBTS0lQX0NSVENfRElTQUJMRToxOwoxNDQ3NDogICB1bnNpZ25l ZCBpbnQgU0tJUF9BVVhfUkZCX0NBUFRVUkVfQ0hFQ0s6MTsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50 IFNLSVBfU01VX05PVElGSUNBVElPTjoxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgU0tJUF9BVVRP X1NUQVRFX0FEVkFOQ0U6MTsKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IERJU0FCTEVfUFNSX0VOVFJZ X0FCT1JUOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBTS0lQX1NJTkdMRV9PVEdfRElTQUJMRTox OwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgUkVTRVJWRUQ6MjI7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCB1MzJhbGw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHBo eXNpY2FsX3BoeV9pZCB7CjE0NDc0OiAgUEhZTERfMCwKMTQ0NzQ6ICBQSFlMRF8xLAoxNDQ3NDog IFBIWUxEXzIsCjE0NDc0OiAgUEhZTERfMywKMTQ0NzQ6ICBQSFlMRF80LAoxNDQ3NDogIFBIWUxE XzUsCjE0NDc0OiAgUEhZTERfNiwKMTQ0NzQ6ICBQSFlMRF83LAoxNDQ3NDogIFBIWUxEXzgsCjE0 NDc0OiAgUEhZTERfOSwKMTQ0NzQ6ICBQSFlMRF9DT1VOVCwKMTQ0NzQ6ICBQSFlMRF9VTktOT1dO ID0gKC0xTCkKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGh5X3R5cGUgewoxNDQ3NDog IFBIWV9UWVBFX1VOS05PV04gPSAxLAoxNDQ3NDogIFBIWV9UWVBFX1BDSUVfUEhZID0gMiwKMTQ0 NzQ6ICBQSFlfVFlQRV9VTklQSFkgPSAzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHBzcl9jb250ZXh0IHsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gY2hhbm5lbF9pZCBjaGFubmVsOwox NDQ3NDogCjE0NDc0OiAgZW51bSB0cmFuc21pdHRlciB0cmFuc21pdHRlcklkOwoxNDQ3NDogCjE0 NDc0OiAgZW51bSBlbmdpbmVfaWQgZW5naW5lSWQ7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGNvbnRy b2xsZXJfaWQgY29udHJvbGxlcklkOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBwaHlfdHlwZSBwaHlU eXBlOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBwaHlzaWNhbF9waHlfaWQgc211UGh5SWQ7CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBj cnRjVGltaW5nVmVydGljYWxUb3RhbDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBi b29sIHBzclN1cHBvcnRlZERpc3BsYXlDb25maWc7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIHBzckV4 aXRMaW5rVHJhaW5pbmdSZXF1aXJlZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIHBzckZyYW1lQ2FwdHVyZUluZGljYXRpb25SZXE7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IHNkcFRyYW5zbWl0 TGluZU51bURlYWRsaW5lOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVk IGludCB2c3luY19yYXRlX2h6OwoxNDQ3NDogIHVuc2lnbmVkIGludCBza2lwUHNyV2FpdEZvclBs bExvY2s7CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bWJlck9mQ29udHJvbGxlcnM7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIHJmYl91cGRhdGVfYXV0b19lbjsK MTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCB0aW1laHlzdF9mcmFtZXM7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgaHlzdF9saW5lczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgYXV4X3JlcGVhdHM7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiBkbWN1 X3Bzcl9sZXZlbCBwc3JfbGV2ZWw7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5z aWduZWQgaW50IGZyYW1lX2RlbGF5OwoxNDQ3NDogIGJvb2wgYWxsb3dfc211X29wdGltaXphdGlv bnM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY29sb3JzcGFjZV90cmFuc2Zvcm0g ewoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIG1hdHJpeFsxMl07CjE0NDc0OiAgYm9vbCBlbmFi bGVfcmVtYXA7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGkyY19tb3RfbW9kZSB7CjE0 NDc0OiAgSTJDX01PVF9VTkRFRiwKMTQ0NzQ6ICBJMkNfTU9UX1RSVUUsCjE0NDc0OiAgSTJDX01P VF9GQUxTRQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IEFzaWNTdGF0ZUV4IHsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgbWVtb3J5Q2xvY2s7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRpc3Bs YXlDbG9jazsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZW5naW5lQ2xvY2s7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IG1heFN1cHBvcnRlZERwcENsb2NrOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHBDbG9j azsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc29jQ2xvY2s7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRj ZkNsb2NrRGVlcFNsZWVwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBmQ2xvY2s7CjE0NDc0OiAgdW5z aWduZWQgaW50IHBoeUNsb2NrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVt IGRjX2Nsb2NrX3R5cGUgewoxNDQ3NDogIERDX0NMT0NLX1RZUEVfRElTUENMSyA9IDAsCjE0NDc0 OiAgRENfQ0xPQ0tfVFlQRV9EUFBDTEsgPSAxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRjX2Nsb2NrX2NvbmZpZyB7CjE0NDc0OiAgdWludDMyX3QgbWF4X2Nsb2NrX2toejsKMTQ0 NzQ6ICB1aW50MzJfdCBtaW5fY2xvY2tfa2h6OwoxNDQ3NDogIHVpbnQzMl90IGJ3X3JlcXVpcmVx dWlyZWRfY2xvY2tfa2h6OwoxNDQ3NDogIHVpbnQzMl90IGN1cnJlbnRfY2xvY2tfa2h6OwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkc2Nfc2xpY2VfY2FwczEgewoxNDQ3 NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ4X3QgTlVNX1NMSUNFU18xIDogMTsKMTQ0NzQ6ICAg dWludDhfdCBOVU1fU0xJQ0VTXzIgOiAxOwoxNDQ3NDogICB1aW50OF90IFJFU0VSVkVEIDogMTsK MTQ0NzQ6ICAgdWludDhfdCBOVU1fU0xJQ0VTXzQgOiAxOwoxNDQ3NDogICB1aW50OF90IE5VTV9T TElDRVNfNiA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgTlVNX1NMSUNFU184IDogMTsKMTQ0NzQ6ICAg dWludDhfdCBOVU1fU0xJQ0VTXzEwIDogMTsKMTQ0NzQ6ICAgdWludDhfdCBOVU1fU0xJQ0VTXzEy IDogMTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDhfdCByYXc7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiB1bmlvbiBkc2Nfc2xpY2VfY2FwczIgewoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0 OiAgIHVpbnQ4X3QgTlVNX1NMSUNFU18xNiA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgTlVNX1NMSUNF U18yMCA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgTlVNX1NMSUNFU18yNCA6IDE7CjE0NDc0OiAgIHVp bnQ4X3QgUkVTRVJWRUQgOiA1OwoxNDQ3NDogIH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGRzY19jb2xvcl9mb3JtYXRzIHsKMTQ0NzQ6 ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IFJHQiA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgWUNC Q1JfNDQ0IDogMTsKMTQ0NzQ6ICAgdWludDhfdCBZQ0JDUl9TSU1QTEVfNDIyIDogMTsKMTQ0NzQ6 ICAgdWludDhfdCBZQ0JDUl9OQVRJVkVfNDIyIDogMTsKMTQ0NzQ6ICAgdWludDhfdCBZQ0JDUl9O QVRJVkVfNDIwIDogMTsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRCA6IDM7CjE0NDc0OiAgfSBi aXRzOwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24g ZHNjX2NvbG9yX2RlcHRoIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50OF90IFJFU0VS VkVEMSA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgQ09MT1JfREVQVEhfOF9CUEMgOiAxOwoxNDQ3NDog ICB1aW50OF90IENPTE9SX0RFUFRIXzEwX0JQQyA6IDE7CjE0NDc0OiAgIHVpbnQ4X3QgQ09MT1Jf REVQVEhfMTJfQlBDIDogMTsKMTQ0NzQ6ICAgdWludDhfdCBSRVNFUlZFRDIgOiAzOwoxNDQ3NDog IH0gYml0czsKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkc2NfZGVjX2RwY2RfY2FwcyB7CjE0NDc0OiAgYm9vbCBpc19kc2Nfc3VwcG9ydGVkOwox NDQ3NDogIHVpbnQ4X3QgZHNjX3ZlcnNpb247CjE0NDc0OiAgaW50MzJfdCByY19idWZmZXJfc2l6 ZTsKMTQ0NzQ6ICB1bmlvbiBkc2Nfc2xpY2VfY2FwczEgc2xpY2VfY2FwczE7CjE0NDc0OiAgdW5p b24gZHNjX3NsaWNlX2NhcHMyIHNsaWNlX2NhcHMyOwoxNDQ3NDogIGludDMyX3QgbGJfYml0X2Rl cHRoOwoxNDQ3NDogIGJvb2wgaXNfYmxvY2tfcHJlZF9zdXBwb3J0ZWQ7CjE0NDc0OiAgaW50MzJf dCBlZHBfbWF4X2JpdHNfcGVyX3BpeGVsOwoxNDQ3NDogIHVuaW9uIGRzY19jb2xvcl9mb3JtYXRz IGNvbG9yX2Zvcm1hdHM7CjE0NDc0OiAgdW5pb24gZHNjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRo OwoxNDQ3NDogIGludDMyX3QgdGhyb3VnaHB1dF9tb2RlXzBfbXBzOwoxNDQ3NDogIGludDMyX3Qg dGhyb3VnaHB1dF9tb2RlXzFfbXBzOwoxNDQ3NDogIGludDMyX3QgbWF4X3NsaWNlX3dpZHRoOwox NDQ3NDogIHVpbnQzMl90IGJwcF9pbmNyZW1lbnRfZGl2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 ICB1aW50MzJfdCBicmFuY2hfb3ZlcmFsbF90aHJvdWdocHV0XzBfbXBzOwoxNDQ3NDogIHVpbnQz Ml90IGJyYW5jaF9vdmVyYWxsX3Rocm91Z2hwdXRfMV9tcHM7CjE0NDc0OiAgdWludDMyX3QgYnJh bmNoX21heF9saW5lX3dpZHRoOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvZGNjZy5oIiAyCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkY2NnIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDog IGNvbnN0IHN0cnVjdCBkY2NnX2Z1bmNzICpmdW5jczsKMTQ0NzQ6IAoxNDQ3NDogIGludCByZWZf ZHBwY2xrOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjY2dfZnVuY3MgewoxNDQ3 NDogIHZvaWQgKCp1cGRhdGVfZHBwX2R0bykoc3RydWN0IGRjY2cgKmRjY2csCjE0NDc0OiAgICBp bnQgZHBwX2luc3QsCjE0NDc0OiAgICBpbnQgcmVxX2RwcGNsayk7CjE0NDc0OiAgdm9pZCAoKmdl dF9kY2NnX3JlZl9mcmVxKShzdHJ1Y3QgZGNjZyAqZGNjZywKMTQ0NzQ6ICAgIHVuc2lnbmVkIGlu dCB4dGFsaW5fZnJlcV9pbktoeiwKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCAqZGNjZ19yZWZfZnJl cV9pbktoeik7CjE0NDc0OiAgdm9pZCAoKmRjY2dfaW5pdCkoc3RydWN0IGRjY2cgKmRjY2cpOwox NDQ3NDogfTsKMTQ0NzQ6ICMgMjcgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9jbGtfbWdyX2ludGVybmFs LmgiIDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5hbC5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIgMQoxNDQ3NDog IyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9j bGtfbWdyLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9kYy5oIiAxCjE0NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZGMuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMg MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbG9nZ2Vy X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9pbmNsdWRlL2xvZ2dlcl90eXBlcy5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvb3NfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbG9nZ2VyX3R5 cGVzLmgiIDIKMTQ0NzQ6ICMgNzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9pbmNsdWRlL2xvZ2dlcl90eXBlcy5oIgoxNDQ3NDogc3RydWN0IGRhbF9sb2dnZXI7CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19sb2dfYnVmZmVyX2N0eCB7CjE0NDc0OiAgY2hhciAqYnVm OwoxNDQ3NDogIHNpemVfdCBwb3M7CjE0NDc0OiAgc2l6ZV90IHNpemU7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGRjX2xvZ190eXBlIHsKMTQ0NzQ6ICBMT0dfRVJST1IgPSAwLAoxNDQ3 NDogIExPR19XQVJOSU5HLAoxNDQ3NDogIExPR19ERUJVRywKMTQ0NzQ6ICBMT0dfREMsCjE0NDc0 OiAgTE9HX0RUTiwKMTQ0NzQ6ICBMT0dfU1VSRkFDRSwKMTQ0NzQ6ICBMT0dfSFdfSE9UUExVRywK MTQ0NzQ6ICBMT0dfSFdfTElOS19UUkFJTklORywKMTQ0NzQ6ICBMT0dfSFdfU0VUX01PREUsCjE0 NDc0OiAgTE9HX0hXX1JFU1VNRV9TMywKMTQ0NzQ6ICBMT0dfSFdfQVVESU8sCjE0NDc0OiAgTE9H X0hXX0hQRF9JUlEsCjE0NDc0OiAgTE9HX01TVCwKMTQ0NzQ6ICBMT0dfU0NBTEVSLAoxNDQ3NDog IExPR19CSU9TLAoxNDQ3NDogIExPR19CQU5EV0lEVEhfQ0FMQ1MsCjE0NDc0OiAgTE9HX0JBTkRX SURUSF9WQUxJREFUSU9OLAoxNDQ3NDogIExPR19JMkNfQVVYLAoxNDQ3NDogIExPR19TWU5DLAox NDQ3NDogIExPR19CQUNLTElHSFQsCjE0NDc0OiAgTE9HX0ZFQVRVUkVfT1ZFUlJJREUsCjE0NDc0 OiAgTE9HX0RFVEVDVElPTl9FRElEX1BBUlNFUiwKMTQ0NzQ6ICBMT0dfREVURUNUSU9OX0RQX0NB UFMsCjE0NDc0OiAgTE9HX1JFU09VUkNFLAoxNDQ3NDogIExPR19ETUwsCjE0NDc0OiAgTE9HX0VW RU5UX01PREVfU0VULAoxNDQ3NDogIExPR19FVkVOVF9ERVRFQ1RJT04sCjE0NDc0OiAgTE9HX0VW RU5UX0xJTktfVFJBSU5JTkcsCjE0NDc0OiAgTE9HX0VWRU5UX0xJTktfTE9TUywKMTQ0NzQ6ICBM T0dfRVZFTlRfVU5ERVJGTE9XLAoxNDQ3NDogIExPR19JRl9UUkFDRSwKMTQ0NzQ6ICBMT0dfUEVS Rl9UUkFDRSwKMTQ0NzQ6ICBMT0dfRElTUExBWVNUQVRTLAoxNDQ3NDogIExPR19IRE1JX1JFVElN RVJfUkVEUklWRVIsCjE0NDc0OiAgTE9HX0RTQywKMTQ0NzQ6ICBMT0dfRFdCLAoxNDQ3NDogIExP R19HQU1NQV9ERUJVRywKMTQ0NzQ6ICBMT0dfTUFYX0hXX1BPSU5UUywKMTQ0NzQ6ICBMT0dfQUxM X1RGX0NIQU5ORUxTLAoxNDQ3NDogIExPR19TQU1QTEVfMURMVVQsCjE0NDc0OiAgTE9HX1NFQ1RJ T05fVE9UQUxfQ09VTlQKMTQ0NzQ6IH07CjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5cGVzLmgiIDEKMTQ0NzQ6 ICMgNDAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dw aW9fdHlwZXMuaCIKMTQ0NzQ6IGVudW0gZ3Bpb19yZXN1bHQgewoxNDQ3NDogIEdQSU9fUkVTVUxU X09LLAoxNDQ3NDogIEdQSU9fUkVTVUxUX05VTExfSEFORExFLAoxNDQ3NDogIEdQSU9fUkVTVUxU X0lOVkFMSURfREFUQSwKMTQ0NzQ6ICBHUElPX1JFU1VMVF9ERVZJQ0VfQlVTWSwKMTQ0NzQ6ICBH UElPX1JFU1VMVF9PUEVOX0ZBSUxFRCwKMTQ0NzQ6ICBHUElPX1JFU1VMVF9BTFJFQURZX09QRU5F RCwKMTQ0NzQ6ICBHUElPX1JFU1VMVF9OT05fU1BFQ0lGSUNfRVJST1IKMTQ0NzQ6IH07CjE0NDc0 OiAjIDU4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9n cGlvX3R5cGVzLmgiCjE0NDc0OiBlbnVtIGdwaW9faWQgewoxNDQ3NDogIEdQSU9fSURfVU5LTk9X TiA9ICgtMSksCjE0NDc0OiAgR1BJT19JRF9ERENfREFUQSwKMTQ0NzQ6ICBHUElPX0lEX0REQ19D TE9DSywKMTQ0NzQ6ICBHUElPX0lEX0dFTkVSSUMsCjE0NDc0OiAgR1BJT19JRF9IUEQsCjE0NDc0 OiAgR1BJT19JRF9HUElPX1BBRCwKMTQ0NzQ6ICBHUElPX0lEX1ZJUF9QQUQsCjE0NDc0OiAgR1BJ T19JRF9TWU5DLAoxNDQ3NDogIEdQSU9fSURfR1NMLAoxNDQ3NDogIEdQSU9fSURfQ09VTlQsCjE0 NDc0OiAgR1BJT19JRF9NSU4gPSBHUElPX0lEX0REQ19EQVRBLAoxNDQ3NDogIEdQSU9fSURfTUFY ID0gR1BJT19JRF9HU0wKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBncGlvX3Bpbl9pbmZvIHsKMTQ0NzQ6ICB1aW50MzJfdCBvZmZzZXQ7CjE0 NDc0OiAgdWludDMyX3Qgb2Zmc2V0X3k7CjE0NDc0OiAgdWludDMyX3Qgb2Zmc2V0X2VuOwoxNDQ3 NDogIHVpbnQzMl90IG9mZnNldF9tYXNrOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgbWFzazsK MTQ0NzQ6ICB1aW50MzJfdCBtYXNrX3k7CjE0NDc0OiAgdWludDMyX3QgbWFza19lbjsKMTQ0NzQ6 ICB1aW50MzJfdCBtYXNrX21hc2s7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGdwaW9f cGluX291dHB1dF9zdGF0ZSB7CjE0NDc0OiAgR1BJT19QSU5fT1VUUFVUX1NUQVRFX0FDVElWRV9M T1csCjE0NDc0OiAgR1BJT19QSU5fT1VUUFVUX1NUQVRFX0FDVElWRV9ISUdILAoxNDQ3NDogIEdQ SU9fUElOX09VVFBVVF9TVEFURV9ERUZBVUxUID0gR1BJT19QSU5fT1VUUFVUX1NUQVRFX0FDVElW RV9MT1cKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZ3Bpb19nZW5lcmljIHsKMTQ0NzQ6 ICBHUElPX0dFTkVSSUNfVU5LTk9XTiA9ICgtMSksCjE0NDc0OiAgR1BJT19HRU5FUklDX0EsCjE0 NDc0OiAgR1BJT19HRU5FUklDX0IsCjE0NDc0OiAgR1BJT19HRU5FUklDX0MsCjE0NDc0OiAgR1BJ T19HRU5FUklDX0QsCjE0NDc0OiAgR1BJT19HRU5FUklDX0UsCjE0NDc0OiAgR1BJT19HRU5FUklD X0YsCjE0NDc0OiAgR1BJT19HRU5FUklDX0csCjE0NDc0OiAgR1BJT19HRU5FUklDX0NPVU5ULAox NDQ3NDogIEdQSU9fR0VORVJJQ19NSU4gPSBHUElPX0dFTkVSSUNfQSwKMTQ0NzQ6ICBHUElPX0dF TkVSSUNfTUFYID0gR1BJT19HRU5FUklDX0IKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0g Z3Bpb19ocGQgewoxNDQ3NDogIEdQSU9fSFBEX1VOS05PV04gPSAoLTEpLAoxNDQ3NDogIEdQSU9f SFBEXzEsCjE0NDc0OiAgR1BJT19IUERfMiwKMTQ0NzQ6ICBHUElPX0hQRF8zLAoxNDQ3NDogIEdQ SU9fSFBEXzQsCjE0NDc0OiAgR1BJT19IUERfNSwKMTQ0NzQ6ICBHUElPX0hQRF82LAoxNDQ3NDog IEdQSU9fSFBEX0NPVU5ULAoxNDQ3NDogIEdQSU9fSFBEX01JTiA9IEdQSU9fSFBEXzEsCjE0NDc0 OiAgR1BJT19IUERfTUFYID0gR1BJT19IUERfNgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBncGlvX2dwaW9fcGFkIHsKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEX1VOS05PV04gPSAoLTEpLAox NDQ3NDogIEdQSU9fR1BJT19QQURfMCwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzEsCjE0NDc0OiAg R1BJT19HUElPX1BBRF8yLAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMywKMTQ0NzQ6ICBHUElPX0dQ SU9fUEFEXzQsCjE0NDc0OiAgR1BJT19HUElPX1BBRF81LAoxNDQ3NDogIEdQSU9fR1BJT19QQURf NiwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzcsCjE0NDc0OiAgR1BJT19HUElPX1BBRF84LAoxNDQ3 NDogIEdQSU9fR1BJT19QQURfOSwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzEwLAoxNDQ3NDogIEdQ SU9fR1BJT19QQURfMTEsCjE0NDc0OiAgR1BJT19HUElPX1BBRF8xMiwKMTQ0NzQ6ICBHUElPX0dQ SU9fUEFEXzEzLAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMTQsCjE0NDc0OiAgR1BJT19HUElPX1BB RF8xNSwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzE2LAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMTcs CjE0NDc0OiAgR1BJT19HUElPX1BBRF8xOCwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzE5LAoxNDQ3 NDogIEdQSU9fR1BJT19QQURfMjAsCjE0NDc0OiAgR1BJT19HUElPX1BBRF8yMSwKMTQ0NzQ6ICBH UElPX0dQSU9fUEFEXzIyLAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMjMsCjE0NDc0OiAgR1BJT19H UElPX1BBRF8yNCwKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzI1LAoxNDQ3NDogIEdQSU9fR1BJT19Q QURfMjYsCjE0NDc0OiAgR1BJT19HUElPX1BBRF8yNywKMTQ0NzQ6ICBHUElPX0dQSU9fUEFEXzI4 LAoxNDQ3NDogIEdQSU9fR1BJT19QQURfMjksCjE0NDc0OiAgR1BJT19HUElPX1BBRF8zMCwKMTQ0 NzQ6ICBHUElPX0dQSU9fUEFEX0NPVU5ULAoxNDQ3NDogIEdQSU9fR1BJT19QQURfTUlOID0gR1BJ T19HUElPX1BBRF8wLAoxNDQ3NDogIEdQSU9fR1BJT19QQURfTUFYID0gR1BJT19HUElPX1BBRF8z MAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBncGlvX3ZpcF9wYWQgewoxNDQ3NDogIEdQ SU9fVklQX1BBRF9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgR1BJT19W SVBfUEFEX1NDTCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgR1BJT19WSVBfUEFEX1NEQSwKMTQ0 NzQ6ICBHUElPX1ZJUF9QQURfVkhBRCwKMTQ0NzQ6ICBHUElPX1ZJUF9QQURfVlBIQ1RMLAoxNDQ3 NDogIEdQSU9fVklQX1BBRF9WSVBDTEssCjE0NDc0OiAgR1BJT19WSVBfUEFEX1ZJRCwKMTQ0NzQ6 ICBHUElPX1ZJUF9QQURfVlBDTEswLAoxNDQ3NDogIEdQSU9fVklQX1BBRF9EVkFMSUQsCjE0NDc0 OiAgR1BJT19WSVBfUEFEX1BTWU5DLAoxNDQ3NDogIEdQSU9fVklQX1BBRF9DT1VOVCwKMTQ0NzQ6 ICBHUElPX1ZJUF9QQURfTUlOID0gR1BJT19WSVBfUEFEX1NDTCwKMTQ0NzQ6ICBHUElPX1ZJUF9Q QURfTUFYID0gR1BJT19WSVBfUEFEX1BTWU5DCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVt IGdwaW9fc3luYyB7CjE0NDc0OiAgR1BJT19TWU5DX1VOS05PV04gPSAoLTEpLAoxNDQ3NDogIEdQ SU9fU1lOQ19IU1lOQ19BLAoxNDQ3NDogIEdQSU9fU1lOQ19WU1lOQ19BLAoxNDQ3NDogIEdQSU9f U1lOQ19IU1lOQ19CLAoxNDQ3NDogIEdQSU9fU1lOQ19WU1lOQ19CLAoxNDQ3NDogIEdQSU9fU1lO Q19DT1VOVCwKMTQ0NzQ6ICBHUElPX1NZTkNfTUlOID0gR1BJT19TWU5DX0hTWU5DX0EsCjE0NDc0 OiAgR1BJT19TWU5DX01BWCA9IEdQSU9fU1lOQ19WU1lOQ19CCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIGdwaW9fZ3NsIHsKMTQ0NzQ6ICBHUElPX0dTTF9VTktOT1dOID0gKC0xKSwKMTQ0 NzQ6ICBHUElPX0dTTF9HRU5MT0NLX0NMT0NLLAoxNDQ3NDogIEdQSU9fR1NMX0dFTkxPQ0tfVlNZ TkMsCjE0NDc0OiAgR1BJT19HU0xfU1dBUExPQ0tfQSwKMTQ0NzQ6ICBHUElPX0dTTF9TV0FQTE9D S19CLAoxNDQ3NDogIEdQSU9fR1NMX0NPVU5ULAoxNDQ3NDogIEdQSU9fR1NMX01JTiA9IEdQSU9f R1NMX0dFTkxPQ0tfQ0xPQ0ssCjE0NDc0OiAgR1BJT19HU0xfTUFYID0gR1BJT19HU0xfU1dBUExP Q0tfQgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZ3Bpb19kZGNfbGluZSB7CjE0NDc0OiAgR1BJT19ERENfTElORV9V TktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBHUElPX0REQ19MSU5FX0REQzEsCjE0NDc0OiAgR1BJT19E RENfTElORV9EREMyLAoxNDQ3NDogIEdQSU9fRERDX0xJTkVfRERDMywKMTQ0NzQ6ICBHUElPX0RE Q19MSU5FX0REQzQsCjE0NDc0OiAgR1BJT19ERENfTElORV9EREM1LAoxNDQ3NDogIEdQSU9fRERD X0xJTkVfRERDNiwKMTQ0NzQ6ICBHUElPX0REQ19MSU5FX0REQ19WR0EsCjE0NDc0OiAgR1BJT19E RENfTElORV9WSVBfUEFELAoxNDQ3NDogIEdQSU9fRERDX0xJTkVfSTJDX1BBRCA9IEdQSU9fRERD X0xJTkVfVklQX1BBRCwKMTQ0NzQ6ICBHUElPX0REQ19MSU5FX0NPVU5ULAoxNDQ3NDogIEdQSU9f RERDX0xJTkVfTUlOID0gR1BJT19ERENfTElORV9EREMxLAoxNDQ3NDogIEdQSU9fRERDX0xJTkVf TUFYID0gR1BJT19ERENfTElORV9JMkNfUEFECjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBncGlvX21vZGUgewoxNDQ3 NDogIEdQSU9fTU9ERV9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBHUElPX01PREVfSU5QVVQsCjE0 NDc0OiAgR1BJT19NT0RFX09VVFBVVCwKMTQ0NzQ6ICBHUElPX01PREVfRkFTVF9PVVRQVVQsCjE0 NDc0OiAgR1BJT19NT0RFX0hBUkRXQVJFLAoxNDQ3NDogIEdQSU9fTU9ERV9JTlRFUlJVUFQKMTQ0 NzQ6IH07CjE0NDc0OiAjIDI0NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2luY2x1ZGUvZ3Bpb190eXBlcy5oIgoxNDQ3NDogZW51bSBncGlvX3NpZ25hbF9zb3VyY2Ug ewoxNDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBHUElP X1NJR05BTF9TT1VSQ0VfREFDQV9TVEVSRU9fU1lOQywKMTQ0NzQ6ICBHUElPX1NJR05BTF9TT1VS Q0VfUEFTU19USFJPVUdIX1NURVJFT19TWU5DLAoxNDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9E QUNCX1NURVJFT19TWU5DLAoxNDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNBX0hTWU5DLAox NDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNCX0hTWU5DLAoxNDQ3NDogIEdQSU9fU0lHTkFM X1NPVVJDRV9EQUNBX1ZTWU5DLAoxNDQ3NDogIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNCX1ZTWU5D LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBncGlvX3N0ZXJlb19zb3VyY2UgewoxNDQ3 NDogIEdQSU9fU1RFUkVPX1NPVVJDRV9VTktOT1dOID0gKC0xKSwKMTQ0NzQ6ICBHUElPX1NURVJF T19TT1VSQ0VfRDEsCjE0NDc0OiAgR1BJT19TVEVSRU9fU09VUkNFX0QyLAoxNDQ3NDogIEdQSU9f U1RFUkVPX1NPVVJDRV9EMywKMTQ0NzQ6ICBHUElPX1NURVJFT19TT1VSQ0VfRDQsCjE0NDc0OiAg R1BJT19TVEVSRU9fU09VUkNFX0Q1LAoxNDQ3NDogIEdQSU9fU1RFUkVPX1NPVVJDRV9ENgoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVt IGdwaW9fY29uZmlnX3R5cGUgewoxNDQ3NDogIEdQSU9fQ09ORklHX1RZUEVfTk9ORSwKMTQ0NzQ6 ICBHUElPX0NPTkZJR19UWVBFX0REQywKMTQ0NzQ6ICBHUElPX0NPTkZJR19UWVBFX0hQRCwKMTQ0 NzQ6ICBHUElPX0NPTkZJR19UWVBFX0dFTkVSSUNfTVVYLAoxNDQ3NDogIEdQSU9fQ09ORklHX1RZ UEVfR1NMX01VWCwKMTQ0NzQ6ICBHUElPX0NPTkZJR19UWVBFX0kyQ19BVVhfRFVBTF9NT0RFCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBncGlvX2RkY19jb25m aWdfdHlwZSB7CjE0NDc0OiAgR1BJT19ERENfQ09ORklHX1RZUEVfTU9ERV9BVVgsCjE0NDc0OiAg R1BJT19ERENfQ09ORklHX1RZUEVfTU9ERV9JMkMsCjE0NDc0OiAgR1BJT19ERENfQ09ORklHX1RZ UEVfUE9MTF9GT1JfQ09OTkVDVCwKMTQ0NzQ6ICBHUElPX0REQ19DT05GSUdfVFlQRV9QT0xMX0ZP Ul9ESVNDT05ORUNULAoxNDQ3NDogIEdQSU9fRERDX0NPTkZJR19UWVBFX0RJU0FCTEVfUE9MTElO RwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGdwaW9fZGRjX2NvbmZpZyB7CjE0NDc0 OiAgZW51bSBncGlvX2RkY19jb25maWdfdHlwZSB0eXBlOwoxNDQ3NDogIGJvb2wgZGF0YV9lbl9i aXRfcHJlc2VudDsKMTQ0NzQ6ICBib29sIGNsb2NrX2VuX2JpdF9wcmVzZW50OwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBncGlvX2hwZF9jb25maWcgewox NDQ3NDogIHVpbnQzMl90IGRlbGF5X29uX2Nvbm5lY3Q7CjE0NDc0OiAgdWludDMyX3QgZGVsYXlf b25fZGlzY29ubmVjdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBncGlvX2dlbmVy aWNfbXV4X2NvbmZpZyB7CjE0NDc0OiAgYm9vbCBlbmFibGVfb3V0cHV0X2Zyb21fbXV4OwoxNDQ3 NDogIGVudW0gZ3Bpb19zaWduYWxfc291cmNlIG11eF9zZWxlY3Q7CjE0NDc0OiAgZW51bSBncGlv X3N0ZXJlb19zb3VyY2Ugc3RlcmVvX3NlbGVjdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVu dW0gZ3Bpb19nc2xfbXV4X2NvbmZpZ190eXBlIHsKMTQ0NzQ6ICBHUElPX0dTTF9NVVhfQ09ORklH X1RZUEVfRElTQUJMRSwKMTQ0NzQ6ICBHUElPX0dTTF9NVVhfQ09ORklHX1RZUEVfVElNSU5HX1NZ TkMsCjE0NDc0OiAgR1BJT19HU0xfTVVYX0NPTkZJR19UWVBFX0ZMSVBfU1lOQwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGdwaW9fZ3NsX211eF9jb25maWcgewoxNDQ3NDogIGVudW0g Z3Bpb19nc2xfbXV4X2NvbmZpZ190eXBlIHR5cGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVp bnQzMl90IGdzbF9ncm91cDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBncGlvX2Nv bmZpZ19kYXRhIHsKMTQ0NzQ6ICBlbnVtIGdwaW9fY29uZmlnX3R5cGUgdHlwZTsKMTQ0NzQ6ICB1 bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBncGlvX2RkY19jb25maWcgZGRjOwoxNDQ3NDogICBzdHJ1 Y3QgZ3Bpb19ocGRfY29uZmlnIGhwZDsKMTQ0NzQ6ICAgc3RydWN0IGdwaW9fZ2VuZXJpY19tdXhf Y29uZmlnIGdlbmVyaWNfbXV4OwoxNDQ3NDogICBzdHJ1Y3QgZ3Bpb19nc2xfbXV4X2NvbmZpZyBn c2xfbXV4OwoxNDQ3NDogIH0gY29uZmlnOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzMgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAjIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xpbmtfc2Vydmlj ZV90eXBlcy5oIiAxCjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvaW5jbHVkZS9saW5rX3NlcnZpY2VfdHlwZXMuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX3R5cGVzLmgiIDEK MTQ0NzQ6ICMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNs dWRlL2xpbmtfc2VydmljZV90eXBlcy5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pcnFfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbGlua19zZXJ2aWNl X3R5cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGRjOwoxNDQ3NDogc3Ry dWN0IGlycV9tYW5hZ2VyOwoxNDQ3NDogCjE0NDc0OiBlbnVtIHsKMTQ0NzQ6ICBNQVhfQ09OVFJP TExFUl9OVU0gPSA2CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRwX3Bvd2VyX3N0YXRl IHsKMTQ0NzQ6ICBEUF9QT1dFUl9TVEFURV9EMCA9IDEsCjE0NDc0OiAgRFBfUE9XRVJfU1RBVEVf RDMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZWRwX3JldmlzaW9uIHsKMTQ0NzQ6IAox NDQ3NDogIEVEUF9SRVZJU0lPTl8xMSA9IDB4MDAsCjE0NDc0OiAKMTQ0NzQ6ICBFRFBfUkVWSVNJ T05fMTIgPSAweDAxLAoxNDQ3NDogCjE0NDc0OiAgRURQX1JFVklTSU9OXzEzID0gMHgwMgoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgTElOS19SQVRFX1JFRl9GUkVRX0lO X0tIWiA9IDI3MDAwCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGxpbmtfdHJhaW5pbmdf cmVzdWx0IHsKMTQ0NzQ6ICBMSU5LX1RSQUlOSU5HX1NVQ0NFU1MsCjE0NDc0OiAgTElOS19UUkFJ TklOR19DUl9GQUlMX0xBTkUwLAoxNDQ3NDogIExJTktfVFJBSU5JTkdfQ1JfRkFJTF9MQU5FMSwK MTQ0NzQ6ICBMSU5LX1RSQUlOSU5HX0NSX0ZBSUxfTEFORTIzLAoxNDQ3NDogCjE0NDc0OiAgTElO S19UUkFJTklOR19FUV9GQUlMX0NSLAoxNDQ3NDogCjE0NDc0OiAgTElOS19UUkFJTklOR19FUV9G QUlMX0VRLAoxNDQ3NDogIExJTktfVFJBSU5JTkdfTFFBX0ZBSUwsCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgbGlua190cmFpbmluZ19zZXR0aW5ncyB7CjE0NDc0OiAgc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgbGlua19zZXR0aW5nczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbGFuZV9zZXR0 aW5ncyBsYW5lX3NldHRpbmdzW0xBTkVfQ09VTlRfRFBfTUFYXTsKMTQ0NzQ6IAoxNDQ3NDogIGVu dW0gZGNfdm9sdGFnZV9zd2luZyAqdm9sdGFnZV9zd2luZzsKMTQ0NzQ6ICBlbnVtIGRjX3ByZV9l bXBoYXNpcyAqcHJlX2VtcGhhc2lzOwoxNDQ3NDogIGVudW0gZGNfcG9zdF9jdXJzb3IyICpwb3N0 X2N1cnNvcjI7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MTZfdCBjcl9wYXR0ZXJuX3RpbWU7CjE0NDc0 OiAgdWludDE2X3QgZXFfcGF0dGVybl90aW1lOwoxNDQ3NDogIGVudW0gZGNfZHBfdHJhaW5pbmdf cGF0dGVybiBwYXR0ZXJuX2Zvcl9lcTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgZW5oYW5jZWRfZnJh bWluZzsKMTQ0NzQ6ICBib29sIGFsbG93X2ludmFsaWRfbXNhX3RpbWluZ19wYXJhbTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRwX3Rlc3RfcGF0dGVybiB7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9WSURFT19NT0RFID0gMCwK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX1BIWV9QQVRURVJOX0JFR0lO LAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9EMTAyID0gRFBfVEVTVF9QQVRURVJOX1BIWV9QQVRU RVJOX0JFR0lOLAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9TWU1CT0xfRVJST1IsCjE0NDc0OiAg RFBfVEVTVF9QQVRURVJOX1BSQlM3LAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl84MEJJVF9DVVNU T00sCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX0NQMjUyMF8xLAoxNDQ3NDogIERQX1RFU1RfUEFU VEVSTl9DUDI1MjBfMiwKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fSEJSMl9DT01QTElBTkNFX0VZ RSA9IERQX1RFU1RfUEFUVEVSTl9DUDI1MjBfMiwKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fQ1Ay NTIwXzMsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9UUkFJTklOR19Q QVRURVJOMSwKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fVFJBSU5JTkdfUEFUVEVSTjIsCjE0NDc0 OiAgRFBfVEVTVF9QQVRURVJOX1RSQUlOSU5HX1BBVFRFUk4zLAoxNDQ3NDogIERQX1RFU1RfUEFU VEVSTl9UUkFJTklOR19QQVRURVJONCwKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fUEhZX1BBVFRF Uk5fRU5EID0gRFBfVEVTVF9QQVRURVJOX1RSQUlOSU5HX1BBVFRFUk40LAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBEUF9URVNUX1BBVFRFUk5fQ09MT1JfU1FVQVJFUywKMTQ0NzQ6ICBEUF9URVNU X1BBVFRFUk5fQ09MT1JfU1FVQVJFU19DRUEsCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX1ZFUlRJ Q0FMX0JBUlMsCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX0hPUklaT05UQUxfQkFSUywKMTQ0NzQ6 ICBEUF9URVNUX1BBVFRFUk5fQ09MT1JfUkFNUCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgRFBf VEVTVF9QQVRURVJOX0FVRElPX09QRVJBVE9SX0RFRklORUQsCjE0NDc0OiAgRFBfVEVTVF9QQVRU RVJOX0FVRElPX1NBV1RPT1RILAoxNDQ3NDogCjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX1VOU1VQ UE9SVEVECjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRwX3Rlc3RfcGF0dGVybl9jb2xv cl9zcGFjZSB7CjE0NDc0OiAgRFBfVEVTVF9QQVRURVJOX0NPTE9SX1NQQUNFX1JHQiwKMTQ0NzQ6 ICBEUF9URVNUX1BBVFRFUk5fQ09MT1JfU1BBQ0VfWUNCQ1I2MDEsCjE0NDc0OiAgRFBfVEVTVF9Q QVRURVJOX0NPTE9SX1NQQUNFX1lDQkNSNzA5LAoxNDQ3NDogIERQX1RFU1RfUEFUVEVSTl9DT0xP Ul9TUEFDRV9VTkRFRklORUQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHBfcGFuZWxf bW9kZSB7CjE0NDc0OiAKMTQ0NzQ6ICBEUF9QQU5FTF9NT0RFX0RFRkFVTFQsCjE0NDc0OiAKMTQ0 NzQ6ICBEUF9QQU5FTF9NT0RFX0VEUCwKMTQ0NzQ6IAoxNDQ3NDogIERQX1BBTkVMX01PREVfU1BF Q0lBTAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkcGNkX3RyYWluaW5n X2xhbmVfc2V0IHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgVk9M VEFHRV9TV0lOR19TRVQ6MjsKMTQ0NzQ6ICAgdWludDhfdCBNQVhfU1dJTkdfUkVBQ0hFRDoxOwox NDQ3NDogICB1aW50OF90IFBSRV9FTVBIQVNJU19TRVQ6MjsKMTQ0NzQ6ICAgdWludDhfdCBNQVhf UFJFX0VNUEhBU0lTX1JFQUNIRUQ6MTsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IFBPU1RfQ1VS U09SMl9TRVQ6MjsKMTQ0NzQ6ICMgMTYxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvaW5jbHVkZS9saW5rX3NlcnZpY2VfdHlwZXMuaCIKMTQ0NzQ6ICB9IGJpdHM7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50OF90IHJhdzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uIHsKMTQ0NzQ6ICB1aW50 OF90IHZjcF9pZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCBzbG90X2NvdW50Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxv Y2F0aW9uX3RhYmxlIHsKMTQ0NzQ6IAoxNDQ3NDogIGludCBzdHJlYW1fY291bnQ7CjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uIHN0cmVhbV9hbGxvY2F0aW9u c1tNQVhfQ09OVFJPTExFUl9OVU1dOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzQgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAjIDEgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2N0 cmxfZGVmcy5oIiAxCjE0NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9jdHJsX2RlZnMuaCIKMTQ0NzQ6ICMgMSAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmplY3Rf ZGVmcy5oIiAxCjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9jdHJsX2RlZnMuaCIgMgoxNDQ3NDogIyA0MiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmplY3Rf Y3RybF9kZWZzLmgiCjE0NDc0OiBlbnVtIGRpc3BsYXlfb3V0cHV0X2JpdF9kZXB0aCB7CjE0NDc0 OiAgUEFORUxfVU5ERUZJTkUgPSAwLAoxNDQ3NDogIFBBTkVMXzZCSVRfQ09MT1IgPSAxLAoxNDQ3 NDogIFBBTkVMXzhCSVRfQ09MT1IgPSAyLAoxNDQ3NDogIFBBTkVMXzEwQklUX0NPTE9SID0gMywK MTQ0NzQ6ICBQQU5FTF8xMkJJVF9DT0xPUiA9IDQsCjE0NDc0OiAgUEFORUxfMTZCSVRfQ09MT1Ig PSA1LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGFsX2Rl dmljZV90eXBlIHsKMTQ0NzQ6ICBERVZJQ0VfVFlQRV9VTktOT1dOID0gMCwKMTQ0NzQ6ICBERVZJ Q0VfVFlQRV9MQ0QsCjE0NDc0OiAgREVWSUNFX1RZUEVfQ1JULAoxNDQ3NDogIERFVklDRV9UWVBF X0RGUCwKMTQ0NzQ6ICBERVZJQ0VfVFlQRV9DViwKMTQ0NzQ6ICBERVZJQ0VfVFlQRV9UViwKMTQ0 NzQ6ICBERVZJQ0VfVFlQRV9DRiwKMTQ0NzQ6ICBERVZJQ0VfVFlQRV9XSVJFTEVTUwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGV2aWNlX2lkIHsKMTQ0NzQ6ICBlbnVt IGRhbF9kZXZpY2VfdHlwZSBkZXZpY2VfdHlwZToxNjsKMTQ0NzQ6ICB1aW50MzJfdCBlbnVtX2lk OjE2OwoxNDQ3NDogIHVpbnQxNl90IHJhd19kZXZpY2VfdGFnOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pMmNfaW5mbyB7CjE0NDc0OiAgc3RydWN0IGdw aW9faW5mbyB7CjE0NDc0OiAgIHVpbnQzMl90IGNsa19tYXNrX3JlZ2lzdGVyX2luZGV4OwoxNDQ3 NDogICB1aW50MzJfdCBjbGtfZW5fcmVnaXN0ZXJfaW5kZXg7CjE0NDc0OiAgIHVpbnQzMl90IGNs a195X3JlZ2lzdGVyX2luZGV4OwoxNDQ3NDogICB1aW50MzJfdCBjbGtfYV9yZWdpc3Rlcl9pbmRl eDsKMTQ0NzQ6ICAgdWludDMyX3QgZGF0YV9tYXNrX3JlZ2lzdGVyX2luZGV4OwoxNDQ3NDogICB1 aW50MzJfdCBkYXRhX2VuX3JlZ2lzdGVyX2luZGV4OwoxNDQ3NDogICB1aW50MzJfdCBkYXRhX3lf cmVnaXN0ZXJfaW5kZXg7CjE0NDc0OiAgIHVpbnQzMl90IGRhdGFfYV9yZWdpc3Rlcl9pbmRleDsK MTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBjbGtfbWFza19zaGlmdDsKMTQ0NzQ6ICAgdWludDMy X3QgY2xrX2VuX3NoaWZ0OwoxNDQ3NDogICB1aW50MzJfdCBjbGtfeV9zaGlmdDsKMTQ0NzQ6ICAg dWludDMyX3QgY2xrX2Ffc2hpZnQ7CjE0NDc0OiAgIHVpbnQzMl90IGRhdGFfbWFza19zaGlmdDsK MTQ0NzQ6ICAgdWludDMyX3QgZGF0YV9lbl9zaGlmdDsKMTQ0NzQ6ICAgdWludDMyX3QgZGF0YV95 X3NoaWZ0OwoxNDQ3NDogICB1aW50MzJfdCBkYXRhX2Ffc2hpZnQ7CjE0NDc0OiAgfSBncGlvX2lu Zm87CjE0NDc0OiAKMTQ0NzQ6ICBib29sIGkyY19od19hc3Npc3Q7CjE0NDc0OiAgdWludDMyX3Qg aTJjX2xpbmU7CjE0NDc0OiAgdWludDMyX3QgaTJjX2VuZ2luZV9pZDsKMTQ0NzQ6ICB1aW50MzJf dCBpMmNfc2xhdmVfYWRkcmVzczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBncmFw aGljc19vYmplY3RfaHBkX2luZm8gewoxNDQ3NDogIHVpbnQ4X3QgaHBkX2ludF9ncGlvX3VpZDsK MTQ0NzQ6ICB1aW50OF90IGhwZF9hY3RpdmU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgY29ubmVjdG9yX2RldmljZV90YWdfaW5mbyB7CjE0NDc0OiAgdWludDMyX3QgYWNwaV9kZXZp Y2U7CjE0NDc0OiAgc3RydWN0IGRldmljZV9pZCBkZXZfaWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGV2aWNlX3RpbWluZyB7CjE0NDc0OiAgc3RydWN0IG1pc2NfaW5mbyB7CjE0 NDc0OiAgIHVpbnQzMl90IEhPUklaT05UQUxfQ1VUX09GRjoxOwoxNDQ3NDogCjE0NDc0OiAgIHVp bnQzMl90IEhfU1lOQ19QT0xBUklUWToxOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IFZfU1lO Q19QT0xBUklUWToxOwoxNDQ3NDogICB1aW50MzJfdCBWRVJUSUNBTF9DVVRfT0ZGOjE7CjE0NDc0 OiAgIHVpbnQzMl90IEhfUkVQTElDQVRJT05fQlkyOjE7CjE0NDc0OiAgIHVpbnQzMl90IFZfUkVQ TElDQVRJT05fQlkyOjE7CjE0NDc0OiAgIHVpbnQzMl90IENPTVBPU0lURV9TWU5DOjE7CjE0NDc0 OiAgIHVpbnQzMl90IElOVEVSTEFDRToxOwoxNDQ3NDogICB1aW50MzJfdCBET1VCTEVfQ0xPQ0s6 MTsKMTQ0NzQ6ICAgdWludDMyX3QgUkdCODg4OjE7CjE0NDc0OiAgIHVpbnQzMl90IEdSRVlfTEVW RUw6MjsKMTQ0NzQ6ICAgdWludDMyX3QgU1BBVElBTDoxOwoxNDQ3NDogICB1aW50MzJfdCBURU1Q T1JBTDoxOwoxNDQ3NDogICB1aW50MzJfdCBBUElfRU5BQkxFRDoxOwoxNDQ3NDogIH0gbWlzY19p bmZvOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcGl4ZWxfY2xrOwoxNDQ3NDogIHVpbnQzMl90 IGhvcml6b250YWxfYWRkcmVzc2FibGU7CjE0NDc0OiAgdWludDMyX3QgaG9yaXpvbnRhbF9ibGFu a2luZ190aW1lOwoxNDQ3NDogIHVpbnQzMl90IHZlcnRpY2FsX2FkZHJlc3NhYmxlOwoxNDQ3NDog IHVpbnQzMl90IHZlcnRpY2FsX2JsYW5raW5nX3RpbWU7CjE0NDc0OiAgdWludDMyX3QgaG9yaXpv bnRhbF9zeW5jX29mZnNldDsKMTQ0NzQ6ICB1aW50MzJfdCBob3Jpem9udGFsX3N5bmNfd2lkdGg7 CjE0NDc0OiAgdWludDMyX3QgdmVydGljYWxfc3luY19vZmZzZXQ7CjE0NDc0OiAgdWludDMyX3Qg dmVydGljYWxfc3luY193aWR0aDsKMTQ0NzQ6ICB1aW50MzJfdCBob3Jpem9udGFsX2JvcmRlcjsK MTQ0NzQ6ICB1aW50MzJfdCB2ZXJ0aWNhbF9ib3JkZXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3Qgc3VwcG9ydGVkX3JlZnJlc2hfcmF0ZSB7CjE0NDc0OiAgdWludDMyX3QgUkVGUkVT SF9SQVRFXzMwSFo6MTsKMTQ0NzQ6ICB1aW50MzJfdCBSRUZSRVNIX1JBVEVfNDBIWjoxOwoxNDQ3 NDogIHVpbnQzMl90IFJFRlJFU0hfUkFURV80OEhaOjE7CjE0NDc0OiAgdWludDMyX3QgUkVGUkVT SF9SQVRFXzUwSFo6MTsKMTQ0NzQ6ICB1aW50MzJfdCBSRUZSRVNIX1JBVEVfNjBIWjoxOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVtYmVkZGVkX3BhbmVsX2luZm8gewoxNDQ3NDog IHN0cnVjdCBkZXZpY2VfdGltaW5nIGxjZF90aW1pbmc7CjE0NDc0OiAgdWludDMyX3Qgc3NfaWQ7 CjE0NDc0OiAgc3RydWN0IHN1cHBvcnRlZF9yZWZyZXNoX3JhdGUgc3VwcG9ydGVkX3JyOwoxNDQ3 NDogIHVpbnQzMl90IGRycl9lbmFibGVkOwoxNDQ3NDogIHVpbnQzMl90IG1pbl9kcnJfcmVmcmVz aF9yYXRlOwoxNDQ3NDogIGJvb2wgcmVhbHRla19lRFBUb0xWRFM7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZGNfZmlybXdhcmVfaW5mbyB7CjE0NDc0OiAgc3RydWN0IHBsbF9pbmZv IHsKMTQ0NzQ6ICAgdWludDMyX3QgY3J5c3RhbF9mcmVxdWVuY3k7CjE0NDc0OiAgIHVpbnQzMl90 IG1pbl9pbnB1dF9weGxfY2xrX3BsbF9mcmVxdWVuY3k7CjE0NDc0OiAgIHVpbnQzMl90IG1heF9p bnB1dF9weGxfY2xrX3BsbF9mcmVxdWVuY3k7CjE0NDc0OiAgIHVpbnQzMl90IG1pbl9vdXRwdXRf cHhsX2Nsa19wbGxfZnJlcXVlbmN5OwoxNDQ3NDogICB1aW50MzJfdCBtYXhfb3V0cHV0X3B4bF9j bGtfcGxsX2ZyZXF1ZW5jeTsKMTQ0NzQ6ICB9IHBsbF9pbmZvOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IGZpcm13YXJlX2ZlYXR1cmUgewoxNDQ3NDogICB1aW50MzJfdCBtZW1vcnlfY2xrX3NzX3Bl cmNlbnRhZ2U7CjE0NDc0OiAgIHVpbnQzMl90IGVuZ2luZV9jbGtfc3NfcGVyY2VudGFnZTsKMTQ0 NzQ6ICB9IGZlYXR1cmU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkZWZhdWx0X2Rpc3BsYXlf ZW5naW5lX3BsbF9mcmVxdWVuY3k7CjE0NDc0OiAgdWludDMyX3QgZXh0ZXJuYWxfY2xvY2tfc291 cmNlX2ZyZXF1ZW5jeV9mb3JfZHA7CjE0NDc0OiAgdWludDMyX3Qgc211X2dwdV9wbGxfb3V0cHV0 X2ZyZXE7CjE0NDc0OiAgdWludDhfdCBtaW5fYWxsb3dlZF9ibF9sZXZlbDsKMTQ0NzQ6ICB1aW50 OF90IHJlbW90ZV9kaXNwbGF5X2NvbmZpZzsKMTQ0NzQ6ICB1aW50MzJfdCBkZWZhdWx0X21lbW9y eV9jbGs7CjE0NDc0OiAgdWludDMyX3QgZGVmYXVsdF9lbmdpbmVfY2xrOwoxNDQ3NDogIHVpbnQz Ml90IGRwX3BoeV9yZWZfY2xrOwoxNDQ3NDogIHVpbnQzMl90IGkyY19lbmdpbmVfcmVmX2NsazsK MTQ0NzQ6ICBib29sIG9lbV9pMmNfcHJlc2VudDsKMTQ0NzQ6ICB1aW50OF90IG9lbV9pMmNfb2Jq X2lkOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3RlcF9hbmRfZGVs YXlfaW5mbyB7CjE0NDc0OiAgdWludDMyX3Qgc3RlcDsKMTQ0NzQ6ICB1aW50MzJfdCBkZWxheTsK MTQ0NzQ6ICB1aW50MzJfdCByZWNvbW1lbmRlZF9yZWZfZGl2OwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IHNwcmVhZF9zcGVjdHJ1bV9pbmZvIHsKMTQ0NzQ6ICBzdHJ1Y3Qgc3ByZWFk X3NwZWN0cnVtX3R5cGUgewoxNDQ3NDogICBib29sIENFTlRFUl9NT0RFOjE7CjE0NDc0OiAgIGJv b2wgRVhURVJOQUw6MTsKMTQ0NzQ6ICAgYm9vbCBTVEVQX0FORF9ERUxBWV9JTkZPOjE7CjE0NDc0 OiAgfSB0eXBlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHNwcmVh ZF9zcGVjdHJ1bV9wZXJjZW50YWdlOwoxNDQ3NDogIHVpbnQzMl90IHNwcmVhZF9wZXJjZW50YWdl X2RpdmlkZXI7CjE0NDc0OiAgdWludDMyX3Qgc3ByZWFkX3NwZWN0cnVtX3JhbmdlOwoxNDQ3NDog CjE0NDc0OiAgdW5pb24gewoxNDQ3NDogICBzdHJ1Y3Qgc3RlcF9hbmRfZGVsYXlfaW5mbyBzdGVw X2FuZF9kZWxheV9pbmZvOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJf dCB0YXJnZXRfY2xvY2tfcmFuZ2U7CjE0NDc0OiAgfTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGdyYXBoaWNzX29iamVjdF9lbmNvZGVyX2NhcF9pbmZvIHsKMTQ0NzQ6 ICB1aW50MzJfdCBkcF9oYnIyX2NhcDoxOwoxNDQ3NDogIHVpbnQzMl90IGRwX2hicjJfdmFsaWRh dGVkOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcmVzZXJ2ZWQ6 MTU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGluX2Nvbm5lY3Rvcl9pbmZvIHsK MTQ0NzQ6ICB1aW50MzJfdCBncGlvX2lkOwoxNDQ3NDogIGJvb2wgZ3Bpb190dl9hY3RpdmVfc3Rh dGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0geyBJTlZBTElEX0RESV9D SEFOTkVMX01BUFBJTkcgPSAweDAgfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogdW5pb24gZGRpX2NoYW5uZWxfbWFwcGluZyB7CjE0NDc0OiAgc3RydWN0IG1hcHBpbmcg ewoxNDQ3NDogICB1aW50OF90IGxhbmUwOjI7CjE0NDc0OiAgIHVpbnQ4X3QgbGFuZTE6MjsKMTQ0 NzQ6ICAgdWludDhfdCBsYW5lMjoyOwoxNDQ3NDogICB1aW50OF90IGxhbmUzOjI7CjE0NDc0OiAg fSBtYXBwaW5nOwoxNDQ3NDogIHVpbnQ4X3QgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRyYW5zbWl0dGVyX2NvbmZpZ3VyYXRpb25f aW5mbyB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHRyYW5zbWl0dGVyIHRyYW5zbWl0dGVyX3BoeV9p ZDsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIGRkaV9jaGFubmVsX21hcHBpbmcgb3V0cHV0X2NoYW5u ZWxfbWFwcGluZzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0cmFuc21pdHRlcl9j b25maWd1cmF0aW9uIHsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCB0cmFuc21pdHRlcl9jb25maWd1 cmF0aW9uX2luZm8gcHJpbWFyeV90cmFuc21pdHRlcl9jb25maWc7CjE0NDc0OiAKMTQ0NzQ6ICBz dHJ1Y3QgdHJhbnNtaXR0ZXJfY29uZmlndXJhdGlvbl9pbmZvIHNlY29uZGFyeV90cmFuc21pdHRl cl9jb25maWc7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2N0cmxfZGVmcy5oIgoxNDQ3NDog c3RydWN0IGkyY19yZWdfaW5mbyB7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBpMmNfcmVnX2luZGV4 OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgaTJjX3JlZ192YWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZXh0X2hkbWlfc2V0dGluZ3MgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgc2x2 X2FkZHI7CjE0NDc0OiAgdW5zaWduZWQgY2hhciByZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNf cmVnX2luZm8gcmVnX3NldHRpbmdzWzldOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcmVnX251bV82 ZzsKMTQ0NzQ6ICBzdHJ1Y3QgaTJjX3JlZ19pbmZvIHJlZ19zZXR0aW5nc182Z1szXTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgaW50ZWdyYXRlZF9pbmZv IHsKMTQ0NzQ6ICBzdHJ1Y3QgY2xvY2tfdm9sdGFnZV9jYXBzIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgIHVpbnQzMl90IHZvbHRhZ2VfaW5kZXg7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3Qg bWF4X3N1cHBvcnRlZF9jbGs7CjE0NDc0OiAgfSBkaXNwX2Nsa192b2x0YWdlWzRdOwoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGRpc3BsYXlfY29ubmVjdGlvbl9pbmZvIHsKMTQ0NzQ6ICAgc3RydWN0 IGV4dGVybmFsX2Rpc3BsYXlfcGF0aCB7CjE0NDc0OiAKMTQ0NzQ6ICAgIHVpbnQzMl90IGRldmlj ZV90YWc7CjE0NDc0OiAKMTQ0NzQ6ICAgIHVpbnQzMl90IGRldmljZV9hY3BpX2VudW07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogICAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBkZXZpY2VfY29u bmVjdG9yX2lkOwoxNDQ3NDogCjE0NDc0OiAgICB1aW50OF90IGV4dF9hdXhfZGRjX2x1dF9pbmRl eDsKMTQ0NzQ6IAoxNDQ3NDogICAgdWludDhfdCBleHRfaHBkX3Bpbl9sdXRfaW5kZXg7CjE0NDc0 OiAKMTQ0NzQ6ICAgIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgZXh0X2VuY29kZXJfb2JqX2lk OwoxNDQ3NDogCjE0NDc0OiAgICB1bmlvbiBkZGlfY2hhbm5lbF9tYXBwaW5nIGNoYW5uZWxfbWFw cGluZzsKMTQ0NzQ6IAoxNDQ3NDogICAgdW5zaWduZWQgc2hvcnQgY2FwczsKMTQ0NzQ6ICAgfSBw YXRoWzddOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgZ3VfaWRbMTZdOwoxNDQ3NDogICB1aW50 OF90IGNoZWNrc3VtOwoxNDQ3NDogIH0gZXh0X2Rpc3BfY29ubl9pbmZvOwoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGF2YWlsYWJsZV9zX2Nsa19saXN0IHsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJf dCBzdXBwb3J0ZWRfc19jbGs7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3Qgdm9sdGFnZV9pbmRl eDsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCB2b2x0YWdlX2lkOwoxNDQ3NDogIH0gYXZhaWxf c19jbGtbNV07CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IG1lbW9yeV90eXBlOwoxNDQ3NDogIHVp bnQ4X3QgbWFfY2hhbm5lbF9udW1iZXI7CjE0NDc0OiAgdWludDMyX3QgYm9vdF91cF9lbmdpbmVf Y2xvY2s7CjE0NDc0OiAgdWludDMyX3QgZGVudGlzdF92Y29fZnJlcTsKMTQ0NzQ6ICB1aW50MzJf dCBib290X3VwX3VtYV9jbG9jazsKMTQ0NzQ6ICB1aW50MzJfdCBib290X3VwX3JlcV9kaXNwbGF5 X3ZlY3RvcjsKMTQ0NzQ6ICB1aW50MzJfdCBvdGhlcl9kaXNwbGF5X21pc2M7CjE0NDc0OiAgdWlu dDMyX3QgZ3B1X2NhcF9pbmZvOwoxNDQ3NDogIHVpbnQzMl90IHNiX21taW9fYmFzZV9hZGRyOwox NDQ3NDogIHVpbnQzMl90IHN5c3RlbV9jb25maWc7CjE0NDc0OiAgdWludDMyX3QgY3B1X2NhcF9p bmZvOwoxNDQ3NDogIHVpbnQzMl90IG1heF9uYl92b2x0YWdlOwoxNDQ3NDogIHVpbnQzMl90IG1p bl9uYl92b2x0YWdlOwoxNDQ3NDogIHVpbnQzMl90IGJvb3RfdXBfbmJfdm9sdGFnZTsKMTQ0NzQ6 ICB1aW50MzJfdCBleHRfZGlzcF9jb25uX2luZm9fb2Zmc2V0OwoxNDQ3NDogIHVpbnQzMl90IGNz cl9tM19hcmJfY250bF9kZWZhdWx0WzEwXTsKMTQ0NzQ6ICB1aW50MzJfdCBjc3JfbTNfYXJiX2Nu dGxfdXZkWzEwXTsKMTQ0NzQ6ICB1aW50MzJfdCBjc3JfbTNfYXJiX2NudGxfZnMzZFsxMF07CjE0 NDc0OiAgdWludDMyX3QgZ21jX3Jlc3RvcmVfcmVzZXRfdGltZTsKMTQ0NzQ6ICB1aW50MzJfdCBt aW5pbXVtX25fY2xrOwoxNDQ3NDogIHVpbnQzMl90IGlkbGVfbl9jbGs7CjE0NDc0OiAgdWludDMy X3QgZGRyX2RsbF9wb3dlcl91cF90aW1lOwoxNDQ3NDogIHVpbnQzMl90IGRkcl9wbGxfcG93ZXJf dXBfdGltZTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHBjaWVfY2xrX3NzX3R5cGU7CjE0NDc0 OiAgdWludDMyX3QgbHZkc19zc19wZXJjZW50YWdlOwoxNDQ3NDogIHVpbnQzMl90IGx2ZHNfc3Nw cmVhZF9yYXRlX2luXzEwaHo7CjE0NDc0OiAgdWludDMyX3QgaGRtaV9zc19wZXJjZW50YWdlOwox NDQ3NDogIHVpbnQzMl90IGhkbWlfc3NwcmVhZF9yYXRlX2luXzEwaHo7CjE0NDc0OiAgdWludDMy X3QgZHZpX3NzX3BlcmNlbnRhZ2U7CjE0NDc0OiAgdWludDMyX3QgZHZpX3NzcHJlYWRfcmF0ZV9p bl8xMF9oejsKMTQ0NzQ6ICB1aW50MzJfdCBzY2xrX2RwbV9ib29zdF9tYXJnaW47CjE0NDc0OiAg dWludDMyX3Qgc2Nsa19kcG1fdGhyb3R0bGVfbWFyZ2luOwoxNDQ3NDogIHVpbnQzMl90IHNjbGtf ZHBtX3RkcF9saW1pdF9wZzsKMTQ0NzQ6ICB1aW50MzJfdCBzY2xrX2RwbV90ZHBfbGltaXRfYm9v c3Q7CjE0NDc0OiAgdWludDMyX3QgYm9vc3RfZW5naW5lX2Nsb2NrOwoxNDQ3NDogIHVpbnQzMl90 IGJvb3N0X3ZpZF8yYml0OwoxNDQ3NDogIHVpbnQzMl90IGVuYWJsZV9ib29zdDsKMTQ0NzQ6ICB1 aW50MzJfdCBnbmJfdGRwX2xpbWl0OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgbWF4X2x2ZHNf cGNsa19mcmVxX2luX3NpbmdsZV9saW5rOwoxNDQ3NDogIHVpbnQzMl90IGx2ZHNfbWlzYzsKMTQ0 NzQ6ICB1aW50MzJfdCBsdmRzX3B3cl9vbl9zZXFfZGlnX29uX3RvX2RlX2luXzRtczsKMTQ0NzQ6 ICB1aW50MzJfdCBsdmRzX3B3cl9vbl9zZXFfZGVfdG9fdmFyeV9ibF9pbl80bXM7CjE0NDc0OiAg dWludDMyX3QgbHZkc19wd3Jfb2ZmX3NlcV92YXJ5X2JsX3RvX2RlX2luNG1zOwoxNDQ3NDogIHVp bnQzMl90IGx2ZHNfcHdyX29mZl9zZXFfZGVfdG9fZGlnX29uX2luNG1zOwoxNDQ3NDogIHVpbnQz Ml90IGx2ZHNfb2ZmX3RvX29uX2RlbGF5X2luXzRtczsKMTQ0NzQ6ICB1aW50MzJfdCBsdmRzX3B3 cl9vbl9zZXFfdmFyeV9ibF90b19ibG9uX2luXzRtczsKMTQ0NzQ6ICB1aW50MzJfdCBsdmRzX3B3 cl9vZmZfc2VxX2Jsb25fdG9fdmFyeV9ibF9pbl80bXM7CjE0NDc0OiAgdWludDMyX3QgbHZkc19y ZXNlcnZlZDE7CjE0NDc0OiAgdWludDMyX3QgbHZkc19iaXRfZGVwdGhfY29udHJvbF92YWw7CjE0 NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwMF9leHRfaGRtaV9zbHZfYWRkcjsKMTQ0NzQ6 ICB1bnNpZ25lZCBjaGFyIGRwMF9leHRfaGRtaV9yZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNf cmVnX2luZm8gZHAwX2V4dF9oZG1pX3JlZ19zZXR0aW5nc1s5XTsKMTQ0NzQ6ICB1bnNpZ25lZCBj aGFyIGRwMF9leHRfaGRtaV82Z19yZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8g ZHAwX2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1szXTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRw MV9leHRfaGRtaV9zbHZfYWRkcjsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwMV9leHRfaGRtaV9y ZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAxX2V4dF9oZG1pX3JlZ19zZXR0 aW5nc1s5XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwMV9leHRfaGRtaV82Z19yZWdfbnVtOwox NDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAxX2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1sz XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwMl9leHRfaGRtaV9zbHZfYWRkcjsKMTQ0NzQ6ICB1 bnNpZ25lZCBjaGFyIGRwMl9leHRfaGRtaV9yZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVn X2luZm8gZHAyX2V4dF9oZG1pX3JlZ19zZXR0aW5nc1s5XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFy IGRwMl9leHRfaGRtaV82Z19yZWdfbnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAy X2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1szXTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwM19l eHRfaGRtaV9zbHZfYWRkcjsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwM19leHRfaGRtaV9yZWdf bnVtOwoxNDQ3NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAzX2V4dF9oZG1pX3JlZ19zZXR0aW5n c1s5XTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGRwM19leHRfaGRtaV82Z19yZWdfbnVtOwoxNDQ3 NDogIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAzX2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1szXTsK MTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGRwX3NzX2NvbnRyb2w7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIHBvd2VyX3NvdXJjZSB7CjE0NDc0 OiAgUE9XRVJfU09VUkNFX0FDID0gMCwKMTQ0NzQ6ICBQT1dFUl9TT1VSQ0VfREMsCjE0NDc0OiAg UE9XRVJfU09VUkNFX0xJTUlURURfUE9XRVIsCjE0NDc0OiAgUE9XRVJfU09VUkNFX0xJTUlURURf UE9XRVJfMiwKMTQ0NzQ6ICBQT1dFUl9TT1VSQ0VfTUFYCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgYmlvc19ldmVudF9pbmZvIHsKMTQ0NzQ6ICB1aW50MzJfdCB0aGVybWFsX3N0YXRl OwoxNDQ3NDogIHVpbnQzMl90IGJhY2tsaWdodF9sZXZlbDsKMTQ0NzQ6ICBlbnVtIHBvd2VyX3Nv dXJjZSBwb3dlclNvdXJjZTsKMTQ0NzQ6ICBib29sIGhhc190aGVybWFsX3N0YXRlX2NoYW5nZWQ7 CjE0NDc0OiAgYm9vbCBoYXNfcG93ZXJfc291cmNlX2NoYW5nZWQ7CjE0NDc0OiAgYm9vbCBoYXNf Zm9yY2VkX21vZGVfY2hhbmdlZDsKMTQ0NzQ6ICBib29sIGZvcmNlZF9tb2RlOwoxNDQ3NDogIGJv b2wgYmFja2xpZ2h0X2NoYW5nZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIERGU19CWVBBU1NfRU5BQkxFID0g MHgxMAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgSU5WQUxJRF9CQUNL TElHSFQgPSAtMQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBhbmVsX2JhY2tsaWdo dF9ib3VuZGFyaWVzIHsKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fc2lnbmFsX2xldmVsOwoxNDQ3NDog IHVpbnQzMl90IG1heF9zaWduYWxfbGV2ZWw7CjE0NDc0OiB9OwoxNDQ3NDogIyAzNSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDIKMTQ0NzQ6ICMgMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9vcHAuaCIg MQoxNDQ3NDogIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2luYy9ody9vcHAuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9ody9od19zaGFyZWQuaCIgMQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9od19zaGFyZWQuaCIKMTQ0 NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3 X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgMzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9pbmMvaHcvaHdfc2hhcmVkLmgiIDIKMTQ0NzQ6ICMgNDEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvaHdfc2hhcmVkLmgiCjE0NDc0 OiBzdHJ1Y3QgZ2FtbWFfY3VydmUgewoxNDQ3NDogIHVpbnQzMl90IG9mZnNldDsKMTQ0NzQ6ICB1 aW50MzJfdCBzZWdtZW50c19udW07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3Vy dmVfcG9pbnRzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB4OwoxNDQ3NDogIHN0cnVjdCBm aXhlZDMxXzMyIHk7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgb2Zmc2V0OwoxNDQ3NDogIHN0 cnVjdCBmaXhlZDMxXzMyIHNsb3BlOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgY3VzdG9tX2Zs b2F0X3g7CjE0NDc0OiAgdWludDMyX3QgY3VzdG9tX2Zsb2F0X3k7CjE0NDc0OiAgdWludDMyX3Qg Y3VzdG9tX2Zsb2F0X29mZnNldDsKMTQ0NzQ6ICB1aW50MzJfdCBjdXN0b21fZmxvYXRfc2xvcGU7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3VydmVfcG9pbnRzMyB7CjE0NDc0OiAg c3RydWN0IGN1cnZlX3BvaW50cyByZWQ7CjE0NDc0OiAgc3RydWN0IGN1cnZlX3BvaW50cyBncmVl bjsKMTQ0NzQ6ICBzdHJ1Y3QgY3VydmVfcG9pbnRzIGJsdWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgcHdsX3Jlc3VsdF9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBy ZWQ7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgZ3JlZW47CjE0NDc0OiAgc3RydWN0IGZpeGVk MzFfMzIgYmx1ZTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGRlbHRhX3JlZDsK MTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBkZWx0YV9ncmVlbjsKMTQ0NzQ6ICBzdHJ1Y3QgZml4 ZWQzMV8zMiBkZWx0YV9ibHVlOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcmVkX3JlZzsKMTQ0 NzQ6ICB1aW50MzJfdCBncmVlbl9yZWc7CjE0NDc0OiAgdWludDMyX3QgYmx1ZV9yZWc7CjE0NDc0 OiAKMTQ0NzQ6ICB1aW50MzJfdCBkZWx0YV9yZWRfcmVnOwoxNDQ3NDogIHVpbnQzMl90IGRlbHRh X2dyZWVuX3JlZzsKMTQ0NzQ6ICB1aW50MzJfdCBkZWx0YV9ibHVlX3JlZzsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19yZ2IgewoxNDQ3NDogIHVpbnQzMl90IHJlZDsKMTQ0NzQ6 ICB1aW50MzJfdCBncmVlbjsKMTQ0NzQ6ICB1aW50MzJfdCBibHVlOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHRldHJhaGVkcmFsXzE3eDE3eDE3IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNf cmdiIGx1dDBbMTIyOV07CjE0NDc0OiAgc3RydWN0IGRjX3JnYiBsdXQxWzEyMjhdOwoxNDQ3NDog IHN0cnVjdCBkY19yZ2IgbHV0MlsxMjI4XTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcmdiIGx1dDNbMTIy OF07CjE0NDc0OiB9OwoxNDQ3NDogc3RydWN0IHRldHJhaGVkcmFsXzl4OXg5IHsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfcmdiIGx1dDBbMTgzXTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcmdiIGx1dDFbMTgyXTsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfcmdiIGx1dDJbMTgyXTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcmdiIGx1 dDNbMTgyXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0ZXRyYWhlZHJhbF9wYXJh bXMgewoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHRldHJhaGVkcmFsXzE3eDE3eDE3 IHRldHJhaGVkcmFsXzE3OwoxNDQ3NDogICBzdHJ1Y3QgdGV0cmFoZWRyYWxfOXg5eDkgdGV0cmFo ZWRyYWxfOTsKMTQ0NzQ6ICB9OwoxNDQ3NDogIGJvb2wgdXNlX3RldHJhaGVkcmFsXzk7CjE0NDc0 OiAgYm9vbCB1c2VfMTJiaXRzOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHB3bF9wYXJhbXMgewox NDQ3NDogIHN0cnVjdCBnYW1tYV9jdXJ2ZSBhcnJfY3VydmVfcG9pbnRzWzM0XTsKMTQ0NzQ6ICB1 bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCBjdXJ2ZV9wb2ludHMgYXJyX3BvaW50c1syXTsKMTQ0NzQ6 ICAgc3RydWN0IGN1cnZlX3BvaW50czMgY29ybmVyX3BvaW50c1syXTsKMTQ0NzQ6ICB9OwoxNDQ3 NDogIHN0cnVjdCBwd2xfcmVzdWx0X2RhdGEgcmdiX3Jlc3VsdGVkWzI1NiArIDNdOwoxNDQ3NDog IHVpbnQzMl90IGh3X3BvaW50c19udW07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGxiX3BpeGVsX2Rl cHRoIHsKMTQ0NzQ6IAoxNDQ3NDogIExCX1BJWEVMX0RFUFRIXzE4QlBQID0gMSwKMTQ0NzQ6ICBM Ql9QSVhFTF9ERVBUSF8yNEJQUCA9IDIsCjE0NDc0OiAgTEJfUElYRUxfREVQVEhfMzBCUFAgPSA0 LAoxNDQ3NDogIExCX1BJWEVMX0RFUFRIXzM2QlBQID0gOAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBncmFwaGljc19jc2NfYWRqdXN0X3R5cGUgewoxNDQ3NDogIEdSQVBISUNTX0NTQ19B REpVU1RfVFlQRV9CWVBBU1MgPSAwLAoxNDQ3NDogIEdSQVBISUNTX0NTQ19BREpVU1RfVFlQRV9I VywKMTQ0NzQ6ICBHUkFQSElDU19DU0NfQURKVVNUX1RZUEVfU1cKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IGVudW0gaXBwX2RlZ2FtbWFfbW9kZSB7CjE0NDc0OiAgSVBQX0RFR0FNTUFfTU9ERV9C WVBBU1MsCjE0NDc0OiAgSVBQX0RFR0FNTUFfTU9ERV9IV19zUkdCLAoxNDQ3NDogIElQUF9ERUdB TU1BX01PREVfSFdfeHZZQ0MsCjE0NDc0OiAgSVBQX0RFR0FNTUFfTU9ERV9VU0VSX1BXTAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBpcHBfb3V0cHV0X2Zvcm1hdCB7CjE0NDc0OiAgSVBQ X09VVFBVVF9GT1JNQVRfMTJfQklUX0ZJWCwKMTQ0NzQ6ICBJUFBfT1VUUFVUX0ZPUk1BVF8xNl9C SVRfQllQQVNTLAoxNDQ3NDogIElQUF9PVVRQVVRfRk9STUFUX0ZMT0FUCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGV4cGFuc2lvbl9tb2RlIHsKMTQ0NzQ6ICBFWFBBTlNJT05fTU9ERV9E WU5BTUlDLAoxNDQ3NDogIEVYUEFOU0lPTl9NT0RFX1pFUk8KMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkZWZhdWx0X2FkanVzdG1lbnQgewoxNDQ3NDogIGVudW0gbGJfcGl4ZWxfZGVw dGggbGJfY29sb3JfZGVwdGg7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBvdXRfY29sb3Jf c3BhY2U7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBpbl9jb2xvcl9zcGFjZTsKMTQ0NzQ6 ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRoOwoxNDQ3NDogIGVudW0gcGl4ZWxfZm9y bWF0IHN1cmZhY2VfcGl4ZWxfZm9ybWF0OwoxNDQ3NDogIGVudW0gZ3JhcGhpY3NfY3NjX2FkanVz dF90eXBlIGNzY19hZGp1c3RfdHlwZTsKMTQ0NzQ6ICBib29sIGZvcmNlX2h3X2RlZmF1bHQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvdXRfY3NjX2NvbG9yX21hdHJp eCB7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcl9zcGFjZTsKMTQ0NzQ6ICB1aW50 MTZfdCByZWd2YWxbMTJdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBnYW11dF9yZW1h cF9zZWxlY3QgewoxNDQ3NDogIEdBTVVUX1JFTUFQX0JZUEFTUyA9IDAsCjE0NDc0OiAgR0FNVVRf UkVNQVBfQ09FRkYsCjE0NDc0OiAgR0FNVVRfUkVNQVBfQ09NQV9DT0VGRiwKMTQ0NzQ6ICBHQU1V VF9SRU1BUF9DT01CX0NPRUZGCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIG9wcF9yZWdh bW1hIHsKMTQ0NzQ6ICBPUFBfUkVHQU1NQV9CWVBBU1MgPSAwLAoxNDQ3NDogIE9QUF9SRUdBTU1B X1NSR0IsCjE0NDc0OiAgT1BQX1JFR0FNTUFfWFZZQ0MsCjE0NDc0OiAgT1BQX1JFR0FNTUFfVVNF UgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBvcHRjX2RzY19tb2RlIHsKMTQ0NzQ6ICBP UFRDX0RTQ19ESVNBQkxFRCA9IDAsCjE0NDc0OiAgT1BUQ19EU0NfRU5BQkxFRF80NDQgPSAxLAox NDQ3NDogIE9QVENfRFNDX0VOQUJMRURfTkFUSVZFX1NVQlNBTVBMRUQgPSAyCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUgewoxNDQ3NDogIHVpbnQxNl90 IHNjYWxlX3JlZDsKMTQ0NzQ6ICB1aW50MTZfdCBiaWFzX3JlZDsKMTQ0NzQ6ICB1aW50MTZfdCBz Y2FsZV9ncmVlbjsKMTQ0NzQ6ICB1aW50MTZfdCBiaWFzX2dyZWVuOwoxNDQ3NDogIHVpbnQxNl90 IHNjYWxlX2JsdWU7CjE0NDc0OiAgdWludDE2X3QgYmlhc19ibHVlOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogZW51bSB0ZXN0X3BhdHRlcm5fZHluX3JhbmdlIHsKMTQ0NzQ6ICBURVNUX1BBVFRF Uk5fRFlOX1JBTkdFX1ZFU0EgPSAwLAoxNDQ3NDogIFRFU1RfUEFUVEVSTl9EWU5fUkFOR0VfQ0VB CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHRlc3RfcGF0dGVybl9tb2RlIHsKMTQ0NzQ6 ICBURVNUX1BBVFRFUk5fTU9ERV9DT0xPUlNRVUFSRVNfUkdCID0gMCwKMTQ0NzQ6ICBURVNUX1BB VFRFUk5fTU9ERV9DT0xPUlNRVUFSRVNfWUNCQ1I2MDEsCjE0NDc0OiAgVEVTVF9QQVRURVJOX01P REVfQ09MT1JTUVVBUkVTX1lDQkNSNzA5LAoxNDQ3NDogIFRFU1RfUEFUVEVSTl9NT0RFX1ZFUlRJ Q0FMQkFSUywKMTQ0NzQ6ICBURVNUX1BBVFRFUk5fTU9ERV9IT1JJWk9OVEFMQkFSUywKMTQ0NzQ6 ICBURVNUX1BBVFRFUk5fTU9ERV9TSU5HTEVSQU1QX1JHQiwKMTQ0NzQ6ICBURVNUX1BBVFRFUk5f TU9ERV9EVUFMUkFNUF9SR0IsCjE0NDc0OiAgVEVTVF9QQVRURVJOX01PREVfWFJfQklBU19SR0IK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gdGVzdF9wYXR0ZXJuX2NvbG9yX2Zvcm1hdCB7 CjE0NDc0OiAgVEVTVF9QQVRURVJOX0NPTE9SX0ZPUk1BVF9CUENfNiA9IDAsCjE0NDc0OiAgVEVT VF9QQVRURVJOX0NPTE9SX0ZPUk1BVF9CUENfOCwKMTQ0NzQ6ICBURVNUX1BBVFRFUk5fQ09MT1Jf Rk9STUFUX0JQQ18xMCwKMTQ0NzQ6ICBURVNUX1BBVFRFUk5fQ09MT1JfRk9STUFUX0JQQ18xMgox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjb250cm9sbGVyX2RwX3Rlc3RfcGF0dGVybiB7 CjE0NDc0OiAgQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fRDEwMiA9IDAsCjE0NDc0OiAgQ09O VFJPTExFUl9EUF9URVNUX1BBVFRFUk5fU1lNQk9MRVJST1IsCjE0NDc0OiAgQ09OVFJPTExFUl9E UF9URVNUX1BBVFRFUk5fUFJCUzcsCjE0NDc0OiAgQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5f Q09MT1JTUVVBUkVTLAoxNDQ3NDogIENPTlRST0xMRVJfRFBfVEVTVF9QQVRURVJOX1ZFUlRJQ0FM QkFSUywKMTQ0NzQ6ICBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9IT1JJWk9OVEFMQkFSUywK MTQ0NzQ6ICBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9DT0xPUlJBTVAsCjE0NDc0OiAgQ09O VFJPTExFUl9EUF9URVNUX1BBVFRFUk5fVklERU9NT0RFLAoxNDQ3NDogIENPTlRST0xMRVJfRFBf VEVTVF9QQVRURVJOX1JFU0VSVkVEXzgsCjE0NDc0OiAgQ09OVFJPTExFUl9EUF9URVNUX1BBVFRF Uk5fUkVTRVJWRURfOSwKMTQ0NzQ6ICBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9SRVNFUlZF RF9BLAoxNDQ3NDogIENPTlRST0xMRVJfRFBfVEVTVF9QQVRURVJOX0NPTE9SU1FVQVJFU19DRUEs CjE0NDc0OiAgQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fU09MSURfQ09MT1IKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gY29udHJvbGxlcl9kcF9jb2xvcl9zcGFjZSB7CjE0NDc0OiAg Q09OVFJPTExFUl9EUF9DT0xPUl9TUEFDRV9SR0IsCjE0NDc0OiAgQ09OVFJPTExFUl9EUF9DT0xP Ul9TUEFDRV9ZQ0JDUjYwMSwKMTQ0NzQ6ICBDT05UUk9MTEVSX0RQX0NPTE9SX1NQQUNFX1lDQkNS NzA5LAoxNDQ3NDogIENPTlRST0xMRVJfRFBfQ09MT1JfU1BBQ0VfVURFRklORUQKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfbHV0X21vZGUgewoxNDQ3NDogIExVVF9CWVBBU1MsCjE0 NDc0OiAgTFVUX1JBTV9BLAoxNDQ3NDogIExVVF9SQU1fQgoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzAg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvb3BwLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvaW5jL2h3L3RyYW5zZm9ybS5oIiAxCjE0NDc0OiAjIDM1ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L3RyYW5zZm9ybS5oIgoxNDQ3NDog c3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg dHJhbnNmb3JtIHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgdHJhbnNmb3JtX2Z1bmNzICpmdW5jczsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIGludCBpbnN0OwoxNDQ3NDog IHN0cnVjdCBkcHBfY2FwcyAqY2FwczsKMTQ0NzQ6ICBzdHJ1Y3QgcHdsX3BhcmFtcyByZWdhbW1h X3BhcmFtczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjb2xvcmltZXRy eSB7CjE0NDc0OiAgQ09MT1JJTUVUUllfTk9fREFUQSA9IDAsCjE0NDc0OiAgQ09MT1JJTUVUUllf SVRVNjAxID0gMSwKMTQ0NzQ6ICBDT0xPUklNRVRSWV9JVFU3MDkgPSAyLAoxNDQ3NDogIENPTE9S SU1FVFJZX0VYVEVOREVEID0gMwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjb2xvcmlt ZXRyeV9leHQgewoxNDQ3NDogIENPTE9SSU1FVFJZRVhfWFZZQ0M2MDEgPSAwLAoxNDQ3NDogIENP TE9SSU1FVFJZRVhfWFZZQ0M3MDkgPSAxLAoxNDQ3NDogIENPTE9SSU1FVFJZRVhfU1lDQzYwMSA9 IDIsCjE0NDc0OiAgQ09MT1JJTUVUUllFWF9BRE9CRVlDQzYwMSA9IDMsCjE0NDc0OiAgQ09MT1JJ TUVUUllFWF9BRE9CRVJHQiA9IDQsCjE0NDc0OiAgQ09MT1JJTUVUUllFWF9CVDIwMjBZQ0MgPSA1 LAoxNDQ3NDogIENPTE9SSU1FVFJZRVhfQlQyMDIwUkdCWUNCQ1IgPSA2LAoxNDQ3NDogIENPTE9S SU1FVFJZRVhfUkVTRVJWRUQgPSA3CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGFjdGl2 ZV9mb3JtYXRfaW5mbyB7CjE0NDc0OiAgQUNUSVZFX0ZPUk1BVF9OT19EQVRBID0gMCwKMTQ0NzQ6 ICBBQ1RJVkVfRk9STUFUX1ZBTElEID0gMQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBlbnVtIGFjdGl2ZV9mb3JtYXRfYXNwZWN0X3JhdGlvIHsKMTQ0NzQ6ICBBQ1RJVkVfRk9STUFU X0FTUEVDVF9SQVRJT19TQU1FX0FTX1BJQ1RVUkUgPSA4LAoxNDQ3NDogIEFDVElWRV9GT1JNQVRf QVNQRUNUX1JBVElPXzRfMyA9IDksCjE0NDc0OiAgQUNUSVZFX0ZPUk1BVF9BU1BFQ1RfUkFUSU9f MTZfOSA9IDBYQSwKMTQ0NzQ6ICBBQ1RJVkVfRk9STUFUX0FTUEVDVF9SQVRJT18xNF85ID0gMFhC CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJhcl9pbmZvIHsKMTQ0NzQ6ICBCQVJfSU5G T19OT1RfVkFMSUQgPSAwLAoxNDQ3NDogIEJBUl9JTkZPX1ZFUlRJQ0FMX1ZBTElEID0gMSwKMTQ0 NzQ6ICBCQVJfSU5GT19IT1JJWk9OVEFMX1ZBTElEID0gMiwKMTQ0NzQ6ICBCQVJfSU5GT19CT1RI X1ZBTElEID0gMwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBwaWN0dXJlX3NjYWxpbmcg ewoxNDQ3NDogIFBJQ1RVUkVfU0NBTElOR19VTklGT1JNID0gMCwKMTQ0NzQ6ICBQSUNUVVJFX1ND QUxJTkdfSE9SSVpPTlRBTCA9IDEsCjE0NDc0OiAgUElDVFVSRV9TQ0FMSU5HX1ZFUlRJQ0FMID0g MiwKMTQ0NzQ6ICBQSUNUVVJFX1NDQUxJTkdfQk9USCA9IDMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZW51bSByZ2JfcXVhbnRpemF0aW9uX3JhbmdlIHsKMTQ0NzQ6ICBSR0JfUVVB TlRJWkFUSU9OX0RFRkFVTFRfUkFOR0UgPSAwLAoxNDQ3NDogIFJHQl9RVUFOVElaQVRJT05fTElN SVRFRF9SQU5HRSA9IDEsCjE0NDc0OiAgUkdCX1FVQU5USVpBVElPTl9GVUxMX1JBTkdFID0gMiwK MTQ0NzQ6ICBSR0JfUVVBTlRJWkFUSU9OX1JFU0VSVkVEID0gMwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBlbnVtIHl5Y19xdWFudGl6YXRpb25fcmFuZ2UgewoxNDQ3NDogIFlZQ19R VUFOVElaQVRJT05fTElNSVRFRF9SQU5HRSA9IDAsCjE0NDc0OiAgWVlDX1FVQU5USVpBVElPTl9G VUxMX1JBTkdFID0gMSwKMTQ0NzQ6ICBZWUNfUVVBTlRJWkFUSU9OX1JFU0VSVkVEMiA9IDIsCjE0 NDc0OiAgWVlDX1FVQU5USVpBVElPTl9SRVNFUlZFRDMgPSAzCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIGdyYXBoaWNzX2dhbXV0X2FkanVzdF90eXBlIHsKMTQ0NzQ6ICBHUkFQSElDU19H QU1VVF9BREpVU1RfVFlQRV9CWVBBU1MgPSAwLAoxNDQ3NDogIEdSQVBISUNTX0dBTVVUX0FESlVT VF9UWVBFX0hXLAoxNDQ3NDogIEdSQVBISUNTX0dBTVVUX0FESlVTVF9UWVBFX1NXCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGxiX21lbW9yeV9jb25maWcgewoxNDQ3NDogCjE0NDc0OiAg TEJfTUVNT1JZX0NPTkZJR18wID0gMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgTEJfTUVNT1JZ X0NPTkZJR18xID0gMSwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgTEJfTUVNT1JZX0NPTkZJR18y ID0gMiwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIExCX01FTU9SWV9D T05GSUdfMyA9IDMKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB4Zm1fZ3JwaF9jc2Nf YWRqdXN0bWVudCB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgdGVtcGVyYXR1cmVfbWF0cml4 WzEyXTsKMTQ0NzQ6ICBlbnVtIGdyYXBoaWNzX2dhbXV0X2FkanVzdF90eXBlIGdhbXV0X2FkanVz dF90eXBlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG92ZXJzY2FuX2luZm8gewox NDQ3NDogIGludCBsZWZ0OwoxNDQ3NDogIGludCByaWdodDsKMTQ0NzQ6ICBpbnQgdG9wOwoxNDQ3 NDogIGludCBib3R0b207CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc2NhbGluZ19y YXRpb3MgewoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGhvcno7CjE0NDc0OiAgc3RydWN0IGZp eGVkMzFfMzIgdmVydDsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBob3J6X2M7CjE0NDc0OiAg c3RydWN0IGZpeGVkMzFfMzIgdmVydF9jOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IHNoYXJwbmVzc19hZGogewoxNDQ3NDogIGludCBob3J6OwoxNDQ3NDogIGludCB2ZXJ0OwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxpbmVfYnVmZmVyX3BhcmFtcyB7CjE0NDc0OiAg Ym9vbCBhbHBoYV9lbjsKMTQ0NzQ6ICBib29sIHBpeGVsX2V4cGFuX21vZGU7CjE0NDc0OiAgYm9v bCBpbnRlcmxlYXZlX2VuOwoxNDQ3NDogIGludCBkeW5hbWljX3BpeGVsX2RlcHRoOwoxNDQ3NDog IGVudW0gbGJfcGl4ZWxfZGVwdGggZGVwdGg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgc2NsX2luaXRzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBoOwoxNDQ3NDogIHN0cnVj dCBmaXhlZDMxXzMyIGhfYzsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB2OwoxNDQ3NDogIHN0 cnVjdCBmaXhlZDMxXzMyIHZfYm90OwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIHZfYzsKMTQ0 NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB2X2NfYm90OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IHNjYWxlcl9kYXRhIHsKMTQ0NzQ6ICBpbnQgaF9hY3RpdmU7CjE0NDc0OiAgaW50IHZf YWN0aXZlOwoxNDQ3NDogIHN0cnVjdCBzY2FsaW5nX3RhcHMgdGFwczsKMTQ0NzQ6ICBzdHJ1Y3Qg cmVjdCB2aWV3cG9ydDsKMTQ0NzQ6ICBzdHJ1Y3QgcmVjdCB2aWV3cG9ydF9jOwoxNDQ3NDogIHN0 cnVjdCByZWN0IHJlY291dDsKMTQ0NzQ6ICBzdHJ1Y3Qgc2NhbGluZ19yYXRpb3MgcmF0aW9zOwox NDQ3NDogIHN0cnVjdCBzY2xfaW5pdHMgaW5pdHM7CjE0NDc0OiAgc3RydWN0IHNoYXJwbmVzc19h ZGogc2hhcnBuZXNzOwoxNDQ3NDogIGVudW0gcGl4ZWxfZm9ybWF0IGZvcm1hdDsKMTQ0NzQ6ICBz dHJ1Y3QgbGluZV9idWZmZXJfcGFyYW1zIGxiX3BhcmFtczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCB0cmFuc2Zvcm1fZnVuY3MgewoxNDQ3NDogIHZvaWQgKCp0cmFuc2Zvcm1fcmVz ZXQpKHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqdHJhbnNm b3JtX3NldF9zY2FsZXIpKHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKMTQ0NzQ6ICAgIGNvbnN0IHN0 cnVjdCBzY2FsZXJfZGF0YSAqc2NsX2RhdGEpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnRyYW5z Zm9ybV9zZXRfcGl4ZWxfc3RvcmFnZV9kZXB0aCkoCjE0NDc0OiAgICBzdHJ1Y3QgdHJhbnNmb3Jt ICp4Zm0sCjE0NDc0OiAgICBlbnVtIGxiX3BpeGVsX2RlcHRoIGRlcHRoLAoxNDQ3NDogICAgY29u c3Qgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zICpiaXRfZGVwdGhfcGFyYW1zKTsK MTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCp0cmFuc2Zvcm1fZ2V0X29wdGltYWxfbnVtYmVyX29mX3Rh cHMpKAoxNDQ3NDogICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDogICAgc3RydWN0IHNj YWxlcl9kYXRhICpzY2xfZGF0YSwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBzY2FsaW5nX3RhcHMg KmluX3RhcHMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnRyYW5zZm9ybV9zZXRfZ2FtdXRfcmVt YXApKAoxNDQ3NDogICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDogICAgY29uc3Qgc3Ry dWN0IHhmbV9ncnBoX2NzY19hZGp1c3RtZW50ICphZGp1c3QpOwoxNDQ3NDogCjE0NDc0OiAgdm9p ZCAoKm9wcF9zZXRfY3NjX2RlZmF1bHQpKAoxNDQ3NDogICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0s CjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2FkanVzdG1lbnQgKmRlZmF1bHRfYWRqdXN0 KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfc2V0X2NzY19hZGp1c3RtZW50KSgKMTQ0NzQ6 ICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3Qgb3V0X2NzY19j b2xvcl9tYXRyaXggKnRibF9lbnRyeSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqb3BwX3Bvd2Vy X29uX3JlZ2FtbWFfbHV0KSgKMTQ0NzQ6ICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDog ICBib29sIHBvd2VyX29uKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfcHJvZ3JhbV9yZWdh bW1hX2x1dCkoCjE0NDc0OiAgICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCjE0NDc0OiAgICBjb25z dCBzdHJ1Y3QgcHdsX3Jlc3VsdF9kYXRhICpyZ2IsCjE0NDc0OiAgICB1aW50MzJfdCBudW0pOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAoKm9wcF9jb25maWd1cmVfcmVnYW1tYV9sdXQpKAoxNDQ3NDog ICAgc3RydWN0IHRyYW5zZm9ybSAqeGZtLAoxNDQ3NDogICAgYm9vbCBpc19yYW1fYSk7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqb3BwX3Byb2dyYW1fcmVnYW1tYV9sdXRiX3NldHRpbmdzKSgKMTQ0 NzQ6ICAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBwd2xf cGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKm9wcF9wcm9ncmFtX3JlZ2Ft bWFfbHV0YV9zZXR0aW5ncykoCjE0NDc0OiAgICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCjE0NDc0 OiAgICBjb25zdCBzdHJ1Y3QgcHdsX3BhcmFtcyAqcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogIHZv aWQgKCpvcHBfcHJvZ3JhbV9yZWdhbW1hX3B3bCkoCjE0NDc0OiAgIHN0cnVjdCB0cmFuc2Zvcm0g KnhmbSwgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqb3BwX3NldF9yZWdhbW1hX21vZGUpKAoxNDQ3NDogICAgc3RydWN0IHRyYW5zZm9ybSAq eGZtX2Jhc2UsCjE0NDc0OiAgICBlbnVtIG9wcF9yZWdhbW1hIG1vZGUpOwoxNDQ3NDogCjE0NDc0 OiAgdm9pZCAoKmlwcF9zZXRfZGVnYW1tYSkoCjE0NDc0OiAgICBzdHJ1Y3QgdHJhbnNmb3JtICp4 Zm1fYmFzZSwKMTQ0NzQ6ICAgIGVudW0gaXBwX2RlZ2FtbWFfbW9kZSBtb2RlKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCppcHBfcHJvZ3JhbV9pbnB1dF9sdXQpKAoxNDQ3NDogICAgc3RydWN0IHRy YW5zZm9ybSAqeGZtX2Jhc2UsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdhbW1h KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCppcHBfcHJvZ3JhbV9kZWdhbW1hX3B3bCkoc3RydWN0 IHRyYW5zZm9ybSAqeGZtX2Jhc2UsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IHB3bF9w YXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaXBwX3NldHVwKSgKMTQ0NzQ6 ICAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbV9iYXNlLAoxNDQ3NDogICAgZW51bSBzdXJmYWNlX3Bp eGVsX2Zvcm1hdCBmb3JtYXQsCjE0NDc0OiAgICBlbnVtIGV4cGFuc2lvbl9tb2RlIG1vZGUsCjE0 NDc0OiAgICBzdHJ1Y3QgZGNfY3NjX3RyYW5zZm9ybSBpbnB1dF9jc2NfY29sb3JfbWF0cml4LAox NDQ3NDogICAgZW51bSBkY19jb2xvcl9zcGFjZSBpbnB1dF9jb2xvcl9zcGFjZSk7CjE0NDc0OiAK MTQ0NzQ6ICB2b2lkICgqaXBwX2Z1bGxfYnlwYXNzKShzdHJ1Y3QgdHJhbnNmb3JtICp4Zm1fYmFz ZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X2N1cnNvcl9hdHRyaWJ1dGVzKSgKMTQ0NzQ6 ICAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbV9iYXNlLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IGRj X2N1cnNvcl9hdHRyaWJ1dGVzICphdHRyKTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogY29uc3QgdWludDE2X3QgKmdldF9maWx0ZXJfMnRhcF8xNnAodm9pZCk7CjE0NDc0OiBjb25z dCB1aW50MTZfdCAqZ2V0X2ZpbHRlcl8ydGFwXzY0cCh2b2lkKTsKMTQ0NzQ6IGNvbnN0IHVpbnQx Nl90ICpnZXRfZmlsdGVyXzN0YXBfMTZwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6 IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzN0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJh dGlvKTsKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzR0YXBfMTZwKHN0cnVjdCBm aXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzR0YXBf NjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRf ZmlsdGVyXzV0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6IGNvbnN0IHVp bnQxNl90ICpnZXRfZmlsdGVyXzZ0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0 NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzd0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMy IHJhdGlvKTsKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzh0YXBfNjRwKHN0cnVj dCBmaXhlZDMxXzMyIHJhdGlvKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0g ZHNjbF9kYXRhX3Byb2Nlc3NpbmdfZm9ybWF0IHsKMTQ0NzQ6ICBEU0NMX0RBVEFfUFJDRVNTSU5H X0ZJWEVEX0ZPUk1BVCwKMTQ0NzQ6ICBEU0NMX0RBVEFfUFJDRVNTSU5HX0ZMT0FUX0ZPUk1BVCwK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcHBfY2FwcyB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRz Y2xfZGF0YV9wcm9jZXNzaW5nX2Zvcm1hdCBkc2NsX2RhdGFfcHJvY19mb3JtYXQ7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkc2NsX2NhbGNf bGJfbnVtX3BhcnRpdGlvbnMpKAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IHNjYWxlcl9kYXRhICpz Y2xfZGF0YSwKMTQ0NzQ6ICAgIGVudW0gbGJfbWVtb3J5X2NvbmZpZyBsYl9jb25maWcsCjE0NDc0 OiAgICBpbnQgKm51bV9wYXJ0X3ksCjE0NDc0OiAgICBpbnQgKm51bV9wYXJ0X2MpOwoxNDQ3NDog fTsKMTQ0NzQ6ICMgMzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9pbmMvaHcvb3BwLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9ody9tcGMuaCIgMQoxNDQ3NDogIyAzNiAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tcGMuaCIKMTQ0NzQ6IGVudW0g bXBjX291dHB1dF9jc2NfbW9kZSB7CjE0NDc0OiAgTVBDX09VVFBVVF9DU0NfRElTQUJMRSA9IDAs CjE0NDc0OiAgTVBDX09VVFBVVF9DU0NfQ09FRl9BLAoxNDQ3NDogIE1QQ19PVVRQVVRfQ1NDX0NP RUZfQgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIG1wY2NfYmxlbmRfbW9k ZSB7CjE0NDc0OiAgTVBDQ19CTEVORF9NT0RFX0JZUEFTUywKMTQ0NzQ6ICBNUENDX0JMRU5EX01P REVfVE9QX0xBWUVSX1BBU1NUSFJPVUdILAoxNDQ3NDogIE1QQ0NfQkxFTkRfTU9ERV9UT1BfTEFZ RVJfT05MWSwKMTQ0NzQ6ICBNUENDX0JMRU5EX01PREVfVE9QX0JPVF9CTEVORElORwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBtcGNjX2FscGhhX2JsZW5kX21vZGUgewoxNDQ3NDogIE1Q Q0NfQUxQSEFfQkxFTkRfTU9ERV9QRVJfUElYRUxfQUxQSEEsCjE0NDc0OiAgTVBDQ19BTFBIQV9C TEVORF9NT0RFX1BFUl9QSVhFTF9BTFBIQV9DT01CSU5FRF9HTE9CQUxfR0FJTiwKMTQ0NzQ6ICBN UENDX0FMUEhBX0JMRU5EX01PREVfR0xPQkFMX0FMUEhBCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbXBjY19ibG5kX2NmZyB7CjE0NDc0OiAg c3RydWN0IHRnX2NvbG9yIGJsYWNrX2NvbG9yOwoxNDQ3NDogIGVudW0gbXBjY19hbHBoYV9ibGVu ZF9tb2RlIGFscGhhX21vZGU7CjE0NDc0OiAgYm9vbCBwcmVfbXVsdGlwbGllZF9hbHBoYTsKMTQ0 NzQ6ICBpbnQgZ2xvYmFsX2dhaW47CjE0NDc0OiAgaW50IGdsb2JhbF9hbHBoYTsKMTQ0NzQ6ICBi b29sIG92ZXJsYXBfb25seTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IGJvdHRvbV9nYWlu X21vZGU7CjE0NDc0OiAgaW50IGJhY2tncm91bmRfY29sb3JfYnBjOwoxNDQ3NDogIGludCB0b3Bf Z2FpbjsKMTQ0NzQ6ICBpbnQgYm90dG9tX2luc2lkZV9nYWluOwoxNDQ3NDogIGludCBib3R0b21f b3V0c2lkZV9nYWluOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1wY2Nfc21fY2Zn IHsKMTQ0NzQ6ICBib29sIGVuYWJsZTsKMTQ0NzQ6IAoxNDQ3NDogIGludCBzbV9tb2RlOwoxNDQ3 NDogCjE0NDc0OiAgYm9vbCBmcmFtZV9hbHQ7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIGZpZWxkX2Fs dDsKMTQ0NzQ6IAoxNDQ3NDogIGludCBmb3JjZV9uZXh0X2ZyYW1lX3Bvcmxhcml0eTsKMTQ0NzQ6 IAoxNDQ3NDogIGludCBmb3JjZV9uZXh0X2ZpZWxkX3BvbGFyaXR5OwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IG1wY19kZW5vcm1fY2xhbXAgewoxNDQ3NDogIGludCBjbGFtcF9tYXhf cl9jcjsKMTQ0NzQ6ICBpbnQgY2xhbXBfbWluX3JfY3I7CjE0NDc0OiAgaW50IGNsYW1wX21heF9n X3k7CjE0NDc0OiAgaW50IGNsYW1wX21pbl9nX3k7CjE0NDc0OiAgaW50IGNsYW1wX21heF9iX2Ni OwoxNDQ3NDogIGludCBjbGFtcF9taW5fYl9jYjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1wY2MgewoxNDQ3NDogIGludCBt cGNjX2lkOwoxNDQ3NDogIGludCBkcHBfaWQ7CjE0NDc0OiAgc3RydWN0IG1wY2MgKm1wY2NfYm90 OwoxNDQ3NDogIHN0cnVjdCBtcGNjX2JsbmRfY2ZnIGJsbmRfY2ZnOwoxNDQ3NDogIHN0cnVjdCBt cGNjX3NtX2NmZyBzbV9jZmc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgbXBjX3RyZWUgewoxNDQ3NDogIGludCBvcHBfaWQ7CjE0NDc0OiAg c3RydWN0IG1wY2MgKm9wcF9saXN0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1w YyB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IG1wY19mdW5jcyAqZnVuY3M7CjE0NDc0OiAgc3RydWN0 IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBtcGNjIG1wY2NfYXJyYXlb Nl07CjE0NDc0OiAgc3RydWN0IHB3bF9wYXJhbXMgYmxlbmRlcl9wYXJhbXM7CjE0NDc0OiAgYm9v bCBjbV9ieXBhc3NfbW9kZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtcGNjX3N0 YXRlIHsKMTQ0NzQ6ICB1aW50MzJfdCBvcHBfaWQ7CjE0NDc0OiAgdWludDMyX3QgZHBwX2lkOwox NDQ3NDogIHVpbnQzMl90IGJvdF9tcGNjX2lkOwoxNDQ3NDogIHVpbnQzMl90IG1vZGU7CjE0NDc0 OiAgdWludDMyX3QgYWxwaGFfbW9kZTsKMTQ0NzQ6ICB1aW50MzJfdCBwcmVfbXVsdGlwbGllZF9h bHBoYTsKMTQ0NzQ6ICB1aW50MzJfdCBvdmVybGFwX29ubHk7CjE0NDc0OiAgdWludDMyX3QgaWRs ZTsKMTQ0NzQ6ICB1aW50MzJfdCBidXN5OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IG1wY19mdW5jcyB7CjE0NDc0OiAgdm9pZCAoKnJlYWRfbXBjY19zdGF0ZSkoCjE0NDc0OiAgICBz dHJ1Y3QgbXBjICptcGMsCjE0NDc0OiAgICBpbnQgbXBjY19pbnN0LAoxNDQ3NDogICAgc3RydWN0 IG1wY2Nfc3RhdGUgKnMpOwoxNDQ3NDogIyAxNjEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbXBjLmgiCjE0NDc0OiAgc3RydWN0IG1wY2MqICgqaW5z ZXJ0X3BsYW5lKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgIHN0cnVjdCBt cGNfdHJlZSAqdHJlZSwKMTQ0NzQ6ICAgIHN0cnVjdCBtcGNjX2JsbmRfY2ZnICpibG5kX2NmZywK MTQ0NzQ6ICAgIHN0cnVjdCBtcGNjX3NtX2NmZyAqc21fY2ZnLAoxNDQ3NDogICAgc3RydWN0IG1w Y2MgKmluc2VydF9hYm92ZV9tcGNjLAoxNDQ3NDogICAgaW50IGRwcF9pZCwKMTQ0NzQ6ICAgIGlu dCBtcGNjX2lkKTsKMTQ0NzQ6ICMgMTgwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvaW5jL2h3L21wYy5oIgoxNDQ3NDogIHZvaWQgKCpyZW1vdmVfbXBjYykoCjE0 NDc0OiAgICBzdHJ1Y3QgbXBjICptcGMsCjE0NDc0OiAgICBzdHJ1Y3QgbXBjX3RyZWUgKnRyZWUs CjE0NDc0OiAgICBzdHJ1Y3QgbXBjYyAqbXBjYyk7CjE0NDc0OiAjIDE5MyAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tcGMuaCIKMTQ0NzQ6ICB2b2lk ICgqbXBjX2luaXQpKHN0cnVjdCBtcGMgKm1wYyk7CjE0NDc0OiAgdm9pZCAoKm1wY19pbml0X3Np bmdsZV9pbnN0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgIHVuc2lnbmVk IGludCBtcGNjX2lkKTsKMTQ0NzQ6ICMgMjA4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21wYy5oIgoxNDQ3NDogIHZvaWQgKCp1cGRhdGVfYmxlbmRp bmcpKAoxNDQ3NDogICBzdHJ1Y3QgbXBjICptcGMsCjE0NDc0OiAgIHN0cnVjdCBtcGNjX2JsbmRf Y2ZnICpibG5kX2NmZywKMTQ0NzQ6ICAgaW50IG1wY2NfaWQpOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IG1wY2MqICgqZ2V0X21wY2NfZm9yX2RwcCkoCjE0NDc0OiAgICBzdHJ1Y3QgbXBjX3RyZWUg KnRyZWUsCjE0NDc0OiAgICBpbnQgZHBwX2lkKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCp3YWl0 X2Zvcl9pZGxlKShzdHJ1Y3QgbXBjICptcGMsIGludCBpZCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lk ICgqYXNzZXJ0X21wY2NfaWRsZV9iZWZvcmVfY29ubmVjdCkoc3RydWN0IG1wYyAqbXBjLCBpbnQg bXBjY19pZCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaW5pdF9tcGNjX2xpc3RfZnJvbV9odyko CjE0NDc0OiAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgc3RydWN0IG1wY190cmVlICp0cmVl KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfZGVub3JtKShzdHJ1Y3QgbXBjICptcGMsCjE0 NDc0OiAgICBpbnQgb3BwX2lkLAoxNDQ3NDogICAgZW51bSBkY19jb2xvcl9kZXB0aCBvdXRwdXRf ZGVwdGgpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9kZW5vcm1fY2xhbXApKAoxNDQ3NDog ICAgc3RydWN0IG1wYyAqbXBjLAoxNDQ3NDogICAgaW50IG9wcF9pZCwKMTQ0NzQ6ICAgIHN0cnVj dCBtcGNfZGVub3JtX2NsYW1wIGRlbm9ybV9jbGFtcCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgq c2V0X291dHB1dF9jc2MpKHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgIGludCBvcHBfaWQsCjE0 NDc0OiAgICBjb25zdCB1aW50MTZfdCAqcmVndmFsLAoxNDQ3NDogICAgZW51bSBtcGNfb3V0cHV0 X2NzY19tb2RlIG9jc2NfbW9kZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X29jc2NfZGVm YXVsdCkoc3RydWN0IG1wYyAqbXBjLAoxNDQ3NDogICAgaW50IG9wcF9pZCwKMTQ0NzQ6ICAgIGVu dW0gZGNfY29sb3Jfc3BhY2UgY29sb3Jfc3BhY2UsCjE0NDc0OiAgICBlbnVtIG1wY19vdXRwdXRf Y3NjX21vZGUgb2NzY19tb2RlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfb3V0cHV0X2dh bW1hKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6ICAgIGludCBtcGNjX2lkLAox NDQ3NDogICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAgdm9pZCAo KnBvd2VyX29uX21wY19tZW1fcHdyKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtcGMgKm1wYywKMTQ0NzQ6 ICAgIGludCBtcGNjX2lkLAoxNDQ3NDogICAgYm9vbCBwb3dlcl9vbik7CjE0NDc0OiAKMTQ0NzQ6 IH07CjE0NDc0OiAjIDMzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvaW5jL2h3L29wcC5oIiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBmaXhlZDMxXzMyOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gY2xhbXBpbmdfcmFuZ2UgewoxNDQ3NDogIENMQU1QSU5H X0ZVTExfUkFOR0UgPSAwLAoxNDQ3NDogIENMQU1QSU5HX0xJTUlURURfUkFOR0VfOEJQQywKMTQ0 NzQ6ICBDTEFNUElOR19MSU1JVEVEX1JBTkdFXzEwQlBDLAoxNDQ3NDogIENMQU1QSU5HX0xJTUlU RURfUkFOR0VfMTJCUEMsCjE0NDc0OiAKMTQ0NzQ6ICBDTEFNUElOR19MSU1JVEVEX1JBTkdFX1BS T0dSQU1NQUJMRQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsYW1waW5nX2FuZF9w aXhlbF9lbmNvZGluZ19wYXJhbXMgewoxNDQ3NDogIGVudW0gZGNfcGl4ZWxfZW5jb2RpbmcgcGl4 ZWxfZW5jb2Rpbmc7CjE0NDc0OiAgZW51bSBjbGFtcGluZ19yYW5nZSBjbGFtcGluZ19sZXZlbDsK MTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNfZGVwdGg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMgewoxNDQ3NDogIHN0cnVjdCB7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBUUlVOQ0FURV9FTkFCTEVEOjE7CjE0 NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgVFJVTkNBVEVfREVQVEg6MjsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50MzJfdCBUUlVOQ0FURV9NT0RFOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgIHVpbnQzMl90IFNQQVRJQUxfRElUSEVSX0VOQUJMRUQ6MTsKMTQ0NzQ6IAoxNDQ3NDogICB1 aW50MzJfdCBTUEFUSUFMX0RJVEhFUl9ERVBUSDoyOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90 IFNQQVRJQUxfRElUSEVSX01PREU6MjsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBSR0JfUkFO RE9NOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgRlJBTUVfUkFORE9NOjE7CjE0NDc0OiAK MTQ0NzQ6ICAgdWludDMyX3QgSElHSFBBU1NfUkFORE9NOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgIHVpbnQzMl90IEZSQU1FX01PRFVMQVRJT05fRU5BQkxFRDoxOwoxNDQ3NDog CjE0NDc0OiAgIHVpbnQzMl90IEZSQU1FX01PRFVMQVRJT05fREVQVEg6MjsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MzJfdCBURU1QT1JBTF9MRVZFTDoxOwoxNDQ3NDogICB1aW50MzJfdCBGUkMyNToy OwoxNDQ3NDogICB1aW50MzJfdCBGUkM1MDoyOwoxNDQ3NDogICB1aW50MzJfdCBGUkM3NToyOwox NDQ3NDogIH0gZmxhZ3M7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByX3NlZWRfdmFsdWU7CjE0 NDc0OiAgdWludDMyX3QgYl9zZWVkX3ZhbHVlOwoxNDQ3NDogIHVpbnQzMl90IGdfc2VlZF92YWx1 ZTsKMTQ0NzQ6ICBlbnVtIGRjX3BpeGVsX2VuY29kaW5nIHBpeGVsX2VuY29kaW5nOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB3aWRlX2dhbXV0X3JlZ2FtbWFfbW9kZSB7CjE0NDc0OiAK MTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19CWVBBU1MsCjE0NDc0OiAK MTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19TUkdCMjQsCjE0NDc0OiAK MTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19YWVlDQzIyLAoxNDQ3NDog CjE0NDc0OiAgV0lERV9HQU1VVF9SRUdBTU1BX01PREVfR1JBUEhJQ1NfTUFUUklYX0EsCjE0NDc0 OiAKMTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19NQVRSSVhfQiwKMTQ0 NzQ6IAoxNDQ3NDogIFdJREVfR0FNVVRfUkVHQU1NQV9NT0RFX09WTF9CWVBBU1MsCjE0NDc0OiAK MTQ0NzQ6ICBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9PVkxfU1JHQjI0LAoxNDQ3NDogCjE0NDc0 OiAgV0lERV9HQU1VVF9SRUdBTU1BX01PREVfT1ZMX1hZWUNDMjIsCjE0NDc0OiAKMTQ0NzQ6ICBX SURFX0dBTVVUX1JFR0FNTUFfTU9ERV9PVkxfTUFUUklYX0EsCjE0NDc0OiAKMTQ0NzQ6ICBXSURF X0dBTVVUX1JFR0FNTUFfTU9ERV9PVkxfTUFUUklYX0IKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBnYW1tYV9waXhlbCB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcjsKMTQ0NzQ6 ICBzdHJ1Y3QgZml4ZWQzMV8zMiBnOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGI7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGNoYW5uZWxfbmFtZSB7CjE0NDc0OiAgQ0hBTk5FTF9O QU1FX1JFRCwKMTQ0NzQ6ICBDSEFOTkVMX05BTUVfR1JFRU4sCjE0NDc0OiAgQ0hBTk5FTF9OQU1F X0JMVUUKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjdXN0b21fZmxvYXRfZm9ybWF0 IHsKMTQ0NzQ6ICB1aW50MzJfdCBtYW50aXNzYV9iaXRzOwoxNDQ3NDogIHVpbnQzMl90IGV4cG9u ZW50YV9iaXRzOwoxNDQ3NDogIGJvb2wgc2lnbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBjdXN0b21fZmxvYXRfdmFsdWUgewoxNDQ3NDogIHVpbnQzMl90IG1hbnRpc3NhOwoxNDQ3 NDogIHVpbnQzMl90IGV4cG9uZW50YTsKMTQ0NzQ6ICB1aW50MzJfdCB2YWx1ZTsKMTQ0NzQ6ICBi b29sIG5lZ2F0aXZlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGh3X3hfcG9pbnQg ewoxNDQ3NDogIHVpbnQzMl90IGN1c3RvbV9mbG9hdF94OwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMx XzMyIHg7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcmVnYW1tYV95X3JlZDsKMTQ0NzQ6ICBz dHJ1Y3QgZml4ZWQzMV8zMiByZWdhbW1hX3lfZ3JlZW47CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFf MzIgcmVnYW1tYV95X2JsdWU7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBwd2xfZmxvYXRfZGF0YV9leCB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcjsKMTQ0NzQ6 ICBzdHJ1Y3QgZml4ZWQzMV8zMiBnOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGI7CjE0NDc0 OiAgc3RydWN0IGZpeGVkMzFfMzIgZGVsdGFfcjsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBk ZWx0YV9nOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGRlbHRhX2I7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGh3X3BvaW50X3Bvc2l0aW9uIHsKMTQ0NzQ6IAoxNDQ3NDogIEhXX1BP SU5UX1BPU0lUSU9OX01JRERMRSwKMTQ0NzQ6IAoxNDQ3NDogIEhXX1BPSU5UX1BPU0lUSU9OX0xF RlQsCjE0NDc0OiAKMTQ0NzQ6ICBIV19QT0lOVF9QT1NJVElPTl9SSUdIVAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGdhbW1hX3BvaW50IHsKMTQ0NzQ6ICBpbnQzMl90IGxlZnRfaW5k ZXg7CjE0NDc0OiAgaW50MzJfdCByaWdodF9pbmRleDsKMTQ0NzQ6ICBlbnVtIGh3X3BvaW50X3Bv c2l0aW9uIHBvczsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBjb2VmZjsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwaXhlbF9nYW1tYV9wb2ludCB7CjE0NDc0OiAgc3RydWN0IGdh bW1hX3BvaW50IHI7CjE0NDc0OiAgc3RydWN0IGdhbW1hX3BvaW50IGc7CjE0NDc0OiAgc3RydWN0 IGdhbW1hX3BvaW50IGI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ2FtbWFfY29l ZmZpY2llbnRzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBhMFszXTsKMTQ0NzQ6ICBzdHJ1 Y3QgZml4ZWQzMV8zMiBhMVszXTsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBhMlszXTsKMTQ0 NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBhM1szXTsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB1 c2VyX2dhbW1hWzNdOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIHVzZXJfY29udHJhc3Q7CjE0 NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgdXNlcl9icmlnaHRuZXNzOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IHB3bF9mbG9hdF9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8z MiByOwoxNDQ3NDogIHN0cnVjdCBmaXhlZDMxXzMyIGc7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFf MzIgYjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtcGNfdHJlZV9jZmcgewoxNDQ3 NDogIGludCBudW1fcGlwZXM7CjE0NDc0OiAgaW50IGRwcFs2XTsKMTQ0NzQ6ICBpbnQgbXBjY1s2 XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29y IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHVpbnQzMl90IGluc3Q7 CjE0NDc0OiAgc3RydWN0IHB3bF9wYXJhbXMgcmVnYW1tYV9wYXJhbXM7CjE0NDc0OiAgc3RydWN0 IG1wY190cmVlIG1wY190cmVlX3BhcmFtczsKMTQ0NzQ6ICBib29sIG1wY2NfZGlzY29ubmVjdF9w ZW5kaW5nWzZdOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBvcHBfZnVuY3MgKmZ1bmNzOwoxNDQ3NDog IHVpbnQzMl90IGR5bl9leHBhbnNpb247CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGZt dF9zdGVyZW9fYWN0aW9uIHsKMTQ0NzQ6ICBGTVRfU1RFUkVPX0FDVElPTl9FTkFCTEUgPSAwLAox NDQ3NDogIEZNVF9TVEVSRU9fQUNUSU9OX0RJU0FCTEUsCjE0NDc0OiAgRk1UX1NURVJFT19BQ1RJ T05fVVBEQVRFX1BPTEFSSVRZCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgb3BwX2dy cGhfY3NjX2FkanVzdG1lbnQgewoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBj X3NwYWNlOwoxNDQ3NDogIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CjE0NDc0OiAg ZW51bSBncmFwaGljc19jc2NfYWRqdXN0X3R5cGUgY3NjX2FkanVzdF90eXBlOwoxNDQ3NDogIGlu dDMyX3QgYWRqdXN0X2RpdmlkZXI7CjE0NDc0OiAgaW50MzJfdCBncnBoX2NvbnQ7CjE0NDc0OiAg aW50MzJfdCBncnBoX3NhdDsKMTQ0NzQ6ICBpbnQzMl90IGdycGhfYnJpZ2h0OwoxNDQ3NDogIGlu dDMyX3QgZ3JwaF9odWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGh3X2FkanVzdG1lbnRfcmFuZ2UgewoxNDQ3NDogIGludDMyX3QgaHdfZGVmYXVsdDsK MTQ0NzQ6ICBpbnQzMl90IG1pbjsKMTQ0NzQ6ICBpbnQzMl90IG1heDsKMTQ0NzQ6ICBpbnQzMl90 IHN0ZXA7CjE0NDc0OiAgdWludDMyX3QgZGl2aWRlcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gb3ZsX2NzY19hZGp1c3RfaXRlbSB7CjE0NDc0OiAgT1ZFUkxBWV9CUklHSFRORVNTID0g MCwKMTQ0NzQ6ICBPVkVSTEFZX0dBTU1BLAoxNDQ3NDogIE9WRVJMQVlfQ09OVFJBU1QsCjE0NDc0 OiAgT1ZFUkxBWV9TQVRVUkFUSU9OLAoxNDQ3NDogIE9WRVJMQVlfSFVFLAoxNDQ3NDogIE9WRVJM QVlfQUxQSEEsCjE0NDc0OiAgT1ZFUkxBWV9BTFBIQV9QRVJfUElYLAoxNDQ3NDogIE9WRVJMQVlf Q09MT1JfVEVNUEVSQVRVUkUKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gb3BwYnVmX2Rp c3BsYXlfc2VnbWVudGF0aW9uIHsKMTQ0NzQ6ICBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05f MV9TRUdNRU5UID0gMCwKMTQ0NzQ6ICBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05fMl9TRUdN RU5UID0gMSwKMTQ0NzQ6ICBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05fNF9TRUdNRU5UID0g MiwKMTQ0NzQ6ICBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05fNF9TRUdNRU5UX1NQTElUX0xF RlQgPSAzLAoxNDQ3NDogIE9QUEJVRl9ESVNQTEFZX1NFR01FTlRBVElPTl80X1NFR01FTlRfU1BM SVRfUklHSFQgPSA0CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgb3BwYnVmX3BhcmFt cyB7CjE0NDc0OiAgdWludDMyX3QgYWN0aXZlX3dpZHRoOwoxNDQ3NDogIGVudW0gb3BwYnVmX2Rp c3BsYXlfc2VnbWVudGF0aW9uIG1zb19zZWdtZW50YXRpb247CjE0NDc0OiAgdWludDMyX3QgbXNv X292ZXJsYXBfcGl4ZWxfbnVtOwoxNDQ3NDogIHVpbnQzMl90IHBpeGVsX3JlcGV0aXRpb247CjE0 NDc0OiAgdWludDMyX3QgbnVtX3NlZ21lbnRfcGFkZGVkX3BpeGVsczsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBvcHBfZnVuY3MgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKm9wcF9wcm9ncmFtX2ZtdCkoCjE0NDc0OiAgICBzdHJ1Y3Qgb3V0 cHV0X3BpeGVsX3Byb2Nlc3NvciAqb3BwLAoxNDQ3NDogICAgc3RydWN0IGJpdF9kZXB0aF9yZWR1 Y3Rpb25fcGFyYW1zICpmbXRfYml0X2RlcHRoLAoxNDQ3NDogICAgc3RydWN0IGNsYW1waW5nX2Fu ZF9waXhlbF9lbmNvZGluZ19wYXJhbXMgKmNsYW1waW5nKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQg KCpvcHBfc2V0X2R5bl9leHBhbnNpb24pKAoxNDQ3NDogICBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3By b2Nlc3NvciAqb3BwLAoxNDQ3NDogICBlbnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yX3NwLAoxNDQ3 NDogICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RwdGgsCjE0NDc0OiAgIGVudW0gc2lnbmFs X3R5cGUgc2lnbmFsKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfcHJvZ3JhbV9iaXRfZGVw dGhfcmVkdWN0aW9uKSgKMTQ0NzQ6ICAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9w cCwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zICpwYXJh bXMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqb3BwX2dldF91bmRlcmxheV9hZGp1 c3RtZW50X3JhbmdlKSgKMTQ0NzQ6ICAgIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpv cHAsCjE0NDc0OiAgICBlbnVtIG92bF9jc2NfYWRqdXN0X2l0ZW0gb3ZlcmxheV9hZGp1c3RfaXRl bSwKMTQ0NzQ6ICAgIHN0cnVjdCBod19hZGp1c3RtZW50X3JhbmdlICpyYW5nZSk7CjE0NDc0OiAK MTQ0NzQ6ICB2b2lkICgqb3BwX2Rlc3Ryb3kpKHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29y ICoqb3BwKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfcHJvZ3JhbV9zdGVyZW8pKAoxNDQ3 NDogICBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3Byb2Nlc3NvciAqb3BwLAoxNDQ3NDogICBib29sIGVu YWJsZSwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcpOwoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKm9wcF9waXBlX2Nsb2NrX2NvbnRyb2wpKAoxNDQ3NDogICAgc3Ry dWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKMTQ0NzQ6ICAgIGJvb2wgZW5hYmxlKTsK MTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpvcHBfc2V0X2Rpc3BfcGF0dGVybl9nZW5lcmF0b3IpKAox NDQ3NDogICAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKMTQ0NzQ6ICAgIGVu dW0gY29udHJvbGxlcl9kcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAoxNDQ3NDogICAgZW51 bSBjb250cm9sbGVyX2RwX2NvbG9yX3NwYWNlIGNvbG9yX3NwYWNlLAoxNDQ3NDogICAgZW51bSBk Y19jb2xvcl9kZXB0aCBjb2xvcl9kZXB0aCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCB0Z19jb2xv ciAqc29saWRfY29sb3IsCjE0NDc0OiAgICBpbnQgd2lkdGgsCjE0NDc0OiAgICBpbnQgaGVpZ2h0 KTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCpkcGdfaXNfYmxhbmtlZCkoCjE0NDc0OiAgICBzdHJ1 Y3Qgb3V0cHV0X3BpeGVsX3Byb2Nlc3NvciAqb3BwKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpv cHBfZHBnX3NldF9ibGFua19jb2xvcikoCjE0NDc0OiAgICBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3By b2Nlc3NvciAqb3BwLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IHRnX2NvbG9yICpjb2xvcik7CjE0 NDc0OiAKMTQ0NzQ6ICB2b2lkICgqb3BwX3Byb2dyYW1fbGVmdF9lZGdlX2V4dHJhX3BpeGVsKSgK MTQ0NzQ6ICAgIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHAsCjE0NDc0OiAgICBi b29sIGNvdW50KTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzYgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9od19zZXF1ZW5j ZXIuaCIgMQoxNDQ3NDogIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2luYy9od19zZXF1ZW5jZXIuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaCIgMQoxNDQ3NDogIyAz MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19z b3VyY2UuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2luY2x1ZGUvZ3JwaF9vYmplY3RfaWQuaCIgMQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaCIgMgoxNDQ3 NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9i aW9zX3BhcnNlcl90eXBlcy5oIiAxCjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIgoxNDQ3NDogIyAx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMu aCIgMQoxNDQ3NDogIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RtX3NlcnZpY2VzLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgiIDEKMTQ0NzQ6ICMgMzIg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1 X2RtX3RyYWNlLmgiCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiIDEK MTQ0NzQ6ICMgMjMgIi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiCjE0NDc0OiBzdHJ1Y3Qg bW9kdWxlOwoxNDQ3NDogc3RydWN0IHRyYWNlcG9pbnQ7CjE0NDc0OiBzdHJ1Y3Qgbm90aWZpZXJf YmxvY2s7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB0cmFjZV9ldmFsX21hcCB7CjE0NDc0OiAgY29u c3QgY2hhciAqc3lzdGVtOwoxNDQ3NDogIGNvbnN0IGNoYXIgKmV2YWxfc3RyaW5nOwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgZXZhbF92YWx1ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHNyY3Vfc3RydWN0IHRyYWNlcG9pbnRfc3JjdTsKMTQ0 NzQ6IAoxNDQ3NDogZXh0ZXJuIGludAoxNDQ3NDogdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3Rlcihz dHJ1Y3QgdHJhY2Vwb2ludCAqdHAsIHZvaWQgKnByb2JlLCB2b2lkICpkYXRhKTsKMTQ0NzQ6IGV4 dGVybiBpbnQKMTQ0NzQ6IHRyYWNlcG9pbnRfcHJvYmVfcmVnaXN0ZXJfcHJpbyhzdHJ1Y3QgdHJh Y2Vwb2ludCAqdHAsIHZvaWQgKnByb2JlLCB2b2lkICpkYXRhLAoxNDQ3NDogICAgICAgICAgIGlu dCBwcmlvKTsKMTQ0NzQ6IGV4dGVybiBpbnQKMTQ0NzQ6IHRyYWNlcG9pbnRfcHJvYmVfdW5yZWdp c3RlcihzdHJ1Y3QgdHJhY2Vwb2ludCAqdHAsIHZvaWQgKnByb2JlLCB2b2lkICpkYXRhKTsKMTQ0 NzQ6IGV4dGVybiB2b2lkCjE0NDc0OiBmb3JfZWFjaF9rZXJuZWxfdHJhY2Vwb2ludCh2b2lkICgq ZmN0KShzdHJ1Y3QgdHJhY2Vwb2ludCAqdHAsIHZvaWQgKnByaXYpLAoxNDQ3NDogICB2b2lkICpw cml2KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdHBfbW9kdWxlIHsKMTQ0NzQ6ICBz dHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CjE0NDc0OiAgc3RydWN0IG1vZHVsZSAqbW9kOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCB0cmFjZV9tb2R1bGVfaGFzX2JhZF90YWludChzdHJ1Y3Qg bW9kdWxlICptb2QpOwoxNDQ3NDogZXh0ZXJuIGludCByZWdpc3Rlcl90cmFjZXBvaW50X21vZHVs ZV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKMTQ0NzQ6IGV4dGVybiBpbnQg dW5yZWdpc3Rlcl90cmFjZXBvaW50X21vZHVsZV9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgKm5iKTsKMTQ0NzQ6ICMgODAgIi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiCjE0NDc0 OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHRyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3Rlcih2b2lkKQoxNDQ3NDogewox NDQ3NDogIHN5bmNocm9uaXplX3NyY3UoJnRyYWNlcG9pbnRfc3JjdSk7CjE0NDc0OiAgc3luY2hy b25pemVfcmN1KCk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gaW50IHN5c2NhbGxfcmVnZnVuYyh2b2lkKTsKMTQ0 NzQ6IGV4dGVybiB2b2lkIHN5c2NhbGxfdW5yZWdmdW5jKHZvaWQpOwoxNDQ3NDogIyAxMDEgIi4v aW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgdHJhY2Vwb2ludCAqdHJh Y2Vwb2ludF9wdHJfZGVyZWYodHJhY2Vwb2ludF9wdHJfdCAqcCkKMTQ0NzQ6IHsKMTQ0NzQ6ICBy ZXR1cm4gb2Zmc2V0X3RvX3B0cihwKTsKMTQ0NzQ6IH0KMTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJhY2Vwb2ludF9h bWRncHVfZGNfcnJlZzsgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCB0cmFjZV9hbWRncHVfZGNfcnJlZyh1bnNpZ25lZCBsb25nICpy ZWFkX2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSB7IGlmIChzdGF0aWNfa2V5 X2ZhbHNlKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcua2V5KSkgZG8geyBzdHJ1Y3QgdHJh Y2Vwb2ludF9mdW5jICppdF9mdW5jX3B0cjsgdm9pZCAqaXRfZnVuYzsgdm9pZCAqX19kYXRhOyBp bnQgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9faWR4ID0gMDsgaWYgKCEoY3B1bWFza190 ZXN0X2NwdSgoKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBzY3JfcmV0X187IGRvIHsgY29uc3Qgdm9p ZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJihjcHVfbnVtYmVyKSkgKyAwKSkoKHZvaWQgKikw KTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZihjcHVfbnVt YmVyKSkgeyBjYXNlIDE6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3Jl dF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAo Im1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAi IiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251 bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIi LCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1 bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgMjog cHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6 ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIg IjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBj YXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNt IHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZv X3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSA0OiBwc2NyX3JldF9fID0gKHsg dHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikp IHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6 IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIg KHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0 aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3Yi ICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChj cHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19y ZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDg6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJl cikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgi bW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoi ICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJl YWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7 IGRlZmF1bHQ6IF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIoKTsgYnJlYWs7IH0gcHNjcl9yZXRf XzsgfSkpLCAoKGNvbnN0IHN0cnVjdCBjcHVtYXNrICopJl9fY3B1X29ubGluZV9tYXNrKSkpKSBy ZXR1cm47ICh7IGludCBfX3JldF93YXJuX29uID0gISEoMCAmJiAocHJlZW1wdF9jb3VudCgpICYg KCgoMVVMIDw8ICgxKSktMSkgPDwgKCgoMCArIDgpICsgOCkgKyA0KSkpKTsgaWYgKF9fYnVpbHRp bl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZv bGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVn X3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50 cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29y ZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNl Y3Rpb24iIDogOiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Ft ZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCIpLCAiaSIgKDM0KSwgImkiICgoMSA8PCAwKXwoKDEg PDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0g d2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNj YXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQi IDogOiAiaSIgKDQ0KSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3Jl dF93YXJuX29uKSwgMCk7IH0pOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OyBpZiAoMCkgeyBfX2lkeCA9IHNyY3VfcmVhZF9sb2NrX25vdHJhY2UoJnRyYWNlcG9pbnRfc3Jj dSk7IHJjdV9pcnFfZW50ZXJfaXJxc29uKCk7IH0gaXRfZnVuY19wdHIgPSAoeyB0eXBlb2YoKCZf X3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcpLT5mdW5jcykgX19fX19fX19wMSA9ICh7IHVuaW9u IHsgdHlwZW9mKCgmX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnKS0+ZnVuY3MpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKCZfX3RyYWNlcG9p bnRfYW1kZ3B1X2RjX3JyZWcpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfcnJlZyktPmZ1bmNzKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNr KCYoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVv ZigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJlZyktPmZ1bmNzKSk7IGRvIHsgfSB3aGlsZSAo MCk7IF9fdS5fX3ZhbDsgfSk7ICgodHlwZW9mKCooJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJl ZyktPmZ1bmNzKSAqKShfX19fX19fX3AxKSk7IH0pOyBpZiAoaXRfZnVuY19wdHIpIHsgZG8geyBp dF9mdW5jID0gKGl0X2Z1bmNfcHRyKS0+ZnVuYzsgX19kYXRhID0gKGl0X2Z1bmNfcHRyKS0+ZGF0 YTsgKCh2b2lkKCopKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqcmVhZF9jb3VudCwgdWlu dDMyX3QgcmVnLCB1aW50MzJfdCB2YWx1ZSkpKGl0X2Z1bmMpKShfX2RhdGEsIHJlYWRfY291bnQs IHJlZywgdmFsdWUpOyB9IHdoaWxlICgoKytpdF9mdW5jX3B0ciktPmZ1bmMpOyB9IGlmICgwKSB7 IHJjdV9pcnFfZXhpdF9pcnFzb24oKTsgc3JjdV9yZWFkX3VubG9ja19ub3RyYWNlKCZ0cmFjZXBv aW50X3NyY3UsIF9faWR4KTsgfSBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OyB9IHdoaWxlICgwKTsgaWYgKDAgJiYgKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVvZihjcHVf bnVtYmVyKSBwc2NyX3JldF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBl b2YoKCYoY3B1X251bWJlcikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsg fSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBwc2NyX3Jl dF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1 X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAi JSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFr OyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDog YXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRp bGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2Yo Y3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNl IDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9 cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZv bGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3Jl dF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJt b3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIl JSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1i ZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9 KTsgYnJlYWs7IGNhc2UgNDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9f cmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxl ICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6 ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3 ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVf bnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3Mi IjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsg YnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIx IiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVm YXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSA4 OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChz aXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUi ImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVy KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIl IiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7 IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAi IDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBh c20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChw Zm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJj cHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2Nh bGxfcGFyYW1ldGVyKCk7IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBzdHJ1Y3Qg Y3B1bWFzayAqKSZfX2NwdV9vbmxpbmVfbWFzaykpKSkgeyByY3VfcmVhZF9sb2NrX3NjaGVkX25v dHJhY2UoKTsgKHsgdHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkg Kl9fX19fX19fcDEgPSAodHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNz KSkgKikoeyB1bmlvbiB7IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNz KSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigo X190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190 cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVf bm9jaGVjaygmKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSwgX191Ll9fYywg c2l6ZW9mKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSk7IGRvIHsgfSB3aGls ZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihfX3Ry YWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3Vf cmVhZF91bmxvY2tfc2NoZWRfbm90cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdw dV9kY19ycmVnKHZvaWQgKCpwcm9iZSkodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nICpyZWFk X2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSwgdm9pZCAqZGF0YSkgeyByZXR1 cm4gdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3RlcigmX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVn LCAodm9pZCAqKXByb2JlLCBkYXRhKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVnaXN0ZXJfdHJhY2VfcHJpb19hbWRncHVf ZGNfcnJlZyh2b2lkICgqcHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqcmVhZF9j b3VudCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWx1ZSksIHZvaWQgKmRhdGEsIGludCBwcmlv KSB7IHJldHVybiB0cmFjZXBvaW50X3Byb2JlX3JlZ2lzdGVyX3ByaW8oJl9fdHJhY2Vwb2ludF9h bWRncHVfZGNfcnJlZywgKHZvaWQgKilwcm9iZSwgZGF0YSwgcHJpbyk7IH0gc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVucmVnaXN0 ZXJfdHJhY2VfYW1kZ3B1X2RjX3JyZWcodm9pZCAoKnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2ln bmVkIGxvbmcgKnJlYWRfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpLCB2b2lk ICpkYXRhKSB7IHJldHVybiB0cmFjZXBvaW50X3Byb2JlX3VucmVnaXN0ZXIoJl9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfcnJlZywgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja190cmFj ZV9jYWxsYmFja190eXBlX2FtZGdwdV9kY19ycmVnKHZvaWQgKCpjYikodm9pZCAqX19kYXRhLCB1 bnNpZ25lZCBsb25nICpyZWFkX2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSkg eyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgdHJhY2VfYW1kZ3B1X2RjX3JyZWdfZW5hYmxlZCh2b2lkKSB7IHJldHVybiBzdGF0 aWNfa2V5X2ZhbHNlKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcua2V5KTsgfQoxNDQ3NDog IyA0OSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG1fdHJhY2UuaCIKMTQ0NzQ6ICA7CjE0NDc0OiAKMTQ0NzQ6IGV4dGVybiBzdHJ1Y3Qg dHJhY2Vwb2ludCBfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWc7IHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdHJhY2VfYW1kZ3B1 X2RjX3dyZWcodW5zaWduZWQgbG9uZyAqd3JpdGVfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsdWUpIHsgaWYgKHN0YXRpY19rZXlfZmFsc2UoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNf d3JlZy5rZXkpKSBkbyB7IHN0cnVjdCB0cmFjZXBvaW50X2Z1bmMgKml0X2Z1bmNfcHRyOyB2b2lk ICppdF9mdW5jOyB2b2lkICpfX2RhdGE7IGludCBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19pZHggPSAwOyBpZiAoIShjcHVtYXNrX3Rlc3RfY3B1KCgoeyB0eXBlb2YoY3B1X251bWJlcikg cHNjcl9yZXRfXzsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGNw dV9udW1iZXIpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUg KDApOyBzd2l0Y2goc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogcHNjcl9yZXRfXyA9ICh7 IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIp KSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAy OiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xh dGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRf XykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92 IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAo Y3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9f cmV0X187IH0pOyBicmVhazsgY2FzZSAyOiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1i ZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20g dm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAo Im1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAi IiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251 bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFr OyBjYXNlIDQ6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBz d2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIg IjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBj YXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9f YmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgODogcHNjcl9y ZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNw dV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVh azsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6 IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIg KHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0 aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUo KTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFt ZXRlcigpOyBicmVhazsgfSBwc2NyX3JldF9fOyB9KSksICgoY29uc3Qgc3RydWN0IGNwdW1hc2sg KikmX19jcHVfb25saW5lX21hc2spKSkpIHJldHVybjsgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAh ISgwICYmIChwcmVlbXB0X2NvdW50KCkgJiAoKCgxVUwgPDwgKDEpKS0xKSA8PCAoKCgwICsgOCkg KyA4KSArIDQpKSkpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkp IGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBi IiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcg IiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIg IiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMg YnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4i ICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90cmFjZS5oIiksICJp IiAoNTEpLCAiaSIgKCgxIDw8IDApfCgoMSA8PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXpl b2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMw OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIg LSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDUpKTsgfSk7IH0gd2hpbGUgKDAp OyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7IF9fYXNtX18gX192 b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IGlmICgwKSB7IF9faWR4ID0gc3JjdV9yZWFkX2xv Y2tfbm90cmFjZSgmdHJhY2Vwb2ludF9zcmN1KTsgcmN1X2lycV9lbnRlcl9pcnFzb24oKTsgfSBp dF9mdW5jX3B0ciA9ICh7IHR5cGVvZigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZyktPmZ1 bmNzKSBfX19fX19fX3AxID0gKHsgdW5pb24geyB0eXBlb2YoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1 X2RjX3dyZWcpLT5mdW5jcykgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVh ZF9vbmNlX3NpemUoJigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZyktPmZ1bmNzKSwgX191 Ll9fYywgc2l6ZW9mKCgmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnKS0+ZnVuY3MpKTsgZWxz ZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3Jl ZyktPmZ1bmNzKSwgX191Ll9fYywgc2l6ZW9mKCgmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVn KS0+ZnVuY3MpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgKCh0eXBlb2YoKigm X190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnKS0+ZnVuY3MpICopKF9fX19fX19fcDEpKTsgfSk7 IGlmIChpdF9mdW5jX3B0cikgeyBkbyB7IGl0X2Z1bmMgPSAoaXRfZnVuY19wdHIpLT5mdW5jOyBf X2RhdGEgPSAoaXRfZnVuY19wdHIpLT5kYXRhOyAoKHZvaWQoKikodm9pZCAqX19kYXRhLCB1bnNp Z25lZCBsb25nICp3cml0ZV9jb3VudCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWx1ZSkpKGl0 X2Z1bmMpKShfX2RhdGEsIHdyaXRlX2NvdW50LCByZWcsIHZhbHVlKTsgfSB3aGlsZSAoKCsraXRf ZnVuY19wdHIpLT5mdW5jKTsgfSBpZiAoMCkgeyByY3VfaXJxX2V4aXRfaXJxc29uKCk7IHNyY3Vf cmVhZF91bmxvY2tfbm90cmFjZSgmdHJhY2Vwb2ludF9zcmN1LCBfX2lkeCk7IH0gX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7IGlmICgwICYmIChjcHVt YXNrX3Rlc3RfY3B1KCgoeyB0eXBlb2YoY3B1X251bWJlcikgcHNjcl9yZXRfXzsgZG8geyBjb25z dCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGNwdV9udW1iZXIpKSArIDApKSgodm9p ZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKGNw dV9udW1iZXIpKSB7IGNhc2UgMTogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBw Zm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0 aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3Yi ICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChj cHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIi Z3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIp KTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsg ZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2Fz ZSAyOiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNo IChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoi ICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJl YWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4 OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDQ6IHBzY3JfcmV0X18g PSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVt YmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNh c2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDog Ij1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20g dm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAo Im1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0g cGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgODogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVf bnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTog YXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRp bGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBi cmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFtZXRlcigpOyBicmVhazsgfSBwc2Ny X3JldF9fOyB9KSksICgoY29uc3Qgc3RydWN0IGNwdW1hc2sgKikmX19jcHVfb25saW5lX21hc2sp KSkpIHsgcmN1X3JlYWRfbG9ja19zY2hlZF9ub3RyYWNlKCk7ICh7IHR5cGVvZigqKF9fdHJhY2Vw b2ludF9hbWRncHVfZGNfd3JlZy5mdW5jcykpICpfX19fX19fX3AxID0gKHR5cGVvZigqKF9fdHJh Y2Vwb2ludF9hbWRncHVfZGNfd3JlZy5mdW5jcykpICopKHsgdW5pb24geyB0eXBlb2YoKF9fdHJh Y2Vwb2ludF9hbWRncHVfZGNfd3JlZy5mdW5jcykpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7 IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZy5m dW5jcykpLCBfX3UuX19jLCBzaXplb2YoKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZy5mdW5j cykpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigoX190cmFjZXBvaW50X2FtZGdw dV9kY193cmVnLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFjZXBvaW50X2FtZGdwdV9k Y193cmVnLmZ1bmNzKSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyBkbyB7IH0g d2hpbGUgKDApOyA7ICgodHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmZ1bmNz KSkgKikoX19fX19fX19wMSkpOyB9KTsgcmN1X3JlYWRfdW5sb2NrX3NjaGVkX25vdHJhY2UoKTsg fSB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludCByZWdpc3Rlcl90cmFjZV9hbWRncHVfZGNfd3JlZyh2b2lkICgqcHJvYmUpKHZvaWQg Kl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqd3JpdGVfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMy X3QgdmFsdWUpLCB2b2lkICpkYXRhKSB7IHJldHVybiB0cmFjZXBvaW50X3Byb2JlX3JlZ2lzdGVy KCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcsICh2b2lkICopcHJvYmUsIGRhdGEpOyB9IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCByZWdpc3Rlcl90cmFjZV9wcmlvX2FtZGdwdV9kY193cmVnKHZvaWQgKCpwcm9iZSkodm9pZCAq X19kYXRhLCB1bnNpZ25lZCBsb25nICp3cml0ZV9jb3VudCwgdWludDMyX3QgcmVnLCB1aW50MzJf dCB2YWx1ZSksIHZvaWQgKmRhdGEsIGludCBwcmlvKSB7IHJldHVybiB0cmFjZXBvaW50X3Byb2Jl X3JlZ2lzdGVyX3ByaW8oJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZywgKHZvaWQgKilwcm9i ZSwgZGF0YSwgcHJpbyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVucmVnaXN0ZXJfdHJhY2VfYW1kZ3B1X2RjX3dyZWcodm9p ZCAoKnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgKndyaXRlX2NvdW50LCB1aW50 MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSwgdm9pZCAqZGF0YSkgeyByZXR1cm4gdHJhY2Vwb2lu dF9wcm9iZV91bnJlZ2lzdGVyKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcsICh2b2lkICop cHJvYmUsIGRhdGEpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY2hlY2tfdHJhY2VfY2FsbGJhY2tfdHlwZV9hbWRncHVfZGNf d3JlZyh2b2lkICgqY2IpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqd3JpdGVfY291bnQs IHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpKSB7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0cmFjZV9hbWRncHVfZGNf d3JlZ19lbmFibGVkKHZvaWQpIHsgcmV0dXJuIHN0YXRpY19rZXlfZmFsc2UoJl9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfd3JlZy5rZXkpOyB9CjE0NDc0OiAjIDY2ICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90cmFjZS5oIgoxNDQ3NDog IDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBleHRlcm4gc3RydWN0IHRyYWNlcG9pbnQgX190cmFj ZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZTsgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0cmFjZV9hbWRncHVfZGNfcGVyZm9y bWFuY2UodW5zaWduZWQgbG9uZyByZWFkX2NvdW50LCB1bnNpZ25lZCBsb25nIHdyaXRlX2NvdW50 LCB1bnNpZ25lZCBsb25nICpsYXN0X3JlYWQsIHVuc2lnbmVkIGxvbmcgKmxhc3Rfd3JpdGUsIGNv bnN0IGNoYXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSB7IGlmIChzdGF0aWNfa2V5X2ZhbHNl KCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLmtleSkpIGRvIHsgc3RydWN0IHRy YWNlcG9pbnRfZnVuYyAqaXRfZnVuY19wdHI7IHZvaWQgKml0X2Z1bmM7IHZvaWQgKl9fZGF0YTsg aW50IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2lkeCA9IDA7IGlmICghKGNwdW1hc2tf dGVzdF9jcHUoKCh7IHR5cGVvZihjcHVfbnVtYmVyKSBwc2NyX3JldF9fOyBkbyB7IGNvbnN0IHZv aWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X251bWJlcikpICsgMCkpKCh2b2lkICop MCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X251 bWJlcikpIHsgY2FzZSAxOiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19y ZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUg KCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDog Im0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncg IiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9u dW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIi OiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBi cmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEi IiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZh dWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDI6 IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNp emVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIi Z3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIp KTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsg Y2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIg OiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFz bSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBm b19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNw dV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgNDogcHNjcl9yZXRfXyA9ICh7 IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIp KSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAy OiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xh dGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRf XykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92 IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAo Y3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9f cmV0X187IH0pOyBicmVhazsgY2FzZSA4OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1i ZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20g dm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAo Im1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAi IiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251 bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFr OyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7IGJyZWFrOyB9IHBzY3JfcmV0 X187IH0pKSwgKChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqKSZfX2NwdV9vbmxpbmVfbWFzaykpKSkg cmV0dXJuOyAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKDAgJiYgKHByZWVtcHRfY291bnQoKSAm ICgoKDFVTCA8PCAoMSkpLTEpIDw8ICgoKDAgKyA4KSArIDgpICsgNCkpKSk7IGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2 b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1 Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19l bnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0Lndv cmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3Bz ZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgiKSwgImkiICg2OSksICJpIiAoKDEgPDwgMCl8KCgx IDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9 IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlz Y2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0 IiA6IDogImkiICg0NikpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19y ZXRfd2Fybl9vbiksIDApOyB9KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki KTsgaWYgKDApIHsgX19pZHggPSBzcmN1X3JlYWRfbG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3Ny Y3UpOyByY3VfaXJxX2VudGVyX2lycXNvbigpOyB9IGl0X2Z1bmNfcHRyID0gKHsgdHlwZW9mKCgm X190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZSktPmZ1bmNzKSBfX19fX19fX3AxID0g KHsgdW5pb24geyB0eXBlb2YoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ ZnVuY3MpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXpl KCYoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpLCBfX3UuX19j LCBzaXplb2YoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpKTsg ZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNf cGVyZm9ybWFuY2UpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2ludF9hbWRn cHVfZGNfcGVyZm9ybWFuY2UpLT5mdW5jcykpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7 IH0pOyAoKHR5cGVvZigqKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVu Y3MpICopKF9fX19fX19fcDEpKTsgfSk7IGlmIChpdF9mdW5jX3B0cikgeyBkbyB7IGl0X2Z1bmMg PSAoaXRfZnVuY19wdHIpLT5mdW5jOyBfX2RhdGEgPSAoaXRfZnVuY19wdHIpLT5kYXRhOyAoKHZv aWQoKikodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nIHJlYWRfY291bnQsIHVuc2lnbmVkIGxv bmcgd3JpdGVfY291bnQsIHVuc2lnbmVkIGxvbmcgKmxhc3RfcmVhZCwgdW5zaWduZWQgbG9uZyAq bGFzdF93cml0ZSwgY29uc3QgY2hhciAqZnVuYywgdW5zaWduZWQgaW50IGxpbmUpKShpdF9mdW5j KSkoX19kYXRhLCByZWFkX2NvdW50LCB3cml0ZV9jb3VudCwgbGFzdF9yZWFkLCBsYXN0X3dyaXRl LCBmdW5jLCBsaW5lKTsgfSB3aGlsZSAoKCsraXRfZnVuY19wdHIpLT5mdW5jKTsgfSBpZiAoMCkg eyByY3VfaXJxX2V4aXRfaXJxc29uKCk7IHNyY3VfcmVhZF91bmxvY2tfbm90cmFjZSgmdHJhY2Vw b2ludF9zcmN1LCBfX2lkeCk7IH0gX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki KTsgfSB3aGlsZSAoMCk7IGlmICgwICYmIChjcHVtYXNrX3Rlc3RfY3B1KCgoeyB0eXBlb2YoY3B1 X251bWJlcikgcHNjcl9yZXRfXzsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlw ZW9mKCgmKGNwdV9udW1iZXIpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7 IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogcHNjcl9y ZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNw dV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVh azsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6 IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIg KHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0 aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUo KTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSAyOiBwc2NyX3JldF9fID0gKHsgdHlwZW9m KGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2Fz ZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgi bW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsg fSk7IGJyZWFrOyBjYXNlIDQ6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZv X3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGls ZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykg OiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAi dyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1 X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdz IiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7 IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2Ug ODogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAo c2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUl IiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJl cikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAi JSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFr OyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODog YXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVy Y3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9j YWxsX3BhcmFtZXRlcigpOyBicmVhazsgfSBwc2NyX3JldF9fOyB9KSksICgoY29uc3Qgc3RydWN0 IGNwdW1hc2sgKikmX19jcHVfb25saW5lX21hc2spKSkpIHsgcmN1X3JlYWRfbG9ja19zY2hlZF9u b3RyYWNlKCk7ICh7IHR5cGVvZigqKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2Uu ZnVuY3MpKSAqX19fX19fX19wMSA9ICh0eXBlb2YoKihfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3Bl cmZvcm1hbmNlLmZ1bmNzKSkgKikoeyB1bmlvbiB7IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdw dV9kY19wZXJmb3JtYW5jZS5mdW5jcykpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgx KSBfX3JlYWRfb25jZV9zaXplKCYoKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2Uu ZnVuY3MpKSwgX191Ll9fYywgc2l6ZW9mKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1h bmNlLmZ1bmNzKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChfX3RyYWNlcG9p bnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFj ZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZS5mdW5jcykpKTsgZG8geyB9IHdoaWxlICgwKTsg X191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKF9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfcGVyZm9ybWFuY2UuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3Vf cmVhZF91bmxvY2tfc2NoZWRfbm90cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdw dV9kY19wZXJmb3JtYW5jZSh2b2lkICgqcHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9u ZyByZWFkX2NvdW50LCB1bnNpZ25lZCBsb25nIHdyaXRlX2NvdW50LCB1bnNpZ25lZCBsb25nICps YXN0X3JlYWQsIHVuc2lnbmVkIGxvbmcgKmxhc3Rfd3JpdGUsIGNvbnN0IGNoYXIgKmZ1bmMsIHVu c2lnbmVkIGludCBsaW5lKSwgdm9pZCAqZGF0YSkgeyByZXR1cm4gdHJhY2Vwb2ludF9wcm9iZV9y ZWdpc3RlcigmX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZSwgKHZvaWQgKilwcm9i ZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX3ByaW9fYW1kZ3B1X2RjX3BlcmZvcm1hbmNl KHZvaWQgKCpwcm9iZSkodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nIHJlYWRfY291bnQsIHVu c2lnbmVkIGxvbmcgd3JpdGVfY291bnQsIHVuc2lnbmVkIGxvbmcgKmxhc3RfcmVhZCwgdW5zaWdu ZWQgbG9uZyAqbGFzdF93cml0ZSwgY29uc3QgY2hhciAqZnVuYywgdW5zaWduZWQgaW50IGxpbmUp LCB2b2lkICpkYXRhLCBpbnQgcHJpbykgeyByZXR1cm4gdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3Rl cl9wcmlvKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLCAodm9pZCAqKXByb2Jl LCBkYXRhLCBwcmlvKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgdW5yZWdpc3Rlcl90cmFjZV9hbWRncHVfZGNfcGVyZm9ybWFu Y2Uodm9pZCAoKnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgcmVhZF9jb3VudCwg dW5zaWduZWQgbG9uZyB3cml0ZV9jb3VudCwgdW5zaWduZWQgbG9uZyAqbGFzdF9yZWFkLCB1bnNp Z25lZCBsb25nICpsYXN0X3dyaXRlLCBjb25zdCBjaGFyICpmdW5jLCB1bnNpZ25lZCBpbnQgbGlu ZSksIHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRyYWNlcG9pbnRfcHJvYmVfdW5yZWdpc3RlcigmX190 cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZSwgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0g c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBjaGVja190cmFjZV9jYWxsYmFja190eXBlX2FtZGdwdV9kY19wZXJmb3JtYW5jZSh2b2lk ICgqY2IpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyByZWFkX2NvdW50LCB1bnNpZ25lZCBs b25nIHdyaXRlX2NvdW50LCB1bnNpZ25lZCBsb25nICpsYXN0X3JlYWQsIHVuc2lnbmVkIGxvbmcg Kmxhc3Rfd3JpdGUsIGNvbnN0IGNoYXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSkgeyB9IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgdHJhY2VfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlX2VuYWJsZWQodm9pZCkgeyByZXR1cm4gc3Rh dGljX2tleV9mYWxzZSgmX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZS5rZXkpOyB9 CjE0NDc0OiAjIDk4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1k Z3B1X2RtL2FtZGdwdV9kbV90cmFjZS5oIgoxNDQ3NDogIDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vaW5jbHVkZS90cmFjZS9kZWZpbmVfdHJh Y2UuaCIgMQoxNDQ3NDogIyAxMDUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgiIDIKMTQ0NzQ6ICMgMzUgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIiAyCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZG1fc2VydmljZXNfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMiAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzX3R5cGVzLmgiCjE0NDc0 OiBzdHJ1Y3QgcHBfc211X2Z1bmNzOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZG1fcHBfY2xvY2tf cmFuZ2UgewoxNDQ3NDogIGludCBtaW5fa2h6OwoxNDQ3NDogIGludCBtYXhfa2h6OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgewoxNDQ3NDogIERNX1BQ X0NMT0NLU19TVEFURV9JTlZBTElELAoxNDQ3NDogIERNX1BQX0NMT0NLU19TVEFURV9VTFRSQV9M T1csCjE0NDc0OiAgRE1fUFBfQ0xPQ0tTX1NUQVRFX0xPVywKMTQ0NzQ6ICBETV9QUF9DTE9DS1Nf U1RBVEVfTk9NSU5BTCwKMTQ0NzQ6ICBETV9QUF9DTE9DS1NfU1RBVEVfUEVSRk9STUFOQ0UsCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfSU5WQUxJ RCA9IERNX1BQX0NMT0NLU19TVEFURV9JTlZBTElELAoxNDQ3NDogIERNX1BQX0NMT0NLU19EUE1f U1RBVEVfTEVWRUxfMCwKMTQ0NzQ6ICBETV9QUF9DTE9DS1NfRFBNX1NUQVRFX0xFVkVMXzEsCjE0 NDc0OiAgRE1fUFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZFTF8yLAoxNDQ3NDogCjE0NDc0OiAgRE1f UFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZFTF8zLAoxNDQ3NDogIERNX1BQX0NMT0NLU19EUE1fU1RB VEVfTEVWRUxfNCwKMTQ0NzQ6ICBETV9QUF9DTE9DS1NfRFBNX1NUQVRFX0xFVkVMXzUsCjE0NDc0 OiAgRE1fUFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZFTF82LAoxNDQ3NDogIERNX1BQX0NMT0NLU19E UE1fU1RBVEVfTEVWRUxfNywKMTQ0NzQ6IAoxNDQ3NDogIERNX1BQX0NMT0NLU19NQVhfU1RBVEVT CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZG1fcHBfZ3B1X2Nsb2NrX3JhbmdlIHsK MTQ0NzQ6ICBlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSBjbG9ja19zdGF0ZTsKMTQ0NzQ6ICBzdHJ1 Y3QgZG1fcHBfY2xvY2tfcmFuZ2Ugc2NsazsKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFu Z2UgbWNsazsKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2UgZWNsazsKMTQ0NzQ6ICBz dHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2UgZGNsazsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVu dW0gZG1fcHBfY2xvY2tfdHlwZSB7CjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9ESVNQTEFZX0NM SyA9IDEsCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9FTkdJTkVfQ0xLLAoxNDQ3NDogIERNX1BQ X0NMT0NLX1RZUEVfTUVNT1JZX0NMSywKMTQ0NzQ6ICBETV9QUF9DTE9DS19UWVBFX0RDRkNMSywK MTQ0NzQ6ICBETV9QUF9DTE9DS19UWVBFX0RDRUZDTEssCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQ RV9TT0NDTEssCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9QSVhFTENMSywKMTQ0NzQ6ICBETV9Q UF9DTE9DS19UWVBFX0RJU1BMQVlQSFlDTEssCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9EUFBD TEssCjE0NDc0OiAgRE1fUFBfQ0xPQ0tfVFlQRV9GQ0xLLAoxNDQ3NDogfTsKMTQ0NzQ6ICMgOTcg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlc190 eXBlcy5oIgoxNDQ3NDogc3RydWN0IGRtX3BwX2Nsb2NrX2xldmVscyB7CjE0NDc0OiAgdWludDMy X3QgbnVtX2xldmVsczsKMTQ0NzQ6ICB1aW50MzJfdCBjbG9ja3NfaW5fa2h6WzE2XTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkbV9wcF9jbG9ja193aXRoX2xhdGVuY3kgewoxNDQ3 NDogIHVpbnQzMl90IGNsb2Nrc19pbl9raHo7CjE0NDc0OiAgdWludDMyX3QgbGF0ZW5jeV9pbl91 czsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHNfd2l0 aF9sYXRlbmN5IHsKMTQ0NzQ6ICB1aW50MzJfdCBudW1fbGV2ZWxzOwoxNDQ3NDogIHN0cnVjdCBk bV9wcF9jbG9ja193aXRoX2xhdGVuY3kgZGF0YVsxNl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZG1fcHBfY2xvY2tfd2l0aF92b2x0YWdlIHsKMTQ0NzQ6ICB1aW50MzJfdCBjbG9j a3NfaW5fa2h6OwoxNDQ3NDogIHVpbnQzMl90IHZvbHRhZ2VfaW5fbXY7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzX3dpdGhfdm9sdGFnZSB7CjE0NDc0 OiAgdWludDMyX3QgbnVtX2xldmVsczsKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfd2l0aF92 b2x0YWdlIGRhdGFbMTZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRtX3BwX3Np bmdsZV9kaXNwX2NvbmZpZyB7CjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CjE0NDc0 OiAgdWludDhfdCB0cmFuc21pdHRlcjsKMTQ0NzQ6ICB1aW50OF90IGRkaV9jaGFubmVsX21hcHBp bmc7CjE0NDc0OiAgdWludDhfdCBwaXBlX2lkeDsKMTQ0NzQ6ICB1aW50MzJfdCBzcmNfaGVpZ2h0 OwoxNDQ3NDogIHVpbnQzMl90IHNyY193aWR0aDsKMTQ0NzQ6ICB1aW50MzJfdCB2X3JlZnJlc2g7 CjE0NDc0OiAgdWludDMyX3Qgc3ltX2Nsb2NrOwoxNDQ3NDogIHN0cnVjdCBkY19saW5rX3NldHRp bmdzIGxpbmtfc2V0dGluZ3M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogZW51bSBkbV9wcF93bV9zZXRfaWQgewoxNDQ3NDogIFdNX1NFVF9BID0gMCwKMTQ0NzQ6ICBX TV9TRVRfQiwKMTQ0NzQ6ICBXTV9TRVRfQywKMTQ0NzQ6ICBXTV9TRVRfRCwKMTQ0NzQ6ICBXTV9T RVRfSU5WQUxJRCA9IDB4ZmZmZiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkbV9w cF9jbG9ja19yYW5nZV9mb3Jfd21fc2V0IHsKMTQ0NzQ6ICBlbnVtIGRtX3BwX3dtX3NldF9pZCB3 bV9zZXRfaWQ7CjE0NDc0OiAgdWludDMyX3Qgd21fbWluX2VuZ19jbGtfaW5fa2h6OwoxNDQ3NDog IHVpbnQzMl90IHdtX21heF9lbmdfY2xrX2luX2toejsKMTQ0NzQ6ICB1aW50MzJfdCB3bV9taW5f bWVtX2Nsa19pbl9raHo7CjE0NDc0OiAgdWludDMyX3Qgd21fbWF4X21lbV9jbGtfaW5fa2h6Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRtX3BwX3dtX3NldHNfd2l0aF9jbG9ja19y YW5nZXMgewoxNDQ3NDogIHVpbnQzMl90IG51bV93bV9zZXRzOwoxNDQ3NDogIHN0cnVjdCBkbV9w cF9jbG9ja19yYW5nZV9mb3Jfd21fc2V0IHdtX2Nsa19yYW5nZXNbNF07CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2VfZm9yX2RtaWZfd21fc2V0X3NvYzE1 IHsKMTQ0NzQ6ICBlbnVtIGRtX3BwX3dtX3NldF9pZCB3bV9zZXRfaWQ7CjE0NDc0OiAgdWludDMy X3Qgd21fbWluX2RjZmNsa19jbGtfaW5fa2h6OwoxNDQ3NDogIHVpbnQzMl90IHdtX21heF9kY2Zj bGtfY2xrX2luX2toejsKMTQ0NzQ6ICB1aW50MzJfdCB3bV9taW5fbWVtX2Nsa19pbl9raHo7CjE0 NDc0OiAgdWludDMyX3Qgd21fbWF4X21lbV9jbGtfaW5fa2h6OwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlX2Zvcl9tY2lmX3dtX3NldF9zb2MxNSB7CjE0 NDc0OiAgZW51bSBkbV9wcF93bV9zZXRfaWQgd21fc2V0X2lkOwoxNDQ3NDogIHVpbnQzMl90IHdt X21pbl9zb2NjbGtfY2xrX2luX2toejsKMTQ0NzQ6ICB1aW50MzJfdCB3bV9tYXhfc29jY2xrX2Ns a19pbl9raHo7CjE0NDc0OiAgdWludDMyX3Qgd21fbWluX21lbV9jbGtfaW5fa2h6OwoxNDQ3NDog IHVpbnQzMl90IHdtX21heF9tZW1fY2xrX2luX2toejsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkbV9wcF93bV9zZXRzX3dpdGhfY2xvY2tfcmFuZ2VzX3NvYzE1IHsKMTQ0NzQ6ICB1 aW50MzJfdCBudW1fd21fZG1pZl9zZXRzOwoxNDQ3NDogIHVpbnQzMl90IG51bV93bV9tY2lmX3Nl dHM7CjE0NDc0OiAgc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlX2Zvcl9kbWlmX3dtX3NldF9zb2Mx NQoxNDQ3NDogICB3bV9kbWlmX2Nsb2Nrc19yYW5nZXNbNF07CjE0NDc0OiAgc3RydWN0IGRtX3Bw X2Nsb2NrX3JhbmdlX2Zvcl9tY2lmX3dtX3NldF9zb2MxNQoxNDQ3NDogICB3bV9tY2lmX2Nsb2Nr c19yYW5nZXNbNF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRtX3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiB7CjE0NDc0OiAgYm9vbCBuYl9wc3RhdGVf c3dpdGNoX2Rpc2FibGU7CjE0NDc0OiAgYm9vbCBjcHVfY2M2X2Rpc2FibGU7CjE0NDc0OiAgYm9v bCBjcHVfcHN0YXRlX2Rpc2FibGU7CjE0NDc0OiAgdWludDMyX3QgY3B1X3BzdGF0ZV9zZXBhcmF0 aW9uX3RpbWU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fbWVtb3J5X2Nsb2NrX2toejsK MTQ0NzQ6ICB1aW50MzJfdCBtaW5fZW5naW5lX2Nsb2NrX2toejsKMTQ0NzQ6ICB1aW50MzJfdCBt aW5fZW5naW5lX2Nsb2NrX2RlZXBfc2xlZXBfa2h6OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qg YXZhaWxfbWNsa19zd2l0Y2hfdGltZV91czsKMTQ0NzQ6ICB1aW50MzJfdCBhdmFpbF9tY2xrX3N3 aXRjaF90aW1lX2luX2Rpc3BfYWN0aXZlX3VzOwoxNDQ3NDogIHVpbnQzMl90IG1pbl9kY2ZjbG9j a19raHo7CjE0NDc0OiAgdWludDMyX3QgbWluX2RjZmNfZGVlcF9zbGVlcF9jbG9ja19raHo7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkaXNwX2Nsa19raHo7CjE0NDc0OiAKMTQ0NzQ6ICBib29s IGFsbF9kaXNwbGF5c19pbl9zeW5jOwoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCBkaXNwbGF5X2Nv dW50OwoxNDQ3NDogIHN0cnVjdCBkbV9wcF9zaW5nbGVfZGlzcF9jb25maWcgZGlzcF9jb25maWdz WzZdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQ4X3QgY3J0Y19pbmRleDsK MTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGxpbmVfdGltZV9pbl91czsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBkbV9ibF9kYXRhX3BvaW50IHsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50 OF90IGx1bWluYW5jZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBz aWduYWxfbGV2ZWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGRtX2FjcGlfYXRpZl9iYWNrbGlnaHRfY2FwcyB7CjE0NDc0OiAgdWludDE2X3Qgc2l6ZTsK MTQ0NzQ6ICB1aW50MTZfdCBmbGFnczsKMTQ0NzQ6ICB1aW50OF90IGVycm9yX2NvZGU7CjE0NDc0 OiAgdWludDhfdCBhY19sZXZlbF9wZXJjZW50YWdlOwoxNDQ3NDogIHVpbnQ4X3QgZGNfbGV2ZWxf cGVyY2VudGFnZTsKMTQ0NzQ6ICB1aW50OF90IG1pbl9pbnB1dF9zaWduYWw7CjE0NDc0OiAgdWlu dDhfdCBtYXhfaW5wdXRfc2lnbmFsOwoxNDQ3NDogIHVpbnQ4X3QgbnVtX2RhdGFfcG9pbnRzOwox NDQ3NDogIHN0cnVjdCBkbV9ibF9kYXRhX3BvaW50IGRhdGFfcG9pbnRzWzk5XTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZG1fYWNwaV9kaXNwbGF5X3R5cGUgewoxNDQ3NDogIEFjcGlE aXNwbGF5VHlwZV9MQ0QxID0gMCwKMTQ0NzQ6ICBBY3BpRGlzcGxheVR5cGVfQ1JUMSA9IDEsCjE0 NDc0OiAgQWNwaURpc3BsYXlUeXBlX0RGUDEgPSAzLAoxNDQ3NDogIEFjcGlEaXNwbGF5VHlwZV9D UlQyID0gNCwKMTQ0NzQ6ICBBY3BpRGlzcGxheVR5cGVfTENEMiA9IDUsCjE0NDc0OiAgQWNwaURp c3BsYXlUeXBlX0RGUDIgPSA3LAoxNDQ3NDogIEFjcGlEaXNwbGF5VHlwZV9ERlAzID0gOSwKMTQ0 NzQ6ICBBY3BpRGlzcGxheVR5cGVfREZQNCA9IDEwLAoxNDQ3NDogIEFjcGlEaXNwbGF5VHlwZV9E RlA1ID0gMTEsCjE0NDc0OiAgQWNwaURpc3BsYXlUeXBlX0RGUDYgPSAxMgoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGRtX3BwX3Bvd2VyX2xldmVsX2NoYW5nZV9yZXF1ZXN0IHsKMTQ0 NzQ6ICBlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSBwb3dlcl9sZXZlbDsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBkbV9wcF9jbG9ja19mb3Jfdm9sdGFnZV9yZXEgewoxNDQ3NDogIGVu dW0gZG1fcHBfY2xvY2tfdHlwZSBjbGtfdHlwZTsKMTQ0NzQ6ICB1aW50MzJfdCBjbG9ja3NfaW5f a2h6OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRtX3BwX3N0YXRpY19jbG9ja19p bmZvIHsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfc2Nsa19raHo7CjE0NDc0OiAgdWludDMyX3QgbWF4 X21jbGtfa2h6OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0 ZSBtYXhfY2xvY2tzX3N0YXRlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGR0bl9t aW5fY2xrX2luZm8gewoxNDQ3NDogIHVpbnQzMl90IGRpc3BfY2xrX2toejsKMTQ0NzQ6ICB1aW50 MzJfdCBtaW5fZW5naW5lX2Nsb2NrX2toejsKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fbWVtb3J5X2Ns b2NrX2toejsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dnZXJfaW50ZXJmYWNlLmgi IDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2xvZ2dlcl9pbnRlcmZhY2UuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbG9nZ2VyX3R5cGVzLmgiIDEKMTQ0NzQ6ICMg MzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xvZ2dl cl9pbnRlcmZhY2UuaCIgMgoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY29udGV4dDsKMTQ0NzQ6 IHN0cnVjdCBkY19saW5rOwoxNDQ3NDogc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlOwoxNDQ3NDog c3RydWN0IHJlc291cmNlX2NvbnRleHQ7CjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGU7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZv aWQgZGNfY29ubl9sb2dfaGV4X2xpbnV4KGNvbnN0IHVpbnQ4X3QgKmhleF9kYXRhLCBpbnQgaGV4 X2RhdGFfY291bnQpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHByZV9zdXJmYWNlX3RyYWNlKAoxNDQ3 NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUg KmNvbnN0ICpwbGFuZV9zdGF0ZXMsCjE0NDc0OiAgIGludCBzdXJmYWNlX2NvdW50KTsKMTQ0NzQ6 IAoxNDQ3NDogdm9pZCB1cGRhdGVfc3VyZmFjZV90cmFjZSgKMTQ0NzQ6ICAgc3RydWN0IGRjICpk YywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlICp1cGRhdGVzLAoxNDQ3 NDogICBpbnQgc3VyZmFjZV9jb3VudCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcG9zdF9zdXJmYWNl X3RyYWNlKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGNvbnRleHRfdGltaW5n X3RyYWNlKAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgcmVzb3VyY2Vf Y29udGV4dCAqcmVzX2N0eCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgY29udGV4dF9jbG9ja190cmFj ZSgKMTQ0NzQ6ICAgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0YXRlICpjb250 ZXh0KTsKMTQ0NzQ6ICMgMzkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbV9zZXJ2aWNlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkbXViX3NydjsKMTQ0NzQ6IHN0cnVjdCBkY19kbXViX3NydjsKMTQ0NzQ6IAox NDQ3NDogaXJxX2hhbmRsZXJfaWR4IGRtX3JlZ2lzdGVyX2ludGVycnVwdCgKMTQ0NzQ6ICBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIHN0cnVjdCBkY19pbnRlcnJ1cHRfcGFyYW1zICpp bnRfcGFyYW1zLAoxNDQ3NDogIGludGVycnVwdF9oYW5kbGVyIGloLAoxNDQ3NDogIHZvaWQgKmhh bmRsZXJfYXJncyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHVpbnQzMl90IGRtX3JlYWRfcmVnX2Z1bmMoCjE0NDc0OiAgY29u c3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICB1aW50MzJfdCBhZGRyZXNzLAoxNDQ3 NDogIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSk7CjE0NDc0OiAjIDczICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKMTQ0NzQ6IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZG1f d3JpdGVfcmVnX2Z1bmMoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0 NzQ6ICB1aW50MzJfdCBhZGRyZXNzLAoxNDQ3NDogIHVpbnQzMl90IHZhbHVlLAoxNDQ3NDogIGNv bnN0IGNoYXIgKmZ1bmNfbmFtZSkKMTQ0NzQ6IHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAoKChzdHJ1Y3QgY2dzX2RldmljZSAqKWN0eC0+ Y2dzX2RldmljZSktPm9wcy0+d3JpdGVfcmVnaXN0ZXIoY3R4LT5jZ3NfZGV2aWNlLCBhZGRyZXNz LHZhbHVlKSk7CjE0NDc0OiAgdHJhY2VfYW1kZ3B1X2RjX3dyZWcoJmN0eC0+cGVyZl90cmFjZS0+ d3JpdGVfY291bnQsIGFkZHJlc3MsIHZhbHVlKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdWlu dDMyX3QgZG1fcmVhZF9pbmRleF9yZWcoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRleHQg KmN0eCwKMTQ0NzQ6ICBlbnVtIGNnc19pbmRfcmVnIGFkZHJfc3BhY2UsCjE0NDc0OiAgdWludDMy X3QgaW5kZXgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuICgoKHN0cnVjdCBjZ3NfZGV2aWNlICop Y3R4LT5jZ3NfZGV2aWNlKS0+b3BzLT5yZWFkX2luZF9yZWdpc3RlcihjdHgtPmNnc19kZXZpY2Us IGFkZHJfc3BhY2UsaW5kZXgpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkbV93cml0 ZV9pbmRleF9yZWcoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6 ICBlbnVtIGNnc19pbmRfcmVnIGFkZHJfc3BhY2UsCjE0NDc0OiAgdWludDMyX3QgaW5kZXgsCjE0 NDc0OiAgdWludDMyX3QgdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgKCgoc3RydWN0IGNnc19kZXZp Y2UgKiljdHgtPmNnc19kZXZpY2UpLT5vcHMtPndyaXRlX2luZF9yZWdpc3RlcihjdHgtPmNnc19k ZXZpY2UsIGFkZHJfc3BhY2UsaW5kZXgsdmFsdWUpKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dWludDMyX3QgZ2V0X3JlZ19maWVsZF92YWx1ZV9leCgKMTQ0NzQ6ICB1aW50MzJfdCByZWdfdmFs dWUsCjE0NDc0OiAgdWludDMyX3QgbWFzaywKMTQ0NzQ6ICB1aW50OF90IHNoaWZ0KQoxNDQ3NDog ewoxNDQ3NDogIHJldHVybiAobWFzayAmIHJlZ192YWx1ZSkgPj4gc2hpZnQ7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHVpbnQzMl90IHNldF9yZWdfZmllbGRfdmFsdWVfZXgoCjE0NDc0OiAgdWludDMyX3QgcmVn X3ZhbHVlLAoxNDQ3NDogIHVpbnQzMl90IHZhbHVlLAoxNDQ3NDogIHVpbnQzMl90IG1hc2ssCjE0 NDc0OiAgdWludDhfdCBzaGlmdCkKMTQ0NzQ6IHsKMTQ0NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9v biA9ICEhKCEobWFzayAhPSAwKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5f b24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4 MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQi ICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAi LmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVj MSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6 ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIiksICJpIiAo MTI2KSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVn X2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNo c2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBv cHNlY3Rpb25cblx0IiA6IDogImkiICg0NykpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9l eHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKMTQ0NzQ6ICByZXR1cm4gKHJlZ192YWx1 ZSAmIH5tYXNrKSB8IChtYXNrICYgKHZhbHVlIDw8IHNoaWZ0KSk7CjE0NDc0OiB9CjE0NDc0OiAj IDEzNyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZp Y2VzLmgiCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ19zZXRfZXgoY29uc3Qgc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3QgYWRkciwgdWludDMyX3QgcmVnX3ZhbCwg aW50IG4sCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3Qg ZmllbGRfdmFsdWUxLCAuLi4pOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ191 cGRhdGVfZXgoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3Qg YWRkciwgaW50IG4sCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWlu dDMyX3QgZmllbGRfdmFsdWUxLCAuLi4pOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfZG11Yl9z cnYgKmRjX2RtdWJfc3J2X2NyZWF0ZShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZG11Yl9zcnYgKmRt dWIpOwoxNDQ3NDogdm9pZCBkY19kbXViX3Nydl9kZXN0cm95KHN0cnVjdCBkY19kbXViX3NydiAq KmRtdWJfc3J2KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCByZWdfc2VxdWVuY2Vfc3RhcnRfZ2F0aGVy KGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgpOwoxNDQ3NDogdm9pZCByZWdfc2VxdWVuY2Vf c3RhcnRfZXhlY3V0ZShjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKMTQ0NzQ6IHZvaWQg cmVnX3NlcXVlbmNlX3dhaXRfZG9uZShjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKMTQ0 NzQ6ICMgMTU5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1f c2VydmljZXMuaCIKMTQ0NzQ6IHZvaWQgZ2VuZXJpY19yZWdfd2FpdChjb25zdCBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4LAoxNDQ3NDogIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IG1hc2ssIHVpbnQz Ml90IHNoaWZ0LCB1aW50MzJfdCBjb25kaXRpb25fdmFsdWUsCjE0NDc0OiAgdW5zaWduZWQgaW50 IGRlbGF5X2JldHdlZW5fcG9sbF91cywgdW5zaWduZWQgaW50IHRpbWVfb3V0X251bV90cmllcywK MTQ0NzQ6ICBjb25zdCBjaGFyICpmdW5jX25hbWUsIGludCBsaW5lKTsKMTQ0NzQ6IAoxNDQ3NDog dW5zaWduZWQgaW50IHNucHJpbnRmX2NvdW50KGNoYXIgKnBCdWYsIHVuc2lnbmVkIGludCBidWZT aXplLCBjaGFyICpmbXQsIC4uLik7CjE0NDc0OiAjIDIwOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiCjE0NDc0OiBib29sIGRtX3BwX2dl dF9jbG9ja19sZXZlbHNfYnlfdHlwZSgKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAq Y3R4LAoxNDQ3NDogIGVudW0gZG1fcHBfY2xvY2tfdHlwZSBjbGtfdHlwZSwKMTQ0NzQ6ICBzdHJ1 Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzICpjbGtfbGV2ZWxfaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6IGJv b2wgZG1fcHBfZ2V0X2Nsb2NrX2xldmVsc19ieV90eXBlX3dpdGhfbGF0ZW5jeSgKMTQ0NzQ6ICBj b25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIGVudW0gZG1fcHBfY2xvY2tfdHlw ZSBjbGtfdHlwZSwKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzX3dpdGhfbGF0ZW5j eSAqY2xrX2xldmVsX2luZm8pOwoxNDQ3NDogCjE0NDc0OiBib29sIGRtX3BwX2dldF9jbG9ja19s ZXZlbHNfYnlfdHlwZV93aXRoX3ZvbHRhZ2UoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKMTQ0NzQ6ICBlbnVtIGRtX3BwX2Nsb2NrX3R5cGUgY2xrX3R5cGUsCjE0NDc0OiAg c3RydWN0IGRtX3BwX2Nsb2NrX2xldmVsc193aXRoX3ZvbHRhZ2UgKmNsa19sZXZlbF9pbmZvKTsK MTQ0NzQ6IAoxNDQ3NDogYm9vbCBkbV9wcF9ub3RpZnlfd21fY2xvY2tfY2hhbmdlcygKMTQ0NzQ6 ICBjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIHN0cnVjdCBkbV9wcF93bV9z ZXRzX3dpdGhfY2xvY2tfcmFuZ2VzICp3bV93aXRoX2Nsb2NrX3Jhbmdlcyk7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgZG1fcHBfZ2V0X2Z1bmNzKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAg IHN0cnVjdCBwcF9zbXVfZnVuY3MgKmZ1bmNzKTsKMTQ0NzQ6ICMgMjQxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKMTQ0NzQ6IGJvb2wg ZG1fcHBfYXBwbHlfZGlzcGxheV9yZXF1aXJlbWVudHMoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZG1fcHBfZGlzcGxheV9jb25maWd1 cmF0aW9uICpwcF9kaXNwbGF5X2NmZyk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZG1fcHBfYXBwbHlf cG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3QoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfcG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3Qg KmxldmVsX2NoYW5nZV9yZXEpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRtX3BwX2FwcGx5X2Nsb2Nr X2Zvcl92b2x0YWdlX3JlcXVlc3QoCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0 eCwKMTQ0NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfZm9yX3ZvbHRhZ2VfcmVxICpjbG9ja19mb3Jf dm9sdGFnZV9yZXEpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRtX3BwX2dldF9zdGF0aWNfY2xvY2tz KAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgc3RydWN0IGRt X3BwX3N0YXRpY19jbG9ja19pbmZvICpzdGF0aWNfY2xrX2luZm8pOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBlcnNpc3RlbnRfZGF0YV9mbGFnIHsKMTQ0NzQ6ICBib29s IHNhdmVfcGVyX2xpbms7CjE0NDc0OiAgYm9vbCBzYXZlX3Blcl9lZGlkOwoxNDQ3NDogfTsKMTQ0 NzQ6ICMgMjkxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1f c2VydmljZXMuaCIKMTQ0NzQ6IGJvb2wgZG1fd3JpdGVfcGVyc2lzdGVudF9kYXRhKHN0cnVjdCBk Y19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zaW5rICpzaW5rLAoxNDQ3 NDogICBjb25zdCBjaGFyICptb2R1bGVfbmFtZSwKMTQ0NzQ6ICAgY29uc3QgY2hhciAqa2V5X25h bWUsCjE0NDc0OiAgIHZvaWQgKnBhcmFtcywKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHNpemUsCjE0 NDc0OiAgIHN0cnVjdCBwZXJzaXN0ZW50X2RhdGFfZmxhZyAqZmxhZyk7CjE0NDc0OiAjIDMyNSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgi CjE0NDc0OiBib29sIGRtX3JlYWRfcGVyc2lzdGVudF9kYXRhKHN0cnVjdCBkY19jb250ZXh0ICpj dHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zaW5rICpzaW5rLAoxNDQ3NDogICBjb25zdCBj aGFyICptb2R1bGVfbmFtZSwKMTQ0NzQ6ICAgY29uc3QgY2hhciAqa2V5X25hbWUsCjE0NDc0OiAg IHZvaWQgKnBhcmFtcywKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IHNpemUsCjE0NDc0OiAgIHN0cnVj dCBwZXJzaXN0ZW50X2RhdGFfZmxhZyAqZmxhZyk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZG1fcXVl cnlfZXh0ZW5kZWRfYnJpZ2h0bmVzc19jYXBzCjE0NDc0OiAgKHN0cnVjdCBkY19jb250ZXh0ICpj dHgsIGVudW0gZG1fYWNwaV9kaXNwbGF5X3R5cGUgZGlzcGxheSwKMTQ0NzQ6ICAgIHN0cnVjdCBk bV9hY3BpX2F0aWZfYmFja2xpZ2h0X2NhcHMgKnBDYXBzKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBk bV9kbWN1X3NldF9waXBlKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBjb250 cm9sbGVyX2lkKTsKMTQ0NzQ6ICMgMzQ3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbG9uZyBkbV9n ZXRfdGltZXN0YW1wKHN0cnVjdCBkY19jb250ZXh0ICpjdHgpCjE0NDc0OiB7CjE0NDc0OiAgcmV0 dXJuIGt0aW1lX2dldF9yYXdfbnMoKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdW5zaWduZWQg bG9uZyBsb25nIGRtX2dldF9lbGFwc2VfdGltZV9pbl9ucyhzdHJ1Y3QgZGNfY29udGV4dCAqY3R4 LAoxNDQ3NDogICB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudF90aW1lX3N0YW1wLAoxNDQ3NDog ICB1bnNpZ25lZCBsb25nIGxvbmcgbGFzdF90aW1lX3N0YW1wKTsKMTQ0NzQ6ICMgMzcxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKMTQ0 NzQ6IHZvaWQgZG1fZHRuX2xvZ19iZWdpbihzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDog IHN0cnVjdCBkY19sb2dfYnVmZmVyX2N0eCAqbG9nX2N0eCk7CjE0NDc0OiB2b2lkIGRtX2R0bl9s b2dfYXBwZW5kX3Yoc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbG9n X2J1ZmZlcl9jdHggKmxvZ19jdHgsCjE0NDc0OiAgY29uc3QgY2hhciAqbXNnLCAuLi4pOwoxNDQ3 NDogdm9pZCBkbV9kdG5fbG9nX2VuZChzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIHN0 cnVjdCBkY19sb2dfYnVmZmVyX2N0eCAqbG9nX2N0eCk7CjE0NDc0OiAjIDMxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5o IiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL3NpZ25hbF90eXBlcy5oIiAxCjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIiAyCjE0NDc0 OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dy cGhfb2JqZWN0X2N0cmxfZGVmcy5oIiAxCjE0NDc0OiAjIDMzICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIiAyCjE0NDc0 OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dw aW9fdHlwZXMuaCIgMQoxNDQ3NDogIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9saW5rX3NlcnZpY2Vf dHlwZXMuaCIgMQoxNDQ3NDogIyAzNSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfdHlwZXMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gYXNfc2lnbmFsX3R5cGUgewoxNDQ3NDogIEFTX1NJR05BTF9UWVBFX05PTkUgPSAw TCwKMTQ0NzQ6ICBBU19TSUdOQUxfVFlQRV9EVkksCjE0NDc0OiAgQVNfU0lHTkFMX1RZUEVfSERN SSwKMTQ0NzQ6ICBBU19TSUdOQUxfVFlQRV9MVkRTLAoxNDQ3NDogIEFTX1NJR05BTF9UWVBFX0RJ U1BMQVlfUE9SVCwKMTQ0NzQ6ICBBU19TSUdOQUxfVFlQRV9HUFVfUExMLAoxNDQ3NDogIEFTX1NJ R05BTF9UWVBFX1hHTUksCjE0NDc0OiAgQVNfU0lHTkFMX1RZUEVfVU5LTk9XTgoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBicF9yZXN1bHQgewoxNDQ3NDogIEJQX1JFU1VMVF9PSyA9IDAs CjE0NDc0OiAgQlBfUkVTVUxUX0JBRElOUFVULAoxNDQ3NDogIEJQX1JFU1VMVF9CQURCSU9TVEFC TEUsCjE0NDc0OiAgQlBfUkVTVUxUX1VOU1VQUE9SVEVELAoxNDQ3NDogIEJQX1JFU1VMVF9OT1JF Q09SRCwKMTQ0NzQ6ICBCUF9SRVNVTFRfRkFJTFVSRQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBicF9lbmNvZGVyX2NvbnRyb2xfYWN0aW9uIHsKMTQ0NzQ6IAoxNDQ3NDogIEVOQ09ERVJf Q09OVFJPTF9ESVNBQkxFID0gMCwKMTQ0NzQ6ICBFTkNPREVSX0NPTlRST0xfRU5BQkxFLAoxNDQ3 NDogIEVOQ09ERVJfQ09OVFJPTF9TRVRVUCwKMTQ0NzQ6ICBFTkNPREVSX0NPTlRST0xfSU5JVAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBicF90cmFuc21pdHRlcl9jb250cm9sX2FjdGlv biB7CjE0NDc0OiAKMTQ0NzQ6ICBUUkFOU01JVFRFUl9DT05UUk9MX0RJU0FCTEUgPSAwLAoxNDQ3 NDogIFRSQU5TTUlUVEVSX0NPTlRST0xfRU5BQkxFLAoxNDQ3NDogIFRSQU5TTUlUVEVSX0NPTlRS T0xfQkFDS0xJR0hUX09GRiwKMTQ0NzQ6ICBUUkFOU01JVFRFUl9DT05UUk9MX0JBQ0tMSUdIVF9P TiwKMTQ0NzQ6ICBUUkFOU01JVFRFUl9DT05UUk9MX0JBQ0tMSUdIVF9CUklHSFRORVNTLAoxNDQ3 NDogIFRSQU5TTUlUVEVSX0NPTlRST0xfTENEX1NFVEZfVEVTVF9TVEFSVCwKMTQ0NzQ6ICBUUkFO U01JVFRFUl9DT05UUk9MX0xDRF9TRUxGX1RFU1RfU1RPUCwKMTQ0NzQ6ICBUUkFOU01JVFRFUl9D T05UUk9MX0lOSVQsCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09OVFJPTF9ERUFDVElWQVRFLAoxNDQ3 NDogIFRSQU5TTUlUVEVSX0NPTlRST0xfQUNUSUFWQVRFLAoxNDQ3NDogIFRSQU5TTUlUVEVSX0NP TlRST0xfU0VUVVAsCjE0NDc0OiAgVFJBTlNNSVRURVJfQ09OVFJPTF9TRVRfVk9MVEFHRV9BTkRf UFJFRU1QQVNJUywKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBUUkFOU01JVFRFUl9D T05UUk9MX1BPV0VSX09OLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIFRSQU5TTUlU VEVSX0NPTlRST0xfUE9XRVJfT0ZGCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJwX2V4 dGVybmFsX2VuY29kZXJfY29udHJvbF9hY3Rpb24gewoxNDQ3NDogIEVYVEVSTkFMX0VOQ09ERVJf Q09OVFJPTF9ESVNBQkxFID0gMCwKMTQ0NzQ6ICBFWFRFUk5BTF9FTkNPREVSX0NPTlRST0xfRU5B QkxFID0gMSwKMTQ0NzQ6ICBFWFRFUk5BTF9FTkNPREVSX0NPTlRST0xfSU5JVCA9IDB4NywKMTQ0 NzQ6ICBFWFRFUk5BTF9FTkNPREVSX0NPTlRST0xfU0VUVVAgPSAweGYsCjE0NDc0OiAgRVhURVJO QUxfRU5DT0RFUl9DT05UUk9MX1VOQkxBTksgPSAweDEwLAoxNDQ3NDogIEVYVEVSTkFMX0VOQ09E RVJfQ09OVFJPTF9CTEFOSyA9IDB4MTEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJw X3BpcGVfY29udHJvbF9hY3Rpb24gewoxNDQ3NDogIEFTSUNfUElQRV9ESVNBQkxFID0gMCwKMTQ0 NzQ6ICBBU0lDX1BJUEVfRU5BQkxFLAoxNDQ3NDogIEFTSUNfUElQRV9JTklUCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnBfZW5jb2Rlcl9jb250cm9sIHsKMTQ0NzQ6ICBlbnVtIGJw X2VuY29kZXJfY29udHJvbF9hY3Rpb24gYWN0aW9uOwoxNDQ3NDogIGVudW0gZW5naW5lX2lkIGVu Z2luZV9pZDsKMTQ0NzQ6ICBlbnVtIHRyYW5zbWl0dGVyIHRyYW5zbWl0dGVyOwoxNDQ3NDogIGVu dW0gc2lnbmFsX3R5cGUgc2lnbmFsOwoxNDQ3NDogIGVudW0gZGNfbGFuZV9jb3VudCBsYW5lc19u dW1iZXI7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9kZXB0aCBjb2xvcl9kZXB0aDsKMTQ0NzQ6ICBi b29sIGVuYWJsZV9kcF9hdWRpbzsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9jbG9jazsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBicF9leHRlcm5hbF9lbmNvZGVyX2NvbnRyb2wgewox NDQ3NDogIGVudW0gYnBfZXh0ZXJuYWxfZW5jb2Rlcl9jb250cm9sX2FjdGlvbiBhY3Rpb247CjE0 NDc0OiAgZW51bSBlbmdpbmVfaWQgZW5naW5lX2lkOwoxNDQ3NDogIGVudW0gZGNfbGlua19yYXRl IGxpbmtfcmF0ZTsKMTQ0NzQ6ICBlbnVtIGRjX2xhbmVfY291bnQgbGFuZXNfbnVtYmVyOwoxNDQ3 NDogIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsOwoxNDQ3NDogIGVudW0gZGNfY29sb3JfZGVwdGgg Y29sb3JfZGVwdGg7CjE0NDc0OiAgYm9vbCBjb2hlcmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgZ3JhcGhp Y3Nfb2JqZWN0X2lkIGVuY29kZXJfaWQ7CjE0NDc0OiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9p ZCBjb25uZWN0b3Jfb2JqX2lkOwoxNDQ3NDogIHVpbnQzMl90IHBpeGVsX2Nsb2NrOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJwX2NydGNfc291cmNlX3NlbGVjdCB7CjE0NDc0OiAg ZW51bSBlbmdpbmVfaWQgZW5naW5lX2lkOwoxNDQ3NDogIGVudW0gY29udHJvbGxlcl9pZCBjb250 cm9sbGVyX2lkOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CjE0NDc0 OiAKMTQ0NzQ6ICBlbnVtIHNpZ25hbF90eXBlIHNpbmtfc2lnbmFsOwoxNDQ3NDogIGVudW0gZGlz cGxheV9vdXRwdXRfYml0X2RlcHRoIGRpc3BsYXlfb3V0cHV0X2JpdF9kZXB0aDsKMTQ0NzQ6ICBi b29sIGVuYWJsZV9kcF9hdWRpbzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBicF90 cmFuc21pdHRlcl9jb250cm9sIHsKMTQ0NzQ6ICBlbnVtIGJwX3RyYW5zbWl0dGVyX2NvbnRyb2xf YWN0aW9uIGFjdGlvbjsKMTQ0NzQ6ICBlbnVtIGVuZ2luZV9pZCBlbmdpbmVfaWQ7CjE0NDc0OiAg ZW51bSB0cmFuc21pdHRlciB0cmFuc21pdHRlcjsKMTQ0NzQ6ICBlbnVtIGRjX2xhbmVfY291bnQg bGFuZXNfbnVtYmVyOwoxNDQ3NDogIGVudW0gY2xvY2tfc291cmNlX2lkIHBsbF9pZDsKMTQ0NzQ6 ICBlbnVtIHNpZ25hbF90eXBlIHNpZ25hbDsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNv bG9yX2RlcHRoOwoxNDQ3NDogIGVudW0gaHBkX3NvdXJjZV9pZCBocGRfc2VsOwoxNDQ3NDogIHN0 cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yX29ial9pZDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9jbG9jazsKMTQ0NzQ6ICB1aW50MzJfdCBs YW5lX3NlbGVjdDsKMTQ0NzQ6ICB1aW50MzJfdCBsYW5lX3NldHRpbmdzOwoxNDQ3NDogIGJvb2wg Y29oZXJlbnQ7CjE0NDc0OiAgYm9vbCBtdWx0aV9wYXRoOwoxNDQ3NDogIGJvb2wgc2luZ2xlX3Bs bF9tb2RlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJwX2h3X2NydGNfdGltaW5n X3BhcmFtZXRlcnMgewoxNDQ3NDogIGVudW0gY29udHJvbGxlcl9pZCBjb250cm9sbGVyX2lkOwox NDQ3NDogCjE0NDc0OiAgdWludDMyX3QgaF90b3RhbDsKMTQ0NzQ6ICB1aW50MzJfdCBoX2FkZHJl c3NhYmxlOwoxNDQ3NDogIHVpbnQzMl90IGhfb3ZlcnNjYW5fbGVmdDsKMTQ0NzQ6ICB1aW50MzJf dCBoX292ZXJzY2FuX3JpZ2h0OwoxNDQ3NDogIHVpbnQzMl90IGhfc3luY19zdGFydDsKMTQ0NzQ6 ICB1aW50MzJfdCBoX3N5bmNfd2lkdGg7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90 IHZfdG90YWw7CjE0NDc0OiAgdWludDMyX3Qgdl9hZGRyZXNzYWJsZTsKMTQ0NzQ6ICB1aW50MzJf dCB2X292ZXJzY2FuX3RvcDsKMTQ0NzQ6ICB1aW50MzJfdCB2X292ZXJzY2FuX2JvdHRvbTsKMTQ0 NzQ6ICB1aW50MzJfdCB2X3N5bmNfc3RhcnQ7CjE0NDc0OiAgdWludDMyX3Qgdl9zeW5jX3dpZHRo OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHRpbWluZ19mbGFncyB7CjE0NDc0OiAgIHVpbnQzMl90 IElOVEVSTEFDRToxOwoxNDQ3NDogICB1aW50MzJfdCBQSVhFTF9SRVBFVElUSU9OOjQ7CjE0NDc0 OiAgIHVpbnQzMl90IEhTWU5DX1BPU0lUSVZFX1BPTEFSSVRZOjE7CjE0NDc0OiAgIHVpbnQzMl90 IFZTWU5DX1BPU0lUSVZFX1BPTEFSSVRZOjE7CjE0NDc0OiAgIHVpbnQzMl90IEhPUlpfQ09VTlRf QllfVFdPOjE7CjE0NDc0OiAgfSBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBicF9hZGp1c3RfcGl4ZWxfY2xvY2tfcGFyYW1ldGVycyB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVt IHNpZ25hbF90eXBlIHNpZ25hbF90eXBlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGdyYXBoaWNz X29iamVjdF9pZCBlbmNvZGVyX29iamVjdF9pZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICB1aW50MzJfdCBwaXhlbF9jbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGFkanVz dGVkX3BpeGVsX2Nsb2NrOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByZWZlcmVu Y2VfZGl2aWRlcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcGl4ZWxfY2xvY2tf cG9zdF9kaXZpZGVyOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBzc19lbmFibGU7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnBfcGl4ZWxfY2xvY2tfcGFyYW1ldGVycyB7CjE0NDc0OiAg ZW51bSBjb250cm9sbGVyX2lkIGNvbnRyb2xsZXJfaWQ7CjE0NDc0OiAgZW51bSBjbG9ja19zb3Vy Y2VfaWQgcGxsX2lkOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWxfdHlw ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgdGFyZ2V0X3BpeGVsX2Nsb2NrXzEw MGh6OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgcmVmZXJlbmNlX2RpdmlkZXI7CjE0NDc0OiAK MTQ0NzQ6ICB1aW50MzJfdCBmZWVkYmFja19kaXZpZGVyOwoxNDQ3NDogCjE0NDc0OiAgdWludDMy X3QgZnJhY3Rpb25hbF9mZWVkYmFja19kaXZpZGVyOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3Qg cGl4ZWxfY2xvY2tfcG9zdF9kaXZpZGVyOwoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3Rf aWQgZW5jb2Rlcl9vYmplY3RfaWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGRm c19ieXBhc3NfZGlzcGxheV9jbG9jazsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gdHJhbnNtaXR0ZXJf Y29sb3JfZGVwdGggY29sb3JfZGVwdGg7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcHJvZ3JhbV9w aXhlbF9jbG9ja19mbGFncyB7CjE0NDc0OiAgIHVpbnQzMl90IEZPUkNFX1BST0dSQU1NSU5HX09G X1BMTDoxOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgVVNFX0VfQ0xPQ0tfQVNf U09VUkNFX0ZPUl9EX0NMT0NLOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgU0VUX0VYVEVS TkFMX1JFRl9ESVZfU1JDOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgU0VUX0RJU1BDTEtf REZTX0JZUEFTUzoxOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IFBST0dSQU1fUEhZX1BMTF9P TkxZOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgU1VQUE9SVF9ZVVZfNDIwOjE7CjE0NDc0 OiAKMTQ0NzQ6ICAgdWludDMyX3QgU0VUX1hUQUxJTl9SRUZfU1JDOjE7CjE0NDc0OiAKMTQ0NzQ6 ICAgdWludDMyX3QgU0VUX0dFTkxPQ0tfUkVGX0RJVl9TUkM6MTsKMTQ0NzQ6ICB9IGZsYWdzOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBicF9kY2VfY2xvY2tfdHlwZSB7CjE0NDc0OiAg RENFQ0xPQ0tfVFlQRV9ESVNQTEFZX0NMT0NLID0gMCwKMTQ0NzQ6ICBEQ0VDTE9DS19UWVBFX0RQ UkVGQ0xLID0gMQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnBfc2V0 X2RjZV9jbG9ja19wYXJhbWV0ZXJzIHsKMTQ0NzQ6ICBlbnVtIGNsb2NrX3NvdXJjZV9pZCBwbGxf aWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCB0YXJnZXRfY2xvY2tfZnJlcXVlbmN5OwoxNDQ3 NDogCjE0NDc0OiAgZW51bSBicF9kY2VfY2xvY2tfdHlwZSBjbG9ja190eXBlOwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHNldF9kY2VfY2xvY2tfZmxhZ3MgewoxNDQ3NDogICB1aW50MzJfdCBVU0Vf R0VORVJJQ0FfQVNfU09VUkNFX0ZPUl9EUFJFRkNMSzoxOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQz Ml90IFVTRV9YVEFMSU5fQVNfU09VUkNFX0ZPUl9EUFJFRkNMSzoxOwoxNDQ3NDogCjE0NDc0OiAg IHVpbnQzMl90IFVTRV9QQ0lFX0FTX1NPVVJDRV9GT1JfRFBSRUZDTEs6MTsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MzJfdCBVU0VfR0VOTE9DS19BU19TT1VSQ0VfRk9SX0RQUkVGQ0xLOjE7CjE0NDc0 OiAgfSBmbGFnczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzcHJlYWRfc3BlY3Ry dW1fZmxhZ3MgewoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgQ0VOVEVSX1NQUkVBRDoxOwoxNDQ3 NDogCjE0NDc0OiAgdWludDMyX3QgRVhURVJOQUxfU1M6MTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQz Ml90IERTX1RZUEU6MTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBicF9zcHJlYWRf c3BlY3RydW1fcGFyYW1ldGVycyB7CjE0NDc0OiAgZW51bSBjbG9ja19zb3VyY2VfaWQgcGxsX2lk OwoxNDQ3NDogIHVpbnQzMl90IHBlcmNlbnRhZ2U7CjE0NDc0OiAgdWludDMyX3QgZHNfZnJhY19h bW91bnQ7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVjdCB7CjE0NDc0OiAg ICB1aW50MzJfdCBzdGVwOwoxNDQ3NDogICAgdWludDMyX3QgZGVsYXk7CjE0NDc0OiAgICB1aW50 MzJfdCByYW5nZTsKMTQ0NzQ6ICAgfSB2ZXIxOwoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAg dWludDMyX3QgZmVlZGJhY2tfYW1vdW50OwoxNDQ3NDogICAgdWludDMyX3QgbmZyYWNfYW1vdW50 OwoxNDQ3NDogICAgdWludDMyX3QgZHNfZnJhY19zaXplOwoxNDQ3NDogICB9IGRzOwoxNDQ3NDog IH07CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX2ZsYWdzIGZsYWdzOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJwX2VuY29kZXJfY2FwX2luZm8gewoxNDQ3 NDogIHVpbnQzMl90IERQX0hCUjJfQ0FQOjE7CjE0NDc0OiAgdWludDMyX3QgRFBfSEJSMl9FTjox OwoxNDQ3NDogIHVpbnQzMl90IERQX0hCUjNfRU46MTsKMTQ0NzQ6ICB1aW50MzJfdCBIRE1JXzZH Ql9FTjoxOwoxNDQ3NDogIHVpbnQzMl90IERQX0lTX1VTQl9DOjE7CjE0NDc0OiAgdWludDMyX3Qg UkVTRVJWRUQ6Mjc7CjE0NDc0OiB9OwoxNDQ3NDogIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaCIgMgoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgY2xvY2tfc291cmNlOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3ByZWFkX3NwZWN0 cnVtX2RhdGEgewoxNDQ3NDogIHVpbnQzMl90IHBlcmNlbnRhZ2U7CjE0NDc0OiAgdWludDMyX3Qg cGVyY2VudGFnZV9kaXZpZGVyOwoxNDQ3NDogIHVpbnQzMl90IGZyZXFfcmFuZ2Vfa2h6OwoxNDQ3 NDogIHVpbnQzMl90IG1vZHVsYXRpb25fZnJlcV9oejsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBz cHJlYWRfc3BlY3RydW1fZmxhZ3MgZmxhZ3M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZGVsdGFfc2lnbWFfZGF0YSB7CjE0NDc0OiAgdWludDMyX3QgZmVlZGJhY2tfYW1vdW50Owox NDQ3NDogIHVpbnQzMl90IG5mcmFjX2Ftb3VudDsKMTQ0NzQ6ICB1aW50MzJfdCBkc19mcmFjX3Np emU7CjE0NDc0OiAgdWludDMyX3QgZHNfZnJhY19hbW91bnQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBpeGVs X2Nsa19mbGFncyB7CjE0NDc0OiAgdWludDMyX3QgRU5BQkxFX1NTOjE7CjE0NDc0OiAgdWludDMy X3QgRElTUExBWV9CTEFOS0VEOjE7CjE0NDc0OiAgdWludDMyX3QgUFJPR1JBTV9QSVhFTF9DTE9D SzoxOwoxNDQ3NDogIHVpbnQzMl90IFBST0dSQU1fSURfQ0xPQ0s6MTsKMTQ0NzQ6ICB1aW50MzJf dCBTVVBQT1JUX1lDQkNSNDIwOjE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjc2RwX3JlZl9jbGtfZHNfcGFyYW1zIHsKMTQ0 NzQ6ICBib29sIGh3X2Rzb19uX2RwX3JlZl9jbGs7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBh dmdfZHBfcmVmX2Nsa19raHo7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBzc19wZXJjZW50YWdl X29uX2RwX3JlZl9jbGs7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHNzX3BlcmNl bnRhZ2VfZGl2aWRlcjsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBp eGVsX2Nsa19wYXJhbXMgewoxNDQ3NDogIHVpbnQzMl90IHJlcXVlc3RlZF9waXhfY2xrXzEwMGh6 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByZXF1ZXN0ZWRfc3ltX2NsazsKMTQ0 NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGRwX3JlZl9jbGs7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qg Z3JhcGhpY3Nfb2JqZWN0X2lkIGVuY29kZXJfb2JqZWN0X2lkOwoxNDQ3NDogCjE0NDc0OiAgZW51 bSBzaWduYWxfdHlwZSBzaWduYWxfdHlwZTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gY29udHJvbGxl cl9pZCBjb250cm9sbGVyX2lkOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19jb2xvcl9kZXB0aCBj b2xvcl9kZXB0aDsKMTQ0NzQ6ICBzdHJ1Y3QgY3NkcF9yZWZfY2xrX2RzX3BhcmFtcyBkZV9zcHJl YWRfcGFyYW1zOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19waXhlbF9lbmNvZGluZyBwaXhlbF9l bmNvZGluZzsKMTQ0NzQ6ICBzdHJ1Y3QgcGl4ZWxfY2xrX2ZsYWdzIGZsYWdzOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBwbGxfc2V0dGluZ3MgewoxNDQ3NDogIHVpbnQzMl90IGFjdHVhbF9waXhfY2xrXzEwMGh6 OwoxNDQ3NDogIHVpbnQzMl90IGFkanVzdGVkX3BpeF9jbGtfMTAwaHo7CjE0NDc0OiAgdWludDMy X3QgY2FsY3VsYXRlZF9waXhfY2xrXzEwMGh6OwoxNDQ3NDogIHVpbnQzMl90IHZjb19mcmVxOwox NDQ3NDogIHVpbnQzMl90IHJlZmVyZW5jZV9mcmVxOwoxNDQ3NDogIHVpbnQzMl90IHJlZmVyZW5j ZV9kaXZpZGVyOwoxNDQ3NDogIHVpbnQzMl90IGZlZWRiYWNrX2RpdmlkZXI7CjE0NDc0OiAgdWlu dDMyX3QgZnJhY3RfZmVlZGJhY2tfZGl2aWRlcjsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhfY2xrX3Bv c3RfZGl2aWRlcjsKMTQ0NzQ6ICB1aW50MzJfdCBzc19wZXJjZW50YWdlOwoxNDQ3NDogIGJvb2wg dXNlX2V4dGVybmFsX2NsazsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjYWxjX3Bs bF9jbG9ja19zb3VyY2VfaW5pdF9kYXRhIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfYmlvcyAqYnA7CjE0 NDc0OiAgdWludDMyX3QgbWluX3BpeF9jbGtfcGxsX3Bvc3RfZGl2aWRlcjsKMTQ0NzQ6ICB1aW50 MzJfdCBtYXhfcGl4X2Nsa19wbGxfcG9zdF9kaXZpZGVyOwoxNDQ3NDogIHVpbnQzMl90IG1pbl9w bGxfcmVmX2RpdmlkZXI7CjE0NDc0OiAgdWludDMyX3QgbWF4X3BsbF9yZWZfZGl2aWRlcjsKMTQ0 NzQ6ICB1aW50MzJfdCBtaW5fb3ZlcnJpZGVfaW5wdXRfcHhsX2Nsa19wbGxfZnJlcV9raHo7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IG1heF9vdmVycmlkZV9pbnB1dF9weGxfY2xr X3BsbF9mcmVxX2toejsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgbnVtX2ZyYWN0 X2ZiX2RpdmlkZXJfZGVjaW1hbF9wb2ludDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdWludDMy X3QgbnVtX2ZyYWN0X2ZiX2RpdmlkZXJfZGVjaW1hbF9wb2ludF9wcmVjaXNpb247CjE0NDc0OiAK MTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgY2FsY19wbGxfY2xvY2tfc291cmNlIHsKMTQ0NzQ6ICB1aW50MzJfdCBy ZWZfZnJlcV9raHo7CjE0NDc0OiAgdWludDMyX3QgbWluX3BpeF9jbG9ja19wbGxfcG9zdF9kaXZp ZGVyOwoxNDQ3NDogIHVpbnQzMl90IG1heF9waXhfY2xvY2tfcGxsX3Bvc3RfZGl2aWRlcjsKMTQ0 NzQ6ICB1aW50MzJfdCBtaW5fcGxsX3JlZl9kaXZpZGVyOwoxNDQ3NDogIHVpbnQzMl90IG1heF9w bGxfcmVmX2RpdmlkZXI7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfdmNvX2toejsKMTQ0 NzQ6ICB1aW50MzJfdCBtaW5fdmNvX2toejsKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fcGxsX2lucHV0 X2ZyZXFfa2h6OwoxNDQ3NDogIHVpbnQzMl90IG1heF9wbGxfaW5wdXRfZnJlcV9raHo7CjE0NDc0 OiAKMTQ0NzQ6ICB1aW50MzJfdCBmcmFjdF9mYl9kaXZpZGVyX2RlY2ltYWxfcG9pbnRzX251bTsK MTQ0NzQ6ICB1aW50MzJfdCBmcmFjdF9mYl9kaXZpZGVyX2ZhY3RvcjsKMTQ0NzQ6ICB1aW50MzJf dCBmcmFjdF9mYl9kaXZpZGVyX3ByZWNpc2lvbjsKMTQ0NzQ6ICB1aW50MzJfdCBmcmFjdF9mYl9k aXZpZGVyX3ByZWNpc2lvbl9mYWN0b3I7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbG9ja19zb3VyY2VfZnVuY3MgewoxNDQ3 NDogIGJvb2wgKCpjc19wb3dlcl9kb3duKSgKMTQ0NzQ6ICAgIHN0cnVjdCBjbG9ja19zb3VyY2Ug Kik7CjE0NDc0OiAgYm9vbCAoKnByb2dyYW1fcGl4X2Nsaykoc3RydWN0IGNsb2NrX3NvdXJjZSAq LAoxNDQ3NDogICAgc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgKiwgc3RydWN0IHBsbF9zZXR0aW5n cyAqKTsKMTQ0NzQ6ICB1aW50MzJfdCAoKmdldF9waXhfY2xrX2RpdmlkZXJzKSgKMTQ0NzQ6ICAg IHN0cnVjdCBjbG9ja19zb3VyY2UgKiwKMTQ0NzQ6ICAgIHN0cnVjdCBwaXhlbF9jbGtfcGFyYW1z ICosCjE0NDc0OiAgICBzdHJ1Y3QgcGxsX3NldHRpbmdzICopOwoxNDQ3NDogIGJvb2wgKCpnZXRf cGl4ZWxfY2xrX2ZyZXF1ZW5jeV8xMDBoeikoCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgY2xvY2tf c291cmNlICpjbG9ja19zb3VyY2UsCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgaW5zdCwKMTQ0NzQ6 ICAgIHVuc2lnbmVkIGludCAqcGl4ZWxfY2xrX2toeik7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgY2xvY2tfc291cmNlIHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgY2xvY2tfc291cmNl X2Z1bmNzICpmdW5jczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIGVu dW0gY2xvY2tfc291cmNlX2lkIGlkOwoxNDQ3NDogIGJvb2wgZHBfY2xrX3NyYzsKMTQ0NzQ6IH07 CjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv aW5jL2h3X3NlcXVlbmNlci5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvdGltaW5nX2dlbmVyYXRvci5oIiAxCjE0NDc0OiAj IDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L3Rp bWluZ19nZW5lcmF0b3IuaCIKMTQ0NzQ6IHN0cnVjdCBkY19iaW9zOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBjcnRjX3Bvc2l0aW9uIHsKMTQ0NzQ6ICBpbnQzMl90IHZlcnRpY2FsX2Nv dW50OwoxNDQ3NDogIGludDMyX3QgaG9yaXpvbnRhbF9jb3VudDsKMTQ0NzQ6ICBpbnQzMl90IG5v bWluYWxfdmNvdW50OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjcF9nc2xfcGFy YW1zIHsKMTQ0NzQ6ICBpbnQgZ3NsX2dyb3VwOwoxNDQ3NDogIGludCBnc2xfbWFzdGVyOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGdzbF9wYXJhbXMgewoxNDQ3NDogIGludCBnc2ww X2VuOwoxNDQ3NDogIGludCBnc2wxX2VuOwoxNDQ3NDogIGludCBnc2wyX2VuOwoxNDQ3NDogIGlu dCBnc2xfbWFzdGVyX2VuOwoxNDQ3NDogIGludCBnc2xfbWFzdGVyX21vZGU7CjE0NDc0OiAgaW50 IG1hc3Rlcl91cGRhdGVfbG9ja19nc2xfZW47CjE0NDc0OiAgaW50IGdzbF93aW5kb3dfc3RhcnRf eDsKMTQ0NzQ6ICBpbnQgZ3NsX3dpbmRvd19lbmRfeDsKMTQ0NzQ6ICBpbnQgZ3NsX3dpbmRvd19z dGFydF95OwoxNDQ3NDogIGludCBnc2xfd2luZG93X2VuZF95OwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHJyX3BhcmFtcyB7CjE0NDc0OiAgdWludDMyX3QgdmVydGlj YWxfdG90YWxfbWluOwoxNDQ3NDogIHVpbnQzMl90IHZlcnRpY2FsX3RvdGFsX21heDsKMTQ0NzQ6 ICB1aW50MzJfdCB2ZXJ0aWNhbF90b3RhbF9taWQ7CjE0NDc0OiAgdWludDMyX3QgdmVydGljYWxf dG90YWxfbWlkX2ZyYW1lX251bTsKMTQ0NzQ6ICBib29sIGltbWVkaWF0ZV9mbGlwOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBjcnRjX3N0YXRl IHsKMTQ0NzQ6ICBDUlRDX1NUQVRFX1ZCTEFOSyA9IDAsCjE0NDc0OiAgQ1JUQ19TVEFURV9WQUNU SVZFCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgdnVwZGF0ZV9rZWVwb3V0X3BhcmFt cyB7CjE0NDc0OiAgaW50IHN0YXJ0X29mZnNldDsKMTQ0NzQ6ICBpbnQgZW5kX29mZnNldDsKMTQ0 NzQ6ICBpbnQgZW5hYmxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNydGNfc3Rl cmVvX2ZsYWdzIHsKMTQ0NzQ6ICB1aW50OF90IFBST0dSQU1fU1RFUkVPIDogMTsKMTQ0NzQ6ICB1 aW50OF90IFBST0dSQU1fUE9MQVJJVFkgOiAxOwoxNDQ3NDogIHVpbnQ4X3QgUklHSFRfRVlFX1BP TEFSSVRZIDogMTsKMTQ0NzQ6ICB1aW50OF90IEZSQU1FX1BBQ0tFRCA6IDE7CjE0NDc0OiAgdWlu dDhfdCBESVNBQkxFX1NURVJFT19EUF9TWU5DIDogMTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gY3JjX3NlbGVjdGlvbiB7CjE0NDc0OiAKMTQ0NzQ6ICBVTklPTl9XSU5ET1dfQV9CID0g MCwKMTQ0NzQ6ICBVTklPTl9XSU5ET1dfQV9OT1RfQiwKMTQ0NzQ6ICBVTklPTl9XSU5ET1dfTk9U X0FfQiwKMTQ0NzQ6ICBVTklPTl9XSU5ET1dfTk9UX0FfTk9UX0IsCjE0NDc0OiAgSU5URVJTRUNU X1dJTkRPV19BX0IsCjE0NDc0OiAgSU5URVJTRUNUX1dJTkRPV19BX05PVF9CLAoxNDQ3NDogIElO VEVSU0VDVF9XSU5ET1dfTk9UX0FfQiwKMTQ0NzQ6ICBJTlRFUlNFQ1RfV0lORE9XX05PVF9BX05P VF9CLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBoX3RpbWluZ19kaXZfbW9kZSB7CjE0 NDc0OiAgSF9USU1JTkdfTk9fRElWLAoxNDQ3NDogIEhfVElNSU5HX0RJVl9CWTIsCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY3JjX3BhcmFtcyB7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 MTZfdCB3aW5kb3dhX3hfc3RhcnQ7CjE0NDc0OiAgdWludDE2X3Qgd2luZG93YV94X2VuZDsKMTQ0 NzQ6ICB1aW50MTZfdCB3aW5kb3dhX3lfc3RhcnQ7CjE0NDc0OiAgdWludDE2X3Qgd2luZG93YV95 X2VuZDsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQxNl90IHdpbmRvd2JfeF9zdGFydDsKMTQ0NzQ6ICB1 aW50MTZfdCB3aW5kb3diX3hfZW5kOwoxNDQ3NDogIHVpbnQxNl90IHdpbmRvd2JfeV9zdGFydDsK MTQ0NzQ6ICB1aW50MTZfdCB3aW5kb3diX3lfZW5kOwoxNDQ3NDogCjE0NDc0OiAgZW51bSBjcmNf c2VsZWN0aW9uIHNlbGVjdGlvbjsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgY29udGludW91c19tb2Rl OwoxNDQ3NDogIGJvb2wgZW5hYmxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRp bWluZ19nZW5lcmF0b3IgewoxNDQ3NDogIGNvbnN0IHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yX2Z1 bmNzICpmdW5jczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfYmlvcyAqYnA7CjE0NDc0OiAgc3RydWN0IGRj X2NvbnRleHQgKmN0eDsKMTQ0NzQ6ICBpbnQgaW5zdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY19jcnRjX3RpbWluZzsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRycl9wYXJhbXM7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRpbWluZ19nZW5lcmF0b3JfZnVuY3Mgewox NDQ3NDogIGJvb2wgKCp2YWxpZGF0ZV90aW1pbmcpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0 ZywKMTQ0NzQ6ICAgICAgICBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZyk7CjE0 NDc0OiAgdm9pZCAoKnByb2dyYW1fdGltaW5nKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcs CjE0NDc0OiAgICAgICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcsCjE0NDc0 OiAgICAgICAgaW50IHZyZWFkeV9vZmZzZXQsCjE0NDc0OiAgICAgICAgaW50IHZzdGFydHVwX3N0 YXJ0LAoxNDQ3NDogICAgICAgIGludCB2dXBkYXRlX29mZnNldCwKMTQ0NzQ6ICAgICAgICBpbnQg dnVwZGF0ZV93aWR0aCwKMTQ0NzQ6ICAgICAgICBjb25zdCBlbnVtIHNpZ25hbF90eXBlIHNpZ25h bCwKMTQ0NzQ6ICAgICAgICBib29sIHVzZV92YmlvcwoxNDQ3NDogICk7CjE0NDc0OiAgdm9pZCAo KnNldHVwX3ZlcnRpY2FsX2ludGVycnVwdDApKAoxNDQ3NDogICAgc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKm9wdGMsCjE0NDc0OiAgICB1aW50MzJfdCBzdGFydF9saW5lLAoxNDQ3NDogICAgdWlu dDMyX3QgZW5kX2xpbmUpOwoxNDQ3NDogIHZvaWQgKCpzZXR1cF92ZXJ0aWNhbF9pbnRlcnJ1cHQx KSgKMTQ0NzQ6ICAgIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICpvcHRjLAoxNDQ3NDogICAgdWlu dDMyX3Qgc3RhcnRfbGluZSk7CjE0NDc0OiAgdm9pZCAoKnNldHVwX3ZlcnRpY2FsX2ludGVycnVw dDIpKAoxNDQ3NDogICAgc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICB1 aW50MzJfdCBzdGFydF9saW5lKTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCplbmFibGVfY3J0Yyko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICBib29sICgqZGlzYWJsZV9jcnRj KShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3NDogIGJvb2wgKCppc19jb3VudGVy X21vdmluZykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lkICgqZ2V0 X3Bvc2l0aW9uKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCjE0NDc0OiAgICAgc3RydWN0 IGNydGNfcG9zaXRpb24gKnBvc2l0aW9uKTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90ICgqZ2V0 X2ZyYW1lX2NvdW50KShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3NDogIHZvaWQg KCpnZXRfc2Nhbm91dHBvcykoCjE0NDc0OiAgIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywK MTQ0NzQ6ICAgdWludDMyX3QgKnZfYmxhbmtfc3RhcnQsCjE0NDc0OiAgIHVpbnQzMl90ICp2X2Js YW5rX2VuZCwKMTQ0NzQ6ICAgdWludDMyX3QgKmhfcG9zaXRpb24sCjE0NDc0OiAgIHVpbnQzMl90 ICp2X3Bvc2l0aW9uKTsKMTQ0NzQ6ICBib29sICgqZ2V0X290Z19hY3RpdmVfc2l6ZSkoc3RydWN0 IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICB1aW50MzJfdCAqb3RnX2FjdGl2ZV93 aWR0aCwKMTQ0NzQ6ICAgIHVpbnQzMl90ICpvdGdfYWN0aXZlX2hlaWdodCk7CjE0NDc0OiAgYm9v bCAoKmlzX21hdGNoaW5nX3RpbWluZykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAoxNDQ3 NDogICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICpvdGdfdGltaW5nKTsKMTQ0NzQ6ICB2 b2lkICgqc2V0X2Vhcmx5X2NvbnRyb2wpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKMTQ0 NzQ6ICAgICAgICAgICB1aW50MzJfdCBlYXJseV9jbnRsKTsKMTQ0NzQ6ICB2b2lkICgqd2FpdF9m b3Jfc3RhdGUpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgICAgICBlbnVt IGNydGNfc3RhdGUgc3RhdGUpOwoxNDQ3NDogIHZvaWQgKCpzZXRfYmxhbmspKHN0cnVjdCB0aW1p bmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgICAgYm9vbCBlbmFibGVfYmxhbmtpbmcpOwoxNDQ3 NDogIGJvb2wgKCppc19ibGFua2VkKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3 NDogIHZvaWQgKCpzZXRfb3ZlcnNjYW5fYmxhbmtfY29sb3IpIChzdHJ1Y3QgdGltaW5nX2dlbmVy YXRvciAqdGcsIGNvbnN0IHN0cnVjdCB0Z19jb2xvciAqY29sb3IpOwoxNDQ3NDogIHZvaWQgKCpz ZXRfYmxhbmtfY29sb3IpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywgY29uc3Qgc3RydWN0 IHRnX2NvbG9yICpjb2xvcik7CjE0NDc0OiAgdm9pZCAoKnNldF9jb2xvcnMpKHN0cnVjdCB0aW1p bmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgICAgIGNvbnN0IHN0cnVjdCB0Z19jb2xvciAqYmxh bmtfY29sb3IsCjE0NDc0OiAgICAgICBjb25zdCBzdHJ1Y3QgdGdfY29sb3IgKm92ZXJzY2FuX2Nv bG9yKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkaXNhYmxlX3ZnYSkoc3RydWN0IHRpbWluZ19n ZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICBib29sICgqZGlkX3RyaWdnZXJlZF9yZXNldF9vY2N1ciko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lkICgqc2V0dXBfZ2xvYmFs X3N3YXBfbG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAoxNDQ3NDogICAgICAgIGNv bnN0IHN0cnVjdCBkY3BfZ3NsX3BhcmFtcyAqZ3NsX3BhcmFtcyk7CjE0NDc0OiAgdm9pZCAoKnVu bG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lkICgqbG9jayko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lkICgqbG9ja19kb3VibGVi dWZmZXJfZGlzYWJsZSkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKMTQ0NzQ6ICB2b2lk ICgqbG9ja19kb3VibGVidWZmZXJfZW5hYmxlKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcp OwoxNDQ3NDogIHZvaWQoKnRyaXBsZWJ1ZmZlcl91bmxvY2spKHN0cnVjdCB0aW1pbmdfZ2VuZXJh dG9yICp0Zyk7CjE0NDc0OiAgdm9pZCgqdHJpcGxlYnVmZmVyX2xvY2spKHN0cnVjdCB0aW1pbmdf Z2VuZXJhdG9yICp0Zyk7CjE0NDc0OiAgdm9pZCAoKmVuYWJsZV9yZXNldF90cmlnZ2VyKShzdHJ1 Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCjE0NDc0OiAgICAgICAgICBpbnQgc291cmNlX3RnX2lu c3QpOwoxNDQ3NDogIHZvaWQgKCplbmFibGVfY3J0Y19yZXNldCkoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnLAoxNDQ3NDogICAgICAgaW50IHNvdXJjZV90Z19pbnN0LAoxNDQ3NDogICAgICAg c3RydWN0IGNydGNfdHJpZ2dlcl9pbmZvICpjcnRjX3RwKTsKMTQ0NzQ6ICB2b2lkICgqZGlzYWJs ZV9yZXNldF90cmlnZ2VyKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3NDogIHZv aWQgKCp0ZWFyX2Rvd25fZ2xvYmFsX3N3YXBfbG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3Ig KnRnKTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX2FkdmFuY2VkX3JlcXVlc3QpKHN0cnVjdCB0aW1p bmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgICAgYm9vbCBlbmFibGUsIGNvbnN0IHN0cnVjdCBk Y19jcnRjX3RpbWluZyAqdGltaW5nKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X2Rycikoc3RydWN0IHRp bWluZ19nZW5lcmF0b3IgKnRnLCBjb25zdCBzdHJ1Y3QgZHJyX3BhcmFtcyAqcGFyYW1zKTsKMTQ0 NzQ6ICB2b2lkICgqc2V0X3N0YXRpY19zY3JlZW5fY29udHJvbCkoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnLAoxNDQ3NDogICAgICAgdWludDMyX3QgZXZlbnRfdHJpZ2dlcnMsCjE0NDc0OiAg ICAgICB1aW50MzJfdCBudW1fZnJhbWVzKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X3Rlc3RfcGF0dGVy bikoCjE0NDc0OiAgIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgZW51bSBj b250cm9sbGVyX2RwX3Rlc3RfcGF0dGVybiB0ZXN0X3BhdHRlcm4sCjE0NDc0OiAgIGVudW0gZGNf Y29sb3JfZGVwdGggY29sb3JfZGVwdGgpOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmFybV92ZXJ0 X2ludHIpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywgdWludDhfdCB3aWR0aCk7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqcHJvZ3JhbV9nbG9iYWxfc3luYykoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnLAoxNDQ3NDogICAgaW50IHZyZWFkeV9vZmZzZXQsCjE0NDc0OiAgICBpbnQgdnN0 YXJ0dXBfc3RhcnQsCjE0NDc0OiAgICBpbnQgdnVwZGF0ZV9vZmZzZXQsCjE0NDc0OiAgICBpbnQg dnVwZGF0ZV93aWR0aCk7CjE0NDc0OiAgdm9pZCAoKmVuYWJsZV9vcHRjX2Nsb2NrKShzdHJ1Y3Qg dGltaW5nX2dlbmVyYXRvciAqdGcsIGJvb2wgZW5hYmxlKTsKMTQ0NzQ6ICB2b2lkICgqcHJvZ3Jh bV9zdGVyZW8pKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKMTQ0NzQ6ICAgY29uc3Qgc3Ry dWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcsIHN0cnVjdCBjcnRjX3N0ZXJlb19mbGFncyAqZmxh Z3MpOwoxNDQ3NDogIGJvb2wgKCppc19zdGVyZW9fbGVmdF9leWUpKHN0cnVjdCB0aW1pbmdfZ2Vu ZXJhdG9yICp0Zyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X2JsYW5rX2RhdGFfZG91Ymxl X2J1ZmZlcikoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCBib29sIGVuYWJsZSk7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqdGdfaW5pdCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsK MTQ0NzQ6ICBib29sICgqaXNfdGdfZW5hYmxlZCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRn KTsKMTQ0NzQ6ICBib29sICgqaXNfb3B0Y191bmRlcmZsb3dfb2NjdXJyZWQpKHN0cnVjdCB0aW1p bmdfZ2VuZXJhdG9yICp0Zyk7CjE0NDc0OiAgdm9pZCAoKmNsZWFyX29wdGNfdW5kZXJmbG93KShz dHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9k d2Jfc291cmNlKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKMTQ0NzQ6ICAgdWludDMy X3QgZHdiX3BpcGVfaW5zdCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZ2V0X29wdGNfc291cmNl KShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKMTQ0NzQ6ICAgIHVpbnQzMl90ICpudW1f b2ZfaW5wdXRfc2VnbWVudHMsCjE0NDc0OiAgICB1aW50MzJfdCAqc2VnMF9zcmNfc2VsLAoxNDQ3 NDogICAgdWludDMyX3QgKnNlZzFfc3JjX3NlbCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCpjb25maWd1cmVfY3JjKShzdHJ1Y3QgdGltaW5n X2dlbmVyYXRvciAqdGcsCjE0NDc0OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGNyY19wYXJhbXMg KnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IGJvb2wgKCpnZXRfY3JjKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCjE0NDc0OiAgICB1 aW50MzJfdCAqcl9jciwgdWludDMyX3QgKmdfeSwgdWludDMyX3QgKmJfY2IpOwoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKnByb2dyYW1fbWFudWFsX3RyaWdnZXIpKHN0cnVjdCB0aW1pbmdfZ2VuZXJh dG9yICpvcHRjKTsKMTQ0NzQ6ICB2b2lkICgqc2V0dXBfbWFudWFsX3RyaWdnZXIpKHN0cnVjdCB0 aW1pbmdfZ2VuZXJhdG9yICpvcHRjKTsKMTQ0NzQ6ICBib29sICgqZ2V0X2h3X3RpbWluZykoc3Ry dWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY3J0Y190aW1p bmcgKmh3X2NydGNfdGltaW5nKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfdnRnX3BhcmFt cykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3Qg ZGNfY3J0Y190aW1pbmcgKmRjX2NydGNfdGltaW5nKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpz ZXRfZHNjX2NvbmZpZykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCjE0NDc0OiAgICAg ICAgICAgZW51bSBvcHRjX2RzY19tb2RlIGRzY19tb2RlLAoxNDQ3NDogICAgICAgICAgIHVpbnQz Ml90IGRzY19ieXRlc19wZXJfcGl4ZWwsCjE0NDc0OiAgICAgICAgICAgdWludDMyX3QgZHNjX3Ns aWNlX3dpZHRoKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X29kbV9ieXBhc3MpKHN0cnVjdCB0aW1pbmdf Z2VuZXJhdG9yICpvcHRjLCBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKmRjX2NydGNfdGlt aW5nKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X29kbV9jb21iaW5lKShzdHJ1Y3QgdGltaW5nX2dlbmVy YXRvciAqb3B0YywgaW50ICpvcHBfaWQsIGludCBvcHBfY250LAoxNDQ3NDogICAgc3RydWN0IGRj X2NydGNfdGltaW5nICp0aW1pbmcpOwoxNDQ3NDogIHZvaWQgKCpzZXRfZ3NsKShzdHJ1Y3QgdGlt aW5nX2dlbmVyYXRvciAqb3B0YywgY29uc3Qgc3RydWN0IGdzbF9wYXJhbXMgKnBhcmFtcyk7CjE0 NDc0OiAgdm9pZCAoKnNldF9nc2xfc291cmNlX3NlbGVjdCkoc3RydWN0IHRpbWluZ19nZW5lcmF0 b3IgKm9wdGMsCjE0NDc0OiAgICBpbnQgZ3JvdXBfaWR4LAoxNDQ3NDogICAgdWludDMyX3QgZ3Ns X3JlYWR5X3NpZ25hbCk7CjE0NDc0OiB9OwoxNDQ3NDogIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9od19zZXF1ZW5jZXIuaCIgMgoxNDQ3NDogCjE0 NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMv aHcvbGlua19lbmNvZGVyLmgiIDEKMTQ0NzQ6ICMgMzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbGlua19lbmNvZGVyLmgiCjE0NDc0OiBzdHJ1Y3Qg ZGNfY29udGV4dDsKMTQ0NzQ6IHN0cnVjdCBlbmNvZGVyX3NldF9kcF9waHlfcGF0dGVybl9wYXJh bTsKMTQ0NzQ6IHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZTsKMTQ0NzQ6 IHN0cnVjdCBkY19saW5rX3NldHRpbmdzOwoxNDQ3NDogc3RydWN0IGxpbmtfdHJhaW5pbmdfc2V0 dGluZ3M7CjE0NDc0OiBzdHJ1Y3QgcGlwZV9jdHg7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBlbmNv ZGVyX2luaXRfZGF0YSB7CjE0NDc0OiAgZW51bSBjaGFubmVsX2lkIGNoYW5uZWw7CjE0NDc0OiAg c3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBjb25uZWN0b3I7CjE0NDc0OiAgZW51bSBocGRfc291 cmNlX2lkIGhwZF9zb3VyY2U7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0 X2lkIGVuY29kZXI7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6ICBlbnVt IHRyYW5zbWl0dGVyIHRyYW5zbWl0dGVyOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGVuY29kZXJfZmVhdHVyZV9zdXBwb3J0IHsKMTQ0NzQ6ICB1bmlvbiB7CjE0NDc0OiAgIHN0cnVj dCB7CjE0NDc0OiAgICB1aW50MzJfdCBJU19IQlIyX0NBUEFCTEU6MTsKMTQ0NzQ6ICAgIHVpbnQz Ml90IElTX0hCUjNfQ0FQQUJMRToxOwoxNDQ3NDogICAgdWludDMyX3QgSVNfVFBTM19DQVBBQkxF OjE7CjE0NDc0OiAgICB1aW50MzJfdCBJU19UUFM0X0NBUEFCTEU6MTsKMTQ0NzQ6ICAgIHVpbnQz Ml90IEhETUlfNkdCX0VOOjE7CjE0NDc0OiAgICB1aW50MzJfdCBEUF9JU19VU0JfQzoxOwoxNDQ3 NDogICB9IGJpdHM7CjE0NDc0OiAgIHVpbnQzMl90IHJhdzsKMTQ0NzQ6ICB9IGZsYWdzOwoxNDQ3 NDogCjE0NDc0OiAgZW51bSBkY19jb2xvcl9kZXB0aCBtYXhfaGRtaV9kZWVwX2NvbG9yOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBtYXhfaGRtaV9waXhlbF9jbG9jazsKMTQ0NzQ6ICBib29sIGhkbWlf eWNiY3I0MjBfc3VwcG9ydGVkOwoxNDQ3NDogIGJvb2wgZHBfeWNiY3I0MjBfc3VwcG9ydGVkOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHBjZF9wc3JfY29uZmlndXJhdGlvbiB7CjE0 NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBFTkFCTEUgOiAxOwoxNDQ3NDog ICB1bnNpZ25lZCBjaGFyIFRSQU5TTUlUVEVSX0FDVElWRV9JTl9QU1IgOiAxOwoxNDQ3NDogICB1 bnNpZ25lZCBjaGFyIENSQ19WRVJJRklDQVRJT04gOiAxOwoxNDQ3NDogICB1bnNpZ25lZCBjaGFy IEZSQU1FX0NBUFRVUkVfSU5ESUNBVElPTiA6IDE7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWduZWQg Y2hhciBMSU5FX0NBUFRVUkVfSU5ESUNBVElPTiA6IDE7CjE0NDc0OiAKMTQ0NzQ6ICAgdW5zaWdu ZWQgY2hhciBJUlFfSFBEX1dJVEhfQ1JDX0VSUk9SIDogMTsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hh ciBSRVNFUlZFRCA6IDI7CjE0NDc0OiAgfSBiaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcmF3 OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gcHNyX2Vycm9yX3N0YXR1cyB7CjE0NDc0 OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdW5zaWduZWQgY2hhciBMSU5LX0NSQ19FUlJPUiA6MTsKMTQ0 NzQ6ICAgdW5zaWduZWQgY2hhciBSRkJfU1RPUkFHRV9FUlJPUiA6MTsKMTQ0NzQ6ICAgdW5zaWdu ZWQgY2hhciBSRVNFUlZFRCA6NjsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdW5zaWduZWQgY2hh ciByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBwc3Jfc2lua19wc3Jfc3RhdHVz IHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgU0lOS19TRUxGX1JFRlJF U0hfU1RBVFVTIDozOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgUkVTRVJWRUQgOjU7CjE0NDc0OiAg fSBiaXRzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGxpbmtfZW5jb2RlciB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGxpbmtfZW5jb2Rl cl9mdW5jcyAqZnVuY3M7CjE0NDc0OiAgaW50MzJfdCBhdXhfY2hhbm5lbF9vZmZzZXQ7CjE0NDc0 OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6ICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0 X2lkIGlkOwoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yOwoxNDQ3 NDogIHVpbnQzMl90IG91dHB1dF9zaWduYWxzOwoxNDQ3NDogIGVudW0gZW5naW5lX2lkIHByZWZl cnJlZF9lbmdpbmU7CjE0NDc0OiAgc3RydWN0IGVuY29kZXJfZmVhdHVyZV9zdXBwb3J0IGZlYXR1 cmVzOwoxNDQ3NDogIGVudW0gdHJhbnNtaXR0ZXIgdHJhbnNtaXR0ZXI7CjE0NDc0OiAgZW51bSBo cGRfc291cmNlX2lkIGhwZF9zb3VyY2U7CjE0NDc0OiAgYm9vbCB1c2JjX2NvbWJvX3BoeTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaW5rX2VuY19zdGF0ZSB7CjE0NDc0OiAKMTQ0 NzQ6ICAgdWludDMyX3QgZHBoeV9mZWNfZW47CjE0NDc0OiAgIHVpbnQzMl90IGRwaHlfZmVjX3Jl YWR5X3NoYWRvdzsKMTQ0NzQ6ICAgdWludDMyX3QgZHBoeV9mZWNfYWN0aXZlX3N0YXR1czsKMTQ0 NzQ6ICAgdWludDMyX3QgZHBfbGlua190cmFpbmluZ19jb21wbGV0ZTsKMTQ0NzQ6IAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxpbmtfZW5jb2Rlcl9mdW5jcyB7CjE0NDc0OiAgdm9p ZCAoKnJlYWRfc3RhdGUpKAoxNDQ3NDogICAgc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLCBzdHJ1 Y3QgbGlua19lbmNfc3RhdGUgKnMpOwoxNDQ3NDogIGJvb2wgKCp2YWxpZGF0ZV9vdXRwdXRfd2l0 aF9zdHJlYW0pKAoxNDQ3NDogICBzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsIGNvbnN0IHN0cnVj dCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAgdm9pZCAoKmh3X2luaXQpKHN0cnVj dCBsaW5rX2VuY29kZXIgKmVuYyk7CjE0NDc0OiAgdm9pZCAoKnNldHVwKShzdHJ1Y3QgbGlua19l bmNvZGVyICplbmMsCjE0NDc0OiAgIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKTsKMTQ0NzQ6ICB2 b2lkICgqZW5hYmxlX3RtZHNfb3V0cHV0KShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCjE0NDc0 OiAgIGVudW0gY2xvY2tfc291cmNlX2lkIGNsb2NrX3NvdXJjZSwKMTQ0NzQ6ICAgZW51bSBkY19j b2xvcl9kZXB0aCBjb2xvcl9kZXB0aCwKMTQ0NzQ6ICAgZW51bSBzaWduYWxfdHlwZSBzaWduYWws CjE0NDc0OiAgIHVpbnQzMl90IHBpeGVsX2Nsb2NrKTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX2Rw X291dHB1dCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3Qg ZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5ncywKMTQ0NzQ6ICAgZW51bSBjbG9ja19zb3Vy Y2VfaWQgY2xvY2tfc291cmNlKTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX2RwX21zdF9vdXRwdXQp KHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX2xpbmtf c2V0dGluZ3MgKmxpbmtfc2V0dGluZ3MsCjE0NDc0OiAgIGVudW0gY2xvY2tfc291cmNlX2lkIGNs b2NrX3NvdXJjZSk7CjE0NDc0OiAgdm9pZCAoKmVuYWJsZV9sdmRzX291dHB1dCkoc3RydWN0IGxp bmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICBlbnVtIGNsb2NrX3NvdXJjZV9pZCBjbG9ja19zb3Vy Y2UsCjE0NDc0OiAgIHVpbnQzMl90IHBpeGVsX2Nsb2NrKTsKMTQ0NzQ6ICB2b2lkICgqZGlzYWJs ZV9vdXRwdXQpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmxpbmtfZW5jLAoxNDQ3NDogICBlbnVtIHNp Z25hbF90eXBlIHNpZ25hbCk7CjE0NDc0OiAgdm9pZCAoKmRwX3NldF9sYW5lX3NldHRpbmdzKShz dHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBsaW5rX3RyYWlu aW5nX3NldHRpbmdzICpsaW5rX3NldHRpbmdzKTsKMTQ0NzQ6ICB2b2lkICgqZHBfc2V0X3BoeV9w YXR0ZXJuKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBl bmNvZGVyX3NldF9kcF9waHlfcGF0dGVybl9wYXJhbSAqcGFyYSk7CjE0NDc0OiAgdm9pZCAoKnVw ZGF0ZV9tc3Rfc3RyZWFtX2FsbG9jYXRpb25fdGFibGUpKAoxNDQ3NDogICBzdHJ1Y3QgbGlua19l bmNvZGVyICplbmMsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2Nh dGlvbl90YWJsZSAqdGFibGUpOwoxNDQ3NDogIHZvaWQgKCpwc3JfcHJvZ3JhbV9kcF9kcGh5X2Zh c3RfdHJhaW5pbmcpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgIGJvb2wgZXhp dF9saW5rX3RyYWluaW5nX3JlcXVpcmVkKTsKMTQ0NzQ6ICB2b2lkICgqcHNyX3Byb2dyYW1fc2Vj b25kYXJ5X3BhY2tldCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICAgIHVuc2ln bmVkIGludCBzZHBfdHJhbnNtaXRfbGluZV9udW1fZGVhZGxpbmUpOwoxNDQ3NDogIHZvaWQgKCpj b25uZWN0X2RpZ19iZV90b19mZSkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICBl bnVtIGVuZ2luZV9pZCBlbmdpbmUsCjE0NDc0OiAgIGJvb2wgY29ubmVjdCk7CjE0NDc0OiAgdm9p ZCAoKmVuYWJsZV9ocGQpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYyk7CjE0NDc0OiAgdm9pZCAo KmRpc2FibGVfaHBkKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMpOwoxNDQ3NDogIGJvb2wgKCpp c19kaWdfZW5hYmxlZCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jKTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgKCpnZXRfZGlnX2Zyb250ZW5kKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMpOwoxNDQ3 NDogIHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgbGlua19lbmNvZGVyICoqZW5jKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCpmZWNfc2V0X2VuYWJsZSkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAox NDQ3NDogICBib29sIGVuYWJsZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZmVjX3NldF9yZWFk eSkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAoxNDQ3NDogICBib29sIHJlYWR5KTsKMTQ0NzQ6 IAoxNDQ3NDogIGJvb2wgKCpmZWNfaXNfYWN0aXZlKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMp OwoxNDQ3NDogIGJvb2wgKCppc19pbl9hbHRfbW9kZSkgKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVu Yyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZ2V0X21heF9saW5rX2NhcCkoc3RydWN0IGxpbmtf ZW5jb2RlciAqZW5jLAoxNDQ3NDogICBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0 aW5ncyk7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHNpZ25hbF90eXBlICgqZ2V0X2RpZ19tb2RlKSgK MTQ0NzQ6ICAgc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jKTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDMz ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3X3NlcXVl bmNlci5oIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY29yZV9zdGF0dXMuaCIgMQoxNDQ3NDogIyAyOSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3N0YXR1cy5oIgoxNDQ3NDogZW51 bSBkY19zdGF0dXMgewoxNDQ3NDogIERDX09LID0gMSwKMTQ0NzQ6IAoxNDQ3NDogIERDX05PX0NP TlRST0xMRVJfUkVTT1VSQ0UgPSAyLAoxNDQ3NDogIERDX05PX1NUUkVBTV9FTkNfUkVTT1VSQ0Ug PSAzLAoxNDQ3NDogIERDX05PX0NMT0NLX1NPVVJDRV9SRVNPVVJDRSA9IDQsCjE0NDc0OiAgRENf RkFJTF9DT05UUk9MTEVSX1ZBTElEQVRFID0gNSwKMTQ0NzQ6ICBEQ19GQUlMX0VOQ19WQUxJREFU RSA9IDYsCjE0NDc0OiAgRENfRkFJTF9BVFRBQ0hfU1VSRkFDRVMgPSA3LAoxNDQ3NDogIERDX0ZB SUxfREVUQUNIX1NVUkZBQ0VTID0gOCwKMTQ0NzQ6ICBEQ19GQUlMX1NVUkZBQ0VfVkFMSURBVEUg PSA5LAoxNDQ3NDogIERDX05PX0RQX0xJTktfQkFORFdJRFRIID0gMTAsCjE0NDc0OiAgRENfRVhD RUVEX0RPTkdMRV9DQVAgPSAxMSwKMTQ0NzQ6ICBEQ19TVVJGQUNFX1BJWEVMX0ZPUk1BVF9VTlNV UFBPUlRFRCA9IDEyLAoxNDQ3NDogIERDX0ZBSUxfQkFORFdJRFRIX1ZBTElEQVRFID0gMTMsCjE0 NDc0OiAgRENfRkFJTF9TQ0FMSU5HID0gMTQsCjE0NDc0OiAgRENfRkFJTF9EUF9MSU5LX1RSQUlO SU5HID0gMTUsCjE0NDc0OiAgRENfRkFJTF9EU0NfVkFMSURBVEUgPSAxNiwKMTQ0NzQ6ICBEQ19O T19EU0NfUkVTT1VSQ0UgPSAxNywKMTQ0NzQ6ICBEQ19GQUlMX1VOU1VQUE9SVEVEXzEgPSAxOCwK MTQ0NzQ6ICBEQ19GQUlMX0NMS19FWENFRURfTUFYID0gMjEsCjE0NDc0OiAgRENfRkFJTF9DTEtf QkVMT1dfTUlOID0gMjIsCjE0NDc0OiAgRENfRkFJTF9DTEtfQkVMT1dfQ0ZHX1JFUVVJUkVEID0g MjMsCjE0NDc0OiAKMTQ0NzQ6ICBEQ19FUlJPUl9VTkVYUEVDVEVEID0gLTEKMTQ0NzQ6IH07CjE0 NDc0OiAjIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L2h3X3NlcXVlbmNlci5oIiAyCjE0NDc0OiAKMTQ0NzQ6IGVudW0gdmxpbmVfc2VsZWN0IHsKMTQ0 NzQ6ICBWTElORTAsCjE0NDc0OiAgVkxJTkUxCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgcGlwZV9jdHg7CjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGU7CjE0NDc0OiBzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXR1czsKMTQ0NzQ6IHN0cnVjdCBkY193cml0ZWJhY2tfaW5mbzsKMTQ0NzQ6IHN0cnVj dCBkY2h1Yl9pbml0X2RhdGE7CjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGljX3NjcmVlbl9wYXJhbXM7 CjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2VfcG9vbDsKMTQ0NzQ6IHN0cnVjdCBkY19waHlfYWRkcl9z cGFjZV9jb25maWc7CjE0NDc0OiBzdHJ1Y3QgZGNfdmlydHVhbF9hZGRyX3NwYWNlX2NvbmZpZzsK MTQ0NzQ6IHN0cnVjdCBkcHA7CjE0NDc0OiBzdHJ1Y3QgZGNlX2h3c2VxOwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgaHdfc2VxdWVuY2VyX2Z1bmNzIHsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCplZHBf cG93ZXJfY29udHJvbCkoc3RydWN0IGRjX2xpbmsgKmxpbmssIGJvb2wgZW5hYmxlKTsKMTQ0NzQ6 ICB2b2lkICgqZWRwX3dhaXRfZm9yX2hwZF9yZWFkeSkoc3RydWN0IGRjX2xpbmsgKmxpbmssIGJv b2wgcG93ZXJfdXApOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaW5pdF9odykoc3Ry dWN0IGRjICpkYyk7CjE0NDc0OiAgdm9pZCAoKmVuYWJsZV9hY2NlbGVyYXRlZF9tb2RlKShzdHJ1 Y3QgZGMgKmRjLAoxNDQ3NDogICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKMTQ0NzQ6ICBl bnVtIGRjX3N0YXR1cyAoKmFwcGx5X2N0eF90b19odykoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAg IHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAgdm9pZCAoKmRpc2FibGVfcGxhbmUp KHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogIHZvaWQg KCphcHBseV9jdHhfZm9yX3N1cmZhY2UpKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBjb25zdCBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgICBpbnQgbnVtX3BsYW5lcywg c3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKMTQ0NzQ6ICB2b2lkICgqcHJvZ3JhbV9mcm9udF9l bmRfZm9yX2N0eCkoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqY29u dGV4dCk7CjE0NDc0OiAgdm9pZCAoKnVwZGF0ZV9wbGFuZV9hZGRyKShjb25zdCBzdHJ1Y3QgZGMg KmRjLAoxNDQ3NDogICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CjE0NDc0OiAgdm9pZCAo KnVwZGF0ZV9kY2h1Yikoc3RydWN0IGRjZV9od3NlcSAqaHdzLAoxNDQ3NDogICAgc3RydWN0IGRj aHViX2luaXRfZGF0YSAqZGhfZGF0YSk7CjE0NDc0OiAgdm9pZCAoKndhaXRfZm9yX21wY2NfZGlz Y29ubmVjdCkoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIHN0cnVjdCByZXNvdXJjZV9wb29sICpy ZXNfcG9vbCwKMTQ0NzQ6ICAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogIHZv aWQgKCpwcm9ncmFtX3RyaXBsZWJ1ZmZlcikoY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAg c3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwgYm9vbCBlbmFibGVUcmlwbGVCdWZmZXIpOwoxNDQ3 NDogIHZvaWQgKCp1cGRhdGVfcGVuZGluZ19zdGF0dXMpKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9j dHgpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqcGlwZV9jb250cm9sX2xvY2tfZ2xv YmFsKShzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlLCBib29s IGxvY2spOwoxNDQ3NDogIHZvaWQgKCpwaXBlX2NvbnRyb2xfbG9jaykoc3RydWN0IGRjICpkYywK MTQ0NzQ6ICAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZSwgYm9vbCBsb2NrKTsKMTQ0NzQ6ICB2b2lk ICgqc2V0X2ZsaXBfY29udHJvbF9nc2wpKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgsCjE0NDc0 OiAgICBib29sIGZsaXBfaW1tZWRpYXRlKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAo KmdldF9wb3NpdGlvbikoc3RydWN0IHBpcGVfY3R4ICoqcGlwZV9jdHgsIGludCBudW1fcGlwZXMs CjE0NDc0OiAgICBzdHJ1Y3QgY3J0Y19wb3NpdGlvbiAqcG9zaXRpb24pOwoxNDQ3NDogIGludCAo KmdldF92dXBkYXRlX29mZnNldF9mcm9tX3ZzeW5jKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4 KTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX3Blcl9mcmFtZV9jcnRjX3Bvc2l0aW9uX3Jlc2V0KShz dHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgaW50IGdyb3VwX3NpemUsIHN0cnVjdCBwaXBlX2N0eCAq Z3JvdXBlZF9waXBlc1tdKTsKMTQ0NzQ6ICB2b2lkICgqZW5hYmxlX3RpbWluZ19zeW5jaHJvbml6 YXRpb24pKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBpbnQgZ3JvdXBfaW5kZXgsIGludCBncm91 cF9zaXplLAoxNDQ3NDogICAgc3RydWN0IHBpcGVfY3R4ICpncm91cGVkX3BpcGVzW10pOwoxNDQ3 NDogIHZvaWQgKCpzZXR1cF9wZXJpb2RpY19pbnRlcnJ1cHQpKHN0cnVjdCBkYyAqZGMsCjE0NDc0 OiAgICBzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4LAoxNDQ3NDogICAgZW51bSB2bGluZV9zZWxl Y3QgdmxpbmUpOwoxNDQ3NDogIHZvaWQgKCpzZXRfZHJyKShzdHJ1Y3QgcGlwZV9jdHggKipwaXBl X2N0eCwgaW50IG51bV9waXBlcywKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCB2bWluLCB1bnNpZ25l ZCBpbnQgdm1heCwKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCB2bWlkLCB1bnNpZ25lZCBpbnQgdm1p ZF9mcmFtZV9udW1iZXIpOwoxNDQ3NDogIHZvaWQgKCpzZXRfc3RhdGljX3NjcmVlbl9jb250cm9s KShzdHJ1Y3QgcGlwZV9jdHggKipwaXBlX2N0eCwKMTQ0NzQ6ICAgIGludCBudW1fcGlwZXMsCjE0 NDc0OiAgICBjb25zdCBzdHJ1Y3QgZGNfc3RhdGljX3NjcmVlbl9wYXJhbXMgKmV2ZW50cyk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCplbmFibGVfc3RyZWFtKShzdHJ1Y3QgcGlwZV9j dHggKnBpcGVfY3R4KTsKMTQ0NzQ6ICB2b2lkICgqZGlzYWJsZV9zdHJlYW0pKHN0cnVjdCBwaXBl X2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogIHZvaWQgKCpibGFua19zdHJlYW0pKHN0cnVjdCBwaXBl X2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogIHZvaWQgKCp1bmJsYW5rX3N0cmVhbSkoc3RydWN0IHBp cGVfY3R4ICpwaXBlX2N0eCwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5r X3NldHRpbmdzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnByZXBhcmVfYmFuZHdp ZHRoKShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogIGJv b2wgKCp1cGRhdGVfYmFuZHdpZHRoKShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3RhdGUgKmNv bnRleHQpOwoxNDQ3NDogIHZvaWQgKCpvcHRpbWl6ZV9iYW5kd2lkdGgpKHN0cnVjdCBkYyAqZGMs IHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQg KCpzZXRfYXZtdXRlKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4LCBib29sIGVuYWJsZSk7CjE0 NDc0OiAgdm9pZCAoKnNlbmRfaW1tZWRpYXRlX3NkcF9tZXNzYWdlKSgKMTQ0NzQ6ICAgIHN0cnVj dCBwaXBlX2N0eCAqcGlwZV9jdHgsCjE0NDc0OiAgICBjb25zdCB1aW50OF90ICpjdXN0b21fc2Rw X21lc3NhZ2UsCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgc2RwX21lc3NhZ2Vfc2l6ZSk7CjE0NDc0 OiAgdm9pZCAoKnVwZGF0ZV9pbmZvX2ZyYW1lKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsK MTQ0NzQ6ICB2b2lkICgqc2V0X2RtZGF0YV9hdHRyaWJ1dGVzKShzdHJ1Y3QgcGlwZV9jdHggKnBp cGUpOwoxNDQ3NDogIHZvaWQgKCpwcm9ncmFtX2RtZGF0YV9lbmdpbmUpKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpOwoxNDQ3NDogIGJvb2wgKCpkbWRhdGFfc3RhdHVzX2RvbmUpKHN0cnVjdCBw aXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X2N1 cnNvcl9wb3NpdGlvbikoc3RydWN0IHBpcGVfY3R4ICpwaXBlKTsKMTQ0NzQ6ICB2b2lkICgqc2V0 X2N1cnNvcl9hdHRyaWJ1dGUpKHN0cnVjdCBwaXBlX2N0eCAqcGlwZSk7CjE0NDc0OiAgdm9pZCAo KnNldF9jdXJzb3Jfc2RyX3doaXRlX2xldmVsKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGUpOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqcHJvZ3JhbV9nYW11dF9yZW1hcCkoc3RydWN0IHBp cGVfY3R4ICpwaXBlX2N0eCk7CjE0NDc0OiAgdm9pZCAoKnByb2dyYW1fb3V0cHV0X2NzYykoc3Ry dWN0IGRjICpkYywgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwKMTQ0NzQ6ICAgIGVudW0gZGNf Y29sb3Jfc3BhY2UgY29sb3JzcGFjZSwKMTQ0NzQ6ICAgIHVpbnQxNl90ICptYXRyaXgsIGludCBv cHBfaWQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgKCppbml0X3N5c19jdHgpKHN0cnVj dCBkY2VfaHdzZXEgKmh3cywKMTQ0NzQ6ICAgIHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBzdHJ1 Y3QgZGNfcGh5X2FkZHJfc3BhY2VfY29uZmlnICpwYV9jb25maWcpOwoxNDQ3NDogIHZvaWQgKCpp bml0X3ZtX2N0eCkoc3RydWN0IGRjZV9od3NlcSAqaHdzLAoxNDQ3NDogICAgc3RydWN0IGRjICpk YywKMTQ0NzQ6ICAgIHN0cnVjdCBkY192aXJ0dWFsX2FkZHJfc3BhY2VfY29uZmlnICp2YV9jb25m aWcsCjE0NDc0OiAgICBpbnQgdm1pZCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCp1 cGRhdGVfd3JpdGViYWNrKShzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgc3RydWN0IGRjX3dyaXRl YmFja19pbmZvICp3Yl9pbmZvLAoxNDQ3NDogICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsK MTQ0NzQ6ICB2b2lkICgqZW5hYmxlX3dyaXRlYmFjaykoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAg IHN0cnVjdCBkY193cml0ZWJhY2tfaW5mbyAqd2JfaW5mbywKMTQ0NzQ6ICAgIHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCk7CjE0NDc0OiAgdm9pZCAoKmRpc2FibGVfd3JpdGViYWNrKShzdHJ1Y3Qg ZGMgKmRjLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IGR3Yl9waXBlX2luc3QpOwoxNDQ3NDogCjE0 NDc0OiAgYm9vbCAoKm1taHViYnViX3dhcm11cCkoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIHVu c2lnbmVkIGludCBudW1fZHdiLAoxNDQ3NDogICAgc3RydWN0IGRjX3dyaXRlYmFja19pbmZvICp3 Yl9pbmZvKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZW51bSBkY19zdGF0dXMgKCpzZXRfY2xv Y2spKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBlbnVtIGRjX2Nsb2NrX3R5cGUgY2xvY2tfdHlw ZSwKMTQ0NzQ6ICAgIHVpbnQzMl90IGNsa19raHosIHVpbnQzMl90IHN0ZXBwaW5nKTsKMTQ0NzQ6 ICB2b2lkICgqZ2V0X2Nsb2NrKShzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRjX2Nsb2NrX3R5cGUgY2xv Y2tfdHlwZSwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19jbG9ja19jb25maWcgKmNsb2NrX2NmZyk7CjE0 NDc0OiAgdm9pZCAoKm9wdGltaXplX3B3cl9zdGF0ZSkoY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0 NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAgdm9pZCAoKmV4aXRfb3B0 aW1pemVkX3B3cl9zdGF0ZSkoY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIHN0cnVjdCBk Y19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCplbmFibGVf YXVkaW9fc3RyZWFtKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsKMTQ0NzQ6ICB2b2lkICgq ZGlzYWJsZV9hdWRpb19zdHJlYW0pKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0dXBfc3RlcmVvKShzdHJ1Y3QgcGlwZV9jdHggKnBp cGVfY3R4LCBzdHJ1Y3QgZGMgKmRjKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmxv Z19od19zdGF0ZSkoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX2xvZ19idWZmZXJfY3R4ICpsb2df Y3R4KTsKMTQ0NzQ6ICB2b2lkICgqZ2V0X2h3X3N0YXRlKShzdHJ1Y3QgZGMgKmRjLCBjaGFyICpw QnVmLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IGJ1ZlNpemUsIHVuc2lnbmVkIGludCBtYXNrKTsK MTQ0NzQ6ICB2b2lkICgqY2xlYXJfc3RhdHVzX2JpdHMpKHN0cnVjdCBkYyAqZGMsIHVuc2lnbmVk IGludCBtYXNrKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB2b2lk IGNvbG9yX3NwYWNlX3RvX2JsYWNrX2NvbG9yKAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkYyAqZGMs CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcnNwYWNlLAoxNDQ3NDogIHN0cnVjdCB0 Z19jb2xvciAqYmxhY2tfY29sb3IpOwoxNDQ3NDogCjE0NDc0OiBib29sIGh3c3Nfd2FpdF9mb3Jf YmxhbmtfY29tcGxldGUoCjE0NDc0OiAgIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7CjE0 NDc0OiAKMTQ0NzQ6IGNvbnN0IHVpbnQxNl90ICpmaW5kX2NvbG9yX21hdHJpeCgKMTQ0NzQ6ICAg ZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcl9zcGFjZSwKMTQ0NzQ6ICAgdWludDMyX3QgKmFycmF5 X3NpemUpOwoxNDQ3NDogIyAzOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RjLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9jb21wcmVzc29yLmgiIDEKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29tcHJlc3Nvci5oIgoxNDQ3NDog IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9z X3BhcnNlcl9pbnRlcmZhY2UuaCIgMQoxNDQ3NDogIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfaW50ZXJmYWNlLmgiCjE0NDc0 OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY19iaW9z X3R5cGVzLmgiIDEKMTQ0NzQ6ICMgNDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kY19iaW9zX3R5cGVzLmgiCjE0NDc0OiBzdHJ1Y3QgZGNfdmJpb3NfZnVuY3Mg ewoxNDQ3NDogIHVpbnQ4X3QgKCpnZXRfY29ubmVjdG9yc19udW1iZXIpKHN0cnVjdCBkY19iaW9z ICpiaW9zKTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgKCpnZXRf Y29ubmVjdG9yX2lkKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIHVp bnQ4X3QgY29ubmVjdG9yX2luZGV4KTsKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKmdldF9zcmNf b2JqKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIHN0cnVjdCBncmFw aGljc19vYmplY3RfaWQgb2JqZWN0X2lkLCB1aW50MzJfdCBpbmRleCwKMTQ0NzQ6ICAgc3RydWN0 IGdyYXBoaWNzX29iamVjdF9pZCAqc3JjX29iamVjdF9pZCk7CjE0NDc0OiAgZW51bSBicF9yZXN1 bHQgKCpnZXRfaTJjX2luZm8pKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqZGNiLAoxNDQ3NDog ICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGlkLAoxNDQ3NDogICBzdHJ1Y3QgZ3JhcGhpY3Nf b2JqZWN0X2kyY19pbmZvICppbmZvKTsKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKmdldF9ocGRf aW5mbykoCjE0NDc0OiAgIHN0cnVjdCBkY19iaW9zICpiaW9zLAoxNDQ3NDogICBzdHJ1Y3QgZ3Jh cGhpY3Nfb2JqZWN0X2lkIGlkLAoxNDQ3NDogICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2hwZF9p bmZvICppbmZvKTsKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKmdldF9kZXZpY2VfdGFnKSgKMTQ0 NzQ6ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIHN0cnVjdCBncmFwaGljc19vYmpl Y3RfaWQgY29ubmVjdG9yX29iamVjdF9pZCwKMTQ0NzQ6ICAgdWludDMyX3QgZGV2aWNlX3RhZ19p bmRleCwKMTQ0NzQ6ICAgc3RydWN0IGNvbm5lY3Rvcl9kZXZpY2VfdGFnX2luZm8gKmluZm8pOwox NDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZ2V0X3NwcmVhZF9zcGVjdHJ1bV9pbmZvKSgKMTQ0NzQ6 ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIGVudW0gYXNfc2lnbmFsX3R5cGUgc2ln bmFsLAoxNDQ3NDogICB1aW50MzJfdCBpbmRleCwKMTQ0NzQ6ICAgc3RydWN0IHNwcmVhZF9zcGVj dHJ1bV9pbmZvICpzc19pbmZvKTsKMTQ0NzQ6ICB1aW50MzJfdCAoKmdldF9zc19lbnRyeV9udW1i ZXIpKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgZW51bSBhc19zaWdu YWxfdHlwZSBzaWduYWwpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZ2V0X2VtYmVkZGVkX3Bh bmVsX2luZm8pKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgc3RydWN0 IGVtYmVkZGVkX3BhbmVsX2luZm8gKmluZm8pOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZ2V0 X2dwaW9fcGluX2luZm8pKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAg dWludDMyX3QgZ3Bpb19pZCwKMTQ0NzQ6ICAgc3RydWN0IGdwaW9fcGluX2luZm8gKmluZm8pOwox NDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZ2V0X2VuY29kZXJfY2FwX2luZm8pKAoxNDQ3NDogICBz dHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBv YmplY3RfaWQsCjE0NDc0OiAgIHN0cnVjdCBicF9lbmNvZGVyX2NhcF9pbmZvICppbmZvKTsKMTQ0 NzQ6IAoxNDQ3NDogIGJvb2wgKCppc19hY2NlbGVyYXRlZF9tb2RlKSgKMTQ0NzQ6ICAgc3RydWN0 IGRjX2Jpb3MgKmJpb3MpOwoxNDQ3NDogIHZvaWQgKCpzZXRfc2NyYXRjaF9jcml0aWNhbF9zdGF0 ZSkoCjE0NDc0OiAgIHN0cnVjdCBkY19iaW9zICpiaW9zLAoxNDQ3NDogICBib29sIHN0YXRlKTsK MTQ0NzQ6ICBib29sICgqaXNfZGV2aWNlX2lkX3N1cHBvcnRlZCkoCjE0NDc0OiAgIHN0cnVjdCBk Y19iaW9zICpiaW9zLAoxNDQ3NDogICBzdHJ1Y3QgZGV2aWNlX2lkIGlkKTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKmVuY29kZXJfY29udHJvbCkoCjE0 NDc0OiAgIHN0cnVjdCBkY19iaW9zICpiaW9zLAoxNDQ3NDogICBzdHJ1Y3QgYnBfZW5jb2Rlcl9j b250cm9sICpjbnRsKTsKMTQ0NzQ6ICBlbnVtIGJwX3Jlc3VsdCAoKnRyYW5zbWl0dGVyX2NvbnRy b2wpKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgc3RydWN0IGJwX3Ry YW5zbWl0dGVyX2NvbnRyb2wgKmNudGwpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqZW5hYmxl X2NydGMpKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgZW51bSBjb250 cm9sbGVyX2lkIGlkLAoxNDQ3NDogICBib29sIGVuYWJsZSk7CjE0NDc0OiAgZW51bSBicF9yZXN1 bHQgKCphZGp1c3RfcGl4ZWxfY2xvY2spKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywK MTQ0NzQ6ICAgc3RydWN0IGJwX2FkanVzdF9waXhlbF9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJh bXMpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqc2V0X3BpeGVsX2Nsb2NrKSgKMTQ0NzQ6ICAg c3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0NDc0OiAgIHN0cnVjdCBicF9waXhlbF9jbG9ja19wYXJh bWV0ZXJzICpicF9wYXJhbXMpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqc2V0X2RjZV9jbG9j aykoCjE0NDc0OiAgIHN0cnVjdCBkY19iaW9zICpiaW9zLAoxNDQ3NDogICBzdHJ1Y3QgYnBfc2V0 X2RjZV9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwoxNDQ3NDogIGVudW0gYnBfcmVzdWx0 ICgqZW5hYmxlX3NwcmVhZF9zcGVjdHJ1bV9vbl9wcGxsKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jp b3MgKmJpb3MsCjE0NDc0OiAgIHN0cnVjdCBicF9zcHJlYWRfc3BlY3RydW1fcGFyYW1ldGVycyAq YnBfcGFyYW1zLAoxNDQ3NDogICBib29sIGVuYWJsZSk7CjE0NDc0OiAgZW51bSBicF9yZXN1bHQg KCpwcm9ncmFtX2NydGNfdGltaW5nKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCjE0 NDc0OiAgIHN0cnVjdCBicF9od19jcnRjX3RpbWluZ19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwox NDQ3NDogIGVudW0gYnBfcmVzdWx0ICgqcHJvZ3JhbV9kaXNwbGF5X2VuZ2luZV9wbGwpKAoxNDQ3 NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6ICAgc3RydWN0IGJwX3BpeGVsX2Nsb2Nr X3BhcmFtZXRlcnMgKmJwX3BhcmFtcyk7CjE0NDc0OiAgZW51bSBicF9yZXN1bHQgKCplbmFibGVf ZGlzcF9wb3dlcl9nYXRpbmcpKAoxNDQ3NDogICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKMTQ0NzQ6 ICAgZW51bSBjb250cm9sbGVyX2lkIGNvbnRyb2xsZXJfaWQsCjE0NDc0OiAgIGVudW0gYnBfcGlw ZV9jb250cm9sX2FjdGlvbiBhY3Rpb24pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmJpb3NfcGFy c2VyX2Rlc3Ryb3kpKHN0cnVjdCBkY19iaW9zICoqZGNiKTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0g YnBfcmVzdWx0ICgqZ2V0X2JvYXJkX2xheW91dF9pbmZvKSgKMTQ0NzQ6ICAgc3RydWN0IGRjX2Jp b3MgKmRjYiwKMTQ0NzQ6ICAgc3RydWN0IGJvYXJkX2xheW91dF9pbmZvICpib2FyZF9sYXlvdXRf aW5mbyk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYmlvc19yZWdpc3RlcnMgewox NDQ3NDogIHVpbnQzMl90IEJJT1NfU0NSQVRDSF8zOwoxNDQ3NDogIHVpbnQzMl90IEJJT1NfU0NS QVRDSF82OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2Jpb3MgewoxNDQ3NDog IGNvbnN0IHN0cnVjdCBkY192Ymlvc19mdW5jcyAqZnVuY3M7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 OF90ICpiaW9zOwoxNDQ3NDogIHVpbnQzMl90IGJpb3Nfc2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogIHVp bnQ4X3QgKmJpb3NfbG9jYWxfaW1hZ2U7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4OwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBiaW9zX3JlZ2lzdGVycyAqcmVnczsKMTQ0NzQ6 ICBzdHJ1Y3QgaW50ZWdyYXRlZF9pbmZvICppbnRlZ3JhdGVkX2luZm87CjE0NDc0OiAgc3RydWN0 IGRjX2Zpcm13YXJlX2luZm8gZndfaW5mbzsKMTQ0NzQ6ICBib29sIGZ3X2luZm9fdmFsaWQ7CjE0 NDc0OiB9OwoxNDQ3NDogIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfaW50ZXJmYWNlLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGJpb3NfcGFyc2VyOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYnBfaW5pdF9kYXRhIHsKMTQ0 NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHVpbnQ4X3QgKmJpb3M7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfYmlvcyAqZGFsX2Jpb3NfcGFyc2VyX2NyZWF0 ZSgKMTQ0NzQ6ICBzdHJ1Y3QgYnBfaW5pdF9kYXRhICppbml0LAoxNDQ3NDogIGVudW0gZGNlX3Zl cnNpb24gZGNlX3ZlcnNpb24pOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRhbF9iaW9zX3BhcnNlcl9k ZXN0cm95KHN0cnVjdCBkY19iaW9zICoqZGNiKTsKMTQ0NzQ6ICMgMzEgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29tcHJlc3Nvci5oIiAyCjE0NDc0OiAK MTQ0NzQ6IGVudW0gZmJjX2NvbXByZXNzX3JhdGlvIHsKMTQ0NzQ6ICBGQkNfQ09NUFJFU1NfUkFU SU9fSU5WQUxJRCA9IDAsCjE0NDc0OiAgRkJDX0NPTVBSRVNTX1JBVElPXzFUTzEgPSAxLAoxNDQ3 NDogIEZCQ19DT01QUkVTU19SQVRJT18yVE8xID0gMiwKMTQ0NzQ6ICBGQkNfQ09NUFJFU1NfUkFU SU9fNFRPMSA9IDQsCjE0NDc0OiAgRkJDX0NPTVBSRVNTX1JBVElPXzhUTzEgPSA4LAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZmJjX3BoeXNpY2FsX2FkZHJlc3MgewoxNDQ3NDogIHN0 cnVjdCB7CjE0NDc0OiAgIHVpbnQzMl90IGxvd19wYXJ0OwoxNDQ3NDogICBpbnQzMl90IGhpZ2hf cGFydDsKMTQ0NzQ6ICB9IGFkZHI7CjE0NDc0OiAgdWludDY0X3QgcXVhZF9wYXJ0OwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNvbXByX2FkZHJfYW5kX3BpdGNoX3BhcmFtcyB7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBpbnN0OwoxNDQ3NDogIHVpbnQzMl90IHNvdXJjZV92aWV3 X3dpZHRoOwoxNDQ3NDogIHVpbnQzMl90IHNvdXJjZV92aWV3X2hlaWdodDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZmJjX2h3X21heF9yZXNvbHV0aW9uX3N1cHBvcnRlZCB7CjE0NDc0 OiAgRkJDX01BWF9YID0gMzg0MCwKMTQ0NzQ6ICBGQkNfTUFYX1kgPSAyNDAwLAoxNDQ3NDogIEZC Q19NQVhfWF9TRyA9IDE5MjAsCjE0NDc0OiAgRkJDX01BWF9ZX1NHID0gMTA4MCwKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjb21wcmVzc29yOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg Y29tcHJlc3Nvcl9mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqcG93ZXJfdXBfZmJjKShz dHJ1Y3QgY29tcHJlc3NvciAqY3ApOwoxNDQ3NDogIHZvaWQgKCplbmFibGVfZmJjKShzdHJ1Y3Qg Y29tcHJlc3NvciAqY3AsCjE0NDc0OiAgIHN0cnVjdCBjb21wcl9hZGRyX2FuZF9waXRjaF9wYXJh bXMgKnBhcmFtcyk7CjE0NDc0OiAgdm9pZCAoKmRpc2FibGVfZmJjKShzdHJ1Y3QgY29tcHJlc3Nv ciAqY3ApOwoxNDQ3NDogIHZvaWQgKCpzZXRfZmJjX2ludmFsaWRhdGlvbl90cmlnZ2Vycykoc3Ry dWN0IGNvbXByZXNzb3IgKmNwLAoxNDQ3NDogICB1aW50MzJfdCBmYmNfdHJpZ2dlcik7CjE0NDc0 OiAgdm9pZCAoKnN1cmZhY2VfYWRkcmVzc19hbmRfcGl0Y2gpKAoxNDQ3NDogICBzdHJ1Y3QgY29t cHJlc3NvciAqY3AsCjE0NDc0OiAgIHN0cnVjdCBjb21wcl9hZGRyX2FuZF9waXRjaF9wYXJhbXMg KnBhcmFtcyk7CjE0NDc0OiAgYm9vbCAoKmlzX2ZiY19lbmFibGVkX2luX2h3KShzdHJ1Y3QgY29t cHJlc3NvciAqY3AsCjE0NDc0OiAgIHVpbnQzMl90ICpmYmNfbWFwcGVkX2NydGNfaWQpOwoxNDQ3 NDogfTsKMTQ0NzQ6IHN0cnVjdCBjb21wcmVzc29yIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgYXR0YWNoZWRfaW5zdDsKMTQ0NzQ6ICBi b29sIGlzX2VuYWJsZWQ7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGNvbXByZXNzb3JfZnVuY3MgKmZ1 bmNzOwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgdWludDMyX3QgcmF3OwoxNDQ3NDogICBzdHJ1 Y3QgewoxNDQ3NDogICAgdWludDMyX3QgRkJDX1NVUFBPUlQ6MTsKMTQ0NzQ6ICAgIHVpbnQzMl90 IEZCX1BPT0w6MTsKMTQ0NzQ6ICAgIHVpbnQzMl90IERZTkFNSUNfQUxMT0M6MTsKMTQ0NzQ6ICAg IHVpbnQzMl90IExQVF9TVVBQT1JUOjE7CjE0NDc0OiAgICB1aW50MzJfdCBMUFRfTUNfQ09ORklH OjE7CjE0NDc0OiAgICB1aW50MzJfdCBEVU1NWV9CQUNLRU5EOjE7CjE0NDc0OiAgICB1aW50MzJf dCBDTEtfR0FUSU5HX0RJU0FCTEVEOjE7CjE0NDc0OiAKMTQ0NzQ6ICAgfSBiaXRzOwoxNDQ3NDog IH0gb3B0aW9uczsKMTQ0NzQ6IAoxNDQ3NDogIHVuaW9uIGZiY19waHlzaWNhbF9hZGRyZXNzIGNv bXByX3N1cmZhY2VfYWRkcmVzczsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGVtYmVkZGVkX3Bh bmVsX2hfc2l6ZTsKMTQ0NzQ6ICB1aW50MzJfdCBlbWJlZGRlZF9wYW5lbF92X3NpemU7CjE0NDc0 OiAgdWludDMyX3QgbWVtb3J5X2J1c193aWR0aDsKMTQ0NzQ6ICB1aW50MzJfdCBiYW5rc19udW07 CjE0NDc0OiAgdWludDMyX3QgcmF3X3NpemU7CjE0NDc0OiAgdWludDMyX3QgY2hhbm5lbF9pbnRl cmxlYXZlX3NpemU7CjE0NDc0OiAgdWludDMyX3QgZHJhbV9jaGFubmVsc19udW07CjE0NDc0OiAK MTQ0NzQ6ICB1aW50MzJfdCBhbGxvY2F0ZWRfc2l6ZTsKMTQ0NzQ6ICB1aW50MzJfdCBwcmVmZXJy ZWRfcmVxdWVzdGVkX3NpemU7CjE0NDc0OiAgdWludDMyX3QgbHB0X2NoYW5uZWxzX251bTsKMTQ0 NzQ6ICBlbnVtIGZiY19jb21wcmVzc19yYXRpbyBtaW5fY29tcHJlc3NfcmF0aW87CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZmJjX2lucHV0X2luZm8gewoxNDQ3NDogIGJvb2wgZHlu YW1pY19mYmNfYnVmZmVyX2FsbG9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCBzb3VyY2Vfdmlld193 aWR0aDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc291cmNlX3ZpZXdfaGVpZ2h0OwoxNDQ3NDogIHVu c2lnbmVkIGludCBudW1fb2ZfYWN0aXZlX3RhcmdldHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBmYmNfcmVxdWVzdGVkX2NvbXByZXNzZWRfc2l6ZSB7CjE0NDc0OiAg dW5zaWduZWQgaW50IHByZWZlcnJlZF9zaXplOwoxNDQ3NDogIHVuc2lnbmVkIGludCBwcmVmZXJy ZWRfc2l6ZV9hbGlnbm1lbnQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1pbl9zaXplOwoxNDQ3NDog IHVuc2lnbmVkIGludCBtaW5fc2l6ZV9hbGlnbm1lbnQ7CjE0NDc0OiAgdW5pb24gewoxNDQ3NDog ICBzdHJ1Y3QgewoxNDQ3NDogCjE0NDc0OiAgICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX211c3Rf YmVfZnJhbWVidWZmZXJfcG9vbCA6IDE7CjE0NDc0OiAKMTQ0NzQ6ICAgIHVuc2lnbmVkIGludCBt aW5fbXVzdF9iZV9mcmFtZWJ1ZmZlcl9wb29sIDogMTsKMTQ0NzQ6ICAgfSBiaXRzOwoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgZmxhZ3M7CjE0NDc0OiAgfTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM5ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgoxNDQ3NDog IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Rt Y3UuaCIgMQoxNDQ3NDogIyAyOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2luYy9ody9kbWN1LmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlc190eXBlcy5oIiAxCjE0NDc0OiAjIDI5ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2RtY3UuaCIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBkbWN1X3N0YXRlIHsKMTQ0NzQ6ICBETUNVX1VOTE9BREVEID0gMCwKMTQ0NzQ6ICBETUNV X0xPQURFRF9VTklOSVRJQUxJWkVEID0gMSwKMTQ0NzQ6ICBETUNVX1JVTk5JTkcgPSAyLAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRtY3VfdmVyc2lvbiB7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGludGVyZmFjZV92ZXJzaW9uOwoxNDQ3NDogIHVuc2lnbmVkIGludCBhYm1fdmVyc2lv bjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcHNyX3ZlcnNpb247CjE0NDc0OiAgdW5zaWduZWQgaW50 IGJ1aWxkX3ZlcnNpb247CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZG1jdSB7CjE0 NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZG1jdV9m dW5jcyAqZnVuY3M7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRtY3Vfc3RhdGUgZG1jdV9zdGF0ZTsK MTQ0NzQ6ICBzdHJ1Y3QgZG1jdV92ZXJzaW9uIGRtY3VfdmVyc2lvbjsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgY2FjaGVkX3dhaXRfbG9vcF9udW1iZXI7CjE0NDc0OiAgdWludDMyX3QgcHNwX3ZlcnNp b247CjE0NDc0OiAgYm9vbCBhdXRvX2xvYWRfZG1jdTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkbWN1X2Z1bmNzIHsKMTQ0NzQ6ICBib29sICgqZG1jdV9pbml0KShzdHJ1Y3QgZG1j dSAqZG1jdSk7CjE0NDc0OiAgYm9vbCAoKmxvYWRfaXJhbSkoc3RydWN0IGRtY3UgKmRtY3UsCjE0 NDc0OiAgICB1bnNpZ25lZCBpbnQgc3RhcnRfb2Zmc2V0LAoxNDQ3NDogICAgY29uc3QgY2hhciAq c3JjLAoxNDQ3NDogICAgdW5zaWduZWQgaW50IGJ5dGVzKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X3Bz cl9lbmFibGUpKHN0cnVjdCBkbWN1ICpkbWN1LCBib29sIGVuYWJsZSwgYm9vbCB3YWl0KTsKMTQ0 NzQ6ICBib29sICgqc2V0dXBfcHNyKShzdHJ1Y3QgZG1jdSAqZG1jdSwKMTQ0NzQ6ICAgIHN0cnVj dCBkY19saW5rICpsaW5rLAoxNDQ3NDogICAgc3RydWN0IHBzcl9jb250ZXh0ICpwc3JfY29udGV4 dCk7CjE0NDc0OiAgdm9pZCAoKmdldF9wc3Jfc3RhdGUpKHN0cnVjdCBkbWN1ICpkbWN1LCB1aW50 MzJfdCAqcHNyX3N0YXRlKTsKMTQ0NzQ6ICB2b2lkICgqc2V0X3Bzcl93YWl0X2xvb3ApKHN0cnVj dCBkbWN1ICpkbWN1LAoxNDQ3NDogICAgdW5zaWduZWQgaW50IHdhaXRfbG9vcF9udW1iZXIpOwox NDQ3NDogIHZvaWQgKCpnZXRfcHNyX3dhaXRfbG9vcCkoc3RydWN0IGRtY3UgKmRtY3UsCjE0NDc0 OiAgICB1bnNpZ25lZCBpbnQgKnBzcl93YWl0X2xvb3BfbnVtYmVyKTsKMTQ0NzQ6ICBib29sICgq aXNfZG1jdV9pbml0aWFsaXplZCkoc3RydWN0IGRtY3UgKmRtY3UpOwoxNDQ3NDogIGJvb2wgKCps b2NrX3BoeSkoc3RydWN0IGRtY3UgKmRtY3UpOwoxNDQ3NDogIGJvb2wgKCp1bmxvY2tfcGh5KShz dHJ1Y3QgZG1jdSAqZG1jdSk7CjE0NDc0OiB9OwoxNDQ3NDogIyA0MCAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfbGliLmgi IDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9kbWwvZGlzcGxheV9tb2RlX2xpYi5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2RtbF9jb21tb25fZGVmcy5oIiAxCjE0NDc0OiAj IDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2RtbF9j b21tb25fZGVmcy5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZG1sL2RjX2ZlYXR1cmVzLmgiIDEKMTQ0NzQ6ICMgMzEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9kZWZzLmgiIDIK MTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Rt bC9kaXNwbGF5X21vZGVfc3RydWN0cy5oIiAxCjE0NDc0OiAjIDMwICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfbW9kZV9zdHJ1Y3RzLmgiCjE0 NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV92b2x0YWdlX3NjYWxpbmdfc3Qgdm9sdGFnZV9z Y2FsaW5nX3N0OwoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlfc29jX2JvdW5kaW5nX2Jv eF9zdCBzb2NfYm91bmRpbmdfYm94X3N0OwoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlf aXBfcGFyYW1zX3N0IGlwX3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBp X2Rpc3BsYXlfcGlwZV9zb3VyY2VfcGFyYW1zX3N0IGRpc3BsYXlfcGlwZV9zb3VyY2VfcGFyYW1z X3N0OwoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9vdXRwdXRfcGFyYW1z X3N0IGRpc3BsYXlfb3V0cHV0X3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3Nf ZHBpX3NjYWxlcl9yYXRpb19kZXB0aF9zdCBzY2FsZXJfcmF0aW9fZGVwdGhfc3Q7CjE0NDc0OiB0 eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9zY2FsZXJfdGFwc19zdCBzY2FsZXJfdGFwc19zdDsKMTQ0 NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCBk aXNwbGF5X3BpcGVfZGVzdF9wYXJhbXNfc3Q7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2Rw aV9kaXNwbGF5X3BpcGVfcGFyYW1zX3N0IGRpc3BsYXlfcGlwZV9wYXJhbXNfc3Q7CjE0NDc0OiB0 eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2Nsb2Nrc19hbmRfY2ZnX3N0IGRpc3BsYXlf Y2xvY2tzX2FuZF9jZmdfc3Q7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdDsKMTQ0NzQ6IHR5 cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9ycV9taXNjX3BhcmFtc19zdCBkaXNw bGF5X2RhdGFfcnFfbWlzY19wYXJhbXNfc3Q7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2Rw aV9kaXNwbGF5X2RhdGFfcnFfc2l6aW5nX3BhcmFtc19zdCBkaXNwbGF5X2RhdGFfcnFfc2l6aW5n X3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9y cV9kbGdfcGFyYW1zX3N0IGRpc3BsYXlfZGF0YV9ycV9kbGdfcGFyYW1zX3N0OwoxNDQ3NDogdHlw ZWRlZiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9kbGdfcGFyYW1zX3N0IGRpc3BsYXlfcnFf ZGxnX3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcnFf c2l6aW5nX3BhcmFtc19zdCBkaXNwbGF5X3JxX3NpemluZ19wYXJhbXNfc3Q7CjE0NDc0OiB0eXBl ZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX21pc2NfcGFyYW1zX3N0IGRpc3BsYXlfcnFf bWlzY19wYXJhbXNfc3Q7CjE0NDc0OiB0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3Jx X3BhcmFtc19zdCBkaXNwbGF5X3JxX3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92 Y3NfZHBpX2Rpc3BsYXlfZGxnX3JlZ3Nfc3QgZGlzcGxheV9kbGdfcmVnc19zdDsKMTQ0NzQ6IHR5 cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfdHR1X3JlZ3Nfc3QgZGlzcGxheV90dHVfcmVn c19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9ycV9yZWdz X3N0IGRpc3BsYXlfZGF0YV9ycV9yZWdzX3N0OwoxNDQ3NDogdHlwZWRlZiBzdHJ1Y3QgX3Zjc19k cGlfZGlzcGxheV9ycV9yZWdzX3N0IGRpc3BsYXlfcnFfcmVnc19zdDsKMTQ0NzQ6IHR5cGVkZWYg c3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGxnX3N5c19wYXJhbXNfc3QgZGlzcGxheV9kbGdfc3lz X3BhcmFtc19zdDsKMTQ0NzQ6IHR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfYXJiX3Bh cmFtc19zdCBkaXNwbGF5X2FyYl9wYXJhbXNfc3Q7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfdmNz X2RwaV92b2x0YWdlX3NjYWxpbmdfc3QgewoxNDQ3NDogIGludCBzdGF0ZTsKMTQ0NzQ6ICBkb3Vi bGUgZHNjY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgZGNmY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUg c29jY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgcGh5Y2xrX2QxOF9taHo7CjE0NDc0OiAgZG91Ymxl IGRyYW1fc3BlZWRfbXRzOwoxNDQ3NDogIGRvdWJsZSBmYWJyaWNjbGtfbWh6OwoxNDQ3NDogIGRv dWJsZSBkaXNwY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgcGh5Y2xrX21oejsKMTQ0NzQ6ICBkb3Vi bGUgZHBwY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgZHRiY2xrX21oejsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBfdmNzX2RwaV9zb2NfYm91bmRpbmdfYm94X3N0IHsKMTQ0NzQ6ICBk b3VibGUgc3JfZXhpdF90aW1lX3VzOwoxNDQ3NDogIGRvdWJsZSBzcl9lbnRlcl9wbHVzX2V4aXRf dGltZV91czsKMTQ0NzQ6ICBkb3VibGUgdXJnZW50X2xhdGVuY3lfdXM7CjE0NDc0OiAgZG91Ymxl IHVyZ2VudF9sYXRlbmN5X3BpeGVsX2RhdGFfb25seV91czsKMTQ0NzQ6ICBkb3VibGUgdXJnZW50 X2xhdGVuY3lfcGl4ZWxfbWl4ZWRfd2l0aF92bV9kYXRhX3VzOwoxNDQ3NDogIGRvdWJsZSB1cmdl bnRfbGF0ZW5jeV92bV9kYXRhX29ubHlfdXM7CjE0NDc0OiAgZG91YmxlIHdyaXRlYmFja19sYXRl bmN5X3VzOwoxNDQ3NDogIGRvdWJsZSBpZGVhbF9kcmFtX2J3X2FmdGVyX3VyZ2VudF9wZXJjZW50 OwoxNDQ3NDogIGRvdWJsZSBwY3RfaWRlYWxfZHJhbV9zZHBfYndfYWZ0ZXJfdXJnZW50X3BpeGVs X29ubHk7CjE0NDc0OiAgZG91YmxlIHBjdF9pZGVhbF9kcmFtX3NkcF9id19hZnRlcl91cmdlbnRf cGl4ZWxfYW5kX3ZtOwoxNDQ3NDogIGRvdWJsZSBwY3RfaWRlYWxfZHJhbV9zZHBfYndfYWZ0ZXJf dXJnZW50X3ZtX29ubHk7CjE0NDc0OiAgZG91YmxlIG1heF9hdmdfc2RwX2J3X3VzZV9ub3JtYWxf cGVyY2VudDsKMTQ0NzQ6ICBkb3VibGUgbWF4X2F2Z19kcmFtX2J3X3VzZV9ub3JtYWxfcGVyY2Vu dDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWF4X3JlcXVlc3Rfc2l6ZV9ieXRlczsKMTQ0NzQ6ICBk b3VibGUgZG93bnNwcmVhZF9wZXJjZW50OwoxNDQ3NDogIGRvdWJsZSBkcmFtX3BhZ2Vfb3Blbl90 aW1lX25zOwoxNDQ3NDogIGRvdWJsZSBkcmFtX3J3X3R1cm5hcm91bmRfdGltZV9uczsKMTQ0NzQ6 ICBkb3VibGUgZHJhbV9yZXR1cm5fYnVmZmVyX3Blcl9jaGFubmVsX2J5dGVzOwoxNDQ3NDogIGRv dWJsZSBkcmFtX2NoYW5uZWxfd2lkdGhfYnl0ZXM7CjE0NDc0OiAgZG91YmxlIGZhYnJpY19kYXRh cGF0aF90b19kY25fZGF0YV9yZXR1cm5fYnl0ZXM7CjE0NDc0OiAgZG91YmxlIGRjbl9kb3duc3By ZWFkX3BlcmNlbnQ7CjE0NDc0OiAgZG91YmxlIGRpc3BjbGtfZHBwY2xrX3Zjb19zcGVlZF9taHo7 CjE0NDc0OiAgZG91YmxlIGRmc192Y29fcGVyaW9kX3BzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB1 cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbF9waXhlbF9vbmx5X2J5dGVzOwox NDQ3NDogIHVuc2lnbmVkIGludCB1cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5l bF9waXhlbF9hbmRfdm1fYnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IHVyZ2VudF9vdXRfb2Zf b3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsX3ZtX29ubHlfYnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQg aW50IHJvdW5kX3RyaXBfcGluZ19sYXRlbmN5X2RjZmNsa19jeWNsZXM7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsX2J5dGVzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBjaGFubmVsX2ludGVybGVhdmVfYnl0ZXM7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IG51bV9iYW5rczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX2NoYW5zOwoxNDQ3NDog IHVuc2lnbmVkIGludCB2bW1fcGFnZV9zaXplX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBo b3N0dm1fbWluX3BhZ2Vfc2l6ZV9ieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZ3B1dm1fbWlu X3BhZ2Vfc2l6ZV9ieXRlczsKMTQ0NzQ6ICBkb3VibGUgZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5j eV91czsKMTQ0NzQ6ICBkb3VibGUgZHVtbXlfcHN0YXRlX2xhdGVuY3lfdXM7CjE0NDc0OiAgZG91 YmxlIHdyaXRlYmFja19kcmFtX2Nsb2NrX2NoYW5nZV9sYXRlbmN5X3VzOwoxNDQ3NDogIHVuc2ln bmVkIGludCByZXR1cm5fYnVzX3dpZHRoX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2b2x0 YWdlX292ZXJyaWRlOwoxNDQ3NDogIGRvdWJsZSB4ZmNfYnVzX3RyYW5zcG9ydF90aW1lX3VzOwox NDQ3NDogIGRvdWJsZSB4ZmNfeGJ1Zl9sYXRlbmN5X3RvbGVyYW5jZV91czsKMTQ0NzQ6ICBpbnQg dXNlX3VyZ2VudF9idXJzdF9idzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX3N0YXRlczsKMTQ0 NzQ6ICBzdHJ1Y3QgX3Zjc19kcGlfdm9sdGFnZV9zY2FsaW5nX3N0IGNsb2NrX2xpbWl0c1s4XTsK MTQ0NzQ6ICBib29sIGRvX3VyZ2VudF9sYXRlbmN5X2FkanVzdG1lbnQ7CjE0NDc0OiAgZG91Ymxl IHVyZ2VudF9sYXRlbmN5X2FkanVzdG1lbnRfZmFicmljX2Nsb2NrX2NvbXBvbmVudF91czsKMTQ0 NzQ6ICBkb3VibGUgdXJnZW50X2xhdGVuY3lfYWRqdXN0bWVudF9mYWJyaWNfY2xvY2tfcmVmZXJl bmNlX21oejsKMTQ0NzQ6ICBib29sIGRpc2FibGVfZHJhbV9jbG9ja19jaGFuZ2VfdmFjdGl2ZV9z dXBwb3J0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF92Y3NfZHBpX2lwX3BhcmFt c19zdCB7CjE0NDc0OiAgYm9vbCBncHV2bV9lbmFibGU7CjE0NDc0OiAgYm9vbCBob3N0dm1fZW5h YmxlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBncHV2bV9tYXhfcGFnZV90YWJsZV9sZXZlbHM7CjE0 NDc0OiAgdW5zaWduZWQgaW50IGhvc3R2bV9tYXhfcGFnZV90YWJsZV9sZXZlbHM7CjE0NDc0OiAg dW5zaWduZWQgaW50IGhvc3R2bV9jYWNoZWRfcGFnZV90YWJsZV9sZXZlbHM7CjE0NDc0OiAgdW5z aWduZWQgaW50IHB0ZV9ncm91cF9zaXplX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtYXhf aW50ZXJfZGNuX3RpbGVfcmVwZWF0ZXJzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fZHNjOwox NDQ3NDogIHVuc2lnbmVkIGludCBvZG1fY2FwYWJsZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcm9i X2J1ZmZlcl9zaXplX2tieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZGV0X2J1ZmZlcl9zaXpl X2tieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHB0ZV9idWZmZXJfc2l6ZV9pbl9wdGVfcmVx c19sdW1hOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX2J1ZmZlcl9zaXplX2luX3B0ZV9yZXFz X2Nocm9tYTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcGRlX3Byb2NfYnVmZmVyX3NpemVfNjRrX3Jl cXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRwcF9vdXRwdXRfYnVmZmVyX3BpeGVsczsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgb3BwX291dHB1dF9idWZmZXJfbGluZXM7CjE0NDc0OiAgdW5zaWduZWQg aW50IHBpeGVsX2NodW5rX3NpemVfa2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcHRlX2Vu YWJsZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcHRlX2NodW5rX3NpemVfa2J5dGVzOwoxNDQ3NDog IHVuc2lnbmVkIGludCBtZXRhX2NodW5rX3NpemVfa2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCB3cml0ZWJhY2tfY2h1bmtfc2l6ZV9rYnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IGxpbmVf YnVmZmVyX3NpemVfYml0czsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWF4X2xpbmVfYnVmZmVyX2xp bmVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfbHVtYV9idWZmZXJfc2l6ZV9rYnl0 ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IHdyaXRlYmFja19jaHJvbWFfYnVmZmVyX3NpemVfa2J5 dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfY2hyb21hX2xpbmVfYnVmZmVyX3dp ZHRoX3BpeGVsczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfaW50ZXJm YWNlX2J1ZmZlcl9zaXplX2tieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX2xp bmVfYnVmZmVyX2J1ZmZlcl9zaXplOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IHdyaXRl YmFja18xMGJwYzQyMF9zdXBwb3J0ZWQ7CjE0NDc0OiAgZG91YmxlIHdyaXRlYmFja19tYXhfaHNj bF9yYXRpbzsKMTQ0NzQ6ICBkb3VibGUgd3JpdGViYWNrX21heF92c2NsX3JhdGlvOwoxNDQ3NDog IGRvdWJsZSB3cml0ZWJhY2tfbWluX2hzY2xfcmF0aW87CjE0NDc0OiAgZG91YmxlIHdyaXRlYmFj a19taW5fdnNjbF9yYXRpbzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX21heF9oc2Ns X3RhcHM7CjE0NDc0OiAgdW5zaWduZWQgaW50IHdyaXRlYmFja19tYXhfdnNjbF90YXBzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfbGluZV9idWZmZXJfbHVtYV9idWZmZXJfc2l6ZTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX2xpbmVfYnVmZmVyX2Nocm9tYV9idWZmZXJf c2l6ZTsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBtYXhfcGFnZV90YWJsZV9sZXZlbHM7 CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF9udW1fZHBwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBt YXhfbnVtX290ZzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY3Vyc29yX2NodW5rX3NpemU7CjE0NDc0 OiAgdW5zaWduZWQgaW50IGN1cnNvcl9idWZmZXJfc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg bWF4X251bV93YjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWF4X2RjaHViX3BzY2xfYndfcGl4X3Bl cl9jbGs7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF9wc2NsX2xiX2J3X3BpeF9wZXJfY2xrOwox NDQ3NDogIHVuc2lnbmVkIGludCBtYXhfbGJfdnNjbF9id19waXhfcGVyX2NsazsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgbWF4X3ZzY2xfaHNjbF9id19waXhfcGVyX2NsazsKMTQ0NzQ6ICBkb3VibGUg bWF4X2hzY2xfcmF0aW87CjE0NDc0OiAgZG91YmxlIG1heF92c2NsX3JhdGlvOwoxNDQ3NDogIHVu c2lnbmVkIGludCBoc2NsX211bHRzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2c2NsX211bHRzOwox NDQ3NDogIHVuc2lnbmVkIGludCBtYXhfaHNjbF90YXBzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBt YXhfdnNjbF90YXBzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB4ZmNfc3VwcG9ydGVkOwoxNDQ3NDog IHVuc2lnbmVkIGludCBwdG9pX3N1cHBvcnRlZDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZ2Z4N19j b21wYXRfdGlsaW5nX3N1cHBvcnRlZDsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgb2RtX2NvbWJpbmVf NHRvMV9zdXBwb3J0ZWQ7CjE0NDc0OiAgYm9vbCBkeW5hbWljX21ldGFkYXRhX3ZtX2VuYWJsZWQ7 CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF9udW1faGRtaV9mcmxfb3V0cHV0czsKMTQ0NzQ6IAox NDQ3NDogIHVuc2lnbmVkIGludCB4ZmNfZmlsbF9jb25zdGFudF9ieXRlczsKMTQ0NzQ6ICBkb3Vi bGUgZGlzcGNsa19yYW1wX21hcmdpbl9wZXJjZW50OwoxNDQ3NDogIGRvdWJsZSB4ZmNfZmlsbF9i d19vdmVyaGVhZF9wZXJjZW50OwoxNDQ3NDogIGRvdWJsZSB1bmRlcnNjYW5fZmFjdG9yOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBtaW5fdmJsYW5rX2xpbmVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBk cHBjbGtfZGVsYXlfc3VidG90YWw7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRpc3BjbGtfZGVsYXlf c3VidG90YWw7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRjZmNsa19jc3RhdGVfbGF0ZW5jeTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgZHBwY2xrX2RlbGF5X3NjbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg ZHBwY2xrX2RlbGF5X3NjbF9sYl9vbmx5OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHBjbGtfZGVs YXlfY252Y19mb3JtYXR0ZXI7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRwcGNsa19kZWxheV9jbnZj X2N1cnNvcjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaXNfbGluZV9idWZmZXJfYnBwX2ZpeGVkOwox NDQ3NDogIHVuc2lnbmVkIGludCBsaW5lX2J1ZmZlcl9maXhlZF9icHA7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGRjY19zdXBwb3J0ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgSXNMaW5l QnVmZmVyQnBwRml4ZWQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IExpbmVCdWZmZXJGaXhlZEJwcDsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2FuX3ZzdGFydHVwX2xpbmVzX2V4Y2VlZF92c3luY19wbHVz X2JhY2tfcG9yY2hfbGluZXNfbWludXNfb25lOwoxNDQ3NDogIHVuc2lnbmVkIGludCBidWdfZm9y Y2luZ19MQ19yZXFfc2FtZV9zaXplX2ZpeGVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IF92Y3NfZHBpX2Rpc3BsYXlfeGZjX3BhcmFtc19zdCB7CjE0NDc0OiAgZG91YmxlIHhmY190 c2x2X3ZyZWFkeV9vZmZzZXRfdXM7CjE0NDc0OiAgZG91YmxlIHhmY190c2x2X3Z1cGRhdGVfd2lk dGhfdXM7CjE0NDc0OiAgZG91YmxlIHhmY190c2x2X3Z1cGRhdGVfb2Zmc2V0X3VzOwoxNDQ3NDog IGludCB4ZmNfc2x2X2NodW5rX3NpemVfYnl0ZXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX3NvdXJjZV9wYXJhbXNfc3QgewoxNDQ3NDogIGlu dCBzb3VyY2VfZm9ybWF0OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgZGNjOwoxNDQ3NDogIHVuc2ln bmVkIGludCBkY2NfcmF0ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZGNjX3JhdGVfY2hyb21hOwox NDQ3NDogIHVuc2lnbmVkIGNoYXIgZGNjX3VzZV9nbG9iYWw7CjE0NDc0OiAgdW5zaWduZWQgY2hh ciB2bTsKMTQ0NzQ6ICBib29sIGdwdXZtOwoxNDQ3NDogIGJvb2wgaG9zdHZtOwoxNDQ3NDogIGJv b2wgZ3B1dm1fbGV2ZWxzX2ZvcmNlX2VuOwoxNDQ3NDogIHVuc2lnbmVkIGludCBncHV2bV9sZXZl bHNfZm9yY2U7CjE0NDc0OiAgYm9vbCBob3N0dm1fbGV2ZWxzX2ZvcmNlX2VuOwoxNDQ3NDogIHVu c2lnbmVkIGludCBob3N0dm1fbGV2ZWxzX2ZvcmNlOwoxNDQ3NDogIGludCBzb3VyY2Vfc2NhbjsK MTQ0NzQ6ICBpbnQgc3dfbW9kZTsKMTQ0NzQ6ICBpbnQgbWFjcm9fdGlsZV9zaXplOwoxNDQ3NDog IHVuc2lnbmVkIGludCBzdXJmYWNlX3dpZHRoX3k7CjE0NDc0OiAgdW5zaWduZWQgaW50IHN1cmZh Y2VfaGVpZ2h0X3k7CjE0NDc0OiAgdW5zaWduZWQgaW50IHN1cmZhY2Vfd2lkdGhfYzsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgc3VyZmFjZV9oZWlnaHRfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdmll d3BvcnRfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZpZXdwb3J0X2hlaWdodDsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgdmlld3BvcnRfeV95OwoxNDQ3NDogIHVuc2lnbmVkIGludCB2aWV3cG9y dF95X2M7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZpZXdwb3J0X3dpZHRoX2M7CjE0NDc0OiAgdW5z aWduZWQgaW50IHZpZXdwb3J0X2hlaWdodF9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkYXRhX3Bp dGNoOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkYXRhX3BpdGNoX2M7CjE0NDc0OiAgdW5zaWduZWQg aW50IG1ldGFfcGl0Y2g7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1ldGFfcGl0Y2hfYzsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgY3VyMF9zcmNfd2lkdGg7CjE0NDc0OiAgaW50IGN1cjBfYnBwOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBjdXIxX3NyY193aWR0aDsKMTQ0NzQ6ICBpbnQgY3VyMV9icHA7CjE0 NDc0OiAgaW50IG51bV9jdXJzb3JzOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgaXNfaHNwbGl0Owox NDQ3NDogIHVuc2lnbmVkIGNoYXIgZHluYW1pY19tZXRhZGF0YV9lbmFibGU7CjE0NDc0OiAgdW5z aWduZWQgaW50IGR5bmFtaWNfbWV0YWRhdGFfbGluZXNfYmVmb3JlX2FjdGl2ZTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgZHluYW1pY19tZXRhZGF0YV94bWl0X2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVk IGludCBoc3BsaXRfZ3JwOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgeGZjX2VuYWJsZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBjaGFyIHhmY19zbGF2ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBjaGFyIGltbWVkaWF0 ZV9mbGlwOwoxNDQ3NDogIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3hmY19wYXJhbXNfc3QgeGZj X3BhcmFtczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgdl90b3RhbF9taW47CjE0NDc0 OiAgdW5zaWduZWQgY2hhciB2X3RvdGFsX21heDsKMTQ0NzQ6IH07CjE0NDc0OiBzdHJ1Y3Qgd3Jp dGViYWNrX3N0IHsKMTQ0NzQ6ICBpbnQgd2Jfc3JjX2hlaWdodDsKMTQ0NzQ6ICBpbnQgd2Jfc3Jj X3dpZHRoOwoxNDQ3NDogIGludCB3Yl9kc3Rfd2lkdGg7CjE0NDc0OiAgaW50IHdiX2RzdF9oZWln aHQ7CjE0NDc0OiAgaW50IHdiX3BpeGVsX2Zvcm1hdDsKMTQ0NzQ6ICBpbnQgd2JfaHRhcHNfbHVt YTsKMTQ0NzQ6ICBpbnQgd2JfdnRhcHNfbHVtYTsKMTQ0NzQ6ICBpbnQgd2JfaHRhcHNfY2hyb21h OwoxNDQ3NDogIGludCB3Yl92dGFwc19jaHJvbWE7CjE0NDc0OiAgZG91YmxlIHdiX2hyYXRpbzsK MTQ0NzQ6ICBkb3VibGUgd2JfdnJhdGlvOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IF92Y3NfZHBpX2Rpc3BsYXlfb3V0cHV0X3BhcmFtc19zdCB7CjE0NDc0OiAgaW50IGRwX2xhbmVz OwoxNDQ3NDogIGRvdWJsZSBvdXRwdXRfYnBwOwoxNDQ3NDogIGludCBkc2NfZW5hYmxlOwoxNDQ3 NDogIGludCB3Yl9lbmFibGU7CjE0NDc0OiAgaW50IG51bV9hY3RpdmVfd2I7CjE0NDc0OiAgaW50 IG91dHB1dF9icGM7CjE0NDc0OiAgaW50IG91dHB1dF90eXBlOwoxNDQ3NDogIGludCBvdXRwdXRf Zm9ybWF0OwoxNDQ3NDogIGludCBkc2Nfc2xpY2VzOwoxNDQ3NDogIGludCBtYXhfYXVkaW9fc2Ft cGxlX3JhdGU7CjE0NDc0OiAgc3RydWN0IHdyaXRlYmFja19zdCB3YjsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBfdmNzX2RwaV9zY2FsZXJfcmF0aW9fZGVwdGhfc3QgewoxNDQ3NDog IGRvdWJsZSBoc2NsX3JhdGlvOwoxNDQ3NDogIGRvdWJsZSB2c2NsX3JhdGlvOwoxNDQ3NDogIGRv dWJsZSBoc2NsX3JhdGlvX2M7CjE0NDc0OiAgZG91YmxlIHZzY2xfcmF0aW9fYzsKMTQ0NzQ6ICBk b3VibGUgdmluaXQ7CjE0NDc0OiAgZG91YmxlIHZpbml0X2M7CjE0NDc0OiAgZG91YmxlIHZpbml0 X2JvdDsKMTQ0NzQ6ICBkb3VibGUgdmluaXRfYm90X2M7CjE0NDc0OiAgaW50IGxiX2RlcHRoOwox NDQ3NDogIGludCBzY2xfZW5hYmxlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF92 Y3NfZHBpX3NjYWxlcl90YXBzX3N0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaHRhcHM7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHZ0YXBzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBodGFwc19jOwoxNDQ3 NDogIHVuc2lnbmVkIGludCB2dGFwc19jOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IF92Y3NfZHBpX2Rpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCB7CjE0NDc0OiAgdW5zaWduZWQg aW50IHJlY291dF93aWR0aDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVjb3V0X2hlaWdodDsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgZnVsbF9yZWNvdXRfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50 IGZ1bGxfcmVjb3V0X2hlaWdodDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgaGJsYW5rX3N0YXJ0Owox NDQ3NDogIHVuc2lnbmVkIGludCBoYmxhbmtfZW5kOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2Ymxh bmtfc3RhcnQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZibGFua19lbmQ7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGh0b3RhbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdnRvdGFsOwoxNDQ3NDogIHVuc2ln bmVkIGludCB2YWN0aXZlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBoYWN0aXZlOwoxNDQ3NDogIHVu c2lnbmVkIGludCB2c3RhcnR1cF9zdGFydDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdnVwZGF0ZV9v ZmZzZXQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZ1cGRhdGVfd2lkdGg7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHZyZWFkeV9vZmZzZXQ7CjE0NDc0OiAgdW5zaWduZWQgY2hhciBpbnRlcmxhY2VkOwox NDQ3NDogIHVuc2lnbmVkIGNoYXIgZW1iZWRkZWQ7CjE0NDc0OiAgZG91YmxlIHBpeGVsX3JhdGVf bWh6OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgc3luY2hyb25pemVkX3ZibGFua19hbGxfcGxhbmVz OwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgb3RnX2luc3Q7CjE0NDc0OiAgdW5zaWduZWQgaW50IG9k bV9jb21iaW5lOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgdXNlX21heGltdW1fdnN0YXJ0dXA7CjE0 NDc0OiAgdW5zaWduZWQgaW50IHZ0b3RhbF9tYXg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHZ0b3Rh bF9taW47CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9w aXBlX3BhcmFtc19zdCB7CjE0NDc0OiAgZGlzcGxheV9waXBlX3NvdXJjZV9wYXJhbXNfc3Qgc3Jj OwoxNDQ3NDogIGRpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCBkZXN0OwoxNDQ3NDogIHNjYWxl cl9yYXRpb19kZXB0aF9zdCBzY2FsZV9yYXRpb19kZXB0aDsKMTQ0NzQ6ICBzY2FsZXJfdGFwc19z dCBzY2FsZV90YXBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF92Y3NfZHBpX2Rp c3BsYXlfY2xvY2tzX2FuZF9jZmdfc3QgewoxNDQ3NDogIGludCB2b2x0YWdlOwoxNDQ3NDogIGRv dWJsZSBkcHBjbGtfbWh6OwoxNDQ3NDogIGRvdWJsZSByZWZjbGtfbWh6OwoxNDQ3NDogIGRvdWJs ZSBkaXNwY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUgZGNmY2xrX21oejsKMTQ0NzQ6ICBkb3VibGUg c29jY2xrX21oejsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfdmNzX2RwaV9kaXNw bGF5X2UyZV9waXBlX3BhcmFtc19zdCB7CjE0NDc0OiAgZGlzcGxheV9waXBlX3BhcmFtc19zdCBw aXBlOwoxNDQ3NDogIGRpc3BsYXlfb3V0cHV0X3BhcmFtc19zdCBkb3V0OwoxNDQ3NDogIGRpc3Bs YXlfY2xvY2tzX2FuZF9jZmdfc3QgY2xrc19jZmc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kYXRhX3JxX21pc2NfcGFyYW1zX3N0IHsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgZnVsbF9zd2F0aF9ieXRlczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3RvcmVk X3N3YXRoX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBibGsyNTZfaGVpZ2h0OwoxNDQ3NDog IHVuc2lnbmVkIGludCBibGsyNTZfd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlcV9oZWln aHQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlcV93aWR0aDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RhdGFfcnFfc2l6aW5nX3BhcmFtc19zdCB7CjE0 NDc0OiAgdW5zaWduZWQgaW50IGNodW5rX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtaW5f Y2h1bmtfYnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1ldGFfY2h1bmtfYnl0ZXM7CjE0NDc0 OiAgdW5zaWduZWQgaW50IG1pbl9tZXRhX2NodW5rX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBtcHRlX2dyb3VwX2J5dGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX2dyb3VwX2J5dGVz OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9y cV9kbGdfcGFyYW1zX3N0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3dhdGhfd2lkdGhfdWI7CjE0 NDc0OiAgdW5zaWduZWQgaW50IHN3YXRoX2hlaWdodDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVx X3Blcl9zd2F0aF91YjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9wdGVfYnl0ZXNfcGVyX2Zy YW1lX3ViOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX3JlcV9wZXJfcm93X3ViOwoxNDQ3NDog IHVuc2lnbmVkIGludCBkcHRlX2dyb3Vwc19wZXJfcm93X3ViOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBkcHRlX3Jvd19oZWlnaHQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRwdGVfYnl0ZXNfcGVyX3Jv d191YjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9jaHVua3NfcGVyX3Jvd191YjsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgbWV0YV9yZXFfcGVyX3Jvd191YjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg bWV0YV9yb3dfaGVpZ2h0OwoxNDQ3NDogIHVuc2lnbmVkIGludCBtZXRhX2J5dGVzX3Blcl9yb3df dWI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9k bGdfcGFyYW1zX3N0IHsKMTQ0NzQ6ICBkaXNwbGF5X2RhdGFfcnFfZGxnX3BhcmFtc19zdCBycV9s OwoxNDQ3NDogIGRpc3BsYXlfZGF0YV9ycV9kbGdfcGFyYW1zX3N0IHJxX2M7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9zaXppbmdfcGFyYW1zX3N0 IHsKMTQ0NzQ6ICBkaXNwbGF5X2RhdGFfcnFfc2l6aW5nX3BhcmFtc19zdCBycV9sOwoxNDQ3NDog IGRpc3BsYXlfZGF0YV9ycV9zaXppbmdfcGFyYW1zX3N0IHJxX2M7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9taXNjX3BhcmFtc19zdCB7CjE0NDc0 OiAgZGlzcGxheV9kYXRhX3JxX21pc2NfcGFyYW1zX3N0IHJxX2w7CjE0NDc0OiAgZGlzcGxheV9k YXRhX3JxX21pc2NfcGFyYW1zX3N0IHJxX2M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9wYXJhbXNfc3QgewoxNDQ3NDogIHVuc2lnbmVkIGNoYXIg eXV2NDIwOwoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgeXV2NDIwXzEwYnBjOwoxNDQ3NDogIHVuc2ln bmVkIGNoYXIgcmdiZV9hbHBoYTsKMTQ0NzQ6ICBkaXNwbGF5X3JxX21pc2NfcGFyYW1zX3N0IG1p c2M7CjE0NDc0OiAgZGlzcGxheV9ycV9zaXppbmdfcGFyYW1zX3N0IHNpemluZzsKMTQ0NzQ6ICBk aXNwbGF5X3JxX2RsZ19wYXJhbXNfc3QgZGxnOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGxnX3JlZ3Nfc3QgewoxNDQ3NDogIHVuc2lnbmVkIGludCBy ZWZjeWNfaF9ibGFua19lbmQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRsZ192YmxhbmtfZW5kOwox NDQ3NDogIHVuc2lnbmVkIGludCBtaW5fZHN0X3lfbmV4dF9zdGFydDsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgcmVmY3ljX3Blcl9odG90YWw7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y194X2Fm dGVyX3NjYWxlcjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0X3lfYWZ0ZXJfc2NhbGVyOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBkc3RfeV9wcmVmZXRjaDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0 X3lfcGVyX3ZtX3ZibGFuazsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0X3lfcGVyX3Jvd192Ymxh bms7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRzdF95X3Blcl92bV9mbGlwOwoxNDQ3NDogIHVuc2ln bmVkIGludCBkc3RfeV9wZXJfcm93X2ZsaXA7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZl9mcmVx X3RvX3BpeF9mcmVxOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2cmF0aW9fcHJlZmV0Y2g7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHZyYXRpb19wcmVmZXRjaF9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCBy ZWZjeWNfcGVyX3B0ZV9ncm91cF92YmxhbmtfbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3lj X3Blcl9wdGVfZ3JvdXBfdmJsYW5rX2M7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJf bWV0YV9jaHVua192YmxhbmtfbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9tZXRh X2NodW5rX3ZibGFua19jOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3B0ZV9ncm91 cF9mbGlwX2w7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcHRlX2dyb3VwX2ZsaXBf YzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9tZXRhX2NodW5rX2ZsaXBfbDsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9tZXRhX2NodW5rX2ZsaXBfYzsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgZHN0X3lfcGVyX3B0ZV9yb3dfbm9tX2w7CjE0NDc0OiAgdW5zaWduZWQgaW50 IGRzdF95X3Blcl9wdGVfcm93X25vbV9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVy X3B0ZV9ncm91cF9ub21fbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9wdGVfZ3Jv dXBfbm9tX2M7CjE0NDc0OiAgdW5zaWduZWQgaW50IGRzdF95X3Blcl9tZXRhX3Jvd19ub21fbDsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0X3lfcGVyX21ldGFfcm93X25vbV9jOwoxNDQ3NDogIHVu c2lnbmVkIGludCByZWZjeWNfcGVyX21ldGFfY2h1bmtfbm9tX2w7CjE0NDc0OiAgdW5zaWduZWQg aW50IHJlZmN5Y19wZXJfbWV0YV9jaHVua19ub21fYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVm Y3ljX3Blcl9saW5lX2RlbGl2ZXJ5X3ByZV9sOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNf cGVyX2xpbmVfZGVsaXZlcnlfcHJlX2M7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJf bGluZV9kZWxpdmVyeV9sOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX2xpbmVfZGVs aXZlcnlfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2h1bmtfaGRsX2FkanVzdF9jdXIwOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBjaHVua19oZGxfYWRqdXN0X2N1cjE7CjE0NDc0OiAgdW5zaWduZWQg aW50IHZyZWFkeV9hZnRlcl92Y291bnQwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkc3RfeV9vZmZz ZXRfY3VyMDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHN0X3lfb2Zmc2V0X2N1cjE7CjE0NDc0OiAg dW5zaWduZWQgaW50IHhmY19yZWdfdHJhbnNmZXJfZGVsYXk7CjE0NDc0OiAgdW5zaWduZWQgaW50 IHhmY19yZWdfcHJlY2hhcmdlX2RlbGF5OwoxNDQ3NDogIHVuc2lnbmVkIGludCB4ZmNfcmVnX3Jl bW90ZV9zdXJmYWNlX2ZsaXBfbGF0ZW5jeTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgeGZjX3JlZ19w cmVmZXRjaF9tYXJnaW47CjE0NDc0OiAgdW5zaWduZWQgaW50IGRzdF95X2RlbHRhX2RycV9saW1p dDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl92bV9ncm91cF92Ymxhbms7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfdm1fZ3JvdXBfZmxpcDsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgcmVmY3ljX3Blcl92bV9yZXFfdmJsYW5rOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZj eWNfcGVyX3ZtX3JlcV9mbGlwOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3ZtX2Rt ZGF0YTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0 dV9yZWdzX3N0IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcW9zX2xldmVsX2xvd193bTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgcW9zX2xldmVsX2hpZ2hfd207CjE0NDc0OiAgdW5zaWduZWQgaW50IG1p bl90dHVfdmJsYW5rOwoxNDQ3NDogIHVuc2lnbmVkIGludCBxb3NfbGV2ZWxfZmxpcDsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9yZXFfZGVsaXZlcnlfbDsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgcmVmY3ljX3Blcl9yZXFfZGVsaXZlcnlfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVm Y3ljX3Blcl9yZXFfZGVsaXZlcnlfY3VyMDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Bl cl9yZXFfZGVsaXZlcnlfY3VyMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9yZXFf ZGVsaXZlcnlfcHJlX2w7CjE0NDc0OiAgdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcmVxX2RlbGl2 ZXJ5X3ByZV9jOwoxNDQ3NDogIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3JlcV9kZWxpdmVyeV9w cmVfY3VyMDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9yZXFfZGVsaXZlcnlfcHJl X2N1cjE7CjE0NDc0OiAgdW5zaWduZWQgaW50IHFvc19sZXZlbF9maXhlZF9sOwoxNDQ3NDogIHVu c2lnbmVkIGludCBxb3NfbGV2ZWxfZml4ZWRfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcW9zX2xl dmVsX2ZpeGVkX2N1cjA7CjE0NDc0OiAgdW5zaWduZWQgaW50IHFvc19sZXZlbF9maXhlZF9jdXIx OwoxNDQ3NDogIHVuc2lnbmVkIGludCBxb3NfcmFtcF9kaXNhYmxlX2w7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHFvc19yYW1wX2Rpc2FibGVfYzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcW9zX3JhbXBf ZGlzYWJsZV9jdXIwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBxb3NfcmFtcF9kaXNhYmxlX2N1cjE7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kYXRhX3Jx X3JlZ3Nfc3QgewoxNDQ3NDogIHVuc2lnbmVkIGludCBjaHVua19zaXplOwoxNDQ3NDogIHVuc2ln bmVkIGludCBtaW5fY2h1bmtfc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9jaHVua19z aXplOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtaW5fbWV0YV9jaHVua19zaXplOwoxNDQ3NDogIHVu c2lnbmVkIGludCBkcHRlX2dyb3VwX3NpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1wdGVfZ3Jv dXBfc2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3dhdGhfaGVpZ2h0OwoxNDQ3NDogIHVuc2ln bmVkIGludCBwdGVfcm93X2hlaWdodF9saW5lYXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9yZWdzX3N0IHsKMTQ0NzQ6ICBkaXNwbGF5X2RhdGFf cnFfcmVnc19zdCBycV9yZWdzX2w7CjE0NDc0OiAgZGlzcGxheV9kYXRhX3JxX3JlZ3Nfc3QgcnFf cmVnc19jOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcnFfZXhwYW5zaW9uX21vZGU7CjE0NDc0OiAg dW5zaWduZWQgaW50IHBycV9leHBhbnNpb25fbW9kZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbXJx X2V4cGFuc2lvbl9tb2RlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBjcnFfZXhwYW5zaW9uX21vZGU7 CjE0NDc0OiAgdW5zaWduZWQgaW50IHBsYW5lMV9iYXNlX2FkZHJlc3M7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kbGdfc3lzX3BhcmFtc19zdCB7CjE0 NDc0OiAgZG91YmxlIHRfbWNsa193bV91czsKMTQ0NzQ6ICBkb3VibGUgdF91cmdfd21fdXM7CjE0 NDc0OiAgZG91YmxlIHRfc3Jfd21fdXM7CjE0NDc0OiAgZG91YmxlIHRfZXh0cmFfdXM7CjE0NDc0 OiAgZG91YmxlIG1lbV90cmlwX3VzOwoxNDQ3NDogIGRvdWJsZSB0X3NyeF9kZWxheV91czsKMTQ0 NzQ6ICBkb3VibGUgZGVlcHNsZWVwX2RjZmNsa19taHo7CjE0NDc0OiAgZG91YmxlIHRvdGFsX2Zs aXBfYnc7CjE0NDc0OiAgdW5zaWduZWQgaW50IHRvdGFsX2ZsaXBfYnl0ZXM7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9hcmJfcGFyYW1zX3N0IHsKMTQ0 NzQ6ICBpbnQgbWF4X3JlcV9vdXRzdGFuZGluZzsKMTQ0NzQ6ICBpbnQgbWluX3JlcV9vdXRzdGFu ZGluZzsKMTQ0NzQ6ICBpbnQgc2F0X2xldmVsX3VzOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzIgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9k ZWZzLmgiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfZW51bXMuaCIgMQoxNDQ3NDogIyAyOCAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfZW51bXMu aCIKMTQ0NzQ6IGVudW0gb3V0cHV0X2VuY29kZXJfY2xhc3MgewoxNDQ3NDogIGRtX2RwID0gMCwg ZG1faGRtaSA9IDEsIGRtX3diID0gMiwgZG1fZWRwCjE0NDc0OiB9OwoxNDQ3NDogZW51bSBvdXRw dXRfZm9ybWF0X2NsYXNzIHsKMTQ0NzQ6ICBkbV80NDQgPSAwLCBkbV80MjAgPSAxLCBkbV9uNDIy LCBkbV9zNDIyCjE0NDc0OiB9OwoxNDQ3NDogZW51bSBzb3VyY2VfZm9ybWF0X2NsYXNzIHsKMTQ0 NzQ6ICBkbV80NDRfMTYgPSAwLAoxNDQ3NDogIGRtXzQ0NF8zMiA9IDEsCjE0NDc0OiAgZG1fNDQ0 XzY0ID0gMiwKMTQ0NzQ6ICBkbV80MjBfOCA9IDMsCjE0NDc0OiAgZG1fNDIwXzEwID0gNCwKMTQ0 NzQ6ICBkbV80MjBfMTIgPSA1LAoxNDQ3NDogIGRtXzQyMl84ID0gNiwKMTQ0NzQ6ICBkbV80MjJf MTAgPSA3LAoxNDQ3NDogIGRtXzQ0NF84ID0gOCwKMTQ0NzQ6ICBkbV9tb25vXzggPSBkbV80NDRf OCwKMTQ0NzQ6ICBkbV9tb25vXzE2ID0gZG1fNDQ0XzE2LAoxNDQ3NDogIGRtX3JnYmUgPSA5LAox NDQ3NDogIGRtX3JnYmVfYWxwaGEgPSAxMCwKMTQ0NzQ6IH07CjE0NDc0OiBlbnVtIG91dHB1dF9i cGNfY2xhc3MgewoxNDQ3NDogIGRtX291dF82ID0gMCwgZG1fb3V0XzggPSAxLCBkbV9vdXRfMTAg PSAyLCBkbV9vdXRfMTIgPSAzLCBkbV9vdXRfMTYgPSA0CjE0NDc0OiB9OwoxNDQ3NDogZW51bSBz Y2FuX2RpcmVjdGlvbl9jbGFzcyB7CjE0NDc0OiAgZG1faG9yeiA9IDAsIGRtX3ZlcnQgPSAxCjE0 NDc0OiB9OwoxNDQ3NDogZW51bSBkbV9zd2l6emxlX21vZGUgewoxNDQ3NDogIGRtX3N3X2xpbmVh ciA9IDAsCjE0NDc0OiAgZG1fc3dfMjU2Yl9zID0gMSwKMTQ0NzQ6ICBkbV9zd18yNTZiX2QgPSAy LAoxNDQ3NDogIGRtX3N3X1NQQVJFXzAgPSAzLAoxNDQ3NDogIGRtX3N3X1NQQVJFXzEgPSA0LAox NDQ3NDogIGRtX3N3XzRrYl9zID0gNSwKMTQ0NzQ6ICBkbV9zd180a2JfZCA9IDYsCjE0NDc0OiAg ZG1fc3dfU1BBUkVfMiA9IDcsCjE0NDc0OiAgZG1fc3dfU1BBUkVfMyA9IDgsCjE0NDc0OiAgZG1f c3dfNjRrYl9zID0gOSwKMTQ0NzQ6ICBkbV9zd182NGtiX2QgPSAxMCwKMTQ0NzQ6ICBkbV9zd19T UEFSRV80ID0gMTEsCjE0NDc0OiAgZG1fc3dfU1BBUkVfNSA9IDEyLAoxNDQ3NDogIGRtX3N3X3Zh cl9zID0gMTMsCjE0NDc0OiAgZG1fc3dfdmFyX2QgPSAxNCwKMTQ0NzQ6ICBkbV9zd19TUEFSRV82 ID0gMTUsCjE0NDc0OiAgZG1fc3dfU1BBUkVfNyA9IDE2LAoxNDQ3NDogIGRtX3N3XzY0a2Jfc190 ID0gMTcsCjE0NDc0OiAgZG1fc3dfNjRrYl9kX3QgPSAxOCwKMTQ0NzQ6ICBkbV9zd19TUEFSRV8x MCA9IDE5LAoxNDQ3NDogIGRtX3N3X1NQQVJFXzExID0gMjAsCjE0NDc0OiAgZG1fc3dfNGtiX3Nf eCA9IDIxLAoxNDQ3NDogIGRtX3N3XzRrYl9kX3ggPSAyMiwKMTQ0NzQ6ICBkbV9zd19TUEFSRV8x MiA9IDIzLAoxNDQ3NDogIGRtX3N3X1NQQVJFXzEzID0gMjQsCjE0NDc0OiAgZG1fc3dfNjRrYl9z X3ggPSAyNSwKMTQ0NzQ6ICBkbV9zd182NGtiX2RfeCA9IDI2LAoxNDQ3NDogIGRtX3N3X1NQQVJF XzE0ID0gMjcsCjE0NDc0OiAgZG1fc3dfU1BBUkVfMTUgPSAyOCwKMTQ0NzQ6ICBkbV9zd192YXJf c194ID0gMjksCjE0NDc0OiAgZG1fc3dfdmFyX2RfeCA9IDMwLAoxNDQ3NDogIGRtX3N3XzY0a2Jf cl94LAoxNDQ3NDogIGRtX3N3X2dmeDdfMmRfdGhpbl9sX3ZwLAoxNDQ3NDogIGRtX3N3X2dmeDdf MmRfdGhpbl9nbCwKMTQ0NzQ6IH07CjE0NDc0OiBlbnVtIGxiX2RlcHRoIHsKMTQ0NzQ6ICBkbV9s Yl8xMCA9IDAsIGRtX2xiXzggPSAxLCBkbV9sYl82ID0gMiwgZG1fbGJfMTIgPSAzLCBkbV9sYl8x NiA9IDQsCjE0NDc0OiAgZG1fbGJfMTkgPSA1CjE0NDc0OiB9OwoxNDQ3NDogZW51bSB2b2x0YWdl X3N0YXRlIHsKMTQ0NzQ6ICBkbV92bWluID0gMCwgZG1fdm1pZCA9IDEsIGRtX3Zub20gPSAyLCBk bV92bWF4ID0gMwoxNDQ3NDogfTsKMTQ0NzQ6IGVudW0gc291cmNlX21hY3JvX3RpbGVfc2l6ZSB7 CjE0NDc0OiAgZG1fNGtfdGlsZSA9IDAsIGRtXzY0a190aWxlID0gMSwgZG1fMjU2a190aWxlID0g MgoxNDQ3NDogfTsKMTQ0NzQ6IGVudW0gY3Vyc29yX2JwcCB7CjE0NDc0OiAgZG1fY3VyXzJiaXQg PSAwLCBkbV9jdXJfMzJiaXQgPSAxLCBkbV9jdXJfNjRiaXQgPSAyCjE0NDc0OiB9OwoxNDQ3NDog ZW51bSBjbG9ja19jaGFuZ2Vfc3VwcG9ydCB7CjE0NDc0OiAgZG1fZHJhbV9jbG9ja19jaGFuZ2Vf dW5pbml0aWFsaXplZCA9IDAsCjE0NDc0OiAgZG1fZHJhbV9jbG9ja19jaGFuZ2VfdmFjdGl2ZSwK MTQ0NzQ6ICBkbV9kcmFtX2Nsb2NrX2NoYW5nZV92YmxhbmssCjE0NDc0OiAgZG1fZHJhbV9jbG9j a19jaGFuZ2VfdW5zdXBwb3J0ZWQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gb3V0cHV0 X3N0YW5kYXJkIHsKMTQ0NzQ6ICBkbV9zdGRfdW5pbml0aWFsaXplZCA9IDAsIGRtX3N0ZF9jdnRy MiwgZG1fc3RkX2N2dAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBtcGNfY29tYmluZV9h ZmZpbml0eSB7CjE0NDc0OiAgZG1fbXBjX2Fsd2F5c193aGVuX3Bvc3NpYmxlLAoxNDQ3NDogIGRt X21wY19yZWR1Y2Vfdm9sdGFnZSwKMTQ0NzQ6ICBkbV9tcGNfcmVkdWNlX3ZvbHRhZ2VfYW5kX2Ns b2NrcywKMTQ0NzQ6ICBkbV9tcGNfbmV2ZXIKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0g UmVxdWVzdFR5cGUgewoxNDQ3NDogIFJFUV8yNTZCeXRlcywgUkVRXzEyOEJ5dGVzTm9uQ29udGln dW91cywgUkVRXzEyOEJ5dGVzQ29udGlndW91cywgUkVRX05BCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIHNlbGZfcmVmcmVzaF9hZmZpbml0eSB7CjE0NDc0OiAgZG1fdHJ5X3RvX2FsbG93 X3NlbGZfcmVmcmVzaF9hbmRfbWNsa19zd2l0Y2gsCjE0NDc0OiAgZG1fYWxsb3dfc2VsZl9yZWZy ZXNoX2FuZF9tY2xrX3N3aXRjaCwKMTQ0NzQ6ICBkbV9hbGxvd19zZWxmX3JlZnJlc2gsCjE0NDc0 OiAgZG1fbmVpdGhlcl9zZWxmX3JlZnJlc2hfbm9yX21jbGtfc3dpdGNoCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGRtX3ZhbGlkYXRpb25fc3RhdHVzIHsKMTQ0NzQ6ICBETUxfVkFMSURB VElPTl9PSywKMTQ0NzQ6ICBETUxfRkFJTF9TQ0FMRV9SQVRJT19UQVAsCjE0NDc0OiAgRE1MX0ZB SUxfU09VUkNFX1BJWEVMX0ZPUk1BVCwKMTQ0NzQ6ICBETUxfRkFJTF9WSUVXUE9SVF9TSVpFLAox NDQ3NDogIERNTF9GQUlMX1RPVEFMX1ZfQUNUSVZFX0JXLAoxNDQ3NDogIERNTF9GQUlMX0RJT19T VVBQT1JULAoxNDQ3NDogIERNTF9GQUlMX05PVF9FTk9VR0hfRFNDLAoxNDQ3NDogIERNTF9GQUlM X0RTQ19DTEtfUkVRVUlSRUQsCjE0NDc0OiAgRE1MX0ZBSUxfRFNDX1ZBTElEQVRJT05fRkFJTFVS RSwKMTQ0NzQ6ICBETUxfRkFJTF9VUkdFTlRfTEFURU5DWSwKMTQ0NzQ6ICBETUxfRkFJTF9SRU9S REVSSU5HX0JVRkZFUiwKMTQ0NzQ6ICBETUxfRkFJTF9ESVNQQ0xLX0RQUENMSywKMTQ0NzQ6ICBE TUxfRkFJTF9UT1RBTF9BVkFJTEFCTEVfUElQRVMsCjE0NDc0OiAgRE1MX0ZBSUxfTlVNX09URywK MTQ0NzQ6ICBETUxfRkFJTF9XUklURUJBQ0tfTU9ERSwKMTQ0NzQ6ICBETUxfRkFJTF9XUklURUJB Q0tfTEFURU5DWSwKMTQ0NzQ6ICBETUxfRkFJTF9XUklURUJBQ0tfU0NBTEVfUkFUSU9fVEFQLAox NDQ3NDogIERNTF9GQUlMX0NVUlNPUl9TVVBQT1JULAoxNDQ3NDogIERNTF9GQUlMX1BJVENIX1NV UFBPUlQsCjE0NDc0OiAgRE1MX0ZBSUxfUFRFX0JVRkZFUl9TSVpFLAoxNDQ3NDogIERNTF9GQUlM X0hPU1RfVk1fSU1NRURJQVRFX0ZMSVAsCjE0NDc0OiAgRE1MX0ZBSUxfRFNDX0lOUFVUX0JQQywK MTQ0NzQ6ICBETUxfRkFJTF9QUkVGRVRDSF9TVVBQT1JULAoxNDQ3NDogIERNTF9GQUlMX1ZfUkFU SU9fUFJFRkVUQ0gsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHdyaXRlYmFja19jb25m aWcgewoxNDQ3NDogIGRtX25vcm1hbCwKMTQ0NzQ6ICBkbV93aG9sZV9idWZmZXJfZm9yX3Npbmds ZV9zdHJlYW1fbm9faW50ZXJsZWF2ZSwKMTQ0NzQ6ICBkbV93aG9sZV9idWZmZXJfZm9yX3Npbmds ZV9zdHJlYW1faW50ZXJsZWF2ZSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gb2RtX2Nv bWJpbmVfbW9kZSB7CjE0NDc0OiAgZG1fb2RtX2NvbWJpbmVfbW9kZV9kaXNhYmxlZCwKMTQ0NzQ6 ICBkbV9vZG1fY29tYmluZV9tb2RlXzJ0bzEsCjE0NDc0OiAgZG1fb2RtX2NvbWJpbmVfbW9kZV80 dG8xLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBvZG1fY29tYmluZV9wb2xpY3kgewox NDQ3NDogIGRtX29kbV9jb21iaW5lX3BvbGljeV9kYWwsCjE0NDc0OiAgZG1fb2RtX2NvbWJpbmVf cG9saWN5X25vbmUsCjE0NDc0OiAgZG1fb2RtX2NvbWJpbmVfcG9saWN5XzJ0bzEsCjE0NDc0OiAg ZG1fb2RtX2NvbWJpbmVfcG9saWN5XzR0bzEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVt IGltbWVkaWF0ZV9mbGlwX3JlcXVpcmVtZW50IHsKMTQ0NzQ6ICBkbV9pbW1lZGlhdGVfZmxpcF9u b3RfcmVxdWlyZWQsCjE0NDc0OiAgZG1faW1tZWRpYXRlX2ZsaXBfcmVxdWlyZWQsCjE0NDc0OiB9 OwoxNDQ3NDogIyAzMyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RtbC9kbWxfY29tbW9uX2RlZnMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGRvdWJsZSBk bWxfcm91bmQoZG91YmxlIGEpOwoxNDQ3NDogIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfbGliLmgiIDIKMTQ0NzQ6ICMgMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21v ZGVfdmJhLmgiIDEKMTQ0NzQ6ICMgMzIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX3ZiYS5oIgoxNDQ3NDogc3RydWN0IGRpc3BsYXlf bW9kZV9saWI7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgTW9kZVN1cHBvcnRBbmRTeXN0ZW1Db25maWd1 cmF0aW9uKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYik7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBkb3VibGUgZ2V0X2Nsa19kY2ZfZGVlcHNsZWVwKHN0cnVjdCBkaXNw bGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3Qg KnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfd21fdXJn ZW50KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVf cGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRv dWJsZSBnZXRfd21fbWVtb3J5X3RyaXAoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGli LCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBu dW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF93bV93cml0ZWJhY2tfdXJnZW50KHN0cnVjdCBk aXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNf c3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfd21f c3R1dHRlcl9leGl0KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlz cGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsK MTQ0NzQ6IGRvdWJsZSBnZXRfd21fc3R1dHRlcl9lbnRlcl9leGl0KHN0cnVjdCBkaXNwbGF5X21v ZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVz LCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfd21fZHJhbV9jbG9j a19jaGFuZ2Uoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3 NDogZG91YmxlIGdldF93bV93cml0ZWJhY2tfZHJhbV9jbG9ja19jaGFuZ2Uoc3RydWN0IGRpc3Bs YXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAq cGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF93bV94ZmNf dW5kZXJmbG93KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxh eV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0 NzQ6IGRvdWJsZSBnZXRfc3R1dHRlcl9lZmZpY2llbmN5X25vX3ZibGFuayhzdHJ1Y3QgZGlzcGxh eV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpw aXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CjE0NDc0OiBkb3VibGUgZ2V0X3N0dXR0ZXJf ZWZmaWNpZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3Bs YXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CjE0 NDc0OiBkb3VibGUgZ2V0X3VyZ2VudF9sYXRlbmN5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICpt b2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25l ZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfdXJnZW50X2V4dHJhX2xhdGVuY3ko c3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBl X3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91Ymxl IGdldF9ub251cmdlbnRfbGF0ZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIs IGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51 bV9waXBlcyk7CjE0NDc0OiBkb3VibGUgZ2V0X2RyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3koc3Ry dWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3Bh cmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdl dF9kaXNwY2xrX2NhbGN1bGF0ZWQoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBj b25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1f cGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF90b3RhbF9kYXRhX3JlYWRfYncoc3RydWN0IGRpc3Bs YXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAq cGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF9yZXR1cm5f Yncoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9w aXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91 YmxlIGdldF90Y2FsYyhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRp c3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7 CjE0NDc0OiBkb3VibGUgZ2V0X2ZyYWN0aW9uX29mX3VyZ2VudF9iYW5kd2lkdGgoc3RydWN0IGRp c3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19z dCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoxNDQ3NDogZG91YmxlIGdldF9mcmFj dGlvbl9vZl91cmdlbnRfYmFuZHdpZHRoX2ltbV9mbGlwKHN0cnVjdCBkaXNwbGF5X21vZGVfbGli ICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNp Z25lZCBpbnQgbnVtX3BpcGVzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGRvdWJs ZSBnZXRfZHNjX2RlbGF5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3Qg ZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz LCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X2RwcGNsa19jYWxj dWxhdGVkKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25l ZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X2RzY2Nsa19jYWxjdWxhdGVkKHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9w YXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hp Y2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X21pbl90dHVfdmJsYW5rKHN0cnVjdCBkaXNwbGF5 X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBp cGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0 NDc0OiBkb3VibGUgZ2V0X3ZyYXRpb19wcmVmZXRjaF9sKHN0cnVjdCBkaXNwbGF5X21vZGVfbGli ICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNp Z25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3Vi bGUgZ2V0X3ZyYXRpb19wcmVmZXRjaF9jKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xp YiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQg bnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X2Rz dF94X2FmdGVyX3NjYWxlcihzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0 IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBl cywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF9kc3RfeV9hZnRl cl9zY2FsZXIoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2ln bmVkIGludCB3aGljaF9waXBlKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfZHN0X3lfcGVyX3ZtX3ZibGFu ayhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3Bp cGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50 IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF9kc3RfeV9wZXJfcm93X3ZibGFuayhzdHJ1 Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFy YW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNo X3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF9kc3RfeV9wcmVmZXRjaChzdHJ1Y3QgZGlzcGxheV9t b2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBl cywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoxNDQ3 NDogZG91YmxlIGdldF9kc3RfeV9wZXJfdm1fZmxpcChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAq bW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWdu ZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91Ymxl IGdldF9kc3RfeV9wZXJfcm93X2ZsaXAoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGli LCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBu dW1fcGlwZXMsIHVuc2lnbmVkIGludCB3aGljaF9waXBlKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfeGZj X3RyYW5zZmVyX2RlbGF5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3Qg ZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz LCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X3hmY19wcmVjaGFy Z2VfZGVsYXkoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2ln bmVkIGludCB3aGljaF9waXBlKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfeGZjX3JlbW90ZV9zdXJmYWNl X2ZsaXBfbGF0ZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRp c3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywg dW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF94ZmNfcHJlZmV0Y2hf bWFyZ2luKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25l ZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X3JlZmN5Y19wZXJfdm1fZ3JvdXBf dmJsYW5rKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzLCB1bnNpZ25l ZCBpbnQgd2hpY2hfcGlwZSk7CjE0NDc0OiBkb3VibGUgZ2V0X3JlZmN5Y19wZXJfdm1fZ3JvdXBf ZmxpcChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJl X3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQg aW50IHdoaWNoX3BpcGUpOwoxNDQ3NDogZG91YmxlIGdldF9yZWZjeWNfcGVyX3ZtX3JlcV92Ymxh bmsoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9w aXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGlu dCB3aGljaF9waXBlKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfcmVmY3ljX3Blcl92bV9yZXFfZmxpcChz dHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVf cGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdo aWNoX3BpcGUpOwoxNDQ3NDogCjE0NDc0OiB1bnNpZ25lZCBpbnQgZ2V0X3ZzdGFydHVwX2NhbGN1 bGF0ZWQoCjE0NDc0OiAgIHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6 ICAgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNp Z25lZCBpbnQgbnVtX3BpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CjE0 NDc0OiAKMTQ0NzQ6IGRvdWJsZSBnZXRfdG90YWxfaW1tZWRpYXRlX2ZsaXBfYnl0ZXMoCjE0NDc0 OiAgIHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgY29uc3QgZGlz cGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVt X3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfdG90YWxfaW1tZWRpYXRlX2ZsaXBfYncoCjE0NDc0 OiAgIHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgY29uc3QgZGlz cGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVt X3BpcGVzKTsKMTQ0NzQ6IGRvdWJsZSBnZXRfdG90YWxfcHJlZmV0Y2hfYncoCjE0NDc0OiAgIHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz KTsKMTQ0NzQ6IHVuc2lnbmVkIGludCBkbWxfZ2V0X3ZvbHRhZ2VfbGV2ZWwoCjE0NDc0OiAgIHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBQaXhlbENsb2NrQWRqdXN0bWVudEZvclByb2dyZXNzaXZl VG9JbnRlcmxhY2VVbml0KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYik7CjE0NDc0 OiAKMTQ0NzQ6IGJvb2wgQ2FsY3VsYXRlMjU2QkJsb2NrU2l6ZXMoCjE0NDc0OiAgIGVudW0gc291 cmNlX2Zvcm1hdF9jbGFzcyBTb3VyY2VQaXhlbEZvcm1hdCwKMTQ0NzQ6ICAgZW51bSBkbV9zd2l6 emxlX21vZGUgU3VyZmFjZVRpbGluZywKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IEJ5dGVQZXJQaXhl bFksCjE0NDc0OiAgIHVuc2lnbmVkIGludCBCeXRlUGVyUGl4ZWxDLAoxNDQ3NDogICB1bnNpZ25l ZCBpbnQgKkJsb2NrSGVpZ2h0MjU2Qnl0ZXNZLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgKkJsb2Nr SGVpZ2h0MjU2Qnl0ZXNDLAoxNDQ3NDogICB1bnNpZ25lZCBpbnQgKkJsb2NrV2lkdGgyNTZCeXRl c1ksCjE0NDc0OiAgIHVuc2lnbmVkIGludCAqQmxvY2tXaWR0aDI1NkJ5dGVzQyk7CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCB2YmFfdmFyc19zdCB7CjE0NDc0OiAgaXBfcGFyYW1zX3N0IGlwOwoxNDQ3 NDogIHNvY19ib3VuZGluZ19ib3hfc3Qgc29jOwoxNDQ3NDogCjE0NDc0OiAgaW50IG1heE1wY0Nv bWI7CjE0NDc0OiAgYm9vbCBVc2VNYXhpbXVtVlN0YXJ0dXA7CjE0NDc0OiAKMTQ0NzQ6ICBkb3Vi bGUgV3JpdGViYWNrRElTUENMSzsKMTQ0NzQ6ICBkb3VibGUgRFBQQ0xLVXNpbmdTaW5nbGVEUFBM dW1hOwoxNDQ3NDogIGRvdWJsZSBEUFBDTEtVc2luZ1NpbmdsZURQUENocm9tYTsKMTQ0NzQ6ICBk b3VibGUgRElTUENMS1dpdGhSYW1waW5nOwoxNDQ3NDogIGRvdWJsZSBESVNQQ0xLV2l0aG91dFJh bXBpbmc7CjE0NDc0OiAgZG91YmxlIEdsb2JhbERQUENMSzsKMTQ0NzQ6ICBkb3VibGUgRElTUENM S1dpdGhSYW1waW5nUm91bmRlZFRvREZTR3JhbnVsYXJpdHk7CjE0NDc0OiAgZG91YmxlIERJU1BD TEtXaXRob3V0UmFtcGluZ1JvdW5kZWRUb0RGU0dyYW51bGFyaXR5OwoxNDQ3NDogIGRvdWJsZSBN YXhEaXNwY2xrUm91bmRlZFRvREZTR3JhbnVsYXJpdHk7CjE0NDc0OiAgYm9vbCBEQ0NFbmFibGVk QW55UGxhbmU7CjE0NDc0OiAgZG91YmxlIFJldHVybkJhbmR3aWR0aFRvRENOOwoxNDQ3NDogIHVu c2lnbmVkIGludCBUb3RhbEFjdGl2ZURQUDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgVG90YWxEQ0NB Y3RpdmVEUFA7CjE0NDc0OiAgZG91YmxlIFVyZ2VudFJvdW5kVHJpcEFuZE91dE9mT3JkZXJMYXRl bmN5OwoxNDQ3NDogIGRvdWJsZSBTdHV0dGVyUGVyaW9kOwoxNDQ3NDogIGRvdWJsZSBGcmFtZVRp bWVGb3JNaW5GdWxsREVUQnVmZmVyaW5nVGltZTsKMTQ0NzQ6ICBkb3VibGUgQXZlcmFnZVJlYWRC YW5kd2lkdGg7CjE0NDc0OiAgZG91YmxlIFRvdGFsUm93UmVhZEJhbmR3aWR0aDsKMTQ0NzQ6ICBk b3VibGUgUGFydE9mQnVyc3RUaGF0Rml0c0luUk9COwoxNDQ3NDogIGRvdWJsZSBTdHV0dGVyQnVy c3RUaW1lOwoxNDQ3NDogIHVuc2lnbmVkIGludCBOZXh0UHJlZmV0Y2hNb2RlOwoxNDQ3NDogIGRv dWJsZSBOZXh0TWF4VlN0YXJ0dXA7CjE0NDc0OiAgZG91YmxlIFZCbGFua1RpbWU7CjE0NDc0OiAg ZG91YmxlIFNtYWxsZXN0VkJsYW5rOwoxNDQ3NDogIGRvdWJsZSBEQ0ZDTEtEZWVwU2xlZXBQZXJQ bGFuZVs4XTsKMTQ0NzQ6ICBkb3VibGUgRWZmZWN0aXZlREVUUGx1c0xCTGluZXNMdW1hOwoxNDQ3 NDogIGRvdWJsZSBFZmZlY3RpdmVERVRQbHVzTEJMaW5lc0Nocm9tYTsKMTQ0NzQ6ICBkb3VibGUg VXJnZW50TGF0ZW5jeVN1cHBvcnRVc0x1bWE7CjE0NDc0OiAgZG91YmxlIFVyZ2VudExhdGVuY3lT dXBwb3J0VXNDaHJvbWE7CjE0NDc0OiAgdW5zaWduZWQgaW50IERTQ0Zvcm1hdEZhY3RvcjsKMTQ0 NzQ6IAoxNDQ3NDogIGJvb2wgRHVtbXlQU3RhdGVDaGVjazsKMTQ0NzQ6ICBib29sIERSQU1DbG9j a0NoYW5nZVN1cHBvcnRzVkFjdGl2ZTsKMTQ0NzQ6ICBib29sIFByZWZldGNoTW9kZVN1cHBvcnRl ZDsKMTQ0NzQ6ICBib29sIFByZWZldGNoQW5kSW1tZWRpYXRlRmxpcFN1cHBvcnRlZDsKMTQ0NzQ6 ICBlbnVtIHNlbGZfcmVmcmVzaF9hZmZpbml0eSBBbGxvd0RSQU1TZWxmUmVmcmVzaE9yRFJBTUNs b2NrQ2hhbmdlSW5WYmxhbms7CjE0NDc0OiAgZG91YmxlIFhGQ1JlbW90ZVN1cmZhY2VGbGlwRGVs YXk7CjE0NDc0OiAgZG91YmxlIFRJbml0WEZpbGw7CjE0NDc0OiAgZG91YmxlIFRzbHZDaGs7CjE0 NDc0OiAgZG91YmxlIFNyY0FjdGl2ZURyYWluUmF0ZTsKMTQ0NzQ6ICBib29sIEltbWVkaWF0ZUZs aXBTdXBwb3J0ZWQ7CjE0NDc0OiAgZW51bSBtcGNfY29tYmluZV9hZmZpbml0eSBXaGVuVG9Eb01Q Q0NvbWJpbmU7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIFByZWZldGNoRVJST1I7CjE0NDc0OiAKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgVlN0YXJ0dXBMaW5lczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgQWN0 aXZlRFBQczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTEJMYXRlbmN5SGlkaW5nU291cmNlTGluZXNZ OwoxNDQ3NDogIHVuc2lnbmVkIGludCBMQkxhdGVuY3lIaWRpbmdTb3VyY2VMaW5lc0M7CjE0NDc0 OiAgZG91YmxlIEFjdGl2ZURSQU1DbG9ja0NoYW5nZUxhdGVuY3lNYXJnaW5bOF07CjE0NDc0OiAg ZG91YmxlIE1pbkFjdGl2ZURSQU1DbG9ja0NoYW5nZU1hcmdpbjsKMTQ0NzQ6ICBkb3VibGUgSW5p dEZpbGxMZXZlbDsKMTQ0NzQ6ICBkb3VibGUgRmluYWxGaWxsTWFyZ2luOwoxNDQ3NDogIGRvdWJs ZSBGaW5hbEZpbGxMZXZlbDsKMTQ0NzQ6ICBkb3VibGUgUmVtYWluaW5nRmlsbExldmVsOwoxNDQ3 NDogIGRvdWJsZSBURmluYWx4RmlsbDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIGRvdWJsZSBTUkV4aXRUaW1lOwoxNDQ3NDogIGRvdWJsZSBTUkVudGVyUGx1c0V4aXRU aW1lOwoxNDQ3NDogIGRvdWJsZSBVcmdlbnRMYXRlbmN5UGl4ZWxEYXRhT25seTsKMTQ0NzQ6ICBk b3VibGUgVXJnZW50TGF0ZW5jeVBpeGVsTWl4ZWRXaXRoVk1EYXRhOwoxNDQ3NDogIGRvdWJsZSBV cmdlbnRMYXRlbmN5Vk1EYXRhT25seTsKMTQ0NzQ6ICBkb3VibGUgVXJnZW50TGF0ZW5jeTsKMTQ0 NzQ6ICBkb3VibGUgV3JpdGViYWNrTGF0ZW5jeTsKMTQ0NzQ6ICBkb3VibGUgUGVyY2VudE9mSWRl YWxEUkFNRmFicmljQW5kU0RQUG9ydEJXUmVjZWl2ZWRBZnRlclVyZ0xhdGVuY3lQaXhlbERhdGFP bmx5OwoxNDQ3NDogIGRvdWJsZSBQZXJjZW50T2ZJZGVhbERSQU1GYWJyaWNBbmRTRFBQb3J0QldS ZWNlaXZlZEFmdGVyVXJnTGF0ZW5jeVBpeGVsTWl4ZWRXaXRoVk1EYXRhOwoxNDQ3NDogIGRvdWJs ZSBQZXJjZW50T2ZJZGVhbERSQU1GYWJyaWNBbmRTRFBQb3J0QldSZWNlaXZlZEFmdGVyVXJnTGF0 ZW5jeVZNRGF0YU9ubHk7CjE0NDc0OiAgZG91YmxlIE1heEF2ZXJhZ2VQZXJjZW50T2ZJZGVhbFNE UFBvcnRCV0Rpc3BsYXlDYW5Vc2VJbk5vcm1hbFN5c3RlbU9wZXJhdGlvbjsKMTQ0NzQ6ICBkb3Vi bGUgTWF4QXZlcmFnZVBlcmNlbnRPZklkZWFsRFJBTUJXRGlzcGxheUNhblVzZUluTm9ybWFsU3lz dGVtT3BlcmF0aW9uOwoxNDQ3NDogIGRvdWJsZSBOdW1iZXJPZkNoYW5uZWxzOwoxNDQ3NDogIGRv dWJsZSBEUkFNQ2hhbm5lbFdpZHRoOwoxNDQ3NDogIGRvdWJsZSBGYWJyaWNEYXRhcGF0aFRvRENO RGF0YVJldHVybjsKMTQ0NzQ6ICBkb3VibGUgUmV0dXJuQnVzV2lkdGg7CjE0NDc0OiAgZG91Ymxl IERvd25zcHJlYWRpbmc7CjE0NDc0OiAgZG91YmxlIERJU1BDTEtEUFBDTEtEU0NDTEtEb3duU3By ZWFkaW5nOwoxNDQ3NDogIGRvdWJsZSBESVNQQ0xLRFBQQ0xLVkNPU3BlZWQ7CjE0NDc0OiAgZG91 YmxlIFJvdW5kVHJpcFBpbmdMYXRlbmN5Q3ljbGVzOwoxNDQ3NDogIGRvdWJsZSBVcmdlbnRPdXRP Zk9yZGVyUmV0dXJuUGVyQ2hhbm5lbDsKMTQ0NzQ6ICBkb3VibGUgVXJnZW50T3V0T2ZPcmRlclJl dHVyblBlckNoYW5uZWxQaXhlbERhdGFPbmx5OwoxNDQ3NDogIGRvdWJsZSBVcmdlbnRPdXRPZk9y ZGVyUmV0dXJuUGVyQ2hhbm5lbFBpeGVsTWl4ZWRXaXRoVk1EYXRhOwoxNDQ3NDogIGRvdWJsZSBV cmdlbnRPdXRPZk9yZGVyUmV0dXJuUGVyQ2hhbm5lbFZNRGF0YU9ubHk7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IFZNTVBhZ2VTaXplOwoxNDQ3NDogIGRvdWJsZSBEUkFNQ2xvY2tDaGFuZ2VMYXRlbmN5 OwoxNDQ3NDogIGRvdWJsZSBYRkNCdXNUcmFuc3BvcnRUaW1lOwoxNDQ3NDogIGJvb2wgVXNlVXJn ZW50QnVyc3RCYW5kd2lkdGg7CjE0NDc0OiAgZG91YmxlIFhGQ1hCVUZMYXRlbmN5VG9sZXJhbmNl OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IFJP QkJ1ZmZlclNpemVJbktCeXRlOwoxNDQ3NDogIGRvdWJsZSBERVRCdWZmZXJTaXplSW5LQnl0ZTsK MTQ0NzQ6ICBkb3VibGUgREVUQnVmZmVyU2l6ZUluVGltZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg RFBQT3V0cHV0QnVmZmVyUGl4ZWxzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBPUFBPdXRwdXRCdWZm ZXJMaW5lczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgUGl4ZWxDaHVua1NpemVJbktCeXRlOwoxNDQ3 NDogIGRvdWJsZSBSZXR1cm5CVzsKMTQ0NzQ6ICBib29sIEdQVVZNRW5hYmxlOwoxNDQ3NDogIGJv b2wgSG9zdFZNRW5hYmxlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBHUFVWTU1heFBhZ2VUYWJsZUxl dmVsczsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgSG9zdFZNTWF4UGFnZVRhYmxlTGV2ZWxzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBIb3N0Vk1DYWNoZWRQYWdlVGFibGVMZXZlbHM7CjE0NDc0OiAgdW5z aWduZWQgaW50IE92ZXJyaWRlR1BVVk1QYWdlVGFibGVMZXZlbHM7CjE0NDc0OiAgdW5zaWduZWQg aW50IE92ZXJyaWRlSG9zdFZNUGFnZVRhYmxlTGV2ZWxzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBN ZXRhQ2h1bmtTaXplOwoxNDQ3NDogIGRvdWJsZSBNaW5QaXhlbENodW5rU2l6ZUJ5dGVzOwoxNDQ3 NDogIGRvdWJsZSBNaW5NZXRhQ2h1bmtTaXplQnl0ZXM7CjE0NDc0OiAgdW5zaWduZWQgaW50IFdy aXRlYmFja0NodW5rU2l6ZTsKMTQ0NzQ6ICBib29sIE9ETUNhcGFiaWxpdHk7CjE0NDc0OiAgdW5z aWduZWQgaW50IE51bWJlck9mRFNDOwoxNDQ3NDogIHVuc2lnbmVkIGludCBMaW5lQnVmZmVyU2l6 ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTWF4TGluZUJ1ZmZlckxpbmVzOwoxNDQ3NDogIHVuc2ln bmVkIGludCBXcml0ZWJhY2tJbnRlcmZhY2VMdW1hQnVmZmVyU2l6ZTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgV3JpdGViYWNrSW50ZXJmYWNlQ2hyb21hQnVmZmVyU2l6ZTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgV3JpdGViYWNrQ2hyb21hTGluZUJ1ZmZlcldpZHRoOwoxNDQ3NDogIGVudW0gd3JpdGVi YWNrX2NvbmZpZyBXcml0ZWJhY2tDb25maWd1cmF0aW9uOwoxNDQ3NDogIGRvdWJsZSBNYXhEQ0hV QlRvUFNDTFRocm91Z2hwdXQ7CjE0NDc0OiAgZG91YmxlIE1heFBTQ0xUb0xCVGhyb3VnaHB1dDsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgUFRFQnVmZmVyU2l6ZUluUmVxdWVzdHNMdW1hOwoxNDQ3NDog IHVuc2lnbmVkIGludCBQVEVCdWZmZXJTaXplSW5SZXF1ZXN0c0Nocm9tYTsKMTQ0NzQ6ICBkb3Vi bGUgRElTUENMS1JhbXBpbmdNYXJnaW47CjE0NDc0OiAgdW5zaWduZWQgaW50IE1heEludGVyRENO VGlsZVJlcGVhdGVyczsKMTQ0NzQ6ICBib29sIFhGQ1N1cHBvcnRlZDsKMTQ0NzQ6ICBkb3VibGUg WEZDU2x2Q2h1bmtTaXplOwoxNDQ3NDogIGRvdWJsZSBYRkNGaWxsQldPdmVyaGVhZDsKMTQ0NzQ6 ICBkb3VibGUgWEZDRmlsbENvbnN0YW50OwoxNDQ3NDogIGRvdWJsZSBYRkNUU2x2VnVwZGF0ZU9m ZnNldDsKMTQ0NzQ6ICBkb3VibGUgWEZDVFNsdlZ1cGRhdGVXaWR0aDsKMTQ0NzQ6ICBkb3VibGUg WEZDVFNsdlZyZWFkeU9mZnNldDsKMTQ0NzQ6ICBkb3VibGUgRFBQQ0xLRGVsYXlTdWJ0b3RhbDsK MTQ0NzQ6ICBkb3VibGUgRFBQQ0xLRGVsYXlTQ0w7CjE0NDc0OiAgZG91YmxlIERQUENMS0RlbGF5 U0NMTEJPbmx5OwoxNDQ3NDogIGRvdWJsZSBEUFBDTEtEZWxheUNOVkNGb3JtYXRlcjsKMTQ0NzQ6 ICBkb3VibGUgRFBQQ0xLRGVsYXlDTlZDQ3Vyc29yOwoxNDQ3NDogIGRvdWJsZSBESVNQQ0xLRGVs YXlTdWJ0b3RhbDsKMTQ0NzQ6ICBib29sIFByb2dyZXNzaXZlVG9JbnRlcmxhY2VVbml0SW5PUFA7 CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgVm9sdGFnZUxldmVsOwoxNDQ3NDogIGRvdWJsZSBGYWJyaWND bG9jazsKMTQ0NzQ6ICBkb3VibGUgRFJBTVNwZWVkOwoxNDQ3NDogIGRvdWJsZSBESVNQQ0xLOwox NDQ3NDogIGRvdWJsZSBTT0NDTEs7CjE0NDc0OiAgZG91YmxlIERDRkNMSzsKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIGludCBOdW1iZXJPZkFjdGl2ZVBsYW5lczsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgTnVtYmVyT2ZEU0NTbGljZXNbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFZpZXdwb3J0V2lk dGhbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFZpZXdwb3J0SGVpZ2h0WzhdOwoxNDQ3NDogIHVu c2lnbmVkIGludCBWaWV3cG9ydFlTdGFydFlbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFZpZXdw b3J0WVN0YXJ0Q1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgUGl0Y2hZWzhdOwoxNDQ3NDogIHVu c2lnbmVkIGludCBQaXRjaENbOF07CjE0NDc0OiAgZG91YmxlIEhSYXRpb1s4XTsKMTQ0NzQ6ICBk b3VibGUgVlJhdGlvWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBodGFwc1s4XTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgdnRhcHNbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IEhUQVBzQ2hyb21hWzhd OwoxNDQ3NDogIHVuc2lnbmVkIGludCBWVEFQc0Nocm9tYVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgSFRvdGFsWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBWVG90YWxbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IFZUb3RhbF9NYXhbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFZUb3RhbF9NaW5b OF07CjE0NDc0OiAgaW50IERQUFBlclBsYW5lWzhdOwoxNDQ3NDogIGRvdWJsZSBQaXhlbENsb2Nr WzhdOwoxNDQ3NDogIGRvdWJsZSBQaXhlbENsb2NrQmFja0VuZFs4XTsKMTQ0NzQ6ICBib29sIERD Q0VuYWJsZVs4XTsKMTQ0NzQ6ICBib29sIEZFQ0VuYWJsZVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgRENDTWV0YVBpdGNoWVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgRENDTWV0YVBpdGNoQ1s4 XTsKMTQ0NzQ6ICBlbnVtIHNjYW5fZGlyZWN0aW9uX2NsYXNzIFNvdXJjZVNjYW5bOF07CjE0NDc0 OiAgZW51bSBzb3VyY2VfZm9ybWF0X2NsYXNzIFNvdXJjZVBpeGVsRm9ybWF0WzhdOwoxNDQ3NDog IGJvb2wgV3JpdGViYWNrRW5hYmxlWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBBY3RpdmVXcml0 ZWJhY2tzUGVyUGxhbmVbOF07CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0Rlc3RpbmF0aW9uV2lk dGhbOF07CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0Rlc3RpbmF0aW9uSGVpZ2h0WzhdOwoxNDQ3 NDogIGRvdWJsZSBXcml0ZWJhY2tTb3VyY2VIZWlnaHRbOF07CjE0NDc0OiAgZW51bSBzb3VyY2Vf Zm9ybWF0X2NsYXNzIFdyaXRlYmFja1BpeGVsRm9ybWF0WzhdOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBXcml0ZWJhY2tMdW1hSFRhcHNbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0x1 bWFWVGFwc1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgV3JpdGViYWNrQ2hyb21hSFRhcHNbOF07 CjE0NDc0OiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0Nocm9tYVZUYXBzWzhdOwoxNDQ3NDogIGRv dWJsZSBXcml0ZWJhY2tIUmF0aW9bOF07CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja1ZSYXRpb1s4 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgSEFjdGl2ZVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg VkFjdGl2ZVs4XTsKMTQ0NzQ6ICBib29sIEludGVybGFjZVs4XTsKMTQ0NzQ6ICBlbnVtIGRtX3N3 aXp6bGVfbW9kZSBTdXJmYWNlVGlsaW5nWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBTY2FsZXJS ZWNvdXRXaWR0aFs4XTsKMTQ0NzQ6ICBib29sIER5bmFtaWNNZXRhZGF0YUVuYWJsZVs4XTsKMTQ0 NzQ6ICBpbnQgRHluYW1pY01ldGFkYXRhTGluZXNCZWZvcmVBY3RpdmVSZXF1aXJlZFs4XTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgRHluYW1pY01ldGFkYXRhVHJhbnNtaXR0ZWRCeXRlc1s4XTsKMTQ0 NzQ6ICBkb3VibGUgRENDUmF0ZVs4XTsKMTQ0NzQ6ICBkb3VibGUgQXZlcmFnZURDQ0NvbXByZXNz aW9uUmF0ZTsKMTQ0NzQ6ICBlbnVtIG9kbV9jb21iaW5lX21vZGUgT0RNQ29tYmluZUVuYWJsZWRb OF07CjE0NDc0OiAgZG91YmxlIE91dHB1dEJwcFs4XTsKMTQ0NzQ6ICBib29sIERTQ0VuYWJsZWRb OF07CjE0NDc0OiAgdW5zaWduZWQgaW50IERTQ0lucHV0Qml0UGVyQ29tcG9uZW50WzhdOwoxNDQ3 NDogIGVudW0gb3V0cHV0X2Zvcm1hdF9jbGFzcyBPdXRwdXRGb3JtYXRbOF07CjE0NDc0OiAgZW51 bSBvdXRwdXRfZW5jb2Rlcl9jbGFzcyBPdXRwdXRbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IEJs ZW5kaW5nQW5kVGltaW5nWzhdOwoxNDQ3NDogIGJvb2wgU3luY2hyb25pemVkVkJsYW5rOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBOdW1iZXJPZkN1cnNvcnNbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50 IEN1cnNvcldpZHRoWzhdWzJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBDdXJzb3JCUFBbOF1bMl07 CjE0NDc0OiAgYm9vbCBYRkNFbmFibGVkWzhdOwoxNDQ3NDogIGJvb2wgU2NhbGVyRW5hYmxlZFs4 XTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBJbW1lZGlhdGVGbGlwU3VwcG9ydDsKMTQ0 NzQ6ICBkb3VibGUgREVUQnVmZmVyU2l6ZVlbOF07CjE0NDc0OiAgZG91YmxlIERFVEJ1ZmZlclNp emVDWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBTd2F0aEhlaWdodFlbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IFN3YXRoSGVpZ2h0Q1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTEJCaXRQZXJQ aXhlbFs4XTsKMTQ0NzQ6ICBkb3VibGUgTGFzdFBpeGVsT2ZMaW5lRXh0cmFXYXRlcm1hcms7CjE0 NDc0OiAgZG91YmxlIFRvdGFsRGF0YVJlYWRCYW5kd2lkdGg7CjE0NDc0OiAgdW5zaWduZWQgaW50 IFRvdGFsQWN0aXZlV3JpdGViYWNrOwoxNDQ3NDogIHVuc2lnbmVkIGludCBFZmZlY3RpdmVMQkxh dGVuY3lIaWRpbmdTb3VyY2VMaW5lc0x1bWE7CjE0NDc0OiAgdW5zaWduZWQgaW50IEVmZmVjdGl2 ZUxCTGF0ZW5jeUhpZGluZ1NvdXJjZUxpbmVzQ2hyb21hOwoxNDQ3NDogIGRvdWJsZSBCYW5kd2lk dGhBdmFpbGFibGVGb3JJbW1lZGlhdGVGbGlwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBQcmVmZXRj aE1vZGVbNyArIDFdWzJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBQcmVmZXRjaE1vZGVQZXJTdGF0 ZVs3ICsgMV1bMl07CjE0NDc0OiAgdW5zaWduZWQgaW50IE1pblByZWZldGNoTW9kZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgTWF4UHJlZmV0Y2hNb2RlOwoxNDQ3NDogIGJvb2wgQW55TGluZXNGb3JW TU9yUm93VG9vTGFyZ2U7CjE0NDc0OiAgZG91YmxlIE1heFZTdGFydHVwOwoxNDQ3NDogIGJvb2wg SWdub3JlVmlld3BvcnRQb3NpdGlvbmluZzsKMTQ0NzQ6ICBib29sIEVycm9yUmVzdWx0WzhdOwox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGRvdWJsZSBEQ0ZDTEtEZWVwU2xlZXA7CjE0 NDc0OiAgZG91YmxlIFVyZ2VudFdhdGVybWFyazsKMTQ0NzQ6ICBkb3VibGUgVXJnZW50RXh0cmFM YXRlbmN5OwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tVcmdlbnRXYXRlcm1hcms7CjE0NDc0OiAg ZG91YmxlIFN0dXR0ZXJFeGl0V2F0ZXJtYXJrOwoxNDQ3NDogIGRvdWJsZSBTdHV0dGVyRW50ZXJQ bHVzRXhpdFdhdGVybWFyazsKMTQ0NzQ6ICBkb3VibGUgRFJBTUNsb2NrQ2hhbmdlV2F0ZXJtYXJr OwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tEUkFNQ2xvY2tDaGFuZ2VXYXRlcm1hcms7CjE0NDc0 OiAgZG91YmxlIFN0dXR0ZXJFZmZpY2llbmN5OwoxNDQ3NDogIGRvdWJsZSBTdHV0dGVyRWZmaWNp ZW5jeU5vdEluY2x1ZGluZ1ZCbGFuazsKMTQ0NzQ6ICBkb3VibGUgTm9uVXJnZW50TGF0ZW5jeVRv bGVyYW5jZTsKMTQ0NzQ6ICBkb3VibGUgTWluQWN0aXZlRFJBTUNsb2NrQ2hhbmdlTGF0ZW5jeVN1 cHBvcnRlZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGRvdWJsZSBE SVNQQ0xLX2NhbGN1bGF0ZWQ7CjE0NDc0OiAgZG91YmxlIERQUENMS19jYWxjdWxhdGVkWzhdOwox NDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IFZVcGRhdGVPZmZzZXRQaXhbOF07CjE0NDc0OiAg ZG91YmxlIFZVcGRhdGVXaWR0aFBpeFs4XTsKMTQ0NzQ6ICBkb3VibGUgVlJlYWR5T2Zmc2V0UGl4 WzhdOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IFRvdEltbWVkaWF0ZUZsaXBCeXRlczsK MTQ0NzQ6ICBkb3VibGUgVENhbGM7CjE0NDc0OiAKMTQ0NzQ6ICBkaXNwbGF5X2UyZV9waXBlX3Bh cmFtc19zdCBjYWNoZV9waXBlc1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2FjaGVfbnVtX3Bp cGVzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBwaXBlX3BsYW5lWzhdOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIGJvb2wgRW1iZWRkZWRQYW5lbFs4XTsKMTQ0NzQ6ICBib29sIFN1cHBv cnRHRlg3Q29tcGF0aWJsZVRpbGluZ0luMzJicHBBbmQ2NGJwcDsKMTQ0NzQ6ICBkb3VibGUgTWF4 SFNDTFJhdGlvOwoxNDQ3NDogIGRvdWJsZSBNYXhWU0NMUmF0aW87CjE0NDc0OiAgdW5zaWduZWQg aW50IE1heE51bVdyaXRlYmFjazsKMTQ0NzQ6ICBib29sIFdyaXRlYmFja0x1bWFBbmRDaHJvbWFT Y2FsaW5nU3VwcG9ydGVkOwoxNDQ3NDogIGJvb2wgQ3Vyc29yNjRCcHBTdXBwb3J0OwoxNDQ3NDog IGRvdWJsZSBEQ0ZDTEtQZXJTdGF0ZVs3ICsgMV07CjE0NDc0OiAgZG91YmxlIERDRkNMS1N0YXRl WzcgKyAxXVsyXTsKMTQ0NzQ6ICBkb3VibGUgRmFicmljQ2xvY2tQZXJTdGF0ZVs3ICsgMV07CjE0 NDc0OiAgZG91YmxlIFNPQ0NMS1BlclN0YXRlWzcgKyAxXTsKMTQ0NzQ6ICBkb3VibGUgUEhZQ0xL UGVyU3RhdGVbNyArIDFdOwoxNDQ3NDogIGRvdWJsZSBEVEJDTEtQZXJTdGF0ZVs3ICsgMV07CjE0 NDc0OiAgZG91YmxlIE1heERwcGNsa1s3ICsgMV07CjE0NDc0OiAgZG91YmxlIE1heERTQ0NMS1s3 ICsgMV07CjE0NDc0OiAgZG91YmxlIERSQU1TcGVlZFBlclN0YXRlWzcgKyAxXTsKMTQ0NzQ6ICBk b3VibGUgTWF4RGlzcGNsa1s3ICsgMV07CjE0NDc0OiAgaW50IFZvbHRhZ2VPdmVycmlkZUxldmVs OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIFNjYWxlUmF0aW9BbmRUYXBzU3VwcG9ydDsK MTQ0NzQ6ICBib29sIFNvdXJjZUZvcm1hdFBpeGVsQW5kU2NhblN1cHBvcnQ7CjE0NDc0OiAgZG91 YmxlIFRvdGFsQmFuZHdpZHRoQ29uc3VtZWRHQnl0ZVBlclNlY29uZDsKMTQ0NzQ6ICBib29sIERD Q0VuYWJsZWRJbkFueVBsYW5lOwoxNDQ3NDogIGJvb2wgV3JpdGViYWNrTGF0ZW5jeVN1cHBvcnQ7 CjE0NDc0OiAgYm9vbCBXcml0ZWJhY2tNb2RlU3VwcG9ydDsKMTQ0NzQ6ICBib29sIFdyaXRlYmFj azEwYnBjNDIwU3VwcG9ydGVkOwoxNDQ3NDogIGJvb2wgQmFuZHdpZHRoU3VwcG9ydFs3ICsgMV07 CjE0NDc0OiAgdW5zaWduZWQgaW50IFRvdGFsTnVtYmVyT2ZBY3RpdmVXcml0ZWJhY2s7CjE0NDc0 OiAgZG91YmxlIENyaXRpY2FsUG9pbnQ7CjE0NDc0OiAgZG91YmxlIFJldHVybkJXVG9EQ05QZXJT dGF0ZTsKMTQ0NzQ6ICBib29sIElzRXJyb3JSZXN1bHRbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGJv b2wgcHJlZmV0Y2hfdm1fYndfdmFsaWQ7CjE0NDc0OiAgYm9vbCBwcmVmZXRjaF9yb3dfYndfdmFs aWQ7CjE0NDc0OiAgYm9vbCBOdW1iZXJPZk9UR1N1cHBvcnQ7CjE0NDc0OiAgYm9vbCBOb25zdXBw b3J0ZWREU0NJbnB1dEJQQzsKMTQ0NzQ6ICBib29sIFdyaXRlYmFja1NjYWxlUmF0aW9BbmRUYXBz U3VwcG9ydDsKMTQ0NzQ6ICBib29sIEN1cnNvclN1cHBvcnQ7CjE0NDc0OiAgYm9vbCBQaXRjaFN1 cHBvcnQ7CjE0NDc0OiAgZW51bSBkbV92YWxpZGF0aW9uX3N0YXR1cyBWYWxpZGF0aW9uU3RhdHVz WzcgKyAxXTsKMTQ0NzQ6IAoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tMaW5lQnVmZmVyTHVtYUJ1 ZmZlclNpemU7CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0xpbmVCdWZmZXJDaHJvbWFCdWZmZXJT aXplOwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tNaW5IU0NMUmF0aW87CjE0NDc0OiAgZG91Ymxl IFdyaXRlYmFja01pblZTQ0xSYXRpbzsKMTQ0NzQ6ICBkb3VibGUgV3JpdGViYWNrTWF4SFNDTFJh dGlvOwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tNYXhWU0NMUmF0aW87CjE0NDc0OiAgZG91Ymxl IFdyaXRlYmFja01heEhTQ0xUYXBzOwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tNYXhWU0NMVGFw czsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTWF4TnVtRFBQOwoxNDQ3NDogIHVuc2lnbmVkIGludCBN YXhOdW1PVEc7CjE0NDc0OiAgZG91YmxlIEN1cnNvckJ1ZmZlclNpemU7CjE0NDc0OiAgZG91Ymxl IEN1cnNvckNodW5rU2l6ZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTW9kZTsKMTQ0NzQ6ICBkb3Vi bGUgT3V0cHV0TGlua0RQTGFuZXNbOF07CjE0NDc0OiAgZG91YmxlIEZvcmNlZE91dHB1dExpbmtC UFBbOF07CjE0NDc0OiAgZG91YmxlIEltbWVkaWF0ZUZsaXBCV1s4XTsKMTQ0NzQ6ICBkb3VibGUg TWF4TWF4VlN0YXJ0dXBbNyArIDFdWzJdOwoxNDQ3NDogCjE0NDc0OiAgZG91YmxlIFdyaXRlYmFj a0x1bWFWRXh0cmE7CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0Nocm9tYVZFeHRyYTsKMTQ0NzQ6 ICBkb3VibGUgV3JpdGViYWNrUmVxdWlyZWRESVNQQ0xLOwoxNDQ3NDogIGRvdWJsZSBNYXhpbXVt U3dhdGhXaWR0aFN1cHBvcnQ7CjE0NDc0OiAgZG91YmxlIE1heGltdW1Td2F0aFdpZHRoSW5ERVRC dWZmZXI7CjE0NDc0OiAgZG91YmxlIE1heGltdW1Td2F0aFdpZHRoSW5MaW5lQnVmZmVyOwoxNDQ3 NDogIGRvdWJsZSBNYXhEaXNwY2xrUm91bmRlZERvd25Ub0RGU0dyYW51bGFyaXR5OwoxNDQ3NDog IGRvdWJsZSBNYXhEcHBjbGtSb3VuZGVkRG93blRvREZTR3JhbnVsYXJpdHk7CjE0NDc0OiAgZG91 YmxlIFBsYW5lUmVxdWlyZWRESVNQQ0xLV2l0aG91dE9ETUNvbWJpbmU7CjE0NDc0OiAgZG91Ymxl IFBsYW5lUmVxdWlyZWRESVNQQ0xLV2l0aE9ETUNvbWJpbmU7CjE0NDc0OiAgZG91YmxlIFBsYW5l UmVxdWlyZWRESVNQQ0xLOwoxNDQ3NDogIGRvdWJsZSBUb3RhbE51bWJlck9mQWN0aXZlT1RHOwox NDQ3NDogIGRvdWJsZSBGRUNPdmVyaGVhZDsKMTQ0NzQ6ICBkb3VibGUgRWZmZWN0aXZlRkVDT3Zl cmhlYWQ7CjE0NDc0OiAgZG91YmxlIE91dGJwcDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgT3V0YnBw RFNDOwoxNDQ3NDogIGRvdWJsZSBUb3RhbERTQ1VuaXRzUmVxdWlyZWQ7CjE0NDc0OiAgZG91Ymxl IGJwcDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc2xpY2VzOwoxNDQ3NDogIGRvdWJsZSBTd2F0aFdp ZHRoR3JhbnVsYXJpdHlZOwoxNDQ3NDogIGRvdWJsZSBSb3VuZGVkVXBNYXhTd2F0aFNpemVCeXRl c1k7CjE0NDc0OiAgZG91YmxlIFN3YXRoV2lkdGhHcmFudWxhcml0eUM7CjE0NDc0OiAgZG91Ymxl IFJvdW5kZWRVcE1heFN3YXRoU2l6ZUJ5dGVzQzsKMTQ0NzQ6ICBkb3VibGUgRWZmZWN0aXZlREVU TEJMaW5lc0x1bWE7CjE0NDc0OiAgZG91YmxlIEVmZmVjdGl2ZURFVExCTGluZXNDaHJvbWE7CjE0 NDc0OiAgZG91YmxlIFByb2plY3RlZERDRkNMS0RlZXBTbGVlcFs3ICsgMV1bMl07CjE0NDc0OiAg ZG91YmxlIFBERUFuZE1ldGFQVEVCeXRlc1BlckZyYW1lWTsKMTQ0NzQ6ICBkb3VibGUgUERFQW5k TWV0YVBURUJ5dGVzUGVyRnJhbWVDOwoxNDQ3NDogIHVuc2lnbmVkIGludCBNZXRhUm93Qnl0ZXNZ OwoxNDQ3NDogIHVuc2lnbmVkIGludCBNZXRhUm93Qnl0ZXNDOwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBEUFRFQnl0ZXNQZXJSb3dDOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEUFRFQnl0ZXNQZXJSb3dZ OwoxNDQ3NDogIGRvdWJsZSBFeHRyYUxhdGVuY3k7CjE0NDc0OiAgZG91YmxlIFRpbWVDYWxjOwox NDQ3NDogIGRvdWJsZSBUV2FpdDsKMTQ0NzQ6ICBkb3VibGUgTWF4aW11bVJlYWRCYW5kd2lkdGhX aXRoUHJlZmV0Y2g7CjE0NDc0OiAgZG91YmxlIE1heGltdW1SZWFkQmFuZHdpZHRoV2l0aG91dFBy ZWZldGNoOwoxNDQ3NDogIGRvdWJsZSB0b3RhbF9kY25fcmVhZF9id193aXRoX2ZsaXA7CjE0NDc0 OiAgZG91YmxlIHRvdGFsX2Rjbl9yZWFkX2J3X3dpdGhfZmxpcF9ub191cmdlbnRfYnVyc3Q7CjE0 NDc0OiAgZG91YmxlIEZyYWN0aW9uT2ZVcmdlbnRCYW5kd2lkdGg7CjE0NDc0OiAgZG91YmxlIEZy YWN0aW9uT2ZVcmdlbnRCYW5kd2lkdGhJbW1lZGlhdGVGbGlwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBkb3VibGUgSWRlYWxTRFBQb3J0QmFuZHdpZHRoUGVyU3RhdGVbNyArIDFdWzJdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBOb09mRFBQWzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICBpbnQgTm9PZkRQ UFRoaXNTdGF0ZVs4XTsKMTQ0NzQ6ICBlbnVtIG9kbV9jb21iaW5lX21vZGUgT0RNQ29tYmluZUVu YWJsZVBlclN0YXRlWzcgKyAxXVs4XTsKMTQ0NzQ6ICBkb3VibGUgU3dhdGhXaWR0aFlUaGlzU3Rh dGVbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0Q1BlclN0YXRlWzcgKyAxXVsy XVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRZVGhpc1N0YXRlWzhdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBTd2F0aEhlaWdodENUaGlzU3RhdGVbOF07CjE0NDc0OiAgZG91Ymxl IFZSYXRpb1ByZVlbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBWUmF0aW9QcmVDWzcgKyAx XVsyXVs4XTsKMTQ0NzQ6ICBkb3VibGUgUmVxdWlyZWRQcmVmZXRjaFBpeGVsRGF0YUJXTHVtYVs3 ICsgMV1bMl1bOF07CjE0NDc0OiAgZG91YmxlIFJlcXVpcmVkUHJlZmV0Y2hQaXhlbERhdGFCV0No cm9tYVs3ICsgMV1bMl1bOF07CjE0NDc0OiAgZG91YmxlIFJlcXVpcmVkRFBQQ0xLWzcgKyAxXVsy XVs4XTsKMTQ0NzQ6ICBkb3VibGUgUmVxdWlyZWREUFBDTEtUaGlzU3RhdGVbOF07CjE0NDc0OiAg Ym9vbCBQVEVCdWZmZXJTaXplTm90RXhjZWVkZWRZWzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICBib29s IFBURUJ1ZmZlclNpemVOb3RFeGNlZWRlZENbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGJvb2wgQmFu ZHdpZHRoV2l0aG91dFByZWZldGNoU3VwcG9ydGVkWzcgKyAxXVsyXTsKMTQ0NzQ6ICBib29sIFBy ZWZldGNoU3VwcG9ydGVkWzcgKyAxXVsyXTsKMTQ0NzQ6ICBib29sIFZSYXRpb0luUHJlZmV0Y2hT dXBwb3J0ZWRbNyArIDFdWzJdOwoxNDQ3NDogIGRvdWJsZSBSZXF1aXJlZERJU1BDTEtbNyArIDFd WzJdOwoxNDQ3NDogIGJvb2wgRElTUENMS19EUFBDTEtfU3VwcG9ydFs3ICsgMV1bMl07CjE0NDc0 OiAgYm9vbCBUb3RhbEF2YWlsYWJsZVBpcGVzU3VwcG9ydFs3ICsgMV1bMl07CjE0NDc0OiAgdW5z aWduZWQgaW50IFRvdGFsTnVtYmVyT2ZBY3RpdmVEUFBbNyArIDFdWzJdOwoxNDQ3NDogIHVuc2ln bmVkIGludCBUb3RhbE51bWJlck9mRENDQWN0aXZlRFBQWzcgKyAxXVsyXTsKMTQ0NzQ6ICBib29s IE1vZGVTdXBwb3J0WzcgKyAxXVsyXTsKMTQ0NzQ6ICBkb3VibGUgUmV0dXJuQldQZXJTdGF0ZVs3 ICsgMV1bMl07CjE0NDc0OiAgYm9vbCBESU9TdXBwb3J0WzcgKyAxXTsKMTQ0NzQ6ICBib29sIE5v dEVub3VnaERTQ1VuaXRzWzcgKyAxXTsKMTQ0NzQ6ICBib29sIERTQ0NMS1JlcXVpcmVkTW9yZVRo YW5TdXBwb3J0ZWRbNyArIDFdOwoxNDQ3NDogIGJvb2wgRFRCQ0xLUmVxdWlyZWRNb3JlVGhhblN1 cHBvcnRlZFs3ICsgMV07CjE0NDc0OiAgZG91YmxlIFVyZ2VudFJvdW5kVHJpcEFuZE91dE9mT3Jk ZXJMYXRlbmN5UGVyU3RhdGVbNyArIDFdOwoxNDQ3NDogIGJvb2wgUk9CU3VwcG9ydFs3ICsgMV1b Ml07CjE0NDc0OiAgYm9vbCBQVEVCdWZmZXJTaXplTm90RXhjZWVkZWRbNyArIDFdWzJdOwoxNDQ3 NDogIGJvb2wgVG90YWxWZXJ0aWNhbEFjdGl2ZUJhbmR3aWR0aFN1cHBvcnRbNyArIDFdWzJdOwox NDQ3NDogIGRvdWJsZSBNYXhUb3RhbFZlcnRpY2FsQWN0aXZlQXZhaWxhYmxlQmFuZHdpZHRoWzcg KyAxXVsyXTsKMTQ0NzQ6ICBkb3VibGUgUHJlZmV0Y2hCV1s4XTsKMTQ0NzQ6ICBkb3VibGUgUERF QW5kTWV0YVBURUJ5dGVzUGVyRnJhbWVbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBNZXRh Um93Qnl0ZXNbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBEUFRFQnl0ZXNQZXJSb3dbNyAr IDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBQcmVmZXRjaExpbmVzWVs3ICsgMV1bMl1bOF07CjE0 NDc0OiAgZG91YmxlIFByZWZldGNoTGluZXNDWzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgTWF4TnVtU3dZWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBNYXhOdW1Td0NbOF07CjE0 NDc0OiAgZG91YmxlIFByZWZpbGxZWzhdOwoxNDQ3NDogIGRvdWJsZSBQcmVmaWxsQ1s4XTsKMTQ0 NzQ6ICBkb3VibGUgTGluZVRpbWVzRm9yUHJlZmV0Y2hbOF07CjE0NDc0OiAgZG91YmxlIExpbmVz Rm9yTWV0YVBURVs4XTsKMTQ0NzQ6ICBkb3VibGUgTGluZXNGb3JNZXRhQW5kRFBURVJvd1s4XTsK MTQ0NzQ6ICBkb3VibGUgTWluRFBQQ0xLVXNpbmdTaW5nbGVEUFBbOF07CjE0NDc0OiAgZG91Ymxl IFN3YXRoV2lkdGhZU2luZ2xlRFBQWzhdOwoxNDQ3NDogIGRvdWJsZSBCeXRlUGVyUGl4ZWxJbkRF VFlbOF07CjE0NDc0OiAgZG91YmxlIEJ5dGVQZXJQaXhlbEluREVUQ1s4XTsKMTQ0NzQ6ICBib29s IFJlcXVpcmVzRFNDWzcgKyAxXVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTnVtYmVyT2ZEU0NT bGljZVs3ICsgMV1bOF07CjE0NDc0OiAgZG91YmxlIFJlcXVpcmVzRkVDWzcgKyAxXVs4XTsKMTQ0 NzQ6ICBkb3VibGUgT3V0cHV0QnBwUGVyU3RhdGVbNyArIDFdWzhdOwoxNDQ3NDogIGRvdWJsZSBE U0NEZWxheVBlclN0YXRlWzcgKyAxXVs4XTsKMTQ0NzQ6ICBib29sIFZpZXdwb3J0U2l6ZVN1cHBv cnRbNyArIDFdWzJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBSZWFkMjU2QmxvY2tIZWlnaHRZWzhd OwoxNDQ3NDogIHVuc2lnbmVkIGludCBSZWFkMjU2QmxvY2tXaWR0aFlbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IFJlYWQyNTZCbG9ja0hlaWdodENbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFJl YWQyNTZCbG9ja1dpZHRoQ1s4XTsKMTQ0NzQ6ICBkb3VibGUgTWF4U3dhdGhIZWlnaHRZWzhdOwox NDQ3NDogIGRvdWJsZSBNYXhTd2F0aEhlaWdodENbOF07CjE0NDc0OiAgZG91YmxlIE1pblN3YXRo SGVpZ2h0WVs4XTsKMTQ0NzQ6ICBkb3VibGUgTWluU3dhdGhIZWlnaHRDWzhdOwoxNDQ3NDogIGRv dWJsZSBSZWFkQmFuZHdpZHRoTHVtYVs4XTsKMTQ0NzQ6ICBkb3VibGUgUmVhZEJhbmR3aWR0aENo cm9tYVs4XTsKMTQ0NzQ6ICBkb3VibGUgUmVhZEJhbmR3aWR0aFs4XTsKMTQ0NzQ6ICBkb3VibGUg V3JpdGVCYW5kd2lkdGhbOF07CjE0NDc0OiAgZG91YmxlIFBTQ0xfRkFDVE9SWzhdOwoxNDQ3NDog IGRvdWJsZSBQU0NMX0ZBQ1RPUl9DSFJPTUFbOF07CjE0NDc0OiAgZG91YmxlIE1heGltdW1WU3Rh cnR1cFs3ICsgMV1bMl1bOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IE1hY3JvVGlsZVdpZHRoWVs4 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTWFjcm9UaWxlV2lkdGhDWzhdOwoxNDQ3NDogIGRvdWJs ZSBBbGlnbmVkRENDTWV0YVBpdGNoWzhdOwoxNDQ3NDogIGRvdWJsZSBBbGlnbmVkWVBpdGNoWzhd OwoxNDQ3NDogIGRvdWJsZSBBbGlnbmVkQ1BpdGNoWzhdOwoxNDQ3NDogIGRvdWJsZSBNYXhpbXVt U3dhdGhXaWR0aFs4XTsKMTQ0NzQ6ICBkb3VibGUgY3Vyc29yX2J3WzhdOwoxNDQ3NDogIGRvdWJs ZSBjdXJzb3JfYndfcHJlWzhdOwoxNDQ3NDogIGRvdWJsZSBUbm9fYndbOF07CjE0NDc0OiAgZG91 YmxlIHByZWZldGNoX3Ztcm93X2J3WzhdOwoxNDQ3NDogIGRvdWJsZSBEZXN0aW5hdGlvbkxpbmVz VG9SZXF1ZXN0Vk1JbkltbWVkaWF0ZUZsaXBbOF07CjE0NDc0OiAgZG91YmxlIERlc3RpbmF0aW9u TGluZXNUb1JlcXVlc3RSb3dJbkltbWVkaWF0ZUZsaXBbOF07CjE0NDc0OiAgZG91YmxlIGZpbmFs X2ZsaXBfYndbOF07CjE0NDc0OiAgYm9vbCBJbW1lZGlhdGVGbGlwU3VwcG9ydGVkRm9yU3RhdGVb NyArIDFdWzJdOwoxNDQ3NDogIGRvdWJsZSBXcml0ZWJhY2tEZWxheVs3ICsgMV1bOF07CjE0NDc0 OiAgdW5zaWduZWQgaW50IHZtX2dyb3VwX2J5dGVzWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBk cHRlX2dyb3VwX2J5dGVzWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX3Jvd19oZWlnaHRb OF07CjE0NDc0OiAgdW5zaWduZWQgaW50IG1ldGFfcmVxX2hlaWdodFs4XTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbWV0YV9yZXFfd2lkdGhbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IG1ldGFfcm93 X2hlaWdodFs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfd2lkdGhbOF07CjE0NDc0 OiAgdW5zaWduZWQgaW50IGRwdGVfcm93X2hlaWdodF9jaHJvbWFbOF07CjE0NDc0OiAgdW5zaWdu ZWQgaW50IG1ldGFfcmVxX2hlaWdodF9jaHJvbWFbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IG1l dGFfcmVxX3dpZHRoX2Nocm9tYVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfaGVp Z2h0X2Nocm9tYVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfd2lkdGhfY2hyb21h WzhdOwoxNDQ3NDogIGJvb2wgSW1tZWRpYXRlRmxpcFN1cHBvcnRlZEZvclBpcGVbOF07CjE0NDc0 OiAgZG91YmxlIG1ldGFfcm93X2J3WzhdOwoxNDQ3NDogIGRvdWJsZSBkcHRlX3Jvd19id1s4XTsK MTQ0NzQ6ICBkb3VibGUgRGlzcGxheVBpcGVMaW5lRGVsaXZlcnlUaW1lTHVtYVs4XTsKMTQ0NzQ6 ICBkb3VibGUgRGlzcGxheVBpcGVMaW5lRGVsaXZlcnlUaW1lQ2hyb21hWzhdOwoxNDQ3NDogIGRv dWJsZSBEaXNwbGF5UGlwZVJlcXVlc3REZWxpdmVyeVRpbWVMdW1hWzhdOwoxNDQ3NDogIGRvdWJs ZSBEaXNwbGF5UGlwZVJlcXVlc3REZWxpdmVyeVRpbWVDaHJvbWFbOF07CjE0NDc0OiAgZW51bSBj bG9ja19jaGFuZ2Vfc3VwcG9ydCBEUkFNQ2xvY2tDaGFuZ2VTdXBwb3J0WzcgKyAxXVsyXTsKMTQ0 NzQ6ICBkb3VibGUgVXJnZW50QnVyc3RGYWN0b3JDdXJzb3JbOF07CjE0NDc0OiAgZG91YmxlIFVy Z2VudEJ1cnN0RmFjdG9yQ3Vyc29yUHJlWzhdOwoxNDQ3NDogIGRvdWJsZSBVcmdlbnRCdXJzdEZh Y3Rvckx1bWFbOF07CjE0NDc0OiAgZG91YmxlIFVyZ2VudEJ1cnN0RmFjdG9yTHVtYVByZVs4XTsK MTQ0NzQ6ICBkb3VibGUgVXJnZW50QnVyc3RGYWN0b3JDaHJvbWFbOF07CjE0NDc0OiAgZG91Ymxl IFVyZ2VudEJ1cnN0RmFjdG9yQ2hyb21hUHJlWzhdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBi b29sIE1QQ0NvbWJpbmVbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBTd2F0aFdpZHRoQ1Np bmdsZURQUFs4XTsKMTQ0NzQ6ICBkb3VibGUgTWF4aW11bVN3YXRoV2lkdGhJbkxpbmVCdWZmZXJM dW1hOwoxNDQ3NDogIGRvdWJsZSBNYXhpbXVtU3dhdGhXaWR0aEluTGluZUJ1ZmZlckNocm9tYTsK MTQ0NzQ6ICBkb3VibGUgTWF4aW11bVN3YXRoV2lkdGhMdW1hWzhdOwoxNDQ3NDogIGRvdWJsZSBN YXhpbXVtU3dhdGhXaWR0aENocm9tYVs4XTsKMTQ0NzQ6ICBlbnVtIG9kbV9jb21iaW5lX21vZGUg b2RtX2NvbWJpbmVfZHVtbXlbOF07CjE0NDc0OiAgZG91YmxlIGR1bW15MVs4XTsKMTQ0NzQ6ICBk b3VibGUgZHVtbXkyWzhdOwoxNDQ3NDogIGRvdWJsZSBkdW1teTNbOF07CjE0NDc0OiAgZG91Ymxl IGR1bW15NFs4XTsKMTQ0NzQ6ICBkb3VibGUgZHVtbXk1OwoxNDQ3NDogIGRvdWJsZSBkdW1teTY7 CjE0NDc0OiAgZG91YmxlIGR1bW15N1s4XTsKMTQ0NzQ6ICBkb3VibGUgZHVtbXk4WzhdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxbXNbOF07CjE0NDc0OiAgZG91YmxlIGR1bW15 aW50ZWdlcjJtc1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyM1s4XTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyNFs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg ZHVtbXlpbnRlZ2VyNTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyNjsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyNzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlp bnRlZ2VyODsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyOTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgZHVtbXlpbnRlZ2VyMTA7CjE0NDc0OiAgdW5zaWduZWQgaW50IGR1bW15aW50ZWdl cjExOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxMjsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgZHVtbXlpbnRlZ2VyYXJyMVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRl Z2VyYXJyMls4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyYXJyM1s4XTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyYXJyNFs4XTsKMTQ0NzQ6ICBib29sIGR1bW15 c2luZ2xlc3RyaW5nOwoxNDQ3NDogIGJvb2wgU2luZ2xlRFBQVmlld3BvcnRTaXplU3VwcG9ydFBl clBsYW5lWzhdOwoxNDQ3NDogIGRvdWJsZSBQbGFuZVJlcXVpcmVkRElTUENMS1dpdGhPRE1Db21i aW5lMlRvMTsKMTQ0NzQ6ICBkb3VibGUgUGxhbmVSZXF1aXJlZERJU1BDTEtXaXRoT0RNQ29tYmlu ZTRUbzE7CjE0NDc0OiAgdW5zaWduZWQgaW50IFRvdGFsTnVtYmVyT2ZTaW5nbGVEUFBQbGFuZXNb NyArIDFdWzJdOwoxNDQ3NDogIGJvb2wgTGlua0RTQ0VuYWJsZTsKMTQ0NzQ6ICBib29sIE9ETUNv bWJpbmU0VG8xU3VwcG9ydENoZWNrT0tbNyArIDFdOwoxNDQ3NDogIGVudW0gb2RtX2NvbWJpbmVf bW9kZSBPRE1Db21iaW5lRW5hYmxlVGhpc1N0YXRlWzhdOwoxNDQ3NDogIGRvdWJsZSBTd2F0aFdp ZHRoQ1RoaXNTdGF0ZVs4XTsKMTQ0NzQ6ICBib29sIFZpZXdwb3J0U2l6ZVN1cHBvcnRQZXJQbGFu ZVs4XTsKMTQ0NzQ6ICBkb3VibGUgQWxpZ25lZERDQ01ldGFQaXRjaFlbOF07CjE0NDc0OiAgZG91 YmxlIEFsaWduZWREQ0NNZXRhUGl0Y2hDWzhdOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50 IE5vdEVub3VnaFVyZ2VudExhdGVuY3lIaWRpbmc7CjE0NDc0OiAgdW5zaWduZWQgaW50IE5vdEVu b3VnaFVyZ2VudExhdGVuY3lIaWRpbmdQcmU7CjE0NDc0OiAgaW50IFBURUJ1ZmZlclNpemVJblJl cXVlc3RzRm9yTHVtYTsKMTQ0NzQ6ICBpbnQgUFRFQnVmZmVyU2l6ZUluUmVxdWVzdHNGb3JDaHJv bWE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCBkcHRlX2dyb3VwX2J5dGVzX2Nocm9tYTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdm1fZ3JvdXBfYnl0ZXNfY2hyb21hOwoxNDQ3NDogIGRvdWJs ZSBkc3RfeF9hZnRlcl9zY2FsZXI7CjE0NDc0OiAgZG91YmxlIGRzdF95X2FmdGVyX3NjYWxlcjsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgVlN0YXJ0dXBSZXF1aXJlZFdoZW5Ob3RFbm91Z2hUaW1lRm9y RHluYW1pY01ldGFkYXRhOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBkb3VibGUgUHJlZmV0Y2hC YW5kd2lkdGhbOF07CjE0NDc0OiAgZG91YmxlIFZJbml0UHJlRmlsbFlbOF07CjE0NDc0OiAgZG91 YmxlIFZJbml0UHJlRmlsbENbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IE1heE51bVN3YXRoWVs4 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTWF4TnVtU3dhdGhDWzhdOwoxNDQ3NDogIHVuc2lnbmVk IGludCBWU3RhcnR1cFs4XTsKMTQ0NzQ6ICBkb3VibGUgRFNUWUFmdGVyU2NhbGVyWzhdOwoxNDQ3 NDogIGRvdWJsZSBEU1RYQWZ0ZXJTY2FsZXJbOF07CjE0NDc0OiAgYm9vbCBBbGxvd0RSQU1DbG9j a0NoYW5nZUR1cmluZ1ZCbGFua1s4XTsKMTQ0NzQ6ICBib29sIEFsbG93RFJBTVNlbGZSZWZyZXNo RHVyaW5nVkJsYW5rWzhdOwoxNDQ3NDogIGRvdWJsZSBWUmF0aW9QcmVmZXRjaFlbOF07CjE0NDc0 OiAgZG91YmxlIFZSYXRpb1ByZWZldGNoQ1s4XTsKMTQ0NzQ6ICBkb3VibGUgRGVzdGluYXRpb25M aW5lc0ZvclByZWZldGNoWzhdOwoxNDQ3NDogIGRvdWJsZSBEZXN0aW5hdGlvbkxpbmVzVG9SZXF1 ZXN0Vk1JblZCbGFua1s4XTsKMTQ0NzQ6ICBkb3VibGUgRGVzdGluYXRpb25MaW5lc1RvUmVxdWVz dFJvd0luVkJsYW5rWzhdOwoxNDQ3NDogIGRvdWJsZSBNaW5UVFVWQmxhbmtbOF07CjE0NDc0OiAg ZG91YmxlIEJ5dGVQZXJQaXhlbERFVFlbOF07CjE0NDc0OiAgZG91YmxlIEJ5dGVQZXJQaXhlbERF VENbOF07CjE0NDc0OiAgZG91YmxlIFN3YXRoV2lkdGhZWzhdOwoxNDQ3NDogIGRvdWJsZSBTd2F0 aFdpZHRoU2luZ2xlRFBQWVs4XTsKMTQ0NzQ6ICBkb3VibGUgQ3Vyc29yUmVxdWVzdERlbGl2ZXJ5 VGltZVs4XTsKMTQ0NzQ6ICBkb3VibGUgQ3Vyc29yUmVxdWVzdERlbGl2ZXJ5VGltZVByZWZldGNo WzhdOwoxNDQ3NDogIGRvdWJsZSBSZWFkQmFuZHdpZHRoUGxhbmVMdW1hWzhdOwoxNDQ3NDogIGRv dWJsZSBSZWFkQmFuZHdpZHRoUGxhbmVDaHJvbWFbOF07CjE0NDc0OiAgZG91YmxlIERpc3BsYXlQ aXBlTGluZURlbGl2ZXJ5VGltZUx1bWFQcmVmZXRjaFs4XTsKMTQ0NzQ6ICBkb3VibGUgRGlzcGxh eVBpcGVMaW5lRGVsaXZlcnlUaW1lQ2hyb21hUHJlZmV0Y2hbOF07CjE0NDc0OiAgZG91YmxlIERp c3BsYXlQaXBlUmVxdWVzdERlbGl2ZXJ5VGltZUx1bWFQcmVmZXRjaFs4XTsKMTQ0NzQ6ICBkb3Vi bGUgRGlzcGxheVBpcGVSZXF1ZXN0RGVsaXZlcnlUaW1lQ2hyb21hUHJlZmV0Y2hbOF07CjE0NDc0 OiAgZG91YmxlIFBpeGVsUFRFQnl0ZXNQZXJSb3dbOF07CjE0NDc0OiAgZG91YmxlIFBERUFuZE1l dGFQVEVCeXRlc0ZyYW1lWzhdOwoxNDQ3NDogIGRvdWJsZSBNZXRhUm93Qnl0ZVs4XTsKMTQ0NzQ6 ICBkb3VibGUgUHJlZmV0Y2hTb3VyY2VMaW5lc1lbOF07CjE0NDc0OiAgZG91YmxlIFJlcXVpcmVk UHJlZmV0Y2hQaXhEYXRhQldMdW1hWzhdOwoxNDQ3NDogIGRvdWJsZSBSZXF1aXJlZFByZWZldGNo UGl4RGF0YUJXQ2hyb21hWzhdOwoxNDQ3NDogIGRvdWJsZSBQcmVmZXRjaFNvdXJjZUxpbmVzQ1s4 XTsKMTQ0NzQ6ICBkb3VibGUgUFNDTF9USFJPVUdIUFVUX0xVTUFbOF07CjE0NDc0OiAgZG91Ymxl IFBTQ0xfVEhST1VHSFBVVF9DSFJPTUFbOF07CjE0NDc0OiAgZG91YmxlIERTQ0NMS19jYWxjdWxh dGVkWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEU0NEZWxheVs4XTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgTWF4VlN0YXJ0dXBMaW5lc1s4XTsKMTQ0NzQ6ICBkb3VibGUgRFBQQ0xLVXNpbmdTaW5n bGVEUFBbOF07CjE0NDc0OiAgZG91YmxlIERQUENMS1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg RENDWU1heFVuY29tcHJlc3NlZEJsb2NrWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEQ0NZTWF4 Q29tcHJlc3NlZEJsb2NrWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEQ0NZSW5kZXBlbmRlbnQ2 NEJ5dGVCbG9ja1s4XTsKMTQ0NzQ6ICBkb3VibGUgTWF4aW11bURDQ0NvbXByZXNzaW9uWVN1cmZh Y2VbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IEJsb2NrSGVpZ2h0MjU2Qnl0ZXNZWzhdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBCbG9ja0hlaWdodDI1NkJ5dGVzQ1s4XTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgQmxvY2tXaWR0aDI1NkJ5dGVzWVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgQmxvY2tX aWR0aDI1NkJ5dGVzQ1s4XTsKMTQ0NzQ6ICBkb3VibGUgWEZDU2xhdmVWVXBkYXRlT2Zmc2V0Wzhd OwoxNDQ3NDogIGRvdWJsZSBYRkNTbGF2ZVZ1cGRhdGVXaWR0aFs4XTsKMTQ0NzQ6ICBkb3VibGUg WEZDU2xhdmVWUmVhZHlPZmZzZXRbOF07CjE0NDc0OiAgZG91YmxlIFhGQ1RyYW5zZmVyRGVsYXlb OF07CjE0NDc0OiAgZG91YmxlIFhGQ1ByZWNoYXJnZURlbGF5WzhdOwoxNDQ3NDogIGRvdWJsZSBY RkNSZW1vdGVTdXJmYWNlRmxpcExhdGVuY3lbOF07CjE0NDc0OiAgZG91YmxlIFhGQ1ByZWZldGNo TWFyZ2luWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX3Jvd193aWR0aF9sdW1hX3ViWzhd OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkcHRlX3Jvd193aWR0aF9jaHJvbWFfdWJbOF07CjE0NDc0 OiAgZG91YmxlIEZ1bGxERVRCdWZmZXJpbmdUaW1lWVs4XTsKMTQ0NzQ6ICBkb3VibGUgRnVsbERF VEJ1ZmZlcmluZ1RpbWVDWzhdOwoxNDQ3NDogIGRvdWJsZSBEU1RfWV9QRVJfUFRFX1JPV19OT01f TFs4XTsKMTQ0NzQ6ICBkb3VibGUgRFNUX1lfUEVSX1BURV9ST1dfTk9NX0NbOF07CjE0NDc0OiAg ZG91YmxlIERTVF9ZX1BFUl9NRVRBX1JPV19OT01fTFs4XTsKMTQ0NzQ6ICBkb3VibGUgVGltZVBl ck1ldGFDaHVua05vbWluYWxbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJNZXRhQ2h1bmtWQmxh bmtbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJNZXRhQ2h1bmtGbGlwWzhdOwoxNDQ3NDogIHVu c2lnbmVkIGludCBzd2F0aF93aWR0aF9sdW1hX3ViWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBz d2F0aF93aWR0aF9jaHJvbWFfdWJbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFBpeGVsUFRFUmVx V2lkdGhZWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBQaXhlbFBURVJlcUhlaWdodFlbOF07CjE0 NDc0OiAgdW5zaWduZWQgaW50IFBURVJlcXVlc3RTaXplWVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgUGl4ZWxQVEVSZXFXaWR0aENbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFBpeGVsUFRFUmVx SGVpZ2h0Q1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgUFRFUmVxdWVzdFNpemVDWzhdOwoxNDQ3 NDogIGRvdWJsZSB0aW1lX3Blcl9wdGVfZ3JvdXBfbm9tX2x1bWFbOF07CjE0NDc0OiAgZG91Ymxl IHRpbWVfcGVyX3B0ZV9ncm91cF9ub21fY2hyb21hWzhdOwoxNDQ3NDogIGRvdWJsZSB0aW1lX3Bl cl9wdGVfZ3JvdXBfdmJsYW5rX2x1bWFbOF07CjE0NDc0OiAgZG91YmxlIHRpbWVfcGVyX3B0ZV9n cm91cF92YmxhbmtfY2hyb21hWzhdOwoxNDQ3NDogIGRvdWJsZSB0aW1lX3Blcl9wdGVfZ3JvdXBf ZmxpcF9sdW1hWzhdOwoxNDQ3NDogIGRvdWJsZSB0aW1lX3Blcl9wdGVfZ3JvdXBfZmxpcF9jaHJv bWFbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJWTUdyb3VwVkJsYW5rWzhdOwoxNDQ3NDogIGRv dWJsZSBUaW1lUGVyVk1Hcm91cEZsaXBbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJWTVJlcXVl c3RWQmxhbmtbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJWTVJlcXVlc3RGbGlwWzhdOwoxNDQ3 NDogIHVuc2lnbmVkIGludCBkcGRlMF9ieXRlc19wZXJfZnJhbWVfdWJfbFs4XTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgbWV0YV9wdGVfYnl0ZXNfcGVyX2ZyYW1lX3ViX2xbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IGRwZGUwX2J5dGVzX3Blcl9mcmFtZV91Yl9jWzhdOwoxNDQ3NDogIHVuc2lnbmVk IGludCBtZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVfdWJfY1s4XTsKMTQ0NzQ6ICBkb3VibGUgTGlu ZXNUb0ZpbmlzaFN3YXRoVHJhbnNmZXJTdHV0dGVyQ3JpdGljYWxQbGFuZTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgQnl0ZVBlclBpeGVsWUNyaXRpY2FsUGxhbmU7CjE0NDc0OiAgZG91YmxlIFN3YXRo V2lkdGhZQ3JpdGljYWxQbGFuZTsKMTQ0NzQ6ICBkb3VibGUgTGluZXNJbkRFVFlbOF07CjE0NDc0 OiAgZG91YmxlIExpbmVzSW5ERVRZUm91bmRlZERvd25Ub1N3YXRoWzhdOwoxNDQ3NDogCjE0NDc0 OiAgZG91YmxlIFN3YXRoV2lkdGhTaW5nbGVEUFBDWzhdOwoxNDQ3NDogIGRvdWJsZSBTd2F0aFdp ZHRoQ1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgQnl0ZVBlclBpeGVsWVs4XTsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgQnl0ZVBlclBpeGVsQ1s4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlp bnRlZ2VyMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMjsKMTQ0NzQ6ICBkb3Vi bGUgRmluYWxEUkFNQ2xvY2tDaGFuZ2VMYXRlbmN5OwoxNDQ3NDogIGRvdWJsZSBUZG1kbF92bVs4 XTsKMTQ0NzQ6ICBkb3VibGUgVGRtZGxbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFRoaXNWU3Rh cnR1cDsKMTQ0NzQ6ICBib29sIFdyaXRlYmFja0FsbG93RFJBTUNsb2NrQ2hhbmdlRW5kUG9zaXRp b25bOF07CjE0NDc0OiAgZG91YmxlIERTVF9ZX1BFUl9NRVRBX1JPV19OT01fQ1s4XTsKMTQ0NzQ6 ICBkb3VibGUgVGltZVBlckNocm9tYU1ldGFDaHVua05vbWluYWxbOF07CjE0NDc0OiAgZG91Ymxl IFRpbWVQZXJDaHJvbWFNZXRhQ2h1bmtWQmxhbmtbOF07CjE0NDc0OiAgZG91YmxlIFRpbWVQZXJD aHJvbWFNZXRhQ2h1bmtGbGlwWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBEQ0NDTWF4VW5jb21w cmVzc2VkQmxvY2tbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IERDQ0NNYXhDb21wcmVzc2VkQmxv Y2tbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IERDQ0NJbmRlcGVuZGVudDY0Qnl0ZUJsb2NrWzhd OwoxNDQ3NDogIGRvdWJsZSBWU3RhcnR1cE1hcmdpbjsKMTQ0NzQ6ICBib29sIE5vdEVub3VnaFRp bWVGb3JEeW5hbWljTWV0YWRhdGE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGlu dCBNYXhpbXVtTWF4VlN0YXJ0dXBMaW5lczsKMTQ0NzQ6ICBkb3VibGUgRmFicmljQW5kRFJBTUJh bmR3aWR0aDsKMTQ0NzQ6ICBkb3VibGUgTGluZXNJbkRFVEx1bWE7CjE0NDc0OiAgZG91YmxlIExp bmVzSW5ERVRDaHJvbWE7CjE0NDc0OiAgdW5zaWduZWQgaW50IEltbWVkaWF0ZUZsaXBCeXRlc1s4 XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgTGluZXNJbkRFVENbOF07CjE0NDc0OiAgdW5zaWduZWQg aW50IExpbmVzSW5ERVRDUm91bmRlZERvd25Ub1N3YXRoWzhdOwoxNDQ3NDogIGRvdWJsZSBVcmdl bnRMYXRlbmN5U3VwcG9ydFVzUGVyU3RhdGVbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBV cmdlbnRMYXRlbmN5U3VwcG9ydFVzWzhdOwoxNDQ3NDogIGRvdWJsZSBGYWJyaWNBbmREUkFNQmFu ZHdpZHRoUGVyU3RhdGVbNyArIDFdOwoxNDQ3NDogIGJvb2wgVXJnZW50TGF0ZW5jeVN1cHBvcnRb NyArIDFdWzJdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBTd2F0aFdpZHRoWVBlclN0YXRlWzcgKyAx XVsyXVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRZUGVyU3RhdGVbNyArIDFd WzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBxdWFsX3Jvd19id1s4XTsKMTQ0NzQ6ICBkb3VibGUgcHJl ZmV0Y2hfcm93X2J3WzhdOwoxNDQ3NDogIGRvdWJsZSBwcmVmZXRjaF92bV9id1s4XTsKMTQ0NzQ6 IAoxNDQ3NDogIGRvdWJsZSBQVEVHcm91cFNpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IFBERVBy b2Nlc3NpbmdCdWZJbjY0S0JSZXFzOwoxNDQ3NDogCjE0NDc0OiAgZG91YmxlIE1heFRvdGFsVkFj dGl2ZVJEQmFuZHdpZHRoOwoxNDQ3NDogIGJvb2wgRG9VcmdlbnRMYXRlbmN5QWRqdXN0bWVudDsK MTQ0NzQ6ICBkb3VibGUgVXJnZW50TGF0ZW5jeUFkanVzdG1lbnRGYWJyaWNDbG9ja0NvbXBvbmVu dDsKMTQ0NzQ6ICBkb3VibGUgVXJnZW50TGF0ZW5jeUFkanVzdG1lbnRGYWJyaWNDbG9ja1JlZmVy ZW5jZTsKMTQ0NzQ6ICBkb3VibGUgTWluVXJnZW50TGF0ZW5jeVN1cHBvcnRVczsKMTQ0NzQ6ICBk b3VibGUgTWluRnVsbERFVEJ1ZmZlcmluZ1RpbWU7CjE0NDc0OiAgZG91YmxlIEF2ZXJhZ2VSZWFk QmFuZHdpZHRoR0J5dGVQZXJTZWNvbmQ7CjE0NDc0OiAgYm9vbCBGaXJzdE1haW5QbGFuZTsKMTQ0 NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBWaWV3cG9ydFdpZHRoQ2hyb21hWzhdOwoxNDQ3NDog IHVuc2lnbmVkIGludCBWaWV3cG9ydEhlaWdodENocm9tYVs4XTsKMTQ0NzQ6ICBkb3VibGUgSFJh dGlvQ2hyb21hWzhdOwoxNDQ3NDogIGRvdWJsZSBWUmF0aW9DaHJvbWFbOF07CjE0NDc0OiAgaW50 IFdyaXRlYmFja1NvdXJjZVdpZHRoWzhdOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBNb2RlSXNTdXBw b3J0ZWQ7CjE0NDc0OiAgYm9vbCBPRE1Db21iaW5lNFRvMVN1cHBvcnRlZDsKMTQ0NzQ6IAoxNDQ3 NDogIHVuc2lnbmVkIGludCBTdXJmYWNlV2lkdGhZWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBT dXJmYWNlV2lkdGhDWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBTdXJmYWNlSGVpZ2h0WVs4XTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgU3VyZmFjZUhlaWdodENbOF07CjE0NDc0OiAgdW5zaWduZWQg aW50IFdyaXRlYmFja0hUYXBzWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBXcml0ZWJhY2tWVGFw c1s4XTsKMTQ0NzQ6ICBib29sIERTQ0VuYWJsZVs4XTsKMTQ0NzQ6IAoxNDQ3NDogIGRvdWJsZSBE UkFNQ2xvY2tDaGFuZ2VMYXRlbmN5T3ZlcnJpZGU7CjE0NDc0OiAKMTQ0NzQ6ICBkb3VibGUgR1BV Vk1NaW5QYWdlU2l6ZTsKMTQ0NzQ6ICBkb3VibGUgSG9zdFZNTWluUGFnZVNpemU7CjE0NDc0OiAK MTQ0NzQ6ICBib29sIE1QQ0NvbWJpbmVFbmFibGVbOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IEhv c3RWTU1heE5vbkNhY2hlZFBhZ2VUYWJsZUxldmVsczsKMTQ0NzQ6ICBib29sIER5bmFtaWNNZXRh ZGF0YVZNRW5hYmxlZDsKMTQ0NzQ6ICBkb3VibGUgV3JpdGViYWNrSW50ZXJmYWNlQnVmZmVyU2l6 ZTsKMTQ0NzQ6ICBkb3VibGUgV3JpdGViYWNrTGluZUJ1ZmZlclNpemU7CjE0NDc0OiAKMTQ0NzQ6 ICBkb3VibGUgRENDUmF0ZUx1bWFbOF07CjE0NDc0OiAgZG91YmxlIERDQ1JhdGVDaHJvbWFbOF07 CjE0NDc0OiAKMTQ0NzQ6ICBkb3VibGUgUEhZQ0xLRDE4UGVyU3RhdGVbNyArIDFdOwoxNDQ3NDog IGludCBNaW5Wb2x0YWdlTGV2ZWw7CjE0NDc0OiAgaW50IE1heFZvbHRhZ2VMZXZlbDsKMTQ0NzQ6 IAoxNDQ3NDogIGJvb2wgV3JpdGViYWNrU3VwcG9ydEludGVybGVhdmVBbmRVc2luZ1dob2xlQnVm ZmVyRm9yQVNpbmdsZVN0cmVhbTsKMTQ0NzQ6ICBib29sIE51bWJlck9mSERNSUZSTFN1cHBvcnQ7 CjE0NDc0OiAgdW5zaWduZWQgaW50IE1heE51bUhETUlGUkxPdXRwdXRzOwoxNDQ3NDogIGludCBB dWRpb1NhbXBsZVJhdGVbOF07CjE0NDc0OiAgaW50IEF1ZGlvU2FtcGxlTGF5b3V0WzhdOwoxNDQ3 NDogCjE0NDc0OiAgaW50IFBlcmNlbnRNYXJnaW5PdmVyTWluaW11bVJlcXVpcmVkRENGQ0xLOwox NDQ3NDogIGJvb2wgRHluYW1pY01ldGFkYXRhU3VwcG9ydGVkWzcgKyAxXVsyXTsKMTQ0NzQ6ICBl bnVtIGltbWVkaWF0ZV9mbGlwX3JlcXVpcmVtZW50IEltbWVkaWF0ZUZsaXBSZXF1aXJlbWVudDsK MTQ0NzQ6ICBkb3VibGUgREVUQnVmZmVyU2l6ZVlUaGlzU3RhdGVbOF07CjE0NDc0OiAgZG91Ymxl IERFVEJ1ZmZlclNpemVDVGhpc1N0YXRlWzhdOwoxNDQ3NDogIGJvb2wgTm9VcmdlbnRMYXRlbmN5 SGlkaW5nWzhdOwoxNDQ3NDogIGJvb2wgTm9VcmdlbnRMYXRlbmN5SGlkaW5nUHJlWzhdOwoxNDQ3 NDogIGludCBzd2F0aF93aWR0aF9sdW1hX3ViX3RoaXNfc3RhdGVbOF07CjE0NDc0OiAgaW50IHN3 YXRoX3dpZHRoX2Nocm9tYV91Yl90aGlzX3N0YXRlWzhdOwoxNDQ3NDogIGRvdWJsZSBVcmdMYXRl bmN5WzcgKyAxXTsKMTQ0NzQ6ICBkb3VibGUgVkFjdGl2ZUN1cnNvckJhbmR3aWR0aFs3ICsgMV1b Ml1bOF07CjE0NDc0OiAgZG91YmxlIFZBY3RpdmVQaXhlbEJhbmR3aWR0aFs3ICsgMV1bMl1bOF07 CjE0NDc0OiAgYm9vbCBOb1RpbWVGb3JQcmVmZXRjaFs3ICsgMV1bMl1bOF07CjE0NDc0OiAgYm9v bCBOb1RpbWVGb3JEeW5hbWljTWV0YWRhdGFbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBk cHRlX3Jvd19iYW5kd2lkdGhbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBtZXRhX3Jvd19i YW5kd2lkdGhbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGRvdWJsZSBERVRCdWZmZXJTaXplWUFsbFN0 YXRlc1s3ICsgMV1bMl1bOF07CjE0NDc0OiAgZG91YmxlIERFVEJ1ZmZlclNpemVDQWxsU3RhdGVz WzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICBpbnQgc3dhdGhfd2lkdGhfbHVtYV91Yl9hbGxfc3RhdGVz WzcgKyAxXVsyXVs4XTsKMTQ0NzQ6ICBpbnQgc3dhdGhfd2lkdGhfY2hyb21hX3ViX2FsbF9zdGF0 ZXNbNyArIDFdWzJdWzhdOwoxNDQ3NDogIGJvb2wgTm90VXJnZW50TGF0ZW5jeUhpZGluZ1s3ICsg MV1bMl07CjE0NDc0OiAgdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0WUFsbFN0YXRlc1s3ICsgMV1b Ml1bOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0Q0FsbFN0YXRlc1s3ICsgMV1b Ml1bOF07CjE0NDc0OiAgdW5zaWduZWQgaW50IFN3YXRoV2lkdGhZQWxsU3RhdGVzWzcgKyAxXVsy XVs4XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgU3dhdGhXaWR0aENBbGxTdGF0ZXNbNyArIDFdWzJd WzhdOwoxNDQ3NDogIGRvdWJsZSBUb3RhbERQVEVSb3dCYW5kd2lkdGhbNyArIDFdWzJdOwoxNDQ3 NDogIGRvdWJsZSBUb3RhbE1ldGFSb3dCYW5kd2lkdGhbNyArIDFdWzJdOwoxNDQ3NDogIGRvdWJs ZSBUb3RhbFZBY3RpdmVDdXJzb3JCYW5kd2lkdGhbNyArIDFdWzJdOwoxNDQ3NDogIGRvdWJsZSBU b3RhbFZBY3RpdmVQaXhlbEJhbmR3aWR0aFs3ICsgMV1bMl07CjE0NDc0OiAgYm9vbCBVc2VNaW5p bXVtUmVxdWlyZWREQ0ZDTEs7CjE0NDc0OiAgZG91YmxlIFdyaXRlYmFja0RlbGF5VGltZVs4XTsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgRENDWUluZGVwZW5kZW50QmxvY2tbOF07CjE0NDc0OiAgdW5z aWduZWQgaW50IERDQ0NJbmRlcGVuZGVudEJsb2NrWzhdOwoxNDQ3NDogIHVuc2lnbmVkIGludCBk dW1teWludGVnZXIxNTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMTY7CjE0NDc0 OiAgdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjE3OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1t eWludGVnZXIxODsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMTk7CjE0NDc0OiAg dW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjIwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1teWlu dGVnZXIyMTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMjI7CjE0NDc0OiAgdW5z aWduZWQgaW50IGR1bW15aW50ZWdlcjIzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1teWludGVn ZXIyNDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMjU7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGR1bW15aW50ZWdlcjI2OwoxNDQ3NDogIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIy NzsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyMjg7CjE0NDc0OiAgdW5zaWduZWQg aW50IGR1bW15aW50ZWdlcjI5OwoxNDQ3NDogIGJvb2wgZHVtbXlzdHJpbmdbOF07CjE0NDc0OiAg ZG91YmxlIEJQUDsKMTQ0NzQ6ICBlbnVtIG9kbV9jb21iaW5lX3BvbGljeSBPRE1Db21iaW5lUG9s aWN5OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBDYWxjdWxhdGVNaW5BbmRNYXhQcmVm ZXRjaE1vZGUoCjE0NDc0OiAgIGVudW0gc2VsZl9yZWZyZXNoX2FmZmluaXR5IEFsbG93RFJBTVNl bGZSZWZyZXNoT3JEUkFNQ2xvY2tDaGFuZ2VJblZibGFuaywKMTQ0NzQ6ICAgdW5zaWduZWQgaW50 ICpNaW5QcmVmZXRjaE1vZGUsCjE0NDc0OiAgIHVuc2lnbmVkIGludCAqTWF4UHJlZmV0Y2hNb2Rl KTsKMTQ0NzQ6IAoxNDQ3NDogZG91YmxlIENhbGN1bGF0ZVdyaXRlQmFja0RJU1BDTEsoCjE0NDc0 OiAgIGVudW0gc291cmNlX2Zvcm1hdF9jbGFzcyBXcml0ZWJhY2tQaXhlbEZvcm1hdCwKMTQ0NzQ6 ICAgZG91YmxlIFBpeGVsQ2xvY2ssCjE0NDc0OiAgIGRvdWJsZSBXcml0ZWJhY2tIUmF0aW8sCjE0 NDc0OiAgIGRvdWJsZSBXcml0ZWJhY2tWUmF0aW8sCjE0NDc0OiAgIHVuc2lnbmVkIGludCBXcml0 ZWJhY2tMdW1hSFRhcHMsCjE0NDc0OiAgIHVuc2lnbmVkIGludCBXcml0ZWJhY2tMdW1hVlRhcHMs CjE0NDc0OiAgIHVuc2lnbmVkIGludCBXcml0ZWJhY2tDaHJvbWFIVGFwcywKMTQ0NzQ6ICAgdW5z aWduZWQgaW50IFdyaXRlYmFja0Nocm9tYVZUYXBzLAoxNDQ3NDogICBkb3VibGUgV3JpdGViYWNr RGVzdGluYXRpb25XaWR0aCwKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IEhUb3RhbCwKMTQ0NzQ6ICAg dW5zaWduZWQgaW50IFdyaXRlYmFja0Nocm9tYUxpbmVCdWZmZXJXaWR0aCk7CjE0NDc0OiAjIDMx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlf bW9kZV9saWIuaCIgMgoxNDQ3NDogCjE0NDc0OiBlbnVtIGRtbF9wcm9qZWN0IHsKMTQ0NzQ6ICBE TUxfUFJPSkVDVF9VTkRFRklORUQsCjE0NDc0OiAgRE1MX1BST0pFQ1RfUkFWRU4xLAoxNDQ3NDog IERNTF9QUk9KRUNUX05BVkkxMCwKMTQ0NzQ6ICBETUxfUFJPSkVDVF9OQVZJMTB2MiwKMTQ0NzQ6 ICBETUxfUFJPSkVDVF9EQ04yMSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkaXNw bGF5X21vZGVfbGliOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZG1sX2Z1bmNzIHsKMTQ0NzQ6ICB2 b2lkICgqcnFfZGxnX2dldF9kbGdfcmVnKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkaXNwbGF5X21vZGVf bGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgIGRpc3BsYXlfZGxnX3JlZ3Nfc3QgKmRsZ19yZWdzLAox NDQ3NDogICAgZGlzcGxheV90dHVfcmVnc19zdCAqdHR1X3JlZ3MsCjE0NDc0OiAgICBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqZTJlX3BpcGVfcGFyYW0sCjE0NDc0OiAgICBjb25zdCB1bnNp Z25lZCBpbnQgbnVtX3BpcGVzLAoxNDQ3NDogICAgY29uc3QgdW5zaWduZWQgaW50IHBpcGVfaWR4 LAoxNDQ3NDogICAgY29uc3QgYm9vbCBjc3RhdGVfZW4sCjE0NDc0OiAgICBjb25zdCBib29sIHBz dGF0ZV9lbiwKMTQ0NzQ6ICAgIGNvbnN0IGJvb2wgdm1fZW4sCjE0NDc0OiAgICBjb25zdCBib29s IGlnbm9yZV92aWV3cG9ydF9wb3MsCjE0NDc0OiAgICBjb25zdCBib29sIGltbWVkaWF0ZV9mbGlw X3N1cHBvcnQpOwoxNDQ3NDogIHZvaWQgKCpycV9kbGdfZ2V0X3JxX3JlZykoCjE0NDc0OiAgIHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKMTQ0NzQ6ICAgZGlzcGxheV9ycV9yZWdz X3N0ICpycV9yZWdzLAoxNDQ3NDogICBjb25zdCBkaXNwbGF5X3BpcGVfcGFyYW1zX3N0IHBpcGVf cGFyYW0pOwoxNDQ3NDogIHZvaWQgKCpyZWNhbGN1bGF0ZSkoc3RydWN0IGRpc3BsYXlfbW9kZV9s aWIgKm1vZGVfbGliKTsKMTQ0NzQ6ICB2b2lkICgqdmFsaWRhdGUpKHN0cnVjdCBkaXNwbGF5X21v ZGVfbGliICptb2RlX2xpYik7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGlzcGxh eV9tb2RlX2xpYiB7CjE0NDc0OiAgc3RydWN0IF92Y3NfZHBpX2lwX3BhcmFtc19zdCBpcDsKMTQ0 NzQ6ICBzdHJ1Y3QgX3Zjc19kcGlfc29jX2JvdW5kaW5nX2JveF9zdCBzb2M7CjE0NDc0OiAgZW51 bSBkbWxfcHJvamVjdCBwcm9qZWN0OwoxNDQ3NDogIHN0cnVjdCB2YmFfdmFyc19zdCB2YmE7CjE0 NDc0OiAgc3RydWN0IGRhbF9sb2dnZXIgKmxvZ2dlcjsKMTQ0NzQ6ICBzdHJ1Y3QgZG1sX2Z1bmNz IGZ1bmNzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkbWxfaW5pdF9pbnN0YW5jZShz dHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbGliLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgX3Zjc19k cGlfc29jX2JvdW5kaW5nX2JveF9zdCAqc29jX2JiLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgX3Zj c19kcGlfaXBfcGFyYW1zX3N0ICppcF9wYXJhbXMsCjE0NDc0OiAgIGVudW0gZG1sX3Byb2plY3Qg cHJvamVjdCk7CjE0NDc0OiAKMTQ0NzQ6IGNvbnN0IGNoYXIgKmRtbF9nZXRfc3RhdHVzX21lc3Nh Z2UoZW51bSBkbV92YWxpZGF0aW9uX3N0YXR1cyBzdGF0dXMpOwoxNDQ3NDogIyA0MSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDIKMTQ0NzQ6ICMgNTIg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIgoxNDQ3NDog c3RydWN0IGRjX3ZlcnNpb25zIHsKMTQ0NzQ6ICBjb25zdCBjaGFyICpkY192ZXI7CjE0NDc0OiAg c3RydWN0IGRtY3VfdmVyc2lvbiBkbWN1X3ZlcnNpb247CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBlbnVtIGRwX3Byb3RvY29sX3ZlcnNpb24gewoxNDQ3NDogIERQX1ZFUlNJT05fMV80LAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19wbGFuZV90eXBlIHsKMTQ0NzQ6ICBEQ19QTEFO RV9UWVBFX0lOVkFMSUQsCjE0NDc0OiAgRENfUExBTkVfVFlQRV9EQ0VfUkdCLAoxNDQ3NDogIERD X1BMQU5FX1RZUEVfRENFX1VOREVSTEFZLAoxNDQ3NDogIERDX1BMQU5FX1RZUEVfRENOX1VOSVZF UlNBTCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19wbGFuZV9jYXAgewoxNDQ3 NDogIGVudW0gZGNfcGxhbmVfdHlwZSB0eXBlOwoxNDQ3NDogIHVpbnQzMl90IGJsZW5kc193aXRo X2Fib3ZlIDogMTsKMTQ0NzQ6ICB1aW50MzJfdCBibGVuZHNfd2l0aF9iZWxvdyA6IDE7CjE0NDc0 OiAgdWludDMyX3QgcGVyX3BpeGVsX2FscGhhIDogMTsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDog ICB1aW50MzJfdCBhcmdiODg4OCA6IDE7CjE0NDc0OiAgIHVpbnQzMl90IG52MTIgOiAxOwoxNDQ3 NDogICB1aW50MzJfdCBmcDE2IDogMTsKMTQ0NzQ6ICAgdWludDMyX3QgcDAxMCA6IDE7CjE0NDc0 OiAgIHVpbnQzMl90IGF5dXYgOiAxOwoxNDQ3NDogIH0gcGl4ZWxfZm9ybWF0X3N1cHBvcnQ7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDMyX3Qg YXJnYjg4ODg7CjE0NDc0OiAgIHVpbnQzMl90IG52MTI7CjE0NDc0OiAgIHVpbnQzMl90IGZwMTY7 CjE0NDc0OiAgfSBtYXhfdXBzY2FsZV9mYWN0b3I7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDMyX3QgYXJnYjg4ODg7CjE0NDc0OiAgIHVpbnQz Ml90IG52MTI7CjE0NDc0OiAgIHVpbnQzMl90IGZwMTY7CjE0NDc0OiAgfSBtYXhfZG93bnNjYWxl X2ZhY3RvcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19jYXBzIHsKMTQ0NzQ6 ICB1aW50MzJfdCBtYXhfc3RyZWFtczsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfbGlua3M7CjE0NDc0 OiAgdWludDMyX3QgbWF4X2F1ZGlvczsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfc2xhdmVfcGxhbmVz OwoxNDQ3NDogIHVpbnQzMl90IG1heF9wbGFuZXM7CjE0NDc0OiAgdWludDMyX3QgbWF4X2Rvd25z Y2FsZV9yYXRpbzsKMTQ0NzQ6ICB1aW50MzJfdCBpMmNfc3BlZWRfaW5fa2h6OwoxNDQ3NDogIHVp bnQzMl90IGRtZGF0YV9hbGxvY19zaXplOwoxNDQ3NDogIHVuc2lnbmVkIGludCBtYXhfY3Vyc29y X3NpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF92aWRlb193aWR0aDsKMTQ0NzQ6ICBpbnQg bGluZWFyX3BpdGNoX2FsaWdubWVudDsKMTQ0NzQ6ICBib29sIGRjY19jb25zdF9jb2xvcjsKMTQ0 NzQ6ICBib29sIGR5bmFtaWNfYXVkaW87CjE0NDc0OiAgYm9vbCBpc19hcHU7CjE0NDc0OiAgYm9v bCBkdWFsX2xpbmtfZHZpOwoxNDQ3NDogIGJvb2wgcG9zdF9ibGVuZF9jb2xvcl9wcm9jZXNzaW5n OwoxNDQ3NDogIGJvb2wgZm9yY2VfZHBfdHBzNF9mb3JfY3AyNTIwOwoxNDQ3NDogIGJvb2wgZGlz YWJsZV9kcF9jbGtfc2hhcmU7CjE0NDc0OiAgYm9vbCBwc3Bfc2V0dXBfcGFuZWxfbW9kZTsKMTQ0 NzQ6ICBib29sIGV4dGVuZGVkX2F1eF90aW1lb3V0X3N1cHBvcnQ7CjE0NDc0OiAgYm9vbCBkbWN1 Yl9zdXBwb3J0OwoxNDQ3NDogIGJvb2wgaHdfM2RfbHV0OwoxNDQ3NDogIGVudW0gZHBfcHJvdG9j b2xfdmVyc2lvbiBtYXhfZHBfcHJvdG9jb2xfdmVyc2lvbjsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxh bmVfY2FwIHBsYW5lc1s2XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19idWdf d2EgewoxNDQ3NDogIGJvb2wgbm9fY29ubmVjdF9waHlfY29uZmlnOwoxNDQ3NDogIGJvb2wgZGVk Y24yMF8zMDVfd2E7CjE0NDc0OiAgYm9vbCBza2lwX2Nsb2NrX3VwZGF0ZTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19kY2Nfc3VyZmFjZV9wYXJhbSB7CjE0NDc0OiAgc3RydWN0 IGRjX3NpemUgc3VyZmFjZV9zaXplOwoxNDQ3NDogIGVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQg Zm9ybWF0OwoxNDQ3NDogIGVudW0gc3dpenpsZV9tb2RlX3ZhbHVlcyBzd2l6emxlX21vZGU7CjE0 NDc0OiAgZW51bSBkY19zY2FuX2RpcmVjdGlvbiBzY2FuOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGRjX2RjY19zZXR0aW5nIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbWF4X2NvbXBy ZXNzZWRfYmxrX3NpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IG1heF91bmNvbXByZXNzZWRfYmxr X3NpemU7CjE0NDc0OiAgYm9vbCBpbmRlcGVuZGVudF82NGJfYmxrczsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdXJmYWNlX2RjY19jYXAgewoxNDQ3NDogIHVuaW9uIHsKMTQ0 NzQ6ICAgc3RydWN0IHsKMTQ0NzQ6ICAgIHN0cnVjdCBkY19kY2Nfc2V0dGluZyByZ2I7CjE0NDc0 OiAgIH0gZ3JwaDsKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgc3RydWN0IGRj X2RjY19zZXR0aW5nIGx1bWE7CjE0NDc0OiAgICBzdHJ1Y3QgZGNfZGNjX3NldHRpbmcgY2hyb21h OwoxNDQ3NDogICB9IHZpZGVvOwoxNDQ3NDogIH07CjE0NDc0OiAKMTQ0NzQ6ICBib29sIGNhcGFi bGU7CjE0NDc0OiAgYm9vbCBjb25zdF9jb2xvcl9zdXBwb3J0OwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGRjX3N0YXRpY19zY3JlZW5fcGFyYW1zIHsKMTQ0NzQ6ICBzdHJ1Y3Qgewox NDQ3NDogICBib29sIGZvcmNlX3RyaWdnZXI7CjE0NDc0OiAgIGJvb2wgY3Vyc29yX3VwZGF0ZTsK MTQ0NzQ6ICAgYm9vbCBzdXJmYWNlX3VwZGF0ZTsKMTQ0NzQ6ICAgYm9vbCBvdmVybGF5X3VwZGF0 ZTsKMTQ0NzQ6ICB9IHRyaWdnZXJzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fZnJhbWVzOwox NDQ3NDogfTsKMTQ0NzQ6ICMgMTk3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZGMuaCIKMTQ0NzQ6IGVudW0gc3VyZmFjZV91cGRhdGVfdHlwZSB7CjE0NDc0OiAg VVBEQVRFX1RZUEVfRkFTVCwKMTQ0NzQ6ICBVUERBVEVfVFlQRV9NRUQsCjE0NDc0OiAgVVBEQVRF X1RZUEVfRlVMTCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjOwox NDQ3NDogc3RydWN0IGRjX3BsYW5lX3N0YXRlOwoxNDQ3NDogc3RydWN0IGRjX3N0YXRlOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19jYXBfZnVuY3MgewoxNDQ3NDogIGJvb2wgKCpn ZXRfZGNjX2NvbXByZXNzaW9uX2NhcCkoY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgIGNv bnN0IHN0cnVjdCBkY19kY2Nfc3VyZmFjZV9wYXJhbSAqaW5wdXQsCjE0NDc0OiAgICBzdHJ1Y3Qg ZGNfc3VyZmFjZV9kY2NfY2FwICpvdXRwdXQpOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGxpbmtfdHJhaW5pbmdfc2V0dGluZ3M7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZGNfY29uZmlnIHsKMTQ0NzQ6ICBib29sIGdwdV92bV9zdXBwb3J0OwoxNDQ3NDog IGJvb2wgZGlzYWJsZV9kaXNwX3BsbF9zaGFyaW5nOwoxNDQ3NDogIGJvb2wgZmJjX3N1cHBvcnQ7 CjE0NDc0OiAgYm9vbCBvcHRpbWl6ZV9lZHBfbGlua19yYXRlOwoxNDQ3NDogIGJvb2wgZGlzYWJs ZV9mcmFjdGlvbmFsX3B3bTsKMTQ0NzQ6ICBib29sIGFsbG93X3NlYW1sZXNzX2Jvb3Rfb3B0aW1p emF0aW9uOwoxNDQ3NDogIGJvb2wgcG93ZXJfZG93bl9kaXNwbGF5X29uX2Jvb3Q7CjE0NDc0OiAg Ym9vbCBlZHBfbm90X2Nvbm5lY3RlZDsKMTQ0NzQ6ICBib29sIGZvcmNlX2VudW1fZWRwOwoxNDQ3 NDogIGJvb2wgZm9yY2VkX2Nsb2NrczsKMTQ0NzQ6ICBib29sIGRpc2FibGVfZXh0ZW5kZWRfdGlt ZW91dF9zdXBwb3J0OwoxNDQ3NDogIGJvb2wgbXVsdGlfbW9uX3BwX21jbGtfc3dpdGNoOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB2aXN1YWxfY29uZmlybSB7CjE0NDc0OiAgVklTVUFM X0NPTkZJUk1fRElTQUJMRSA9IDAsCjE0NDc0OiAgVklTVUFMX0NPTkZJUk1fU1VSRkFDRSA9IDEs CjE0NDc0OiAgVklTVUFMX0NPTkZJUk1fSERSID0gMiwKMTQ0NzQ6ICBWSVNVQUxfQ09ORklSTV9N UENUUkVFID0gNCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNjX29wdGlvbiB7CjE0 NDc0OiAgRENDX0VOQUJMRSA9IDAsCjE0NDc0OiAgRENDX0RJU0FCTEUgPSAxLAoxNDQ3NDogIERD Q19IQUxGX1JFUV9ESVNBTEJFID0gMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gcGlw ZV9zcGxpdF9wb2xpY3kgewoxNDQ3NDogIE1QQ19TUExJVF9EWU5BTUlDID0gMCwKMTQ0NzQ6ICBN UENfU1BMSVRfQVZPSUQgPSAxLAoxNDQ3NDogIE1QQ19TUExJVF9BVk9JRF9NVUxUX0RJU1AgPSAy LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSB3bV9yZXBvcnRfbW9kZSB7CjE0NDc0OiAg V01fUkVQT1JUX0RFRkFVTFQgPSAwLAoxNDQ3NDogIFdNX1JFUE9SVF9PVkVSUklERSA9IDEsCjE0 NDc0OiB9OwoxNDQ3NDogZW51bSBkdG1fcHN0YXRlewoxNDQ3NDogIGR0bV9sZXZlbF9wMCA9IDAs CjE0NDc0OiAgZHRtX2xldmVsX3AxLAoxNDQ3NDogIGR0bV9sZXZlbF9wMiwKMTQ0NzQ6ICBkdG1f bGV2ZWxfcDMsCjE0NDc0OiAgZHRtX2xldmVsX3A0LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBkY25fcHdyX3N0YXRlIHsKMTQ0NzQ6ICBEQ05fUFdSX1NUQVRFX1VOS05PV04gPSAtMSwK MTQ0NzQ6ICBEQ05fUFdSX1NUQVRFX01JU1NJT05fTU9ERSA9IDAsCjE0NDc0OiAgRENOX1BXUl9T VEFURV9MT1dfUE9XRVIgPSAzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY2xvY2tzIHsKMTQ0NzQ6ICBpbnQgZGlzcGNs a19raHo7CjE0NDc0OiAgaW50IGRwcGNsa19raHo7CjE0NDc0OiAgaW50IGRjZmNsa19raHo7CjE0 NDc0OiAgaW50IHNvY2Nsa19raHo7CjE0NDc0OiAgaW50IGRjZmNsa19kZWVwX3NsZWVwX2toejsK MTQ0NzQ6ICBpbnQgZmNsa19raHo7CjE0NDc0OiAgaW50IHBoeWNsa19raHo7CjE0NDc0OiAgaW50 IGRyYW1jbGtfa2h6OwoxNDQ3NDogIGJvb2wgcF9zdGF0ZV9jaGFuZ2Vfc3VwcG9ydDsKMTQ0NzQ6 ICBlbnVtIGRjbl9wd3Jfc3RhdGUgcHdyX3N0YXRlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgYm9vbCBwcmV2X3Bfc3RhdGVfY2hhbmdlX3N1cHBvcnQ7CjE0NDc0OiAg ZW51bSBkdG1fcHN0YXRlIGR0bV9sZXZlbDsKMTQ0NzQ6ICBpbnQgbWF4X3N1cHBvcnRlZF9kcHBj bGtfa2h6OwoxNDQ3NDogIGludCBtYXhfc3VwcG9ydGVkX2Rpc3BjbGtfa2h6OwoxNDQ3NDogIGlu dCBid19kcHBjbGtfa2h6OwoxNDQ3NDogIGludCBid19kaXNwY2xrX2toejsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19id192YWxpZGF0aW9uX3Byb2ZpbGUgewoxNDQ3NDogIGJv b2wgZW5hYmxlOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsX3RpY2tz OwoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyB2b2x0YWdlX2xldmVsX3RpY2tzOwoxNDQ3NDog IHVuc2lnbmVkIGxvbmcgbG9uZyB3YXRlcm1hcmtfdGlja3M7CjE0NDc0OiAgdW5zaWduZWQgbG9u ZyBsb25nIHJxX2RsZ190aWNrczsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyB0 b3RhbF9jb3VudDsKMTQ0NzQ6ICB1bnNpZ25lZCBsb25nIGxvbmcgc2tpcF9mYXN0X2NvdW50Owox NDQ3NDogIHVuc2lnbmVkIGxvbmcgbG9uZyBza2lwX3Bhc3NfY291bnQ7CjE0NDc0OiAgdW5zaWdu ZWQgbG9uZyBsb25nIHNraXBfZmFpbF9jb3VudDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDM0OSAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiCjE0NDc0OiBzdHJ1 Y3QgZGNfZGVidWdfb3B0aW9ucyB7CjE0NDc0OiAgZW51bSB2aXN1YWxfY29uZmlybSB2aXN1YWxf Y29uZmlybTsKMTQ0NzQ6ICBib29sIHNhbml0eV9jaGVja3M7CjE0NDc0OiAgYm9vbCBtYXhfZGlz cF9jbGs7CjE0NDc0OiAgYm9vbCBzdXJmYWNlX3RyYWNlOwoxNDQ3NDogIGJvb2wgdGltaW5nX3Ry YWNlOwoxNDQ3NDogIGJvb2wgY2xvY2tfdHJhY2U7CjE0NDc0OiAgYm9vbCB2YWxpZGF0aW9uX3Ry YWNlOwoxNDQ3NDogIGJvb2wgYmFuZHdpZHRoX2NhbGNzX3RyYWNlOwoxNDQ3NDogIGludCBtYXhf ZG93bnNjYWxlX3NyY193aWR0aDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBkaXNhYmxl X3N0dXR0ZXI7CjE0NDc0OiAgYm9vbCB1c2VfbWF4X2xiOwoxNDQ3NDogIGVudW0gZGNjX29wdGlv biBkaXNhYmxlX2RjYzsKMTQ0NzQ6ICBlbnVtIHBpcGVfc3BsaXRfcG9saWN5IHBpcGVfc3BsaXRf cG9saWN5OwoxNDQ3NDogIGJvb2wgZm9yY2Vfc2luZ2xlX2Rpc3BfcGlwZV9zcGxpdDsKMTQ0NzQ6 ICBib29sIHZvbHRhZ2VfYWxpZ25fZmNsazsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgZGlzYWJsZV9k ZnNfYnlwYXNzOwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9kcHBfcG93ZXJfZ2F0ZTsKMTQ0NzQ6ICBi b29sIGRpc2FibGVfaHVicF9wb3dlcl9nYXRlOwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9kc2NfcG93 ZXJfZ2F0ZTsKMTQ0NzQ6ICBpbnQgZHNjX21pbl9zbGljZV9oZWlnaHRfb3ZlcnJpZGU7CjE0NDc0 OiAgaW50IGRzY19icHBfaW5jcmVtZW50X2RpdjsKMTQ0NzQ6ICBib29sIG5hdGl2ZTQyMl9zdXBw b3J0OwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9wcGxpYl93bV9yYW5nZTsKMTQ0NzQ6ICBlbnVtIHdt X3JlcG9ydF9tb2RlIHBwbGliX3dtX3JlcG9ydF9tb2RlOwoxNDQ3NDogIHVuc2lnbmVkIGludCBt aW5fZGlzcF9jbGtfa2h6OwoxNDQ3NDogIHVuc2lnbmVkIGludCBtaW5fZHBwX2Nsa19raHo7CjE0 NDc0OiAgaW50IHNyX2V4aXRfdGltZV9kcG0wX25zOwoxNDQ3NDogIGludCBzcl9lbnRlcl9wbHVz X2V4aXRfdGltZV9kcG0wX25zOwoxNDQ3NDogIGludCBzcl9leGl0X3RpbWVfbnM7CjE0NDc0OiAg aW50IHNyX2VudGVyX3BsdXNfZXhpdF90aW1lX25zOwoxNDQ3NDogIGludCB1cmdlbnRfbGF0ZW5j eV9uczsKMTQ0NzQ6ICB1aW50MzJfdCB1bmRlcmZsb3dfYXNzZXJ0X2RlbGF5X3VzOwoxNDQ3NDog IGludCBwZXJjZW50X29mX2lkZWFsX2RyYW1idzsKMTQ0NzQ6ICBpbnQgZHJhbV9jbG9ja19jaGFu Z2VfbGF0ZW5jeV9uczsKMTQ0NzQ6ICBib29sIG9wdGltaXplZF93YXRlcm1hcms7CjE0NDc0OiAg aW50IGFsd2F5c19zY2FsZTsKMTQ0NzQ6ICBib29sIGRpc2FibGVfcHBsaWJfY2xvY2tfcmVxdWVz dDsKMTQ0NzQ6ICBib29sIGRpc2FibGVfY2xvY2tfZ2F0ZTsKMTQ0NzQ6ICBib29sIGRpc2FibGVf ZG1jdTsKMTQ0NzQ6ICBib29sIGRpc2FibGVfcHNyOwoxNDQ3NDogIGJvb2wgZm9yY2VfYWJtX2Vu YWJsZTsKMTQ0NzQ6ICBib29sIGRpc2FibGVfc3RlcmVvX3N1cHBvcnQ7CjE0NDc0OiAgYm9vbCB2 c3Jfc3VwcG9ydDsKMTQ0NzQ6ICBib29sIHBlcmZvcm1hbmNlX3RyYWNlOwoxNDQ3NDogIGJvb2wg YXpfZW5kcG9pbnRfbXV0ZV9vbmx5OwoxNDQ3NDogIGJvb2wgYWx3YXlzX3VzZV9yZWdhbW1hOwox NDQ3NDogIGJvb2wgcDAxMF9tcG9fc3VwcG9ydDsKMTQ0NzQ6ICBib29sIHJlY292ZXJ5X2VuYWJs ZWQ7CjE0NDc0OiAgYm9vbCBhdm9pZF92Ymlvc19leGVjX3RhYmxlOwoxNDQ3NDogIGJvb2wgc2Ns X3Jlc2V0X2xlbmd0aDEwOwoxNDQ3NDogIGJvb2wgaGRtaTIwX2Rpc2FibGU7CjE0NDc0OiAgYm9v bCBza2lwX2RldGVjdGlvbl9saW5rX3RyYWluaW5nOwoxNDQ3NDogIGJvb2wgcmVtb3ZlX2Rpc2Nv bm5lY3RfZWRwOwoxNDQ3NDogIHVuc2lnbmVkIGludCBmb3JjZV9vZG1fY29tYmluZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgZm9yY2VfZmNsa19raHo7CjE0NDc0OiAgYm9vbCBkaXNhYmxlX3RyaV9i dWY7CjE0NDc0OiAgYm9vbCBkbXViX29mZmxvYWRfZW5hYmxlZDsKMTQ0NzQ6ICBib29sIGRtY3Vi X2VtdWxhdGlvbjsKMTQ0NzQ6ICBib29sIGRtdWJfY29tbWFuZF90YWJsZTsKMTQ0NzQ6ICBzdHJ1 Y3QgZGNfYndfdmFsaWRhdGlvbl9wcm9maWxlIGJ3X3ZhbF9wcm9maWxlOwoxNDQ3NDogIGJvb2wg ZGlzYWJsZV9mZWM7CjE0NDc0OiAgYm9vbCBkaXNhYmxlXzQ4bWh6X3B3cmR3bjsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZm9yY2VfbWluX2RjZmNsa19taHo7 CjE0NDc0OiAgYm9vbCBkaXNhYmxlX3RpbWluZ19zeW5jOwoxNDQ3NDogIGJvb2wgY21faW5fYnlw YXNzOwoxNDQ3NDogIGludCBmb3JjZV9jbG9ja19tb2RlOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBu djEyX2lmbGlwX3ZtX3dhOwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9kcmFtX2Nsb2NrX2NoYW5nZV92 YWN0aXZlX3N1cHBvcnQ7CjE0NDc0OiAgYm9vbCB2YWxpZGF0ZV9kbWxfb3V0cHV0OwoxNDQ3NDog IGJvb2wgZW5hYmxlX2RtY3ViX3N1cmZhY2VfZmxpcDsKMTQ0NzQ6ICBib29sIHVzYmNfY29tYm9f cGh5X3Jlc2V0X3dhOwoxNDQ3NDogIGJvb2wgZGlzYWJsZV9kc2M7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZGNfZGVidWdfZGF0YSB7CjE0NDc0OiAgdWludDMyX3QgbHRGYWlsQ291 bnQ7CjE0NDc0OiAgdWludDMyX3QgaTJjRXJyb3JDb3VudDsKMTQ0NzQ6ICB1aW50MzJfdCBhdXhF cnJvckNvdW50OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX3BoeV9hZGRyX3Nw YWNlX2NvbmZpZyB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6ICAgdWludDY0X3Qgc3RhcnRfYWRk cjsKMTQ0NzQ6ICAgdWludDY0X3QgZW5kX2FkZHI7CjE0NDc0OiAgIHVpbnQ2NF90IGZiX3RvcDsK MTQ0NzQ6ICAgdWludDY0X3QgZmJfb2Zmc2V0OwoxNDQ3NDogICB1aW50NjRfdCBmYl9iYXNlOwox NDQ3NDogICB1aW50NjRfdCBhZ3BfdG9wOwoxNDQ3NDogICB1aW50NjRfdCBhZ3BfYm90OwoxNDQ3 NDogICB1aW50NjRfdCBhZ3BfYmFzZTsKMTQ0NzQ6ICB9IHN5c3RlbV9hcGVydHVyZTsKMTQ0NzQ6 IAoxNDQ3NDogIHN0cnVjdCB7CjE0NDc0OiAgIHVpbnQ2NF90IHBhZ2VfdGFibGVfc3RhcnRfYWRk cjsKMTQ0NzQ6ICAgdWludDY0X3QgcGFnZV90YWJsZV9lbmRfYWRkcjsKMTQ0NzQ6ICAgdWludDY0 X3QgcGFnZV90YWJsZV9iYXNlX2FkZHI7CjE0NDc0OiAgfSBnYXJ0X2NvbmZpZzsKMTQ0NzQ6IAox NDQ3NDogIGJvb2wgdmFsaWQ7CjE0NDc0OiAgdWludDY0X3QgcGFnZV90YWJsZV9kZWZhdWx0X3Bh Z2VfYWRkcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY192aXJ0dWFsX2FkZHJf c3BhY2VfY29uZmlnIHsKMTQ0NzQ6ICB1aW50NjRfdCBwYWdlX3RhYmxlX2Jhc2VfYWRkcjsKMTQ0 NzQ6ICB1aW50NjRfdCBwYWdlX3RhYmxlX3N0YXJ0X2FkZHI7CjE0NDc0OiAgdWludDY0X3QgcGFn ZV90YWJsZV9lbmRfYWRkcjsKMTQ0NzQ6ICB1aW50MzJfdCBwYWdlX3RhYmxlX2Jsb2NrX3NpemVf aW5fYnl0ZXM7CjE0NDc0OiAgdWludDhfdCBwYWdlX3RhYmxlX2RlcHRoOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgewoxNDQ3NDogIGlu dCBzcl9leGl0X3RpbWVfbnM7CjE0NDc0OiAgaW50IHNyX2VudGVyX3BsdXNfZXhpdF90aW1lX25z OwoxNDQ3NDogIGludCB1cmdlbnRfbGF0ZW5jeV9uczsKMTQ0NzQ6ICBpbnQgcGVyY2VudF9vZl9p ZGVhbF9kcmFtYnc7CjE0NDc0OiAgaW50IGRyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3lfbnM7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBpbnQgbWluX2RjZmNsa19taHo7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGU7CjE0NDc0OiBzdHJ1Y3Qg cmVzb3VyY2VfcG9vbDsKMTQ0NzQ6IHN0cnVjdCBkY2VfaHdzZXE7CjE0NDc0OiBzdHJ1Y3QgZ3B1 X2luZm9fc29jX2JvdW5kaW5nX2JveF92MV8wOwoxNDQ3NDogc3RydWN0IGRjIHsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfdmVyc2lvbnMgdmVyc2lvbnM7CjE0NDc0OiAgc3RydWN0IGRjX2NhcHMgY2FwczsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfY2FwX2Z1bmNzIGNhcF9mdW5jczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNf Y29uZmlnIGNvbmZpZzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfZGVidWdfb3B0aW9ucyBkZWJ1ZzsKMTQ0 NzQ6ICBzdHJ1Y3QgZGNfYm91bmRpbmdfYm94X292ZXJyaWRlcyBiYl9vdmVycmlkZXM7CjE0NDc0 OiAgc3RydWN0IGRjX2J1Z193YSB3b3JrX2Fyb3VuZHM7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRl eHQgKmN0eDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGh5X2FkZHJfc3BhY2VfY29uZmlnIHZtX3BhX2Nv bmZpZzsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQ4X3QgbGlua19jb3VudDsKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfbGluayAqbGlua3NbNiAqIDJdOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3N0YXRlICpj dXJyZW50X3N0YXRlOwoxNDQ3NDogIHN0cnVjdCByZXNvdXJjZV9wb29sICpyZXNfcG9vbDsKMTQ0 NzQ6IAoxNDQ3NDogIHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzIHNjbGtfbHZsczsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGJ3X2NhbGNzX2RjZWlwICpid19kY2VpcDsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfY2FsY3NfdmJpb3MgKmJ3X3ZiaW9zOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjbl9zb2Nf Ym91bmRpbmdfYm94ICpkY25fc29jOwoxNDQ3NDogIHN0cnVjdCBkY25faXBfcGFyYW1zICpkY25f aXA7CjE0NDc0OiAgc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgZG1sOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBod19zZXF1ZW5jZXJfZnVuY3MgaHdzczsKMTQ0NzQ6ICBz dHJ1Y3QgZGNlX2h3c2VxICpod3NlcTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBvcHRp bWl6ZWRfcmVxdWlyZWQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCBvcHRpbWl6ZV9zZWFt bGVzc19ib290X3N0cmVhbXM7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjb21wcmVz c29yICpmYmNfY29tcHJlc3NvcjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19kZWJ1Z19kYXRh IGRlYnVnX2RhdGE7CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBjaGFyICpidWlsZF9pZDsKMTQ0NzQ6 ICBzdHJ1Y3Qgdm1faGVscGVyICp2bV9oZWxwZXI7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGdwdV9p bmZvX3NvY19ib3VuZGluZ19ib3hfdjFfMCAqc29jX2JvdW5kaW5nX2JveDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZnJhbWVfYnVmZmVyX21vZGUgewoxNDQ3NDogIEZSQU1FX0JVRkZF Ul9NT0RFX0xPQ0FMX09OTFkgPSAwLAoxNDQ3NDogIEZSQU1FX0JVRkZFUl9NT0RFX1pGQl9PTkxZ LAoxNDQ3NDogIEZSQU1FX0JVRkZFUl9NT0RFX01JWEVEX1pGQl9BTkRfTE9DQUwsCjE0NDc0OiB9 IDsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjaHViX2luaXRfZGF0YSB7CjE0NDc0OiAgaW50NjRf dCB6ZmJfcGh5c19hZGRyX2Jhc2U7CjE0NDc0OiAgaW50NjRfdCB6ZmJfbWNfYmFzZV9hZGRyOwox NDQ3NDogIHVpbnQ2NF90IHpmYl9zaXplX2luX2J5dGU7CjE0NDc0OiAgZW51bSBmcmFtZV9idWZm ZXJfbW9kZSBmYl9tb2RlOwoxNDQ3NDogIGJvb2wgZGNodWJfaW5pdGlhbHppZWQ7CjE0NDc0OiAg Ym9vbCBkY2h1Yl9pbmZvX3ZhbGlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj X2luaXRfZGF0YSB7CjE0NDc0OiAgc3RydWN0IGh3X2FzaWNfaWQgYXNpY19pZDsKMTQ0NzQ6ICB2 b2lkICpkcml2ZXI7CjE0NDc0OiAgc3RydWN0IGNnc19kZXZpY2UgKmNnc19kZXZpY2U7CjE0NDc0 OiAgc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgYmJfb3ZlcnJpZGVzOwoxNDQ3NDog CjE0NDc0OiAgaW50IG51bV92aXJ0dWFsX2xpbmtzOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2Jpb3MgKnZiaW9zX292ZXJyaWRlOwoxNDQ3NDogIGVu dW0gZGNlX2Vudmlyb25tZW50IGRjZV9lbnZpcm9ubWVudDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVj dCBkbXViX29mZmxvYWRfZnVuY3MgKmRtdWJfaWY7CjE0NDc0OiAgc3RydWN0IGRjX3JlZ19oZWxw ZXJfc3RhdGUgKmRtdWJfb2ZmbG9hZDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19jb25maWcg ZmxhZ3M7CjE0NDc0OiAgdWludDMyX3QgbG9nX21hc2s7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZ3B1X2luZm9fc29jX2JvdW5kaW5nX2JveF92 MV8wICpzb2NfYm91bmRpbmdfYm94OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj X2NhbGxiYWNrX2luaXQgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQ4X3Qg cmVzZXJ2ZWQ7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkYyAqZGNf Y3JlYXRlKGNvbnN0IHN0cnVjdCBkY19pbml0X2RhdGEgKmluaXRfcGFyYW1zKTsKMTQ0NzQ6IHZv aWQgZGNfaGFyZHdhcmVfaW5pdChzdHJ1Y3QgZGMgKmRjKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGRj X2dldF92bWlkX3VzZV92ZWN0b3Ioc3RydWN0IGRjICpkYyk7CjE0NDc0OiB2b2lkIGRjX3NldHVw X3ZtX2NvbnRleHQoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3ZpcnR1YWxfYWRkcl9zcGFjZV9j b25maWcgKnZhX2NvbmZpZywgaW50IHZtaWQpOwoxNDQ3NDogCjE0NDc0OiBpbnQgZGNfc2V0dXBf c3lzdGVtX2NvbnRleHQoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3BoeV9hZGRyX3NwYWNlX2Nv bmZpZyAqcGFfY29uZmlnKTsKMTQ0NzQ6IHZvaWQgZGNfaW5pdF9jYWxsYmFja3Moc3RydWN0IGRj ICpkYywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX2NhbGxiYWNrX2luaXQgKmluaXRfcGFyYW1z KTsKMTQ0NzQ6IHZvaWQgZGNfZGVpbml0X2NhbGxiYWNrcyhzdHJ1Y3QgZGMgKmRjKTsKMTQ0NzQ6 IHZvaWQgZGNfZGVzdHJveShzdHJ1Y3QgZGMgKipkYyk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSB7CjE0NDc0OiAgVFJBTlNGRVJfRlVOQ19QT0lO VFMgPSAxMDI1CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfaGRyX3N0YXRpY19t ZXRhZGF0YSB7CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2hyb21hdGljaXR5X2dyZWVu X3g7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNocm9tYXRpY2l0eV9ncmVlbl95OwoxNDQ3NDogIHVu c2lnbmVkIGludCBjaHJvbWF0aWNpdHlfYmx1ZV94OwoxNDQ3NDogIHVuc2lnbmVkIGludCBjaHJv bWF0aWNpdHlfYmx1ZV95OwoxNDQ3NDogIHVuc2lnbmVkIGludCBjaHJvbWF0aWNpdHlfcmVkX3g7 CjE0NDc0OiAgdW5zaWduZWQgaW50IGNocm9tYXRpY2l0eV9yZWRfeTsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgY2hyb21hdGljaXR5X3doaXRlX3BvaW50X3g7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNo cm9tYXRpY2l0eV93aGl0ZV9wb2ludF95OwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgbWluX2x1 bWluYW5jZTsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfbHVtaW5hbmNlOwoxNDQ3NDogIHVpbnQzMl90 IG1heGltdW1fY29udGVudF9saWdodF9sZXZlbDsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhpbXVtX2Zy YW1lX2F2ZXJhZ2VfbGlnaHRfbGV2ZWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRj X3RyYW5zZmVyX2Z1bmNfdHlwZSB7CjE0NDc0OiAgVEZfVFlQRV9QUkVERUZJTkVELAoxNDQ3NDog IFRGX1RZUEVfRElTVFJJQlVURURfUE9JTlRTLAoxNDQ3NDogIFRGX1RZUEVfQllQQVNTLAoxNDQ3 NDogIFRGX1RZUEVfSFdQV0wKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY190cmFu c2Zlcl9mdW5jX2Rpc3RyaWJ1dGVkX3BvaW50cyB7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIg cmVkW1RSQU5TRkVSX0ZVTkNfUE9JTlRTXTsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBncmVl bltUUkFOU0ZFUl9GVU5DX1BPSU5UU107CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgYmx1ZVtU UkFOU0ZFUl9GVU5DX1BPSU5UU107CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MTZfdCBlbmRfZXhwb25l bnQ7CjE0NDc0OiAgdWludDE2X3QgeF9wb2ludF9hdF95MV9yZWQ7CjE0NDc0OiAgdWludDE2X3Qg eF9wb2ludF9hdF95MV9ncmVlbjsKMTQ0NzQ6ICB1aW50MTZfdCB4X3BvaW50X2F0X3kxX2JsdWU7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5l ZCB7CjE0NDc0OiAgVFJBTlNGRVJfRlVOQ1RJT05fU1JHQiwKMTQ0NzQ6ICBUUkFOU0ZFUl9GVU5D VElPTl9CVDcwOSwKMTQ0NzQ6ICBUUkFOU0ZFUl9GVU5DVElPTl9QUSwKMTQ0NzQ6ICBUUkFOU0ZF Ul9GVU5DVElPTl9MSU5FQVIsCjE0NDc0OiAgVFJBTlNGRVJfRlVOQ1RJT05fVU5JVFksCjE0NDc0 OiAgVFJBTlNGRVJfRlVOQ1RJT05fSExHLAoxNDQ3NDogIFRSQU5TRkVSX0ZVTkNUSU9OX0hMRzEy LAoxNDQ3NDogIFRSQU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjIsCjE0NDc0OiAgVFJBTlNGRVJfRlVO Q1RJT05fR0FNTUEyNCwKMTQ0NzQ6ICBUUkFOU0ZFUl9GVU5DVElPTl9HQU1NQTI2CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jIHsKMTQ0NzQ6 ICBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKMTQ0NzQ6ICBlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfdHlw ZSB0eXBlOwoxNDQ3NDogIGVudW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHRmOwoxNDQ3 NDogCjE0NDc0OiAgdWludDMyX3Qgc2RyX3JlZl93aGl0ZV9sZXZlbDsKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHVuaW9uIHsKMTQ0NzQ6ICAgc3RydWN0IHB3bF9wYXJh bXMgcHdsOwoxNDQ3NDogICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuY19kaXN0cmlidXRlZF9wb2lu dHMgdGZfcHRzOwoxNDQ3NDogIH07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHVu aW9uIGRjXzNkbHV0X3N0YXRlIHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50MzJfdCBp bml0aWFsaXplZDoxOwoxNDQ3NDogICB1aW50MzJfdCBybXVfaWR4X3ZhbGlkOjE7CjE0NDc0OiAg IHVpbnQzMl90IHJtdV9tdXhfbnVtOjM7CjE0NDc0OiAgIHVpbnQzMl90IG1wY19ybXUwX211eDo0 OwoxNDQ3NDogICB1aW50MzJfdCBtcGNfcm11MV9tdXg6NDsKMTQ0NzQ6ICAgdWludDMyX3QgbXBj X3JtdTJfbXV4OjQ7CjE0NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkOjE1OwoxNDQ3NDogIH0gYml0 czsKMTQ0NzQ6ICB1aW50MzJfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY18zZGx1dCB7CjE0NDc0OiAgc3RydWN0IGtyZWYgcmVmY291bnQ7CjE0NDc0OiAg c3RydWN0IHRldHJhaGVkcmFsX3BhcmFtcyBsdXRfM2Q7CjE0NDc0OiAgc3RydWN0IGZpeGVkMzFf MzIgaGRyX211bHRpcGxpZXI7CjE0NDc0OiAgYm9vbCBpbml0aWFsaXplZDsKMTQ0NzQ6ICB1bmlv biBkY18zZGx1dF9zdGF0ZSBzdGF0ZTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgZGNfcGxhbmVfc3RhdHVzIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBy ZXF1ZXN0ZWRfYWRkcmVzczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBjdXJyZW50 X2FkZHJlc3M7CjE0NDc0OiAgYm9vbCBpc19mbGlwX3BlbmRpbmc7CjE0NDc0OiAgYm9vbCBpc19y aWdodF9leWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBzdXJmYWNlX3VwZGF0ZV9m bGFncyB7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50MzJfdCBhZGRyX3Vw ZGF0ZToxOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IGRjY19jaGFuZ2U6MTsKMTQ0NzQ6ICAg dWludDMyX3QgY29sb3Jfc3BhY2VfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IGhvcml6b250 YWxfbWlycm9yX2NoYW5nZToxOwoxNDQ3NDogICB1aW50MzJfdCBwZXJfcGl4ZWxfYWxwaGFfY2hh bmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IGdsb2JhbF9hbHBoYV9jaGFuZ2U6MTsKMTQ0NzQ6ICAg dWludDMyX3QgaGRyX211bHQ6MTsKMTQ0NzQ6ICAgdWludDMyX3Qgcm90YXRpb25fY2hhbmdlOjE7 CjE0NDc0OiAgIHVpbnQzMl90IHN3aXp6bGVfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IHNj YWxpbmdfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IHBvc2l0aW9uX2NoYW5nZToxOwoxNDQ3 NDogICB1aW50MzJfdCBpbl90cmFuc2Zlcl9mdW5jX2NoYW5nZToxOwoxNDQ3NDogICB1aW50MzJf dCBpbnB1dF9jc2NfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IGNvZWZmX3JlZHVjdGlvbl9j aGFuZ2U6MTsKMTQ0NzQ6ICAgdWludDMyX3Qgb3V0cHV0X3RmX2NoYW5nZToxOwoxNDQ3NDogICB1 aW50MzJfdCBwaXhlbF9mb3JtYXRfY2hhbmdlOjE7CjE0NDc0OiAgIHVpbnQzMl90IHBsYW5lX3Np emVfY2hhbmdlOjE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBuZXdfcGxhbmU6 MTsKMTQ0NzQ6ICAgdWludDMyX3QgYnBwX2NoYW5nZToxOwoxNDQ3NDogICB1aW50MzJfdCBnYW1t YV9jaGFuZ2U6MTsKMTQ0NzQ6ICAgdWludDMyX3QgYmFuZHdpZHRoX2NoYW5nZToxOwoxNDQ3NDog ICB1aW50MzJfdCBjbG9ja19jaGFuZ2U6MTsKMTQ0NzQ6ICAgdWludDMyX3Qgc3RlcmVvX2Zvcm1h dF9jaGFuZ2U6MTsKMTQ0NzQ6ICAgdWludDMyX3QgZnVsbF91cGRhdGU6MTsKMTQ0NzQ6ICB9IGJp dHM7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByYXc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUgewoxNDQ3NDogIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNz IGFkZHJlc3M7CjE0NDc0OiAgc3RydWN0IGRjX3BsYW5lX2ZsaXBfdGltZSB0aW1lOwoxNDQ3NDog IGJvb2wgdHJpcGxlYnVmZmVyX2ZsaXBzOwoxNDQ3NDogIHN0cnVjdCBzY2FsaW5nX3RhcHMgc2Nh bGluZ19xdWFsaXR5OwoxNDQ3NDogIHN0cnVjdCByZWN0IHNyY19yZWN0OwoxNDQ3NDogIHN0cnVj dCByZWN0IGRzdF9yZWN0OwoxNDQ3NDogIHN0cnVjdCByZWN0IGNsaXBfcmVjdDsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBwbGFuZV9zaXplIHBsYW5lX3NpemU7CjE0NDc0OiAgdW5pb24gZGNfdGls aW5nX2luZm8gdGlsaW5nX2luZm87CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfZGNj X3BhcmFtIGRjYzsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19nYW1tYSAqZ2FtbWFfY29ycmVj dGlvbjsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqaW5fdHJhbnNmZXJfZnVuYzsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUgKmJpYXNfYW5kX3NjYWxlOwoxNDQ3NDog IHN0cnVjdCBkY19jc2NfdHJhbnNmb3JtIGlucHV0X2NzY19jb2xvcl9tYXRyaXg7CjE0NDc0OiAg c3RydWN0IGZpeGVkMzFfMzIgY29lZmZfcmVkdWN0aW9uX2ZhY3RvcjsKMTQ0NzQ6ICBzdHJ1Y3Qg Zml4ZWQzMV8zMiBoZHJfbXVsdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2hk cl9zdGF0aWNfbWV0YWRhdGEgaGRyX3N0YXRpY19jdHg7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRj X2NvbG9yX3NwYWNlIGNvbG9yX3NwYWNlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjXzNkbHV0 ICpsdXQzZF9mdW5jOwoxNDQ3NDogIHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICppbl9zaGFwZXJf ZnVuYzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqYmxlbmRfdGY7CjE0NDc0OiAK MTQ0NzQ6ICBlbnVtIHN1cmZhY2VfcGl4ZWxfZm9ybWF0IGZvcm1hdDsKMTQ0NzQ6ICBlbnVtIGRj X3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwoxNDQ3NDogIGVudW0gcGxhbmVfc3RlcmVvX2Zvcm1h dCBzdGVyZW9fZm9ybWF0OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBpc190aWxpbmdfcm90YXRlZDsK MTQ0NzQ6ICBib29sIHBlcl9waXhlbF9hbHBoYTsKMTQ0NzQ6ICBib29sIGdsb2JhbF9hbHBoYTsK MTQ0NzQ6ICBpbnQgZ2xvYmFsX2FscGhhX3ZhbHVlOwoxNDQ3NDogIGJvb2wgdmlzaWJsZTsKMTQ0 NzQ6ICBib29sIGZsaXBfaW1tZWRpYXRlOwoxNDQ3NDogIGJvb2wgaG9yaXpvbnRhbF9taXJyb3I7 CjE0NDc0OiAgaW50IGxheWVyX2luZGV4OwoxNDQ3NDogCjE0NDc0OiAgdW5pb24gc3VyZmFjZV91 cGRhdGVfZmxhZ3MgdXBkYXRlX2ZsYWdzOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3BsYW5l X3N0YXR1cyBzdGF0dXM7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgYm9vbCBmb3JjZV9mdWxsX3VwZGF0ZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2U7CjE0NDc0OiAgc3RydWN0IGtyZWYg cmVmY291bnQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfcGxhbmVfaW5mbyB7 CjE0NDc0OiAgc3RydWN0IHBsYW5lX3NpemUgcGxhbmVfc2l6ZTsKMTQ0NzQ6ICB1bmlvbiBkY190 aWxpbmdfaW5mbyB0aWxpbmdfaW5mbzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfZGNjX3BhcmFt IGRjYzsKMTQ0NzQ6ICBlbnVtIHN1cmZhY2VfcGl4ZWxfZm9ybWF0IGZvcm1hdDsKMTQ0NzQ6ICBl bnVtIGRjX3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwoxNDQ3NDogIGVudW0gcGxhbmVfc3RlcmVv X2Zvcm1hdCBzdGVyZW9fZm9ybWF0OwoxNDQ3NDogIGVudW0gZGNfY29sb3Jfc3BhY2UgY29sb3Jf c3BhY2U7CjE0NDc0OiAgYm9vbCBob3Jpem9udGFsX21pcnJvcjsKMTQ0NzQ6ICBib29sIHZpc2li bGU7CjE0NDc0OiAgYm9vbCBwZXJfcGl4ZWxfYWxwaGE7CjE0NDc0OiAgYm9vbCBnbG9iYWxfYWxw aGE7CjE0NDc0OiAgaW50IGdsb2JhbF9hbHBoYV92YWx1ZTsKMTQ0NzQ6ICBib29sIGlucHV0X2Nz Y19lbmFibGVkOwoxNDQ3NDogIGludCBsYXllcl9pbmRleDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkY19zY2FsaW5nX2luZm8gewoxNDQ3NDogIHN0cnVjdCByZWN0IHNyY19yZWN0 OwoxNDQ3NDogIHN0cnVjdCByZWN0IGRzdF9yZWN0OwoxNDQ3NDogIHN0cnVjdCByZWN0IGNsaXBf cmVjdDsKMTQ0NzQ6ICBzdHJ1Y3Qgc2NhbGluZ190YXBzIHNjYWxpbmdfcXVhbGl0eTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdXJmYWNlX3VwZGF0ZSB7CjE0NDc0OiAgc3Ry dWN0IGRjX3BsYW5lX3N0YXRlICpzdXJmYWNlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBjb25z dCBzdHJ1Y3QgZGNfZmxpcF9hZGRycyAqZmxpcF9hZGRyOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBk Y19wbGFuZV9pbmZvICpwbGFuZV9pbmZvOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19zY2FsaW5n X2luZm8gKnNjYWxpbmdfaW5mbzsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiBoZHJfbXVsdDsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdh bW1hOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICppbl90cmFuc2Zlcl9m dW5jOwoxNDQ3NDogCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gKmlucHV0 X2NzY19jb2xvcl9tYXRyaXg7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGZpeGVkMzFfMzIgKmNvZWZm X3JlZHVjdGlvbl9mYWN0b3I7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMg KmZ1bmNfc2hhcGVyOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY18zZGx1dCAqbHV0M2RfZnVuYzsK MTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqYmxlbmRfdGY7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfcGxhbmVf c3RhdGUgKmRjX2NyZWF0ZV9wbGFuZV9zdGF0ZShzdHJ1Y3QgZGMgKmRjKTsKMTQ0NzQ6IGNvbnN0 IHN0cnVjdCBkY19wbGFuZV9zdGF0dXMgKmRjX3BsYW5lX2dldF9zdGF0dXMoCjE0NDc0OiAgIGNv bnN0IHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIGRjX3BsYW5lX3N0YXRlX3JldGFpbihzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKTsKMTQ0NzQ6IHZvaWQgZGNfcGxhbmVfc3RhdGVfcmVsZWFzZShzdHJ1Y3QgZGNfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19nYW1tYV9yZXRhaW4o c3RydWN0IGRjX2dhbW1hICpkY19nYW1tYSk7CjE0NDc0OiB2b2lkIGRjX2dhbW1hX3JlbGVhc2Uo c3RydWN0IGRjX2dhbW1hICoqZGNfZ2FtbWEpOwoxNDQ3NDogc3RydWN0IGRjX2dhbW1hICpkY19j cmVhdGVfZ2FtbWEodm9pZCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfdHJhbnNmZXJfZnVuY19y ZXRhaW4oc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMgKmRjX3RmKTsKMTQ0NzQ6IHZvaWQgZGNfdHJh bnNmZXJfZnVuY19yZWxlYXNlKHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICpkY190Zik7CjE0NDc0 OiBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuYyAqZGNfY3JlYXRlX3RyYW5zZmVyX2Z1bmModm9pZCk7 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY18zZGx1dCAqZGNfY3JlYXRlXzNkbHV0X2Z1bmModm9p ZCk7CjE0NDc0OiB2b2lkIGRjXzNkbHV0X2Z1bmNfcmVsZWFzZShzdHJ1Y3QgZGNfM2RsdXQgKmx1 dCk7CjE0NDc0OiB2b2lkIGRjXzNkbHV0X2Z1bmNfcmV0YWluKHN0cnVjdCBkY18zZGx1dCAqbHV0 KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZGNfZmxpcF9hZGRycyB7CjE0NDc0OiAgc3RydWN0IGRjX3BsYW5lX2FkZHJlc3MgYWRkcmVzczsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmxpcF90aW1lc3RhbXBfaW5fdXM7CjE0NDc0OiAgYm9vbCBm bGlwX2ltbWVkaWF0ZTsKMTQ0NzQ6IAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19w b3N0X3VwZGF0ZV9zdXJmYWNlc190b19zdHJlYW0oCjE0NDc0OiAgIHN0cnVjdCBkYyAqZGMpOwox NDQ3NDogCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kY19zdHJlYW0uaCIgMQoxNDQ3NDogIyAzNSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX3N0cmVhbS5oIgoxNDQ3NDogc3RydWN0IHRpbWluZ19zeW5j X2luZm8gewoxNDQ3NDogIGludCBncm91cF9pZDsKMTQ0NzQ6ICBpbnQgZ3JvdXBfc2l6ZTsKMTQ0 NzQ6ICBib29sIG1hc3RlcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdHJl YW1fc3RhdHVzIHsKMTQ0NzQ6ICBpbnQgcHJpbWFyeV9vdGdfaW5zdDsKMTQ0NzQ6ICBpbnQgc3Ry ZWFtX2VuY19pbnN0OwoxNDQ3NDogIGludCBwbGFuZV9jb3VudDsKMTQ0NzQ6ICBpbnQgYXVkaW9f aW5zdDsKMTQ0NzQ6ICBzdHJ1Y3QgdGltaW5nX3N5bmNfaW5mbyB0aW1pbmdfc3luY19pbmZvOwox NDQ3NDogIHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGVzWzRdOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZnJlZXN5bmNfY29udGV4dCB7CjE0NDc0OiAg Ym9vbCBkdW1teTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gaHVicF9kbWRhdGFfbW9k ZSB7CjE0NDc0OiAgRE1EQVRBX1NXX01PREUsCjE0NDc0OiAgRE1EQVRBX0hXX01PREUKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19kbWRhdGFfYXR0cmlidXRlcyB7CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZW51bSBodWJwX2RtZGF0YV9tb2RlIGRtZGF0YV9tb2Rl OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBkbWRhdGFfcmVwZWF0OwoxNDQ3NDogCjE0NDc0OiAgdWlu dDMyX3QgZG1kYXRhX3NpemU7CjE0NDc0OiAKMTQ0NzQ6ICBib29sIGRtZGF0YV91cGRhdGVkOwox NDQ3NDogCjE0NDc0OiAgdW5pb24gbGFyZ2VfaW50ZWdlciBhZGRyZXNzOwoxNDQ3NDogCjE0NDc0 OiAgYm9vbCBkbWRhdGFfcW9zX21vZGU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkbWRhdGFf cW9zX2xldmVsOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IGRtZGF0 YV9kbF9kZWx0YTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90ICpkbWRhdGFfc3dfZGF0YTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY193cml0ZWJhY2tfaW5mbyB7CjE0NDc0OiAg Ym9vbCB3Yl9lbmFibGVkOwoxNDQ3NDogIGludCBkd2JfcGlwZV9pbnN0OwoxNDQ3NDogIHN0cnVj dCBkY19kd2JfcGFyYW1zIGR3Yl9wYXJhbXM7CjE0NDc0OiAgc3RydWN0IG1jaWZfYnVmX3BhcmFt cyBtY2lmX2J1Zl9wYXJhbXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfd3Jp dGViYWNrX3VwZGF0ZSB7CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bV93Yl9pbmZvOwoxNDQ3NDog IHN0cnVjdCBkY193cml0ZWJhY2tfaW5mbyB3cml0ZWJhY2tfaW5mb1sxXTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gdmVydGljYWxfaW50ZXJydXB0X3JlZl9wb2ludCB7CjE0NDc0OiAg U1RBUlRfVl9VUERBVEUgPSAwLAoxNDQ3NDogIFNUQVJUX1ZfU1lOQywKMTQ0NzQ6ICBJTlZBTElE X1BPSU5UCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1cHRfY29uZmlnIHsKMTQ0NzQ6ICBlbnVtIHZl cnRpY2FsX2ludGVycnVwdF9yZWZfcG9pbnQgcmVmX3BvaW50OwoxNDQ3NDogIGludCBsaW5lc19v ZmZzZXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBzdHJlYW1fdXBkYXRlX2ZsYWdz IHsKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1aW50MzJfdCBzY2FsaW5nOjE7CjE0NDc0OiAg IHVpbnQzMl90IG91dF90ZjoxOwoxNDQ3NDogICB1aW50MzJfdCBvdXRfY3NjOjE7CjE0NDc0OiAg IHVpbnQzMl90IGFibV9sZXZlbDoxOwoxNDQ3NDogICB1aW50MzJfdCBkcG1zX29mZjoxOwoxNDQ3 NDogICB1aW50MzJfdCBnYW11dF9yZW1hcDoxOwoxNDQ3NDogICB1aW50MzJfdCB3Yl91cGRhdGU6 MTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCByYXc7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlIHsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGRjX3NpbmsgKnNpbms7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNf bGluayAqbGluazsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGFuZWxfcGF0Y2ggc2lua19wYXRjaGVzOwox NDQ3NDogIHVuaW9uIGRpc3BsYXlfY29udGVudF9zdXBwb3J0IGNvbnRlbnRfc3VwcG9ydDsKMTQ0 NzQ6ICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgdGltaW5nOwoxNDQ3NDogIHN0cnVjdCBkY19jcnRj X3RpbWluZ19hZGp1c3QgYWRqdXN0OwoxNDQ3NDogIHN0cnVjdCBkY19pbmZvX3BhY2tldCB2cnJf aW5mb3BhY2tldDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgdnNjX2luZm9wYWNrZXQ7 CjE0NDc0OiAgc3RydWN0IGRjX2luZm9fcGFja2V0IHZzcF9pbmZvcGFja2V0OwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHJlY3Qgc3JjOwoxNDQ3NDogIHN0cnVjdCByZWN0IGRzdDsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGZyZWVzeW5jX2NvbnRleHQgZnJlZXN5bmNfY3R4OwoxNDQ3 NDogCjE0NDc0OiAgc3RydWN0IGF1ZGlvX2luZm8gYXVkaW9faW5mbzsKMTQ0NzQ6IAoxNDQ3NDog IHN0cnVjdCBkY19pbmZvX3BhY2tldCBoZHJfc3RhdGljX21ldGFkYXRhOwoxNDQ3NDogIHVuaW9u IGxhcmdlX2ludGVnZXIgZG1kYXRhX2FkZHJlc3M7CjE0NDc0OiAgYm9vbCB1c2VfZHluYW1pY19t ZXRhOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMgKm91dF90cmFuc2Zl cl9mdW5jOwoxNDQ3NDogIHN0cnVjdCBjb2xvcnNwYWNlX3RyYW5zZm9ybSBnYW11dF9yZW1hcF9t YXRyaXg7CjE0NDc0OiAgc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gY3NjX2NvbG9yX21hdHJpeDsK MTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNfY29sb3Jfc3BhY2Ugb3V0cHV0X2NvbG9yX3NwYWNlOwox NDQ3NDogIGVudW0gZGNfZGl0aGVyX29wdGlvbiBkaXRoZXJfb3B0aW9uOwoxNDQ3NDogCjE0NDc0 OiAgZW51bSB2aWV3XzNkX2Zvcm1hdCB2aWV3X2Zvcm1hdDsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wg dXNlX3ZzY19zZHBfZm9yX2NvbG9yaW1ldHJ5OwoxNDQ3NDogIGJvb2wgaWdub3JlX21zYV90aW1p bmdfcGFyYW07CjE0NDc0OiAgYm9vbCBjb252ZXJ0ZXJfZGlzYWJsZV9hdWRpbzsKMTQ0NzQ6ICB1 aW50OF90IHFzX2JpdDsKMTQ0NzQ6ICB1aW50OF90IHF5X2JpdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGNoYXIgcHNyX3ZlcnNpb247CjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IGFibV9sZXZlbDsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1cHRfY29uZmlnIHBlcmlvZGljX2ludGVycnVw dDA7CjE0NDc0OiAgc3RydWN0IHBlcmlvZGljX2ludGVycnVwdF9jb25maWcgcGVyaW9kaWNfaW50 ZXJydXB0MTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eDsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1z IGJpdF9kZXB0aF9wYXJhbXM7CjE0NDc0OiAgc3RydWN0IGNsYW1waW5nX2FuZF9waXhlbF9lbmNv ZGluZ19wYXJhbXMgY2xhbXBpbmc7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgcGh5X3BpeF9jbGs7CjE0 NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CjE0NDc0OiAgYm9vbCBkcG1zX29mZjsKMTQ0 NzQ6IAoxNDQ3NDogIHZvaWQgKmRtX3N0cmVhbV9jb250ZXh0OwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzIGN1cnNvcl9hdHRyaWJ1dGVzOwoxNDQ3NDogIHN0cnVj dCBkY19jdXJzb3JfcG9zaXRpb24gY3Vyc29yX3Bvc2l0aW9uOwoxNDQ3NDogIHVpbnQzMl90IHNk cl93aGl0ZV9sZXZlbDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGtyZWYgcmVmY291 bnQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgY3J0Y190cmlnZ2VyX2luZm8gdHJpZ2dlcmVkX2Ny dGNfcmVzZXQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fd2JfaW5m bzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gd3JpdGViYWNrX2luZm9bMV07CjE0 NDc0OiAKMTQ0NzQ6ICBib29sIG1vZGVfY2hhbmdlZCA6IDE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgIHVpbnQ4X3Qgb3RnX29mZnNldDsKMTQ0NzQ6ICB9IG91dDsKMTQ0NzQ6IAox NDQ3NDogIGJvb2wgYXBwbHlfZWRwX2Zhc3RfYm9vdF9vcHRpbWl6YXRpb247CjE0NDc0OiAgYm9v bCBhcHBseV9zZWFtbGVzc19ib290X29wdGltaXphdGlvbjsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQz Ml90IHN0cmVhbV9pZDsKMTQ0NzQ6ICBib29sIGlzX2RzY19lbmFibGVkOwoxNDQ3NDogIHVuaW9u IHN0cmVhbV91cGRhdGVfZmxhZ3MgdXBkYXRlX2ZsYWdzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdHJlYW1fdXBkYXRlIHsKMTQ0NzQ6ICBzdHJ1 Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW07CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcmVjdCBz cmM7CjE0NDc0OiAgc3RydWN0IHJlY3QgZHN0OwoxNDQ3NDogIHN0cnVjdCBkY190cmFuc2Zlcl9m dW5jICpvdXRfdHJhbnNmZXJfZnVuYzsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgKmhk cl9zdGF0aWNfbWV0YWRhdGE7CjE0NDc0OiAgdW5zaWduZWQgaW50ICphYm1fbGV2ZWw7CjE0NDc0 OiAKMTQ0NzQ6ICBzdHJ1Y3QgcGVyaW9kaWNfaW50ZXJydXB0X2NvbmZpZyAqcGVyaW9kaWNfaW50 ZXJydXB0MDsKMTQ0NzQ6ICBzdHJ1Y3QgcGVyaW9kaWNfaW50ZXJydXB0X2NvbmZpZyAqcGVyaW9k aWNfaW50ZXJydXB0MTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19pbmZvX3BhY2tldCAqdnJy X2luZm9wYWNrZXQ7CjE0NDc0OiAgc3RydWN0IGRjX2luZm9fcGFja2V0ICp2c2NfaW5mb3BhY2tl dDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgKnZzcF9pbmZvcGFja2V0OwoxNDQ3NDog CjE0NDc0OiAgYm9vbCAqZHBtc19vZmY7CjE0NDc0OiAgYm9vbCBpbnRlZ2VyX3NjYWxpbmdfdXBk YXRlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGNvbG9yc3BhY2VfdHJhbnNmb3JtICpnYW11dF9y ZW1hcDsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX3NwYWNlICpvdXRwdXRfY29sb3Jfc3BhY2U7CjE0 NDc0OiAgZW51bSBkY19kaXRoZXJfb3B0aW9uICpkaXRoZXJfb3B0aW9uOwoxNDQ3NDogCjE0NDc0 OiAgc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gKm91dHB1dF9jc2NfdHJhbnNmb3JtOwoxNDQ3NDog CjE0NDc0OiAgc3RydWN0IGRjX3dyaXRlYmFja191cGRhdGUgKndiX3VwZGF0ZTsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfZHNjX2NvbmZpZyAqZHNjX2NvbmZpZzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGJvb2wgZGNfaXNfc3RyZWFtX3VuY2hhbmdlZCgKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpvbGRfc3RyZWFtLCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoxNDQ3NDog Ym9vbCBkY19pc19zdHJlYW1fc2NhbGluZ191bmNoYW5nZWQoCjE0NDc0OiAgc3RydWN0IGRjX3N0 cmVhbV9zdGF0ZSAqb2xkX3N0cmVhbSwgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsK MTQ0NzQ6ICMgMjczICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv ZGNfc3RyZWFtLmgiCjE0NDc0OiB2b2lkIGRjX2NvbW1pdF91cGRhdGVzX2Zvcl9zdHJlYW0oc3Ry dWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlICpzcmZfdXBkYXRl cywKMTQ0NzQ6ICAgaW50IHN1cmZhY2VfY291bnQsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSwKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0cmVhbV91cGRhdGUgKnN0cmVhbV91 cGRhdGUsCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqc3RhdGUpOwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19zdHJlYW1fbG9nKGNvbnN0IHN0cnVjdCBkYyAqZGMsIGNv bnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IHVpbnQ4 X3QgZGNfZ2V0X2N1cnJlbnRfc3RyZWFtX2NvdW50KHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqZGNfZ2V0X3N0cmVhbV9hdF9pbmRleChzdHJ1Y3QgZGMgKmRj LCB1aW50OF90IGkpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB1aW50 MzJfdCBkY19zdHJlYW1fZ2V0X3ZibGFua19jb3VudGVyKGNvbnN0IHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGJv b2wgZGNfc3RyZWFtX3NlbmRfZHBfc2RwKGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0 cmVhbSwKMTQ0NzQ6ICAgY29uc3QgdWludDhfdCAqY3VzdG9tX3NkcF9tZXNzYWdlLAoxNDQ3NDog ICB1bnNpZ25lZCBpbnQgc2RwX21lc3NhZ2Vfc2l6ZSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19zdHJlYW1fZ2V0X3NjYW5vdXRwb3MoY29u c3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAoxNDQ3NDogICAgICAgdWludDMyX3Qg KnZfYmxhbmtfc3RhcnQsCjE0NDc0OiAgICAgICB1aW50MzJfdCAqdl9ibGFua19lbmQsCjE0NDc0 OiAgICAgICB1aW50MzJfdCAqaF9wb3NpdGlvbiwKMTQ0NzQ6ICAgICAgIHVpbnQzMl90ICp2X3Bv c2l0aW9uKTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19zdGF0dXMgZGNfYWRkX3N0cmVhbV90b19j dHgoCjE0NDc0OiAgICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKm5l d19jdHgsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAK MTQ0NzQ6IGVudW0gZGNfc3RhdHVzIGRjX3JlbW92ZV9zdHJlYW1fZnJvbV9jdHgoCjE0NDc0OiAg IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfc3RhdGUgKm5ld19jdHgsCjE0NDc0 OiAgICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGJvb2wgZGNfYWRkX3BsYW5lX3RvX2NvbnRleHQoCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBk YyAqZGMsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKMTQ0NzQ6ICAg c3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0 YXRlICpjb250ZXh0KTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19yZW1vdmVfcGxhbmVfZnJvbV9j b250ZXh0KAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNf c3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgIHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0 NzQ6IGJvb2wgZGNfcmVtX2FsbF9wbGFuZXNfZm9yX3N0cmVhbSgKMTQ0NzQ6ICAgY29uc3Qgc3Ry dWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAoxNDQ3 NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX2Fk ZF9hbGxfcGxhbmVzX2Zvcl9zdHJlYW0oCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkYyAqZGMsCjE0 NDc0OiAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKMTQ0NzQ6ICAgc3RydWN0IGRj X3BsYW5lX3N0YXRlICogY29uc3QgKnBsYW5lX3N0YXRlcywKMTQ0NzQ6ICAgaW50IHBsYW5lX2Nv dW50LAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiBi b29sIGRjX3N0cmVhbV9hZGRfd3JpdGViYWNrKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIHN0cnVj dCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKMTQ0NzQ6ICAgc3RydWN0IGRjX3dyaXRlYmFja19p bmZvICp3Yl9pbmZvKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19zdHJlYW1fcmVtb3ZlX3dyaXRl YmFjayhzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJl YW0sCjE0NDc0OiAgIHVpbnQzMl90IGR3Yl9waXBlX2luc3QpOwoxNDQ3NDogCjE0NDc0OiBib29s IGRjX3N0cmVhbV93YXJtdXBfd3JpdGViYWNrKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIGludCBu dW1fZHdiLAoxNDQ3NDogICBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gKndiX2luZm8pOwoxNDQ3 NDogCjE0NDc0OiBib29sIGRjX3N0cmVhbV9kbWRhdGFfc3RhdHVzX2RvbmUoc3RydWN0IGRjICpk Yywgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBk Y19zdHJlYW1fc2V0X2R5bmFtaWNfbWV0YWRhdGEoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAoxNDQ3NDogICBzdHJ1Y3QgZGNfZG1kYXRhX2F0 dHJpYnV0ZXMgKmRtZGF0YV9hdHRyKTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19zdGF0dXMgZGNf dmFsaWRhdGVfc3RyZWFtKHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0 cmVhbSk7CjE0NDc0OiAjIDM3NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RjX3N0cmVhbS5oIgoxNDQ3NDogYm9vbCBkY19lbmFibGVfc3RlcmVvKAoxNDQ3NDog IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAoxNDQ3NDog IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbXNbXSwKMTQ0NzQ6ICB1aW50OF90IHN0cmVh bV9jb3VudCk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzdXJmYWNlX3VwZGF0ZV90eXBl IGRjX2NoZWNrX3VwZGF0ZV9zdXJmYWNlc19mb3Jfc3RyZWFtKAoxNDQ3NDogICBzdHJ1Y3QgZGMg KmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3VyZmFjZV91cGRhdGUgKnVwZGF0ZXMsCjE0NDc0OiAg IGludCBzdXJmYWNlX2NvdW50LAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RyZWFtX3VwZGF0ZSAqc3Ry ZWFtX3VwZGF0ZSwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0dXMgKnN0cmVh bV9zdGF0dXMpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpkY19jcmVhdGVfc3RyZWFtX2Zvcl9zaW5rKHN0cnVjdCBkY19zaW5r ICpkY19zaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqZGNfY29w eV9zdHJlYW0oY29uc3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCB1cGRhdGVfc3RyZWFtX3NpZ25hbChzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpz dHJlYW0sIHN0cnVjdCBkY19zaW5rICpzaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19zdHJl YW1fcmV0YWluKHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7CjE0NDc0OiB2b2lk IGRjX3N0cmVhbV9yZWxlYXNlKHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zdHJlYW1fc3RhdHVzICpkY19zdHJlYW1fZ2V0X3N0YXR1 c19mcm9tX3N0YXRlKAoxNDQ3NDogIHN0cnVjdCBkY19zdGF0ZSAqc3RhdGUsCjE0NDc0OiAgc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IHN0cnVjdCBkY19zdHJlYW1fc3Rh dHVzICpkY19zdHJlYW1fZ2V0X3N0YXR1cygKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRl ICpkY19zdHJlYW0pOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGJvb2wgZGNfc3RyZWFtX3NldF9jdXJzb3JfYXR0cmlidXRlcygKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9h dHRyaWJ1dGVzICphdHRyaWJ1dGVzKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19zdHJlYW1fc2V0 X2N1cnNvcl9wb3NpdGlvbigKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0s CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9wb3NpdGlvbiAqcG9zaXRpb24pOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfc3RyZWFtX2FkanVzdF92bWluX3ZtYXgoc3RydWN0 IGRjICpkYywKMTQ0NzQ6ICAgICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0 OiAgICAgc3RydWN0IGRjX2NydGNfdGltaW5nX2FkanVzdCAqYWRqdXN0KTsKMTQ0NzQ6IAoxNDQ3 NDogYm9vbCBkY19zdHJlYW1fZ2V0X2NydGNfcG9zaXRpb24oc3RydWN0IGRjICpkYywKMTQ0NzQ6 ICAgICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqKnN0cmVhbSwKMTQ0NzQ6ICAgICAgaW50IG51 bV9zdHJlYW1zLAoxNDQ3NDogICAgICB1bnNpZ25lZCBpbnQgKnZfcG9zLAoxNDQ3NDogICAgICB1 bnNpZ25lZCBpbnQgKm5vbV92X3Bvcyk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfc3RyZWFtX2Nv bmZpZ3VyZV9jcmMoc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgICAgICAgc3RydWN0IGRjX3N0cmVh bV9zdGF0ZSAqc3RyZWFtLAoxNDQ3NDogICAgICAgICBib29sIGVuYWJsZSwKMTQ0NzQ6ICAgICAg ICAgYm9vbCBjb250aW51b3VzKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19zdHJlYW1fZ2V0X2Ny YyhzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgICAgICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAq c3RyZWFtLAoxNDQ3NDogICAgICAgICAgdWludDMyX3QgKnJfY3IsCjE0NDc0OiAgICAgICAgICB1 aW50MzJfdCAqZ195LAoxNDQ3NDogICAgICAgICAgdWludDMyX3QgKmJfY2IpOwoxNDQ3NDogCjE0 NDc0OiB2b2lkIGRjX3N0cmVhbV9zZXRfc3RhdGljX3NjcmVlbl9wYXJhbXMoc3RydWN0IGRjICpk YywKMTQ0NzQ6ICAgICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqKnN0cmVhbSwKMTQ0NzQ6ICAg ICAgaW50IG51bV9zdHJlYW1zLAoxNDQ3NDogICAgICBjb25zdCBzdHJ1Y3QgZGNfc3RhdGljX3Nj cmVlbl9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfc3RyZWFtX3NldF9k eW5fZXhwYW5zaW9uKHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVh bSwKMTQ0NzQ6ICAgZW51bSBkY19keW5hbWljX2V4cGFuc2lvbiBvcHRpb24pOwoxNDQ3NDogCjE0 NDc0OiB2b2lkIGRjX3N0cmVhbV9zZXRfZGl0aGVyX29wdGlvbihzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpzdHJlYW0sCjE0NDc0OiAgICAgIGVudW0gZGNfZGl0aGVyX29wdGlvbiBvcHRpb24pOwox NDQ3NDogCjE0NDc0OiBib29sIGRjX3N0cmVhbV9zZXRfZ2FtdXRfcmVtYXAoc3RydWN0IGRjICpk YywKMTQ0NzQ6ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0p OwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX3N0cmVhbV9wcm9ncmFtX2NzY19tYXRyaXgoc3RydWN0 IGRjICpkYywKMTQ0NzQ6ICAgICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0 NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfc3RyZWFtX2dldF9jcnRjX3Bvc2l0aW9uKHN0cnVjdCBkYyAq ZGMsCjE0NDc0OiAgICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKipzdHJlYW0sCjE0NDc0OiAg ICAgIGludCBudW1fc3RyZWFtcywKMTQ0NzQ6ICAgICAgdW5zaWduZWQgaW50ICp2X3BvcywKMTQ0 NzQ6ICAgICAgdW5zaWduZWQgaW50ICpub21fdl9wb3MpOwoxNDQ3NDogIyA4NzQgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY192YWxpZGF0aW9uX3NldCB7CjE0NDc0 OiAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtOwoxNDQ3NDogIHN0cnVjdCBkY19wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGVzWzNdOwoxNDQ3NDogIHVpbnQ4X3QgcGxhbmVfY291bnQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX3ZhbGlkYXRlX3NlYW1sZXNzX2Jvb3RfdGlt aW5nKGNvbnN0IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICAgY29uc3Qgc3RydWN0IGRjX3Npbmsg KnNpbmssCjE0NDc0OiAgICAgc3RydWN0IGRjX2NydGNfdGltaW5nICpjcnRjX3RpbWluZyk7CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gZGNfc3RhdHVzIGRjX3ZhbGlkYXRlX3BsYW5lKHN0cnVjdCBkYyAq ZGMsIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwoxNDQ3NDogCjE0 NDc0OiB2b2lkIGdldF9jbG9ja19yZXF1aXJlbWVudHNfZm9yX3N0YXRlKHN0cnVjdCBkY19zdGF0 ZSAqc3RhdGUsIHN0cnVjdCBBc2ljU3RhdGVFeCAqaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wg ZGNfc2V0X2dlbmVyaWNfZ3Bpb19mb3Jfc3RlcmVvKGJvb2wgZW5hYmxlLAoxNDQ3NDogICBzdHJ1 Y3QgZ3Bpb19zZXJ2aWNlICpncGlvX3NlcnZpY2UpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfc3RhdHVzIGRjX3ZhbGlkYXRlX2dsb2JhbF9z dGF0ZSgKMTQ0NzQ6ICAgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0YXRlICpu ZXdfY3R4LAoxNDQ3NDogICBib29sIGZhc3RfdmFsaWRhdGUpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgZGNfcmVzb3VyY2Vfc3RhdGVfY29uc3RydWN0KAoxNDQ3NDogICBjb25zdCBzdHJ1 Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmRzdF9jdHgpOwoxNDQ3NDogCjE0 NDc0OiB2b2lkIGRjX3Jlc291cmNlX3N0YXRlX2NvcHlfY29uc3RydWN0KAoxNDQ3NDogICBjb25z dCBzdHJ1Y3QgZGNfc3RhdGUgKnNyY19jdHgsCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqZHN0 X2N0eCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfcmVzb3VyY2Vfc3RhdGVfY29weV9jb25zdHJ1 Y3RfY3VycmVudCgKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0 IGRjX3N0YXRlICpkc3RfY3R4KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19yZXNvdXJjZV9zdGF0 ZV9kZXN0cnVjdChzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiBib29s IGRjX3Jlc291cmNlX2lzX2RzY19lbmNvZGluZ19zdXBwb3J0ZWQoY29uc3Qgc3RydWN0IGRjICpk Yyk7CjE0NDc0OiAjIDkzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RjLmgiCjE0NDc0OiBib29sIGRjX2NvbW1pdF9zdGF0ZShzdHJ1Y3QgZGMgKmRjLCBzdHJ1 Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19z dGF0ZSAqZGNfY3JlYXRlX3N0YXRlKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogc3RydWN0IGRjX3N0 YXRlICpkY19jb3B5X3N0YXRlKHN0cnVjdCBkY19zdGF0ZSAqc3JjX2N0eCk7CjE0NDc0OiB2b2lk IGRjX3JldGFpbl9zdGF0ZShzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogdm9pZCBk Y19yZWxlYXNlX3N0YXRlKHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwY2RfY2FwcyB7CjE0NDc0 OiAgdW5pb24gZHBjZF9yZXYgZHBjZF9yZXY7CjE0NDc0OiAgdW5pb24gbWF4X2xhbmVfY291bnQg bWF4X2xuX2NvdW50OwoxNDQ3NDogIHVuaW9uIG1heF9kb3duX3NwcmVhZCBtYXhfZG93bl9zcHJl YWQ7CjE0NDc0OiAgdW5pb24gZHByeF9mZWF0dXJlIGRwcnhfZmVhdHVyZTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgdWludDhfdCBlZHBfc3VwcG9ydGVkX2xpbmtfcmF0ZXNfY291bnQ7CjE0NDc0 OiAgZW51bSBkY19saW5rX3JhdGUgZWRwX3N1cHBvcnRlZF9saW5rX3JhdGVzWzhdOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgZG9uZ2xlX3R5cGU7CjE0 NDc0OiAKMTQ0NzQ6ICBib29sIGlzX2JyYW5jaF9kZXY7CjE0NDc0OiAKMTQ0NzQ6ICB1bmlvbiBz aW5rX2NvdW50IHNpbmtfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY19k b25nbGVfY2FwcyBkb25nbGVfY2FwczsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHNpbmtfZGV2 X2lkOwoxNDQ3NDogIGludDhfdCBzaW5rX2Rldl9pZF9zdHJbNl07CjE0NDc0OiAgaW50OF90IHNp bmtfaHdfcmV2aXNpb247CjE0NDc0OiAgaW50OF90IHNpbmtfZndfcmV2aXNpb25bMl07CjE0NDc0 OiAKMTQ0NzQ6ICB1aW50MzJfdCBicmFuY2hfZGV2X2lkOwoxNDQ3NDogIGludDhfdCBicmFuY2hf ZGV2X25hbWVbNl07CjE0NDc0OiAgaW50OF90IGJyYW5jaF9od19yZXZpc2lvbjsKMTQ0NzQ6ICBp bnQ4X3QgYnJhbmNoX2Z3X3JldmlzaW9uWzJdOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBhbGxvd19p bnZhbGlkX01TQV90aW1pbmdfcGFyYW07CjE0NDc0OiAgYm9vbCBwYW5lbF9tb2RlX2VkcDsKMTQ0 NzQ6ICBib29sIGRwY2RfZGlzcGxheV9jb250cm9sX2NhcGFibGU7CjE0NDc0OiAgYm9vbCBleHRf cmVjZWl2ZXJfY2FwX2ZpZWxkX3ByZXNlbnQ7CjE0NDc0OiAgdW5pb24gZHBjZF9mZWNfY2FwYWJp bGl0eSBmZWNfY2FwOwoxNDQ3NDogIHN0cnVjdCBkcGNkX2RzY19jYXBhYmlsaXRpZXMgZHNjX2Nh cHM7CjE0NDc0OiAgc3RydWN0IGRjX2x0dHByX2NhcHMgbHR0cHJfY2FwczsKMTQ0NzQ6IAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZGNfbGluay5oIiAxCjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfbGluay5oIgoxNDQ3NDogZW51bSBkY19saW5rX2Zl Y19zdGF0ZSB7CjE0NDc0OiAgZGNfbGlua19mZWNfbm90X3JlYWR5LAoxNDQ3NDogIGRjX2xpbmtf ZmVjX3JlYWR5LAoxNDQ3NDogIGRjX2xpbmtfZmVjX2VuYWJsZWQKMTQ0NzQ6IH07CjE0NDc0OiBz dHJ1Y3QgZGNfbGlua19zdGF0dXMgewoxNDQ3NDogIGJvb2wgbGlua19hY3RpdmU7CjE0NDc0OiAg c3RydWN0IGRwY2RfY2FwcyAqZHBjZF9jYXBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgbGlua19tc3Rfc3RyZWFtX2FsbG9jYXRpb24gewoxNDQ3NDogCjE0NDc0OiAg Y29uc3Qgc3RydWN0IHN0cmVhbV9lbmNvZGVyICpzdHJlYW1fZW5jOwoxNDQ3NDogCjE0NDc0OiAg dWludDhfdCB2Y3BfaWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IHNsb3RfY291bnQ7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2Nh dGlvbl90YWJsZSB7CjE0NDc0OiAKMTQ0NzQ6ICBpbnQgc3RyZWFtX2NvdW50OwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IGxpbmtfbXN0X3N0cmVhbV9hbGxvY2F0aW9uIHN0cmVhbV9hbGxvY2F0aW9u c1tNQVhfQ09OVFJPTExFUl9OVU1dOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHRp bWVfc3RhbXAgewoxNDQ3NDogIHVpbnQ2NF90IGVkcF9wb3dlcm9mZjsKMTQ0NzQ6ICB1aW50NjRf dCBlZHBfcG93ZXJvbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBsaW5rX3RyYWNl IHsKMTQ0NzQ6ICBzdHJ1Y3QgdGltZV9zdGFtcCB0aW1lX3N0YW1wOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX2xpbmsgewoxNDQ3NDog IHN0cnVjdCBkY19zaW5rICpyZW1vdGVfc2lua3NbNF07CjE0NDc0OiAgdW5zaWduZWQgaW50IHNp bmtfY291bnQ7CjE0NDc0OiAgc3RydWN0IGRjX3NpbmsgKmxvY2FsX3Npbms7CjE0NDc0OiAgdW5z aWduZWQgaW50IGxpbmtfaW5kZXg7CjE0NDc0OiAgZW51bSBkY19jb25uZWN0aW9uX3R5cGUgdHlw ZTsKMTQ0NzQ6ICBlbnVtIHNpZ25hbF90eXBlIGNvbm5lY3Rvcl9zaWduYWw7CjE0NDc0OiAgZW51 bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2VfaHBkOwoxNDQ3NDogIGVudW0gZGNfaXJxX3NvdXJj ZSBpcnFfc291cmNlX2hwZF9yeDsKMTQ0NzQ6ICBib29sIGlzX2hwZF9maWx0ZXJfZGlzYWJsZWQ7 CjE0NDc0OiAgYm9vbCBkcF9zc19vZmY7CjE0NDc0OiAgYm9vbCBsaW5rX3N0YXRlX3ZhbGlkOwox NDQ3NDogIGJvb2wgYXV4X2FjY2Vzc19kaXNhYmxlZDsKMTQ0NzQ6ICBib29sIHN5bmNfbHRfaW5f cHJvZ3Jlc3M7CjE0NDc0OiAgYm9vbCBpc19sdHRwcl9tb2RlX3RyYW5zcGFyZW50OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3Mg cmVwb3J0ZWRfbGlua19jYXA7CjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgdmVyaWZp ZWRfbGlua19jYXA7CjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgY3VyX2xpbmtfc2V0 dGluZ3M7CjE0NDc0OiAgc3RydWN0IGRjX2xhbmVfc2V0dGluZ3MgY3VyX2xhbmVfc2V0dGluZzsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyBwcmVmZXJyZWRfbGlua19zZXR0aW5nOwox NDQ3NDogIHN0cnVjdCBkY19saW5rX3RyYWluaW5nX292ZXJyaWRlcyBwcmVmZXJyZWRfdHJhaW5p bmdfc2V0dGluZ3M7CjE0NDc0OiAgc3RydWN0IGRwX2F1ZGlvX3Rlc3RfZGF0YSBhdWRpb190ZXN0 X2RhdGE7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IGRkY19od19pbnN0OwoxNDQ3NDogCjE0NDc0 OiAgdWludDhfdCBocGRfc3JjOwoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCBsaW5rX2VuY19od19p bnN0OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCB0ZXN0X3BhdHRlcm5fZW5hYmxlZDsKMTQ0NzQ6ICB1 bmlvbiBjb21wbGlhbmNlX3Rlc3Rfc3RhdGUgY29tcGxpYW5jZV90ZXN0X3N0YXRlOwoxNDQ3NDog CjE0NDc0OiAgdm9pZCAqcHJpdjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkZGNfc2VydmljZSAq ZGRjOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCBhdXhfbW9kZTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGMgKmRjOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRj X2NvbnRleHQgKmN0eDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaW5rX2VuY29kZXIgKmxpbmtf ZW5jOwoxNDQ3NDogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgbGlua19pZDsKMTQ0NzQ6ICB1 bmlvbiBkZGlfY2hhbm5lbF9tYXBwaW5nIGRkaV9jaGFubmVsX21hcHBpbmc7CjE0NDc0OiAgc3Ry dWN0IGNvbm5lY3Rvcl9kZXZpY2VfdGFnX2luZm8gZGV2aWNlX3RhZzsKMTQ0NzQ6ICBzdHJ1Y3Qg ZHBjZF9jYXBzIGRwY2RfY2FwczsKMTQ0NzQ6ICB1aW50MzJfdCBkb25nbGVfbWF4X3BpeF9jbGs7 CjE0NDc0OiAgdW5zaWduZWQgc2hvcnQgY2hpcF9jYXBzOwoxNDQ3NDogIHVuc2lnbmVkIGludCBk cGNkX3NpbmtfY291bnQ7CjE0NDc0OiAgZW51bSBlZHBfcmV2aXNpb24gZWRwX3JldmlzaW9uOwox NDQ3NDogIGJvb2wgcHNyX2ZlYXR1cmVfZW5hYmxlZDsKMTQ0NzQ6ICBib29sIHBzcl9hbGxvd19h Y3RpdmU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBsaW5rX2ZsYWdzIHsKMTQ0NzQ6 ICAgYm9vbCBkcF9rZWVwX3JlY2VpdmVyX3Bvd2VyZWQ7CjE0NDc0OiAgIGJvb2wgZHBfc2tpcF9E SUQyOwoxNDQ3NDogICBib29sIGRwX3NraXBfcmVzZXRfc2VnbWVudDsKMTQ0NzQ6ICB9IHdhX2Zs YWdzOwoxNDQ3NDogIHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZSBtc3Rf c3RyZWFtX2FsbG9jX3RhYmxlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc3RhdHVz IGxpbmtfc3RhdHVzOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGxpbmtfdHJhY2UgbGlua190cmFj ZTsKMTQ0NzQ6ICBzdHJ1Y3QgZ3BpbyAqaHBkX2dwaW87CjE0NDc0OiAgZW51bSBkY19saW5rX2Zl Y19zdGF0ZSBmZWNfc3RhdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBjb25zdCBzdHJ1Y3Qg ZGNfbGlua19zdGF0dXMgKmRjX2xpbmtfZ2V0X3N0YXR1cyhjb25zdCBzdHJ1Y3QgZGNfbGluayAq ZGNfbGluayk7CjE0NDc0OiAjIDE1NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RjX2xpbmsuaCIKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkY19saW5rICpkY19nZXRfbGlua19h dF9pbmRleChzdHJ1Y3QgZGMgKmRjLCB1aW50MzJfdCBsaW5rX2luZGV4KQoxNDQ3NDogewoxNDQ3 NDogIHJldHVybiBkYy0+bGlua3NbbGlua19pbmRleF07CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHN0cnVjdCBkY19saW5rICpnZXRfZWRwX2xpbmsoY29uc3Qgc3RydWN0IGRjICpkYykKMTQ0NzQ6 IHsKMTQ0NzQ6ICBpbnQgaTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8 IGRjLT5saW5rX2NvdW50OyBpKyspIHsKMTQ0NzQ6ICAgaWYgKGRjLT5saW5rc1tpXS0+Y29ubmVj dG9yX3NpZ25hbCA9PSBTSUdOQUxfVFlQRV9FRFApCjE0NDc0OiAgICByZXR1cm4gZGMtPmxpbmtz W2ldOwoxNDQ3NDogIH0KMTQ0NzQ6ICByZXR1cm4gKCh2b2lkICopMCk7CjE0NDc0OiB9CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19saW5rX3Nl dF9iYWNrbGlnaHRfbGV2ZWwoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssCjE0NDc0OiAg IHVpbnQzMl90IGJhY2tsaWdodF9wd21fdTE2XzE2LAoxNDQ3NDogICB1aW50MzJfdCBmcmFtZV9y YW1wKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGRjX2xpbmtfZ2V0X2JhY2tsaWdodF9sZXZlbChjb25z dCBzdHJ1Y3QgZGNfbGluayAqZGNfbGluayk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfbGlua19z ZXRfYWJtX2Rpc2FibGUoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmRjX2xpbmspOwoxNDQ3NDogCjE0 NDc0OiBib29sIGRjX2xpbmtfc2V0X3Bzcl9hbGxvd19hY3RpdmUoc3RydWN0IGRjX2xpbmsgKmRj X2xpbmssIGJvb2wgZW5hYmxlLCBib29sIHdhaXQpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX2xp bmtfZ2V0X3Bzcl9zdGF0ZShjb25zdCBzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywgdWludDMyX3Qg KnBzcl9zdGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfbGlua19zZXR1cF9wc3Ioc3RydWN0 IGRjX2xpbmsgKmRjX2xpbmssCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUg KnN0cmVhbSwgc3RydWN0IHBzcl9jb25maWcgKnBzcl9jb25maWcsCjE0NDc0OiAgIHN0cnVjdCBw c3JfY29udGV4dCAqcHNyX2NvbnRleHQpOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2RldGVjdF9yZWFzb24gewox NDQ3NDogIERFVEVDVF9SRUFTT05fQk9PVCwKMTQ0NzQ6ICBERVRFQ1RfUkVBU09OX0hQRCwKMTQ0 NzQ6ICBERVRFQ1RfUkVBU09OX0hQRFJYLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBk Y19saW5rX2RldGVjdChzdHJ1Y3QgZGNfbGluayAqZGNfbGluaywgZW51bSBkY19kZXRlY3RfcmVh c29uIHJlYXNvbik7CjE0NDc0OiBib29sIGRjX2xpbmtfZ2V0X2hwZF9zdGF0ZShzdHJ1Y3QgZGNf bGluayAqZGNfbGluayk7CjE0NDc0OiBlbnVtIGRjX3N0YXR1cyBkY19saW5rX2FsbG9jYXRlX21z dF9wYXlsb2FkKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogZW51bSBkY19zdGF0 dXMgZGNfbGlua19yZWFsbG9jYXRlX21zdF9wYXlsb2FkKHN0cnVjdCBkY19saW5rICpsaW5rKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogYm9vbCBkY19saW5rX2hhbmRsZV9ocGRfcnhfaXJxKHN0cnVjdCBkY19saW5rICpkY19s aW5rLAoxNDQ3NDogICB1bmlvbiBocGRfaXJxX2RhdGEgKmhwZF9pcnFfZHBjZF9kYXRhLCBib29s ICpvdXRfbGlua19sb3NzKTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRjX3NpbmtfaW5pdF9kYXRh OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfc2luayAqZGNfbGlua19hZGRfcmVtb3RlX3Npbmso CjE0NDc0OiAgIHN0cnVjdCBkY19saW5rICpkY19saW5rLAoxNDQ3NDogICBjb25zdCB1aW50OF90 ICplZGlkLAoxNDQ3NDogICBpbnQgbGVuLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc2lua19pbml0X2Rh dGEgKmluaXRfZGF0YSk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfbGlua19yZW1vdmVfcmVtb3Rl X3NpbmsoCjE0NDc0OiAgc3RydWN0IGRjX2xpbmsgKmxpbmssCjE0NDc0OiAgc3RydWN0IGRjX3Np bmsgKnNpbmspOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19saW5rX2Rw X3NldF9kcml2ZV9zZXR0aW5ncygKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbGluayAqbGluaywKMTQ0NzQ6 ICBzdHJ1Y3QgbGlua190cmFpbmluZ19zZXR0aW5ncyAqbHRfc2V0dGluZ3MpOwoxNDQ3NDogCjE0 NDc0OiBib29sIGRjX2xpbmtfZHBfcGVyZm9ybV9saW5rX3RyYWluaW5nX3NraXBfYXV4KAoxNDQ3 NDogIHN0cnVjdCBkY19saW5rICpsaW5rLAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19saW5rX3Nl dHRpbmdzICpsaW5rX3NldHRpbmcpOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGxpbmtfdHJhaW5pbmdf cmVzdWx0IGRjX2xpbmtfZHBfcGVyZm9ybV9saW5rX3RyYWluaW5nKAoxNDQ3NDogIHN0cnVjdCBk Y19saW5rICpsaW5rLAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5r X3NldHRpbmcsCjE0NDc0OiAgYm9vbCBza2lwX3ZpZGVvX3BhdHRlcm4pOwoxNDQ3NDogCjE0NDc0 OiBib29sIGRjX2xpbmtfZHBfc3luY19sdF9iZWdpbihzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gbGlua190cmFpbmluZ19yZXN1bHQgZGNfbGlua19kcF9zeW5jX2x0 X2F0dGVtcHQoCjE0NDc0OiAgc3RydWN0IGRjX2xpbmsgKmxpbmssCjE0NDc0OiAgc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZywKMTQ0NzQ6ICBzdHJ1Y3QgZGNfbGlua190cmFp bmluZ19vdmVycmlkZXMgKmx0X3NldHRpbmdzKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19saW5r X2RwX3N5bmNfbHRfZW5kKHN0cnVjdCBkY19saW5rICpsaW5rLCBib29sIGxpbmtfZG93bik7CjE0 NDc0OiAKMTQ0NzQ6IHZvaWQgZGNfbGlua19kcF9lbmFibGVfaHBkKGNvbnN0IHN0cnVjdCBkY19s aW5rICpsaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19saW5rX2RwX2Rpc2FibGVfaHBkKGNv bnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19saW5rX2Rw X3NldF90ZXN0X3BhdHRlcm4oCjE0NDc0OiAgc3RydWN0IGRjX2xpbmsgKmxpbmssCjE0NDc0OiAg ZW51bSBkcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAoxNDQ3NDogIGVudW0gZHBfdGVzdF9w YXR0ZXJuX2NvbG9yX3NwYWNlIHRlc3RfcGF0dGVybl9jb2xvcl9zcGFjZSwKMTQ0NzQ6ICBjb25z dCBzdHJ1Y3QgbGlua190cmFpbmluZ19zZXR0aW5ncyAqcF9saW5rX3NldHRpbmdzLAoxNDQ3NDog IGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBfY3VzdG9tX3BhdHRlcm4sCjE0NDc0OiAgdW5zaWduZWQg aW50IGN1c3RfcGF0dGVybl9zaXplKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19saW5rX2VuYWJs ZV9ocGRfZmlsdGVyKHN0cnVjdCBkY19saW5rICpsaW5rLCBib29sIGVuYWJsZSk7CjE0NDc0OiAK MTQ0NzQ6IGJvb2wgZGNfbGlua19pc19kcF9zaW5rX3ByZXNlbnQoc3RydWN0IGRjX2xpbmsgKmxp bmspOwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX2xpbmtfZGV0ZWN0X3Npbmsoc3RydWN0IGRjX2xp bmsgKmxpbmssIGVudW0gZGNfY29ubmVjdGlvbl90eXBlICp0eXBlKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19saW5rX3NldF9kcml2ZV9zZXR0aW5ncyhz dHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgIHN0cnVjdCBsaW5rX3RyYWluaW5nX3NldHRpbmdzICps dF9zZXR0aW5ncywKMTQ0NzQ6ICAgICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0NDc0 OiB2b2lkIGRjX2xpbmtfcGVyZm9ybV9saW5rX3RyYWluaW5nKHN0cnVjdCBkYyAqZGMsCjE0NDc0 OiAgICAgICAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZywKMTQ0NzQ6ICAg ICAgICBib29sIHNraXBfdmlkZW9fcGF0dGVybik7CjE0NDc0OiB2b2lkIGRjX2xpbmtfc2V0X3By ZWZlcnJlZF9saW5rX3NldHRpbmdzKHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgICAgICBzdHJ1Y3Qg ZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5nLAoxNDQ3NDogICAgICAgc3RydWN0IGRjX2xp bmsgKmxpbmspOwoxNDQ3NDogdm9pZCBkY19saW5rX3NldF9wcmVmZXJyZWRfdHJhaW5pbmdfc2V0 dGluZ3Moc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgICAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3Mg Kmxpbmtfc2V0dGluZywKMTQ0NzQ6ICAgICAgc3RydWN0IGRjX2xpbmtfdHJhaW5pbmdfb3ZlcnJp ZGVzICpsdF9vdmVycmlkZXMsCjE0NDc0OiAgICAgIHN0cnVjdCBkY19saW5rICpsaW5rLAoxNDQ3 NDogICAgICBib29sIHNraXBfaW1tZWRpYXRlX3JldHJhaW4pOwoxNDQ3NDogdm9pZCBkY19saW5r X2VuYWJsZV9ocGQoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmspOwoxNDQ3NDogdm9pZCBkY19s aW5rX2Rpc2FibGVfaHBkKGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsKMTQ0NzQ6IHZvaWQg ZGNfbGlua19zZXRfdGVzdF9wYXR0ZXJuKHN0cnVjdCBkY19saW5rICpsaW5rLAoxNDQ3NDogICAg ZW51bSBkcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAoxNDQ3NDogICAgZW51bSBkcF90ZXN0 X3BhdHRlcm5fY29sb3Jfc3BhY2UgdGVzdF9wYXR0ZXJuX2NvbG9yX3NwYWNlLAoxNDQ3NDogICAg Y29uc3Qgc3RydWN0IGxpbmtfdHJhaW5pbmdfc2V0dGluZ3MgKnBfbGlua19zZXR0aW5ncywKMTQ0 NzQ6ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBfY3VzdG9tX3BhdHRlcm4sCjE0NDc0OiAgICB1 bnNpZ25lZCBpbnQgY3VzdF9wYXR0ZXJuX3NpemUpOwoxNDQ3NDogdWludDMyX3QgZGNfbGlua19i YW5kd2lkdGhfa2JwcygKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluaywKMTQ0NzQ6 ICBjb25zdCBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5nKTsKMTQ0NzQ6IAox NDQ3NDogY29uc3Qgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmRjX2xpbmtfZ2V0X2xpbmtfY2Fw KAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0NDc0OiAKMTQ0NzQ6IHZv aWQgZGNfbGlua19vdmVyd3JpdGVfZXh0ZW5kZWRfcmVjZWl2ZXJfY2FwKAoxNDQ3NDogICBzdHJ1 Y3QgZGNfbGluayAqbGluayk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfc3VibWl0X2kyYygKMTQ0 NzQ6ICAgc3RydWN0IGRjICpkYywKMTQ0NzQ6ICAgdWludDMyX3QgbGlua19pbmRleCwKMTQ0NzQ6 ICAgc3RydWN0IGkyY19jb21tYW5kICpjbWQpOwoxNDQ3NDogCjE0NDc0OiBib29sIGRjX3N1Ym1p dF9pMmNfb2VtKAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgaTJjX2Nv bW1hbmQgKmNtZCk7CjE0NDc0OiAKMTQ0NzQ6IHVpbnQzMl90IGRjX2JhbmR3aWR0aF9pbl9rYnBz X2Zyb21fdGltaW5nKAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5n KTsKMTQ0NzQ6ICMgOTgzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZGMuaCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY19jb250YWluZXJfaWQgewoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgY2hhciBn dWlkWzE2XTsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCBwb3J0SWRbMl07CjE0NDc0OiAK MTQ0NzQ6ICB1bnNpZ25lZCBzaG9ydCBtYW51ZmFjdHVyZXJOYW1lOwoxNDQ3NDogCjE0NDc0OiAg dW5zaWduZWQgc2hvcnQgcHJvZHVjdENvZGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBkY19zaW5rX2RzY19jYXBzIHsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9v bCBpc192aXJ0dWFsX2RwY2RfZHNjOwoxNDQ3NDogIHN0cnVjdCBkc2NfZGVjX2RwY2RfY2FwcyBk c2NfZGVjX2NhcHM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGNfc2luayB7CjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaW5rX3NpZ25h bDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfZWRpZCBkY19lZGlkOwoxNDQ3NDogIHN0cnVjdCBkY19lZGlk X2NhcHMgZWRpZF9jYXBzOwoxNDQ3NDogIHN0cnVjdCBkY19jb250YWluZXJfaWQgKmRjX2NvbnRh aW5lcl9pZDsKMTQ0NzQ6ICB1aW50MzJfdCBkb25nbGVfbWF4X3BpeF9jbGs7CjE0NDc0OiAgdm9p ZCAqcHJpdjsKMTQ0NzQ6ICBzdHJ1Y3Qgc3RlcmVvXzNkX2ZlYXR1cmVzIGZlYXR1cmVzXzNkW1RJ TUlOR18zRF9GT1JNQVRfTUFYXTsKMTQ0NzQ6ICBib29sIGNvbnZlcnRlcl9kaXNhYmxlX2F1ZGlv OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX3NpbmtfZHNjX2NhcHMgc2lua19kc2NfY2FwczsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2xpbmsgKmxpbms7CjE0NDc0OiAgc3Ry dWN0IGRjX2NvbnRleHQgKmN0eDsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHNpbmtfaWQ7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBrcmVm IHJlZmNvdW50OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19zaW5rX3JldGFpbihz dHJ1Y3QgZGNfc2luayAqc2luayk7CjE0NDc0OiB2b2lkIGRjX3NpbmtfcmVsZWFzZShzdHJ1Y3Qg ZGNfc2luayAqc2luayk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY19zaW5rX2luaXRfZGF0YSB7 CjE0NDc0OiAgZW51bSBzaWduYWxfdHlwZSBzaW5rX3NpZ25hbDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNf bGluayAqbGluazsKMTQ0NzQ6ICB1aW50MzJfdCBkb25nbGVfbWF4X3BpeF9jbGs7CjE0NDc0OiAg Ym9vbCBjb252ZXJ0ZXJfZGlzYWJsZV9hdWRpbzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBkY19zaW5rICpkY19zaW5rX2NyZWF0ZShjb25zdCBzdHJ1Y3QgZGNfc2lua19pbml0X2Rh dGEgKmluaXRfcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNfY3Vyc29y IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBhZGRyZXNzOwoxNDQ3NDogIHN0cnVj dCBkY19jdXJzb3JfYXR0cmlidXRlcyBhdHRyaWJ1dGVzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2lycV9zb3VyY2UgZGNf aW50ZXJydXB0X3RvX2lycV9zb3VyY2UoCjE0NDc0OiAgIHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAg IHVpbnQzMl90IHNyY19pZCwKMTQ0NzQ6ICAgdWludDMyX3QgZXh0X2lkKTsKMTQ0NzQ6IGJvb2wg ZGNfaW50ZXJydXB0X3NldChzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRjX2lycV9zb3VyY2Ugc3JjLCBi b29sIGVuYWJsZSk7CjE0NDc0OiB2b2lkIGRjX2ludGVycnVwdF9hY2soc3RydWN0IGRjICpkYywg ZW51bSBkY19pcnFfc291cmNlIHNyYyk7CjE0NDc0OiBlbnVtIGRjX2lycV9zb3VyY2UgZGNfZ2V0 X2hwZF9pcnFfc291cmNlX2F0X2luZGV4KAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLCB1aW50MzJf dCBsaW5rX2luZGV4KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiB2b2lkIGRjX3NldF9wb3dlcl9zdGF0ZSgKMTQ0NzQ6ICAgc3RydWN0IGRjICpkYywKMTQ0 NzQ6ICAgZW51bSBkY19hY3BpX2NtX3Bvd2VyX3N0YXRlIHBvd2VyX3N0YXRlKTsKMTQ0NzQ6IHZv aWQgZGNfcmVzdW1lKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogdW5zaWduZWQgaW50IGRjX2dldF9j dXJyZW50X2JhY2tsaWdodF9wd20oc3RydWN0IGRjICpkYyk7CjE0NDc0OiB1bnNpZ25lZCBpbnQg ZGNfZ2V0X3RhcmdldF9iYWNrbGlnaHRfcHdtKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogCjE0NDc0 OiBib29sIGRjX2lzX2RtY3VfaW5pdGlhbGl6ZWQoc3RydWN0IGRjICpkYyk7CjE0NDc0OiBib29s IGRjX2lzX2h3X2luaXRpYWxpemVkKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogCjE0NDc0OiBlbnVt IGRjX3N0YXR1cyBkY19zZXRfY2xvY2soc3RydWN0IGRjICpkYywgZW51bSBkY19jbG9ja190eXBl IGNsb2NrX3R5cGUsIHVpbnQzMl90IGNsa19raHosIHVpbnQzMl90IHN0ZXBwaW5nKTsKMTQ0NzQ6 IHZvaWQgZGNfZ2V0X2Nsb2NrKHN0cnVjdCBkYyAqZGMsIGVudW0gZGNfY2xvY2tfdHlwZSBjbG9j a190eXBlLCBzdHJ1Y3QgZGNfY2xvY2tfY29uZmlnICpjbG9ja19jZmcpOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZGNfZHNjLmgiIDEKMTQ0NzQ6ICMgMzQgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9kY19kc2MuaCIKMTQ0NzQ6IHN0cnVjdCBkY19kc2NfYndfcmFu Z2UgewoxNDQ3NDogIHVpbnQzMl90IG1pbl9rYnBzOwoxNDQ3NDogIHVpbnQzMl90IG1pbl90YXJn ZXRfYnBwX3gxNjsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfa2JwczsKMTQ0NzQ6ICB1aW50MzJfdCBt YXhfdGFyZ2V0X2JwcF94MTY7CjE0NDc0OiAgdWludDMyX3Qgc3RyZWFtX2ticHM7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGlzcGxheV9zdHJlYW1fY29tcHJlc3NvciB7CjE0NDc0 OiAgY29uc3Qgc3RydWN0IGRzY19mdW5jcyAqZnVuY3M7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRl eHQgKmN0eDsKMTQ0NzQ6ICBpbnQgaW5zdDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBkY19kc2NfcG9saWN5IHsKMTQ0NzQ6ICBib29sIHVzZV9taW5fc2xpY2VzX2g7CjE0NDc0OiAg aW50IG1heF9zbGljZXNfaDsKMTQ0NzQ6ICBpbnQgbWluX3NsaWNlX2hlaWdodDsKMTQ0NzQ6ICB1 aW50MzJfdCBtYXhfdGFyZ2V0X2JwcDsKMTQ0NzQ6ICB1aW50MzJfdCBtaW5fdGFyZ2V0X2JwcDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZGNfZHNjX3BhcnNlX2RzY19kcGNkKGNvbnN0 IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIGNvbnN0IHVpbnQ4X3QgKmRwY2RfZHNjX2Jhc2ljX2Rh dGEsCjE0NDc0OiAgIGNvbnN0IHVpbnQ4X3QgKmRwY2RfZHNjX2V4dF9kYXRhLAoxNDQ3NDogICBz dHJ1Y3QgZHNjX2RlY19kcGNkX2NhcHMgKmRzY19zaW5rX2NhcHMpOwoxNDQ3NDogCjE0NDc0OiBi b29sIGRjX2RzY19jb21wdXRlX2JhbmR3aWR0aF9yYW5nZSgKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0 IGRpc3BsYXlfc3RyZWFtX2NvbXByZXNzb3IgKmRzYywKMTQ0NzQ6ICAgY29uc3QgdWludDMyX3Qg ZHNjX21pbl9zbGljZV9oZWlnaHRfb3ZlcnJpZGUsCjE0NDc0OiAgIGNvbnN0IHVpbnQzMl90IG1p bl9icHAsCjE0NDc0OiAgIGNvbnN0IHVpbnQzMl90IG1heF9icHAsCjE0NDc0OiAgIGNvbnN0IHN0 cnVjdCBkc2NfZGVjX2RwY2RfY2FwcyAqZHNjX3NpbmtfY2FwcywKMTQ0NzQ6ICAgY29uc3Qgc3Ry dWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcsCjE0NDc0OiAgIHN0cnVjdCBkY19kc2NfYndfcmFu Z2UgKnJhbmdlKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY19kc2NfY29tcHV0ZV9jb25maWcoCjE0 NDc0OiAgIGNvbnN0IHN0cnVjdCBkaXNwbGF5X3N0cmVhbV9jb21wcmVzc29yICpkc2MsCjE0NDc0 OiAgIGNvbnN0IHN0cnVjdCBkc2NfZGVjX2RwY2RfY2FwcyAqZHNjX3NpbmtfY2FwcywKMTQ0NzQ6 ICAgY29uc3QgdWludDMyX3QgZHNjX21pbl9zbGljZV9oZWlnaHRfb3ZlcnJpZGUsCjE0NDc0OiAg IHVpbnQzMl90IHRhcmdldF9iYW5kd2lkdGhfa2JwcywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRj X2NydGNfdGltaW5nICp0aW1pbmcsCjE0NDc0OiAgIHN0cnVjdCBkY19kc2NfY29uZmlnICpkc2Nf Y2ZnKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19kc2NfZ2V0X3BvbGljeV9mb3JfdGltaW5nKGNv bnN0IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nLAoxNDQ3NDogICBzdHJ1Y3QgZGNfZHNj X3BvbGljeSAqcG9saWN5KTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBkY19kc2NfcG9saWN5X3NldF9t YXhfdGFyZ2V0X2JwcF9saW1pdCh1aW50MzJfdCBsaW1pdCk7CjE0NDc0OiAjIDEwODYgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCjE0NDc0OiAjIDMw ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19t Z3IuaCIgMgoxNDQ3NDogIyA1MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2luYy9ody9jbGtfbWdyLmgiCjE0NDc0OiBzdHJ1Y3QgY2xrX2xpbWl0X3RhYmxlX2Vu dHJ5IHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdm9sdGFnZTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg ZGNmY2xrX21oejsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmNsa19taHo7CjE0NDc0OiAgdW5zaWdu ZWQgaW50IG1lbWNsa19taHo7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNvY2Nsa19taHo7CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGtfbGltaXRfdGFibGUgewoxNDQ3 NDogIHN0cnVjdCBjbGtfbGltaXRfdGFibGVfZW50cnkgZW50cmllc1s4XTsKMTQ0NzQ6ICB1bnNp Z25lZCBpbnQgbnVtX2VudHJpZXM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd21f cmFuZ2VfdGFibGVfZW50cnkgewoxNDQ3NDogIHVuc2lnbmVkIGludCB3bV9pbnN0OwoxNDQ3NDog IHVuc2lnbmVkIGludCB3bV90eXBlOwoxNDQ3NDogIGRvdWJsZSBwc3RhdGVfbGF0ZW5jeV91czsK MTQ0NzQ6ICBkb3VibGUgc3JfZXhpdF90aW1lX3VzOwoxNDQ3NDogIGRvdWJsZSBzcl9lbnRlcl9w bHVzX2V4aXRfdGltZV91czsKMTQ0NzQ6ICBib29sIHZhbGlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY2xrX2xvZ19pbmZvIHsKMTQ0NzQ6ICBib29sIGVuYWJsZWQ7 CjE0NDc0OiAgY2hhciAqcEJ1ZjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgYnVmU2l6ZTsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgKnN1bV9jaGFyc19wcmludGVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGNsa19zdGF0ZV9yZWdpc3RlcnNfYW5kX2J5cGFzcyB7CjE0NDc0OiAgdWludDMy X3QgZGNmY2xrOwoxNDQ3NDogIHVpbnQzMl90IGRjZl9kZWVwX3NsZWVwX2RpdmlkZXI7CjE0NDc0 OiAgdWludDMyX3QgZGNmX2RlZXBfc2xlZXBfYWxsb3c7CjE0NDc0OiAgdWludDMyX3QgZHByZWZj bGs7CjE0NDc0OiAgdWludDMyX3QgZGlzcGNsazsKMTQ0NzQ6ICB1aW50MzJfdCBkcHBjbGs7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkcHBjbGtfYnlwYXNzOwoxNDQ3NDogIHVpbnQzMl90IGRj ZmNsa19ieXBhc3M7CjE0NDc0OiAgdWludDMyX3QgZHByZWZjbGtfYnlwYXNzOwoxNDQ3NDogIHVp bnQzMl90IGRpc3BjbGtfYnlwYXNzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJ2 MV9jbGtfaW50ZXJuYWwgewoxNDQ3NDogIHVpbnQzMl90IENMSzBfQ0xLOF9DVVJSRU5UX0NOVDsK MTQ0NzQ6ICB1aW50MzJfdCBDTEswX0NMSzhfRFNfQ05UTDsKMTQ0NzQ6ICB1aW50MzJfdCBDTEsw X0NMSzhfQUxMT1dfRFM7CjE0NDc0OiAgdWludDMyX3QgQ0xLMF9DTEsxMF9DVVJSRU5UX0NOVDsK MTQ0NzQ6ICB1aW50MzJfdCBDTEswX0NMSzExX0NVUlJFTlRfQ05UOwoxNDQ3NDogCjE0NDc0OiAg dWludDMyX3QgQ0xLMF9DTEs4X0JZUEFTU19DTlRMOwoxNDQ3NDogIHVpbnQzMl90IENMSzBfQ0xL MTBfQllQQVNTX0NOVEw7CjE0NDc0OiAgdWludDMyX3QgQ0xLMF9DTEsxMV9CWVBBU1NfQ05UTDsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBybl9jbGtfaW50ZXJuYWwgewoxNDQ3NDog IHVpbnQzMl90IENMSzFfQ0xLMF9DVVJSRU5UX0NOVDsKMTQ0NzQ6ICB1aW50MzJfdCBDTEsxX0NM SzFfQ1VSUkVOVF9DTlQ7CjE0NDc0OiAgdWludDMyX3QgQ0xLMV9DTEsyX0NVUlJFTlRfQ05UOwox NDQ3NDogIHVpbnQzMl90IENMSzFfQ0xLM19DVVJSRU5UX0NOVDsKMTQ0NzQ6ICB1aW50MzJfdCBD TEsxX0NMSzNfRFNfQ05UTDsKMTQ0NzQ6ICB1aW50MzJfdCBDTEsxX0NMSzNfQUxMT1dfRFM7CjE0 NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBDTEsxX0NMSzBfQllQQVNTX0NOVEw7CjE0NDc0OiAgdWlu dDMyX3QgQ0xLMV9DTEsxX0JZUEFTU19DTlRMOwoxNDQ3NDogIHVpbnQzMl90IENMSzFfQ0xLMl9C WVBBU1NfQ05UTDsKMTQ0NzQ6ICB1aW50MzJfdCBDTEsxX0NMSzNfQllQQVNTX0NOVEw7CjE0NDc0 OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19zdGF0ZV9yZWdp c3RlcnMgewoxNDQ3NDogICB1aW50MzJfdCBDTEswX0NMSzhfQ1VSUkVOVF9DTlQ7CjE0NDc0OiAg IHVpbnQzMl90IENMSzBfQ0xLOF9EU19DTlRMOwoxNDQ3NDogICB1aW50MzJfdCBDTEswX0NMSzhf QUxMT1dfRFM7CjE0NDc0OiAgIHVpbnQzMl90IENMSzBfQ0xLMTBfQ1VSUkVOVF9DTlQ7CjE0NDc0 OiAgIHVpbnQzMl90IENMSzBfQ0xLMTFfQ1VSUkVOVF9DTlQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGtfYnlwYXNzIHsKMTQ0NzQ6ICB1aW50MzJfdCBkY2ZjbGtf YnlwYXNzOwoxNDQ3NDogIHVpbnQzMl90IGRpc3BjbGtfcHlwYXNzOwoxNDQ3NDogIHVpbnQzMl90 IGRwcmVmY2xrX2J5cGFzczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd21fdGFibGUgewoxNDQ3NDogIHN0cnVj dCB3bV9yYW5nZV90YWJsZV9lbnRyeSBlbnRyaWVzWzRdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogc3RydWN0IGNsa19id19wYXJhbXMgewoxNDQ3NDogIHVuc2lnbmVkIGludCB2cmFtX3R5cGU7 CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bV9jaGFubmVsczsKMTQ0NzQ6ICBzdHJ1Y3QgY2xrX2xp bWl0X3RhYmxlIGNsa190YWJsZTsKMTQ0NzQ6ICBzdHJ1Y3Qgd21fdGFibGUgd21fdGFibGU7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGtfc3RhdGVzIHsKMTQ0NzQ6 ICB1aW50MzJfdCBkcHJlZmNsa19raHo7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg Y2xrX21ncl9mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqdXBkYXRlX2Nsb2Nrcykoc3RydWN0IGNsa19t Z3IgKmNsa19tZ3IsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAg ICBib29sIHNhZmVfdG9fbG93ZXIpOwoxNDQ3NDogCjE0NDc0OiAgaW50ICgqZ2V0X2RwX3JlZl9j bGtfZnJlcXVlbmN5KShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqaW5pdF9jbG9ja3MpKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyKTsKMTQ0NzQ6IAoxNDQ3 NDogIHZvaWQgKCplbmFibGVfcG1lX3dhKSAoc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOwoxNDQ3 NDogIHZvaWQgKCpnZXRfY2xvY2spKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLAoxNDQ3NDogICAg c3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAoxNDQ3NDogICAgZW51bSBkY19jbG9ja190eXBlIGNs b2NrX3R5cGUsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY2xvY2tfY29uZmlnICpjbG9ja19jZmcpOwox NDQ3NDogCjE0NDc0OiAgYm9vbCAoKmFyZV9jbG9ja19zdGF0ZXNfZXF1YWwpIChzdHJ1Y3QgZGNf Y2xvY2tzICphLAoxNDQ3NDogICAgc3RydWN0IGRjX2Nsb2NrcyAqYik7CjE0NDc0OiAgdm9pZCAo Km5vdGlmeV93bV9yYW5nZXMpKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyKTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbGtfbWdyIHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAq Y3R4OwoxNDQ3NDogIHN0cnVjdCBjbGtfbWdyX2Z1bmNzICpmdW5jczsKMTQ0NzQ6ICBzdHJ1Y3Qg ZGNfY2xvY2tzIGNsa3M7CjE0NDc0OiAgYm9vbCBwc3JfYWxsb3dfYWN0aXZlX2NhY2hlOwoxNDQ3 NDogIGludCBkcHJlZmNsa19raHo7CjE0NDc0OiAgaW50IGRlbnRpc3RfdmNvX2ZyZXFfa2h6Owox NDQ3NDogIHN0cnVjdCBjbGtfc3RhdGVfcmVnaXN0ZXJzX2FuZF9ieXBhc3MgYm9vdF9zbmFwc2hv dDsKMTQ0NzQ6ICBzdHJ1Y3QgY2xrX2J3X3BhcmFtcyAqYndfcGFyYW1zOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNjZzsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNs a19tZ3IgKmRjX2Nsa19tZ3JfY3JlYXRlKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHN0cnVjdCBw cF9zbXVfZnVuY3MgKnBwX3NtdSwgc3RydWN0IGRjY2cgKmRjY2cpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIGRjX2Rlc3Ryb3lfY2xrX21ncihzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7CjE0NDc0OiAK MTQ0NzQ6IHZvaWQgY2xrX21ncl9leGl0X29wdGltaXplZF9wd3Jfc3RhdGUoY29uc3Qgc3RydWN0 IGRjICpkYywgc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGNs a19tZ3Jfb3B0aW1pemVfcHdyX3N0YXRlKGNvbnN0IHN0cnVjdCBkYyAqZGMsIHN0cnVjdCBjbGtf bWdyICpjbGtfbWdyKTsKMTQ0NzQ6ICMgMzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5hbC5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvcmVzb3VyY2UuaCIgMQoxNDQ3NDog IyAyOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9yZXNv dXJjZS5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMQoxNDQ3NDogIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgiCjE0NDc0OiAjIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvZGNlX2NhbGNzLmgi IDEKMTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9pbmMvZGNlX2NhbGNzLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvYndfZml4ZWQuaCIgMQoxNDQ3NDogIyAzMiAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9id19maXhlZC5oIgoxNDQ3NDog c3RydWN0IGJ3X2ZpeGVkIHsKMTQ0NzQ6ICBpbnQ2NF90IHZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGJ3X2ZpeGVkIGJ3X21pbjIoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsCjE0NDc0 OiAgICAgICAgICAgY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzIpCjE0NDc0OiB7CjE0NDc0OiAg cmV0dXJuIChhcmcxLnZhbHVlIDw9IGFyZzIudmFsdWUpID8gYXJnMSA6IGFyZzI7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19tYXgyKGNvbnN0IHN0cnVjdCBid19m aXhlZCBhcmcxLAoxNDQ3NDogICAgICAgICAgIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiAoYXJnMi52YWx1ZSA8PSBhcmcxLnZhbHVlKSA/IGFyZzEg OiBhcmcyOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfbWluMyhz dHJ1Y3QgYndfZml4ZWQgdjEsCjE0NDc0OiAgICAgICAgICAgc3RydWN0IGJ3X2ZpeGVkIHYyLAox NDQ3NDogICAgICAgICAgIHN0cnVjdCBid19maXhlZCB2MykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYndfbWluMihid19taW4yKHYxLCB2MiksIHYzKTsKMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGJ3X2ZpeGVkIGJ3X21heDMoc3RydWN0IGJ3X2ZpeGVkIHYxLAoxNDQ3NDogICAgICAg ICAgIHN0cnVjdCBid19maXhlZCB2MiwKMTQ0NzQ6ICAgICAgICAgICBzdHJ1Y3QgYndfZml4ZWQg djMpCjE0NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGJ3X21heDIoYndfbWF4Mih2MSwgdjIpLCB2Myk7 CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBid19maXhlZCBid19pbnRfdG9fZml4ZWRf bm9uY29uc3QoaW50NjRfdCB2YWx1ZSk7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfaW50X3Rv X2ZpeGVkKGludDY0X3QgdmFsdWUpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKF9fYnVpbHRpbl9jb25z dGFudF9wKHZhbHVlKSkgewoxNDQ3NDogICBzdHJ1Y3QgYndfZml4ZWQgcmVzOwoxNDQ3NDogICBk byB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzczKHZvaWQpIF9fYXR0cmlidXRl X18oKF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAidmFsdWUgPiBCV19GSVhFRF9N QVhfSTMyIHx8IHZhbHVlIDwgQldfRklYRURfTUlOX0kzMiIpKSk7IGlmICghKCEodmFsdWUgPiAo aW50NjRfdCkoKDFVTEwgPDwgKDYzIC0gMjQpKSAtIDEpIHx8IHZhbHVlIDwgKGludDY0X3QpKC0o MUxMIDw8ICg2MyAtIDI0KSkpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzczKCk7IH0gd2hpbGUg KDApOwoxNDQ3NDogICByZXMudmFsdWUgPSB2YWx1ZSA8PCAyNDsKMTQ0NzQ6ICAgcmV0dXJuIHJl czsKMTQ0NzQ6ICB9IGVsc2UKMTQ0NzQ6ICAgcmV0dXJuIGJ3X2ludF90b19maXhlZF9ub25jb25z dCh2YWx1ZSk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludDMyX3QgYndfZml4ZWRfdG9faW50 KHN0cnVjdCBid19maXhlZCB2YWx1ZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKCh2YWx1ZS52 YWx1ZSkgPj4gMjQpOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYndfZml4ZWQgYndf ZnJjX3RvX2ZpeGVkKGludDY0X3QgbnVtLCBpbnQ2NF90IGRlbnVtKTsKMTQ0NzQ6IAoxNDQ3NDog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGJ3X2ZpeGVkIGZpeGVkMzFfMzJfdG9fYndfZml4ZWQoaW50NjRfdCByYXcpCjE0NDc0 OiB7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHJlc3VsdCA9IHsgMCB9OwoxNDQ3NDogCjE0NDc0 OiAgaWYgKHJhdyA8IDApIHsKMTQ0NzQ6ICAgcmF3ID0gLXJhdzsKMTQ0NzQ6ICAgcmVzdWx0LnZh bHVlID0gLShyYXcgPj4gKDMyIC0gMjQpKTsKMTQ0NzQ6ICB9IGVsc2UgewoxNDQ3NDogICByZXN1 bHQudmFsdWUgPSByYXcgPj4gKDMyIC0gMjQpOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIHJl dHVybiByZXN1bHQ7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19h ZGQoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsCjE0NDc0OiAgICAgICAgICBjb25zdCBzdHJ1 Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcmVzOwox NDQ3NDogCjE0NDc0OiAgcmVzLnZhbHVlID0gYXJnMS52YWx1ZSArIGFyZzIudmFsdWU7CjE0NDc0 OiAKMTQ0NzQ6ICByZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndf Zml4ZWQgYndfc3ViKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndf Zml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcmVzOwoxNDQ3NDog CjE0NDc0OiAgcmVzLnZhbHVlID0gYXJnMS52YWx1ZSAtIGFyZzIudmFsdWU7CjE0NDc0OiAKMTQ0 NzQ6ICByZXR1cm4gcmVzOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYndfZml4ZWQg YndfbXVsKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQg YXJnMik7CjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfZGl2KGNvbnN0IHN0cnVjdCBid19maXhl ZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1 cm4gYndfZnJjX3RvX2ZpeGVkKGFyZzEudmFsdWUsIGFyZzIudmFsdWUpOwoxNDQ3NDogfQoxNDQ3 NDogCjE0NDc0OiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfbW9kKGNvbnN0IHN0cnVjdCBid19maXhlZCBh cmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgcmVzOwoxNDQ3NDogIGRpdjY0X3U2NF9yZW0oYXJnMS52YWx1ZSwgYXJnMi52YWx1 ZSwgKHVpbnQ2NF90ICopJnJlcy52YWx1ZSk7CjE0NDc0OiAgcmV0dXJuIHJlczsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGJ3X2ZpeGVkIGJ3X2Zsb29yMihjb25zdCBzdHJ1Y3QgYndf Zml4ZWQgYXJnLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgc2lnbmlmaWNhbmNlKTsKMTQ0NzQ6IHN0 cnVjdCBid19maXhlZCBid19jZWlsMihjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnLCBjb25zdCBz dHJ1Y3QgYndfZml4ZWQgc2lnbmlmaWNhbmNlKTsKMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBid19lcXUo Y29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQox NDQ3NDogewoxNDQ3NDogIHJldHVybiBhcmcxLnZhbHVlID09IGFyZzIudmFsdWU7CjE0NDc0OiB9 CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgYndfbmVxKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBj b25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52 YWx1ZSAhPSBhcmcyLnZhbHVlOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGJ3X2xlcShj b25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMSwgY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzIpCjE0 NDc0OiB7CjE0NDc0OiAgcmV0dXJuIGFyZzEudmFsdWUgPD0gYXJnMi52YWx1ZTsKMTQ0NzQ6IH0K MTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBid19tZXEoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQoxNDQ3NDogewoxNDQ3NDogIHJldHVybiBhcmcxLnZh bHVlID49IGFyZzIudmFsdWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYndfbHRuKGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0 NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52YWx1ZSA8IGFyZzIudmFsdWU7CjE0NDc0OiB9CjE0 NDc0OiAKMTQ0NzQ6IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgYndfbXRuKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25z dCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gYXJnMS52YWx1 ZSA+IGFyZzIudmFsdWU7CjE0NDc0OiB9CjE0NDc0OiAjIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2RjZV9jYWxjcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBwaXBlX2N0eDsKMTQ0NzQ6IHN0cnVjdCBkYzsKMTQ0NzQ6IHN0cnVjdCBkY19zdGF0 ZTsKMTQ0NzQ6IHN0cnVjdCBkY2VfYndfb3V0cHV0OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGJ3X2Nh bGNzX3ZlcnNpb24gewoxNDQ3NDogIEJXX0NBTENTX1ZFUlNJT05fSU5WQUxJRCwKMTQ0NzQ6ICBC V19DQUxDU19WRVJTSU9OX0NBUlJJWk8sCjE0NDc0OiAgQldfQ0FMQ1NfVkVSU0lPTl9QT0xBUklT MTAsCjE0NDc0OiAgQldfQ0FMQ1NfVkVSU0lPTl9QT0xBUklTMTEsCjE0NDc0OiAgQldfQ0FMQ1Nf VkVSU0lPTl9QT0xBUklTMTIsCjE0NDc0OiAgQldfQ0FMQ1NfVkVSU0lPTl9WRUdBTSwKMTQ0NzQ6 ICBCV19DQUxDU19WRVJTSU9OX1NUT05FWSwKMTQ0NzQ6ICBCV19DQUxDU19WRVJTSU9OX1ZFR0Ex MAoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9pbmMvZGNlX2NhbGNzLmgiCjE0NDc0OiBlbnVtIGJ3X2RlZmluZXMgewoxNDQ3 NDogCjE0NDc0OiAgYndfZGVmX25vID0gMCwKMTQ0NzQ6ICBid19kZWZfbm9uZSA9IDAsCjE0NDc0 OiAgYndfZGVmX3llcyA9IDEsCjE0NDc0OiAgYndfZGVmX29rID0gMSwKMTQ0NzQ6ICBid19kZWZf aGlnaCA9IDIsCjE0NDc0OiAgYndfZGVmX21pZCA9IDEsCjE0NDc0OiAgYndfZGVmX2xvdyA9IDAs CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJ3X2RlZnNfc3RhcnQgPSAyNTUsCjE0NDc0OiAgYndf ZGVmX3VuZGVybGF5NDIyLAoxNDQ3NDogIGJ3X2RlZl91bmRlcmxheTQyMF9sdW1hLAoxNDQ3NDog IGJ3X2RlZl91bmRlcmxheTQyMF9jaHJvbWEsCjE0NDc0OiAgYndfZGVmX3VuZGVybGF5NDQ0LAox NDQ3NDogIGJ3X2RlZl9ncmFwaGljcywKMTQ0NzQ6ICBid19kZWZfZGlzcGxheV93cml0ZV9iYWNr NDIwX2x1bWEsCjE0NDc0OiAgYndfZGVmX2Rpc3BsYXlfd3JpdGVfYmFjazQyMF9jaHJvbWEsCjE0 NDc0OiAgYndfZGVmX3BvcnRyYWl0LAoxNDQ3NDogIGJ3X2RlZl9oc3JfbXRuXzQsCjE0NDc0OiAg YndfZGVmX2hzcl9tdG5faF90YXBzLAoxNDQ3NDogIGJ3X2RlZl9jZWlsaW5nX19oX3RhcHNfZGl2 XzRfX19tZXFfaHNyLAoxNDQ3NDogIGJ3X2RlZl9pbnZhbGlkX2xpbmVhcl9vcl9zdGVyZW9fbW9k ZSwKMTQ0NzQ6ICBid19kZWZfaW52YWxpZF9yb3RhdGlvbl9vcl9icHBfb3Jfc3RlcmVvLAoxNDQ3 NDogIGJ3X2RlZl92c3JfbXRuX3ZfdGFwcywKMTQ0NzQ6ICBid19kZWZfdnNyX210bl80LAoxNDQ3 NDogIGJ3X2RlZl9hdXRvLAoxNDQ3NDogIGJ3X2RlZl9tYW51YWwsCjE0NDc0OiAgYndfZGVmX2V4 Y2VlZGVkX2FsbG93ZWRfbWF4aW11bV9zY2xrLAoxNDQ3NDogIGJ3X2RlZl9leGNlZWRlZF9hbGxv d2VkX3BhZ2VfY2xvc2Vfb3BlbiwKMTQ0NzQ6ICBid19kZWZfZXhjZWVkZWRfYWxsb3dlZF9vdXRz dGFuZGluZ19wdGVfcmVxX3F1ZXVlX3NpemUsCjE0NDc0OiAgYndfZGVmX2V4Y2VlZGVkX2FsbG93 ZWRfbWF4aW11bV9idywKMTQ0NzQ6ICBid19kZWZfbGFuZHNjYXBlLAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBid19kZWZfYW55X2xpbmVzLAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBid19kZWZf dW5kZXJsYXlfb25seSwKMTQ0NzQ6ICBid19kZWZfYmxlbmRlZCwKMTQ0NzQ6ICBid19kZWZfYmxl bmQsCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJ3X2RlZl9tb25vLAoxNDQ3NDogIGJ3X2RlZl9z aWRlX2J5X3NpZGUsCjE0NDc0OiAgYndfZGVmX3RvcF9ib3R0b20sCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIGJ3X2RlZl80MjAsCjE0NDc0OiAgYndfZGVmXzQyMiwKMTQ0NzQ6ICBid19kZWZfNDQ0 LAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBid19kZWZfbGluZWFyLAoxNDQ3NDogIGJ3X2RlZl90 aWxlZCwKMTQ0NzQ6ICBid19kZWZfYXJyYXlfbGluZWFyX2dlbmVyYWwsCjE0NDc0OiAgYndfZGVm X2FycmF5X2xpbmVhcl9hbGlnbmVkLAoxNDQ3NDogIGJ3X2RlZl9yb3RhdGVkX21pY3JvX3RpbGlu ZywKMTQ0NzQ6ICBid19kZWZfZGlzcGxheV9taWNyb190aWxpbmcsCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIGJ3X2RlZl9nZGRyNSwKMTQ0NzQ6ICBid19kZWZfaGJtLAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6ICBid19kZWZfaGlnaF9ub19uYnBfc3RhdGVfY2hhbmdlLAoxNDQ3NDogIGJ3X2RlZl8w XzcyLAoxNDQ3NDogIGJ3X2RlZl8wXzgsCjE0NDc0OiAgYndfZGVmXzBfOSwKMTQ0NzQ6IAoxNDQ3 NDogIGJ3X2RlZl9ub3RvayA9IC0xLAoxNDQ3NDogIGJ3X2RlZl9uYSA9IC0xCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYndfY2FsY3NfZGNlaXAgewoxNDQ3NDogIGVudW0gYndfY2Fs Y3NfdmVyc2lvbiB2ZXJzaW9uOwoxNDQ3NDogIHVpbnQzMl90IHBlcmNlbnRfb2ZfaWRlYWxfcG9y dF9id19yZWNlaXZlZF9hZnRlcl91cmdlbnRfbGF0ZW5jeTsKMTQ0NzQ6ICB1aW50MzJfdCBtYXhf YXZlcmFnZV9wZXJjZW50X29mX2lkZWFsX3BvcnRfYndfZGlzcGxheV9jYW5fdXNlX2luX25vcm1h bF9zeXN0ZW1fb3BlcmF0aW9uOwoxNDQ3NDogIHVpbnQzMl90IG1heF9hdmVyYWdlX3BlcmNlbnRf b2ZfaWRlYWxfZHJhbWJ3X2Rpc3BsYXlfY2FuX3VzZV9pbl9ub3JtYWxfc3lzdGVtX29wZXJhdGlv bjsKMTQ0NzQ6ICBib29sIGxhcmdlX2N1cnNvcjsKMTQ0NzQ6ICB1aW50MzJfdCBjdXJzb3JfbWF4 X291dHN0YW5kaW5nX2dyb3VwX251bTsKMTQ0NzQ6ICBib29sIGRtaWZfcGlwZV9lbl9mYmNfY2h1 bmtfdHJhY2tlcjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZG1pZl9yZXF1ZXN0X2J1ZmZlcl9z aXplOwoxNDQ3NDogIHVpbnQzMl90IGxpbmVzX2ludGVybGVhdmVkX2ludG9fbGI7CjE0NDc0OiAg dWludDMyX3QgbG93X3Bvd2VyX3RpbGluZ19tb2RlOwoxNDQ3NDogIHVpbnQzMl90IGNodW5rX3dp ZHRoOwoxNDQ3NDogIHVpbnQzMl90IG51bWJlcl9vZl9ncmFwaGljc19waXBlczsKMTQ0NzQ6ICB1 aW50MzJfdCBudW1iZXJfb2ZfdW5kZXJsYXlfcGlwZXM7CjE0NDc0OiAgYm9vbCBkaXNwbGF5X3dy aXRlX2JhY2tfc3VwcG9ydGVkOwoxNDQ3NDogIGJvb2wgYXJnYl9jb21wcmVzc2lvbl9zdXBwb3J0 OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV92c2NhbGVyX2VmZmljaWVuY3k2X2Jp dF9wZXJfY29tcG9uZW50OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV92c2NhbGVy X2VmZmljaWVuY3k4X2JpdF9wZXJfY29tcG9uZW50OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1 bmRlcmxheV92c2NhbGVyX2VmZmljaWVuY3kxMF9iaXRfcGVyX2NvbXBvbmVudDsKMTQ0NzQ6ICBz dHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXlfdnNjYWxlcl9lZmZpY2llbmN5MTJfYml0X3Blcl9jb21w b25lbnQ7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGdyYXBoaWNzX3ZzY2FsZXJfZWZmaWNpZW5j eTZfYml0X3Blcl9jb21wb25lbnQ7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGdyYXBoaWNzX3Zz Y2FsZXJfZWZmaWNpZW5jeThfYml0X3Blcl9jb21wb25lbnQ7CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIGdyYXBoaWNzX3ZzY2FsZXJfZWZmaWNpZW5jeTEwX2JpdF9wZXJfY29tcG9uZW50OwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBncmFwaGljc192c2NhbGVyX2VmZmljaWVuY3kxMl9iaXRfcGVy X2NvbXBvbmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgYWxwaGFfdnNjYWxlcl9lZmZpY2ll bmN5OwoxNDQ3NDogIHVpbnQzMl90IG1heF9kbWlmX2J1ZmZlcl9hbGxvY2F0ZWQ7CjE0NDc0OiAg dWludDMyX3QgZ3JhcGhpY3NfZG1pZl9zaXplOwoxNDQ3NDogIHVpbnQzMl90IHVuZGVybGF5X2x1 bWFfZG1pZl9zaXplOwoxNDQ3NDogIHVpbnQzMl90IHVuZGVybGF5X2Nocm9tYV9kbWlmX3NpemU7 CjE0NDc0OiAgYm9vbCBwcmVfZG93bnNjYWxlcl9lbmFibGVkOwoxNDQ3NDogIGJvb2wgdW5kZXJs YXlfZG93bnNjYWxlX3ByZWZldGNoX2VuYWJsZWQ7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxi X3dyaXRlX3BpeGVsc19wZXJfZGlzcGNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbGJfc2l6 ZV9wZXJfY29tcG9uZW50NDQ0OwoxNDQ3NDogIGJvb2wgZ3JhcGhpY3NfbGJfbm9kb3duc2NhbGlu Z19tdWx0aV9saW5lX3ByZWZldGNoaW5nOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzdHV0dGVy X2FuZF9kcmFtX2Nsb2NrX3N0YXRlX2NoYW5nZV9nYXRlZF9iZWZvcmVfY3Vyc29yOwoxNDQ3NDog IHN0cnVjdCBid19maXhlZCB1bmRlcmxheTQyMF9sdW1hX2xiX3NpemVfcGVyX2NvbXBvbmVudDsK MTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXk0MjBfY2hyb21hX2xiX3NpemVfcGVyX2Nv bXBvbmVudDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXk0MjJfbGJfc2l6ZV9wZXJf Y29tcG9uZW50OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBjdXJzb3JfY2h1bmtfd2lkdGg7CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGN1cnNvcl9kY3BfYnVmZmVyX2xpbmVzOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCB1bmRlcmxheV9tYXhpbXVtX3dpZHRoX2VmZmljaWVudF9mb3JfdGlsaW5n OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV9tYXhpbXVtX2hlaWdodF9lZmZpY2ll bnRfZm9yX3RpbGluZzsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcGVha19wdGVfcmVxdWVzdF90 b19ldmljdGlvbl9yYXRpb19saW1pdGluZ19tdWx0aXBsZV9kaXNwbGF5c19vcl9zaW5nbGVfcm90 YXRlZF9kaXNwbGF5OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBwZWFrX3B0ZV9yZXF1ZXN0X3Rv X2V2aWN0aW9uX3JhdGlvX2xpbWl0aW5nX3NpbmdsZV9kaXNwbGF5X25vX3JvdGF0aW9uOwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBtaW5pbXVtX291dHN0YW5kaW5nX3B0ZV9yZXF1ZXN0X2xpbWl0 OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtYXhpbXVtX3RvdGFsX291dHN0YW5kaW5nX3B0ZV9y ZXF1ZXN0c19hbGxvd2VkX2J5X3NhdzsKMTQ0NzQ6ICBib29sIGxpbWl0X2V4Y2Vzc2l2ZV9vdXRz dGFuZGluZ19kbWlmX3JlcXVlc3RzOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsaW5lYXJfbW9k ZV9saW5lX3JlcXVlc3RfYWx0ZXJuYXRpb25fc2xpY2U7CjE0NDc0OiAgdWludDMyX3Qgc2NhdHRl cl9nYXRoZXJfbGluZXNfb2ZfcHRlX3ByZWZldGNoaW5nX2luX2xpbmVhcl9tb2RlOwoxNDQ3NDog IHVpbnQzMl90IGRpc3BsYXlfd3JpdGVfYmFjazQyMF9sdW1hX21jaWZ3cl9idWZmZXJfc2l6ZTsK MTQ0NzQ6ICB1aW50MzJfdCBkaXNwbGF5X3dyaXRlX2JhY2s0MjBfY2hyb21hX21jaWZ3cl9idWZm ZXJfc2l6ZTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcmVxdWVzdF9lZmZpY2llbmN5OwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBkaXNwY2xrX3Blcl9yZXF1ZXN0OwoxNDQ3NDogIHN0cnVjdCBi d19maXhlZCBkaXNwY2xrX3JhbXBpbmdfZmFjdG9yOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBk aXNwbGF5X3BpcGVfdGhyb3VnaHB1dF9mYWN0b3I7CjE0NDc0OiAgdWludDMyX3Qgc2NhdHRlcl9n YXRoZXJfcHRlX3JlcXVlc3Rfcm93c19pbl90aWxpbmdfbW9kZTsKMTQ0NzQ6ICBzdHJ1Y3QgYndf Zml4ZWQgbWNpZndyX2FsbF9zdXJmYWNlc19idXJzdF90aW1lOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGJ3X2NhbGNzX3ZiaW9zIHsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgbWVt b3J5X3R5cGU7CjE0NDc0OiAgdWludDMyX3QgZHJhbV9jaGFubmVsX3dpZHRoX2luX2JpdHM7CjE0 NDc0OiAgdWludDMyX3QgbnVtYmVyX29mX2RyYW1fY2hhbm5lbHM7CjE0NDc0OiAgdWludDMyX3Qg bnVtYmVyX29mX2RyYW1fYmFua3M7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxvd195Y2xrOwox NDQ3NDogIHN0cnVjdCBid19maXhlZCBtaWRfeWNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg aGlnaF95Y2xrOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsb3dfc2NsazsKMTQ0NzQ6ICBzdHJ1 Y3QgYndfZml4ZWQgbWlkMV9zY2xrOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtaWQyX3NjbGs7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1pZDNfc2NsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4 ZWQgbWlkNF9zY2xrOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtaWQ1X3NjbGs7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIG1pZDZfc2NsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgaGlnaF9z Y2xrOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsb3dfdm9sdGFnZV9tYXhfZGlzcGNsazsKMTQ0 NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWlkX3ZvbHRhZ2VfbWF4X2Rpc3BjbGs7CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIGhpZ2hfdm9sdGFnZV9tYXhfZGlzcGNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndf Zml4ZWQgbG93X3ZvbHRhZ2VfbWF4X3BoeWNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWlk X3ZvbHRhZ2VfbWF4X3BoeWNsazsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgaGlnaF92b2x0YWdl X21heF9waHljbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRhdGFfcmV0dXJuX2J1c193aWR0 aDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdHJjOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBk bWlmbWNfdXJnZW50X2xhdGVuY3k7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfc2Vs Zl9yZWZyZXNoX2V4aXRfbGF0ZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9z ZWxmX3JlZnJlc2hfZW50cnlfbGF0ZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbmJwX3N0 YXRlX2NoYW5nZV9sYXRlbmN5OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtY2lmd3JtY191cmdl bnRfbGF0ZW5jeTsKMTQ0NzQ6ICBib29sIHNjYXR0ZXJfZ2F0aGVyX2VuYWJsZTsKMTQ0NzQ6ICBz dHJ1Y3QgYndfZml4ZWQgZG93bl9zcHJlYWRfcGVyY2VudGFnZTsKMTQ0NzQ6ICB1aW50MzJfdCBj dXJzb3Jfd2lkdGg7CjE0NDc0OiAgdWludDMyX3QgYXZlcmFnZV9jb21wcmVzc2lvbl9yYXRlOwox NDQ3NDogIHVpbnQzMl90IG51bWJlcl9vZl9yZXF1ZXN0X3Nsb3RzX2dtY19yZXNlcnZlc19mb3Jf ZG1pZl9wZXJfY2hhbm5lbDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgYmxhY2tvdXRfZHVyYXRp b247CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1heGltdW1fYmxhY2tvdXRfcmVjb3ZlcnlfdGlt ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBid19jYWxjc19kYXRhIHsKMTQ0NzQ6IAoxNDQ3NDog IGJvb2wgZGlzcGxheV9zeW5jaHJvbml6YXRpb25fZW5hYmxlZDsKMTQ0NzQ6ICB1aW50MzJfdCBu dW1iZXJfb2ZfZGlzcGxheXM7CjE0NDc0OiAgZW51bSBid19kZWZpbmVzIHVuZGVybGF5X3N1cmZh Y2VfdHlwZTsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgcGFubmluZ19hbmRfYmV6ZWxfYWRqdXN0 bWVudDsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgZ3JhcGhpY3NfdGlsaW5nX21vZGU7CjE0NDc0 OiAgdWludDMyX3QgZ3JhcGhpY3NfbGJfYnBjOwoxNDQ3NDogIHVpbnQzMl90IHVuZGVybGF5X2xi X2JwYzsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgdW5kZXJsYXlfdGlsaW5nX21vZGU7CjE0NDc0 OiAgZW51bSBid19kZWZpbmVzIGQwX3VuZGVybGF5X21vZGU7CjE0NDc0OiAgYm9vbCBkMV9kaXNw bGF5X3dyaXRlX2JhY2tfZHdiX2VuYWJsZTsKMTQ0NzQ6ICBlbnVtIGJ3X2RlZmluZXMgZDFfdW5k ZXJsYXlfbW9kZTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgaW5jcmVhc2Vfdm9sdGFnZV90b19zdXBw b3J0X21jbGtfc3dpdGNoOwoxNDQ3NDogIGJvb2wgY3B1cF9zdGF0ZV9jaGFuZ2VfZW5hYmxlOwox NDQ3NDogIGJvb2wgY3B1Y19zdGF0ZV9jaGFuZ2VfZW5hYmxlOwoxNDQ3NDogIGJvb2wgbmJwX3N0 YXRlX2NoYW5nZV9lbmFibGU7CjE0NDc0OiAgYm9vbCBzdHV0dGVyX21vZGVfZW5hYmxlOwoxNDQ3 NDogIHVpbnQzMl90IHlfY2xrX2xldmVsOwoxNDQ3NDogIHVpbnQzMl90IHNjbGtfbGV2ZWw7CjE0 NDc0OiAgdWludDMyX3QgbnVtYmVyX29mX3VuZGVybGF5X3N1cmZhY2VzOwoxNDQ3NDogIHVpbnQz Ml90IG51bWJlcl9vZl9kcmFtX3dyY2hhbm5lbHM7CjE0NDc0OiAgdWludDMyX3QgY2h1bmtfcmVx dWVzdF9kZWxheTsKMTQ0NzQ6ICB1aW50MzJfdCBudW1iZXJfb2ZfZHJhbV9jaGFubmVsczsKMTQ0 NzQ6ICBlbnVtIGJ3X2RlZmluZXMgdW5kZXJsYXlfbWljcm9fdGlsZV9tb2RlOwoxNDQ3NDogIGVu dW0gYndfZGVmaW5lcyBncmFwaGljc19taWNyb190aWxlX21vZGU7CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIG1heF9waHljbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRyYW1fZWZmaWNpZW5j eTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3JjX3dpZHRoX2FmdGVyX3N1cmZhY2VfdHlwZTsK MTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3JjX2hlaWdodF9hZnRlcl9zdXJmYWNlX3R5cGU7CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGhzcl9hZnRlcl9zdXJmYWNlX3R5cGU7CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIHZzcl9hZnRlcl9zdXJmYWNlX3R5cGU7CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIHNyY193aWR0aF9hZnRlcl9yb3RhdGlvbjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3Jj X2hlaWdodF9hZnRlcl9yb3RhdGlvbjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgaHNyX2FmdGVy X3JvdGF0aW9uOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2c3JfYWZ0ZXJfcm90YXRpb247CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHNvdXJjZV9oZWlnaHRfcGl4ZWxzOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBoc3JfYWZ0ZXJfc3RlcmVvOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2c3Jf YWZ0ZXJfc3RlcmVvOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzb3VyY2Vfd2lkdGhfaW5fbGI7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxiX2xpbmVfcGl0Y2g7CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIHVuZGVybGF5X21heGltdW1fc291cmNlX2VmZmljaWVudF9mb3JfdGlsaW5nOwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBudW1fbGluZXNfYXRfZnJhbWVfc3RhcnQ7CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIG1pbl9kbWlmX3NpemVfaW5fdGltZTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4 ZWQgbWluX21jaWZ3cl9zaXplX2luX3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFs X3JlcXVlc3RzX2Zvcl9kbWlmX3NpemU7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHBlYWtfcHRl X3JlcXVlc3RfdG9fZXZpY3Rpb25fcmF0aW9fbGltaXRpbmc7CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIHVzZWZ1bF9wdGVfcGVyX3B0ZV9yZXF1ZXN0OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBz Y2F0dGVyX2dhdGhlcl9wdGVfcmVxdWVzdF9yb3dzOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBz Y2F0dGVyX2dhdGhlcl9yb3dfaGVpZ2h0OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzY2F0dGVy X2dhdGhlcl9wdGVfcmVxdWVzdHNfaW5fdmJsYW5rOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBp bmVmZmljaWVudF9saW5lYXJfcGl0Y2hfaW5fYnl0ZXM7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IGN1cnNvcl90b3RhbF9kYXRhOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBjdXJzb3JfdG90YWxf cmVxdWVzdF9ncm91cHM7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0aGVyX3Rv dGFsX3B0ZV9yZXF1ZXN0czsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc2NhdHRlcl9nYXRoZXJf dG90YWxfcHRlX3JlcXVlc3RfZ3JvdXBzOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB0aWxlX3dp ZHRoX2luX3BpeGVsczsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZG1pZl90b3RhbF9udW1iZXJf b2ZfZGF0YV9yZXF1ZXN0X3BhZ2VfY2xvc2Vfb3BlbjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg bWNpZndyX3RvdGFsX251bWJlcl9vZl9kYXRhX3JlcXVlc3RfcGFnZV9jbG9zZV9vcGVuOwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBieXRlc19wZXJfcGFnZV9jbG9zZV9vcGVuOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBtY2lmd3JfdG90YWxfcGFnZV9jbG9zZV9vcGVuX3RpbWU7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHRvdGFsX3JlcXVlc3RzX2Zvcl9hZGp1c3RlZF9kbWlmX3NpemU7CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2RtaWZtY191cmdlbnRfdHJpcHM7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2RtaWZtY191cmdlbnRfbGF0ZW5jeTsKMTQ0NzQ6ICBzdHJ1 Y3QgYndfZml4ZWQgdG90YWxfZGlzcGxheV9yZWFkc19yZXF1aXJlZF9kYXRhOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCB0b3RhbF9kaXNwbGF5X3JlYWRzX3JlcXVpcmVkX2RyYW1fYWNjZXNzX2Rh dGE7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BsYXlfd3JpdGVzX3JlcXVpcmVk X2RhdGE7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BsYXlfd3JpdGVzX3JlcXVp cmVkX2RyYW1fYWNjZXNzX2RhdGE7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRpc3BsYXlfcmVh ZHNfcmVxdWlyZWRfZGF0YTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV9yZWFkc19y ZXF1aXJlZF9kcmFtX2FjY2Vzc19kYXRhOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBkbWlmX3Rv dGFsX3BhZ2VfY2xvc2Vfb3Blbl90aW1lOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBtaW5fY3Vy c29yX21lbW9yeV9pbnRlcmZhY2VfYnVmZmVyX3NpemVfaW5fdGltZTsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgbWluX3JlYWRfYnVmZmVyX3NpemVfaW5fdGltZTsKMTQ0NzQ6ICBzdHJ1Y3QgYndf Zml4ZWQgZGlzcGxheV9yZWFkc190aW1lX2Zvcl9kYXRhX3RyYW5zZmVyOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBkaXNwbGF5X3dyaXRlc190aW1lX2Zvcl9kYXRhX3RyYW5zZmVyOwoxNDQ3NDog IHN0cnVjdCBid19maXhlZCBkbWlmX3JlcXVpcmVkX2RyYW1fYmFuZHdpZHRoOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBtY2lmd3JfcmVxdWlyZWRfZHJhbV9iYW5kd2lkdGg7CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIHJlcXVpcmVkX2RtaWZtY191cmdlbnRfbGF0ZW5jeV9mb3JfcGFnZV9jbG9z ZV9vcGVuOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCByZXF1aXJlZF9tY2lmbWN3cl91cmdlbnRf bGF0ZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcmVxdWlyZWRfZHJhbV9iYW5kd2lkdGhf Z2J5dGVfcGVyX3NlY29uZDsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZHJhbV9iYW5kd2lkdGg7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRtaWZfcmVxdWlyZWRfc2NsazsKMTQ0NzQ6ICBzdHJ1 Y3QgYndfZml4ZWQgbWNpZndyX3JlcXVpcmVkX3NjbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IHJlcXVpcmVkX3NjbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRvd25zcHJlYWRfZmFjdG9y OwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2X3NjYWxlcl9lZmZpY2llbmN5OwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBzY2FsZXJfbGltaXRzX2ZhY3RvcjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4 ZWQgZGlzcGxheV9waXBlX3BpeGVsX3Rocm91Z2hwdXQ7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IHRvdGFsX2Rpc3BjbGtfcmVxdWlyZWRfd2l0aF9yYW1waW5nOwoxNDQ3NDogIHN0cnVjdCBid19m aXhlZCB0b3RhbF9kaXNwY2xrX3JlcXVpcmVkX3dpdGhvdXRfcmFtcGluZzsKMTQ0NzQ6ICBzdHJ1 Y3QgYndfZml4ZWQgdG90YWxfcmVhZF9yZXF1ZXN0X2JhbmR3aWR0aDsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgdG90YWxfd3JpdGVfcmVxdWVzdF9iYW5kd2lkdGg7CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfZm9yX3RvdGFsX3JlYWRfcmVxdWVzdF9iYW5kd2lkdGg7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BjbGtfcmVxdWlyZWRfd2l0aF9yYW1w aW5nX3dpdGhfcmVxdWVzdF9iYW5kd2lkdGg7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRvdGFs X2Rpc3BjbGtfcmVxdWlyZWRfd2l0aG91dF9yYW1waW5nX3dpdGhfcmVxdWVzdF9iYW5kd2lkdGg7 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRpc3BjbGs7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IGJsYWNrb3V0X3JlY292ZXJ5X3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1pbl9waXhl bHNfcGVyX2RhdGFfZmlmb19lbnRyeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc2Nsa19kZWVw X3NsZWVwOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBjaHVua19yZXF1ZXN0X3RpbWU7CjE0NDc0 OiAgc3RydWN0IGJ3X2ZpeGVkIGN1cnNvcl9yZXF1ZXN0X3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIGxpbmVfc291cmNlX3BpeGVsc190cmFuc2Zlcl90aW1lOwoxNDQ3NDogIHN0cnVjdCBi d19maXhlZCBkbWlmZHJhbV9hY2Nlc3NfZWZmaWNpZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4 ZWQgbWNpZndyZHJhbV9hY2Nlc3NfZWZmaWNpZW5jeTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg dG90YWxfYXZlcmFnZV9iYW5kd2lkdGhfbm9fY29tcHJlc3Npb247CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIHRvdGFsX2F2ZXJhZ2VfYmFuZHdpZHRoOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB0 b3RhbF9zdHV0dGVyX2N5Y2xlX2R1cmF0aW9uOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzdHV0 dGVyX2J1cnN0X3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHRpbWVfaW5fc2VsZl9yZWZy ZXNoOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzdHV0dGVyX2VmZmljaWVuY3k7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHdvcnN0X251bWJlcl9vZl90cmlwc190b19tZW1vcnk7CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIGltbWVkaWF0ZV9mbGlwX3RpbWU7CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIGxhdGVuY3lfZm9yX25vbl9kbWlmX2NsaWVudHM7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IGxhdGVuY3lfZm9yX25vbl9tY2lmd3JfY2xpZW50czsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg ZG1pZm1jX3VyZ2VudF9sYXRlbmN5X3N1cHBvcnRlZF9pbl9oaWdoX3NjbGtfYW5kX3ljbGs7CjE0 NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG5icF9zdGF0ZV9kcmFtX3NwZWVkX2NoYW5nZV9tYXJnaW47 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRpc3BsYXlfcmVhZHNfdGltZV9mb3JfZGF0YV90cmFu c2Zlcl9hbmRfdXJnZW50X2xhdGVuY3k7CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRyYW1fc3Bl ZWRfY2hhbmdlX21hcmdpbjsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWluX3ZibGFua19kcmFt X3NwZWVkX2NoYW5nZV9tYXJnaW47CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1pbl9zdHV0dGVy X3JlZnJlc2hfZHVyYXRpb247CjE0NDc0OiAgdWludDMyX3QgdG90YWxfc3R1dHRlcl9kbWlmX2J1 ZmZlcl9zaXplOwoxNDQ3NDogIHVpbnQzMl90IHRvdGFsX2J5dGVzX3JlcXVlc3RlZDsKMTQ0NzQ6 ICB1aW50MzJfdCBtaW5fc3R1dHRlcl9kbWlmX2J1ZmZlcl9zaXplOwoxNDQ3NDogIHVpbnQzMl90 IG51bV9zdHV0dGVyX2J1cnN0czsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdl9ibGFua19uYnBf c3RhdGVfZHJhbV9zcGVlZF9jaGFuZ2VfbGF0ZW5jeV9zdXBwb3J0ZWQ7CjE0NDc0OiAgc3RydWN0 IGJ3X2ZpeGVkIG5icF9zdGF0ZV9kcmFtX3NwZWVkX2NoYW5nZV9sYXRlbmN5X3N1cHBvcnRlZDsK MTQ0NzQ6ICBib29sIGZiY19lblsxMl07CjE0NDc0OiAgYm9vbCBscHRfZW5bMTJdOwoxNDQ3NDog IGJvb2wgZGlzcGxheXNfbWF0Y2hfZmxhZ1sxMl07CjE0NDc0OiAgYm9vbCB1c2VfYWxwaGFbMTJd OwoxNDQ3NDogIGJvb2wgb3J0aG9nb25hbF9yb3RhdGlvblsxMl07CjE0NDc0OiAgYm9vbCBlbmFi bGVbMTJdOwoxNDQ3NDogIGJvb2wgYWNjZXNzX29uZV9jaGFubmVsX29ubHlbMTJdOwoxNDQ3NDog IGJvb2wgc2NhdHRlcl9nYXRoZXJfZW5hYmxlX2Zvcl9waXBlWzEyXTsKMTQ0NzQ6ICBib29sIGlu dGVybGFjZV9tb2RlWzEyXTsKMTQ0NzQ6ICBib29sIGRpc3BsYXlfcHN0YXRlX2NoYW5nZV9lbmFi bGVbMTJdOwoxNDQ3NDogIGJvb2wgbGluZV9idWZmZXJfcHJlZmV0Y2hbMTJdOwoxNDQ3NDogIHVp bnQzMl90IGJ5dGVzX3Blcl9waXhlbFsxMl07CjE0NDc0OiAgdWludDMyX3QgbWF4X2NodW5rc19u b25fZmJjX21vZGVbMTJdOwoxNDQ3NDogIHVpbnQzMl90IGxiX2JwY1sxMl07CjE0NDc0OiAgdWlu dDMyX3Qgb3V0cHV0X2JwcGhkbWlbMTJdOwoxNDQ3NDogIHVpbnQzMl90IG91dHB1dF9icHBkcDRf bGFuZV9oYnJbMTJdOwoxNDQ3NDogIHVpbnQzMl90IG91dHB1dF9icHBkcDRfbGFuZV9oYnIyWzEy XTsKMTQ0NzQ6ICB1aW50MzJfdCBvdXRwdXRfYnBwZHA0X2xhbmVfaGJyM1sxMl07CjE0NDc0OiAg ZW51bSBid19kZWZpbmVzIHN0ZXJlb19tb2RlWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg ZG1pZl9idWZmZXJfdHJhbnNmZXJfdGltZVsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRp c3BsYXlzX3dpdGhfc2FtZV9tb2RlWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRl cl9kbWlmX2J1ZmZlcl9zaXplWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9y ZWZyZXNoX2R1cmF0aW9uWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9leGl0 X3dhdGVybWFya1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfZW50cnlfd2F0 ZXJtYXJrWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgaF90b3RhbFsxMl07CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHZfdG90YWxbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBwaXhl bF9yYXRlWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3JjX3dpZHRoWzEyXTsKMTQ0NzQ6 ICBzdHJ1Y3QgYndfZml4ZWQgcGl0Y2hfaW5fcGl4ZWxzWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndf Zml4ZWQgcGl0Y2hfaW5fcGl4ZWxzX2FmdGVyX3N1cmZhY2VfdHlwZVsxMl07CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIHNyY19oZWlnaHRbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzY2Fs ZV9yYXRpb1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGhfdGFwc1sxMl07CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIHZfdGFwc1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGhfc2Nh bGVfcmF0aW9bMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2X3NjYWxlX3JhdGlvWzEyXTsK MTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcm90YXRpb25fYW5nbGVbMTJdOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBjb21wcmVzc2lvbl9yYXRlWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg aHNyWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgdnNyWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgc291cmNlX3dpZHRoX3JvdW5kZWRfdXBfdG9fY2h1bmtzWzEyXTsKMTQ0NzQ6ICBz dHJ1Y3QgYndfZml4ZWQgc291cmNlX3dpZHRoX3BpeGVsc1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIHNvdXJjZV9oZWlnaHRfcm91bmRlZF91cF90b19jaHVua3NbMTJdOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBkaXNwbGF5X2JhbmR3aWR0aFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2Zp eGVkIHJlcXVlc3RfYmFuZHdpZHRoWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgYnl0ZXNf cGVyX3JlcXVlc3RbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB1c2VmdWxfYnl0ZXNfcGVy X3JlcXVlc3RbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsaW5lc19pbnRlcmxlYXZlZF9p bl9tZW1fYWNjZXNzWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbGF0ZW5jeV9oaWRpbmdf bGluZXNbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBsYl9wYXJ0aXRpb25zWzEyXTsKMTQ0 NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbGJfcGFydGl0aW9uc19tYXhbMTJdOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBkaXNwY2xrX3JlcXVpcmVkX3dpdGhfcmFtcGluZ1sxMl07CjE0NDc0OiAgc3Ry dWN0IGJ3X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfd2l0aG91dF9yYW1waW5nWzEyXTsKMTQ0NzQ6 ICBzdHJ1Y3QgYndfZml4ZWQgZGF0YV9idWZmZXJfc2l6ZVsxMl07CjE0NDc0OiAgc3RydWN0IGJ3 X2ZpeGVkIG91dHN0YW5kaW5nX2NodW5rX3JlcXVlc3RfbGltaXRbMTJdOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCB1cmdlbnRfd2F0ZXJtYXJrWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQg bmJwX3N0YXRlX2NoYW5nZV93YXRlcm1hcmtbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCB2 X2ZpbHRlcl9pbml0WzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9jeWNsZV9k dXJhdGlvblsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGF2ZXJhZ2VfYmFuZHdpZHRoWzEy XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgYXZlcmFnZV9iYW5kd2lkdGhfbm9fY29tcHJlc3Np b25bMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzY2F0dGVyX2dhdGhlcl9wdGVfcmVxdWVz dF9saW1pdFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxiX3NpemVfcGVyX2NvbXBvbmVu dFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIG1lbW9yeV9jaHVua19zaXplX2luX2J5dGVz WzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgcGlwZV9jaHVua19zaXplX2luX2J5dGVzWzEy XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbnVtYmVyX29mX3RyaXBzX3RvX21lbW9yeV9mb3Jf Z2V0dGluZ19hcHRlX3Jvd1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGFkanVzdGVkX2Rh dGFfYnVmZmVyX3NpemVbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBhZGp1c3RlZF9kYXRh X2J1ZmZlcl9zaXplX2luX21lbW9yeVsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHBpeGVs c19wZXJfZGF0YV9maWZvX2VudHJ5WzEyXTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgc2NhdHRl cl9nYXRoZXJfcHRlX3JlcXVlc3RzX2luX3Jvd1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IHB0ZV9yZXF1ZXN0X3Blcl9jaHVua1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHNjYXR0 ZXJfZ2F0aGVyX3BhZ2Vfd2lkdGhbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzY2F0dGVy X2dhdGhlcl9wYWdlX2hlaWdodFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGxiX2xpbmVz X2luX3Blcl9saW5lX291dF9pbl9iZWdpbm5pbmdfb2ZfZnJhbWVbMTJdOwoxNDQ3NDogIHN0cnVj dCBid19maXhlZCBsYl9saW5lc19pbl9wZXJfbGluZV9vdXRfaW5fbWlkZGxlX29mX2ZyYW1lWzEy XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgY3Vyc29yX3dpZHRoX3BpeGVsc1sxMl07CjE0NDc0 OiAgc3RydWN0IGJ3X2ZpeGVkIG1pbmltdW1fbGF0ZW5jeV9oaWRpbmdbMTJdOwoxNDQ3NDogIHN0 cnVjdCBid19maXhlZCBtYXhpbXVtX2xhdGVuY3lfaGlkaW5nWzEyXTsKMTQ0NzQ6ICBzdHJ1Y3Qg YndfZml4ZWQgbWluaW11bV9sYXRlbmN5X2hpZGluZ193aXRoX2N1cnNvclsxMl07CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIG1heGltdW1fbGF0ZW5jeV9oaWRpbmdfd2l0aF9jdXJzb3JbMTJdOwox NDQ3NDogIHN0cnVjdCBid19maXhlZCBzcmNfcGl4ZWxzX2Zvcl9maXJzdF9vdXRwdXRfcGl4ZWxb MTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzcmNfcGl4ZWxzX2Zvcl9sYXN0X291dHB1dF9w aXhlbFsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHNyY19kYXRhX2Zvcl9maXJzdF9vdXRw dXRfcGl4ZWxbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBzcmNfZGF0YV9mb3JfbGFzdF9v dXRwdXRfcGl4ZWxbMTJdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBhY3RpdmVfdGltZVsxMl07 CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGhvcml6b250YWxfYmxhbmtfYW5kX2NodW5rX2dyYW51 bGFyaXR5X2ZhY3RvclsxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGN1cnNvcl9sYXRlbmN5 X2hpZGluZ1sxMl07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIHZfYmxhbmtfZHJhbV9zcGVlZF9j aGFuZ2VfbWFyZ2luWzEyXTsKMTQ0NzQ6ICB1aW50MzJfdCBudW1fZGlzcGxheXNfd2l0aF9tYXJn aW5bM11bOF07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRtaWZfYnVyc3RfdGltZVszXVs4XTsK MTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWNpZndyX2J1cnN0X3RpbWVbM11bOF07CjE0NDc0OiAg c3RydWN0IGJ3X2ZpeGVkIGxpbmVfc291cmNlX3RyYW5zZmVyX3RpbWVbMTJdWzNdWzhdOwoxNDQ3 NDogIHN0cnVjdCBid19maXhlZCBkcmFtX3NwZWVkX2NoYW5nZV9saW5lX3NvdXJjZV90cmFuc2Zl cl90aW1lWzEyXVszXVs4XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgbWluX2RyYW1fc3BlZWRf Y2hhbmdlX21hcmdpblszXVs4XTsKMTQ0NzQ6ICBzdHJ1Y3QgYndfZml4ZWQgZGlzcGNsa19yZXF1 aXJlZF9mb3JfZHJhbV9zcGVlZF9jaGFuZ2VbM11bOF07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVk IGRpc3BjbGtfcmVxdWlyZWRfZm9yX2RyYW1fc3BlZWRfY2hhbmdlX3BpcGVbM11bOF07CjE0NDc0 OiAgc3RydWN0IGJ3X2ZpeGVkIGJsYWNrb3V0X2R1cmF0aW9uX21hcmdpblszXVs4XTsKMTQ0NzQ6 ICBzdHJ1Y3QgYndfZml4ZWQgZGlzcGNsa19yZXF1aXJlZF9mb3JfYmxhY2tvdXRfZHVyYXRpb25b M11bOF07CjE0NDc0OiAgc3RydWN0IGJ3X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfZm9yX2JsYWNr b3V0X3JlY292ZXJ5WzNdWzhdOwoxNDQ3NDogIHN0cnVjdCBid19maXhlZCBkbWlmX3JlcXVpcmVk X3NjbGtfZm9yX3VyZ2VudF9sYXRlbmN5WzZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBid19jYWxjc19pbml0KAoxNDQ3NDogIHN0cnVjdCBi d19jYWxjc19kY2VpcCAqYndfZGNlaXAsCjE0NDc0OiAgc3RydWN0IGJ3X2NhbGNzX3ZiaW9zICpi d192YmlvcywKMTQ0NzQ6ICBzdHJ1Y3QgaHdfYXNpY19pZCBhc2ljX2lkKTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBi d19jYWxjcygKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogIGNvbnN0IHN0 cnVjdCBid19jYWxjc19kY2VpcCAqZGNlaXAsCjE0NDc0OiAgY29uc3Qgc3RydWN0IGJ3X2NhbGNz X3ZiaW9zICp2YmlvcywKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgcGlwZV9jdHggKnBpcGUsCjE0NDc0 OiAgaW50IHBpcGVfY291bnQsCjE0NDc0OiAgc3RydWN0IGRjZV9id19vdXRwdXQgKmNhbGNzX291 dHB1dCk7CjE0NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Rjbl9jYWxjcy5oIiAxCjE0NDc0OiAjIDM0ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Rjbl9jYWxjcy5o IgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv aW5jLy4uL2RtbC9kaXNwbGF5X21vZGVfbGliLmgiIDEKMTQ0NzQ6ICMgMzUgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvZGNuX2NhbGNzLmgiIDIKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGM7CjE0NDc0OiBzdHJ1Y3QgZGNfc3RhdGU7CjE0NDc0 OiAjIDUxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Rj bl9jYWxjcy5oIgoxNDQ3NDogZW51bSBkY25fYndfZGVmcyB7CjE0NDc0OiAgZGNuX2J3X3ZfbWlu MHA2NSwKMTQ0NzQ6ICBkY25fYndfdl9taWQwcDcyLAoxNDQ3NDogIGRjbl9id192X25vbTBwOCwK MTQ0NzQ6ICBkY25fYndfdl9tYXgwcDksCjE0NDc0OiAgZGNuX2J3X3ZfbWF4MHA5MSwKMTQ0NzQ6 ICBkY25fYndfbm9fc3VwcG9ydCA9IDUsCjE0NDc0OiAgZGNuX2J3X3llcywKMTQ0NzQ6ICBkY25f YndfaG9yLAoxNDQ3NDogIGRjbl9id192ZXJ0LAoxNDQ3NDogIGRjbl9id19vdmVycmlkZSwKMTQ0 NzQ6ICBkY25fYndfcmdiX3N1Yl82NCwKMTQ0NzQ6ICBkY25fYndfcmdiX3N1Yl8zMiwKMTQ0NzQ6 ICBkY25fYndfcmdiX3N1Yl8xNiwKMTQ0NzQ6ICBkY25fYndfbm8sCjE0NDc0OiAgZGNuX2J3X3N3 X2xpbmVhciwKMTQ0NzQ6ICBkY25fYndfc3dfNF9rYl9kLAoxNDQ3NDogIGRjbl9id19zd180X2ti X2RfeCwKMTQ0NzQ6ICBkY25fYndfc3dfNjRfa2JfZCwKMTQ0NzQ6ICBkY25fYndfc3dfNjRfa2Jf ZF90LAoxNDQ3NDogIGRjbl9id19zd182NF9rYl9kX3gsCjE0NDc0OiAgZGNuX2J3X3N3X3Zhcl9k LAoxNDQ3NDogIGRjbl9id19zd192YXJfZF94LAoxNDQ3NDogIGRjbl9id195dXY0MjBfc3ViXzgs CjE0NDc0OiAgZGNuX2J3X3N3XzRfa2JfcywKMTQ0NzQ6ICBkY25fYndfc3dfNF9rYl9zX3gsCjE0 NDc0OiAgZGNuX2J3X3N3XzY0X2tiX3MsCjE0NDc0OiAgZGNuX2J3X3N3XzY0X2tiX3NfdCwKMTQ0 NzQ6ICBkY25fYndfc3dfNjRfa2Jfc194LAoxNDQ3NDogIGRjbl9id193cml0ZWJhY2ssCjE0NDc0 OiAgZGNuX2J3XzQ0NCwKMTQ0NzQ6ICBkY25fYndfZHAsCjE0NDc0OiAgZGNuX2J3XzQyMCwKMTQ0 NzQ6ICBkY25fYndfaGRtaSwKMTQ0NzQ6ICBkY25fYndfc3dfdmFyX3MsCjE0NDc0OiAgZGNuX2J3 X3N3X3Zhcl9zX3gsCjE0NDc0OiAgZGNuX2J3X3l1djQyMF9zdWJfMTAsCjE0NDc0OiAgZGNuX2J3 X3N1cHBvcnRlZF9pbl92X2FjdGl2ZSwKMTQ0NzQ6ICBkY25fYndfc3VwcG9ydGVkX2luX3ZfYmxh bmssCjE0NDc0OiAgZGNuX2J3X25vdF9zdXBwb3J0ZWQsCjE0NDc0OiAgZGNuX2J3X25hLAoxNDQ3 NDogIGRjbl9id19lbmNvZGVyXzhicGMsCjE0NDc0OiAgZGNuX2J3X2VuY29kZXJfMTBicGMsCjE0 NDc0OiAgZGNuX2J3X2VuY29kZXJfMTJicGMsCjE0NDc0OiAgZGNuX2J3X2VuY29kZXJfMTZicGMs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY25fYndfaW50ZXJuYWxfdmFycyB7CjE0NDc0OiAgZmxvYXQgdm9sdGFnZVs1ICsg MV07CjE0NDc0OiAgZmxvYXQgbWF4X2Rpc3BjbGtbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG1heF9k cHBjbGtbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGRjZmNsa19wZXJfc3RhdGVbNSArIDFdOwoxNDQ3 NDogIGZsb2F0IHBoeWNsa19wZXJfc3RhdGVbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGZhYnJpY19h bmRfZHJhbV9iYW5kd2lkdGhfcGVyX3N0YXRlWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBzcl9leGl0 X3RpbWU7CjE0NDc0OiAgZmxvYXQgc3JfZW50ZXJfcGx1c19leGl0X3RpbWU7CjE0NDc0OiAgZmxv YXQgZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeTsKMTQ0NzQ6ICBmbG9hdCB1cmdlbnRfbGF0ZW5j eTsKMTQ0NzQ6ICBmbG9hdCB3cml0ZV9iYWNrX2xhdGVuY3k7CjE0NDc0OiAgZmxvYXQgcGVyY2Vu dF9vZl9pZGVhbF9kcmFtYndfcmVjZWl2ZWRfYWZ0ZXJfdXJnX2xhdGVuY3k7CjE0NDc0OiAgZmxv YXQgZGNmY2xrdl9tYXgwcDk7CjE0NDc0OiAgZmxvYXQgZGNmY2xrdl9ub20wcDg7CjE0NDc0OiAg ZmxvYXQgZGNmY2xrdl9taWQwcDcyOwoxNDQ3NDogIGZsb2F0IGRjZmNsa3ZfbWluMHA2NTsKMTQ0 NzQ6ICBmbG9hdCBtYXhfZGlzcGNsa192bWF4MHA5OwoxNDQ3NDogIGZsb2F0IG1heF9kcHBjbGtf dm1heDBwOTsKMTQ0NzQ6ICBmbG9hdCBtYXhfZGlzcGNsa192bm9tMHA4OwoxNDQ3NDogIGZsb2F0 IG1heF9kcHBjbGtfdm5vbTBwODsKMTQ0NzQ6ICBmbG9hdCBtYXhfZGlzcGNsa192bWlkMHA3MjsK MTQ0NzQ6ICBmbG9hdCBtYXhfZHBwY2xrX3ZtaWQwcDcyOwoxNDQ3NDogIGZsb2F0IG1heF9kaXNw Y2xrX3ZtaW4wcDY1OwoxNDQ3NDogIGZsb2F0IG1heF9kcHBjbGtfdm1pbjBwNjU7CjE0NDc0OiAg ZmxvYXQgc29jY2xrOwoxNDQ3NDogIGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhfdm1h eDBwOTsKMTQ0NzQ6ICBmbG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdpZHRoX3Zub20wcDg7CjE0 NDc0OiAgZmxvYXQgZmFicmljX2FuZF9kcmFtX2JhbmR3aWR0aF92bWlkMHA3MjsKMTQ0NzQ6ICBm bG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdpZHRoX3ZtaW4wcDY1OwoxNDQ3NDogIGZsb2F0IHJv dW5kX3RyaXBfcGluZ19sYXRlbmN5X2N5Y2xlczsKMTQ0NzQ6ICBmbG9hdCB1cmdlbnRfb3V0X29m X29yZGVyX3JldHVybl9wZXJfY2hhbm5lbDsKMTQ0NzQ6ICBmbG9hdCBudW1iZXJfb2ZfY2hhbm5l bHM7CjE0NDc0OiAgZmxvYXQgdm1tX3BhZ2Vfc2l6ZTsKMTQ0NzQ6ICBmbG9hdCByZXR1cm5fYnVz X3dpZHRoOwoxNDQ3NDogIGZsb2F0IHJvYl9idWZmZXJfc2l6ZV9pbl9rYnl0ZTsKMTQ0NzQ6ICBm bG9hdCBkZXRfYnVmZmVyX3NpemVfaW5fa2J5dGU7CjE0NDc0OiAgZmxvYXQgZHBwX291dHB1dF9i dWZmZXJfcGl4ZWxzOwoxNDQ3NDogIGZsb2F0IG9wcF9vdXRwdXRfYnVmZmVyX2xpbmVzOwoxNDQ3 NDogIGZsb2F0IHBpeGVsX2NodW5rX3NpemVfaW5fa2J5dGU7CjE0NDc0OiAgZmxvYXQgcHRlX2No dW5rX3NpemU7CjE0NDc0OiAgZmxvYXQgbWV0YV9jaHVua19zaXplOwoxNDQ3NDogIGZsb2F0IHdy aXRlYmFja19jaHVua19zaXplOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgb2RtX2NhcGFiaWxp dHk7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBkc2NfY2FwYWJpbGl0eTsKMTQ0NzQ6ICBmbG9h dCBsaW5lX2J1ZmZlcl9zaXplOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgaXNfbGluZV9idWZm ZXJfYnBwX2ZpeGVkOwoxNDQ3NDogIGZsb2F0IGxpbmVfYnVmZmVyX2ZpeGVkX2JwcDsKMTQ0NzQ6 ICBmbG9hdCBtYXhfbGluZV9idWZmZXJfbGluZXM7CjE0NDc0OiAgZmxvYXQgd3JpdGViYWNrX2x1 bWFfYnVmZmVyX3NpemU7CjE0NDc0OiAgZmxvYXQgd3JpdGViYWNrX2Nocm9tYV9idWZmZXJfc2l6 ZTsKMTQ0NzQ6ICBmbG9hdCBtYXhfbnVtX2RwcDsKMTQ0NzQ6ICBmbG9hdCBtYXhfbnVtX3dyaXRl YmFjazsKMTQ0NzQ6ICBmbG9hdCBtYXhfZGNodWJfdG9wc2NsX3Rocm91Z2hwdXQ7CjE0NDc0OiAg ZmxvYXQgbWF4X3BzY2xfdG9sYl90aHJvdWdocHV0OwoxNDQ3NDogIGZsb2F0IG1heF9sYl90b3Zz Y2xfdGhyb3VnaHB1dDsKMTQ0NzQ6ICBmbG9hdCBtYXhfdnNjbF90b2hzY2xfdGhyb3VnaHB1dDsK MTQ0NzQ6ICBmbG9hdCBtYXhfaHNjbF9yYXRpbzsKMTQ0NzQ6ICBmbG9hdCBtYXhfdnNjbF9yYXRp bzsKMTQ0NzQ6ICBmbG9hdCBtYXhfaHNjbF90YXBzOwoxNDQ3NDogIGZsb2F0IG1heF92c2NsX3Rh cHM7CjE0NDc0OiAgZmxvYXQgdW5kZXJfc2Nhbl9mYWN0b3I7CjE0NDc0OiAgZmxvYXQgcGh5Y2xr dl9tYXgwcDk7CjE0NDc0OiAgZmxvYXQgcGh5Y2xrdl9ub20wcDg7CjE0NDc0OiAgZmxvYXQgcGh5 Y2xrdl9taWQwcDcyOwoxNDQ3NDogIGZsb2F0IHBoeWNsa3ZfbWluMHA2NTsKMTQ0NzQ6ICBmbG9h dCBwdGVfYnVmZmVyX3NpemVfaW5fcmVxdWVzdHM7CjE0NDc0OiAgZmxvYXQgZGlzcGNsa19yYW1w aW5nX21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCBkb3duc3ByZWFkaW5nOwoxNDQ3NDogIGZsb2F0IG1h eF9pbnRlcl9kY25fdGlsZV9yZXBlYXRlcnM7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBjYW5f dnN0YXJ0dXBfbGluZXNfZXhjZWVkX3ZzeW5jX3BsdXNfYmFja19wb3JjaF9saW5lc19taW51c19v bmU7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBidWdfZm9yY2luZ19sdW1hX2FuZF9jaHJvbWFf cmVxdWVzdF90b19zYW1lX3NpemVfZml4ZWQ7CjE0NDc0OiAgaW50IG1vZGU7CjE0NDc0OiAgZmxv YXQgdmlld3BvcnRfd2lkdGhbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGh0b3RhbFs1ICsgMV07CjE0 NDc0OiAgZmxvYXQgdnRvdGFsWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2X3N5bmNfcGx1c19iYWNr X3BvcmNoWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2YWN0aXZlWzUgKyAxXTsKMTQ0NzQ6ICBmbG9h dCBwaXhlbF9jbG9ja1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgdmlld3BvcnRfaGVpZ2h0WzUgKyAx XTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGRjY19lbmFibGVbNSArIDFdOwoxNDQ3NDogIGZs b2F0IGRjY19yYXRlWzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIHNvdXJjZV9zY2Fu WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBsYl9iaXRfcGVyX3BpeGVsWzUgKyAxXTsKMTQ0NzQ6ICBl bnVtIGRjbl9id19kZWZzIHNvdXJjZV9waXhlbF9mb3JtYXRbNSArIDFdOwoxNDQ3NDogIGVudW0g ZGNuX2J3X2RlZnMgc291cmNlX3N1cmZhY2VfbW9kZVs1ICsgMV07CjE0NDc0OiAgZW51bSBkY25f YndfZGVmcyBvdXRwdXRfZm9ybWF0WzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIG91 dHB1dF9kZWVwX2NvbG9yWzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIG91dHB1dFs1 ICsgMV07CjE0NDc0OiAgZmxvYXQgc2NhbGVyX3JlY19vdXRfd2lkdGhbNSArIDFdOwoxNDQ3NDog IGZsb2F0IHNjYWxlcl9yZWNvdXRfaGVpZ2h0WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB1bmRlcnNj YW5fb3V0cHV0WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBpbnRlcmxhY2Vfb3V0cHV0WzUgKyAxXTsK MTQ0NzQ6ICBmbG9hdCBvdmVycmlkZV9odGFfcHNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG92ZXJy aWRlX3Z0YV9wc1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgb3ZlcnJpZGVfaHRhX3BzY2hyb21hWzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCBvdmVycmlkZV92dGFfcHNjaHJvbWFbNSArIDFdOwoxNDQ3NDog IGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGhf cmF0aW9bNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfcmF0aW9bNSArIDFdOwoxNDQ3NDogIGZsb2F0 IGh0YXBzWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2dGFwc1s1ICsgMV07CjE0NDc0OiAgZmxvYXQg aHRhX3BzY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2dGFfcHNjaHJvbWFbNSArIDFdOwox NDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgcHRlX2VuYWJsZTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19k ZWZzIHN5bmNocm9uaXplZF92Ymxhbms7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyB0YV9wc2Nh bGN1bGF0aW9uOwoxNDQ3NDogIGludCB2b2x0YWdlX292ZXJyaWRlX2xldmVsOwoxNDQ3NDogIGlu dCBudW1iZXJfb2ZfYWN0aXZlX3BsYW5lczsKMTQ0NzQ6ICBpbnQgdm9sdGFnZV9sZXZlbDsKMTQ0 NzQ6ICBlbnVtIGRjbl9id19kZWZzIGltbWVkaWF0ZV9mbGlwX3N1cHBvcnRlZDsKMTQ0NzQ6ICBm bG9hdCBkY2ZjbGs7CjE0NDc0OiAgZmxvYXQgbWF4X3BoeWNsazsKMTQ0NzQ6ICBmbG9hdCBmYWJy aWNfYW5kX2RyYW1fYmFuZHdpZHRoOwoxNDQ3NDogIGZsb2F0IGRwcF9wZXJfcGxhbmVfcGVyX3Jh dGlvWzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBkaXNwY2xrX2RwcGNs a19zdXBwb3J0X3Blcl9yYXRpb1sxICsgMV07CjE0NDc0OiAgZmxvYXQgcmVxdWlyZWRfZGlzcGNs a19wZXJfcmF0aW9bMSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgZXJyb3JfbWVzc2Fn ZVsxICsgMV07CjE0NDc0OiAgaW50IGRpc3BjbGtfZHBwY2xrX3JhdGlvOwoxNDQ3NDogIGZsb2F0 IGRwcF9wZXJfcGxhbmVbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGRldF9idWZmZXJfc2l6ZV95WzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCBkZXRfYnVmZmVyX3NpemVfY1s1ICsgMV07CjE0NDc0OiAgZmxv YXQgc3dhdGhfaGVpZ2h0X3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHN3YXRoX2hlaWdodF9jWzUg KyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGZpbmFsX2Vycm9yX21lc3NhZ2U7CjE0NDc0 OiAgZmxvYXQgZnJlcXVlbmN5OwoxNDQ3NDogIGZsb2F0IGhlYWRlcl9saW5lOwoxNDQ3NDogIGZs b2F0IGhlYWRlcjsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIHZvbHRhZ2Vfb3ZlcnJpZGU7CjE0 NDc0OiAgZW51bSBkY25fYndfZGVmcyBhbGxvd19kaWZmZXJlbnRfaHJhdGlvX3ZyYXRpbzsKMTQ0 NzQ6ICBmbG9hdCBhY2NlcHRhYmxlX3F1YWxpdHlfaHRhX3BzOwoxNDQ3NDogIGZsb2F0IGFjY2Vw dGFibGVfcXVhbGl0eV92dGFfcHM7CjE0NDc0OiAgZmxvYXQgbm9fb2ZfZHBwWzUgKyAxXVsxICsg MV1bNSArIDFdOwoxNDQ3NDogIGZsb2F0IHN3YXRoX3dpZHRoX3lwZXJfc3RhdGVbNSArIDFdWzEg KyAxXVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgc3dhdGhfaGVpZ2h0X3lwZXJfc3RhdGVbNSArIDFd WzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgc3dhdGhfaGVpZ2h0X2NwZXJfc3RhdGVbNSAr IDFdWzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgdXJnZW50X2xhdGVuY3lfc3VwcG9ydF91 c19wZXJfc3RhdGVbNSArIDFdWzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgdl9yYXRpb19w cmVfeXdpdGhfaW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXVs1ICsgMV07CjE0NDc0OiAgZmxv YXQgdl9yYXRpb19wcmVfY3dpdGhfaW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXVs1ICsgMV07 CjE0NDc0OiAgZmxvYXQgcmVxdWlyZWRfcHJlZmV0Y2hfcGl4ZWxfZGF0YV9id193aXRoX2ltbWVk aWF0ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfcmF0aW9fcHJl X3l3aXRob3V0X2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSArIDFdOwoxNDQ3NDogIGZs b2F0IHZfcmF0aW9fcHJlX2N3aXRob3V0X2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSAr IDFdOwoxNDQ3NDogIGZsb2F0IHJlcXVpcmVkX3ByZWZldGNoX3BpeGVsX2RhdGFfYndfd2l0aG91 dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdWzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9i d19kZWZzIHByZWZldGNoX3N1cHBvcnRlZF93aXRoX2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsg MV07CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBwcmVmZXRjaF9zdXBwb3J0ZWRfd2l0aG91dF9p bW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgdl9y YXRpb19pbl9wcmVmZXRjaF9zdXBwb3J0ZWRfd2l0aF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSAr IDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgdl9yYXRpb19pbl9wcmVmZXRjaF9zdXBwb3J0 ZWRfd2l0aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwoxNDQ3NDogIGZsb2F0IHJl cXVpcmVkX2Rpc3BjbGtbNSArIDFdWzEgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGRp c3BjbGtfZHBwY2xrX3N1cHBvcnRbNSArIDFdWzEgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19k ZWZzIHRvdGFsX2F2YWlsYWJsZV9waXBlc19zdXBwb3J0WzUgKyAxXVsxICsgMV07CjE0NDc0OiAg ZmxvYXQgdG90YWxfbnVtYmVyX29mX2FjdGl2ZV9kcHBbNSArIDFdWzEgKyAxXTsKMTQ0NzQ6ICBm bG9hdCB0b3RhbF9udW1iZXJfb2ZfZGNjX2FjdGl2ZV9kcHBbNSArIDFdWzEgKyAxXTsKMTQ0NzQ6 ICBlbnVtIGRjbl9id19kZWZzIHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRbNSArIDFdWzEgKyAxXTsK MTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIG1vZGVfc3VwcG9ydF93aXRoX2ltbWVkaWF0ZV9mbGlw WzUgKyAxXVsxICsgMV07CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBtb2RlX3N1cHBvcnRfd2l0 aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwoxNDQ3NDogIGZsb2F0IHJldHVybl9i d19wZXJfc3RhdGVbNSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgZGlvX3N1cHBvcnRb NSArIDFdOwoxNDQ3NDogIGZsb2F0IHVyZ2VudF9yb3VuZF90cmlwX2FuZF9vdXRfb2Zfb3JkZXJf bGF0ZW5jeV9wZXJfc3RhdGVbNSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgcm9iX3N1 cHBvcnRbNSArIDFdOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgYmFuZHdpZHRoX3N1cHBvcnRb NSArIDFdOwoxNDQ3NDogIGZsb2F0IHByZWZldGNoX2J3WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBt ZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG1ldGFfcm93X2J5 dGVzWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBkcHRlX2J5dGVzX3Blcl9yb3dbNSArIDFdOwoxNDQ3 NDogIGZsb2F0IHByZWZldGNoX2xpbmVzX3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHByZWZldGNo X2xpbmVzX2NbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG1heF9udW1fc3dfeVs1ICsgMV07CjE0NDc0 OiAgZmxvYXQgbWF4X251bV9zd19jWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBsaW5lX3RpbWVzX2Zv cl9wcmVmZXRjaFs1ICsgMV07CjE0NDc0OiAgZmxvYXQgbGluZXNfZm9yX21ldGFfcHRlX3dpdGhf aW1tZWRpYXRlX2ZsaXBbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGxpbmVzX2Zvcl9tZXRhX3B0ZV93 aXRob3V0X2ltbWVkaWF0ZV9mbGlwWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBsaW5lc19mb3JfbWV0 YV9hbmRfZHB0ZV9yb3dfd2l0aF9pbW1lZGlhdGVfZmxpcFs1ICsgMV07CjE0NDc0OiAgZmxvYXQg bGluZXNfZm9yX21ldGFfYW5kX2RwdGVfcm93X3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXBbNSArIDFd OwoxNDQ3NDogIGZsb2F0IG1pbl9kcHBjbGtfdXNpbmdfc2luZ2xlX2RwcFs1ICsgMV07CjE0NDc0 OiAgZmxvYXQgc3dhdGhfd2lkdGhfeXNpbmdsZV9kcHBbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGJ5 dGVfcGVyX3BpeGVsX2luX2RldHlbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGJ5dGVfcGVyX3BpeGVs X2luX2RldGNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG51bWJlcl9vZl9kcHBfcmVxdWlyZWRfZm9y X2RldF9hbmRfbGJfc2l6ZVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgcmVxdWlyZWRfcGh5Y2xrWzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCByZWFkMjU2X2Jsb2NrX2hlaWdodF95WzUgKyAxXTsKMTQ0NzQ6 ICBmbG9hdCByZWFkMjU2X2Jsb2NrX3dpZHRoX3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHJlYWQy NTZfYmxvY2tfaGVpZ2h0X2NbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHJlYWQyNTZfYmxvY2tfd2lk dGhfY1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgbWF4X3N3YXRoX2hlaWdodF95WzUgKyAxXTsKMTQ0 NzQ6ICBmbG9hdCBtYXhfc3dhdGhfaGVpZ2h0X2NbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG1pbl9z d2F0aF9oZWlnaHRfeVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgbWluX3N3YXRoX2hlaWdodF9jWzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCByZWFkX2JhbmR3aWR0aFs1ICsgMV07CjE0NDc0OiAgZmxvYXQg d3JpdGVfYmFuZHdpZHRoWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBwc2NsX2ZhY3Rvcls1ICsgMV07 CjE0NDc0OiAgZmxvYXQgcHNjbF9mYWN0b3JfY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBlbnVtIGRj bl9id19kZWZzIHNjYWxlX3JhdGlvX3N1cHBvcnQ7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBz b3VyY2VfZm9ybWF0X3BpeGVsX2FuZF9zY2FuX3N1cHBvcnQ7CjE0NDc0OiAgZmxvYXQgdG90YWxf cmVhZF9iYW5kd2lkdGhfY29uc3VtZWRfZ2J5dGVfcGVyX3NlY29uZDsKMTQ0NzQ6ICBmbG9hdCB0 b3RhbF93cml0ZV9iYW5kd2lkdGhfY29uc3VtZWRfZ2J5dGVfcGVyX3NlY29uZDsKMTQ0NzQ6ICBm bG9hdCB0b3RhbF9iYW5kd2lkdGhfY29uc3VtZWRfZ2J5dGVfcGVyX3NlY29uZDsKMTQ0NzQ6ICBl bnVtIGRjbl9id19kZWZzIGRjY19lbmFibGVkX2luX2FueV9wbGFuZTsKMTQ0NzQ6ICBmbG9hdCBy ZXR1cm5fYndfdG9kY25fcGVyX3N0YXRlOwoxNDQ3NDogIGZsb2F0IGNyaXRpY2FsX3BvaW50Owox NDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgd3JpdGViYWNrX2xhdGVuY3lfc3VwcG9ydDsKMTQ0NzQ6 ICBmbG9hdCByZXF1aXJlZF9vdXRwdXRfYnc7CjE0NDc0OiAgZmxvYXQgdG90YWxfbnVtYmVyX29m X2FjdGl2ZV93cml0ZWJhY2s7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyB0b3RhbF9hdmFpbGFi bGVfd3JpdGViYWNrX3N1cHBvcnQ7CjE0NDc0OiAgZmxvYXQgbWF4aW11bV9zd2F0aF93aWR0aDsK MTQ0NzQ6ICBmbG9hdCBudW1iZXJfb2ZfZHBwX3JlcXVpcmVkX2Zvcl9kZXRfc2l6ZTsKMTQ0NzQ6 ICBmbG9hdCBudW1iZXJfb2ZfZHBwX3JlcXVpcmVkX2Zvcl9sYl9zaXplOwoxNDQ3NDogIGZsb2F0 IG1pbl9kaXNwY2xrX3VzaW5nX3NpbmdsZV9kcHA7CjE0NDc0OiAgZmxvYXQgbWluX2Rpc3BjbGtf dXNpbmdfZHVhbF9kcHA7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyB2aWV3cG9ydF9zaXplX3N1 cHBvcnQ7CjE0NDc0OiAgZmxvYXQgc3dhdGhfd2lkdGhfZ3JhbnVsYXJpdHlfeTsKMTQ0NzQ6ICBm bG9hdCByb3VuZGVkX3VwX21heF9zd2F0aF9zaXplX2J5dGVzX3k7CjE0NDc0OiAgZmxvYXQgc3dh dGhfd2lkdGhfZ3JhbnVsYXJpdHlfYzsKMTQ0NzQ6ICBmbG9hdCByb3VuZGVkX3VwX21heF9zd2F0 aF9zaXplX2J5dGVzX2M7CjE0NDc0OiAgZmxvYXQgbGluZXNfaW5fZGV0X2x1bWE7CjE0NDc0OiAg ZmxvYXQgbGluZXNfaW5fZGV0X2Nocm9tYTsKMTQ0NzQ6ICBmbG9hdCBlZmZlY3RpdmVfbGJfbGF0 ZW5jeV9oaWRpbmdfc291cmNlX2xpbmVzX2x1bWE7CjE0NDc0OiAgZmxvYXQgZWZmZWN0aXZlX2xi X2xhdGVuY3lfaGlkaW5nX3NvdXJjZV9saW5lc19jaHJvbWE7CjE0NDc0OiAgZmxvYXQgZWZmZWN0 aXZlX2RldGxiX2xpbmVzX2x1bWE7CjE0NDc0OiAgZmxvYXQgZWZmZWN0aXZlX2RldGxiX2xpbmVz X2Nocm9tYTsKMTQ0NzQ6ICBmbG9hdCBwcm9qZWN0ZWRfZGNmY2xrX2RlZXBfc2xlZXA7CjE0NDc0 OiAgZmxvYXQgbWV0YV9yZXFfaGVpZ2h0X3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9yZXFfd2lkdGhf eTsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3N1cmZhY2Vfd2lkdGhfeTsKMTQ0NzQ6ICBmbG9hdCBtZXRh X3N1cmZhY2VfaGVpZ2h0X3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9wdGVfYnl0ZXNfcGVyX2ZyYW1l X3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9yb3dfYnl0ZXNfeTsKMTQ0NzQ6ICBmbG9hdCBtYWNyb190 aWxlX2Jsb2NrX3NpemVfYnl0ZXNfeTsKMTQ0NzQ6ICBmbG9hdCBtYWNyb190aWxlX2Jsb2NrX2hl aWdodF95OwoxNDQ3NDogIGZsb2F0IGRhdGFfcHRlX3JlcV9oZWlnaHRfeTsKMTQ0NzQ6ICBmbG9h dCBkYXRhX3B0ZV9yZXFfd2lkdGhfeTsKMTQ0NzQ6ICBmbG9hdCBkcHRlX2J5dGVzX3Blcl9yb3df eTsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3JlcV9oZWlnaHRfYzsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3Jl cV93aWR0aF9jOwoxNDQ3NDogIGZsb2F0IG1ldGFfc3VyZmFjZV93aWR0aF9jOwoxNDQ3NDogIGZs b2F0IG1ldGFfc3VyZmFjZV9oZWlnaHRfYzsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3B0ZV9ieXRlc19w ZXJfZnJhbWVfYzsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3Jvd19ieXRlc19jOwoxNDQ3NDogIGZsb2F0 IG1hY3JvX3RpbGVfYmxvY2tfc2l6ZV9ieXRlc19jOwoxNDQ3NDogIGZsb2F0IG1hY3JvX3RpbGVf YmxvY2tfaGVpZ2h0X2M7CjE0NDc0OiAgZmxvYXQgbWFjcm9fdGlsZV9ibG9ja193aWR0aF9jOwox NDQ3NDogIGZsb2F0IGRhdGFfcHRlX3JlcV9oZWlnaHRfYzsKMTQ0NzQ6ICBmbG9hdCBkYXRhX3B0 ZV9yZXFfd2lkdGhfYzsKMTQ0NzQ6ICBmbG9hdCBkcHRlX2J5dGVzX3Blcl9yb3dfYzsKMTQ0NzQ6 ICBmbG9hdCB2X2luaXRfeTsKMTQ0NzQ6ICBmbG9hdCBtYXhfcGFydGlhbF9zd195OwoxNDQ3NDog IGZsb2F0IHZfaW5pdF9jOwoxNDQ3NDogIGZsb2F0IG1heF9wYXJ0aWFsX3N3X2M7CjE0NDc0OiAg ZmxvYXQgZHN0X3hfYWZ0ZXJfc2NhbGVyOwoxNDQ3NDogIGZsb2F0IGRzdF95X2FmdGVyX3NjYWxl cjsKMTQ0NzQ6ICBmbG9hdCB0aW1lX2NhbGM7CjE0NDc0OiAgZmxvYXQgdl91cGRhdGVfb2Zmc2V0 WzUgKyAxXVsyXTsKMTQ0NzQ6ICBmbG9hdCB0b3RhbF9yZXBlYXRlcl9kZWxheTsKMTQ0NzQ6ICBm bG9hdCB2X3VwZGF0ZV93aWR0aFs1ICsgMV1bMl07CjE0NDc0OiAgZmxvYXQgdl9yZWFkeV9vZmZz ZXRbNSArIDFdWzJdOwoxNDQ3NDogIGZsb2F0IHRpbWVfc2V0dXA7CjE0NDc0OiAgZmxvYXQgZXh0 cmFfbGF0ZW5jeTsKMTQ0NzQ6ICBmbG9hdCBtYXhpbXVtX3ZzdGFydHVwOwoxNDQ3NDogIGZsb2F0 IGJ3X2F2YWlsYWJsZV9mb3JfaW1tZWRpYXRlX2ZsaXA7CjE0NDc0OiAgZmxvYXQgdG90YWxfaW1t ZWRpYXRlX2ZsaXBfYnl0ZXNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHRpbWVfZm9yX21ldGFfcHRl X3dpdGhfaW1tZWRpYXRlX2ZsaXA7CjE0NDc0OiAgZmxvYXQgdGltZV9mb3JfbWV0YV9wdGVfd2l0 aG91dF9pbW1lZGlhdGVfZmxpcDsKMTQ0NzQ6ICBmbG9hdCB0aW1lX2Zvcl9tZXRhX2FuZF9kcHRl X3Jvd193aXRoX2ltbWVkaWF0ZV9mbGlwOwoxNDQ3NDogIGZsb2F0IHRpbWVfZm9yX21ldGFfYW5k X2RwdGVfcm93X3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXA7CjE0NDc0OiAgZmxvYXQgbGluZV90aW1l c190b19yZXF1ZXN0X3ByZWZldGNoX3BpeGVsX2RhdGFfd2l0aF9pbW1lZGlhdGVfZmxpcDsKMTQ0 NzQ6ICBmbG9hdCBsaW5lX3RpbWVzX3RvX3JlcXVlc3RfcHJlZmV0Y2hfcGl4ZWxfZGF0YV93aXRo b3V0X2ltbWVkaWF0ZV9mbGlwOwoxNDQ3NDogIGZsb2F0IG1heGltdW1fcmVhZF9iYW5kd2lkdGhf d2l0aF9wcmVmZXRjaF93aXRoX2ltbWVkaWF0ZV9mbGlwOwoxNDQ3NDogIGZsb2F0IG1heGltdW1f cmVhZF9iYW5kd2lkdGhfd2l0aF9wcmVmZXRjaF93aXRob3V0X2ltbWVkaWF0ZV9mbGlwOwoxNDQ3 NDogIGZsb2F0IHZvbHRhZ2VfbGV2ZWxfd2l0aF9pbW1lZGlhdGVfZmxpcDsKMTQ0NzQ6ICBmbG9h dCB2b2x0YWdlX2xldmVsX3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXA7CjE0NDc0OiAgZmxvYXQgdG90 YWxfbnVtYmVyX29mX2FjdGl2ZV9kcHBfcGVyX3JhdGlvWzEgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBi eXRlX3Blcl9waXhfZGV0eTsKMTQ0NzQ6ICBmbG9hdCBieXRlX3Blcl9waXhfZGV0YzsKMTQ0NzQ6 ICBmbG9hdCByZWFkMjU2X2J5dGVzX2Jsb2NrX2hlaWdodF95OwoxNDQ3NDogIGZsb2F0IHJlYWQy NTZfYnl0ZXNfYmxvY2tfd2lkdGhfeTsKMTQ0NzQ6ICBmbG9hdCByZWFkMjU2X2J5dGVzX2Jsb2Nr X2hlaWdodF9jOwoxNDQ3NDogIGZsb2F0IHJlYWQyNTZfYnl0ZXNfYmxvY2tfd2lkdGhfYzsKMTQ0 NzQ6ICBmbG9hdCBtYXhpbXVtX3N3YXRoX2hlaWdodF95OwoxNDQ3NDogIGZsb2F0IG1heGltdW1f c3dhdGhfaGVpZ2h0X2M7CjE0NDc0OiAgZmxvYXQgbWluaW11bV9zd2F0aF9oZWlnaHRfeTsKMTQ0 NzQ6ICBmbG9hdCBtaW5pbXVtX3N3YXRoX2hlaWdodF9jOwoxNDQ3NDogIGZsb2F0IHN3YXRoX3dp ZHRoOwoxNDQ3NDogIGZsb2F0IHByZWZldGNoX2JhbmR3aWR0aFs1ICsgMV07CjE0NDc0OiAgZmxv YXQgdl9pbml0X3ByZV9maWxsX3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfaW5pdF9wcmVfZmls bF9jWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBtYXhfbnVtX3N3YXRoX3lbNSArIDFdOwoxNDQ3NDog IGZsb2F0IG1heF9udW1fc3dhdGhfY1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgcHJlZmlsbF95WzUg KyAxXTsKMTQ0NzQ6ICBmbG9hdCBwcmVmaWxsX2NbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfc3Rh cnR1cFs1ICsgMV07CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBhbGxvd19kcmFtX2Nsb2NrX2No YW5nZV9kdXJpbmdfdmJsYW5rWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBhbGxvd19kcmFtX3NlbGZf cmVmcmVzaF9kdXJpbmdfdmJsYW5rWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB2X3JhdGlvX3ByZWZl dGNoX3lbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHZfcmF0aW9fcHJlZmV0Y2hfY1s1ICsgMV07CjE0 NDc0OiAgZmxvYXQgZGVzdGluYXRpb25fbGluZXNfZm9yX3ByZWZldGNoWzUgKyAxXTsKMTQ0NzQ6 ICBmbG9hdCBkZXN0aW5hdGlvbl9saW5lc190b19yZXF1ZXN0X3ZtX2ludl9ibGFua1s1ICsgMV07 CjE0NDc0OiAgZmxvYXQgZGVzdGluYXRpb25fbGluZXNfdG9fcmVxdWVzdF9yb3dfaW5fdmJsYW5r WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBtaW5fdHR1dl9ibGFua1s1ICsgMV07CjE0NDc0OiAgZmxv YXQgYnl0ZV9wZXJfcGl4ZWxfZGV0eVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgYnl0ZV9wZXJfcGl4 ZWxfZGV0Y1s1ICsgMV07CjE0NDc0OiAgZmxvYXQgc3dhdGhfd2lkdGhfeVs1ICsgMV07CjE0NDc0 OiAgZmxvYXQgbGluZXNfaW5fZGV0eVs1ICsgMV07CjE0NDc0OiAgZmxvYXQgbGluZXNfaW5fZGV0 eV9yb3VuZGVkX2Rvd25fdG9fc3dhdGhbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGxpbmVzX2luX2Rl dGNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGxpbmVzX2luX2RldGNfcm91bmRlZF9kb3duX3RvX3N3 YXRoWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBmdWxsX2RldF9idWZmZXJpbmdfdGltZV95WzUgKyAx XTsKMTQ0NzQ6ICBmbG9hdCBmdWxsX2RldF9idWZmZXJpbmdfdGltZV9jWzUgKyAxXTsKMTQ0NzQ6 ICBmbG9hdCBhY3RpdmVfZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV9tYXJnaW5bNSArIDFdOwox NDQ3NDogIGZsb2F0IHZfYmxhbmtfZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV9tYXJnaW5bNSAr IDFdOwoxNDQ3NDogIGZsb2F0IGRjZmNsa19kZWVwX3NsZWVwX3Blcl9wbGFuZVs1ICsgMV07CjE0 NDc0OiAgZmxvYXQgcmVhZF9iYW5kd2lkdGhfcGxhbmVfbHVtYVs1ICsgMV07CjE0NDc0OiAgZmxv YXQgcmVhZF9iYW5kd2lkdGhfcGxhbmVfY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBkaXNw bGF5X3BpcGVfbGluZV9kZWxpdmVyeV90aW1lX2x1bWFbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGRp c3BsYXlfcGlwZV9saW5lX2RlbGl2ZXJ5X3RpbWVfY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBmbG9h dCBkaXNwbGF5X3BpcGVfbGluZV9kZWxpdmVyeV90aW1lX2x1bWFfcHJlZmV0Y2hbNSArIDFdOwox NDQ3NDogIGZsb2F0IGRpc3BsYXlfcGlwZV9saW5lX2RlbGl2ZXJ5X3RpbWVfY2hyb21hX3ByZWZl dGNoWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBwaXhlbF9wdGVfYnl0ZXNfcGVyX3Jvd1s1ICsgMV07 CjE0NDc0OiAgZmxvYXQgbWV0YV9wdGVfYnl0ZXNfZnJhbWVbNSArIDFdOwoxNDQ3NDogIGZsb2F0 IG1ldGFfcm93X2J5dGVbNSArIDFdOwoxNDQ3NDogIGZsb2F0IHByZWZldGNoX3NvdXJjZV9saW5l c195WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBwcmVmZXRjaF9zb3VyY2VfbGluZXNfY1s1ICsgMV07 CjE0NDc0OiAgZmxvYXQgcHNjbF90aHJvdWdocHV0WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBwc2Ns X3Rocm91Z2hwdXRfY2hyb21hWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBvdXRwdXRfYnBwaGRtaVs1 ICsgMV07CjE0NDc0OiAgZmxvYXQgb3V0cHV0X2JwcGRwNF9sYW5lX2hicls1ICsgMV07CjE0NDc0 OiAgZmxvYXQgb3V0cHV0X2JwcGRwNF9sYW5lX2hicjJbNSArIDFdOwoxNDQ3NDogIGZsb2F0IG91 dHB1dF9icHBkcDRfbGFuZV9oYnIzWzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCBtYXhfdnN0YXJ0dXBf bGluZXNbNSArIDFdOwoxNDQ3NDogIGZsb2F0IGRpc3BjbGtfd2l0aF9yYW1waW5nOwoxNDQ3NDog IGZsb2F0IGRpc3BjbGtfd2l0aG91dF9yYW1waW5nOwoxNDQ3NDogIGZsb2F0IGRwcGNsa191c2lu Z19zaW5nbGVfZHBwX2x1bWE7CjE0NDc0OiAgZmxvYXQgZHBwY2xrX3VzaW5nX3NpbmdsZV9kcHA7 CjE0NDc0OiAgZmxvYXQgZHBwY2xrX3VzaW5nX3NpbmdsZV9kcHBfY2hyb21hOwoxNDQ3NDogIGVu dW0gZGNuX2J3X2RlZnMgb2RtX2NhcGFibGU7CjE0NDc0OiAgZmxvYXQgZGlzcGNsazsKMTQ0NzQ6 ICBmbG9hdCBkcHBjbGs7CjE0NDc0OiAgZmxvYXQgcmV0dXJuX2JhbmR3aWR0aF90b19kY247CjE0 NDc0OiAgZW51bSBkY25fYndfZGVmcyBkY2NfZW5hYmxlZF9hbnlfcGxhbmU7CjE0NDc0OiAgZmxv YXQgcmV0dXJuX2J3OwoxNDQ3NDogIGZsb2F0IGNyaXRpY2FsX2NvbXByZXNzaW9uOwoxNDQ3NDog IGZsb2F0IHRvdGFsX2RhdGFfcmVhZF9iYW5kd2lkdGg7CjE0NDc0OiAgZmxvYXQgdG90YWxfYWN0 aXZlX2RwcDsKMTQ0NzQ6ICBmbG9hdCB0b3RhbF9kY2NfYWN0aXZlX2RwcDsKMTQ0NzQ6ICBmbG9h dCB1cmdlbnRfcm91bmRfdHJpcF9hbmRfb3V0X29mX29yZGVyX2xhdGVuY3k7CjE0NDc0OiAgZmxv YXQgbGFzdF9waXhlbF9vZl9saW5lX2V4dHJhX3dhdGVybWFyazsKMTQ0NzQ6ICBmbG9hdCBkYXRh X2ZhYnJpY19saW5lX2RlbGl2ZXJ5X3RpbWVfbHVtYTsKMTQ0NzQ6ICBmbG9hdCBkYXRhX2ZhYnJp Y19saW5lX2RlbGl2ZXJ5X3RpbWVfY2hyb21hOwoxNDQ3NDogIGZsb2F0IHVyZ2VudF9leHRyYV9s YXRlbmN5OwoxNDQ3NDogIGZsb2F0IHVyZ2VudF93YXRlcm1hcms7CjE0NDc0OiAgZmxvYXQgcHRl bWV0YV91cmdlbnRfd2F0ZXJtYXJrOwoxNDQ3NDogIGZsb2F0IGRyYW1fY2xvY2tfY2hhbmdlX3dh dGVybWFyazsKMTQ0NzQ6ICBmbG9hdCB0b3RhbF9hY3RpdmVfd3JpdGViYWNrOwoxNDQ3NDogIGZs b2F0IHdyaXRlYmFja19kcmFtX2Nsb2NrX2NoYW5nZV93YXRlcm1hcms7CjE0NDc0OiAgZmxvYXQg bWluX2Z1bGxfZGV0X2J1ZmZlcmluZ190aW1lOwoxNDQ3NDogIGZsb2F0IGZyYW1lX3RpbWVfZm9y X21pbl9mdWxsX2RldF9idWZmZXJpbmdfdGltZTsKMTQ0NzQ6ICBmbG9hdCBhdmVyYWdlX3JlYWRf YmFuZHdpZHRoX2dieXRlX3Blcl9zZWNvbmQ7CjE0NDc0OiAgZmxvYXQgcGFydF9vZl9idXJzdF90 aGF0X2ZpdHNfaW5fcm9iOwoxNDQ3NDogIGZsb2F0IHN0dXR0ZXJfYnVyc3RfdGltZTsKMTQ0NzQ6 ICBmbG9hdCBzdHV0dGVyX2VmZmljaWVuY3lfbm90X2luY2x1ZGluZ192Ymxhbms7CjE0NDc0OiAg ZmxvYXQgc21hbGxlc3RfdmJsYW5rOwoxNDQ3NDogIGZsb2F0IHZfYmxhbmtfdGltZTsKMTQ0NzQ6 ICBmbG9hdCBzdHV0dGVyX2VmZmljaWVuY3k7CjE0NDc0OiAgZmxvYXQgZGNmX2Nsa19kZWVwX3Ns ZWVwOwoxNDQ3NDogIGZsb2F0IHN0dXR0ZXJfZXhpdF93YXRlcm1hcms7CjE0NDc0OiAgZmxvYXQg c3R1dHRlcl9lbnRlcl9wbHVzX2V4aXRfd2F0ZXJtYXJrOwoxNDQ3NDogIGZsb2F0IGVmZmVjdGl2 ZV9kZXRfcGx1c19sYl9saW5lc19sdW1hOwoxNDQ3NDogIGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1 cHBvcnRfdXNfbHVtYTsKMTQ0NzQ6ICBmbG9hdCBlZmZlY3RpdmVfZGV0X3BsdXNfbGJfbGluZXNf Y2hyb21hOwoxNDQ3NDogIGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXNfY2hyb21hOwox NDQ3NDogIGZsb2F0IG1pbl91cmdlbnRfbGF0ZW5jeV9zdXBwb3J0X3VzOwoxNDQ3NDogIGZsb2F0 IG5vbl91cmdlbnRfbGF0ZW5jeV90b2xlcmFuY2U7CjE0NDc0OiAgZmxvYXQgYmxvY2tfaGVpZ2h0 MjU2X2J5dGVzX3k7CjE0NDc0OiAgZmxvYXQgYmxvY2tfaGVpZ2h0MjU2X2J5dGVzX2M7CjE0NDc0 OiAgZmxvYXQgbWV0YV9yZXF1ZXN0X3dpZHRoX3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9zdXJmX3dp ZHRoX3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9zdXJmX2hlaWdodF95OwoxNDQ3NDogIGZsb2F0IG1l dGFfcHRlX2J5dGVzX2ZyYW1lX3k7CjE0NDc0OiAgZmxvYXQgbWV0YV9yb3dfYnl0ZV95OwoxNDQ3 NDogIGZsb2F0IG1hY3JvX3RpbGVfc2l6ZV9ieXRlX3k7CjE0NDc0OiAgZmxvYXQgbWFjcm9fdGls ZV9oZWlnaHRfeTsKMTQ0NzQ6ICBmbG9hdCBwaXhlbF9wdGVfcmVxX2hlaWdodF95OwoxNDQ3NDog IGZsb2F0IHBpeGVsX3B0ZV9yZXFfd2lkdGhfeTsKMTQ0NzQ6ICBmbG9hdCBwaXhlbF9wdGVfYnl0 ZXNfcGVyX3Jvd195OwoxNDQ3NDogIGZsb2F0IG1ldGFfcmVxdWVzdF93aWR0aF9jOwoxNDQ3NDog IGZsb2F0IG1ldGFfc3VyZl93aWR0aF9jOwoxNDQ3NDogIGZsb2F0IG1ldGFfc3VyZl9oZWlnaHRf YzsKMTQ0NzQ6ICBmbG9hdCBtZXRhX3B0ZV9ieXRlc19mcmFtZV9jOwoxNDQ3NDogIGZsb2F0IG1l dGFfcm93X2J5dGVfYzsKMTQ0NzQ6ICBmbG9hdCBtYWNyb190aWxlX3NpemVfYnl0ZXNfYzsKMTQ0 NzQ6ICBmbG9hdCBtYWNyb190aWxlX2hlaWdodF9jOwoxNDQ3NDogIGZsb2F0IHBpeGVsX3B0ZV9y ZXFfaGVpZ2h0X2M7CjE0NDc0OiAgZmxvYXQgcGl4ZWxfcHRlX3JlcV93aWR0aF9jOwoxNDQ3NDog IGZsb2F0IHBpeGVsX3B0ZV9ieXRlc19wZXJfcm93X2M7CjE0NDc0OiAgZmxvYXQgbWF4X3BhcnRp YWxfc3dhdGhfeTsKMTQ0NzQ6ICBmbG9hdCBtYXhfcGFydGlhbF9zd2F0aF9jOwoxNDQ3NDogIGZs b2F0IHRfY2FsYzsKMTQ0NzQ6ICBmbG9hdCBuZXh0X3ByZWZldGNoX21vZGU7CjE0NDc0OiAgZmxv YXQgdl9zdGFydHVwX2xpbmVzOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgcGxhbmVzX3dpdGhf cm9vbV90b19pbmNyZWFzZV92c3RhcnR1cF9wcmVmZXRjaF9id19sZXNzX3RoYW5fYWN0aXZlX2J3 OwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgcGxhbmVzX3dpdGhfcm9vbV90b19pbmNyZWFzZV92 c3RhcnR1cF92cmF0aW9fcHJlZmV0Y2hfbW9yZV90aGFuNDsKMTQ0NzQ6ICBlbnVtIGRjbl9id19k ZWZzIHBsYW5lc193aXRoX3Jvb21fdG9faW5jcmVhc2VfdnN0YXJ0dXBfZGVzdGluYXRpb25fbGlu ZV90aW1lc19mb3JfcHJlZmV0Y2hfbGVzc190aGFuMjsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZz IHZfcmF0aW9fcHJlZmV0Y2hfbW9yZV90aGFuNDsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGRl c3RpbmF0aW9uX2xpbmVfdGltZXNfZm9yX3ByZWZldGNoX2xlc3NfdGhhbjI7CjE0NDc0OiAgZmxv YXQgcHJlZmV0Y2hfbW9kZTsKMTQ0NzQ6ICBmbG9hdCBkc3R4X2FmdGVyX3NjYWxlcjsKMTQ0NzQ6 ICBmbG9hdCBkc3R5X2FmdGVyX3NjYWxlcjsKMTQ0NzQ6ICBmbG9hdCB2X3VwZGF0ZV9vZmZzZXRf cGl4WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB0b3RhbF9yZXBlYXRlcl9kZWxheV90aW1lOwoxNDQ3 NDogIGZsb2F0IHZfdXBkYXRlX3dpZHRoX3BpeFs1ICsgMV07CjE0NDc0OiAgZmxvYXQgdl9yZWFk eV9vZmZzZXRfcGl4WzUgKyAxXTsKMTQ0NzQ6ICBmbG9hdCB0X3NldHVwOwoxNDQ3NDogIGZsb2F0 IHRfd2FpdDsKMTQ0NzQ6ICBmbG9hdCBiYW5kd2lkdGhfYXZhaWxhYmxlX2Zvcl9pbW1lZGlhdGVf ZmxpcDsKMTQ0NzQ6ICBmbG9hdCB0b3RfaW1tZWRpYXRlX2ZsaXBfYnl0ZXM7CjE0NDc0OiAgZmxv YXQgbWF4X3JkX2JhbmR3aWR0aDsKMTQ0NzQ6ICBmbG9hdCB0aW1lX2Zvcl9mZXRjaGluZ19tZXRh X3B0ZTsKMTQ0NzQ6ICBmbG9hdCB0aW1lX2Zvcl9mZXRjaGluZ19yb3dfaW5fdmJsYW5rOwoxNDQ3 NDogIGZsb2F0IGxpbmVzX3RvX3JlcXVlc3RfcHJlZmV0Y2hfcGl4ZWxfZGF0YTsKMTQ0NzQ6ICBm bG9hdCByZXF1aXJlZF9wcmVmZXRjaF9waXhfZGF0YV9idzsKMTQ0NzQ6ICBlbnVtIGRjbl9id19k ZWZzIHByZWZldGNoX21vZGVfc3VwcG9ydGVkOwoxNDQ3NDogIGZsb2F0IGFjdGl2ZV9kcF9wczsK MTQ0NzQ6ICBmbG9hdCBsYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGluZXNfeTsKMTQ0NzQ6ICBm bG9hdCBsYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGluZXNfYzsKMTQ0NzQ6ICBmbG9hdCBlZmZl Y3RpdmVfbGJfbGF0ZW5jeV9oaWRpbmdfeTsKMTQ0NzQ6ICBmbG9hdCBlZmZlY3RpdmVfbGJfbGF0 ZW5jeV9oaWRpbmdfYzsKMTQ0NzQ6ICBmbG9hdCBkcHBfb3V0cHV0X2J1ZmZlcl9saW5lc195Owox NDQ3NDogIGZsb2F0IGRwcF9vdXRwdXRfYnVmZmVyX2xpbmVzX2M7CjE0NDc0OiAgZmxvYXQgZHBw b3BwX2J1ZmZlcmluZ195OwoxNDQ3NDogIGZsb2F0IG1heF9kZXRfYnVmZmVyaW5nX3RpbWVfeTsK MTQ0NzQ6ICBmbG9hdCBhY3RpdmVfZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV9tYXJnaW5feTsK MTQ0NzQ6ICBmbG9hdCBkcHBvcHBfYnVmZmVyaW5nX2M7CjE0NDc0OiAgZmxvYXQgbWF4X2RldF9i dWZmZXJpbmdfdGltZV9jOwoxNDQ3NDogIGZsb2F0IGFjdGl2ZV9kcmFtX2Nsb2NrX2NoYW5nZV9s YXRlbmN5X21hcmdpbl9jOwoxNDQ3NDogIGZsb2F0IHdyaXRlYmFja19kcmFtX2Nsb2NrX2NoYW5n ZV9sYXRlbmN5X21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCBtaW5fYWN0aXZlX2RyYW1fY2xvY2tfY2hh bmdlX21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCB2X2JsYW5rX29mX21pbl9hY3RpdmVfZHJhbV9jbG9j a19jaGFuZ2VfbWFyZ2luOwoxNDQ3NDogIGZsb2F0IHNlY29uZF9taW5fYWN0aXZlX2RyYW1fY2xv Y2tfY2hhbmdlX21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCBtaW5fdmJsYW5rX2RyYW1fY2xvY2tfY2hh bmdlX21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCBkcmFtX2Nsb2NrX2NoYW5nZV9tYXJnaW47CjE0NDc0 OiAgZmxvYXQgZHJhbV9jbG9ja19jaGFuZ2Vfc3VwcG9ydDsKMTQ0NzQ6ICBmbG9hdCB3cl9iYW5k d2lkdGg7CjE0NDc0OiAgZmxvYXQgbWF4X3VzZWRfYnc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZGNuX3NvY19ib3VuZGluZ19ib3ggewoxNDQ3NDogIGZsb2F0IHNyX2V4aXRfdGlt ZTsKMTQ0NzQ6ICBmbG9hdCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZTsKMTQ0NzQ6ICBmbG9hdCB1 cmdlbnRfbGF0ZW5jeTsKMTQ0NzQ6ICBmbG9hdCB3cml0ZV9iYWNrX2xhdGVuY3k7CjE0NDc0OiAg ZmxvYXQgcGVyY2VudF9vZl9pZGVhbF9kcmFtYndfcmVjZWl2ZWRfYWZ0ZXJfdXJnX2xhdGVuY3k7 CjE0NDc0OiAgaW50IG1heF9yZXF1ZXN0X3NpemU7CjE0NDc0OiAgZmxvYXQgZGNmY2xrdl9tYXgw cDk7CjE0NDc0OiAgZmxvYXQgZGNmY2xrdl9ub20wcDg7CjE0NDc0OiAgZmxvYXQgZGNmY2xrdl9t aWQwcDcyOwoxNDQ3NDogIGZsb2F0IGRjZmNsa3ZfbWluMHA2NTsKMTQ0NzQ6ICBmbG9hdCBtYXhf ZGlzcGNsa192bWF4MHA5OwoxNDQ3NDogIGZsb2F0IG1heF9kaXNwY2xrX3ZtaWQwcDcyOwoxNDQ3 NDogIGZsb2F0IG1heF9kaXNwY2xrX3Zub20wcDg7CjE0NDc0OiAgZmxvYXQgbWF4X2Rpc3BjbGtf dm1pbjBwNjU7CjE0NDc0OiAgZmxvYXQgbWF4X2RwcGNsa192bWF4MHA5OwoxNDQ3NDogIGZsb2F0 IG1heF9kcHBjbGtfdm5vbTBwODsKMTQ0NzQ6ICBmbG9hdCBtYXhfZHBwY2xrX3ZtaWQwcDcyOwox NDQ3NDogIGZsb2F0IG1heF9kcHBjbGtfdm1pbjBwNjU7CjE0NDc0OiAgZmxvYXQgc29jY2xrOwox NDQ3NDogIGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhfdm1heDBwOTsKMTQ0NzQ6ICBm bG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdpZHRoX3Zub20wcDg7CjE0NDc0OiAgZmxvYXQgZmFi cmljX2FuZF9kcmFtX2JhbmR3aWR0aF92bWlkMHA3MjsKMTQ0NzQ6ICBmbG9hdCBmYWJyaWNfYW5k X2RyYW1fYmFuZHdpZHRoX3ZtaW4wcDY1OwoxNDQ3NDogIGZsb2F0IHBoeWNsa3ZfbWF4MHA5Owox NDQ3NDogIGZsb2F0IHBoeWNsa3Zfbm9tMHA4OwoxNDQ3NDogIGZsb2F0IHBoeWNsa3ZfbWlkMHA3 MjsKMTQ0NzQ6ICBmbG9hdCBwaHljbGt2X21pbjBwNjU7CjE0NDc0OiAgZmxvYXQgZG93bnNwcmVh ZGluZzsKMTQ0NzQ6ICBpbnQgcm91bmRfdHJpcF9waW5nX2xhdGVuY3lfY3ljbGVzOwoxNDQ3NDog IGludCB1cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbDsKMTQ0NzQ6ICBpbnQg bnVtYmVyX29mX2NoYW5uZWxzOwoxNDQ3NDogIGludCB2bW1fcGFnZV9zaXplOwoxNDQ3NDogIGZs b2F0IGRyYW1fY2xvY2tfY2hhbmdlX2xhdGVuY3k7CjE0NDc0OiAgaW50IHJldHVybl9idXNfd2lk dGg7CjE0NDc0OiAgZmxvYXQgcGVyY2VudF9kaXNwX2J3X2xpbWl0OwoxNDQ3NDogfTsKMTQ0NzQ6 IGV4dGVybiBjb25zdCBzdHJ1Y3QgZGNuX3NvY19ib3VuZGluZ19ib3ggZGNuMTBfc29jX2RlZmF1 bHRzOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNuX2lwX3BhcmFtcyB7CjE0NDc0OiAgZmxvYXQg cm9iX2J1ZmZlcl9zaXplX2luX2tieXRlOwoxNDQ3NDogIGZsb2F0IGRldF9idWZmZXJfc2l6ZV9p bl9rYnl0ZTsKMTQ0NzQ6ICBmbG9hdCBkcHBfb3V0cHV0X2J1ZmZlcl9waXhlbHM7CjE0NDc0OiAg ZmxvYXQgb3BwX291dHB1dF9idWZmZXJfbGluZXM7CjE0NDc0OiAgZmxvYXQgcGl4ZWxfY2h1bmtf c2l6ZV9pbl9rYnl0ZTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIHB0ZV9lbmFibGU7CjE0NDc0 OiAgaW50IHB0ZV9jaHVua19zaXplOwoxNDQ3NDogIGludCBtZXRhX2NodW5rX3NpemU7CjE0NDc0 OiAgaW50IHdyaXRlYmFja19jaHVua19zaXplOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgb2Rt X2NhcGFiaWxpdHk7CjE0NDc0OiAgZW51bSBkY25fYndfZGVmcyBkc2NfY2FwYWJpbGl0eTsKMTQ0 NzQ6ICBpbnQgbGluZV9idWZmZXJfc2l6ZTsKMTQ0NzQ6ICBpbnQgbWF4X2xpbmVfYnVmZmVyX2xp bmVzOwoxNDQ3NDogIGVudW0gZGNuX2J3X2RlZnMgaXNfbGluZV9idWZmZXJfYnBwX2ZpeGVkOwox NDQ3NDogIGludCBsaW5lX2J1ZmZlcl9maXhlZF9icHA7CjE0NDc0OiAgaW50IHdyaXRlYmFja19s dW1hX2J1ZmZlcl9zaXplOwoxNDQ3NDogIGludCB3cml0ZWJhY2tfY2hyb21hX2J1ZmZlcl9zaXpl OwoxNDQ3NDogIGludCBtYXhfbnVtX2RwcDsKMTQ0NzQ6ICBpbnQgbWF4X251bV93cml0ZWJhY2s7 CjE0NDc0OiAgaW50IG1heF9kY2h1Yl90b3BzY2xfdGhyb3VnaHB1dDsKMTQ0NzQ6ICBpbnQgbWF4 X3BzY2xfdG9sYl90aHJvdWdocHV0OwoxNDQ3NDogIGludCBtYXhfbGJfdG92c2NsX3Rocm91Z2hw dXQ7CjE0NDc0OiAgaW50IG1heF92c2NsX3RvaHNjbF90aHJvdWdocHV0OwoxNDQ3NDogIGZsb2F0 IG1heF9oc2NsX3JhdGlvOwoxNDQ3NDogIGZsb2F0IG1heF92c2NsX3JhdGlvOwoxNDQ3NDogIGlu dCBtYXhfaHNjbF90YXBzOwoxNDQ3NDogIGludCBtYXhfdnNjbF90YXBzOwoxNDQ3NDogIGludCBw dGVfYnVmZmVyX3NpemVfaW5fcmVxdWVzdHM7CjE0NDc0OiAgZmxvYXQgZGlzcGNsa19yYW1waW5n X21hcmdpbjsKMTQ0NzQ6ICBmbG9hdCB1bmRlcl9zY2FuX2ZhY3RvcjsKMTQ0NzQ6ICBpbnQgbWF4 X2ludGVyX2Rjbl90aWxlX3JlcGVhdGVyczsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGNhbl92 c3RhcnR1cF9saW5lc19leGNlZWRfdnN5bmNfcGx1c19iYWNrX3BvcmNoX2xpbmVzX21pbnVzX29u ZTsKMTQ0NzQ6ICBlbnVtIGRjbl9id19kZWZzIGJ1Z19mb3JjaW5nX2x1bWFfYW5kX2Nocm9tYV9y ZXF1ZXN0X3RvX3NhbWVfc2l6ZV9maXhlZDsKMTQ0NzQ6ICBpbnQgZGNmY2xrX2NzdGF0ZV9sYXRl bmN5OwoxNDQ3NDogfTsKMTQ0NzQ6IGV4dGVybiBjb25zdCBzdHJ1Y3QgZGNuX2lwX3BhcmFtcyBk Y24xMF9pcF9kZWZhdWx0czsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkY25fdmFsaWRhdGVfYmFuZHdp ZHRoKAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNv bnRleHQsCjE0NDc0OiAgIGJvb2wgZmFzdF92YWxpZGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6IHVuc2ln bmVkIGludCBkY25fZmluZF9kY2ZjbGtfc3VpdHNfYWxsKAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBk YyAqZGMsCjE0NDc0OiAgc3RydWN0IGRjX2Nsb2NrcyAqY2xvY2tzKTsKMTQ0NzQ6IAoxNDQ3NDog dm9pZCBkY25fYndfdXBkYXRlX2Zyb21fcHBsaWIoc3RydWN0IGRjICpkYyk7CjE0NDc0OiB2b2lk IGRjbl9id19ub3RpZnlfcHBsaWJfb2Zfd21fcmFuZ2VzKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDog dm9pZCBkY25fYndfc3luY19jYWxjc19hbmRfZG1sKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDogCjE0 NDc0OiBlbnVtIHNvdXJjZV9tYWNyb190aWxlX3NpemUgc3dpenpsZV9tb2RlX3RvX21hY3JvX3Rp bGVfc2l6ZShlbnVtIHN3aXp6bGVfbW9kZV92YWx1ZXMgc3dfbW9kZSk7CjE0NDc0OiAjIDMyICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMu aCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv aW5jbHVkZS9kZGNfc2VydmljZV90eXBlcy5oIiAxCjE0NDc0OiAjIDM3ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9kZGNfc2VydmljZV90eXBlcy5oIgox NDQ3NDogZW51bSBkZGNfcmVzdWx0IHsKMTQ0NzQ6ICBERENfUkVTVUxUX1VOS05PV04gPSAwLAox NDQ3NDogIEREQ19SRVNVTFRfU1VDRVNTRlVMTCwKMTQ0NzQ6ICBERENfUkVTVUxUX0ZBSUxFRF9D SEFOTkVMX0JVU1ksCjE0NDc0OiAgRERDX1JFU1VMVF9GQUlMRURfVElNRU9VVCwKMTQ0NzQ6ICBE RENfUkVTVUxUX0ZBSUxFRF9QUk9UT0NPTF9FUlJPUiwKMTQ0NzQ6ICBERENfUkVTVUxUX0ZBSUxF RF9OQUNLLAoxNDQ3NDogIEREQ19SRVNVTFRfRkFJTEVEX0lOQ09NUExFVEUsCjE0NDc0OiAgRERD X1JFU1VMVF9GQUlMRURfT1BFUkFUSU9OLAoxNDQ3NDogIEREQ19SRVNVTFRfRkFJTEVEX0lOVkFM SURfT1BFUkFUSU9OLAoxNDQ3NDogIEREQ19SRVNVTFRfRkFJTEVEX0JVRkZFUl9PVkVSRkxPVywK MTQ0NzQ6ICBERENfUkVTVUxUX0ZBSUxFRF9IUERfRElTQ09OCjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBlbnVtIGRkY19zZXJ2aWNlX3R5cGUgewoxNDQ3NDogIEREQ19TRVJWSUNFX1RZUEVfQ09O TkVDVE9SLAoxNDQ3NDogIEREQ19TRVJWSUNFX1RZUEVfRElTUExBWV9QT1JUX01TVCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkaXNwbGF5 X3NpbmtfY2FwYWJpbGl0eSB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5 cGUgZG9uZ2xlX3R5cGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogIHVpbnQzMl90IGRvd25zdHJtX3NpbmtfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIGJvb2wgZG93bnN0cm1fc2lua19jb3VudF92YWxpZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgdWludDMyX3QgYWRkaXRpb25hbF9hdWRpb19kZWxheTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQz Ml90IGF1ZGlvX2xhdGVuY3k7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCB2aWRlb19sYXRlbmN5 X2ludGVybGFjZTsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IHZpZGVvX2xhdGVuY3lfcHJvZ3Jl c3NpdmU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBtYXhfaGRtaV9waXhlbF9jbG9jazsKMTQ0 NzQ6IAoxNDQ3NDogIGVudW0gZGNfY29sb3JfZGVwdGggbWF4X2hkbWlfZGVlcF9jb2xvcjsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBzc19zdXBw b3J0ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBkcF9saW5rX2xhbmVfY291bnQ7CjE0NDc0 OiAgdWludDMyX3QgZHBfbGlua19yYXRlOwoxNDQ3NDogIHVpbnQzMl90IGRwX2xpbmtfc3BlYWQ7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBpc19kcF9oZG1pX3MzZF9jb252 ZXJ0ZXI7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgaXNfZWRwX3NpbmtfY2FwX3ZhbGlk OwoxNDQ3NDogCjE0NDc0OiAgZW51bSBkZGNfdHJhbnNhY3Rpb25fdHlwZSB0cmFuc2FjdGlvbl90 eXBlOwoxNDQ3NDogIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGF2X3N5bmNfZGF0YSB7CjE0NDc0OiAgdWludDhfdCBhdl9ncmFudWxhcml0 eTsKMTQ0NzQ6ICB1aW50OF90IGF1ZF9kZWNfbGF0MTsKMTQ0NzQ6ICB1aW50OF90IGF1ZF9kZWNf bGF0MjsKMTQ0NzQ6ICB1aW50OF90IGF1ZF9wcF9sYXQxOwoxNDQ3NDogIHVpbnQ4X3QgYXVkX3Bw X2xhdDI7CjE0NDc0OiAgdWludDhfdCB2aWRfaW50ZXJfbGF0OwoxNDQ3NDogIHVpbnQ4X3Qgdmlk X3Byb2dfbGF0OwoxNDQ3NDogIHVpbnQ4X3QgYXVkX2RlbF9pbnMxOwoxNDQ3NDogIHVpbnQ4X3Qg YXVkX2RlbF9pbnMyOwoxNDQ3NDogIHVpbnQ4X3QgYXVkX2RlbF9pbnMzOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgY29uc3QgdWludDhfdCBEUF9WR0FfTFZEU19DT05W RVJURVJfSURfMltdID0gInNpdmFyVCI7CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyBjb25zdCB1aW50 OF90IERQX1ZHQV9MVkRTX0NPTlZFUlRFUl9JRF8zW10gPSAiZG5vbWxBIjsKMTQ0NzQ6IAoxNDQ3 NDogc3RhdGljIGNvbnN0IHVpbnQ4X3QgRFBfRFZJX0NPTlZFUlRFUl9JRF80W10gPSAibTJEVklh IjsKMTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9pbmMvY29yZV90eXBlcy5oIiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tZW1faW5wdXQuaCIgMQoxNDQ3NDog IyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9t ZW1faW5wdXQuaCIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfc3RydWN0cy5oIiAxCjE0NDc0OiAjIDMyICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21lbV9pbnB1dC5o IiAyCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY2h1Yl9pbml0X2RhdGE7CjE0NDc0OiBzdHJ1Y3Qg Y3N0YXRlX3BzdGF0ZV93YXRlcm1hcmtzX3N0IHsKMTQ0NzQ6ICB1aW50MzJfdCBjc3RhdGVfZXhp dF9uczsKMTQ0NzQ6ICB1aW50MzJfdCBjc3RhdGVfZW50ZXJfcGx1c19leGl0X25zOwoxNDQ3NDog IHVpbnQzMl90IHBzdGF0ZV9jaGFuZ2VfbnM7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgZGNuX3dhdGVybWFya3MgewoxNDQ3NDogIHVpbnQzMl90IHB0ZV9tZXRhX3VyZ2VudF9uczsK MTQ0NzQ6ICB1aW50MzJfdCB1cmdlbnRfbnM7CjE0NDc0OiAgdWludDMyX3QgZnJhY191cmdfYndf bm9tOwoxNDQ3NDogIHVpbnQzMl90IGZyYWNfdXJnX2J3X2ZsaXA7CjE0NDc0OiAgaW50MzJfdCB1 cmdlbnRfbGF0ZW5jeV9uczsKMTQ0NzQ6ICBzdHJ1Y3QgY3N0YXRlX3BzdGF0ZV93YXRlcm1hcmtz X3N0IGNzdGF0ZV9wc3RhdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNuX3dh dGVybWFya19zZXQgewoxNDQ3NDogIHN0cnVjdCBkY25fd2F0ZXJtYXJrcyBhOwoxNDQ3NDogIHN0 cnVjdCBkY25fd2F0ZXJtYXJrcyBiOwoxNDQ3NDogIHN0cnVjdCBkY25fd2F0ZXJtYXJrcyBjOwox NDQ3NDogIHN0cnVjdCBkY25fd2F0ZXJtYXJrcyBkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog c3RydWN0IGRjZV93YXRlcm1hcmtzIHsKMTQ0NzQ6ICBpbnQgYV9tYXJrOwoxNDQ3NDogIGludCBi X21hcms7CjE0NDc0OiAgaW50IGNfbWFyazsKMTQ0NzQ6ICBpbnQgZF9tYXJrOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHN0dXR0ZXJfbW9kZXMgewoxNDQ3NDogIGJvb2wgZW5oYW5j ZWQ7CjE0NDc0OiAgYm9vbCBxdWFkX2RtaWZfYnVmZmVyOwoxNDQ3NDogIGJvb2wgd2F0ZXJtYXJr X25iX3BzdGF0ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtZW1faW5wdXQgewox NDQ3NDogIGNvbnN0IHN0cnVjdCBtZW1faW5wdXRfZnVuY3MgKmZ1bmNzOwoxNDQ3NDogIHN0cnVj dCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgc3RydWN0IGRjX3BsYW5lX2FkZHJlc3MgcmVxdWVz dF9hZGRyZXNzOwoxNDQ3NDogIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIGN1cnJlbnRfYWRkcmVz czsKMTQ0NzQ6ICBpbnQgaW5zdDsKMTQ0NzQ6ICBzdHJ1Y3Qgc3R1dHRlcl9tb2RlcyBzdHV0dGVy X21vZGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgdm1fc3lzdGVtX2FwZXJ0dXJl X3BhcmFtIHsKMTQ0NzQ6ICB1bmlvbiBsYXJnZV9pbnRlZ2VyIHN5c19kZWZhdWx0OwoxNDQ3NDog IHVuaW9uIGxhcmdlX2ludGVnZXIgc3lzX2xvdzsKMTQ0NzQ6ICB1bmlvbiBsYXJnZV9pbnRlZ2Vy IHN5c19oaWdoOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHZtX2NvbnRleHQwX3Bh cmFtIHsKMTQ0NzQ6ICB1bmlvbiBsYXJnZV9pbnRlZ2VyIHB0ZV9iYXNlOwoxNDQ3NDogIHVuaW9u IGxhcmdlX2ludGVnZXIgcHRlX3N0YXJ0OwoxNDQ3NDogIHVuaW9uIGxhcmdlX2ludGVnZXIgcHRl X2VuZDsKMTQ0NzQ6ICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGZhdWx0X2RlZmF1bHQ7CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbWVtX2lucHV0X2Z1bmNzIHsKMTQ0NzQ6ICB2b2lkICgq bWVtX2lucHV0X3NldHVwKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwK MTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdzX3N0ICpkbGdfcmVncywK MTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0ICp0dHVfcmVncywK MTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX3JlZ3Nfc3QgKnJxX3JlZ3MsCjE0 NDc0OiAgICBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX2Rlc3RfcGFyYW1zX3N0ICpwaXBl X2Rlc3QpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRjY19jb250cm9sKShzdHJ1Y3QgbWVtX2lu cHV0ICptZW1faW5wdXQsIGJvb2wgZW5hYmxlLAoxNDQ3NDogICAgYm9vbCBpbmRlcGVuZGVudF82 NGJfYmxrcyk7CjE0NDc0OiAgdm9pZCAoKm1lbV9wcm9ncmFtX3ZpZXdwb3J0KSgKMTQ0NzQ6ICAg IHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCByZWN0 ICp2aWV3cG9ydCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCByZWN0ICp2aWV3cG9ydF9jKTsKMTQ0 NzQ6IAoxNDQ3NDogIHZvaWQgKCptZW1faW5wdXRfcHJvZ3JhbV9kaXNwbGF5X21hcmtzKSgKMTQ0 NzQ6ICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAoxNDQ3NDogICBzdHJ1Y3QgZGNlX3dh dGVybWFya3MgbmJwLAoxNDQ3NDogICBzdHJ1Y3QgZGNlX3dhdGVybWFya3Mgc3R1dHRlciwKMTQ0 NzQ6ICAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXJfZW50ZXIsCjE0NDc0OiAgIHN0cnVj dCBkY2Vfd2F0ZXJtYXJrcyB1cmdlbnQsCjE0NDc0OiAgIHVpbnQzMl90IHRvdGFsX2Rlc3RfbGlu ZV90aW1lX25zKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCptZW1faW5wdXRfcHJvZ3JhbV9jaHJv bWFfZGlzcGxheV9tYXJrcykoCjE0NDc0OiAgICBzdHJ1Y3QgbWVtX2lucHV0ICptZW1faW5wdXQs CjE0NDc0OiAgICBzdHJ1Y3QgZGNlX3dhdGVybWFya3MgbmJwLAoxNDQ3NDogICAgc3RydWN0IGRj ZV93YXRlcm1hcmtzIHN0dXR0ZXIsCjE0NDc0OiAgICBzdHJ1Y3QgZGNlX3dhdGVybWFya3MgdXJn ZW50LAoxNDQ3NDogICAgdWludDMyX3QgdG90YWxfZGVzdF9saW5lX3RpbWVfbnMpOwoxNDQ3NDog CjE0NDc0OiAgdm9pZCAoKmFsbG9jYXRlX21lbV9pbnB1dCkoCjE0NDc0OiAgIHN0cnVjdCBtZW1f aW5wdXQgKm1lbV9pbnB1dCwKMTQ0NzQ6ICAgdWludDMyX3QgaF90b3RhbCwKMTQ0NzQ6ICAgdWlu dDMyX3Qgdl90b3RhbCwKMTQ0NzQ6ICAgdWludDMyX3QgcGl4X2Nsa19raHosCjE0NDc0OiAgIHVp bnQzMl90IHRvdGFsX3N0cmVhbXNfbnVtKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpmcmVlX21l bV9pbnB1dCkoCjE0NDc0OiAgIHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwKMTQ0NzQ6ICAg dWludDMyX3QgcGF0aHNfbnVtKTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCptZW1faW5wdXRfcHJv Z3JhbV9zdXJmYWNlX2ZsaXBfYW5kX2FkZHIpKAoxNDQ3NDogICBzdHJ1Y3QgbWVtX2lucHV0ICpt ZW1faW5wdXQsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzICphZGRyZXNz LAoxNDQ3NDogICBib29sIGZsaXBfaW1tZWRpYXRlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpt ZW1faW5wdXRfcHJvZ3JhbV9wdGVfdm0pKAoxNDQ3NDogICBzdHJ1Y3QgbWVtX2lucHV0ICptZW1f aW5wdXQsCjE0NDc0OiAgIGVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQgZm9ybWF0LAoxNDQ3NDog ICB1bmlvbiBkY190aWxpbmdfaW5mbyAqdGlsaW5nX2luZm8sCjE0NDc0OiAgIGVudW0gZGNfcm90 YXRpb25fYW5nbGUgcm90YXRpb24pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKm1lbV9pbnB1dF9z ZXRfdm1fc3lzdGVtX2FwZXJ0dXJlX3NldHRpbmdzKSgKMTQ0NzQ6ICAgIHN0cnVjdCBtZW1faW5w dXQgKm1lbV9pbnB1dCwKMTQ0NzQ6ICAgIHN0cnVjdCB2bV9zeXN0ZW1fYXBlcnR1cmVfcGFyYW0g KmFwdCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqbWVtX2lucHV0X3NldF92bV9jb250ZXh0MF9z ZXR0aW5ncykoCjE0NDc0OiAgICBzdHJ1Y3QgbWVtX2lucHV0ICptZW1faW5wdXQsCjE0NDc0OiAg ICBjb25zdCBzdHJ1Y3Qgdm1fY29udGV4dDBfcGFyYW0gKnZtMCk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqbWVtX2lucHV0X3Byb2dyYW1fc3VyZmFjZV9jb25maWcpKAoxNDQ3NDogICBzdHJ1Y3Qg bWVtX2lucHV0ICptZW1faW5wdXQsCjE0NDc0OiAgIGVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQg Zm9ybWF0LAoxNDQ3NDogICB1bmlvbiBkY190aWxpbmdfaW5mbyAqdGlsaW5nX2luZm8sCjE0NDc0 OiAgIHN0cnVjdCBwbGFuZV9zaXplICpwbGFuZV9zaXplLAoxNDQ3NDogICBlbnVtIGRjX3JvdGF0 aW9uX2FuZ2xlIHJvdGF0aW9uLAoxNDQ3NDogICBzdHJ1Y3QgZGNfcGxhbmVfZGNjX3BhcmFtICpk Y2MsCjE0NDc0OiAgIGJvb2wgaG9yaXpvbnRhbF9taXJyb3IpOwoxNDQ3NDogCjE0NDc0OiAgYm9v bCAoKm1lbV9pbnB1dF9pc19mbGlwX3BlbmRpbmcpKHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1 dCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqbWVtX2lucHV0X3VwZGF0ZV9kY2h1Yikoc3RydWN0 IG1lbV9pbnB1dCAqbWVtX2lucHV0LAoxNDQ3NDogICAgIHN0cnVjdCBkY2h1Yl9pbml0X2RhdGEg KmRoX2RhdGEpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9ibGFuaykoc3RydWN0IG1lbV9p bnB1dCAqbWksIGJvb2wgYmxhbmspOwoxNDQ3NDogIHZvaWQgKCpzZXRfaHVicF9ibGFua19lbiko c3RydWN0IG1lbV9pbnB1dCAqbWksIGJvb2wgYmxhbmspOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAo KnNldF9jdXJzb3JfYXR0cmlidXRlcykoCjE0NDc0OiAgICBzdHJ1Y3QgbWVtX2lucHV0ICptZW1f aW5wdXQsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgKmF0dHIp OwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9jdXJzb3JfcG9zaXRpb24pKAoxNDQ3NDogICAg c3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IGRjX2N1 cnNvcl9wb3NpdGlvbiAqcG9zLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9taV9w YXJhbSAqcGFyYW0pOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogIyAzNSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgiIDIKMTQ0NzQ6 ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9o dWJwLmgiIDEKMTQ0NzQ6ICMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvaHcvaHVicC5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21lbV9pbnB1dC5oIiAxCjE0NDc0OiAjIDMwICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2h1YnAuaCIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGN1cnNvcl9waXRj aCB7CjE0NDc0OiAgQ1VSU09SX1BJVENIXzY0X1BJWEVMUyA9IDAsCjE0NDc0OiAgQ1VSU09SX1BJ VENIXzEyOF9QSVhFTFMsCjE0NDc0OiAgQ1VSU09SX1BJVENIXzI1Nl9QSVhFTFMKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gY3Vyc29yX2xpbmVzX3Blcl9jaHVuayB7CjE0NDc0OiAgQ1VS U09SX0xJTkVfUEVSX0NIVU5LXzEgPSAwLAoxNDQ3NDogIENVUlNPUl9MSU5FX1BFUl9DSFVOS18y ID0gMSwKMTQ0NzQ6ICBDVVJTT1JfTElORV9QRVJfQ0hVTktfNCwKMTQ0NzQ6ICBDVVJTT1JfTElO RV9QRVJfQ0hVTktfOCwKMTQ0NzQ6ICBDVVJTT1JfTElORV9QRVJfQ0hVTktfMTYKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gaHVicF9pbmRfYmxvY2tfc2l6ZSB7CjE0NDc0OiAgaHVicF9p bmRfYmxvY2tfdW5jb25zdHJhaW5lZCA9IDAsCjE0NDc0OiAgaHVicF9pbmRfYmxvY2tfNjRiLAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGh1YnAgewoxNDQ3NDogIGNvbnN0IHN0cnVj dCBodWJwX2Z1bmNzICpmdW5jczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3 NDogIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIHJlcXVlc3RfYWRkcmVzczsKMTQ0NzQ6ICBpbnQg aW5zdDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgaW50IG9wcF9pZDsKMTQ0NzQ6ICBpbnQgbXBj Y19pZDsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgY3Vyc19hdHRyOwoxNDQ3 NDogIGJvb2wgcG93ZXJfZ2F0ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgc3Vy ZmFjZV9mbGlwX3JlZ2lzdGVycyB7CjE0NDc0OiAgdWludDMyX3QgRENTVVJGX1NVUkZBQ0VfQ09O VFJPTDsKMTQ0NzQ6ICB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9NRVRBX1NVUkZBQ0VfQUREUkVT U19ISUdIOwoxNDQ3NDogIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX01FVEFfU1VSRkFDRV9BRERS RVNTOwoxNDQ3NDogIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX1NVUkZBQ0VfQUREUkVTU19ISUdI OwoxNDQ3NDogIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX1NVUkZBQ0VfQUREUkVTUzsKMTQ0NzQ6 ICB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9NRVRBX1NVUkZBQ0VfQUREUkVTU19ISUdIX0M7CjE0 NDc0OiAgdWludDMyX3QgRENTVVJGX1BSSU1BUllfTUVUQV9TVVJGQUNFX0FERFJFU1NfQzsKMTQ0 NzQ6ICB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9TVVJGQUNFX0FERFJFU1NfSElHSF9DOwoxNDQ3 NDogIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX1NVUkZBQ0VfQUREUkVTU19DOwoxNDQ3NDogIHVp bnQzMl90IERDU1VSRl9TRUNPTkRBUllfTUVUQV9TVVJGQUNFX0FERFJFU1NfSElHSDsKMTQ0NzQ6 ICB1aW50MzJfdCBEQ1NVUkZfU0VDT05EQVJZX01FVEFfU1VSRkFDRV9BRERSRVNTOwoxNDQ3NDog IHVpbnQzMl90IERDU1VSRl9TRUNPTkRBUllfU1VSRkFDRV9BRERSRVNTX0hJR0g7CjE0NDc0OiAg dWludDMyX3QgRENTVVJGX1NFQ09OREFSWV9TVVJGQUNFX0FERFJFU1M7CjE0NDc0OiAgYm9vbCB0 bXpfc3VyZmFjZTsKMTQ0NzQ6ICBib29sIGltbWVkaWF0ZTsKMTQ0NzQ6ICB1aW50OF90IHZtaWQ7 CjE0NDc0OiAgYm9vbCBncnBoX3N0ZXJlbzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBodWJwX2Z1bmNzIHsKMTQ0NzQ6ICB2b2lkICgqaHVicF9zZXR1cCkoCjE0NDc0OiAgICBzdHJ1 Y3QgaHVicCAqaHVicCwKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdz X3N0ICpkbGdfcmVncywKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdz X3N0ICp0dHVfcmVncywKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX3JlZ3Nf c3QgKnJxX3JlZ3MsCjE0NDc0OiAgICBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX2Rlc3Rf cGFyYW1zX3N0ICpwaXBlX2Rlc3QpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmh1YnBfc2V0dXBf aW50ZXJkZXBlbmRlbnQpKAoxNDQ3NDogICAgc3RydWN0IGh1YnAgKmh1YnAsCjE0NDc0OiAgICBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kbGdfcmVnc19zdCAqZGxnX3JlZ3MsCjE0NDc0OiAgICBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV90dHVfcmVnc19zdCAqdHR1X3JlZ3MpOwoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKmRjY19jb250cm9sKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9vbCBlbmFibGUs CjE0NDc0OiAgICBlbnVtIGh1YnBfaW5kX2Jsb2NrX3NpemUgYmxrX3NpemUpOwoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKm1lbV9wcm9ncmFtX3ZpZXdwb3J0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBodWJw ICpodWJwLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IHJlY3QgKnZpZXdwb3J0LAoxNDQ3NDogICAg Y29uc3Qgc3RydWN0IHJlY3QgKnZpZXdwb3J0X2MpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmFw cGx5X1BMQVRfNTQxODZfd2EpKHN0cnVjdCBodWJwICpodWJwLAoxNDQ3NDogICAgY29uc3Qgc3Ry dWN0IGRjX3BsYW5lX2FkZHJlc3MgKmFkZHJlc3MpOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmh1 YnBfcHJvZ3JhbV9zdXJmYWNlX2ZsaXBfYW5kX2FkZHIpKAoxNDQ3NDogICBzdHJ1Y3QgaHVicCAq aHVicCwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3BsYW5lX2FkZHJlc3MgKmFkZHJlc3MsCjE0 NDc0OiAgIGJvb2wgZmxpcF9pbW1lZGlhdGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmh1YnBf cHJvZ3JhbV9wdGVfdm0pKAoxNDQ3NDogICBzdHJ1Y3QgaHVicCAqaHVicCwKMTQ0NzQ6ICAgZW51 bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQsCjE0NDc0OiAgIHVuaW9uIGRjX3RpbGluZ19p bmZvICp0aWxpbmdfaW5mbywKMTQ0NzQ6ICAgZW51bSBkY19yb3RhdGlvbl9hbmdsZSByb3RhdGlv bik7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaHVicF9zZXRfdm1fc3lzdGVtX2FwZXJ0dXJlX3Nl dHRpbmdzKSgKMTQ0NzQ6ICAgIHN0cnVjdCBodWJwICpodWJwLAoxNDQ3NDogICAgc3RydWN0IHZt X3N5c3RlbV9hcGVydHVyZV9wYXJhbSAqYXB0KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpodWJw X3NldF92bV9jb250ZXh0MF9zZXR0aW5ncykoCjE0NDc0OiAgICBzdHJ1Y3QgaHVicCAqaHVicCwK MTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCB2bV9jb250ZXh0MF9wYXJhbSAqdm0wKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCpodWJwX3Byb2dyYW1fc3VyZmFjZV9jb25maWcpKAoxNDQ3NDogICBzdHJ1 Y3QgaHVicCAqaHVicCwKMTQ0NzQ6ICAgZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQs CjE0NDc0OiAgIHVuaW9uIGRjX3RpbGluZ19pbmZvICp0aWxpbmdfaW5mbywKMTQ0NzQ6ICAgc3Ry dWN0IHBsYW5lX3NpemUgKnBsYW5lX3NpemUsCjE0NDc0OiAgIGVudW0gZGNfcm90YXRpb25fYW5n bGUgcm90YXRpb24sCjE0NDc0OiAgIHN0cnVjdCBkY19wbGFuZV9kY2NfcGFyYW0gKmRjYywKMTQ0 NzQ6ICAgYm9vbCBob3Jpem9udGFsX21pcnJvciwKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IGNvbXBh X2xldmVsKTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCpodWJwX2lzX2ZsaXBfcGVuZGluZykoc3Ry dWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9ibGFuaykoc3RydWN0 IGh1YnAgKmh1YnAsIGJvb2wgYmxhbmspOwoxNDQ3NDogIHZvaWQgKCpzZXRfaHVicF9ibGFua19l bikoc3RydWN0IGh1YnAgKmh1YnAsIGJvb2wgYmxhbmspOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAo KnNldF9jdXJzb3JfYXR0cmlidXRlcykoCjE0NDc0OiAgICBzdHJ1Y3QgaHVicCAqaHVicCwKMTQ0 NzQ6ICAgIGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyAqYXR0cik7CjE0NDc0OiAK MTQ0NzQ6ICB2b2lkICgqc2V0X2N1cnNvcl9wb3NpdGlvbikoCjE0NDc0OiAgICBzdHJ1Y3QgaHVi cCAqaHVicCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfcG9zaXRpb24gKnBvcywK MTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfbWlfcGFyYW0gKnBhcmFtKTsKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCpodWJwX2Rpc2Nvbm5lY3QpKHN0cnVjdCBodWJwICpodWJwKTsKMTQ0 NzQ6IAoxNDQ3NDogIHZvaWQgKCpodWJwX2Nsa19jbnRsKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9v bCBlbmFibGUpOwoxNDQ3NDogIHZvaWQgKCpodWJwX3Z0Z19zZWwpKHN0cnVjdCBodWJwICpodWJw LCB1aW50MzJfdCBvdGdfaW5zdCk7CjE0NDc0OiAgdm9pZCAoKmh1YnBfcmVhZF9zdGF0ZSkoc3Ry dWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogIHZvaWQgKCpodWJwX2NsZWFyX3VuZGVyZmxvdykoc3Ry dWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogIHZvaWQgKCpodWJwX2Rpc2FibGVfY29udHJvbCkoc3Ry dWN0IGh1YnAgKmh1YnAsIGJvb2wgZGlzYWJsZV9odWJwKTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQg KCpodWJwX2dldF91bmRlcmZsb3dfc3RhdHVzKShzdHJ1Y3QgaHVicCAqaHVicCk7CjE0NDc0OiAg dm9pZCAoKmh1YnBfaW5pdCkoc3RydWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogCjE0NDc0OiAgdm9p ZCAoKmRtZGF0YV9zZXRfYXR0cmlidXRlcykoCjE0NDc0OiAgICBzdHJ1Y3QgaHVicCAqaHVicCwK MTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBkY19kbWRhdGFfYXR0cmlidXRlcyAqYXR0cik7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqZG1kYXRhX2xvYWQpKAoxNDQ3NDogICAgc3RydWN0IGh1YnAgKmh1 YnAsCjE0NDc0OiAgICB1aW50MzJfdCBkbWRhdGFfc3dfc2l6ZSwKMTQ0NzQ6ICAgIGNvbnN0IHVp bnQzMl90ICpkbWRhdGFfc3dfZGF0YSk7CjE0NDc0OiAgYm9vbCAoKmRtZGF0YV9zdGF0dXNfZG9u ZSkoc3RydWN0IGh1YnAgKmh1YnApOwoxNDQ3NDogIHZvaWQgKCpodWJwX2VuYWJsZV90cmlwbGVC dWZmZXIpKAoxNDQ3NDogICBzdHJ1Y3QgaHVicCAqaHVicCwKMTQ0NzQ6ICAgYm9vbCBlbmFibGUp OwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmh1YnBfaXNfdHJpcGxlYnVmZmVyX2VuYWJsZWQpKAox NDQ3NDogICBzdHJ1Y3QgaHVicCAqaHVicCk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaHVicF9z ZXRfZmxpcF9jb250cm9sX3N1cmZhY2VfZ3NsKSgKMTQ0NzQ6ICAgc3RydWN0IGh1YnAgKmh1YnAs CjE0NDc0OiAgIGJvb2wgZW5hYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCp2YWxpZGF0ZV9k bWxfb3V0cHV0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBodWJwICpodWJwLAoxNDQ3NDogICAgc3RydWN0 IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX3Jl Z3Nfc3QgKmRtbF9ycV9yZWdzLAoxNDQ3NDogICAgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGxn X3JlZ3Nfc3QgKmRtbF9kbGdfYXR0ciwKMTQ0NzQ6ICAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5 X3R0dV9yZWdzX3N0ICpkbWxfdHR1X2F0dHIpOwoxNDQ3NDogCjE0NDc0OiB9OwoxNDQ3NDogIyAz NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5 cGVzLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21wYy5oIiAxCjE0NDc0OiAjIDM4ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoxNDQ3NDog CjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9p bmMvaHcvZHdiLmgiIDEKMTQ0NzQ6ICMgMzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9pbmMvaHcvZHdiLmgiCjE0NDc0OiBzdHJ1Y3QgbWNpZl93YjsKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBkY2VfdmVyc2lvbjsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkd2Jfc3dfdmVy c2lvbiB7CjE0NDc0OiAgZHdiX3Zlcl8xXzAgPSAxLAoxNDQ3NDogIGR3Yl92ZXJfMl8wID0gMiwK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHdiX3NvdXJjZSB7CjE0NDc0OiAgZHdiX3Ny Y19zY2wgPSAwLAoxNDQ3NDogIGR3Yl9zcmNfYmxuZCwKMTQ0NzQ6ICBkd2Jfc3JjX2ZtdCwKMTQ0 NzQ6ICBkd2Jfc3JjX290ZzAgPSAweDEwMCwKMTQ0NzQ6ICBkd2Jfc3JjX290ZzEsCjE0NDc0OiAg ZHdiX3NyY19vdGcyLAoxNDQ3NDogIGR3Yl9zcmNfb3RnMywKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogZW51bSBkd2JfcGlwZSB7CjE0NDc0OiAgZHdiX3BpcGUwID0gMCwKMTQ0NzQ6 IAoxNDQ3NDogIGR3Yl9waXBlMSwKMTQ0NzQ6IAoxNDQ3NDogIGR3Yl9waXBlX21heF9udW0sCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGR3Yl9mcmFtZV9jYXB0dXJlX2VuYWJsZSB7CjE0 NDc0OiAgRFdCX0ZSQU1FX0NBUFRVUkVfRElTQUJMRSA9IDAsCjE0NDc0OiAgRFdCX0ZSQU1FX0NB UFRVUkVfRU5BQkxFID0gMSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gd2JzY2xfY29l Zl9maWx0ZXJfdHlwZV9zZWwgewoxNDQ3NDogIFdCU0NMX0NPRUZfTFVNQV9WRVJUX0ZJTFRFUiA9 IDAsCjE0NDc0OiAgV0JTQ0xfQ09FRl9DSFJPTUFfVkVSVF9GSUxURVIgPSAxLAoxNDQ3NDogIFdC U0NMX0NPRUZfTFVNQV9IT1JaX0ZJTFRFUiA9IDIsCjE0NDc0OiAgV0JTQ0xfQ09FRl9DSFJPTUFf SE9SWl9GSUxURVIgPSAzCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk d2Jfd2FybXVwX3BhcmFtcyB7CjE0NDc0OiAgYm9vbCB3YXJtdXBfZW47CjE0NDc0OiAgYm9vbCB3 YXJtdXBfbW9kZTsKMTQ0NzQ6ICBib29sIHdhcm11cF9kZXB0aDsKMTQ0NzQ6ICBpbnQgd2FybXVw X2RhdGE7CjE0NDc0OiAgaW50IHdhcm11cF93aWR0aDsKMTQ0NzQ6ICBpbnQgd2FybXVwX2hlaWdo dDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkd2JfY2FwcyB7CjE0NDc0OiAgZW51 bSBkY2VfdmVyc2lvbiBod192ZXJzaW9uOwoxNDQ3NDogIGVudW0gZHdiX3N3X3ZlcnNpb24gc3df dmVyc2lvbjsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbNl07CjE0NDc0OiAgdW5zaWdu ZWQgaW50IGFkYXB0ZXJfaWQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IG51bV9waXBlczsKMTQ0NzQ6 ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgc3VwcG9ydF9kd2IgOjE7CjE0NDc0OiAg IHVuc2lnbmVkIGludCBzdXBwb3J0X29nYW0gOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBzdXBw b3J0X3dic2NsIDoxOwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgc3VwcG9ydF9vY3NjIDoxOwoxNDQ3 NDogICB1bnNpZ25lZCBpbnQgc3VwcG9ydF9zdGVyZW8gOjE7CjE0NDc0OiAgfSBjYXBzOwoxNDQ3 NDogIHVuc2lnbmVkIGludCByZXNlcnZlZDJbOV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgZHdiYyB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGR3YmNfZnVuY3MgKmZ1bmNzOwoxNDQ3 NDogIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgaW50IGluc3Q7CjE0NDc0OiAgc3Ry dWN0IG1jaWZfd2IgKm1jaWY7CjE0NDc0OiAgYm9vbCBzdGF0dXM7CjE0NDc0OiAgaW50IGlucHV0 U3JjU2VsZWN0OwoxNDQ3NDogIGJvb2wgZHdiX291dHB1dF9ibGFjazsKMTQ0NzQ6ICBlbnVtIGRj X3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB0ZjsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX3NwYWNl IG91dHB1dF9jb2xvcl9zcGFjZTsKMTQ0NzQ6ICBib29sIGR3Yl9pc19lZmNfdHJhbnNpdGlvbjsK MTQ0NzQ6ICBib29sIGR3Yl9pc19kcmM7CjE0NDc0OiAgaW50IHdiX3NyY19wbGFuZV9pbnN0Owox NDQ3NDogIGJvb2wgdXBkYXRlX3ByaXZhY3ltYXNrOwoxNDQ3NDogIHVpbnQzMl90IG1hc2tfaWQ7 CjE0NDc0OiAgICAgICAgIGludCBvdGdfaW5zdDsKMTQ0NzQ6ICAgICAgICAgYm9vbCBtdmNfY2Zn OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGR3YmNfZnVuY3MgewoxNDQ3NDogIGJv b2wgKCpnZXRfY2FwcykoCjE0NDc0OiAgIHN0cnVjdCBkd2JjICpkd2JjLAoxNDQ3NDogICBzdHJ1 Y3QgZHdiX2NhcHMgKmNhcHMpOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmVuYWJsZSkoCjE0NDc0 OiAgIHN0cnVjdCBkd2JjICpkd2JjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfZHdiX3BhcmFtcyAqcGFy YW1zKTsKMTQ0NzQ6IAoxNDQ3NDogIGJvb2wgKCpkaXNhYmxlKShzdHJ1Y3QgZHdiYyAqZHdiYyk7 CjE0NDc0OiAKMTQ0NzQ6ICBib29sICgqdXBkYXRlKSgKMTQ0NzQ6ICAgc3RydWN0IGR3YmMgKmR3 YmMsCjE0NDc0OiAgIHN0cnVjdCBkY19kd2JfcGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogCjE0NDc0 OiAgYm9vbCAoKmlzX2VuYWJsZWQpKAoxNDQ3NDogICBzdHJ1Y3QgZHdiYyAqZHdiYyk7CjE0NDc0 OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X3N0ZXJlbykoCjE0NDc0OiAgIHN0cnVjdCBkd2JjICpkd2Jj LAoxNDQ3NDogICBzdHJ1Y3QgZHdiX3N0ZXJlb19wYXJhbXMgKnN0ZXJlb19wYXJhbXMpOwoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKnNldF9uZXdfY29udGVudCkoCjE0NDc0OiAgIHN0cnVjdCBkd2Jj ICpkd2JjLAoxNDQ3NDogICBib29sIGlzX25ld19jb250ZW50KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKnNldF93YXJtdXApKAoxNDQ3NDogICBzdHJ1Y3QgZHdiYyAqZHdiYywKMTQ0 NzQ6ICAgc3RydWN0IGR3Yl93YXJtdXBfcGFyYW1zICp3YXJtdXBfcGFyYW1zKTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAgYm9vbCAoKmdldF9kd2Jfc3RhdHVzKSgKMTQ0NzQ6ICAgc3RydWN0IGR3 YmMgKmR3YmMpOwoxNDQ3NDogIHZvaWQgKCpkd2Jfc2V0X3NjYWxlcikoCjE0NDc0OiAgIHN0cnVj dCBkd2JjICpkd2JjLAoxNDQ3NDogICBzdHJ1Y3QgZGNfZHdiX3BhcmFtcyAqcGFyYW1zKTsKMTQ0 NzQ6IH07CjE0NDc0OiAjIDQwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21jaWZfd2IuaCIgMQoxNDQ3NDogIyAzMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tY2lmX3di LmgiCjE0NDc0OiBlbnVtIG1taHViYnViX3diaWZfbW9kZSB7CjE0NDc0OiAgUEFDS0VEXzQ0NCA9 IDAsCjE0NDc0OiAgUEFDS0VEXzQ0NF9GUDE2ID0gMSwKMTQ0NzQ6ICBQTEFOQVJfNDIwXzhCUEMg PSAyLAoxNDQ3NDogIFBMQU5BUl80MjBfMTBCUEMgPSAzCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgbWNpZl9hcmJfcGFyYW1zIHsKMTQ0NzQ6IAoxNDQ3NDogIHVuc2lnbmVkIGludCB0 aW1lX3Blcl9waXhlbDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgY2xpX3dhdGVybWFya1s0XTsKMTQ0 NzQ6ICB1bnNpZ25lZCBpbnQgcHN0YXRlX3dhdGVybWFya1s0XTsKMTQ0NzQ6ICB1bnNpZ25lZCBp bnQgYXJiaXRyYXRpb25fc2xpY2U7CjE0NDc0OiAgdW5zaWduZWQgaW50IHNsaWNlX2xpbmVzOwox NDQ3NDogIHVuc2lnbmVkIGludCBtYXhfc2NhbGVkX3RpbWU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgbWNpZl9pcnFfcGFyYW1zIHsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc3dfaW50 X2VuOwoxNDQ3NDogIHVuc2lnbmVkIGludCBzd19zbGljZV9pbnRfZW47CjE0NDc0OiAgdW5zaWdu ZWQgaW50IHN3X292ZXJydW5faW50X2VuOwoxNDQ3NDogIHVuc2lnbmVkIGludCB2Y2VfaW50X2Vu OwoxNDQ3NDogIHVuc2lnbmVkIGludCB2Y2Vfc2xpY2VfaW50X2VuOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBtY2lmX3diX2ZyYW1lX2R1bXBfaW5mbyB7 CjE0NDc0OiAgdW5zaWduZWQgaW50IHNpemU7CjE0NDc0OiAgdW5zaWduZWQgaW50IHdpZHRoOwox NDQ3NDogIHVuc2lnbmVkIGludCBoZWlnaHQ7CjE0NDc0OiAgdW5zaWduZWQgaW50IGx1bWFfcGl0 Y2g7CjE0NDc0OiAgdW5zaWduZWQgaW50IGNocm9tYV9waXRjaDsKMTQ0NzQ6ICBlbnVtIGR3Yl9z Y2FsZXJfbW9kZSBmb3JtYXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgbWNpZl93 YiB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IG1jaWZfd2JfZnVuY3MgKmZ1bmNzOwoxNDQ3NDogIHN0 cnVjdCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgaW50IGluc3Q7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgbWNpZl93Yl9mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZW5h YmxlX21jaWYpKHN0cnVjdCBtY2lmX3diICptY2lmX3diKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQg KCpkaXNhYmxlX21jaWYpKHN0cnVjdCBtY2lmX3diICptY2lmX3diKTsKMTQ0NzQ6IAoxNDQ3NDog IHZvaWQgKCpjb25maWdfbWNpZl9idWYpKAoxNDQ3NDogICBzdHJ1Y3QgbWNpZl93YiAqbWNpZl93 YiwKMTQ0NzQ6ICAgc3RydWN0IG1jaWZfYnVmX3BhcmFtcyAqcGFyYW1zLAoxNDQ3NDogICB1bnNp Z25lZCBpbnQgZGVzdF9oZWlnaHQpOwoxNDQ3NDogCjE0NDc0OiAgIHZvaWQgKCpjb25maWdfbWNp Zl9hcmIpKAoxNDQ3NDogICBzdHJ1Y3QgbWNpZl93YiAqbWNpZl93YiwKMTQ0NzQ6ICAgc3RydWN0 IG1jaWZfYXJiX3BhcmFtcyAqcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogICB2b2lkICgqY29uZmln X21jaWZfaXJxKSgKMTQ0NzQ6ICAgc3RydWN0IG1jaWZfd2IgKm1jaWZfd2IsCjE0NDc0OiAgIHN0 cnVjdCBtY2lmX2lycV9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHVt cF9mcmFtZSkoCjE0NDc0OiAgIHN0cnVjdCBtY2lmX3diICptY2lmX3diLAoxNDQ3NDogICBzdHJ1 Y3QgbWNpZl9idWZfcGFyYW1zICptY2lmX3BhcmFtcywKMTQ0NzQ6ICAgZW51bSBkd2Jfc2NhbGVy X21vZGUgb3V0X2Zvcm1hdCwKMTQ0NzQ6ICAgdW5zaWduZWQgaW50IGRlc3Rfd2lkdGgsCjE0NDc0 OiAgIHVuc2lnbmVkIGludCBkZXN0X2hlaWdodCwKMTQ0NzQ6ICAgc3RydWN0IG1jaWZfd2JfZnJh bWVfZHVtcF9pbmZvICpkdW1wX2luZm8sCjE0NDc0OiAgIHVuc2lnbmVkIGNoYXIgKmx1bWFfYnVm ZmVyLAoxNDQ3NDogICB1bnNpZ25lZCBjaGFyICpjaHJvbWFfYnVmZmVyLAoxNDQ3NDogICB1bnNp Z25lZCBjaGFyICpkZXN0X2x1bWFfYnVmZmVyLAoxNDQ3NDogICB1bnNpZ25lZCBjaGFyICpkZXN0 X2Nocm9tYV9idWZmZXIpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNDEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIGVuYWJsZV9zdXJmYWNlX2ZsaXBfcmVwb3J0aW5nKHN0 cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCjE0NDc0OiAgIHVpbnQzMl90IGNvbnRy b2xsZXJfaWQpOwoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiIDEKMTQ0NzQ6ICMgNDggIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5o IiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9pbmMvaHcvbGlua19lbmNvZGVyLmgiIDEKMTQ0NzQ6ICMgNDkgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCjE0NDc0OiAjIDEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvc3RyZWFt X2VuY29kZXIuaCIgMQoxNDQ3NDogIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9ody9zdHJlYW1fZW5jb2Rlci5oIgoxNDQ3NDogIyAxICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9hdWRpb190eXBlcy5oIiAx CjE0NDc0OiAjIDM2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5j bHVkZS9hdWRpb190eXBlcy5oIgoxNDQ3NDogc3RydWN0IGF1ZGlvX2NydGNfaW5mbyB7CjE0NDc0 OiAgdWludDMyX3QgaF90b3RhbDsKMTQ0NzQ6ICB1aW50MzJfdCBoX2FjdGl2ZTsKMTQ0NzQ6ICB1 aW50MzJfdCB2X2FjdGl2ZTsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9yZXBldGl0aW9uOwoxNDQ3 NDogIHVpbnQzMl90IHJlcXVlc3RlZF9waXhlbF9jbG9ja18xMDBIejsKMTQ0NzQ6ICB1aW50MzJf dCBjYWxjdWxhdGVkX3BpeGVsX2Nsb2NrXzEwMEh6OwoxNDQ3NDogIHVpbnQzMl90IHJlZnJlc2hf cmF0ZTsKMTQ0NzQ6ICBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRoOwoxNDQ3NDogIGJv b2wgaW50ZXJsYWNlZDsKMTQ0NzQ6IH07CjE0NDc0OiBzdHJ1Y3QgYXphbGlhX2Nsb2NrX2luZm8g ewoxNDQ3NDogIHVpbnQzMl90IHBpeGVsX2Nsb2NrX2luXzEwa2h6OwoxNDQ3NDogIHVpbnQzMl90 IGF1ZGlvX2R0b19waGFzZTsKMTQ0NzQ6ICB1aW50MzJfdCBhdWRpb19kdG9fbW9kdWxlOwoxNDQ3 NDogIHVpbnQzMl90IGF1ZGlvX2R0b193YWxsX2Nsb2NrX3JhdGlvOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBhdWRpb19kdG9fc291cmNlIHsKMTQ0NzQ6ICBEVE9fU09VUkNFX1VOS05P V04gPSAwLAoxNDQ3NDogIERUT19TT1VSQ0VfSUQwLAoxNDQ3NDogIERUT19TT1VSQ0VfSUQxLAox NDQ3NDogIERUT19TT1VSQ0VfSUQyLAoxNDQ3NDogIERUT19TT1VSQ0VfSUQzLAoxNDQ3NDogIERU T19TT1VSQ0VfSUQ0LAoxNDQ3NDogIERUT19TT1VSQ0VfSUQ1CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF1ZGlvX3BsbF9pbmZvIHsKMTQ0NzQ6ICB1aW50 MzJfdCBkcF9kdG9fc291cmNlX2Nsb2NrX2luX2toejsKMTQ0NzQ6ICB1aW50MzJfdCBmZWVkX2Jh Y2tfZGl2aWRlcjsKMTQ0NzQ6ICBlbnVtIGF1ZGlvX2R0b19zb3VyY2UgZHRvX3NvdXJjZTsKMTQ0 NzQ6ICBib29sIHNzX2VuYWJsZWQ7CjE0NDc0OiAgdWludDMyX3Qgc3NfcGVyY2VudGFnZTsKMTQ0 NzQ6ICB1aW50MzJfdCBzc19wZXJjZW50YWdlX2RpdmlkZXI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgYXVkaW9fY2hhbm5lbF9hc3NvY2lhdGVfaW5mbyB7CjE0NDc0OiAgdW5pb24g ewoxNDQ3NDogICBzdHJ1Y3QgewoxNDQ3NDogICAgdWludDMyX3QgQUxMX0NIQU5ORUxfRkw6NDsK MTQ0NzQ6ICAgIHVpbnQzMl90IEFMTF9DSEFOTkVMX0ZSOjQ7CjE0NDc0OiAgICB1aW50MzJfdCBB TExfQ0hBTk5FTF9GQzo0OwoxNDQ3NDogICAgdWludDMyX3QgQUxMX0NIQU5ORUxfU3ViOjQ7CjE0 NDc0OiAgICB1aW50MzJfdCBBTExfQ0hBTk5FTF9TTDo0OwoxNDQ3NDogICAgdWludDMyX3QgQUxM X0NIQU5ORUxfU1I6NDsKMTQ0NzQ6ICAgIHVpbnQzMl90IEFMTF9DSEFOTkVMX0JMOjQ7CjE0NDc0 OiAgICB1aW50MzJfdCBBTExfQ0hBTk5FTF9CUjo0OwoxNDQ3NDogICB9IGJpdHM7CjE0NDc0OiAg IHVpbnQzMl90IHUzMmFsbDsKMTQ0NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGF1ZGlvX291dHB1dCB7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGVuZ2luZV9pZCBlbmdpbmVf aWQ7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHNpZ25hbF90eXBlIHNpZ25hbDsKMTQ0NzQ6IAoxNDQ3 NDogIHN0cnVjdCBhdWRpb19jcnRjX2luZm8gY3J0Y19pbmZvOwoxNDQ3NDogCjE0NDc0OiAgc3Ry dWN0IGF1ZGlvX3BsbF9pbmZvIHBsbF9pbmZvOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBhdWRpb19wYXlsb2FkIHsKMTQ0NzQ6ICBDSEFOTkVMX1NQTElUX01BUFBJTkdDSEFORyA9IDB4 OSwKMTQ0NzQ6IH07CjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvaW5jL2h3L3N0cmVhbV9lbmNvZGVyLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgZGNfYmlvczsKMTQ0NzQ6IHN0cnVjdCBkY19jb250ZXh0OwoxNDQ3NDogc3Ry dWN0IGRjX2NydGNfdGltaW5nOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRwX3BpeGVsX2VuY29kaW5n X3R5cGUgewoxNDQ3NDogIERQX1BJWEVMX0VOQ09ESU5HX1RZUEVfUkdCNDQ0ID0gMHgwMDAwMDAw MCwKMTQ0NzQ6ICBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1lDQkNSNDIyID0gMHgwMDAwMDAwMSwK MTQ0NzQ6ICBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1lDQkNSNDQ0ID0gMHgwMDAwMDAwMiwKMTQ0 NzQ6ICBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1JHQl9XSURFX0dBTVVUID0gMHgwMDAwMDAwMywK MTQ0NzQ6ICBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1lfT05MWSA9IDB4MDAwMDAwMDQsCjE0NDc0 OiAgRFBfUElYRUxfRU5DT0RJTkdfVFlQRV9ZQ0JDUjQyMCA9IDB4MDAwMDAwMDUKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZHBfY29tcG9uZW50X2RlcHRoIHsKMTQ0NzQ6ICBEUF9DT01Q T05FTlRfUElYRUxfREVQVEhfNkJQQyA9IDB4MDAwMDAwMDAsCjE0NDc0OiAgRFBfQ09NUE9ORU5U X1BJWEVMX0RFUFRIXzhCUEMgPSAweDAwMDAwMDAxLAoxNDQ3NDogIERQX0NPTVBPTkVOVF9QSVhF TF9ERVBUSF8xMEJQQyA9IDB4MDAwMDAwMDIsCjE0NDc0OiAgRFBfQ09NUE9ORU5UX1BJWEVMX0RF UFRIXzEyQlBDID0gMHgwMDAwMDAwMywKMTQ0NzQ6ICBEUF9DT01QT05FTlRfUElYRUxfREVQVEhf MTZCUEMgPSAweDAwMDAwMDA0CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXVkaW9f Y2xvY2tfaW5mbyB7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50MzJfdCBwaXhlbF9jbG9ja19pbl8xMGto ejsKMTQ0NzQ6IAoxNDQ3NDogIHVpbnQzMl90IG5fMzJraHo7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 MzJfdCBjdHNfMzJraHo7CjE0NDc0OiAgdWludDMyX3Qgbl80NGtoejsKMTQ0NzQ6ICB1aW50MzJf dCBjdHNfNDRraHo7CjE0NDc0OiAgdWludDMyX3Qgbl80OGtoejsKMTQ0NzQ6ICB1aW50MzJfdCBj dHNfNDhraHo7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGR5bmFtaWNfbWV0YWRhdGFf bW9kZSB7CjE0NDc0OiAgZG1kYXRhX2RwLAoxNDQ3NDogIGRtZGF0YV9oZG1pLAoxNDQ3NDogIGRt ZGF0YV9kb2xieV92aXNpb24KMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBlbmNvZGVy X2luZm9fZnJhbWUgewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2luZm9fcGFja2V0IGF2aTsK MTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgZ2FtdXQ7CjE0NDc0OiAgc3RydWN0IGRjX2lu Zm9fcGFja2V0IHZlbmRvcjsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgaGZ2c2lmOwox NDQ3NDogCjE0NDc0OiAgc3RydWN0IGRjX2luZm9fcGFja2V0IHNwZDsKMTQ0NzQ6IAoxNDQ3NDog IHN0cnVjdCBkY19pbmZvX3BhY2tldCB2c2M7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNfaW5m b19wYWNrZXQgaGRyc21kOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVuY29kZXJf dW5ibGFua19wYXJhbSB7CjE0NDc0OiAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgbGlua19zZXR0 aW5nczsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgdGltaW5nOwoxNDQ3NDogIGludCBv cHBfY250OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVuY29kZXJfc2V0X2RwX3Bo eV9wYXR0ZXJuX3BhcmFtIHsKMTQ0NzQ6ICBlbnVtIGRwX3Rlc3RfcGF0dGVybiBkcF9waHlfcGF0 dGVybjsKMTQ0NzQ6ICBjb25zdCB1aW50OF90ICpjdXN0b21fcGF0dGVybjsKMTQ0NzQ6ICB1aW50 MzJfdCBjdXN0b21fcGF0dGVybl9zaXplOwoxNDQ3NDogIGVudW0gZHBfcGFuZWxfbW9kZSBkcF9w YW5lbF9tb2RlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHN0cmVhbV9lbmNvZGVy IHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXJfZnVuY3MgKmZ1bmNzOwoxNDQ3 NDogIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgc3RydWN0IGRjX2Jpb3MgKmJwOwox NDQ3NDogIGVudW0gZW5naW5lX2lkIGlkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGVuY19zdGF0ZSB7CjE0NDc0OiAgdWludDMyX3QgZHNjX21vZGU7CjE0NDc0OiAgdWludDMyX3Qg ZHNjX3NsaWNlX3dpZHRoOwoxNDQ3NDogIHVpbnQzMl90IHNlY19nc3BfcHBzX2xpbmVfbnVtOwox NDQ3NDogIHVpbnQzMl90IHZiaWQ2X2xpbmVfcmVmZXJlbmNlOwoxNDQ3NDogIHVpbnQzMl90IHZi aWQ2X2xpbmVfbnVtOwoxNDQ3NDogIHVpbnQzMl90IHNlY19nc3BfcHBzX2VuYWJsZTsKMTQ0NzQ6 ICB1aW50MzJfdCBzZWNfc3RyZWFtX2VuYWJsZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBzdHJlYW1fZW5jb2Rlcl9mdW5jcyB7CjE0NDc0OiAgdm9pZCAoKmRwX3NldF9zdHJlYW1f YXR0cmlidXRlKSgKMTQ0NzQ6ICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0OiAg IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqY3J0Y190aW1pbmcsCjE0NDc0OiAgIGVudW0gZGNfY29s b3Jfc3BhY2Ugb3V0cHV0X2NvbG9yX3NwYWNlLAoxNDQ3NDogICBib29sIHVzZV92c2Nfc2RwX2Zv cl9jb2xvcmltZXRyeSwKMTQ0NzQ6ICAgdWludDMyX3QgZW5hYmxlX3NkcF9zcGxpdHRpbmcpOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAoKmhkbWlfc2V0X3N0cmVhbV9hdHRyaWJ1dGUpKAoxNDQ3NDog ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgc3RydWN0IGRjX2NydGNfdGlt aW5nICpjcnRjX3RpbWluZywKMTQ0NzQ6ICAgaW50IGFjdHVhbF9waXhfY2xrX2toeiwKMTQ0NzQ6 ICAgYm9vbCBlbmFibGVfYXVkaW8pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmR2aV9zZXRfc3Ry ZWFtX2F0dHJpYnV0ZSkoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAoxNDQ3 NDogICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKmNydGNfdGltaW5nLAoxNDQ3NDogICBib29sIGlz X2R1YWxfbGluayk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqbHZkc19zZXRfc3RyZWFtX2F0dHJp YnV0ZSkoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAoxNDQ3NDogICBzdHJ1 Y3QgZGNfY3J0Y190aW1pbmcgKmNydGNfdGltaW5nKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpz ZXRfbXN0X2JhbmR3aWR0aCkoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAox NDQ3NDogICBzdHJ1Y3QgZml4ZWQzMV8zMiBhdmdfdGltZV9zbG90c19wZXJfbXRwKTsKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCp1cGRhdGVfaGRtaV9pbmZvX3BhY2tldHMpKAoxNDQ3NDogICBzdHJ1 Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGVuY29kZXJfaW5m b19mcmFtZSAqaW5mb19mcmFtZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc3RvcF9oZG1pX2lu Zm9fcGFja2V0cykoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jKTsKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCp1cGRhdGVfZHBfaW5mb19wYWNrZXRzKSgKMTQ0NzQ6ICAgc3RydWN0 IHN0cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBlbmNvZGVyX2luZm9f ZnJhbWUgKmluZm9fZnJhbWUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNlbmRfaW1tZWRpYXRl X3NkcF9tZXNzYWdlKSgKMTQ0NzQ6ICAgICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0 NzQ6ICAgICBjb25zdCB1aW50OF90ICpjdXN0b21fc2RwX21lc3NhZ2UsCjE0NDc0OiAgICAgdW5z aWduZWQgaW50IHNkcF9tZXNzYWdlX3NpemUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnN0b3Bf ZHBfaW5mb19wYWNrZXRzKSgKMTQ0NzQ6ICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMpOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwX2JsYW5rKSgKMTQ0NzQ6ICAgc3RydWN0IHN0cmVhbV9l bmNvZGVyICplbmMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwX3VuYmxhbmspKAoxNDQ3NDog ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGVuY29k ZXJfdW5ibGFua19wYXJhbSAqcGFyYW0pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmF1ZGlvX211 dGVfY29udHJvbCkoCjE0NDc0OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLCBib29sIG11 dGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwX2F1ZGlvX3NldHVwKSgKMTQ0NzQ6ICAgc3Ry dWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0OiAgIHVuc2lnbmVkIGludCBhel9pbnN0LAox NDQ3NDogICBzdHJ1Y3QgYXVkaW9faW5mbyAqaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgq ZHBfYXVkaW9fZW5hYmxlKSAoCjE0NDc0OiAgICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYyk7 CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBfYXVkaW9fZGlzYWJsZSkgKAoxNDQ3NDogICAgc3Ry dWN0IHN0cmVhbV9lbmNvZGVyICplbmMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmhkbWlfYXVk aW9fc2V0dXApKAoxNDQ3NDogICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAg dW5zaWduZWQgaW50IGF6X2luc3QsCjE0NDc0OiAgIHN0cnVjdCBhdWRpb19pbmZvICppbmZvLAox NDQ3NDogICBzdHJ1Y3QgYXVkaW9fY3J0Y19pbmZvICphdWRpb19jcnRjX2luZm8pOwoxNDQ3NDog CjE0NDc0OiAgdm9pZCAoKmhkbWlfYXVkaW9fZGlzYWJsZSkgKAoxNDQ3NDogICAgc3RydWN0IHN0 cmVhbV9lbmNvZGVyICplbmMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldHVwX3N0ZXJlb19z eW5jKSAoCjE0NDc0OiAgICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgIGlu dCB0Z19pbnN0LAoxNDQ3NDogICAgYm9vbCBlbmFibGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAo KnNldF9hdm11dGUpKAoxNDQ3NDogICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywgYm9vbCBl bmFibGUpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRpZ19jb25uZWN0X3RvX290ZykoCjE0NDc0 OiAgIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAoxNDQ3NDogICBpbnQgdGdfaW5zdCk7CjE0 NDc0OiAKMTQ0NzQ6ICB2b2lkICgqaGRtaV9yZXNldF9zdHJlYW1fYXR0cmlidXRlKSgKMTQ0NzQ6 ICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMpOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQg aW50ICgqZGlnX3NvdXJjZV9vdGcpKAoxNDQ3NDogICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVu Yyk7CjE0NDc0OiAKMTQ0NzQ6ICBib29sICgqZHBfZ2V0X3BpeGVsX2Zvcm1hdCkoCjE0NDc0OiAg IHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAoxNDQ3NDogICBlbnVtIGRjX3BpeGVsX2VuY29k aW5nICplbmNvZGluZywKMTQ0NzQ6ICAgZW51bSBkY19jb2xvcl9kZXB0aCAqZGVwdGgpOwoxNDQ3 NDogCjE0NDc0OiAgdm9pZCAoKmVuY19yZWFkX3N0YXRlKShzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIg KmVuYywgc3RydWN0IGVuY19zdGF0ZSAqcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBfc2V0 X2RzY19jb25maWcpKAoxNDQ3NDogICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0 OiAgICBlbnVtIG9wdGNfZHNjX21vZGUgZHNjX21vZGUsCjE0NDc0OiAgICB1aW50MzJfdCBkc2Nf Ynl0ZXNfcGVyX3BpeGVsLAoxNDQ3NDogICAgdWludDMyX3QgZHNjX3NsaWNlX3dpZHRoKTsKMTQ0 NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcF9zZXRfZHNjX3Bwc19pbmZvX3BhY2tldCkoc3RydWN0IHN0 cmVhbV9lbmNvZGVyICplbmMsCjE0NDc0OiAgICAgYm9vbCBlbmFibGUsCjE0NDc0OiAgICAgdWlu dDhfdCAqZHNjX3BhY2tlZF9wcHMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9keW5hbWlj X21ldGFkYXRhKShzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKMTQ0NzQ6ICAgIGJvb2wgZW5h YmxlLAoxNDQ3NDogICAgdWludDMyX3QgaHVicF9yZXF1ZXN0b3JfaWQsCjE0NDc0OiAgICBlbnVt IGR5bmFtaWNfbWV0YWRhdGFfbW9kZSBkbWRhdGFfbW9kZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lk ICgqZHBfc2V0X29kbV9jb21iaW5lKSgKMTQ0NzQ6ICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICpl bmMsCjE0NDc0OiAgIGJvb2wgb2RtX2NvbWJpbmUpOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5o IiAyCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2luYy9ody9hdWRpby5oIiAxCjE0NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2F1ZGlvLmgiCjE0NDc0OiBzdHJ1Y3Qg YXVkaW87CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19mdW5jcyB7CjE0NDc0OiAKMTQ0NzQ6 ICBib29sICgqZW5kcG9pbnRfdmFsaWQpKHN0cnVjdCBhdWRpbyAqYXVkaW8pOwoxNDQ3NDogCjE0 NDc0OiAgdm9pZCAoKmh3X2luaXQpKHN0cnVjdCBhdWRpbyAqYXVkaW8pOwoxNDQ3NDogCjE0NDc0 OiAgdm9pZCAoKmF6X2VuYWJsZSkoc3RydWN0IGF1ZGlvICphdWRpbyk7CjE0NDc0OiAKMTQ0NzQ6 ICB2b2lkICgqYXpfZGlzYWJsZSkoc3RydWN0IGF1ZGlvICphdWRpbyk7CjE0NDc0OiAKMTQ0NzQ6 ICB2b2lkICgqYXpfY29uZmlndXJlKShzdHJ1Y3QgYXVkaW8gKmF1ZGlvLAoxNDQ3NDogICBlbnVt IHNpZ25hbF90eXBlIHNpZ25hbCwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGF1ZGlvX2NydGNfaW5m byAqY3J0Y19pbmZvLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgYXVkaW9faW5mbyAqYXVkaW9faW5m byk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqd2FsbF9kdG9fc2V0dXApKHN0cnVjdCBhdWRpbyAq YXVkaW8sCjE0NDc0OiAgIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsLAoxNDQ3NDogICBjb25zdCBz dHJ1Y3QgYXVkaW9fY3J0Y19pbmZvICpjcnRjX2luZm8sCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBh dWRpb19wbGxfaW5mbyAqcGxsX2luZm8pOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRlc3Ryb3kp KHN0cnVjdCBhdWRpbyAqKmF1ZGlvKTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBh dWRpbyB7CjE0NDc0OiAgY29uc3Qgc3RydWN0IGF1ZGlvX2Z1bmNzICpmdW5jczsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoxNDQ3NDogIHVuc2lnbmVkIGludCBpbnN0OwoxNDQ3NDog IGJvb2wgZW5hYmxlZDsKMTQ0NzQ6IH07CjE0NDc0OiAjIDUyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoxNDQ3NDogIyAxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fcHBfc211LmgiIDEK MTQ0NzQ6ICMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9k bV9wcF9zbXUuaCIKMTQ0NzQ6IHR5cGVkZWYgYm9vbCBCT09MRUFOOwoxNDQ3NDogCjE0NDc0OiBl bnVtIHBwX3NtdV92ZXIgewoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIFBQX1NNVV9VTlNVUFBPUlRFRCwKMTQ0NzQ6ICBQUF9TTVVfVkVSX1JW LAoxNDQ3NDogIFBQX1NNVV9WRVJfTlYsCjE0NDc0OiAgUFBfU01VX1ZFUl9STiwKMTQ0NzQ6IAox NDQ3NDogIFBQX1NNVV9WRVJfTUFYCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHBf c211IHsKMTQ0NzQ6ICBlbnVtIHBwX3NtdV92ZXIgdmVyOwoxNDQ3NDogIGNvbnN0IHZvaWQgKnBw OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IGNvbnN0IHZvaWQgKmRtOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBwcF9zbXVfc3Rh dHVzIHsKMTQ0NzQ6ICBQUF9TTVVfUkVTVUxUX1VOREVGSU5FRCA9IDAsCjE0NDc0OiAgUFBfU01V X1JFU1VMVF9PSyA9IDEsCjE0NDc0OiAgUFBfU01VX1JFU1VMVF9GQUlMLAoxNDQ3NDogIFBQX1NN VV9SRVNVTFRfVU5TVVBQT1JURUQKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gd21fdHlwZSB7CjE0NDc0OiAgV01fVFlQRV9QU1RBVEVfQ0hHID0g MCwKMTQ0NzQ6ICBXTV9UWVBFX1JFVFJBSU5JTkcgPSAxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgcHBfc211X3dtX3NldF9yYW5nZSB7CjE0NDc0OiAgdWludDE2X3Qg bWluX2ZpbGxfY2xrX21oejsKMTQ0NzQ6ICB1aW50MTZfdCBtYXhfZmlsbF9jbGtfbWh6OwoxNDQ3 NDogIHVpbnQxNl90IG1pbl9kcmFpbl9jbGtfbWh6OwoxNDQ3NDogIHVpbnQxNl90IG1heF9kcmFp bl9jbGtfbWh6OwoxNDQ3NDogCjE0NDc0OiAgdWludDhfdCB3bV9pbnN0OwoxNDQ3NDogIHVpbnQ4 X3Qgd21fdHlwZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgcHBfc211X3dtX3JhbmdlX3NldHMgewoxNDQ3NDogIHVuc2lnbmVkIGludCBudW1fcmVhZGVy X3dtX3NldHM7CjE0NDc0OiAgc3RydWN0IHBwX3NtdV93bV9zZXRfcmFuZ2UgcmVhZGVyX3dtX3Nl dHNbNF07CjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgbnVtX3dyaXRlcl93bV9zZXRzOwox NDQ3NDogIHN0cnVjdCBwcF9zbXVfd21fc2V0X3JhbmdlIHdyaXRlcl93bV9zZXRzWzRdOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBwX3NtdV9mdW5jc19ydiB7CjE0NDc0OiAgc3Ry dWN0IHBwX3NtdSBwcF9zbXU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIHZvaWQgKCpzZXRfZGlzcGxheV9jb3VudCkoc3RydWN0IHBwX3NtdSAqcHAsIGlu dCBjb3VudCk7CjE0NDc0OiAjIDExNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RtX3BwX3NtdS5oIgoxNDQ3NDogIHZvaWQgKCpzZXRfd21fcmFuZ2VzKShzdHJ1 Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vfc2V0cyAqcmFu Z2VzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRf aGFyZF9taW5fZGNmY2xrX2J5X2ZyZXEpKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgbWh6KTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKnNldF9t aW5fZGVlcF9zbGVlcF9kY2ZjbGspKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgbWh6KTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfaGFyZF9taW5fZmNs a19ieV9mcmVxKShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IG1oeik7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqc2V0X2hhcmRfbWluX3NvY2Nsa19ieV9mcmVx KShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IG1oeik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHZv aWQgKCpzZXRfcG1lX3dhX2VuYWJsZSkoc3RydWN0IHBwX3NtdSAqcHApOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBwcF9zbXVfbnZfY2xvY2tf aWQgewoxNDQ3NDogIFBQX1NNVV9OVl9ESVNQQ0xLLAoxNDQ3NDogIFBQX1NNVV9OVl9QSFlDTEss CjE0NDc0OiAgUFBfU01VX05WX1BJWEVMQ0xLCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHBfc211X252X2Nsb2NrX3RhYmxlIHsKMTQ0NzQ6 IAoxNDQ3NDogIHVuc2lnbmVkIGludCBkaXNwbGF5Q2xvY2tJbktoejsKMTQ0NzQ6ICB1bnNpZ25l ZCBpbnQgZHBwQ2xvY2tJbktoejsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcGh5Q2xvY2tJbktoejsK MTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcGl4ZWxDbG9ja0luS2h6OwoxNDQ3NDogIHVuc2lnbmVkIGlu dCBkc2NDbG9ja0luS2h6OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmFi cmljQ2xvY2tJbktoejsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgc29jQ2xvY2tJbktoejsKMTQ0NzQ6 ICB1bnNpZ25lZCBpbnQgZGNmQ2xvY2tJbktoejsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgdUNsb2Nr SW5LaHo7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHBfc211X2Z1bmNzX252IHsK MTQ0NzQ6ICBzdHJ1Y3QgcHBfc211IHBwX3NtdTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF9kaXNwbGF5X2NvdW50KShzdHJ1 Y3QgcHBfc211ICpwcCwgaW50IGNvdW50KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF9oYXJkX21pbl9kY2ZjbGtfYnlfZnJl cSkoc3RydWN0IHBwX3NtdSAqcHAsIGludCBNaHopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfbWluX2RlZXBf c2xlZXBfZGNmY2xrKShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IE1oeik7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfaGFyZF9t aW5fdWNsa19ieV9mcmVxKShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IE1oeik7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfaGFy ZF9taW5fc29jY2xrX2J5X2ZyZXEpKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgTWh6KTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X3BtZV93YV9lbmFibGUp KHN0cnVjdCBwcF9zbXUgKnBwKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF92b2x0YWdlX2J5X2ZyZXEpKHN0cnVjdCBwcF9z bXUgKnBwLAoxNDQ3NDogICAgZW51bSBwcF9zbXVfbnZfY2xvY2tfaWQgY2xvY2tfaWQsIGludCBN aHopOwoxNDQ3NDogIyAyMTkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbV9wcF9zbXUuaCIKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfd21fcmFu Z2VzKShzdHJ1Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vf c2V0cyAqcmFuZ2VzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGVu dW0gcHBfc211X3N0YXR1cyAoKmdldF9tYXhpbXVtX3N1c3RhaW5hYmxlX2Nsb2Nrcykoc3RydWN0 IHBwX3NtdSAqcHAsCjE0NDc0OiAgICBzdHJ1Y3QgcHBfc211X252X2Nsb2NrX3RhYmxlICptYXhf Y2xvY2tzKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0 dXMgKCpnZXRfdWNsa19kcG1fc3RhdGVzKShzdHJ1Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHVu c2lnbmVkIGludCAqY2xvY2tfdmFsdWVzX2luX2toeiwgdW5zaWduZWQgaW50ICpudW1fc3RhdGVz KTsKMTQ0NzQ6ICMgMjQyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZG1fcHBfc211LmgiCjE0NDc0OiAgZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X3BzdGF0ZV9o YW5kc2hha2Vfc3VwcG9ydCkoc3RydWN0IHBwX3NtdSAqcHAsCjE0NDc0OiAgICBCT09MRUFOIHBz dGF0ZV9oYW5kc2hha2Vfc3VwcG9ydGVkKTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBtX2Nsb2NrIHsKMTQ0 NzQ6ICAgdWludDMyX3QgRnJlcTsKMTQ0NzQ6ICAgdWludDMyX3QgVm9sOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkcG1fY2xvY2tzIHsKMTQ0NzQ6ICBz dHJ1Y3QgZHBtX2Nsb2NrIERjZkNsb2Nrc1s4XTsKMTQ0NzQ6ICBzdHJ1Y3QgZHBtX2Nsb2NrIFNv Y0Nsb2Nrc1s4XTsKMTQ0NzQ6ICBzdHJ1Y3QgZHBtX2Nsb2NrIEZDbG9ja3NbNF07CjE0NDc0OiAg c3RydWN0IGRwbV9jbG9jayBNZW1DbG9ja3NbNF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBwcF9zbXVfZnVuY3Nfcm4gewoxNDQ3NDogIHN0cnVjdCBwcF9zbXUgcHBf c211OwoxNDQ3NDogIyAyNzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbV9wcF9zbXUuaCIKMTQ0NzQ6ICBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfd21fcmFu Z2VzKShzdHJ1Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vf c2V0cyAqcmFuZ2VzKTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gcHBfc211X3N0YXR1cyAoKmdldF9k cG1fY2xvY2tfdGFibGUpIChzdHJ1Y3QgcHBfc211ICpwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBkcG1f Y2xvY2tzICpjbG9ja190YWJsZSk7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHBf c211X2Z1bmNzIHsKMTQ0NzQ6ICBzdHJ1Y3QgcHBfc211IGN0eDsKMTQ0NzQ6ICB1bmlvbiB7CjE0 NDc0OiAgIHN0cnVjdCBwcF9zbXVfZnVuY3NfcnYgcnZfZnVuY3M7CjE0NDc0OiAgIHN0cnVjdCBw cF9zbXVfZnVuY3NfbnYgbnZfZnVuY3M7CjE0NDc0OiAgIHN0cnVjdCBwcF9zbXVfZnVuY3Nfcm4g cm5fZnVuY3M7CjE0NDc0OiAKMTQ0NzQ6ICB9OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTMgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAy CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxp bmtfaW5pdF9kYXRhIHsKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGMgKmRjOwoxNDQ3NDogIHN0cnVj dCBkY19jb250ZXh0ICpjdHg7CjE0NDc0OiAgdWludDMyX3QgY29ubmVjdG9yX2luZGV4OwoxNDQ3 NDogIHVpbnQzMl90IGxpbmtfaW5kZXg7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkY19saW5rICpsaW5rX2NyZWF0ZShjb25zdCBzdHJ1Y3QgbGlua19pbml0X2RhdGEg KmluaXRfcGFyYW1zKTsKMTQ0NzQ6IHZvaWQgbGlua19kZXN0cm95KHN0cnVjdCBkY19saW5rICoq bGluayk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfc3RhdHVzIGRjX2xpbmtfdmFsaWRhdGVfbW9k ZV90aW1pbmcoCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwK MTQ0NzQ6ICAgc3RydWN0IGRjX2xpbmsgKmxpbmssCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19j cnRjX3RpbWluZyAqdGltaW5nKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBjb3JlX2xpbmtfcmVzdW1l KHN0cnVjdCBkY19saW5rICpsaW5rKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCBjb3JlX2xpbmtfZW5h YmxlX3N0cmVhbSgKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0YXRlICpzdGF0ZSwKMTQ0NzQ6ICAgc3Ry dWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgY29yZV9saW5rX2Rp c2FibGVfc3RyZWFtKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogCjE0NDc0OiB2 b2lkIGNvcmVfbGlua19zZXRfYXZtdXRlKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgsIGJvb2wg ZW5hYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L3RyYW5zZm9ybS5oIiAxCjE0NDc0OiAjIDg1ICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgox NDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L2h3L2RwcC5oIiAxCjE0NDc0OiAjIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvaW5jL2h3L2RwcC5oIgoxNDQ3NDogc3RydWN0IGRwcCB7CjE0NDc0OiAgY29u c3Qgc3RydWN0IGRwcF9mdW5jcyAqZnVuY3M7CjE0NDc0OiAgc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKMTQ0NzQ6ICBpbnQgaW5zdDsKMTQ0NzQ6ICBzdHJ1Y3QgZHBwX2NhcHMgKmNhcHM7CjE0NDc0 OiAgc3RydWN0IHB3bF9wYXJhbXMgcmVnYW1tYV9wYXJhbXM7CjE0NDc0OiAgc3RydWN0IHB3bF9w YXJhbXMgZGVnYW1tYV9wYXJhbXM7CjE0NDc0OiAgc3RydWN0IGRwcF9jdXJzb3JfYXR0cmlidXRl cyBjdXJfYXR0cjsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwd2xfcGFyYW1zIHNoYXBlcl9wYXJh bXM7CjE0NDc0OiAgYm9vbCBjbV9ieXBhc3NfbW9kZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBkcHBfaW5wdXRfY3NjX21hdHJpeCB7CjE0NDc0OiAgZW51bSBkY19jb2xvcl9zcGFj ZSBjb2xvcl9zcGFjZTsKMTQ0NzQ6ICB1aW50MTZfdCByZWd2YWxbMTJdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBkcHBfaW5wdXRfY3NjX21hdHJpeCBkcHBf aW5wdXRfY3NjX21hdHJpeFtdID0gewoxNDQ3NDogIHtDT0xPUl9TUEFDRV9TUkdCLAoxNDQ3NDog ICB7MHgyMDAwLCAwLCAwLCAwLCAwLCAweDIwMDAsIDAsIDAsIDAsIDAsIDB4MjAwMCwgMH0gfSwK MTQ0NzQ6ICB7Q09MT1JfU1BBQ0VfU1JHQl9MSU1JVEVELAoxNDQ3NDogICB7MHgyMDAwLCAwLCAw LCAwLCAwLCAweDIwMDAsIDAsIDAsIDAsIDAsIDB4MjAwMCwgMH0gfSwKMTQ0NzQ6ICB7Q09MT1Jf U1BBQ0VfWUNCQ1I2MDEsCjE0NDc0OiAgIHsweDJjZGQsIDB4MjAwMCwgMCwgMHhlOTkxLCAweGU5 MjYsIDB4MjAwMCwgMHhmNGZkLCAweDEwZWYsCjE0NDc0OiAgICAgICAwLCAweDIwMDAsIDB4Mzhi NCwgMHhlM2E2fSB9LAoxNDQ3NDogIHtDT0xPUl9TUEFDRV9ZQ0JDUjYwMV9MSU1JVEVELAoxNDQ3 NDogICB7MHgzMzUzLCAweDI1NjgsIDAsIDB4ZTQwMCwgMHhlNWRjLCAweDI1NjgsIDB4ZjM2Nywg MHgxMTA4LAoxNDQ3NDogICAgICAgMCwgMHgyNTY4LCAweDQwZGUsIDB4ZGQzYX0gfSwKMTQ0NzQ6 ICB7Q09MT1JfU1BBQ0VfWUNCQ1I3MDksCjE0NDc0OiAgIHsweDMyNjUsIDB4MjAwMCwgMCwgMHhl NmNlLCAweGYxMDUsIDB4MjAwMCwgMHhmYTAxLCAweGE3ZCwgMCwKMTQ0NzQ6ICAgICAgIDB4MjAw MCwgMHgzYjYxLCAweGUyNGZ9IH0sCjE0NDc0OiAKMTQ0NzQ6ICB7Q09MT1JfU1BBQ0VfWUNCQ1I3 MDlfTElNSVRFRCwKMTQ0NzQ6ICAgezB4MzlhNiwgMHgyNTY4LCAwLCAweGUwZDYsIDB4ZWVkZCwg MHgyNTY4LCAweGY5MjUsIDB4OWE4LCAwLAoxNDQ3NDogICAgICAgMHgyNTY4LCAweDQzZWUsIDB4 ZGJiMn0gfQoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRwcF9ncnBoX2NzY19hZGp1 c3RtZW50IHsKMTQ0NzQ6ICBzdHJ1Y3QgZml4ZWQzMV8zMiB0ZW1wZXJhdHVyZV9tYXRyaXhbMTJd OwoxNDQ3NDogIGVudW0gZ3JhcGhpY3NfZ2FtdXRfYWRqdXN0X3R5cGUgZ2FtdXRfYWRqdXN0X3R5 cGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY252X2NvbG9yX2tleWVyX3BhcmFt cyB7CjE0NDc0OiAgaW50IGNvbG9yX2tleWVyX2VuOwoxNDQ3NDogIGludCBjb2xvcl9rZXllcl9t b2RlOwoxNDQ3NDogIGludCBjb2xvcl9rZXllcl9hbHBoYV9sb3c7CjE0NDc0OiAgaW50IGNvbG9y X2tleWVyX2FscGhhX2hpZ2g7CjE0NDc0OiAgaW50IGNvbG9yX2tleWVyX3JlZF9sb3c7CjE0NDc0 OiAgaW50IGNvbG9yX2tleWVyX3JlZF9oaWdoOwoxNDQ3NDogIGludCBjb2xvcl9rZXllcl9ncmVl bl9sb3c7CjE0NDc0OiAgaW50IGNvbG9yX2tleWVyX2dyZWVuX2hpZ2g7CjE0NDc0OiAgaW50IGNv bG9yX2tleWVyX2JsdWVfbG93OwoxNDQ3NDogIGludCBjb2xvcl9rZXllcl9ibHVlX2hpZ2g7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgY252X2FscGhhXzJiaXRfbHV0IHsKMTQ0NzQ6ICBpbnQgbHV0 MDsKMTQ0NzQ6ICBpbnQgbHV0MTsKMTQ0NzQ6ICBpbnQgbHV0MjsKMTQ0NzQ6ICBpbnQgbHV0MzsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkY25fZHBwX3N0YXRlIHsKMTQ0NzQ6ICB1 aW50MzJfdCBpc19lbmFibGVkOwoxNDQ3NDogIHVpbnQzMl90IGlnYW1fbHV0X21vZGU7CjE0NDc0 OiAgdWludDMyX3QgaWdhbV9pbnB1dF9mb3JtYXQ7CjE0NDc0OiAgdWludDMyX3QgZGdhbV9sdXRf bW9kZTsKMTQ0NzQ6ICB1aW50MzJfdCByZ2FtX2x1dF9tb2RlOwoxNDQ3NDogIHVpbnQzMl90IGdh bXV0X3JlbWFwX21vZGU7CjE0NDc0OiAgdWludDMyX3QgZ2FtdXRfcmVtYXBfYzExX2MxMjsKMTQ0 NzQ6ICB1aW50MzJfdCBnYW11dF9yZW1hcF9jMTNfYzE0OwoxNDQ3NDogIHVpbnQzMl90IGdhbXV0 X3JlbWFwX2MyMV9jMjI7CjE0NDc0OiAgdWludDMyX3QgZ2FtdXRfcmVtYXBfYzIzX2MyNDsKMTQ0 NzQ6ICB1aW50MzJfdCBnYW11dF9yZW1hcF9jMzFfYzMyOwoxNDQ3NDogIHVpbnQzMl90IGdhbXV0 X3JlbWFwX2MzM19jMzQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgQ01fYmlhc19w YXJhbXMgewoxNDQ3NDogIHVpbnQzMl90IGNtX2JpYXNfY3JfcjsKMTQ0NzQ6ICB1aW50MzJfdCBj bV9iaWFzX3lfZzsKMTQ0NzQ6ICB1aW50MzJfdCBjbV9iaWFzX2NiX2I7CjE0NDc0OiAgdWludDMy X3QgY21fYmlhc19mb3JtYXQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBwX2Z1 bmNzIHsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfcHJvZ3JhbV9jbV9kZWFscGhhKShzdHJ1 Y3QgZHBwICpkcHBfYmFzZSwKMTQ0NzQ6ICAgdWludDMyX3QgZW5hYmxlLCB1aW50MzJfdCBhZGRp dGl2ZV9ibGVuZGluZyk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBwX3Byb2dyYW1fY21fYmlh cykoCjE0NDc0OiAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAoxNDQ3NDogICBzdHJ1Y3QgQ01fYmlh c19wYXJhbXMgKmJpYXNfcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfcmVhZF9z dGF0ZSkoc3RydWN0IGRwcCAqZHBwLCBzdHJ1Y3QgZGNuX2RwcF9zdGF0ZSAqcyk7CjE0NDc0OiAK MTQ0NzQ6ICB2b2lkICgqZHBwX3Jlc2V0KShzdHJ1Y3QgZHBwICpkcHApOwoxNDQ3NDogCjE0NDc0 OiAgdm9pZCAoKmRwcF9zZXRfc2NhbGVyKShzdHJ1Y3QgZHBwICpkcHAsCjE0NDc0OiAgICBjb25z dCBzdHJ1Y3Qgc2NhbGVyX2RhdGEgKnNjbF9kYXRhKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpk cHBfc2V0X3BpeGVsX3N0b3JhZ2VfZGVwdGgpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwLAox NDQ3NDogICAgZW51bSBsYl9waXhlbF9kZXB0aCBkZXB0aCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVj dCBiaXRfZGVwdGhfcmVkdWN0aW9uX3BhcmFtcyAqYml0X2RlcHRoX3BhcmFtcyk7CjE0NDc0OiAK MTQ0NzQ6ICBib29sICgqZHBwX2dldF9vcHRpbWFsX251bWJlcl9vZl90YXBzKSgKMTQ0NzQ6ICAg IHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgIHN0cnVjdCBzY2FsZXJfZGF0YSAqc2NsX2RhdGEs CjE0NDc0OiAgICBjb25zdCBzdHJ1Y3Qgc2NhbGluZ190YXBzICppbl90YXBzKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCpkcHBfc2V0X2dhbXV0X3JlbWFwKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAg KmRwcCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCBkcHBfZ3JwaF9jc2NfYWRqdXN0bWVudCAqYWRq dXN0KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfc2V0X2NzY19kZWZhdWx0KSgKMTQ0NzQ6 ICAgc3RydWN0IGRwcCAqZHBwLAoxNDQ3NDogICBlbnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yc3Bh Y2UpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwcF9zZXRfY3NjX2FkanVzdG1lbnQpKAoxNDQ3 NDogICBzdHJ1Y3QgZHBwICpkcHAsCjE0NDc0OiAgIGNvbnN0IHVpbnQxNl90ICpyZWd2YWwpOwox NDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwcF9wb3dlcl9vbl9yZWdhbW1hX2x1dCkoCjE0NDc0OiAg IHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgYm9vbCBwb3dlcl9vbik7CjE0NDc0OiAKMTQ0NzQ6 ICB2b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1tYV9sdXQpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAq ZHBwLAoxNDQ3NDogICAgY29uc3Qgc3RydWN0IHB3bF9yZXN1bHRfZGF0YSAqcmdiLAoxNDQ3NDog ICAgdWludDMyX3QgbnVtKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfY29uZmlndXJlX3Jl Z2FtbWFfbHV0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgIGJvb2wgaXNf cmFtX2EpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwcF9wcm9ncmFtX3JlZ2FtbWFfbHV0Yl9z ZXR0aW5ncykoCjE0NDc0OiAgICBzdHJ1Y3QgZHBwICpkcHAsCjE0NDc0OiAgICBjb25zdCBzdHJ1 Y3QgcHdsX3BhcmFtcyAqcGFyYW1zKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfcHJvZ3Jh bV9yZWdhbW1hX2x1dGFfc2V0dGluZ3MpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwLAoxNDQ3 NDogICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1tYV9wd2wpKAoxNDQ3NDogICBzdHJ1Y3QgZHBwICpkcHAs CjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMsCjE0NDc0OiAgIGVudW0g b3BwX3JlZ2FtbWEgbW9kZSk7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBwX3Byb2dyYW1fYmlh c19hbmRfc2NhbGUpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwLAoxNDQ3NDogICAgc3RydWN0 IGRjX2JpYXNfYW5kX3NjYWxlICpwYXJhbXMpOwoxNDQ3NDogCjE0NDc0OiAgdm9pZCAoKmRwcF9z ZXRfZGVnYW1tYSkoCjE0NDc0OiAgICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKMTQ0NzQ6ICAgIGVu dW0gaXBwX2RlZ2FtbWFfbW9kZSBtb2RlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfcHJv Z3JhbV9pbnB1dF9sdXQpKAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwX2Jhc2UsCjE0NDc0OiAg ICBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdhbW1hKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpk cHBfcHJvZ3JhbV9kZWdhbW1hX3B3bCkoc3RydWN0IGRwcCAqZHBwX2Jhc2UsCjE0NDc0OiAgICAg ICAgICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6ICB2 b2lkICgqZHBwX3NldHVwKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAoxNDQ3NDog ICAgZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQsCjE0NDc0OiAgICBlbnVtIGV4cGFu c2lvbl9tb2RlIG1vZGUsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY3NjX3RyYW5zZm9ybSBpbnB1dF9j c2NfY29sb3JfbWF0cml4LAoxNDQ3NDogICAgZW51bSBkY19jb2xvcl9zcGFjZSBpbnB1dF9jb2xv cl9zcGFjZSwKMTQ0NzQ6ICAgIHN0cnVjdCBjbnZfYWxwaGFfMmJpdF9sdXQgKmFscGhhXzJiaXRf bHV0KTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpkcHBfZnVsbF9ieXBhc3MpKHN0cnVjdCBkcHAg KmRwcF9iYXNlKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQgKCpzZXRfY3Vyc29yX2F0dHJpYnV0ZXMp KAoxNDQ3NDogICAgc3RydWN0IGRwcCAqZHBwX2Jhc2UsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY3Vy c29yX2F0dHJpYnV0ZXMgKmN1cnNvcl9hdHRyaWJ1dGVzKTsKMTQ0NzQ6IAoxNDQ3NDogIHZvaWQg KCpzZXRfY3Vyc29yX3Bvc2l0aW9uKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAox NDQ3NDogICAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9wb3NpdGlvbiAqcG9zLAoxNDQ3NDogICAg Y29uc3Qgc3RydWN0IGRjX2N1cnNvcl9taV9wYXJhbSAqcGFyYW0sCjE0NDc0OiAgICB1aW50MzJf dCB3aWR0aCwKMTQ0NzQ6ICAgIHVpbnQzMl90IGhlaWdodAoxNDQ3NDogICAgKTsKMTQ0NzQ6IAox NDQ3NDogIHZvaWQgKCpkcHBfc2V0X2hkcl9tdWx0aXBsaWVyKSgKMTQ0NzQ6ICAgIHN0cnVjdCBk cHAgKmRwcF9iYXNlLAoxNDQ3NDogICAgdWludDMyX3QgbXVsdGlwbGllcik7CjE0NDc0OiAKMTQ0 NzQ6ICB2b2lkICgqc2V0X29wdGlvbmFsX2N1cnNvcl9hdHRyaWJ1dGVzKSgKMTQ0NzQ6ICAgIHN0 cnVjdCBkcHAgKmRwcF9iYXNlLAoxNDQ3NDogICAgc3RydWN0IGRwcF9jdXJzb3JfYXR0cmlidXRl cyAqYXR0cik7CjE0NDc0OiAKMTQ0NzQ6ICB2b2lkICgqZHBwX2RwcGNsa19jb250cm9sKSgKMTQ0 NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAoxNDQ3NDogICAgYm9vbCBkcHBjbGtfZGl2LAox NDQ3NDogICAgYm9vbCBlbmFibGUpOwoxNDQ3NDogCjE0NDc0OiAgYm9vbCAoKmRwcF9wcm9ncmFt X2JsbmRfbHV0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgIGNvbnN0IHN0 cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogIGJvb2wgKCpkcHBfcHJvZ3JhbV9zaGFw ZXJfbHV0KSgKMTQ0NzQ6ICAgIHN0cnVjdCBkcHAgKmRwcCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVj dCBwd2xfcGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogIGJvb2wgKCpkcHBfcHJvZ3JhbV8zZGx1dCko CjE0NDc0OiAgICBzdHJ1Y3QgZHBwICpkcHAsCjE0NDc0OiAgICBzdHJ1Y3QgdGV0cmFoZWRyYWxf cGFyYW1zICpwYXJhbXMpOwoxNDQ3NDogIHZvaWQgKCpkcHBfY252X3NldF9hbHBoYV9rZXllciko CjE0NDc0OiAgICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKMTQ0NzQ6ICAgIHN0cnVjdCBjbnZfY29s b3Jfa2V5ZXJfcGFyYW1zICpjb2xvcl9rZXllcik7CjE0NDc0OiB9OwoxNDQ3NDogIyA4NiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgi IDIKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJlc291cmNlX3Bvb2w7CjE0NDc0OiBzdHJ1Y3QgZGNf c3RhdGU7CjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dDsKMTQ0NzQ6IHN0cnVjdCBjbGtf YndfcGFyYW1zOwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcmVzb3VyY2VfZnVuY3MgewoxNDQ3NDog IHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqKnBvb2wpOwoxNDQ3NDogIHZv aWQgKCpsaW5rX2luaXQpKHN0cnVjdCBkY19saW5rICpsaW5rKTsKMTQ0NzQ6ICBzdHJ1Y3QgbGlu a19lbmNvZGVyICooKmxpbmtfZW5jX2NyZWF0ZSkoCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgZW5j b2Rlcl9pbml0X2RhdGEgKmluaXQpOwoxNDQ3NDogIGJvb2wgKCp2YWxpZGF0ZV9iYW5kd2lkdGgp KAoxNDQ3NDogICAgICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3NDogICAgICBzdHJ1Y3QgZGNfc3RhdGUg KmNvbnRleHQsCjE0NDc0OiAgICAgIGJvb2wgZmFzdF92YWxpZGF0ZSk7CjE0NDc0OiAKMTQ0NzQ6 ICBpbnQgKCpwb3B1bGF0ZV9kbWxfcGlwZXMpKAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3 NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAgIGRpc3BsYXlfZTJlX3BpcGVf cGFyYW1zX3N0ICpwaXBlcyk7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjX3N0YXR1cyAoKnZhbGlk YXRlX2dsb2JhbCkoCjE0NDc0OiAgIHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgcGlwZV9jdHggKigqYWNxdWly ZV9pZGxlX3BpcGVfZm9yX2xheWVyKSgKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4 dCwKMTQ0NzQ6ICAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAoxNDQ3NDogICAg c3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNf c3RhdHVzICgqdmFsaWRhdGVfcGxhbmUpKGNvbnN0IHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsIHN0cnVjdCBkY19jYXBzICpjYXBzKTsKMTQ0NzQ6IAoxNDQ3NDogIGVudW0gZGNf c3RhdHVzICgqYWRkX3N0cmVhbV90b19jdHgpKAoxNDQ3NDogICAgc3RydWN0IGRjICpkYywKMTQ0 NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqbmV3X2N0eCwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKmRjX3N0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6ICBlbnVtIGRjX3N0YXR1cyAoKnJl bW92ZV9zdHJlYW1fZnJvbV9jdHgpKAoxNDQ3NDogICAgIHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAg ICAgc3RydWN0IGRjX3N0YXRlICpuZXdfY3R4LAoxNDQ3NDogICAgIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAgZW51bSBkY19zdGF0dXMgKCpnZXRfZGVmYXVsdF9zd2l6 emxlX21vZGUpKAoxNDQ3NDogICAgc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7 CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKigqZmluZF9maXJzdF9mcmVl X21hdGNoX3N0cmVhbV9lbmNfZm9yX2xpbmspKAoxNDQ3NDogICAgc3RydWN0IHJlc291cmNlX2Nv bnRleHQgKnJlc19jdHgsCjE0NDc0OiAgICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9v bCwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAgdm9p ZCAoKnBvcHVsYXRlX2RtbF93cml0ZWJhY2tfZnJvbV9jb250ZXh0KSgKMTQ0NzQ6ICAgIHN0cnVj dCBkYyAqZGMsCjE0NDc0OiAgICBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKMTQ0 NzQ6ICAgIGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcyk7CjE0NDc0OiAKMTQ0NzQ6 ICB2b2lkICgqc2V0X21jaWZfYXJiX3BhcmFtcykoCjE0NDc0OiAgICBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAoxNDQ3NDogICAgZGlzcGxheV9lMmVf cGlwZV9wYXJhbXNfc3QgKnBpcGVzLAoxNDQ3NDogICAgaW50IHBpcGVfY250KTsKMTQ0NzQ6ICB2 b2lkICgqdXBkYXRlX2J3X2JvdW5kaW5nX2JveCkoCjE0NDc0OiAgICBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICAgc3RydWN0IGNsa19id19wYXJhbXMgKmJ3X3BhcmFtcyk7CjE0NDc0OiAKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdWRpb19zdXBwb3J0ewoxNDQ3NDogIGJvb2wgZHBf YXVkaW87CjE0NDc0OiAgYm9vbCBoZG1pX2F1ZGlvX29uX2RvbmdsZTsKMTQ0NzQ6ICBib29sIGhk bWlfYXVkaW9fbmF0aXZlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCByZXNvdXJjZV9wb29sIHsKMTQ0NzQ6ICBzdHJ1Y3QgbWVtX2lucHV0ICptaXNbNl07 CjE0NDc0OiAgc3RydWN0IGh1YnAgKmh1YnBzWzZdOwoxNDQ3NDogIHN0cnVjdCBpbnB1dF9waXhl bF9wcm9jZXNzb3IgKmlwcHNbNl07CjE0NDc0OiAgc3RydWN0IHRyYW5zZm9ybSAqdHJhbnNmb3Jt c1s2XTsKMTQ0NzQ6ICBzdHJ1Y3QgZHBwICpkcHBzWzZdOwoxNDQ3NDogIHN0cnVjdCBvdXRwdXRf cGl4ZWxfcHJvY2Vzc29yICpvcHBzWzZdOwoxNDQ3NDogIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9y ICp0aW1pbmdfZ2VuZXJhdG9yc1s2XTsKMTQ0NzQ6ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKnN0 cmVhbV9lbmNbNiAqIDJdOwoxNDQ3NDogIHN0cnVjdCBodWJidWIgKmh1YmJ1YjsKMTQ0NzQ6ICBz dHJ1Y3QgbXBjICptcGM7CjE0NDc0OiAgc3RydWN0IHBwX3NtdV9mdW5jcyAqcHBfc211OwoxNDQ3 NDogIHN0cnVjdCBkY2VfYXV4ICplbmdpbmVzWzZdOwoxNDQ3NDogIHN0cnVjdCBkY2VfaTJjX2h3 ICpod19pMmNzWzZdOwoxNDQ3NDogIHN0cnVjdCBkY2VfaTJjX3N3ICpzd19pMmNzWzZdOwoxNDQ3 NDogIGJvb2wgaTJjX2h3X2J1ZmZlcl9pbl91c2U7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZHdi YyAqZHdiY1sxXTsKMTQ0NzQ6ICBzdHJ1Y3QgbWNpZl93YiAqbWNpZl93YlsxXTsKMTQ0NzQ6ICBz dHJ1Y3QgewoxNDQ3NDogICB1bnNpZ25lZCBpbnQgZ3NsXzA6MTsKMTQ0NzQ6ICAgdW5zaWduZWQg aW50IGdzbF8xOjE7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBnc2xfMjoxOwoxNDQ3NDogIH0gZ3Ns X2dyb3VwczsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkaXNwbGF5X3N0cmVhbV9jb21wcmVzc29y ICpkc2NzWzZdOwoxNDQ3NDogCjE0NDc0OiAgdW5zaWduZWQgaW50IHBpcGVfY291bnQ7CjE0NDc0 OiAgdW5zaWduZWQgaW50IHVuZGVybGF5X3BpcGVfaW5kZXg7CjE0NDc0OiAgdW5zaWduZWQgaW50 IHN0cmVhbV9lbmNfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgewoxNDQ3NDogICB1bnNp Z25lZCBpbnQgeHRhbGluX2Nsb2NrX2luS2h6OwoxNDQ3NDogICB1bnNpZ25lZCBpbnQgZGNjZ19y ZWZfY2xvY2tfaW5LaHo7CjE0NDc0OiAgIHVuc2lnbmVkIGludCBkY2h1Yl9yZWZfY2xvY2tfaW5L aHo7CjE0NDc0OiAgfSByZWZfY2xvY2tzOwoxNDQ3NDogIHVuc2lnbmVkIGludCB0aW1pbmdfZ2Vu ZXJhdG9yX2NvdW50OwoxNDQ3NDogIHVuc2lnbmVkIGludCBtcGNjX2NvdW50OwoxNDQ3NDogCjE0 NDc0OiAgdW5zaWduZWQgaW50IHdyaXRlYmFja19waXBlX2NvdW50OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBjbG9ja19zb3VyY2UgKmRwX2Nsb2NrX3NvdXJjZTsKMTQ0 NzQ6IAoxNDQ3NDogIHN0cnVjdCBjbG9ja19zb3VyY2UgKmNsb2NrX3NvdXJjZXNbN107CjE0NDc0 OiAgdW5zaWduZWQgaW50IGNsa19zcmNfY291bnQ7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgYXVk aW8gKmF1ZGlvc1s3XTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgYXVkaW9fY291bnQ7CjE0NDc0OiAg c3RydWN0IGF1ZGlvX3N1cHBvcnQgYXVkaW9fc3VwcG9ydDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVj dCBkY2NnICpkY2NnOwoxNDQ3NDogIHN0cnVjdCBpcnFfc2VydmljZSAqaXJxczsKMTQ0NzQ6IAox NDQ3NDogIHN0cnVjdCBhYm0gKmFibTsKMTQ0NzQ6ICBzdHJ1Y3QgZG1jdSAqZG1jdTsKMTQ0NzQ6 ICBzdHJ1Y3QgZG11Yl9wc3IgKnBzcjsKMTQ0NzQ6IAoxNDQ3NDogIGNvbnN0IHN0cnVjdCByZXNv dXJjZV9mdW5jcyAqZnVuY3M7CjE0NDc0OiAgY29uc3Qgc3RydWN0IHJlc291cmNlX2NhcHMgKnJl c19jYXA7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGRjX3NlcnZpY2UgKm9lbV9kZXZpY2U7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGNuX2ZlX2JhbmR3aWR0aCB7CjE0NDc0OiAg aW50IGRwcGNsa19raHo7CjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBz dHJlYW1fcmVzb3VyY2UgewoxNDQ3NDogIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpv cHA7CjE0NDc0OiAgc3RydWN0IGRpc3BsYXlfc3RyZWFtX2NvbXByZXNzb3IgKmRzYzsKMTQ0NzQ6 ICBzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGc7CjE0NDc0OiAgc3RydWN0IHN0cmVhbV9lbmNv ZGVyICpzdHJlYW1fZW5jOwoxNDQ3NDogIHN0cnVjdCBhdWRpbyAqYXVkaW87CjE0NDc0OiAKMTQ0 NzQ6ICBzdHJ1Y3QgcGl4ZWxfY2xrX3BhcmFtcyBwaXhfY2xrX3BhcmFtczsKMTQ0NzQ6ICBzdHJ1 Y3QgZW5jb2Rlcl9pbmZvX2ZyYW1lIGVuY29kZXJfaW5mb19mcmFtZTsKMTQ0NzQ6IAoxNDQ3NDog IHN0cnVjdCBhYm0gKmFibTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90 IGdzbF9ncm91cDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBwbGFuZV9yZXNvdXJj ZSB7CjE0NDc0OiAgc3RydWN0IHNjYWxlcl9kYXRhIHNjbF9kYXRhOwoxNDQ3NDogIHN0cnVjdCBo dWJwICpodWJwOwoxNDQ3NDogIHN0cnVjdCBtZW1faW5wdXQgKm1pOwoxNDQ3NDogIHN0cnVjdCBp bnB1dF9waXhlbF9wcm9jZXNzb3IgKmlwcDsKMTQ0NzQ6ICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm07 CjE0NDc0OiAgc3RydWN0IGRwcCAqZHBwOwoxNDQ3NDogIHVpbnQ4X3QgbXBjY19pbnN0OwoxNDQ3 NDogCjE0NDc0OiAgc3RydWN0IGRjbl9mZV9iYW5kd2lkdGggYnc7CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiB1bmlvbiBwaXBlX3VwZGF0ZV9mbGFncyB7CjE0NDc0OiAgc3RydWN0IHsKMTQ0NzQ6 ICAgdWludDMyX3QgZW5hYmxlIDogMTsKMTQ0NzQ6ICAgdWludDMyX3QgZGlzYWJsZSA6IDE7CjE0 NDc0OiAgIHVpbnQzMl90IG9kbSA6IDE7CjE0NDc0OiAgIHVpbnQzMl90IGdsb2JhbF9zeW5jIDog MTsKMTQ0NzQ6ICAgdWludDMyX3Qgb3BwX2NoYW5nZWQgOiAxOwoxNDQ3NDogICB1aW50MzJfdCB0 Z19jaGFuZ2VkIDogMTsKMTQ0NzQ6ICAgdWludDMyX3QgbXBjYyA6IDE7CjE0NDc0OiAgIHVpbnQz Ml90IGRwcGNsayA6IDE7CjE0NDc0OiAgIHVpbnQzMl90IGh1YnBfaW50ZXJkZXBlbmRlbnQgOiAx OwoxNDQ3NDogICB1aW50MzJfdCBodWJwX3JxX2RsZ190dHUgOiAxOwoxNDQ3NDogICB1aW50MzJf dCBnYW11dF9yZW1hcCA6IDE7CjE0NDc0OiAgIHVpbnQzMl90IHNjYWxlciA6IDE7CjE0NDc0OiAg IHVpbnQzMl90IHZpZXdwb3J0IDogMTsKMTQ0NzQ6ICB9IGJpdHM7CjE0NDc0OiAgdWludDMyX3Qg cmF3OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHBpcGVfY3R4IHsKMTQ0NzQ6ICBz dHJ1Y3QgZGNfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwoxNDQ3NDogIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbTsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBwbGFuZV9yZXNvdXJjZSBw bGFuZV9yZXM7CjE0NDc0OiAgc3RydWN0IHN0cmVhbV9yZXNvdXJjZSBzdHJlYW1fcmVzOwoxNDQ3 NDogCjE0NDc0OiAgc3RydWN0IGNsb2NrX3NvdXJjZSAqY2xvY2tfc291cmNlOwoxNDQ3NDogCjE0 NDc0OiAgc3RydWN0IHBsbF9zZXR0aW5ncyBwbGxfc2V0dGluZ3M7CjE0NDc0OiAKMTQ0NzQ6ICB1 aW50OF90IHBpcGVfaWR4OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHBpcGVfY3R4ICp0b3BfcGlw ZTsKMTQ0NzQ6ICBzdHJ1Y3QgcGlwZV9jdHggKmJvdHRvbV9waXBlOwoxNDQ3NDogIHN0cnVjdCBw aXBlX2N0eCAqbmV4dF9vZG1fcGlwZTsKMTQ0NzQ6ICBzdHJ1Y3QgcGlwZV9jdHggKnByZXZfb2Rt X3BpcGU7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2Rs Z19yZWdzX3N0IGRsZ19yZWdzOwoxNDQ3NDogIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9y ZWdzX3N0IHR0dV9yZWdzOwoxNDQ3NDogIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX3JlZ3Nf c3QgcnFfcmVnczsKMTQ0NzQ6ICBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX2Rlc3RfcGFy YW1zX3N0IHBpcGVfZGxnX3BhcmFtOwoxNDQ3NDogCjE0NDc0OiAgdW5pb24gcGlwZV91cGRhdGVf ZmxhZ3MgdXBkYXRlX2ZsYWdzOwoxNDQ3NDogIHN0cnVjdCBkd2JjICpkd2JjOwoxNDQ3NDogIHN0 cnVjdCBtY2lmX3diICptY2lmX3diOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJl c291cmNlX2NvbnRleHQgewoxNDQ3NDogIHN0cnVjdCBwaXBlX2N0eCBwaXBlX2N0eFs2XTsKMTQ0 NzQ6ICBib29sIGlzX3N0cmVhbV9lbmNfYWNxdWlyZWRbNiAqIDJdOwoxNDQ3NDogIGJvb2wgaXNf YXVkaW9fYWNxdWlyZWRbNl07CjE0NDc0OiAgdWludDhfdCBjbG9ja19zb3VyY2VfcmVmX2NvdW50 WzddOwoxNDQ3NDogIHVpbnQ4X3QgZHBfY2xvY2tfc291cmNlX3JlZl9jb3VudDsKMTQ0NzQ6ICBi b29sIGlzX2RzY19hY3F1aXJlZFs2XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk Y2VfYndfb3V0cHV0IHsKMTQ0NzQ6ICBib29sIGNwdWNfc3RhdGVfY2hhbmdlX2VuYWJsZTsKMTQ0 NzQ6ICBib29sIGNwdXBfc3RhdGVfY2hhbmdlX2VuYWJsZTsKMTQ0NzQ6ICBib29sIHN0dXR0ZXJf bW9kZV9lbmFibGU7CjE0NDc0OiAgYm9vbCBuYnBfc3RhdGVfY2hhbmdlX2VuYWJsZTsKMTQ0NzQ6 ICBib29sIGFsbF9kaXNwbGF5c19pbl9zeW5jOwoxNDQ3NDogIHN0cnVjdCBkY2Vfd2F0ZXJtYXJr cyB1cmdlbnRfd21fbnNbNl07CjE0NDc0OiAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXJf ZXhpdF93bV9uc1s2XTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNlX3dhdGVybWFya3Mgc3R1dHRlcl9lbnRy eV93bV9uc1s2XTsKMTQ0NzQ6ICBzdHJ1Y3QgZGNlX3dhdGVybWFya3MgbmJwX3N0YXRlX2NoYW5n ZV93bV9uc1s2XTsKMTQ0NzQ6ICBpbnQgc2Nsa19raHo7CjE0NDc0OiAgaW50IHNjbGtfZGVlcF9z bGVlcF9raHo7CjE0NDc0OiAgaW50IHljbGtfa2h6OwoxNDQ3NDogIGludCBkaXNwY2xrX2toejsK MTQ0NzQ6ICBpbnQgYmxhY2tvdXRfcmVjb3ZlcnlfdGltZV91czsKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IHN0cnVjdCBkY25fYndfd3JpdGViYWNrIHsKMTQ0NzQ6ICBzdHJ1Y3QgbWNpZl9hcmJf cGFyYW1zIG1jaWZfd2JfYXJiWzFdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRj bl9id19vdXRwdXQgewoxNDQ3NDogIHN0cnVjdCBkY19jbG9ja3MgY2xrOwoxNDQ3NDogIHN0cnVj dCBkY25fd2F0ZXJtYXJrX3NldCB3YXRlcm1hcmtzOwoxNDQ3NDogIHN0cnVjdCBkY25fYndfd3Jp dGViYWNrIGJ3X3dyaXRlYmFjazsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGJ3X291 dHB1dCB7CjE0NDc0OiAgc3RydWN0IGRjbl9id19vdXRwdXQgZGNuOwoxNDQ3NDogIHN0cnVjdCBk Y2VfYndfb3V0cHV0IGRjZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBid19jb250 ZXh0IHsKMTQ0NzQ6ICB1bmlvbiBid19vdXRwdXQgYnc7CjE0NDc0OiAgc3RydWN0IGRpc3BsYXlf bW9kZV9saWIgZG1sOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzYxICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIKMTQ0NzQ6IHN0cnVjdCBk Y19zdGF0ZSB7CjE0NDc0OiAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtc1s2XTsKMTQ0 NzQ6ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXR1cyBzdHJlYW1fc3RhdHVzWzZdOwoxNDQ3NDogIHVp bnQ4X3Qgc3RyZWFtX2NvdW50OwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IHJlc291cmNlX2NvbnRl eHQgcmVzX2N0eDsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBid19jb250ZXh0IGJ3X2N0eDsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRtX3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiBw cF9kaXNwbGF5X2NmZzsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY25fYndfaW50ZXJuYWxfdmFy cyBkY25fYndfdmFyczsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGNsa19tZ3IgKmNs a19tZ3I7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKMTQ0NzQ6IH07CjE0 NDc0OiAjIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L3Jlc291cmNlLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9kYWxfYXNpY19pZC5oIiAxCjE0NDc0OiAjIDE2OCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX2FzaWNf aWQuaCIKMTQ0NzQ6IGVudW0gewoxNDQ3NDogIE5WX05BVkkxMF9QX0EwID0gMSwKMTQ0NzQ6ICBO Vl9OQVZJMTJfUF9BMCA9IDEwLAoxNDQ3NDogIE5WX05BVkkxNF9NX0EwID0gMjAsCjE0NDc0OiAg TlZfVU5LTk9XTiA9IDB4RkYKMTQ0NzQ6IH07CjE0NDc0OiAjIDMxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL3Jlc291cmNlLmgiIDIKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNlX3ZlcnNp b24gcmVzb3VyY2VfcGFyc2VfYXNpY19pZCgKMTQ0NzQ6ICAgc3RydWN0IGh3X2FzaWNfaWQgYXNp Y19pZCk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCByZXNvdXJjZV9jYXBzIHsKMTQ0NzQ6ICBpbnQg bnVtX3RpbWluZ19nZW5lcmF0b3I7CjE0NDc0OiAgaW50IG51bV9vcHA7CjE0NDc0OiAgaW50IG51 bV92aWRlb19wbGFuZTsKMTQ0NzQ6ICBpbnQgbnVtX2F1ZGlvOwoxNDQ3NDogIGludCBudW1fc3Ry ZWFtX2VuY29kZXI7CjE0NDc0OiAgaW50IG51bV9wbGw7CjE0NDc0OiAgaW50IG51bV9kd2I7CjE0 NDc0OiAgaW50IG51bV9kZGM7CjE0NDc0OiAgaW50IG51bV92bWlkOwoxNDQ3NDogIGludCBudW1f ZHNjOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJlc291cmNlX3N0cmFwcyB7CjE0 NDc0OiAgdWludDMyX3QgaGRtaV9kaXNhYmxlOwoxNDQ3NDogIHVpbnQzMl90IGRjX3BpbnN0cmFw c19hdWRpbzsKMTQ0NzQ6ICB1aW50MzJfdCBhdWRpb19zdHJlYW1fbnVtYmVyOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHJlc291cmNlX2NyZWF0ZV9mdW5jcyB7CjE0NDc0OiAgdm9p ZCAoKnJlYWRfZGNlX3N0cmFwcykoCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCBz dHJ1Y3QgcmVzb3VyY2Vfc3RyYXBzICpzdHJhcHMpOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGF1 ZGlvICooKmNyZWF0ZV9hdWRpbykoCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1 bnNpZ25lZCBpbnQgaW5zdCk7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIg KigqY3JlYXRlX3N0cmVhbV9lbmNvZGVyKSgKMTQ0NzQ6ICAgIGVudW0gZW5naW5lX2lkIGVuZ19p ZCwgc3RydWN0IGRjX2NvbnRleHQgKmN0eCk7CjE0NDc0OiAKMTQ0NzQ6ICBzdHJ1Y3QgZGNlX2h3 c2VxICooKmNyZWF0ZV9od3NlcSkoCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgcmVzb3VyY2VfY29uc3RydWN0KAoxNDQ3NDog IHVuc2lnbmVkIGludCBudW1fdmlydHVhbF9saW5rcywKMTQ0NzQ6ICBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogIHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAoxNDQ3NDogIGNvbnN0IHN0cnVjdCBy ZXNvdXJjZV9jcmVhdGVfZnVuY3MgKmNyZWF0ZV9mdW5jcyk7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCByZXNvdXJjZV9wb29sICpkY19jcmVhdGVfcmVzb3VyY2VfcG9vbChzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGNfaW5pdF9kYXRhICppbml0X2RhdGEsCjE0 NDc0OiAgICAgICAgICAgIGVudW0gZGNlX3ZlcnNpb24gZGNfdmVyc2lvbik7CjE0NDc0OiAKMTQ0 NzQ6IHZvaWQgZGNfZGVzdHJveV9yZXNvdXJjZV9wb29sKHN0cnVjdCBkYyAqZGMpOwoxNDQ3NDog CjE0NDc0OiBlbnVtIGRjX3N0YXR1cyByZXNvdXJjZV9tYXBfcG9vbF9yZXNvdXJjZXMoCjE0NDc0 OiAgIGNvbnN0IHN0cnVjdCBkYyAqZGMsCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4 dCwKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAoxNDQ3 NDogYm9vbCByZXNvdXJjZV9idWlsZF9zY2FsaW5nX3BhcmFtcyhzdHJ1Y3QgcGlwZV9jdHggKnBp cGVfY3R4KTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBkY19zdGF0dXMgcmVzb3VyY2VfYnVpbGRfc2Nh bGluZ19wYXJhbXNfZm9yX2NvbnRleHQoCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkYyAqZGMsCjE0 NDc0OiAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcmVz b3VyY2VfYnVpbGRfaW5mb19mcmFtZShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsKMTQ0NzQ6 IAoxNDQ3NDogdm9pZCByZXNvdXJjZV91bnJlZmVyZW5jZV9jbG9ja19zb3VyY2UoCjE0NDc0OiAg IHN0cnVjdCByZXNvdXJjZV9jb250ZXh0ICpyZXNfY3R4LAoxNDQ3NDogICBjb25zdCBzdHJ1Y3Qg cmVzb3VyY2VfcG9vbCAqcG9vbCwKMTQ0NzQ6ICAgc3RydWN0IGNsb2NrX3NvdXJjZSAqY2xvY2tf c291cmNlKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCByZXNvdXJjZV9yZWZlcmVuY2VfY2xvY2tfc291 cmNlKAoxNDQ3NDogICBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKMTQ0NzQ6ICAg Y29uc3Qgc3RydWN0IHJlc291cmNlX3Bvb2wgKnBvb2wsCjE0NDc0OiAgIHN0cnVjdCBjbG9ja19z b3VyY2UgKmNsb2NrX3NvdXJjZSk7CjE0NDc0OiAKMTQ0NzQ6IGludCByZXNvdXJjZV9nZXRfY2xv Y2tfc291cmNlX3JlZmVyZW5jZSgKMTQ0NzQ6ICAgc3RydWN0IHJlc291cmNlX2NvbnRleHQgKnJl c19jdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAoxNDQ3NDog ICBzdHJ1Y3QgY2xvY2tfc291cmNlICpjbG9ja19zb3VyY2UpOwoxNDQ3NDogCjE0NDc0OiBib29s IHJlc291cmNlX2FyZV9zdHJlYW1zX3RpbWluZ19zeW5jaHJvbml6YWJsZSgKMTQ0NzQ6ICAgc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtMSwKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0cmVhbV9z dGF0ZSAqc3RyZWFtMik7CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbG9ja19zb3VyY2UgKnJlc291 cmNlX2ZpbmRfdXNlZF9jbGtfc3JjX2Zvcl9zaGFyaW5nKAoxNDQ3NDogICBzdHJ1Y3QgcmVzb3Vy Y2VfY29udGV4dCAqcmVzX2N0eCwKMTQ0NzQ6ICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBjbG9ja19zb3VyY2UgKmRjX3Jlc291cmNlX2ZpbmRfZmly c3RfZnJlZV9wbGwoCjE0NDc0OiAgIHN0cnVjdCByZXNvdXJjZV9jb250ZXh0ICpyZXNfY3R4LAox NDQ3NDogICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9vbCk7CjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBwaXBlX2N0eCAqcmVzb3VyY2VfZ2V0X2hlYWRfcGlwZV9mb3Jfc3RyZWFtKAoxNDQ3 NDogICBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKMTQ0NzQ6ICAgc3RydWN0IGRj X3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCByZXNvdXJjZV9hdHRh Y2hfc3VyZmFjZXNfdG9fY29udGV4dCgKMTQ0NzQ6ICAgc3RydWN0IGRjX3BsYW5lX3N0YXRlICpj b25zdCAqcGxhbmVfc3RhdGUsCjE0NDc0OiAgIGludCBzdXJmYWNlX2NvdW50LAoxNDQ3NDogICBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0sCjE0NDc0OiAgIHN0cnVjdCBkY19zdGF0 ZSAqY29udGV4dCwKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IHJlc291cmNlX3Bvb2wgKnBvb2wpOwox NDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcGlwZV9jdHggKmZpbmRfaWRsZV9zZWNvbmRhcnlfcGlwZSgK MTQ0NzQ6ICAgc3RydWN0IHJlc291cmNlX2NvbnRleHQgKnJlc19jdHgsCjE0NDc0OiAgIGNvbnN0 IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgcGlwZV9j dHggKnByaW1hcnlfcGlwZSk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgcmVzb3VyY2VfaXNfc3RyZWFt X3VuY2hhbmdlZCgKMTQ0NzQ6ICBzdHJ1Y3QgZGNfc3RhdGUgKm9sZF9jb250ZXh0LCBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoxNDQ3NDogCjE0NDc0OiBib29sIHJlc291cmNlX3Zh bGlkYXRlX2F0dGFjaF9zdXJmYWNlcygKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3ZhbGlkYXRp b25fc2V0IHNldFtdLAoxNDQ3NDogICBpbnQgc2V0X2NvdW50LAoxNDQ3NDogICBjb25zdCBzdHJ1 Y3QgZGNfc3RhdGUgKm9sZF9jb250ZXh0LAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRl eHQsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCByZXNvdXJjZV92YWxpZGF0ZV9jdHhfdXBkYXRlX3BvaW50ZXJfYWZ0ZXJfY29w eSgKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0IGRjX3N0YXRlICpzcmNfY3R4LAoxNDQ3NDogICBzdHJ1 Y3QgZGNfc3RhdGUgKmRzdF9jdHgpOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX3N0YXR1cyByZXNv dXJjZV9tYXBfY2xvY2tfcmVzb3VyY2VzKAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGNfc3RhdHVzIHJlc291cmNl X21hcF9waHlfY2xvY2tfcmVzb3VyY2VzKAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGMgKmRjLAox NDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAgIHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgcGlwZV9uZWVkX3JlcHJvZ3Jh bSgKMTQ0NzQ6ICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eF9vbGQsCjE0NDc0OiAgIHN0cnVj dCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIHJlc291cmNlX2J1aWxk X2JpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zKHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVh bSwKMTQ0NzQ6ICAgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zICpmbXRfYml0X2Rl cHRoKTsKMTQ0NzQ6IAoxNDQ3NDogdm9pZCB1cGRhdGVfYXVkaW9fdXNhZ2UoCjE0NDc0OiAgIHN0 cnVjdCByZXNvdXJjZV9jb250ZXh0ICpyZXNfY3R4LAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgcmVz b3VyY2VfcG9vbCAqcG9vbCwKMTQ0NzQ6ICAgc3RydWN0IGF1ZGlvICphdWRpbywKMTQ0NzQ6ICAg Ym9vbCBhY3F1aXJlZCk7CjE0NDc0OiAKMTQ0NzQ6IHVuc2lnbmVkIGludCByZXNvdXJjZV9waXhl bF9mb3JtYXRfdG9fYnBwKGVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQgZm9ybWF0KTsKMTQ0NzQ6 IAoxNDQ3NDogdm9pZCBnZXRfYXVkaW9fY2hlY2soc3RydWN0IGF1ZGlvX2luZm8gKmF1ZF9tb2Rl cywKMTQ0NzQ6ICBzdHJ1Y3QgYXVkaW9fY2hlY2sgKmF1ZF9jaGspOwoxNDQ3NDogIyAzNyAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9jbGtfbWdyX2lu dGVybmFsLmgiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZGVudGlzdF9i YXNlX2RpdmlkZXJfaWQgewoxNDQ3NDogIERFTlRJU1RfQkFTRV9ESURfMSA9IDB4MDgsCjE0NDc0 OiAgREVOVElTVF9CQVNFX0RJRF8yID0gMHg0MCwKMTQ0NzQ6ICBERU5USVNUX0JBU0VfRElEXzMg PSAweDYwLAoxNDQ3NDogIERFTlRJU1RfQkFTRV9ESURfNCA9IDB4N2UsCjE0NDc0OiAgREVOVElT VF9NQVhfRElEID0gMHg3ZgoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGRl bnRpc3RfZGl2aWRlcl9yYW5nZSB7CjE0NDc0OiAgREVOVElTVF9ESVZJREVSX1JBTkdFXzFfU1RB UlQgPSA4LAoxNDQ3NDogIERFTlRJU1RfRElWSURFUl9SQU5HRV8xX1NURVAgPSAxLAoxNDQ3NDog IERFTlRJU1RfRElWSURFUl9SQU5HRV8yX1NUQVJUID0gNjQsCjE0NDc0OiAgREVOVElTVF9ESVZJ REVSX1JBTkdFXzJfU1RFUCA9IDIsCjE0NDc0OiAgREVOVElTVF9ESVZJREVSX1JBTkdFXzNfU1RB UlQgPSAxMjgsCjE0NDc0OiAgREVOVElTVF9ESVZJREVSX1JBTkdFXzNfU1RFUCA9IDQsCjE0NDc0 OiAgREVOVElTVF9ESVZJREVSX1JBTkdFXzRfU1RBUlQgPSAyNDgsCjE0NDc0OiAgREVOVElTVF9E SVZJREVSX1JBTkdFXzRfU1RFUCA9IDI2NCwKMTQ0NzQ6ICBERU5USVNUX0RJVklERVJfUkFOR0Vf U0NBTEVfRkFDVE9SID0gNAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTUxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3JfaW50ZXJuYWwuaCIKMTQ0 NzQ6IHN0cnVjdCBjbGtfbWdyX3NoaWZ0IHsKMTQ0NzQ6ICB1aW50OF90IERQUkVGQ0xLX1NSQ19T RUw7IHVpbnQ4X3QgREVOVElTVF9EUFJFRkNMS19XRElWSURFUjsgdWludDhfdCBERU5USVNUX0RJ U1BDTEtfV0RJVklERVI7IHVpbnQ4X3QgREVOVElTVF9ESVNQQ0xLX0NIR19ET05FOwoxNDQ3NDog IHVpbnQ4X3QgREVOVElTVF9EUFBDTEtfV0RJVklERVI7IHVpbnQ4X3QgREVOVElTVF9EUFBDTEtf Q0hHX0RPTkU7IHVpbnQ4X3QgRmJNdWx0X2ludDsgdWludDhfdCBGYk11bHRfZnJhYzsKMTQ0NzQ6 ICB1aW50MzJfdCBDT05URU5UOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19t Z3JfbWFzayB7CjE0NDc0OiAgdWludDMyX3QgRFBSRUZDTEtfU1JDX1NFTDsgdWludDMyX3QgREVO VElTVF9EUFJFRkNMS19XRElWSURFUjsgdWludDMyX3QgREVOVElTVF9ESVNQQ0xLX1dESVZJREVS OyB1aW50MzJfdCBERU5USVNUX0RJU1BDTEtfQ0hHX0RPTkU7CjE0NDc0OiAgdWludDMyX3QgREVO VElTVF9EUFBDTEtfV0RJVklERVI7IHVpbnQzMl90IERFTlRJU1RfRFBQQ0xLX0NIR19ET05FOyB1 aW50MzJfdCBGYk11bHRfaW50OyB1aW50MzJfdCBGYk11bHRfZnJhYzsKMTQ0NzQ6ICB1aW50MzJf dCBDT05URU5UOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19tZ3JfcmVnaXN0 ZXJzIHsKMTQ0NzQ6ICB1aW50MzJfdCBEUFJFRkNMS19DTlRMOwoxNDQ3NDogIHVpbnQzMl90IERF TlRJU1RfRElTUENMS19DTlRMOwoxNDQ3NDogCjE0NDc0OiAgdWludDMyX3QgQ0xLM19DTEsyX0RG U19DTlRMOwoxNDQ3NDogIHVpbnQzMl90IENMSzNfQ0xLX1BMTF9SRVE7CjE0NDc0OiAKMTQ0NzQ6 ICB1aW50MzJfdCBNUDFfU01OX0MyUE1TR182NzsKMTQ0NzQ6ICB1aW50MzJfdCBNUDFfU01OX0My UE1TR184MzsKMTQ0NzQ6ICB1aW50MzJfdCBNUDFfU01OX0MyUE1TR185MTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gY2xvY2tfdHlwZSB7CjE0NDc0OiAgY2xvY2tfdHlwZV9kaXNwY2xr ID0gMSwKMTQ0NzQ6ICBjbG9ja190eXBlX2RjZmNsaywKMTQ0NzQ6ICBjbG9ja190eXBlX3NvY2Ns aywKMTQ0NzQ6ICBjbG9ja190eXBlX3BpeGVsY2xrLAoxNDQ3NDogIGNsb2NrX3R5cGVfcGh5Y2xr LAoxNDQ3NDogIGNsb2NrX3R5cGVfZHBwY2xrLAoxNDQ3NDogIGNsb2NrX3R5cGVfZmNsaywKMTQ0 NzQ6ICBjbG9ja190eXBlX2RjZmRzY2xrLAoxNDQ3NDogIGNsb2NrX3R5cGVfZHNjY2xrLAoxNDQ3 NDogIGNsb2NrX3R5cGVfdWNsaywKMTQ0NzQ6ICBjbG9ja190eXBlX2RyYW1jbGssCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzdGF0ZV9kZXBlbmRlbnRfY2xvY2tzIHsK MTQ0NzQ6ICBpbnQgZGlzcGxheV9jbGtfa2h6OwoxNDQ3NDogIGludCBwaXhlbF9jbGtfa2h6Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgewoxNDQ3NDog IHN0cnVjdCBjbGtfbWdyIGJhc2U7CjE0NDc0OiAgaW50IHNtdV92ZXI7CjE0NDc0OiAgc3RydWN0 IHBwX3NtdV9mdW5jcyAqcHBfc211OwoxNDQ3NDogIHN0cnVjdCBjbGtfbWdyX2ludGVybmFsX2Z1 bmNzICpmdW5jczsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBkY2NnICpkY2NnOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgY29u c3Qgc3RydWN0IGNsa19tZ3JfcmVnaXN0ZXJzICpyZWdzOwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBj bGtfbWdyX3NoaWZ0ICpjbGtfbWdyX3NoaWZ0OwoxNDQ3NDogIGNvbnN0IHN0cnVjdCBjbGtfbWdy X21hc2sgKmNsa19tZ3JfbWFzazsKMTQ0NzQ6IAoxNDQ3NDogIHN0cnVjdCBzdGF0ZV9kZXBlbmRl bnRfY2xvY2tzIG1heF9jbGtzX2J5X3N0YXRlW0RNX1BQX0NMT0NLU19NQVhfU1RBVEVTXTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBib29sIGRmc19ieXBhc3NfZW5hYmxlZDsKMTQ0 NzQ6IAoxNDQ3NDogIGJvb2wgZGZzX2J5cGFzc19hY3RpdmU7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50 MzJfdCBkZnNfcmVmX2ZyZXFfa2h6OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgaW50IGRmc19ieXBhc3NfZGlzcF9jbGs7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgYm9vbCBzc19vbl9kcHJlZmNsazsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog IGJvb2wgeGdtaV9lbmFibGVkOwoxNDQ3NDogIyAyNTIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5hbC5oIgoxNDQ3NDogIGlu dCBkcHJlZmNsa19zc19wZXJjZW50YWdlOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGludCBkcHJlZmNsa19zc19kaXZpZGVyOwoxNDQ3NDog CjE0NDc0OiAgZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgbWF4X2Nsa3Nfc3RhdGU7CjE0NDc0OiAg ZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgY3VyX21pbl9jbGtzX3N0YXRlOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19tZ3JfaW50ZXJuYWxfZnVuY3MgewoxNDQ3NDogIGludCAo KnNldF9kaXNwY2xrKShzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVl c3RlZF9kaXNwY2xrX2toeik7CjE0NDc0OiAgaW50ICgqc2V0X2RwcmVmY2xrKShzdHJ1Y3QgY2xr X21ncl9pbnRlcm5hbCAqY2xrX21ncik7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNzggIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5h bC5oIgoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBzaG91bGRfc2V0X2Nsb2NrKGJvb2wgc2FmZV90b19sb3dlciwgaW50 IGNhbGNfY2xrLCBpbnQgY3VyX2NsaykKMTQ0NzQ6IHsKMTQ0NzQ6ICByZXR1cm4gKChzYWZlX3Rv X2xvd2VyICYmIGNhbGNfY2xrIDwgY3VyX2NsaykgfHwgY2FsY19jbGsgPiBjdXJfY2xrKTsKMTQ0 NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBzaG91bGRfdXBkYXRlX3BzdGF0ZV9zdXBwb3J0KGJv b2wgc2FmZV90b19sb3dlciwgYm9vbCBjYWxjX3N1cHBvcnQsIGJvb2wgY3VyX3N1cHBvcnQpCjE0 NDc0OiB7CjE0NDc0OiAgaWYgKGN1cl9zdXBwb3J0ICE9IGNhbGNfc3VwcG9ydCkgewoxNDQ3NDog ICBpZiAoY2FsY19zdXBwb3J0ID09IHRydWUgJiYgc2FmZV90b19sb3dlcikKMTQ0NzQ6ICAgIHJl dHVybiB0cnVlOwoxNDQ3NDogICBlbHNlIGlmIChjYWxjX3N1cHBvcnQgPT0gZmFsc2UgJiYgIXNh ZmVfdG9fbG93ZXIpCjE0NDc0OiAgICByZXR1cm4gdHJ1ZTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0 NzQ6ICByZXR1cm4gZmFsc2U7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IGludCBjbGtfbWdyX2hl bHBlcl9nZXRfYWN0aXZlX2Rpc3BsYXlfY250KAoxNDQ3NDogICBzdHJ1Y3QgZGMgKmRjLAoxNDQ3 NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoxNDQ3NDogIyAyOCAiZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIg MgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjAvZGNuMjBfY2xrX21nci5oIiAxCjE0NDc0OiAj IDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9k Y24yMC9kY24yMF9jbGtfbWdyLmgiCjE0NDc0OiB2b2lkIGRjbjJfdXBkYXRlX2Nsb2NrcyhzdHJ1 Y3QgY2xrX21nciAqZGNjZywKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKMTQ0 NzQ6ICAgIGJvb2wgc2FmZV90b19sb3dlcik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNuMl91cGRh dGVfY2xvY2tzX2ZwZ2Eoc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IsCjE0NDc0OiAgICBzdHJ1Y3Qg ZGNfc3RhdGUgKmNvbnRleHQsCjE0NDc0OiAgICBib29sIHNhZmVfdG9fbG93ZXIpOwoxNDQ3NDog dm9pZCBkY24yMF91cGRhdGVfY2xvY2tzX3VwZGF0ZV9kcHBfZHRvKHN0cnVjdCBjbGtfbWdyX2lu dGVybmFsICpjbGtfbWdyLAoxNDQ3NDogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsIGJvb2wg c2FmZV90b19sb3dlcik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNuMl9pbml0X2Nsb2NrcyhzdHJ1 Y3QgY2xrX21nciAqY2xrX21ncik7CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNuMjBfY2xrX21ncl9j b25zdHJ1Y3Qoc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgc3RydWN0IGNsa19tZ3Jf aW50ZXJuYWwgKmNsa19tZ3IsCjE0NDc0OiAgIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSwK MTQ0NzQ6ICAgc3RydWN0IGRjY2cgKmRjY2cpOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBkZW50 aXN0X2dldF9kaWRfZnJvbV9kaXZpZGVyKGludCBkaXZpZGVyKTsKMTQ0NzQ6IAoxNDQ3NDogdm9p ZCBkY24yX2dldF9jbG9jayhzdHJ1Y3QgY2xrX21nciAqY2xrX21nciwKMTQ0NzQ6ICAgc3RydWN0 IGRjX3N0YXRlICpjb250ZXh0LAoxNDQ3NDogICAgZW51bSBkY19jbG9ja190eXBlIGNsb2NrX3R5 cGUsCjE0NDc0OiAgICBzdHJ1Y3QgZGNfY2xvY2tfY29uZmlnICpjbG9ja19jZmcpOwoxNDQ3NDog CjE0NDc0OiB2b2lkIGRjbjIwX3VwZGF0ZV9jbG9ja3NfdXBkYXRlX2RlbnRpc3Qoc3RydWN0IGNs a19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRjbjJfcmVhZF9j bG9ja3NfZnJvbV9od19kZW50aXN0KHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UpOwoxNDQ3 NDogIyAzMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdy L2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgoxNDQ3NDogIyAxICJkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5oIiAxCjE0NDc0OiAj IDI5ICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNu MjEvcm5fY2xrX21nci5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIgMQoxNDQ3NDogIyAzMCAiZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3Iu aCIgMgoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBybl9jbGtfcmVnaXN0ZXJzIHsKMTQ0 NzQ6ICB1aW50MzJfdCBDTEsxX0NMSzBfQ1VSUkVOVF9DTlQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiB2b2lkIHJuX2Nsa19tZ3JfY29uc3RydWN0KHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0 NDc0OiAgIHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyLAoxNDQ3NDogICBzdHJ1Y3Qg cHBfc211X2Z1bmNzICpwcF9zbXUsCjE0NDc0OiAgIHN0cnVjdCBkY2NnICpkY2NnKTsKMTQ0NzQ6 ICMgMzIgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9k Y24yMS9ybl9jbGtfbWdyLmMiIDIKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAjIDEgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjZTEwMC9kY2VfY2xr X21nci5oIiAxCjE0NDc0OiAjIDMzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvY2xrX21nci9kY2UxMDAvZGNlX2Nsa19tZ3IuaCIKMTQ0NzQ6IGludCBkY2VfYWRq dXN0X2RwX3JlZl9mcmVxX2Zvcl9zcyhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncl9k Y2UsIGludCBkcF9yZWZfY2xrX2toeik7CjE0NDc0OiBpbnQgZGNlX2dldF9kcF9yZWZfZnJlcV9r aHooc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSk7CjE0NDc0OiBlbnVtIGRtX3BwX2Nsb2Nr c19zdGF0ZSBkY2VfZ2V0X3JlcXVpcmVkX2Nsb2Nrc19zdGF0ZSgKMTQ0NzQ6ICBzdHJ1Y3QgY2xr X21nciAqY2xrX21ncl9iYXNlLAoxNDQ3NDogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CjE0 NDc0OiAKMTQ0NzQ6IHVpbnQzMl90IGRjZV9nZXRfbWF4X3BpeGVsX2Nsb2NrX2Zvcl9hbGxfcGF0 aHMoc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lk IGRjZV9jbGtfbWdyX2NvbnN0cnVjdCgKMTQ0NzQ6ICAgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwK MTQ0NzQ6ICAgc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3JfZGNlKTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBkY2VfY2xvY2tfcmVhZF9zc19pbmZvKHN0cnVjdCBjbGtfbWdyX2ludGVybmFs ICpkY2NnX2RjZSk7CjE0NDc0OiAKMTQ0NzQ6IGludCBkY2UxMl9nZXRfZHBfcmVmX2ZyZXFfa2h6 KHN0cnVjdCBjbGtfbWdyICpkY2NnKTsKMTQ0NzQ6IAoxNDQ3NDogaW50IGRjZV9zZXRfY2xvY2so CjE0NDc0OiAgc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwKMTQ0NzQ6ICBpbnQgcmVxdWVz dGVkX2Nsa19raHopOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZGNlX2Nsa19tZ3JfZGVz dHJveShzdHJ1Y3QgY2xrX21nciAqKmNsa19tZ3IpOwoxNDQ3NDogCjE0NDc0OiBpbnQgZGVudGlz dF9nZXRfZGl2aWRlcl9mcm9tX2RpZChpbnQgZGlkKTsKMTQ0NzQ6ICMgMzUgImRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMi IDIKMTQ0NzQ6ICMgMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9j bGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3JfdmJpb3Nfc211LmgiIDEKMTQ0NzQ6ICMgMjkgImRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtf bWdyX3ZiaW9zX3NtdS5oIgoxNDQ3NDogaW50IHJuX3ZiaW9zX3NtdV9nZXRfc211X3ZlcnNpb24o c3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOwoxNDQ3NDogaW50IHJuX3ZiaW9zX3Nt dV9zZXRfZGlzcGNsayhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVl c3RlZF9kaXNwY2xrX2toeik7CjE0NDc0OiBpbnQgcm5fdmJpb3Nfc211X3NldF9kcHJlZmNsayhz dHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncik7CjE0NDc0OiBpbnQgcm5fdmJpb3Nfc211 X3NldF9oYXJkX21pbl9kY2ZjbGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGlu dCByZXF1ZXN0ZWRfZGNmY2xrX2toeik7CjE0NDc0OiBpbnQgcm5fdmJpb3Nfc211X3NldF9taW5f ZGVlcF9zbGVlcF9kY2ZjbGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGludCBy ZXF1ZXN0ZWRfbWluX2RzX2RjZmNsa19raHopOwoxNDQ3NDogdm9pZCBybl92Ymlvc19zbXVfc2V0 X3BoeWNsayhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9w aHljbGtfa2h6KTsKMTQ0NzQ6IGludCBybl92Ymlvc19zbXVfc2V0X2RwcGNsayhzdHJ1Y3QgY2xr X21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9kcHBfa2h6KTsKMTQ0NzQ6IHZv aWQgcm5fdmJpb3Nfc211X3NldF9kY25fbG93X3Bvd2VyX3N0YXRlKHN0cnVjdCBjbGtfbWdyX2lu dGVybmFsICpjbGtfbWdyLCBpbnQgZGlzcGxheV9jb3VudCk7CjE0NDc0OiB2b2lkIHJuX3ZiaW9z X3NtdV9lbmFibGVfNDhtaHpfdG1kcF9yZWZjbGtfcHdyZHduKHN0cnVjdCBjbGtfbWdyX2ludGVy bmFsICpjbGtfbWdyLCBib29sIGVuYWJsZSk7CjE0NDc0OiB2b2lkIHJuX3ZiaW9zX3NtdV9lbmFi bGVfcG1lX3dhKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyKTsKMTQ0NzQ6ICMgMzYg ImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9y bl9jbGtfbWdyLmMiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9yZWdfaGVscGVyLmgiIDEKMTQ0NzQ6ICMgMzkxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL3JlZ19oZWxwZXIuaCIKMTQ0NzQ6 IHVpbnQzMl90IGdlbmVyaWNfcmVnX2dldChjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1 aW50MzJfdCBhZGRyLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0LCB1aW50MzJfdCBtYXNrLCB1aW50 MzJfdCAqZmllbGRfdmFsdWUpOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ19n ZXQyKGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCjE0NDc0OiAg IHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMSwK MTQ0NzQ6ICAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRf dmFsdWUyKTsKMTQ0NzQ6IAoxNDQ3NDogdWludDMyX3QgZ2VuZXJpY19yZWdfZ2V0Myhjb25zdCBz dHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1aW50MzJfdCBhZGRyLAoxNDQ3NDogICB1aW50OF90IHNo aWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCjE0NDc0OiAgIHVp bnQ4X3Qgc2hpZnQyLCB1aW50MzJfdCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKMTQ0 NzQ6ICAgdWludDhfdCBzaGlmdDMsIHVpbnQzMl90IG1hc2szLCB1aW50MzJfdCAqZmllbGRfdmFs dWUzKTsKMTQ0NzQ6IAoxNDQ3NDogdWludDMyX3QgZ2VuZXJpY19yZWdfZ2V0NChjb25zdCBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4LCB1aW50MzJfdCBhZGRyLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0 MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCjE0NDc0OiAgIHVpbnQ4 X3Qgc2hpZnQyLCB1aW50MzJfdCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKMTQ0NzQ6 ICAgdWludDhfdCBzaGlmdDMsIHVpbnQzMl90IG1hc2szLCB1aW50MzJfdCAqZmllbGRfdmFsdWUz LAoxNDQ3NDogICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVpbnQzMl90ICpmaWVs ZF92YWx1ZTQpOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ19nZXQ1KGNvbnN0 IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCjE0NDc0OiAgIHVpbnQ4X3Qg c2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMSwKMTQ0NzQ6ICAg dWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRfdmFsdWUyLAox NDQ3NDogICB1aW50OF90IHNoaWZ0MywgdWludDMyX3QgbWFzazMsIHVpbnQzMl90ICpmaWVsZF92 YWx1ZTMsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQ0LCB1aW50MzJfdCBtYXNrNCwgdWludDMyX3Qg KmZpZWxkX3ZhbHVlNCwKMTQ0NzQ6ICAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1hc2s1LCB1 aW50MzJfdCAqZmllbGRfdmFsdWU1KTsKMTQ0NzQ6IAoxNDQ3NDogdWludDMyX3QgZ2VuZXJpY19y ZWdfZ2V0Nihjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LCB1aW50MzJfdCBhZGRyLAoxNDQ3 NDogICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1 ZTEsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQyLCB1aW50MzJfdCBtYXNrMiwgdWludDMyX3QgKmZp ZWxkX3ZhbHVlMiwKMTQ0NzQ6ICAgdWludDhfdCBzaGlmdDMsIHVpbnQzMl90IG1hc2szLCB1aW50 MzJfdCAqZmllbGRfdmFsdWUzLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFz azQsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTQsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQ1LCB1aW50 MzJfdCBtYXNrNSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlNSwKMTQ0NzQ6ICAgdWludDhfdCBzaGlm dDYsIHVpbnQzMl90IG1hc2s2LCB1aW50MzJfdCAqZmllbGRfdmFsdWU2KTsKMTQ0NzQ6IAoxNDQ3 NDogdWludDMyX3QgZ2VuZXJpY19yZWdfZ2V0Nyhjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4 LCB1aW50MzJfdCBhZGRyLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEs IHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQyLCB1aW50MzJf dCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKMTQ0NzQ6ICAgdWludDhfdCBzaGlmdDMs IHVpbnQzMl90IG1hc2szLCB1aW50MzJfdCAqZmllbGRfdmFsdWUzLAoxNDQ3NDogICB1aW50OF90 IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTQsCjE0NDc0OiAg IHVpbnQ4X3Qgc2hpZnQ1LCB1aW50MzJfdCBtYXNrNSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlNSwK MTQ0NzQ6ICAgdWludDhfdCBzaGlmdDYsIHVpbnQzMl90IG1hc2s2LCB1aW50MzJfdCAqZmllbGRf dmFsdWU2LAoxNDQ3NDogICB1aW50OF90IHNoaWZ0NywgdWludDMyX3QgbWFzazcsIHVpbnQzMl90 ICpmaWVsZF92YWx1ZTcpOwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX3JlZ19nZXQ4 KGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCjE0NDc0OiAgIHVp bnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMSwKMTQ0 NzQ6ICAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRfdmFs dWUyLAoxNDQ3NDogICB1aW50OF90IHNoaWZ0MywgdWludDMyX3QgbWFzazMsIHVpbnQzMl90ICpm aWVsZF92YWx1ZTMsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQ0LCB1aW50MzJfdCBtYXNrNCwgdWlu dDMyX3QgKmZpZWxkX3ZhbHVlNCwKMTQ0NzQ6ICAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1h c2s1LCB1aW50MzJfdCAqZmllbGRfdmFsdWU1LAoxNDQ3NDogICB1aW50OF90IHNoaWZ0NiwgdWlu dDMyX3QgbWFzazYsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTYsCjE0NDc0OiAgIHVpbnQ4X3Qgc2hp ZnQ3LCB1aW50MzJfdCBtYXNrNywgdWludDMyX3QgKmZpZWxkX3ZhbHVlNywKMTQ0NzQ6ICAgdWlu dDhfdCBzaGlmdDgsIHVpbnQzMl90IG1hc2s4LCB1aW50MzJfdCAqZmllbGRfdmFsdWU4KTsKMTQ0 NzQ6ICMgNDgxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L3JlZ19oZWxwZXIuaCIKMTQ0NzQ6IHZvaWQgZ2VuZXJpY193cml0ZV9pbmRpcmVjdF9yZWcoY29u c3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3QgYWRkcl9pbmRleCwg dWludDMyX3QgYWRkcl9kYXRhLAoxNDQ3NDogICB1aW50MzJfdCBpbmRleCwgdWludDMyX3QgZGF0 YSk7CjE0NDc0OiAKMTQ0NzQ6IHVpbnQzMl90IGdlbmVyaWNfcmVhZF9pbmRpcmVjdF9yZWcoY29u c3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3QgYWRkcl9pbmRleCwg dWludDMyX3QgYWRkcl9kYXRhLAoxNDQ3NDogICB1aW50MzJfdCBpbmRleCk7CjE0NDc0OiAKMTQ0 NzQ6IHVpbnQzMl90IGdlbmVyaWNfaW5kaXJlY3RfcmVnX2dldChjb25zdCBzdHJ1Y3QgZGNfY29u dGV4dCAqY3R4LAoxNDQ3NDogICB1aW50MzJfdCBhZGRyX2luZGV4LCB1aW50MzJfdCBhZGRyX2Rh dGEsCjE0NDc0OiAgIHVpbnQzMl90IGluZGV4LCBpbnQgbiwKMTQ0NzQ6ICAgdWludDhfdCBzaGlm dDEsIHVpbnQzMl90IG1hc2sxLCB1aW50MzJfdCAqZmllbGRfdmFsdWUxLAoxNDQ3NDogICAuLi4p OwoxNDQ3NDogCjE0NDc0OiB1aW50MzJfdCBnZW5lcmljX2luZGlyZWN0X3JlZ191cGRhdGVfZXgo Y29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKMTQ0NzQ6ICAgdWludDMyX3QgYWRkcl9pbmRl eCwgdWludDMyX3QgYWRkcl9kYXRhLAoxNDQ3NDogICB1aW50MzJfdCBpbmRleCwgdWludDMyX3Qg cmVnX3ZhbCwgaW50IG4sCjE0NDc0OiAgIHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwg dWludDMyX3QgZmllbGRfdmFsdWUxLAoxNDQ3NDogICAuLi4pOwoxNDQ3NDogIyAzNyAiZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19t Z3IuYyIgMgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMQoxNDQ3NDogIyAzOCAiZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgoxNDQ3 NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1faGVs cGVycy5oIiAxCjE0NDc0OiAjIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZG1faGVscGVycy5oIgoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMQoxNDQ3NDogIyAzNSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX2hlbHBlcnMuaCIgMgoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uX3RhYmxlOwoxNDQ3NDogCjE0NDc0OiBl bnVtIGRjX2VkaWRfc3RhdHVzIGRtX2hlbHBlcnNfcGFyc2VfZWRpZF9jYXBzKAoxNDQ3NDogIHN0 cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2VkaWQgKmVkaWQs CjE0NDc0OiAgc3RydWN0IGRjX2VkaWRfY2FwcyAqZWRpZF9jYXBzKTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lkIGRtX2hlbHBlcnNfZHBfdXBkYXRl X2JyYW5jaF9pbmZvKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBj b25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGJvb2wgZG1faGVscGVyc19kcF9tc3Rfd3JpdGVfcGF5bG9hZF9hbGxvY2F0aW9u X3RhYmxlKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBjb25zdCBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgIHN0cnVjdCBkcF9tc3Rfc3Ry ZWFtX2FsbG9jYXRpb25fdGFibGUgKnByb3Bvc2VkX3RhYmxlLAoxNDQ3NDogICBib29sIGVuYWJs ZSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZG1faGVscGVy c19kcF9tc3RfcG9sbF9wZW5kaW5nX2Rvd25fcmVwbHkoCjE0NDc0OiAgc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKMTQ0NzQ6ICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHZvaWQgZG1faGVscGVyc19kcF9tc3RfY2xlYXJf cGF5bG9hZF9hbGxvY2F0aW9uX3RhYmxlKAoxNDQ3NDogIHN0cnVjdCBkY19jb250ZXh0ICpjdHgs CjE0NDc0OiAgY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmspOwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGFjdF9yZXR1cm5fc3RhdHVzIGRtX2hlbHBlcnNfZHBf bXN0X3BvbGxfZm9yX2FsbG9jYXRpb25fY2hhbmdlX3RyaWdnZXIoCjE0NDc0OiAgIHN0cnVjdCBk Y19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0 cmVhbSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBib29sIGRtX2hlbHBlcnNfZHBf bXN0X3NlbmRfcGF5bG9hZF9hbGxvY2F0aW9uKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAq Y3R4LAoxNDQ3NDogICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0 OiAgIGJvb2wgZW5hYmxlKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkbV9oZWxwZXJzX2RwX21zdF9z dGFydF90b3BfbWdyKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBj b25zdCBzdHJ1Y3QgZGNfbGluayAqbGluaywKMTQ0NzQ6ICAgYm9vbCBib290KTsKMTQ0NzQ6IAox NDQ3NDogdm9pZCBkbV9oZWxwZXJzX2RwX21zdF9zdG9wX3RvcF9tZ3IoCjE0NDc0OiAgIHN0cnVj dCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZG1faGVscGVyc19kcF9yZWFkX2Rw Y2QoCjE0NDc0OiAgIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVj dCBkY19saW5rICpsaW5rLAoxNDQ3NDogICB1aW50MzJfdCBhZGRyZXNzLAoxNDQ3NDogICB1aW50 OF90ICpkYXRhLAoxNDQ3NDogICB1aW50MzJfdCBzaXplKTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkbV9oZWxwZXJzX2RwX3dyaXRlX2RwY2QoCjE0NDc0OiAg IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAgIGNvbnN0IHN0cnVjdCBkY19saW5rICps aW5rLAoxNDQ3NDogICB1aW50MzJfdCBhZGRyZXNzLAoxNDQ3NDogICBjb25zdCB1aW50OF90ICpk YXRhLAoxNDQ3NDogICB1aW50MzJfdCBzaXplKTsKMTQ0NzQ6IAoxNDQ3NDogYm9vbCBkbV9oZWxw ZXJzX3N1Ym1pdF9pMmMoCjE0NDc0OiAgIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCjE0NDc0OiAg IGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rLAoxNDQ3NDogICBzdHJ1Y3QgaTJjX2NvbW1hbmQg KmNtZCk7CjE0NDc0OiAKMTQ0NzQ6IGJvb2wgZG1faGVscGVyc19kcF93cml0ZV9kc2NfZW5hYmxl KAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBjb25zdCBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCjE0NDc0OiAgIGJvb2wgZW5hYmxlCjE0NDc0OiApOwox NDQ3NDogYm9vbCBkbV9oZWxwZXJzX2lzX2RwX3NpbmtfcHJlc2VudCgKMTQ0NzQ6ICAgc3RydWN0 IGRjX2xpbmsgKmxpbmspOwoxNDQ3NDogCjE0NDc0OiBlbnVtIGRjX2VkaWRfc3RhdHVzIGRtX2hl bHBlcnNfcmVhZF9sb2NhbF9lZGlkKAoxNDQ3NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAox NDQ3NDogICBzdHJ1Y3QgZGNfbGluayAqbGluaywKMTQ0NzQ6ICAgc3RydWN0IGRjX3NpbmsgKnNp bmspOwoxNDQ3NDogCjE0NDc0OiB2b2lkIGRtX3NldF9kY25fY2xvY2tzKAoxNDQ3NDogICBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBzdHJ1Y3QgZGNfY2xvY2tzICpjbGtzKTsKMTQ0 NzQ6ICMgMzkgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21n ci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKMTQ0NzQ6IAoxNDQ3NDogIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiIDEKMTQ0NzQ6ICMgMzgg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIK MTQ0NzQ6IGVudW0gYXRvbV9iaW9zX2hlYWRlcl92ZXJzaW9uX2RlZnsKMTQ0NzQ6ICAgQVRPTV9N QUpPUl9WRVJTSU9OID0weDAwMDMsCjE0NDc0OiAgIEFUT01fTUlOT1JfVkVSU0lPTiA9MHgwMDAz LAoxNDQ3NDogfTsKMTQ0NzQ6ICMgNTcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v aW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0NzQ6IGVudW0gYXRvbV9jcnRjX2RlZnsKMTQ0NzQ6 ICAgQVRPTV9DUlRDMSA9MCwKMTQ0NzQ6ICAgQVRPTV9DUlRDMiA9MSwKMTQ0NzQ6ICAgQVRPTV9D UlRDMyA9MiwKMTQ0NzQ6ICAgQVRPTV9DUlRDNCA9MywKMTQ0NzQ6ICAgQVRPTV9DUlRDNSA9NCwK MTQ0NzQ6ICAgQVRPTV9DUlRDNiA9NSwKMTQ0NzQ6ICAgQVRPTV9DUlRDX0lOVkFMSUQgPTB4ZmYs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fcHBsbF9kZWZ7CjE0NDc0OiAgIEFU T01fUFBMTDAgPTIsCjE0NDc0OiAgIEFUT01fR0NLX0RGUyA9OCwKMTQ0NzQ6ICAgQVRPTV9GQ0hf Q0xLID05LAoxNDQ3NDogICBBVE9NX0RQX0RUTyA9MTEsCjE0NDc0OiAgIEFUT01fQ09NQk9QSFlf UExMMCA9MjAsCjE0NDc0OiAgIEFUT01fQ09NQk9QSFlfUExMMSA9MjEsCjE0NDc0OiAgIEFUT01f Q09NQk9QSFlfUExMMiA9MjIsCjE0NDc0OiAgIEFUT01fQ09NQk9QSFlfUExMMyA9MjMsCjE0NDc0 OiAgIEFUT01fQ09NQk9QSFlfUExMNCA9MjQsCjE0NDc0OiAgIEFUT01fQ09NQk9QSFlfUExMNSA9 MjUsCjE0NDc0OiAgIEFUT01fUFBMTF9JTlZBTElEID0weGZmLAoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlnX2RlZnsKMTQ0NzQ6ICAgQVNJQ19JTlRfRElHMV9F TkNPREVSX0lEID0weDAzLAoxNDQ3NDogICBBU0lDX0lOVF9ESUcyX0VOQ09ERVJfSUQgPTB4MDks CjE0NDc0OiAgIEFTSUNfSU5UX0RJRzNfRU5DT0RFUl9JRCA9MHgwYSwKMTQ0NzQ6ICAgQVNJQ19J TlRfRElHNF9FTkNPREVSX0lEID0weDBiLAoxNDQ3NDogICBBU0lDX0lOVF9ESUc1X0VOQ09ERVJf SUQgPTB4MGMsCjE0NDc0OiAgIEFTSUNfSU5UX0RJRzZfRU5DT0RFUl9JRCA9MHgwZCwKMTQ0NzQ6 ICAgQVNJQ19JTlRfRElHN19FTkNPREVSX0lEID0weDBlLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiBlbnVtIGF0b21fZW5jb2RlX21vZGVfZGVmCjE0NDc0OiB7CjE0NDc0OiAgIEFU T01fRU5DT0RFUl9NT0RFX0RQID0wLAoxNDQ3NDogICBBVE9NX0VOQ09ERVJfTU9ERV9EUF9TU1Qg PTAsCjE0NDc0OiAgIEFUT01fRU5DT0RFUl9NT0RFX0xWRFMgPTEsCjE0NDc0OiAgIEFUT01fRU5D T0RFUl9NT0RFX0RWSSA9MiwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX01PREVfSERNSSA9MywKMTQ0 NzQ6ICAgQVRPTV9FTkNPREVSX01PREVfRFBfQVVESU8gPTUsCjE0NDc0OiAgIEFUT01fRU5DT0RF Ul9NT0RFX0RQX01TVCA9NSwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX01PREVfQ1JUID0xNSwKMTQ0 NzQ6ICAgQVRPTV9FTkNPREVSX01PREVfRFZPID0xNiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gYXRvbV9lbmNvZGVyX3JlZmNsa19zcmNfZGVmewoxNDQ3NDogICBFTkNPREVSX1JFRkNM S19TUkNfUDFQTEwgPTAsCjE0NDc0OiAgIEVOQ09ERVJfUkVGQ0xLX1NSQ19QMlBMTCA9MSwKMTQ0 NzQ6ICAgRU5DT0RFUl9SRUZDTEtfU1JDX1AzUExMID0yLAoxNDQ3NDogICBFTkNPREVSX1JFRkNM S19TUkNfRVhUQ0xLID0zLAoxNDQ3NDogICBFTkNPREVSX1JFRkNMS19TUkNfSU5WQUxJRCA9MHhm ZiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zY2FsZXJfZGVmewoxNDQ3NDog ICBBVE9NX1NDQUxFUl9ESVNBQkxFID0wLAoxNDQ3NDogICBBVE9NX1NDQUxFUl9DRU5URVIgPTEs CjE0NDc0OiAgIEFUT01fU0NBTEVSX0VYUEFOU0lPTiA9MiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IGVudW0gYXRvbV9vcGVyYXRpb25fZGVmewoxNDQ3NDogICBBVE9NX0RJU0FCTEUgPSAwLAox NDQ3NDogICBBVE9NX0VOQUJMRSA9IDEsCjE0NDc0OiAgIEFUT01fSU5JVCA9IDcsCjE0NDc0OiAg IEFUT01fR0VUX1NUQVRVUyA9IDgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21f ZW1iZWRkZWRfZGlzcGxheV9vcF9kZWZ7CjE0NDc0OiAgIEFUT01fTENEX0JMX09GRiA9IDIsCjE0 NDc0OiAgIEFUT01fTENEX0JMX09NID0gMywKMTQ0NzQ6ICAgQVRPTV9MQ0RfQkxfQlJJR0hUTkVT U19DT05UUk9MID0gNCwKMTQ0NzQ6ICAgQVRPTV9MQ0RfU0VMRlRFU1RfU1RBUlQgPSA1LAoxNDQ3 NDogICBBVE9NX0xDRF9TRUxGVEVTVF9TVE9QID0gNiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gYXRvbV9zcHJlYWRfc3BlY3RydW1fbW9kZXsKMTQ0NzQ6ICAgQVRPTV9TU19DRU5URVJf T1JfRE9XTl9NT0RFX01BU0sgPSAweDAxLAoxNDQ3NDogICBBVE9NX1NTX0RPV05fU1BSRUFEX01P REUgPSAweDAwLAoxNDQ3NDogICBBVE9NX1NTX0NFTlRSRV9TUFJFQURfTU9ERSA9IDB4MDEsCjE0 NDc0OiAgIEFUT01fSU5UX09SX0VYVF9TU19NQVNLID0gMHgwMiwKMTQ0NzQ6ICAgQVRPTV9JTlRF Uk5BTF9TU19NQVNLID0gMHgwMCwKMTQ0NzQ6ICAgQVRPTV9FWFRFUk5BTF9TU19NQVNLID0gMHgw MiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3BhbmVsX2JpdF9w ZXJfY29sb3J7CjE0NDc0OiAgIFBBTkVMX0JQQ19VTkRFRklORSA9MHgwMCwKMTQ0NzQ6ICAgUEFO RUxfNkJJVF9QRVJfQ09MT1IgPTB4MDEsCjE0NDc0OiAgIFBBTkVMXzhCSVRfUEVSX0NPTE9SID0w eDAyLAoxNDQ3NDogICBQQU5FTF8xMEJJVF9QRVJfQ09MT1IgPTB4MDMsCjE0NDc0OiAgIFBBTkVM XzEyQklUX1BFUl9DT0xPUiA9MHgwNCwKMTQ0NzQ6ICAgUEFORUxfMTZCSVRfUEVSX0NPTE9SID0w eDA1LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fdm9sdGFnZV90 eXBlCjE0NDc0OiB7CjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9WRERDID0gMSwKMTQ0NzQ6ICAgVk9M VEFHRV9UWVBFX01WRERDID0gMiwKMTQ0NzQ6ICAgVk9MVEFHRV9UWVBFX01WRERRID0gMywKMTQ0 NzQ6ICAgVk9MVEFHRV9UWVBFX1ZERENJID0gNCwKMTQ0NzQ6ICAgVk9MVEFHRV9UWVBFX1ZEREdG WCA9IDUsCjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9QQ0MgPSA2LAoxNDQ3NDogICBWT0xUQUdFX1RZ UEVfTVZQUCA9IDcsCjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9MRUREUE0gPSA4LAoxNDQ3NDogICBW T0xUQUdFX1RZUEVfUENDX01WREQgPSA5LAoxNDQ3NDogICBWT0xUQUdFX1RZUEVfUENJRV9WRERD ID0gMTAsCjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9QQ0lFX1ZERFIgPSAxMSwKMTQ0NzQ6ICAgVk9M VEFHRV9UWVBFX0dFTkVSSUNfSTJDXzEgPSAweDExLAoxNDQ3NDogICBWT0xUQUdFX1RZUEVfR0VO RVJJQ19JMkNfMiA9IDB4MTIsCjE0NDc0OiAgIFZPTFRBR0VfVFlQRV9HRU5FUklDX0kyQ18zID0g MHgxMywKMTQ0NzQ6ICAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJDXzQgPSAweDE0LAoxNDQ3NDog ICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfNSA9IDB4MTUsCjE0NDc0OiAgIFZPTFRBR0VfVFlQ RV9HRU5FUklDX0kyQ182ID0gMHgxNiwKMTQ0NzQ6ICAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJD XzcgPSAweDE3LAoxNDQ3NDogICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfOCA9IDB4MTgsCjE0 NDc0OiAgIFZPTFRBR0VfVFlQRV9HRU5FUklDX0kyQ185ID0gMHgxOSwKMTQ0NzQ6ICAgVk9MVEFH RV9UWVBFX0dFTkVSSUNfSTJDXzEwID0gMHgxQSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVu dW0gYXRvbV9kZ3B1X3ZyYW1fdHlwZSB7CjE0NDc0OiAgIEFUT01fREdQVV9WUkFNX1RZUEVfR0RE UjUgPSAweDUwLAoxNDQ3NDogICBBVE9NX0RHUFVfVlJBTV9UWVBFX0hCTTIgPSAweDYwLAoxNDQ3 NDogICBBVE9NX0RHUFVfVlJBTV9UWVBFX0dERFI2ID0gMHg3MCwKMTQ0NzQ6IH07CjE0NDc0OiAK MTQ0NzQ6IGVudW0gYXRvbV9kcF92c19wcmVlbXBoX2RlZnsKMTQ0NzQ6ICAgRFBfVlNfTEVWRUww X1BSRUVNUEhfTEVWRUwwID0gMHgwMCwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwxX1BSRUVNUEhfTEVW RUwwID0gMHgwMSwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwyX1BSRUVNUEhfTEVWRUwwID0gMHgwMiwK MTQ0NzQ6ICAgRFBfVlNfTEVWRUwzX1BSRUVNUEhfTEVWRUwwID0gMHgwMywKMTQ0NzQ6ICAgRFBf VlNfTEVWRUwwX1BSRUVNUEhfTEVWRUwxID0gMHgwOCwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwxX1BS RUVNUEhfTEVWRUwxID0gMHgwOSwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwyX1BSRUVNUEhfTEVWRUwx ID0gMHgwYSwKMTQ0NzQ6ICAgRFBfVlNfTEVWRUwwX1BSRUVNUEhfTEVWRUwyID0gMHgxMCwKMTQ0 NzQ6ICAgRFBfVlNfTEVWRUwxX1BSRUVNUEhfTEVWRUwyID0gMHgxMSwKMTQ0NzQ6ICAgRFBfVlNf TEVWRUwwX1BSRUVNUEhfTEVWRUwzID0gMHgxOCwKMTQ0NzQ6IH07CjE0NDc0OiAjIDIwOCAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3 NDogI3ByYWdtYSBwYWNrKDEpCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbWJpb3NfaW1hZ2Vfb2Zm c2V0ewoxNDQ3NDogT0ZGU0VUX1RPX0FUT01fUk9NX0hFQURFUl9QT0lOVEVSID0weDAwMDAwMDQ4 LAoxNDQ3NDogT0ZGU0VUX1RPX0FUT01fUk9NX0lNQUdFX1NJWkUgPTB4MDAwMDAwMDIsCjE0NDc0 OiBPRkZTRVRfVE9fQVRPTUJJT1NfQVNJQ19CVVNfTUVNX1RZUEUgPTB4OTQsCjE0NDc0OiBNQVhT SVpFX09GX0FUT01CSU9TX0FTSUNfQlVTX01FTV9UWVBFID0yMCwKMTQ0NzQ6IE9GRlNFVF9UT19H RVRfQVRPTUJJT1NfTlVNQkVSX09GX1NUUklOR1MgPTB4MmYsCjE0NDc0OiBPRkZTRVRfVE9fR0VU X0FUT01CSU9TX1NUUklOR19TVEFSVCA9MHg2ZSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9t X2NvbW1vbl90YWJsZV9oZWFkZXIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2X3Qgc3RydWN0dXJl c2l6ZTsKMTQ0NzQ6ICAgdWludDhfdCBmb3JtYXRfcmV2aXNpb247CjE0NDc0OiAgIHVpbnQ4X3Qg Y29udGVudF9yZXZpc2lvbjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3JvbV9oZWFkZXJfdjJfMgoxNDQ3NDogewoxNDQ3NDogICBz dHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWlu dDhfdCBhdG9tX2Jpb3Nfc3RyaW5nWzRdOwoxNDQ3NDogICB1aW50MTZfdCBiaW9zX3NlZ21lbnRf YWRkcmVzczsKMTQ0NzQ6ICAgdWludDE2X3QgcHJvdGVjdGVkbW9kZW9mZnNldDsKMTQ0NzQ6ICAg dWludDE2X3QgY29uZmlnZmlsZW5hbWVvZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IGNyY19ibG9j a19vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IHZiaW9zX2Jvb3R1cG1lc3NhZ2VvZmZzZXQ7CjE0 NDc0OiAgIHVpbnQxNl90IGludDEwX29mZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgcGNpYnVzZGV2 aW5pdGNvZGU7CjE0NDc0OiAgIHVpbnQxNl90IGlvYmFzZWFkZHJlc3M7CjE0NDc0OiAgIHVpbnQx Nl90IHN1YnN5c3RlbV92ZW5kb3JfaWQ7CjE0NDc0OiAgIHVpbnQxNl90IHN1YnN5c3RlbV9pZDsK MTQ0NzQ6ICAgdWludDE2X3QgcGNpX2luZm9fb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBtYXN0 ZXJod2Z1bmN0aW9uX29mZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgbWFzdGVyZGF0YXRhYmxlX29m ZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgcmVzZXJ2ZWQ7CjE0NDc0OiAgIHVpbnQzMl90IHBzcGRp cnRhYmxlb2Zmc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjY0ICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiCjE0NDc0OiBzdHJ1Y3QgYXRvbV9t YXN0ZXJfbGlzdF9vZl9jb21tYW5kX2Z1bmN0aW9uc192Ml8xewoxNDQ3NDogICB1aW50MTZfdCBh c2ljX2luaXQ7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjE7CjE0NDc0OiAgIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjI7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjM7CjE0NDc0 OiAgIHVpbnQxNl90IGRpZ3hlbmNvZGVyY29udHJvbDsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1 bmN0aW9uNTsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjsKMTQ0NzQ6ICAgdWludDE2 X3QgY21kX2Z1bmN0aW9uNzsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uODsKMTQ0NzQ6 ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uOTsKMTQ0NzQ6ICAgdWludDE2X3Qgc2V0ZW5naW5lY2xv Y2s7CjE0NDc0OiAgIHVpbnQxNl90IHNldG1lbW9yeWNsb2NrOwoxNDQ3NDogICB1aW50MTZfdCBz ZXRwaXhlbGNsb2NrOwoxNDQ3NDogICB1aW50MTZfdCBlbmFibGVkaXNwcG93ZXJnYXRpbmc7CjE0 NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjE0OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVu Y3Rpb24xNTsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uMTY7CjE0NDc0OiAgIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjE3OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xODsKMTQ0 NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uMTk7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5j dGlvbjIwOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yMTsKMTQ0NzQ6ICAgdWludDE2 X3QgY21kX2Z1bmN0aW9uMjI7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjIzOwoxNDQ3 NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yNDsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0 aW9uMjU7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjI2OwoxNDQ3NDogICB1aW50MTZf dCBjbWRfZnVuY3Rpb24yNzsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uMjg7CjE0NDc0 OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjI5OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rp b24zMDsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uMzE7CjE0NDc0OiAgIHVpbnQxNl90 IGNtZF9mdW5jdGlvbjMyOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zMzsKMTQ0NzQ6 ICAgdWludDE2X3QgYmxhbmtjcnRjOwoxNDQ3NDogICB1aW50MTZfdCBlbmFibGVjcnRjOwoxNDQ3 NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zNjsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0 aW9uMzc7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjM4OwoxNDQ3NDogICB1aW50MTZf dCBjbWRfZnVuY3Rpb24zOTsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNDA7CjE0NDc0 OiAgIHVpbnQxNl90IGdldHNtdWNsb2NraW5mbzsKMTQ0NzQ6ICAgdWludDE2X3Qgc2VsZWN0Y3J0 Y19zb3VyY2U7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjQzOwoxNDQ3NDogICB1aW50 MTZfdCBjbWRfZnVuY3Rpb240NDsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNDU7CjE0 NDc0OiAgIHVpbnQxNl90IHNldGRjZWNsb2NrOwoxNDQ3NDogICB1aW50MTZfdCBnZXRtZW1vcnlj bG9jazsKMTQ0NzQ6ICAgdWludDE2X3QgZ2V0ZW5naW5lY2xvY2s7CjE0NDc0OiAgIHVpbnQxNl90 IHNldGNydGNfdXNpbmdkdGR0aW1pbmc7CjE0NDc0OiAgIHVpbnQxNl90IGV4dGVybmFsZW5jb2Rl cmNvbnRyb2w7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjUxOwoxNDQ3NDogICB1aW50 MTZfdCBjbWRfZnVuY3Rpb241MjsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNTM7CjE0 NDc0OiAgIHVpbnQxNl90IHByb2Nlc3NpMmNjaGFubmVsdHJhbnNhY3Rpb247CjE0NDc0OiAgIHVp bnQxNl90IGNtZF9mdW5jdGlvbjU1OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb241NjsK MTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNTc7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9m dW5jdGlvbjU4OwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb241OTsKMTQ0NzQ6ICAgdWlu dDE2X3QgY29tcHV0ZWdwdWNsb2NrcGFyYW07CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlv bjYxOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb242MjsKMTQ0NzQ6ICAgdWludDE2X3Qg ZHluYW1pY21lbW9yeXNldHRpbmdzOwoxNDQ3NDogICB1aW50MTZfdCBtZW1vcnl0cmFpbmluZzsK MTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjU7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9m dW5jdGlvbjY2OwoxNDQ3NDogICB1aW50MTZfdCBzZXR2b2x0YWdlOwoxNDQ3NDogICB1aW50MTZf dCBjbWRfZnVuY3Rpb242ODsKMTQ0NzQ6ICAgdWludDE2X3QgcmVhZGVmdXNldmFsdWU7CjE0NDc0 OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjcwOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rp b243MTsKMTQ0NzQ6ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzI7CjE0NDc0OiAgIHVpbnQxNl90 IGNtZF9mdW5jdGlvbjczOwoxNDQ3NDogICB1aW50MTZfdCBjbWRfZnVuY3Rpb243NDsKMTQ0NzQ6 ICAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzU7CjE0NDc0OiAgIHVpbnQxNl90IGRpZzF0cmFuc21p dHRlcmNvbnRyb2w7CjE0NDc0OiAgIHVpbnQxNl90IGNtZF9mdW5jdGlvbjc3OwoxNDQ3NDogICB1 aW50MTZfdCBwcm9jZXNzYXV4Y2hhbm5lbHRyYW5zYWN0aW9uOwoxNDQ3NDogICB1aW50MTZfdCBj bWRfZnVuY3Rpb243OTsKMTQ0NzQ6ICAgdWludDE2X3QgZ2V0dm9sdGFnZWluZm87CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9tYXN0ZXJfY29tbWFuZF9mdW5jdGlvbl92Ml8x CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVf aGVhZGVyOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9tYXN0ZXJfbGlzdF9vZl9jb21tYW5kX2Z1bmN0 aW9uc192Ml8xIGxpc3RvZmNtZGZ1bmN0aW9uczsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2Z1bmN0aW9uX2F0dHJpYnV0ZQoxNDQ3 NDogewoxNDQ3NDogICB1aW50MTZfdCB3c19pbl9ieXRlczo4OwoxNDQ3NDogICB1aW50MTZfdCBw c19pbl9ieXRlczo3OwoxNDQ3NDogICB1aW50MTZfdCB1cGRhdGVkX2J5X3V0aWw6MTsKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3JvbV9od19mdW5jdGlvbl9oZWFkZXIKMTQ0NzQ6IHsKMTQ0 NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciBmdW5jX2hlYWRlcjsKMTQ0NzQ6 ICAgc3RydWN0IGF0b21fZnVuY3Rpb25fYXR0cmlidXRlIGZ1bmNfYXR0cmliOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IGF0b21fbWFzdGVyX2xpc3Rfb2ZfZGF0YV90YWJsZXNfdjJfMXsKMTQ0NzQ6 ICAgdWludDE2X3QgdXRpbGl0eXBpcGVsaW5lOwoxNDQ3NDogICB1aW50MTZfdCBtdWx0aW1lZGlh X2luZm87CjE0NDc0OiAgIHVpbnQxNl90IHNtY19kcG1faW5mbzsKMTQ0NzQ6ICAgdWludDE2X3Qg c3dfZGF0YXRhYmxlMzsKMTQ0NzQ6ICAgdWludDE2X3QgZmlybXdhcmVpbmZvOwoxNDQ3NDogICB1 aW50MTZfdCBzd19kYXRhdGFibGU1OwoxNDQ3NDogICB1aW50MTZfdCBsY2RfaW5mbzsKMTQ0NzQ6 ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlNzsKMTQ0NzQ6ICAgdWludDE2X3Qgc211X2luZm87CjE0 NDc0OiAgIHVpbnQxNl90IHN3X2RhdGF0YWJsZTk7CjE0NDc0OiAgIHVpbnQxNl90IHN3X2RhdGF0 YWJsZTEwOwoxNDQ3NDogICB1aW50MTZfdCB2cmFtX3VzYWdlYnlmaXJtd2FyZTsKMTQ0NzQ6ICAg dWludDE2X3QgZ3Bpb19waW5fbHV0OwoxNDQ3NDogICB1aW50MTZfdCBzd19kYXRhdGFibGUxMzsK MTQ0NzQ6ICAgdWludDE2X3QgZ2Z4X2luZm87CjE0NDc0OiAgIHVpbnQxNl90IHBvd2VycGxheWlu Zm87CjE0NDc0OiAgIHVpbnQxNl90IHN3X2RhdGF0YWJsZTE2OwoxNDQ3NDogICB1aW50MTZfdCBz d19kYXRhdGFibGUxNzsKMTQ0NzQ6ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMTg7CjE0NDc0OiAg IHVpbnQxNl90IHN3X2RhdGF0YWJsZTE5OwoxNDQ3NDogICB1aW50MTZfdCBzd19kYXRhdGFibGUy MDsKMTQ0NzQ6ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMjE7CjE0NDc0OiAgIHVpbnQxNl90IGRp c3BsYXlvYmplY3RpbmZvOwoxNDQ3NDogICB1aW50MTZfdCBpbmRpcmVjdGlvYWNjZXNzOwoxNDQ3 NDogICB1aW50MTZfdCB1bWNfaW5mbzsKMTQ0NzQ6ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMjU7 CjE0NDc0OiAgIHVpbnQxNl90IHN3X2RhdGF0YWJsZTI2OwoxNDQ3NDogICB1aW50MTZfdCBkY2Vf aW5mbzsKMTQ0NzQ6ICAgdWludDE2X3QgdnJhbV9pbmZvOwoxNDQ3NDogICB1aW50MTZfdCBzd19k YXRhdGFibGUyOTsKMTQ0NzQ6ICAgdWludDE2X3QgaW50ZWdyYXRlZHN5c3RlbWluZm87CjE0NDc0 OiAgIHVpbnQxNl90IGFzaWNfcHJvZmlsaW5nX2luZm87CjE0NDc0OiAgIHVpbnQxNl90IHZvbHRh Z2VvYmplY3RfaW5mbzsKMTQ0NzQ6ICAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMzM7CjE0NDc0OiAg IHVpbnQxNl90IHN3X2RhdGF0YWJsZTM0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgYXRvbV9tYXN0ZXJfZGF0YV90YWJsZV92Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHN0 cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICBzdHJ1 Y3QgYXRvbV9tYXN0ZXJfbGlzdF9vZl9kYXRhX3RhYmxlc192Ml8xIGxpc3RPZmRhdGF0YWJsZXM7 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2R0ZF9mb3JtYXQK MTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2X3QgcGl4Y2xrOwoxNDQ3NDogICB1aW50MTZfdCBoX2Fj dGl2ZTsKMTQ0NzQ6ICAgdWludDE2X3QgaF9ibGFua2luZ190aW1lOwoxNDQ3NDogICB1aW50MTZf dCB2X2FjdGl2ZTsKMTQ0NzQ6ICAgdWludDE2X3Qgdl9ibGFua2luZ190aW1lOwoxNDQ3NDogICB1 aW50MTZfdCBoX3N5bmNfb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBoX3N5bmNfd2lkdGg7CjE0 NDc0OiAgIHVpbnQxNl90IHZfc3luY19vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IHZfc3luY3dp ZHRoOwoxNDQ3NDogICB1aW50MTZfdCByZXNlcnZlZDsKMTQ0NzQ6ICAgdWludDE2X3QgcmVzZXJ2 ZWQwOwoxNDQ3NDogICB1aW50OF90IGhfYm9yZGVyOwoxNDQ3NDogICB1aW50OF90IHZfYm9yZGVy OwoxNDQ3NDogICB1aW50MTZfdCBtaXNjaW5mbzsKMTQ0NzQ6ICAgdWludDhfdCBhdG9tX21vZGVf aWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVmcmVzaHJhdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGVudW0gYXRvbV9kdGRfZm9ybWF0X21vZGVtaXNjaW5mb3sKMTQ0NzQ6ICAgQVRP TV9IU1lOQ19QT0xBUklUWSA9IDB4MDAwMiwKMTQ0NzQ6ICAgQVRPTV9WU1lOQ19QT0xBUklUWSA9 IDB4MDAwNCwKMTQ0NzQ6ICAgQVRPTV9IX1JFUExJQ0FUSU9OQlkyID0gMHgwMDEwLAoxNDQ3NDog ICBBVE9NX1ZfUkVQTElDQVRJT05CWTIgPSAweDAwMjAsCjE0NDc0OiAgIEFUT01fSU5URVJMQUNF ID0gMHgwMDgwLAoxNDQ3NDogICBBVE9NX0NPTVBPU0lURVNZTkMgPSAweDAwNDAsCjE0NDc0OiB9 OwoxNDQ3NDogIyA0NzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9h dG9tZmlybXdhcmUuaCIKMTQ0NzQ6IHN0cnVjdCBhdG9tX2Zpcm13YXJlX2luZm9fdjNfMQoxNDQ3 NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRl cjsKMTQ0NzQ6ICAgdWludDMyX3QgZmlybXdhcmVfcmV2aXNpb247CjE0NDc0OiAgIHVpbnQzMl90 IGJvb3R1cF9zY2xrX2luMTBraHo7CjE0NDc0OiAgIHVpbnQzMl90IGJvb3R1cF9tY2xrX2luMTBr aHo7CjE0NDc0OiAgIHVpbnQzMl90IGZpcm13YXJlX2NhcGFiaWxpdHk7CjE0NDc0OiAgIHVpbnQz Ml90IG1haW5fY2FsbF9wYXJzZXJfZW50cnk7CjE0NDc0OiAgIHVpbnQzMl90IGJpb3Nfc2NyYXRj aF9yZWdfc3RhcnRhZGRyOwoxNDQ3NDogICB1aW50MTZfdCBib290dXBfdmRkY19tdjsKMTQ0NzQ6 ICAgdWludDE2X3QgYm9vdHVwX3ZkZGNpX212OwoxNDQ3NDogICB1aW50MTZfdCBib290dXBfbXZk ZGNfbXY7CjE0NDc0OiAgIHVpbnQxNl90IGJvb3R1cF92ZGRnZnhfbXY7CjE0NDc0OiAgIHVpbnQ4 X3QgbWVtX21vZHVsZV9pZDsKMTQ0NzQ6ICAgdWludDhfdCBjb29saW5nc29sdXRpb25faWQ7CjE0 NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzJdOwoxNDQ3NDogICB1aW50MzJfdCBtY19iYXNlYWRk cl9oaWdoOwoxNDQ3NDogICB1aW50MzJfdCBtY19iYXNlYWRkcl9sb3c7CjE0NDc0OiAgIHVpbnQz Ml90IHJlc2VydmVkMls2XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBh dG9tYmlvc19maXJtd2FyZV9jYXBhYmlsaXR5CjE0NDc0OiB7CjE0NDc0OiAgQVRPTV9GSVJNV0FS RV9DQVBfRklSTVdBUkVfUE9TVEVEID0gMHgwMDAwMDAwMSwKMTQ0NzQ6ICBBVE9NX0ZJUk1XQVJF X0NBUF9HUFVfVklSVFVBTElaQVRJT04gPSAweDAwMDAwMDAyLAoxNDQ3NDogIEFUT01fRklSTVdB UkVfQ0FQX1dNSV9TVVBQT1JUID0gMHgwMDAwMDA0MCwKMTQ0NzQ6ICBBVE9NX0ZJUk1XQVJFX0NB UF9IV0VNVV9FTkFCTEUgPSAweDAwMDAwMDgwLAoxNDQ3NDogIEFUT01fRklSTVdBUkVfQ0FQX0hX RU1VX1VNQ19DRkcgPSAweDAwMDAwMTAwLAoxNDQ3NDogIEFUT01fRklSTVdBUkVfQ0FQX1NSQU1f RUNDID0gMHgwMDAwMDIwMCwKMTQ0NzQ6ICBBVE9NX0ZJUk1XQVJFX0NBUF9FTkFCTEVfMlNUQUdF X0JJU1RfVFJBSU5JTkcgPSAweDAwMDAwNDAwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBhdG9tX2Nvb2xpbmdfc29sdXRpb25faWR7CjE0NDc0OiAgIEFJUl9DT09MSU5HID0gMHgwMCwK MTQ0NzQ6ICAgTElRVUlEX0NPT0xJTkcgPSAweDAxCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgYXRvbV9maXJtd2FyZV9pbmZvX3YzXzIgewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21t b25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDMyX3QgZmlybXdhcmVf cmV2aXNpb247CjE0NDc0OiAgIHVpbnQzMl90IGJvb3R1cF9zY2xrX2luMTBraHo7CjE0NDc0OiAg IHVpbnQzMl90IGJvb3R1cF9tY2xrX2luMTBraHo7CjE0NDc0OiAgIHVpbnQzMl90IGZpcm13YXJl X2NhcGFiaWxpdHk7CjE0NDc0OiAgIHVpbnQzMl90IG1haW5fY2FsbF9wYXJzZXJfZW50cnk7CjE0 NDc0OiAgIHVpbnQzMl90IGJpb3Nfc2NyYXRjaF9yZWdfc3RhcnRhZGRyOwoxNDQ3NDogICB1aW50 MTZfdCBib290dXBfdmRkY19tdjsKMTQ0NzQ6ICAgdWludDE2X3QgYm9vdHVwX3ZkZGNpX212Owox NDQ3NDogICB1aW50MTZfdCBib290dXBfbXZkZGNfbXY7CjE0NDc0OiAgIHVpbnQxNl90IGJvb3R1 cF92ZGRnZnhfbXY7CjE0NDc0OiAgIHVpbnQ4X3QgbWVtX21vZHVsZV9pZDsKMTQ0NzQ6ICAgdWlu dDhfdCBjb29saW5nc29sdXRpb25faWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzJdOwox NDQ3NDogICB1aW50MzJfdCBtY19iYXNlYWRkcl9oaWdoOwoxNDQ3NDogICB1aW50MzJfdCBtY19i YXNlYWRkcl9sb3c7CjE0NDc0OiAgIHVpbnQ4X3QgYm9hcmRfaTJjX2ZlYXR1cmVfaWQ7CjE0NDc0 OiAgIHVpbnQ4X3QgYm9hcmRfaTJjX2ZlYXR1cmVfZ3Bpb19pZDsKMTQ0NzQ6ICAgdWludDhfdCBi b2FyZF9pMmNfZmVhdHVyZV9zbGF2ZV9hZGRyOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkMzsK MTQ0NzQ6ICAgdWludDE2X3QgYm9vdHVwX212ZGRxX212OwoxNDQ3NDogICB1aW50MTZfdCBib290 dXBfbXZwcF9tdjsKMTQ0NzQ6ICAgdWludDMyX3QgemZic3RhcnRhZGRyaW4xNm1iOwoxNDQ3NDog ICB1aW50MzJfdCByZXNlcnZlZDJbM107CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9maXJtd2FyZV9pbmZvX3YzXzMKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29t bW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0NDc0OiAgIHVpbnQzMl90IGZpcm13YXJl X3JldmlzaW9uOwoxNDQ3NDogICB1aW50MzJfdCBib290dXBfc2Nsa19pbjEwa2h6OwoxNDQ3NDog ICB1aW50MzJfdCBib290dXBfbWNsa19pbjEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBmaXJtd2Fy ZV9jYXBhYmlsaXR5OwoxNDQ3NDogICB1aW50MzJfdCBtYWluX2NhbGxfcGFyc2VyX2VudHJ5Owox NDQ3NDogICB1aW50MzJfdCBiaW9zX3NjcmF0Y2hfcmVnX3N0YXJ0YWRkcjsKMTQ0NzQ6ICAgdWlu dDE2X3QgYm9vdHVwX3ZkZGNfbXY7CjE0NDc0OiAgIHVpbnQxNl90IGJvb3R1cF92ZGRjaV9tdjsK MTQ0NzQ6ICAgdWludDE2X3QgYm9vdHVwX212ZGRjX212OwoxNDQ3NDogICB1aW50MTZfdCBib290 dXBfdmRkZ2Z4X212OwoxNDQ3NDogICB1aW50OF90IG1lbV9tb2R1bGVfaWQ7CjE0NDc0OiAgIHVp bnQ4X3QgY29vbGluZ3NvbHV0aW9uX2lkOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkMVsyXTsK MTQ0NzQ6ICAgdWludDMyX3QgbWNfYmFzZWFkZHJfaGlnaDsKMTQ0NzQ6ICAgdWludDMyX3QgbWNf YmFzZWFkZHJfbG93OwoxNDQ3NDogICB1aW50OF90IGJvYXJkX2kyY19mZWF0dXJlX2lkOwoxNDQ3 NDogICB1aW50OF90IGJvYXJkX2kyY19mZWF0dXJlX2dwaW9faWQ7CjE0NDc0OiAgIHVpbnQ4X3Qg Ym9hcmRfaTJjX2ZlYXR1cmVfc2xhdmVfYWRkcjsKMTQ0NzQ6ICAgdWludDhfdCByZXNlcnZlZDM7 CjE0NDc0OiAgIHVpbnQxNl90IGJvb3R1cF9tdmRkcV9tdjsKMTQ0NzQ6ICAgdWludDE2X3QgYm9v dHVwX212cHBfbXY7CjE0NDc0OiAgIHVpbnQzMl90IHpmYnN0YXJ0YWRkcmluMTZtYjsKMTQ0NzQ6 ICAgdWludDMyX3QgcHBsaWJfcHB0YWJsZV9pZDsKMTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWQy WzJdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGxjZF9pbmZvX3YyXzEKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0NDc0OiAg IHN0cnVjdCBhdG9tX2R0ZF9mb3JtYXQgbGNkX3RpbWluZzsKMTQ0NzQ6ICAgdWludDE2X3QgYmFj a2xpZ2h0X3B3bTsKMTQ0NzQ6ICAgdWludDE2X3Qgc3BlY2lhbF9oYW5kbGVfY2FwOwoxNDQ3NDog ICB1aW50MTZfdCBwYW5lbF9taXNjOwoxNDQ3NDogICB1aW50MTZfdCBsdmRzX21heF9zbGlua19w Y2xrOwoxNDQ3NDogICB1aW50MTZfdCBsdmRzX3NzX3BlcmNlbnRhZ2U7CjE0NDc0OiAgIHVpbnQx Nl90IGx2ZHNfc3NfcmF0ZV8xMGh6OwoxNDQ3NDogICB1aW50OF90IHB3cl9vbl9kaWdvbl90b19k ZTsKMTQ0NzQ6ICAgdWludDhfdCBwd3Jfb25fZGVfdG9fdmFyeV9ibDsKMTQ0NzQ6ICAgdWludDhf dCBwd3JfZG93bl92YXJ5X2Jsb2ZmX3RvX2RlOwoxNDQ3NDogICB1aW50OF90IHB3cl9kb3duX2Rl X3RvX2RpZ29mZjsKMTQ0NzQ6ICAgdWludDhfdCBwd3Jfb2ZmX2RlbGF5OwoxNDQ3NDogICB1aW50 OF90IHB3cl9vbl92YXJ5X2JsX3RvX2Jsb247CjE0NDc0OiAgIHVpbnQ4X3QgcHdyX2Rvd25fYmxv ZmZfdG9fdmFyeV9ibG9mZjsKMTQ0NzQ6ICAgdWludDhfdCBwYW5lbF9icGM7CjE0NDc0OiAgIHVp bnQ4X3QgZHBjZF9lZHBfY29uZmlnX2NhcDsKMTQ0NzQ6ICAgdWludDhfdCBkcGNkX21heF9saW5r X3JhdGU7CjE0NDc0OiAgIHVpbnQ4X3QgZHBjZF9tYXhfbGFuZV9jb3VudDsKMTQ0NzQ6ICAgdWlu dDhfdCBkcGNkX21heF9kb3duc3ByZWFkOwoxNDQ3NDogICB1aW50OF90IG1pbl9hbGxvd2VkX2Js X2xldmVsOwoxNDQ3NDogICB1aW50OF90IG1heF9hbGxvd2VkX2JsX2xldmVsOwoxNDQ3NDogICB1 aW50OF90IGJvb3R1cF9ibF9sZXZlbDsKMTQ0NzQ6ICAgdWludDhfdCBkcGx2ZHNyeGlkOwoxNDQ3 NDogICB1aW50MzJfdCByZXNlcnZlZDFbOF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IGVudW0gYXRvbV9sY2RfaW5mb19wYW5lbF9taXNjewoxNDQ3NDogICBBVE9NX1BBTkVMX01J U0NfRlBESSA9MHgwMDAyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0 b21fbGNkX2luZm9fZHB0b2x2ZHNfcnhfaWQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgZURQX1RPX0xWRFNf UlhfRElTQUJMRSA9IDB4MDAsCjE0NDc0OiAgIGVEUF9UT19MVkRTX0NPTU1PTl9JRCA9IDB4MDEs CjE0NDc0OiAgIGVEUF9UT19MVkRTX1JFQUxURUtfSUQgPSAweDAyLAoxNDQ3NDogfTsKMTQ0NzQ6 ICMgNjIwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13 YXJlLmgiCjE0NDc0OiBzdHJ1Y3QgYXRvbV9ncGlvX3Bpbl9hc3NpZ25tZW50CjE0NDc0OiB7CjE0 NDc0OiAgIHVpbnQzMl90IGRhdGFfYV9yZWdfaW5kZXg7CjE0NDc0OiAgIHVpbnQ4X3QgZ3Bpb19i aXRzaGlmdDsKMTQ0NzQ6ICAgdWludDhfdCBncGlvX21hc2tfYml0c2hpZnQ7CjE0NDc0OiAgIHVp bnQ4X3QgZ3Bpb19pZDsKMTQ0NzQ6ICAgdWludDhfdCByZXNlcnZlZDsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX2dwaW9fcGluX2Fzc2lnbm1lbnRfZ3Bpb19pZCB7 CjE0NDc0OiAgIEkyQ19IV19MQU5FX01VWCA9MHgwZiwKMTQ0NzQ6ICAgSTJDX0hXX0VOR0lORV9J RF9NQVNLID0weDcwLAoxNDQ3NDogICBJMkNfSFdfQ0FQID0weDgwLAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogICBQQ0lFX1ZERENfQ09OVFJPTF9HUElPX1BJTklEID0gNTYsCjE0NDc0 OiAKMTQ0NzQ6ICAgUFBfQUNfRENfU1dJVENIX0dQSU9fUElOSUQgPSA2MCwKMTQ0NzQ6IAoxNDQ3 NDogICBWRERDX1ZSSE9UX0dQSU9fUElOSUQgPSA2MSwKMTQ0NzQ6IAoxNDQ3NDogICBWRERDX1BD Q19HUElPX1BJTklEID0gNjIsCjE0NDc0OiAKMTQ0NzQ6ICAgRUZVU0VfQ1VUX0VOQUJMRV9HUElP X1BJTklEID0gNjMsCjE0NDc0OiAKMTQ0NzQ6ICAgRFJBTV9TRUxGX1JFRlJFU0hfR1BJT19QSU5J RCA9IDY0LAoxNDQ3NDogCjE0NDc0OiAgIFRIRVJNQUxfSU5UX09VVFBVVF9HUElPX1BJTklEID02 NSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fZ3Bpb19waW5f bHV0X3YyXzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRl ciB0YWJsZV9oZWFkZXI7CjE0NDc0OiAKMTQ0NzQ6ICAgc3RydWN0IGF0b21fZ3Bpb19waW5fYXNz aWdubWVudCBncGlvX3Bpbls4XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDY2NyAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3NDogc3RydWN0 IHZyYW1fdXNhZ2VieWZpcm13YXJlX3YyXzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21f Y29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0NDc0OiAgIHVpbnQzMl90IHN0YXJ0 X2FkZHJlc3NfaW5fa2I7CjE0NDc0OiAgIHVpbnQxNl90IHVzZWRfYnlfZmlybXdhcmVfaW5fa2I7 CjE0NDc0OiAgIHVpbnQxNl90IHVzZWRfYnlfZHJpdmVyX2luX2tiOwoxNDQ3NDogfTsKMTQ0NzQ6 ICMgNjgyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13 YXJlLmgiCjE0NDc0OiBlbnVtIGF0b21fb2JqZWN0X3JlY29yZF90eXBlX2lkCjE0NDc0OiB7CjE0 NDc0OiAgIEFUT01fSTJDX1JFQ09SRF9UWVBFID0xLAoxNDQ3NDogICBBVE9NX0hQRF9JTlRfUkVD T1JEX1RZUEUgPTIsCjE0NDc0OiAgIEFUT01fT0JKRUNUX0dQSU9fQ05UTF9SRUNPUkRfVFlQRSA9 OSwKMTQ0NzQ6ICAgQVRPTV9DT05ORUNUT1JfSFBEUElOX0xVVF9SRUNPUkRfVFlQRSA9MTYsCjE0 NDc0OiAgIEFUT01fQ09OTkVDVE9SX0FVWEREQ19MVVRfUkVDT1JEX1RZUEUgPTE3LAoxNDQ3NDog ICBBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRF9UWVBFPTIwLAoxNDQ3NDogICBBVE9NX0JSQUNLRVRf TEFZT1VUX1JFQ09SRF9UWVBFPTIxLAoxNDQ3NDogICBBVE9NX0NPTk5FQ1RPUl9GT1JDRURfVE1E U19DQVBfUkVDT1JEX1RZUEU9MjIsCjE0NDc0OiAgIEFUT01fUkVDT1JEX0VORF9UWVBFID0weEZG LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fY29tbW9uX3JlY29yZF9oZWFk ZXIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCByZWNvcmRfdHlwZTsKMTQ0NzQ6ICAgdWludDhf dCByZWNvcmRfc2l6ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2kyY19y ZWNvcmQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3JlY29yZF9oZWFkZXIg cmVjb3JkX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBpMmNfaWQ7CjE0NDc0OiAgIHVpbnQ4X3Qg aTJjX3NsYXZlX2FkZHI7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9ocGRf aW50X3JlY29yZAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3JkX2hl YWRlciByZWNvcmRfaGVhZGVyOwoxNDQ3NDogICB1aW50OF90IHBpbl9pZDsKMTQ0NzQ6ICAgdWlu dDhfdCBwbHVnaW5fcGluX3N0YXRlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBl bnVtIGF0b21fZW5jb2Rlcl9jYXBzX2RlZgoxNDQ3NDogewoxNDQ3NDogICBBVE9NX0VOQ09ERVJf Q0FQX1JFQ09SRF9IQlIyID0weDAxLAoxNDQ3NDogICBBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRF9N U1RfRU4gPTB4MDEsCjE0NDc0OiAgIEFUT01fRU5DT0RFUl9DQVBfUkVDT1JEX0hCUjJfRU4gPTB4 MDIsCjE0NDc0OiAgIEFUT01fRU5DT0RFUl9DQVBfUkVDT1JEX0hETUk2R2Jwc19FTiA9MHgwNCwK MTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSM19FTiA9MHgwOCwKMTQ0NzQ6ICAg QVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfVVNCX0NfVFlQRSA9MHgxMDAsCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9lbmNvZGVyX2NhcHNfcmVjb3JkCjE0NDc0OiB7CjE0NDc0 OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CjE0NDc0 OiAgIHVpbnQzMl90IGVuY29kZXJjYXBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBh dG9tX2Nvbm5lY3Rvcl9jYXBzX2RlZgoxNDQ3NDogewoxNDQ3NDogICBBVE9NX0NPTk5FQ1RPUl9D QVBfSU5URVJOQUxfRElTUExBWSA9IDB4MDEsCjE0NDc0OiAgIEFUT01fQ09OTkVDVE9SX0NBUF9J TlRFUk5BTF9ESVNQTEFZX0JMID0gMHgwMiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBhdG9tX2Rpc3BfY29ubmVjdG9yX2NhcHNfcmVjb3JkCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVj dCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CjE0NDc0OiAgIHVpbnQz Ml90IGNvbm5lY3RjYXBzOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9ncGlvX3Bpbl9jb250cm9sX3BhaXIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCBncGlv X2lkOwoxNDQ3NDogICB1aW50OF90IGdwaW9fcGluc3RhdGU7CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiBzdHJ1Y3QgYXRvbV9vYmplY3RfZ3Bpb19jbnRsX3JlY29yZAoxNDQ3NDogewoxNDQ3NDog ICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3JkX2hlYWRlciByZWNvcmRfaGVhZGVyOwoxNDQ3NDog ICB1aW50OF90IGZsYWc7CjE0NDc0OiAgIHVpbnQ4X3QgbnVtYmVyX29mX3BpbnM7CjE0NDc0OiAg IHN0cnVjdCBhdG9tX2dwaW9fcGluX2NvbnRyb2xfcGFpciBncGlvWzFdOwoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZ3Bpb19waW5fY29udHJvbF9waW5zdGF0ZV9k ZWYKMTQ0NzQ6IHsKMTQ0NzQ6ICAgR1BJT19QSU5fVFlQRV9JTlBVVCA9IDB4MDAsCjE0NDc0OiAg IEdQSU9fUElOX1RZUEVfT1VUUFVUID0gMHgxMCwKMTQ0NzQ6ICAgR1BJT19QSU5fVFlQRV9IV19D T05UUk9MID0gMHgyMCwKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIEdQSU9fUElOX09VVFBVVF9T VEFURV9NQVNLID0gMHgwMSwKMTQ0NzQ6ICAgR1BJT19QSU5fT1VUUFVUX1NUQVRFX1NISUZUID0g MCwKMTQ0NzQ6ICAgR1BJT19QSU5fU1RBVEVfQUNUSVZFX0xPVyA9IDB4MCwKMTQ0NzQ6ICAgR1BJ T19QSU5fU1RBVEVfQUNUSVZFX0hJR0ggPSAweDEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX2dsc3luY19yZWNvcmRfZ3Bpb19pbmRleF9kZWYKMTQ0 NzQ6IHsKMTQ0NzQ6ICAgQVRPTV9HUElPX0lOREVYX0dMU1lOQ19SRUZDTEsgPSAwLAoxNDQ3NDog ICBBVE9NX0dQSU9fSU5ERVhfR0xTWU5DX0hTWU5DID0gMSwKMTQ0NzQ6ICAgQVRPTV9HUElPX0lO REVYX0dMU1lOQ19WU1lOQyA9IDIsCjE0NDc0OiAgIEFUT01fR1BJT19JTkRFWF9HTFNZTkNfU1dB UF9SRVEgPSAzLAoxNDQ3NDogICBBVE9NX0dQSU9fSU5ERVhfR0xTWU5DX1NXQVBfR05UID0gNCwK MTQ0NzQ6ICAgQVRPTV9HUElPX0lOREVYX0dMU1lOQ19JTlRFUlJVUFQgPSA1LAoxNDQ3NDogICBB VE9NX0dQSU9fSU5ERVhfR0xTWU5DX1ZfUkVTRVQgPSA2LAoxNDQ3NDogICBBVE9NX0dQSU9fSU5E RVhfR0xTWU5DX1NXQVBfQ05UTCA9IDcsCjE0NDc0OiAgIEFUT01fR1BJT19JTkRFWF9HTFNZTkNf U1dBUF9TRUwgPSA4LAoxNDQ3NDogICBBVE9NX0dQSU9fSU5ERVhfR0xTWU5DX01BWCA9IDksCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2Nvbm5lY3Rvcl9ocGRw aW5fbHV0X3JlY29yZAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3Jk X2hlYWRlciByZWNvcmRfaGVhZGVyOwoxNDQ3NDogICB1aW50OF90IGhwZF9waW5fbWFwWzhdOwox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fY29ubmVjdG9yX2F1eGRkY19sdXRf cmVjb3JkCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVy IHJlY29yZF9oZWFkZXI7CjE0NDc0OiAgIHVpbnQ4X3QgYXV4X2RkY19tYXBbOF07CjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9jb25uZWN0b3JfZm9yY2VkX3RtZHNfY2FwX3Jl Y29yZAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3JkX2hlYWRlciBy ZWNvcmRfaGVhZGVyOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgbWF4dG1kc2Nsa3JhdGVfaW4y XzVtaHo7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgYXRvbV9jb25uZWN0b3JfbGF5b3V0X2luZm8KMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWlu dDE2X3QgY29ubmVjdG9yb2JqaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgY29ubmVjdG9yX3R5cGU7CjE0 NDc0OiAgIHVpbnQ4X3QgcG9zaXRpb247CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGVudW0gYXRvbV9jb25uZWN0b3JfbGF5b3V0X2luZm9fY29ubmVjdG9yX3R5cGVfZGVmCjE0NDc0 OiB7CjE0NDc0OiAgIENPTk5FQ1RPUl9UWVBFX0RWSV9EID0gMSwKMTQ0NzQ6IAoxNDQ3NDogICBD T05ORUNUT1JfVFlQRV9IRE1JID0gNCwKMTQ0NzQ6ICAgQ09OTkVDVE9SX1RZUEVfRElTUExBWV9Q T1JUID0gNSwKMTQ0NzQ6ICAgQ09OTkVDVE9SX1RZUEVfTUlOSV9ESVNQTEFZX1BPUlQgPSA2LAox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fYnJhY2tldF9sYXlvdXRfcmVjb3Jk CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29y ZF9oZWFkZXI7CjE0NDc0OiAgIHVpbnQ4X3QgYnJhY2tldGxlbjsKMTQ0NzQ6ICAgdWludDhfdCBi cmFja2V0d2lkdGg7CjE0NDc0OiAgIHVpbnQ4X3QgY29ubl9udW07CjE0NDc0OiAgIHVpbnQ4X3Qg cmVzZXJ2ZWQ7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2Nvbm5lY3Rvcl9sYXlvdXRfaW5mbyBjb25u X2luZm9bMV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlzcGxheV9kZXZp Y2VfdGFnX2RlZnsKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0xDRDFfU1VQUE9SVCA9IDB4MDAwMiwK MTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDFfU1VQUE9SVCA9IDB4MDAwOCwKMTQ0NzQ6ICAgQVRP TV9ESVNQTEFZX0RGUDJfU1VQUE9SVCA9IDB4MDA4MCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RG UDNfU1VQUE9SVCA9IDB4MDIwMCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDRfU1VQUE9SVCA9 IDB4MDQwMCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDVfU1VQUE9SVCA9IDB4MDgwMCwKMTQ0 NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDZfU1VQUE9SVCA9IDB4MDA0MCwKMTQ0NzQ6ICAgQVRPTV9E SVNQTEFZX0RGUHhfU1VQUE9SVCA9IDB4MGVjOCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdG9tX2Rpc3BsYXlfb2JqZWN0X3BhdGhfdjIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2 X3QgZGlzcGxheV9vYmppZDsKMTQ0NzQ6ICAgdWludDE2X3QgZGlzcF9yZWNvcmRvZmZzZXQ7CjE0 NDc0OiAgIHVpbnQxNl90IGVuY29kZXJvYmppZDsKMTQ0NzQ6ICAgdWludDE2X3QgZXh0ZW5jb2Rl cm9iamlkOwoxNDQ3NDogICB1aW50MTZfdCBlbmNvZGVyX3JlY29yZG9mZnNldDsKMTQ0NzQ6ICAg dWludDE2X3QgZXh0ZW5jb2Rlcl9yZWNvcmRvZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IGRldmlj ZV90YWc7CjE0NDc0OiAgIHVpbnQ4X3QgcHJpb3JpdHlfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVz ZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZGlzcGxheV9vYmplY3RfaW5m b190YWJsZV92MV80CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9o ZWFkZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICB1aW50MTZfdCBzdXBwb3J0ZWRkZXZpY2VzOwox NDQ3NDogICB1aW50OF90IG51bWJlcl9vZl9wYXRoOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVk OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9kaXNwbGF5X29iamVjdF9wYXRoX3YyIGRpc3BsYXlfcGF0 aFs4XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2Rpc3BsYXlfY29udHJvbGxlcl9pbmZv X3Y0XzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0 YWJsZV9oZWFkZXI7CjE0NDc0OiAgIHVpbnQzMl90IGRpc3BsYXlfY2FwczsKMTQ0NzQ6ICAgdWlu dDMyX3QgYm9vdHVwX2Rpc3BjbGtfMTBraHo7CjE0NDc0OiAgIHVpbnQxNl90IGRjZV9yZWZjbGtf MTBraHo7CjE0NDc0OiAgIHVpbnQxNl90IGkyY19lbmdpbmVfcmVmY2xrXzEwa2h6OwoxNDQ3NDog ICB1aW50MTZfdCBkdmlfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgZHZpX3NzX3Jh dGVfMTBoejsKMTQ0NzQ6ICAgdWludDE2X3QgaGRtaV9zc19wZXJjZW50YWdlOwoxNDQ3NDogICB1 aW50MTZfdCBoZG1pX3NzX3JhdGVfMTBoejsKMTQ0NzQ6ICAgdWludDE2X3QgZHBfc3NfcGVyY2Vu dGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgZHBfc3NfcmF0ZV8xMGh6OwoxNDQ3NDogICB1aW50OF90 IGR2aV9zc19tb2RlOwoxNDQ3NDogICB1aW50OF90IGhkbWlfc3NfbW9kZTsKMTQ0NzQ6ICAgdWlu dDhfdCBkcF9zc19tb2RlOwoxNDQ3NDogICB1aW50OF90IHNzX3Jlc2VydmVkOwoxNDQ3NDogICB1 aW50OF90IGhhcmRjb2RlX21vZGVfbnVtOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkMVszXTsK MTQ0NzQ6ICAgdWludDE2X3QgZHBwaHlfcmVmY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MTZfdCBy ZXNlcnZlZDI7CjE0NDc0OiAgIHVpbnQ4X3QgZGNlaXBfbWluX3ZlcjsKMTQ0NzQ6ICAgdWludDhf dCBkY2VpcF9tYXhfdmVyOwoxNDQ3NDogICB1aW50OF90IG1heF9kaXNwX3BpcGVfbnVtOwoxNDQ3 NDogICB1aW50OF90IG1heF92Ymlvc19hY3RpdmVfZGlzcF9waXBlX251bTsKMTQ0NzQ6ICAgdWlu dDhfdCBtYXhfcHBsbF9udW07CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2Rpc3BfcGh5X251bTsKMTQ0 NzQ6ICAgdWludDhfdCBtYXhfYXV4X3BhaXJzOwoxNDQ3NDogICB1aW50OF90IHJlbW90ZWRpc3Bs YXljb25maWc7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQzWzhdOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9kaXNwbGF5X2NvbnRyb2xsZXJfaW5mb192NF8y CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVf aGVhZGVyOwoxNDQ3NDogICB1aW50MzJfdCBkaXNwbGF5X2NhcHM7CjE0NDc0OiAgIHVpbnQzMl90 IGJvb3R1cF9kaXNwY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MTZfdCBkY2VfcmVmY2xrXzEwa2h6 OwoxNDQ3NDogICB1aW50MTZfdCBpMmNfZW5naW5lX3JlZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWlu dDE2X3QgZHZpX3NzX3BlcmNlbnRhZ2U7CjE0NDc0OiAgIHVpbnQxNl90IGR2aV9zc19yYXRlXzEw aHo7CjE0NDc0OiAgIHVpbnQxNl90IGhkbWlfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2 X3QgaGRtaV9zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQxNl90IGRwX3NzX3BlcmNlbnRhZ2U7 CjE0NDc0OiAgIHVpbnQxNl90IGRwX3NzX3JhdGVfMTBoejsKMTQ0NzQ6ICAgdWludDhfdCBkdmlf c3NfbW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBoZG1pX3NzX21vZGU7CjE0NDc0OiAgIHVpbnQ4X3Qg ZHBfc3NfbW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBzc19yZXNlcnZlZDsKMTQ0NzQ6ICAgdWludDhf dCBkZnBfaGFyZGNvZGVfbW9kZV9udW07CjE0NDc0OiAgIHVpbnQ4X3QgZGZwX2hhcmRjb2RlX3Jl ZnJlc2hyYXRlOwoxNDQ3NDogICB1aW50OF90IHZnYV9oYXJkY29kZV9tb2RlX251bTsKMTQ0NzQ6 ICAgdWludDhfdCB2Z2FfaGFyZGNvZGVfcmVmcmVzaHJhdGU7CjE0NDc0OiAgIHVpbnQxNl90IGRw cGh5X3JlZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDE2X3QgcmVzZXJ2ZWQyOwoxNDQ3NDogICB1 aW50OF90IGRjbmlwX21pbl92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgZGNuaXBfbWF4X3ZlcjsKMTQ0 NzQ6ICAgdWludDhfdCBtYXhfZGlzcF9waXBlX251bTsKMTQ0NzQ6ICAgdWludDhfdCBtYXhfdmJp b3NfYWN0aXZlX2Rpc3BfcGlwZV9udW07CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3BwbGxfbnVtOwox NDQ3NDogICB1aW50OF90IG1heF9kaXNwX3BoeV9udW07CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2F1 eF9wYWlyczsKMTQ0NzQ6ICAgdWludDhfdCByZW1vdGVkaXNwbGF5Y29uZmlnOwoxNDQ3NDogICB1 aW50OF90IHJlc2VydmVkM1s4XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51 bSBkY2VfaW5mb19jYXBzX2RlZgoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgIERDRV9JTkZPX0NB UFNfRk9SQ0VfRElTUERFVl9DT05ORUNURUQgPTB4MDIsCjE0NDc0OiAKMTQ0NzQ6ICAgRENFX0lO Rk9fQ0FQU19ESVNBQkxFX0RGUF9EUF9IQlIyID0weDA0LAoxNDQ3NDogCjE0NDc0OiAgIERDRV9J TkZPX0NBUFNfRU5BQkxFX0lOVEVSTEFDX1RJTUlORyA9MHgwOCwKMTQ0NzQ6IAoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdG9tX2V4dF9kaXNwbGF5X3BhdGgKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2X3QgZGV2 aWNlX3RhZzsKMTQ0NzQ6ICAgdWludDE2X3QgZGV2aWNlX2FjcGlfZW51bTsKMTQ0NzQ6ICAgdWlu dDE2X3QgY29ubmVjdG9yb2JqaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgYXV4ZGRjbHV0X2luZGV4Owox NDQ3NDogICB1aW50OF90IGhwZGx1dF9pbmRleDsKMTQ0NzQ6ICAgdWludDE2X3QgZXh0X2VuY29k ZXJfb2JqaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgY2hhbm5lbG1hcHBpbmc7CjE0NDc0OiAgIHVpbnQ4 X3QgY2hwbmludmVydDsKMTQ0NzQ6ICAgdWludDE2X3QgY2FwczsKMTQ0NzQ6ICAgdWludDE2X3Qg cmVzZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZXh0X2Rpc3Bs YXlfcGF0aF9jYXBfZGVmCjE0NDc0OiB7CjE0NDc0OiAgIEVYVF9ESVNQTEFZX1BBVEhfQ0FQU19f SEJSMl9ESVNBQkxFID0weDAwMDEsCjE0NDc0OiAgIEVYVF9ESVNQTEFZX1BBVEhfQ0FQU19fRFBf RklYRURfVlNfRU4gPTB4MDAwMiwKMTQ0NzQ6ICAgRVhUX0RJU1BMQVlfUEFUSF9DQVBTX19FWFRf Q0hJUF9NQVNLID0weDAwN0MsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9l eHRlcm5hbF9kaXNwbGF5X2Nvbm5lY3Rpb25faW5mbwoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3Qg YXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBn dWlkWzE2XTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fZXh0X2Rpc3BsYXlfcGF0aCBwYXRoWzddOwox NDQ3NDogICB1aW50OF90IGNoZWNrc3VtOwoxNDQ3NDogICB1aW50OF90IHN0ZXJlb3BpbmlkOwox NDQ3NDogICB1aW50OF90IHJlbW90ZWRpc3BsYXljb25maWc7CjE0NDc0OiAgIHVpbnQ4X3QgZWRw dG9sdmRzcnhpZDsKMTQ0NzQ6ICAgdWludDhfdCBmaXhkcHZvbHRhZ2Vzd2luZzsKMTQ0NzQ6ICAg dWludDhfdCByZXNlcnZlZFszXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2NhbWVyYV9k cGh5X3RpbWluZ19wYXJhbQoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IHByb2ZpbGVfaWQ7CjE0 NDc0OiAgIHVpbnQzMl90IHBhcmFtOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0 b21fY2FtZXJhX2RwaHlfZWxlY19wYXJhbQoxNDQ3NDogewoxNDQ3NDogICB1aW50MTZfdCBwYXJh bVszXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2NhbWVyYV9tb2R1bGVf aW5mbwoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IG1vZHVsZV9pZDsKMTQ0NzQ6ICAgdWludDhf dCBtb2R1bGVfbmFtZVs4XTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY2FtZXJhX2RwaHlfdGltaW5n X3BhcmFtIHRpbWluZ3BhcmFtWzZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0 b21fY2FtZXJhX2ZsYXNobGlnaHRfaW5mbwoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IGZsYXNo bGlnaHRfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgbmFtZVs4XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBhdG9tX2NhbWVyYV9kYXRhCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQzMl90IHZl cnNpb25Db2RlOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jYW1lcmFfbW9kdWxlX2luZm8gY2FtZXJh SW5mb1szXTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY2FtZXJhX2ZsYXNobGlnaHRfaW5mbyBmbGFz aEluZm87CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NhbWVyYV9kcGh5X2VsZWNfcGFyYW0gZHBoeV9w YXJhbTsKMTQ0NzQ6ICAgdWludDMyX3QgY3JjX3ZhbDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGF0b21fMTRubV9kcHBoeV9kdmloZG1pX3R1bmluZ3NldAoxNDQ3NDog ewoxNDQ3NDogICB1aW50MzJfdCBtYXhfc3ltY2xrX2luMTBraHo7CjE0NDc0OiAgIHVpbnQ4X3Qg ZW5jb2Rlcl9tb2RlOwoxNDQ3NDogICB1aW50OF90IHBoeV9zZWw7CjE0NDc0OiAgIHVpbnQxNl90 IG1hcmdpbmRlZW1waDsKMTQ0NzQ6ICAgdWludDhfdCBkZWVtcGhfNmRiXzQ7CjE0NDc0OiAgIHVp bnQ4X3QgYm9vc3RhZGo7CjE0NDc0OiAgIHVpbnQ4X3QgdHhfZHJpdmVyX2ZpZnR5X29obXM7CjE0 NDc0OiAgIHVpbnQ4X3QgZGVlbXBoX3NlbDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBhdG9tXzE0bm1fZHBwaHlfZHBfc2V0dGluZ3sKMTQ0NzQ6ICAgdWludDhfdCBkcF92c19wZW1w aF9sZXZlbDsKMTQ0NzQ6ICAgdWludDE2X3QgbWFyZ2luZGVlbXBoOwoxNDQ3NDogICB1aW50OF90 IGRlZW1waF82ZGJfNDsKMTQ0NzQ6ICAgdWludDhfdCBib29zdGFkajsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHBfdHVuaW5nc2V0ewoxNDQ3NDogICB1 aW50OF90IHBoeV9zZWw7CjE0NDc0OiAgIHVpbnQ4X3QgdmVyc2lvbjsKMTQ0NzQ6ICAgdWludDE2 X3QgdGFibGVfc2l6ZTsKMTQ0NzQ6ICAgdWludDE2X3QgcmVzZXJ2ZWQ7CjE0NDc0OiAgIHN0cnVj dCBhdG9tXzE0bm1fZHBwaHlfZHBfc2V0dGluZyBkcHR1bmluZ1sxMF07CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV8xNG5tX2RpZ190cmFuc21pdHRlcl9pbmZvX2hlYWRlcl92 NF8wewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRl cjsKMTQ0NzQ6ICAgdWludDE2X3QgcGNpZV9waHlfdG1kc19oZG1pX21hY3JvX3NldHRpbmdzX29m ZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgdW5pcGh5X3ZzX2VtcGhfbG9va3VwX3RhYmxlX29mZnNl dDsKMTQ0NzQ6ICAgdWludDE2X3QgdW5pcGh5X3hiYXJfc2V0dGluZ3NfdGFibGVfb2Zmc2V0Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fMTRubV9jb21icGh5X3RtZHNfdnNf c2V0CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3Qgc3ltX2NsazsKMTQ0NzQ6ICAgdWludDhfdCBk aWdfbW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBwaHlfc2VsOwoxNDQ3NDogICB1aW50MTZfdCBjb21t b25fbWFyX2RlZW1waF9ub21fX21hcmdpbl9kZWVtcGhfdmFsOwoxNDQ3NDogICB1aW50OF90IGNv bW1vbl9zZWxkZWVtcGg2MF9fZGVlbXBoXzZkYl80X3ZhbDsKMTQ0NzQ6ICAgdWludDhfdCBjbWRf YnVzX2dsb2JhbF9mb3JfdHhfbGFuZTBfX2Jvb3N0YWRqX3ZhbCA7CjE0NDc0OiAgIHVpbnQ4X3Qg Y29tbW9uX3pjYWxjb2RlX2N0cmxfX3R4X2RyaXZlcl9maWZ0eV9vaG1zX3ZhbDsKMTQ0NzQ6ICAg dWludDhfdCBtYXJnaW5fZGVlbXBoX2xhbmUwX19kZWVtcGhfc2VsX3ZhbDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2kyY19yZWdfaW5mbyB7CjE0NDc0OiAgIHVpbnQ4X3Qg dWNJMmNSZWdJbmRleDsKMTQ0NzQ6ICAgdWludDhfdCB1Y0kyY1JlZ1ZhbDsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2hkbWlfcmV0aW1lcl9yZWRyaXZlcl9zZXQgewoxNDQ3 NDogICB1aW50OF90IEhkbWlTbHZBZGRyOwoxNDQ3NDogICB1aW50OF90IEhkbWlSZWdOdW07CjE0 NDc0OiAgIHVpbnQ4X3QgSGRtaTZHUmVnTnVtOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9pMmNfcmVn X2luZm8gSGRtaVJlZ1NldHRpbmdbOV07CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2kyY19yZWdfaW5m byBIZG1pNkdoelJlZ1NldHRpbmdbM107CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9pbnRlZ3JhdGVkX3N5c3RlbV9pbmZvX3YxXzExCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVj dCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICB1aW50MzJf dCB2Ymlvc19taXNjOwoxNDQ3NDogICB1aW50MzJfdCBncHVjYXBpbmZvOwoxNDQ3NDogICB1aW50 MzJfdCBzeXN0ZW1fY29uZmlnOwoxNDQ3NDogICB1aW50MzJfdCBjcHVjYXBpbmZvOwoxNDQ3NDog ICB1aW50MTZfdCBncHVjbGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgZ3B1Y2xr X3NzX3R5cGU7CjE0NDc0OiAgIHVpbnQxNl90IGx2ZHNfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAg dWludDE2X3QgbHZkc19zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQxNl90IGhkbWlfc3NfcGVy Y2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgaGRtaV9zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVp bnQxNl90IGR2aV9zc19wZXJjZW50YWdlOwoxNDQ3NDogICB1aW50MTZfdCBkdmlfc3NfcmF0ZV8x MGh6OwoxNDQ3NDogICB1aW50MTZfdCBkcHBoeV9vdmVycmlkZTsKMTQ0NzQ6ICAgdWludDE2X3Qg bHZkc19taXNjOwoxNDQ3NDogICB1aW50MTZfdCBiYWNrbGlnaHRfcHdtX2h6OwoxNDQ3NDogICB1 aW50OF90IG1lbW9yeXR5cGU7CjE0NDc0OiAgIHVpbnQ4X3QgdW1hY2hhbm5lbG51bWJlcjsKMTQ0 NzQ6ICAgdWludDhfdCBwd3Jfb25fZGlnb25fdG9fZGU7CjE0NDc0OiAgIHVpbnQ4X3QgcHdyX29u X2RlX3RvX3ZhcnlfYmw7CjE0NDc0OiAgIHVpbnQ4X3QgcHdyX2Rvd25fdmFyeV9ibG9mZl90b19k ZTsKMTQ0NzQ6ICAgdWludDhfdCBwd3JfZG93bl9kZV90b19kaWdvZmY7CjE0NDc0OiAgIHVpbnQ4 X3QgcHdyX29mZl9kZWxheTsKMTQ0NzQ6ICAgdWludDhfdCBwd3Jfb25fdmFyeV9ibF90b19ibG9u OwoxNDQ3NDogICB1aW50OF90IHB3cl9kb3duX2Jsb2ZmX3RvX3ZhcnlfYmxvZmY7CjE0NDc0OiAg IHVpbnQ4X3QgbWluX2FsbG93ZWRfYmxfbGV2ZWw7CjE0NDc0OiAgIHVpbnQ4X3QgaHRjX2h5c3Rf bGltaXQ7CjE0NDc0OiAgIHVpbnQ4X3QgaHRjX3RtcF9saW1pdDsKMTQ0NzQ6ICAgdWludDhfdCBy ZXNlcnZlZDE7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQyOwoxNDQ3NDogICBzdHJ1Y3QgYXRv bV9leHRlcm5hbF9kaXNwbGF5X2Nvbm5lY3Rpb25faW5mbyBleHRkaXNwY29ubmluZm87CjE0NDc0 OiAgIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHZpaGRtaV90dW5pbmdzZXQgZHZpX3R1bmluZ3Nl dDsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fMTRubV9kcHBoeV9kdmloZG1pX3R1bmluZ3NldCBoZG1p X3R1bmluZ3NldDsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fMTRubV9kcHBoeV9kdmloZG1pX3R1bmlu Z3NldCBoZG1pNmdfdHVuaW5nc2V0OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2Rw X3R1bmluZ3NldCBkcF90dW5pbmdzZXQ7CjE0NDc0OiAgIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlf ZHBfdHVuaW5nc2V0IGRwX2hicjNfdHVuaW5nc2V0OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jYW1l cmFfZGF0YSBjYW1lcmFfaW5mbzsKMTQ0NzQ6ICAgc3RydWN0IGF0b21faGRtaV9yZXRpbWVyX3Jl ZHJpdmVyX3NldCBkcDBfcmV0aW1lcl9zZXQ7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2hkbWlfcmV0 aW1lcl9yZWRyaXZlcl9zZXQgZHAxX3JldGltZXJfc2V0OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9o ZG1pX3JldGltZXJfcmVkcml2ZXJfc2V0IGRwMl9yZXRpbWVyX3NldDsKMTQ0NzQ6ICAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDNfcmV0aW1lcl9zZXQ7CjE0NDc0OiAg IHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHBfdHVuaW5nc2V0IGRwX2hicl90dW5pbmdzZXQ7CjE0 NDc0OiAgIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHBfdHVuaW5nc2V0IGRwX2hicjJfdHVuaW5n c2V0OwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldCBlZHBfdHVu aW5nc2V0OwoxNDQ3NDogICB1aW50MzJfdCByZXNlcnZlZFs2Nl07CjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3N5c3RlbV92Ymlvc21pc2NfZGVmewox NDQ3NDogICBJTlRFR1JBVEVEX1NZU1RFTV9JTkZPX19HRVRfRURJRF9DQUxMQkFDS19GVU5DX1NV UFBPUlQgPSAweDAxLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVu dW0gYXRvbV9zeXN0ZW1fZ3B1Y2FwaW5mX2RlZnsKMTQ0NzQ6ICAgU1lTX0lORk9fR1BVQ0FQU19f RU5BQkVMX0RGU19CWVBBU1MgPSAweDEwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBlbnVtIGF0b21fc3lzaW5mb19kcHBoeV9vdmVycmlkZV9kZWZ7CjE0NDc0OiAgIEFUT01fRU5B QkxFX0RWSV9UVU5JTkdTRVQgPSAweDAxLAoxNDQ3NDogICBBVE9NX0VOQUJMRV9IRE1JX1RVTklO R1NFVCA9IDB4MDIsCjE0NDc0OiAgIEFUT01fRU5BQkxFX0hETUk2R19UVU5JTkdTRVQgPSAweDA0 LAoxNDQ3NDogICBBVE9NX0VOQUJMRV9EUF9UVU5JTkdTRVQgPSAweDA4LAoxNDQ3NDogICBBVE9N X0VOQUJMRV9EUF9IQlIzX1RVTklOR1NFVCA9IDB4MTAsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGVudW0gYXRvbV9zeXNfaW5mb19sdmRzX21pc2NfZGVmCjE0NDc0OiB7CjE0NDc0 OiAgIFNZU19JTkZPX0xWRFNfTUlTQ184ODhfRlBESV9NT0RFID0weDAxLAoxNDQ3NDogICBTWVNf SU5GT19MVkRTX01JU0NfODg4X0JQQ19NT0RFID0weDA0LAoxNDQ3NDogICBTWVNfSU5GT19MVkRT X01JU0NfT1ZFUlJJREVfRU4gPTB4MDgsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogZW51bSBhdG9tX2RtaV90MTdfbWVtX3R5cGVfZGVmewoxNDQ3NDogICBPdGhlck1l bVR5cGUgPSAweDAxLAoxNDQ3NDogICBVbmtub3duTWVtVHlwZSwKMTQ0NzQ6ICAgRHJhbU1lbVR5 cGUsCjE0NDc0OiAgIEVkcmFtTWVtVHlwZSwKMTQ0NzQ6ICAgVnJhbU1lbVR5cGUsCjE0NDc0OiAg IFNyYW1NZW1UeXBlLAoxNDQ3NDogICBSYW1NZW1UeXBlLAoxNDQ3NDogICBSb21NZW1UeXBlLAox NDQ3NDogICBGbGFzaE1lbVR5cGUsCjE0NDc0OiAgIEVlcHJvbU1lbVR5cGUsCjE0NDc0OiAgIEZl cHJvbU1lbVR5cGUsCjE0NDc0OiAgIEVwcm9tTWVtVHlwZSwKMTQ0NzQ6ICAgQ2RyYW1NZW1UeXBl LAoxNDQ3NDogICBUaHJlZURyYW1NZW1UeXBlLAoxNDQ3NDogICBTZHJhbU1lbVR5cGUsCjE0NDc0 OiAgIFNncmFtTWVtVHlwZSwKMTQ0NzQ6ICAgUmRyYW1NZW1UeXBlLAoxNDQ3NDogICBEZHJNZW1U eXBlLAoxNDQ3NDogICBEZHIyTWVtVHlwZSwKMTQ0NzQ6ICAgRGRyMkZiZGltbU1lbVR5cGUsCjE0 NDc0OiAgIERkcjNNZW1UeXBlID0gMHgxOCwKMTQ0NzQ6ICAgRmJkMk1lbVR5cGUsCjE0NDc0OiAg IERkcjRNZW1UeXBlLAoxNDQ3NDogICBMcERkck1lbVR5cGUsCjE0NDc0OiAgIExwRGRyMk1lbVR5 cGUsCjE0NDc0OiAgIExwRGRyM01lbVR5cGUsCjE0NDc0OiAgIExwRGRyNE1lbVR5cGUsCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fZnVzaW9uX3N5 c3RlbV9pbmZvX3Y0CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2ludGVncmF0ZWRfc3lz dGVtX2luZm9fdjFfMTEgc3lzaW5mbzsKMTQ0NzQ6ICAgdWludDMyX3QgcG93ZXJwbGF5aW5mb1sy NTZdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMTIxOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3NDogc3RydWN0IGF0b21fZ2Z4X2luZm9f djJfMgoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRh YmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBnZnhpcF9taW5fdmVyOwoxNDQ3NDogICB1aW50 OF90IGdmeGlwX21heF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3NoYWRlcl9lbmdpbmVzOwox NDQ3NDogICB1aW50OF90IG1heF90aWxlX3BpcGVzOwoxNDQ3NDogICB1aW50OF90IG1heF9jdV9w ZXJfc2g7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3NoX3Blcl9zZTsKMTQ0NzQ6ICAgdWludDhfdCBt YXhfYmFja2VuZHNfcGVyX3NlOwoxNDQ3NDogICB1aW50OF90IG1heF90ZXh0dXJlX2NoYW5uZWxf Y2FjaGVzOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9zcmNfYWRkcjsKMTQ0NzQ6 ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfc3JjX2FkZHJfaGk7CjE0NDc0OiAgIHVpbnQzMl90 IHJlZ2FkZHJfY3BfZG1hX2RzdF9hZGRyOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX2NwX2Rt YV9kc3RfYWRkcl9oaTsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfY29tbWFuZDsK MTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9zdGF0dXM7CjE0NDc0OiAgIHVpbnQzMl90IHJl Z2FkZHJfcmxjX2dwdV9jbG9ja18zMjsKMTQ0NzQ6ICAgdWludDMyX3QgcmxjX2dwdV90aW1lcl9y ZWZjbGs7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9nZnhfaW5mb192Ml8z IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7 CjE0NDc0OiAgIHVpbnQ4X3QgZ2Z4aXBfbWluX3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCBnZnhpcF9t YXhfdmVyOwoxNDQ3NDogICB1aW50OF90IG1heF9zaGFkZXJfZW5naW5lczsKMTQ0NzQ6ICAgdWlu dDhfdCBtYXhfdGlsZV9waXBlczsKMTQ0NzQ6ICAgdWludDhfdCBtYXhfY3VfcGVyX3NoOwoxNDQ3 NDogICB1aW50OF90IG1heF9zaF9wZXJfc2U7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X2JhY2tlbmRz X3Blcl9zZTsKMTQ0NzQ6ICAgdWludDhfdCBtYXhfdGV4dHVyZV9jaGFubmVsX2NhY2hlczsKMTQ0 NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfc3JjX2FkZHI7CjE0NDc0OiAgIHVpbnQzMl90 IHJlZ2FkZHJfY3BfZG1hX3NyY19hZGRyX2hpOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX2Nw X2RtYV9kc3RfYWRkcjsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfZHN0X2FkZHJf aGk7CjE0NDc0OiAgIHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1hX2NvbW1hbmQ7CjE0NDc0OiAgIHVp bnQzMl90IHJlZ2FkZHJfY3Bfc3RhdHVzOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX3JsY19n cHVfY2xvY2tfMzI7CjE0NDc0OiAgIHVpbnQzMl90IHJsY19ncHVfdGltZXJfcmVmY2xrOwoxNDQ3 NDogICB1aW50OF90IGFjdGl2ZV9jdV9wZXJfc2g7CjE0NDc0OiAgIHVpbnQ4X3QgYWN0aXZlX3Ji X3Blcl9zZTsKMTQ0NzQ6ICAgdWludDE2X3QgZ2Nnb2xkZW5vZmZzZXQ7CjE0NDc0OiAgIHVpbnQz Ml90IHJtMjFfc3JhbV92bWluX3ZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGF0b21fZ2Z4X2luZm9fdjJfNAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25f dGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBnZnhpcF9taW5fdmVy OwoxNDQ3NDogICB1aW50OF90IGdmeGlwX21heF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3No YWRlcl9lbmdpbmVzOwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkOwoxNDQ3NDogICB1aW50OF90 IG1heF9jdV9wZXJfc2g7CjE0NDc0OiAgIHVpbnQ4X3QgbWF4X3NoX3Blcl9zZTsKMTQ0NzQ6ICAg dWludDhfdCBtYXhfYmFja2VuZHNfcGVyX3NlOwoxNDQ3NDogICB1aW50OF90IG1heF90ZXh0dXJl X2NoYW5uZWxfY2FjaGVzOwoxNDQ3NDogICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9zcmNfYWRk cjsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFfc3JjX2FkZHJfaGk7CjE0NDc0OiAg IHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1hX2RzdF9hZGRyOwoxNDQ3NDogICB1aW50MzJfdCByZWdh ZGRyX2NwX2RtYV9kc3RfYWRkcl9oaTsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9kbWFf Y29tbWFuZDsKMTQ0NzQ6ICAgdWludDMyX3QgcmVnYWRkcl9jcF9zdGF0dXM7CjE0NDc0OiAgIHVp bnQzMl90IHJlZ2FkZHJfcmxjX2dwdV9jbG9ja18zMjsKMTQ0NzQ6ICAgdWludDMyX3QgcmxjX2dw dV90aW1lcl9yZWZjbGs7CjE0NDc0OiAgIHVpbnQ4X3QgYWN0aXZlX2N1X3Blcl9zaDsKMTQ0NzQ6 ICAgdWludDhfdCBhY3RpdmVfcmJfcGVyX3NlOwoxNDQ3NDogICB1aW50MTZfdCBnY2dvbGRlbm9m ZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgZ2NfbnVtX2dwcnM7CjE0NDc0OiAgIHVpbnQxNl90IGdj X2dzcHJpbV9idWZmX2RlcHRoOwoxNDQ3NDogICB1aW50MTZfdCBnY19wYXJhbWV0ZXJfY2FjaGVf ZGVwdGg7CjE0NDc0OiAgIHVpbnQxNl90IGdjX3dhdmVfc2l6ZTsKMTQ0NzQ6ICAgdWludDE2X3Qg Z2NfbWF4X3dhdmVzX3Blcl9zaW1kOwoxNDQ3NDogICB1aW50MTZfdCBnY19sZHNfc2l6ZTsKMTQ0 NzQ6ICAgdWludDhfdCBnY19udW1fbWF4X2dzX3RoZHM7CjE0NDc0OiAgIHVpbnQ4X3QgZ2NfZ3Nf dGFibGVfZGVwdGg7CjE0NDc0OiAgIHVpbnQ4X3QgZ2NfZG91YmxlX29mZmNoaXBfbGRzX2J1ZmZl cjsKMTQ0NzQ6ICAgdWludDhfdCBnY19tYXhfc2NyYXRjaF9zbG90c19wZXJfY3U7CjE0NDc0OiAg IHVpbnQzMl90IHNyYW1fcm1fZnVzZXNfdmFsOwoxNDQ3NDogICB1aW50MzJfdCBzcmFtX2N1c3Rv bV9ybV9mdXNlc192YWw7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fc211X2luZm9fdjNfMQoxNDQ3NDog ewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsK MTQ0NzQ6ICAgdWludDhfdCBzbXVpcF9taW5fdmVyOwoxNDQ3NDogICB1aW50OF90IHNtdWlwX21h eF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3Qgc211X3JzZDE7CjE0NDc0OiAgIHVpbnQ4X3QgZ3B1Y2xr X3NzX21vZGU7CjE0NDc0OiAgIHVpbnQxNl90IHNjbGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAg dWludDE2X3Qgc2Nsa19zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQxNl90IGdwdWNsa19zc19w ZXJjZW50YWdlOwoxNDQ3NDogICB1aW50MTZfdCBncHVjbGtfc3NfcmF0ZV8xMGh6OwoxNDQ3NDog ICB1aW50MzJfdCBjb3JlX3JlZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDhfdCBhY19kY19ncGlv X2JpdDsKMTQ0NzQ6ICAgdWludDhfdCBhY19kY19wb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCB2 cjBob3RfZ3Bpb19iaXQ7CjE0NDc0OiAgIHVpbnQ4X3QgdnIwaG90X3BvbGFyaXR5OwoxNDQ3NDog ICB1aW50OF90IHZyMWhvdF9ncGlvX2JpdDsKMTQ0NzQ6ICAgdWludDhfdCB2cjFob3RfcG9sYXJp dHk7CjE0NDc0OiAgIHVpbnQ4X3QgZndfY3RmX2dwaW9fYml0OwoxNDQ3NDogICB1aW50OF90IGZ3 X2N0Zl9wb2xhcml0eTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3NtdV9p bmZvX3YzXzIgewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxl X2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBzbXVpcF9taW5fdmVyOwoxNDQ3NDogICB1aW50OF90 IHNtdWlwX21heF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3Qgc211X3JzZDE7CjE0NDc0OiAgIHVpbnQ4 X3QgZ3B1Y2xrX3NzX21vZGU7CjE0NDc0OiAgIHVpbnQxNl90IHNjbGtfc3NfcGVyY2VudGFnZTsK MTQ0NzQ6ICAgdWludDE2X3Qgc2Nsa19zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQxNl90IGdw dWNsa19zc19wZXJjZW50YWdlOwoxNDQ3NDogICB1aW50MTZfdCBncHVjbGtfc3NfcmF0ZV8xMGh6 OwoxNDQ3NDogICB1aW50MzJfdCBjb3JlX3JlZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDhfdCBh Y19kY19ncGlvX2JpdDsKMTQ0NzQ6ICAgdWludDhfdCBhY19kY19wb2xhcml0eTsKMTQ0NzQ6ICAg dWludDhfdCB2cjBob3RfZ3Bpb19iaXQ7CjE0NDc0OiAgIHVpbnQ4X3QgdnIwaG90X3BvbGFyaXR5 OwoxNDQ3NDogICB1aW50OF90IHZyMWhvdF9ncGlvX2JpdDsKMTQ0NzQ6ICAgdWludDhfdCB2cjFo b3RfcG9sYXJpdHk7CjE0NDc0OiAgIHVpbnQ4X3QgZndfY3RmX2dwaW9fYml0OwoxNDQ3NDogICB1 aW50OF90IGZ3X2N0Zl9wb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCBwY2NfZ3Bpb19iaXQ7CjE0 NDc0OiAgIHVpbnQ4X3QgcGNjX2dwaW9fcG9sYXJpdHk7CjE0NDc0OiAgIHVpbnQxNl90IHNtdWdv bGRlbm9mZnNldDsKMTQ0NzQ6ICAgdWludDMyX3QgZ3B1cGxsX3Zjb19mcmVxXzEwa2h6OwoxNDQ3 NDogICB1aW50MzJfdCBib290dXBfc21uY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290 dXBfc29jY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290dXBfbXAwY2xrXzEwa2h6Owox NDQ3NDogICB1aW50MzJfdCBib290dXBfbXAxY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBi b290dXBfbGNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDMyX3QgYm9vdHVwX2RjZWZjbGtfMTBraHo7 CjE0NDc0OiAgIHVpbnQzMl90IGN0Zl90aHJlc2hvbGRfb3ZlcnJpZGVfdmFsdWU7CjE0NDc0OiAg IHVpbnQzMl90IHJlc2VydmVkWzVdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0 b21fc211X2luZm9fdjNfMyB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFk ZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICB1aW50OF90IHNtdWlwX21pbl92ZXI7CjE0NDc0OiAg IHVpbnQ4X3Qgc211aXBfbWF4X3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB3YWZsY2xrX3NzX21vZGU7 CjE0NDc0OiAgIHVpbnQ4X3QgZ3B1Y2xrX3NzX21vZGU7CjE0NDc0OiAgIHVpbnQxNl90IHNjbGtf c3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3Qgc2Nsa19zc19yYXRlXzEwaHo7CjE0NDc0 OiAgIHVpbnQxNl90IGdwdWNsa19zc19wZXJjZW50YWdlOwoxNDQ3NDogICB1aW50MTZfdCBncHVj bGtfc3NfcmF0ZV8xMGh6OwoxNDQ3NDogICB1aW50MzJfdCBjb3JlX3JlZmNsa18xMGtoejsKMTQ0 NzQ6ICAgdWludDhfdCBhY19kY19ncGlvX2JpdDsKMTQ0NzQ6ICAgdWludDhfdCBhY19kY19wb2xh cml0eTsKMTQ0NzQ6ICAgdWludDhfdCB2cjBob3RfZ3Bpb19iaXQ7CjE0NDc0OiAgIHVpbnQ4X3Qg dnIwaG90X3BvbGFyaXR5OwoxNDQ3NDogICB1aW50OF90IHZyMWhvdF9ncGlvX2JpdDsKMTQ0NzQ6 ICAgdWludDhfdCB2cjFob3RfcG9sYXJpdHk7CjE0NDc0OiAgIHVpbnQ4X3QgZndfY3RmX2dwaW9f Yml0OwoxNDQ3NDogICB1aW50OF90IGZ3X2N0Zl9wb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCBw Y2NfZ3Bpb19iaXQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGNjX2dwaW9fcG9sYXJpdHk7CjE0NDc0OiAg IHVpbnQxNl90IHNtdWdvbGRlbm9mZnNldDsKMTQ0NzQ6ICAgdWludDMyX3QgZ3B1cGxsX3Zjb19m cmVxXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290dXBfc21uY2xrXzEwa2h6OwoxNDQ3NDog ICB1aW50MzJfdCBib290dXBfc29jY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290dXBf bXAwY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBib290dXBfbXAxY2xrXzEwa2h6OwoxNDQ3 NDogICB1aW50MzJfdCBib290dXBfbGNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDMyX3QgYm9vdHVw X2RjZWZjbGtfMTBraHo7CjE0NDc0OiAgIHVpbnQzMl90IGN0Zl90aHJlc2hvbGRfb3ZlcnJpZGVf dmFsdWU7CjE0NDc0OiAgIHVpbnQzMl90IHN5c3BsbDNfMF92Y29fZnJlcV8xMGtoejsKMTQ0NzQ6 ICAgdWludDMyX3Qgc3lzcGxsM18xX3Zjb19mcmVxXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBi b290dXBfZmNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDMyX3QgYm9vdHVwX3dhZmxjbGtfMTBraHo7 CjE0NDc0OiAgIHVpbnQzMl90IHNtdV9pbmZvX2NhcHM7CjE0NDc0OiAgIHVpbnQxNl90IHdhZmxj bGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3Qgc211aW5pdG9mZnNldDsKMTQ0NzQ6 ICAgdWludDMyX3QgcmVzZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fc21jX2RwbV9pbmZvX3Y0 XzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJs ZV9oZWFkZXI7CjE0NDc0OiAgIHVpbnQ4X3QgbGlxdWlkMV9pMmNfYWRkcmVzczsKMTQ0NzQ6ICAg dWludDhfdCBsaXF1aWQyX2kyY19hZGRyZXNzOwoxNDQ3NDogICB1aW50OF90IHZyX2kyY19hZGRy ZXNzOwoxNDQ3NDogICB1aW50OF90IHBseF9pMmNfYWRkcmVzczsKMTQ0NzQ6IAoxNDQ3NDogICB1 aW50OF90IGxpcXVpZF9pMmNfbGluZXNjbDsKMTQ0NzQ6ICAgdWludDhfdCBsaXF1aWRfaTJjX2xp bmVzZGE7CjE0NDc0OiAgIHVpbnQ4X3QgdnJfaTJjX2xpbmVzY2w7CjE0NDc0OiAgIHVpbnQ4X3Qg dnJfaTJjX2xpbmVzZGE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBwbHhfaTJjX2xpbmVzY2w7 CjE0NDc0OiAgIHVpbnQ4X3QgcGx4X2kyY19saW5lc2RhOwoxNDQ3NDogICB1aW50OF90IHZyc2Vu c29ycHJlc2VudDsKMTQ0NzQ6ICAgdWludDhfdCBsaXF1aWRzZW5zb3JwcmVzZW50OwoxNDQ3NDog CjE0NDc0OiAgIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwZ2Z4OwoxNDQ3NDogICB1aW50MTZfdCBt YXh2b2x0YWdlc3RlcHNvYzsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IHZkZGdmeHZybWFwcGlu ZzsKMTQ0NzQ6ICAgdWludDhfdCB2ZGRzb2N2cm1hcHBpbmc7CjE0NDc0OiAgIHVpbnQ4X3QgdmRk bWVtMHZybWFwcGluZzsKMTQ0NzQ6ICAgdWludDhfdCB2ZGRtZW0xdnJtYXBwaW5nOwoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgZ2Z4dWx2cGhhc2VzaGVkZGluZ21hc2s7CjE0NDc0OiAgIHVpbnQ4 X3Qgc29jdWx2cGhhc2VzaGVkZGluZ21hc2s7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZzhfdlsy XTsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBnZnhtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50 OF90IGdmeG9mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWdmeDsKMTQ0 NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBzb2NtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90IHNv Y29mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeXNvYzsKMTQ0NzQ6IAox NDQ3NDogICB1aW50MTZfdCBtZW0wbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0wb2Zm c2V0OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMDsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MTZfdCBtZW0xbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0xb2Zmc2V0 OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMTsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50OF90IGFjZGNncGlvOwoxNDQ3NDogICB1aW50OF90IGFjZGNwb2xhcml0eTsKMTQ0NzQ6 ICAgdWludDhfdCB2cjBob3RncGlvOwoxNDQ3NDogICB1aW50OF90IHZyMGhvdHBvbGFyaXR5Owox NDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgdnIxaG90Z3BpbzsKMTQ0NzQ6ICAgdWludDhfdCB2cjFo b3Rwb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nMTsKMTQ0NzQ6ICAgdWludDhfdCBw YWRkaW5nMjsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IGxlZHBpbjA7CjE0NDc0OiAgIHVpbnQ4 X3QgbGVkcGluMTsKMTQ0NzQ6ICAgdWludDhfdCBsZWRwaW4yOwoxNDQ3NDogICB1aW50OF90IHBh ZGRpbmc4XzQ7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7 CjE0NDc0OiAgdWludDhfdCBwbGxnZnhjbGtzcHJlYWRwZXJjZW50OwoxNDQ3NDogIHVpbnQxNl90 IHBsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCB1Y2xrc3ByZWFk ZW5hYmxlZDsKMTQ0NzQ6ICAgdWludDhfdCB1Y2xrc3ByZWFkcGVyY2VudDsKMTQ0NzQ6ICAgdWlu dDE2X3QgdWNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBzb2NjbGtzcHJl YWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IHNvY2Nsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAg IHVpbnQxNl90IHNvY2Nsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICB1aW50OF90IGFjZ2dm eGNsa3NwcmVhZGVuYWJsZWQ7CjE0NDc0OiAgdWludDhfdCBhY2dnZnhjbGtzcHJlYWRwZXJjZW50 OwoxNDQ3NDogIHVpbnQxNl90IGFjZ2dmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICB1 aW50OF90IFZyMl9JMkNfYWRkcmVzczsKMTQ0NzQ6ICB1aW50OF90IHBhZGRpbmdfdnIyWzNdOwox NDQ3NDogCjE0NDc0OiAgdWludDMyX3QgYm9hcmRyZXNlcnZlZFs5XTsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9zbWNfZHBtX2luZm9fdjRfMwoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21t b25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCBsaXF1aWQxX2ky Y19hZGRyZXNzOwoxNDQ3NDogICB1aW50OF90IGxpcXVpZDJfaTJjX2FkZHJlc3M7CjE0NDc0OiAg IHVpbnQ4X3QgdnJfaTJjX2FkZHJlc3M7CjE0NDc0OiAgIHVpbnQ4X3QgcGx4X2kyY19hZGRyZXNz OwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgbGlxdWlkX2kyY19saW5lc2NsOwoxNDQ3NDogICB1 aW50OF90IGxpcXVpZF9pMmNfbGluZXNkYTsKMTQ0NzQ6ICAgdWludDhfdCB2cl9pMmNfbGluZXNj bDsKMTQ0NzQ6ICAgdWludDhfdCB2cl9pMmNfbGluZXNkYTsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50 OF90IHBseF9pMmNfbGluZXNjbDsKMTQ0NzQ6ICAgdWludDhfdCBwbHhfaTJjX2xpbmVzZGE7CjE0 NDc0OiAgIHVpbnQ4X3QgdnJzZW5zb3JwcmVzZW50OwoxNDQ3NDogICB1aW50OF90IGxpcXVpZHNl bnNvcnByZXNlbnQ7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgbWF4dm9sdGFnZXN0ZXBnZng7 CjE0NDc0OiAgIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwc29jOwoxNDQ3NDogCjE0NDc0OiAgIHVp bnQ4X3QgdmRkZ2Z4dnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZHNvY3ZybWFwcGluZzsK MTQ0NzQ6ICAgdWludDhfdCB2ZGRtZW0wdnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZG1l bTF2cm1hcHBpbmc7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBnZnh1bHZwaGFzZXNoZWRkaW5n bWFzazsKMTQ0NzQ6ICAgdWludDhfdCBzb2N1bHZwaGFzZXNoZWRkaW5nbWFzazsKMTQ0NzQ6ICAg dWludDhfdCBleHRlcm5hbHNlbnNvcnByZXNlbnQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZzhf djsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBnZnhtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50 OF90IGdmeG9mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWdmeDsKMTQ0 NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBzb2NtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90IHNv Y29mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeXNvYzsKMTQ0NzQ6IAox NDQ3NDogICB1aW50MTZfdCBtZW0wbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0wb2Zm c2V0OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMDsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MTZfdCBtZW0xbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0xb2Zmc2V0 OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMTsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50OF90IGFjZGNncGlvOwoxNDQ3NDogICB1aW50OF90IGFjZGNwb2xhcml0eTsKMTQ0NzQ6 ICAgdWludDhfdCB2cjBob3RncGlvOwoxNDQ3NDogICB1aW50OF90IHZyMGhvdHBvbGFyaXR5Owox NDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgdnIxaG90Z3BpbzsKMTQ0NzQ6ICAgdWludDhfdCB2cjFo b3Rwb2xhcml0eTsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nMTsKMTQ0NzQ6ICAgdWludDhfdCBw YWRkaW5nMjsKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IGxlZHBpbjA7CjE0NDc0OiAgIHVpbnQ4 X3QgbGVkcGluMTsKMTQ0NzQ6ICAgdWludDhfdCBsZWRwaW4yOwoxNDQ3NDogICB1aW50OF90IHBh ZGRpbmc4XzQ7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBwbGxnZnhjbGtzcHJlYWRlbmFibGVk OwoxNDQ3NDogICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAgIHVpbnQx Nl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCB1Y2xrc3By ZWFkZW5hYmxlZDsKMTQ0NzQ6ICAgdWludDhfdCB1Y2xrc3ByZWFkcGVyY2VudDsKMTQ0NzQ6ICAg dWludDE2X3QgdWNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBmY2xrc3By ZWFkZW5hYmxlZDsKMTQ0NzQ6ICAgdWludDhfdCBmY2xrc3ByZWFkcGVyY2VudDsKMTQ0NzQ6ICAg dWludDE2X3QgZmNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBmbGxnZnhj bGtzcHJlYWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7 CjE0NDc0OiAgIHVpbnQxNl90IGZsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6ICAg dWludDMyX3QgYm9hcmRyZXNlcnZlZFsxMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3Qgc211ZHBtX2kyY2NvbnRyb2xsZXJjb25maWdfdCB7CjE0NDc0OiAgIHVpbnQzMl90IGVuYWJs ZWQ7CjE0NDc0OiAgIHVpbnQzMl90IHNsYXZlYWRkcmVzczsKMTQ0NzQ6ICAgdWludDMyX3QgY29u dHJvbGxlcnBvcnQ7CjE0NDc0OiAgIHVpbnQzMl90IGNvbnRyb2xsZXJuYW1lOwoxNDQ3NDogICB1 aW50MzJfdCB0aGVybWFsdGhyb3R0bGVyOwoxNDQ3NDogICB1aW50MzJfdCBpMmNwcm90b2NvbDsK MTQ0NzQ6ICAgdWludDMyX3QgaTJjc3BlZWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1 Y3QgYXRvbV9zbWNfZHBtX2luZm9fdjRfNAoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9j b21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDMyX3QgaTJjX3Bh ZGRpbmdbM107CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgbWF4dm9sdGFnZXN0ZXBnZng7CjE0 NDc0OiAgIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwc29jOwoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4 X3QgdmRkZ2Z4dnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZHNvY3ZybWFwcGluZzsKMTQ0 NzQ6ICAgdWludDhfdCB2ZGRtZW0wdnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZG1lbTF2 cm1hcHBpbmc7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBnZnh1bHZwaGFzZXNoZWRkaW5nbWFz azsKMTQ0NzQ6ICAgdWludDhfdCBzb2N1bHZwaGFzZXNoZWRkaW5nbWFzazsKMTQ0NzQ6ICAgdWlu dDhfdCBleHRlcm5hbHNlbnNvcnByZXNlbnQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZzhfdjsK MTQ0NzQ6IAoxNDQ3NDogICB1aW50MTZfdCBnZnhtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90 IGdmeG9mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWdmeDsKMTQ0NzQ6 IAoxNDQ3NDogICB1aW50MTZfdCBzb2NtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90IHNvY29m ZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeXNvYzsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MTZfdCBtZW0wbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0wb2Zmc2V0 OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMDsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50MTZfdCBtZW0xbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW0xb2Zmc2V0Owox NDQ3NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5bWVtMTsKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAgIHVpbnQ4X3QgYWNkY2dwaW87CjE0NDc0OiAgIHVpbnQ4X3QgYWNkY3BvbGFyaXR5Owox NDQ3NDogICB1aW50OF90IHZyMGhvdGdwaW87CjE0NDc0OiAgIHVpbnQ4X3QgdnIwaG90cG9sYXJp dHk7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCB2cjFob3RncGlvOwoxNDQ3NDogICB1aW50OF90 IHZyMWhvdHBvbGFyaXR5OwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmcxOwoxNDQ3NDogICB1aW50 OF90IHBhZGRpbmcyOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBsZWRwaW4wOwox NDQ3NDogICB1aW50OF90IGxlZHBpbjE7CjE0NDc0OiAgIHVpbnQ4X3QgbGVkcGluMjsKMTQ0NzQ6 ICAgdWludDhfdCBwYWRkaW5nOF80OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBw bGxnZnhjbGtzcHJlYWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZHBl cmNlbnQ7CjE0NDc0OiAgIHVpbnQxNl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogICB1aW50OF90IHVjbGtzcHJlYWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90 IHVjbGtzcHJlYWRwZXJjZW50OwoxNDQ3NDogICB1aW50MTZfdCB1Y2xrc3ByZWFkZnJlcTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgZmNsa3NwcmVhZGVuYWJsZWQ7CjE0NDc0OiAg IHVpbnQ4X3QgZmNsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAgIHVpbnQxNl90IGZjbGtzcHJlYWRm cmVxOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBmbGxnZnhjbGtzcHJlYWRlbmFi bGVkOwoxNDQ3NDogICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAgIHVp bnQxNl90IGZsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICBzdHJ1 Y3Qgc211ZHBtX2kyY2NvbnRyb2xsZXJjb25maWdfdCBpMmNjb250cm9sbGVyc1s3XTsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IGJvYXJkcmVzZXJ2ZWRbMTBdOwoxNDQ3NDogfTsK MTQ0NzQ6IAoxNDQ3NDogZW51bSBzbXVkcG1fdjRfNV9pMmNjb250cm9sbGVybmFtZV9lewoxNDQ3 NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX05BTUVfVlJfR0ZYID0gMCwKMTQ0NzQ6ICAg ICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9OQU1FX1ZSX1NPQywKMTQ0NzQ6ICAgICBTTUNfVjRf NV9JMkNfQ09OVFJPTExFUl9OQU1FX1ZSX1ZERENJLAoxNDQ3NDogICAgIFNNQ19WNF81X0kyQ19D T05UUk9MTEVSX05BTUVfVlJfTVZERCwKMTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExF Ul9OQU1FX0xJUVVJRDAsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9M SVFVSUQxLAoxNDQ3NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX05BTUVfUExYLAoxNDQ3 NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX05BTUVfU1BBUkUsCjE0NDc0OiAgICAgU01D X1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9DT1VOVCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gc211ZHBtX3Y0XzVfaTJjY29udHJvbGxlcnRocm90dGxlcl9lewoxNDQ3NDogICAgIFNN Q19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9UVExFUl9UWVBFX05PTkUgPSAwLAoxNDQ3NDogICAg IFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9UVExFUl9WUl9HRlgsCjE0NDc0OiAgICAgU01D X1Y0XzVfSTJDX0NPTlRST0xMRVJfVEhST1RUTEVSX1ZSX1NPQywKMTQ0NzQ6ICAgICBTTUNfVjRf NV9JMkNfQ09OVFJPTExFUl9USFJPVFRMRVJfVlJfVkREQ0ksCjE0NDc0OiAgICAgU01DX1Y0XzVf STJDX0NPTlRST0xMRVJfVEhST1RUTEVSX1ZSX01WREQsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJD X0NPTlRST0xMRVJfVEhST1RUTEVSX0xJUVVJRDAsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJDX0NP TlRST0xMRVJfVEhST1RUTEVSX0xJUVVJRDEsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJDX0NPTlRS T0xMRVJfVEhST1RUTEVSX1BMWCwKMTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9U SFJPVFRMRVJfQ09VTlQsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHNtdWRwbV92NF81 X2kyY2NvbnRyb2xsZXJwcm90b2NvbF9lewoxNDQ3NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9M TEVSX1BST1RPQ09MX1ZSXzAsCjE0NDc0OiAgICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfUFJP VE9DT0xfVlJfMSwKMTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9UT0NPTF9U TVBfMCwKMTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9UT0NPTF9UTVBfMSwK MTQ0NzQ6ICAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9UT0NPTF9TUEFSRV8wLAoxNDQ3 NDogICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1BST1RPQ09MX1NQQVJFXzEsCjE0NDc0OiAg ICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfUFJPVE9DT0xfQ09VTlQsCjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3Qgc211ZHBtX2kyY19jb250cm9sbGVyX2NvbmZpZ192MgoxNDQ3NDog ewoxNDQ3NDogICAgIHVpbnQ4X3QgRW5hYmxlZDsKMTQ0NzQ6ICAgICB1aW50OF90IFNwZWVkOwox NDQ3NDogICAgIHVpbnQ4X3QgUGFkZGluZ1syXTsKMTQ0NzQ6ICAgICB1aW50MzJfdCBTbGF2ZUFk ZHJlc3M7CjE0NDc0OiAgICAgdWludDhfdCBDb250cm9sbGVyUG9ydDsKMTQ0NzQ6ICAgICB1aW50 OF90IENvbnRyb2xsZXJOYW1lOwoxNDQ3NDogICAgIHVpbnQ4X3QgVGhlcm1hbFRocm90dGVyOwox NDQ3NDogICAgIHVpbnQ4X3QgSTJjUHJvdG9jb2w7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBz dHJ1Y3QgYXRvbV9zbWNfZHBtX2luZm9fdjRfNQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRv bV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAgIHN0cnVjdCBzbXVkcG1faTJjX2NvbnRyb2xsZXJfY29uZmlnX3YyIEkyY0NvbnRyb2xsZXJz WzhdOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgTWF4Vm9sdGFnZVN0ZXBHZng7 CjE0NDc0OiAgIHVpbnQxNl90IE1heFZvbHRhZ2VTdGVwU29jOwoxNDQ3NDogCjE0NDc0OiAgIHVp bnQ4X3QgVmRkR2Z4VnJNYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IFZkZFNvY1ZyTWFwcGluZzsK MTQ0NzQ6ICAgdWludDhfdCBWZGRNZW0wVnJNYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IFZkZE1l bTFWck1hcHBpbmc7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBHZnhVbHZQaGFzZVNoZWRkaW5n TWFzazsKMTQ0NzQ6ICAgdWludDhfdCBTb2NVbHZQaGFzZVNoZWRkaW5nTWFzazsKMTQ0NzQ6ICAg dWludDhfdCBFeHRlcm5hbFNlbnNvclByZXNlbnQ7CjE0NDc0OiAgIHVpbnQ4X3QgUGFkZGluZzhf VjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQxNl90IEdmeE1heEN1cnJlbnQ7CjE0NDc0 OiAgIHVpbnQ4X3QgR2Z4T2Zmc2V0OwoxNDQ3NDogICB1aW50OF90IFBhZGRpbmdfVGVsZW1ldHJ5 R2Z4OwoxNDQ3NDogICB1aW50MTZfdCBTb2NNYXhDdXJyZW50OwoxNDQ3NDogICB1aW50OF90IFNv Y09mZnNldDsKMTQ0NzQ6ICAgdWludDhfdCBQYWRkaW5nX1RlbGVtZXRyeVNvYzsKMTQ0NzQ6IAox NDQ3NDogICB1aW50MTZfdCBNZW0wTWF4Q3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBNZW0wT2Zm c2V0OwoxNDQ3NDogICB1aW50OF90IFBhZGRpbmdfVGVsZW1ldHJ5TWVtMDsKMTQ0NzQ6IAoxNDQ3 NDogICB1aW50MTZfdCBNZW0xTWF4Q3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBNZW0xT2Zmc2V0 OwoxNDQ3NDogICB1aW50OF90IFBhZGRpbmdfVGVsZW1ldHJ5TWVtMTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgQWNEY0dwaW87CjE0NDc0OiAgIHVpbnQ4X3QgQWNEY1BvbGFyaXR5 OwoxNDQ3NDogICB1aW50OF90IFZSMEhvdEdwaW87CjE0NDc0OiAgIHVpbnQ4X3QgVlIwSG90UG9s YXJpdHk7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBWUjFIb3RHcGlvOwoxNDQ3NDogICB1aW50 OF90IFZSMUhvdFBvbGFyaXR5OwoxNDQ3NDogICB1aW50OF90IEd0aHJHcGlvOwoxNDQ3NDogICB1 aW50OF90IEd0aHJQb2xhcml0eTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQ4X3QgTGVk UGluMDsKMTQ0NzQ6ICAgdWludDhfdCBMZWRQaW4xOwoxNDQ3NDogICB1aW50OF90IExlZFBpbjI7 CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZzhfNDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVp bnQ4X3QgUGxsR2Z4Y2xrU3ByZWFkRW5hYmxlZDsKMTQ0NzQ6ICAgdWludDhfdCBQbGxHZnhjbGtT cHJlYWRQZXJjZW50OwoxNDQ3NDogICB1aW50MTZfdCBQbGxHZnhjbGtTcHJlYWRGcmVxOwoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBEZmxsR2Z4Y2xrU3ByZWFkRW5hYmxlZDsKMTQ0 NzQ6ICAgdWludDhfdCBEZmxsR2Z4Y2xrU3ByZWFkUGVyY2VudDsKMTQ0NzQ6ICAgdWludDE2X3Qg RGZsbEdmeGNsa1NwcmVhZEZyZXE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IFVj bGtTcHJlYWRFbmFibGVkOwoxNDQ3NDogICB1aW50OF90IFVjbGtTcHJlYWRQZXJjZW50OwoxNDQ3 NDogICB1aW50MTZfdCBVY2xrU3ByZWFkRnJlcTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVp bnQ4X3QgU29jbGtTcHJlYWRFbmFibGVkOwoxNDQ3NDogICB1aW50OF90IFNvY2Nsa1NwcmVhZFBl cmNlbnQ7CjE0NDc0OiAgIHVpbnQxNl90IFNvY2Nsa1NwcmVhZEZyZXE7CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogICB1aW50MTZfdCBUb3RhbEJvYXJkUG93ZXI7CjE0NDc0OiAgIHVpbnQxNl90IEJv YXJkUGFkZGluZzsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IE12ZGRSYXRpbzsK MTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBCb2FyZFJlc2VydmVkWzldOwoxNDQ3NDogCjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9zbWNfZHBtX2luZm9fdjRfNgoxNDQ3NDog ewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsK MTQ0NzQ6IAoxNDQ3NDogICB1aW50MzJfdCBpMmNfcGFkZGluZ1szXTsKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50MTZfdCBtYXh2b2x0YWdlc3RlcGdmeDsKMTQ0NzQ6ICAgdWludDE2X3QgbWF4dm9sdGFn ZXN0ZXBzb2M7CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCB2ZGRnZnh2cm1hcHBpbmc7CjE0NDc0 OiAgIHVpbnQ4X3QgdmRkc29jdnJtYXBwaW5nOwoxNDQ3NDogICB1aW50OF90IHZkZG1lbXZybWFw cGluZzsKMTQ0NzQ6ICAgdWludDhfdCBib2FyZHZybWFwcGluZzsKMTQ0NzQ6IAoxNDQ3NDogICB1 aW50OF90IGdmeHVsdnBoYXNlc2hlZGRpbmdtYXNrOwoxNDQ3NDogICB1aW50OF90IGV4dGVybmFs c2Vuc29ycHJlc2VudDsKMTQ0NzQ6ICAgdWludDhfdCBwYWRkaW5nOF92WzJdOwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgZ2Z4bWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBn ZnhvZmZzZXQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnlnZng7CjE0NDc0OiAK MTQ0NzQ6ICAgdWludDE2X3Qgc29jbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBzb2NvZmZz ZXQ7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnlzb2M7CjE0NDc0OiAKMTQ0NzQ6 ICAgdWludDE2X3QgbWVtbWF4Y3VycmVudDsKMTQ0NzQ6ICAgdWludDhfdCBtZW1vZmZzZXQ7CjE0 NDc0OiAgIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnltZW07CjE0NDc0OiAKMTQ0NzQ6ICAgdWlu dDE2X3QgYm9hcmRtYXhjdXJyZW50OwoxNDQ3NDogICB1aW50OF90IGJvYXJkb2Zmc2V0OwoxNDQ3 NDogICB1aW50OF90IHBhZGRpbmdfdGVsZW1ldHJ5Ym9hcmRpbnB1dDsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgdnIwaG90Z3BpbzsKMTQ0NzQ6ICAgdWludDhfdCB2cjBob3Rwb2xh cml0eTsKMTQ0NzQ6ICAgdWludDhfdCB2cjFob3RncGlvOwoxNDQ3NDogICB1aW50OF90IHZyMWhv dHBvbGFyaXR5OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAgdWludDhfdCBwbGxnZnhjbGtzcHJl YWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7CjE0NDc0 OiAgIHVpbnQxNl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog ICB1aW50OF90IHVjbGtzcHJlYWRlbmFibGVkOwoxNDQ3NDogICB1aW50OF90IHVjbGtzcHJlYWRw ZXJjZW50OwoxNDQ3NDogICB1aW50MTZfdCB1Y2xrc3ByZWFkZnJlcTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAgIHVpbnQ4X3QgZmNsa3NwcmVhZGVuYWJsZWQ7CjE0NDc0OiAgIHVpbnQ4X3QgZmNs a3NwcmVhZHBlcmNlbnQ7CjE0NDc0OiAgIHVpbnQxNl90IGZjbGtzcHJlYWRmcmVxOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7 CjE0NDc0OiAgIHVpbnQ4X3QgZmxsZ2Z4Y2xrc3ByZWFkcGVyY2VudDsKMTQ0NzQ6ICAgdWludDE2 X3QgZmxsZ2Z4Y2xrc3ByZWFkZnJlcTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHN0cnVjdCBz bXVkcG1faTJjX2NvbnRyb2xsZXJfY29uZmlnX3YyIGkyY2NvbnRyb2xsZXJzWzhdOwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDMyX3QgbWVtb3J5Y2hhbm5lbGVuYWJsZWQ7CjE0NDc0OiAK MTQ0NzQ6ICAgdWludDhfdCBkcmFtYml0d2lkdGg7CjE0NDc0OiAgIHVpbnQ4X3QgcGFkZGluZ21l bVszXTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQxNl90IHRvdGFsYm9hcmRwb3dlcjsK MTQ0NzQ6ICAgdWludDE2X3QgYm9hcmRwYWRkaW5nOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICAg dWludDhfdCB4Z21pbGlua3NwZWVkWzRdOwoxNDQ3NDogICB1aW50OF90IHhnbWlsaW5rd2lkdGhb NF07CjE0NDc0OiAKMTQ0NzQ6ICAgdWludDE2X3QgeGdtaWZjbGtmcmVxWzRdOwoxNDQ3NDogICB1 aW50MTZfdCB4Z21pc29jdm9sdGFnZVs0XTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIHVpbnQz Ml90IGJvYXJkcmVzZXJ2ZWRbMTBdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2FzaWNfcHJvZmlsaW5n X2luZm9fdjRfMQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVh ZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDMyX3QgbWF4dmRkYzsKMTQ0NzQ6ICAgdWlu dDMyX3QgbWludmRkYzsKMTQ0NzQ6ICAgdWludDMyX3QgYXZmc19tZWFubnNpZ21hX2Fjb250YW50 MDsKMTQ0NzQ6ICAgdWludDMyX3QgYXZmc19tZWFubnNpZ21hX2Fjb250YW50MTsKMTQ0NzQ6ICAg dWludDMyX3QgYXZmc19tZWFubnNpZ21hX2Fjb250YW50MjsKMTQ0NzQ6ICAgdWludDE2X3QgYXZm c19tZWFubnNpZ21hX2RjX3RvbF9zaWdtYTsKMTQ0NzQ6ICAgdWludDE2X3QgYXZmc19tZWFubnNp Z21hX3BsYXRmb3JtX21lYW47CjE0NDc0OiAgIHVpbnQxNl90IGF2ZnNfbWVhbm5zaWdtYV9wbGF0 Zm9ybV9zaWdtYTsKMTQ0NzQ6ICAgdWludDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29mZl9hMDsK MTQ0NzQ6ICAgdWludDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29mZl9hMTsKMTQ0NzQ6ICAgdWlu dDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29mZl9hMjsKMTQ0NzQ6ICAgdWludDMyX3QgZ2JfdmRy b29wX3RhYmxlX2Nrc29uX2EwOwoxNDQ3NDogICB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tz b25fYTE7CjE0NDc0OiAgIHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMjsKMTQ0NzQ6 ICAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb2ZmX20xOwoxNDQ3NDogICB1aW50MzJf dCBhdmZzZ2JfZnVzZV90YWJsZV9ja3NvZmZfbTI7CjE0NDc0OiAgIHVpbnQzMl90IGF2ZnNnYl9m dXNlX3RhYmxlX2Nrc29mZl9iOwoxNDQ3NDogICB1aW50MzJfdCBhdmZzZ2JfZnVzZV90YWJsZV9j a3Nvbl9tMTsKMTQ0NzQ6ICAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb25fbTI7CjE0 NDc0OiAgIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29uX2I7CjE0NDc0OiAgIHVpbnQx Nl90IG1heF92b2x0YWdlXzBfMjVtdjsKMTQ0NzQ6ICAgdWludDhfdCBlbmFibGVfZ2JfdmRyb29w X3RhYmxlX2Nrc29mZjsKMTQ0NzQ6ICAgdWludDhfdCBlbmFibGVfZ2JfdmRyb29wX3RhYmxlX2Nr c29uOwoxNDQ3NDogICB1aW50OF90IGVuYWJsZV9nYl9mdXNlX3RhYmxlX2Nrc29mZjsKMTQ0NzQ6 ICAgdWludDhfdCBlbmFibGVfZ2JfZnVzZV90YWJsZV9ja3NvbjsKMTQ0NzQ6ICAgdWludDE2X3Qg cHNtX2FnZV9jb21mYWN0b3I7CjE0NDc0OiAgIHVpbnQ4X3QgZW5hYmxlX2FwcGx5X2F2ZnNfY2tz b2ZmX3ZvbHRhZ2U7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CjE0NDc0OiAgIHVpbnQzMl90 IGRpc3BjbGsyZ2Z4Y2xrX2E7CjE0NDc0OiAgIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2I7CjE0 NDc0OiAgIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2M7CjE0NDc0OiAgIHVpbnQzMl90IHBpeGNs azJnZnhjbGtfYTsKMTQ0NzQ6ICAgdWludDMyX3QgcGl4Y2xrMmdmeGNsa19iOwoxNDQ3NDogICB1 aW50MzJfdCBwaXhjbGsyZ2Z4Y2xrX2M7CjE0NDc0OiAgIHVpbnQzMl90IGRjZWZjbGsyZ2Z4Y2xr X2E7CjE0NDc0OiAgIHVpbnQzMl90IGRjZWZjbGsyZ2Z4Y2xrX2I7CjE0NDc0OiAgIHVpbnQzMl90 IGRjZWZjbGsyZ2Z4Y2xrX2M7CjE0NDc0OiAgIHVpbnQzMl90IHBoeWNsazJnZnhjbGtfYTsKMTQ0 NzQ6ICAgdWludDMyX3QgcGh5Y2xrMmdmeGNsa19iOwoxNDQ3NDogICB1aW50MzJfdCBwaHljbGsy Z2Z4Y2xrX2M7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9hc2ljX3Byb2Zp bGluZ19pbmZvX3Y0XzIgewoxNDQ3NDogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIg dGFibGVfaGVhZGVyOwoxNDQ3NDogIHVpbnQzMl90IG1heHZkZGM7CjE0NDc0OiAgdWludDMyX3Qg bWludmRkYzsKMTQ0NzQ6ICB1aW50MzJfdCBhdmZzX21lYW5uc2lnbWFfYWNvbnRhbnQwOwoxNDQ3 NDogIHVpbnQzMl90IGF2ZnNfbWVhbm5zaWdtYV9hY29udGFudDE7CjE0NDc0OiAgdWludDMyX3Qg YXZmc19tZWFubnNpZ21hX2Fjb250YW50MjsKMTQ0NzQ6ICB1aW50MTZfdCBhdmZzX21lYW5uc2ln bWFfZGNfdG9sX3NpZ21hOwoxNDQ3NDogIHVpbnQxNl90IGF2ZnNfbWVhbm5zaWdtYV9wbGF0Zm9y bV9tZWFuOwoxNDQ3NDogIHVpbnQxNl90IGF2ZnNfbWVhbm5zaWdtYV9wbGF0Zm9ybV9zaWdtYTsK MTQ0NzQ6ICB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tzb2ZmX2EwOwoxNDQ3NDogIHVpbnQz Ml90IGdiX3Zkcm9vcF90YWJsZV9ja3NvZmZfYTE7CjE0NDc0OiAgdWludDMyX3QgZ2JfdmRyb29w X3RhYmxlX2Nrc29mZl9hMjsKMTQ0NzQ6ICB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tzb25f YTA7CjE0NDc0OiAgdWludDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29uX2ExOwoxNDQ3NDogIHVp bnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMjsKMTQ0NzQ6ICB1aW50MzJfdCBhdmZzZ2Jf ZnVzZV90YWJsZV9ja3NvZmZfbTE7CjE0NDc0OiAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVf Y2tzb2ZmX20yOwoxNDQ3NDogIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29mZl9iOwox NDQ3NDogIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29uX20xOwoxNDQ3NDogIHVpbnQz Ml90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29uX20yOwoxNDQ3NDogIHVpbnQzMl90IGF2ZnNnYl9m dXNlX3RhYmxlX2Nrc29uX2I7CjE0NDc0OiAgdWludDE2X3QgbWF4X3ZvbHRhZ2VfMF8yNW12Owox NDQ3NDogIHVpbnQ4X3QgZW5hYmxlX2diX3Zkcm9vcF90YWJsZV9ja3NvZmY7CjE0NDc0OiAgdWlu dDhfdCBlbmFibGVfZ2JfdmRyb29wX3RhYmxlX2Nrc29uOwoxNDQ3NDogIHVpbnQ4X3QgZW5hYmxl X2diX2Z1c2VfdGFibGVfY2tzb2ZmOwoxNDQ3NDogIHVpbnQ4X3QgZW5hYmxlX2diX2Z1c2VfdGFi bGVfY2tzb247CjE0NDc0OiAgdWludDE2X3QgcHNtX2FnZV9jb21mYWN0b3I7CjE0NDc0OiAgdWlu dDhfdCBlbmFibGVfYXBwbHlfYXZmc19ja3NvZmZfdm9sdGFnZTsKMTQ0NzQ6ICB1aW50OF90IHJl c2VydmVkOwoxNDQ3NDogIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2E7CjE0NDc0OiAgdWludDMy X3QgZGlzcGNsazJnZnhjbGtfYjsKMTQ0NzQ6ICB1aW50MzJfdCBkaXNwY2xrMmdmeGNsa19jOwox NDQ3NDogIHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYTsKMTQ0NzQ6ICB1aW50MzJfdCBwaXhjbGsy Z2Z4Y2xrX2I7CjE0NDc0OiAgdWludDMyX3QgcGl4Y2xrMmdmeGNsa19jOwoxNDQ3NDogIHVpbnQz Ml90IGRjZWZjbGsyZ2Z4Y2xrX2E7CjE0NDc0OiAgdWludDMyX3QgZGNlZmNsazJnZnhjbGtfYjsK MTQ0NzQ6ICB1aW50MzJfdCBkY2VmY2xrMmdmeGNsa19jOwoxNDQ3NDogIHVpbnQzMl90IHBoeWNs azJnZnhjbGtfYTsKMTQ0NzQ6ICB1aW50MzJfdCBwaHljbGsyZ2Z4Y2xrX2I7CjE0NDc0OiAgdWlu dDMyX3QgcGh5Y2xrMmdmeGNsa19jOwoxNDQ3NDogIHVpbnQzMl90IGFjZ19nYl92ZHJvb3BfdGFi bGVfYTA7CjE0NDc0OiAgdWludDMyX3QgYWNnX2diX3Zkcm9vcF90YWJsZV9hMTsKMTQ0NzQ6ICB1 aW50MzJfdCBhY2dfZ2JfdmRyb29wX3RhYmxlX2EyOwoxNDQ3NDogIHVpbnQzMl90IGFjZ19hdmZz Z2JfZnVzZV90YWJsZV9tMTsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfYXZmc2diX2Z1c2VfdGFibGVf bTI7CjE0NDc0OiAgdWludDMyX3QgYWNnX2F2ZnNnYl9mdXNlX3RhYmxlX2I7CjE0NDc0OiAgdWlu dDhfdCBlbmFibGVfYWNnX2diX3Zkcm9vcF90YWJsZTsKMTQ0NzQ6ICB1aW50OF90IGVuYWJsZV9h Y2dfZ2JfZnVzZV90YWJsZTsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfZGlzcGNsazJnZnhjbGtfYTsK MTQ0NzQ6ICB1aW50MzJfdCBhY2dfZGlzcGNsazJnZnhjbGtfYjsKMTQ0NzQ6ICB1aW50MzJfdCBh Y2dfZGlzcGNsazJnZnhjbGtfYzsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfcGl4Y2xrMmdmeGNsa19h OwoxNDQ3NDogIHVpbnQzMl90IGFjZ19waXhjbGsyZ2Z4Y2xrX2I7CjE0NDc0OiAgdWludDMyX3Qg YWNnX3BpeGNsazJnZnhjbGtfYzsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfZGNlZmNsazJnZnhjbGtf YTsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfZGNlZmNsazJnZnhjbGtfYjsKMTQ0NzQ6ICB1aW50MzJf dCBhY2dfZGNlZmNsazJnZnhjbGtfYzsKMTQ0NzQ6ICB1aW50MzJfdCBhY2dfcGh5Y2xrMmdmeGNs a19hOwoxNDQ3NDogIHVpbnQzMl90IGFjZ19waHljbGsyZ2Z4Y2xrX2I7CjE0NDc0OiAgdWludDMy X3QgYWNnX3BoeWNsazJnZnhjbGtfYzsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9tdWx0aW1lZGlhX2lu Zm9fdjJfMQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVy IHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCB1dmRpcF9taW5fdmVyOwoxNDQ3NDogICB1 aW50OF90IHV2ZGlwX21heF92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgdmNlaXBfbWluX3ZlcjsKMTQ0 NzQ6ICAgdWludDhfdCB2Y2VpcF9tYXhfdmVyOwoxNDQ3NDogICB1aW50MTZfdCB1dmRfZW5jX21h eF9pbnB1dF93aWR0aF9waXhlbHM7CjE0NDc0OiAgIHVpbnQxNl90IHV2ZF9lbmNfbWF4X2lucHV0 X2hlaWdodF9waXhlbHM7CjE0NDc0OiAgIHVpbnQxNl90IHZjZV9lbmNfbWF4X2lucHV0X3dpZHRo X3BpeGVsczsKMTQ0NzQ6ICAgdWludDE2X3QgdmNlX2VuY19tYXhfaW5wdXRfaGVpZ2h0X3BpeGVs czsKMTQ0NzQ6ICAgdWludDMyX3QgdXZkX2VuY19tYXhfYmFuZHdpZHRoOwoxNDQ3NDogICB1aW50 MzJfdCB2Y2VfZW5jX21heF9iYW5kd2lkdGg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV91 bWNfaW5mb192M18xCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9o ZWFkZXIgdGFibGVfaGVhZGVyOwoxNDQ3NDogICB1aW50MzJfdCB1Y29kZV92ZXJzaW9uOwoxNDQ3 NDogICB1aW50MzJfdCB1Y29kZV9yb21fc3RhcnRhZGRyOwoxNDQ3NDogICB1aW50MzJfdCB1Y29k ZV9sZW5ndGg7CjE0NDc0OiAgIHVpbnQxNl90IHVtY19yZWdfaW5pdF9vZmZzZXQ7CjE0NDc0OiAg IHVpbnQxNl90IGN1c3RvbWVyX3Vjb2RlX25hbWVfb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBt Y2xrX3NzX3BlcmNlbnRhZ2U7CjE0NDc0OiAgIHVpbnQxNl90IG1jbGtfc3NfcmF0ZV8xMGh6Owox NDQ3NDogICB1aW50OF90IHVtY2lwX21pbl92ZXI7CjE0NDc0OiAgIHVpbnQ4X3QgdW1jaXBfbWF4 X3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB2cmFtX3R5cGU7CjE0NDc0OiAgIHVpbnQ4X3QgdW1jX2Nv bmZpZzsKMTQ0NzQ6ICAgdWludDMyX3QgbWVtX3JlZmNsa18xMGtoejsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3VtY19jb25maWdfZGVmIHsKMTQ0NzQ6ICAgVU1D X0NPTkZJR19fRU5BQkxFXzFLQl9JTlRFUkxFQVZFX01PREUgPSAweDAwMDAwMDAxLAoxNDQ3NDog ICBVTUNfQ09ORklHX19ERUZBVUxUX01FTV9FQ0NfRU5BQkxFID0gMHgwMDAwMDAwMiwKMTQ0NzQ6 ICAgVU1DX0NPTkZJR19fRU5BQkxFX0hCTV9MQU5FX1JFUEFJUiA9IDB4MDAwMDAwMDQsCjE0NDc0 OiAgIFVNQ19DT05GSUdfX0VOQUJMRV9CQU5LX0hBUlZFU1RJTkcgPSAweDAwMDAwMDA4LAoxNDQ3 NDogICBVTUNfQ09ORklHX19FTkFCTEVfUEhZX1JFSU5JVCA9IDB4MDAwMDAwMTAsCjE0NDc0OiAg IFVNQ19DT05GSUdfX0RJU0FCTEVfVUNPREVfQ0hLU1RBVFVTID0gMHgwMDAwMDAyMCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3VtY19pbmZvX3YzXzIKMTQ0NzQ6IHsKMTQ0 NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0NDc0 OiAgIHVpbnQzMl90IHVjb2RlX3ZlcnNpb247CjE0NDc0OiAgIHVpbnQzMl90IHVjb2RlX3JvbV9z dGFydGFkZHI7CjE0NDc0OiAgIHVpbnQzMl90IHVjb2RlX2xlbmd0aDsKMTQ0NzQ6ICAgdWludDE2 X3QgdW1jX3JlZ19pbml0X29mZnNldDsKMTQ0NzQ6ICAgdWludDE2X3QgY3VzdG9tZXJfdWNvZGVf bmFtZV9vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1jbGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6 ICAgdWludDE2X3QgbWNsa19zc19yYXRlXzEwaHo7CjE0NDc0OiAgIHVpbnQ4X3QgdW1jaXBfbWlu X3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB1bWNpcF9tYXhfdmVyOwoxNDQ3NDogICB1aW50OF90IHZy YW1fdHlwZTsKMTQ0NzQ6ICAgdWludDhfdCB1bWNfY29uZmlnOwoxNDQ3NDogICB1aW50MzJfdCBt ZW1fcmVmY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJfdCBwc3RhdGVfdWNsa18xMGtoels0XTsK MTQ0NzQ6ICAgdWludDE2X3QgdW1jZ29sZGVub2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBkZW5z aXR5Z29sZGVub2Zmc2V0OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fdW1j X2luZm9fdjNfMwoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVh ZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDMyX3QgdWNvZGVfcmVzZXJ2ZWQ7CjE0NDc0 OiAgIHVpbnQzMl90IHVjb2RlX3JvbV9zdGFydGFkZHI7CjE0NDc0OiAgIHVpbnQzMl90IHVjb2Rl X2xlbmd0aDsKMTQ0NzQ6ICAgdWludDE2X3QgdW1jX3JlZ19pbml0X29mZnNldDsKMTQ0NzQ6ICAg dWludDE2X3QgY3VzdG9tZXJfdWNvZGVfbmFtZV9vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1j bGtfc3NfcGVyY2VudGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgbWNsa19zc19yYXRlXzEwaHo7CjE0 NDc0OiAgIHVpbnQ4X3QgdW1jaXBfbWluX3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB1bWNpcF9tYXhf dmVyOwoxNDQ3NDogICB1aW50OF90IHZyYW1fdHlwZTsKMTQ0NzQ6ICAgdWludDhfdCB1bWNfY29u ZmlnOwoxNDQ3NDogICB1aW50MzJfdCBtZW1fcmVmY2xrXzEwa2h6OwoxNDQ3NDogICB1aW50MzJf dCBwc3RhdGVfdWNsa18xMGtoels0XTsKMTQ0NzQ6ICAgdWludDE2X3QgdW1jZ29sZGVub2Zmc2V0 OwoxNDQ3NDogICB1aW50MTZfdCBkZW5zaXR5Z29sZGVub2Zmc2V0OwoxNDQ3NDogICB1aW50MzJf dCByZXNlcnZlZFs0XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV92cmFtX21vZHVsZV92OSB7CjE0NDc0 OiAKMTQ0NzQ6ICAgdWludDMyX3QgbWVtb3J5X3NpemU7CjE0NDc0OiAgIHVpbnQzMl90IGNoYW5u ZWxfZW5hYmxlOwoxNDQ3NDogICB1aW50MzJfdCBtYXhfbWVtX2NsazsKMTQ0NzQ6ICAgdWludDE2 X3QgcmVzZXJ2ZWRbM107CjE0NDc0OiAgIHVpbnQxNl90IG1lbV92b2x0YWdlOwoxNDQ3NDogICB1 aW50MTZfdCB2cmFtX21vZHVsZV9zaXplOwoxNDQ3NDogICB1aW50OF90IGV4dF9tZW1vcnlfaWQ7 CjE0NDc0OiAgIHVpbnQ4X3QgbWVtb3J5X3R5cGU7CjE0NDc0OiAgIHVpbnQ4X3QgY2hhbm5lbF9u dW07CjE0NDc0OiAgIHVpbnQ4X3QgY2hhbm5lbF93aWR0aDsKMTQ0NzQ6ICAgdWludDhfdCBkZW5z aXR5OwoxNDQ3NDogICB1aW50OF90IHR1bm5pbmdzZXRfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgdmVu ZGVyX3Jldl9pZDsKMTQ0NzQ6ICAgdWludDhfdCByZWZyZXNocmF0ZTsKMTQ0NzQ6ICAgdWludDhf dCBoYm1fdmVuX3Jldl9pZDsKMTQ0NzQ6ICAgdWludDhfdCB2cmFtX3JzZDI7CjE0NDc0OiAgIGNo YXIgZHJhbV9wbnN0cmluZ1syMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRv bV92cmFtX2luZm9faGVhZGVyX3YyXzMgewoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFi bGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWludDE2X3QgbWVtX2FkanVzdF90Ymxv ZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1lbV9jbGtfcGF0Y2hfdGJsb2Zmc2V0OwoxNDQ3NDog ICB1aW50MTZfdCBtY19hZGp1c3RfcGVydGlsZV90YmxvZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90 IG1jX3BoeWluaXRfdGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBkcmFtX2RhdGFfcmVtYXBf dGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCB0bXJzX3NlcV9vZmZzZXQ7CjE0NDc0OiAgIHVp bnQxNl90IHBvc3RfdWNvZGVfaW5pdF9vZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IHZyYW1fcnNk MjsKMTQ0NzQ6ICAgdWludDhfdCB2cmFtX21vZHVsZV9udW07CjE0NDc0OiAgIHVpbnQ4X3QgdW1j aXBfbWluX3ZlcjsKMTQ0NzQ6ICAgdWludDhfdCB1bWNpcF9tYXhfdmVyOwoxNDQ3NDogICB1aW50 OF90IG1jX3BoeV90aWxlX251bTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fdnJhbV9tb2R1bGVfdjkg dnJhbV9tb2R1bGVbMTZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fdW1j X3JlZ2lzdGVyX2FkZHJfaW5mb3sKMTQ0NzQ6ICAgdWludDMyX3QgdW1jX3JlZ2lzdGVyX2FkZHI6 MjQ7CjE0NDc0OiAgIHVpbnQzMl90IHVtY19yZWdfdHlwZV9pbmQ6MTsKMTQ0NzQ6ICAgdWludDMy X3QgdW1jX3JlZ19yc3ZkOjc7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0g YXRvbV91bWNfcmVnaXN0ZXJfYWRkcl9pbmZvX2ZsYWd7CjE0NDc0OiAgIGIzQVRPTV9VTUNfUkVH X0FERF9JTkZPX0lORElSRUNUX0FDQ0VTUyA9MHgwMSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IHVuaW9uIGF0b21fdW1jX3JlZ2lzdGVyX2FkZHJfaW5mb19hY2Nlc3MKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgc3RydWN0IGF0b21fdW1jX3JlZ2lzdGVyX2FkZHJfaW5mbyB1bWNfcmVnX2FkZHI7CjE0NDc0 OiAgIHVpbnQzMl90IHUzMnVtY19yZWdfYWRkcjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdG9tX3VtY19yZWdfc2V0dGluZ19pZF9jb25maWd7CjE0NDc0OiAgIHVpbnQzMl90IG1l bWNsb2NrcmFuZ2U6MjQ7CjE0NDc0OiAgIHVpbnQzMl90IG1lbV9ibGtfaWQ6ODsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHVuaW9uIGF0b21fdW1jX3JlZ19zZXR0aW5nX2lkX2NvbmZpZ19hY2Nl c3MKMTQ0NzQ6IHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fdW1jX3JlZ19zZXR0aW5nX2lkX2NvbmZp ZyB1bWNfaWRfYWNjZXNzOwoxNDQ3NDogICB1aW50MzJfdCB1MzJ1bWNfaWRfYWNjZXNzOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fdW1jX3JlZ19zZXR0aW5nX2RhdGFfYmxv Y2t7CjE0NDc0OiAgIHVuaW9uIGF0b21fdW1jX3JlZ19zZXR0aW5nX2lkX2NvbmZpZ19hY2Nlc3Mg YmxvY2tfaWQ7CjE0NDc0OiAgIHVpbnQzMl90IHUzMnVtY19yZWdfZGF0YVsxXTsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3VtY19pbml0X3JlZ19ibG9ja3sKMTQ0NzQ6ICAg dWludDE2X3QgdW1jX3JlZ19udW07CjE0NDc0OiAgIHVpbnQxNl90IHJlc2VydmVkOwoxNDQ3NDog ICB1bmlvbiBhdG9tX3VtY19yZWdpc3Rlcl9hZGRyX2luZm9fYWNjZXNzIHVtY19yZWdfbGlzdFsx XTsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fdW1jX3JlZ19zZXR0aW5nX2RhdGFfYmxvY2sgdW1jX3Jl Z19zZXR0aW5nX2xpc3RbMV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV92 cmFtX21vZHVsZV92MTAgewoxNDQ3NDogCjE0NDc0OiAgIHVpbnQzMl90IG1lbW9yeV9zaXplOwox NDQ3NDogICB1aW50MzJfdCBjaGFubmVsX2VuYWJsZTsKMTQ0NzQ6ICAgdWludDMyX3QgbWF4X21l bV9jbGs7CjE0NDc0OiAgIHVpbnQxNl90IHJlc2VydmVkWzNdOwoxNDQ3NDogICB1aW50MTZfdCBt ZW1fdm9sdGFnZTsKMTQ0NzQ6ICAgdWludDE2X3QgdnJhbV9tb2R1bGVfc2l6ZTsKMTQ0NzQ6ICAg dWludDhfdCBleHRfbWVtb3J5X2lkOwoxNDQ3NDogICB1aW50OF90IG1lbW9yeV90eXBlOwoxNDQ3 NDogICB1aW50OF90IGNoYW5uZWxfbnVtOwoxNDQ3NDogICB1aW50OF90IGNoYW5uZWxfd2lkdGg7 CjE0NDc0OiAgIHVpbnQ4X3QgZGVuc2l0eTsKMTQ0NzQ6ICAgdWludDhfdCB0dW5uaW5nc2V0X2lk OwoxNDQ3NDogICB1aW50OF90IHZlbmRlcl9yZXZfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVmcmVz aHJhdGU7CjE0NDc0OiAgIHVpbnQ4X3QgdnJhbV9mbGFnczsKMTQ0NzQ6ICAgdWludDhfdCB2cmFt X3JzZDI7CjE0NDc0OiAgIHVpbnQxNl90IGdkZHI2X21yMTA7CjE0NDc0OiAgIHVpbnQxNl90IGdk ZHI2X21yMTsKMTQ0NzQ6ICAgdWludDE2X3QgZ2RkcjZfbXIyOwoxNDQ3NDogICB1aW50MTZfdCBn ZGRyNl9tcjc7CjE0NDc0OiAgIGNoYXIgZHJhbV9wbnN0cmluZ1syMF07CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV92cmFtX2luZm9faGVhZGVyX3YyXzQgewoxNDQ3NDogICBz dHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKMTQ0NzQ6ICAgdWlu dDE2X3QgbWVtX2FkanVzdF90YmxvZmZzZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1lbV9jbGtfcGF0 Y2hfdGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCBtY19hZGp1c3RfcGVydGlsZV90YmxvZmZz ZXQ7CjE0NDc0OiAgIHVpbnQxNl90IG1jX3BoeWluaXRfdGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50 MTZfdCBkcmFtX2RhdGFfcmVtYXBfdGJsb2Zmc2V0OwoxNDQ3NDogICB1aW50MTZfdCByZXNlcnZl ZDsKMTQ0NzQ6ICAgdWludDE2X3QgcG9zdF91Y29kZV9pbml0X29mZnNldDsKMTQ0NzQ6ICAgdWlu dDE2X3QgdnJhbV9yc2QyOwoxNDQ3NDogICB1aW50OF90IHZyYW1fbW9kdWxlX251bTsKMTQ0NzQ6 ICAgdWludDhfdCB1bWNpcF9taW5fdmVyOwoxNDQ3NDogICB1aW50OF90IHVtY2lwX21heF92ZXI7 CjE0NDc0OiAgIHVpbnQ4X3QgbWNfcGh5X3RpbGVfbnVtOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV92 cmFtX21vZHVsZV92MTAgdnJhbV9tb2R1bGVbMTZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX2kyY19k YXRhX2VudHJ5CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQxNl90IGkyY19yZWdfaW5kZXg7CjE0NDc0 OiAgIHVpbnQxNl90IGkyY19yZWdfZGF0YTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVj dCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NHsKMTQ0NzQ6ICAgdWludDhfdCB2b2x0YWdl X3R5cGU7CjE0NDc0OiAgIHVpbnQ4X3Qgdm9sdGFnZV9tb2RlOwoxNDQ3NDogICB1aW50MTZfdCBv YmplY3Rfc2l6ZTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3Zv bHRhZ2Vfb2JqZWN0X21vZGUKMTQ0NzQ6IHsKMTQ0NzQ6ICAgIFZPTFRBR0VfT0JKX0dQSU9fTFVU ID0gMCwKMTQ0NzQ6ICAgIFZPTFRBR0VfT0JKX1ZSX0kyQ19JTklUX1NFUSA9IDMsCjE0NDc0OiAg ICBWT0xUQUdFX09CSl9QSEFTRV9MVVQgPSA0LAoxNDQ3NDogICAgVk9MVEFHRV9PQkpfU1ZJRDIg PSA3LAoxNDQ3NDogICAgVk9MVEFHRV9PQkpfRVZWID0gOCwKMTQ0NzQ6ICAgIFZPTFRBR0VfT0JK X01FUkdFRF9QT1dFUiA9IDksCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV9p MmNfdm9sdGFnZV9vYmplY3RfdjQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgIHN0cnVjdCBhdG9tX3ZvbHRh Z2Vfb2JqZWN0X2hlYWRlcl92NCBoZWFkZXI7CjE0NDc0OiAgICB1aW50OF90IHJlZ3VsYXRvcl9p ZDsKMTQ0NzQ6ICAgIHVpbnQ4X3QgaTJjX2lkOwoxNDQ3NDogICAgdWludDhfdCBpMmNfc2xhdmVf YWRkcjsKMTQ0NzQ6ICAgIHVpbnQ4X3QgaTJjX2NvbnRyb2xfb2Zmc2V0OwoxNDQ3NDogICAgdWlu dDhfdCBpMmNfZmxhZzsKMTQ0NzQ6ICAgIHVpbnQ4X3QgaTJjX3NwZWVkOwoxNDQ3NDogICAgdWlu dDhfdCByZXNlcnZlZFsyXTsKMTQ0NzQ6ICAgIHN0cnVjdCBhdG9tX2kyY19kYXRhX2VudHJ5IGky Y2RhdGFsdXRbMV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9p MmNfdm9sdGFnZV9jb250cm9sX2ZsYWcKMTQ0NzQ6IHsKMTQ0NzQ6ICAgIFZPTFRBR0VfREFUQV9P TkVfQllURSA9IDAsCjE0NDc0OiAgICBWT0xUQUdFX0RBVEFfVFdPX0JZVEUgPSAxLAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXRvbV92b2x0YWdlX2dwaW9fbWFwX2x1 dAoxNDQ3NDogewoxNDQ3NDogICB1aW50MzJfdCB2b2x0YWdlX2dwaW9fcmVnX3ZhbDsKMTQ0NzQ6 ICAgdWludDE2X3Qgdm9sdGFnZV9sZXZlbF9tdjsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0 cnVjdCBhdG9tX2dwaW9fdm9sdGFnZV9vYmplY3RfdjQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgIHN0cnVj dCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NCBoZWFkZXI7CjE0NDc0OiAgICB1aW50OF90 IGdwaW9fY29udHJvbF9pZDsKMTQ0NzQ6ICAgIHVpbnQ4X3QgZ3Bpb19lbnRyeV9udW07CjE0NDc0 OiAgICB1aW50OF90IHBoYXNlX2RlbGF5X3VzOwoxNDQ3NDogICAgdWludDhfdCByZXNlcnZlZDsK MTQ0NzQ6ICAgIHVpbnQzMl90IGdwaW9fbWFza192YWw7CjE0NDc0OiAgICBzdHJ1Y3QgYXRvbV92 b2x0YWdlX2dwaW9fbWFwX2x1dCB2b2x0YWdlX2dwaW9fbHV0WzFdOwoxNDQ3NDogfTsKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGF0b21fc3ZpZDJfdm9sdGFnZV9vYmplY3RfdjQKMTQ0NzQ6IHsKMTQ0 NzQ6ICAgIHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NCBoZWFkZXI7CjE0NDc0 OiAgICB1aW50OF90IGxvYWRsaW5lX3BzaTE7CjE0NDc0OiAgICB1aW50OF90IHBzaTBfbF92aWRf dGhyZXNkOwoxNDQ3NDogICAgdWludDhfdCBwc2kwX2VuYWJsZTsKMTQ0NzQ6ICAgIHVpbnQ4X3Qg bWF4dnN0ZXA7CjE0NDc0OiAgICB1aW50OF90IHRlbGVtZXRyeV9vZmZzZXQ7CjE0NDc0OiAgICB1 aW50OF90IHRlbGVtZXRyeV9nYWluOwoxNDQ3NDogICAgdWludDE2X3QgcmVzZXJ2ZWQxOwoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGF0b21fbWVyZ2VkX3ZvbHRhZ2Vfb2JqZWN0X3Y0 CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NCBo ZWFkZXI7CjE0NDc0OiAgIHVpbnQ4X3QgbWVyZ2VkX3Bvd2VycmFpbF90eXBlOwoxNDQ3NDogICB1 aW50OF90IHJlc2VydmVkWzNdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gYXRvbV92 b2x0YWdlX29iamVjdF92NHsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fZ3Bpb192b2x0YWdlX29iamVj dF92NCBncGlvX3ZvbHRhZ2Vfb2JqOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9pMmNfdm9sdGFnZV9v YmplY3RfdjQgaTJjX3ZvbHRhZ2Vfb2JqOwoxNDQ3NDogICBzdHJ1Y3QgYXRvbV9zdmlkMl92b2x0 YWdlX29iamVjdF92NCBzdmlkMl92b2x0YWdlX29iajsKMTQ0NzQ6ICAgc3RydWN0IGF0b21fbWVy Z2VkX3ZvbHRhZ2Vfb2JqZWN0X3Y0IG1lcmdlZF92b2x0YWdlX29iajsKMTQ0NzQ6IH07CjE0NDc0 OiAKMTQ0NzQ6IHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0c19pbmZvX3Y0XzEKMTQ0NzQ6IHsK MTQ0NzQ6ICAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CjE0 NDc0OiAgIHVuaW9uIGF0b21fdm9sdGFnZV9vYmplY3RfdjQgdm9sdGFnZV9vYmplY3RbMV07CjE0 NDc0OiB9OwoxNDQ3NDogIyAyMzIzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2lu Y2x1ZGUvYXRvbWZpcm13YXJlLmgiCjE0NDc0OiBzdHJ1Y3QgYXNpY19pbml0X2VuZ2luZV9wYXJh bWV0ZXJzCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQzMl90IHNjbGtmcmVxaW4xMGtoejoyNDsKMTQ0 NzQ6ICAgdWludDMyX3QgZW5naW5lZmxhZzo4OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGFzaWNfaW5pdF9tZW1fcGFyYW1ldGVycwoxNDQ3NDogewoxNDQ3NDogICB1aW50MzJfdCBt Y2xrZnJlcWluMTBraHo6MjQ7CjE0NDc0OiAgIHVpbnQzMl90IG1lbWZsYWc6ODsKMTQ0NzQ6IH07 CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBhc2ljX2luaXRfcGFyYW1ldGVyc192Ml8xCjE0NDc0OiB7 CjE0NDc0OiAgIHN0cnVjdCBhc2ljX2luaXRfZW5naW5lX3BhcmFtZXRlcnMgZW5naW5lcGFyYW07 CjE0NDc0OiAgIHN0cnVjdCBhc2ljX2luaXRfbWVtX3BhcmFtZXRlcnMgbWVtcGFyYW07CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgYXNpY19pbml0X3BzX2FsbG9jYXRpb25fdjJfMQox NDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgYXNpY19pbml0X3BhcmFtZXRlcnNfdjJfMSBwYXJhbTsK MTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWRbMTZdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBlbnVtIGF0b21fYXNpY19pbml0X2VuZ2luZV9mbGFnCjE0NDc0OiB7CjE0NDc0OiAg IGIzTk9STUFMX0VOR0lORV9JTklUID0gMCwKMTQ0NzQ6ICAgYjNTUklPVl9TS0lQX0FTSUNfSU5J VCA9IDB4MDIsCjE0NDc0OiAgIGIzU1JJT1ZfTE9BRF9VQ09ERSA9IDB4NDAsCjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fYXNpY19pbml0X21lbV9mbGFnCjE0NDc0OiB7CjE0NDc0 OiAgIGIzTk9STUFMX01FTV9JTklUID0gMCwKMTQ0NzQ6ICAgYjNEUkFNX1NFTEZfUkVGUkVTSF9F WElUID0weDIwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNldF9lbmdpbmVfY2xvY2tfcGFyYW1l dGVyc192Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQzMl90IHNjbGtmcmVxaW4xMGtoejoyNDsK MTQ0NzQ6ICAgdWludDMyX3Qgc2Nsa2ZsYWc6ODsKMTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWRb MTBdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNldF9lbmdpbmVfY2xvY2tfcHNf YWxsb2NhdGlvbl92Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBzZXRfZW5naW5lX2Nsb2Nr X3BhcmFtZXRlcnNfdjJfMSBjbG9ja2luZm87CjE0NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkWzEw XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3NldF9lbmdpbmVf bWVtX2Nsb2NrX2ZsYWcKMTQ0NzQ6IHsKMTQ0NzQ6ICAgYjNOT1JNQUxfQ0hBTkdFX0NMT0NLID0g MCwKMTQ0NzQ6ICAgYjNGSVJTVF9USU1FX0NIQU5HRV9DTE9DSyA9IDB4MDgsCjE0NDc0OiAgIGIz U1RPUkVfRFBNX1RSQUlOR0lORyA9IDB4NDAsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGdldF9lbmdpbmVfY2xv Y2tfcGFyYW1ldGVyCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQzMl90IHNjbGtfMTBraHo7CjE0NDc0 OiAgIHVpbnQzMl90IHJlc2VydmVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzZXRfbWVtb3J5X2Nsb2NrX3Bh cmFtZXRlcnNfdjJfMQoxNDQ3NDogewoxNDQ3NDogICB1aW50MzJfdCBtY2xrZnJlcWluMTBraHo6 MjQ7CjE0NDc0OiAgIHVpbnQzMl90IG1jbGtmbGFnOjg7CjE0NDc0OiAgIHVpbnQzMl90IHJlc2Vy dmVkWzEwXTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBzZXRfbWVtb3J5X2Nsb2Nr X3BzX2FsbG9jYXRpb25fdjJfMQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3Qgc2V0X21lbW9yeV9j bG9ja19wYXJhbWV0ZXJzX3YyXzEgY2xvY2tpbmZvOwoxNDQ3NDogICB1aW50MzJfdCByZXNlcnZl ZFsxMF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ2V0X21lbW9yeV9jbG9ja19wYXJhbWV0ZXIK MTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDMyX3QgbWNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDMyX3Qg cmVzZXJ2ZWQ7CjE0NDc0OiB9OwoxNDQ3NDogIyAyNDM3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiCjE0NDc0OiBzdHJ1Y3Qgc2V0X3ZvbHRh Z2VfcGFyYW1ldGVyc192MV80CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3Qgdm9sdGFnZXR5cGU7 CjE0NDc0OiAgIHVpbnQ4X3QgY29tbWFuZDsKMTQ0NzQ6ICAgdWludDE2X3QgdmxldmVsX212Owox NDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fc2V0X3ZvbHRhZ2VfY29t bWFuZHsKMTQ0NzQ6ICAgQVRPTV9TRVRfVk9MVEFHRSA9IDAsCjE0NDc0OiAgIEFUT01fSU5JVF9W T0xUQUdFX1JFR1VMQVRPUiA9IDMsCjE0NDc0OiAgIEFUT01fU0VUX1ZPTFRBR0VfUEhBU0UgPSA0 LAoxNDQ3NDogICBBVE9NX0dFVF9MRUFLQUdFX0lEID0gOCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0 NzQ6IHN0cnVjdCBzZXRfdm9sdGFnZV9wc19hbGxvY2F0aW9uX3YxXzQKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgc3RydWN0IHNldF92b2x0YWdlX3BhcmFtZXRlcnNfdjFfNCBzZXR2b2x0YWdlcGFyYW07CjE0 NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkWzEwXTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI0NjYgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0 NzQ6IGVudW0gYXRvbV9ncHVfY2xvY2tfdHlwZQoxNDQ3NDogewoxNDQ3NDogICBDT01QVVRFX0dQ VUNMS19JTlBVVF9GTEFHX0RFRkFVTFRfR1BVQ0xLID0weDAwLAoxNDQ3NDogICBDT01QVVRFX0dQ VUNMS19JTlBVVF9GTEFHX0dGWENMSyA9MHgwMSwKMTQ0NzQ6ICAgQ09NUFVURV9HUFVDTEtfSU5Q VVRfRkxBR19VQ0xLID0weDAyLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNvbXB1 dGVfZ3B1X2Nsb2NrX2lucHV0X3BhcmFtZXRlcl92MV84CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQz Ml90IGdwdWNsb2NrXzEwa2h6OjI0OwoxNDQ3NDogICB1aW50MzJfdCBncHVfY2xvY2tfdHlwZTo4 OwoxNDQ3NDogICB1aW50MzJfdCByZXNlcnZlZFs1XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RydWN0IGNvbXB1dGVfZ3B1X2Nsb2NrX291dHB1dF9wYXJhbWV0ZXJfdjFfOAox NDQ3NDogewoxNDQ3NDogICB1aW50MzJfdCBncHVjbG9ja18xMGtoejoyNDsKMTQ0NzQ6ICAgdWlu dDMyX3QgZGZzX2RpZDo4OwoxNDQ3NDogICB1aW50MzJfdCBwbGxfZmJfbXVsdDsKMTQ0NzQ6ICAg dWludDMyX3QgcGxsX3NzX2Zic211bHQ7CjE0NDc0OiAgIHVpbnQxNl90IHBsbF9zc19zbGV3X2Zy YWM7CjE0NDc0OiAgIHVpbnQ4X3QgcGxsX3NzX2VuYWJsZTsKMTQ0NzQ6ICAgdWludDhfdCByZXNl cnZlZDsKMTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWQxWzJdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMg MjUwMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2Fy ZS5oIgoxNDQ3NDogc3RydWN0IHJlYWRfZWZ1c2VfaW5wdXRfcGFyYW1ldGVyc192M18xCjE0NDc0 OiB7CjE0NDc0OiAgIHVpbnQxNl90IGVmdXNlX3N0YXJ0X2luZGV4OwoxNDQ3NDogICB1aW50OF90 IHJlc2VydmVkOwoxNDQ3NDogICB1aW50OF90IGJpdHNsZW47CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IHVuaW9uIHJlYWRfZWZ1c2VfdmFsdWVfcGFyYW1ldGVyc192M18xCjE0NDc0 OiB7CjE0NDc0OiAgIHN0cnVjdCByZWFkX2VmdXNlX2lucHV0X3BhcmFtZXRlcnNfdjNfMSBlZnVz ZV9pbmZvOwoxNDQ3NDogICB1aW50MzJfdCBlZnVzZXZhbHVlOwoxNDQ3NDogfTsKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX3BhcmFtZXRlcnNfdjNfMQoxNDQ3NDogewoxNDQ3 NDogICB1aW50OF90IHN5c3BsbF9pZDsKMTQ0NzQ6ICAgdWludDhfdCBjbGtfaWQ7CjE0NDc0OiAg IHVpbnQ4X3QgY29tbWFuZDsKMTQ0NzQ6ICAgdWludDhfdCBkZnNkaWQ7CjE0NDc0OiB9OwoxNDQ3 NDogCjE0NDc0OiBlbnVtIGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX2NvbW1hbmQKMTQ0NzQ6IHsK MTQ0NzQ6ICAgR0VUX1NNVV9DTE9DS19JTkZPX1YzXzFfR0VUX0NMT0NLX0ZSRVEgPSAwLAoxNDQ3 NDogICBHRVRfU01VX0NMT0NLX0lORk9fVjNfMV9HRVRfUExMVkNPX0ZSRVEgPSAxLAoxNDQ3NDog ICBHRVRfU01VX0NMT0NLX0lORk9fVjNfMV9HRVRfUExMUkVGQ0xLX0ZSRVEgPSAyLAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3NtdTlfc3lzcGxsMF9jbG9ja19pZAoxNDQ3NDog ewoxNDQ3NDogICBTTVU5X1NZU1BMTDBfU01OQ0xLX0lEID0gMCwKMTQ0NzQ6ICAgU01VOV9TWVNQ TEwwX1NPQ0NMS19JRCA9IDEsCjE0NDc0OiAgIFNNVTlfU1lTUExMMF9NUDBDTEtfSUQgPSAyLAox NDQ3NDogICBTTVU5X1NZU1BMTDBfTVAxQ0xLX0lEID0gMywKMTQ0NzQ6ICAgU01VOV9TWVNQTEww X0xDTEtfSUQgPSA0LAoxNDQ3NDogICBTTVU5X1NZU1BMTDBfRENMS19JRCA9IDUsCjE0NDc0OiAg IFNNVTlfU1lTUExMMF9WQ0xLX0lEID0gNiwKMTQ0NzQ6ICAgU01VOV9TWVNQTEwwX0VDTEtfSUQg PSA3LAoxNDQ3NDogICBTTVU5X1NZU1BMTDBfRENFRkNMS19JRCA9IDgsCjE0NDc0OiAgIFNNVTlf U1lTUExMMF9EUFJFRkNMS19JRCA9IDEwLAoxNDQ3NDogICBTTVU5X1NZU1BMTDBfRElTUENMS19J RCA9IDExLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3NtdTExX3N5c3BsbF9p ZCB7CjE0NDc0OiAgIFNNVTExX1NZU1BMTDBfSUQgPSAwLAoxNDQ3NDogICBTTVUxMV9TWVNQTEwx XzBfSUQgPSAxLAoxNDQ3NDogICBTTVUxMV9TWVNQTEwxXzFfSUQgPSAyLAoxNDQ3NDogICBTTVUx MV9TWVNQTEwxXzJfSUQgPSAzLAoxNDQ3NDogICBTTVUxMV9TWVNQTEwyX0lEID0gNCwKMTQ0NzQ6 ICAgU01VMTFfU1lTUExMM18wX0lEID0gNSwKMTQ0NzQ6ICAgU01VMTFfU1lTUExMM18xX0lEID0g NiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zbXUxMV9zeXNwbGwwX2Nsb2Nr X2lkIHsKMTQ0NzQ6ICAgU01VMTFfU1lTUExMMF9FQ0xLX0lEID0gMCwKMTQ0NzQ6ICAgU01VMTFf U1lTUExMMF9TT0NDTEtfSUQgPSAxLAoxNDQ3NDogICBTTVUxMV9TWVNQTEwwX01QMENMS19JRCA9 IDIsCjE0NDc0OiAgIFNNVTExX1NZU1BMTDBfRENMS19JRCA9IDMsCjE0NDc0OiAgIFNNVTExX1NZ U1BMTDBfVkNMS19JRCA9IDQsCjE0NDc0OiAgIFNNVTExX1NZU1BMTDBfRENFRkNMS19JRCA9IDUs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fc211MTFfc3lzcGxsMV8wX2Nsb2Nr X2lkIHsKMTQ0NzQ6ICAgU01VMTFfU1lTUExMMV8wX1VDTEtBX0lEID0gMCwKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zbXUxMV9zeXNwbGwxXzFfY2xvY2tfaWQgewoxNDQ3NDog ICBTTVUxMV9TWVNQTEwxXzBfVUNMS0JfSUQgPSAwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog ZW51bSBhdG9tX3NtdTExX3N5c3BsbDFfMl9jbG9ja19pZCB7CjE0NDc0OiAgIFNNVTExX1NZU1BM TDFfMF9GQ0xLX0lEID0gMCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zbXUx MV9zeXNwbGwyX2Nsb2NrX2lkIHsKMTQ0NzQ6ICAgU01VMTFfU1lTUExMMl9HRlhDTEtfSUQgPSAw LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3NtdTExX3N5c3BsbDNfMF9jbG9j a19pZCB7CjE0NDc0OiAgIFNNVTExX1NZU1BMTDNfMF9XQUZDTEtfSUQgPSAwLAoxNDQ3NDogICBT TVUxMV9TWVNQTEwzXzBfRElTUENMS19JRCA9IDEsCjE0NDc0OiAgIFNNVTExX1NZU1BMTDNfMF9E UFJFRkNMS19JRCA9IDIsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fc211MTFf c3lzcGxsM18xX2Nsb2NrX2lkIHsKMTQ0NzQ6ICAgU01VMTFfU1lTUExMM18xX01QMUNMS19JRCA9 IDAsCjE0NDc0OiAgIFNNVTExX1NZU1BMTDNfMV9TTU5DTEtfSUQgPSAxLAoxNDQ3NDogICBTTVUx MV9TWVNQTEwzXzFfTENMS19JRCA9IDIsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qg YXRvbV9nZXRfc211X2Nsb2NrX2luZm9fb3V0cHV0X3BhcmFtZXRlcnNfdjNfMQoxNDQ3NDogewox NDQ3NDogICB1bmlvbiB7CjE0NDc0OiAgICAgdWludDMyX3Qgc211X2Nsb2NrX2ZyZXFfaHo7CjE0 NDc0OiAgICAgdWludDMyX3Qgc3lzcGxsdmNvZnJlcV8xMGtoejsKMTQ0NzQ6ICAgICB1aW50MzJf dCBzeXNzcGxscmVmY2xrXzEwa2h6OwoxNDQ3NDogICB9YXRvbV9zbXVfb3V0cHV0Y2xrZnJlcTsK MTQ0NzQ6IH07CjE0NDc0OiAjIDI2MTUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v aW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0NzQ6IGVudW0gYXRvbV9keW5hbWljX21lbW9yeV9z ZXR0aW5nX2NvbW1hbmQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgQ09NUFVURV9NRU1PUllfUExMX1BBUkFN ID0gMSwKMTQ0NzQ6ICAgQ09NUFVURV9FTkdJTkVfUExMX1BBUkFNID0gMiwKMTQ0NzQ6ICAgQURK VVNUX01DX1NFVFRJTkdfUEFSQU0gPSAzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiBzdHJ1Y3QgZHluYW1pY19tY2xrX3NldHRpbmdzX3BhcmFtZXRlcnNfdjJfMQoxNDQ3NDogewox NDQ3NDogICB1aW50MzJfdCBtY2xrXzEwa2h6OjI0OwoxNDQ3NDogICB1aW50MzJfdCBjb21tYW5k Ojg7CjE0NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDog CjE0NDc0OiBzdHJ1Y3QgZHluYW1pY19zY2xrX3NldHRpbmdzX3BhcmFtZXRlcnNfdjJfMQoxNDQ3 NDogewoxNDQ3NDogICB1aW50MzJfdCBzY2xrXzEwa2h6OjI0OwoxNDQ3NDogICB1aW50MzJfdCBj b21tYW5kOjg7CjE0NDc0OiAgIHVpbnQzMl90IG1jbGtfMTBraHo7CjE0NDc0OiAgIHVpbnQzMl90 IHJlc2VydmVkOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogdW5pb24gZHluYW1pY19tZW1vcnlf c2V0dGluZ3NfcGFyYW1ldGVyc192Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBkeW5hbWlj X21jbGtfc2V0dGluZ3NfcGFyYW1ldGVyc192Ml8xIG1jbGtfc2V0dGluZzsKMTQ0NzQ6ICAgc3Ry dWN0IGR5bmFtaWNfc2Nsa19zZXR0aW5nc19wYXJhbWV0ZXJzX3YyXzEgc2Nsa19zZXR0aW5nOwox NDQ3NDogfTsKMTQ0NzQ6ICMgMjY1MyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9p bmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3NDogZW51bSBhdG9tX3VtYzZfMF91Y29kZV9mdW5j dGlvbl9jYWxsX2VudW1faWQKMTQ0NzQ6IHsKMTQ0NzQ6ICAgVU1DNjBfVUNPREVfRlVOQ19JRF9S RUlOSVQgPSAwLAoxNDQ3NDogICBVTUM2MF9VQ09ERV9GVU5DX0lEX0VOVEVSX1NFTEZSRUZSRVNI ID0gMSwKMTQ0NzQ6ICAgVU1DNjBfVUNPREVfRlVOQ19JRF9FWElUX1NFTEZSRUZSRVNIID0gMiwK MTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IG1lbW9yeV90cmFpbmluZ19w YXJhbWV0ZXJzX3YyXzEKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCB1Y29kZV9mdW5jX2lkOwox NDQ3NDogICB1aW50OF90IHVjb2RlX3Jlc2VydmVkWzNdOwoxNDQ3NDogICB1aW50MzJfdCByZXNl cnZlZFs1XTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDI2NzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0NzQ6IHN0cnVjdCBzZXRfcGl4ZWxf Y2xvY2tfcGFyYW1ldGVyX3YxXzcKMTQ0NzQ6IHsKMTQ0NzQ6ICAgICB1aW50MzJfdCBwaXhjbGtf MTAwaHo7CjE0NDc0OiAKMTQ0NzQ6ICAgICB1aW50OF90IHBsbF9pZDsKMTQ0NzQ6ICAgICB1aW50 OF90IGVuY29kZXJvYmppZDsKMTQ0NzQ6IAoxNDQ3NDogICAgIHVpbnQ4X3QgZW5jb2Rlcl9tb2Rl OwoxNDQ3NDogICAgIHVpbnQ4X3QgbWlzY2luZm87CjE0NDc0OiAgICAgdWludDhfdCBjcnRjX2lk OwoxNDQ3NDogICAgIHVpbnQ4X3QgZGVlcF9jb2xvcl9yYXRpbzsKMTQ0NzQ6ICAgICB1aW50OF90 IHJlc2VydmVkMVsyXTsKMTQ0NzQ6ICAgICB1aW50MzJfdCByZXNlcnZlZDI7CjE0NDc0OiB9Owox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zZXRfcGl4ZWxfY2xvY2tfdjFfN19taXNj X2luZm8KMTQ0NzQ6IHsKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19GT1JDRV9QUk9HX1BQ TEwgPSAweDAxLAoxNDQ3NDogICBQSVhFTF9DTE9DS19WN19NSVNDX1BST0dfUEhZUExMID0gMHgw MiwKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19ZVVY0MjBfTU9ERSA9IDB4MDQsCjE0NDc0 OiAgIFBJWEVMX0NMT0NLX1Y3X01JU0NfRFZJX0RVQUxMSU5LX0VOID0gMHgwOCwKMTQ0NzQ6ICAg UElYRUxfQ0xPQ0tfVjdfTUlTQ19SRUZfRElWX1NSQyA9IDB4MzAsCjE0NDc0OiAgIFBJWEVMX0NM T0NLX1Y3X01JU0NfUkVGX0RJVl9TUkNfWFRBTElOID0gMHgwMCwKMTQ0NzQ6ICAgUElYRUxfQ0xP Q0tfVjdfTUlTQ19SRUZfRElWX1NSQ19QQ0lFID0gMHgxMCwKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tf VjdfTUlTQ19SRUZfRElWX1NSQ19HRU5MSyA9IDB4MjAsCjE0NDc0OiAgIFBJWEVMX0NMT0NLX1Y3 X01JU0NfUkVGX0RJVl9TUkNfUkVGUEFEID0gMHgzMCwKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tfVjdf TUlTQ19BVE9NSUNfVVBEQVRFID0gMHg0MCwKMTQ0NzQ6ICAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19G T1JDRV9TU19ESVMgPSAweDgwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVt IGF0b21fc2V0X3BpeGVsX2Nsb2NrX3YxXzdfZGVlcGNvbG9yX3JhdGlvCjE0NDc0OiB7CjE0NDc0 OiAgIFBJWEVMX0NMT0NLX1Y3X0RFRVBDT0xPUl9SQVRJT19ESVMgPSAweDAwLAoxNDQ3NDogICBQ SVhFTF9DTE9DS19WN19ERUVQQ09MT1JfUkFUSU9fNV80ID0gMHgwMSwKMTQ0NzQ6ICAgUElYRUxf Q0xPQ0tfVjdfREVFUENPTE9SX1JBVElPXzNfMiA9IDB4MDIsCjE0NDc0OiAgIFBJWEVMX0NMT0NL X1Y3X0RFRVBDT0xPUl9SQVRJT18yXzEgPSAweDAzLAoxNDQ3NDogfTsKMTQ0NzQ6ICMgMjcyMiAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgox NDQ3NDogc3RydWN0IHNldF9kY2VfY2xvY2tfcGFyYW1ldGVyc192Ml8xCjE0NDc0OiB7CjE0NDc0 OiAgIHVpbnQzMl90IGRjZWNsa18xMGtoejsKMTQ0NzQ6ICAgdWludDhfdCBkY2VjbGt0eXBlOwox NDQ3NDogICB1aW50OF90IGRjZWNsa3NyYzsKMTQ0NzQ6ICAgdWludDhfdCBkY2VjbGtmbGFnOwox NDQ3NDogICB1aW50OF90IGNydGNfaWQ7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IGVudW0gYXRvbV9zZXRfZGNlX2Nsb2NrX2Nsb2NrX3R5cGUKMTQ0NzQ6IHsKMTQ0NzQ6ICAgRENF X0NMT0NLX1RZUEVfRElTUENMSyA9IDAsCjE0NDc0OiAgIERDRV9DTE9DS19UWVBFX0RQUkVGQ0xL ID0gMSwKMTQ0NzQ6ICAgRENFX0NMT0NLX1RZUEVfUElYRUxDTEsgPSAyLAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fc2V0X2RjZV9jbG9ja19kcHJlZmNsa19mbGFn CjE0NDc0OiB7CjE0NDc0OiAgIERDRV9DTE9DS19GTEFHX1BMTF9SRUZDTEtfU1JDX01BU0sgPSAw eDAzLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QTExfUkVGQ0xLX1NSQ19HRU5FUklDQSA9IDB4 MDAsCjE0NDc0OiAgIERDRV9DTE9DS19GTEFHX1BMTF9SRUZDTEtfU1JDX0dFTkxLID0gMHgwMSwK MTQ0NzQ6ICAgRENFX0NMT0NLX0ZMQUdfUExMX1JFRkNMS19TUkNfUENJRSA9IDB4MDIsCjE0NDc0 OiAgIERDRV9DTE9DS19GTEFHX1BMTF9SRUZDTEtfU1JDX1hUQUxJTiA9IDB4MDMsCjE0NDc0OiB9 OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9zZXRfZGNlX2Nsb2NrX3BpeGNsa19m bGFnCjE0NDc0OiB7CjE0NDc0OiAgIERDRV9DTE9DS19GTEFHX1BDTEtfREVFUENPTE9SX1JBVElP X01BU0sgPSAweDAzLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QQ0xLX0RFRVBDT0xPUl9SQVRJ T19ESVMgPSAweDAwLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QQ0xLX0RFRVBDT0xPUl9SQVRJ T181XzQgPSAweDAxLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QQ0xLX0RFRVBDT0xPUl9SQVRJ T18zXzIgPSAweDAyLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QQ0xLX0RFRVBDT0xPUl9SQVRJ T18yXzEgPSAweDAzLAoxNDQ3NDogICBEQ0VfQ0xPQ0tfRkxBR19QSVhDTEtfWVVWNDIwX01PREUg PSAweDA0LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHNldF9kY2VfY2xvY2tfcHNf YWxsb2NhdGlvbl92Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBzZXRfZGNlX2Nsb2NrX3Bh cmFtZXRlcnNfdjJfMSBwYXJhbTsKMTQ0NzQ6ICAgdWludDMyX3QgdWxSZXNlcnZlZFsyXTsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogc3Ry dWN0IGJsYW5rX2NydGNfcGFyYW1ldGVycwoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IGNydGNf aWQ7CjE0NDc0OiAgIHVpbnQ4X3QgYmxhbmtpbmc7CjE0NDc0OiAgIHVpbnQxNl90IHJlc2VydmVk OwoxNDQ3NDogICB1aW50MzJfdCByZXNlcnZlZDE7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBl bnVtIGF0b21fYmxhbmtfY3J0Y19jb21tYW5kCjE0NDc0OiB7CjE0NDc0OiAgIEFUT01fQkxBTktJ TkcgPSAxLAoxNDQ3NDogICBBVE9NX0JMQU5LSU5HX09GRiA9IDAsCjE0NDc0OiB9OwoxNDQ3NDog CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZW5hYmxlX2NydGNfcGFyYW1l dGVycwoxNDQ3NDogewoxNDQ3NDogICB1aW50OF90IGNydGNfaWQ7CjE0NDc0OiAgIHVpbnQ4X3Qg ZW5hYmxlOwoxNDQ3NDogICB1aW50OF90IHBhZGRpbmdbMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBlbmFibGVfZGlzcF9w b3dlcl9nYXRpbmdfcGFyYW1ldGVyc192Ml8xCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3QgZGlz cF9waXBlX2lkOwoxNDQ3NDogICB1aW50OF90IGVuYWJsZTsKMTQ0NzQ6ICAgdWludDhfdCBwYWRk aW5nWzJdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGVuYWJsZV9kaXNwX3Bvd2Vy X2dhdGluZ19wc19hbGxvY2F0aW9uCjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBlbmFibGVfZGlz cF9wb3dlcl9nYXRpbmdfcGFyYW1ldGVyc192Ml8xIHBhcmFtOwoxNDQ3NDogICB1aW50MzJfdCB1 bFJlc2VydmVkWzRdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IHNldF9jcnRjX3VzaW5nX2R0ZF90aW1pbmdfcGFyYW1ldGVycwoxNDQ3NDog ewoxNDQ3NDogICB1aW50MTZfdCBoX3NpemU7CjE0NDc0OiAgIHVpbnQxNl90IGhfYmxhbmtpbmdf dGltZTsKMTQ0NzQ6ICAgdWludDE2X3Qgdl9zaXplOwoxNDQ3NDogICB1aW50MTZfdCB2X2JsYW5r aW5nX3RpbWU7CjE0NDc0OiAgIHVpbnQxNl90IGhfc3luY29mZnNldDsKMTQ0NzQ6ICAgdWludDE2 X3QgaF9zeW5jd2lkdGg7CjE0NDc0OiAgIHVpbnQxNl90IHZfc3luY29mZnNldDsKMTQ0NzQ6ICAg dWludDE2X3Qgdl9zeW5jd2lkdGg7CjE0NDc0OiAgIHVpbnQxNl90IG1vZGVtaXNjaW5mbzsKMTQ0 NzQ6ICAgdWludDhfdCBoX2JvcmRlcjsKMTQ0NzQ6ICAgdWludDhfdCB2X2JvcmRlcjsKMTQ0NzQ6 ICAgdWludDhfdCBjcnRjX2lkOwoxNDQ3NDogICB1aW50OF90IGVuY29kZXJfbW9kZTsKMTQ0NzQ6 ICAgdWludDhfdCBwYWRkaW5nWzJdOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHJvY2Vzc19pMmNfY2hhbm5lbF90cmFuc2Fj dGlvbl9wYXJhbWV0ZXJzCjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3QgaTJjc3BlZWRfa2h6Owox NDQ3NDogICB1bmlvbiB7CjE0NDc0OiAgICAgdWludDhfdCByZWdpbmRleDsKMTQ0NzQ6ICAgICB1 aW50OF90IHN0YXR1czsKMTQ0NzQ6ICAgfSByZWdpbmRfc3RhdHVzOwoxNDQ3NDogICB1aW50MTZf dCBpMmNfZGF0YV9vdXQ7CjE0NDc0OiAgIHVpbnQ4X3QgZmxhZzsKMTQ0NzQ6ICAgdWludDhfdCB0 cmFuc19ieXRlczsKMTQ0NzQ6ICAgdWludDhfdCBzbGF2ZV9hZGRyOwoxNDQ3NDogICB1aW50OF90 IGkyY19pZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX3Byb2Nl c3NfaTJjX2ZsYWcKMTQ0NzQ6IHsKMTQ0NzQ6ICAgSFdfSTJDX1dSSVRFID0gMSwKMTQ0NzQ6ICAg SFdfSTJDX1JFQUQgPSAwLAoxNDQ3NDogICBJMkNfMkJZVEVfQUREUiA9IDB4MDIsCjE0NDc0OiAg IEhXX0kyQ19TTUJVU19CWVRFX1dSID0gMHgwNCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogZW51bSBhdG9tX3Byb2Nlc3NfaTJjX3N0YXR1cwoxNDQ3NDogewoxNDQ3NDogICBIV19B U1NJU1RFRF9JMkNfU1RBVFVTX0ZBSUxVUkUgPTIsCjE0NDc0OiAgIEhXX0FTU0lTVEVEX0kyQ19T VEFUVVNfU1VDQ0VTUyA9MSwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgcHJvY2Vzc19hdXhfY2hhbm5lbF90cmFu c2FjdGlvbl9wYXJhbWV0ZXJzX3YxXzIKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDE2X3QgYXV4X3Jl cXVlc3Q7CjE0NDc0OiAgIHVpbnQxNl90IGRhdGFvdXQ7CjE0NDc0OiAgIHVpbnQ4X3QgY2hhbm5l bGlkOwoxNDQ3NDogICB1bmlvbiB7CjE0NDc0OiAgICAgdWludDhfdCByZXBseV9zdGF0dXM7CjE0 NDc0OiAgICAgdWludDhfdCBhdXhfZGVsYXk7CjE0NDc0OiAgIH0gYXV4X3N0YXR1c19kZWxheTsK MTQ0NzQ6ICAgdWludDhfdCBkYXRhb3V0X2xlbjsKMTQ0NzQ6ICAgdWludDhfdCBocGRfaWQ7CjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogc3RydWN0IHNlbGVjdF9jcnRjX3NvdXJjZV9wYXJhbWV0ZXJzX3YyXzMKMTQ0NzQ6IHsK MTQ0NzQ6ICAgdWludDhfdCBjcnRjX2lkOwoxNDQ3NDogICB1aW50OF90IGVuY29kZXJfaWQ7CjE0 NDc0OiAgIHVpbnQ4X3QgZW5jb2RlX21vZGU7CjE0NDc0OiAgIHVpbnQ4X3QgZHN0X2JwYzsKMTQ0 NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IGVudW0gYXRvbV9kaWdfZW5jb2Rlcl9jb250cm9sX2FjdGlvbgoxNDQ3NDog ewoxNDQ3NDogICBBVE9NX0VOQ09ERVJfQ01EX0RJU0FCTEVfRElHID0gMCwKMTQ0NzQ6ICAgQVRP TV9FTkNPREVSX0NNRF9FTkFCTEVfRElHID0gMSwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9E UF9MSU5LX1RSQUlOSU5HX1NUQVJUID0gMHgwOCwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9E UF9MSU5LX1RSQUlOSU5HX1BBVFRFUk4xID0gMHgwOSwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NN RF9EUF9MSU5LX1RSQUlOSU5HX1BBVFRFUk4yID0gMHgwYSwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVS X0NNRF9EUF9MSU5LX1RSQUlOSU5HX1BBVFRFUk4zID0gMHgxMywKMTQ0NzQ6ICAgQVRPTV9FTkNP REVSX0NNRF9EUF9MSU5LX1RSQUlOSU5HX0NPTVBMRVRFID0gMHgwYiwKMTQ0NzQ6ICAgQVRPTV9F TkNPREVSX0NNRF9EUF9WSURFT19PRkYgPSAweDBjLAoxNDQ3NDogICBBVE9NX0VOQ09ERVJfQ01E X0RQX1ZJREVPX09OID0gMHgwZCwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9TRVRVUF9QQU5F TF9NT0RFID0gMHgxMCwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9EUF9MSU5LX1RSQUlOSU5H X1BBVFRFUk40ID0gMHgxNCwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NNRF9TVFJFQU1fU0VUVVAg PSAweDBGLAoxNDQ3NDogICBBVE9NX0VOQ09ERVJfQ01EX0xJTktfU0VUVVAgPSAweDExLAoxNDQ3 NDogICBBVE9NX0VOQ09ERVJfQ01EX0VOQ09ERVJfQkxBTksgPSAweDEyLAoxNDQ3NDogfTsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlnX2VuY29kZXJfY29udHJvbF9wYW5lbG1v ZGUKMTQ0NzQ6IHsKMTQ0NzQ6ICAgRFBfUEFORUxfTU9ERV9ESVNBQkxFID0gMHgwMCwKMTQ0NzQ6 ICAgRFBfUEFORUxfTU9ERV9FTkFCTEVfZURQX01PREUgPSAweDAxLAoxNDQ3NDogICBEUF9QQU5F TF9NT0RFX0VOQUJMRV9MVkxJTktfTU9ERSA9IDB4MTEsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6IGVudW0gYXRvbV9kaWdfZW5jb2Rlcl9jb250cm9sX3Y1X2RpZ2lkCjE0NDc0OiB7 CjE0NDc0OiAgIEFUT01fRU5DT0RFUl9DT05GSUdfVjVfRElHMF9FTkNPREVSID0gMHgwMCwKMTQ0 NzQ6ICAgQVRPTV9FTkNPREVSX0NPTkZJR19WNV9ESUcxX0VOQ09ERVIgPSAweDAxLAoxNDQ3NDog ICBBVE9NX0VOQ09ERVJfQ09ORklHX1Y1X0RJRzJfRU5DT0RFUiA9IDB4MDIsCjE0NDc0OiAgIEFU T01fRU5DT0RFUl9DT05GSUdfVjVfRElHM19FTkNPREVSID0gMHgwMywKMTQ0NzQ6ICAgQVRPTV9F TkNPREVSX0NPTkZJR19WNV9ESUc0X0VOQ09ERVIgPSAweDA0LAoxNDQ3NDogICBBVE9NX0VOQ09E RVJfQ09ORklHX1Y1X0RJRzVfRU5DT0RFUiA9IDB4MDUsCjE0NDc0OiAgIEFUT01fRU5DT0RFUl9D T05GSUdfVjVfRElHNl9FTkNPREVSID0gMHgwNiwKMTQ0NzQ6ICAgQVRPTV9FTkNPREVSX0NPTkZJ R19WNV9ESUc3X0VOQ09ERVIgPSAweDA3LAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0 IGRpZ19lbmNvZGVyX3N0cmVhbV9zZXR1cF9wYXJhbWV0ZXJzX3YxXzUKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgdWludDhfdCBkaWdpZDsKMTQ0NzQ6ICAgdWludDhfdCBhY3Rpb247CjE0NDc0OiAgIHVpbnQ4 X3QgZGlnbW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBsYW5lbnVtOwoxNDQ3NDogICB1aW50MzJfdCBw Y2xrXzEwa2h6OwoxNDQ3NDogICB1aW50OF90IGJpdHBlcmNvbG9yOwoxNDQ3NDogICB1aW50OF90 IGRwbGlua3JhdGVfMjcwbWh6OwoxNDQ3NDogICB1aW50OF90IHJlc2VydmVkWzJdOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGRpZ19lbmNvZGVyX2xpbmtfc2V0dXBfcGFyYW1ldGVy c192MV81CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3QgZGlnaWQ7CjE0NDc0OiAgIHVpbnQ4X3Qg YWN0aW9uOwoxNDQ3NDogICB1aW50OF90IGRpZ21vZGU7CjE0NDc0OiAgIHVpbnQ4X3QgbGFuZW51 bTsKMTQ0NzQ6ICAgdWludDhfdCBzeW1jbGtfMTBraHo7CjE0NDc0OiAgIHVpbnQ4X3QgaHBkX3Nl bDsKMTQ0NzQ6ICAgdWludDhfdCBkaWdmZV9zZWw7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWRb Ml07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZHBfcGFuZWxfbW9kZV9zZXRfcGFy YW1ldGVyc192MV81CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQ4X3QgZGlnaWQ7CjE0NDc0OiAgIHVp bnQ4X3QgYWN0aW9uOwoxNDQ3NDogICB1aW50OF90IHBhbmVsbW9kZTsKMTQ0NzQ6ICAgdWludDhf dCByZXNlcnZlZDE7CjE0NDc0OiAgIHVpbnQzMl90IHJlc2VydmVkMlsyXTsKMTQ0NzQ6IH07CjE0 NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkaWdfZW5jb2Rlcl9nZW5lcmljX2NtZF9wYXJhbWV0ZXJzX3Yx XzUKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCBkaWdpZDsKMTQ0NzQ6ICAgdWludDhfdCBhY3Rp b247CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzJdOwoxNDQ3NDogICB1aW50MzJfdCByZXNl cnZlZDJbMl07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiB1bmlvbiBkaWdfZW5jb2Rlcl9jb250 cm9sX3BhcmFtZXRlcnNfdjFfNQoxNDQ3NDogewoxNDQ3NDogICBzdHJ1Y3QgZGlnX2VuY29kZXJf Z2VuZXJpY19jbWRfcGFyYW1ldGVyc192MV81IGNtZF9wYXJhbTsKMTQ0NzQ6ICAgc3RydWN0IGRp Z19lbmNvZGVyX3N0cmVhbV9zZXR1cF9wYXJhbWV0ZXJzX3YxXzUgc3RyZWFtX3BhcmFtOwoxNDQ3 NDogICBzdHJ1Y3QgZGlnX2VuY29kZXJfbGlua19zZXR1cF9wYXJhbWV0ZXJzX3YxXzUgbGlua19w YXJhbTsKMTQ0NzQ6ICAgc3RydWN0IGRwX3BhbmVsX21vZGVfc2V0X3BhcmFtZXRlcnNfdjFfNSBk cHBhbmVsX3BhcmFtOwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBkaWdfdHJhbnNtaXR0ZXJfY29udHJvbF9wYXJh bWV0ZXJzX3YxXzYKMTQ0NzQ6IHsKMTQ0NzQ6ICAgdWludDhfdCBwaHlpZDsKMTQ0NzQ6ICAgdWlu dDhfdCBhY3Rpb247CjE0NDc0OiAgIHVuaW9uIHsKMTQ0NzQ6ICAgICB1aW50OF90IGRpZ21vZGU7 CjE0NDc0OiAgICAgdWludDhfdCBkcGxhbmVzZXQ7CjE0NDc0OiAgIH0gbW9kZV9sYW5lc2V0Owox NDQ3NDogICB1aW50OF90IGxhbmVudW07CjE0NDc0OiAgIHVpbnQzMl90IHN5bWNsa18xMGtoejsK MTQ0NzQ6ICAgdWludDhfdCBocGRzZWw7CjE0NDc0OiAgIHVpbnQ4X3QgZGlnZmVfc2VsOwoxNDQ3 NDogICB1aW50OF90IGNvbm5vYmpfaWQ7CjE0NDc0OiAgIHVpbnQ4X3QgcmVzZXJ2ZWQ7CjE0NDc0 OiAgIHVpbnQzMl90IHJlc2VydmVkMTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBk aWdfdHJhbnNtaXR0ZXJfY29udHJvbF9wc19hbGxvY2F0aW9uX3YxXzYKMTQ0NzQ6IHsKMTQ0NzQ6 ICAgc3RydWN0IGRpZ190cmFuc21pdHRlcl9jb250cm9sX3BhcmFtZXRlcnNfdjFfNiBwYXJhbTsK MTQ0NzQ6ICAgdWludDMyX3QgcmVzZXJ2ZWRbNF07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAK MTQ0NzQ6IGVudW0gYXRvbV9kaWdfdHJhbnNtaXR0ZXJfY29udHJvbF9hY3Rpb24KMTQ0NzQ6IHsK MTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fRElTQUJMRSA9IDAsCjE0NDc0OiAgIEFU T01fVFJBTlNNSVRURVJfQUNUSU9OX0VOQUJMRSA9IDEsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRU RVJfQUNUSU9OX0xDRF9CTE9GRiA9IDIsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRURVJfQUNUSU9O X0xDRF9CTE9OID0gMywKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fQkxfQlJJR0hU TkVTU19DT05UUk9MID0gNCwKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fTENEX1NF TEZURVNUX1NUQVJUID0gNSwKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fTENEX1NF TEZURVNUX1NUT1AgPSA2LAoxNDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9JTklUID0g NywKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fRElTQUJMRV9PVVRQVVQgPSA4LAox NDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9FTkFCTEVfT1VUUFVUID0gOSwKMTQ0NzQ6 ICAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fU0VUVVAgPSAxMCwKMTQ0NzQ6ICAgQVRPTV9UUkFO U01JVFRFUl9BQ1RJT05fU0VUVVBfVlNFTVBIID0gMTEsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRU RVJfQUNUSU9OX1BPV0VSX09OID0gMTIsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRURVJfQUNUSU9O X1BPV0VSX09GRiA9IDEzLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0 b21fZGlnX3RyYW5zbWl0dGVyX2NvbnRyb2xfZGlnZmVfc2VsCjE0NDc0OiB7CjE0NDc0OiAgIEFU T01fVFJBTk1TSVRURVJfVjZfX0RJR0FfU0VMID0gMHgwMSwKMTQ0NzQ6ICAgQVRPTV9UUkFOTVNJ VFRFUl9WNl9fRElHQl9TRUwgPSAweDAyLAoxNDQ3NDogICBBVE9NX1RSQU5NU0lUVEVSX1Y2X19E SUdDX1NFTCA9IDB4MDQsCjE0NDc0OiAgIEFUT01fVFJBTk1TSVRURVJfVjZfX0RJR0RfU0VMID0g MHgwOCwKMTQ0NzQ6ICAgQVRPTV9UUkFOTVNJVFRFUl9WNl9fRElHRV9TRUwgPSAweDEwLAoxNDQ3 NDogICBBVE9NX1RSQU5NU0lUVEVSX1Y2X19ESUdGX1NFTCA9IDB4MjAsCjE0NDc0OiAgIEFUT01f VFJBTk1TSVRURVJfVjZfX0RJR0dfU0VMID0gMHg0MCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlnX3RyYW5zbWl0dGVyX2NvbnRyb2xfaHBkX3Nl bAoxNDQ3NDogewoxNDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX1Y2X05PX0hQRF9TRUwgPSAweDAw LAoxNDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDFfU0VMID0gMHgwMSwKMTQ0NzQ6ICAg QVRPTV9UUkFOU01JVFRFUl9WNl9IUEQyX1NFTCA9IDB4MDIsCjE0NDc0OiAgIEFUT01fVFJBTlNN SVRURVJfVjZfSFBEM19TRUwgPSAweDAzLAoxNDQ3NDogICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQ RDRfU0VMID0gMHgwNCwKMTQ0NzQ6ICAgQVRPTV9UUkFOU01JVFRFUl9WNl9IUEQ1X1NFTCA9IDB4 MDUsCjE0NDc0OiAgIEFUT01fVFJBTlNNSVRURVJfVjZfSFBENl9TRUwgPSAweDA2LAoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGF0b21fZGlnX3RyYW5zbWl0dGVyX2NvbnRy b2xfZHBsYW5lc2V0CjE0NDc0OiB7CjE0NDc0OiAgIERQX0xBTkVfU0VUX18wREJfMF80ViA9IDB4 MDAsCjE0NDc0OiAgIERQX0xBTkVfU0VUX18wREJfMF82ViA9IDB4MDEsCjE0NDc0OiAgIERQX0xB TkVfU0VUX18wREJfMF84ViA9IDB4MDIsCjE0NDc0OiAgIERQX0xBTkVfU0VUX18wREJfMV8yViA9 IDB4MDMsCjE0NDc0OiAgIERQX0xBTkVfU0VUX18zXzVEQl8wXzRWID0gMHgwOCwKMTQ0NzQ6ICAg RFBfTEFORV9TRVRfXzNfNURCXzBfNlYgPSAweDA5LAoxNDQ3NDogICBEUF9MQU5FX1NFVF9fM181 REJfMF84ViA9IDB4MGEsCjE0NDc0OiAgIERQX0xBTkVfU0VUX182REJfMF80ViA9IDB4MTAsCjE0 NDc0OiAgIERQX0xBTkVfU0VUX182REJfMF82ViA9IDB4MTEsCjE0NDc0OiAgIERQX0xBTkVfU0VU X185XzVEQl8wXzRWID0gMHgxOCwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBleHRlcm5hbF9lbmNv ZGVyX2NvbnRyb2xfcGFyYW1ldGVyc192Ml80CjE0NDc0OiB7CjE0NDc0OiAgIHVpbnQxNl90IHBp eGVsY2xvY2tfMTBraHo7CjE0NDc0OiAgIHVpbnQ4X3QgY29uZmlnOwoxNDQ3NDogICB1aW50OF90 IGFjdGlvbjsKMTQ0NzQ6ICAgdWludDhfdCBlbmNvZGVybW9kZTsKMTQ0NzQ6ICAgdWludDhfdCBs YW5lbnVtOwoxNDQ3NDogICB1aW50OF90IGJpdHBlcmNvbG9yOwoxNDQ3NDogICB1aW50OF90IGhw ZF9pZDsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBlbnVtIGV4dGVy bmFsX2VuY29kZXJfY29udHJvbF9hY3Rpb25fZGVmCjE0NDc0OiB7CjE0NDc0OiAgIEVYVEVSTkFM X0VOQ09ERVJfQUNUSU9OX1YzX0RJU0FCTEVfT1VUUFVUID0gMHgwMCwKMTQ0NzQ6ICAgRVhURVJO QUxfRU5DT0RFUl9BQ1RJT05fVjNfRU5BQkxFX09VVFBVVCA9IDB4MDEsCjE0NDc0OiAgIEVYVEVS TkFMX0VOQ09ERVJfQUNUSU9OX1YzX0VOQ09ERVJfSU5JVCA9IDB4MDcsCjE0NDc0OiAgIEVYVEVS TkFMX0VOQ09ERVJfQUNUSU9OX1YzX0VOQ09ERVJfU0VUVVAgPSAweDBmLAoxNDQ3NDogICBFWFRF Uk5BTF9FTkNPREVSX0FDVElPTl9WM19FTkNPREVSX0JMQU5LSU5HX09GRiA9IDB4MTAsCjE0NDc0 OiAgIEVYVEVSTkFMX0VOQ09ERVJfQUNUSU9OX1YzX0VOQ09ERVJfQkxBTktJTkcgPSAweDExLAox NDQ3NDogICBFWFRFUk5BTF9FTkNPREVSX0FDVElPTl9WM19EQUNMT0FEX0RFVEVDVElPTiA9IDB4 MTIsCjE0NDc0OiAgIEVYVEVSTkFMX0VOQ09ERVJfQUNUSU9OX1YzX0REQ19TRVRVUCA9IDB4MTQs CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IGVudW0gZXh0ZXJuYWxfZW5jb2Rlcl9j b250cm9sX3YyXzRfY29uZmlnX2RlZgoxNDQ3NDogewoxNDQ3NDogICBFWFRFUk5BTF9FTkNPREVS X0NPTkZJR19WM19EUExJTktSQVRFX01BU0sgPSAweDAzLAoxNDQ3NDogICBFWFRFUk5BTF9FTkNP REVSX0NPTkZJR19WM19EUExJTktSQVRFXzFfNjJHSFogPSAweDAwLAoxNDQ3NDogICBFWFRFUk5B TF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFXzJfNzBHSFogPSAweDAxLAoxNDQ3NDogICBF WFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFXzVfNDBHSFogPSAweDAyLAoxNDQ3 NDogICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFXzNfMjRHSFogPSAweDAz LAoxNDQ3NDogICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19FTkNPREVSX1NFTF9NQUtTID0g MHg3MCwKMTQ0NzQ6ICAgRVhURVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRU5DT0RFUjEgPSAweDAw LAoxNDQ3NDogICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19FTkNPREVSMiA9IDB4MTAsCjE0 NDc0OiAgIEVYVEVSTkFMX0VOQ09ERVJfQ09ORklHX1YzX0VOQ09ERVIzID0gMHgyMCwKMTQ0NzQ6 IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCBleHRlcm5hbF9lbmNvZGVyX2NvbnRyb2xfcHNfYWxs b2NhdGlvbl92Ml80CjE0NDc0OiB7CjE0NDc0OiAgIHN0cnVjdCBleHRlcm5hbF9lbmNvZGVyX2Nv bnRyb2xfcGFyYW1ldGVyc192Ml80IHNFeHRFbmNvZGVyOwoxNDQ3NDogICB1aW50MzJfdCByZXNl cnZlZFsyXTsKMTQ0NzQ6IH07CjE0NDc0OiAjIDMxMzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKMTQ0NzQ6IHN0cnVjdCBhbWRfYWNwaV9k ZXNjcmlwdGlvbl9oZWFkZXJ7CjE0NDc0OiAgIHVpbnQzMl90IHNpZ25hdHVyZTsKMTQ0NzQ6ICAg dWludDMyX3QgdGFibGVMZW5ndGg7CjE0NDc0OiAgIHVpbnQ4X3QgcmV2aXNpb247CjE0NDc0OiAg IHVpbnQ4X3QgY2hlY2tzdW07CjE0NDc0OiAgIHVpbnQ4X3Qgb2VtSWRbNl07CjE0NDc0OiAgIHVp bnQ4X3Qgb2VtVGFibGVJZFs4XTsKMTQ0NzQ6ICAgdWludDMyX3Qgb2VtUmV2aXNpb247CjE0NDc0 OiAgIHVpbnQzMl90IGNyZWF0b3JJZDsKMTQ0NzQ6ICAgdWludDMyX3QgY3JlYXRvclJldmlzaW9u OwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IHVlZmlfYWNwaV92ZmN0ewoxNDQ3NDog ICBzdHJ1Y3QgYW1kX2FjcGlfZGVzY3JpcHRpb25faGVhZGVyIHNoZWFkZXI7CjE0NDc0OiAgIHVp bnQ4X3QgdGFibGVVVUlEWzE2XTsKMTQ0NzQ6ICAgdWludDMyX3QgdmJpb3NpbWFnZW9mZnNldDsK MTQ0NzQ6ICAgdWludDMyX3QgbGliMUltYWdlb2Zmc2V0OwoxNDQ3NDogICB1aW50MzJfdCByZXNl cnZlZFs0XTsKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB2ZmN0X2ltYWdlX2hlYWRl cnsKMTQ0NzQ6ICAgdWludDMyX3QgcGNpYnVzOwoxNDQ3NDogICB1aW50MzJfdCBwY2lkZXZpY2U7 CjE0NDc0OiAgIHVpbnQzMl90IHBjaWZ1bmN0aW9uOwoxNDQ3NDogICB1aW50MTZfdCB2ZW5kb3Jp ZDsKMTQ0NzQ6ICAgdWludDE2X3QgZGV2aWNlaWQ7CjE0NDc0OiAgIHVpbnQxNl90IHNzdmlkOwox NDQ3NDogICB1aW50MTZfdCBzc2lkOwoxNDQ3NDogICB1aW50MzJfdCByZXZpc2lvbjsKMTQ0NzQ6 ICAgdWludDMyX3QgaW1hZ2VsZW5ndGg7CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6 IHN0cnVjdCBnb3BfdmJpb3NfY29udGVudCB7CjE0NDc0OiAgIHN0cnVjdCB2ZmN0X2ltYWdlX2hl YWRlciB2Ymlvc2hlYWRlcjsKMTQ0NzQ6ICAgdWludDhfdCB2Ymlvc2NvbnRlbnRbMV07CjE0NDc0 OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgZ29wX2xpYjFfY29udGVudCB7CjE0NDc0OiAgIHN0 cnVjdCB2ZmN0X2ltYWdlX2hlYWRlciBsaWIxaGVhZGVyOwoxNDQ3NDogICB1aW50OF90IGxpYjFj b250ZW50WzFdOwoxNDQ3NDogfTsKMTQ0NzQ6ICMgMzE5MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgoxNDQ3NDogZW51bSBzY3JhdGNoX3Jl Z2lzdGVyX2RlZnsKMTQ0NzQ6ICAgQVRPTV9ERVZJQ0VfQ09OTkVDVF9JTkZPX0RFRiA9IDAsCjE0 NDc0OiAgIEFUT01fQkxfQlJJX0xFVkVMX0lORk9fREVGID0gMiwKMTQ0NzQ6ICAgQVRPTV9BQ1RJ VkVfSU5GT19ERUYgPSAzLAoxNDQ3NDogICBBVE9NX0xDRF9JTkZPX0RFRiA9IDQsCjE0NDc0OiAg IEFUT01fREVWSUNFX1JFUV9JTkZPX0RFRiA9IDUsCjE0NDc0OiAgIEFUT01fQUNDX0NIQU5HRV9J TkZPX0RFRiA9IDYsCjE0NDc0OiAgIEFUT01fUFJFX09TX01PREVfSU5GT19ERUYgPSA3LAoxNDQ3 NDogICBBVE9NX1BSRV9PU19BU1NFUlRJT05fREVGID0gOCwKMTQ0NzQ6ICAgQVRPTV9JTlRFUk5B TF9USU1FUl9JTkZPX0RFRiA9IDEwLAoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBzY3Jh dGNoX2RldmljZV9jb25uZWN0X2luZm9fYml0X2RlZnsKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0xD RDFfQ09OTkVDVCA9MHgwMDAyLAoxNDQ3NDogICBBVE9NX0RJU1BMQVlfREZQMV9DT05ORUNUID0w eDAwMDgsCjE0NDc0OiAgIEFUT01fRElTUExBWV9ERlAyX0NPTk5FQ1QgPTB4MDA4MCwKMTQ0NzQ6 ICAgQVRPTV9ESVNQTEFZX0RGUDNfQ09OTkVDVCA9MHgwMjAwLAoxNDQ3NDogICBBVE9NX0RJU1BM QVlfREZQNF9DT05ORUNUID0weDA0MDAsCjE0NDc0OiAgIEFUT01fRElTUExBWV9ERlA1X0NPTk5F Q1QgPTB4MDgwMCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDZfQ09OTkVDVCA9MHgwMDQwLAox NDQ3NDogICBBVE9NX0RJU1BMQVlfREZQeF9DT05ORUNUID0weDBlYzgsCjE0NDc0OiAgIEFUT01f Q09OTkVDVF9JTkZPX0RFVklDRV9NQVNLID0weDBmZmYsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0 OiBlbnVtIHNjcmF0Y2hfYmxfYnJpX2xldmVsX2luZm9fYml0X2RlZnsKMTQ0NzQ6ICAgQVRPTV9D VVJSRU5UX0JMX0xFVkVMX1NISUZUID0weDgsCjE0NDc0OiAKMTQ0NzQ6ICAgQVRPTV9DVVJSRU5U X0JMX0xFVkVMX01BU0sgPTB4MDAwMGZmMDAsCjE0NDc0OiAgIEFUT01fREVWSUNFX0RQTVNfU1RB VEUgPTB4MDAwMTAwMDAsCjE0NDc0OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gc2Ny YXRjaF9hY3RpdmVfaW5mb19iaXRzX2RlZnsKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0xDRDFfQUNU SVZFID0weDAwMDIsCjE0NDc0OiAgIEFUT01fRElTUExBWV9ERlAxX0FDVElWRSA9MHgwMDA4LAox NDQ3NDogICBBVE9NX0RJU1BMQVlfREZQMl9BQ1RJVkUgPTB4MDA4MCwKMTQ0NzQ6ICAgQVRPTV9E SVNQTEFZX0RGUDNfQUNUSVZFID0weDAyMDAsCjE0NDc0OiAgIEFUT01fRElTUExBWV9ERlA0X0FD VElWRSA9MHgwNDAwLAoxNDQ3NDogICBBVE9NX0RJU1BMQVlfREZQNV9BQ1RJVkUgPTB4MDgwMCwK MTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDZfQUNUSVZFID0weDAwNDAsCjE0NDc0OiAgIEFUT01f QUNUSVZFX0lORk9fREVWSUNFX01BU0sgPTB4MGZmZiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6 IGVudW0gc2NyYXRjaF9kZXZpY2VfcmVxX2luZm9fYml0c19kZWZ7CjE0NDc0OiAgIEFUT01fRElT UExBWV9MQ0QxX1JFUSA9MHgwMDAyLAoxNDQ3NDogICBBVE9NX0RJU1BMQVlfREZQMV9SRVEgPTB4 MDAwOCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDJfUkVRID0weDAwODAsCjE0NDc0OiAgIEFU T01fRElTUExBWV9ERlAzX1JFUSA9MHgwMjAwLAoxNDQ3NDogICBBVE9NX0RJU1BMQVlfREZQNF9S RVEgPTB4MDQwMCwKMTQ0NzQ6ICAgQVRPTV9ESVNQTEFZX0RGUDVfUkVRID0weDA4MDAsCjE0NDc0 OiAgIEFUT01fRElTUExBWV9ERlA2X1JFUSA9MHgwMDQwLAoxNDQ3NDogICBBVE9NX1JFUV9JTkZP X0RFVklDRV9NQVNLID0weDBmZmYsCjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHNjcmF0 Y2hfYWNjX2NoYW5nZV9pbmZvX2JpdHNoaWZ0X2RlZnsKMTQ0NzQ6ICAgQVRPTV9BQ0NfQ0hBTkdF X0FDQ19NT0RFX1NISUZUID00LAoxNDQ3NDogICBBVE9NX0FDQ19DSEFOR0VfTElEX1NUQVRVU19T SElGVCA9NiwKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IGVudW0gc2NyYXRjaF9hY2NfY2hhbmdl X2luZm9fYml0c19kZWZ7CjE0NDc0OiAgIEFUT01fQUNDX0NIQU5HRV9BQ0NfTU9ERSA9MHgwMDAw MDAxMCwKMTQ0NzQ6ICAgQVRPTV9BQ0NfQ0hBTkdFX0xJRF9TVEFUVVMgPTB4MDAwMDAwNDAsCjE0 NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBlbnVtIHNjcmF0Y2hfcHJlX29zX21vZGVfaW5mb19iaXRz X2RlZnsKMTQ0NzQ6ICAgQVRPTV9QUkVfT1NfTU9ERV9NQVNLID0weDAwMDAwMDAzLAoxNDQ3NDog ICBBVE9NX1BSRV9PU19NT0RFX1ZHQSA9MHgwMDAwMDAwMCwKMTQ0NzQ6ICAgQVRPTV9QUkVfT1Nf TU9ERV9WRVNBID0weDAwMDAwMDAxLAoxNDQ3NDogICBBVE9NX1BSRV9PU19NT0RFX0dPUCA9MHgw MDAwMDAwMiwKMTQ0NzQ6ICAgQVRPTV9QUkVfT1NfTU9ERV9QSVhFTF9ERVBUSCA9MHgwMDAwMDAw QywKMTQ0NzQ6ICAgQVRPTV9QUkVfT1NfTU9ERV9QSVhFTF9GT1JNQVRfTUFTSz0weDAwMDAwMEYw LAoxNDQ3NDogICBBVE9NX1BSRV9PU19NT0RFXzhCSVRfUEFMX0VOID0weDAwMDAwMTAwLAoxNDQ3 NDogICBBVE9NX0FTSUNfSU5JVF9DT01QTEVURSA9MHgwMDAwMDIwMCwKMTQ0NzQ6IAoxNDQ3NDog ICBBVE9NX1BSRV9PU19NT0RFX05VTUJFUl9NQVNLID0weEZGRkYwMDAwLAoxNDQ3NDogCjE0NDc0 OiB9OwoxNDQ3NDogIyAzMjc2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1 ZGUvYXRvbWZpcm13YXJlLmgiCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmVpZC5oIiAxCjE0NDc0OiAjIDMxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlaWQuaCIKMTQ0NzQ6IGVu dW0gYXRvbV9tYXN0ZXJfZGF0YV90YWJsZV9pZAoxNDQ3NDogewoxNDQ3NDogICAgIFZCSU9TX0RB VEFfVEJMX0lEX19VVElMSVRZX1BJUEVMSU5FLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lE X19NVUxUSU1FRElBX0lORiwKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fRklSTVdBUkVf SU5GLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lEX19MQ0RfSU5GLAoxNDQ3NDogICAgIFZC SU9TX0RBVEFfVEJMX0lEX19TTVVfSU5GLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lEX19W UkFNX1VTQUdFX0JZX0ZJUk1XQVJFLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lEX19HUElP X1BJTl9MVVQsCjE0NDc0OiAgICAgVkJJT1NfREFUQV9UQkxfSURfX0dGWF9JTkYsCjE0NDc0OiAg ICAgVkJJT1NfREFUQV9UQkxfSURfX1BPV0VSX1BMQVlfSU5GLAoxNDQ3NDogICAgIFZCSU9TX0RB VEFfVEJMX0lEX19ESVNQTEFZX09CSkVDVF9JTkYsCjE0NDc0OiAgICAgVkJJT1NfREFUQV9UQkxf SURfX0lORElSRUNUX0lPX0FDQ0VTUywKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fVU1D X0lORiwKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fRENFX0lORiwKMTQ0NzQ6ICAgICBW QklPU19EQVRBX1RCTF9JRF9fVlJBTV9JTkYsCjE0NDc0OiAgICAgVkJJT1NfREFUQV9UQkxfSURf X0lOVEVHUkFURURfU1lTX0lORiwKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fQVNJQ19Q Uk9GSUxJTkdfSU5GLAoxNDQ3NDogICAgIFZCSU9TX0RBVEFfVEJMX0lEX19WT0xUQUdFX09CSl9J TkYsCjE0NDc0OiAKMTQ0NzQ6ICAgICBWQklPU19EQVRBX1RCTF9JRF9fVU5ERUZJTkVELAoxNDQ3 NDogfTsKMTQ0NzQ6IAoxNDQ3NDogZW51bSBhdG9tX21hc3Rlcl9jb21tYW5kX3RhYmxlX2lkCjE0 NDc0OiB7CjE0NDc0OiAgICAgVkJJT1NfQ01EX1RCTF9JRF9fQVNJQ19JTklULAoxNDQ3NDogICAg IFZCSU9TX0NNRF9UQkxfSURfX0RJR1hfRU5DT0RFUl9DT05UUk9MLAoxNDQ3NDogICAgIFZCSU9T X0NNRF9UQkxfSURfX1NFVF9FTkdJTkVfQ0xPQ0ssCjE0NDc0OiAgICAgVkJJT1NfQ01EX1RCTF9J RF9fU0VUX01FTU9SWV9DTE9DSywKMTQ0NzQ6ICAgICBWQklPU19DTURfVEJMX0lEX19TRVRfUElY RUxfQ0xPQ0ssCjE0NDc0OiAgICAgVkJJT1NfQ01EX1RCTF9JRF9fRU5BQkxFX0RJU1BfUE9XRVJf R0FUSU5HLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX0JMQU5LX0NSVEMsCjE0NDc0OiAg ICAgVkJJT1NfQ01EX1RCTF9JRF9fRU5BQkxFX0NSVEMsCjE0NDc0OiAgICAgVkJJT1NfQ01EX1RC TF9JRF9fR0VUX1NNVV9DTE9DS19JTkZPLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX1NF TEVDVF9DUlRDX1NPVVJDRSwKMTQ0NzQ6ICAgICBWQklPU19DTURfVEJMX0lEX19TRVRfRENFX0NM T0NLLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX0dFVF9NRU1PUllfQ0xPQ0ssCjE0NDc0 OiAgICAgVkJJT1NfQ01EX1RCTF9JRF9fR0VUX0VOR0lORV9DTE9DSywKMTQ0NzQ6ICAgICBWQklP U19DTURfVEJMX0lEX19TRVRfQ1JUQ19VU0lOR19EVERfVElNSU5HLAoxNDQ3NDogICAgIFZCSU9T X0NNRF9UQkxfSURfX0VYVEVOQUxfRU5DT0RFUl9DT05UUk9MLAoxNDQ3NDogICAgIFZCSU9TX0NN RF9UQkxfSURfX1BST0NFU1NfSTJDX0NIQU5ORUxfVFJBTlNBQ1RJT04sCjE0NDc0OiAgICAgVkJJ T1NfQ01EX1RCTF9JRF9fQ09NUFVURV9HUFVfQ0xPQ0tfUEFSQU0sCjE0NDc0OiAgICAgVkJJT1Nf Q01EX1RCTF9JRF9fRFlOQU1JQ19NRU1PUllfU0VUVElOR1MsCjE0NDc0OiAgICAgVkJJT1NfQ01E X1RCTF9JRF9fTUVNT1JZX1RSQUlOSU5HLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX1NF VF9WT0xUQUdFLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX0RJRzFfVFJBTlNNSVRURVJf Q09OVFJPTCwKMTQ0NzQ6ICAgICBWQklPU19DTURfVEJMX0lEX19QUk9DRVNTX0FVWF9DSEFOTkVM X1RSQU5TQUNUSU9OLAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX0dFVF9WT0xUQUdFX0lO RiwKMTQ0NzQ6IAoxNDQ3NDogICAgIFZCSU9TX0NNRF9UQkxfSURfX1VOREVGSU5FRCwKMTQ0NzQ6 IH07CjE0NDc0OiAjIDMyNzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVk ZS9hdG9tZmlybXdhcmUuaCIgMgoxNDQ3NDogI3ByYWdtYSBwYWNrKCkKMTQ0NzQ6ICMgNDEgImRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9j bGtfbWdyLmMiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9p bmNsdWRlL2FzaWNfcmVnL2Nsay9jbGtfMTBfMF8yX29mZnNldC5oIiAxCjE0NDc0OiAjIDQyICJk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5f Y2xrX21nci5jIiAyCjE0NDc0OiAjIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v aW5jbHVkZS9hc2ljX3JlZy9jbGsvY2xrXzEwXzBfMl9zaF9tYXNrLmgiIDEKMTQ0NzQ6ICMgNDMg ImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9y bl9jbGtfbWdyLmMiIDIKMTQ0NzQ6ICMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9pbmNsdWRlL3Jlbm9pcl9pcF9vZmZzZXQuaCIgMQoxNDQ3NDogIyAyOCAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL3Jlbm9pcl9pcF9vZmZzZXQuaCIKMTQ0NzQ6IHN0 cnVjdCBJUF9CQVNFX0lOU1RBTkNFCjE0NDc0OiB7CjE0NDc0OiAgICAgdW5zaWduZWQgaW50IHNl Z21lbnRbNV07CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3QgSVBfQkFTRQoxNDQ3NDog ewoxNDQ3NDogICAgIHN0cnVjdCBJUF9CQVNFX0lOU1RBTkNFIGluc3RhbmNlWzddOwoxNDQ3NDog fTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgQUNQ X0JBU0UgPXsgeyB7IHsgMHgwMjQwMzgwMCwgMHgwMDQ4MDAwMCwgMCwgMCwgMCB9IH0sCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg eyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0g fSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIEFU SFVCX0JBU0UgPXsgeyB7IHsgMHgwMDAwMEMyMCwgMHgwMjQwOEMwMCwgMCwgMCwgMCB9IH0sCjE0 NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAw IH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNF IENMS19CQVNFID17IHsgeyB7IDB4MDAwMTZDMDAsIDB4MDAwMTZFMDAsIDB4MDAwMTcwMDAsIDB4 MDAwMTdFMDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBj b25zdCBzdHJ1Y3QgSVBfQkFTRSBEQkdVX0lPMF9CQVNFID17IHsgeyB7IDB4MDAwMDAxRTAsIDB4 MDI0MEI0MDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0 YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBERl9CQVNFID17IHsgeyB7IDB4MDAwMDcwMDAsIDB4 MDI0MEI4MDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0 YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBESU9fQkFTRSA9eyB7IHsgeyAweDAyNDA0MDAwLCAw LCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMgY29u c3Qgc3RydWN0IElQX0JBU0UgRE1VX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDAxMiwgMHgwMDAwMDBD MCwgMHgwMDAwMzRDMCwgMHgwMDAwOTAwMCwgMHgwMjQwM0MwMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIERQQ1NfQkFTRSA9 eyB7IHsgeyAweDAwMDAwMDEyLCAweDAwMDAwMEMwLCAweDAwMDAzNEMwLCAweDAwMDA5MDAwLCAw eDAyNDAzQzAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMgY29u c3Qgc3RydWN0IElQX0JBU0UgRlVTRV9CQVNFID17IHsgeyB7IDB4MDAwMTc0MDAsIDB4MDI0MDE0 MDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBj b25zdCBzdHJ1Y3QgSVBfQkFTRSBHQ19CQVNFID17IHsgeyB7IDB4MDAwMDIwMDAsIDB4MDAwMEEw MDAsIDB4MDI0MDJDMDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0 OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg eyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6 IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBIREFfQkFTRSA9eyB7IHsgeyAweDAyNDA0ODAw LCAweDAwNEMwMDAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0 OiBzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgSERQX0JBU0UgPXsgeyB7IHsgMHgwMDAwMEYy MCwgMHgwMjQwQTQwMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwoxNDQ3 NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIElPSEMwX0JBU0UgPXsgeyB7IHsgMHgwMDAx MDAwMCwgMHgwMjQwNjAwMCwgMHgwNEVDMDAwMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIElTUF9CQVNFID17IHsg eyB7IDB4MDAwMTgwMDAsIDB4MDI0MEIwMDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBMMklNVTBfQkFTRSA9 eyB7IHsgeyAweDAwMDA3REMwLCAweDAyNDA3MDAwLCAweDAwOTAwMDAwLCAweDA0RkMwMDAwLCAw eDA1NUMwMDAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMgY29u c3Qgc3RydWN0IElQX0JBU0UgTU1IVUJfQkFTRSA9eyB7IHsgeyAweDAwMDFBMDAwLCAweDAyNDA4 ODAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK MTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwg MCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMg Y29uc3Qgc3RydWN0IElQX0JBU0UgTVAwX0JBU0UgPXsgeyB7IHsgMHgwMDAxNjAwMCwgMHgwMjQz RkMwMCwgMHgwMERDMDAwMCwgMHgwMEUwMDAwMCwgMHgwMEU0MDAwMCB9IH0sCjE0NDc0OiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAw LCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0gfSB9OwoxNDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIE1QMV9CQVNF ID17IHsgeyB7IDB4MDAwMTYwMDAsIDB4MDI0MDA0MDAsIDB4MDBFODAwMDAsIDB4MDBFQzAwMDAs IDB4MDBGMDAwMDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAox NDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBj b25zdCBzdHJ1Y3QgSVBfQkFTRSBOQklGMF9CQVNFID17IHsgeyB7IDB4MDAwMDAwMDAsIDB4MDAw MDAwMTQsIDB4MDAwMDBEMjAsIDB4MDAwMTA0MDAsIDB4MDI0MUIwMDAgfSB9LAoxNDQ3NDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0g fSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0 NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBEQ05fQkFT RSA9eyB7IHsgeyAweDAwMDAwMDEyLCAweDAwMDAwMEMwLCAweDAwMDAzNEMwLCAwLCAwIH0gfSwK MTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwg MCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9Owox NDQ3NDogc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIE9TU1NZU19CQVNFID17IHsgeyB7IDB4 MDAwMDEwQTAsIDB4MDI0MEEwMDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAs IDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0g fTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBQQ0lFMF9CQVNFID17IHsgeyB7 IDB4MDI0MTE4MDAsIDB4MDQ0NDAwMDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBTRE1BMF9CQVNFID17IHsg eyB7IDB4MDAwMDEyNjAsIDB4MDI0MEE4MDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0 NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBTTVVJT19CQVNFID17 IHsgeyB7IDB4MDAwMTY4MDAsIDB4MDAwMTZBMDAsIDB4MDI0MDEwMDAsIDB4MDA0NDAwMDAsIDAg fSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK MTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwg MCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKMTQ0NzQ6IHN0YXRpYyBjb25zdCBzdHJ1Y3Qg SVBfQkFTRSBUSE1fQkFTRSA9eyB7IHsgeyAweDAwMDE2NjAwLCAweDAyNDAwQzAwLCAwLCAwLCAw IH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0s CjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAs IDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0OiBzdGF0aWMgY29uc3Qgc3RydWN0 IElQX0JBU0UgVU1DX0JBU0UgPXsgeyB7IHsgMHgwMDAxNDAwMCwgMHgwMjQyNTgwMCwgMCwgMCwg MCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDB4MDAwNTQwMDAsIDB4MDI0MjVDMDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwoxNDQ3NDog c3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIFVTQjBfQkFTRSA9eyB7IHsgeyAweDAyNDJBODAw LCAweDA1QjAwMDAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3 NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CjE0NDc0 OiBzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgVVZEMF9CQVNFID17IHsgeyB7IDB4MDAwMDc4 MDAsIDB4MDAwMDdFMDAsIDB4MDI0MDMwMDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0sCjE0NDc0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAoxNDQ3NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKMTQ0NzQ6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCjE0NDc0OiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 IH0gfTsKMTQ0NzQ6ICMgNDQgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKMTQ0NzQ6ICMgNTcgImRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMi CjE0NDc0OiBpbnQgcm5fZ2V0X2FjdGl2ZV9kaXNwbGF5X2NudF93YSgKMTQ0NzQ6ICAgc3RydWN0 IGRjICpkYywKMTQ0NzQ6ICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KQoxNDQ3NDogewoxNDQ3 NDogIGludCBpLCBkaXNwbGF5X2NvdW50OwoxNDQ3NDogIGJvb2wgdG1kc19wcmVzZW50ID0gZmFs c2U7CjE0NDc0OiAKMTQ0NzQ6ICBkaXNwbGF5X2NvdW50ID0gMDsKMTQ0NzQ6ICBmb3IgKGkgPSAw OyBpIDwgY29udGV4dC0+c3RyZWFtX2NvdW50OyBpKyspIHsKMTQ0NzQ6ICAgY29uc3Qgc3RydWN0 IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtID0gY29udGV4dC0+c3RyZWFtc1tpXTsKMTQ0NzQ6IAox NDQ3NDogICBpZiAoc3RyZWFtLT5zaWduYWwgPT0gU0lHTkFMX1RZUEVfSERNSV9UWVBFX0EgfHwK MTQ0NzQ6ICAgICBzdHJlYW0tPnNpZ25hbCA9PSBTSUdOQUxfVFlQRV9EVklfU0lOR0xFX0xJTksg fHwKMTQ0NzQ6ICAgICBzdHJlYW0tPnNpZ25hbCA9PSBTSUdOQUxfVFlQRV9EVklfRFVBTF9MSU5L KQoxNDQ3NDogICAgdG1kc19wcmVzZW50ID0gdHJ1ZTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6 ICBmb3IgKGkgPSAwOyBpIDwgZGMtPmxpbmtfY291bnQ7IGkrKykgewoxNDQ3NDogICBjb25zdCBz dHJ1Y3QgZGNfbGluayAqbGluayA9IGRjLT5saW5rc1tpXTsKMTQ0NzQ6ICMgODQgImRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdy LmMiCjE0NDc0OiAgIGlmIChsaW5rLT5jb25uZWN0b3Jfc2lnbmFsID09IFNJR05BTF9UWVBFX1ZJ UlRVQUwgfHwKMTQ0NzQ6ICAgICBsaW5rLT5saW5rX2VuYy0+ZnVuY3MtPmlzX2RpZ19lbmFibGVk KGxpbmstPmxpbmtfZW5jKSkKMTQ0NzQ6ICAgIGRpc3BsYXlfY291bnQrKzsKMTQ0NzQ6ICB9CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmIChkaXNwbGF5X2NvdW50ID09IDAgJiYgdG1kc19wcmVz ZW50KQoxNDQ3NDogICBkaXNwbGF5X2NvdW50ID0gMTsKMTQ0NzQ6IAoxNDQ3NDogIHJldHVybiBk aXNwbGF5X2NvdW50OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2b2lkIHJuX3VwZGF0ZV9jbG9j a3Moc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwKMTQ0NzQ6ICAgIHN0cnVjdCBkY19zdGF0 ZSAqY29udGV4dCwKMTQ0NzQ6ICAgIGJvb2wgc2FmZV90b19sb3dlcikKMTQ0NzQ6IHsKMTQ0NzQ6 ICBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciA9ICh7IHZvaWQgKl9fbXB0ciA9ICh2 b2lkICopKGNsa19tZ3JfYmFzZSk7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3Nl cnRfMTAwKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21h dGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBh dGlibGVfcCh0eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwgdHlwZW9mKCgoc3RydWN0IGNsa19tZ3Jf aW50ZXJuYWwgKikwKS0+YmFzZSkpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5 cGVvZigqKGNsa19tZ3JfYmFzZSkpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNz ZXJ0XzEwMCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqKShfX21w dHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwsIGJhc2UpKSk7 IH0pOwoxNDQ3NDogIHN0cnVjdCBkY19jbG9ja3MgKm5ld19jbG9ja3MgPSAmY29udGV4dC0+Yndf Y3R4LmJ3LmRjbi5jbGs7CjE0NDc0OiAgc3RydWN0IGRjICpkYyA9IGNsa19tZ3JfYmFzZS0+Y3R4 LT5kYzsKMTQ0NzQ6ICBpbnQgZGlzcGxheV9jb3VudDsKMTQ0NzQ6ICBib29sIHVwZGF0ZV9kcHBj bGsgPSBmYWxzZTsKMTQ0NzQ6ICBib29sIHVwZGF0ZV9kaXNwY2xrID0gZmFsc2U7CjE0NDc0OiAg Ym9vbCBkcHBfY2xvY2tfbG93ZXJlZCA9IGZhbHNlOwoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGRt Y3UgKmRtY3UgPSBjbGtfbWdyX2Jhc2UtPmN0eC0+ZGMtPnJlc19wb29sLT5kbWN1OwoxNDQ3NDog CjE0NDc0OiAgaWYgKGRjLT53b3JrX2Fyb3VuZHMuc2tpcF9jbG9ja191cGRhdGUpCjE0NDc0OiAg IHJldHVybjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAg aWYgKHNhZmVfdG9fbG93ZXIpIHsKMTQ0NzQ6IAoxNDQ3NDogICBpZiAoY2xrX21ncl9iYXNlLT5j bGtzLnB3cl9zdGF0ZSAhPSBEQ05fUFdSX1NUQVRFX0xPV19QT1dFUikgewoxNDQ3NDogCjE0NDc0 OiAgICBkaXNwbGF5X2NvdW50ID0gcm5fZ2V0X2FjdGl2ZV9kaXNwbGF5X2NudF93YShkYywgY29u dGV4dCk7CjE0NDc0OiAKMTQ0NzQ6ICAgIGlmIChkaXNwbGF5X2NvdW50ID09IDApIHsKMTQ0NzQ6 ICAgICBybl92Ymlvc19zbXVfc2V0X2Rjbl9sb3dfcG93ZXJfc3RhdGUoY2xrX21nciwgRENOX1BX Ul9TVEFURV9MT1dfUE9XRVIpOwoxNDQ3NDogCjE0NDc0OiAgICAgY2xrX21ncl9iYXNlLT5jbGtz LnB3cl9zdGF0ZSA9IERDTl9QV1JfU1RBVEVfTE9XX1BPV0VSOwoxNDQ3NDogICAgfQoxNDQ3NDog ICB9CjE0NDc0OiAgfSBlbHNlIHsKMTQ0NzQ6IAoxNDQ3NDogICBpZiAoY2xrX21ncl9iYXNlLT5j bGtzLnB3cl9zdGF0ZSAhPSBEQ05fUFdSX1NUQVRFX01JU1NJT05fTU9ERSkgewoxNDQ3NDogICAg cm5fdmJpb3Nfc211X3NldF9kY25fbG93X3Bvd2VyX3N0YXRlKGNsa19tZ3IsIERDTl9QV1JfU1RB VEVfTUlTU0lPTl9NT0RFKTsKMTQ0NzQ6IAoxNDQ3NDogICAgY2xrX21ncl9iYXNlLT5jbGtzLnB3 cl9zdGF0ZSA9IERDTl9QV1JfU1RBVEVfTUlTU0lPTl9NT0RFOwoxNDQ3NDogICB9CjE0NDc0OiAg fQoxNDQ3NDogCjE0NDc0OiAgaWYgKHNob3VsZF9zZXRfY2xvY2soc2FmZV90b19sb3dlciwgbmV3 X2Nsb2Nrcy0+cGh5Y2xrX2toeiwgY2xrX21ncl9iYXNlLT5jbGtzLnBoeWNsa19raHopKSB7CjE0 NDc0OiAgIGNsa19tZ3JfYmFzZS0+Y2xrcy5waHljbGtfa2h6ID0gbmV3X2Nsb2Nrcy0+cGh5Y2xr X2toejsKMTQ0NzQ6ICAgcm5fdmJpb3Nfc211X3NldF9waHljbGsoY2xrX21nciwgY2xrX21ncl9i YXNlLT5jbGtzLnBoeWNsa19raHopOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIGlmIChzaG91 bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIG5ld19jbG9ja3MtPmRjZmNsa19raHosIGNsa19t Z3JfYmFzZS0+Y2xrcy5kY2ZjbGtfa2h6KSkgewoxNDQ3NDogICBjbGtfbWdyX2Jhc2UtPmNsa3Mu ZGNmY2xrX2toeiA9IG5ld19jbG9ja3MtPmRjZmNsa19raHo7CjE0NDc0OiAgIHJuX3ZiaW9zX3Nt dV9zZXRfaGFyZF9taW5fZGNmY2xrKGNsa19tZ3IsIGNsa19tZ3JfYmFzZS0+Y2xrcy5kY2ZjbGtf a2h6KTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoc2hvdWxkX3NldF9jbG9jayhzYWZl X3RvX2xvd2VyLAoxNDQ3NDogICAgbmV3X2Nsb2Nrcy0+ZGNmY2xrX2RlZXBfc2xlZXBfa2h6LCBj bGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2RlZXBfc2xlZXBfa2h6KSkgewoxNDQ3NDogICBjbGtf bWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2RlZXBfc2xlZXBfa2h6ID0gbmV3X2Nsb2Nrcy0+ZGNmY2xr X2RlZXBfc2xlZXBfa2h6OwoxNDQ3NDogICBybl92Ymlvc19zbXVfc2V0X21pbl9kZWVwX3NsZWVw X2RjZmNsayhjbGtfbWdyLCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2RlZXBfc2xlZXBfa2h6 KTsKMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGlmICghKChkYy0+Y3R4LT5kY2Vf ZW52aXJvbm1lbnQgPT0gRENFX0VOVl9GUEdBX01BWElNVVMpIHx8IChkYy0+Y3R4LT5kY2VfZW52 aXJvbm1lbnQgPT0gRENFX0VOVl9ESUFHKSkpIHsKMTQ0NzQ6ICAgaWYgKG5ld19jbG9ja3MtPmRw cGNsa19raHogPCAxMDAwMDApCjE0NDc0OiAgICBuZXdfY2xvY2tzLT5kcHBjbGtfa2h6ID0gMTAw MDAwOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIGlmIChzaG91bGRfc2V0X2Nsb2NrKHNhZmVf dG9fbG93ZXIsIG5ld19jbG9ja3MtPmRwcGNsa19raHosIGNsa19tZ3ItPmJhc2UuY2xrcy5kcHBj bGtfa2h6KSkgewoxNDQ3NDogICBpZiAoY2xrX21nci0+YmFzZS5jbGtzLmRwcGNsa19raHogPiBu ZXdfY2xvY2tzLT5kcHBjbGtfa2h6KQoxNDQ3NDogICAgZHBwX2Nsb2NrX2xvd2VyZWQgPSB0cnVl OwoxNDQ3NDogICBjbGtfbWdyX2Jhc2UtPmNsa3MuZHBwY2xrX2toeiA9IG5ld19jbG9ja3MtPmRw cGNsa19raHo7CjE0NDc0OiAgIHVwZGF0ZV9kcHBjbGsgPSB0cnVlOwoxNDQ3NDogIH0KMTQ0NzQ6 IAoxNDQ3NDogIGlmIChzaG91bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIG5ld19jbG9ja3Mt PmRpc3BjbGtfa2h6LCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGlzcGNsa19raHopKSB7CjE0NDc0OiAg IGNsa19tZ3JfYmFzZS0+Y2xrcy5kaXNwY2xrX2toeiA9IG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6 OwoxNDQ3NDogICBybl92Ymlvc19zbXVfc2V0X2Rpc3BjbGsoY2xrX21nciwgY2xrX21ncl9iYXNl LT5jbGtzLmRpc3BjbGtfa2h6KTsKMTQ0NzQ6IAoxNDQ3NDogICB1cGRhdGVfZGlzcGNsayA9IHRy dWU7CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgaWYgKGRwcF9jbG9ja19sb3dlcmVkKSB7CjE0 NDc0OiAKMTQ0NzQ6ICAgZGNuMjBfdXBkYXRlX2Nsb2Nrc191cGRhdGVfZHBwX2R0byhjbGtfbWdy LCBjb250ZXh0LCBzYWZlX3RvX2xvd2VyKTsKMTQ0NzQ6ICAgcm5fdmJpb3Nfc211X3NldF9kcHBj bGsoY2xrX21nciwgY2xrX21ncl9iYXNlLT5jbGtzLmRwcGNsa19raHopOwoxNDQ3NDogIH0gZWxz ZSB7CjE0NDc0OiAKMTQ0NzQ6ICAgaWYgKHVwZGF0ZV9kcHBjbGsgfHwgdXBkYXRlX2Rpc3BjbGsp CjE0NDc0OiAgICBybl92Ymlvc19zbXVfc2V0X2RwcGNsayhjbGtfbWdyLCBjbGtfbWdyX2Jhc2Ut PmNsa3MuZHBwY2xrX2toeik7CjE0NDc0OiAKMTQ0NzQ6ICAgaWYgKG5ld19jbG9ja3MtPmRwcGNs a19raHogPj0gZGMtPmN1cnJlbnRfc3RhdGUtPmJ3X2N0eC5idy5kY24uY2xrLmRwcGNsa19raHop CjE0NDc0OiAgICBkY24yMF91cGRhdGVfY2xvY2tzX3VwZGF0ZV9kcHBfZHRvKGNsa19tZ3IsIGNv bnRleHQsIHNhZmVfdG9fbG93ZXIpOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIGlmICh1cGRh dGVfZGlzcGNsayAmJgoxNDQ3NDogICAgZG1jdSAmJiBkbWN1LT5mdW5jcy0+aXNfZG1jdV9pbml0 aWFsaXplZChkbWN1KSkgewoxNDQ3NDogCjE0NDc0OiAgIGRtY3UtPmZ1bmNzLT5zZXRfcHNyX3dh aXRfbG9vcChkbWN1LAoxNDQ3NDogICAgY2xrX21ncl9iYXNlLT5jbGtzLmRpc3BjbGtfa2h6IC8g MTAwMCAvIDcpOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiBzdGF0 aWMgaW50IGdldF92Y29fZnJlcXVlbmN5X2Zyb21fcmVnKHN0cnVjdCBjbGtfbWdyX2ludGVybmFs ICpjbGtfbWdyKQoxNDQ3NDogewoxNDQ3NDogCjE0NDc0OiAgc3RydWN0IGZpeGVkMzFfMzIgcGxs X3JlcTsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgZmJtdWx0X2ZyYWNfdmFsID0gMDsKMTQ0NzQ6ICB1 bnNpZ25lZCBpbnQgZmJtdWx0X2ludF92YWwgPSAwOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgZ2VuZXJpY19yZWdfZ2V0KGNs a19tZ3ItPmJhc2UuY3R4LCAoQ0xLX0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDAw ZiksIDB4MTAsIDB4RkZGRjAwMDBMLCAmZmJtdWx0X2ZyYWNfdmFsKTsKMTQ0NzQ6ICBnZW5lcmlj X3JlZ19nZXQoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50 WzFdICsgMHgwMDBmKSwgMHgwLCAweDAwMDAwMUZGTCwgJmZibXVsdF9pbnRfdmFsKTsKMTQ0NzQ6 IAoxNDQ3NDogIHBsbF9yZXEgPSBkY19maXhwdF9mcm9tX2ludChmYm11bHRfaW50X3ZhbCk7CjE0 NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIHBsbF9yZXEudmFs dWUgfD0gZmJtdWx0X2ZyYWNfdmFsIDw8IDE2OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICBwbGxf cmVxID0gZGNfZml4cHRfbXVsX2ludChwbGxfcmVxLCBjbGtfbWdyLT5kZnNfcmVmX2ZyZXFfa2h6 KTsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIGRjX2ZpeHB0X2Zsb29yKHBsbF9yZXEp OwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiBzdGF0aWMgdm9pZCBybl9kdW1wX2Nsa19yZWdpc3Rl cnNfaW50ZXJuYWwoc3RydWN0IHJuX2Nsa19pbnRlcm5hbCAqaW50ZXJuYWwsIHN0cnVjdCBjbGtf bWdyICpjbGtfbWdyX2Jhc2UpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGNsa19tZ3JfaW50ZXJu YWwgKmNsa19tZ3IgPSAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKShjbGtfbWdyX2Jhc2UpOyBk byB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzIyOSh2b2lkKSBfX2F0dHJpYnV0 ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWluZXJfb2YoKSIp KSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooY2xrX21n cl9iYXNlKSksIHR5cGVvZigoKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICopMCktPmJhc2UpKSAm JiAhX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwg dHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8yMjkoKTsgfSB3aGlsZSAoMCk7 ICgoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKikoX19tcHRyIC0gX19idWlsdGluX29mZnNldG9m KHN0cnVjdCBjbGtfbWdyX2ludGVybmFsLCBiYXNlKSkpOyB9KTsKMTQ0NzQ6IAoxNDQ3NDogIGlu dGVybmFsLT5DTEsxX0NMSzNfQ1VSUkVOVF9DTlQgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3It PmJhc2UuY3R4LCAoQ0xLX0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA4ZCksIF9f ZnVuY19fKTsKMTQ0NzQ6ICBpbnRlcm5hbC0+Q0xLMV9DTEszX0JZUEFTU19DTlRMID0gZG1fcmVh ZF9yZWdfZnVuYyhjbGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21l bnRbMV0gKyAweDAwNjcpLCBfX2Z1bmNfXyk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnRlcm5hbC0+Q0xL MV9DTEszX0RTX0NOVEwgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3ItPmJhc2UuY3R4LCAoQ0xL X0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA2MCksIF9fZnVuY19fKTsKMTQ0NzQ6 ICBpbnRlcm5hbC0+Q0xLMV9DTEszX0FMTE9XX0RTID0gZG1fcmVhZF9yZWdfZnVuYyhjbGtfbWdy LT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21lbnRbMV0gKyAweDAwNjEpLCBf X2Z1bmNfXyk7CjE0NDc0OiAKMTQ0NzQ6ICBpbnRlcm5hbC0+Q0xLMV9DTEsxX0NVUlJFTlRfQ05U ID0gZG1fcmVhZF9yZWdfZnVuYyhjbGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNl WzBdLnNlZ21lbnRbMV0gKyAweDAwOGIpLCBfX2Z1bmNfXyk7CjE0NDc0OiAgaW50ZXJuYWwtPkNM SzFfQ0xLMV9CWVBBU1NfQ05UTCA9IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgs IChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50WzFdICsgMHgwMDUzKSwgX19mdW5jX18pOwox NDQ3NDogCjE0NDc0OiAgaW50ZXJuYWwtPkNMSzFfQ0xLMl9DVVJSRU5UX0NOVCA9IGRtX3JlYWRf cmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50 WzFdICsgMHgwMDhjKSwgX19mdW5jX18pOwoxNDQ3NDogIGludGVybmFsLT5DTEsxX0NMSzJfQllQ QVNTX0NOVEwgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3ItPmJhc2UuY3R4LCAoQ0xLX0JBU0Uu aW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA1ZCksIF9fZnVuY19fKTsKMTQ0NzQ6IAoxNDQ3 NDogIGludGVybmFsLT5DTEsxX0NMSzBfQ1VSUkVOVF9DTlQgPSBkbV9yZWFkX3JlZ19mdW5jKGNs a19tZ3ItPmJhc2UuY3R4LCAoQ0xLX0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA4 YSksIF9fZnVuY19fKTsKMTQ0NzQ6ICBpbnRlcm5hbC0+Q0xLMV9DTEswX0JZUEFTU19DTlRMID0g ZG1fcmVhZF9yZWdfZnVuYyhjbGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBd LnNlZ21lbnRbMV0gKyAweDAwNDkpLCBfX2Z1bmNfXyk7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6 IAoxNDQ3NDogc3RhdGljIHZvaWQgcm5fZHVtcF9jbGtfcmVnaXN0ZXJzKHN0cnVjdCBjbGtfc3Rh dGVfcmVnaXN0ZXJzX2FuZF9ieXBhc3MgKnJlZ3NfYW5kX2J5cGFzcywKMTQ0NzQ6ICAgc3RydWN0 IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwgc3RydWN0IGNsa19sb2dfaW5mbyAqbG9nX2luZm8pCjE0 NDc0OiB7CjE0NDc0OiAgc3RydWN0IHJuX2Nsa19pbnRlcm5hbCBpbnRlcm5hbCA9IHswfTsKMTQ0 NzQ6ICBjaGFyICpieXBhc3NfY2xrc1s1XSA9IHsiMHgwIERGUyIsICIweDEgUkVGQ0xLIiwgIjB4 MiBFUlJPUiIsICIweDMgNDAwIEZDSCIsICIweDQgNjAwIEZDSCJ9OwoxNDQ3NDogIHVuc2lnbmVk IGludCBjaGFyc19wcmludGVkID0gMDsKMTQ0NzQ6ICB1bnNpZ25lZCBpbnQgcmVtYWluaW5nX2J1 ZmZlciA9IGxvZ19pbmZvLT5idWZTaXplOwoxNDQ3NDogCjE0NDc0OiAgcm5fZHVtcF9jbGtfcmVn aXN0ZXJzX2ludGVybmFsKCZpbnRlcm5hbCwgY2xrX21ncl9iYXNlKTsKMTQ0NzQ6IAoxNDQ3NDog IHJlZ3NfYW5kX2J5cGFzcy0+ZGNmY2xrID0gaW50ZXJuYWwuQ0xLMV9DTEszX0NVUlJFTlRfQ05U IC8gMTA7CjE0NDc0OiAgcmVnc19hbmRfYnlwYXNzLT5kY2ZfZGVlcF9zbGVlcF9kaXZpZGVyID0g aW50ZXJuYWwuQ0xLMV9DTEszX0RTX0NOVEwgLyAxMDsKMTQ0NzQ6ICByZWdzX2FuZF9ieXBhc3Mt PmRjZl9kZWVwX3NsZWVwX2FsbG93ID0gaW50ZXJuYWwuQ0xLMV9DTEszX0FMTE9XX0RTOwoxNDQ3 NDogIHJlZ3NfYW5kX2J5cGFzcy0+ZHByZWZjbGsgPSBpbnRlcm5hbC5DTEsxX0NMSzJfQ1VSUkVO VF9DTlQgLyAxMDsKMTQ0NzQ6ICByZWdzX2FuZF9ieXBhc3MtPmRpc3BjbGsgPSBpbnRlcm5hbC5D TEsxX0NMSzBfQ1VSUkVOVF9DTlQgLyAxMDsKMTQ0NzQ6ICByZWdzX2FuZF9ieXBhc3MtPmRwcGNs ayA9IGludGVybmFsLkNMSzFfQ0xLMV9DVVJSRU5UX0NOVCAvIDEwOwoxNDQ3NDogCjE0NDc0OiAg cmVnc19hbmRfYnlwYXNzLT5kcHBjbGtfYnlwYXNzID0gaW50ZXJuYWwuQ0xLMV9DTEsxX0JZUEFT U19DTlRMICYgMHgwMDA3OwoxNDQ3NDogIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRwcGNsa19ieXBh c3MgPCAwIHx8IHJlZ3NfYW5kX2J5cGFzcy0+ZHBwY2xrX2J5cGFzcyA+IDQpCjE0NDc0OiAgIHJl Z3NfYW5kX2J5cGFzcy0+ZHBwY2xrX2J5cGFzcyA9IDA7CjE0NDc0OiAgcmVnc19hbmRfYnlwYXNz LT5kY2ZjbGtfYnlwYXNzID0gaW50ZXJuYWwuQ0xLMV9DTEszX0JZUEFTU19DTlRMICYgMHgwMDA3 OwoxNDQ3NDogIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRjZmNsa19ieXBhc3MgPCAwIHx8IHJlZ3Nf YW5kX2J5cGFzcy0+ZGNmY2xrX2J5cGFzcyA+IDQpCjE0NDc0OiAgIHJlZ3NfYW5kX2J5cGFzcy0+ ZGNmY2xrX2J5cGFzcyA9IDA7CjE0NDc0OiAgcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrX2J5cGFz cyA9IGludGVybmFsLkNMSzFfQ0xLMF9CWVBBU1NfQ05UTCAmIDB4MDAwNzsKMTQ0NzQ6ICBpZiAo cmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrX2J5cGFzcyA8IDAgfHwgcmVnc19hbmRfYnlwYXNzLT5k aXNwY2xrX2J5cGFzcyA+IDQpCjE0NDc0OiAgIHJlZ3NfYW5kX2J5cGFzcy0+ZGlzcGNsa19ieXBh c3MgPSAwOwoxNDQ3NDogIHJlZ3NfYW5kX2J5cGFzcy0+ZHByZWZjbGtfYnlwYXNzID0gaW50ZXJu YWwuQ0xLMV9DTEsyX0JZUEFTU19DTlRMICYgMHgwMDA3OwoxNDQ3NDogIGlmIChyZWdzX2FuZF9i eXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA8IDAgfHwgcmVnc19hbmRfYnlwYXNzLT5kcHJlZmNsa19i eXBhc3MgPiA0KQoxNDQ3NDogICByZWdzX2FuZF9ieXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA9IDA7 CjE0NDc0OiAKMTQ0NzQ6ICBpZiAobG9nX2luZm8tPmVuYWJsZWQpIHsKMTQ0NzQ6ICAgY2hhcnNf cHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVy LCAiY2xrX3R5cGUsY2xrX3ZhbHVlLGRlZXBzbGVlcF9jbnRsLGRlZXBzbGVlcF9hbGxvdyxieXBh c3NcbiIpOwoxNDQ3NDogICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CjE0NDc0 OiAgICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6 ICAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6IAoxNDQ3NDogICBjaGFy c19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZm ZXIsICJkY2ZjbGssJWQsJWQsJWQsJXNcbiIsCjE0NDc0OiAgICByZWdzX2FuZF9ieXBhc3MtPmRj ZmNsaywKMTQ0NzQ6ICAgIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmX2RlZXBfc2xlZXBfZGl2aWRlciwK MTQ0NzQ6ICAgIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmX2RlZXBfc2xlZXBfYWxsb3csCjE0NDc0OiAg ICBieXBhc3NfY2xrc1soaW50KSByZWdzX2FuZF9ieXBhc3MtPmRjZmNsa19ieXBhc3NdKTsKMTQ0 NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICAqbG9nX2lu Zm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgIGxvZ19pbmZv LT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgY2hhcnNfcHJpbnRlZCA9 IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiZHByZWZj bGssJWQsTi9BLE4vQSwlc1xuIiwKMTQ0NzQ6ICAgIHJlZ3NfYW5kX2J5cGFzcy0+ZHByZWZjbGss CjE0NDc0OiAgICBieXBhc3NfY2xrc1soaW50KSByZWdzX2FuZF9ieXBhc3MtPmRwcmVmY2xrX2J5 cGFzc10pOwoxNDQ3NDogICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CjE0NDc0 OiAgICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6 ICAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6IAoxNDQ3NDogICBjaGFy c19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZm ZXIsICJkaXNwY2xrLCVkLE4vQSxOL0EsJXNcbiIsCjE0NDc0OiAgICByZWdzX2FuZF9ieXBhc3Mt PmRpc3BjbGssCjE0NDc0OiAgICBieXBhc3NfY2xrc1soaW50KSByZWdzX2FuZF9ieXBhc3MtPmRp c3BjbGtfYnlwYXNzXSk7CjE0NDc0OiAgIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRl ZDsKMTQ0NzQ6ICAgKmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVk OwoxNDQ3NDogICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogCjE0NDc0 OiAKMTQ0NzQ6ICAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVm LCByZW1haW5pbmdfYnVmZmVyLCAiU1BMSVRcbiIpOwoxNDQ3NDogICByZW1haW5pbmdfYnVmZmVy IC09IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQg Kz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRl ZDsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3Vu dChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgInJlZ19uYW1lLHZhbHVlLGNsa190 eXBlXG4iKTsKMTQ0NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwoxNDQ3 NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0 OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgY2hh cnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVm ZmVyLCAiQ0xLMV9DTEszX0NVUlJFTlRfQ05ULCVkLGRjZmNsa1xuIiwKMTQ0NzQ6ICAgICBpbnRl cm5hbC5DTEsxX0NMSzNfQ1VSUkVOVF9DTlQpOwoxNDQ3NDogICByZW1haW5pbmdfYnVmZmVyIC09 IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0g Y2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsK MTQ0NzQ6IAoxNDQ3NDogICBjaGFyc19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8t PnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJDTEsxX0NMSzNfRFNfQ05UTCwlZCxkY2ZfZGVlcF9z bGVlcF9kaXZpZGVyXG4iLAoxNDQ3NDogICAgICBpbnRlcm5hbC5DTEsxX0NMSzNfRFNfQ05UTCk7 CjE0NDc0OiAgIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgKmxv Z19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICBsb2df aW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogCjE0NDc0OiAgIGNoYXJzX3ByaW50 ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNM SzFfQ0xLM19BTExPV19EUywlZCxkY2ZfZGVlcF9zbGVlcF9hbGxvd1xuIiwKMTQ0NzQ6ICAgICAg aW50ZXJuYWwuQ0xLMV9DTEszX0FMTE9XX0RTKTsKMTQ0NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAt PSBjaGFyc19wcmludGVkOwoxNDQ3NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9 IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7 CjE0NDc0OiAKMTQ0NzQ6ICAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZv LT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiQ0xLMV9DTEsyX0NVUlJFTlRfQ05ULCVkLGRwcmVm Y2xrXG4iLAoxNDQ3NDogICAgICBpbnRlcm5hbC5DTEsxX0NMSzJfQ1VSUkVOVF9DTlQpOwoxNDQ3 NDogICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgICpsb2dfaW5m by0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgbG9nX2luZm8t PnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6IAoxNDQ3NDogICBjaGFyc19wcmludGVkID0g c25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJDTEsxX0NM SzBfQ1VSUkVOVF9DTlQsJWQsZGlzcGNsa1xuIiwKMTQ0NzQ6ICAgICAgaW50ZXJuYWwuQ0xLMV9D TEswX0NVUlJFTlRfQ05UKTsKMTQ0NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmlu dGVkOwoxNDQ3NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50 ZWQ7CjE0NDc0OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAKMTQ0 NzQ6ICAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1h aW5pbmdfYnVmZmVyLCAiQ0xLMV9DTEsxX0NVUlJFTlRfQ05ULCVkLGRwcGNsa1xuIiwKMTQ0NzQ6 ICAgICAgaW50ZXJuYWwuQ0xLMV9DTEsxX0NVUlJFTlRfQ05UKTsKMTQ0NzQ6ICAgcmVtYWluaW5n X2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19w cmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJz X3ByaW50ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50 KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiQ0xLMV9DTEszX0JZUEFTU19DTlRM LCVkLGRjZmNsa19ieXBhc3NcbiIsCjE0NDc0OiAgICAgIGludGVybmFsLkNMSzFfQ0xLM19CWVBB U1NfQ05UTCk7CjE0NDc0OiAgIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKMTQ0 NzQ6ICAgKmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwoxNDQ3 NDogICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogCjE0NDc0OiAgIGNo YXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1 ZmZlciwgIkNMSzFfQ0xLMl9CWVBBU1NfQ05UTCwlZCxkcHJlZmNsa19ieXBhc3NcbiIsCjE0NDc0 OiAgICAgIGludGVybmFsLkNMSzFfQ0xLMl9CWVBBU1NfQ05UTCk7CjE0NDc0OiAgIHJlbWFpbmlu Z19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgKmxvZ19pbmZvLT5zdW1fY2hhcnNf cHJpbnRlZCArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFy c19wcmludGVkOwoxNDQ3NDogCjE0NDc0OiAgIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3Vu dChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLMF9CWVBBU1NfQ05U TCwlZCxkaXNwY2xrX2J5cGFzc1xuIiwKMTQ0NzQ6ICAgICAgaW50ZXJuYWwuQ0xLMV9DTEswX0JZ UEFTU19DTlRMKTsKMTQ0NzQ6ICAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwox NDQ3NDogICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CjE0 NDc0OiAgIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CjE0NDc0OiAKMTQ0NzQ6ICAg Y2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdf YnVmZmVyLCAiQ0xLMV9DTEsxX0JZUEFTU19DTlRMLCVkLGRwcGNsa19ieXBhc3NcbiIsCjE0NDc0 OiAgICAgIGludGVybmFsLkNMSzFfQ0xLMV9CWVBBU1NfQ05UTCk7CjE0NDc0OiAgIHJlbWFpbmlu Z19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKMTQ0NzQ6ICAgKmxvZ19pbmZvLT5zdW1fY2hhcnNf cHJpbnRlZCArPSBjaGFyc19wcmludGVkOwoxNDQ3NDogICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFy c19wcmludGVkOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiB2b2lk IHJuX2dldF9jbGtfc3RhdGVzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UsIHN0cnVjdCBj bGtfc3RhdGVzICpzKQoxNDQ3NDogewoxNDQ3NDogIHN0cnVjdCBjbGtfc3RhdGVfcmVnaXN0ZXJz X2FuZF9ieXBhc3Mgc2IgPSB7IDAgfTsKMTQ0NzQ6ICBzdHJ1Y3QgY2xrX2xvZ19pbmZvIGxvZ19p bmZvID0geyAwIH07CjE0NDc0OiAKMTQ0NzQ6ICBybl9kdW1wX2Nsa19yZWdpc3RlcnMoJnNiLCBj bGtfbWdyX2Jhc2UsICZsb2dfaW5mbyk7CjE0NDc0OiAKMTQ0NzQ6ICBzLT5kcHJlZmNsa19raHog PSBzYi5kcHJlZmNsayAqIDEwMDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHZvaWQgcm5fZW5h YmxlX3BtZV93YShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlKQoxNDQ3NDogewoxNDQ3NDog IHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyID0gKHsgdm9pZCAqX19tcHRyID0gKHZv aWQgKikoY2xrX21ncl9iYXNlKTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF8zOTQodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0 Y2ggaW4gY29udGFpbmVyX29mKCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0 aWJsZV9wKHR5cGVvZigqKGNsa19tZ3JfYmFzZSkpLCB0eXBlb2YoKChzdHJ1Y3QgY2xrX21ncl9p bnRlcm5hbCAqKTApLT5iYXNlKSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlw ZW9mKCooY2xrX21ncl9iYXNlKSksIHR5cGVvZih2b2lkKSkpKSkgX19jb21waWxldGltZV9hc3Nl cnRfMzk0KCk7IH0gd2hpbGUgKDApOyAoKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICopKF9fbXB0 ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCwgYmFzZSkpKTsg fSk7CjE0NDc0OiAKMTQ0NzQ6ICBybl92Ymlvc19zbXVfZW5hYmxlX3BtZV93YShjbGtfbWdyKTsK MTQ0NzQ6IH0KMTQ0NzQ6IAoxNDQ3NDogdm9pZCBybl9pbml0X2Nsb2NrcyhzdHJ1Y3QgY2xrX21n ciAqY2xrX21ncikKMTQ0NzQ6IHsKMTQ0NzQ6ICBtZW1zZXQoJihjbGtfbWdyLT5jbGtzKSwgMCwg c2l6ZW9mKHN0cnVjdCBkY19jbG9ja3MpKTsKMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmNsa3Mu cF9zdGF0ZV9jaGFuZ2Vfc3VwcG9ydCA9IHRydWU7CjE0NDc0OiAgY2xrX21nci0+Y2xrcy5wcmV2 X3Bfc3RhdGVfY2hhbmdlX3N1cHBvcnQgPSB0cnVlOwoxNDQ3NDogIGNsa19tZ3ItPmNsa3MucHdy X3N0YXRlID0gRENOX1BXUl9TVEFURV9VTktOT1dOOwoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2 b2lkIGJ1aWxkX3dhdGVybWFya19yYW5nZXMoc3RydWN0IGNsa19id19wYXJhbXMgKmJ3X3BhcmFt cywgc3RydWN0IHBwX3NtdV93bV9yYW5nZV9zZXRzICpyYW5nZXMpCjE0NDc0OiB7CjE0NDc0OiAg aW50IGksIG51bV92YWxpZF9zZXRzOwoxNDQ3NDogCjE0NDc0OiAgbnVtX3ZhbGlkX3NldHMgPSAw OwoxNDQ3NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewoxNDQ3NDogCjE0NDc0 OiAgIGlmICghYndfcGFyYW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLnZhbGlkKQoxNDQ3NDogICAg Y29udGludWU7CjE0NDc0OiAKMTQ0NzQ6ICAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFs aWRfc2V0c10ud21faW5zdCA9IGJ3X3BhcmFtcy0+d21fdGFibGUuZW50cmllc1tpXS53bV9pbnN0 OwoxNDQ3NDogICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS53bV90eXBl ID0gYndfcGFyYW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLndtX3R5cGU7CjE0NDc0OiAKMTQ0NzQ6 ICAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFsaWRfc2V0c10ubWluX2ZpbGxfY2xrX21o eiA9IDB4MDsKMTQ0NzQ6ICAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFsaWRfc2V0c10u bWF4X2ZpbGxfY2xrX21oeiA9IDB4RkZGRjsKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIGlmIChy YW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS53bV90eXBlID09IFdNX1RZUEVf UFNUQVRFX0NIRykgewoxNDQ3NDogICAgaWYgKGkgPT0gMCkKMTQ0NzQ6ICAgICByYW5nZXMtPnJl YWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS5taW5fZHJhaW5fY2xrX21oeiA9IDA7CjE0NDc0 OiAgICBlbHNlIHsKMTQ0NzQ6IAoxNDQ3NDogICAgIHJhbmdlcy0+cmVhZGVyX3dtX3NldHNbbnVt X3ZhbGlkX3NldHNdLm1pbl9kcmFpbl9jbGtfbWh6ID0gYndfcGFyYW1zLT5jbGtfdGFibGUuZW50 cmllc1tpIC0gMV0uZGNmY2xrX21oeiArIDE7CjE0NDc0OiAgICB9CjE0NDc0OiAgICByYW5nZXMt PnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS5tYXhfZHJhaW5fY2xrX21oeiA9IGJ3X3Bh cmFtcy0+Y2xrX3RhYmxlLmVudHJpZXNbaV0uZGNmY2xrX21oejsKMTQ0NzQ6IAoxNDQ3NDogICB9 IGVsc2UgewoxNDQ3NDogCjE0NDc0OiAgICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxp ZF9zZXRzXS5taW5fZmlsbF9jbGtfbWh6ID0gMHgwOwoxNDQ3NDogICAgcmFuZ2VzLT5yZWFkZXJf d21fc2V0c1tudW1fdmFsaWRfc2V0c10ubWF4X2ZpbGxfY2xrX21oeiA9IDB4RkZGRjsKMTQ0NzQ6 IAoxNDQ3NDogCjE0NDc0OiAgICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRz IC0gMV0ubWF4X2ZpbGxfY2xrX21oeiA9IDB4RkZGRjsKMTQ0NzQ6ICAgfQoxNDQ3NDogICBudW1f dmFsaWRfc2V0cysrOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogICh7IGludCBfX3JldF93YXJu X29uID0gISEoIShudW1fdmFsaWRfc2V0cyAhPSAwKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpc dCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3 XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2Fk ZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4i ICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQj IGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDog ImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2Rj bjIxL3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDQ0NiksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkp KSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2 b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIg Ii5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDgpKTsgfSk7 IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7 CjE0NDc0OiAgcmFuZ2VzLT5udW1fcmVhZGVyX3dtX3NldHMgPSBudW1fdmFsaWRfc2V0czsKMTQ0 NzQ6IAoxNDQ3NDogCjE0NDc0OiAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1swXS5taW5fZHJhaW5f Y2xrX21oeiA9IDB4MDsKMTQ0NzQ6ICByYW5nZXMtPnJlYWRlcl93bV9zZXRzWzBdLm1pbl9maWxs X2Nsa19taHogPSAweDA7CjE0NDc0OiAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tyYW5nZXMtPm51 bV9yZWFkZXJfd21fc2V0cyAtIDFdLm1heF9kcmFpbl9jbGtfbWh6ID0gMHhGRkZGOwoxNDQ3NDog IHJhbmdlcy0+cmVhZGVyX3dtX3NldHNbcmFuZ2VzLT5udW1fcmVhZGVyX3dtX3NldHMgLSAxXS5t YXhfZmlsbF9jbGtfbWh6ID0gMHhGRkZGOwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6ICByYW5nZXMt Pm51bV93cml0ZXJfd21fc2V0cyA9IDE7CjE0NDc0OiAgcmFuZ2VzLT53cml0ZXJfd21fc2V0c1sw XS53bV9pbnN0ID0gMDsKMTQ0NzQ6ICByYW5nZXMtPndyaXRlcl93bV9zZXRzWzBdLm1pbl9maWxs X2Nsa19taHogPSAweDA7CjE0NDc0OiAgcmFuZ2VzLT53cml0ZXJfd21fc2V0c1swXS5tYXhfZmls bF9jbGtfbWh6ID0gMHhGRkZGOwoxNDQ3NDogIHJhbmdlcy0+d3JpdGVyX3dtX3NldHNbMF0ubWlu X2RyYWluX2Nsa19taHogPSAweDA7CjE0NDc0OiAgcmFuZ2VzLT53cml0ZXJfd21fc2V0c1swXS5t YXhfZHJhaW5fY2xrX21oeiA9IDB4RkZGRjsKMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgdm9pZCBybl9ub3RpZnlfd21fcmFuZ2VzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdy X2Jhc2UpCjE0NDc0OiB7CjE0NDc0OiAgc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgKmRlYnVnID0g JmNsa19tZ3JfYmFzZS0+Y3R4LT5kYy0+ZGVidWc7CjE0NDc0OiAgc3RydWN0IHBwX3NtdV93bV9y YW5nZV9zZXRzIHJhbmdlcyA9IHswfTsKMTQ0NzQ6ICBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAq Y2xrX21nciA9ICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICopKGNsa19tZ3JfYmFzZSk7IGRvIHsg ZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfNDY5KHZvaWQpIF9fYXR0cmlidXRlX18o KF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsg aWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihjbGtfbWdyX2Jh c2UpKSwgdHlwZW9mKCgoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKikwKS0+YmFzZSkpICYmICFf X2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKGNsa19tZ3JfYmFzZSkpLCB0eXBl b2Yodm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzQ2OSgpOyB9IHdoaWxlICgwKTsgKChz dHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3Ry dWN0IGNsa19tZ3JfaW50ZXJuYWwsIGJhc2UpKSk7IH0pOwoxNDQ3NDogIHN0cnVjdCBwcF9zbXVf ZnVuY3MgKnBwX3NtdSA9IGNsa19tZ3ItPnBwX3NtdTsKMTQ0NzQ6IAoxNDQ3NDogIGlmICghZGVi dWctPmRpc2FibGVfcHBsaWJfd21fcmFuZ2UpIHsKMTQ0NzQ6ICAgYnVpbGRfd2F0ZXJtYXJrX3Jh bmdlcyhjbGtfbWdyX2Jhc2UtPmJ3X3BhcmFtcywgJnJhbmdlcyk7CjE0NDc0OiAKMTQ0NzQ6IAox NDQ3NDogICBpZiAocHBfc211ICYmIHBwX3NtdS0+cm5fZnVuY3Muc2V0X3dtX3JhbmdlcykKMTQ0 NzQ6ICAgIHBwX3NtdS0+cm5fZnVuY3Muc2V0X3dtX3JhbmdlcygmcHBfc211LT5ybl9mdW5jcy5w cF9zbXUsICZyYW5nZXMpOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0 OiBzdGF0aWMgYm9vbCBybl9hcmVfY2xvY2tfc3RhdGVzX2VxdWFsKHN0cnVjdCBkY19jbG9ja3Mg KmEsCjE0NDc0OiAgIHN0cnVjdCBkY19jbG9ja3MgKmIpCjE0NDc0OiB7CjE0NDc0OiAgaWYgKGEt PmRpc3BjbGtfa2h6ICE9IGItPmRpc3BjbGtfa2h6KQoxNDQ3NDogICByZXR1cm4gZmFsc2U7CjE0 NDc0OiAgZWxzZSBpZiAoYS0+ZHBwY2xrX2toeiAhPSBiLT5kcHBjbGtfa2h6KQoxNDQ3NDogICBy ZXR1cm4gZmFsc2U7CjE0NDc0OiAgZWxzZSBpZiAoYS0+ZGNmY2xrX2toeiAhPSBiLT5kY2ZjbGtf a2h6KQoxNDQ3NDogICByZXR1cm4gZmFsc2U7CjE0NDc0OiAgZWxzZSBpZiAoYS0+ZGNmY2xrX2Rl ZXBfc2xlZXBfa2h6ICE9IGItPmRjZmNsa19kZWVwX3NsZWVwX2toeikKMTQ0NzQ6ICAgcmV0dXJu IGZhbHNlOwoxNDQ3NDogCjE0NDc0OiAgcmV0dXJuIHRydWU7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0 NzQ6IAoxNDQ3NDogc3RhdGljIHN0cnVjdCBjbGtfbWdyX2Z1bmNzIGRjbjIxX2Z1bmNzID0gewox NDQ3NDogIC5nZXRfZHBfcmVmX2Nsa19mcmVxdWVuY3kgPSBkY2UxMl9nZXRfZHBfcmVmX2ZyZXFf a2h6LAoxNDQ3NDogIC51cGRhdGVfY2xvY2tzID0gcm5fdXBkYXRlX2Nsb2NrcywKMTQ0NzQ6ICAu aW5pdF9jbG9ja3MgPSBybl9pbml0X2Nsb2NrcywKMTQ0NzQ6ICAuZW5hYmxlX3BtZV93YSA9IHJu X2VuYWJsZV9wbWVfd2EsCjE0NDc0OiAgLmFyZV9jbG9ja19zdGF0ZXNfZXF1YWwgPSBybl9hcmVf Y2xvY2tfc3RhdGVzX2VxdWFsLAoxNDQ3NDogIC5ub3RpZnlfd21fcmFuZ2VzID0gcm5fbm90aWZ5 X3dtX3JhbmdlcwoxNDQ3NDogfTsKMTQ0NzQ6IAoxNDQ3NDogc3RydWN0IGNsa19id19wYXJhbXMg cm5fYndfcGFyYW1zID0gewoxNDQ3NDogIC52cmFtX3R5cGUgPSBEZHI0TWVtVHlwZSwKMTQ0NzQ6 ICAubnVtX2NoYW5uZWxzID0gMSwKMTQ0NzQ6ICAuY2xrX3RhYmxlID0gewoxNDQ3NDogICAuZW50 cmllcyA9IHsKMTQ0NzQ6ICAgIHsKMTQ0NzQ6ICAgICAudm9sdGFnZSA9IDAsCjE0NDc0OiAgICAg LmRjZmNsa19taHogPSA0MDAsCjE0NDc0OiAgICAgLmZjbGtfbWh6ID0gNDAwLAoxNDQ3NDogICAg IC5tZW1jbGtfbWh6ID0gODAwLAoxNDQ3NDogICAgIC5zb2NjbGtfbWh6ID0gMCwKMTQ0NzQ6ICAg IH0sCjE0NDc0OiAgICB7CjE0NDc0OiAgICAgLnZvbHRhZ2UgPSAwLAoxNDQ3NDogICAgIC5kY2Zj bGtfbWh6ID0gNDgzLAoxNDQ3NDogICAgIC5mY2xrX21oeiA9IDgwMCwKMTQ0NzQ6ICAgICAubWVt Y2xrX21oeiA9IDE2MDAsCjE0NDc0OiAgICAgLnNvY2Nsa19taHogPSAwLAoxNDQ3NDogICAgfSwK MTQ0NzQ6ICAgIHsKMTQ0NzQ6ICAgICAudm9sdGFnZSA9IDAsCjE0NDc0OiAgICAgLmRjZmNsa19t aHogPSA2MDIsCjE0NDc0OiAgICAgLmZjbGtfbWh6ID0gMTA2NywKMTQ0NzQ6ICAgICAubWVtY2xr X21oeiA9IDEwNjcsCjE0NDc0OiAgICAgLnNvY2Nsa19taHogPSAwLAoxNDQ3NDogICAgfSwKMTQ0 NzQ6ICAgIHsKMTQ0NzQ6ICAgICAudm9sdGFnZSA9IDAsCjE0NDc0OiAgICAgLmRjZmNsa19taHog PSA3MzgsCjE0NDc0OiAgICAgLmZjbGtfbWh6ID0gMTMzMywKMTQ0NzQ6ICAgICAubWVtY2xrX21o eiA9IDE2MDAsCjE0NDc0OiAgICAgLnNvY2Nsa19taHogPSAwLAoxNDQ3NDogICAgfSwKMTQ0NzQ6 ICAgfSwKMTQ0NzQ6IAoxNDQ3NDogICAubnVtX2VudHJpZXMgPSA0LAoxNDQ3NDogIH0sCjE0NDc0 OiAKMTQ0NzQ6IH07CjE0NDc0OiAKMTQ0NzQ6IHN0cnVjdCB3bV90YWJsZSBkZHI0X3dtX3RhYmxl ID0gewoxNDQ3NDogIC5lbnRyaWVzID0gewoxNDQ3NDogICB7CjE0NDc0OiAgICAud21faW5zdCA9 IDAsCjE0NDc0OiAgICAud21fdHlwZSA9IFdNX1RZUEVfUFNUQVRFX0NIRywKMTQ0NzQ6ICAgIC5w c3RhdGVfbGF0ZW5jeV91cyA9IDExLjcyLAoxNDQ3NDogICAgLnNyX2V4aXRfdGltZV91cyA9IDYu MDksCjE0NDc0OiAgICAuc3JfZW50ZXJfcGx1c19leGl0X3RpbWVfdXMgPSA3LjE0LAoxNDQ3NDog ICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3NDogICAgLndtX2lu c3QgPSAxLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcsCjE0NDc0OiAg ICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS43MiwKMTQ0NzQ6ICAgIC5zcl9leGl0X3RpbWVfdXMg PSAxMC4xMiwKMTQ0NzQ6ICAgIC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9IDExLjQ4LAox NDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3NDogICAg LndtX2luc3QgPSAyLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcsCjE0 NDc0OiAgICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS43MiwKMTQ0NzQ6ICAgIC5zcl9leGl0X3Rp bWVfdXMgPSAxMC4xMiwKMTQ0NzQ6ICAgIC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9IDEx LjQ4LAoxNDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3 NDogICAgLndtX2luc3QgPSAzLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9D SEcsCjE0NDc0OiAgICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS43MiwKMTQ0NzQ6ICAgIC5zcl9l eGl0X3RpbWVfdXMgPSAxMC4xMiwKMTQ0NzQ6ICAgIC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91 cyA9IDExLjQ4LAoxNDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICB9 CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiBzdHJ1Y3Qgd21fdGFibGUgbHBkZHI0X3dtX3RhYmxl ID0gewoxNDQ3NDogIC5lbnRyaWVzID0gewoxNDQ3NDogICB7CjE0NDc0OiAgICAud21faW5zdCA9 IDAsCjE0NDc0OiAgICAud21fdHlwZSA9IFdNX1RZUEVfUFNUQVRFX0NIRywKMTQ0NzQ6ICAgIC5w c3RhdGVfbGF0ZW5jeV91cyA9IDExLjY1MzMzLAoxNDQ3NDogICAgLnNyX2V4aXRfdGltZV91cyA9 IDUuMzIsCjE0NDc0OiAgICAuc3JfZW50ZXJfcGx1c19leGl0X3RpbWVfdXMgPSA2LjM4LAoxNDQ3 NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3NDogICAgLndt X2luc3QgPSAxLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcsCjE0NDc0 OiAgICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKMTQ0NzQ6ICAgIC5zcl9leGl0X3Rp bWVfdXMgPSA5LjgyLAoxNDQ3NDogICAgLnNyX2VudGVyX3BsdXNfZXhpdF90aW1lX3VzID0gMTEu MTk2LAoxNDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAgfSwKMTQ0NzQ6ICAgewoxNDQ3 NDogICAgLndtX2luc3QgPSAyLAoxNDQ3NDogICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9D SEcsCjE0NDc0OiAgICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKMTQ0NzQ6ICAgIC5z cl9leGl0X3RpbWVfdXMgPSA5Ljg5LAoxNDQ3NDogICAgLnNyX2VudGVyX3BsdXNfZXhpdF90aW1l X3VzID0gMTEuMjQsCjE0NDc0OiAgICAudmFsaWQgPSB0cnVlLAoxNDQ3NDogICB9LAoxNDQ3NDog ICB7CjE0NDc0OiAgICAud21faW5zdCA9IDMsCjE0NDc0OiAgICAud21fdHlwZSA9IFdNX1RZUEVf UFNUQVRFX0NIRywKMTQ0NzQ6ICAgIC5wc3RhdGVfbGF0ZW5jeV91cyA9IDExLjY1MzMzLAoxNDQ3 NDogICAgLnNyX2V4aXRfdGltZV91cyA9IDkuNzQ4LAoxNDQ3NDogICAgLnNyX2VudGVyX3BsdXNf ZXhpdF90aW1lX3VzID0gMTEuMTAyLAoxNDQ3NDogICAgLnZhbGlkID0gdHJ1ZSwKMTQ0NzQ6ICAg fSwKMTQ0NzQ6ICB9CjE0NDc0OiB9OwoxNDQ3NDogCjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyB1bnNp Z25lZCBpbnQgZmluZF9kY2ZjbGtfZm9yX3ZvbHRhZ2Uoc3RydWN0IGRwbV9jbG9ja3MgKmNsb2Nr X3RhYmxlLCB1bnNpZ25lZCBpbnQgdm9sdGFnZSkKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgaTsKMTQ0 NzQ6IAoxNDQ3NDogIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKMTQ0NzQ6ICAgaWYgKGNsb2Nr X3RhYmxlLT5EY2ZDbG9ja3NbaV0uVm9sID09IHZvbHRhZ2UpCjE0NDc0OiAgICByZXR1cm4gY2xv Y2tfdGFibGUtPkRjZkNsb2Nrc1tpXS5GcmVxOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogICh7 IGludCBfX3JldF93YXJuX29uID0gISEoISgwKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9f cmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIg Ii5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJc biIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJc biIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJc dC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1 Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImki ICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIx L3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDYzMSksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwg ImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xh dGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5s b25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDkpKTsgfSk7IH0g d2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0 NDc0OiAgcmV0dXJuIDA7CjE0NDc0OiB9CjE0NDc0OiAKMTQ0NzQ6IHN0YXRpYyB2b2lkIHJuX2Ns a19tZ3JfaGVscGVyX3BvcHVsYXRlX2J3X3BhcmFtcyhzdHJ1Y3QgY2xrX2J3X3BhcmFtcyAqYndf cGFyYW1zLCBzdHJ1Y3QgZHBtX2Nsb2NrcyAqY2xvY2tfdGFibGUsIHN0cnVjdCBpbnRlZ3JhdGVk X2luZm8gKmJpb3NfaW5mbykKMTQ0NzQ6IHsKMTQ0NzQ6ICBpbnQgaSwgaiA9IDA7CjE0NDc0OiAK MTQ0NzQ6ICBqID0gLTE7CjE0NDc0OiAKMTQ0NzQ6ICAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEh KCEoNCA8PSA4KSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkg ZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIi ICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAi ICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAi JWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBi dWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIg Ilx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIpLCAi aSIgKDY0MSksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0 IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIu cHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIg Ii5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoNTApKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0 aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogCjE0NDc0OiAgZm9yIChpID0gNCAtIDE7IGkgPj0gMDsgaS0tKSB7CjE0NDc0OiAgIGlmIChj bG9ja190YWJsZS0+RkNsb2Nrc1tpXS5GcmVxICE9IDApIHsKMTQ0NzQ6ICAgIGogPSBpOwoxNDQ3 NDogICAgYnJlYWs7CjE0NDc0OiAgIH0KMTQ0NzQ6ICB9CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoaiA9 PSAtMSkgewoxNDQ3NDogCjE0NDc0OiAgICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgwKSk7 IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFz bSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNo c2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJi IiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6Omxp bmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYisl YzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDY1NCksICJp IiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkp KTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24g LmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9u XG5cdCIgOiA6ICJpIiAoNTEpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEh KF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CjE0NDc0OiAgIHJldHVybjsKMTQ0NzQ6ICB9CjE0NDc0 OiAKMTQ0NzQ6ICBid19wYXJhbXMtPmNsa190YWJsZS5udW1fZW50cmllcyA9IGogKyAxOwoxNDQ3 NDogCjE0NDc0OiAgZm9yIChpID0gMDsgaSA8IGJ3X3BhcmFtcy0+Y2xrX3RhYmxlLm51bV9lbnRy aWVzOyBpKyssIGotLSkgewoxNDQ3NDogICBid19wYXJhbXMtPmNsa190YWJsZS5lbnRyaWVzW2ld LmZjbGtfbWh6ID0gY2xvY2tfdGFibGUtPkZDbG9ja3Nbal0uRnJlcTsKMTQ0NzQ6ICAgYndfcGFy YW1zLT5jbGtfdGFibGUuZW50cmllc1tpXS5tZW1jbGtfbWh6ID0gY2xvY2tfdGFibGUtPk1lbUNs b2Nrc1tqXS5GcmVxOwoxNDQ3NDogICBid19wYXJhbXMtPmNsa190YWJsZS5lbnRyaWVzW2ldLnZv bHRhZ2UgPSBjbG9ja190YWJsZS0+RkNsb2Nrc1tqXS5Wb2w7CjE0NDc0OiAgIGJ3X3BhcmFtcy0+ Y2xrX3RhYmxlLmVudHJpZXNbaV0uZGNmY2xrX21oeiA9IGZpbmRfZGNmY2xrX2Zvcl92b2x0YWdl KGNsb2NrX3RhYmxlLCBjbG9ja190YWJsZS0+RkNsb2Nrc1tqXS5Wb2wpOwoxNDQ3NDogIH0KMTQ0 NzQ6IAoxNDQ3NDogIGJ3X3BhcmFtcy0+dnJhbV90eXBlID0gYmlvc19pbmZvLT5tZW1vcnlfdHlw ZTsKMTQ0NzQ6ICBid19wYXJhbXMtPm51bV9jaGFubmVscyA9IGJpb3NfaW5mby0+bWFfY2hhbm5l bF9udW1iZXI7CjE0NDc0OiAKMTQ0NzQ6ICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CjE0NDc0 OiAgIGJ3X3BhcmFtcy0+d21fdGFibGUuZW50cmllc1tpXS53bV9pbnN0ID0gaTsKMTQ0NzQ6IAox NDQ3NDogICBpZiAoaSA+PSBid19wYXJhbXMtPmNsa190YWJsZS5udW1fZW50cmllcykgewoxNDQ3 NDogICAgYndfcGFyYW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLnZhbGlkID0gZmFsc2U7CjE0NDc0 OiAgICBjb250aW51ZTsKMTQ0NzQ6ICAgfQoxNDQ3NDogCjE0NDc0OiAgIGJ3X3BhcmFtcy0+d21f dGFibGUuZW50cmllc1tpXS53bV90eXBlID0gV01fVFlQRV9QU1RBVEVfQ0hHOwoxNDQ3NDogICBi d19wYXJhbXMtPndtX3RhYmxlLmVudHJpZXNbaV0udmFsaWQgPSB0cnVlOwoxNDQ3NDogIH0KMTQ0 NzQ6IAoxNDQ3NDogIGlmIChid19wYXJhbXMtPnZyYW1fdHlwZSA9PSBMcERkcjRNZW1UeXBlKSB7 CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogCjE0NDc0OiAgIGJ3X3BhcmFtcy0+d21fdGFibGUuZW50 cmllc1szXS5wc3RhdGVfbGF0ZW5jeV91cyA9IDQuOTc3OwoxNDQ3NDogICBid19wYXJhbXMtPndt X3RhYmxlLmVudHJpZXNbM10ud21faW5zdCA9IDM7CjE0NDc0OiAgIGJ3X3BhcmFtcy0+d21fdGFi bGUuZW50cmllc1szXS53bV90eXBlID0gV01fVFlQRV9SRVRSQUlOSU5HOwoxNDQ3NDogICBid19w YXJhbXMtPndtX3RhYmxlLmVudHJpZXNbM10udmFsaWQgPSB0cnVlOwoxNDQ3NDogIH0KMTQ0NzQ6 IAoxNDQ3NDogfQoxNDQ3NDogCjE0NDc0OiB2b2lkIHJuX2Nsa19tZ3JfY29uc3RydWN0KAoxNDQ3 NDogICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAoxNDQ3NDogICBzdHJ1Y3QgY2xrX21ncl9pbnRl cm5hbCAqY2xrX21nciwKMTQ0NzQ6ICAgc3RydWN0IHBwX3NtdV9mdW5jcyAqcHBfc211LAoxNDQ3 NDogICBzdHJ1Y3QgZGNjZyAqZGNjZykKMTQ0NzQ6IHsKMTQ0NzQ6ICBzdHJ1Y3QgZGNfZGVidWdf b3B0aW9ucyAqZGVidWcgPSAmY3R4LT5kYy0+ZGVidWc7CjE0NDc0OiAgc3RydWN0IGRwbV9jbG9j a3MgY2xvY2tfdGFibGUgPSB7IDAgfTsKMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmJhc2UuY3R4 ID0gY3R4OwoxNDQ3NDogIGNsa19tZ3ItPmJhc2UuZnVuY3MgPSAmZGNuMjFfZnVuY3M7CjE0NDc0 OiAKMTQ0NzQ6ICBjbGtfbWdyLT5wcF9zbXUgPSBwcF9zbXU7CjE0NDc0OiAKMTQ0NzQ6ICBjbGtf bWdyLT5kY2NnID0gZGNjZzsKMTQ0NzQ6ICBjbGtfbWdyLT5kZnNfYnlwYXNzX2Rpc3BfY2xrID0g MDsKMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmRwcmVmY2xrX3NzX3BlcmNlbnRhZ2UgPSAwOwox NDQ3NDogIGNsa19tZ3ItPmRwcmVmY2xrX3NzX2RpdmlkZXIgPSAxMDAwOwoxNDQ3NDogIGNsa19t Z3ItPnNzX29uX2RwcmVmY2xrID0gZmFsc2U7CjE0NDc0OiAgY2xrX21nci0+ZGZzX3JlZl9mcmVx X2toeiA9IDQ4MDAwOwoxNDQ3NDogCjE0NDc0OiAgY2xrX21nci0+c211X3ZlciA9IHJuX3ZiaW9z X3NtdV9nZXRfc211X3ZlcnNpb24oY2xrX21ncik7CjE0NDc0OiAKMTQ0NzQ6ICBpZiAoKGN0eC0+ ZGNlX2Vudmlyb25tZW50ID09IERDRV9FTlZfRlBHQV9NQVhJTVVTKSkgewoxNDQ3NDogICBkY24y MV9mdW5jcy51cGRhdGVfY2xvY2tzID0gZGNuMl91cGRhdGVfY2xvY2tzX2ZwZ2E7CjE0NDc0OiAg IGNsa19tZ3ItPmJhc2UuZGVudGlzdF92Y29fZnJlcV9raHogPSAzNjAwMDAwOwoxNDQ3NDogIH0g ZWxzZSB7CjE0NDc0OiAgIHN0cnVjdCBjbGtfbG9nX2luZm8gbG9nX2luZm8gPSB7MH07CjE0NDc0 OiAKMTQ0NzQ6IAoxNDQ3NDogICBjbGtfbWdyLT5iYXNlLmRlbnRpc3RfdmNvX2ZyZXFfa2h6ID0g Z2V0X3Zjb19mcmVxdWVuY3lfZnJvbV9yZWcoY2xrX21ncik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3 NDogICBpZiAoY2xrX21nci0+YmFzZS5kZW50aXN0X3Zjb19mcmVxX2toeiA9PSAwKQoxNDQ3NDog ICAgY2xrX21nci0+YmFzZS5kZW50aXN0X3Zjb19mcmVxX2toeiA9IDM2MDAwMDA7CjE0NDc0OiAK MTQ0NzQ6ICAgaWYgKGN0eC0+ZGNfYmlvcy0+aW50ZWdyYXRlZF9pbmZvLT5tZW1vcnlfdHlwZSA9 PSBMcERkcjRNZW1UeXBlKSB7CjE0NDc0OiAgICBybl9id19wYXJhbXMud21fdGFibGUgPSBscGRk cjRfd21fdGFibGU7CjE0NDc0OiAgIH0gZWxzZSB7CjE0NDc0OiAgICBybl9id19wYXJhbXMud21f dGFibGUgPSBkZHI0X3dtX3RhYmxlOwoxNDQ3NDogICB9CjE0NDc0OiAKMTQ0NzQ6ICAgcm5fZHVt cF9jbGtfcmVnaXN0ZXJzKCZjbGtfbWdyLT5iYXNlLmJvb3Rfc25hcHNob3QsICZjbGtfbWdyLT5i YXNlLCAmbG9nX2luZm8pOwoxNDQ3NDogIH0KMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmJhc2Uu ZHByZWZjbGtfa2h6ID0gNjAwMDAwOwoxNDQ3NDogIGRjZV9jbG9ja19yZWFkX3NzX2luZm8oY2xr X21ncik7CjE0NDc0OiAKMTQ0NzQ6IAoxNDQ3NDogIGNsa19tZ3ItPmJhc2UuYndfcGFyYW1zID0g JnJuX2J3X3BhcmFtczsKMTQ0NzQ6IAoxNDQ3NDogIGlmIChwcF9zbXUgJiYgcHBfc211LT5ybl9m dW5jcy5nZXRfZHBtX2Nsb2NrX3RhYmxlKSB7CjE0NDc0OiAgIHBwX3NtdS0+cm5fZnVuY3MuZ2V0 X2RwbV9jbG9ja190YWJsZSgmcHBfc211LT5ybl9mdW5jcy5wcF9zbXUsICZjbG9ja190YWJsZSk7 CjE0NDc0OiAgIGlmIChjdHgtPmRjX2Jpb3MgJiYgY3R4LT5kY19iaW9zLT5pbnRlZ3JhdGVkX2lu Zm8pIHsKMTQ0NzQ6ICAgIHJuX2Nsa19tZ3JfaGVscGVyX3BvcHVsYXRlX2J3X3BhcmFtcyAoY2xr X21nci0+YmFzZS5id19wYXJhbXMsICZjbG9ja190YWJsZSwgY3R4LT5kY19iaW9zLT5pbnRlZ3Jh dGVkX2luZm8pOwoxNDQ3NDogICB9CjE0NDc0OiAgfQoxNDQ3NDogCjE0NDc0OiAgaWYgKCEoY3R4 LT5kY2VfZW52aXJvbm1lbnQgPT0gRENFX0VOVl9GUEdBX01BWElNVVMpICYmIGNsa19tZ3ItPnNt dV92ZXIgPj0gMHgwMDM3MTUwMCkgewoxNDQ3NDogCjE0NDc0OiAgIHJuX3ZiaW9zX3NtdV9lbmFi bGVfNDhtaHpfdG1kcF9yZWZjbGtfcHdyZHduKGNsa19tZ3IsICFkZWJ1Zy0+ZGlzYWJsZV80OG1o el9wd3Jkd24pOwoxNDQ3NDogIH0KMTQ0NzQ6IH0KPT09IEVORCBHQ0MgRFVNUCA9PT0KbWFrZVs4 XTogKioqIFtzY3JpcHRzL01ha2VmaWxlLmJ1aWxkOjI2ODogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3Iub10gRXJyb3IgMQpt YWtlWzddOiAqKiogW3NjcmlwdHMvTWFrZWZpbGUuYnVpbGQ6NTA1OiBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdV0gRXJyb3IgMgptYWtlWzZdOiAqKiogW3NjcmlwdHMvTWFrZWZpbGUuYnVpbGQ6 NTA1OiBkcml2ZXJzL2dwdS9kcm1dIEVycm9yIDIKbWFrZVs1XTogKioqIFtzY3JpcHRzL01ha2Vm aWxlLmJ1aWxkOjUwNTogZHJpdmVycy9ncHVdIEVycm9yIDIKbWFrZVs0XTogKioqIFtNYWtlZmls ZToxNjgzOiBkcml2ZXJzXSBFcnJvciAyCm1ha2VbM106ICoqKiBbZGViaWFuL3J1bGVzOjY6IGJ1 aWxkXSBFcnJvciAyChtbMW1kcGtnLWJ1aWxkcGFja2FnZTogG1swbRtbMTszMW1lcnJvchtbMG06 IGRlYmlhbi9ydWxlcyBidWlsZCBzdWJwcm9jZXNzIHJldHVybmVkIGV4aXQgc3RhdHVzIDIKbWFr ZVsyXTogKioqIFtzY3JpcHRzL01ha2VmaWxlLnBhY2thZ2U6ODM6IGJpbmRlYi1wa2ddIEVycm9y IDIKbWFrZVsxXTogKioqIFtNYWtlZmlsZToxNDE3OiBiaW5kZWItcGtnXSBFcnJvciAyCm1ha2U6 ICoqKiBbTWFrZWZpbGU6MzI3OiBfX2J1aWxkX29uZV9ieV9vbmVdIEVycm9yIDIK --===============2530410277144048522== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="20200324ccFpC1kD.out" Ly8gVGFyZ2V0OiB4ODZfNjQtbGludXgtZ251Ci8vIENvbmZpZ3VyZWQgd2l0aDogLi4vc3JjL2Nv bmZpZ3VyZSAtdiAtLXdpdGgtcGtndmVyc2lvbj0nRGViaWFuIDEwLTIwMjAwMzIxLTEnIC0td2l0 aC1idWd1cmw9ZmlsZTovLy91c3Ivc2hhcmUvZG9jL2djYy0xMC9SRUFETUUuQnVncyAtLWVuYWJs ZS1sYW5ndWFnZXM9YyxjKyssZ28sYnJpZyxkLGZvcnRyYW4sb2JqYyxvYmotYysrLG0yIC0tcHJl Zml4PS91c3IgLS13aXRoLWdjYy1tYWpvci12ZXJzaW9uLW9ubHkgLS1wcm9ncmFtLXN1ZmZpeD0t MTAgLS1wcm9ncmFtLXByZWZpeD14ODZfNjQtbGludXgtZ251LSAtLWVuYWJsZS1zaGFyZWQgLS1l bmFibGUtbGlua2VyLWJ1aWxkLWlkIC0tbGliZXhlY2Rpcj0vdXNyL2xpYiAtLXdpdGhvdXQtaW5j bHVkZWQtZ2V0dGV4dCAtLWVuYWJsZS10aHJlYWRzPXBvc2l4IC0tbGliZGlyPS91c3IvbGliIC0t ZW5hYmxlLW5scyAtLWVuYWJsZS1jbG9jYWxlPWdudSAtLWVuYWJsZS1saWJzdGRjeHgtZGVidWcg LS1lbmFibGUtbGlic3RkY3h4LXRpbWU9eWVzIC0td2l0aC1kZWZhdWx0LWxpYnN0ZGN4eC1hYmk9 bmV3IC0tZW5hYmxlLWdudS11bmlxdWUtb2JqZWN0IC0tZGlzYWJsZS12dGFibGUtdmVyaWZ5IC0t ZW5hYmxlLXBsdWdpbiAtLWVuYWJsZS1kZWZhdWx0LXBpZSAtLXdpdGgtc3lzdGVtLXpsaWIgLS13 aXRoLXRhcmdldC1zeXN0ZW0temxpYj1hdXRvIC0tZW5hYmxlLW9iamMtZ2M9YXV0byAtLWVuYWJs ZS1tdWx0aWFyY2ggLS1kaXNhYmxlLXdlcnJvciAtLXdpdGgtYXJjaC0zMj1pNjg2IC0td2l0aC1h Ymk9bTY0IC0td2l0aC1tdWx0aWxpYi1saXN0PW0zMixtNjQsbXgzMiAtLWVuYWJsZS1tdWx0aWxp YiAtLXdpdGgtdHVuZT1nZW5lcmljIC0tZW5hYmxlLW9mZmxvYWQtdGFyZ2V0cz1udnB0eC1ub25l LGFtZGdjbi1hbWRoc2EsaHNhIC0td2l0aG91dC1jdWRhLWRyaXZlciAtLWVuYWJsZS1jaGVja2lu Zz1yZWxlYXNlIC0tYnVpbGQ9eDg2XzY0LWxpbnV4LWdudSAtLWhvc3Q9eDg2XzY0LWxpbnV4LWdu dSAtLXRhcmdldD14ODZfNjQtbGludXgtZ251Ci8vIFRocmVhZCBtb2RlbDogcG9zaXgKLy8gU3Vw cG9ydGVkIExUTyBjb21wcmVzc2lvbiBhbGdvcml0aG1zOiB6bGliIHpzdGQKLy8gZ2NjIHZlcnNp b24gMTAuMC4xIDIwMjAwMzIxIChleHBlcmltZW50YWwpIFttYXN0ZXIgcmV2aXNpb24gMTU3MTFl ODM3YjI6YWI2NTg2Y2IwMjQ6NDk3NDk4Yzg3OGQ0ODc1NDMxOGU0ODY0MjhlMmFhMzA4NTQwMjBi OV0gKERlYmlhbiAxMC0yMDIwMDMyMS0xKSAKLy8gCi8vIGR1cmluZyBSVEwgcGFzczogY29tYmlu ZQovLyBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNu MjEvcm5fY2xrX21nci5jOiBJbiBmdW5jdGlvbiDigJhybl91cGRhdGVfY2xvY2tz4oCZOgovLyBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5f Y2xrX21nci5jOjE5MzoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gaXg4Nl9jY19tb2Rl LCBhdCBjb25maWcvaTM4Ni9pMzg2LmM6MTUyODUKLy8gICAxOTMgfCB9Ci8vICAgICAgIHwgXgov LyAweDVkMDZhMiBpeDg2X2NjX21vZGUocnR4X2NvZGUsIHJ0eF9kZWYqLCBydHhfZGVmKikKLy8g CS4uLy4uL3NyYy9nY2MvY29uZmlnL2kzODYvaTM4Ni5jOjE1Mjg1Ci8vIDB4MTI3OGRlMiBzaW1w bGlmeV9zZXQKLy8gCS4uLy4uL3NyYy9nY2MvY29tYmluZS5jOjY5MzgKLy8gMHgxMjdjNDZhIHN1 YnN0Ci8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzo1NzE5Ci8vIDB4MTI3YzVmYyBzdWJzdAov LyAJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6NTU4MQovLyAweDEyN2U3YzkgdHJ5X2NvbWJpbmUK Ly8gCS4uLy4uL3NyYy9nY2MvY29tYmluZS5jOjM0NzkKLy8gMHgxMjg0NzcyIGNvbWJpbmVfaW5z dHJ1Y3Rpb25zCi8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzoxNDY5Ci8vIDB4MTI4NDc3MiBy ZXN0X29mX2hhbmRsZV9jb21iaW5lCi8vIAkuLi8uLi9zcmMvZ2NjL2NvbWJpbmUuYzoxNTA1OQov LyAweDEyODQ3NzIgZXhlY3V0ZQovLyAJLi4vLi4vc3JjL2djYy9jb21iaW5lLmM6MTUxMDQKLy8g UGxlYXNlIHN1Ym1pdCBhIGZ1bGwgYnVnIHJlcG9ydCwKLy8gd2l0aCBwcmVwcm9jZXNzZWQgc291 cmNlIGlmIGFwcHJvcHJpYXRlLgovLyBQbGVhc2UgaW5jbHVkZSB0aGUgY29tcGxldGUgYmFja3Ry YWNlIHdpdGggYW55IGJ1ZyByZXBvcnQuCi8vIFNlZSA8ZmlsZTovLy91c3Ivc2hhcmUvZG9jL2dj Yy0xMC9SRUFETUUuQnVncz4gZm9yIGluc3RydWN0aW9ucy4KCi8vIC91c3IvbGliL2djYy94ODZf NjQtbGludXgtZ251LzEwL2NjMSAtcXVpZXQgLW5vc3RkaW5jIC1JIC4vYXJjaC94ODYvaW5jbHVk ZSAtSSAuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkIC1JIC4vaW5jbHVkZSAtSSAuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaSAtSSAuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkgLUkg Li9pbmNsdWRlL3VhcGkgLUkgLi9pbmNsdWRlL2dlbmVyYXRlZC91YXBpIC1JIC4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vcG93ZXJwbGF5L2luYy8gLUkgLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9pbmNsdWRlL2FzaWNfcmVnIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vaW5jbHVkZSAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL3Bvd2Vy cGxheS9zbXVtZ3IgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9wb3dlcnBsYXkv aHdtZ3IgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy8g LUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9odyAtSSAu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nciAtSSAuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvbW9kdWxlcy9pbmMgLUkgLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L21vZHVsZXMvZnJlZXN5bmMgLUkgLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L21vZHVsZXMvY29sb3IgLUkgLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L21vZHVsZXMvaW5mb19wYWNrZXQg LUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L21vZHVsZXMvcG93ZXIg LUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RtdWIvaW5jIC1JIC4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYyAtSSAuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXNpY19yZWcgLUkgLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9pbmNsdWRlIC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v YW1kZ3B1IC1JIC4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vcG93ZXJwbGF5L2luYyAt SSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2FjcC9pbmNsdWRlIC1JIC4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheSAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZSAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMgLUkgLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2FtZGdwdV9kbSAtSSAuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2FtZGtmZCAtaW11 bHRpYXJjaCB4ODZfNjQtbGludXgtZ251IC1EIF9fS0VSTkVMX18gLUQgQ09ORklHX0FTX0NGST0x IC1EIENPTkZJR19BU19DRklfU0lHTkFMX0ZSQU1FPTEgLUQgQ09ORklHX0FTX0NGSV9TRUNUSU9O Uz0xIC1EIENPTkZJR19BU19TU1NFMz0xIC1EIENPTkZJR19BU19BVlg9MSAtRCBDT05GSUdfQVNf QVZYMj0xIC1EIENPTkZJR19BU19BVlg1MTI9MSAtRCBDT05GSUdfQVNfU0hBMV9OST0xIC1EIENP TkZJR19BU19TSEEyNTZfTkk9MSAtRCBDT05GSUdfQVNfQURYPTEgLUQgQ0NfVVNJTkdfRkVOVFJZ IC1EIEJVSUxEX0ZFQVRVUkVfVElNSU5HX1NZTkM9MCAtRCBNT0RVTEUgLUQgS0JVSUxEX0JBU0VO QU1FPSJybl9jbGtfbWdyIiAtRCBLQlVJTERfTU9ETkFNRT0iYW1kZ3B1IiAtaXN5c3RlbSAvdXNy L2xpYi9nY2MveDg2XzY0LWxpbnV4LWdudS8xMC9pbmNsdWRlIC1pbmNsdWRlIC4vaW5jbHVkZS9s aW51eC9rY29uZmlnLmggLWluY2x1ZGUgLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgg LU1EIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24y MS8ucm5fY2xrX21nci5vLmQgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyAtcXVpZXQgLWR1bXBiYXNlIHJuX2Nsa19tZ3Iu YyAtbW5vLXNzZSAtbW5vLW1teCAtbW5vLXNzZTIgLW1uby0zZG5vdyAtbW5vLWF2eCAtbTY0IC1t bm8tODAzODcgLW1uby1mcC1yZXQtaW4tMzg3IC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMg LW1za2lwLXJheC1zZXR1cCAtbWFyY2g9azggLW1uby1yZWQtem9uZSAtbWNtb2RlbD1rZXJuZWwg LW1pbmRpcmVjdC1icmFuY2g9dGh1bmstZXh0ZXJuIC1taW5kaXJlY3QtYnJhbmNoLXJlZ2lzdGVy IC1tcmVjb3JkLW1jb3VudCAtbWZlbnRyeSAtYXV4YmFzZS1zdHJpcCBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5vIC1PMiAt V2FsbCAtV3VuZGVmIC1XZXJyb3I9c3RyaWN0LXByb3RvdHlwZXMgLVduby10cmlncmFwaHMgLVdl cnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV2Vycm9yPWltcGxpY2l0LWludCAt V25vLWZvcm1hdC1zZWN1cml0eSAtV25vLXNpZ24tY29tcGFyZSAtV25vLWZyYW1lLWFkZHJlc3Mg LVdmb3JtYXQtdHJ1bmNhdGlvbj0wIC1XZm9ybWF0LW92ZXJmbG93PTAgLVduby1hZGRyZXNzLW9m LXBhY2tlZC1tZW1iZXIgLVdmcmFtZS1sYXJnZXItdGhhbj0yMDQ4IC1Xbm8tdW51c2VkLWJ1dC1z ZXQtdmFyaWFibGUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaD0zIC1XdW51c2VkLWNvbnN0LXZhcmlh YmxlPTAgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVd2bGEgLVduby1wb2ludGVyLXNp Z24gLVduby1zdHJpbmdvcC10cnVuY2F0aW9uIC1XZXJyb3I9ZGF0ZS10aW1lIC1XZXJyb3I9aW5j b21wYXRpYmxlLXBvaW50ZXItdHlwZXMgLVdlcnJvcj1kZXNpZ25hdGVkLWluaXQgLVduby1wYWNr ZWQtbm90LWFsaWduZWQgLXN0ZD1nbnU5MCAtcCAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNv bW1vbiAtZnNob3J0LXdjaGFyIC1mbm8tUElFIC1mYWxpZ24tanVtcHM9MSAtZmFsaWduLWxvb3Bz PTEgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtZm5vLWp1bXAtdGFibGVzIC1mbm8t ZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MgLWZzdGFjay1wcm90ZWN0b3IgLWZuby12YXItdHJh Y2tpbmctYXNzaWdubWVudHMgLWZuby1zdHJpY3Qtb3ZlcmZsb3cgLWZuby1tZXJnZS1hbGwtY29u c3RhbnRzIC1mbWVyZ2UtY29uc3RhbnRzIC1mc3RhY2stY2hlY2s9bm8gLWZjb25zZXJ2ZS1zdGFj ayAtZm1hY3JvLXByZWZpeC1tYXA9Li89IC1mY2YtcHJvdGVjdGlvbj1ub25lIC1vIC0gLWZyYW5k b20tc2VlZD0wIC1mZHVtcC1ub2FkZHIKCiMgMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKIyAxICI8YnVpbHQtaW4+ IgojIDEgIjxjb21tYW5kLWxpbmU+IgojIDEgIi4vLi9pbmNsdWRlL2xpbnV4L2tjb25maWcuaCIg MQoKCgoKIyAxICIuL2luY2x1ZGUvZ2VuZXJhdGVkL2F1dG9jb25mLmgiIDEKIyA2ICIuLy4vaW5j bHVkZS9saW51eC9rY29uZmlnLmgiIDIKIyAxICI8Y29tbWFuZC1saW5lPiIgMgojIDEgIi4vLi9p bmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiIDEKIyA1OSAiLi8uL2luY2x1ZGUvbGludXgv Y29tcGlsZXJfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXJfYXR0cmlidXRl cy5oIiAxCiMgNjAgIi4vLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyX3R5cGVzLmgiIDIKIyA2OCAi Li8uL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvbGludXgv Y29tcGlsZXItZ2NjLmgiIDEKIyA2OSAiLi8uL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMu aCIgMgojIDg1ICIuLy4vaW5jbHVkZS9saW51eC9jb21waWxlcl90eXBlcy5oIgpzdHJ1Y3QgZnRy YWNlX2JyYW5jaF9kYXRhIHsKIGNvbnN0IGNoYXIgKmZ1bmM7CiBjb25zdCBjaGFyICpmaWxlOwog dW5zaWduZWQgbGluZTsKIHVuaW9uIHsKICBzdHJ1Y3QgewogICB1bnNpZ25lZCBsb25nIGNvcnJl Y3Q7CiAgIHVuc2lnbmVkIGxvbmcgaW5jb3JyZWN0OwogIH07CiAgc3RydWN0IHsKICAgdW5zaWdu ZWQgbG9uZyBtaXNzOwogICB1bnNpZ25lZCBsb25nIGhpdDsKICB9OwogIHVuc2lnbmVkIGxvbmcg bWlzc19oaXRbMl07CiB9Owp9OwoKc3RydWN0IGZ0cmFjZV9saWtlbHlfZGF0YSB7CiBzdHJ1Y3Qg ZnRyYWNlX2JyYW5jaF9kYXRhIGRhdGE7CiB1bnNpZ25lZCBsb25nIGNvbnN0YW50Owp9OwojIDEg Ijxjb21tYW5kLWxpbmU+IiAyCiMgMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKIyAyNiAiZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKIyAx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2RjY2cu aCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L2h3L2RjY2cuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZGNfdHlwZXMuaCIgMQojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvZGNfdHlwZXMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvb3NfdHlwZXMuaCIgMQojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvb3NfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvbGludXgva2dkYi5o IiAxCiMgMTYgIi4vaW5jbHVkZS9saW51eC9rZ2RiLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2xp bmthZ2UuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXJfdHlwZXMuaCIgMQoj IDYgIi4vaW5jbHVkZS9saW51eC9saW5rYWdlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvc3Ry aW5naWZ5LmgiIDEKIyA3ICIuL2luY2x1ZGUvbGludXgvbGlua2FnZS5oIiAyCiMgMSAiLi9pbmNs dWRlL2xpbnV4L2V4cG9ydC5oIiAxCiMgMTYgIi4vaW5jbHVkZS9saW51eC9leHBvcnQuaCIKZXh0 ZXJuIHN0cnVjdCBtb2R1bGUgX190aGlzX21vZHVsZTsKIyA0MyAiLi9pbmNsdWRlL2xpbnV4L2V4 cG9ydC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAxCiMgMTgwICIuL2luY2x1 ZGUvbGludXgvY29tcGlsZXIuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC90eXBlcy5oIiAx CgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vdHlwZXMuaCIg MQojIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3R5cGVzLmgiIDEKCgoKCgoKIyAxICIu L2luY2x1ZGUvYXNtLWdlbmVyaWMvaW50LWxsNjQuaCIgMQojIDExICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvaW50LWxsNjQuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9pbnQtbGw2 NC5oIiAxCiMgMTIgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2ludC1sbDY0LmgiCiMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2JpdHNwZXJsb25nLmgiIDEKIyAxMSAiLi9hcmNo L3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2JpdHNwZXJsb25nLmgiCiMgMSAiLi9pbmNsdWRlL2FzbS1n ZW5lcmljL2JpdHNwZXJsb25nLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVy aWMvYml0c3BlcmxvbmcuaCIgMQojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRzcGVybG9u Zy5oIiAyCiMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9iaXRzcGVybG9uZy5oIiAy CiMgMTMgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2ludC1sbDY0LmgiIDIKCgoKCgoKCnR5 cGVkZWYgX19zaWduZWRfXyBjaGFyIF9fczg7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoK dHlwZWRlZiBfX3NpZ25lZF9fIHNob3J0IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9f dTE2OwoKdHlwZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg X191MzI7CgoKX19leHRlbnNpb25fXyB0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIF9fczY0 OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwojIDEyICIu L2luY2x1ZGUvYXNtLWdlbmVyaWMvaW50LWxsNjQuaCIgMgoKCgoKdHlwZWRlZiBfX3M4IHM4Owp0 eXBlZGVmIF9fdTggdTg7CnR5cGVkZWYgX19zMTYgczE2Owp0eXBlZGVmIF9fdTE2IHUxNjsKdHlw ZWRlZiBfX3MzMiBzMzI7CnR5cGVkZWYgX191MzIgdTMyOwp0eXBlZGVmIF9fczY0IHM2NDsKdHlw ZWRlZiBfX3U2NCB1NjQ7CiMgOCAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdHlwZXMuaCIg MgojIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vdHlwZXMuaCIgMgoj IDYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3R5cGVzLmgiIDIKIyAxNCAiLi9pbmNsdWRlL3VhcGkv bGludXgvdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9wb3NpeF90eXBlcy5oIiAx CgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUv dWFwaS9saW51eC9zdGRkZWYuaCIgMQojIDYgIi4vaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMgoK CgoKZW51bSB7CiBmYWxzZSA9IDAsCiB0cnVlID0gMQp9OwojIDYgIi4vaW5jbHVkZS91YXBpL2xp bnV4L3Bvc2l4X3R5cGVzLmgiIDIKIyAyNSAiLi9pbmNsdWRlL3VhcGkvbGludXgvcG9zaXhfdHlw ZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogdW5zaWduZWQgbG9uZyBmZHNfYml0c1sxMDI0IC8gKDgg KiBzaXplb2YobG9uZykpXTsKfSBfX2tlcm5lbF9mZF9zZXQ7CgoKdHlwZWRlZiB2b2lkICgqX19r ZXJuZWxfc2lnaGFuZGxlcl90KShpbnQpOwoKCnR5cGVkZWYgaW50IF9fa2VybmVsX2tleV90Owp0 eXBlZGVmIGludCBfX2tlcm5lbF9tcWRfdDsKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w b3NpeF90eXBlcy5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9wb3Np eF90eXBlc182NC5oIiAxCiMgMTEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9wb3NpeF90 eXBlc182NC5oIgp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX29sZF91aWRfdDsKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tlcm5lbF9vbGRfZ2lkX3Q7CgoKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIF9fa2VybmVsX29sZF9kZXZfdDsKCgojIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5l cmljL3Bvc2l4X3R5cGVzLmgiIDEKIyAxNSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvcG9z aXhfdHlwZXMuaCIKdHlwZWRlZiBsb25nIF9fa2VybmVsX2xvbmdfdDsKdHlwZWRlZiB1bnNpZ25l ZCBsb25nIF9fa2VybmVsX3Vsb25nX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfdWxvbmdfdCBfX2tl cm5lbF9pbm9fdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfbW9kZV90OwoKCgp0 eXBlZGVmIGludCBfX2tlcm5lbF9waWRfdDsKCgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfaXBjX3Bp ZF90OwoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWRfdDsKdHlwZWRlZiB1bnNp Z25lZCBpbnQgX19rZXJuZWxfZ2lkX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9fa2Vy bmVsX3N1c2Vjb25kc190OwoKCgp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90OwoKCgp0eXBl ZGVmIHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf X2tlcm5lbF9naWQzMl90OwojIDcyICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9wb3NpeF90 eXBlcy5oIgp0eXBlZGVmIF9fa2VybmVsX3Vsb25nX3QgX19rZXJuZWxfc2l6ZV90Owp0eXBlZGVm IF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9zc2l6ZV90Owp0eXBlZGVmIF9fa2VybmVsX2xvbmdf dCBfX2tlcm5lbF9wdHJkaWZmX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiBpbnQgdmFsWzJdOwp9 IF9fa2VybmVsX2ZzaWRfdDsKCgoKCgp0eXBlZGVmIF9fa2VybmVsX2xvbmdfdCBfX2tlcm5lbF9v ZmZfdDsKdHlwZWRlZiBsb25nIGxvbmcgX19rZXJuZWxfbG9mZl90Owp0eXBlZGVmIF9fa2VybmVs X2xvbmdfdCBfX2tlcm5lbF9vbGRfdGltZV90OwoKCgp0eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5l bF90aW1lNjRfdDsKdHlwZWRlZiBfX2tlcm5lbF9sb25nX3QgX19rZXJuZWxfY2xvY2tfdDsKdHlw ZWRlZiBpbnQgX19rZXJuZWxfdGltZXJfdDsKdHlwZWRlZiBpbnQgX19rZXJuZWxfY2xvY2tpZF90 Owp0eXBlZGVmIGNoYXIgKiBfX2tlcm5lbF9jYWRkcl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0 IF9fa2VybmVsX3VpZDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX19rZXJuZWxfZ2lkMTZf dDsKIyAxOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3Bvc2l4X3R5cGVzXzY0LmgiIDIK IyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDIKIyAzNyAiLi9pbmNs dWRlL3VhcGkvbGludXgvcG9zaXhfdHlwZXMuaCIgMgojIDE1ICIuL2luY2x1ZGUvdWFwaS9saW51 eC90eXBlcy5oIiAyCiMgMjkgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYg X191MTYgX19sZTE2Owp0eXBlZGVmIF9fdTE2IF9fYmUxNjsKdHlwZWRlZiBfX3UzMiBfX2xlMzI7 CnR5cGVkZWYgX191MzIgX19iZTMyOwp0eXBlZGVmIF9fdTY0IF9fbGU2NDsKdHlwZWRlZiBfX3U2 NCBfX2JlNjQ7Cgp0eXBlZGVmIF9fdTE2IF9fc3VtMTY7CnR5cGVkZWYgX191MzIgX193c3VtOwoj IDUyICIuL2luY2x1ZGUvdWFwaS9saW51eC90eXBlcy5oIgp0eXBlZGVmIHVuc2lnbmVkIF9fcG9s bF90OwojIDE4MSAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDIKIyAxOTYgIi4vaW5jbHVk ZS9saW51eC9jb21waWxlci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9f aW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQp2b2lkIF9fcmVhZF9vbmNlX3NpemUoY29uc3Qgdm9sYXRpbGUgdm9pZCAqcCwgdm9pZCAqcmVz LCBpbnQgc2l6ZSkKewogKHsgc3dpdGNoIChzaXplKSB7IGNhc2UgMTogKihfX3U4ICopcmVzID0g Kih2b2xhdGlsZSBfX3U4ICopcDsgYnJlYWs7IGNhc2UgMjogKihfX3UxNiAqKXJlcyA9ICoodm9s YXRpbGUgX191MTYgKilwOyBicmVhazsgY2FzZSA0OiAqKF9fdTMyICopcmVzID0gKih2b2xhdGls ZSBfX3UzMiAqKXA7IGJyZWFrOyBjYXNlIDg6ICooX191NjQgKilyZXMgPSAqKHZvbGF0aWxlIF9f dTY0ICopcDsgYnJlYWs7IGRlZmF1bHQ6IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVt b3J5Iik7IF9fYnVpbHRpbl9tZW1jcHkoKHZvaWQgKilyZXMsIChjb25zdCB2b2lkICopcCwgc2l6 ZSk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IH0gfSk7Cn0KIyAyMTQg Ii4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQp2b2lkIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjayhjb25zdCB2b2xhdGlsZSB2 b2lkICpwLCB2b2lkICpyZXMsIGludCBzaXplKQp7CiAoeyBzd2l0Y2ggKHNpemUpIHsgY2FzZSAx OiAqKF9fdTggKilyZXMgPSAqKHZvbGF0aWxlIF9fdTggKilwOyBicmVhazsgY2FzZSAyOiAqKF9f dTE2ICopcmVzID0gKih2b2xhdGlsZSBfX3UxNiAqKXA7IGJyZWFrOyBjYXNlIDQ6ICooX191MzIg KilyZXMgPSAqKHZvbGF0aWxlIF9fdTMyICopcDsgYnJlYWs7IGNhc2UgODogKihfX3U2NCAqKXJl cyA9ICoodm9sYXRpbGUgX191NjQgKilwOyBicmVhazsgZGVmYXVsdDogX19hc21fXyBfX3ZvbGF0 aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgX19idWlsdGluX21lbWNweSgodm9pZCAqKXJlcywgKGNv bnN0IHZvaWQgKilwLCBzaXplKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnki KTsgfSB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vX2luc3RydW1l bnRfZnVuY3Rpb25fXykpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X3dyaXRlX29uY2Vfc2l6ZSh2b2xhdGlsZSB2b2lkICpwLCB2b2lkICpyZXMsIGludCBzaXplKQp7 CiBzd2l0Y2ggKHNpemUpIHsKIGNhc2UgMTogKih2b2xhdGlsZSBfX3U4ICopcCA9ICooX191OCAq KXJlczsgYnJlYWs7CiBjYXNlIDI6ICoodm9sYXRpbGUgX191MTYgKilwID0gKihfX3UxNiAqKXJl czsgYnJlYWs7CiBjYXNlIDQ6ICoodm9sYXRpbGUgX191MzIgKilwID0gKihfX3UzMiAqKXJlczsg YnJlYWs7CiBjYXNlIDg6ICoodm9sYXRpbGUgX191NjQgKilwID0gKihfX3U2NCAqKXJlczsgYnJl YWs7CiBkZWZhdWx0OgogIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiAg X19idWlsdGluX21lbWNweSgodm9pZCAqKXAsIChjb25zdCB2b2lkICopcmVzLCBzaXplKTsKICBf X2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogfQp9CiMgMjU2ICIuL2luY2x1 ZGUvbGludXgvY29tcGlsZXIuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JhcnJpZXIu aCIgMQoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgiIDEKCgoK CgoKIyAxICIuL2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMQojIDEzICIuL2luY2x1ZGUvbGludXgv dHlwZXMuaCIKdHlwZWRlZiB1MzIgX19rZXJuZWxfZGV2X3Q7Cgp0eXBlZGVmIF9fa2VybmVsX2Zk X3NldCBmZF9zZXQ7CnR5cGVkZWYgX19rZXJuZWxfZGV2X3QgZGV2X3Q7CnR5cGVkZWYgX19rZXJu ZWxfaW5vX3QgaW5vX3Q7CnR5cGVkZWYgX19rZXJuZWxfbW9kZV90IG1vZGVfdDsKdHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCB1bW9kZV90Owp0eXBlZGVmIHUzMiBubGlua190Owp0eXBlZGVmIF9fa2Vy bmVsX29mZl90IG9mZl90Owp0eXBlZGVmIF9fa2VybmVsX3BpZF90IHBpZF90Owp0eXBlZGVmIF9f a2VybmVsX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2tlcm5lbF9rZXlfdCBrZXlfdDsKdHlw ZWRlZiBfX2tlcm5lbF9zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKdHlwZWRlZiBfX2tlcm5lbF90 aW1lcl90IHRpbWVyX3Q7CnR5cGVkZWYgX19rZXJuZWxfY2xvY2tpZF90IGNsb2NraWRfdDsKdHlw ZWRlZiBfX2tlcm5lbF9tcWRfdCBtcWRfdDsKCnR5cGVkZWYgX0Jvb2wgYm9vbDsKCnR5cGVkZWYg X19rZXJuZWxfdWlkMzJfdCB1aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQzMl90IGdpZF90Owp0 eXBlZGVmIF9fa2VybmVsX3VpZDE2X3QgdWlkMTZfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWQxNl90 IGdpZDE2X3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OwojIDQ2ICIuL2luY2x1 ZGUvbGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9sb2ZmX3QgbG9mZl90OwojIDU1ICIu L2luY2x1ZGUvbGludXgvdHlwZXMuaCIKdHlwZWRlZiBfX2tlcm5lbF9zaXplX3Qgc2l6ZV90OwoK CgoKdHlwZWRlZiBfX2tlcm5lbF9zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVs X3B0cmRpZmZfdCBwdHJkaWZmX3Q7CgoKCgp0eXBlZGVmIF9fa2VybmVsX2Nsb2NrX3QgY2xvY2tf dDsKCgoKCnR5cGVkZWYgX19rZXJuZWxfY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIHVuc2ln bmVkIGNoYXIgdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVfc2hvcnQ7CnR5cGVkZWYg dW5zaWduZWQgaW50IHVfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdV9sb25nOwoKCnR5cGVk ZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0Owp0 eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmc7CgoK Cgp0eXBlZGVmIHU4IHVfaW50OF90Owp0eXBlZGVmIHM4IGludDhfdDsKdHlwZWRlZiB1MTYgdV9p bnQxNl90Owp0eXBlZGVmIHMxNiBpbnQxNl90Owp0eXBlZGVmIHUzMiB1X2ludDMyX3Q7CnR5cGVk ZWYgczMyIGludDMyX3Q7CgoKCnR5cGVkZWYgdTggdWludDhfdDsKdHlwZWRlZiB1MTYgdWludDE2 X3Q7CnR5cGVkZWYgdTMyIHVpbnQzMl90OwoKCnR5cGVkZWYgdTY0IHVpbnQ2NF90Owp0eXBlZGVm IHU2NCB1X2ludDY0X3Q7CnR5cGVkZWYgczY0IGludDY0X3Q7CiMgMTI1ICIuL2luY2x1ZGUvbGlu dXgvdHlwZXMuaCIKdHlwZWRlZiB1NjQgc2VjdG9yX3Q7CnR5cGVkZWYgdTY0IGJsa2NudF90Owoj IDE0MyAiLi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnR5cGVkZWYgdTY0IGRtYV9hZGRyX3Q7CgoK Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBnZnBfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2xhYl9m bGFnc190Owp0eXBlZGVmIHVuc2lnbmVkIGludCBmbW9kZV90OwoKCnR5cGVkZWYgdTY0IHBoeXNf YWRkcl90OwoKCgoKdHlwZWRlZiBwaHlzX2FkZHJfdCByZXNvdXJjZV9zaXplX3Q7CgoKCgoKdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGlycV9od19udW1iZXJfdDsKCnR5cGVkZWYgc3RydWN0IHsKIGlu dCBjb3VudGVyOwp9IGF0b21pY190OwoKCnR5cGVkZWYgc3RydWN0IHsKIHM2NCBjb3VudGVyOwp9 IGF0b21pYzY0X3Q7CgoKc3RydWN0IGxpc3RfaGVhZCB7CiBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0 LCAqcHJldjsKfTsKCnN0cnVjdCBobGlzdF9oZWFkIHsKIHN0cnVjdCBobGlzdF9ub2RlICpmaXJz dDsKfTsKCnN0cnVjdCBobGlzdF9ub2RlIHsKIHN0cnVjdCBobGlzdF9ub2RlICpuZXh0LCAqKnBw cmV2Owp9OwoKc3RydWN0IHVzdGF0IHsKIF9fa2VybmVsX2RhZGRyX3QgZl90ZnJlZTsKIF9fa2Vy bmVsX2lub190IGZfdGlub2RlOwogY2hhciBmX2ZuYW1lWzZdOwogY2hhciBmX2ZwYWNrWzZdOwp9 OwojIDIxNCAiLi9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiCnN0cnVjdCBjYWxsYmFja19oZWFkIHsK IHN0cnVjdCBjYWxsYmFja19oZWFkICpuZXh0Owogdm9pZCAoKmZ1bmMpKHN0cnVjdCBjYWxsYmFj a19oZWFkICpoZWFkKTsKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKHNpemVvZih2b2lkICopKSkp OwoKCnR5cGVkZWYgdm9pZCAoKnJjdV9jYWxsYmFja190KShzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAq aGVhZCk7CnR5cGVkZWYgdm9pZCAoKmNhbGxfcmN1X2Z1bmNfdCkoc3RydWN0IGNhbGxiYWNrX2hl YWQgKmhlYWQsIHJjdV9jYWxsYmFja190IGZ1bmMpOwoKdHlwZWRlZiB2b2lkICgqc3dhcF9mdW5j X3QpKHZvaWQgKmEsIHZvaWQgKmIsIGludCBzaXplKTsKCnR5cGVkZWYgaW50ICgqY21wX3JfZnVu Y190KShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCBjb25zdCB2b2lkICpwcml2KTsKdHlw ZWRlZiBpbnQgKCpjbXBfZnVuY190KShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKIyA4 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgiIDIKCgojIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYXNtLmgiIDEKIyAxODIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXNt LmgiCnJlZ2lzdGVyIHVuc2lnbmVkIGxvbmcgY3VycmVudF9zdGFja19wb2ludGVyIGFzbSgicnNw Iik7CiMgMTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWx0ZXJuYXRpdmUuaCIgMgojIDU4ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLmgiCnN0cnVjdCBhbHRfaW5zdHIgewog czMyIGluc3RyX29mZnNldDsKIHMzMiByZXBsX29mZnNldDsKIHUxNiBjcHVpZDsKIHU4IGluc3Ry bGVuOwogdTggcmVwbGFjZW1lbnRsZW47CiB1OCBwYWRsZW47Cn0gX19hdHRyaWJ1dGVfXygoX19w YWNrZWRfXykpOwoKCgoKCmV4dGVybiBpbnQgYWx0ZXJuYXRpdmVzX3BhdGNoZWQ7CgpleHRlcm4g dm9pZCBhbHRlcm5hdGl2ZV9pbnN0cnVjdGlvbnModm9pZCk7CmV4dGVybiB2b2lkIGFwcGx5X2Fs dGVybmF0aXZlcyhzdHJ1Y3QgYWx0X2luc3RyICpzdGFydCwgc3RydWN0IGFsdF9pbnN0ciAqZW5k KTsKCnN0cnVjdCBtb2R1bGU7CgoKZXh0ZXJuIHZvaWQgYWx0ZXJuYXRpdmVzX3NtcF9tb2R1bGVf YWRkKHN0cnVjdCBtb2R1bGUgKm1vZCwgY2hhciAqbmFtZSwKICAgICB2b2lkICpsb2Nrcywgdm9p ZCAqbG9ja3NfZW5kLAogICAgIHZvaWQgKnRleHQsIHZvaWQgKnRleHRfZW5kKTsKZXh0ZXJuIHZv aWQgYWx0ZXJuYXRpdmVzX3NtcF9tb2R1bGVfZGVsKHN0cnVjdCBtb2R1bGUgKm1vZCk7CmV4dGVy biB2b2lkIGFsdGVybmF0aXZlc19lbmFibGVfc21wKHZvaWQpOwpleHRlcm4gaW50IGFsdGVybmF0 aXZlc190ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpOwpleHRlcm4gYm9vbCBz a2lwX3NtcF9hbHRlcm5hdGl2ZXM7CiMgNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iYXJyaWVy LmgiIDIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL25vcHMuaCIgMQojIDE0MyAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9ub3BzLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyICogY29u c3QgKmlkZWFsX25vcHM7CmV4dGVybiB2b2lkIGFyY2hfaW5pdF9pZGVhbF9ub3BzKHZvaWQpOwoj IDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYmFycmllci5oIiAyCiMgMzYgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYmFycmllci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9f bm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgdW5zaWduZWQgbG9uZyBhcnJheV9pbmRleF9tYXNr X25vc3BlYyh1bnNpZ25lZCBsb25nIGluZGV4LAogIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewogdW5z aWduZWQgbG9uZyBtYXNrOwoKIGFzbSB2b2xhdGlsZSAoImNtcCAlMSwlMjsgc2JiICUwLCUwOyIK ICAgOiI9ciIgKG1hc2spCiAgIDoiZyIoc2l6ZSksInIiIChpbmRleCkKICAgOiJjYyIpOwogcmV0 dXJuIG1hc2s7Cn0KIyA4NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iYXJyaWVyLmgiCiMgMSAi Li9pbmNsdWRlL2FzbS1nZW5lcmljL2JhcnJpZXIuaCIgMQojIDE2ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYmFycmllci5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAxCiMgMTcg Ii4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iYXJyaWVyLmgiIDIKIyA4NiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9iYXJyaWVyLmgiIDIKIyAyNTcgIi4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIiAy CiMgMSAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLWNoZWNrcy5oIiAxCiMgMTYgIi4vaW5jbHVkZS9s aW51eC9rYXNhbi1jaGVja3MuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChfX25v X2luc3RydW1lbnRfZnVuY3Rpb25fXykpIGJvb2wgX19rYXNhbl9jaGVja19yZWFkKGNvbnN0IHZv bGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVkIGludCBzaXplKQp7CiByZXR1cm4gdHJ1ZTsKfQpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkg Ym9vbCBfX2thc2FuX2NoZWNrX3dyaXRlKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVk IGludCBzaXplKQp7CiByZXR1cm4gdHJ1ZTsKfQojIDM0ICIuL2luY2x1ZGUvbGludXgva2FzYW4t Y2hlY2tzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygoX19ub19pbnN0cnVtZW50 X2Z1bmN0aW9uX18pKSBib29sIGthc2FuX2NoZWNrX3JlYWQoY29uc3Qgdm9sYXRpbGUgdm9pZCAq cCwgdW5zaWduZWQgaW50IHNpemUpCnsKIHJldHVybiB0cnVlOwp9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygoX19ub19pbnN0cnVtZW50X2Z1bmN0aW9uX18pKSBib29sIGthc2FuX2No ZWNrX3dyaXRlKGNvbnN0IHZvbGF0aWxlIHZvaWQgKnAsIHVuc2lnbmVkIGludCBzaXplKQp7CiBy ZXR1cm4gdHJ1ZTsKfQojIDI1OCAiLi9pbmNsdWRlL2xpbnV4L2NvbXBpbGVyLmgiIDIKIyAyNzcg Ii4vaW5jbHVkZS9saW51eC9jb21waWxlci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKF9fbm9faW5zdHJ1bWVudF9mdW5jdGlvbl9fKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQp1bnNpZ25lZCBsb25nIHJlYWRfd29yZF9hdF9hX3RpbWUoY29uc3Qgdm9pZCAq YWRkcikKewoga2FzYW5fY2hlY2tfcmVhZChhZGRyLCAxKTsKIHJldHVybiAqKHVuc2lnbmVkIGxv bmcgKilhZGRyOwp9CiMgMzA4ICIuL2luY2x1ZGUvbGludXgvY29tcGlsZXIuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChfX25vX2luc3RydW1lbnRfZnVuY3Rpb25fXykpIHZvaWQg Km9mZnNldF90b19wdHIoY29uc3QgaW50ICpvZmYpCnsKIHJldHVybiAodm9pZCAqKSgodW5zaWdu ZWQgbG9uZylvZmYgKyAqb2ZmKTsKfQojIDQ0ICIuL2luY2x1ZGUvbGludXgvZXhwb3J0LmgiIDIK IyA2MCAiLi9pbmNsdWRlL2xpbnV4L2V4cG9ydC5oIgpzdHJ1Y3Qga2VybmVsX3N5bWJvbCB7CiBp bnQgdmFsdWVfb2Zmc2V0OwogaW50IG5hbWVfb2Zmc2V0OwogaW50IG5hbWVzcGFjZV9vZmZzZXQ7 Cn07CiMgOCAiLi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vbGlua2FnZS5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L2xpbmthZ2UuaCIgMgoj IDE3ICIuL2luY2x1ZGUvbGludXgva2dkYi5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2luaXQu aCIgMQojIDExNiAiLi9pbmNsdWRlL2xpbnV4L2luaXQuaCIKdHlwZWRlZiBpbnQgKCppbml0Y2Fs bF90KSh2b2lkKTsKdHlwZWRlZiB2b2lkICgqZXhpdGNhbGxfdCkodm9pZCk7CgoKdHlwZWRlZiBp bnQgaW5pdGNhbGxfZW50cnlfdDsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGluaXRjYWxsX3QgaW5pdGNhbGxfZnJvbV9lbnRyeShpbml0 Y2FsbF9lbnRyeV90ICplbnRyeSkKewogcmV0dXJuIG9mZnNldF90b19wdHIoZW50cnkpOwp9CiMg MTM1ICIuL2luY2x1ZGUvbGludXgvaW5pdC5oIgpleHRlcm4gaW5pdGNhbGxfZW50cnlfdCBfX2Nv bl9pbml0Y2FsbF9zdGFydFtdLCBfX2Nvbl9pbml0Y2FsbF9lbmRbXTsKCgp0eXBlZGVmIHZvaWQg KCpjdG9yX2ZuX3QpKHZvaWQpOwoKc3RydWN0IGZpbGVfc3lzdGVtX3R5cGU7CgoKZXh0ZXJuIGlu dCBkb19vbmVfaW5pdGNhbGwoaW5pdGNhbGxfdCBmbik7CmV4dGVybiBjaGFyIF9fYXR0cmlidXRl X18oKF9fc2VjdGlvbl9fKCIuaW5pdC5kYXRhIikpKSBib290X2NvbW1hbmRfbGluZVtdOwpleHRl cm4gY2hhciAqc2F2ZWRfY29tbWFuZF9saW5lOwpleHRlcm4gdW5zaWduZWQgaW50IHJlc2V0X2Rl dmljZXM7CgoKdm9pZCBzZXR1cF9hcmNoKGNoYXIgKiopOwp2b2lkIHByZXBhcmVfbmFtZXNwYWNl KHZvaWQpOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBf X2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIGluaXRfcm9vdGZzKHZvaWQpOwpleHRlcm4gc3RydWN0 IGZpbGVfc3lzdGVtX3R5cGUgcm9vdGZzX2ZzX3R5cGU7CgoKZXh0ZXJuIGJvb2wgcm9kYXRhX2Vu YWJsZWQ7CgoKdm9pZCBtYXJrX3JvZGF0YV9ybyh2b2lkKTsKCgpleHRlcm4gdm9pZCAoKmxhdGVf dGltZV9pbml0KSh2b2lkKTsKCmV4dGVybiBib29sIGluaXRjYWxsX2RlYnVnOwojIDE4ICIuL2lu Y2x1ZGUvbGludXgva2dkYi5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy5oIiAxCgoK CgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMQoKCgoKCgoKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2NtcHhjaGcuaCIgMQoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIiAxCgoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3JlcXVpcmVkLWZlYXR1cmVzLmgiIDEKIyA3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2Nw dWZlYXR1cmVzLmgiIDIKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2Rpc2FibGVkLWZl YXR1cmVzLmgiIDEKIyAxMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlcy5oIiAy CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgiIDIKCgoKCgoKZXh0ZXJuIHZv aWQgX194Y2hnX3dyb25nX3NpemUodm9pZCkKIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQmFk IGFyZ3VtZW50IHNpemUgZm9yIHhjaGciKSkpOwpleHRlcm4gdm9pZCBfX2NtcHhjaGdfd3Jvbmdf c2l6ZSh2b2lkKQogX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJCYWQgYXJndW1lbnQgc2l6ZSBm b3IgY21weGNoZyIpKSk7CmV4dGVybiB2b2lkIF9feGFkZF93cm9uZ19zaXplKHZvaWQpCiBfX2F0 dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJhZCBhcmd1bWVudCBzaXplIGZvciB4YWRkIikpKTsKZXh0 ZXJuIHZvaWQgX19hZGRfd3Jvbmdfc2l6ZSh2b2lkKQogX19hdHRyaWJ1dGVfXygoX19lcnJvcl9f KCJCYWQgYXJndW1lbnQgc2l6ZSBmb3IgYWRkIikpKTsKIyAxNDUgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vY21weGNoZy5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY21weGNoZ182NC5o IiAxCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHNldF82NGJpdCh2b2xhdGlsZSB1NjQgKnB0ciwgdTY0IHZhbCkKewogKnB0 ciA9IHZhbDsKfQojIDE0NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jbXB4Y2hnLmgiIDIKIyA5 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAyCiMgMSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9ybXdjYy5oIiAxCiMgMTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgi IDIKIyAyNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgYXJjaF9hdG9taWNfcmVhZChjb25zdCBhdG9taWNfdCAq dikKewoKCgoKIHJldHVybiAoeyB1bmlvbiB7IHR5cGVvZigodiktPmNvdW50ZXIpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKHYpLT5jb3VudGVy KSwgX191Ll9fYywgc2l6ZW9mKCh2KS0+Y291bnRlcikpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVf bm9jaGVjaygmKCh2KS0+Y291bnRlciksIF9fdS5fX2MsIHNpemVvZigodiktPmNvdW50ZXIpKTsg ZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKfQojIDQxICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg YXJjaF9hdG9taWNfc2V0KGF0b21pY190ICp2LCBpbnQgaSkKewogKHsgdW5pb24geyB0eXBlb2Yo di0+Y291bnRlcikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBl b2Yodi0+Y291bnRlcikpIChpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKHYtPmNvdW50ZXIpLCBf X3UuX19jLCBzaXplb2Yodi0+Y291bnRlcikpOyBfX3UuX192YWw7IH0pOwp9CiMgNTMgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZCBhcmNoX2F0b21pY19hZGQoaW50IGksIGF0b21pY190ICp2KQp7CiBhc20gdm9s YXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5s b25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhZGRs ICUxLCUwIgogICAgICAgOiAiK20iICh2LT5jb3VudGVyKQogICAgICAgOiAiaXIiIChpKSA6ICJt ZW1vcnkiKTsKfQojIDY3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9taWNfc3ViKGludCBpLCBh dG9taWNfdCAqdikKewogYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFc IlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3 MToiICJcblx0bG9jazsgIiAic3VibCAlMSwlMCIKICAgICAgIDogIittIiAodi0+Y291bnRlcikK ICAgICAgIDogImlyIiAoaSkgOiAibWVtb3J5Iik7Cn0KIyA4MyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hdG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGFy Y2hfYXRvbWljX3N1Yl9hbmRfdGVzdChpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiAoeyBi b29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJzdWJsIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25k aXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2Mi ICJlIiAoYykgOiBbdmFsXSAiZXIiIChpKSA6ICJtZW1vcnkiKTsgYzsgfSk7Cn0KIyA5NSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIGFyY2hfYXRvbWljX2luYyhhdG9taWNfdCAqdikKewogYXNtIHZvbGF0aWxl KCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2 NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiaW5jbCAlMCIK ICAgICAgIDogIittIiAodi0+Y291bnRlcikgOjogIm1lbW9yeSIpOwp9CiMgMTA4ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgYXJjaF9hdG9taWNfZGVjKGF0b21pY190ICp2KQp7CiBhc20gdm9sYXRpbGUoIi5w dXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYg LSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJkZWNsICUwIgogICAg ICAgOiAiK20iICh2LT5jb3VudGVyKSA6OiAibWVtb3J5Iik7Cn0KIyAxMjMgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXRvbWljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg Ym9vbCBhcmNoX2F0b21pY19kZWNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpCnsKIHJldHVybiAoeyBi b29sIGM7IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJkZWNsIiAiICIgIiVbdmFyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNv ZGUgIiAiZSIgIiovXG4iIDogW3Zhcl0gIittIiAodi0+Y291bnRlciksICI9QGNjIiAiZSIgKGMp IDogOiAibWVtb3J5Iik7IGM7IH0pOwp9CiMgMTM3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0 b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgYXJjaF9hdG9t aWNfaW5jX2FuZF90ZXN0KGF0b21pY190ICp2KQp7CiByZXR1cm4gKHsgYm9vbCBjOyBhc20gdm9s YXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiaW5j bCIgIiAiICIlW3Zhcl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgImUiICIqL1xu IiA6IFt2YXJdICIrbSIgKHYtPmNvdW50ZXIpLCAiPUBjYyIgImUiIChjKSA6IDogIm1lbW9yeSIp OyBjOyB9KTsKfQojIDE1MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIGFyY2hfYXRvbWljX2FkZF9uZWdhdGl2 ZShpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhZGRsIiAiICVb dmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJzIiAiKi9c biIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2MiICJzIiAoYykgOiBbdmFsXSAiZXIi IChpKSA6ICJtZW1vcnkiKTsgYzsgfSk7Cn0KIyAxNjUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v YXRvbWljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGFyY2hfYXRv bWljX2FkZF9yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQp7CiByZXR1cm4gaSArICh7IF9fdHlw ZW9mX18gKCooKCgmdi0+Y291bnRlcikpKSkgX19yZXQgPSAoKChpKSkpOyBzd2l0Y2ggKHNpemVv ZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0 aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIg Ii5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJiICViMCwgJTFcbiIg OiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAi Y2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9j a3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9u XG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwgJTFcbiIgOiAiK3IiIChfX3Jl dCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7 IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIg Ii5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAi XG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigo KCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA4OiBhc20g dm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4i ICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAi eGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVy KSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVsdDogX194YWRkX3dyb25nX3Np emUoKTsgfSBfX3JldDsgfSk7Cn0KIyAxNzcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWlj LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGFyY2hfYXRvbWljX3N1 Yl9yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQp7CiByZXR1cm4gYXJjaF9hdG9taWNfYWRkX3Jl dHVybigtaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGFy Y2hfYXRvbWljX2ZldGNoX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiAoeyBfX3R5 cGVvZl9fICgqKCgoJnYtPmNvdW50ZXIpKSkpIF9fcmV0ID0gKCgoaSkpKTsgc3dpdGNoIChzaXpl b2YoKigoKCZ2LT5jb3VudGVyKSkpKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2Vj dGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4i ICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAiYiAlYjAsICUxXG4i IDogIitxIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5Iiwg ImNjIik7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xv Y2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlv blxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAidyAldzAsICUxXG4iIDogIityIiAoX19y ZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFr OyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJ4YWRkIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCoo KCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNt IHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxu IiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIg InhhZGQiICJxICVxMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRl cikpKSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGRlZmF1bHQ6IF9feGFkZF93cm9uZ19z aXplKCk7IH0gX19yZXQ7IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IGludCBhcmNoX2F0b21pY19mZXRjaF9zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiByZXR1cm4g KHsgX190eXBlb2ZfXyAoKigoKCZ2LT5jb3VudGVyKSkpKSBfX3JldCA9ICgoKC1pKSkpOyBzd2l0 Y2ggKHNpemVvZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgi LnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcx ZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJiICVi MCwgJTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJt ZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9u IC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5w b3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwgJTFcbiIgOiAi K3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2Mi KTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3Ms XCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4i ICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwg IittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2Fz ZSA4OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJh bGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0 bG9jazsgIiAieGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2 LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVsdDogX194YWRk X3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgaW50IGFyY2hfYXRvbWljX2NtcHhjaGcoYXRvbWljX3QgKnYsIGludCBvbGQsIGlu dCBuZXcpCnsKIHJldHVybiAoeyBfX3R5cGVvZl9fKCooKCZ2LT5jb3VudGVyKSkpIF9fcmV0OyBf X3R5cGVvZl9fKCooKCZ2LT5jb3VudGVyKSkpIF9fb2xkID0gKChvbGQpKTsgX190eXBlb2ZfXygq KCgmdi0+Y291bnRlcikpKSBfX25ldyA9ICgobmV3KSk7IHN3aXRjaCAoKHNpemVvZigqKCZ2LT5j b3VudGVyKSkpKSB7IGNhc2UgMTogeyB2b2xhdGlsZSB1OCAqX19wdHIgPSAodm9sYXRpbGUgdTgg KikoKCZ2LT5jb3VudGVyKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3Ms XCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4i ICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdiICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIitt IiAoKl9fcHRyKSA6ICJxIiAoX19uZXcpLCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7 IH0gY2FzZSAyOiB7IHZvbGF0aWxlIHUxNiAqX19wdHIgPSAodm9sYXRpbGUgdTE2ICopKCgmdi0+ Y291bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJjbXB4Y2hndyAlMiwlMSIgOiAiPWEiIChfX3JldCksICIrbSIgKCpfX3B0 cikgOiAiciIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2Ug NDogeyB2b2xhdGlsZSB1MzIgKl9fcHRyID0gKHZvbGF0aWxlIHUzMiAqKSgoJnYtPmNvdW50ZXIp KTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAiY21weGNoZ2wgJTIsJTEiIDogIj1hIiAoX19yZXQpLCAiK20iICgqX19wdHIpIDogInIi IChfX25ldyksICIwIiAoX19vbGQpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDg6IHsgdm9s YXRpbGUgdTY0ICpfX3B0ciA9ICh2b2xhdGlsZSB1NjQgKikoKCZ2LT5jb3VudGVyKSk7IGFzbSB2 b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAi LmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNt cHhjaGdxICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIittIiAoKl9fcHRyKSA6ICJyIiAoX19uZXcp LCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gZGVmYXVsdDogX19jbXB4Y2hnX3dy b25nX3NpemUoKTsgfSBfX3JldDsgfSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIGJvb2wgYXJjaF9hdG9taWNfdHJ5X2NtcHhjaGcoYXRvbWljX3QgKnYsIGludCAqb2xk LCBpbnQgbmV3KQp7CiByZXR1cm4gKHsgYm9vbCBzdWNjZXNzOyBfX3R5cGVvZl9fKCgoJnYtPmNv dW50ZXIpKSkgX29sZCA9IChfX3R5cGVvZl9fKCgoJnYtPmNvdW50ZXIpKSkpKCgob2xkKSkpOyBf X3R5cGVvZl9fKCooKCgmdi0+Y291bnRlcikpKSkgX19vbGQgPSAqX29sZDsgX190eXBlb2ZfXygq KCgoJnYtPmNvdW50ZXIpKSkpIF9fbmV3ID0gKCgobmV3KSkpOyBzd2l0Y2ggKChzaXplb2YoKigm di0+Y291bnRlcikpKSkgeyBjYXNlIDE6IHsgdm9sYXRpbGUgdTggKl9fcHRyID0gKHZvbGF0aWxl IHU4ICopKCgoJnYtPmNvdW50ZXIpKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBf bG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0 aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdiICVbbmV3XSwgJVtwdHJdIiAiXG5c dC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJ6IiAiKi9cbiIgOiAiPUBjYyIgInoiIChzdWNj ZXNzKSwgW3B0cl0gIittIiAoKl9fcHRyKSwgW29sZF0gIithIiAoX19vbGQpIDogW25ld10gInEi IChfX25ldykgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNhc2UgMjogeyB2b2xhdGlsZSB1MTYgKl9f cHRyID0gKHZvbGF0aWxlIHUxNiAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20gdm9sYXRpbGUoIi5w dXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYg LSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hndyAlW25l d10sICVbcHRyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAieiIgIiovXG4iIDog Ij1AY2MiICJ6IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtvbGRdICIrYSIgKF9f b2xkKSA6IFtuZXddICJyIiAoX19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDQ6IHsg dm9sYXRpbGUgdTMyICpfX3B0ciA9ICh2b2xhdGlsZSB1MzIgKikoKCgmdi0+Y291bnRlcikpKTsg YXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0 XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsg IiAiY21weGNoZ2wgJVtuZXddLCAlW3B0cl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2Rl ICIgInoiICIqL1xuIiA6ICI9QGNjIiAieiIgKHN1Y2Nlc3MpLCBbcHRyXSAiK20iICgqX19wdHIp LCBbb2xkXSAiK2EiIChfX29sZCkgOiBbbmV3XSAiciIgKF9fbmV3KSA6ICJtZW1vcnkiKTsgYnJl YWs7IH0gY2FzZSA4OiB7IHZvbGF0aWxlIHU2NCAqX19wdHIgPSAodm9sYXRpbGUgdTY0ICopKCgo JnYtPmNvdW50ZXIpKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJh XCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2 NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdxICVbbmV3XSwgJVtwdHJdIiAiXG5cdC8qIG91dHB1 dCBjb25kaXRpb24gY29kZSAiICJ6IiAiKi9cbiIgOiAiPUBjYyIgInoiIChzdWNjZXNzKSwgW3B0 cl0gIittIiAoKl9fcHRyKSwgW29sZF0gIithIiAoX19vbGQpIDogW25ld10gInIiIChfX25ldykg OiAibWVtb3J5Iik7IGJyZWFrOyB9IGRlZmF1bHQ6IF9fY21weGNoZ193cm9uZ19zaXplKCk7IH0g aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIXN1Y2Nlc3MpLCAwKSkgKl9vbGQgPSBfX29sZDsgX19i dWlsdGluX2V4cGVjdCghIShzdWNjZXNzKSwgMSk7IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgYXJjaF9hdG9taWNfeGNo ZyhhdG9taWNfdCAqdiwgaW50IG5ldykKewogcmV0dXJuICh7IF9fdHlwZW9mX18gKCooKCZ2LT5j b3VudGVyKSkpIF9fcmV0ID0gKChuZXcpKTsgc3dpdGNoIChzaXplb2YoKigoJnYtPmNvdW50ZXIp KSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4iIDogIitx IiAoX19yZXQpLCAiK20iICgqKCgmdi0+Y291bnRlcikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBi cmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAidyAldzAsICUxXG4iIDogIity IiAoX19yZXQpLCAiK20iICgqKCgmdi0+Y291bnRlcikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBi cmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAibCAlMCwgJTFcbiIgOiAiK3Ii IChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJy ZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJxICVxMCwgJTFcbiIgOiAiK3Ii IChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJy ZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdfc2l6ZSgpOyB9IF9fcmV0OyB9KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBh cmNoX2F0b21pY19hbmQoaW50IGksIGF0b21pY190ICp2KQp7CiBhc20gdm9sYXRpbGUoIi5wdXNo c2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAu XG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJhbmRsICUxLCUwIgogICA6 ICIrbSIgKHYtPmNvdW50ZXIpCiAgIDogImlyIiAoaSkKICAgOiAibWVtb3J5Iik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBh cmNoX2F0b21pY19mZXRjaF9hbmQoaW50IGksIGF0b21pY190ICp2KQp7CiBpbnQgdmFsID0gYXJj aF9hdG9taWNfcmVhZCh2KTsKCiBkbyB7IH0gd2hpbGUgKCFhcmNoX2F0b21pY190cnlfY21weGNo Zyh2LCAmdmFsLCB2YWwgJiBpKSk7CgogcmV0dXJuIHZhbDsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2F0b21pY19v cihpbnQgaSwgYXRvbWljX3QgKnYpCnsKIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBf bG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0 aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgIm9ybCAlMSwlMCIKICAgOiAiK20iICh2LT5jb3Vu dGVyKQogICA6ICJpciIgKGkpCiAgIDogIm1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgYXJjaF9hdG9taWNfZmV0 Y2hfb3IoaW50IGksIGF0b21pY190ICp2KQp7CiBpbnQgdmFsID0gYXJjaF9hdG9taWNfcmVhZCh2 KTsKCiBkbyB7IH0gd2hpbGUgKCFhcmNoX2F0b21pY190cnlfY21weGNoZyh2LCAmdmFsLCB2YWwg fCBpKSk7CgogcmV0dXJuIHZhbDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2F0b21pY194b3IoaW50IGksIGF0b21p Y190ICp2KQp7CiBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4i ICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIg IlxuXHRsb2NrOyAiICJ4b3JsICUxLCUwIgogICA6ICIrbSIgKHYtPmNvdW50ZXIpCiAgIDogImly IiAoaSkKICAgOiAibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBhcmNoX2F0b21pY19mZXRjaF94b3IoaW50IGks IGF0b21pY190ICp2KQp7CiBpbnQgdmFsID0gYXJjaF9hdG9taWNfcmVhZCh2KTsKCiBkbyB7IH0g d2hpbGUgKCFhcmNoX2F0b21pY190cnlfY21weGNoZyh2LCAmdmFsLCB2YWwgXiBpKSk7CgogcmV0 dXJuIHZhbDsKfQoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0Lmgi IDEKIyAyMCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgYXJjaF9h dG9taWM2NF9yZWFkKGNvbnN0IGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiAoeyB1bmlvbiB7IHR5 cGVvZigodiktPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3Jl YWRfb25jZV9zaXplKCYoKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKCh2KS0+Y291bnRl cikpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCh2KS0+Y291bnRlciksIF9fdS5f X2MsIHNpemVvZigodiktPmNvdW50ZXIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9 KTsKfQojIDMyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJj aF9hdG9taWM2NF9zZXQoYXRvbWljNjRfdCAqdiwgczY0IGkpCnsKICh7IHVuaW9uIHsgdHlwZW9m KHYtPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlw ZW9mKHYtPmNvdW50ZXIpKSAoaSkgfTsgX193cml0ZV9vbmNlX3NpemUoJih2LT5jb3VudGVyKSwg X191Ll9fYywgc2l6ZW9mKHYtPmNvdW50ZXIpKTsgX191Ll9fdmFsOyB9KTsKfQojIDQ0ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgdm9pZCBhcmNoX2F0b21pYzY0X2FkZChzNjQgaSwgYXRvbWljNjRfdCAqdikK ewogYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAiYWRkcSAlMSwlMCIKICAgICAgIDogIj1tIiAodi0+Y291bnRlcikKICAgICAgIDogImVy IiAoaSksICJtIiAodi0+Y291bnRlcikgOiAibWVtb3J5Iik7Cn0KIyA1OCAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfYXRvbWljNjRfc3ViKHM2NCBpLCBh dG9taWM2NF90ICp2KQp7CiBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwi YVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAi NjcxOiIgIlxuXHRsb2NrOyAiICJzdWJxICUxLCUwIgogICAgICAgOiAiPW0iICh2LT5jb3VudGVy KQogICAgICAgOiAiZXIiIChpKSwgIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKfQojIDc0 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYXJjaF9hdG9taWM2 NF9zdWJfYW5kX3Rlc3QoczY0IGksIGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiAoeyBib29sIGM7 IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWdu IDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2Nr OyAiICJzdWJxIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24g Y29kZSAiICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAo YykgOiBbdmFsXSAiZXIiIChpKSA6ICJtZW1vcnkiKTsgYzsgfSk7Cn0KIyA4NiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgYXJjaF9hdG9taWM2NF9pbmMoYXRvbWljNjRfdCAqdikKewogYXNtIHZvbGF0 aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9u ZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiaW5jcSAl MCIKICAgICAgIDogIj1tIiAodi0+Y291bnRlcikKICAgICAgIDogIm0iICh2LT5jb3VudGVyKSA6 ICJtZW1vcnkiKTsKfQojIDEwMCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYXJjaF9hdG9taWM2NF9k ZWMoYXRvbWljNjRfdCAqdikKewogYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2Nr cyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25c biIgIjY3MToiICJcblx0bG9jazsgIiAiZGVjcSAlMCIKICAgICAgIDogIj1tIiAodi0+Y291bnRl cikKICAgICAgIDogIm0iICh2LT5jb3VudGVyKSA6ICJtZW1vcnkiKTsKfQojIDExNiAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGFyY2hfYXRvbWljNjRfZGVjX2Fu ZF90ZXN0KGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAo Ii5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3 MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJkZWNxIiAiICIg IiVbdmFyXSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAiZSIgIiovXG4iIDogW3Zh cl0gIittIiAodi0+Y291bnRlciksICI9QGNjIiAiZSIgKGMpIDogOiAibWVtb3J5Iik7IGM7IH0p Owp9CiMgMTMwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYzY0XzY0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYXJj aF9hdG9taWM2NF9pbmNfYW5kX3Rlc3QoYXRvbWljNjRfdCAqdikKewogcmV0dXJuICh7IGJvb2wg YzsgYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxp Z24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxv Y2s7ICIgImluY3EiICIgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAi ICJlIiAiKi9cbiIgOiBbdmFyXSAiK20iICh2LT5jb3VudGVyKSwgIj1AY2MiICJlIiAoYykgOiA6 ICJtZW1vcnkiKTsgYzsgfSk7Cn0KIyAxNDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWlj NjRfNjQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBhcmNoX2F0b21pYzY0X2FkZF9uZWdhdGl2ZShzNjQgaSwgYXRvbWljNjRf dCAqdikKewogcmV0dXJuICh7IGJvb2wgYzsgYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5z bXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3Bz ZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImFkZHEiICIgJVt2YWxdLCAiICIlW3Zhcl0i ICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgInMiICIqL1xuIiA6IFt2YXJdICIrbSIg KHYtPmNvdW50ZXIpLCAiPUBjYyIgInMiIChjKSA6IFt2YWxdICJlciIgKGkpIDogIm1lbW9yeSIp OyBjOyB9KTsKfQojIDE1OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWM2NF82NC5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHM2NCBhcmNoX2F0b21pYzY0X2FkZF9y ZXR1cm4oczY0IGksIGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiBpICsgKHsgX190eXBlb2ZfXyAo KigoKCZ2LT5jb3VudGVyKSkpKSBfX3JldCA9ICgoKGkpKSk7IHN3aXRjaCAoc2l6ZW9mKCooKCgm di0+Y291bnRlcikpKSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNt cF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNl Y3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieGFkZCIgImIgJWIwLCAlMVxuIiA6ICIrcSIg KF9fcmV0KSwgIittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBi cmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFc IlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3 MToiICJcblx0bG9jazsgIiAieGFkZCIgIncgJXcwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIitt IiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA0 OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAieGFkZCIgImwgJTAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNv dW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGls ZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25n IDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAi cSAlcTAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDog OiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0OiBfX3hhZGRfd3Jvbmdfc2l6ZSgpOyB9 IF9fcmV0OyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0IGFyY2hfYXRvbWljNjRfc3ViX3JldHVybihzNjQgaSwgYXRvbWlj NjRfdCAqdikKewogcmV0dXJuIGFyY2hfYXRvbWljNjRfYWRkX3JldHVybigtaSwgdik7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2 NCBhcmNoX2F0b21pYzY0X2ZldGNoX2FkZChzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0dXJu ICh7IF9fdHlwZW9mX18gKCooKCgmdi0+Y291bnRlcikpKSkgX19yZXQgPSAoKChpKSkpOyBzd2l0 Y2ggKHNpemVvZigqKCgoJnYtPmNvdW50ZXIpKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgi LnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcx ZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJiICVi MCwgJTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJt ZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9u IC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5w b3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJ3ICV3MCwgJTFcbiIgOiAi K3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1vcnkiLCAiY2Mi KTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3Ms XCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4i ICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJsICUwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwg IittIiAoKigoKCZ2LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2Fz ZSA4OiBhc20gdm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJh bGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0 bG9jazsgIiAieGFkZCIgInEgJXEwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoKCZ2 LT5jb3VudGVyKSkpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgZGVmYXVsdDogX194YWRk X3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X2ZldGNoX3N1 YihzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0dXJuICh7IF9fdHlwZW9mX18gKCooKCgmdi0+ Y291bnRlcikpKSkgX19yZXQgPSAoKCgtaSkpKTsgc3dpdGNoIChzaXplb2YoKigoKCZ2LT5jb3Vu dGVyKSkpKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tz LFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxu IiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4YWRkIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQp LCAiK20iICgqKCgoJnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBj YXNlIDI6IGFzbSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIu YmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxu XHRsb2NrOyAiICJ4YWRkIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKCgo JnYtPmNvdW50ZXIpKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2 b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIg Ii5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4 YWRkIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikp KSkgOiA6ICJtZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgiLnB1 c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAt IC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgInhhZGQiICJxICVxMCwg JTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCgmdi0+Y291bnRlcikpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGRlZmF1bHQ6IF9feGFkZF93cm9uZ19zaXplKCk7IH0gX19yZXQ7 IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBzNjQgYXJjaF9hdG9taWM2NF9jbXB4Y2hnKGF0b21pYzY0X3QgKnYsIHM2NCBvbGQs IHM2NCBuZXcpCnsKIHJldHVybiAoeyBfX3R5cGVvZl9fKCooKCZ2LT5jb3VudGVyKSkpIF9fcmV0 OyBfX3R5cGVvZl9fKCooKCZ2LT5jb3VudGVyKSkpIF9fb2xkID0gKChvbGQpKTsgX190eXBlb2Zf XygqKCgmdi0+Y291bnRlcikpKSBfX25ldyA9ICgobmV3KSk7IHN3aXRjaCAoKHNpemVvZigqKCZ2 LT5jb3VudGVyKSkpKSB7IGNhc2UgMTogeyB2b2xhdGlsZSB1OCAqX19wdHIgPSAodm9sYXRpbGUg dTggKikoKCZ2LT5jb3VudGVyKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9j a3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9u XG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImNtcHhjaGdiICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwg IittIiAoKl9fcHRyKSA6ICJxIiAoX19uZXcpLCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJl YWs7IH0gY2FzZSAyOiB7IHZvbGF0aWxlIHUxNiAqX19wdHIgPSAodm9sYXRpbGUgdTE2ICopKCgm di0+Y291bnRlcikpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwi XG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcx OiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hndyAlMiwlMSIgOiAiPWEiIChfX3JldCksICIrbSIgKCpf X3B0cikgOiAiciIgKF9fbmV3KSwgIjAiIChfX29sZCkgOiAibWVtb3J5Iik7IGJyZWFrOyB9IGNh c2UgNDogeyB2b2xhdGlsZSB1MzIgKl9fcHRyID0gKHZvbGF0aWxlIHUzMiAqKSgoJnYtPmNvdW50 ZXIpKTsgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJh bGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0 bG9jazsgIiAiY21weGNoZ2wgJTIsJTEiIDogIj1hIiAoX19yZXQpLCAiK20iICgqX19wdHIpIDog InIiIChfX25ldyksICIwIiAoX19vbGQpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDg6IHsg dm9sYXRpbGUgdTY0ICpfX3B0ciA9ICh2b2xhdGlsZSB1NjQgKikoKCZ2LT5jb3VudGVyKSk7IGFz bSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxu IiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIg ImNtcHhjaGdxICUyLCUxIiA6ICI9YSIgKF9fcmV0KSwgIittIiAoKl9fcHRyKSA6ICJyIiAoX19u ZXcpLCAiMCIgKF9fb2xkKSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gZGVmYXVsdDogX19jbXB4Y2hn X3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGJvb2wgYXJjaF9hdG9taWM2NF90cnlfY21weGNoZyhhdG9taWM2NF90ICp2LCBz NjQgKm9sZCwgczY0IG5ldykKewogcmV0dXJuICh7IGJvb2wgc3VjY2VzczsgX190eXBlb2ZfXygo KCZ2LT5jb3VudGVyKSkpIF9vbGQgPSAoX190eXBlb2ZfXygoKCZ2LT5jb3VudGVyKSkpKSgoKG9s ZCkpKTsgX190eXBlb2ZfXygqKCgoJnYtPmNvdW50ZXIpKSkpIF9fb2xkID0gKl9vbGQ7IF9fdHlw ZW9mX18oKigoKCZ2LT5jb3VudGVyKSkpKSBfX25ldyA9ICgoKG5ldykpKTsgc3dpdGNoICgoc2l6 ZW9mKCooJnYtPmNvdW50ZXIpKSkpIHsgY2FzZSAxOiB7IHZvbGF0aWxlIHU4ICpfX3B0ciA9ICh2 b2xhdGlsZSB1OCAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlv biAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIu cG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hnYiAlW25ld10sICVbcHRy XSIgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAieiIgIiovXG4iIDogIj1AY2MiICJ6 IiAoc3VjY2VzcyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtvbGRdICIrYSIgKF9fb2xkKSA6IFtu ZXddICJxIiAoX19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsgfSBjYXNlIDI6IHsgdm9sYXRpbGUg dTE2ICpfX3B0ciA9ICh2b2xhdGlsZSB1MTYgKikoKCgmdi0+Y291bnRlcikpKTsgYXNtIHZvbGF0 aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9u ZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiY21weGNo Z3cgJVtuZXddLCAlW3B0cl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBjb2RlICIgInoiICIq L1xuIiA6ICI9QGNjIiAieiIgKHN1Y2Nlc3MpLCBbcHRyXSAiK20iICgqX19wdHIpLCBbb2xkXSAi K2EiIChfX29sZCkgOiBbbmV3XSAiciIgKF9fbmV3KSA6ICJtZW1vcnkiKTsgYnJlYWs7IH0gY2Fz ZSA0OiB7IHZvbGF0aWxlIHUzMiAqX19wdHIgPSAodm9sYXRpbGUgdTMyICopKCgoJnYtPmNvdW50 ZXIpKSk7IGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5i YWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5c dGxvY2s7ICIgImNtcHhjaGdsICVbbmV3XSwgJVtwdHJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRp b24gY29kZSAiICJ6IiAiKi9cbiIgOiAiPUBjYyIgInoiIChzdWNjZXNzKSwgW3B0cl0gIittIiAo Kl9fcHRyKSwgW29sZF0gIithIiAoX19vbGQpIDogW25ld10gInIiIChfX25ldykgOiAibWVtb3J5 Iik7IGJyZWFrOyB9IGNhc2UgODogeyB2b2xhdGlsZSB1NjQgKl9fcHRyID0gKHZvbGF0aWxlIHU2 NCAqKSgoKCZ2LT5jb3VudGVyKSkpOyBhc20gdm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xv Y2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlv blxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJjbXB4Y2hncSAlW25ld10sICVbcHRyXSIgIlxuXHQv KiBvdXRwdXQgY29uZGl0aW9uIGNvZGUgIiAieiIgIiovXG4iIDogIj1AY2MiICJ6IiAoc3VjY2Vz cyksIFtwdHJdICIrbSIgKCpfX3B0ciksIFtvbGRdICIrYSIgKF9fb2xkKSA6IFtuZXddICJyIiAo X19uZXcpIDogIm1lbW9yeSIpOyBicmVhazsgfSBkZWZhdWx0OiBfX2NtcHhjaGdfd3Jvbmdfc2l6 ZSgpOyB9IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFzdWNjZXNzKSwgMCkpICpfb2xkID0gX19v bGQ7IF9fYnVpbHRpbl9leHBlY3QoISEoc3VjY2VzcyksIDEpOyB9KTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGFyY2hfYXRv bWljNjRfeGNoZyhhdG9taWM2NF90ICp2LCBzNjQgbmV3KQp7CiByZXR1cm4gKHsgX190eXBlb2Zf XyAoKigoJnYtPmNvdW50ZXIpKSkgX19yZXQgPSAoKG5ldykpOyBzd2l0Y2ggKHNpemVvZigqKCgm di0+Y291bnRlcikpKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJiICViMCwg JTFcbiIgOiAiK3EiIChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5 IiwgImNjIik7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJ3ICV3MCwg JTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKCZ2LT5jb3VudGVyKSkpIDogOiAibWVtb3J5 IiwgImNjIik7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIiIgInhjaGciICJsICUwLCAl MVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoJnYtPmNvdW50ZXIpKSkgOiA6ICJtZW1vcnki LCAiY2MiKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgiIiAieGNoZyIgInEgJXEwLCAl MVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoJnYtPmNvdW50ZXIpKSkgOiA6ICJtZW1vcnki LCAiY2MiKTsgYnJlYWs7IGRlZmF1bHQ6IF9feGNoZ193cm9uZ19zaXplKCk7IH0gX19yZXQ7IH0p Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFyY2hfYXRvbWljNjRfYW5kKHM2NCBpLCBhdG9taWM2NF90ICp2KQp7CiBhc20g dm9sYXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIg Ii5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJh bmRxICUxLCUwIgogICA6ICIrbSIgKHYtPmNvdW50ZXIpCiAgIDogImVyIiAoaSkKICAgOiAibWVt b3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X2ZldGNoX2FuZChzNjQgaSwgYXRvbWljNjRfdCAq dikKewogczY0IHZhbCA9IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKCiBkbyB7CiB9IHdoaWxlICgh YXJjaF9hdG9taWM2NF90cnlfY21weGNoZyh2LCAmdmFsLCB2YWwgJiBpKSk7CiByZXR1cm4gdmFs Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFyY2hfYXRvbWljNjRfb3IoczY0IGksIGF0b21pYzY0X3QgKnYpCnsKIGFzbSB2 b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAi LmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgIm9y cSAlMSwlMCIKICAgOiAiK20iICh2LT5jb3VudGVyKQogICA6ICJlciIgKGkpCiAgIDogIm1lbW9y eSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBzNjQgYXJjaF9hdG9taWM2NF9mZXRjaF9vcihzNjQgaSwgYXRvbWljNjRfdCAqdikK ewogczY0IHZhbCA9IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKCiBkbyB7CiB9IHdoaWxlICghYXJj aF9hdG9taWM2NF90cnlfY21weGNoZyh2LCAmdmFsLCB2YWwgfCBpKSk7CiByZXR1cm4gdmFsOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGFyY2hfYXRvbWljNjRfeG9yKHM2NCBpLCBhdG9taWM2NF90ICp2KQp7CiBhc20gdm9s YXRpbGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5s b25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICJ4b3Jx ICUxLCUwIgogICA6ICIrbSIgKHYtPmNvdW50ZXIpCiAgIDogImVyIiAoaSkKICAgOiAibWVtb3J5 Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHM2NCBhcmNoX2F0b21pYzY0X2ZldGNoX3hvcihzNjQgaSwgYXRvbWljNjRfdCAqdikK ewogczY0IHZhbCA9IGFyY2hfYXRvbWljNjRfcmVhZCh2KTsKCiBkbyB7CiB9IHdoaWxlICghYXJj aF9hdG9taWM2NF90cnlfY21weGNoZyh2LCAmdmFsLCB2YWwgXiBpKSk7CiByZXR1cm4gdmFsOwp9 CiMgMjYzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2F0b21pYy5oIiAyCgoKIyAxICIuL2luY2x1 ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIiAxCiMgMjAgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2J1 aWxkX2J1Zy5oIiAxCiMgMjEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVu dGVkLmgiIDIKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQKYXRvbWljX3JlYWQoY29uc3QgYXRvbWljX3QgKnYpCnsKIGthc2FuX2No ZWNrX3JlYWQodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4gYXJjaF9hdG9taWNfcmVhZCh2KTsKfQoj IDQxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0 b21pY19zZXQoYXRvbWljX3QgKnYsIGludCBpKQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXpl b2YoKnYpKTsKIGFyY2hfYXRvbWljX3NldCh2LCBpKTsKfQojIDU5ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pY19hZGQoaW50IGksIGF0b21p Y190ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGFyY2hfYXRvbWlj X2FkZChpLCB2KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2FkZF9yZXR1cm4oaW50IGksIGF0b21pY190ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21p Y19hZGRfcmV0dXJuKGksIHYpOwp9CiMgMTA4ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWlj LWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2ZldGNoX2FkZChpbnQgaSwgYXRvbWljX3QgKnYp CnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWlj X2ZldGNoX2FkZChpLCB2KTsKfQojIDE0NyAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1p bnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWNfc3ViKGludCBpLCBhdG9taWNfdCAqdikKewoga2Fz YW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiBhcmNoX2F0b21pY19zdWIoaSwgdik7Cn0K CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50CmF0b21pY19zdWJfcmV0dXJuKGludCBpLCBhdG9taWNfdCAqdikKewoga2FzYW5fY2hl Y2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4gYXJjaF9hdG9taWNfc3ViX3JldHVybihp LCB2KTsKfQojIDE5NiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50CmF0b21pY19mZXRjaF9zdWIoaW50IGksIGF0b21pY190ICp2KQp7CiBrYXNhbl9jaGVj a193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21pY19mZXRjaF9zdWIoaSwg dik7Cn0KIyAyMzYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQKYXRvbWljX2luYyhhdG9taWNfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6 ZW9mKCp2KSk7CiBhcmNoX2F0b21pY19pbmModik7Cn0KIyAzMjYgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWljX2RlYyhhdG9taWNfdCAqdikK ewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiBhcmNoX2F0b21pY19kZWModik7 Cn0KIyA0MTUgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQKYXRvbWljX2FuZChpbnQgaSwgYXRvbWljX3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYs IHNpemVvZigqdikpOwogYXJjaF9hdG9taWNfYW5kKGksIHYpOwp9CgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9taWNfZmV0 Y2hfYW5kKGludCBpLCBhdG9taWNfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9m KCp2KSk7CiByZXR1cm4gYXJjaF9hdG9taWNfZmV0Y2hfYW5kKGksIHYpOwp9CiMgNTEzICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pY19vcihp bnQgaSwgYXRvbWljX3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwog YXJjaF9hdG9taWNfb3IoaSwgdik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9vcihpbnQgaSwgYXRv bWljX3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFy Y2hfYXRvbWljX2ZldGNoX29yKGksIHYpOwp9CiMgNTYxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv YXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pY194b3IoaW50IGksIGF0b21pY190ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGFyY2hfYXRvbWljX3hvcihp LCB2KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQKYXRvbWljX2ZldGNoX3hvcihpbnQgaSwgYXRvbWljX3QgKnYpCnsKIGth c2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWljX2ZldGNo X3hvcihpLCB2KTsKfQojIDYxMCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVt ZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50CmF0b21pY194Y2hnKGF0b21pY190ICp2LCBpbnQgaSkKewoga2FzYW5fY2hl Y2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4gYXJjaF9hdG9taWNfeGNoZyh2LCBpKTsK fQojIDY1MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 CmF0b21pY19jbXB4Y2hnKGF0b21pY190ICp2LCBpbnQgb2xkLCBpbnQgbmV3KQp7CiBrYXNhbl9j aGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21pY19jbXB4Y2hnKHYs IG9sZCwgbmV3KTsKfQojIDY5MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVt ZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbAphdG9taWNfdHJ5X2NtcHhjaGcoYXRvbWljX3QgKnYsIGludCAqb2xkLCBp bnQgbmV3KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGthc2FuX2NoZWNr X3dyaXRlKG9sZCwgc2l6ZW9mKCpvbGQpKTsKIHJldHVybiBhcmNoX2F0b21pY190cnlfY21weGNo Zyh2LCBvbGQsIG5ldyk7Cn0KIyA3MzQgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5z dHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX3N1Yl9hbmRfdGVzdChpbnQgaSwgYXRvbWljX3QgKnYp CnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWlj X3N1Yl9hbmRfdGVzdChpLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAphdG9taWNfZGVjX2FuZF90ZXN0KGF0b21p Y190ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNo X2F0b21pY19kZWNfYW5kX3Rlc3Qodik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX2luY19hbmRfdGVzdChh dG9taWNfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4g YXJjaF9hdG9taWNfaW5jX2FuZF90ZXN0KHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19hZGRfbmVnYXRp dmUoaW50IGksIGF0b21pY190ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYp KTsKIHJldHVybiBhcmNoX2F0b21pY19hZGRfbmVnYXRpdmUoaSwgdik7Cn0KIyA4MzMgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAphdG9taWM2NF9yZWFk KGNvbnN0IGF0b21pYzY0X3QgKnYpCnsKIGthc2FuX2NoZWNrX3JlYWQodiwgc2l6ZW9mKCp2KSk7 CiByZXR1cm4gYXJjaF9hdG9taWM2NF9yZWFkKHYpOwp9CiMgODUxICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pYzY0X3NldChhdG9taWM2NF90 ICp2LCBzNjQgaSkKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiBhcmNoX2F0 b21pYzY0X3NldCh2LCBpKTsKfQojIDg2OSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1p bnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWM2NF9hZGQoczY0IGksIGF0b21pYzY0X3QgKnYpCnsK IGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogYXJjaF9hdG9taWM2NF9hZGQoaSwg dik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgczY0CmF0b21pYzY0X2FkZF9yZXR1cm4oczY0IGksIGF0b21pYzY0X3QgKnYpCnsK IGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWljNjRf YWRkX3JldHVybihpLCB2KTsKfQojIDkxOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1p bnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2FkZChzNjQgaSwgYXRvbWljNjRfdCAq dikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4gYXJjaF9hdG9t aWM2NF9mZXRjaF9hZGQoaSwgdik7Cn0KIyA5NTcgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9t aWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWljNjRfc3ViKHM2NCBpLCBhdG9taWM2NF90ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGFyY2hfYXRvbWljNjRfc3Vi KGksIHYpOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHM2NAphdG9taWM2NF9zdWJfcmV0dXJuKHM2NCBpLCBhdG9taWM2NF90ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21p YzY0X3N1Yl9yZXR1cm4oaSwgdik7Cn0KIyAxMDA2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRv bWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfZmV0Y2hfc3ViKHM2NCBpLCBhdG9taWM2 NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNo X2F0b21pYzY0X2ZldGNoX3N1YihpLCB2KTsKfQojIDEwNDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWljNjRfaW5jKGF0b21pYzY0X3QgKnYp CnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogYXJjaF9hdG9taWM2NF9pbmMo dik7Cn0KIyAxMTM2ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkCmF0b21pYzY0X2RlYyhhdG9taWM2NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2 LCBzaXplb2YoKnYpKTsKIGFyY2hfYXRvbWljNjRfZGVjKHYpOwp9CiMgMTIyNSAiLi9pbmNsdWRl L2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWM2NF9hbmQoczY0 IGksIGF0b21pYzY0X3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwog YXJjaF9hdG9taWM2NF9hbmQoaSwgdik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2FuZChzNjQg aSwgYXRvbWljNjRfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiBy ZXR1cm4gYXJjaF9hdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7Cn0KIyAxMzIzICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pYzY0X29yKHM2NCBp LCBhdG9taWM2NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIGFy Y2hfYXRvbWljNjRfb3IoaSwgdik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX29yKHM2NCBpLCBh dG9taWM2NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVy biBhcmNoX2F0b21pYzY0X2ZldGNoX29yKGksIHYpOwp9CiMgMTM3MSAiLi9pbmNsdWRlL2FzbS1n ZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWM2NF94b3IoczY0IGksIGF0 b21pYzY0X3QgKnYpCnsKIGthc2FuX2NoZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogYXJjaF9h dG9taWM2NF94b3IoaSwgdik7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX3hvcihzNjQgaSwgYXRv bWljNjRfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4g YXJjaF9hdG9taWM2NF9mZXRjaF94b3IoaSwgdik7Cn0KIyAxNDIwICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvYXRvbWljLWluc3RydW1lbnRlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfeGNoZyhhdG9taWM2NF90 ICp2LCBzNjQgaSkKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4g YXJjaF9hdG9taWM2NF94Y2hnKHYsIGkpOwp9CiMgMTQ2MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmlj L2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2NtcHhjaGcoYXRvbWljNjRfdCAq diwgczY0IG9sZCwgczY0IG5ldykKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7 CiByZXR1cm4gYXJjaF9hdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwgbmV3KTsKfQojIDE1MDAgIi4v aW5jbHVkZS9hc20tZ2VuZXJpYy9hdG9taWMtaW5zdHJ1bWVudGVkLmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljNjRf dHJ5X2NtcHhjaGcoYXRvbWljNjRfdCAqdiwgczY0ICpvbGQsIHM2NCBuZXcpCnsKIGthc2FuX2No ZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwoga2FzYW5fY2hlY2tfd3JpdGUob2xkLCBzaXplb2Yo Km9sZCkpOwogcmV0dXJuIGFyY2hfYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgb2xkLCBuZXcpOwp9 CiMgMTU0NCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1pbnN0cnVtZW50ZWQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bAphdG9taWM2NF9zdWJfYW5kX3Rlc3QoczY0IGksIGF0b21pYzY0X3QgKnYpCnsKIGthc2FuX2No ZWNrX3dyaXRlKHYsIHNpemVvZigqdikpOwogcmV0dXJuIGFyY2hfYXRvbWljNjRfc3ViX2FuZF90 ZXN0KGksIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pYzY0X2RlY19hbmRfdGVzdChhdG9taWM2NF90ICp2 KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXplb2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21p YzY0X2RlY19hbmRfdGVzdCh2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAphdG9taWM2NF9pbmNfYW5kX3Rlc3QoYXRv bWljNjRfdCAqdikKewoga2FzYW5fY2hlY2tfd3JpdGUodiwgc2l6ZW9mKCp2KSk7CiByZXR1cm4g YXJjaF9hdG9taWM2NF9pbmNfYW5kX3Rlc3Qodik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljNjRfYWRkX25l Z2F0aXZlKHM2NCBpLCBhdG9taWM2NF90ICp2KQp7CiBrYXNhbl9jaGVja193cml0ZSh2LCBzaXpl b2YoKnYpKTsKIHJldHVybiBhcmNoX2F0b21pYzY0X2FkZF9uZWdhdGl2ZShpLCB2KTsKfQojIDI2 NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hdG9taWMuaCIgMgojIDggIi4vaW5jbHVkZS9saW51 eC9hdG9taWMuaCIgMgojIDc0ICIuL2luY2x1ZGUvbGludXgvYXRvbWljLmgiCiMgMSAiLi9pbmNs dWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIiAxCiMgNzkgIi4vaW5jbHVkZS9saW51eC9hdG9t aWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19yZWFkX2FjcXVpcmUoY29uc3QgYXRvbWljX3QgKnYp CnsKIHJldHVybiAoeyB0eXBlb2YoKiYodiktPmNvdW50ZXIpIF9fX3AxID0gKHsgdW5pb24geyB0 eXBlb2YoKiYodiktPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBf X3JlYWRfb25jZV9zaXplKCYoKiYodiktPmNvdW50ZXIpLCBfX3UuX19jLCBzaXplb2YoKiYodikt PmNvdW50ZXIpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigqJih2KS0+Y291bnRl ciksIF9fdS5fX2MsIHNpemVvZigqJih2KS0+Y291bnRlcikpOyBkbyB7IH0gd2hpbGUgKDApOyBf X3UuX192YWw7IH0pOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzgyKHZv aWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9y ZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKHYpLT5jb3VudGVy KSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKHYpLT5jb3VudGVyKSA9PSBzaXplb2Yoc2hv cnQpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKCom KHYpLT5jb3VudGVyKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfODIo KTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IF9f X3AxOyB9KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWNfc2V0X3JlbGVhc2UoYXRvbWljX3QgKnYsIGludCBp KQp7CiBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfOTEodm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9s b2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiYodiktPmNvdW50ZXIpID09 IHNpemVvZihjaGFyKSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihzaG9ydCkg fHwgc2l6ZW9mKComKHYpLT5jb3VudGVyKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYodikt PmNvdW50ZXIpID09IHNpemVvZihsb25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF85MSgpOyB9 IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5p b24geyB0eXBlb2YoKiYodiktPmNvdW50ZXIpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7 IC5fX3ZhbCA9ICggdHlwZW9mKComKHYpLT5jb3VudGVyKSkgKGkpIH07IF9fd3JpdGVfb25jZV9z aXplKCYoKiYodiktPmNvdW50ZXIpLCBfX3UuX19jLCBzaXplb2YoKiYodiktPmNvdW50ZXIpKTsg X191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7Cn0KIyAyODEgIi4vaW5jbHVkZS9saW51eC9hdG9t aWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19pbmNfcmV0dXJuKGF0b21pY190ICp2KQp7CiByZXR1 cm4gYXRvbWljX2FkZF9yZXR1cm4oMSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9taWNfaW5jX3JldHVybl9h Y3F1aXJlKGF0b21pY190ICp2KQp7CiByZXR1cm4gYXRvbWljX2FkZF9yZXR1cm4oMSwgdik7Cn0K CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludAphdG9taWNfaW5jX3JldHVybl9yZWxlYXNlKGF0b21pY190ICp2KQp7CiByZXR1cm4g YXRvbWljX2FkZF9yZXR1cm4oMSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9taWNfaW5jX3JldHVybl9yZWxh eGVkKGF0b21pY190ICp2KQp7CiByZXR1cm4gYXRvbWljX2FkZF9yZXR1cm4oMSwgdik7Cn0KIyAz NjIgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9p bmMoYXRvbWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hfYWRkKDEsIHYpOwp9CgoKCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQKYXRvbWljX2ZldGNoX2luY19hY3F1aXJlKGF0b21pY190ICp2KQp7CiByZXR1cm4gYXRvbWlj X2ZldGNoX2FkZCgxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9pbmNfcmVsZWFzZShhdG9t aWNfdCAqdikKewogcmV0dXJuIGF0b21pY19mZXRjaF9hZGQoMSwgdik7Cn0KCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9t aWNfZmV0Y2hfaW5jX3JlbGF4ZWQoYXRvbWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hf YWRkKDEsIHYpOwp9CiMgNDUyICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNrLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dAphdG9taWNfZGVjX3JldHVybihhdG9taWNfdCAqdikKewogcmV0dXJuIGF0b21pY19zdWJfcmV0 dXJuKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2RlY19yZXR1cm5fYWNxdWlyZShhdG9taWNfdCAq dikKewogcmV0dXJuIGF0b21pY19zdWJfcmV0dXJuKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2Rl Y19yZXR1cm5fcmVsZWFzZShhdG9taWNfdCAqdikKewogcmV0dXJuIGF0b21pY19zdWJfcmV0dXJu KDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2RlY19yZXR1cm5fcmVsYXhlZChhdG9taWNfdCAqdikK ewogcmV0dXJuIGF0b21pY19zdWJfcmV0dXJuKDEsIHYpOwp9CiMgNTMzICIuL2luY2x1ZGUvbGlu dXgvYXRvbWljLWZhbGxiYWNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAphdG9taWNfZmV0Y2hfZGVjKGF0b21pY190ICp2KQp7 CiByZXR1cm4gYXRvbWljX2ZldGNoX3N1YigxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9k ZWNfYWNxdWlyZShhdG9taWNfdCAqdikKewogcmV0dXJuIGF0b21pY19mZXRjaF9zdWIoMSwgdik7 Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludAphdG9taWNfZmV0Y2hfZGVjX3JlbGVhc2UoYXRvbWljX3QgKnYpCnsKIHJldHVy biBhdG9taWNfZmV0Y2hfc3ViKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2ZldGNoX2RlY19yZWxh eGVkKGF0b21pY190ICp2KQp7CiByZXR1cm4gYXRvbWljX2ZldGNoX3N1YigxLCB2KTsKfQojIDY0 OSAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pY19hbmRub3Qo aW50IGksIGF0b21pY190ICp2KQp7CiBhdG9taWNfYW5kKH5pLCB2KTsKfQojIDY2NSAiLi9pbmNs dWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWljX2ZldGNoX2FuZG5vdChpbnQg aSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hfYW5kKH5pLCB2KTsKfQoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50CmF0b21pY19mZXRjaF9hbmRub3RfYWNxdWlyZShpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJl dHVybiBhdG9taWNfZmV0Y2hfYW5kKH5pLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9hbmRu b3RfcmVsZWFzZShpbnQgaSwgYXRvbWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hfYW5k KH5pLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9hbmRub3RfcmVsYXhlZChpbnQgaSwgYXRv bWljX3QgKnYpCnsKIHJldHVybiBhdG9taWNfZmV0Y2hfYW5kKH5pLCB2KTsKfQojIDEwODMgIi4v aW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmF0b21pY19mZXRjaF9hZGRfdW5s ZXNzKGF0b21pY190ICp2LCBpbnQgYSwgaW50IHUpCnsKIGludCBjID0gYXRvbWljX3JlYWQodik7 CgogZG8gewogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGMgPT0gdSksIDApKQogICBicmVhazsK IH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGcodiwgJmMsIGMgKyBhKSk7CgogcmV0dXJuIGM7 Cn0KIyAxMTA4ICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNrLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWlj X2FkZF91bmxlc3MoYXRvbWljX3QgKnYsIGludCBhLCBpbnQgdSkKewogcmV0dXJuIGF0b21pY19m ZXRjaF9hZGRfdW5sZXNzKHYsIGEsIHUpICE9IHU7Cn0KIyAxMTI0ICIuL2luY2x1ZGUvbGludXgv YXRvbWljLWZhbGxiYWNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX2luY19ub3RfemVybyhhdG9taWNfdCAqdikK ewogcmV0dXJuIGF0b21pY19hZGRfdW5sZXNzKHYsIDEsIDApOwp9CgoKCgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19p bmNfdW5sZXNzX25lZ2F0aXZlKGF0b21pY190ICp2KQp7CiBpbnQgYyA9IGF0b21pY19yZWFkKHYp OwoKIGRvIHsKICBpZiAoX19idWlsdGluX2V4cGVjdCghIShjIDwgMCksIDApKQogICByZXR1cm4g ZmFsc2U7CiB9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4Y2hnKHYsICZjLCBjICsgMSkpOwoKIHJl dHVybiB0cnVlOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19kZWNfdW5sZXNzX3Bvc2l0aXZlKGF0b21pY190 ICp2KQp7CiBpbnQgYyA9IGF0b21pY19yZWFkKHYpOwoKIGRvIHsKICBpZiAoX19idWlsdGluX2V4 cGVjdCghIShjID4gMCksIDApKQogICByZXR1cm4gZmFsc2U7CiB9IHdoaWxlICghYXRvbWljX3Ry eV9jbXB4Y2hnKHYsICZjLCBjIC0gMSkpOwoKIHJldHVybiB0cnVlOwp9CgoKCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKYXRvbWlj X2RlY19pZl9wb3NpdGl2ZShhdG9taWNfdCAqdikKewogaW50IGRlYywgYyA9IGF0b21pY19yZWFk KHYpOwoKIGRvIHsKICBkZWMgPSBjIC0gMTsKICBpZiAoX19idWlsdGluX2V4cGVjdCghIShkZWMg PCAwKSwgMCkpCiAgIGJyZWFrOwogfSB3aGlsZSAoIWF0b21pY190cnlfY21weGNoZyh2LCAmYywg ZGVjKSk7CgogcmV0dXJuIGRlYzsKfQojIDExODkgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFs bGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgczY0CmF0b21pYzY0X3JlYWRfYWNxdWlyZShjb25zdCBhdG9taWM2NF90ICp2KQp7 CiByZXR1cm4gKHsgdHlwZW9mKComKHYpLT5jb3VudGVyKSBfX19wMSA9ICh7IHVuaW9uIHsgdHlw ZW9mKComKHYpLT5jb3VudGVyKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19y ZWFkX29uY2Vfc2l6ZSgmKComKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKComKHYpLT5j b3VudGVyKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKiYodiktPmNvdW50ZXIp LCBfX3UuX19jLCBzaXplb2YoKiYodiktPmNvdW50ZXIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191 Ll9fdmFsOyB9KTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xMTkyKHZv aWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9y ZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComKHYpLT5jb3VudGVy KSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKHYpLT5jb3VudGVyKSA9PSBzaXplb2Yoc2hv cnQpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKCom KHYpLT5jb3VudGVyKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfMTE5 MigpOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsg X19fcDE7IH0pOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pYzY0X3NldF9yZWxlYXNlKGF0b21pYzY0X3QgKnYs IHM2NCBpKQp7CiBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMTIw MSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQg c3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJih2KS0+Y291 bnRlcikgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9m KHNob3J0KSB8fCBzaXplb2YoKiYodiktPmNvdW50ZXIpID09IHNpemVvZihpbnQpIHx8IHNpemVv ZigqJih2KS0+Y291bnRlcikgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0 XzEyMDEoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5 Iik7ICh7IHVuaW9uIHsgdHlwZW9mKComKHYpLT5jb3VudGVyKSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJih2KS0+Y291bnRlcikpIChpKSB9OyBfX3dy aXRlX29uY2Vfc2l6ZSgmKComKHYpLT5jb3VudGVyKSwgX191Ll9fYywgc2l6ZW9mKComKHYpLT5j b3VudGVyKSk7IF9fdS5fX3ZhbDsgfSk7IH0gd2hpbGUgKDApOwp9CiMgMTM5MSAiLi9pbmNsdWRl L2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfaW5jX3JldHVybihhdG9taWM2 NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfYWRkX3JldHVybigxLCB2KTsKfQoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0 b21pYzY0X2luY19yZXR1cm5fYWNxdWlyZShhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfYWRkX3JldHVybigxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2luY19yZXR1cm5fcmVsZWFz ZShhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfYWRkX3JldHVybigxLCB2KTsKfQoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgczY0CmF0b21pYzY0X2luY19yZXR1cm5fcmVsYXhlZChhdG9taWM2NF90ICp2KQp7CiByZXR1 cm4gYXRvbWljNjRfYWRkX3JldHVybigxLCB2KTsKfQojIDE0NzIgIi4vaW5jbHVkZS9saW51eC9h dG9taWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2luYyhhdG9taWM2NF90ICp2KQp7 CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYWRkKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfZmV0 Y2hfaW5jX2FjcXVpcmUoYXRvbWljNjRfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2Fk ZCgxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2luY19yZWxlYXNlKGF0b21pYzY0X3Qg KnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQoMSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAphdG9taWM2 NF9mZXRjaF9pbmNfcmVsYXhlZChhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0 Y2hfYWRkKDEsIHYpOwp9CiMgMTU2MiAiLi9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBzNjQKYXRvbWljNjRfZGVjX3JldHVybihhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfc3ViX3JldHVybigxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2RlY19yZXR1cm5fYWNxdWly ZShhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybigxLCB2KTsKfQoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgczY0CmF0b21pYzY0X2RlY19yZXR1cm5fcmVsZWFzZShhdG9taWM2NF90ICp2KQp7CiByZXR1 cm4gYXRvbWljNjRfc3ViX3JldHVybigxLCB2KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2RlY19yZXR1 cm5fcmVsYXhlZChhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybigx LCB2KTsKfQojIDE2NDMgIi4vaW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0 b21pYzY0X2ZldGNoX2RlYyhhdG9taWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hf c3ViKDEsIHYpOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzNjQKYXRvbWljNjRfZmV0Y2hfZGVjX2FjcXVpcmUoYXRvbWljNjRf dCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX3N1YigxLCB2KTsKfQoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21p YzY0X2ZldGNoX2RlY19yZWxlYXNlKGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9m ZXRjaF9zdWIoMSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAphdG9taWM2NF9mZXRjaF9kZWNfcmVsYXhlZChhdG9t aWM2NF90ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKDEsIHYpOwp9CiMgMTc1OSAi Li9pbmNsdWRlL2xpbnV4L2F0b21pYy1mYWxsYmFjay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmF0b21pYzY0X2FuZG5vdChz NjQgaSwgYXRvbWljNjRfdCAqdikKewogYXRvbWljNjRfYW5kKH5pLCB2KTsKfQojIDE3NzUgIi4v aW5jbHVkZS9saW51eC9hdG9taWMtZmFsbGJhY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0CmF0b21pYzY0X2ZldGNoX2FuZG5v dChzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FuZCh+aSwg dik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHM2NAphdG9taWM2NF9mZXRjaF9hbmRub3RfYWNxdWlyZShzNjQgaSwgYXRvbWlj NjRfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FuZCh+aSwgdik7Cn0KCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAph dG9taWM2NF9mZXRjaF9hbmRub3RfcmVsZWFzZShzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0 dXJuIGF0b21pYzY0X2ZldGNoX2FuZCh+aSwgdik7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NAphdG9taWM2NF9mZXRjaF9h bmRub3RfcmVsYXhlZChzNjQgaSwgYXRvbWljNjRfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2Zl dGNoX2FuZCh+aSwgdik7Cn0KIyAyMTkzICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNr LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHM2NAphdG9taWM2NF9mZXRjaF9hZGRfdW5sZXNzKGF0b21pYzY0X3QgKnYsIHM2NCBhLCBz NjQgdSkKewogczY0IGMgPSBhdG9taWM2NF9yZWFkKHYpOwoKIGRvIHsKICBpZiAoX19idWlsdGlu X2V4cGVjdCghIShjID09IHUpLCAwKSkKICAgYnJlYWs7CiB9IHdoaWxlICghYXRvbWljNjRfdHJ5 X2NtcHhjaGcodiwgJmMsIGMgKyBhKSk7CgogcmV0dXJuIGM7Cn0KIyAyMjE4ICIuL2luY2x1ZGUv bGludXgvYXRvbWljLWZhbGxiYWNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljNjRfYWRkX3VubGVzcyhhdG9taWM2 NF90ICp2LCBzNjQgYSwgczY0IHUpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGRfdW5sZXNz KHYsIGEsIHUpICE9IHU7Cn0KIyAyMjM0ICIuL2luY2x1ZGUvbGludXgvYXRvbWljLWZhbGxiYWNr LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wKYXRvbWljNjRfaW5jX25vdF96ZXJvKGF0b21pYzY0X3QgKnYpCnsKIHJldHVybiBh dG9taWM2NF9hZGRfdW5sZXNzKHYsIDEsIDApOwp9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pYzY0X2luY191bmxl c3NfbmVnYXRpdmUoYXRvbWljNjRfdCAqdikKewogczY0IGMgPSBhdG9taWM2NF9yZWFkKHYpOwoK IGRvIHsKICBpZiAoX19idWlsdGluX2V4cGVjdCghIShjIDwgMCksIDApKQogICByZXR1cm4gZmFs c2U7CiB9IHdoaWxlICghYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgJmMsIGMgKyAxKSk7CgogcmV0 dXJuIHRydWU7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljNjRfZGVjX3VubGVzc19wb3NpdGl2ZShhdG9taWM2 NF90ICp2KQp7CiBzNjQgYyA9IGF0b21pYzY0X3JlYWQodik7CgogZG8gewogIGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKGMgPiAwKSwgMCkpCiAgIHJldHVybiBmYWxzZTsKIH0gd2hpbGUgKCFhdG9t aWM2NF90cnlfY21weGNoZyh2LCAmYywgYyAtIDEpKTsKCiByZXR1cm4gdHJ1ZTsKfQoKCgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0 CmF0b21pYzY0X2RlY19pZl9wb3NpdGl2ZShhdG9taWM2NF90ICp2KQp7CiBzNjQgZGVjLCBjID0g YXRvbWljNjRfcmVhZCh2KTsKCiBkbyB7CiAgZGVjID0gYyAtIDE7CiAgaWYgKF9fYnVpbHRpbl9l eHBlY3QoISEoZGVjIDwgMCksIDApKQogICBicmVhazsKIH0gd2hpbGUgKCFhdG9taWM2NF90cnlf Y21weGNoZyh2LCAmYywgZGVjKSk7CgogcmV0dXJuIGRlYzsKfQojIDc1ICIuL2luY2x1ZGUvbGlu dXgvYXRvbWljLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1sb25nLmgi IDEKIyA5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYXRvbWljLWxvbmcuaCIKIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKIyAxMCAiLi9pbmNsdWRl L2FzbS1nZW5lcmljL2F0b21pYy1sb25nLmgiIDIKCgp0eXBlZGVmIGF0b21pYzY0X3QgYXRvbWlj X2xvbmdfdDsKIyAyNSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2F0b21pYy1sb25nLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfcmVhZChjb25zdCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfcmVhZCh2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19yZWFkX2FjcXVpcmUoY29uc3QgYXRvbWlj X2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X3JlYWRfYWNxdWlyZSh2KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAph dG9taWNfbG9uZ19zZXQoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyBpKQp7CiBhdG9taWM2NF9zZXQo diwgaSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQKYXRvbWljX2xvbmdfc2V0X3JlbGVhc2UoYXRvbWljX2xvbmdfdCAqdiwg bG9uZyBpKQp7CiBhdG9taWM2NF9zZXRfcmVsZWFzZSh2LCBpKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWNfbG9u Z19hZGQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiBhdG9taWM2NF9hZGQoaSwgdik7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGxvbmcKYXRvbWljX2xvbmdfYWRkX3JldHVybihsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsK IHJldHVybiBhdG9taWM2NF9hZGRfcmV0dXJuKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2Fk ZF9yZXR1cm5fYWNxdWlyZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9t aWM2NF9hZGRfcmV0dXJuKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2FkZF9yZXR1cm5fcmVs ZWFzZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9hZGRfcmV0 dXJuKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2FkZF9yZXR1cm5fcmVsYXhlZChsb25nIGks IGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9hZGRfcmV0dXJuKGksIHYpOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBsb25nCmF0b21pY19sb25nX2ZldGNoX2FkZChsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsK IHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0 Y2hfYWRkX2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfZmV0Y2hfYWRkKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX2FkZF9yZWxlYXNl KGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FkZChp LCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9hZGRfcmVsYXhlZChsb25nIGksIGF0b21p Y19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hZGQoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK YXRvbWljX2xvbmdfc3ViKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogYXRvbWljNjRfc3Vi KGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX3N1Yl9yZXR1cm4obG9uZyBpLCBhdG9taWNfbG9u Z190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9t aWNfbG9uZ19zdWJfcmV0dXJuX2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiBy ZXR1cm4gYXRvbWljNjRfc3ViX3JldHVybihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19zdWJf cmV0dXJuX3JlbGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWlj NjRfc3ViX3JldHVybihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19zdWJfcmV0dXJuX3JlbGF4 ZWQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX3JldHVy bihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9zdWIobG9uZyBpLCBhdG9taWNfbG9u Z190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKGksIHYpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21p Y19sb25nX2ZldGNoX3N1Yl9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0 dXJuIGF0b21pYzY0X2ZldGNoX3N1YihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9z dWJfcmVsZWFzZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9m ZXRjaF9zdWIoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfc3ViX3JlbGF4ZWQobG9u ZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfc3ViKGksIHYp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkCmF0b21pY19sb25nX2luYyhhdG9taWNfbG9uZ190ICp2KQp7CiBhdG9taWM2NF9p bmModik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfaW5jX3JldHVybihhdG9taWNfbG9uZ190ICp2KQp7 CiByZXR1cm4gYXRvbWljNjRfaW5jX3JldHVybih2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19pbmNf cmV0dXJuX2FjcXVpcmUoYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2luY19y ZXR1cm5fYWNxdWlyZSh2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19pbmNfcmV0dXJuX3JlbGVhc2Uo YXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2luY19yZXR1cm5fcmVsZWFzZSh2 KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgbG9uZwphdG9taWNfbG9uZ19pbmNfcmV0dXJuX3JlbGF4ZWQoYXRvbWljX2xvbmdfdCAq dikKewogcmV0dXJuIGF0b21pYzY0X2luY19yZXR1cm5fcmVsYXhlZCh2KTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9t aWNfbG9uZ19mZXRjaF9pbmMoYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2Zl dGNoX2luYyh2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9pbmNfYWNxdWlyZShhdG9taWNf bG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfaW5jX2FjcXVpcmUodik7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxv bmcKYXRvbWljX2xvbmdfZmV0Y2hfaW5jX3JlbGVhc2UoYXRvbWljX2xvbmdfdCAqdikKewogcmV0 dXJuIGF0b21pYzY0X2ZldGNoX2luY19yZWxlYXNlKHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2Zl dGNoX2luY19yZWxheGVkKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRj aF9pbmNfcmVsYXhlZCh2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphdG9taWNfbG9uZ19kZWMoYXRvbWljX2xvbmdfdCAq dikKewogYXRvbWljNjRfZGVjKHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2RlY19yZXR1cm4oYXRv bWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2RlY19yZXR1cm4odik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfZGVjX3JldHVybl9hY3F1aXJlKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVy biBhdG9taWM2NF9kZWNfcmV0dXJuX2FjcXVpcmUodik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZGVj X3JldHVybl9yZWxlYXNlKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9kZWNf cmV0dXJuX3JlbGVhc2Uodik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZGVjX3JldHVybl9yZWxheGVk KGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9kZWNfcmV0dXJuX3JlbGF4ZWQo dik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfZGVjKGF0b21pY19sb25nX3QgKnYpCnsKIHJl dHVybiBhdG9taWM2NF9mZXRjaF9kZWModik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfZGVj X2FjcXVpcmUoYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2RlY19h Y3F1aXJlKHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX2RlY19yZWxlYXNlKGF0b21pY19s b25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9kZWNfcmVsZWFzZSh2KTsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9u ZwphdG9taWNfbG9uZ19mZXRjaF9kZWNfcmVsYXhlZChhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1 cm4gYXRvbWljNjRfZmV0Y2hfZGVjX3JlbGF4ZWQodik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWljX2xvbmdfYW5k KGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogYXRvbWljNjRfYW5kKGksIHYpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25n CmF0b21pY19sb25nX2ZldGNoX2FuZChsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVy biBhdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfYW5k X2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0 Y2hfYW5kKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX2FuZF9yZWxlYXNlKGxvbmcg aSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX2FuZChpLCB2KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9hbmRfcmVsYXhlZChsb25nIGksIGF0b21pY19sb25n X3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmQoaSwgdik7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKYXRvbWlj X2xvbmdfYW5kbm90KGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogYXRvbWljNjRfYW5kbm90 KGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX2FuZG5vdChsb25nIGksIGF0b21pY19s b25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9hbmRub3QoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfZmV0Y2hfYW5kbm90X2FjcXVpcmUobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2 KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kbm90X2FjcXVpcmUoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfZmV0Y2hfYW5kbm90X3JlbGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2 KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kbm90X3JlbGVhc2UoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcK YXRvbWljX2xvbmdfZmV0Y2hfYW5kbm90X3JlbGF4ZWQobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2 KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfYW5kbm90X3JlbGF4ZWQoaSwgdik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK YXRvbWljX2xvbmdfb3IobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiBhdG9taWM2NF9vcihp LCB2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgbG9uZwphdG9taWNfbG9uZ19mZXRjaF9vcihsb25nIGksIGF0b21pY19sb25nX3Qg KnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9vcihpLCB2KTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNfbG9u Z19mZXRjaF9vcl9hY3F1aXJlKGxvbmcgaSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0 b21pYzY0X2ZldGNoX29yKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX29yX3JlbGVh c2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0Y2hfb3Io aSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfb3JfcmVsYXhlZChsb25nIGksIGF0b21p Y19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9mZXRjaF9vcihpLCB2KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAph dG9taWNfbG9uZ194b3IobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiBhdG9taWM2NF94b3Io aSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfeG9yKGxvbmcgaSwgYXRvbWljX2xvbmdf dCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX3hvcihpLCB2KTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZwphdG9taWNf bG9uZ19mZXRjaF94b3JfYWNxdWlyZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVy biBhdG9taWM2NF9mZXRjaF94b3IoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfZmV0Y2hfeG9y X3JlbGVhc2UobG9uZyBpLCBhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZmV0 Y2hfeG9yKGksIHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2ZldGNoX3hvcl9yZWxheGVkKGxvbmcg aSwgYXRvbWljX2xvbmdfdCAqdikKewogcmV0dXJuIGF0b21pYzY0X2ZldGNoX3hvcihpLCB2KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgbG9uZwphdG9taWNfbG9uZ194Y2hnKGF0b21pY19sb25nX3QgKnYsIGxvbmcgaSkKewogcmV0 dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfeGNoZ19hY3F1aXJl KGF0b21pY19sb25nX3QgKnYsIGxvbmcgaSkKewogcmV0dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcKYXRvbWljX2xvbmdfeGNoZ19yZWxlYXNlKGF0b21pY19sb25nX3QgKnYsIGxvbmcg aSkKewogcmV0dXJuIGF0b21pYzY0X3hjaGcodiwgaSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfeGNo Z19yZWxheGVkKGF0b21pY19sb25nX3QgKnYsIGxvbmcgaSkKewogcmV0dXJuIGF0b21pYzY0X3hj aGcodiwgaSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdfY21weGNoZyhhdG9taWNfbG9uZ190ICp2LCBs b25nIG9sZCwgbG9uZyBuZXcpCnsKIHJldHVybiBhdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwgbmV3 KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgbG9uZwphdG9taWNfbG9uZ19jbXB4Y2hnX2FjcXVpcmUoYXRvbWljX2xvbmdfdCAqdiwg bG9uZyBvbGQsIGxvbmcgbmV3KQp7CiByZXR1cm4gYXRvbWljNjRfY21weGNoZyh2LCBvbGQsIG5l dyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGxvbmcKYXRvbWljX2xvbmdfY21weGNoZ19yZWxlYXNlKGF0b21pY19sb25nX3QgKnYs IGxvbmcgb2xkLCBsb25nIG5ldykKewogcmV0dXJuIGF0b21pYzY0X2NtcHhjaGcodiwgb2xkLCBu ZXcpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBsb25nCmF0b21pY19sb25nX2NtcHhjaGdfcmVsYXhlZChhdG9taWNfbG9uZ190ICp2 LCBsb25nIG9sZCwgbG9uZyBuZXcpCnsKIHJldHVybiBhdG9taWM2NF9jbXB4Y2hnKHYsIG9sZCwg bmV3KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbAphdG9taWNfbG9uZ190cnlfY21weGNoZyhhdG9taWNfbG9uZ190ICp2LCBs b25nICpvbGQsIGxvbmcgbmV3KQp7CiByZXR1cm4gYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgKHM2 NCAqKW9sZCwgbmV3KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAphdG9taWNfbG9uZ190cnlfY21weGNoZ19hY3F1aXJlKGF0 b21pY19sb25nX3QgKnYsIGxvbmcgKm9sZCwgbG9uZyBuZXcpCnsKIHJldHVybiBhdG9taWM2NF90 cnlfY21weGNoZyh2LCAoczY0ICopb2xkLCBuZXcpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19sb25nX3RyeV9j bXB4Y2hnX3JlbGVhc2UoYXRvbWljX2xvbmdfdCAqdiwgbG9uZyAqb2xkLCBsb25nIG5ldykKewog cmV0dXJuIGF0b21pYzY0X3RyeV9jbXB4Y2hnKHYsIChzNjQgKilvbGQsIG5ldyk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wK YXRvbWljX2xvbmdfdHJ5X2NtcHhjaGdfcmVsYXhlZChhdG9taWNfbG9uZ190ICp2LCBsb25nICpv bGQsIGxvbmcgbmV3KQp7CiByZXR1cm4gYXRvbWljNjRfdHJ5X2NtcHhjaGcodiwgKHM2NCAqKW9s ZCwgbmV3KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbAphdG9taWNfbG9uZ19zdWJfYW5kX3Rlc3QobG9uZyBpLCBhdG9taWNf bG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfc3ViX2FuZF90ZXN0KGksIHYpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s CmF0b21pY19sb25nX2RlY19hbmRfdGVzdChhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRv bWljNjRfZGVjX2FuZF90ZXN0KHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sCmF0b21pY19sb25nX2luY19hbmRfdGVzdChh dG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfaW5jX2FuZF90ZXN0KHYpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sCmF0b21pY19sb25nX2FkZF9uZWdhdGl2ZShsb25nIGksIGF0b21pY19sb25nX3QgKnYpCnsK IHJldHVybiBhdG9taWM2NF9hZGRfbmVnYXRpdmUoaSwgdik7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvbmcKYXRvbWljX2xvbmdf ZmV0Y2hfYWRkX3VubGVzcyhhdG9taWNfbG9uZ190ICp2LCBsb25nIGEsIGxvbmcgdSkKewogcmV0 dXJuIGF0b21pYzY0X2ZldGNoX2FkZF91bmxlc3ModiwgYSwgdSk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX2xv bmdfYWRkX3VubGVzcyhhdG9taWNfbG9uZ190ICp2LCBsb25nIGEsIGxvbmcgdSkKewogcmV0dXJu IGF0b21pYzY0X2FkZF91bmxlc3ModiwgYSwgdSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKYXRvbWljX2xvbmdfaW5jX25v dF96ZXJvKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVybiBhdG9taWM2NF9pbmNfbm90X3plcm8o dik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wKYXRvbWljX2xvbmdfaW5jX3VubGVzc19uZWdhdGl2ZShhdG9taWNfbG9uZ190 ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfaW5jX3VubGVzc19uZWdhdGl2ZSh2KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAph dG9taWNfbG9uZ19kZWNfdW5sZXNzX3Bvc2l0aXZlKGF0b21pY19sb25nX3QgKnYpCnsKIHJldHVy biBhdG9taWM2NF9kZWNfdW5sZXNzX3Bvc2l0aXZlKHYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nCmF0b21pY19sb25nX2Rl Y19pZl9wb3NpdGl2ZShhdG9taWNfbG9uZ190ICp2KQp7CiByZXR1cm4gYXRvbWljNjRfZGVjX2lm X3Bvc2l0aXZlKHYpOwp9CiMgNzcgIi4vaW5jbHVkZS9saW51eC9hdG9taWMuaCIgMgojIDE5ICIu L2luY2x1ZGUvbGludXgva2dkYi5oIiAyCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va2dk Yi5oIiAxCiMgMTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va2dkYi5oIgojIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcHRyYWNlLmgiIDEKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9zZWdtZW50LmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2NvbnN0LmgiIDEKCgoKIyAx ICIuL2luY2x1ZGUvdWFwaS9saW51eC9jb25zdC5oIiAxCiMgNSAiLi9pbmNsdWRlL2xpbnV4L2Nv bnN0LmgiIDIKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIgMgojIDE2OSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9jYWNoZS5oIiAxCiMgMTcwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlZ21lbnQuaCIg MgojIDI0OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcg dmRzb19lbmNvZGVfY3B1bm9kZShpbnQgY3B1LCB1bnNpZ25lZCBsb25nIG5vZGUpCnsKIHJldHVy biAobm9kZSA8PCAxMikgfCBjcHU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdmRzb19yZWFkX2NwdW5vZGUodW5zaWduZWQg KmNwdSwgdW5zaWduZWQgKm5vZGUpCnsKIHVuc2lnbmVkIGludCBwOwojIDI2NiAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9zZWdtZW50LmgiCiBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIjIEFMVDog b2xkbnN0clxuIiAiNjYxOlxuXHQiICJsc2wgJVtzZWddLCVbcF0iICJcbjY2MjpcbiIgIiMgQUxU OiBwYWRkaW5nXG4iICIuc2tpcCAtKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAi NjYyYi02NjFiIiAiKSkgPiAwKSAqICIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0o IiAiNjYyYi02NjFiIiAiKSksMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9uIC5hbHRp bnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIi MSIiZiAtIC5cbiIgIiAud29yZCAiICIoMTYqMzIrMjIpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJi LTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIgIiAuYnl0 ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAuYWx0 aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEiICJc biIgIjY2NCIiMSIiOlxuXHQiICIuYnl0ZSAweGYzLDB4MGYsMHhjNywweGY4IiAiXG4iICI2NjUi IjEiICI6XG4iICIucG9wc2VjdGlvblxuIiA6IFtwXSAiPWEiIChwKSA6ICJpIiAoMCksIFtzZWdd ICJyIiAoKDE1KjggKyAzKSkpCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKCiBpZiAoY3B1KQogICpjcHUgPSAocCAmIDB4ZmZmKTsKIGlmIChub2RlKQogICpu b2RlID0gKHAgPj4gMTIpOwp9CiMgMzAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlZ21lbnQu aCIKZXh0ZXJuIGNvbnN0IGNoYXIgZWFybHlfaWR0X2hhbmRsZXJfYXJyYXlbMzJdWzldOwpleHRl cm4gdm9pZCBlYXJseV9pZ25vcmVfaXJxKHZvaWQpOwojIDM0NyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9zZWdtZW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgX19sb2Fkc2VnbWVudF9mcyh1bnNpZ25lZCBzaG9ydCB2YWx1 ZSkKewogYXNtIHZvbGF0aWxlKCIJCQkJCQlcbiIKICAgICAgICIxOgltb3Z3ICUwLCAlJWZzCQkJ XG4iCiAgICAgICAiMjoJCQkJCVxuIgoKICAgICAgICIgLnB1c2hzZWN0aW9uIFwiX19leF90YWJs ZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjFiIiAiKSAtIC5cbiIgIiAu bG9uZyAoIiAiMmIiICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5kbGVyX2NsZWFyX2ZzIiAi KSAtIC5cbiIgIiAucG9wc2VjdGlvblxuIgoKICAgICAgIDogOiAicm0iICh2YWx1ZSkgOiAibWVt b3J5Iik7Cn0KIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAyCiMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYWdlX3R5cGVzLmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUv bGludXgvbWVtX2VuY3J5cHQuaCIgMQojIDE3ICIuL2luY2x1ZGUvbGludXgvbWVtX2VuY3J5cHQu aCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21lbV9lbmNyeXB0LmgiIDEKIyAxNyAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9tZW1fZW5jcnlwdC5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS91YXBpL2FzbS9ib290cGFyYW0uaCIgMQojIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9h c20vYm9vdHBhcmFtLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NjcmVlbl9pbmZvLmgiIDEKCgoK CiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2NyZWVuX2luZm8uaCIgMQojIDExICIuL2luY2x1 ZGUvdWFwaS9saW51eC9zY3JlZW5faW5mby5oIgpzdHJ1Y3Qgc2NyZWVuX2luZm8gewogX191OCBv cmlnX3g7CiBfX3U4IG9yaWdfeTsKIF9fdTE2IGV4dF9tZW1fazsKIF9fdTE2IG9yaWdfdmlkZW9f cGFnZTsKIF9fdTggb3JpZ192aWRlb19tb2RlOwogX191OCBvcmlnX3ZpZGVvX2NvbHM7CiBfX3U4 IGZsYWdzOwogX191OCB1bnVzZWQyOwogX191MTYgb3JpZ192aWRlb19lZ2FfYng7CiBfX3UxNiB1 bnVzZWQzOwogX191OCBvcmlnX3ZpZGVvX2xpbmVzOwogX191OCBvcmlnX3ZpZGVvX2lzVkdBOwog X191MTYgb3JpZ192aWRlb19wb2ludHM7CgoKIF9fdTE2IGxmYl93aWR0aDsKIF9fdTE2IGxmYl9o ZWlnaHQ7CiBfX3UxNiBsZmJfZGVwdGg7CiBfX3UzMiBsZmJfYmFzZTsKIF9fdTMyIGxmYl9zaXpl OwogX191MTYgY2xfbWFnaWMsIGNsX29mZnNldDsKIF9fdTE2IGxmYl9saW5lbGVuZ3RoOwogX191 OCByZWRfc2l6ZTsKIF9fdTggcmVkX3BvczsKIF9fdTggZ3JlZW5fc2l6ZTsKIF9fdTggZ3JlZW5f cG9zOwogX191OCBibHVlX3NpemU7CiBfX3U4IGJsdWVfcG9zOwogX191OCByc3ZkX3NpemU7CiBf X3U4IHJzdmRfcG9zOwogX191MTYgdmVzYXBtX3NlZzsKIF9fdTE2IHZlc2FwbV9vZmY7CiBfX3Ux NiBwYWdlczsKIF9fdTE2IHZlc2FfYXR0cmlidXRlczsKIF9fdTMyIGNhcGFiaWxpdGllczsKIF9f dTMyIGV4dF9sZmJfYmFzZTsKIF9fdTggX3Jlc2VydmVkWzJdOwp9IF9fYXR0cmlidXRlX18oKHBh Y2tlZCkpOwojIDYgIi4vaW5jbHVkZS9saW51eC9zY3JlZW5faW5mby5oIiAyCgpleHRlcm4gc3Ry dWN0IHNjcmVlbl9pbmZvIHNjcmVlbl9pbmZvOwojIDQ0ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFw aS9hc20vYm9vdHBhcmFtLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvYXBtX2Jpb3MuaCIgMQoj IDkgIi4vaW5jbHVkZS9saW51eC9hcG1fYmlvcy5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L2FwbV9iaW9zLmgiIDEKIyAyMiAiLi9pbmNsdWRlL3VhcGkvbGludXgvYXBtX2Jpb3MuaCIKdHlw ZWRlZiB1bnNpZ25lZCBzaG9ydCBhcG1fZXZlbnRfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBh cG1fZXZlbnRpbmZvX3Q7CgpzdHJ1Y3QgYXBtX2Jpb3NfaW5mbyB7CiBfX3UxNiB2ZXJzaW9uOwog X191MTYgY3NlZzsKIF9fdTMyIG9mZnNldDsKIF9fdTE2IGNzZWdfMTY7CiBfX3UxNiBkc2VnOwog X191MTYgZmxhZ3M7CiBfX3UxNiBjc2VnX2xlbjsKIF9fdTE2IGNzZWdfMTZfbGVuOwogX191MTYg ZHNlZ19sZW47Cn07CiMgMTMzICIuL2luY2x1ZGUvdWFwaS9saW51eC9hcG1fYmlvcy5oIgojIDEg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2lvY3RsLmgiIDEKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2dlbmVyYXRlZC91YXBpL2FzbS9pb2N0bC5oIiAxCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5l cmljL2lvY3RsLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaW9jdGwu aCIgMQojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9pb2N0bC5oIiAyCgoKCgoKZXh0ZXJuIHVu c2lnbmVkIGludCBfX2ludmFsaWRfc2l6ZV9hcmd1bWVudF9mb3JfSU9DOwojIDIgIi4vYXJjaC94 ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vaW9jdGwuaCIgMgojIDYgIi4vaW5jbHVkZS91 YXBpL2xpbnV4L2lvY3RsLmgiIDIKIyAxMzQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2FwbV9iaW9z LmgiIDIKIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2FwbV9iaW9zLmgiIDIKIyAyNiAiLi9pbmNsdWRl L2xpbnV4L2FwbV9iaW9zLmgiCnN0cnVjdCBhcG1faW5mbyB7CiBzdHJ1Y3QgYXBtX2Jpb3NfaW5m byBiaW9zOwogdW5zaWduZWQgc2hvcnQgY29ubmVjdGlvbl92ZXJzaW9uOwogaW50IGdldF9wb3dl cl9zdGF0dXNfYnJva2VuOwogaW50IGdldF9wb3dlcl9zdGF0dXNfc3dhYmlubWludXRlczsKIGlu dCBhbGxvd19pbnRzOwogaW50IGZvcmJpZF9pZGxlOwogaW50IHJlYWxtb2RlX3Bvd2VyX29mZjsK IGludCBkaXNhYmxlZDsKfTsKIyA4NSAiLi9pbmNsdWRlL2xpbnV4L2FwbV9iaW9zLmgiCmV4dGVy biBzdHJ1Y3QgYXBtX2luZm8gYXBtX2luZm87CiMgNDUgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBp L2FzbS9ib290cGFyYW0uaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9lZGQuaCIgMQojIDI0ICIu L2luY2x1ZGUvbGludXgvZWRkLmgiCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZWRkLmgiIDEK IyA3MiAiLi9pbmNsdWRlL3VhcGkvbGludXgvZWRkLmgiCnN0cnVjdCBlZGRfZGV2aWNlX3BhcmFt cyB7CiBfX3UxNiBsZW5ndGg7CiBfX3UxNiBpbmZvX2ZsYWdzOwogX191MzIgbnVtX2RlZmF1bHRf Y3lsaW5kZXJzOwogX191MzIgbnVtX2RlZmF1bHRfaGVhZHM7CiBfX3UzMiBzZWN0b3JzX3Blcl90 cmFjazsKIF9fdTY0IG51bWJlcl9vZl9zZWN0b3JzOwogX191MTYgYnl0ZXNfcGVyX3NlY3RvcjsK IF9fdTMyIGRwdGVfcHRyOwogX191MTYga2V5OwogX191OCBkZXZpY2VfcGF0aF9pbmZvX2xlbmd0 aDsKIF9fdTggcmVzZXJ2ZWQyOwogX191MTYgcmVzZXJ2ZWQzOwogX191OCBob3N0X2J1c190eXBl WzRdOwogX191OCBpbnRlcmZhY2VfdHlwZVs4XTsKIHVuaW9uIHsKICBzdHJ1Y3QgewogICBfX3Ux NiBiYXNlX2FkZHJlc3M7CiAgIF9fdTE2IHJlc2VydmVkMTsKICAgX191MzIgcmVzZXJ2ZWQyOwog IH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGlzYTsKICBzdHJ1Y3QgewogICBfX3U4IGJ1czsK ICAgX191OCBzbG90OwogICBfX3U4IGZ1bmN0aW9uOwogICBfX3U4IGNoYW5uZWw7CiAgIF9fdTMy IHJlc2VydmVkOwogIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHBjaTsKCiAgc3RydWN0IHsK ICAgX191NjQgcmVzZXJ2ZWQ7CiAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgaWJuZDsKICBz dHJ1Y3QgewogICBfX3U2NCByZXNlcnZlZDsKICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB4 cHJzOwogIHN0cnVjdCB7CiAgIF9fdTY0IHJlc2VydmVkOwogIH0gX19hdHRyaWJ1dGVfXyAoKHBh Y2tlZCkpIGh0cHQ7CiAgc3RydWN0IHsKICAgX191NjQgcmVzZXJ2ZWQ7CiAgfSBfX2F0dHJpYnV0 ZV9fICgocGFja2VkKSkgdW5rbm93bjsKIH0gaW50ZXJmYWNlX3BhdGg7CiB1bmlvbiB7CiAgc3Ry dWN0IHsKICAgX191OCBkZXZpY2U7CiAgIF9fdTggcmVzZXJ2ZWQxOwogICBfX3UxNiByZXNlcnZl ZDI7CiAgIF9fdTMyIHJlc2VydmVkMzsKICAgX191NjQgcmVzZXJ2ZWQ0OwogIH0gX19hdHRyaWJ1 dGVfXyAoKHBhY2tlZCkpIGF0YTsKICBzdHJ1Y3QgewogICBfX3U4IGRldmljZTsKICAgX191OCBs dW47CiAgIF9fdTggcmVzZXJ2ZWQxOwogICBfX3U4IHJlc2VydmVkMjsKICAgX191MzIgcmVzZXJ2 ZWQzOwogICBfX3U2NCByZXNlcnZlZDQ7CiAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYXRh cGk7CiAgc3RydWN0IHsKICAgX191MTYgaWQ7CiAgIF9fdTY0IGx1bjsKICAgX191MTYgcmVzZXJ2 ZWQxOwogICBfX3UzMiByZXNlcnZlZDI7CiAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgc2Nz aTsKICBzdHJ1Y3QgewogICBfX3U2NCBzZXJpYWxfbnVtYmVyOwogICBfX3U2NCByZXNlcnZlZDsK ICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSB1c2I7CiAgc3RydWN0IHsKICAgX191NjQgZXVp OwogICBfX3U2NCByZXNlcnZlZDsKICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBpMTM5NDsK ICBzdHJ1Y3QgewogICBfX3U2NCB3d2lkOwogICBfX3U2NCBsdW47CiAgfSBfX2F0dHJpYnV0ZV9f ICgocGFja2VkKSkgZmlicmU7CiAgc3RydWN0IHsKICAgX191NjQgaWRlbnRpdHlfdGFnOwogICBf X3U2NCByZXNlcnZlZDsKICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBpMm87CiAgc3RydWN0 IHsKICAgX191MzIgYXJyYXlfbnVtYmVyOwogICBfX3UzMiByZXNlcnZlZDE7CiAgIF9fdTY0IHJl c2VydmVkMjsKICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSByYWlkOwogIHN0cnVjdCB7CiAg IF9fdTggZGV2aWNlOwogICBfX3U4IHJlc2VydmVkMTsKICAgX191MTYgcmVzZXJ2ZWQyOwogICBf X3UzMiByZXNlcnZlZDM7CiAgIF9fdTY0IHJlc2VydmVkNDsKICB9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKSBzYXRhOwogIHN0cnVjdCB7CiAgIF9fdTY0IHJlc2VydmVkMTsKICAgX191NjQgcmVz ZXJ2ZWQyOwogIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIHVua25vd247CiB9IGRldmljZV9w YXRoOwogX191OCByZXNlcnZlZDQ7CiBfX3U4IGNoZWNrc3VtOwp9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKTsKCnN0cnVjdCBlZGRfaW5mbyB7CiBfX3U4IGRldmljZTsKIF9fdTggdmVyc2lvbjsK IF9fdTE2IGludGVyZmFjZV9zdXBwb3J0OwogX191MTYgbGVnYWN5X21heF9jeWxpbmRlcjsKIF9f dTggbGVnYWN5X21heF9oZWFkOwogX191OCBsZWdhY3lfc2VjdG9yc19wZXJfdHJhY2s7CiBzdHJ1 Y3QgZWRkX2RldmljZV9wYXJhbXMgcGFyYW1zOwp9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsK CnN0cnVjdCBlZGQgewogdW5zaWduZWQgaW50IG1icl9zaWduYXR1cmVbMTZdOwogc3RydWN0IGVk ZF9pbmZvIGVkZF9pbmZvWzZdOwogdW5zaWduZWQgY2hhciBtYnJfc2lnbmF0dXJlX25yOwogdW5z aWduZWQgY2hhciBlZGRfaW5mb19ucjsKfTsKIyAyNSAiLi9pbmNsdWRlL2xpbnV4L2VkZC5oIiAy CgoKZXh0ZXJuIHN0cnVjdCBlZGQgZWRkOwojIDQ2ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9h c20vYm9vdHBhcmFtLmgiIDIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lzdC5oIiAxCiMg OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pc3QuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUv dWFwaS9hc20vaXN0LmgiIDEKIyAyMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2lzdC5o IgpzdHJ1Y3QgaXN0X2luZm8gewogX191MzIgc2lnbmF0dXJlOwogX191MzIgY29tbWFuZDsKIF9f dTMyIGV2ZW50OwogX191MzIgcGVyZl9sZXZlbDsKfTsKIyAxMCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9pc3QuaCIgMgoKCmV4dGVybiBzdHJ1Y3QgaXN0X2luZm8gaXN0X2luZm87CiMgNDcgIi4v YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIgMgojIDEgIi4vaW5jbHVkZS92 aWRlby9lZGlkLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvdmlkZW8vZWRpZC5oIiAxCgoK CgpzdHJ1Y3QgZWRpZF9pbmZvIHsKIHVuc2lnbmVkIGNoYXIgZHVtbXlbMTI4XTsKfTsKIyA2ICIu L2luY2x1ZGUvdmlkZW8vZWRpZC5oIiAyCgoKZXh0ZXJuIHN0cnVjdCBlZGlkX2luZm8gZWRpZF9p bmZvOwojIDQ4ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgiIDIKCgpz dHJ1Y3Qgc2V0dXBfZGF0YSB7CiBfX3U2NCBuZXh0OwogX191MzIgdHlwZTsKIF9fdTMyIGxlbjsK IF9fdTggZGF0YVswXTsKfTsKCgpzdHJ1Y3Qgc2V0dXBfaW5kaXJlY3QgewogX191MzIgdHlwZTsK IF9fdTMyIHJlc2VydmVkOwogX191NjQgbGVuOwogX191NjQgYWRkcjsKfTsKCnN0cnVjdCBzZXR1 cF9oZWFkZXIgewogX191OCBzZXR1cF9zZWN0czsKIF9fdTE2IHJvb3RfZmxhZ3M7CiBfX3UzMiBz eXNzaXplOwogX191MTYgcmFtX3NpemU7CiBfX3UxNiB2aWRfbW9kZTsKIF9fdTE2IHJvb3RfZGV2 OwogX191MTYgYm9vdF9mbGFnOwogX191MTYganVtcDsKIF9fdTMyIGhlYWRlcjsKIF9fdTE2IHZl cnNpb247CiBfX3UzMiByZWFsbW9kZV9zd3RjaDsKIF9fdTE2IHN0YXJ0X3N5c19zZWc7CiBfX3Ux NiBrZXJuZWxfdmVyc2lvbjsKIF9fdTggdHlwZV9vZl9sb2FkZXI7CiBfX3U4IGxvYWRmbGFnczsK IF9fdTE2IHNldHVwX21vdmVfc2l6ZTsKIF9fdTMyIGNvZGUzMl9zdGFydDsKIF9fdTMyIHJhbWRp c2tfaW1hZ2U7CiBfX3UzMiByYW1kaXNrX3NpemU7CiBfX3UzMiBib290c2VjdF9rbHVkZ2U7CiBf X3UxNiBoZWFwX2VuZF9wdHI7CiBfX3U4IGV4dF9sb2FkZXJfdmVyOwogX191OCBleHRfbG9hZGVy X3R5cGU7CiBfX3UzMiBjbWRfbGluZV9wdHI7CiBfX3UzMiBpbml0cmRfYWRkcl9tYXg7CiBfX3Uz MiBrZXJuZWxfYWxpZ25tZW50OwogX191OCByZWxvY2F0YWJsZV9rZXJuZWw7CiBfX3U4IG1pbl9h bGlnbm1lbnQ7CiBfX3UxNiB4bG9hZGZsYWdzOwogX191MzIgY21kbGluZV9zaXplOwogX191MzIg aGFyZHdhcmVfc3ViYXJjaDsKIF9fdTY0IGhhcmR3YXJlX3N1YmFyY2hfZGF0YTsKIF9fdTMyIHBh eWxvYWRfb2Zmc2V0OwogX191MzIgcGF5bG9hZF9sZW5ndGg7CiBfX3U2NCBzZXR1cF9kYXRhOwog X191NjQgcHJlZl9hZGRyZXNzOwogX191MzIgaW5pdF9zaXplOwogX191MzIgaGFuZG92ZXJfb2Zm c2V0OwogX191MzIga2VybmVsX2luZm9fb2Zmc2V0Owp9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkp OwoKc3RydWN0IHN5c19kZXNjX3RhYmxlIHsKIF9fdTE2IGxlbmd0aDsKIF9fdTggdGFibGVbMTRd Owp9OwoKCnN0cnVjdCBvbHBjX29md19oZWFkZXIgewogX191MzIgb2Z3X21hZ2ljOwogX191MzIg b2Z3X3ZlcnNpb247CiBfX3UzMiBjaWZfaGFuZGxlcjsKIF9fdTMyIGlycV9kZXNjX3RhYmxlOwp9 IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwoKc3RydWN0IGVmaV9pbmZvIHsKIF9fdTMyIGVmaV9s b2FkZXJfc2lnbmF0dXJlOwogX191MzIgZWZpX3N5c3RhYjsKIF9fdTMyIGVmaV9tZW1kZXNjX3Np emU7CiBfX3UzMiBlZmlfbWVtZGVzY192ZXJzaW9uOwogX191MzIgZWZpX21lbW1hcDsKIF9fdTMy IGVmaV9tZW1tYXBfc2l6ZTsKIF9fdTMyIGVmaV9zeXN0YWJfaGk7CiBfX3UzMiBlZmlfbWVtbWFw X2hpOwp9OwojIDE0MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2Jvb3RwYXJhbS5oIgpz dHJ1Y3QgYm9vdF9lODIwX2VudHJ5IHsKIF9fdTY0IGFkZHI7CiBfX3U2NCBzaXplOwogX191MzIg dHlwZTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIyAxNTUgIi4vYXJjaC94ODYvaW5jbHVk ZS91YXBpL2FzbS9ib290cGFyYW0uaCIKc3RydWN0IGphaWxob3VzZV9zZXR1cF9kYXRhIHsKIHN0 cnVjdCB7CiAgX191MTYgdmVyc2lvbjsKICBfX3UxNiBjb21wYXRpYmxlX3ZlcnNpb247CiB9IF9f YXR0cmlidXRlX18oKHBhY2tlZCkpIGhkcjsKIHN0cnVjdCB7CiAgX191MTYgcG1fdGltZXJfYWRk cmVzczsKICBfX3UxNiBudW1fY3B1czsKICBfX3U2NCBwY2lfbW1jb25maWdfYmFzZTsKICBfX3Uz MiB0c2Nfa2h6OwogIF9fdTMyIGFwaWNfa2h6OwogIF9fdTggc3RhbmRhcmRfaW9hcGljOwogIF9f dTggY3B1X2lkc1syNTVdOwogfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSB2MTsKIHN0cnVjdCB7 CiAgX191MzIgZmxhZ3M7CiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHYyOwp9IF9fYXR0cmli dXRlX18oKHBhY2tlZCkpOwoKCnN0cnVjdCBib290X3BhcmFtcyB7CiBzdHJ1Y3Qgc2NyZWVuX2lu Zm8gc2NyZWVuX2luZm87CiBzdHJ1Y3QgYXBtX2Jpb3NfaW5mbyBhcG1fYmlvc19pbmZvOwogX191 OCBfcGFkMls0XTsKIF9fdTY0IHRib290X2FkZHI7CiBzdHJ1Y3QgaXN0X2luZm8gaXN0X2luZm87 CiBfX3U2NCBhY3BpX3JzZHBfYWRkcjsKIF9fdTggX3BhZDNbOF07CiBfX3U4IGhkMF9pbmZvWzE2 XTsKIF9fdTggaGQxX2luZm9bMTZdOwogc3RydWN0IHN5c19kZXNjX3RhYmxlIHN5c19kZXNjX3Rh YmxlOwogc3RydWN0IG9scGNfb2Z3X2hlYWRlciBvbHBjX29md19oZWFkZXI7CiBfX3UzMiBleHRf cmFtZGlza19pbWFnZTsKIF9fdTMyIGV4dF9yYW1kaXNrX3NpemU7CiBfX3UzMiBleHRfY21kX2xp bmVfcHRyOwogX191OCBfcGFkNFsxMTZdOwogc3RydWN0IGVkaWRfaW5mbyBlZGlkX2luZm87CiBz dHJ1Y3QgZWZpX2luZm8gZWZpX2luZm87CiBfX3UzMiBhbHRfbWVtX2s7CiBfX3UzMiBzY3JhdGNo OwogX191OCBlODIwX2VudHJpZXM7CiBfX3U4IGVkZGJ1Zl9lbnRyaWVzOwogX191OCBlZGRfbWJy X3NpZ19idWZfZW50cmllczsKIF9fdTgga2JkX3N0YXR1czsKIF9fdTggc2VjdXJlX2Jvb3Q7CiBf X3U4IF9wYWQ1WzJdOwojIDIxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL2Jvb3RwYXJh bS5oIgogX191OCBzZW50aW5lbDsKIF9fdTggX3BhZDZbMV07CiBzdHJ1Y3Qgc2V0dXBfaGVhZGVy IGhkcjsKIF9fdTggX3BhZDdbMHgyOTAtMHgxZjEtc2l6ZW9mKHN0cnVjdCBzZXR1cF9oZWFkZXIp XTsKIF9fdTMyIGVkZF9tYnJfc2lnX2J1ZmZlclsxNl07CiBzdHJ1Y3QgYm9vdF9lODIwX2VudHJ5 IGU4MjBfdGFibGVbMTI4XTsKIF9fdTggX3BhZDhbNDhdOwogc3RydWN0IGVkZF9pbmZvIGVkZGJ1 Zls2XTsKIF9fdTggX3BhZDlbMjc2XTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKIyAyNjIg Ii4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9ib290cGFyYW0uaCIKZW51bSB4ODZfaGFyZHdh cmVfc3ViYXJjaCB7CiBYODZfU1VCQVJDSF9QQyA9IDAsCiBYODZfU1VCQVJDSF9MR1VFU1QsCiBY ODZfU1VCQVJDSF9YRU4sCiBYODZfU1VCQVJDSF9JTlRFTF9NSUQsCiBYODZfU1VCQVJDSF9DRTQx MDAsCiBYODZfTlJfU1VCQVJDSFMsCn07CiMgMTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbWVt X2VuY3J5cHQuaCIgMgojIDU5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21lbV9lbmNyeXB0Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmli dXRlX18oKF9fY29sZF9fKSkgc21lX2Vhcmx5X2VuY3J5cHQocmVzb3VyY2Vfc2l6ZV90IHBhZGRy LAogICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpIHsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9f c2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNtZV9l YXJseV9kZWNyeXB0KHJlc291cmNlX3NpemVfdCBwYWRkciwKICAgICAgICAgdW5zaWduZWQgbG9u ZyBzaXplKSB7IH0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQi KSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgc21lX21hcF9ib290ZGF0YShjaGFyICpyZWFs X21vZGVfZGF0YSkgeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRl eHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgc21lX3VubWFwX2Jvb3RkYXRhKGNoYXIg KnJlYWxfbW9kZV9kYXRhKSB7IH0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5p bml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgc21lX2Vhcmx5X2luaXQodm9p ZCkgeyB9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBf X2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHNtZV9lbmNyeXB0X2tlcm5lbChzdHJ1Y3QgYm9vdF9w YXJhbXMgKmJwKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4 dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBzbWVfZW5hYmxlKHN0cnVjdCBib290X3Bh cmFtcyAqYnApIHsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBzbWVfYWN0aXZlKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgc2V2X2FjdGl2ZSh2b2lkKSB7IHJldHVybiBmYWxzZTsgfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18o KF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpCmVh cmx5X3NldF9tZW1vcnlfZGVjcnlwdGVkKHVuc2lnbmVkIGxvbmcgdmFkZHIsIHVuc2lnbmVkIGxv bmcgc2l6ZSkgeyByZXR1cm4gMDsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5p bml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkKZWFybHlfc2V0X21lbW9yeV9l bmNyeXB0ZWQodW5zaWduZWQgbG9uZyB2YWRkciwgdW5zaWduZWQgbG9uZyBzaXplKSB7IHJldHVy biAwOyB9CiMgOTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbWVtX2VuY3J5cHQuaCIKZXh0ZXJu IGNoYXIgX19zdGFydF9ic3NfZGVjcnlwdGVkW10sIF9fZW5kX2Jzc19kZWNyeXB0ZWRbXSwgX19z dGFydF9ic3NfZGVjcnlwdGVkX3VudXNlZFtdOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBtZW1fZW5jcnlwdF9hY3RpdmUodm9p ZCkKewogcmV0dXJuIDBVTEw7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBzbWVfZ2V0X21lX21hc2sodm9pZCkKewogcmV0dXJu IDBVTEw7Cn0KIyAxOCAiLi9pbmNsdWRlL2xpbnV4L21lbV9lbmNyeXB0LmgiIDIKIyA4ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfdHlwZXMuaCIgMgojIDQ4ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BhZ2VfdHlwZXMuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRf dHlwZXMuaCIgMQoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rYXNsci5oIiAxCgoK Cgp1bnNpZ25lZCBsb25nIGthc2xyX2dldF9yYW5kb21fbG9uZyhjb25zdCBjaGFyICpwdXJwb3Nl KTsKCgp2b2lkIGtlcm5lbF9yYW5kb21pemVfbWVtb3J5KHZvaWQpOwojIDcgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcGFnZV82NF90eXBlcy5oIiAyCiMgNDkgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcGFnZV90eXBlcy5oIiAyCiMgNjQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV90eXBl cy5oIgpleHRlcm4gaW50IGRldm1lbV9pc19hbGxvd2VkKHVuc2lnbmVkIGxvbmcgcGFnZW5yKTsK CmV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9sb3dfcGZuX21hcHBlZDsKZXh0ZXJuIHVuc2lnbmVk IGxvbmcgbWF4X3Bmbl9tYXBwZWQ7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaHlzX2FkZHJfdCBnZXRfbWF4X21hcHBlZCh2b2lkKQp7 CiByZXR1cm4gKHBoeXNfYWRkcl90KW1heF9wZm5fbWFwcGVkIDw8IDEyOwp9Cgpib29sIHBmbl9y YW5nZV9pc19tYXBwZWQodW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgZW5k X3Bmbik7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbml0X21lbW9yeV9tYXBwaW5nKHVuc2lnbmVk IGxvbmcgc3RhcnQsCiAgICAgIHVuc2lnbmVkIGxvbmcgZW5kKTsKCmV4dGVybiB2b2lkIGluaXRt ZW1faW5pdCh2b2lkKTsKIyA3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIiAyCiMg MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAxCgoKCgoKIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vcHRyYWNlLWFiaS5oIiAxCiMgNyAiLi9hcmNoL3g4Ni9p bmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAyCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w cm9jZXNzb3ItZmxhZ3MuaCIgMQoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20v cHJvY2Vzc29yLWZsYWdzLmgiIDEKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci1mbGFncy5oIiAyCiMgOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3B0cmFjZS5oIiAy CiMgOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIgMgojIDU2ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpzdHJ1Y3QgcHRfcmVncyB7CgoKCgogdW5zaWduZWQgbG9u ZyByMTU7CiB1bnNpZ25lZCBsb25nIHIxNDsKIHVuc2lnbmVkIGxvbmcgcjEzOwogdW5zaWduZWQg bG9uZyByMTI7CiB1bnNpZ25lZCBsb25nIGJwOwogdW5zaWduZWQgbG9uZyBieDsKCiB1bnNpZ25l ZCBsb25nIHIxMTsKIHVuc2lnbmVkIGxvbmcgcjEwOwogdW5zaWduZWQgbG9uZyByOTsKIHVuc2ln bmVkIGxvbmcgcjg7CiB1bnNpZ25lZCBsb25nIGF4OwogdW5zaWduZWQgbG9uZyBjeDsKIHVuc2ln bmVkIGxvbmcgZHg7CiB1bnNpZ25lZCBsb25nIHNpOwogdW5zaWduZWQgbG9uZyBkaTsKCgoKCiB1 bnNpZ25lZCBsb25nIG9yaWdfYXg7CgogdW5zaWduZWQgbG9uZyBpcDsKIHVuc2lnbmVkIGxvbmcg Y3M7CiB1bnNpZ25lZCBsb25nIGZsYWdzOwogdW5zaWduZWQgbG9uZyBzcDsKIHVuc2lnbmVkIGxv bmcgc3M7Cgp9OwoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5cGVz LmgiIDEKIyA0MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgojIDEg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGVzY19kZWZzLmgiIDEKIyAxNiAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9kZXNjX2RlZnMuaCIKc3RydWN0IGRlc2Nfc3RydWN0IHsKIHUxNiBsaW1pdDA7 CiB1MTYgYmFzZTA7CiB1MTYgYmFzZTE6IDgsIHR5cGU6IDQsIHM6IDEsIGRwbDogMiwgcDogMTsK IHUxNiBsaW1pdDE6IDQsIGF2bDogMSwgbDogMSwgZDogMSwgZzogMSwgYmFzZTI6IDg7Cn0gX19h dHRyaWJ1dGVfXygocGFja2VkKSk7CiMgNDAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGVzY19k ZWZzLmgiCmVudW0gewogR0FURV9JTlRFUlJVUFQgPSAweEUsCiBHQVRFX1RSQVAgPSAweEYsCiBH QVRFX0NBTEwgPSAweEMsCiBHQVRFX1RBU0sgPSAweDUsCn07CgplbnVtIHsKIERFU0NfVFNTID0g MHg5LAogREVTQ19MRFQgPSAweDIsCiBERVNDVFlQRV9TID0gMHgxMCwKfTsKCgpzdHJ1Y3QgbGR0 dHNzX2Rlc2MgewogdTE2IGxpbWl0MDsKIHUxNiBiYXNlMDsKCiB1MTYgYmFzZTEgOiA4LCB0eXBl IDogNSwgZHBsIDogMiwgcCA6IDE7CiB1MTYgbGltaXQxIDogNCwgemVybzAgOiAzLCBnIDogMSwg YmFzZTIgOiA4OwoKIHUzMiBiYXNlMzsKIHUzMiB6ZXJvMTsKCn0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7Cgp0eXBlZGVmIHN0cnVjdCBsZHR0c3NfZGVzYyBsZHRfZGVzYzsKdHlwZWRlZiBzdHJ1 Y3QgbGR0dHNzX2Rlc2MgdHNzX2Rlc2M7CgpzdHJ1Y3QgaWR0X2JpdHMgewogdTE2IGlzdCA6IDMs CiAgIHplcm8gOiA1LAogICB0eXBlIDogNSwKICAgZHBsIDogMiwKICAgcCA6IDE7Cn0gX19hdHRy aWJ1dGVfXygocGFja2VkKSk7CgpzdHJ1Y3QgZ2F0ZV9zdHJ1Y3QgewogdTE2IG9mZnNldF9sb3c7 CiB1MTYgc2VnbWVudDsKIHN0cnVjdCBpZHRfYml0cyBiaXRzOwogdTE2IG9mZnNldF9taWRkbGU7 CgogdTMyIG9mZnNldF9oaWdoOwogdTMyIHJlc2VydmVkOwoKfSBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQpKTsKCnR5cGVkZWYgc3RydWN0IGdhdGVfc3RydWN0IGdhdGVfZGVzYzsKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxv bmcgZ2F0ZV9vZmZzZXQoY29uc3QgZ2F0ZV9kZXNjICpnKQp7CgogcmV0dXJuIGctPm9mZnNldF9s b3cgfCAoKHVuc2lnbmVkIGxvbmcpZy0+b2Zmc2V0X21pZGRsZSA8PCAxNikgfAogICgodW5zaWdu ZWQgbG9uZykgZy0+b2Zmc2V0X2hpZ2ggPDwgMzIpOwoKCgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGdhdGVf c2VnbWVudChjb25zdCBnYXRlX2Rlc2MgKmcpCnsKIHJldHVybiBnLT5zZWdtZW50Owp9CgpzdHJ1 Y3QgZGVzY19wdHIgewogdW5zaWduZWQgc2hvcnQgc2l6ZTsKIHVuc2lnbmVkIGxvbmcgYWRkcmVz czsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSA7CiMgNDQgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcGFyYXZpcnRfdHlwZXMuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20va21hcF90 eXBlcy5oIiAxCiMgOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rbWFwX3R5cGVzLmgiCiMgMSAi Li9pbmNsdWRlL2FzbS1nZW5lcmljL2ttYXBfdHlwZXMuaCIgMQojIDEwICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2ttYXBfdHlwZXMuaCIgMgojIDQ1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bh cmF2aXJ0X3R5cGVzLmgiIDIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlw ZXMuaCIgMQojIDEzMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgiCmVu dW0gcGFnZV9jYWNoZV9tb2RlIHsKIF9QQUdFX0NBQ0hFX01PREVfV0IgPSAwLAogX1BBR0VfQ0FD SEVfTU9ERV9XQyA9IDEsCiBfUEFHRV9DQUNIRV9NT0RFX1VDX01JTlVTID0gMiwKIF9QQUdFX0NB Q0hFX01PREVfVUMgPSAzLAogX1BBR0VfQ0FDSEVfTU9ERV9XVCA9IDQsCiBfUEFHRV9DQUNIRV9N T0RFX1dQID0gNSwKCiBfUEFHRV9DQUNIRV9NT0RFX05VTSA9IDgKfTsKIyAyNTcgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vcGd0YWJsZV82NF90eXBlcy5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v c3BhcnNlbWVtLmgiIDEKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlw ZXMuaCIgMgojIDE0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCIK dHlwZWRlZiB1bnNpZ25lZCBsb25nIHB0ZXZhbF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcG1k dmFsX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBwdWR2YWxfdDsKdHlwZWRlZiB1bnNpZ25lZCBs b25nIHA0ZHZhbF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcGdkdmFsX3Q7CnR5cGVkZWYgdW5z aWduZWQgbG9uZyBwZ3Byb3R2YWxfdDsKCnR5cGVkZWYgc3RydWN0IHsgcHRldmFsX3QgcHRlOyB9 IHB0ZV90OwojIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfNjRfdHlwZXMuaCIK ZXh0ZXJuIHVuc2lnbmVkIGludCBwZ2Rpcl9zaGlmdDsKZXh0ZXJuIHVuc2lnbmVkIGludCBwdHJz X3Blcl9wNGQ7CiMgMjU4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVfdHlwZXMuaCIg MgojIDI3MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgiCnR5cGVkZWYg c3RydWN0IHBncHJvdCB7IHBncHJvdHZhbF90IHBncHJvdDsgfSBwZ3Byb3RfdDsKCnR5cGVkZWYg c3RydWN0IHsgcGdkdmFsX3QgcGdkOyB9IHBnZF90OwojIDMwMCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wZ3RhYmxlX3R5cGVzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHBnZF90IG5hdGl2ZV9tYWtlX3BnZChwZ2R2YWxfdCB2YWwp CnsKIHJldHVybiAocGdkX3QpIHsgdmFsICYgKH4wVUxMKSB9Owp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwZ2R2YWxfdCBuYXRpdmVf cGdkX3ZhbChwZ2RfdCBwZ2QpCnsKIHJldHVybiBwZ2QucGdkICYgKH4wVUxMKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGdkdmFs X3QgcGdkX2ZsYWdzKHBnZF90IHBnZCkKewogcmV0dXJuIG5hdGl2ZV9wZ2RfdmFsKHBnZCkgJiAo figocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChwaHlz X2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSkpOwp9CiMgMzI4ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BndGFibGVfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGd0YWJs ZS1ub3A0ZC5oIiAxCiMgOSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BndGFibGUtbm9wNGQuaCIK dHlwZWRlZiBzdHJ1Y3QgeyBwZ2RfdCBwZ2Q7IH0gcDRkX3Q7CiMgMjIgIi4vaW5jbHVkZS9hc20t Z2VuZXJpYy9wZ3RhYmxlLW5vcDRkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwZ2Rfbm9uZShwZ2RfdCBwZ2QpIHsgcmV0dXJu IDA7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgaW50IHBnZF9iYWQocGdkX3QgcGdkKSB7IHJldHVybiAwOyB9CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwZ2RfcHJlc2Vu dChwZ2RfdCBwZ2QpIHsgcmV0dXJuIDE7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZ2RfY2xlYXIocGdkX3QgKnBnZCkgeyB9 CiMgMzYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9wZ3RhYmxlLW5vcDRkLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZF90ICpwNGRf b2Zmc2V0KHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcykKewogcmV0dXJuIChwNGRf dCAqKXBnZDsKfQojIDMyOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlX3R5cGVzLmgi IDIKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHA0ZF90IG5hdGl2ZV9tYWtlX3A0ZChwdWR2YWxfdCB2YWwpCnsKIHJldHVybiAocDRkX3Qp IHsgLnBnZCA9IG5hdGl2ZV9tYWtlX3BnZCgocGdkdmFsX3QpdmFsKSB9Owp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwNGR2YWxfdCBu YXRpdmVfcDRkX3ZhbChwNGRfdCBwNGQpCnsKIHJldHVybiBuYXRpdmVfcGdkX3ZhbChwNGQucGdk KTsKfQoKCgp0eXBlZGVmIHN0cnVjdCB7IHB1ZHZhbF90IHB1ZDsgfSBwdWRfdDsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHB1ZF90IG5h dGl2ZV9tYWtlX3B1ZChwbWR2YWxfdCB2YWwpCnsKIHJldHVybiAocHVkX3QpIHsgdmFsIH07Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHB1ZHZhbF90IG5hdGl2ZV9wdWRfdmFsKHB1ZF90IHB1ZCkKewogcmV0dXJuIHB1ZC5wdWQ7Cn0K IyAzNjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIgp0eXBlZGVmIHN0 cnVjdCB7IHBtZHZhbF90IHBtZDsgfSBwbWRfdDsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBtZF90IG5hdGl2ZV9tYWtlX3BtZChwbWR2 YWxfdCB2YWwpCnsKIHJldHVybiAocG1kX3QpIHsgdmFsIH07Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBtZHZhbF90IG5hdGl2ZV9w bWRfdmFsKHBtZF90IHBtZCkKewogcmV0dXJuIHBtZC5wbWQ7Cn0KIyAzOTMgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcGd0YWJsZV90eXBlcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwNGR2YWxfdCBwNGRfcGZuX21hc2socDRkX3Qg cDRkKQp7CgogcmV0dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEy KS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHA0ZHZhbF90 IHA0ZF9mbGFnc19tYXNrKHA0ZF90IHA0ZCkKewogcmV0dXJuIH5wNGRfcGZuX21hc2socDRkKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgcDRkdmFsX3QgcDRkX2ZsYWdzKHA0ZF90IHA0ZCkKewogcmV0dXJuIG5hdGl2ZV9wNGRfdmFs KHA0ZCkgJiBwNGRfZmxhZ3NfbWFzayhwNGQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwdWR2YWxfdCBwdWRfcGZuX21hc2socHVk X3QgcHVkKQp7CiBpZiAobmF0aXZlX3B1ZF92YWwocHVkKSAmICgoKHB0ZXZhbF90KSgxKSkgPDwg NykpCiAgcmV0dXJuICgoKHNpZ25lZCBsb25nKSh+KCgoMVVMKSA8PCAzMCktMSkpKSAmICgocGh5 c19hZGRyX3QpKCgxVUxMIDw8IDUyKSAtIDEpKSk7CiBlbHNlCiAgcmV0dXJuICgocHRldmFsX3Qp KCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFV TEwgPDwgNTIpIC0gMSkpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHB1ZHZhbF90IHB1ZF9mbGFnc19tYXNrKHB1ZF90IHB1ZCkK ewogcmV0dXJuIH5wdWRfcGZuX21hc2socHVkKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHVkdmFsX3QgcHVkX2ZsYWdzKHB1ZF90 IHB1ZCkKewogcmV0dXJuIG5hdGl2ZV9wdWRfdmFsKHB1ZCkgJiBwdWRfZmxhZ3NfbWFzayhwdWQp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBwbWR2YWxfdCBwbWRfcGZuX21hc2socG1kX3QgcG1kKQp7CiBpZiAobmF0aXZlX3BtZF92 YWwocG1kKSAmICgoKHB0ZXZhbF90KSgxKSkgPDwgNykpCiAgcmV0dXJuICgoKHNpZ25lZCBsb25n KSh+KCgoMVVMKSA8PCAyMSktMSkpKSAmICgocGh5c19hZGRyX3QpKCgxVUxMIDw8IDUyKSAtIDEp KSk7CiBlbHNlCiAgcmV0dXJuICgocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8 IDEyKS0xKSkpICYgKChwaHlzX2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBtZHZh bF90IHBtZF9mbGFnc19tYXNrKHBtZF90IHBtZCkKewogcmV0dXJuIH5wbWRfcGZuX21hc2socG1k KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgcG1kdmFsX3QgcG1kX2ZsYWdzKHBtZF90IHBtZCkKewogcmV0dXJuIG5hdGl2ZV9wbWRf dmFsKHBtZCkgJiBwbWRfZmxhZ3NfbWFzayhwbWQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwdGVfdCBuYXRpdmVfbWFrZV9wdGUo cHRldmFsX3QgdmFsKQp7CiByZXR1cm4gKHB0ZV90KSB7IC5wdGUgPSB2YWwgfTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHRldmFs X3QgbmF0aXZlX3B0ZV92YWwocHRlX3QgcHRlKQp7CiByZXR1cm4gcHRlLnB0ZTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcHRldmFs X3QgcHRlX2ZsYWdzKHB0ZV90IHB0ZSkKewogcmV0dXJuIG5hdGl2ZV9wdGVfdmFsKHB0ZSkgJiAo figocHRldmFsX3QpKCgoc2lnbmVkIGxvbmcpKH4oKCgxVUwpIDw8IDEyKS0xKSkpICYgKChwaHlz X2FkZHJfdCkoKDFVTEwgPDwgNTIpIC0gMSkpKSkpOwp9CgpleHRlcm4gdWludDE2X3QgX19jYWNo ZW1vZGUycHRlX3RibFtfUEFHRV9DQUNIRV9NT0RFX05VTV07CmV4dGVybiB1aW50OF90IF9fcHRl MmNhY2hlbW9kZV90YmxbOF07CiMgNDcyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BndGFibGVf dHlwZXMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBjYWNoZW1vZGUycHJvdHZhbChlbnVtIHBhZ2VfY2FjaGVf bW9kZSBwY20pCnsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHBjbSA9PSAwKSwgMSkpCiAgcmV0 dXJuIDA7CiByZXR1cm4gX19jYWNoZW1vZGUycHRlX3RibFtwY21dOwp9CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBncHJvdF90IGNhY2hl bW9kZTJwZ3Byb3QoZW51bSBwYWdlX2NhY2hlX21vZGUgcGNtKQp7CiByZXR1cm4gKChwZ3Byb3Rf dCkgeyAoY2FjaGVtb2RlMnByb3R2YWwocGNtKSkgfSApOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGVudW0gcGFnZV9jYWNoZV9tb2Rl IHBncHJvdDJjYWNoZW1vZGUocGdwcm90X3QgcGdwcm90KQp7CiB1bnNpZ25lZCBsb25nIG1hc2tl ZDsKCiBtYXNrZWQgPSAoKHBncHJvdCkucGdwcm90KSAmICgoKChwdGV2YWxfdCkoMSkpIDw8IDMp IHwgKCgocHRldmFsX3QpKDEpKSA8PCA0KSB8ICgoKHB0ZXZhbF90KSgxKSkgPDwgNykpOwogaWYg KF9fYnVpbHRpbl9leHBlY3QoISEobWFza2VkID09IDApLCAxKSkKICByZXR1cm4gMDsKIHJldHVy biBfX3B0ZTJjYWNoZW1vZGVfdGJsWygoKChtYXNrZWQpID4+ICg3IC0gMikpICYgNCkgfCAoKCht YXNrZWQpID4+ICg0IC0gMSkpICYgMikgfCAoKChtYXNrZWQpID4+IDMpICYgMSkpXTsKfQpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwZ3By b3RfdCBwZ3Byb3RfNGtfMl9sYXJnZShwZ3Byb3RfdCBwZ3Byb3QpCnsKIHBncHJvdHZhbF90IHZh bCA9ICgocGdwcm90KS5wZ3Byb3QpOwogcGdwcm90X3QgbmV3OwoKICgobmV3KS5wZ3Byb3QpID0g KHZhbCAmIH4oKCgocHRldmFsX3QpKDEpKSA8PCA3KSB8ICgoKHB0ZXZhbF90KSgxKSkgPDwgMTIp KSkgfAogICgodmFsICYgKCgocHRldmFsX3QpKDEpKSA8PCA3KSkgPDwgKDEyIC0gNykpOwogcmV0 dXJuIG5ldzsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBwZ3Byb3RfdCBwZ3Byb3RfbGFyZ2VfMl80ayhwZ3Byb3RfdCBwZ3Byb3QpCnsK IHBncHJvdHZhbF90IHZhbCA9ICgocGdwcm90KS5wZ3Byb3QpOwogcGdwcm90X3QgbmV3OwoKICgo bmV3KS5wZ3Byb3QpID0gKHZhbCAmIH4oKCgocHRldmFsX3QpKDEpKSA8PCA3KSB8ICgoKHB0ZXZh bF90KSgxKSkgPDwgMTIpKSkgfAogICAgICgodmFsICYgKCgocHRldmFsX3QpKDEpKSA8PCAxMikp ID4+CiAgICAgICgxMiAtIDcpKTsKIHJldHVybiBuZXc7Cn0KCgp0eXBlZGVmIHN0cnVjdCBwYWdl ICpwZ3RhYmxlX3Q7CgpleHRlcm4gcHRldmFsX3QgX19zdXBwb3J0ZWRfcHRlX21hc2s7CmV4dGVy biBwdGV2YWxfdCBfX2RlZmF1bHRfa2VybmVsX3B0ZV9tYXNrOwpleHRlcm4gdm9pZCBzZXRfbngo dm9pZCk7CmV4dGVybiBpbnQgbnhfZW5hYmxlZDsKCgpleHRlcm4gcGdwcm90X3QgcGdwcm90X3dy aXRlY29tYmluZShwZ3Byb3RfdCBwcm90KTsKCgpleHRlcm4gcGdwcm90X3QgcGdwcm90X3dyaXRl dGhyb3VnaChwZ3Byb3RfdCBwcm90KTsKCgoKCgpzdHJ1Y3QgZmlsZTsKcGdwcm90X3QgcGh5c19t ZW1fYWNjZXNzX3Byb3Qoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgcGZuLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHBncHJvdF90IHZt YV9wcm90KTsKCgp2b2lkIHNldF9wdGVfdmFkZHIodW5zaWduZWQgbG9uZyB2YWRkciwgcHRlX3Qg cHRlKTsKCgoKCgoKCnN0cnVjdCBzZXFfZmlsZTsKZXh0ZXJuIHZvaWQgYXJjaF9yZXBvcnRfbWVt aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pOwoKZW51bSBwZ19sZXZlbCB7CiBQR19MRVZFTF9OT05F LAogUEdfTEVWRUxfNEssCiBQR19MRVZFTF8yTSwKIFBHX0xFVkVMXzFHLAogUEdfTEVWRUxfNTEy RywKIFBHX0xFVkVMX05VTQp9OwoKCmV4dGVybiB2b2lkIHVwZGF0ZV9wYWdlX2NvdW50KGludCBs ZXZlbCwgdW5zaWduZWQgbG9uZyBwYWdlcyk7CiMgNTY2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BndGFibGVfdHlwZXMuaCIKZXh0ZXJuIHB0ZV90ICpsb29rdXBfYWRkcmVzcyh1bnNpZ25lZCBs b25nIGFkZHJlc3MsIHVuc2lnbmVkIGludCAqbGV2ZWwpOwpleHRlcm4gcHRlX3QgKmxvb2t1cF9h ZGRyZXNzX2luX3BnZChwZ2RfdCAqcGdkLCB1bnNpZ25lZCBsb25nIGFkZHJlc3MsCiAgICAgICAg dW5zaWduZWQgaW50ICpsZXZlbCk7CgpzdHJ1Y3QgbW1fc3RydWN0OwpleHRlcm4gcHRlX3QgKmxv b2t1cF9hZGRyZXNzX2luX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIGFk ZHJlc3MsCiAgICAgICB1bnNpZ25lZCBpbnQgKmxldmVsKTsKZXh0ZXJuIHBtZF90ICpsb29rdXBf cG1kX2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRyZXNzKTsKZXh0ZXJuIHBoeXNfYWRkcl90IHNs b3dfdmlydF90b19waHlzKHZvaWQgKl9fYWRkcmVzcyk7CmV4dGVybiBpbnQgX19hdHRyaWJ1dGVf XygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkg a2VybmVsX21hcF9wYWdlc19pbl9wZ2QocGdkX3QgKnBnZCwgdTY0IHBmbiwKICAgICAgIHVuc2ln bmVkIGxvbmcgYWRkcmVzcywKICAgICAgIHVuc2lnbmVkIG51bXBhZ2VzLAogICAgICAgdW5zaWdu ZWQgbG9uZyBwYWdlX2ZsYWdzKTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25f XygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBrZXJuZWxfdW5tYXBf cGFnZXNfaW5fcGdkKHBnZF90ICpwZ2QsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcywKICAgICAgICAg dW5zaWduZWQgbG9uZyBudW1wYWdlcyk7CiMgNDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnRfdHlwZXMuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5j aC5oIiAxCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvc3RhdGljX2tleS5oIiAxCiMgMSAiLi9p bmNsdWRlL2xpbnV4L2p1bXBfbGFiZWwuaCIgMQojIDc5ICIuL2luY2x1ZGUvbGludXgvanVtcF9s YWJlbC5oIgpleHRlcm4gYm9vbCBzdGF0aWNfa2V5X2luaXRpYWxpemVkOwoKCgoKCgoKc3RydWN0 IHN0YXRpY19rZXkgewogYXRvbWljX3QgZW5hYmxlZDsKIyAxMDIgIi4vaW5jbHVkZS9saW51eC9q dW1wX2xhYmVsLmgiCiB1bmlvbiB7CiAgdW5zaWduZWQgbG9uZyB0eXBlOwogIHN0cnVjdCBqdW1w X2VudHJ5ICplbnRyaWVzOwogIHN0cnVjdCBzdGF0aWNfa2V5X21vZCAqbmV4dDsKIH07Cn07CiMg MTE3ICIuL2luY2x1ZGUvbGludXgvanVtcF9sYWJlbC5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vanVtcF9sYWJlbC5oIiAxCiMgMjMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vanVtcF9s YWJlbC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wgYXJjaF9zdGF0 aWNfYnJhbmNoKHN0cnVjdCBzdGF0aWNfa2V5ICprZXksIGJvb2wgYnJhbmNoKQp7CiBkbyB7IGFz bSBnb3RvKCIxOiIgIi5ieXRlICIgIjB4MGYsMHgxZiwweDQ0LDB4MDAsMCIgIlxuXHQiICIucHVz aHNlY3Rpb24gX19qdW1wX3RhYmxlLCAgXCJhd1wiIFxuXHQiICIgIiAiLmJhbGlnbiA4IiAiICIg IlxuXHQiICIubG9uZyAxYiAtIC4sICVsW2xfeWVzXSAtIC4gXG5cdCIgIiAiICIucXVhZCIgIiAi ICIlYzAgKyAlYzEgLSAuXG5cdCIgIi5wb3BzZWN0aW9uIFxuXHQiIDogOiAiaSIgKGtleSksICJp IiAoYnJhbmNoKSA6IDogbF95ZXMpOyBhc20gKCIiKTsgfSB3aGlsZSAoMCkKCgoKCgoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogcmV0dXJuIGZhbHNlOwpsX3ll czoKIHJldHVybiB0cnVlOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJv b2wgYXJjaF9zdGF0aWNfYnJhbmNoX2p1bXAoc3RydWN0IHN0YXRpY19rZXkgKmtleSwgYm9vbCBi cmFuY2gpCnsKIGRvIHsgYXNtIGdvdG8oIjE6IiAiLmJ5dGUgMHhlOVxuXHQgLmxvbmcgJWxbbF95 ZXNdIC0gMmZcblx0IiAiMjpcblx0IiAiLnB1c2hzZWN0aW9uIF9fanVtcF90YWJsZSwgIFwiYXdc IiBcblx0IiAiICIgIi5iYWxpZ24gOCIgIiAiICJcblx0IiAiLmxvbmcgMWIgLSAuLCAlbFtsX3ll c10gLSAuIFxuXHQiICIgIiAiLnF1YWQiICIgIiAiJWMwICsgJWMxIC0gLlxuXHQiICIucG9wc2Vj dGlvbiBcblx0IiA6IDogImkiIChrZXkpLCAiaSIgKGJyYW5jaCkgOiA6IGxfeWVzKTsgYXNtICgi Iik7IH0gd2hpbGUgKDApCgoKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKCiByZXR1cm4gZmFsc2U7CmxfeWVzOgogcmV0dXJuIHRydWU7Cn0KIyAxMTggIi4v aW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiIDIKCgoKCnN0cnVjdCBqdW1wX2VudHJ5IHsKIHMz MiBjb2RlOwogczMyIHRhcmdldDsKIGxvbmcga2V5Owp9OwoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBqdW1wX2Vu dHJ5X2NvZGUoY29uc3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2ln bmVkIGxvbmcpJmVudHJ5LT5jb2RlICsgZW50cnktPmNvZGU7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcganVt cF9lbnRyeV90YXJnZXQoY29uc3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5KQp7CiByZXR1cm4g KHVuc2lnbmVkIGxvbmcpJmVudHJ5LT50YXJnZXQgKyBlbnRyeS0+dGFyZ2V0Owp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qg c3RhdGljX2tleSAqanVtcF9lbnRyeV9rZXkoY29uc3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5 KQp7CiBsb25nIG9mZnNldCA9IGVudHJ5LT5rZXkgJiB+M0w7CgogcmV0dXJuIChzdHJ1Y3Qgc3Rh dGljX2tleSAqKSgodW5zaWduZWQgbG9uZykmZW50cnktPmtleSArIG9mZnNldCk7Cn0KIyAxNjQg Ii4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wganVtcF9lbnRyeV9pc19icmFuY2go Y29uc3Qgc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2lnbmVkIGxvbmcp ZW50cnktPmtleSAmIDFVTDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBqdW1wX2VudHJ5X2lzX2luaXQoY29uc3Qgc3RydWN0 IGp1bXBfZW50cnkgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2lnbmVkIGxvbmcpZW50cnktPmtleSAm IDJVTDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBqdW1wX2VudHJ5X3NldF9pbml0KHN0cnVjdCBqdW1wX2VudHJ5ICplbnRy eSkKewogZW50cnktPmtleSB8PSAyOwp9CgoKCgoKCmVudW0ganVtcF9sYWJlbF90eXBlIHsKIEpV TVBfTEFCRUxfTk9QID0gMCwKIEpVTVBfTEFCRUxfSk1QLAp9OwoKc3RydWN0IG1vZHVsZTsKIyAx OTggIi4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgYm9vbCBzdGF0aWNfa2V5X2ZhbHNlKHN0cnVjdCBzdGF0aWNfa2V5ICprZXkp CnsKIHJldHVybiBhcmNoX3N0YXRpY19icmFuY2goa2V5LCBmYWxzZSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbCBzdGF0aWNfa2V5X3RydWUoc3RydWN0IHN0YXRp Y19rZXkgKmtleSkKewogcmV0dXJuICFhcmNoX3N0YXRpY19icmFuY2goa2V5LCB0cnVlKTsKfQoK ZXh0ZXJuIHN0cnVjdCBqdW1wX2VudHJ5IF9fc3RhcnRfX19qdW1wX3RhYmxlW107CmV4dGVybiBz dHJ1Y3QganVtcF9lbnRyeSBfX3N0b3BfX19qdW1wX3RhYmxlW107CgpleHRlcm4gdm9pZCBqdW1w X2xhYmVsX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGp1bXBfbGFiZWxfbG9jayh2b2lkKTsKZXh0 ZXJuIHZvaWQganVtcF9sYWJlbF91bmxvY2sodm9pZCk7CmV4dGVybiB2b2lkIGFyY2hfanVtcF9s YWJlbF90cmFuc2Zvcm0oc3RydWN0IGp1bXBfZW50cnkgKmVudHJ5LAogICAgICAgICAgZW51bSBq dW1wX2xhYmVsX3R5cGUgdHlwZSk7CmV4dGVybiB2b2lkIGFyY2hfanVtcF9sYWJlbF90cmFuc2Zv cm1fc3RhdGljKHN0cnVjdCBqdW1wX2VudHJ5ICplbnRyeSwKICAgICAgICAgIGVudW0ganVtcF9s YWJlbF90eXBlIHR5cGUpOwpleHRlcm4gYm9vbCBhcmNoX2p1bXBfbGFiZWxfdHJhbnNmb3JtX3F1 ZXVlKHN0cnVjdCBqdW1wX2VudHJ5ICplbnRyeSwKICAgICAgICAgZW51bSBqdW1wX2xhYmVsX3R5 cGUgdHlwZSk7CmV4dGVybiB2b2lkIGFyY2hfanVtcF9sYWJlbF90cmFuc2Zvcm1fYXBwbHkodm9p ZCk7CmV4dGVybiBpbnQganVtcF9sYWJlbF90ZXh0X3Jlc2VydmVkKHZvaWQgKnN0YXJ0LCB2b2lk ICplbmQpOwpleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfaW5jKHN0cnVjdCBzdGF0aWNfa2V5 ICprZXkpOwpleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfZGVjKHN0cnVjdCBzdGF0aWNfa2V5 ICprZXkpOwpleHRlcm4gdm9pZCBzdGF0aWNfa2V5X3Nsb3dfaW5jX2NwdXNsb2NrZWQoc3RydWN0 IHN0YXRpY19rZXkgKmtleSk7CmV4dGVybiB2b2lkIHN0YXRpY19rZXlfc2xvd19kZWNfY3B1c2xv Y2tlZChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5KTsKZXh0ZXJuIHZvaWQganVtcF9sYWJlbF9hcHBs eV9ub3BzKHN0cnVjdCBtb2R1bGUgKm1vZCk7CmV4dGVybiBpbnQgc3RhdGljX2tleV9jb3VudChz dHJ1Y3Qgc3RhdGljX2tleSAqa2V5KTsKZXh0ZXJuIHZvaWQgc3RhdGljX2tleV9lbmFibGUoc3Ry dWN0IHN0YXRpY19rZXkgKmtleSk7CmV4dGVybiB2b2lkIHN0YXRpY19rZXlfZGlzYWJsZShzdHJ1 Y3Qgc3RhdGljX2tleSAqa2V5KTsKZXh0ZXJuIHZvaWQgc3RhdGljX2tleV9lbmFibGVfY3B1c2xv Y2tlZChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5KTsKZXh0ZXJuIHZvaWQgc3RhdGljX2tleV9kaXNh YmxlX2NwdXNsb2NrZWQoc3RydWN0IHN0YXRpY19rZXkgKmtleSk7CiMgMzQ2ICIuL2luY2x1ZGUv bGludXgvanVtcF9sYWJlbC5oIgpzdHJ1Y3Qgc3RhdGljX2tleV90cnVlIHsKIHN0cnVjdCBzdGF0 aWNfa2V5IGtleTsKfTsKCnN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHsKIHN0cnVjdCBzdGF0aWNf a2V5IGtleTsKfTsKIyAzODUgIi4vaW5jbHVkZS9saW51eC9qdW1wX2xhYmVsLmgiCmV4dGVybiBi b29sIF9fX193cm9uZ19icmFuY2hfZXJyb3Iodm9pZCk7CiMgMiAiLi9pbmNsdWRlL2xpbnV4L3N0 YXRpY19rZXkuaCIgMgojIDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5o IiAyCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FsdGVybmF0aXZlLWFzbS5oIiAxCiMg MTAgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIiAyCgojIDEgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vbXNyLWluZGV4LmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L2JpdHMuaCIgMQojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLWluZGV4LmgiIDIKIyAx MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgiIDIKIyAyMTMgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vbm9zcGVjLWJyYW5jaC5oIgplbnVtIHNwZWN0cmVfdjJfbWl0aWdh dGlvbiB7CiBTUEVDVFJFX1YyX05PTkUsCiBTUEVDVFJFX1YyX1JFVFBPTElORV9HRU5FUklDLAog U1BFQ1RSRV9WMl9SRVRQT0xJTkVfQU1ELAogU1BFQ1RSRV9WMl9JQlJTX0VOSEFOQ0VELAp9OwoK CmVudW0gc3BlY3RyZV92Ml91c2VyX21pdGlnYXRpb24gewogU1BFQ1RSRV9WMl9VU0VSX05PTkUs CiBTUEVDVFJFX1YyX1VTRVJfU1RSSUNULAogU1BFQ1RSRV9WMl9VU0VSX1NUUklDVF9QUkVGRVJS RUQsCiBTUEVDVFJFX1YyX1VTRVJfUFJDVEwsCiBTUEVDVFJFX1YyX1VTRVJfU0VDQ09NUCwKfTsK CgplbnVtIHNzYl9taXRpZ2F0aW9uIHsKIFNQRUNfU1RPUkVfQllQQVNTX05PTkUsCiBTUEVDX1NU T1JFX0JZUEFTU19ESVNBQkxFLAogU1BFQ19TVE9SRV9CWVBBU1NfUFJDVEwsCiBTUEVDX1NUT1JF X0JZUEFTU19TRUNDT01QLAp9OwoKZXh0ZXJuIGNoYXIgX19pbmRpcmVjdF90aHVua19zdGFydFtd OwpleHRlcm4gY2hhciBfX2luZGlyZWN0X3RodW5rX2VuZFtdOwoKCgoKCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB2bWV4aXRf ZmlsbF9SU0Iodm9pZCkKewoKIHVuc2lnbmVkIGxvbmcgbG9vcHM7CgogYXNtIHZvbGF0aWxlICgi OTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQuaWdub3JlX2FsdHNcblx0IiAiLmxvbmcg OTk5YiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IgogICAgICAgICIjIEFMVDogb2xkbnN0clxu IiAiNjYxOlxuXHQiICJqbXAgOTEwZiIgIlxuNjYyOlxuIiAiIyBBTFQ6IHBhZGRpbmdcbiIgIi5z a2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSA+ IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIp KSwweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RydWN0aW9ucyxcImFc IlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAiNjY0IiIxIiJmIC0gLlxuIiAiIC53 b3JkICIgIiggNyozMisxMikiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxuIiAiIC5i eXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjJi IiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVu dCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5c dCIgIm1vdiAkKDMyLzIpLCAlMDsgNzcxOiBjYWxsIDc3MmY7IDc3MzogcGF1c2U7IGxmZW5jZTsg am1wIDc3M2I7IDc3MjogY2FsbCA3NzRmOyA3NzU6IHBhdXNlOyBsZmVuY2U7IGptcCA3NzViOyA3 NzQ6IGRlYyAlMDsgam56IDc3MWI7IGFkZCAkKDY0LzgpICogMzIsICUxOyIgIlxuIiAiNjY1IiIx IiAiOlxuIiAiLnBvcHNlY3Rpb25cbiIKCgogICAgICAgICI5MTA6IgogICAgICAgIDogIj1yIiAo bG9vcHMpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpCiAgICAgICAgOiA6ICJtZW1vcnki ICk7Cgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCnZvaWQgYWx0ZXJuYXRp dmVfbXNyX3dyaXRlKHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwsIHVuc2lnbmVkIGludCBmZWF0 dXJlKQp7CiBhc20gdm9sYXRpbGUoIiMgQUxUOiBvbGRuc3RyXG4iICI2NjE6XG5cdCIgIiIgIlxu NjYyOlxuIiAiIyBBTFQ6IHBhZGRpbmdcbiIgIi5za2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQi IjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2 NjQiIjEiImYiICIpLSgiICI2NjJiLTY2MWIiICIpKSwweDkwXG4iICI2NjMiICI6XG4iICIucHVz aHNlY3Rpb24gLmFsdGluc3RydWN0aW9ucyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIg LmxvbmcgIiAiNjY0IiIxIiJmIC0gLlxuIiAiIC53b3JkICIgIiVjW2ZlYXR1cmVdIiAiXG4iICIg LmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEi ImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5w dXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxh Y2VtZW50ICIgIjEiICJcbiIgIjY2NCIiMSIiOlxuXHQiICJ3cm1zciIgIlxuIiAiNjY1IiIxIiAi OlxuIiAiLnBvcHNlY3Rpb25cbiIKICA6IDogImMiIChtc3IpLAogICAgICAiYSIgKCh1MzIpdmFs KSwKICAgICAgImQiICgodTMyKSh2YWwgPj4gMzIpKSwKICAgICAgW2ZlYXR1cmVdICJpIiAoZmVh dHVyZSkKICA6ICJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbmRpcmVjdF9icmFuY2hfcHJlZGljdGlvbl9i YXJyaWVyKHZvaWQpCnsKIHU2NCB2YWwgPSAoKCgoMVVMKSkpIDw8ICgwKSk7CgogYWx0ZXJuYXRp dmVfbXNyX3dyaXRlKDB4MDAwMDAwNDksIHZhbCwgKCA3KjMyKzIxKSk7Cn0KCgpleHRlcm4gdTY0 IHg4Nl9zcGVjX2N0cmxfYmFzZTsKIyAzMDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbm9zcGVj LWJyYW5jaC5oIgpleHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFsc2Ugc3dpdGNoX3RvX2NvbmRf c3RpYnA7CmV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSBzd2l0Y2hfbW1fY29uZF9pYnBi OwpleHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFsc2Ugc3dpdGNoX21tX2Fsd2F5c19pYnBiOwoK ZXh0ZXJuIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIG1kc191c2VyX2NsZWFyOwpleHRlcm4gc3Ry dWN0IHN0YXRpY19rZXlfZmFsc2UgbWRzX2lkbGVfY2xlYXI7CiMgMzIyICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL25vc3BlYy1icmFuY2guaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtZHNfY2xlYXJfY3B1X2J1ZmZlcnModm9p ZCkKewogc3RhdGljIGNvbnN0IHUxNiBkcyA9ICgzKjgpOwojIDMzNSAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgiCiBhc20gdm9sYXRpbGUoInZlcncgJVtkc10iIDogOiBb ZHNdICJtIiAoZHMpIDogImNjIik7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtZHNfdXNlcl9jbGVhcl9jcHVfYnVm ZmVycyh2b2lkKQp7CiBpZiAoKHsgYm9vbCBicmFuY2g7IGlmIChfX2J1aWx0aW5fdHlwZXNfY29t cGF0aWJsZV9wKHR5cGVvZigqJm1kc191c2VyX2NsZWFyKSwgc3RydWN0IHN0YXRpY19rZXlfdHJ1 ZSkpIGJyYW5jaCA9ICFhcmNoX3N0YXRpY19icmFuY2goJigmbWRzX3VzZXJfY2xlYXIpLT5rZXks IHRydWUpOyBlbHNlIGlmIChfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqJm1k c191c2VyX2NsZWFyKSwgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UpKSBicmFuY2ggPSAhYXJjaF9z dGF0aWNfYnJhbmNoX2p1bXAoJigmbWRzX3VzZXJfY2xlYXIpLT5rZXksIHRydWUpOyBlbHNlIGJy YW5jaCA9IF9fX193cm9uZ19icmFuY2hfZXJyb3IoKTsgX19idWlsdGluX2V4cGVjdCghIShicmFu Y2gpLCAxKTsgfSkpCiAgbWRzX2NsZWFyX2NwdV9idWZmZXJzKCk7Cn0KCgoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtZHNf aWRsZV9jbGVhcl9jcHVfYnVmZmVycyh2b2lkKQp7CiBpZiAoKHsgYm9vbCBicmFuY2g7IGlmIChf X2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqJm1kc19pZGxlX2NsZWFyKSwgc3Ry dWN0IHN0YXRpY19rZXlfdHJ1ZSkpIGJyYW5jaCA9ICFhcmNoX3N0YXRpY19icmFuY2goJigmbWRz X2lkbGVfY2xlYXIpLT5rZXksIHRydWUpOyBlbHNlIGlmIChfX2J1aWx0aW5fdHlwZXNfY29tcGF0 aWJsZV9wKHR5cGVvZigqJm1kc19pZGxlX2NsZWFyKSwgc3RydWN0IHN0YXRpY19rZXlfZmFsc2Up KSBicmFuY2ggPSAhYXJjaF9zdGF0aWNfYnJhbmNoX2p1bXAoJigmbWRzX2lkbGVfY2xlYXIpLT5r ZXksIHRydWUpOyBlbHNlIGJyYW5jaCA9IF9fX193cm9uZ19icmFuY2hfZXJyb3IoKTsgX19idWls dGluX2V4cGVjdCghIShicmFuY2gpLCAxKTsgfSkpCiAgbWRzX2NsZWFyX2NwdV9idWZmZXJzKCk7 Cn0KIyA0NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIiAyCgpzdHJ1 Y3QgcGFnZTsKc3RydWN0IHRocmVhZF9zdHJ1Y3Q7CnN0cnVjdCBkZXNjX3B0cjsKc3RydWN0IHRz c19zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CnN0cnVjdCBkZXNjX3N0cnVjdDsKc3RydWN0IHRh c2tfc3RydWN0OwpzdHJ1Y3QgY3B1bWFzazsKc3RydWN0IGZsdXNoX3RsYl9pbmZvOwpzdHJ1Y3Qg bW11X2dhdGhlcjsKc3RydWN0IHZtX2FyZWFfc3RydWN0OwoKCgoKCnN0cnVjdCBwYXJhdmlydF9j YWxsZWVfc2F2ZSB7CiB2b2lkICpmdW5jOwp9OwoKCnN0cnVjdCBwdl9pbmZvIHsKIyA3OSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgogY29uc3QgY2hhciAqbmFtZTsK fTsKCnN0cnVjdCBwdl9pbml0X29wcyB7CiMgOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnRfdHlwZXMuaCIKIHVuc2lnbmVkICgqcGF0Y2gpKHU4IHR5cGUsIHZvaWQgKmluc25fYnVm ZiwKICAgICB1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxlbik7Cn0gOwojIDEwNCAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgpzdHJ1Y3QgcHZfdGltZV9vcHMg ewogdW5zaWduZWQgbG9uZyBsb25nICgqc2NoZWRfY2xvY2spKHZvaWQpOwogdW5zaWduZWQgbG9u ZyBsb25nICgqc3RlYWxfY2xvY2spKGludCBjcHUpOwp9IDsKCnN0cnVjdCBwdl9jcHVfb3BzIHsK CiB2b2lkICgqaW9fZGVsYXkpKHZvaWQpOwojIDE4MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w YXJhdmlydF90eXBlcy5oIgp9IDsKCnN0cnVjdCBwdl9pcnFfb3BzIHsKIyAyMDQgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vcGFyYXZpcnRfdHlwZXMuaCIKfSA7CgpzdHJ1Y3QgcHZfbW11X29wcyB7 Cgogdm9pZCAoKmZsdXNoX3RsYl91c2VyKSh2b2lkKTsKIHZvaWQgKCpmbHVzaF90bGJfa2VybmVs KSh2b2lkKTsKIHZvaWQgKCpmbHVzaF90bGJfb25lX3VzZXIpKHVuc2lnbmVkIGxvbmcgYWRkcik7 CiB2b2lkICgqZmx1c2hfdGxiX290aGVycykoY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdXMsCiAg ICAgY29uc3Qgc3RydWN0IGZsdXNoX3RsYl9pbmZvICppbmZvKTsKCiB2b2lkICgqdGxiX3JlbW92 ZV90YWJsZSkoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwgdm9pZCAqdGFibGUpOwoKCiB2b2lkICgq ZXhpdF9tbWFwKShzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CiMgMzA2ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3BhcmF2aXJ0X3R5cGVzLmgiCn0gOwoKc3RydWN0IGFyY2hfc3BpbmxvY2s7CgojIDEg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3BpbmxvY2tfdHlwZXMuaCIgMQojIDE2ICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrX3R5cGVzLmgiCnR5cGVkZWYgdTggX190aWNrZXRfdDsK dHlwZWRlZiB1MTYgX190aWNrZXRwYWlyX3Q7CiMgMjcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v c3BpbmxvY2tfdHlwZXMuaCIKIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXNwaW5sb2NrX3R5 cGVzLmgiIDEKIyAyMiAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3FzcGlubG9ja190eXBlcy5oIgp0 eXBlZGVmIHN0cnVjdCBxc3BpbmxvY2sgewogdW5pb24gewogIGF0b21pY190IHZhbDsKCgoKCgoK CiAgc3RydWN0IHsKICAgdTggbG9ja2VkOwogICB1OCBwZW5kaW5nOwogIH07CiAgc3RydWN0IHsK ICAgdTE2IGxvY2tlZF9wZW5kaW5nOwogICB1MTYgdGFpbDsKICB9OwojIDUxICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvcXNwaW5sb2NrX3R5cGVzLmgiCiB9Owp9IGFyY2hfc3BpbmxvY2tfdDsKIyAy OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9ja190eXBlcy5oIiAyCgojIDEgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9xcndsb2NrX3R5cGVzLmgiIDEKCgoKCgojIDEgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9ieXRlb3JkZXIuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgv Ynl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51 eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIiAxCiMgMTMgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3N3YWIuaCIg MQoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgiIDEKCgoKCgoKCiMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3N3YWIuaCIgMQoKCgoKCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19jb25zdF9fKSkgX191MzIgX19hcmNoX3N3YWIzMihfX3UzMiB2YWwpCnsKIGFzbSgiYnN3YXBs ICUwIiA6ICI9ciIgKHZhbCkgOiAiMCIgKHZhbCkpOwogcmV0dXJuIHZhbDsKfQoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fY29uc3RfXykpIF9fdTY0IF9fYXJjaF9zd2FiNjQoX191NjQgdmFsKQp7CiMgMzEg Ii4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zd2FiLmgiCiBhc20oImJzd2FwcSAlMCIgOiAi PXIiICh2YWwpIDogIjAiICh2YWwpKTsKIHJldHVybiB2YWw7Cgp9CiMgOSAiLi9pbmNsdWRlL3Vh cGkvbGludXgvc3dhYi5oIiAyCiMgNDggIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19jb25zdF9fKSkgX191MTYgX19mc3dhYjE2KF9fdTE2IHZhbCkKewoKCgog cmV0dXJuICgoX191MTYpKCAoKChfX3UxNikodmFsKSAmIChfX3UxNikweDAwZmZVKSA8PCA4KSB8 ICgoKF9fdTE2KSh2YWwpICYgKF9fdTE2KTB4ZmYwMFUpID4+IDgpKSk7Cgp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FiMzIoX191MzIgdmFsKQp7CgogcmV0dXJuIF9f YXJjaF9zd2FiMzIodmFsKTsKCgoKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19jb25zdF9fKSkgX191NjQg X19mc3dhYjY0KF9fdTY0IHZhbCkKewoKIHJldHVybiBfX2FyY2hfc3dhYjY0KHZhbCk7CgoKCgoK Cgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FodzMyKF9fdTMyIHZh bCkKewoKCgogcmV0dXJuICgoX191MzIpKCAoKChfX3UzMikodmFsKSAmIChfX3UzMikweDAwMDBm ZmZmVUwpIDw8IDE2KSB8ICgoKF9fdTMyKSh2YWwpICYgKF9fdTMyKTB4ZmZmZjAwMDBVTCkgPj4g MTYpKSk7Cgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBfX3UzMiBfX2Zzd2FoYjMyKF9f dTMyIHZhbCkKewoKCgogcmV0dXJuICgoX191MzIpKCAoKChfX3UzMikodmFsKSAmIChfX3UzMikw eDAwZmYwMGZmVUwpIDw8IDgpIHwgKCgoX191MzIpKHZhbCkgJiAoX191MzIpMHhmZjAwZmYwMFVM KSA+PiA4KSkpOwoKfQojIDEzNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3dhYi5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgX19zd2FiKGNvbnN0IHVu c2lnbmVkIGxvbmcgeSkKewoKIHJldHVybiAoX191NjQpX19idWlsdGluX2Jzd2FwNjQoKF9fdTY0 KSh5KSk7CgoKCn0KIyAxNzEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBfX3UxNiBfX3N3YWIxNnAoY29uc3QgX191MTYgKnAp CnsKCgoKIHJldHVybiAoX191MTYpX19idWlsdGluX2Jzd2FwMTYoKF9fdTE2KSgqcCkpOwoKfQoK CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX191MzIgX19zd2FiMzJwKGNv bnN0IF9fdTMyICpwKQp7CgoKCiByZXR1cm4gKF9fdTMyKV9fYnVpbHRpbl9ic3dhcDMyKChfX3Uz MikoKnApKTsKCn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fdTY0 IF9fc3dhYjY0cChjb25zdCBfX3U2NCAqcCkKewoKCgogcmV0dXJuIChfX3U2NClfX2J1aWx0aW5f YnN3YXA2NCgoX191NjQpKCpwKSk7Cgp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3UzMiBfX3N3YWh3MzJwKGNvbnN0IF9f dTMyICpwKQp7CgoKCiByZXR1cm4gKF9fYnVpbHRpbl9jb25zdGFudF9wKChfX3UzMikoKnApKSA/ ICgoX191MzIpKCAoKChfX3UzMikoKnApICYgKF9fdTMyKTB4MDAwMGZmZmZVTCkgPDwgMTYpIHwg KCgoX191MzIpKCpwKSAmIChfX3UzMikweGZmZmYwMDAwVUwpID4+IDE2KSkpIDogX19mc3dhaHcz MigqcCkpOwoKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MzIgX19zd2FoYjMycChjb25zdCBfX3UzMiAqcCkKewoKCgog cmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoX191MzIpKCpwKSkgPyAoKF9fdTMyKSggKCgo X191MzIpKCpwKSAmIChfX3UzMikweDAwZmYwMGZmVUwpIDw8IDgpIHwgKCgoX191MzIpKCpwKSAm IChfX3UzMikweGZmMDBmZjAwVUwpID4+IDgpKSkgOiBfX2Zzd2FoYjMyKCpwKSk7Cgp9CgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBfX3N3YWIxNnMoX191MTYgKnApCnsKCgoKICpwID0gX19zd2FiMTZwKHApOwoKfQoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fc3dhYjMycyhfX3UzMiAq cCkKewoKCgogKnAgPSBfX3N3YWIzMnAocCk7Cgp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIF9fc3dhYjY0cyhfX3U2NCAqcCkKewoKCgogKnAgPSBfX3N3YWI2 NHAocCk7Cgp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fc3dhaHczMnMoX191MzIgKnApCnsKCgoKICpwID0gX19z d2FodzMycChwKTsKCn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19zd2FoYjMycyhfX3UzMiAqcCkKewoKCgogKnAg PSBfX3N3YWhiMzJwKHApOwoKfQojIDYgIi4vaW5jbHVkZS9saW51eC9zd2FiLmgiIDIKIyAxNCAi Li9pbmNsdWRlL3VhcGkvbGludXgvYnl0ZW9yZGVyL2xpdHRsZV9lbmRpYW4uaCIgMgojIDQ0ICIu L2luY2x1ZGUvdWFwaS9saW51eC9ieXRlb3JkZXIvbGl0dGxlX2VuZGlhbi5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fbGU2NCBfX2NwdV90b19sZTY0cChjb25zdCBfX3U2 NCAqcCkKewogcmV0dXJuICggX19sZTY0KSpwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgX191NjQgX19sZTY0X3RvX2NwdXAoY29uc3QgX19sZTY0ICpwKQp7CiByZXR1cm4g KCBfX3U2NCkqcDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fbGUzMiBf X2NwdV90b19sZTMycChjb25zdCBfX3UzMiAqcCkKewogcmV0dXJuICggX19sZTMyKSpwOwp9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX191MzIgX19sZTMyX3RvX2NwdXAoY29u c3QgX19sZTMyICpwKQp7CiByZXR1cm4gKCBfX3UzMikqcDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIF9fbGUxNiBfX2NwdV90b19sZTE2cChjb25zdCBfX3UxNiAqcCkKewog cmV0dXJuICggX19sZTE2KSpwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg X191MTYgX19sZTE2X3RvX2NwdXAoY29uc3QgX19sZTE2ICpwKQp7CiByZXR1cm4gKCBfX3UxNikq cDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYmU2NCBfX2NwdV90b19i ZTY0cChjb25zdCBfX3U2NCAqcCkKewogcmV0dXJuICggX19iZTY0KV9fc3dhYjY0cChwKTsKfQpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fdTY0IF9fYmU2NF90b19jcHVwKGNv bnN0IF9fYmU2NCAqcCkKewogcmV0dXJuIF9fc3dhYjY0cCgoX191NjQgKilwKTsKfQpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYmUzMiBfX2NwdV90b19iZTMycChjb25zdCBf X3UzMiAqcCkKewogcmV0dXJuICggX19iZTMyKV9fc3dhYjMycChwKTsKfQpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIF9fdTMyIF9fYmUzMl90b19jcHVwKGNvbnN0IF9fYmUzMiAq cCkKewogcmV0dXJuIF9fc3dhYjMycCgoX191MzIgKilwKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIF9fYmUxNiBfX2NwdV90b19iZTE2cChjb25zdCBfX3UxNiAqcCkKewog cmV0dXJuICggX19iZTE2KV9fc3dhYjE2cChwKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIF9fdTE2IF9fYmUxNl90b19jcHVwKGNvbnN0IF9fYmUxNiAqcCkKewogcmV0dXJu IF9fc3dhYjE2cCgoX191MTYgKilwKTsKfQojIDYgIi4vaW5jbHVkZS9saW51eC9ieXRlb3JkZXIv bGl0dGxlX2VuZGlhbi5oIiAyCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvYnl0ZW9yZGVyL2dl bmVyaWMuaCIgMQojIDE0NCAiLi9pbmNsdWRlL2xpbnV4L2J5dGVvcmRlci9nZW5lcmljLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgbGUxNl9hZGRfY3B1KF9fbGUxNiAqdmFyLCB1MTYgdmFsKQp7CiAqdmFyID0gKCggX19sZTE2 KShfX3UxNikoKCggX191MTYpKF9fbGUxNikoKnZhcikpICsgdmFsKSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGUzMl9h ZGRfY3B1KF9fbGUzMiAqdmFyLCB1MzIgdmFsKQp7CiAqdmFyID0gKCggX19sZTMyKShfX3UzMiko KCggX191MzIpKF9fbGUzMikoKnZhcikpICsgdmFsKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGU2NF9hZGRfY3B1KF9f bGU2NCAqdmFyLCB1NjQgdmFsKQp7CiAqdmFyID0gKCggX19sZTY0KShfX3U2NCkoKCggX191NjQp KF9fbGU2NCkoKnZhcikpICsgdmFsKSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxlMzJfdG9fY3B1X2FycmF5KHUzMiAq YnVmLCB1bnNpZ25lZCBpbnQgd29yZHMpCnsKIHdoaWxlICh3b3Jkcy0tKSB7CiAgZG8geyAodm9p ZCkoYnVmKTsgfSB3aGlsZSAoMCk7CiAgYnVmKys7CiB9Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1X3RvX2xlMzJfYXJy YXkodTMyICpidWYsIHVuc2lnbmVkIGludCB3b3JkcykKewogd2hpbGUgKHdvcmRzLS0pIHsKICBk byB7ICh2b2lkKShidWYpOyB9IHdoaWxlICgwKTsKICBidWYrKzsKIH0KfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiZTE2X2Fk ZF9jcHUoX19iZTE2ICp2YXIsIHUxNiB2YWwpCnsKICp2YXIgPSAoKCBfX2JlMTYpKF9fdTE2KV9f YnVpbHRpbl9ic3dhcDE2KChfX3UxNikoKChfX3UxNilfX2J1aWx0aW5fYnN3YXAxNigoX191MTYp KCggX191MTYpKF9fYmUxNikoKnZhcikpKSArIHZhbCkpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYmUzMl9hZGRfY3B1 KF9fYmUzMiAqdmFyLCB1MzIgdmFsKQp7CiAqdmFyID0gKCggX19iZTMyKShfX3UzMilfX2J1aWx0 aW5fYnN3YXAzMigoX191MzIpKCgoX191MzIpX19idWlsdGluX2Jzd2FwMzIoKF9fdTMyKSgoIF9f dTMyKShfX2JlMzIpKCp2YXIpKSkgKyB2YWwpKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJlNjRfYWRkX2NwdShfX2Jl NjQgKnZhciwgdTY0IHZhbCkKewogKnZhciA9ICgoIF9fYmU2NCkoX191NjQpX19idWlsdGluX2Jz d2FwNjQoKF9fdTY0KSgoKF9fdTY0KV9fYnVpbHRpbl9ic3dhcDY0KChfX3U2NCkoKCBfX3U2NCko X19iZTY0KSgqdmFyKSkpICsgdmFsKSkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVfdG9fYmUzMl9hcnJheShfX2Jl MzIgKmRzdCwgY29uc3QgdTMyICpzcmMsIHNpemVfdCBsZW4pCnsKIGludCBpOwoKIGZvciAoaSA9 IDA7IGkgPCBsZW47IGkrKykKICBkc3RbaV0gPSAoKCBfX2JlMzIpKF9fdTMyKV9fYnVpbHRpbl9i c3dhcDMyKChfX3UzMikoKHNyY1tpXSkpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYmUzMl90b19jcHVfYXJyYXkodTMy ICpkc3QsIGNvbnN0IF9fYmUzMiAqc3JjLCBzaXplX3QgbGVuKQp7CiBpbnQgaTsKCiBmb3IgKGkg PSAwOyBpIDwgbGVuOyBpKyspCiAgZHN0W2ldID0gKF9fdTMyKV9fYnVpbHRpbl9ic3dhcDMyKChf X3UzMikoKCBfX3UzMikoX19iZTMyKShzcmNbaV0pKSk7Cn0KIyAxMiAiLi9pbmNsdWRlL2xpbnV4 L2J5dGVvcmRlci9saXR0bGVfZW5kaWFuLmgiIDIKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFw aS9hc20vYnl0ZW9yZGVyLmgiIDIKIyA3ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXJ3bG9ja190 eXBlcy5oIiAyCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9ja190eXBlcy5oIiAx CiMgOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3Fyd2xvY2tfdHlwZXMuaCIgMgoKCgoKCnR5cGVk ZWYgc3RydWN0IHFyd2xvY2sgewogdW5pb24gewogIGF0b21pY190IGNudHM7CiAgc3RydWN0IHsK CiAgIHU4IHdsb2NrZWQ7CiAgIHU4IF9fbHN0YXRlWzNdOwoKCgoKICB9OwogfTsKIGFyY2hfc3Bp bmxvY2tfdCB3YWl0X2xvY2s7Cn0gYXJjaF9yd2xvY2tfdDsKIyAzMCAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zcGlubG9ja190eXBlcy5oIiAyCiMgMzExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BhcmF2aXJ0X3R5cGVzLmgiIDIKCgpzdHJ1Y3QgcXNwaW5sb2NrOwoKc3RydWN0IHB2X2xvY2tf b3BzIHsKIHZvaWQgKCpxdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKShzdHJ1Y3QgcXNwaW5sb2Nr ICpsb2NrLCB1MzIgdmFsKTsKIHN0cnVjdCBwYXJhdmlydF9jYWxsZWVfc2F2ZSBxdWV1ZWRfc3Bp bl91bmxvY2s7Cgogdm9pZCAoKndhaXQpKHU4ICpwdHIsIHU4IHZhbCk7CiB2b2lkICgqa2ljayko aW50IGNwdSk7Cgogc3RydWN0IHBhcmF2aXJ0X2NhbGxlZV9zYXZlIHZjcHVfaXNfcHJlZW1wdGVk Owp9IDsKCgoKCnN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSB7CiBzdHJ1Y3QgcHZfaW5p dF9vcHMgaW5pdDsKIHN0cnVjdCBwdl90aW1lX29wcyB0aW1lOwogc3RydWN0IHB2X2NwdV9vcHMg Y3B1Owogc3RydWN0IHB2X2lycV9vcHMgaXJxOwogc3RydWN0IHB2X21tdV9vcHMgbW11Owogc3Ry dWN0IHB2X2xvY2tfb3BzIGxvY2s7Cn0gOwoKZXh0ZXJuIHN0cnVjdCBwdl9pbmZvIHB2X2luZm87 CmV4dGVybiBzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUgcHZfb3BzOwojIDM3MCAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9wYXJhdmlydF90eXBlcy5oIgp1bnNpZ25lZCBwYXJhdmlydF9w YXRjaF9pZGVudF82NCh2b2lkICppbnNuX2J1ZmYsIHVuc2lnbmVkIGxlbik7CnVuc2lnbmVkIHBh cmF2aXJ0X3BhdGNoX2RlZmF1bHQodTggdHlwZSwgdm9pZCAqaW5zbl9idWZmLCB1bnNpZ25lZCBs b25nIGFkZHIsIHVuc2lnbmVkIGxlbik7CnVuc2lnbmVkIHBhcmF2aXJ0X3BhdGNoX2luc25zKHZv aWQgKmluc25fYnVmZiwgdW5zaWduZWQgbGVuLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hh ciAqZW5kKTsKCnVuc2lnbmVkIG5hdGl2ZV9wYXRjaCh1OCB0eXBlLCB2b2lkICppbnNuX2J1ZmYs IHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbGVuKTsKCmludCBwYXJhdmlydF9kaXNhYmxl X2lvc3BhY2Uodm9pZCk7CiMgNjUxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0X3R5 cGVzLmgiCmVudW0gcGFyYXZpcnRfbGF6eV9tb2RlIHsKIFBBUkFWSVJUX0xBWllfTk9ORSwKIFBB UkFWSVJUX0xBWllfTU1VLAogUEFSQVZJUlRfTEFaWV9DUFUsCn07CgplbnVtIHBhcmF2aXJ0X2xh enlfbW9kZSBwYXJhdmlydF9nZXRfbGF6eV9tb2RlKHZvaWQpOwp2b2lkIHBhcmF2aXJ0X3N0YXJ0 X2NvbnRleHRfc3dpdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldik7CnZvaWQgcGFyYXZpcnRf ZW5kX2NvbnRleHRfc3dpdGNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCk7Cgp2b2lkIHBhcmF2 aXJ0X2VudGVyX2xhenlfbW11KHZvaWQpOwp2b2lkIHBhcmF2aXJ0X2xlYXZlX2xhenlfbW11KHZv aWQpOwp2b2lkIHBhcmF2aXJ0X2ZsdXNoX2xhenlfbW11KHZvaWQpOwoKdm9pZCBfcGFyYXZpcnRf bm9wKHZvaWQpOwp1NjQgX3BhcmF2aXJ0X2lkZW50XzY0KHU2NCk7CgoKCgpzdHJ1Y3QgcGFyYXZp cnRfcGF0Y2hfc2l0ZSB7CiB1OCAqaW5zdHI7CiB1OCB0eXBlOwogdTggbGVuOwp9OwoKZXh0ZXJu IHN0cnVjdCBwYXJhdmlydF9wYXRjaF9zaXRlIF9fcGFyYWluc3RydWN0aW9uc1tdLAogX19wYXJh aW5zdHJ1Y3Rpb25zX2VuZFtdOwojIDk1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5o IiAyCgoKc3RydWN0IGNwdWluZm9feDg2OwpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpleHRlcm4gdW5z aWduZWQgbG9uZyBwcm9maWxlX3BjKHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKCmV4dGVybiB1bnNp Z25lZCBsb25nCmNvbnZlcnRfaXBfdG9fbGluZWFyKHN0cnVjdCB0YXNrX3N0cnVjdCAqY2hpbGQs IHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKZXh0ZXJuIHZvaWQgc2VuZF9zaWd0cmFwKHN0cnVjdCBw dF9yZWdzICpyZWdzLCBpbnQgZXJyb3JfY29kZSwgaW50IHNpX2NvZGUpOwoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxv bmcgcmVnc19yZXR1cm5fdmFsdWUoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCnsKIHJldHVybiByZWdz LT5heDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCByZWdzX3NldF9yZXR1cm5fdmFsdWUoc3RydWN0IHB0X3JlZ3MgKnJlZ3Ms IHVuc2lnbmVkIGxvbmcgcmMpCnsKIHJlZ3MtPmF4ID0gcmM7Cn0KIyAxMjYgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vcHRyYWNlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB1c2VyX21vZGUoc3RydWN0IHB0X3JlZ3MgKnJlZ3Mp CnsKCgoKIHJldHVybiAhIShyZWdzLT5jcyAmIDMpOwoKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHY4MDg2X21vZGUoc3RydWN0 IHB0X3JlZ3MgKnJlZ3MpCnsKCgoKIHJldHVybiAwOwoKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1c2VyXzY0Yml0X21vZGUo c3RydWN0IHB0X3JlZ3MgKnJlZ3MpCnsKCgoKCgoKIHJldHVybiByZWdzLT5jcyA9PSAoNio4ICsg Myk7CgoKCgoKCgp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhbnlfNjRiaXRfbW9kZShzdHJ1Y3QgcHRfcmVncyAqcmVn cykKewoKIHJldHVybiAhdXNlcl9tb2RlKHJlZ3MpIHx8IHVzZXJfNjRiaXRfbW9kZShyZWdzKTsK CgoKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGtlcm5lbF9zdGFja19wb2ludGVyKHN0cnVjdCBwdF9y ZWdzICpyZWdzKQp7CiByZXR1cm4gcmVncy0+c3A7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgaW5zdHJ1Y3Rp b25fcG9pbnRlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykKewogcmV0dXJuIHJlZ3MtPmlwOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGluc3RydWN0aW9uX3BvaW50ZXJfc2V0KHN0cnVjdCBwdF9yZWdzICpyZWdzLAogIHVuc2ln bmVkIGxvbmcgdmFsKQp7CiByZWdzLT5pcCA9IHZhbDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmcmFtZV9w b2ludGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CiByZXR1cm4gcmVncy0+YnA7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcgdXNlcl9zdGFja19wb2ludGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7CiByZXR1 cm4gcmVncy0+c3A7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgdXNlcl9zdGFja19wb2ludGVyX3NldChzdHJ1Y3QgcHRfcmVn cyAqcmVncywKICB1bnNpZ25lZCBsb25nIHZhbCkKewogcmVncy0+c3AgPSB2YWw7Cn0KCgpleHRl cm4gaW50IHJlZ3NfcXVlcnlfcmVnaXN0ZXJfb2Zmc2V0KGNvbnN0IGNoYXIgKm5hbWUpOwpleHRl cm4gY29uc3QgY2hhciAqcmVnc19xdWVyeV9yZWdpc3Rlcl9uYW1lKHVuc2lnbmVkIGludCBvZmZz ZXQpOwojIDIyNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9u ZyByZWdzX2dldF9yZWdpc3RlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywKICAgICAgICAgICB1bnNp Z25lZCBpbnQgb2Zmc2V0KQp7CiBpZiAoX19idWlsdGluX2V4cGVjdCghIShvZmZzZXQgPiAoX19i dWlsdGluX29mZnNldG9mKHN0cnVjdCBwdF9yZWdzLCBzcykpKSwgMCkpCiAgcmV0dXJuIDA7CiMg MjQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgogcmV0dXJuICoodW5zaWduZWQg bG9uZyAqKSgodW5zaWduZWQgbG9uZylyZWdzICsgb2Zmc2V0KTsKfQojIDI1NCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ3Nfd2l0aGluX2tlcm5lbF9zdGFjayhzdHJ1 Y3QgcHRfcmVncyAqcmVncywKICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHIpCnsKIHJldHVybiAo KGFkZHIgJiB+KCgoKDFVTCkgPDwgMTIpIDw8ICgyICsgMCkpIC0gMSkpID09IChyZWdzLT5zcCAm IH4oKCgoMVVMKSA8PCAxMikgPDwgKDIgKyAwKSkgLSAxKSkpOwp9CiMgMjY5ICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nICpyZWdzX2dldF9rZXJuZWxfc3Rh Y2tfbnRoX2FkZHIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGludCBuKQp7CiB1bnNp Z25lZCBsb25nICphZGRyID0gKHVuc2lnbmVkIGxvbmcgKilyZWdzLT5zcDsKCiBhZGRyICs9IG47 CiBpZiAocmVnc193aXRoaW5fa2VybmVsX3N0YWNrKHJlZ3MsICh1bnNpZ25lZCBsb25nKWFkZHIp KQogIHJldHVybiBhZGRyOwogZWxzZQogIHJldHVybiAoKHZvaWQgKikwKTsKfQoKCmV4dGVybiBs b25nIHByb2JlX2tlcm5lbF9yZWFkKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qg c2l6ZSk7CiMgMjkyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBs b25nIHJlZ3NfZ2V0X2tlcm5lbF9zdGFja19udGgoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCiAgICAg ICAgICAgIHVuc2lnbmVkIGludCBuKQp7CiB1bnNpZ25lZCBsb25nICphZGRyOwogdW5zaWduZWQg bG9uZyB2YWw7CiBsb25nIHJldDsKCiBhZGRyID0gcmVnc19nZXRfa2VybmVsX3N0YWNrX250aF9h ZGRyKHJlZ3MsIG4pOwogaWYgKGFkZHIpIHsKICByZXQgPSBwcm9iZV9rZXJuZWxfcmVhZCgmdmFs LCBhZGRyLCBzaXplb2YodmFsKSk7CiAgaWYgKCFyZXQpCiAgIHJldHVybiB2YWw7CiB9CiByZXR1 cm4gMDsKfQojIDMxOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wdHJhY2UuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQg bG9uZyByZWdzX2dldF9rZXJuZWxfYXJndW1lbnQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsCiAgICAg ICAgICAgdW5zaWduZWQgaW50IG4pCnsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYXJndW1l bnRfb2Zmc1tdID0gewoKCgoKCgogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywg ZGkpLAogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgc2kpLAogIF9fYnVpbHRp bl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgZHgpLAogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1 Y3QgcHRfcmVncywgY3gpLAogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgcjgp LAogIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcHRfcmVncywgcjkpLAoKCiB9OwoKIGlmIChu ID49IDYpIHsKICBuIC09IDYgLSAxOwogIHJldHVybiByZWdzX2dldF9rZXJuZWxfc3RhY2tfbnRo KHJlZ3MsIG4pOwogfSBlbHNlCiAgcmV0dXJuIHJlZ3NfZ2V0X3JlZ2lzdGVyKHJlZ3MsIGFyZ3Vt ZW50X29mZnNbbl0pOwp9CiMgMzU1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3B0cmFjZS5oIgpz dHJ1Y3QgdXNlcl9kZXNjOwpleHRlcm4gaW50IGRvX2dldF90aHJlYWRfYXJlYShzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnAsIGludCBpZHgsCiAgICAgICAgIHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8pOwpl eHRlcm4gaW50IGRvX3NldF90aHJlYWRfYXJlYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBp ZHgsCiAgICAgICAgIHN0cnVjdCB1c2VyX2Rlc2MgKmluZm8sIGludCBjYW5fYWxsb2NhdGUpOwoj IDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2tnZGIuaCIgMgojIDQ5ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL2tnZGIuaCIKZW51bSByZWduYW1lcyB7CiBHREJfQVgsCiBHREJfQlgsCiBHREJf Q1gsCiBHREJfRFgsCiBHREJfU0ksCiBHREJfREksCiBHREJfQlAsCiBHREJfU1AsCiBHREJfUjgs CiBHREJfUjksCiBHREJfUjEwLAogR0RCX1IxMSwKIEdEQl9SMTIsCiBHREJfUjEzLAogR0RCX1Ix NCwKIEdEQl9SMTUsCiBHREJfUEMsCiBHREJfUFMsCiBHREJfQ1MsCiBHREJfU1MsCiBHREJfRFMs CiBHREJfRVMsCiBHREJfRlMsCiBHREJfR1MsCn07CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJjaF9rZ2RiX2JyZWFr cG9pbnQodm9pZCkKewogYXNtKCIgICBpbnQgJDMiKTsKfQoKCgoKZXh0ZXJuIGludCBrZ2RiX2xs X3RyYXAoaW50IGNtZCwgY29uc3QgY2hhciAqc3RyLAogICBzdHJ1Y3QgcHRfcmVncyAqcmVncywg bG9uZyBlcnIsIGludCB0cmFwLCBpbnQgc2lnKTsKIyAyMSAiLi9pbmNsdWRlL2xpbnV4L2tnZGIu aCIgMgojIDMzMyAiLi9pbmNsdWRlL2xpbnV4L2tnZGIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrZ2RiX3BhbmljKGNvbnN0 IGNoYXIgKm1zZykge30KIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL29zX3R5cGVzLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgva3JlZi5oIiAxCiMgMTYg Ii4vaW5jbHVkZS9saW51eC9rcmVmLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgi IDEKIyA1MCAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L3R5cGVjaGVjay5oIiAxCiMgNTEgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgMSAi Li9pbmNsdWRlL2xpbnV4L3ByZWVtcHQuaCIgMQojIDExICIuL2luY2x1ZGUvbGludXgvcHJlZW1w dC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUv bGludXgvcG9pc29uLmgiIDEKIyA4ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIiAyCgojIDEgIi4v aW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMQoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjL3g4Nl82NC1s aW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMSAzIDQKIyA0MCAiL3Vzci9saWIvZ2NjL3g4 Nl82NC1saW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CgojIDQwICIvdXNyL2xpYi9n Y2MveDg2XzY0LWxpbnV4LWdudS8xMC9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKdHlwZWRlZiBfX2J1 aWx0aW5fdmFfbGlzdCBfX2dudWNfdmFfbGlzdDsKIyA5OSAiL3Vzci9saWIvZ2NjL3g4Nl82NC1s aW51eC1nbnUvMTAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19nbnVjX3ZhX2xpc3Qg dmFfbGlzdDsKIyA3ICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiIDIKIyAxICIuL2luY2x1ZGUv bGludXgvbGltaXRzLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvbGltaXRzLmgi IDEKIyA2ICIuL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDIKIyA4ICIuL2luY2x1ZGUvbGludXgv a2VybmVsLmgiIDIKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAxCgoKCiMgMSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS90eXBlcy5oIiAxCiMgNSAiLi9p bmNsdWRlL2xpbnV4L2JpdG9wcy5oIiAyCiMgMjAgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIK CiMgMjAgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKZXh0ZXJuIHVuc2lnbmVkIGludCBfX3N3 X2h3ZWlnaHQ4KHVuc2lnbmVkIGludCB3KTsKZXh0ZXJuIHVuc2lnbmVkIGludCBfX3N3X2h3ZWln aHQxNih1bnNpZ25lZCBpbnQgdyk7CmV4dGVybiB1bnNpZ25lZCBpbnQgX19zd19od2VpZ2h0MzIo dW5zaWduZWQgaW50IHcpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBfX3N3X2h3ZWlnaHQ2NChfX3U2 NCB3KTsKCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDEKIyA1MSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkCmFyY2hfc2V0X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBs b25nICphZGRyKQp7CiBpZiAoX19idWlsdGluX2NvbnN0YW50X3AobnIpKSB7CiAgYXNtIHZvbGF0 aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9u ZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAib3JiICUx LCUwIgogICA6ICIrbSIgKCoodm9sYXRpbGUgY2hhciAqKSAoKHZvaWQgKikoYWRkcikgKyAoKG5y KT4+MykpKQogICA6ICJpcSIgKCh1OCkoMSA8PCAoKG5yKSAmIDcpKSkKICAgOiAibWVtb3J5Iik7 CiB9IGVsc2UgewogIGFzbSB2b2xhdGlsZSgiLnB1c2hzZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJc biIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5cbiIgIi5wb3BzZWN0aW9uXG4iICI2NzE6 IiAiXG5cdGxvY2s7ICIgIiAiICJidHNxIiAiICIgIiAlMSwlMCIKICAgOiA6ICJtIiAoKih2b2xh dGlsZSBsb25nICopIChhZGRyKSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKIH0KfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkCmFyY2hfX19zZXRfYml0KGxvbmcgbnIs IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIGFzbSB2b2xhdGlsZSgiICIgImJ0c3Ei ICIgIiAiICUxLCUwIiA6IDogIm0iICgqKHZvbGF0aWxlIGxvbmcgKikgKGFkZHIpKSwgIklyIiAo bnIpIDogIm1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQKYXJjaF9jbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikK ewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG5yKSkgewogIGFzbSB2b2xhdGlsZSgiLnB1c2hz ZWN0aW9uIC5zbXBfbG9ja3MsXCJhXCJcbiIgIi5iYWxpZ24gNFxuIiAiLmxvbmcgNjcxZiAtIC5c biIgIi5wb3BzZWN0aW9uXG4iICI2NzE6IiAiXG5cdGxvY2s7ICIgImFuZGIgJTEsJTAiCiAgIDog IittIiAoKih2b2xhdGlsZSBjaGFyICopICgodm9pZCAqKShhZGRyKSArICgobnIpPj4zKSkpCiAg IDogImlxIiAoKHU4KX4oMSA8PCAoKG5yKSAmIDcpKSkpOwogfSBlbHNlIHsKICBhc20gdm9sYXRp bGUoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5sb25n IDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICIgIiAiYnRy cSIgIiAiICIgJTEsJTAiCiAgIDogOiAibSIgKCoodm9sYXRpbGUgbG9uZyAqKSAoYWRkcikpLCAi SXIiIChucikgOiAibWVtb3J5Iik7CiB9Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZAphcmNoX2NsZWFyX2JpdF91bmxvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWdu ZWQgbG9uZyAqYWRkcikKewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK IGFyY2hfY2xlYXJfYml0KG5yLCBhZGRyKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkCmFyY2hfX19jbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKewogYXNtIHZvbGF0aWxlKCIgIiAiYnRycSIgIiAiICIgJTEsJTAiIDogOiAi bSIgKCoodm9sYXRpbGUgbG9uZyAqKSAoYWRkcikpLCAiSXIiIChucikgOiAibWVtb3J5Iik7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9vbAphcmNoX2NsZWFyX2JpdF91 bmxvY2tfaXNfbmVnYXRpdmVfYnl0ZShsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICph ZGRyKQp7CiBib29sIG5lZ2F0aXZlOwogYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9s b2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rp b25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiYW5kYiAlMiwlMSIKICAiXG5cdC8qIG91dHB1dCBj b25kaXRpb24gY29kZSAiICJzIiAiKi9cbiIKICA6ICI9QGNjIiAicyIgKG5lZ2F0aXZlKSwgIitt IiAoKih2b2xhdGlsZSBjaGFyICopIChhZGRyKSkKICA6ICJpciIgKChjaGFyKSB+KDEgPDwgbnIp KSA6ICJtZW1vcnkiKTsKIHJldHVybiBuZWdhdGl2ZTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQKYXJjaF9fX2NsZWFyX2JpdF91bmxvY2sobG9uZyBuciwgdm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewogYXJjaF9fX2NsZWFyX2JpdChuciwgYWRkcik7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZAphcmNoX19fY2hhbmdl X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQp7CiBhc20gdm9sYXRp bGUoIiAiICJidGNxIiAiICIgIiAlMSwlMCIgOiA6ICJtIiAoKih2b2xhdGlsZSBsb25nICopIChh ZGRyKSksICJJciIgKG5yKSA6ICJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkCmFyY2hfY2hhbmdlX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25l ZCBsb25nICphZGRyKQp7CiBpZiAoX19idWlsdGluX2NvbnN0YW50X3AobnIpKSB7CiAgYXNtIHZv bGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAieG9y YiAlMSwlMCIKICAgOiAiK20iICgqKHZvbGF0aWxlIGNoYXIgKikgKCh2b2lkICopKGFkZHIpICsg KChucik+PjMpKSkKICAgOiAiaXEiICgodTgpKDEgPDwgKChucikgJiA3KSkpKTsKIH0gZWxzZSB7 CiAgYXNtIHZvbGF0aWxlKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGln biA0XG4iICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9j azsgIiAiICIgImJ0Y3EiICIgIiAiICUxLCUwIgogICA6IDogIm0iICgqKHZvbGF0aWxlIGxvbmcg KikgKGFkZHIpKSwgIklyIiAobnIpIDogIm1lbW9yeSIpOwogfQp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIGJvb2wKYXJjaF90ZXN0X2FuZF9zZXRfYml0KGxvbmcgbnIsIHZv bGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xh dGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRcbiIgIi5s b25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAiICIgIiAi YnRzcSIgIiAiICIgJVt2YWxdLCAiICIlW3Zhcl0iICJcblx0Lyogb3V0cHV0IGNvbmRpdGlvbiBj b2RlICIgImMiICIqL1xuIiA6IFt2YXJdICIrbSIgKCphZGRyKSwgIj1AY2MiICJjIiAoYykgOiBb dmFsXSAiSXIiIChucikgOiAibWVtb3J5Iik7IGM7IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGJvb2wKYXJjaF90ZXN0X2FuZF9zZXRfYml0X2xvY2sobG9uZyBuciwg dm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewogcmV0dXJuIGFyY2hfdGVzdF9hbmRfc2V0 X2JpdChuciwgYWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgYm9v bAphcmNoX19fdGVzdF9hbmRfc2V0X2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25n ICphZGRyKQp7CiBib29sIG9sZGJpdDsKCiBhc20oIiAiICJidHNxIiAiICIgIiAlMiwlMSIKICAg ICAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJjIiAiKi9cbiIKICAgICA6ICI9QGNj IiAiYyIgKG9sZGJpdCkKICAgICA6ICJtIiAoKih2b2xhdGlsZSBsb25nICopIChhZGRyKSksICJJ ciIgKG5yKSA6ICJtZW1vcnkiKTsKIHJldHVybiBvbGRiaXQ7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgYm9vbAphcmNoX3Rlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2 b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQp7CiByZXR1cm4gKHsgYm9vbCBjOyBhc20gdm9s YXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4iICIu bG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAiICIg ImJ0cnEiICIgIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24g Y29kZSAiICJjIiAiKi9cbiIgOiBbdmFyXSAiK20iICgqYWRkciksICI9QGNjIiAiYyIgKGMpIDog W3ZhbF0gIklyIiAobnIpIDogIm1lbW9yeSIpOyBjOyB9KTsKfQojIDE3MyAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBi b29sCmFyY2hfX190ZXN0X2FuZF9jbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQg bG9uZyAqYWRkcikKewogYm9vbCBvbGRiaXQ7CgogYXNtIHZvbGF0aWxlKCIgIiAiYnRycSIgIiAi ICIgJTIsJTEiCiAgICAgICAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJjIiAiKi9c biIKICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0KQogICAgICAgOiAibSIgKCoodm9sYXRpbGUg bG9uZyAqKSAoYWRkcikpLCAiSXIiIChucikgOiAibWVtb3J5Iik7CiByZXR1cm4gb2xkYml0Owp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJvb2wKYXJjaF9fX3Rlc3RfYW5k X2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewogYm9v bCBvbGRiaXQ7CgogYXNtIHZvbGF0aWxlKCIgIiAiYnRjcSIgIiAiICIgJTIsJTEiCiAgICAgICAi XG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJjIiAiKi9cbiIKICAgICAgIDogIj1AY2Mi ICJjIiAob2xkYml0KQogICAgICAgOiAibSIgKCoodm9sYXRpbGUgbG9uZyAqKSAoYWRkcikpLCAi SXIiIChucikgOiAibWVtb3J5Iik7CgogcmV0dXJuIG9sZGJpdDsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBib29sCmFyY2hfdGVzdF9hbmRfY2hhbmdlX2JpdChsb25nIG5y LCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQp7CiByZXR1cm4gKHsgYm9vbCBjOyBhc20g dm9sYXRpbGUgKCIucHVzaHNlY3Rpb24gLnNtcF9sb2NrcyxcImFcIlxuIiAiLmJhbGlnbiA0XG4i ICIubG9uZyA2NzFmIC0gLlxuIiAiLnBvcHNlY3Rpb25cbiIgIjY3MToiICJcblx0bG9jazsgIiAi ICIgImJ0Y3EiICIgIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRp b24gY29kZSAiICJjIiAiKi9cbiIgOiBbdmFyXSAiK20iICgqYWRkciksICI9QGNjIiAiYyIgKGMp IDogW3ZhbF0gIklyIiAobnIpIDogIm1lbW9yeSIpOyBjOyB9KTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBib29sIGNvbnN0YW50X3Rlc3RfYml0KGxvbmcgbnIsIGNvbnN0 IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIHJldHVybiAoKDFVTCA8PCAobnIgJiAo NjQgLTEpKSkgJgogIChhZGRyW25yID4+IDZdKSkgIT0gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBib29sIHZhcmlhYmxlX3Rlc3RfYml0KGxvbmcgbnIsIHZvbGF0aWxl IGNvbnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIGJvb2wgb2xkYml0OwoKIGFzbSB2b2xhdGls ZSgiICIgImJ0cSIgIiAiICIgJTIsJTEiCiAgICAgICAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24g Y29kZSAiICJjIiAiKi9cbiIKICAgICAgIDogIj1AY2MiICJjIiAob2xkYml0KQogICAgICAgOiAi bSIgKCoodW5zaWduZWQgbG9uZyAqKWFkZHIpLCAiSXIiIChucikgOiAibWVtb3J5Iik7CgogcmV0 dXJuIG9sZGJpdDsKfQojIDIzMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIF9fZmZzKHVuc2ln bmVkIGxvbmcgd29yZCkKewogYXNtKCJyZXA7IGJzZiAlMSwlMCIKICA6ICI9ciIgKHdvcmQpCiAg OiAicm0iICh3b3JkKSk7CiByZXR1cm4gd29yZDsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGZmeih1bnNpZ25lZCBsb25nIHdvcmQpCnsK IGFzbSgicmVwOyBic2YgJTEsJTAiCiAgOiAiPXIiICh3b3JkKQogIDogInIiICh+d29yZCkpOwog cmV0dXJuIHdvcmQ7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dW5zaWduZWQgbG9uZyBfX2Zscyh1bnNpZ25lZCBsb25nIHdvcmQpCnsKIGFzbSgiYnNyICUxLCUw IgogICAgIDogIj1yIiAod29yZCkKICAgICA6ICJybSIgKHdvcmQpKTsKIHJldHVybiB3b3JkOwp9 CiMgMjgzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIGludCBmZnMoaW50IHgpCnsKIGludCByOwojIDI5NyAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9iaXRvcHMuaCIKIGFzbSgiYnNmbCAlMSwlMCIKICAgICA6ICI9ciIg KHIpCiAgICAgOiAicm0iICh4KSwgIjAiICgtMSkpOwojIDMxMCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9iaXRvcHMuaCIKIHJldHVybiByICsgMTsKfQojIDMyNCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgZmxz KHVuc2lnbmVkIGludCB4KQp7CiBpbnQgcjsKIyAzMzggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v Yml0b3BzLmgiCiBhc20oImJzcmwgJTEsJTAiCiAgICAgOiAiPXIiIChyKQogICAgIDogInJtIiAo eCksICIwIiAoLTEpKTsKIyAzNTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCiBy ZXR1cm4gciArIDE7Cn0KIyAzNjYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IGZsczY0KF9fdTY0IHgpCnsKIGlu dCBiaXRwb3MgPSAtMTsKCgoKCgogYXNtKCJic3JxICUxLCVxMCIKICAgICA6ICIrciIgKGJpdHBv cykKICAgICA6ICJybSIgKHgpKTsKIHJldHVybiBiaXRwb3MgKyAxOwp9CgoKCgojIDEgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIiAxCiMgMTUgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9iaXRvcHMvZmluZC5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBmaW5kX25leHRfYml0KGNv bnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIsIHVuc2lnbmVkIGxvbmcKICBzaXplLCB1bnNpZ25lZCBs b25nIG9mZnNldCk7CiMgMzAgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvZmluZC5oIgpl eHRlcm4gdW5zaWduZWQgbG9uZyBmaW5kX25leHRfYW5kX2JpdChjb25zdCB1bnNpZ25lZCBsb25n ICphZGRyMSwKICBjb25zdCB1bnNpZ25lZCBsb25nICphZGRyMiwgdW5zaWduZWQgbG9uZyBzaXpl LAogIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKIyA0NSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2Jp dG9wcy9maW5kLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdChjb25z dCB1bnNpZ25lZCBsb25nICphZGRyLCB1bnNpZ25lZAogIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9u ZyBvZmZzZXQpOwojIDU5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2ZpbmQuaCIKZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgZmluZF9maXJzdF9iaXQoY29uc3QgdW5zaWduZWQgbG9uZyAqYWRk ciwKICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwojIDcwICIuL2luY2x1ZGUvYXNtLWdlbmVy aWMvYml0b3BzL2ZpbmQuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZmluZF9maXJzdF96ZXJvX2Jp dChjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLAogICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwoj IDkzICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2ZpbmQuaCIKZXh0ZXJuIHVuc2lnbmVk IGxvbmcgZmluZF9uZXh0X2NsdW1wOCh1bnNpZ25lZCBsb25nICpjbHVtcCwKICAgICAgICAgIGNv bnN0IHVuc2lnbmVkIGxvbmcgKmFkZHIsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHVu c2lnbmVkIGxvbmcgb2Zmc2V0KTsKIyAzODQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3Bz LmgiIDIKCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9zY2hlZC5oIiAxCgoKCgoK IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKIyA3 ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL3NjaGVkLmgiIDIKCgoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHNjaGVk X2ZpbmRfZmlyc3RfYml0KGNvbnN0IHVuc2lnbmVkIGxvbmcgKmIpCnsKCiBpZiAoYlswXSkKICBy ZXR1cm4gX19mZnMoYlswXSk7CiByZXR1cm4gX19mZnMoYlsxXSkgKyA2NDsKIyAzMCAiLi9pbmNs dWRlL2FzbS1nZW5lcmljL2JpdG9wcy9zY2hlZC5oIgp9CiMgMzg2ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2JpdG9wcy5oIiAyCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXJjaF9od2Vp Z2h0LmgiIDEKIyAxNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcmNoX2h3ZWlnaHQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBpbnQgX19hcmNoX2h3ZWln aHQzMih1bnNpZ25lZCBpbnQgdykKewogdW5zaWduZWQgaW50IHJlczsKCiBhc20gKCIjIEFMVDog b2xkbnN0clxuIiAiNjYxOlxuXHQiICJjYWxsIF9fc3dfaHdlaWdodDMyIiAiXG42NjI6XG4iICIj IEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikt KCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAu YWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2 NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA0KjMyKzIzKSIgIlxuIiAiIC5ieXRlICIgIjY2 MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIg LmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24g LmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIx IiAiXG4iICI2NjQiIjEiIjpcblx0IiAicG9wY250bCAlMSwgJTAiICJcbiIgIjY2NSIiMSIgIjpc biIgIi5wb3BzZWN0aW9uXG4iCiAgICA6ICI9IiJhIiAocmVzKQogICAgOiAiRCIgKHcpKTsKCiBy ZXR1cm4gcmVzOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgX19hcmNoX2h3ZWlnaHQxNih1bnNpZ25lZCBpbnQg dykKewogcmV0dXJuIF9fYXJjaF9od2VpZ2h0MzIodyAmIDB4ZmZmZik7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGlu dCBfX2FyY2hfaHdlaWdodDgodW5zaWduZWQgaW50IHcpCnsKIHJldHVybiBfX2FyY2hfaHdlaWdo dDMyKHcgJiAweGZmKTsKfQojIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FyY2hfaHdlaWdo dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgX19h cmNoX2h3ZWlnaHQ2NChfX3U2NCB3KQp7CiB1bnNpZ25lZCBsb25nIHJlczsKCiBhc20gKCIjIEFM VDogb2xkbnN0clxuIiAiNjYxOlxuXHQiICJjYWxsIF9fc3dfaHdlaWdodDY0IiAiXG42NjI6XG4i ICIjIEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIg IiktKCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIi ZiIgIiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlv biAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAi ICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA0KjMyKzIzKSIgIlxuIiAiIC5ieXRlICIg IjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4i ICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rp b24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAi ICIxIiAiXG4iICI2NjQiIjEiIjpcblx0IiAicG9wY250cSAlMSwgJTAiICJcbiIgIjY2NSIiMSIg IjpcbiIgIi5wb3BzZWN0aW9uXG4iCiAgICA6ICI9IiJhIiAocmVzKQogICAgOiAiRCIgKHcpKTsK CiByZXR1cm4gcmVzOwp9CiMgMzg4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAy CgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvY29uc3RfaHdlaWdodC5oIiAxCiMg MzkwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCgojIDEgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIiAxCiMgMjYgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF9iaXQo bG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3Jp dGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogYXJjaF9zZXRfYml0KG5yLCBh ZGRyKTsKfQojIDM5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1h dG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBjbGVhcl9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAq YWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9u ZykpOwogYXJjaF9jbGVhcl9iaXQobnIsIGFkZHIpOwp9CiMgNTUgIi4vaW5jbHVkZS9hc20tZ2Vu ZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNoYW5nZV9iaXQobG9uZyBu ciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRk ciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogYXJjaF9jaGFuZ2VfYml0KG5yLCBhZGRy KTsKfQojIDY4ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1hdG9t aWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgYm9vbCB0ZXN0X2FuZF9zZXRfYml0KGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxv bmcgKmFkZHIpCnsKIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9m KGxvbmcpKTsKIHJldHVybiBhcmNoX3Rlc3RfYW5kX3NldF9iaXQobnIsIGFkZHIpOwp9CiMgODEg Ii4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IHRlc3RfYW5kX2NsZWFyX2JpdChsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRy KQp7CiBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNpemVvZihsb25nKSk7 CiByZXR1cm4gYXJjaF90ZXN0X2FuZF9jbGVhcl9iaXQobnIsIGFkZHIpOwp9CiMgOTQgIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWF0b21pYy5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRlc3Rf YW5kX2NoYW5nZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewog a2FzYW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0 dXJuIGFyY2hfdGVzdF9hbmRfY2hhbmdlX2JpdChuciwgYWRkcik7Cn0KIyAzOTIgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKIyAxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0 b3BzL2luc3RydW1lbnRlZC1ub24tYXRvbWljLmgiIDEKIyAyNSAiLi9pbmNsdWRlL2FzbS1nZW5l cmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtbm9uLWF0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fc2V0X2JpdChsb25n IG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKQp7CiBrYXNhbl9jaGVja193cml0ZShh ZGRyICsgKChucikgLyA2NCksIHNpemVvZihsb25nKSk7CiBhcmNoX19fc2V0X2JpdChuciwgYWRk cik7Cn0KIyA0MCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcy9pbnN0cnVtZW50ZWQtbm9u LWF0b21pYy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIF9fY2xlYXJfYml0KGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxv bmcgKmFkZHIpCnsKIGthc2FuX2NoZWNrX3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9m KGxvbmcpKTsKIGFyY2hfX19jbGVhcl9iaXQobnIsIGFkZHIpOwp9CiMgNTUgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NoYW5n ZV9iaXQobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hl Y2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogYXJjaF9fX2NoYW5n ZV9iaXQobnIsIGFkZHIpOwp9CiMgNjkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5z dHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX3Rlc3RfYW5kX3NldF9iaXQobG9uZyBuciwg dm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRkciAr ICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIGFyY2hfX190ZXN0X2FuZF9zZXRf Yml0KG5yLCBhZGRyKTsKfQojIDgzICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3Ry dW1lbnRlZC1ub24tYXRvbWljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgX190ZXN0X2FuZF9jbGVhcl9iaXQobG9uZyBuciwg dm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRkciAr ICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIGFyY2hfX190ZXN0X2FuZF9jbGVh cl9iaXQobnIsIGFkZHIpOwp9CiMgOTcgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5z dHJ1bWVudGVkLW5vbi1hdG9taWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBfX3Rlc3RfYW5kX2NoYW5nZV9iaXQobG9uZyBu ciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3JpdGUoYWRk ciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIGFyY2hfX190ZXN0X2FuZF9j aGFuZ2VfYml0KG5yLCBhZGRyKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRlc3RfYml0KGxvbmcgbnIsIGNvbnN0 IHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIGthc2FuX2NoZWNrX3JlYWQoYWRkciAr ICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIChfX2J1aWx0aW5fY29uc3RhbnRf cCgobnIpKSA/IGNvbnN0YW50X3Rlc3RfYml0KChuciksIChhZGRyKSkgOiB2YXJpYWJsZV90ZXN0 X2JpdCgobnIpLCAoYWRkcikpKTsKfQojIDM5MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9iaXRv cHMuaCIgMgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxv Y2suaCIgMQojIDIzICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvYml0b3BzL2luc3RydW1lbnRlZC1s b2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgY2xlYXJfYml0X3VubG9jayhsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBs b25nICphZGRyKQp7CiBrYXNhbl9jaGVja193cml0ZShhZGRyICsgKChucikgLyA2NCksIHNpemVv Zihsb25nKSk7CiBhcmNoX2NsZWFyX2JpdF91bmxvY2sobnIsIGFkZHIpOwp9CiMgMzggIi4vaW5j bHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxvY2suaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2NsZWFy X2JpdF91bmxvY2sobG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2Fz YW5fY2hlY2tfd3JpdGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogYXJjaF9f X2NsZWFyX2JpdF91bmxvY2sobnIsIGFkZHIpOwp9CiMgNTMgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9iaXRvcHMvaW5zdHJ1bWVudGVkLWxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0ZXN0X2FuZF9zZXRfYml0X2xvY2so bG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcikKewoga2FzYW5fY2hlY2tfd3Jp dGUoYWRkciArICgobnIpIC8gNjQpLCBzaXplb2YobG9uZykpOwogcmV0dXJuIGFyY2hfdGVzdF9h bmRfc2V0X2JpdF9sb2NrKG5yLCBhZGRyKTsKfQojIDcxICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv Yml0b3BzL2luc3RydW1lbnRlZC1sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wKY2xlYXJfYml0X3VubG9ja19pc19uZWdh dGl2ZV9ieXRlKGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKIGthc2Fu X2NoZWNrX3dyaXRlKGFkZHIgKyAoKG5yKSAvIDY0KSwgc2l6ZW9mKGxvbmcpKTsKIHJldHVybiBh cmNoX2NsZWFyX2JpdF91bmxvY2tfaXNfbmVnYXRpdmVfYnl0ZShuciwgYWRkcik7Cn0KIyAzOTQg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2FzbS1n ZW5lcmljL2JpdG9wcy9sZS5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0 ZWQvdWFwaS9hc20vdHlwZXMuaCIgMQojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMv bGUuaCIgMgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGZpbmRfbmV4dF96ZXJvX2JpdF9sZShjb25zdCB2 b2lkICphZGRyLAogIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQpCnsK IHJldHVybiBmaW5kX25leHRfemVyb19iaXQoYWRkciwgc2l6ZSwgb2Zmc2V0KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWdu ZWQgbG9uZyBmaW5kX25leHRfYml0X2xlKGNvbnN0IHZvaWQgKmFkZHIsCiAgdW5zaWduZWQgbG9u ZyBzaXplLCB1bnNpZ25lZCBsb25nIG9mZnNldCkKewogcmV0dXJuIGZpbmRfbmV4dF9iaXQoYWRk ciwgc2l6ZSwgb2Zmc2V0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBmaW5kX2ZpcnN0X3plcm9fYml0X2xl KGNvbnN0IHZvaWQgKmFkZHIsCiAgdW5zaWduZWQgbG9uZyBzaXplKQp7CiByZXR1cm4gZmluZF9m aXJzdF96ZXJvX2JpdChhZGRyLCBzaXplKTsKfQojIDUzICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv Yml0b3BzL2xlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCB0ZXN0X2JpdF9sZShpbnQgbnIsIGNvbnN0IHZvaWQgKmFkZHIpCnsK IHJldHVybiB0ZXN0X2JpdChuciBeIDAsIGFkZHIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF9iaXRfbGUoaW50IG5y LCB2b2lkICphZGRyKQp7CiBzZXRfYml0KG5yIF4gMCwgYWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY2xlYXJfYml0 X2xlKGludCBuciwgdm9pZCAqYWRkcikKewogY2xlYXJfYml0KG5yIF4gMCwgYWRkcik7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgX19zZXRfYml0X2xlKGludCBuciwgdm9pZCAqYWRkcikKewogX19zZXRfYml0KG5yIF4gMCwg YWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgX19jbGVhcl9iaXRfbGUoaW50IG5yLCB2b2lkICphZGRyKQp7CiBfX2Ns ZWFyX2JpdChuciBeIDAsIGFkZHIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGVzdF9hbmRfc2V0X2JpdF9sZShpbnQgbnIs IHZvaWQgKmFkZHIpCnsKIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KG5yIF4gMCwgYWRkcik7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCB0ZXN0X2FuZF9jbGVhcl9iaXRfbGUoaW50IG5yLCB2b2lkICphZGRyKQp7CiByZXR1cm4g dGVzdF9hbmRfY2xlYXJfYml0KG5yIF4gMCwgYWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX3Rlc3RfYW5kX3NldF9i aXRfbGUoaW50IG5yLCB2b2lkICphZGRyKQp7CiByZXR1cm4gX190ZXN0X2FuZF9zZXRfYml0KG5y IF4gMCwgYWRkcik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBfX3Rlc3RfYW5kX2NsZWFyX2JpdF9sZShpbnQgbnIsIHZvaWQg KmFkZHIpCnsKIHJldHVybiBfX3Rlc3RfYW5kX2NsZWFyX2JpdChuciBeIDAsIGFkZHIpOwp9CiMg Mzk2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2JpdG9wcy5oIiAyCgojIDEgIi4vaW5jbHVkZS9h c20tZ2VuZXJpYy9iaXRvcHMvZXh0Mi1hdG9taWMtc2V0Yml0LmgiIDEKIyAzOTggIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYml0b3BzLmgiIDIKIyAzMCAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5o IiAyCiMgNjUgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGdldF9iaXRtYXNrX29yZGVy KHVuc2lnbmVkIGludCBjb3VudCkKewogaW50IG9yZGVyOwoKIG9yZGVyID0gZmxzKGNvdW50KTsK IHJldHVybiBvcmRlcjsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB1bnNp Z25lZCBsb25nIGh3ZWlnaHRfbG9uZyh1bnNpZ25lZCBsb25nIHcpCnsKIHJldHVybiBzaXplb2Yo dykgPT0gNCA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCh3KSA/ICgoKCh1bnNpZ25lZCBpbnQpICgo ISEoKHcpICYgKDFVTEwgPDwgMCkpKSArICghISgodykgJiAoMVVMTCA8PCAxKSkpICsgKCEhKCh3 KSAmICgxVUxMIDw8IDIpKSkgKyAoISEoKHcpICYgKDFVTEwgPDwgMykpKSArICghISgodykgJiAo MVVMTCA8PCA0KSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDUpKSkgKyAoISEoKHcpICYgKDFVTEwg PDwgNikpKSArICghISgodykgJiAoMVVMTCA8PCA3KSkpKSkgKyAoKHVuc2lnbmVkIGludCkgKCgh ISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMCkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwg MSkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgMikpKSArICghISgoKHcpID4+IDgpICYg KDFVTEwgPDwgMykpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNCkpKSArICghISgoKHcp ID4+IDgpICYgKDFVTEwgPDwgNSkpKSArICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNikpKSAr ICghISgoKHcpID4+IDgpICYgKDFVTEwgPDwgNykpKSkpKSArICgoKHVuc2lnbmVkIGludCkgKCgh ISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDApKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8 PCAxKSkpICsgKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgMikpKSArICghISgoKHcpID4+IDE2 KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCA0KSkpICsgKCEh KCgodykgPj4gMTYpICYgKDFVTEwgPDwgNSkpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8 IDYpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCA3KSkpKSkgKyAoKHVuc2lnbmVkIGlu dCkgKCghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAwKSkpICsgKCEhKCgoKHcpID4+ IDE2KSA+PiA4KSAmICgxVUxMIDw8IDEpKSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFV TEwgPDwgMikpKSArICghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAzKSkpICsgKCEh KCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKCgodykgPj4gMTYpID4+ IDgpICYgKDFVTEwgPDwgNSkpKSArICghISgoKCh3KSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA2 KSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDcpKSkpKSkpIDogX19hcmNo X2h3ZWlnaHQzMih3KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AodykgPyAoKCgoKHVuc2lnbmVk IGludCkgKCghISgodykgJiAoMVVMTCA8PCAwKSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDEpKSkg KyAoISEoKHcpICYgKDFVTEwgPDwgMikpKSArICghISgodykgJiAoMVVMTCA8PCAzKSkpICsgKCEh KCh3KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKHcpICYgKDFVTEwgPDwgNSkpKSArICghISgodykg JiAoMVVMTCA8PCA2KSkpICsgKCEhKCh3KSAmICgxVUxMIDw8IDcpKSkpKSArICgodW5zaWduZWQg aW50KSAoKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAwKSkpICsgKCEhKCgodykgPj4gOCkgJiAo MVVMTCA8PCAxKSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgodykg Pj4gOCkgJiAoMVVMTCA8PCAzKSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA0KSkpICsg KCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8 PCA2KSkpICsgKCEhKCgodykgPj4gOCkgJiAoMVVMTCA8PCA3KSkpKSkpICsgKCgodW5zaWduZWQg aW50KSAoKCEhKCgodykgPj4gMTYpICYgKDFVTEwgPDwgMCkpKSArICghISgoKHcpID4+IDE2KSAm ICgxVUxMIDw8IDEpKSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgo dykgPj4gMTYpICYgKDFVTEwgPDwgMykpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDQp KSkgKyAoISEoKCh3KSA+PiAxNikgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgodykgPj4gMTYpICYg KDFVTEwgPDwgNikpKSArICghISgoKHcpID4+IDE2KSAmICgxVUxMIDw8IDcpKSkpKSArICgodW5z aWduZWQgaW50KSAoKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDApKSkgKyAoISEo KCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICghISgoKCh3KSA+PiAxNikgPj4g OCkgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDMp KSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNCkpKSArICghISgoKCh3KSA+ PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgoKHcpID4+IDE2KSA+PiA4KSAmICgx VUxMIDw8IDYpKSkgKyAoISEoKCgodykgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNykpKSkpKSkg KyAoKCgodW5zaWduZWQgaW50KSAoKCEhKCgodykgPj4gMzIpICYgKDFVTEwgPDwgMCkpKSArICgh ISgoKHcpID4+IDMyKSAmICgxVUxMIDw8IDEpKSkgKyAoISEoKCh3KSA+PiAzMikgJiAoMVVMTCA8 PCAyKSkpICsgKCEhKCgodykgPj4gMzIpICYgKDFVTEwgPDwgMykpKSArICghISgoKHcpID4+IDMy KSAmICgxVUxMIDw8IDQpKSkgKyAoISEoKCh3KSA+PiAzMikgJiAoMVVMTCA8PCA1KSkpICsgKCEh KCgodykgPj4gMzIpICYgKDFVTEwgPDwgNikpKSArICghISgoKHcpID4+IDMyKSAmICgxVUxMIDw8 IDcpKSkpKSArICgodW5zaWduZWQgaW50KSAoKCEhKCgoKHcpID4+IDMyKSA+PiA4KSAmICgxVUxM IDw8IDApKSkgKyAoISEoKCgodykgPj4gMzIpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICghISgo KCh3KSA+PiAzMikgPj4gOCkgJiAoMVVMTCA8PCAyKSkpICsgKCEhKCgoKHcpID4+IDMyKSA+PiA4 KSAmICgxVUxMIDw8IDMpKSkgKyAoISEoKCgodykgPj4gMzIpID4+IDgpICYgKDFVTEwgPDwgNCkp KSArICghISgoKCh3KSA+PiAzMikgPj4gOCkgJiAoMVVMTCA8PCA1KSkpICsgKCEhKCgoKHcpID4+ IDMyKSA+PiA4KSAmICgxVUxMIDw8IDYpKSkgKyAoISEoKCgodykgPj4gMzIpID4+IDgpICYgKDFV TEwgPDwgNykpKSkpKSArICgoKHVuc2lnbmVkIGludCkgKCghISgoKCh3KSA+PiAzMikgPj4gMTYp ICYgKDFVTEwgPDwgMCkpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMSkp KSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMikpKSArICghISgoKCh3KSA+ PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgMykpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYg KDFVTEwgPDwgNCkpKSArICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgNSkpKSAr ICghISgoKCh3KSA+PiAzMikgPj4gMTYpICYgKDFVTEwgPDwgNikpKSArICghISgoKCh3KSA+PiAz MikgPj4gMTYpICYgKDFVTEwgPDwgNykpKSkpICsgKCh1bnNpZ25lZCBpbnQpICgoISEoKCgoKHcp ID4+IDMyKSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCAwKSkpICsgKCEhKCgoKCh3KSA+PiAzMikg Pj4gMTYpID4+IDgpICYgKDFVTEwgPDwgMSkpKSArICghISgoKCgodykgPj4gMzIpID4+IDE2KSA+ PiA4KSAmICgxVUxMIDw8IDIpKSkgKyAoISEoKCgoKHcpID4+IDMyKSA+PiAxNikgPj4gOCkgJiAo MVVMTCA8PCAzKSkpICsgKCEhKCgoKCh3KSA+PiAzMikgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwg NCkpKSArICghISgoKCgodykgPj4gMzIpID4+IDE2KSA+PiA4KSAmICgxVUxMIDw8IDUpKSkgKyAo ISEoKCgoKHcpID4+IDMyKSA+PiAxNikgPj4gOCkgJiAoMVVMTCA8PCA2KSkpICsgKCEhKCgoKCh3 KSA+PiAzMikgPj4gMTYpID4+IDgpICYgKDFVTEwgPDwgNykpKSkpKSkpIDogX19hcmNoX2h3ZWln aHQ2NCh3KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191NjQgcm9sNjQoX191NjQgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgNjMpKSB8ICh3b3JkID4+ICgoLXNoaWZ0 KSAmIDYzKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191NjQgcm9yNjQoX191NjQgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPj4gKHNoaWZ0ICYgNjMpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0 KSAmIDYzKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MzIgcm9sMzIoX191MzIgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgMzEpKSB8ICh3b3JkID4+ICgoLXNoaWZ0 KSAmIDMxKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MzIgcm9yMzIoX191MzIgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPj4gKHNoaWZ0ICYgMzEpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0 KSAmIDMxKSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MTYgcm9sMTYoX191MTYgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgMTUpKSB8ICh3b3JkID4+ICgoLXNoaWZ0 KSAmIDE1KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191MTYgcm9yMTYoX191MTYgd29yZCwgdW5zaWduZWQgaW50IHNo aWZ0KQp7CiByZXR1cm4gKHdvcmQgPj4gKHNoaWZ0ICYgMTUpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0 KSAmIDE1KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX191OCByb2w4KF9fdTggd29yZCwgdW5zaWduZWQgaW50IHNoaWZ0 KQp7CiByZXR1cm4gKHdvcmQgPDwgKHNoaWZ0ICYgNykpIHwgKHdvcmQgPj4gKCgtc2hpZnQpICYg NykpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fdTggcm9yOChfX3U4IHdvcmQsIHVuc2lnbmVkIGludCBzaGlmdCkKewog cmV0dXJuICh3b3JkID4+IChzaGlmdCAmIDcpKSB8ICh3b3JkIDw8ICgoLXNoaWZ0KSAmIDcpKTsK fQojIDE2NSAiLi9pbmNsdWRlL2xpbnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX3MzMiBzaWduX2V4dGVuZDMyKF9f dTMyIHZhbHVlLCBpbnQgaW5kZXgpCnsKIF9fdTggc2hpZnQgPSAzMSAtIGluZGV4OwogcmV0dXJu IChfX3MzMikodmFsdWUgPDwgc2hpZnQpID4+IHNoaWZ0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fczY0IHNpZ25fZXh0 ZW5kNjQoX191NjQgdmFsdWUsIGludCBpbmRleCkKewogX191OCBzaGlmdCA9IDYzIC0gaW5kZXg7 CiByZXR1cm4gKF9fczY0KSh2YWx1ZSA8PCBzaGlmdCkgPj4gc2hpZnQ7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGZs c19sb25nKHVuc2lnbmVkIGxvbmcgbCkKewogaWYgKHNpemVvZihsKSA9PSA0KQogIHJldHVybiBm bHMobCk7CiByZXR1cm4gZmxzNjQobCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZXRfY291bnRfb3JkZXIodW5zaWduZWQg aW50IGNvdW50KQp7CiBpbnQgb3JkZXI7Cgogb3JkZXIgPSBmbHMoY291bnQpIC0gMTsKIGlmIChj b3VudCAmIChjb3VudCAtIDEpKQogIG9yZGVyKys7CiByZXR1cm4gb3JkZXI7Cn0KCgoKCgoKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBnZXRfY291bnRfb3JkZXJfbG9uZyh1bnNpZ25lZCBsb25nIGwpCnsKIGlmIChsID09IDBVTCkK ICByZXR1cm4gLTE7CiBlbHNlIGlmIChsICYgKGwgLSAxVUwpKQogIHJldHVybiAoaW50KWZsc19s b25nKGwpOwogZWxzZQogIHJldHVybiAoaW50KWZsc19sb25nKGwpIC0gMTsKfQojIDIyMyAiLi9p bmNsdWRlL2xpbnV4L2JpdG9wcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9fZmZzNjQodTY0IHdvcmQpCnsK CgoKCgoKIHJldHVybiBfX2ZmcygodW5zaWduZWQgbG9uZyl3b3JkKTsKfQoKCgoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGFzc2lnbl9iaXQobG9uZyBuciwgdm9s YXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkciwKICAgICAgICAgICBib29sIHZhbHVlKQp7CiBpZiAo dmFsdWUpCiAgc2V0X2JpdChuciwgYWRkcik7CiBlbHNlCiAgY2xlYXJfYml0KG5yLCBhZGRyKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fYXNzaWduX2JpdChs b25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyLAogICAgICBib29sIHZhbHVlKQp7 CiBpZiAodmFsdWUpCiAgX19zZXRfYml0KG5yLCBhZGRyKTsKIGVsc2UKICBfX2NsZWFyX2JpdChu ciwgYWRkcik7Cn0KIyAyOTkgIi4vaW5jbHVkZS9saW51eC9iaXRvcHMuaCIKZXh0ZXJuIHVuc2ln bmVkIGxvbmcgZmluZF9sYXN0X2JpdChjb25zdCB1bnNpZ25lZCBsb25nICphZGRyLAogICAgICAg dW5zaWduZWQgbG9uZyBzaXplKTsKIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCiMg MSAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIgMQojIDIxICIuL2luY2x1ZGUvbGludXgvbG9nMi5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCmludCBfX2lsb2cyX3UzMih1MzIgbikKewogcmV0dXJu IGZscyhuKSAtIDE7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoY29uc3QpKQppbnQgX19pbG9nMl91NjQo dTY0IG4pCnsKIHJldHVybiBmbHM2NChuKSAtIDE7Cn0KIyA0NCAiLi9pbmNsdWRlL2xpbnV4L2xv ZzIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoY29uc3QpKQpib29sIGlzX3Bvd2VyX29mXzIodW5zaWduZWQg bG9uZyBuKQp7CiByZXR1cm4gKG4gIT0gMCAmJiAoKG4gJiAobiAtIDEpKSA9PSAwKSk7Cn0KCgoK CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpCnVuc2lnbmVkIGxvbmcgX19yb3VuZHVwX3Bvd19vZl90 d28odW5zaWduZWQgbG9uZyBuKQp7CiByZXR1cm4gMVVMIDw8IGZsc19sb25nKG4gLSAxKTsKfQoK CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKGNvbnN0KSkKdW5zaWduZWQgbG9uZyBfX3JvdW5kZG93bl9wb3df b2ZfdHdvKHVuc2lnbmVkIGxvbmcgbikKewogcmV0dXJuIDFVTCA8PCAoZmxzX2xvbmcobikgLSAx KTsKfQojIDE5NyAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19jb25z dF9fKSkKaW50IF9fb3JkZXJfYmFzZV8yKHVuc2lnbmVkIGxvbmcgbikKewogcmV0dXJuIG4gPiAx ID8gKCBfX2J1aWx0aW5fY29uc3RhbnRfcChuIC0gMSkgPyAoIF9fYnVpbHRpbl9jb25zdGFudF9w KG4gLSAxKSA/ICggKG4gLSAxKSA8IDIgPyAwIDogKG4gLSAxKSAmICgxVUxMIDw8IDYzKSA/IDYz IDogKG4gLSAxKSAmICgxVUxMIDw8IDYyKSA/IDYyIDogKG4gLSAxKSAmICgxVUxMIDw8IDYxKSA/ IDYxIDogKG4gLSAxKSAmICgxVUxMIDw8IDYwKSA/IDYwIDogKG4gLSAxKSAmICgxVUxMIDw8IDU5 KSA/IDU5IDogKG4gLSAxKSAmICgxVUxMIDw8IDU4KSA/IDU4IDogKG4gLSAxKSAmICgxVUxMIDw8 IDU3KSA/IDU3IDogKG4gLSAxKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKG4gLSAxKSAmICgxVUxM IDw8IDU1KSA/IDU1IDogKG4gLSAxKSAmICgxVUxMIDw8IDU0KSA/IDU0IDogKG4gLSAxKSAmICgx VUxMIDw8IDUzKSA/IDUzIDogKG4gLSAxKSAmICgxVUxMIDw8IDUyKSA/IDUyIDogKG4gLSAxKSAm ICgxVUxMIDw8IDUxKSA/IDUxIDogKG4gLSAxKSAmICgxVUxMIDw8IDUwKSA/IDUwIDogKG4gLSAx KSAmICgxVUxMIDw8IDQ5KSA/IDQ5IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ4KSA/IDQ4IDogKG4g LSAxKSAmICgxVUxMIDw8IDQ3KSA/IDQ3IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ2KSA/IDQ2IDog KG4gLSAxKSAmICgxVUxMIDw8IDQ1KSA/IDQ1IDogKG4gLSAxKSAmICgxVUxMIDw8IDQ0KSA/IDQ0 IDogKG4gLSAxKSAmICgxVUxMIDw8IDQzKSA/IDQzIDogKG4gLSAxKSAmICgxVUxMIDw8IDQyKSA/ IDQyIDogKG4gLSAxKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKG4gLSAxKSAmICgxVUxMIDw8IDQw KSA/IDQwIDogKG4gLSAxKSAmICgxVUxMIDw8IDM5KSA/IDM5IDogKG4gLSAxKSAmICgxVUxMIDw8 IDM4KSA/IDM4IDogKG4gLSAxKSAmICgxVUxMIDw8IDM3KSA/IDM3IDogKG4gLSAxKSAmICgxVUxM IDw8IDM2KSA/IDM2IDogKG4gLSAxKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKG4gLSAxKSAmICgx VUxMIDw8IDM0KSA/IDM0IDogKG4gLSAxKSAmICgxVUxMIDw8IDMzKSA/IDMzIDogKG4gLSAxKSAm ICgxVUxMIDw8IDMyKSA/IDMyIDogKG4gLSAxKSAmICgxVUxMIDw8IDMxKSA/IDMxIDogKG4gLSAx KSAmICgxVUxMIDw8IDMwKSA/IDMwIDogKG4gLSAxKSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKG4g LSAxKSAmICgxVUxMIDw8IDI4KSA/IDI4IDogKG4gLSAxKSAmICgxVUxMIDw8IDI3KSA/IDI3IDog KG4gLSAxKSAmICgxVUxMIDw8IDI2KSA/IDI2IDogKG4gLSAxKSAmICgxVUxMIDw8IDI1KSA/IDI1 IDogKG4gLSAxKSAmICgxVUxMIDw8IDI0KSA/IDI0IDogKG4gLSAxKSAmICgxVUxMIDw8IDIzKSA/ IDIzIDogKG4gLSAxKSAmICgxVUxMIDw8IDIyKSA/IDIyIDogKG4gLSAxKSAmICgxVUxMIDw8IDIx KSA/IDIxIDogKG4gLSAxKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKG4gLSAxKSAmICgxVUxMIDw8 IDE5KSA/IDE5IDogKG4gLSAxKSAmICgxVUxMIDw8IDE4KSA/IDE4IDogKG4gLSAxKSAmICgxVUxM IDw8IDE3KSA/IDE3IDogKG4gLSAxKSAmICgxVUxMIDw8IDE2KSA/IDE2IDogKG4gLSAxKSAmICgx VUxMIDw8IDE1KSA/IDE1IDogKG4gLSAxKSAmICgxVUxMIDw8IDE0KSA/IDE0IDogKG4gLSAxKSAm ICgxVUxMIDw8IDEzKSA/IDEzIDogKG4gLSAxKSAmICgxVUxMIDw8IDEyKSA/IDEyIDogKG4gLSAx KSAmICgxVUxMIDw8IDExKSA/IDExIDogKG4gLSAxKSAmICgxVUxMIDw8IDEwKSA/IDEwIDogKG4g LSAxKSAmICgxVUxMIDw8IDkpID8gOSA6IChuIC0gMSkgJiAoMVVMTCA8PCA4KSA/IDggOiAobiAt IDEpICYgKDFVTEwgPDwgNykgPyA3IDogKG4gLSAxKSAmICgxVUxMIDw8IDYpID8gNiA6IChuIC0g MSkgJiAoMVVMTCA8PCA1KSA/IDUgOiAobiAtIDEpICYgKDFVTEwgPDwgNCkgPyA0IDogKG4gLSAx KSAmICgxVUxMIDw8IDMpID8gMyA6IChuIC0gMSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0x KSA6IChzaXplb2YobiAtIDEpIDw9IDQpID8gX19pbG9nMl91MzIobiAtIDEpIDogX19pbG9nMl91 NjQobiAtIDEpICkgKyAxIDogMDsKfQojIDIyNCAiLi9pbmNsdWRlL2xpbnV4L2xvZzIuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoY29uc3QpKQppbnQgX19iaXRzX3Blcih1bnNpZ25lZCBsb25nIG4pCnsKIGlm IChuIDwgMikKICByZXR1cm4gMTsKIGlmIChpc19wb3dlcl9vZl8yKG4pKQogIHJldHVybiAoIF9f YnVpbHRpbl9jb25zdGFudF9wKG4pID8gKCAoKG4pID09IDAgfHwgKG4pID09IDEpID8gMCA6ICgg X19idWlsdGluX2NvbnN0YW50X3AoKG4pIC0gMSkgPyAoIF9fYnVpbHRpbl9jb25zdGFudF9wKChu KSAtIDEpID8gKCAoKG4pIC0gMSkgPCAyID8gMCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYzKSA/ IDYzIDogKChuKSAtIDEpICYgKDFVTEwgPDwgNjIpID8gNjIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCA2MSkgPyA2MSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYwKSA/IDYwIDogKChuKSAtIDEpICYg KDFVTEwgPDwgNTkpID8gNTkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1OCkgPyA1OCA6ICgobikg LSAxKSAmICgxVUxMIDw8IDU3KSA/IDU3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTYpID8gNTYg OiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1NSkgPyA1NSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDU0 KSA/IDU0IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTMpID8gNTMgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCA1MikgPyA1MiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUxKSA/IDUxIDogKChuKSAtIDEp ICYgKDFVTEwgPDwgNTApID8gNTAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0OSkgPyA0OSA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDQ4KSA/IDQ4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDcpID8g NDcgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0NikgPyA0NiA6ICgobikgLSAxKSAmICgxVUxMIDw8 IDQ1KSA/IDQ1IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDQpID8gNDQgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCA0MykgPyA0MyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQyKSA/IDQyIDogKChuKSAt IDEpICYgKDFVTEwgPDwgNDEpID8gNDEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0MCkgPyA0MCA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDM5KSA/IDM5IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzgp ID8gMzggOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzNykgPyAzNyA6ICgobikgLSAxKSAmICgxVUxM IDw8IDM2KSA/IDM2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzUpID8gMzUgOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCAzNCkgPyAzNCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMzKSA/IDMzIDogKChu KSAtIDEpICYgKDFVTEwgPDwgMzIpID8gMzIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzMSkgPyAz MSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMwKSA/IDMwIDogKChuKSAtIDEpICYgKDFVTEwgPDwg MjkpID8gMjkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyOCkgPyAyOCA6ICgobikgLSAxKSAmICgx VUxMIDw8IDI3KSA/IDI3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjYpID8gMjYgOiAoKG4pIC0g MSkgJiAoMVVMTCA8PCAyNSkgPyAyNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDI0KSA/IDI0IDog KChuKSAtIDEpICYgKDFVTEwgPDwgMjMpID8gMjMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyMikg PyAyMiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIxKSA/IDIxIDogKChuKSAtIDEpICYgKDFVTEwg PDwgMjApID8gMjAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxOSkgPyAxOSA6ICgobikgLSAxKSAm ICgxVUxMIDw8IDE4KSA/IDE4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTcpID8gMTcgOiAoKG4p IC0gMSkgJiAoMVVMTCA8PCAxNikgPyAxNiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDE1KSA/IDE1 IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTQpID8gMTQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAx MykgPyAxMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDEyKSA/IDEyIDogKChuKSAtIDEpICYgKDFV TEwgPDwgMTEpID8gMTEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxMCkgPyAxMCA6ICgobikgLSAx KSAmICgxVUxMIDw8IDkpID8gOSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDgpID8gOCA6ICgobikg LSAxKSAmICgxVUxMIDw8IDcpID8gNyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYpID8gNiA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDUpID8gNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQpID8gNCA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDMpID8gMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIpID8g MiA6IDEpIDogLTEpIDogKHNpemVvZigobikgLSAxKSA8PSA0KSA/IF9faWxvZzJfdTMyKChuKSAt IDEpIDogX19pbG9nMl91NjQoKG4pIC0gMSkgKSArIDEpIDogX19vcmRlcl9iYXNlXzIobikgKSAr IDE7CiByZXR1cm4gKCBfX2J1aWx0aW5fY29uc3RhbnRfcChuKSA/ICggKChuKSA9PSAwIHx8IChu KSA9PSAxKSA/IDAgOiAoIF9fYnVpbHRpbl9jb25zdGFudF9wKChuKSAtIDEpID8gKCBfX2J1aWx0 aW5fY29uc3RhbnRfcCgobikgLSAxKSA/ICggKChuKSAtIDEpIDwgMiA/IDAgOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCA2MykgPyA2MyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDYyKSA/IDYyIDogKChu KSAtIDEpICYgKDFVTEwgPDwgNjEpID8gNjEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA2MCkgPyA2 MCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDU5KSA/IDU5IDogKChuKSAtIDEpICYgKDFVTEwgPDwg NTgpID8gNTggOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1NykgPyA1NyA6ICgobikgLSAxKSAmICgx VUxMIDw8IDU2KSA/IDU2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNTUpID8gNTUgOiAoKG4pIC0g MSkgJiAoMVVMTCA8PCA1NCkgPyA1NCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUzKSA/IDUzIDog KChuKSAtIDEpICYgKDFVTEwgPDwgNTIpID8gNTIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1MSkg PyA1MSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDUwKSA/IDUwIDogKChuKSAtIDEpICYgKDFVTEwg PDwgNDkpID8gNDkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0OCkgPyA0OCA6ICgobikgLSAxKSAm ICgxVUxMIDw8IDQ3KSA/IDQ3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDYpID8gNDYgOiAoKG4p IC0gMSkgJiAoMVVMTCA8PCA0NSkgPyA0NSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQ0KSA/IDQ0 IDogKChuKSAtIDEpICYgKDFVTEwgPDwgNDMpID8gNDMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA0 MikgPyA0MiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKChuKSAtIDEpICYgKDFV TEwgPDwgNDApID8gNDAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzOSkgPyAzOSA6ICgobikgLSAx KSAmICgxVUxMIDw8IDM4KSA/IDM4IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzcpID8gMzcgOiAo KG4pIC0gMSkgJiAoMVVMTCA8PCAzNikgPyAzNiA6ICgobikgLSAxKSAmICgxVUxMIDw8IDM1KSA/ IDM1IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMzQpID8gMzQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCAzMykgPyAzMyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDMyKSA/IDMyIDogKChuKSAtIDEpICYg KDFVTEwgPDwgMzEpID8gMzEgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzMCkgPyAzMCA6ICgobikg LSAxKSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjgpID8gMjgg OiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyNykgPyAyNyA6ICgobikgLSAxKSAmICgxVUxMIDw8IDI2 KSA/IDI2IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMjUpID8gMjUgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCAyNCkgPyAyNCA6ICgobikgLSAxKSAmICgxVUxMIDw8IDIzKSA/IDIzIDogKChuKSAtIDEp ICYgKDFVTEwgPDwgMjIpID8gMjIgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAyMSkgPyAyMSA6ICgo bikgLSAxKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTkpID8g MTkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxOCkgPyAxOCA6ICgobikgLSAxKSAmICgxVUxMIDw8 IDE3KSA/IDE3IDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTYpID8gMTYgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCAxNSkgPyAxNSA6ICgobikgLSAxKSAmICgxVUxMIDw8IDE0KSA/IDE0IDogKChuKSAt IDEpICYgKDFVTEwgPDwgMTMpID8gMTMgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAxMikgPyAxMiA6 ICgobikgLSAxKSAmICgxVUxMIDw8IDExKSA/IDExIDogKChuKSAtIDEpICYgKDFVTEwgPDwgMTAp ID8gMTAgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA5KSA/IDkgOiAoKG4pIC0gMSkgJiAoMVVMTCA8 PCA4KSA/IDggOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA3KSA/IDcgOiAoKG4pIC0gMSkgJiAoMVVM TCA8PCA2KSA/IDYgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCA1KSA/IDUgOiAoKG4pIC0gMSkgJiAo MVVMTCA8PCA0KSA/IDQgOiAoKG4pIC0gMSkgJiAoMVVMTCA8PCAzKSA/IDMgOiAoKG4pIC0gMSkg JiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6IChzaXplb2YoKG4pIC0gMSkgPD0gNCkgPyBf X2lsb2cyX3UzMigobikgLSAxKSA6IF9faWxvZzJfdTY0KChuKSAtIDEpICkgKyAxKSA6IF9fb3Jk ZXJfYmFzZV8yKG4pICk7Cn0KIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIiAyCgojIDEg Ii4vaW5jbHVkZS9saW51eC9wcmludGsuaCIgMQoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9r ZXJuX2xldmVscy5oIiAxCiMgOCAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIiAyCgojIDEgIi4v aW5jbHVkZS9saW51eC9jYWNoZS5oIiAxCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2tl cm5lbC5oIiAxCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N5c2luZm8uaCIgMQoKCgoK CgoKc3RydWN0IHN5c2luZm8gewogX19rZXJuZWxfbG9uZ190IHVwdGltZTsKIF9fa2VybmVsX3Vs b25nX3QgbG9hZHNbM107CiBfX2tlcm5lbF91bG9uZ190IHRvdGFscmFtOwogX19rZXJuZWxfdWxv bmdfdCBmcmVlcmFtOwogX19rZXJuZWxfdWxvbmdfdCBzaGFyZWRyYW07CiBfX2tlcm5lbF91bG9u Z190IGJ1ZmZlcnJhbTsKIF9fa2VybmVsX3Vsb25nX3QgdG90YWxzd2FwOwogX19rZXJuZWxfdWxv bmdfdCBmcmVlc3dhcDsKIF9fdTE2IHByb2NzOwogX191MTYgcGFkOwogX19rZXJuZWxfdWxvbmdf dCB0b3RhbGhpZ2g7CiBfX2tlcm5lbF91bG9uZ190IGZyZWVoaWdoOwogX191MzIgbWVtX3VuaXQ7 CiBjaGFyIF9mWzIwLTIqc2l6ZW9mKF9fa2VybmVsX3Vsb25nX3QpLXNpemVvZihfX3UzMildOwp9 OwojIDYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2tlcm5lbC5oIiAyCiMgNiAiLi9pbmNsdWRlL2xp bnV4L2NhY2hlLmgiIDIKIyAxMCAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIiAyCgpleHRlcm4g Y29uc3QgY2hhciBsaW51eF9iYW5uZXJbXTsKZXh0ZXJuIGNvbnN0IGNoYXIgbGludXhfcHJvY19i YW5uZXJbXTsKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHByaW50a19nZXRfbGV2ZWwoY29uc3QgY2hhciAqYnVmZmVyKQp7CiBp ZiAoYnVmZmVyWzBdID09ICdcMDAxJyAmJiBidWZmZXJbMV0pIHsKICBzd2l0Y2ggKGJ1ZmZlclsx XSkgewogIGNhc2UgJzAnIC4uLiAnNyc6CiAgY2FzZSAnYyc6CiAgIHJldHVybiBidWZmZXJbMV07 CiAgfQogfQogcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0IGNoYXIgKnByaW50a19za2lwX2xldmVsKGNvbnN0 IGNoYXIgKmJ1ZmZlcikKewogaWYgKHByaW50a19nZXRfbGV2ZWwoYnVmZmVyKSkKICByZXR1cm4g YnVmZmVyICsgMjsKCiByZXR1cm4gYnVmZmVyOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBjaGFyICpwcmludGtfc2tpcF9o ZWFkZXJzKGNvbnN0IGNoYXIgKmJ1ZmZlcikKewogd2hpbGUgKHByaW50a19nZXRfbGV2ZWwoYnVm ZmVyKSkKICBidWZmZXIgPSBwcmludGtfc2tpcF9sZXZlbChidWZmZXIpOwoKIHJldHVybiBidWZm ZXI7Cn0KIyA2MiAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgpleHRlcm4gaW50IGNvbnNvbGVf cHJpbnRrW107CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY29uc29sZV9zaWxlbnQodm9pZCkKewogKGNvbnNvbGVfcHJp bnRrWzBdKSA9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY29uc29sZV92ZXJib3NlKHZvaWQpCnsKIGlmICgoY29uc29s ZV9wcmludGtbMF0pKQogIChjb25zb2xlX3ByaW50a1swXSkgPSAxNTsKfQoKCgpleHRlcm4gY2hh ciBkZXZrbXNnX2xvZ19zdHJbXTsKc3RydWN0IGN0bF90YWJsZTsKCmV4dGVybiBpbnQgc3VwcHJl c3NfcHJpbnRrOwoKc3RydWN0IHZhX2Zvcm1hdCB7CiBjb25zdCBjaGFyICpmbXQ7CiB2YV9saXN0 ICp2YTsKfTsKIyAxNDIgIi4vaW5jbHVkZS9saW51eC9wcmludGsuaCIKZXh0ZXJuIF9fYXR0cmli dXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpCnZvaWQgZWFybHlfcHJpbnRrKGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsKCgoKCgoKZXh0ZXJuIHZvaWQgcHJpbnRrX25taV9lbnRlcih2b2lk KTsKZXh0ZXJuIHZvaWQgcHJpbnRrX25taV9leGl0KHZvaWQpOwpleHRlcm4gdm9pZCBwcmludGtf bm1pX2RpcmVjdF9lbnRlcih2b2lkKTsKZXh0ZXJuIHZvaWQgcHJpbnRrX25taV9kaXJlY3RfZXhp dCh2b2lkKTsKIyAxNjIgIi4vaW5jbHVkZS9saW51eC9wcmludGsuaCIKIF9fYXR0cmlidXRlX18o KF9fZm9ybWF0X18ocHJpbnRmLCA1LCAwKSkpCmludCB2cHJpbnRrX2VtaXQoaW50IGZhY2lsaXR5 LCBpbnQgbGV2ZWwsCiAgIGNvbnN0IGNoYXIgKmRpY3QsIHNpemVfdCBkaWN0bGVuLAogICBjb25z dCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CgogX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhw cmludGYsIDEsIDApKSkKaW50IHZwcmludGsoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3Mp OwoKIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpIF9fYXR0cmlidXRl X18oKF9fY29sZF9fKSkKaW50IHByaW50ayhjb25zdCBjaGFyICpmbXQsIC4uLik7CgoKCgpfX2F0 dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpIGludCBwcmludGtfZGVmZXJyZWQoY29uc3QgY2hhciAqZm10LCAuLi4pOwoKCgoKCgpl eHRlcm4gaW50IF9fcHJpbnRrX3JhdGVsaW1pdChjb25zdCBjaGFyICpmdW5jKTsKCmV4dGVybiBi b29sIHByaW50a190aW1lZF9yYXRlbGltaXQodW5zaWduZWQgbG9uZyAqY2FsbGVyX2ppZmZpZXMs CiAgICAgICB1bnNpZ25lZCBpbnQgaW50ZXJ2YWxfbXNlYyk7CgpleHRlcm4gaW50IHByaW50a19k ZWxheV9tc2VjOwpleHRlcm4gaW50IGRtZXNnX3Jlc3RyaWN0OwoKZXh0ZXJuIGludApkZXZrbXNn X3N5c2N0bF9zZXRfbG9nbHZsKHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsIHZv aWQgKmJ1ZiwKICAgICBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7CgpleHRlcm4gdm9pZCB3 YWtlX3VwX2tsb2dkKHZvaWQpOwoKY2hhciAqbG9nX2J1Zl9hZGRyX2dldCh2b2lkKTsKdTMyIGxv Z19idWZfbGVuX2dldCh2b2lkKTsKdm9pZCBsb2dfYnVmX3ZtY29yZWluZm9fc2V0dXAodm9pZCk7 CnZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmli dXRlX18oKF9fY29sZF9fKSkgc2V0dXBfbG9nX2J1ZihpbnQgZWFybHkpOwpfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKSB2b2lkIGR1bXBfc3RhY2tfc2V0X2FyY2hfZGVz Yyhjb25zdCBjaGFyICpmbXQsIC4uLik7CnZvaWQgZHVtcF9zdGFja19wcmludF9pbmZvKGNvbnN0 IGNoYXIgKmxvZ19sdmwpOwp2b2lkIHNob3dfcmVnc19wcmludF9pbmZvKGNvbnN0IGNoYXIgKmxv Z19sdmwpOwpleHRlcm4gdm9pZCBkdW1wX3N0YWNrKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fY29s ZF9fKSk7CmV4dGVybiB2b2lkIHByaW50a19zYWZlX2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHBy aW50a19zYWZlX2ZsdXNoKHZvaWQpOwpleHRlcm4gdm9pZCBwcmludGtfc2FmZV9mbHVzaF9vbl9w YW5pYyh2b2lkKTsKIyAyODUgIi4vaW5jbHVkZS9saW51eC9wcmludGsuaCIKZXh0ZXJuIGludCBr cHRyX3Jlc3RyaWN0OwojIDMzMSAiLi9pbmNsdWRlL2xpbnV4L3ByaW50ay5oIgojIDEgIi4vaW5j bHVkZS9saW51eC9keW5hbWljX2RlYnVnLmgiIDEKIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2R5bmFt aWNfZGVidWcuaCIKc3RydWN0IF9kZGVidWcgewoKCgoKIGNvbnN0IGNoYXIgKm1vZG5hbWU7CiBj b25zdCBjaGFyICpmdW5jdGlvbjsKIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwogY29uc3QgY2hhciAq Zm9ybWF0OwogdW5zaWduZWQgaW50IGxpbmVubzoxODsKIyA0MCAiLi9pbmNsdWRlL2xpbnV4L2R5 bmFtaWNfZGVidWcuaCIKIHVuc2lnbmVkIGludCBmbGFnczo4OwoKIHVuaW9uIHsKICBzdHJ1Y3Qg c3RhdGljX2tleV90cnVlIGRkX2tleV90cnVlOwogIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIGRk X2tleV9mYWxzZTsKIH0ga2V5OwoKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CgoKCgpp bnQgZGRlYnVnX2FkZF9tb2R1bGUoc3RydWN0IF9kZGVidWcgKnRhYiwgdW5zaWduZWQgaW50IG4s CiAgICBjb25zdCBjaGFyICptb2RuYW1lKTsKZXh0ZXJuIGludCBkZGVidWdfcmVtb3ZlX21vZHVs ZShjb25zdCBjaGFyICptb2RfbmFtZSk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9f KHByaW50ZiwgMiwgMykpKQp2b2lkIF9fZHluYW1pY19wcl9kZWJ1ZyhzdHJ1Y3QgX2RkZWJ1ZyAq ZGVzY3JpcHRvciwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoKZXh0ZXJuIGludCBkZGVidWdfZHlu ZGJnX21vZHVsZV9wYXJhbV9jYihjaGFyICpwYXJhbSwgY2hhciAqdmFsLAogICAgIGNvbnN0IGNo YXIgKm1vZG5hbWUpOwoKc3RydWN0IGRldmljZTsKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zv cm1hdF9fKHByaW50ZiwgMywgNCkpKQp2b2lkIF9fZHluYW1pY19kZXZfZGJnKHN0cnVjdCBfZGRl YnVnICpkZXNjcmlwdG9yLCBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICAgICAgIGNvbnN0 IGNoYXIgKmZtdCwgLi4uKTsKCnN0cnVjdCBuZXRfZGV2aWNlOwoKZXh0ZXJuIF9fYXR0cmlidXRl X18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCA0KSkpCnZvaWQgX19keW5hbWljX25ldGRldl9kYmco c3RydWN0IF9kZGVidWcgKmRlc2NyaXB0b3IsCiAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Ug KmRldiwKICAgICBjb25zdCBjaGFyICpmbXQsIC4uLik7CgpzdHJ1Y3QgaWJfZGV2aWNlOwoKZXh0 ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCA0KSkpCnZvaWQgX19keW5h bWljX2liZGV2X2RiZyhzdHJ1Y3QgX2RkZWJ1ZyAqZGVzY3JpcHRvciwKICAgIGNvbnN0IHN0cnVj dCBpYl9kZXZpY2UgKmliZGV2LAogICAgY29uc3QgY2hhciAqZm10LCAuLi4pOwojIDMzMiAiLi9p bmNsdWRlL2xpbnV4L3ByaW50ay5oIiAyCiMgNDc2ICIuL2luY2x1ZGUvbGludXgvcHJpbnRrLmgi CmV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGttc2dfZm9wczsKCmVudW0gewog RFVNUF9QUkVGSVhfTk9ORSwKIERVTVBfUFJFRklYX0FERFJFU1MsCiBEVU1QX1BSRUZJWF9PRkZT RVQKfTsKZXh0ZXJuIGludCBoZXhfZHVtcF90b19idWZmZXIoY29uc3Qgdm9pZCAqYnVmLCBzaXpl X3QgbGVuLCBpbnQgcm93c2l6ZSwKICAgICAgICAgaW50IGdyb3Vwc2l6ZSwgY2hhciAqbGluZWJ1 Ziwgc2l6ZV90IGxpbmVidWZsZW4sCiAgICAgICAgIGJvb2wgYXNjaWkpOwoKZXh0ZXJuIHZvaWQg cHJpbnRfaGV4X2R1bXAoY29uc3QgY2hhciAqbGV2ZWwsIGNvbnN0IGNoYXIgKnByZWZpeF9zdHIs CiAgICAgIGludCBwcmVmaXhfdHlwZSwgaW50IHJvd3NpemUsIGludCBncm91cHNpemUsCiAgICAg IGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgYm9vbCBhc2NpaSk7CiMgMTYgIi4vaW5jbHVk ZS9saW51eC9rZXJuZWwuaCIgMgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9kaXY2NC5o IiAxCiMgNzUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGl2NjQuaCIKIyAxICIuL2luY2x1ZGUv YXNtLWdlbmVyaWMvZGl2NjQuaCIgMQojIDc2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2RpdjY0 LmgiIDIKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHU2NCBtdWxfdTY0X3UzMl9kaXYodTY0IGEsIHUzMiBtdWwsIHUzMiBkaXYpCnsKIHU2 NCBxOwoKIGFzbSAoIm11bHEgJTI7IGRpdnEgJTMiIDogIj1hIiAocSkKICAgIDogImEiIChhKSwg InJtIiAoKHU2NCltdWwpLCAicm0iICgodTY0KWRpdikKICAgIDogInJkeCIpOwoKIHJldHVybiBx Owp9CiMgMTkgIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIgMgojIDE5MSAiLi9pbmNsdWRlL2xp bnV4L2tlcm5lbC5oIgpzdHJ1Y3QgY29tcGxldGlvbjsKc3RydWN0IHB0X3JlZ3M7CnN0cnVjdCB1 c2VyOwojIDI0NyAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgogIHN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19fbWlnaHRfc2xl ZXAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsCiAgICAgICBpbnQgcHJlZW1wdF9vZmZzZXQp IHsgfQogIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19taWdodF9zbGVlcChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwKICAg ICAgIGludCBwcmVlbXB0X29mZnNldCkgeyB9CiMgMjk3ICIuL2luY2x1ZGUvbGludXgva2VybmVs LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHUzMiByZWNpcHJvY2FsX3NjYWxlKHUzMiB2YWwsIHUzMiBlcF9ybykKewogcmV0dXJuICh1 MzIpKCgodTY0KSB2YWwgKiBlcF9ybykgPj4gMzIpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWlnaHRfZmF1bHQo dm9pZCkgeyB9CgoKZXh0ZXJuIHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCBwYW5pY19ub3Rp Zmllcl9saXN0OwpleHRlcm4gbG9uZyAoKnBhbmljX2JsaW5rKShpbnQgc3RhdGUpOwpfX2F0dHJp YnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKQp2b2lkIHBhbmljKGNvbnN0IGNoYXIg KmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSBfX2F0dHJpYnV0ZV9fKChf X2NvbGRfXykpOwp2b2lkIG5taV9wYW5pYyhzdHJ1Y3QgcHRfcmVncyAqcmVncywgY29uc3QgY2hh ciAqbXNnKTsKZXh0ZXJuIHZvaWQgb29wc19lbnRlcih2b2lkKTsKZXh0ZXJuIHZvaWQgb29wc19l eGl0KHZvaWQpOwp2b2lkIHByaW50X29vcHNfZW5kX21hcmtlcih2b2lkKTsKZXh0ZXJuIGludCBv b3BzX21heV9wcmludCh2b2lkKTsKdm9pZCBkb19leGl0KGxvbmcgZXJyb3JfY29kZSkgX19hdHRy aWJ1dGVfXygoX19ub3JldHVybl9fKSk7CnZvaWQgY29tcGxldGVfYW5kX2V4aXQoc3RydWN0IGNv bXBsZXRpb24gKiwgbG9uZykgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSk7CgoKaW50IF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfa3N0cnRvdWwoY29uc3QgY2hh ciAqcywgdW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGxvbmcgKnJlcyk7CmludCBfX2F0dHJp YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX2tzdHJ0b2woY29uc3QgY2hhciAqcywg dW5zaWduZWQgaW50IGJhc2UsIGxvbmcgKnJlcyk7CgppbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3VsbChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQg YmFzZSwgdW5zaWduZWQgbG9uZyBsb25nICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2xsKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBi YXNlLCBsb25nIGxvbmcgKnJlcyk7CiMgMzQ0ICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvdWwoY29uc3Qg Y2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIHVuc2lnbmVkIGxvbmcgKnJlcykKewoKCgoKIGlm IChzaXplb2YodW5zaWduZWQgbG9uZykgPT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcgbG9uZykgJiYK ICAgICBfX2FsaWdub2ZfXyh1bnNpZ25lZCBsb25nKSA9PSBfX2FsaWdub2ZfXyh1bnNpZ25lZCBs b25nIGxvbmcpKQogIHJldHVybiBrc3RydG91bGwocywgYmFzZSwgKHVuc2lnbmVkIGxvbmcgbG9u ZyAqKXJlcyk7CiBlbHNlCiAgcmV0dXJuIF9rc3RydG91bChzLCBiYXNlLCByZXMpOwp9CiMgMzcy ICIuL2luY2x1ZGUvbGludXgva2VybmVsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkga3N0cnRvbChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwg bG9uZyAqcmVzKQp7CgoKCgogaWYgKHNpemVvZihsb25nKSA9PSBzaXplb2YobG9uZyBsb25nKSAm JgogICAgIF9fYWxpZ25vZl9fKGxvbmcpID09IF9fYWxpZ25vZl9fKGxvbmcgbG9uZykpCiAgcmV0 dXJuIGtzdHJ0b2xsKHMsIGJhc2UsIChsb25nIGxvbmcgKilyZXMpOwogZWxzZQogIHJldHVybiBf a3N0cnRvbChzLCBiYXNlLCByZXMpOwp9CgppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIGtzdHJ0b3VpbnQoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2Us IHVuc2lnbmVkIGludCAqcmVzKTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKSBrc3RydG9pbnQoY29uc3QgY2hhciAqcywgdW5zaWduZWQgaW50IGJhc2UsIGludCAq cmVzKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRv dTY0KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCB1NjQgKnJlcykKewogcmV0dXJu IGtzdHJ0b3VsbChzLCBiYXNlLCByZXMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIGtzdHJ0b3M2NChjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFz ZSwgczY0ICpyZXMpCnsKIHJldHVybiBrc3RydG9sbChzLCBiYXNlLCByZXMpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UzMihjb25zdCBjaGFy ICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgdTMyICpyZXMpCnsKIHJldHVybiBrc3RydG91aW50KHMs IGJhc2UsIHJlcyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkga3N0cnRvczMyKGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCBzMzIgKnJlcykK ewogcmV0dXJuIGtzdHJ0b2ludChzLCBiYXNlLCByZXMpOwp9CgppbnQgX19hdHRyaWJ1dGVfXygo X193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UxNihjb25zdCBjaGFyICpzLCB1bnNpZ25l ZCBpbnQgYmFzZSwgdTE2ICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9y ZXN1bHRfXykpIGtzdHJ0b3MxNihjb25zdCBjaGFyICpzLCB1bnNpZ25lZCBpbnQgYmFzZSwgczE2 ICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0 b3U4KGNvbnN0IGNoYXIgKnMsIHVuc2lnbmVkIGludCBiYXNlLCB1OCAqcmVzKTsKaW50IF9fYXR0 cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG9zOChjb25zdCBjaGFyICpz LCB1bnNpZ25lZCBpbnQgYmFzZSwgczggKnJlcyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkga3N0cnRvYm9vbChjb25zdCBjaGFyICpzLCBib29sICpyZXMpOwoK aW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91bGxfZnJv bV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIHVu c2lnbmVkIGxvbmcgbG9uZyAqcmVzKTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBrc3RydG9sbF9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50 LCB1bnNpZ25lZCBpbnQgYmFzZSwgbG9uZyBsb25nICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygo X193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3VsX2Zyb21fdXNlcihjb25zdCBjaGFyICpz LCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGludCBiYXNlLCB1bnNpZ25lZCBsb25nICpyZXMpOwpp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b2xfZnJvbV91 c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2UsIGxvbmcg KnJlcyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0cnRv dWludF9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQg YmFzZSwgdW5zaWduZWQgaW50ICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIGtzdHJ0b2ludF9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNv dW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgaW50ICpyZXMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193 YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3UxNl9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywg c2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgdTE2ICpyZXMpOwppbnQgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3MxNl9mcm9tX3VzZXIoY29uc3Qg Y2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwgczE2ICpyZXMpOwppbnQg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzdHJ0b3U4X2Zyb21fdXNl cihjb25zdCBjaGFyICpzLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGludCBiYXNlLCB1OCAqcmVz KTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG9zOF9m cm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25lZCBpbnQgYmFzZSwg czggKnJlcyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga3N0 cnRvYm9vbF9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCBib29sICpyZXMp OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3RydG91NjRf ZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50IGJhc2Us IHU2NCAqcmVzKQp7CiByZXR1cm4ga3N0cnRvdWxsX2Zyb21fdXNlcihzLCBjb3VudCwgYmFzZSwg cmVzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrc3Ry dG9zNjRfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgaW50 IGJhc2UsIHM2NCAqcmVzKQp7CiByZXR1cm4ga3N0cnRvbGxfZnJvbV91c2VyKHMsIGNvdW50LCBi YXNlLCByZXMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGtzdHJ0b3UzMl9mcm9tX3VzZXIoY29uc3QgY2hhciAqcywgc2l6ZV90IGNvdW50LCB1bnNpZ25l ZCBpbnQgYmFzZSwgdTMyICpyZXMpCnsKIHJldHVybiBrc3RydG91aW50X2Zyb21fdXNlcihzLCBj b3VudCwgYmFzZSwgcmVzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKSBrc3RydG9zMzJfZnJvbV91c2VyKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBjb3VudCwg dW5zaWduZWQgaW50IGJhc2UsIHMzMiAqcmVzKQp7CiByZXR1cm4ga3N0cnRvaW50X2Zyb21fdXNl cihzLCBjb3VudCwgYmFzZSwgcmVzKTsKfQojIDQ1OSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5o IgpleHRlcm4gdW5zaWduZWQgbG9uZyBzaW1wbGVfc3RydG91bChjb25zdCBjaGFyICosY2hhciAq Kix1bnNpZ25lZCBpbnQpOwpleHRlcm4gbG9uZyBzaW1wbGVfc3RydG9sKGNvbnN0IGNoYXIgKixj aGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc2ltcGxlX3N0 cnRvdWxsKGNvbnN0IGNoYXIgKixjaGFyICoqLHVuc2lnbmVkIGludCk7CmV4dGVybiBsb25nIGxv bmcgc2ltcGxlX3N0cnRvbGwoY29uc3QgY2hhciAqLGNoYXIgKiosdW5zaWduZWQgaW50KTsKCmV4 dGVybiBpbnQgbnVtX3RvX3N0cihjaGFyICpidWYsIGludCBzaXplLAogICAgICAgIHVuc2lnbmVk IGxvbmcgbG9uZyBudW0sIHVuc2lnbmVkIGludCB3aWR0aCk7CgoKCmV4dGVybiBfX2F0dHJpYnV0 ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBpbnQgc3ByaW50ZihjaGFyICpidWYsIGNv bnN0IGNoYXIgKiBmbXQsIC4uLik7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHBy aW50ZiwgMiwgMCkpKSBpbnQgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICosIHZhX2xp c3QpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKaW50 IHNucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsK ZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCAwKSkpCmludCB2c25w cmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFy Z3MpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDMsIDQpKSkKaW50 IHNjbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIC4uLik7 CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgMCkpKQppbnQgdnNj bnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3Qg YXJncyk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBf X2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSkKY2hhciAqa2FzcHJpbnRmKGdmcF90IGdmcCwgY29u c3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu dGYsIDIsIDApKSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpCmNoYXIgKmt2YXNwcmludGYo Z2ZwX3QgZ2ZwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7CmV4dGVybiBfX2F0dHJp YnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMCkpKQpjb25zdCBjaGFyICprdmFzcHJpbnRm X2NvbnN0KGdmcF90IGdmcCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwoKZXh0ZXJu IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18oc2NhbmYsIDIsIDMpKSkKaW50IHNzY2FuZihjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9y bWF0X18oc2NhbmYsIDIsIDApKSkKaW50IHZzc2NhbmYoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIHZhX2xpc3QpOwoKZXh0ZXJuIGludCBnZXRfb3B0aW9uKGNoYXIgKipzdHIsIGludCAqcGlu dCk7CmV4dGVybiBjaGFyICpnZXRfb3B0aW9ucyhjb25zdCBjaGFyICpzdHIsIGludCBuaW50cywg aW50ICppbnRzKTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1wYXJzZShjb25zdCBjaGFy ICpwdHIsIGNoYXIgKipyZXRwdHIpOwpleHRlcm4gYm9vbCBwYXJzZV9vcHRpb25fc3RyKGNvbnN0 IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqb3B0aW9uKTsKZXh0ZXJuIGNoYXIgKm5leHRfYXJnKGNo YXIgKmFyZ3MsIGNoYXIgKipwYXJhbSwgY2hhciAqKnZhbCk7CgpleHRlcm4gaW50IGNvcmVfa2Vy bmVsX3RleHQodW5zaWduZWQgbG9uZyBhZGRyKTsKZXh0ZXJuIGludCBpbml0X2tlcm5lbF90ZXh0 KHVuc2lnbmVkIGxvbmcgYWRkcik7CmV4dGVybiBpbnQgY29yZV9rZXJuZWxfZGF0YSh1bnNpZ25l ZCBsb25nIGFkZHIpOwpleHRlcm4gaW50IF9fa2VybmVsX3RleHRfYWRkcmVzcyh1bnNpZ25lZCBs b25nIGFkZHIpOwpleHRlcm4gaW50IGtlcm5lbF90ZXh0X2FkZHJlc3ModW5zaWduZWQgbG9uZyBh ZGRyKTsKZXh0ZXJuIGludCBmdW5jX3B0cl9pc19rZXJuZWxfdGV4dCh2b2lkICpwdHIpOwoKdTY0 IGludF9wb3codTY0IGJhc2UsIHVuc2lnbmVkIGludCBleHApOwp1bnNpZ25lZCBsb25nIGludF9z cXJ0KHVuc2lnbmVkIGxvbmcpOwoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIGludF9zcXJ0NjQodTY0IHgpCnsKIHJldHVybiAo dTMyKWludF9zcXJ0KHgpOwp9CgoKZXh0ZXJuIHZvaWQgYnVzdF9zcGlubG9ja3MoaW50IHllcyk7 CmV4dGVybiBpbnQgb29wc19pbl9wcm9ncmVzczsKZXh0ZXJuIGludCBwYW5pY190aW1lb3V0Owpl eHRlcm4gdW5zaWduZWQgbG9uZyBwYW5pY19wcmludDsKZXh0ZXJuIGludCBwYW5pY19vbl9vb3Bz OwpleHRlcm4gaW50IHBhbmljX29uX3VucmVjb3ZlcmVkX25taTsKZXh0ZXJuIGludCBwYW5pY19v bl9pb19ubWk7CmV4dGVybiBpbnQgcGFuaWNfb25fd2FybjsKZXh0ZXJuIGludCBzeXNjdGxfcGFu aWNfb25fcmN1X3N0YWxsOwpleHRlcm4gaW50IHN5c2N0bF9wYW5pY19vbl9zdGFja292ZXJmbG93 OwoKZXh0ZXJuIGJvb2wgY3Jhc2hfa2V4ZWNfcG9zdF9ub3RpZmllcnM7CgoKCgoKCmV4dGVybiBh dG9taWNfdCBwYW5pY19jcHU7CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X2FyY2hfcGFuaWNfdGltZW91dChpbnQg dGltZW91dCwgaW50IGFyY2hfZGVmYXVsdF90aW1lb3V0KQp7CiBpZiAocGFuaWNfdGltZW91dCA9 PSBhcmNoX2RlZmF1bHRfdGltZW91dCkKICBwYW5pY190aW1lb3V0ID0gdGltZW91dDsKfQpleHRl cm4gY29uc3QgY2hhciAqcHJpbnRfdGFpbnRlZCh2b2lkKTsKZW51bSBsb2NrZGVwX29rIHsKIExP Q0tERVBfU1RJTExfT0ssCiBMT0NLREVQX05PV19VTlJFTElBQkxFCn07CmV4dGVybiB2b2lkIGFk ZF90YWludCh1bnNpZ25lZCBmbGFnLCBlbnVtIGxvY2tkZXBfb2spOwpleHRlcm4gaW50IHRlc3Rf dGFpbnQodW5zaWduZWQgZmxhZyk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGdldF90YWludCh2b2lk KTsKZXh0ZXJuIGludCByb290X21vdW50ZmxhZ3M7CgpleHRlcm4gYm9vbCBlYXJseV9ib290X2ly cXNfZGlzYWJsZWQ7CgoKCgoKZXh0ZXJuIGVudW0gc3lzdGVtX3N0YXRlcyB7CiBTWVNURU1fQk9P VElORywKIFNZU1RFTV9TQ0hFRFVMSU5HLAogU1lTVEVNX1JVTk5JTkcsCiBTWVNURU1fSEFMVCwK IFNZU1RFTV9QT1dFUl9PRkYsCiBTWVNURU1fUkVTVEFSVCwKIFNZU1RFTV9TVVNQRU5ELAp9IHN5 c3RlbV9zdGF0ZTsKIyA1OTMgIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKc3RydWN0IHRhaW50 X2ZsYWcgewogY2hhciBjX3RydWU7CiBjaGFyIGNfZmFsc2U7CiBib29sIG1vZHVsZTsKfTsKCmV4 dGVybiBjb25zdCBzdHJ1Y3QgdGFpbnRfZmxhZyB0YWludF9mbGFnc1sxOF07CgpleHRlcm4gY29u c3QgY2hhciBoZXhfYXNjW107CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGNoYXIgKmhleF9ieXRlX3BhY2soY2hhciAqYnVmLCB1OCBi eXRlKQp7CiAqYnVmKysgPSBoZXhfYXNjWygoYnl0ZSkgJiAweGYwKSA+PiA0XTsKICpidWYrKyA9 IGhleF9hc2NbKChieXRlKSAmIDB4MGYpXTsKIHJldHVybiBidWY7Cn0KCmV4dGVybiBjb25zdCBj aGFyIGhleF9hc2NfdXBwZXJbXTsKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2hhciAqaGV4X2J5dGVfcGFja191cHBlcihjaGFyICpi dWYsIHU4IGJ5dGUpCnsKICpidWYrKyA9IGhleF9hc2NfdXBwZXJbKChieXRlKSAmIDB4ZjApID4+ IDRdOwogKmJ1ZisrID0gaGV4X2FzY191cHBlclsoKGJ5dGUpICYgMHgwZildOwogcmV0dXJuIGJ1 ZjsKfQoKZXh0ZXJuIGludCBoZXhfdG9fYmluKGNoYXIgY2gpOwpleHRlcm4gaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBoZXgyYmluKHU4ICpkc3QsIGNvbnN0IGNo YXIgKnNyYywgc2l6ZV90IGNvdW50KTsKZXh0ZXJuIGNoYXIgKmJpbjJoZXgoY2hhciAqZHN0LCBj b25zdCB2b2lkICpzcmMsIHNpemVfdCBjb3VudCk7Cgpib29sIG1hY19wdG9uKGNvbnN0IGNoYXIg KnMsIHU4ICptYWMpOwojIDY0OSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgplbnVtIGZ0cmFj ZV9kdW1wX21vZGUgewogRFVNUF9OT05FLAogRFVNUF9BTEwsCiBEVU1QX09SSUcsCn07CgoKdm9p ZCB0cmFjaW5nX29uKHZvaWQpOwp2b2lkIHRyYWNpbmdfb2ZmKHZvaWQpOwppbnQgdHJhY2luZ19p c19vbih2b2lkKTsKdm9pZCB0cmFjaW5nX3NuYXBzaG90KHZvaWQpOwp2b2lkIHRyYWNpbmdfc25h cHNob3RfYWxsb2Modm9pZCk7CgpleHRlcm4gdm9pZCB0cmFjaW5nX3N0YXJ0KHZvaWQpOwpleHRl cm4gdm9pZCB0cmFjaW5nX3N0b3Aodm9pZCk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHBy aW50ZiwgMSwgMikpKQp2b2lkIF9fX190cmFjZV9wcmludGtfY2hlY2tfZm9ybWF0KGNvbnN0IGNo YXIgKmZtdCwgLi4uKQp7Cn0KIyA3MjggIi4vaW5jbHVkZS9saW51eC9rZXJuZWwuaCIKZXh0ZXJu IF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCmludCBfX3RyYWNlX2Jw cmludGsodW5zaWduZWQgbG9uZyBpcCwgY29uc3QgY2hhciAqZm10LCAuLi4pOwoKZXh0ZXJuIF9f YXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCmludCBfX3RyYWNlX3ByaW50 ayh1bnNpZ25lZCBsb25nIGlwLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiMgNzY5ICIuL2luY2x1 ZGUvbGludXgva2VybmVsLmgiCmV4dGVybiBpbnQgX190cmFjZV9icHV0cyh1bnNpZ25lZCBsb25n IGlwLCBjb25zdCBjaGFyICpzdHIpOwpleHRlcm4gaW50IF9fdHJhY2VfcHV0cyh1bnNpZ25lZCBs b25nIGlwLCBjb25zdCBjaGFyICpzdHIsIGludCBzaXplKTsKCmV4dGVybiB2b2lkIHRyYWNlX2R1 bXBfc3RhY2soaW50IHNraXApOwojIDc5MSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5lbC5oIgpleHRl cm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkgaW50Cl9fZnRyYWNl X3ZicHJpbnRrKHVuc2lnbmVkIGxvbmcgaXAsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCk7 CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDApKSkgaW50Cl9f ZnRyYWNlX3ZwcmludGsodW5zaWduZWQgbG9uZyBpcCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0 IGFwKTsKCmV4dGVybiB2b2lkIGZ0cmFjZV9kdW1wKGVudW0gZnRyYWNlX2R1bXBfbW9kZSBvb3Bz X2R1bXBfbW9kZSk7CiMgMTAgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiIDIKIyAzMyAiLi9pbmNs dWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBJTklUX0xJU1RfSEVBRChzdHJ1Y3QgbGlzdF9oZWFkICps aXN0KQp7CiAoeyB1bmlvbiB7IHR5cGVvZihsaXN0LT5uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihsaXN0LT5uZXh0KSkgKGxpc3QpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYobGlzdC0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihsaXN0LT5uZXh0KSk7 IF9fdS5fX3ZhbDsgfSk7CiBsaXN0LT5wcmV2ID0gbGlzdDsKfQoKCmV4dGVybiBib29sIF9fbGlz dF9hZGRfdmFsaWQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LAogICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpwcmV2LAogICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0KTsKZXh0ZXJuIGJvb2wg X19saXN0X2RlbF9lbnRyeV92YWxpZChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSk7CiMgNjMgIi4v aW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19saXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpu ZXcsCiAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnByZXYsCiAgICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKm5leHQpCnsKIGlmICghX19saXN0X2FkZF92YWxpZChuZXcsIHByZXYsIG5leHQpKQog IHJldHVybjsKCiBuZXh0LT5wcmV2ID0gbmV3OwogbmV3LT5uZXh0ID0gbmV4dDsKIG5ldy0+cHJl diA9IHByZXY7CiAoeyB1bmlvbiB7IHR5cGVvZihwcmV2LT5uZXh0KSBfX3ZhbDsgY2hhciBfX2Nb MV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihwcmV2LT5uZXh0KSkgKG5ldykgfTsgX193 cml0ZV9vbmNlX3NpemUoJihwcmV2LT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKHByZXYtPm5leHQp KTsgX191Ll9fdmFsOyB9KTsKfQojIDg0ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxp c3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewog X19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOwp9CiMgOTggIi4vaW5jbHVkZS9saW51 eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVj dCBsaXN0X2hlYWQgKmhlYWQpCnsKIF9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsK fQojIDExMCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBs aXN0X2hlYWQgKiBwcmV2LCBzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKewogbmV4dC0+cHJldiA9 IHByZXY7CiAoeyB1bmlvbiB7IHR5cGVvZihwcmV2LT5uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihwcmV2LT5uZXh0KSkgKG5leHQpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYocHJldi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihwcmV2LT5uZXh0KSk7 IF9fdS5fX3ZhbDsgfSk7Cn0KIyAxMjQgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19s aXN0X2RlbF9jbGVhcnByZXYoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKIF9fbGlzdF9kZWwo ZW50cnktPnByZXYsIGVudHJ5LT5uZXh0KTsKIGVudHJ5LT5wcmV2ID0gKCh2b2lkICopMCk7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgX19saXN0X2RlbF9lbnRyeShzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogaWYgKCFf X2xpc3RfZGVsX2VudHJ5X3ZhbGlkKGVudHJ5KSkKICByZXR1cm47CgogX19saXN0X2RlbChlbnRy eS0+cHJldiwgZW50cnktPm5leHQpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3RfZGVsKHN0cnVjdCBsaXN0 X2hlYWQgKmVudHJ5KQp7CiBfX2xpc3RfZGVsX2VudHJ5KGVudHJ5KTsKIGVudHJ5LT5uZXh0ID0g KCh2b2lkICopIDB4MTAwICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSk7CiBlbnRyeS0+cHJldiA9 ICgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwp9CiMgMTU4ICIuL2lu Y2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3RfcmVwbGFjZShzdHJ1Y3QgbGlzdF9oZWFkICpv bGQsCiAgICBzdHJ1Y3QgbGlzdF9oZWFkICpuZXcpCnsKIG5ldy0+bmV4dCA9IG9sZC0+bmV4dDsK IG5ldy0+bmV4dC0+cHJldiA9IG5ldzsKIG5ldy0+cHJldiA9IG9sZC0+cHJldjsKIG5ldy0+cHJl di0+bmV4dCA9IG5ldzsKfQojIDE3NCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0 X3JlcGxhY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpvbGQsCiAgICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKm5ldykKewogbGlzdF9yZXBsYWNlKG9sZCwgbmV3KTsKIElOSVRfTElTVF9IRUFEKG9s ZCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3N3YXAoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkxLAogICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgKmVudHJ5MikKewogc3RydWN0IGxpc3RfaGVhZCAqcG9zID0g ZW50cnkyLT5wcmV2OwoKIGxpc3RfZGVsKGVudHJ5Mik7CiBsaXN0X3JlcGxhY2UoZW50cnkxLCBl bnRyeTIpOwogaWYgKHBvcyA9PSBlbnRyeTEpCiAgcG9zID0gZW50cnkyOwogbGlzdF9hZGQoZW50 cnkxLCBwb3MpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X2RlbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmVu dHJ5KQp7CiBfX2xpc3RfZGVsX2VudHJ5KGVudHJ5KTsKIElOSVRfTElTVF9IRUFEKGVudHJ5KTsK fQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGxpc3RfbW92ZShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlz dF9oZWFkICpoZWFkKQp7CiBfX2xpc3RfZGVsX2VudHJ5KGxpc3QpOwogbGlzdF9hZGQobGlzdCwg aGVhZCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X21vdmVfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0 LAogICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiBfX2xpc3RfZGVsX2VudHJ5KGxpc3Qp OwogbGlzdF9hZGRfdGFpbChsaXN0LCBoZWFkKTsKfQojIDI0MCAiLi9pbmNsdWRlL2xpbnV4L2xp c3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBsaXN0X2J1bGtfbW92ZV90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCiAg ICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZmlyc3QsCiAgICAgICAgICAgc3RydWN0IGxpc3Rf aGVhZCAqbGFzdCkKewogZmlyc3QtPnByZXYtPm5leHQgPSBsYXN0LT5uZXh0OwogbGFzdC0+bmV4 dC0+cHJldiA9IGZpcnN0LT5wcmV2OwoKIGhlYWQtPnByZXYtPm5leHQgPSBmaXJzdDsKIGZpcnN0 LT5wcmV2ID0gaGVhZC0+cHJldjsKCiBsYXN0LT5uZXh0ID0gaGVhZDsKIGhlYWQtPnByZXYgPSBs YXN0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBsaXN0X2lzX2ZpcnN0KGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKmxp c3QsCiAgICAgY29uc3Qgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogcmV0dXJuIGxpc3QtPnBy ZXYgPT0gaGVhZDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbGlzdF9pc19sYXN0KGNvbnN0IHN0cnVjdCBsaXN0X2hl YWQgKmxpc3QsCiAgICBjb25zdCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiByZXR1cm4gbGlz dC0+bmV4dCA9PSBoZWFkOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGxpc3Rf aGVhZCAqaGVhZCkKewogcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKGhlYWQtPm5leHQpIF9fdmFs OyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoaGVhZC0+bmV4 dCksIF9fdS5fX2MsIHNpemVvZihoZWFkLT5uZXh0KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9u b2NoZWNrKCYoaGVhZC0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihoZWFkLT5uZXh0KSk7IGRvIHsg fSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSkgPT0gaGVhZDsKfQojIDI5OCAiLi9pbmNsdWRlL2xp bnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IGxpc3RfZW1wdHlfY2FyZWZ1bChjb25zdCBzdHJ1Y3QgbGlzdF9oZWFk ICpoZWFkKQp7CiBzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0ID0gaGVhZC0+bmV4dDsKIHJldHVybiAo bmV4dCA9PSBoZWFkKSAmJiAobmV4dCA9PSBoZWFkLT5wcmV2KTsKfQoKCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9y b3RhdGVfbGVmdChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiBzdHJ1Y3QgbGlzdF9oZWFkICpm aXJzdDsKCiBpZiAoIWxpc3RfZW1wdHkoaGVhZCkpIHsKICBmaXJzdCA9IGhlYWQtPm5leHQ7CiAg bGlzdF9tb3ZlX3RhaWwoZmlyc3QsIGhlYWQpOwogfQp9CiMgMzI1ICIuL2luY2x1ZGUvbGludXgv bGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGxpc3Rfcm90YXRlX3RvX2Zyb250KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3Qs CiAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewoKCgoKCiBsaXN0X21vdmVfdGFpbChoZWFk LCBsaXN0KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBsaXN0X2lzX3Npbmd1bGFyKGNvbnN0IHN0cnVjdCBsaXN0X2hl YWQgKmhlYWQpCnsKIHJldHVybiAhbGlzdF9lbXB0eShoZWFkKSAmJiAoaGVhZC0+bmV4dCA9PSBo ZWFkLT5wcmV2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3RfY3V0X3Bvc2l0aW9uKHN0cnVjdCBsaXN0X2hlYWQg Kmxpc3QsCiAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgc3RydWN0IGxpc3RfaGVhZCAqZW50cnkp CnsKIHN0cnVjdCBsaXN0X2hlYWQgKm5ld19maXJzdCA9IGVudHJ5LT5uZXh0OwogbGlzdC0+bmV4 dCA9IGhlYWQtPm5leHQ7CiBsaXN0LT5uZXh0LT5wcmV2ID0gbGlzdDsKIGxpc3QtPnByZXYgPSBl bnRyeTsKIGVudHJ5LT5uZXh0ID0gbGlzdDsKIGhlYWQtPm5leHQgPSBuZXdfZmlyc3Q7CiBuZXdf Zmlyc3QtPnByZXYgPSBoZWFkOwp9CiMgMzcxICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGxpc3RfY3V0X3Bvc2l0aW9uKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgc3RydWN0IGxpc3Rf aGVhZCAqaGVhZCwgc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKIGlmIChsaXN0X2VtcHR5KGhl YWQpKQogIHJldHVybjsKIGlmIChsaXN0X2lzX3Npbmd1bGFyKGhlYWQpICYmCiAgKGhlYWQtPm5l eHQgIT0gZW50cnkgJiYgaGVhZCAhPSBlbnRyeSkpCiAgcmV0dXJuOwogaWYgKGVudHJ5ID09IGhl YWQpCiAgSU5JVF9MSVNUX0hFQUQobGlzdCk7CiBlbHNlCiAgX19saXN0X2N1dF9wb3NpdGlvbihs aXN0LCBoZWFkLCBlbnRyeSk7Cn0KIyAzOTkgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg bGlzdF9jdXRfYmVmb3JlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkICpoZWFkLAogICAgICAgc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCnsKIGlmIChoZWFk LT5uZXh0ID09IGVudHJ5KSB7CiAgSU5JVF9MSVNUX0hFQUQobGlzdCk7CiAgcmV0dXJuOwogfQog bGlzdC0+bmV4dCA9IGhlYWQtPm5leHQ7CiBsaXN0LT5uZXh0LT5wcmV2ID0gbGlzdDsKIGxpc3Qt PnByZXYgPSBlbnRyeS0+cHJldjsKIGxpc3QtPnByZXYtPm5leHQgPSBsaXN0OwogaGVhZC0+bmV4 dCA9IGVudHJ5OwogZW50cnktPnByZXYgPSBoZWFkOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9zcGxpY2UoY29u c3Qgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2LAog ICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQpCnsKIHN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0g bGlzdC0+bmV4dDsKIHN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2OwoKIGZpcnN0 LT5wcmV2ID0gcHJldjsKIHByZXYtPm5leHQgPSBmaXJzdDsKCiBsYXN0LT5uZXh0ID0gbmV4dDsK IG5leHQtPnByZXYgPSBsYXN0Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9zcGxpY2UoY29uc3Qgc3RydWN0 IGxpc3RfaGVhZCAqbGlzdCwKICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKIGlmICghbGlz dF9lbXB0eShsaXN0KSkKICBfX2xpc3Rfc3BsaWNlKGxpc3QsIGhlYWQsIGhlYWQtPm5leHQpOwp9 CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgbGlzdF9zcGxpY2VfdGFpbChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAg c3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKewogaWYgKCFsaXN0X2VtcHR5KGxpc3QpKQogIF9fbGlz dF9zcGxpY2UobGlzdCwgaGVhZC0+cHJldiwgaGVhZCk7Cn0KIyA0NjAgIi4vaW5jbHVkZS9saW51 eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgbGlzdF9zcGxpY2VfaW5pdChzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAog ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCnsKIGlmICghbGlzdF9lbXB0eShsaXN0KSkg ewogIF9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCwgaGVhZC0+bmV4dCk7CiAgSU5JVF9MSVNUX0hF QUQobGlzdCk7CiB9Cn0KIyA0NzcgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbGlzdF9z cGxpY2VfdGFpbF9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKmhlYWQpCnsKIGlmICghbGlzdF9lbXB0eShsaXN0KSkgewogIF9fbGlzdF9zcGxpY2Uo bGlzdCwgaGVhZC0+cHJldiwgaGVhZCk7CiAgSU5JVF9MSVNUX0hFQUQobGlzdCk7CiB9Cn0KIyA3 NjUgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgSU5JVF9ITElTVF9OT0RFKHN0cnVjdCBo bGlzdF9ub2RlICpoKQp7CiBoLT5uZXh0ID0gKCh2b2lkICopMCk7CiBoLT5wcHJldiA9ICgodm9p ZCAqKTApOwp9CiMgNzc5ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaGxpc3RfdW5oYXNo ZWQoY29uc3Qgc3RydWN0IGhsaXN0X25vZGUgKmgpCnsKIHJldHVybiAhaC0+cHByZXY7Cn0KIyA3 OTIgIi4vaW5jbHVkZS9saW51eC9saXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBobGlzdF91bmhhc2hlZF9sb2NrbGVzcyhj b25zdCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqaCkKewogcmV0dXJuICEoeyB1bmlvbiB7IHR5cGVvZiho LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3Np emUoJihoLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihoLT5wcHJldikpOyBlbHNlIF9fcmVhZF9v bmNlX3NpemVfbm9jaGVjaygmKGgtPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKGgtPnBwcmV2KSk7 IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaGxpc3RfZW1wdHko Y29uc3Qgc3RydWN0IGhsaXN0X2hlYWQgKmgpCnsKIHJldHVybiAhKHsgdW5pb24geyB0eXBlb2Yo aC0+Zmlyc3QpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9z aXplKCYoaC0+Zmlyc3QpLCBfX3UuX19jLCBzaXplb2YoaC0+Zmlyc3QpKTsgZWxzZSBfX3JlYWRf b25jZV9zaXplX25vY2hlY2soJihoLT5maXJzdCksIF9fdS5fX2MsIHNpemVvZihoLT5maXJzdCkp OyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9faGxpc3RfZGVsKHN0 cnVjdCBobGlzdF9ub2RlICpuKQp7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbmV4dCA9IG4tPm5leHQ7 CiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqKnBwcmV2ID0gbi0+cHByZXY7CgogKHsgdW5pb24geyB0eXBl b2YoKnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZigqcHByZXYpKSAobmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqcHByZXYpLCBfX3UuX19j LCBzaXplb2YoKnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CiBpZiAobmV4dCkKICAoeyB1bmlvbiB7 IHR5cGVvZihuZXh0LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFs ID0gKCB0eXBlb2YobmV4dC0+cHByZXYpKSAocHByZXYpIH07IF9fd3JpdGVfb25jZV9zaXplKCYo bmV4dC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2YobmV4dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9 KTsKfQojIDgyMyAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9kZWwoc3RydWN0 IGhsaXN0X25vZGUgKm4pCnsKIF9faGxpc3RfZGVsKG4pOwogbi0+bmV4dCA9ICgodm9pZCAqKSAw eDEwMCArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwogbi0+cHByZXYgPSAoKHZvaWQgKikgMHgx MjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwpKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9kZWxfaW5p dChzdHJ1Y3QgaGxpc3Rfbm9kZSAqbikKewogaWYgKCFobGlzdF91bmhhc2hlZChuKSkgewogIF9f aGxpc3RfZGVsKG4pOwogIElOSVRfSExJU1RfTk9ERShuKTsKIH0KfQojIDg1MiAiLi9pbmNsdWRl L2xpbnV4L2xpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9hZGRfaGVhZChzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwg c3RydWN0IGhsaXN0X2hlYWQgKmgpCnsKIHN0cnVjdCBobGlzdF9ub2RlICpmaXJzdCA9IGgtPmZp cnN0OwogKHsgdW5pb24geyB0eXBlb2Yobi0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+bmV4dCkpIChmaXJzdCkgfTsgX193cml0ZV9vbmNl X3NpemUoJihuLT5uZXh0KSwgX191Ll9fYywgc2l6ZW9mKG4tPm5leHQpKTsgX191Ll9fdmFsOyB9 KTsKIGlmIChmaXJzdCkKICAoeyB1bmlvbiB7IHR5cGVvZihmaXJzdC0+cHByZXYpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGZpcnN0LT5wcHJldikpICgm bi0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihmaXJzdC0+cHByZXYpLCBfX3UuX19jLCBz aXplb2YoZmlyc3QtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZiho LT5maXJzdCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo aC0+Zmlyc3QpKSAobikgfTsgX193cml0ZV9vbmNlX3NpemUoJihoLT5maXJzdCksIF9fdS5fX2Ms IHNpemVvZihoLT5maXJzdCkpOyBfX3UuX192YWw7IH0pOwogKHsgdW5pb24geyB0eXBlb2Yobi0+ cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4t PnBwcmV2KSkgKCZoLT5maXJzdCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9f dS5fX2MsIHNpemVvZihuLT5wcHJldikpOyBfX3UuX192YWw7IH0pOwp9CgoKCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxp c3RfYWRkX2JlZm9yZShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwKICAgICAgICBzdHJ1Y3QgaGxpc3Rf bm9kZSAqbmV4dCkKewogKHsgdW5pb24geyB0eXBlb2Yobi0+cHByZXYpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPnBwcmV2KSkgKG5leHQtPnBwcmV2 KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG4tPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG4tPnBw cmV2KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5uZXh0KSBfX3ZhbDsg Y2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5uZXh0KSkgKG5leHQp IH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihuLT5uZXh0 KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZihuZXh0LT5wcHJldikgX192YWw7 IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YobmV4dC0+cHByZXYpKSAo Jm4tPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobmV4dC0+cHByZXYpLCBfX3UuX19jLCBz aXplb2YobmV4dC0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKICh7IHVuaW9uIHsgdHlwZW9mKCoo bi0+cHByZXYpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZigqKG4tPnBwcmV2KSkpIChuKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCoobi0+cHByZXYpKSwg X191Ll9fYywgc2l6ZW9mKCoobi0+cHByZXYpKSk7IF9fdS5fX3ZhbDsgfSk7Cn0KCgoKCgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBobGlzdF9hZGRfYmVoaW5kKHN0cnVjdCBobGlzdF9ub2RlICpuLAogICAgICAgIHN0cnVjdCBo bGlzdF9ub2RlICpwcmV2KQp7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5uZXh0KSBfX3ZhbDsgY2hh ciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5uZXh0KSkgKHByZXYtPm5l eHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihuLT5u ZXh0KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZihwcmV2LT5uZXh0KSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihwcmV2LT5uZXh0KSkg KG4pIH07IF9fd3JpdGVfb25jZV9zaXplKCYocHJldi0+bmV4dCksIF9fdS5fX2MsIHNpemVvZihw cmV2LT5uZXh0KSk7IF9fdS5fX3ZhbDsgfSk7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikg X192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYp KSAoJnByZXYtPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+cHByZXYpLCBfX3UuX19j LCBzaXplb2Yobi0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKCiBpZiAobi0+bmV4dCkKICAoeyB1 bmlvbiB7IHR5cGVvZihuLT5uZXh0LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9 IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+bmV4dC0+cHByZXYpKSAoJm4tPm5leHQpIH07IF9fd3Jp dGVfb25jZV9zaXplKCYobi0+bmV4dC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yobi0+bmV4dC0+ cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKfQojIDkwMCAiLi9pbmNsdWRlL2xpbnV4L2xpc3QuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBobGlzdF9hZGRfZmFrZShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbikKewogbi0+cHByZXYgPSAm bi0+bmV4dDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgaGxpc3RfZmFrZShzdHJ1Y3QgaGxpc3Rfbm9kZSAqaCkKewog cmV0dXJuIGgtPnBwcmV2ID09ICZoLT5uZXh0Owp9CiMgOTIyICIuL2luY2x1ZGUvbGludXgvbGlz dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sCmhsaXN0X2lzX3Npbmd1bGFyX25vZGUoc3RydWN0IGhsaXN0X25vZGUgKm4sIHN0 cnVjdCBobGlzdF9oZWFkICpoKQp7CiByZXR1cm4gIW4tPm5leHQgJiYgbi0+cHByZXYgPT0gJmgt PmZpcnN0Owp9CiMgOTM2ICIuL2luY2x1ZGUvbGludXgvbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X21vdmVf bGlzdChzdHJ1Y3QgaGxpc3RfaGVhZCAqb2xkLAogICAgICAgc3RydWN0IGhsaXN0X2hlYWQgKm5l dykKewogbmV3LT5maXJzdCA9IG9sZC0+Zmlyc3Q7CiBpZiAobmV3LT5maXJzdCkKICBuZXctPmZp cnN0LT5wcHJldiA9ICZuZXctPmZpcnN0Owogb2xkLT5maXJzdCA9ICgodm9pZCAqKTApOwp9CiMg MTIgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiIDIKIyA3OCAiLi9pbmNsdWRlL2xpbnV4L3By ZWVtcHQuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3ByZWVtcHQuaCIgMQoKCgoKCiMg MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZXJjcHUuaCIgMQojIDg4ICIuL2FyY2gveDg2L2lu Y2x1ZGUvYXNtL3BlcmNwdS5oIgpleHRlcm4gdm9pZCBfX2JhZF9wZXJjcHVfc2l6ZSh2b2lkKTsK IyA1MjQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGVyY3B1LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgYm9vbCB4ODZfdGhpc19jcHVfY29uc3RhbnRfdGVzdF9iaXQodW5z aWduZWQgaW50IG5yLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25n ICphZGRyKQp7CiB1bnNpZ25lZCBsb25nICphID0KICAodW5zaWduZWQgbG9uZyAqKWFkZHIgKyBu ciAvIDY0OwoKCiByZXR1cm4gKCgxVUwgPDwgKG5yICUgNjQpKSAmICh7IHR5cGVvZigqYSkgcGZv X3JldF9fOyBzd2l0Y2ggKHNpemVvZigqYSkpIHsgY2FzZSAxOiBhc20gKCJtb3YiICJiICIiJSUi ImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iICgqYSkpOyBicmVh azsgY2FzZSAyOiBhc20gKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iICgqYSkpOyBicmVhazsgY2FzZSA0OiBhc20gKCJtb3YiICJsICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iICgqYSkpOyBi cmVhazsgY2FzZSA4OiBhc20gKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogIm0iICgqYSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1 X3NpemUoKTsgfSBwZm9fcmV0X187IH0pKSAhPSAwOwoKCgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHg4Nl90aGlzX2NwdV92 YXJpYWJsZV90ZXN0X2JpdChpbnQgbnIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu c2lnbmVkIGxvbmcgKmFkZHIpCnsKIGJvb2wgb2xkYml0OwoKIGFzbSB2b2xhdGlsZSgiYnRsICIi JSUiImdzIiI6IiAiJSIgIjIiIiwlMSIKICAgIlxuXHQvKiBvdXRwdXQgY29uZGl0aW9uIGNvZGUg IiAiYyIgIiovXG4iCiAgIDogIj1AY2MiICJjIiAob2xkYml0KQogICA6ICJtIiAoKih1bnNpZ25l ZCBsb25nICopYWRkciksICJJciIgKG5yKSk7CgogcmV0dXJuIG9sZGJpdDsKfQoKCgoKCgoKIyAx ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGVyY3B1LmgiIDEKCgoKCgojIDEgIi4vaW5jbHVkZS9s aW51eC90aHJlYWRzLmgiIDEKIyA3ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcGVyY3B1LmgiIDIK IyAxICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LWRlZnMuaCIgMQojIDMwOCAiLi9pbmNsdWRlL2xp bnV4L3BlcmNwdS1kZWZzLmgiCmV4dGVybiB2b2lkIF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIo dm9pZCk7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIF9fdGhpc19jcHVfcHJlZW1wdF9jaGVjayhjb25zdCBjaGFyICpvcCkg eyB9CiMgOCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BlcmNwdS5oIiAyCiMgMTkgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9wZXJjcHUuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19wZXJfY3B1X29m ZnNldFs4XTsKIyA0OCAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BlcmNwdS5oIgpleHRlcm4gdm9p ZCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpOwojIDU1NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wZXJjcHUuaCIgMgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVy Y3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1bnNpZ25lZCBsb25nKSB0aGlzX2Nw dV9vZmY7CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcmVlbXB0LmgiIDIKIyAxICIuL2lu Y2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMQojIDEyICIuL2luY2x1ZGUvbGludXgvdGhyZWFk X2luZm8uaCIKIyAxICIuL2luY2x1ZGUvbGludXgvYnVnLmgiIDEKCgoKCiMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9idWcuaCIgMQojIDgzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2J1Zy5o IgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9idWcuaCIgMQojIDI0ICIuL2luY2x1ZGUvYXNt LWdlbmVyaWMvYnVnLmgiCnN0cnVjdCBidWdfZW50cnkgewoKCgogc2lnbmVkIGludCBidWdfYWRk cl9kaXNwOwoKCgoKCiBzaWduZWQgaW50IGZpbGVfZGlzcDsKCiB1bnNpZ25lZCBzaG9ydCBsaW5l OwoKIHVuc2lnbmVkIHNob3J0IGZsYWdzOwp9OwojIDg5ICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMv YnVnLmgiCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMSwgMikpKSB2 b2lkIF9fd2Fybl9wcmludGsoY29uc3QgY2hhciAqZm10LCAuLi4pOwojIDEwNSAiLi9pbmNsdWRl L2FzbS1nZW5lcmljL2J1Zy5oIgpzdHJ1Y3Qgd2Fybl9hcmdzOwpzdHJ1Y3QgcHRfcmVnczsKCnZv aWQgX193YXJuKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCB2b2lkICpjYWxsZXIsIHVuc2ln bmVkIHRhaW50LAogICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzLCBzdHJ1Y3Qgd2Fybl9hcmdzICph cmdzKTsKIyA4NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9idWcuaCIgMgojIDYgIi4vaW5jbHVk ZS9saW51eC9idWcuaCIgMgoKCgplbnVtIGJ1Z190cmFwX3R5cGUgewogQlVHX1RSQVBfVFlQRV9O T05FID0gMCwKIEJVR19UUkFQX1RZUEVfV0FSTiA9IDEsCiBCVUdfVFJBUF9UWVBFX0JVRyA9IDIs Cn07CgpzdHJ1Y3QgcHRfcmVnczsKIyAzNCAiLi9pbmNsdWRlL2xpbnV4L2J1Zy5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaXNf d2FybmluZ19idWcoY29uc3Qgc3RydWN0IGJ1Z19lbnRyeSAqYnVnKQp7CiByZXR1cm4gYnVnLT5m bGFncyAmICgxIDw8IDApOwp9CgpzdHJ1Y3QgYnVnX2VudHJ5ICpmaW5kX2J1Zyh1bnNpZ25lZCBs b25nIGJ1Z2FkZHIpOwoKZW51bSBidWdfdHJhcF90eXBlIHJlcG9ydF9idWcodW5zaWduZWQgbG9u ZyBidWdfYWRkciwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwoKCmludCBpc192YWxpZF9idWdhZGRy KHVuc2lnbmVkIGxvbmcgYWRkcik7Cgp2b2lkIGdlbmVyaWNfYnVnX2NsZWFyX29uY2Uodm9pZCk7 CiMgNzAgIi4vaW5jbHVkZS9saW51eC9idWcuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIGJvb2wgY2hlY2tfZGF0YV9jb3JydXB0aW9uKGJvb2wgdikgeyByZXR1cm4g djsgfQojIDEzICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMgojIDEgIi4vaW5jbHVk ZS9saW51eC9yZXN0YXJ0X2Jsb2NrLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xpbnV4L3Jlc3RhcnRf YmxvY2suaCIKIyAxICIuL2luY2x1ZGUvbGludXgvdGltZTY0LmgiIDEKCgoKCiMgMSAiLi9pbmNs dWRlL2xpbnV4L21hdGg2NC5oIiAxCiMgMjQgIi4vaW5jbHVkZS9saW51eC9tYXRoNjQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0 IGRpdl91NjRfcmVtKHU2NCBkaXZpZGVuZCwgdTMyIGRpdmlzb3IsIHUzMiAqcmVtYWluZGVyKQp7 CiAqcmVtYWluZGVyID0gZGl2aWRlbmQgJSBkaXZpc29yOwogcmV0dXJuIGRpdmlkZW5kIC8gZGl2 aXNvcjsKfQojIDM4ICIuL2luY2x1ZGUvbGludXgvbWF0aDY0LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBkaXZfczY0X3JlbShz NjQgZGl2aWRlbmQsIHMzMiBkaXZpc29yLCBzMzIgKnJlbWFpbmRlcikKewogKnJlbWFpbmRlciA9 IGRpdmlkZW5kICUgZGl2aXNvcjsKIHJldHVybiBkaXZpZGVuZCAvIGRpdmlzb3I7Cn0KIyA1MiAi Li9pbmNsdWRlL2xpbnV4L21hdGg2NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgZGl2NjRfdTY0X3JlbSh1NjQgZGl2aWRlbmQs IHU2NCBkaXZpc29yLCB1NjQgKnJlbWFpbmRlcikKewogKnJlbWFpbmRlciA9IGRpdmlkZW5kICUg ZGl2aXNvcjsKIHJldHVybiBkaXZpZGVuZCAvIGRpdmlzb3I7Cn0KIyA2NSAiLi9pbmNsdWRlL2xp bnV4L21hdGg2NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1NjQgZGl2NjRfdTY0KHU2NCBkaXZpZGVuZCwgdTY0IGRpdmlzb3IpCnsK IHJldHVybiBkaXZpZGVuZCAvIGRpdmlzb3I7Cn0KIyA3NyAiLi9pbmNsdWRlL2xpbnV4L21hdGg2 NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzNjQgZGl2NjRfczY0KHM2NCBkaXZpZGVuZCwgczY0IGRpdmlzb3IpCnsKIHJldHVybiBk aXZpZGVuZCAvIGRpdmlzb3I7Cn0KIyAxMjMgIi4vaW5jbHVkZS9saW51eC9tYXRoNjQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0 IGRpdl91NjQodTY0IGRpdmlkZW5kLCB1MzIgZGl2aXNvcikKewogdTMyIHJlbWFpbmRlcjsKIHJl dHVybiBkaXZfdTY0X3JlbShkaXZpZGVuZCwgZGl2aXNvciwgJnJlbWFpbmRlcik7Cn0KIyAxMzYg Ii4vaW5jbHVkZS9saW51eC9tYXRoNjQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGRpdl9zNjQoczY0IGRpdmlkZW5kLCBzMzIg ZGl2aXNvcikKewogczMyIHJlbWFpbmRlcjsKIHJldHVybiBkaXZfczY0X3JlbShkaXZpZGVuZCwg ZGl2aXNvciwgJnJlbWFpbmRlcik7Cn0KCgp1MzIgaXRlcl9kaXZfdTY0X3JlbSh1NjQgZGl2aWRl bmQsIHUzMiBkaXZpc29yLCB1NjQgKnJlbWFpbmRlcik7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIHUzMgpfX2l0ZXJfZGl2X3U2NF9yZW0odTY0IGRpdmlkZW5kLCB1MzIgZGl2 aXNvciwgdTY0ICpyZW1haW5kZXIpCnsKIHUzMiByZXQgPSAwOwoKIHdoaWxlIChkaXZpZGVuZCA+ PSBkaXZpc29yKSB7CgoKICBhc20oIiIgOiAiK3JtIihkaXZpZGVuZCkpOwoKICBkaXZpZGVuZCAt PSBkaXZpc29yOwogIHJldCsrOwogfQoKICpyZW1haW5kZXIgPSBkaXZpZGVuZDsKCiByZXR1cm4g cmV0Owp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdTY0IG11bF91MzJfdTMyKHUzMiBhLCB1MzIgYikKewogcmV0dXJuICh1NjQp YSAqIGI7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1NjQgbXVsX3U2NF91MzJfc2hyKHU2NCBhLCB1MzIgbXVsLCB1bnNpZ25l ZCBpbnQgc2hpZnQpCnsKIHJldHVybiAodTY0KSgoKHVuc2lnbmVkIF9faW50MTI4KWEgKiBtdWwp ID4+IHNoaWZ0KTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1NjQgbXVsX3U2NF91NjRfc2hyKHU2NCBhLCB1NjQgbXVsLCB1bnNp Z25lZCBpbnQgc2hpZnQpCnsKIHJldHVybiAodTY0KSgoKHVuc2lnbmVkIF9faW50MTI4KWEgKiBt dWwpID4+IHNoaWZ0KTsKfQojIDYgIi4vaW5jbHVkZS9saW51eC90aW1lNjQuaCIgMgoKdHlwZWRl ZiBfX3M2NCB0aW1lNjRfdDsKdHlwZWRlZiBfX3U2NCB0aW1ldTY0X3Q7CgojIDEgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L3RpbWUuaCIgMQoKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvdGlt ZV90eXBlcy5oIiAxCgoKCgoKCnN0cnVjdCBfX2tlcm5lbF90aW1lc3BlYyB7CiBfX2tlcm5lbF90 aW1lNjRfdCB0dl9zZWM7CiBsb25nIGxvbmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBfX2tlcm5lbF9p dGltZXJzcGVjIHsKIHN0cnVjdCBfX2tlcm5lbF90aW1lc3BlYyBpdF9pbnRlcnZhbDsKIHN0cnVj dCBfX2tlcm5lbF90aW1lc3BlYyBpdF92YWx1ZTsKfTsKIyAyNSAiLi9pbmNsdWRlL3VhcGkvbGlu dXgvdGltZV90eXBlcy5oIgpzdHJ1Y3QgX19rZXJuZWxfb2xkX3RpbWV2YWwgewogX19rZXJuZWxf bG9uZ190IHR2X3NlYzsKIF9fa2VybmVsX2xvbmdfdCB0dl91c2VjOwp9OwoKCnN0cnVjdCBfX2tl cm5lbF9vbGRfdGltZXNwZWMgewogX19rZXJuZWxfb2xkX3RpbWVfdCB0dl9zZWM7CiBsb25nIHR2 X25zZWM7Cn07CgpzdHJ1Y3QgX19rZXJuZWxfb2xkX2l0aW1lcnZhbCB7CiBzdHJ1Y3QgX19rZXJu ZWxfb2xkX3RpbWV2YWwgaXRfaW50ZXJ2YWw7CiBzdHJ1Y3QgX19rZXJuZWxfb2xkX3RpbWV2YWwg aXRfdmFsdWU7Cn07CgpzdHJ1Y3QgX19rZXJuZWxfc29ja190aW1ldmFsIHsKIF9fczY0IHR2X3Nl YzsKIF9fczY0IHR2X3VzZWM7Cn07CiMgNyAiLi9pbmNsdWRlL3VhcGkvbGludXgvdGltZS5oIiAy CiMgMzMgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWUuaCIKc3RydWN0IHRpbWV6b25lIHsKIGlu dCB0el9taW51dGVzd2VzdDsKIGludCB0el9kc3R0aW1lOwp9OwojIDExICIuL2luY2x1ZGUvbGlu dXgvdGltZTY0LmgiIDIKCnN0cnVjdCB0aW1lc3BlYzY0IHsKIHRpbWU2NF90IHR2X3NlYzsKIGxv bmcgdHZfbnNlYzsKfTsKCnN0cnVjdCBpdGltZXJzcGVjNjQgewogc3RydWN0IHRpbWVzcGVjNjQg aXRfaW50ZXJ2YWw7CiBzdHJ1Y3QgdGltZXNwZWM2NCBpdF92YWx1ZTsKfTsKIyA0OSAiLi9pbmNs dWRlL2xpbnV4L3RpbWU2NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGltZXNwZWM2NF9lcXVhbChjb25zdCBzdHJ1Y3QgdGlt ZXNwZWM2NCAqYSwKICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICpiKQp7CiByZXR1cm4g KGEtPnR2X3NlYyA9PSBiLT50dl9zZWMpICYmIChhLT50dl9uc2VjID09IGItPnR2X25zZWMpOwp9 CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCB0aW1lc3BlYzY0X2NvbXBhcmUoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKmxo cywgY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnJocykKewogaWYgKGxocy0+dHZfc2VjIDwgcmhz LT50dl9zZWMpCiAgcmV0dXJuIC0xOwogaWYgKGxocy0+dHZfc2VjID4gcmhzLT50dl9zZWMpCiAg cmV0dXJuIDE7CiByZXR1cm4gbGhzLT50dl9uc2VjIC0gcmhzLT50dl9uc2VjOwp9CgpleHRlcm4g dm9pZCBzZXRfbm9ybWFsaXplZF90aW1lc3BlYzY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cywgdGlt ZTY0X3Qgc2VjLCBzNjQgbnNlYyk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgdGltZXNwZWM2NCB0aW1lc3BlYzY0X2FkZChz dHJ1Y3QgdGltZXNwZWM2NCBsaHMsCiAgICAgIHN0cnVjdCB0aW1lc3BlYzY0IHJocykKewogc3Ry dWN0IHRpbWVzcGVjNjQgdHNfZGVsdGE7CiBzZXRfbm9ybWFsaXplZF90aW1lc3BlYzY0KCZ0c19k ZWx0YSwgbGhzLnR2X3NlYyArIHJocy50dl9zZWMsCiAgICBsaHMudHZfbnNlYyArIHJocy50dl9u c2VjKTsKIHJldHVybiB0c19kZWx0YTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHRpbWVzcGVjNjQgdGltZXNwZWM2 NF9zdWIoc3RydWN0IHRpbWVzcGVjNjQgbGhzLAogICAgICBzdHJ1Y3QgdGltZXNwZWM2NCByaHMp CnsKIHN0cnVjdCB0aW1lc3BlYzY0IHRzX2RlbHRhOwogc2V0X25vcm1hbGl6ZWRfdGltZXNwZWM2 NCgmdHNfZGVsdGEsIGxocy50dl9zZWMgLSByaHMudHZfc2VjLAogICAgbGhzLnR2X25zZWMgLSBy aHMudHZfbnNlYyk7CiByZXR1cm4gdHNfZGVsdGE7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGltZXNwZWM2NF92YWxp ZChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCnsKCiBpZiAodHMtPnR2X3NlYyA8IDApCiAg cmV0dXJuIGZhbHNlOwoKIGlmICgodW5zaWduZWQgbG9uZyl0cy0+dHZfbnNlYyA+PSAxMDAwMDAw MDAwTCkKICByZXR1cm4gZmFsc2U7CiByZXR1cm4gdHJ1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0aW1lc3BlYzY0X3Zh bGlkX3N0cmljdChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpCnsKIGlmICghdGltZXNwZWM2 NF92YWxpZCh0cykpCiAgcmV0dXJuIGZhbHNlOwoKIGlmICgodW5zaWduZWQgbG9uZyBsb25nKXRz LT50dl9zZWMgPj0gKCgoczY0KX4oKHU2NCkxIDw8IDYzKSkgLyAxMDAwMDAwMDAwTCkpCiAgcmV0 dXJuIGZhbHNlOwogcmV0dXJuIHRydWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGltZXNwZWM2NF92YWxpZF9zZXR0b2Qo Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKQp7CiBpZiAoIXRpbWVzcGVjNjRfdmFsaWQodHMp KQogIHJldHVybiBmYWxzZTsKCiBpZiAoKHVuc2lnbmVkIGxvbmcgbG9uZyl0cy0+dHZfc2VjID49 ICgoKChzNjQpfigodTY0KTEgPDwgNjMpKSAvIDEwMDAwMDAwMDBMKSAtICgzMExMICogMzY1ICog MjQgKjM2MDApKSkKICByZXR1cm4gZmFsc2U7CiByZXR1cm4gdHJ1ZTsKfQojIDEzMyAiLi9pbmNs dWRlL2xpbnV4L3RpbWU2NC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgdGltZXNwZWM2NF90b19ucyhjb25zdCBzdHJ1Y3QgdGlt ZXNwZWM2NCAqdHMpCnsKIHJldHVybiAoKHM2NCkgdHMtPnR2X3NlYyAqIDEwMDAwMDAwMDBMKSAr IHRzLT50dl9uc2VjOwp9CgoKCgoKCgpleHRlcm4gc3RydWN0IHRpbWVzcGVjNjQgbnNfdG9fdGlt ZXNwZWM2NChjb25zdCBzNjQgbnNlYyk7CiMgMTU0ICIuL2luY2x1ZGUvbGludXgvdGltZTY0Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCB0aW1lc3BlYzY0X2FkZF9u cyhzdHJ1Y3QgdGltZXNwZWM2NCAqYSwgdTY0IG5zKQp7CiBhLT50dl9zZWMgKz0gX19pdGVyX2Rp dl91NjRfcmVtKGEtPnR2X25zZWMgKyBucywgMTAwMDAwMDAwMEwsICZucyk7CiBhLT50dl9uc2Vj ID0gbnM7Cn0KCgoKCgpleHRlcm4gc3RydWN0IHRpbWVzcGVjNjQgdGltZXNwZWM2NF9hZGRfc2Fm ZShjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCBsaHMsCiAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3Bl YzY0IHJocyk7CiMgMTEgIi4vaW5jbHVkZS9saW51eC9yZXN0YXJ0X2Jsb2NrLmgiIDIKCnN0cnVj dCB0aW1lc3BlYzsKc3RydWN0IG9sZF90aW1lc3BlYzMyOwpzdHJ1Y3QgcG9sbGZkOwoKZW51bSB0 aW1lc3BlY190eXBlIHsKIFRUX05PTkUgPSAwLAogVFRfTkFUSVZFID0gMSwKIFRUX0NPTVBBVCA9 IDIsCn07CgoKCgpzdHJ1Y3QgcmVzdGFydF9ibG9jayB7CiBsb25nICgqZm4pKHN0cnVjdCByZXN0 YXJ0X2Jsb2NrICopOwogdW5pb24gewoKICBzdHJ1Y3QgewogICB1MzIgKnVhZGRyOwogICB1MzIg dmFsOwogICB1MzIgZmxhZ3M7CiAgIHUzMiBiaXRzZXQ7CiAgIHU2NCB0aW1lOwogICB1MzIgKnVh ZGRyMjsKICB9IGZ1dGV4OwoKICBzdHJ1Y3QgewogICBjbG9ja2lkX3QgY2xvY2tpZDsKICAgZW51 bSB0aW1lc3BlY190eXBlIHR5cGU7CiAgIHVuaW9uIHsKICAgIHN0cnVjdCBfX2tlcm5lbF90aW1l c3BlYyAqcm10cDsKICAgIHN0cnVjdCBvbGRfdGltZXNwZWMzMiAqY29tcGF0X3JtdHA7CiAgIH07 CiAgIHU2NCBleHBpcmVzOwogIH0gbmFub3NsZWVwOwoKICBzdHJ1Y3QgewogICBzdHJ1Y3QgcG9s bGZkICp1ZmRzOwogICBpbnQgbmZkczsKICAgaW50IGhhc190aW1lb3V0OwogICB1bnNpZ25lZCBs b25nIHR2X3NlYzsKICAgdW5zaWduZWQgbG9uZyB0dl9uc2VjOwogIH0gcG9sbDsKIH07Cn07Cgpl eHRlcm4gbG9uZyBkb19ub19yZXN0YXJ0X3N5c2NhbGwoc3RydWN0IHJlc3RhcnRfYmxvY2sgKnBh cm0pOwojIDE0ICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMgoKCgoKCgoKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2N1cnJlbnQuaCIgMQojIDkgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vY3VycmVudC5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpleHRlcm4gX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKikgY3VycmVudF90YXNrOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmdldF9jdXJyZW50KHZvaWQpCnsKIHJldHVybiAoeyB0eXBl b2YoY3VycmVudF90YXNrKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGN1cnJlbnRfdGFzaykp IHsgY2FzZSAxOiBhc20oIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXEi IChwZm9fcmV0X18pIDogInAiICgmKGN1cnJlbnRfdGFzaykpKTsgYnJlYWs7IGNhc2UgMjogYXNt KCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6 ICJwIiAoJihjdXJyZW50X3Rhc2spKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSgibW92IiAibCAiIiUl IiJncyIiOiIgIiUiICJQMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAicCIgKCYoY3VycmVu dF90YXNrKSkpOyBicmVhazsgY2FzZSA4OiBhc20oIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAi UDEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogInAiICgmKGN1cnJlbnRfdGFzaykpKTsgYnJl YWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsKfQojIDIy ICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMgojIDMxICIuL2luY2x1ZGUvbGludXgv dGhyZWFkX2luZm8uaCIKZW51bSB7CiBCQURfU1RBQ0sgPSAtMSwKIE5PVF9TVEFDSyA9IDAsCiBH T09EX0ZSQU1FLAogR09PRF9TVEFDSywKfTsKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90 aHJlYWRfaW5mby5oIiAxCiMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8u aCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMQojIDEyICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3BhZ2UuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjQu aCIgMQojIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjQuaCIKZXh0ZXJuIHVuc2ln bmVkIGxvbmcgbWF4X3BmbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgcGh5c19iYXNlOwoKZXh0ZXJu IHVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXRfYmFzZTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdm1h bGxvY19iYXNlOwpleHRlcm4gdW5zaWduZWQgbG9uZyB2bWVtbWFwX2Jhc2U7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBs b25nIF9fcGh5c19hZGRyX25vZGVidWcodW5zaWduZWQgbG9uZyB4KQp7CiB1bnNpZ25lZCBsb25n IHkgPSB4IC0gKDB4ZmZmZmZmZmY4MDAwMDAwMFVMKTsKCgogeCA9IHkgKyAoKHggPiB5KSA/IHBo eXNfYmFzZSA6ICgoMHhmZmZmZmZmZjgwMDAwMDAwVUwpIC0gKCh1bnNpZ25lZCBsb25nKXBhZ2Vf b2Zmc2V0X2Jhc2UpKSk7CgogcmV0dXJuIHg7Cn0KIyA0MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9wYWdlXzY0LmgiCnZvaWQgY2xlYXJfcGFnZV9vcmlnKHZvaWQgKnBhZ2UpOwp2b2lkIGNsZWFy X3BhZ2VfcmVwKHZvaWQgKnBhZ2UpOwp2b2lkIGNsZWFyX3BhZ2VfZXJtcyh2b2lkICpwYWdlKTsK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgY2xlYXJfcGFnZSh2b2lkICpwYWdlKQp7CiBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIj IEFMVDogb2xkaW5zdHIyXG4iICI2NjE6XG5cdCIgImNhbGwgJVBbb2xkXSIgIlxuNjYyOlxuIiAi IyBBTFQ6IHBhZGRpbmcyXG4iICIuc2tpcCAtKCgiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIi ZiIgIikgXiAoKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCIgIjY2NSIiMiIiZi0i IjY2NCIiMiIiZiIgIikpICYgLSgtKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIDwgKCIg IjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpKSkpIiAiIC0gKCIgIjY2MmItNjYxYiIgIikpID4g MCkgKiAiICIoIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCgoIiAiNjY1IiIx IiJmLSIiNjY0IiIxIiJmIiAiKSBeICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSAmIC0o LSgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSA8ICgiICI2NjUiIjIiImYtIiI2NjQiIjIi ImYiICIpKSkpKSIgIiAtICgiICI2NjJiLTY2MWIiICIpKSwgMHg5MFxuIiAiNjYzIiAiOlxuIiAi LnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyA2NjFiIC0gLlxu IiAiIC5sb25nICIgIjY2NCIiMSIiZiAtIC5cbiIgIiAud29yZCAiICIoIDMqMzIrMTYpIiAiXG4i ICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQi IjEiImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAiIC5sb25nIDY2MWIgLSAu XG4iICIgLmxvbmcgIiAiNjY0IiIyIiJmIC0gLlxuIiAiIC53b3JkICIgIiggOSozMisgOSkiICJc biIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMiIiZi0iIjY2 NCIiMiIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxu IiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDog cmVwbGFjZW1lbnQgIiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgImNhbGwgJVBbbmV3MV0iICJc biIgIjY2NSIiMSIgIjpcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIyIiAiXG4iICI2NjQiIjIi Ijpcblx0IiAiY2FsbCAlUFtuZXcyXSIgIlxuIiAiNjY1IiIyIiAiOlxuIiAiLnBvcHNlY3Rpb25c biIgOiAiPUQiIChwYWdlKSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtvbGRdICJp IiAoY2xlYXJfcGFnZV9vcmlnKSwgW25ldzFdICJpIiAoY2xlYXJfcGFnZV9yZXApLCBbbmV3Ml0g ImkiIChjbGVhcl9wYWdlX2VybXMpLCAiMCIgKHBhZ2UpIDogImNjIiwgIm1lbW9yeSIsICJyYXgi LCAicmN4IikKCgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCnZv aWQgY29weV9wYWdlKHZvaWQgKnRvLCB2b2lkICpmcm9tKTsKIyAxMyAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wYWdlLmgiIDIKCgoKCgoKc3RydWN0IHBhZ2U7CgojIDEgIi4vaW5jbHVkZS9saW51 eC9yYW5nZS5oIiAxCgoKCgpzdHJ1Y3QgcmFuZ2UgewogdTY0IHN0YXJ0OwogdTY0IGVuZDsKfTsK CmludCBhZGRfcmFuZ2Uoc3RydWN0IHJhbmdlICpyYW5nZSwgaW50IGF6LCBpbnQgbnJfcmFuZ2Us CiAgdTY0IHN0YXJ0LCB1NjQgZW5kKTsKCgppbnQgYWRkX3JhbmdlX3dpdGhfbWVyZ2Uoc3RydWN0 IHJhbmdlICpyYW5nZSwgaW50IGF6LCBpbnQgbnJfcmFuZ2UsCiAgICB1NjQgc3RhcnQsIHU2NCBl bmQpOwoKdm9pZCBzdWJ0cmFjdF9yYW5nZShzdHJ1Y3QgcmFuZ2UgKnJhbmdlLCBpbnQgYXosIHU2 NCBzdGFydCwgdTY0IGVuZCk7CgppbnQgY2xlYW5fc29ydF9yYW5nZShzdHJ1Y3QgcmFuZ2UgKnJh bmdlLCBpbnQgYXopOwoKdm9pZCBzb3J0X3JhbmdlKHN0cnVjdCByYW5nZSAqcmFuZ2UsIGludCBu cl9yYW5nZSk7CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgcmVzb3VyY2Vfc2l6ZV90IGNhcF9yZXNvdXJjZSh1NjQgdmFsKQp7CiBpZiAo dmFsID4gKChyZXNvdXJjZV9zaXplX3QpfjApKQogIHJldHVybiAoKHJlc291cmNlX3NpemVfdCl+ MCk7CgogcmV0dXJuIHZhbDsKfQojIDIyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2UuaCIg MgpleHRlcm4gc3RydWN0IHJhbmdlIHBmbl9tYXBwZWRbXTsKZXh0ZXJuIGludCBucl9wZm5fbWFw cGVkOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBjbGVhcl91c2VyX3BhZ2Uodm9pZCAqcGFnZSwgdW5zaWduZWQgbG9uZyB2YWRk ciwKICAgICAgIHN0cnVjdCBwYWdlICpwZykKewogY2xlYXJfcGFnZShwYWdlKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBj b3B5X3VzZXJfcGFnZSh2b2lkICp0bywgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyB2YWRkciwK ICAgICAgc3RydWN0IHBhZ2UgKnRvcGFnZSkKewogY29weV9wYWdlKHRvLCBmcm9tKTsKfQojIDcx ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2UuaCIKZXh0ZXJuIGJvb2wgX192aXJ0X2FkZHJf dmFsaWQodW5zaWduZWQgbG9uZyBrYWRkcik7CgoKCgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9tZW1vcnlfbW9kZWwuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvcGZuLmgiIDEKIyAx MyAiLi9pbmNsdWRlL2xpbnV4L3Bmbi5oIgp0eXBlZGVmIHN0cnVjdCB7CiB1NjQgdmFsOwp9IHBm bl90OwojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9tZW1vcnlfbW9kZWwuaCIgMgojIDc3ICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2UuaCIgMgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9nZXRvcmRlci5oIiAxCiMgMjkgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9nZXRvcmRlci5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2NvbnN0X18pKSBpbnQgZ2V0X29yZGVyKHVuc2lnbmVkIGxvbmcgc2l6 ZSkKewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKSB7CiAgaWYgKCFzaXplKQogICBy ZXR1cm4gNjQgLSAxMjsKCiAgaWYgKHNpemUgPCAoMVVMIDw8IDEyKSkKICAgcmV0dXJuIDA7Cgog IHJldHVybiAoIF9fYnVpbHRpbl9jb25zdGFudF9wKChzaXplKSAtIDEpID8gKCBfX2J1aWx0aW5f Y29uc3RhbnRfcCgoc2l6ZSkgLSAxKSA/ICggKChzaXplKSAtIDEpIDwgMiA/IDAgOiAoKHNpemUp IC0gMSkgJiAoMVVMTCA8PCA2MykgPyA2MyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDYyKSA/ IDYyIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNjEpID8gNjEgOiAoKHNpemUpIC0gMSkgJiAo MVVMTCA8PCA2MCkgPyA2MCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDU5KSA/IDU5IDogKChz aXplKSAtIDEpICYgKDFVTEwgPDwgNTgpID8gNTggOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1 NykgPyA1NyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKChzaXplKSAtIDEp ICYgKDFVTEwgPDwgNTUpID8gNTUgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1NCkgPyA1NCA6 ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDUzKSA/IDUzIDogKChzaXplKSAtIDEpICYgKDFVTEwg PDwgNTIpID8gNTIgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1MSkgPyA1MSA6ICgoc2l6ZSkg LSAxKSAmICgxVUxMIDw8IDUwKSA/IDUwIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDkpID8g NDkgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA0OCkgPyA0OCA6ICgoc2l6ZSkgLSAxKSAmICgx VUxMIDw8IDQ3KSA/IDQ3IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDYpID8gNDYgOiAoKHNp emUpIC0gMSkgJiAoMVVMTCA8PCA0NSkgPyA0NSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQ0 KSA/IDQ0IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDMpID8gNDMgOiAoKHNpemUpIC0gMSkg JiAoMVVMTCA8PCA0MikgPyA0MiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDQxKSA/IDQxIDog KChzaXplKSAtIDEpICYgKDFVTEwgPDwgNDApID8gNDAgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8 PCAzOSkgPyAzOSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDM4KSA/IDM4IDogKChzaXplKSAt IDEpICYgKDFVTEwgPDwgMzcpID8gMzcgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzNikgPyAz NiA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKChzaXplKSAtIDEpICYgKDFV TEwgPDwgMzQpID8gMzQgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzMykgPyAzMyA6ICgoc2l6 ZSkgLSAxKSAmICgxVUxMIDw8IDMyKSA/IDMyIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMzEp ID8gMzEgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzMCkgPyAzMCA6ICgoc2l6ZSkgLSAxKSAm ICgxVUxMIDw8IDI5KSA/IDI5IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMjgpID8gMjggOiAo KHNpemUpIC0gMSkgJiAoMVVMTCA8PCAyNykgPyAyNyA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8 IDI2KSA/IDI2IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMjUpID8gMjUgOiAoKHNpemUpIC0g MSkgJiAoMVVMTCA8PCAyNCkgPyAyNCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDIzKSA/IDIz IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMjIpID8gMjIgOiAoKHNpemUpIC0gMSkgJiAoMVVM TCA8PCAyMSkgPyAyMSA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKChzaXpl KSAtIDEpICYgKDFVTEwgPDwgMTkpID8gMTkgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxOCkg PyAxOCA6ICgoc2l6ZSkgLSAxKSAmICgxVUxMIDw8IDE3KSA/IDE3IDogKChzaXplKSAtIDEpICYg KDFVTEwgPDwgMTYpID8gMTYgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxNSkgPyAxNSA6ICgo c2l6ZSkgLSAxKSAmICgxVUxMIDw8IDE0KSA/IDE0IDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwg MTMpID8gMTMgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAxMikgPyAxMiA6ICgoc2l6ZSkgLSAx KSAmICgxVUxMIDw8IDExKSA/IDExIDogKChzaXplKSAtIDEpICYgKDFVTEwgPDwgMTApID8gMTAg OiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA5KSA/IDkgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8 PCA4KSA/IDggOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA3KSA/IDcgOiAoKHNpemUpIC0gMSkg JiAoMVVMTCA8PCA2KSA/IDYgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCA1KSA/IDUgOiAoKHNp emUpIC0gMSkgJiAoMVVMTCA8PCA0KSA/IDQgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAzKSA/ IDMgOiAoKHNpemUpIC0gMSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6IChzaXplb2Yo KHNpemUpIC0gMSkgPD0gNCkgPyBfX2lsb2cyX3UzMigoc2l6ZSkgLSAxKSA6IF9faWxvZzJfdTY0 KChzaXplKSAtIDEpICkgLSAxMiArIDE7CiB9Cgogc2l6ZS0tOwogc2l6ZSA+Pj0gMTI7CgoKCiBy ZXR1cm4gZmxzNjQoc2l6ZSk7Cgp9CiMgNzggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZS5o IiAyCiMgMTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdGhyZWFkX2luZm8uaCIgMgoKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVzLmgiIDEKIyAxNSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS90aHJlYWRfaW5mby5oIiAyCiMgNTIgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vdGhyZWFkX2luZm8uaCIKc3RydWN0IHRhc2tfc3RydWN0OwojIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vcHJvY2Vzc29yLmgiIDEKCgoKCgoKCnN0cnVjdCB0YXNrX3N0cnVjdDsKc3RydWN0IG1t X3N0cnVjdDsKc3RydWN0IGlvX2JpdG1hcDsKc3RydWN0IHZtODY7CgojIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vbWF0aF9lbXUuaCIgMQojIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21h dGhfZW11LmgiCnN0cnVjdCBtYXRoX2VtdV9pbmZvIHsKIGxvbmcgX19fb3JpZ19laXA7CiBzdHJ1 Y3QgcHRfcmVncyAqcmVnczsKfTsKIyAxNCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNz b3IuaCIgMgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3R5cGVz LmgiIDEKIyAxNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi4v YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdjb250ZXh0LmgiIDEKIyA0MCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIKc3RydWN0IF9mcHhfc3dfYnl0ZXMgewoK CgoKIF9fdTMyIG1hZ2ljMTsKIyA1NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ2Nv bnRleHQuaCIKIF9fdTMyIGV4dGVuZGVkX3NpemU7CgoKCgoKIF9fdTY0IHhmZWF0dXJlczsKCgoK CgogX191MzIgeHN0YXRlX3NpemU7CgoKIF9fdTMyIHBhZGRpbmdbN107Cn07CiMgODUgIi4vYXJj aC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdjb250ZXh0LmgiCnN0cnVjdCBfZnByZWcgewogX191 MTYgc2lnbmlmaWNhbmRbNF07CiBfX3UxNiBleHBvbmVudDsKfTsKCgpzdHJ1Y3QgX2ZweHJlZyB7 CiBfX3UxNiBzaWduaWZpY2FuZFs0XTsKIF9fdTE2IGV4cG9uZW50OwogX191MTYgcGFkZGluZ1sz XTsKfTsKCgpzdHJ1Y3QgX3htbXJlZyB7CiBfX3UzMiBlbGVtZW50WzRdOwp9OwoKCgoKCgpzdHJ1 Y3QgX2Zwc3RhdGVfMzIgewoKIF9fdTMyIGN3OwogX191MzIgc3c7CiBfX3UzMiB0YWc7CiBfX3Uz MiBpcG9mZjsKIF9fdTMyIGNzc2VsOwogX191MzIgZGF0YW9mZjsKIF9fdTMyIGRhdGFzZWw7CiBz dHJ1Y3QgX2ZwcmVnIF9zdFs4XTsKIF9fdTE2IHN0YXR1czsKIF9fdTE2IG1hZ2ljOwoKCgogX191 MzIgX2Z4c3JfZW52WzZdOwogX191MzIgbXhjc3I7CiBfX3UzMiByZXNlcnZlZDsKIHN0cnVjdCBf ZnB4cmVnIF9meHNyX3N0WzhdOwogc3RydWN0IF94bW1yZWcgX3htbVs4XTsKIHVuaW9uIHsKICBf X3UzMiBwYWRkaW5nMVs0NF07CiAgX191MzIgcGFkZGluZ1s0NF07CiB9OwoKIHVuaW9uIHsKICBf X3UzMiBwYWRkaW5nMlsxMl07CiAgc3RydWN0IF9mcHhfc3dfYnl0ZXMgc3dfcmVzZXJ2ZWQ7CiB9 Owp9OwojIDE0OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ2NvbnRleHQuaCIKc3Ry dWN0IF9mcHN0YXRlXzY0IHsKIF9fdTE2IGN3ZDsKIF9fdTE2IHN3ZDsKCiBfX3UxNiB0d2Q7CiBf X3UxNiBmb3A7CiBfX3U2NCByaXA7CiBfX3U2NCByZHA7CiBfX3UzMiBteGNzcjsKIF9fdTMyIG14 Y3NyX21hc2s7CiBfX3UzMiBzdF9zcGFjZVszMl07CiBfX3UzMiB4bW1fc3BhY2VbNjRdOwogX191 MzIgcmVzZXJ2ZWQyWzEyXTsKIHVuaW9uIHsKICBfX3UzMiByZXNlcnZlZDNbMTJdOwogIHN0cnVj dCBfZnB4X3N3X2J5dGVzIHN3X3Jlc2VydmVkOwogfTsKfTsKCgoKCgoKCnN0cnVjdCBfaGVhZGVy IHsKIF9fdTY0IHhmZWF0dXJlczsKIF9fdTY0IHJlc2VydmVkMVsyXTsKIF9fdTY0IHJlc2VydmVk Mls1XTsKfTsKCnN0cnVjdCBfeW1taF9zdGF0ZSB7CgogX191MzIgeW1taF9zcGFjZVs2NF07Cn07 CiMgMTkyICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnY29udGV4dC5oIgpzdHJ1Y3Qg X3hzdGF0ZSB7CiBzdHJ1Y3QgX2Zwc3RhdGVfNjQgZnBzdGF0ZTsKIHN0cnVjdCBfaGVhZGVyIHhz dGF0ZV9oZHI7CiBzdHJ1Y3QgX3ltbWhfc3RhdGUgeW1taDsKCn07CgoKCgpzdHJ1Y3Qgc2lnY29u dGV4dF8zMiB7CiBfX3UxNiBncywgX19nc2g7CiBfX3UxNiBmcywgX19mc2g7CiBfX3UxNiBlcywg X19lc2g7CiBfX3UxNiBkcywgX19kc2g7CiBfX3UzMiBkaTsKIF9fdTMyIHNpOwogX191MzIgYnA7 CiBfX3UzMiBzcDsKIF9fdTMyIGJ4OwogX191MzIgZHg7CiBfX3UzMiBjeDsKIF9fdTMyIGF4Owog X191MzIgdHJhcG5vOwogX191MzIgZXJyOwogX191MzIgaXA7CiBfX3UxNiBjcywgX19jc2g7CiBf X3UzMiBmbGFnczsKIF9fdTMyIHNwX2F0X3NpZ25hbDsKIF9fdTE2IHNzLCBfX3NzaDsKIyAyMzAg Ii4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWdjb250ZXh0LmgiCiBfX3UzMiBmcHN0YXRl OwogX191MzIgb2xkbWFzazsKIF9fdTMyIGNyMjsKfTsKCgoKCnN0cnVjdCBzaWdjb250ZXh0XzY0 IHsKIF9fdTY0IHI4OwogX191NjQgcjk7CiBfX3U2NCByMTA7CiBfX3U2NCByMTE7CiBfX3U2NCBy MTI7CiBfX3U2NCByMTM7CiBfX3U2NCByMTQ7CiBfX3U2NCByMTU7CiBfX3U2NCBkaTsKIF9fdTY0 IHNpOwogX191NjQgYnA7CiBfX3U2NCBieDsKIF9fdTY0IGR4OwogX191NjQgYXg7CiBfX3U2NCBj eDsKIF9fdTY0IHNwOwogX191NjQgaXA7CiBfX3U2NCBmbGFnczsKIF9fdTE2IGNzOwogX191MTYg Z3M7CiBfX3UxNiBmczsKIF9fdTE2IHNzOwogX191NjQgZXJyOwogX191NjQgdHJhcG5vOwogX191 NjQgb2xkbWFzazsKIF9fdTY0IGNyMjsKIyAyNzMgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2Fz bS9zaWdjb250ZXh0LmgiCiBfX3U2NCBmcHN0YXRlOwogX191NjQgcmVzZXJ2ZWQxWzhdOwp9Owoj IDE3ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCgoKCgoKIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL21zci5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXNyLWluZGV4LmgiIDEKIyA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIiAyCgoK CgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vZXJybm8uaCIgMQoj IDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2Vycm5vLmgiIDEKCgoKCiMgMSAiLi9pbmNs dWRlL3VhcGkvYXNtLWdlbmVyaWMvZXJybm8tYmFzZS5oIiAxCiMgNiAiLi9pbmNsdWRlL3VhcGkv YXNtLWdlbmVyaWMvZXJybm8uaCIgMgojIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQv dWFwaS9hc20vZXJybm8uaCIgMgojIDExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIiAy CiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVtYXNrLmgiIDEKCgoKCiMgMSAiLi9pbmNs dWRlL2xpbnV4L2NwdW1hc2suaCIgMQojIDEyICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgoj IDEgIi4vaW5jbHVkZS9saW51eC9iaXRtYXAuaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC9iaXRt YXAuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xp bnV4L3N0cmluZy5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N0cmluZy5oIiAxCiMgMTEg Ii4vaW5jbHVkZS9saW51eC9zdHJpbmcuaCIgMgoKZXh0ZXJuIGNoYXIgKnN0cm5kdXBfdXNlcihj b25zdCBjaGFyICosIGxvbmcpOwpleHRlcm4gdm9pZCAqbWVtZHVwX3VzZXIoY29uc3Qgdm9pZCAq LCBzaXplX3QpOwpleHRlcm4gdm9pZCAqdm1lbWR1cF91c2VyKGNvbnN0IHZvaWQgKiwgc2l6ZV90 KTsKZXh0ZXJuIHZvaWQgKm1lbWR1cF91c2VyX251bChjb25zdCB2b2lkICosIHNpemVfdCk7CgoK CgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3RyaW5nLmgiIDEKCgoKCiMgMSAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9zdHJpbmdfNjQuaCIgMQojIDE0ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3N0cmluZ182NC5oIgpleHRlcm4gdm9pZCAqbWVtY3B5KHZvaWQgKnRvLCBjb25zdCB2b2lk ICpmcm9tLCBzaXplX3QgbGVuKTsKZXh0ZXJuIHZvaWQgKl9fbWVtY3B5KHZvaWQgKnRvLCBjb25z dCB2b2lkICpmcm9tLCBzaXplX3QgbGVuKTsKCgp2b2lkICptZW1zZXQodm9pZCAqcywgaW50IGMs IHNpemVfdCBuKTsKdm9pZCAqX19tZW1zZXQodm9pZCAqcywgaW50IGMsIHNpemVfdCBuKTsKCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkICptZW1zZXQxNih1aW50MTZfdCAqcywgdWludDE2X3Qgdiwgc2l6ZV90IG4pCnsKIGxvbmcg ZDAsIGQxOwogYXNtIHZvbGF0aWxlKCJyZXBcblx0IgogICAgICAgInN0b3N3IgogICAgICAgOiAi PSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICA6ICJhIiAodiksICIxIiAocyksICIwIiAobikK ICAgICAgIDogIm1lbW9yeSIpOwogcmV0dXJuIHM7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQzMih1aW50MzJf dCAqcywgdWludDMyX3Qgdiwgc2l6ZV90IG4pCnsKIGxvbmcgZDAsIGQxOwogYXNtIHZvbGF0aWxl KCJyZXBcblx0IgogICAgICAgInN0b3NsIgogICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEp CiAgICAgICA6ICJhIiAodiksICIxIiAocyksICIwIiAobikKICAgICAgIDogIm1lbW9yeSIpOwog cmV0dXJuIHM7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkICptZW1zZXQ2NCh1aW50NjRfdCAqcywgdWludDY0X3Qgdiwgc2l6 ZV90IG4pCnsKIGxvbmcgZDAsIGQxOwogYXNtIHZvbGF0aWxlKCJyZXBcblx0IgogICAgICAgInN0 b3NxIgogICAgICAgOiAiPSZjIiAoZDApLCAiPSZEIiAoZDEpCiAgICAgICA6ICJhIiAodiksICIx IiAocyksICIwIiAobikKICAgICAgIDogIm1lbW9yeSIpOwogcmV0dXJuIHM7Cn0KCgp2b2lkICpt ZW1tb3ZlKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNvdW50KTsKdm9pZCAq X19tZW1tb3ZlKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNvdW50KTsKCmlu dCBtZW1jbXAoY29uc3Qgdm9pZCAqY3MsIGNvbnN0IHZvaWQgKmN0LCBzaXplX3QgY291bnQpOwpz aXplX3Qgc3RybGVuKGNvbnN0IGNoYXIgKnMpOwpjaGFyICpzdHJjcHkoY2hhciAqZGVzdCwgY29u c3QgY2hhciAqc3JjKTsKY2hhciAqc3RyY2F0KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYyk7 CmludCBzdHJjbXAoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIgKmN0KTsKIyA4NiAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9zdHJpbmdfNjQuaCIKX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpIHVuc2lnbmVkIGxvbmcgX19tZW1jcHlfbWNzYWZlKHZvaWQgKmRzdCwgY29u c3Qgdm9pZCAqc3JjLAogIHNpemVfdCBjbnQpOwpleHRlcm4gc3RydWN0IHN0YXRpY19rZXlfZmFs c2UgbWNzYWZlX2tleTsKIyAxMDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3RyaW5nXzY0Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIHVuc2lnbmVkIGxvbmcKbWVtY3B5X21jc2FmZSh2b2lkICpkc3Qs IGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNudCkKewoKIGlmICgoeyBib29sIGJyYW5jaDsgaWYg KF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCombWNzYWZlX2tleSksIHN0cnVj dCBzdGF0aWNfa2V5X3RydWUpKSBicmFuY2ggPSBhcmNoX3N0YXRpY19icmFuY2hfanVtcCgmKCZt Y3NhZmVfa2V5KS0+a2V5LCBmYWxzZSk7IGVsc2UgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRp YmxlX3AodHlwZW9mKCombWNzYWZlX2tleSksIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlKSkgYnJh bmNoID0gYXJjaF9zdGF0aWNfYnJhbmNoKCYoJm1jc2FmZV9rZXkpLT5rZXksIGZhbHNlKTsgZWxz ZSBicmFuY2ggPSBfX19fd3JvbmdfYnJhbmNoX2Vycm9yKCk7IF9fYnVpbHRpbl9leHBlY3QoISEo YnJhbmNoKSwgMCk7IH0pKQogIHJldHVybiBfX21lbWNweV9tY3NhZmUoZHN0LCBzcmMsIGNudCk7 CiBlbHNlCgogIG1lbWNweShkc3QsIHNyYywgY250KTsKIHJldHVybiAwOwp9CgoKCnZvaWQgX19t ZW1jcHlfZmx1c2hjYWNoZSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNudCk7 CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBtZW1jcHlfZmx1c2hjYWNo ZSh2b2lkICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGNudCkKewogaWYgKF9fYnVpbHRp bl9jb25zdGFudF9wKGNudCkpIHsKICBzd2l0Y2ggKGNudCkgewogICBjYXNlIDQ6CiAgICBhc20g KCJtb3ZudGlsICUxLCAlMCIgOiAiPW0iKCoodTMyICopZHN0KSA6ICJyIigqKHUzMiAqKXNyYykp OwogICAgcmV0dXJuOwogICBjYXNlIDg6CiAgICBhc20gKCJtb3ZudGlxICUxLCAlMCIgOiAiPW0i KCoodTY0ICopZHN0KSA6ICJyIigqKHU2NCAqKXNyYykpOwogICAgcmV0dXJuOwogICBjYXNlIDE2 OgogICAgYXNtICgibW92bnRpcSAlMSwgJTAiIDogIj1tIigqKHU2NCAqKWRzdCkgOiAiciIoKih1 NjQgKilzcmMpKTsKICAgIGFzbSAoIm1vdm50aXEgJTEsICUwIiA6ICI9bSIoKih1NjQgKikoZHN0 ICsgOCkpIDogInIiKCoodTY0ICopKHNyYyArIDgpKSk7CiAgICByZXR1cm47CiAgfQogfQogX19t ZW1jcHlfZmx1c2hjYWNoZShkc3QsIHNyYywgY250KTsKfQojIDYgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vc3RyaW5nLmgiIDIKIyAyMSAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIiAyCgoKZXh0 ZXJuIGNoYXIgKiBzdHJjcHkoY2hhciAqLGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGNoYXIgKiBz dHJuY3B5KGNoYXIgKixjb25zdCBjaGFyICosIF9fa2VybmVsX3NpemVfdCk7CgoKc2l6ZV90IHN0 cmxjcHkoY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CgoKc3NpemVfdCBzdHJzY3B5KGNo YXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKCgpzc2l6ZV90IHN0cnNjcHlfcGFkKGNoYXIg KmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IGNvdW50KTsKCgpleHRlcm4gY2hhciAqIHN0 cmNhdChjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGNoYXIgKiBzdHJuY2F0KGNoYXIg KiwgY29uc3QgY2hhciAqLCBfX2tlcm5lbF9zaXplX3QpOwoKCmV4dGVybiBzaXplX3Qgc3RybGNh dChjaGFyICosIGNvbnN0IGNoYXIgKiwgX19rZXJuZWxfc2l6ZV90KTsKCgpleHRlcm4gaW50IHN0 cmNtcChjb25zdCBjaGFyICosY29uc3QgY2hhciAqKTsKCgpleHRlcm4gaW50IHN0cm5jbXAoY29u c3QgY2hhciAqLGNvbnN0IGNoYXIgKixfX2tlcm5lbF9zaXplX3QpOwoKCmV4dGVybiBpbnQgc3Ry Y2FzZWNtcChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwoKCmV4dGVybiBpbnQgc3Ry bmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBzaXplX3Qgbik7CgoKZXh0 ZXJuIGNoYXIgKiBzdHJjaHIoY29uc3QgY2hhciAqLGludCk7CgoKZXh0ZXJuIGNoYXIgKiBzdHJj aHJudWwoY29uc3QgY2hhciAqLGludCk7CgpleHRlcm4gY2hhciAqIHN0cm5jaHJudWwoY29uc3Qg Y2hhciAqLCBzaXplX3QsIGludCk7CgpleHRlcm4gY2hhciAqIHN0cm5jaHIoY29uc3QgY2hhciAq LCBzaXplX3QsIGludCk7CgoKZXh0ZXJuIGNoYXIgKiBzdHJyY2hyKGNvbnN0IGNoYXIgKixpbnQp OwoKZXh0ZXJuIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg c2tpcF9zcGFjZXMoY29uc3QgY2hhciAqKTsKCmV4dGVybiBjaGFyICpzdHJpbShjaGFyICopOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGNoYXIgKnN0cnN0cmlwKGNo YXIgKnN0cikKewogcmV0dXJuIHN0cmltKHN0cik7Cn0KCgpleHRlcm4gY2hhciAqIHN0cnN0cihj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGNoYXIgKiBzdHJuc3RyKGNvbnN0 IGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwoKCmV4dGVybiBfX2tlcm5lbF9zaXplX3Qg c3RybGVuKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJubGVuKGNv bnN0IGNoYXIgKixfX2tlcm5lbF9zaXplX3QpOwoKCmV4dGVybiBjaGFyICogc3RycGJyayhjb25z dCBjaGFyICosY29uc3QgY2hhciAqKTsKCgpleHRlcm4gY2hhciAqIHN0cnNlcChjaGFyICoqLGNv bnN0IGNoYXIgKik7CgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJzcG4oY29uc3QgY2hhciAq LGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIF9fa2VybmVsX3NpemVfdCBzdHJjc3BuKGNvbnN0IGNo YXIgKixjb25zdCBjaGFyICopOwojIDEyMiAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk ICptZW1zZXRfbCh1bnNpZ25lZCBsb25nICpwLCB1bnNpZ25lZCBsb25nIHYsCiAgX19rZXJuZWxf c2l6ZV90IG4pCnsKIGlmICg2NCA9PSAzMikKICByZXR1cm4gbWVtc2V0MzIoKHVpbnQzMl90ICop cCwgdiwgbik7CiBlbHNlCiAgcmV0dXJuIG1lbXNldDY0KCh1aW50NjRfdCAqKXAsIHYsIG4pOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkICptZW1zZXRfcCh2b2lkICoqcCwgdm9pZCAqdiwgX19rZXJuZWxfc2l6ZV90IG4pCnsK IGlmICg2NCA9PSAzMikKICByZXR1cm4gbWVtc2V0MzIoKHVpbnQzMl90ICopcCwgKHVpbnRwdHJf dCl2LCBuKTsKIGVsc2UKICByZXR1cm4gbWVtc2V0NjQoKHVpbnQ2NF90ICopcCwgKHVpbnRwdHJf dCl2LCBuKTsKfQoKZXh0ZXJuIHZvaWQgKipfX21lbWNhdF9wKHZvaWQgKiphLCB2b2lkICoqYik7 CiMgMTUzICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCmV4dGVybiB2b2lkICogbWVtc2Nhbih2 b2lkICosaW50LF9fa2VybmVsX3NpemVfdCk7CgoKZXh0ZXJuIGludCBtZW1jbXAoY29uc3Qgdm9p ZCAqLGNvbnN0IHZvaWQgKixfX2tlcm5lbF9zaXplX3QpOwoKCmV4dGVybiBpbnQgYmNtcChjb25z dCB2b2lkICosY29uc3Qgdm9pZCAqLF9fa2VybmVsX3NpemVfdCk7CgoKZXh0ZXJuIHZvaWQgKiBt ZW1jaHIoY29uc3Qgdm9pZCAqLGludCxfX2tlcm5lbF9zaXplX3QpOwojIDE3OCAiLi9pbmNsdWRl L2xpbnV4L3N0cmluZy5oIgp2b2lkICptZW1jaHJfaW52KGNvbnN0IHZvaWQgKnMsIGludCBjLCBz aXplX3Qgbik7CmNoYXIgKnN0cnJlcGxhY2UoY2hhciAqcywgY2hhciBvbGQsIGNoYXIgbmV3KTsK CmV4dGVybiB2b2lkIGtmcmVlX2NvbnN0KGNvbnN0IHZvaWQgKngpOwoKZXh0ZXJuIGNoYXIgKmtz dHJkdXAoY29uc3QgY2hhciAqcywgZ2ZwX3QgZ2ZwKSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19f KSk7CmV4dGVybiBjb25zdCBjaGFyICprc3RyZHVwX2NvbnN0KGNvbnN0IGNoYXIgKnMsIGdmcF90 IGdmcCk7CmV4dGVybiBjaGFyICprc3RybmR1cChjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCBn ZnBfdCBnZnApOwpleHRlcm4gdm9pZCAqa21lbWR1cChjb25zdCB2b2lkICpzcmMsIHNpemVfdCBs ZW4sIGdmcF90IGdmcCk7CmV4dGVybiBjaGFyICprbWVtZHVwX251bChjb25zdCBjaGFyICpzLCBz aXplX3QgbGVuLCBnZnBfdCBnZnApOwoKZXh0ZXJuIGNoYXIgKiphcmd2X3NwbGl0KGdmcF90IGdm cCwgY29uc3QgY2hhciAqc3RyLCBpbnQgKmFyZ2NwKTsKZXh0ZXJuIHZvaWQgYXJndl9mcmVlKGNo YXIgKiphcmd2KTsKCmV4dGVybiBib29sIHN5c2ZzX3N0cmVxKGNvbnN0IGNoYXIgKnMxLCBjb25z dCBjaGFyICpzMik7CmV4dGVybiBpbnQga3N0cnRvYm9vbChjb25zdCBjaGFyICpzLCBib29sICpy ZXMpOwpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgc3RydG9ib29sKGNvbnN0IGNoYXIgKnMsIGJvb2wgKnJlcykKewogcmV0dXJuIGtz dHJ0b2Jvb2wocywgcmVzKTsKfQoKaW50IG1hdGNoX3N0cmluZyhjb25zdCBjaGFyICogY29uc3Qg KmFycmF5LCBzaXplX3QgbiwgY29uc3QgY2hhciAqc3RyaW5nKTsKaW50IF9fc3lzZnNfbWF0Y2hf c3RyaW5nKGNvbnN0IGNoYXIgKiBjb25zdCAqYXJyYXksIHNpemVfdCBuLCBjb25zdCBjaGFyICpz KTsKIyAyMTIgIi4vaW5jbHVkZS9saW51eC9zdHJpbmcuaCIKaW50IHZiaW5fcHJpbnRmKHUzMiAq YmluX2J1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKTsKaW50 IGJzdHJfcHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZtdCwgY29u c3QgdTMyICpiaW5fYnVmKTsKaW50IGJwcmludGYodTMyICpiaW5fYnVmLCBzaXplX3Qgc2l6ZSwg Y29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAz LCA0KSkpOwoKCmV4dGVybiBzc2l6ZV90IG1lbW9yeV9yZWFkX2Zyb21fYnVmZmVyKHZvaWQgKnRv LCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcywKICAgICAgICAgICBjb25zdCB2b2lkICpmcm9t LCBzaXplX3QgYXZhaWxhYmxlKTsKCmludCBwdHJfdG9faGFzaHZhbChjb25zdCB2b2lkICpwdHIs IHVuc2lnbmVkIGxvbmcgKmhhc2h2YWxfb3V0KTsKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBzdHJzdGFydHMoY29uc3Qg Y2hhciAqc3RyLCBjb25zdCBjaGFyICpwcmVmaXgpCnsKIHJldHVybiBzdHJuY21wKHN0ciwgcHJl Zml4LCBzdHJsZW4ocHJlZml4KSkgPT0gMDsKfQoKc2l6ZV90IG1lbXdlaWdodChjb25zdCB2b2lk ICpwdHIsIHNpemVfdCBieXRlcyk7CiMgMjQ4ICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgbWVtemVyb19leHBsaWNpdCh2b2lkICpzLCBzaXplX3QgY291bnQpCnsKIG1lbXNldChzLCAw LCBjb3VudCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiJyIihzKSA6Im1lbW9yeSIpOwp9 CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGNvbnN0IGNoYXIgKmtiYXNlbmFtZShjb25zdCBjaGFyICpwYXRoKQp7CiBjb25zdCBj aGFyICp0YWlsID0gc3RycmNocihwYXRoLCAnLycpOwogcmV0dXJuIHRhaWwgPyB0YWlsICsgMSA6 IHBhdGg7Cn0KCgoKCnZvaWQgZm9ydGlmeV9wYW5pYyhjb25zdCBjaGFyICpuYW1lKSBfX2F0dHJp YnV0ZV9fKChfX25vcmV0dXJuX18pKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpOwp2b2lkIF9f cmVhZF9vdmVyZmxvdyh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oImRldGVjdGVkIHJl YWQgYmV5b25kIHNpemUgb2Ygb2JqZWN0IHBhc3NlZCBhcyAxc3QgcGFyYW1ldGVyIikpKTsKdm9p ZCBfX3JlYWRfb3ZlcmZsb3cyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiZGV0ZWN0 ZWQgcmVhZCBiZXlvbmQgc2l6ZSBvZiBvYmplY3QgcGFzc2VkIGFzIDJuZCBwYXJhbWV0ZXIiKSkp Owp2b2lkIF9fcmVhZF9vdmVyZmxvdzModm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJk ZXRlY3RlZCByZWFkIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQgYXMgM3JkIHBhcmFtZXRl ciIpKSk7CnZvaWQgX193cml0ZV9vdmVyZmxvdyh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9y X18oImRldGVjdGVkIHdyaXRlIGJleW9uZCBzaXplIG9mIG9iamVjdCBwYXNzZWQgYXMgMXN0IHBh cmFtZXRlciIpKSk7CiMgNDc4ICIuL2luY2x1ZGUvbGludXgvc3RyaW5nLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWVtY3B5 X2FuZF9wYWQodm9pZCAqZGVzdCwgc2l6ZV90IGRlc3RfbGVuLAogICAgICBjb25zdCB2b2lkICpz cmMsIHNpemVfdCBjb3VudCwgaW50IHBhZCkKewogaWYgKGRlc3RfbGVuID4gY291bnQpIHsKICBt ZW1jcHkoZGVzdCwgc3JjLCBjb3VudCk7CiAgbWVtc2V0KGRlc3QgKyBjb3VudCwgcGFkLCBkZXN0 X2xlbiAtIGNvdW50KTsKIH0gZWxzZQogIG1lbWNweShkZXN0LCBzcmMsIGRlc3RfbGVuKTsKfQoj IDUwMyAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHNpemVfdCBzdHJfaGFzX3ByZWZpeChjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNo YXIgKnByZWZpeCkKewogc2l6ZV90IGxlbiA9IHN0cmxlbihwcmVmaXgpOwogcmV0dXJuIHN0cm5j bXAoc3RyLCBwcmVmaXgsIGxlbikgPT0gMCA/IGxlbiA6IDA7Cn0KIyAxMCAiLi9pbmNsdWRlL2xp bnV4L2JpdG1hcC5oIiAyCiMgMTE1ICIuL2luY2x1ZGUvbGludXgvYml0bWFwLmgiCmV4dGVybiB1 bnNpZ25lZCBsb25nICpiaXRtYXBfYWxsb2ModW5zaWduZWQgaW50IG5iaXRzLCBnZnBfdCBmbGFn cyk7CmV4dGVybiB1bnNpZ25lZCBsb25nICpiaXRtYXBfemFsbG9jKHVuc2lnbmVkIGludCBuYml0 cywgZ2ZwX3QgZmxhZ3MpOwpleHRlcm4gdm9pZCBiaXRtYXBfZnJlZShjb25zdCB1bnNpZ25lZCBs b25nICpiaXRtYXApOwoKCgoKCmV4dGVybiBpbnQgX19iaXRtYXBfZW1wdHkoY29uc3QgdW5zaWdu ZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50IF9fYml0bWFw X2Z1bGwoY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpl eHRlcm4gaW50IF9fYml0bWFwX2VxdWFsKGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDEsCiAg ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwMiwgdW5zaWduZWQgaW50IG5iaXRzKTsKZXh0 ZXJuIGJvb2wgX19hdHRyaWJ1dGVfXygoX19wdXJlX18pKSBfX2JpdG1hcF9vcl9lcXVhbChjb25z dCB1bnNpZ25lZCBsb25nICpzcmMxLAogICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMy LAogICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMzLAogICAgICAgICB1bnNpZ25lZCBp bnQgbmJpdHMpOwpleHRlcm4gdm9pZCBfX2JpdG1hcF9jb21wbGVtZW50KHVuc2lnbmVkIGxvbmcg KmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLAogICB1bnNpZ25lZCBpbnQgbmJpdHMpOwpl eHRlcm4gdm9pZCBfX2JpdG1hcF9zaGlmdF9yaWdodCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0 IHVuc2lnbmVkIGxvbmcgKnNyYywKICAgIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50 IG5iaXRzKTsKZXh0ZXJuIHZvaWQgX19iaXRtYXBfc2hpZnRfbGVmdCh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKICAgIHVuc2lnbmVkIGludCBzaGlmdCwgdW5z aWduZWQgaW50IG5iaXRzKTsKZXh0ZXJuIHZvaWQgYml0bWFwX2N1dCh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0 LCB1bnNpZ25lZCBpbnQgY3V0LAogICAgICAgICB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4g aW50IF9fYml0bWFwX2FuZCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcg KmJpdG1hcDEsCiAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcDIsIHVuc2lnbmVkIGludCBu Yml0cyk7CmV4dGVybiB2b2lkIF9fYml0bWFwX29yKHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3Qg dW5zaWduZWQgbG9uZyAqYml0bWFwMSwKICAgY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwMiwg dW5zaWduZWQgaW50IG5iaXRzKTsKZXh0ZXJuIHZvaWQgX19iaXRtYXBfeG9yKHVuc2lnbmVkIGxv bmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqYml0bWFwMSwKICAgY29uc3QgdW5zaWduZWQg bG9uZyAqYml0bWFwMiwgdW5zaWduZWQgaW50IG5iaXRzKTsKZXh0ZXJuIGludCBfX2JpdG1hcF9h bmRub3QodW5zaWduZWQgbG9uZyAqZHN0LCBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAog ICBjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRl cm4gdm9pZCBfX2JpdG1hcF9yZXBsYWNlKHVuc2lnbmVkIGxvbmcgKmRzdCwKICAgY29uc3QgdW5z aWduZWQgbG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsCiAgIGNvbnN0IHVuc2ln bmVkIGxvbmcgKm1hc2ssIHVuc2lnbmVkIGludCBuYml0cyk7CmV4dGVybiBpbnQgX19iaXRtYXBf aW50ZXJzZWN0cyhjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAogICBjb25zdCB1bnNpZ25l ZCBsb25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50IF9fYml0bWFw X3N1YnNldChjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAxLAogICBjb25zdCB1bnNpZ25lZCBs b25nICpiaXRtYXAyLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50IF9fYml0bWFwX3dl aWdodChjb25zdCB1bnNpZ25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBuYml0cyk7CmV4 dGVybiB2b2lkIF9fYml0bWFwX3NldCh1bnNpZ25lZCBsb25nICptYXAsIHVuc2lnbmVkIGludCBz dGFydCwgaW50IGxlbik7CmV4dGVybiB2b2lkIF9fYml0bWFwX2NsZWFyKHVuc2lnbmVkIGxvbmcg Km1hcCwgdW5zaWduZWQgaW50IHN0YXJ0LCBpbnQgbGVuKTsKCmV4dGVybiB1bnNpZ25lZCBsb25n IGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29mZih1bnNpZ25lZCBsb25nICptYXAsCiAgICAg ICAgICB1bnNpZ25lZCBsb25nIHNpemUsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAog ICAgICAgICAgdW5zaWduZWQgaW50IG5yLAogICAgICAgICAgdW5zaWduZWQgbG9uZyBhbGlnbl9t YXNrLAogICAgICAgICAgdW5zaWduZWQgbG9uZyBhbGlnbl9vZmZzZXQpOwojIDE3OCAiLi9pbmNs dWRlL2xpbnV4L2JpdG1hcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nCmJpdG1hcF9maW5kX25leHRfemVyb19h cmVhKHVuc2lnbmVkIGxvbmcgKm1hcCwKICAgICAgdW5zaWduZWQgbG9uZyBzaXplLAogICAgICB1 bnNpZ25lZCBsb25nIHN0YXJ0LAogICAgICB1bnNpZ25lZCBpbnQgbnIsCiAgICAgIHVuc2lnbmVk IGxvbmcgYWxpZ25fbWFzaykKewogcmV0dXJuIGJpdG1hcF9maW5kX25leHRfemVyb19hcmVhX29m ZihtYXAsIHNpemUsIHN0YXJ0LCBuciwKICAgICAgICAgICBhbGlnbl9tYXNrLCAwKTsKfQoKZXh0 ZXJuIGludCBiaXRtYXBfcGFyc2UoY29uc3QgY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgYnVmbGVu LAogICB1bnNpZ25lZCBsb25nICpkc3QsIGludCBuYml0cyk7CmV4dGVybiBpbnQgYml0bWFwX3Bh cnNlX3VzZXIoY29uc3QgY2hhciAqdWJ1ZiwgdW5zaWduZWQgaW50IHVsZW4sCiAgIHVuc2lnbmVk IGxvbmcgKmRzdCwgaW50IG5iaXRzKTsKZXh0ZXJuIGludCBiaXRtYXBfcGFyc2VsaXN0KGNvbnN0 IGNoYXIgKmJ1ZiwgdW5zaWduZWQgbG9uZyAqbWFza3AsCiAgIGludCBubWFza2JpdHMpOwpleHRl cm4gaW50IGJpdG1hcF9wYXJzZWxpc3RfdXNlcihjb25zdCBjaGFyICp1YnVmLCB1bnNpZ25lZCBp bnQgdWxlbiwKICAgdW5zaWduZWQgbG9uZyAqZHN0LCBpbnQgbmJpdHMpOwpleHRlcm4gdm9pZCBi aXRtYXBfcmVtYXAodW5zaWduZWQgbG9uZyAqZHN0LCBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMs CiAgY29uc3QgdW5zaWduZWQgbG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsIHVu c2lnbmVkIGludCBuYml0cyk7CmV4dGVybiBpbnQgYml0bWFwX2JpdHJlbWFwKGludCBvbGRiaXQs CiAgY29uc3QgdW5zaWduZWQgbG9uZyAqb2xkLCBjb25zdCB1bnNpZ25lZCBsb25nICpuZXcsIGlu dCBiaXRzKTsKZXh0ZXJuIHZvaWQgYml0bWFwX29udG8odW5zaWduZWQgbG9uZyAqZHN0LCBjb25z dCB1bnNpZ25lZCBsb25nICpvcmlnLAogIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnJlbG1hcCwgdW5z aWduZWQgaW50IGJpdHMpOwpleHRlcm4gdm9pZCBiaXRtYXBfZm9sZCh1bnNpZ25lZCBsb25nICpk c3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm9yaWcsCiAgdW5zaWduZWQgaW50IHN6LCB1bnNpZ25l ZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50IGJpdG1hcF9maW5kX2ZyZWVfcmVnaW9uKHVuc2lnbmVk IGxvbmcgKmJpdG1hcCwgdW5zaWduZWQgaW50IGJpdHMsIGludCBvcmRlcik7CmV4dGVybiB2b2lk IGJpdG1hcF9yZWxlYXNlX3JlZ2lvbih1bnNpZ25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGlu dCBwb3MsIGludCBvcmRlcik7CmV4dGVybiBpbnQgYml0bWFwX2FsbG9jYXRlX3JlZ2lvbih1bnNp Z25lZCBsb25nICpiaXRtYXAsIHVuc2lnbmVkIGludCBwb3MsIGludCBvcmRlcik7CgoKCgoKCmV4 dGVybiB1bnNpZ25lZCBpbnQgYml0bWFwX29yZF90b19wb3MoY29uc3QgdW5zaWduZWQgbG9uZyAq Yml0bWFwLCB1bnNpZ25lZCBpbnQgb3JkLCB1bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gaW50 IGJpdG1hcF9wcmludF90b19wYWdlYnVmKGJvb2wgbGlzdCwgY2hhciAqYnVmLAogICAgICAgY29u c3QgdW5zaWduZWQgbG9uZyAqbWFza3AsIGludCBubWFza2JpdHMpOwojIDIyOSAiLi9pbmNsdWRl L2xpbnV4L2JpdG1hcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF96ZXJvKHVuc2lnbmVkIGxvbmcgKmRzdCwgdW5z aWduZWQgaW50IG5iaXRzKQp7CiB1bnNpZ25lZCBpbnQgbGVuID0gKCgobmJpdHMpICsgKChzaXpl b2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKSAqIHNpemVvZih1bnNp Z25lZCBsb25nKTsKIG1lbXNldChkc3QsIDAsIGxlbik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX2ZpbGwodW5z aWduZWQgbG9uZyAqZHN0LCB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIHVuc2lnbmVkIGludCBsZW4g PSAoKChuYml0cykgKyAoKHNpemVvZihsb25nKSAqIDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykg KiA4KSkpICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOwogbWVtc2V0KGRzdCwgMHhmZiwgbGVuKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBiaXRtYXBfY29weSh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxv bmcgKnNyYywKICAgdW5zaWduZWQgaW50IG5iaXRzKQp7CiB1bnNpZ25lZCBpbnQgbGVuID0gKCgo bmJpdHMpICsgKChzaXplb2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkp KSAqIHNpemVvZih1bnNpZ25lZCBsb25nKTsKIG1lbWNweShkc3QsIHNyYywgbGVuKTsKfQoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBiaXRtYXBfY29weV9jbGVhcl90YWlsKHVuc2lnbmVkIGxvbmcgKmRzdCwKICBjb25zdCB1 bnNpZ25lZCBsb25nICpzcmMsIHVuc2lnbmVkIGludCBuYml0cykKewogYml0bWFwX2NvcHkoZHN0 LCBzcmMsIG5iaXRzKTsKIGlmIChuYml0cyAlIDY0KQogIGRzdFtuYml0cyAvIDY0XSAmPSAofjBV TCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpOwp9CgoKCgoKCmV4dGVybiB2b2lkIGJpdG1hcF9m cm9tX2FycjMyKHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwgY29uc3QgdTMyICpidWYsCiAgICAgICB1 bnNpZ25lZCBpbnQgbmJpdHMpOwpleHRlcm4gdm9pZCBiaXRtYXBfdG9fYXJyMzIodTMyICpidWYs IGNvbnN0IHVuc2lnbmVkIGxvbmcgKmJpdG1hcCwKICAgICAgIHVuc2lnbmVkIGludCBuYml0cyk7 CiMgMjc3ICIuL2luY2x1ZGUvbGludXgvYml0bWFwLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRtYXBfYW5kKHVuc2lnbmVk IGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKICAgY29uc3QgdW5zaWduZWQg bG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFu dF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICByZXR1cm4gKCpk c3QgPSAqc3JjMSAmICpzcmMyICYgKH4wVUwgPj4gKC0obmJpdHMpICYgKDY0IC0gMSkpKSkgIT0g MDsKIHJldHVybiBfX2JpdG1hcF9hbmQoZHN0LCBzcmMxLCBzcmMyLCBuYml0cyk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg Yml0bWFwX29yKHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwK ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAo KF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykg PiAwKSkKICAqZHN0ID0gKnNyYzEgfCAqc3JjMjsKIGVsc2UKICBfX2JpdG1hcF9vcihkc3QsIHNy YzEsIHNyYzIsIG5iaXRzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfeG9yKHVuc2lnbmVkIGxvbmcgKmRzdCwg Y29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKICAgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMiwg dW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAm JiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICAqZHN0ID0gKnNyYzEgXiAqc3JjMjsK IGVsc2UKICBfX2JpdG1hcF94b3IoZHN0LCBzcmMxLCBzcmMyLCBuYml0cyk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRt YXBfYW5kbm90KHVuc2lnbmVkIGxvbmcgKmRzdCwgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwK ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAo KF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykg PiAwKSkKICByZXR1cm4gKCpkc3QgPSAqc3JjMSAmIH4oKnNyYzIpICYgKH4wVUwgPj4gKC0obmJp dHMpICYgKDY0IC0gMSkpKSkgIT0gMDsKIHJldHVybiBfX2JpdG1hcF9hbmRub3QoZHN0LCBzcmMx LCBzcmMyLCBuYml0cyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0bWFwX2NvbXBsZW1lbnQodW5zaWduZWQgbG9uZyAq ZHN0LCBjb25zdCB1bnNpZ25lZCBsb25nICpzcmMsCiAgIHVuc2lnbmVkIGludCBuYml0cykKewog aWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJp dHMpID4gMCkpCiAgKmRzdCA9IH4oKnNyYyk7CiBlbHNlCiAgX19iaXRtYXBfY29tcGxlbWVudChk c3QsIHNyYywgbmJpdHMpOwp9CiMgMzI3ICIuL2luY2x1ZGUvbGludXgvYml0bWFwLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBi aXRtYXBfZXF1YWwoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKICAgY29uc3QgdW5zaWduZWQg bG9uZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFu dF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICByZXR1cm4gISgo KnNyYzEgXiAqc3JjMikgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKTsKIGlmIChf X2J1aWx0aW5fY29uc3RhbnRfcChuYml0cyAmICg4IC0gMSkpICYmCiAgICAgKCgobmJpdHMpICYg KCh0eXBlb2YobmJpdHMpKSg4KSAtIDEpKSA9PSAwKSkKICByZXR1cm4gIW1lbWNtcChzcmMxLCBz cmMyLCBuYml0cyAvIDgpOwogcmV0dXJuIF9fYml0bWFwX2VxdWFsKHNyYzEsIHNyYzIsIG5iaXRz KTsKfQojIDM0NyAiLi9pbmNsdWRlL2xpbnV4L2JpdG1hcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGJpdG1hcF9vcl9lcXVh bChjb25zdCB1bnNpZ25lZCBsb25nICpzcmMxLAogICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAq c3JjMiwKICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzMsCiAgICAgICB1bnNpZ25lZCBp bnQgbmJpdHMpCnsKIGlmICghKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMp IDw9IDY0ICYmIChuYml0cykgPiAwKSkKICByZXR1cm4gX19iaXRtYXBfb3JfZXF1YWwoc3JjMSwg c3JjMiwgc3JjMywgbmJpdHMpOwoKIHJldHVybiAhKCgoKnNyYzEgfCAqc3JjMikgXiAqc3JjMykg JiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJpdG1hcF9pbnRlcnNl Y3RzKGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYzEsCiAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNy YzIsIHVuc2lnbmVkIGludCBuYml0cykKewogaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0 cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMpID4gMCkpCiAgcmV0dXJuICgoKnNyYzEgJiAq c3JjMikgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKSAhPSAwOwogZWxzZQogIHJl dHVybiBfX2JpdG1hcF9pbnRlcnNlY3RzKHNyYzEsIHNyYzIsIG5iaXRzKTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJpdG1h cF9zdWJzZXQoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjMSwKICAgY29uc3QgdW5zaWduZWQgbG9u ZyAqc3JjMiwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9w KG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICByZXR1cm4gISAoKCpz cmMxICYgfigqc3JjMikpICYgKH4wVUwgPj4gKC0obmJpdHMpICYgKDY0IC0gMSkpKSk7CiBlbHNl CiAgcmV0dXJuIF9fYml0bWFwX3N1YnNldChzcmMxLCBzcmMyLCBuYml0cyk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRt YXBfZW1wdHkoY29uc3QgdW5zaWduZWQgbG9uZyAqc3JjLCB1bnNpZ25lZCBuYml0cykKewogaWYg KChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMp ID4gMCkpCiAgcmV0dXJuICEgKCpzcmMgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkp KTsKCiByZXR1cm4gZmluZF9maXJzdF9iaXQoc3JjLCBuYml0cykgPT0gbmJpdHM7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBi aXRtYXBfZnVsbChjb25zdCB1bnNpZ25lZCBsb25nICpzcmMsIHVuc2lnbmVkIGludCBuYml0cykK ewogaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAo bmJpdHMpID4gMCkpCiAgcmV0dXJuICEgKH4oKnNyYykgJiAofjBVTCA+PiAoLShuYml0cykgJiAo NjQgLSAxKSkpKTsKCiByZXR1cm4gZmluZF9maXJzdF96ZXJvX2JpdChzcmMsIG5iaXRzKSA9PSBu Yml0czsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgYml0bWFwX3dl aWdodChjb25zdCB1bnNpZ25lZCBsb25nICpzcmMsIHVuc2lnbmVkIGludCBuYml0cykKewogaWYg KChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2NCAmJiAobmJpdHMp ID4gMCkpCiAgcmV0dXJuIGh3ZWlnaHRfbG9uZygqc3JjICYgKH4wVUwgPj4gKC0obmJpdHMpICYg KDY0IC0gMSkpKSk7CiByZXR1cm4gX19iaXRtYXBfd2VpZ2h0KHNyYywgbmJpdHMpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgYml0bWFwX3NldCh1bnNpZ25lZCBs b25nICptYXAsIHVuc2lnbmVkIGludCBzdGFydCwKICB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIGlm IChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgbmJpdHMgPT0gMSkKICBfX3NldF9iaXQo c3RhcnQsIG1hcCk7CiBlbHNlIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChzdGFydCAmICg4IC0g MSkpICYmCiAgICgoKHN0YXJ0KSAmICgodHlwZW9mKHN0YXJ0KSkoOCkgLSAxKSkgPT0gMCkgJiYK ICAgX19idWlsdGluX2NvbnN0YW50X3AobmJpdHMgJiAoOCAtIDEpKSAmJgogICAoKChuYml0cykg JiAoKHR5cGVvZihuYml0cykpKDgpIC0gMSkpID09IDApKQogIG1lbXNldCgoY2hhciAqKW1hcCAr IHN0YXJ0IC8gOCwgMHhmZiwgbmJpdHMgLyA4KTsKIGVsc2UKICBfX2JpdG1hcF9zZXQobWFwLCBz dGFydCwgbmJpdHMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg Yml0bWFwX2NsZWFyKHVuc2lnbmVkIGxvbmcgKm1hcCwgdW5zaWduZWQgaW50IHN0YXJ0LAogIHVu c2lnbmVkIGludCBuYml0cykKewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiBu Yml0cyA9PSAxKQogIF9fY2xlYXJfYml0KHN0YXJ0LCBtYXApOwogZWxzZSBpZiAoX19idWlsdGlu X2NvbnN0YW50X3Aoc3RhcnQgJiAoOCAtIDEpKSAmJgogICAoKChzdGFydCkgJiAoKHR5cGVvZihz dGFydCkpKDgpIC0gMSkpID09IDApICYmCiAgIF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzICYg KDggLSAxKSkgJiYKICAgKCgobmJpdHMpICYgKCh0eXBlb2YobmJpdHMpKSg4KSAtIDEpKSA9PSAw KSkKICBtZW1zZXQoKGNoYXIgKiltYXAgKyBzdGFydCAvIDgsIDAsIG5iaXRzIC8gOCk7CiBlbHNl CiAgX19iaXRtYXBfY2xlYXIobWFwLCBzdGFydCwgbmJpdHMpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF9zaGlm dF9yaWdodCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKnNyYywKICAg IHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiBpZiAoKF9fYnVpbHRp bl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChuYml0cykgPiAwKSkKICAq ZHN0ID0gKCpzcmMgJiAofjBVTCA+PiAoLShuYml0cykgJiAoNjQgLSAxKSkpKSA+PiBzaGlmdDsK IGVsc2UKICBfX2JpdG1hcF9zaGlmdF9yaWdodChkc3QsIHNyYywgc2hpZnQsIG5iaXRzKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBiaXRtYXBfc2hpZnRfbGVmdCh1bnNpZ25lZCBsb25nICpkc3QsIGNvbnN0IHVuc2lnbmVk IGxvbmcgKnNyYywKICAgIHVuc2lnbmVkIGludCBzaGlmdCwgdW5zaWduZWQgaW50IG5iaXRzKQp7 CiBpZiAoKF9fYnVpbHRpbl9jb25zdGFudF9wKG5iaXRzKSAmJiAobmJpdHMpIDw9IDY0ICYmIChu Yml0cykgPiAwKSkKICAqZHN0ID0gKCpzcmMgPDwgc2hpZnQpICYgKH4wVUwgPj4gKC0obmJpdHMp ICYgKDY0IC0gMSkpKTsKIGVsc2UKICBfX2JpdG1hcF9zaGlmdF9sZWZ0KGRzdCwgc3JjLCBzaGlm dCwgbmJpdHMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF9yZXBsYWNlKHVuc2lnbmVkIGxvbmcgKmRzdCwKICAg ICAgY29uc3QgdW5zaWduZWQgbG9uZyAqb2xkLAogICAgICBjb25zdCB1bnNpZ25lZCBsb25nICpu ZXcsCiAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm1hc2ssCiAgICAgIHVuc2lnbmVkIGludCBu Yml0cykKewogaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcChuYml0cykgJiYgKG5iaXRzKSA8PSA2 NCAmJiAobmJpdHMpID4gMCkpCiAgKmRzdCA9ICgqb2xkICYgfigqbWFzaykpIHwgKCpuZXcgJiAq bWFzayk7CiBlbHNlCiAgX19iaXRtYXBfcmVwbGFjZShkc3QsIG9sZCwgbmV3LCBtYXNrLCBuYml0 cyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgYml0bWFwX25leHRfY2xlYXJfcmVnaW9uKHVuc2lnbmVkIGxvbmcgKmJpdG1h cCwKICAgICAgICAgdW5zaWduZWQgaW50ICpycywgdW5zaWduZWQgaW50ICpyZSwKICAgICAgICAg dW5zaWduZWQgaW50IGVuZCkKewogKnJzID0gZmluZF9uZXh0X3plcm9fYml0KGJpdG1hcCwgZW5k LCAqcnMpOwogKnJlID0gZmluZF9uZXh0X2JpdChiaXRtYXAsIGVuZCwgKnJzICsgMSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgYml0bWFwX25leHRfc2V0X3JlZ2lvbih1bnNpZ25lZCBsb25nICpiaXRtYXAsCiAgICAgICB1 bnNpZ25lZCBpbnQgKnJzLCB1bnNpZ25lZCBpbnQgKnJlLAogICAgICAgdW5zaWduZWQgaW50IGVu ZCkKewogKnJzID0gZmluZF9uZXh0X2JpdChiaXRtYXAsIGVuZCwgKnJzKTsKICpyZSA9IGZpbmRf bmV4dF96ZXJvX2JpdChiaXRtYXAsIGVuZCwgKnJzICsgMSk7Cn0KIyA1MzUgIi4vaW5jbHVkZS9s aW51eC9iaXRtYXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBiaXRtYXBfZnJvbV91NjQodW5zaWduZWQgbG9uZyAqZHN0LCB1 NjQgbWFzaykKewogZHN0WzBdID0gbWFzayAmICh+MFVMKTsKCiBpZiAoc2l6ZW9mKG1hc2spID4g c2l6ZW9mKHVuc2lnbmVkIGxvbmcpKQogIGRzdFsxXSA9IG1hc2sgPj4gMzI7Cn0KIyA1NTEgIi4v aW5jbHVkZS9saW51eC9iaXRtYXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBiaXRtYXBfZ2V0X3ZhbHVlOChj b25zdCB1bnNpZ25lZCBsb25nICptYXAsCiAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCkK ewogY29uc3Qgc2l6ZV90IGluZGV4ID0gKChzdGFydCkgLyA2NCk7CiBjb25zdCB1bnNpZ25lZCBs b25nIG9mZnNldCA9IHN0YXJ0ICUgNjQ7CgogcmV0dXJuIChtYXBbaW5kZXhdID4+IG9mZnNldCkg JiAweEZGOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGJpdG1hcF9zZXRfdmFsdWU4KHVuc2lnbmVkIGxvbmcgKm1h cCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwKICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCkKewog Y29uc3Qgc2l6ZV90IGluZGV4ID0gKChzdGFydCkgLyA2NCk7CiBjb25zdCB1bnNpZ25lZCBsb25n IG9mZnNldCA9IHN0YXJ0ICUgNjQ7CgogbWFwW2luZGV4XSAmPSB+KDB4RkZVTCA8PCBvZmZzZXQp OwogbWFwW2luZGV4XSB8PSB2YWx1ZSA8PCBvZmZzZXQ7Cn0KIyAxMyAiLi9pbmNsdWRlL2xpbnV4 L2NwdW1hc2suaCIgMgoKCgoKdHlwZWRlZiBzdHJ1Y3QgY3B1bWFzayB7IHVuc2lnbmVkIGxvbmcg Yml0c1soKCg4KSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkgLyAoKHNpemVvZihsb25nKSAq IDgpKSldOyB9IGNwdW1hc2tfdDsKIyAzOSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKZXh0 ZXJuIHVuc2lnbmVkIGludCBucl9jcHVfaWRzOwojIDkwICIuL2luY2x1ZGUvbGludXgvY3B1bWFz ay5oIgpleHRlcm4gc3RydWN0IGNwdW1hc2sgX19jcHVfcG9zc2libGVfbWFzazsKZXh0ZXJuIHN0 cnVjdCBjcHVtYXNrIF9fY3B1X29ubGluZV9tYXNrOwpleHRlcm4gc3RydWN0IGNwdW1hc2sgX19j cHVfcHJlc2VudF9tYXNrOwpleHRlcm4gc3RydWN0IGNwdW1hc2sgX19jcHVfYWN0aXZlX21hc2s7 CgoKCgoKZXh0ZXJuIGF0b21pY190IF9fbnVtX29ubGluZV9jcHVzOwojIDExMCAiLi9pbmNsdWRl L2xpbnV4L2NwdW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IG51bV9vbmxpbmVfY3B1cyh2b2lkKQp7CiBy ZXR1cm4gYXRvbWljX3JlYWQoJl9fbnVtX29ubGluZV9jcHVzKTsKfQojIDEzMiAiLi9pbmNsdWRl L2xpbnV4L2NwdW1hc2suaCIKZXh0ZXJuIGNwdW1hc2tfdCBjcHVzX2Jvb3RlZF9vbmNlX21hc2s7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGNwdV9tYXhfYml0c193YXJuKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBi aXRzKQp7CgoKCn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgY3B1bWFza19jaGVjayh1bnNpZ25lZCBpbnQgY3B1 KQp7CiBjcHVfbWF4X2JpdHNfd2FybihjcHUsICgodW5zaWduZWQgaW50KTgpKTsKIHJldHVybiBj cHU7Cn0KIyAyMTIgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVt YXNrX2ZpcnN0KGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwKQp7CiByZXR1cm4gZmluZF9maXJz dF9iaXQoKChzcmNwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKfQoKCgoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWdu ZWQgaW50IGNwdW1hc2tfbGFzdChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKewogcmV0dXJu IGZpbmRfbGFzdF9iaXQoKChzcmNwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKfQoKdW5z aWduZWQgaW50IGNwdW1hc2tfbmV4dChpbnQgbiwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3Ap OwojIDIzNyAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGNwdW1hc2tf bmV4dF96ZXJvKGludCBuLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKewoKIGlmIChuICE9 IC0xKQogIGNwdW1hc2tfY2hlY2sobik7CiByZXR1cm4gZmluZF9uZXh0X3plcm9fYml0KCgoc3Jj cCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSwgbisxKTsKfQoKaW50IGNwdW1hc2tfbmV4dF9h bmQoaW50IG4sIGNvbnN0IHN0cnVjdCBjcHVtYXNrICosIGNvbnN0IHN0cnVjdCBjcHVtYXNrICop OwppbnQgY3B1bWFza19hbnlfYnV0KGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCB1bnNpZ25l ZCBpbnQgY3B1KTsKdW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGlu dCBpLCBpbnQgbm9kZSk7CiMgMjczICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpleHRlcm4g aW50IGNwdW1hc2tfbmV4dF93cmFwKGludCBuLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywg aW50IHN0YXJ0LCBib29sIHdyYXApOwojIDMyNSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBjcHVtYXNrX3NldF9jcHUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGNwdW1hc2sgKmRz dHApCnsKIHNldF9iaXQoY3B1bWFza19jaGVjayhjcHUpLCAoKGRzdHApLT5iaXRzKSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgX19jcHVtYXNrX3NldF9jcHUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGNwdW1hc2sgKmRz dHApCnsKIF9fc2V0X2JpdChjcHVtYXNrX2NoZWNrKGNwdSksICgoZHN0cCktPmJpdHMpKTsKfQoK CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBjcHVtYXNrX2NsZWFyX2NwdShpbnQgY3B1LCBzdHJ1Y3QgY3B1bWFzayAqZHN0 cCkKewogY2xlYXJfYml0KGNwdW1hc2tfY2hlY2soY3B1KSwgKChkc3RwKS0+Yml0cykpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9fY3B1bWFza19jbGVhcl9jcHUoaW50IGNwdSwgc3RydWN0IGNwdW1hc2sgKmRzdHApCnsK IF9fY2xlYXJfYml0KGNwdW1hc2tfY2hlY2soY3B1KSwgKChkc3RwKS0+Yml0cykpOwp9CiMgMzU4 ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza190ZXN0X2NwdShpbnQgY3B1 LCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1bWFzaykKewogcmV0dXJuIHRlc3RfYml0KGNwdW1h c2tfY2hlY2soY3B1KSwgKCgoY3B1bWFzaykpLT5iaXRzKSk7Cn0KIyAzNzIgIi4vaW5jbHVkZS9s aW51eC9jcHVtYXNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBjcHVtYXNrX3Rlc3RfYW5kX3NldF9jcHUoaW50IGNwdSwgc3Ry dWN0IGNwdW1hc2sgKmNwdW1hc2spCnsKIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KGNwdW1hc2tf Y2hlY2soY3B1KSwgKChjcHVtYXNrKS0+Yml0cykpOwp9CiMgMzg2ICIuL2luY2x1ZGUvbGludXgv Y3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgY3B1bWFza190ZXN0X2FuZF9jbGVhcl9jcHUoaW50IGNwdSwgc3RydWN0 IGNwdW1hc2sgKmNwdW1hc2spCnsKIHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoY3B1bWFza19j aGVjayhjcHUpLCAoKGNwdW1hc2spLT5iaXRzKSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNwdW1hc2tfc2V0YWxs KHN0cnVjdCBjcHVtYXNrICpkc3RwKQp7CiBiaXRtYXBfZmlsbCgoKGRzdHApLT5iaXRzKSwgKCh1 bnNpZ25lZCBpbnQpOCkpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVtYXNrX2NsZWFyKHN0cnVjdCBjcHVtYXNr ICpkc3RwKQp7CiBiaXRtYXBfemVybygoKGRzdHApLT5iaXRzKSwgKCh1bnNpZ25lZCBpbnQpOCkp Owp9CiMgNDE3ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19hbmQoc3Ry dWN0IGNwdW1hc2sgKmRzdHAsCiAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAs CiAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCnsKIHJldHVybiBiaXRtYXBf YW5kKCgoZHN0cCktPmJpdHMpLCAoKHNyYzFwKS0+Yml0cyksCiAgICAgICAgICAgKChzcmMycCkt PmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza19vcihzdHJ1 Y3QgY3B1bWFzayAqZHN0cCwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzFwLAogICAgICAgICBj b25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCnsKIGJpdG1hcF9vcigoKGRzdHApLT5iaXRzKSwg KChzcmMxcCktPmJpdHMpLAogICAgICAgICAgKChzcmMycCktPmJpdHMpLCAoKHVuc2lnbmVkIGlu dCk4KSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza194b3Ioc3RydWN0IGNwdW1hc2sgKmRzdHAsCiAg ICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCiAgICAgICAgICBjb25zdCBzdHJ1 Y3QgY3B1bWFzayAqc3JjMnApCnsKIGJpdG1hcF94b3IoKChkc3RwKS0+Yml0cyksICgoc3JjMXAp LT5iaXRzKSwKICAgICAgICAgICAoKHNyYzJwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsK fQojIDQ2MCAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGNwdW1hc2tfYW5kbm90KHN0 cnVjdCBjcHVtYXNrICpkc3RwLAogICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjMXAsCiAg ICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMycCkKewogcmV0dXJuIGJpdG1hcF9hbmRub3Qo KChkc3RwKS0+Yml0cyksICgoc3JjMXApLT5iaXRzKSwKICAgICAgICgoc3JjMnApLT5iaXRzKSwg KCh1bnNpZ25lZCBpbnQpOCkpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1bWFza19jb21wbGVtZW50KHN0cnVj dCBjcHVtYXNrICpkc3RwLAogICAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApCnsK IGJpdG1hcF9jb21wbGVtZW50KCgoZHN0cCktPmJpdHMpLCAoKHNyY3ApLT5iaXRzKSwKICAgICAg ICAgICAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjcHVtYXNrX2VxdWFsKGNvbnN0 IHN0cnVjdCBjcHVtYXNrICpzcmMxcCwKICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMycCkK ewogcmV0dXJuIGJpdG1hcF9lcXVhbCgoKHNyYzFwKS0+Yml0cyksICgoc3JjMnApLT5iaXRzKSwK ICAgICAgICgodW5zaWduZWQgaW50KTgpKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjcHVtYXNrX29yX2VxdWFs KGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmMxcCwKICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqc3JjMnAsCiAgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzNwKQp7CiByZXR1cm4g Yml0bWFwX29yX2VxdWFsKCgoc3JjMXApLT5iaXRzKSwgKChzcmMycCktPmJpdHMpLAogICAgICAg ICAgKChzcmMzcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjcHVt YXNrX2ludGVyc2VjdHMoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzFwLAogICAgICAgICBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqc3JjMnApCnsKIHJldHVybiBiaXRtYXBfaW50ZXJzZWN0cygoKHNy YzFwKS0+Yml0cyksICgoc3JjMnApLT5iaXRzKSwKICAgICAgICAgICAgKCh1bnNpZ25lZCBpbnQp OCkpOwp9CiMgNTI1ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19zdWJz ZXQoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyYzFwLAogICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNr ICpzcmMycCkKewogcmV0dXJuIGJpdG1hcF9zdWJzZXQoKChzcmMxcCktPmJpdHMpLCAoKHNyYzJw KS0+Yml0cyksCiAgICAgICAgKCh1bnNpZ25lZCBpbnQpOCkpOwp9CgoKCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBjcHVtYXNr X2VtcHR5KGNvbnN0IHN0cnVjdCBjcHVtYXNrICpzcmNwKQp7CiByZXR1cm4gYml0bWFwX2VtcHR5 KCgoc3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNwdW1hc2tf ZnVsbChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKewogcmV0dXJuIGJpdG1hcF9mdWxsKCgo c3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgY3B1 bWFza193ZWlnaHQoY29uc3Qgc3RydWN0IGNwdW1hc2sgKnNyY3ApCnsKIHJldHVybiBiaXRtYXBf d2VpZ2h0KCgoc3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg Y3B1bWFza19zaGlmdF9yaWdodChzdHJ1Y3QgY3B1bWFzayAqZHN0cCwKICAgICAgICAgICBjb25z dCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCwgaW50IG4pCnsKIGJpdG1hcF9zaGlmdF9yaWdodCgoKGRz dHApLT5iaXRzKSwgKChzcmNwKS0+Yml0cyksIG4sCiAgICAgICAgICAgICgodW5zaWduZWQgaW50 KTgpKTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVtYXNrX3NoaWZ0X2xlZnQoc3RydWN0IGNwdW1hc2sgKmRz dHAsCiAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCwgaW50IG4pCnsKIGJpdG1h cF9zaGlmdF9sZWZ0KCgoZHN0cCktPmJpdHMpLCAoKHNyY3ApLT5iaXRzKSwgbiwKICAgICAgICAg ICAoKHVuc2lnbmVkIGludCk4KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjcHVtYXNrX2NvcHkoc3RydWN0IGNw dW1hc2sgKmRzdHAsCiAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjcCkKewogYml0bWFwX2Nv cHkoKChkc3RwKS0+Yml0cyksICgoc3JjcCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0K IyA2MzYgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBjcHVtYXNrX3BhcnNlX3VzZXIo Y29uc3QgY2hhciAqYnVmLCBpbnQgbGVuLAogICAgICAgICBzdHJ1Y3QgY3B1bWFzayAqZHN0cCkK ewogcmV0dXJuIGJpdG1hcF9wYXJzZV91c2VyKGJ1ZiwgbGVuLCAoKGRzdHApLT5iaXRzKSwgKCh1 bnNpZ25lZCBpbnQpOCkpOwp9CiMgNjUwICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg Y3B1bWFza19wYXJzZWxpc3RfdXNlcihjb25zdCBjaGFyICpidWYsIGludCBsZW4sCiAgICAgICAg IHN0cnVjdCBjcHVtYXNrICpkc3RwKQp7CiByZXR1cm4gYml0bWFwX3BhcnNlbGlzdF91c2VyKGJ1 ZiwgbGVuLCAoKGRzdHApLT5iaXRzKSwKICAgICAgICAgKCh1bnNpZ25lZCBpbnQpOCkpOwp9CiMg NjY0ICIuL2luY2x1ZGUvbGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY3B1bWFza19wYXJzZShjb25zdCBj aGFyICpidWYsIHN0cnVjdCBjcHVtYXNrICpkc3RwKQp7CiByZXR1cm4gYml0bWFwX3BhcnNlKGJ1 ZiwgKH4wVSksICgoZHN0cCktPmJpdHMpLCAoKHVuc2lnbmVkIGludCk4KSk7Cn0KIyA2NzYgIi4v aW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBjcHVsaXN0X3BhcnNlKGNvbnN0IGNoYXIgKmJ1 Ziwgc3RydWN0IGNwdW1hc2sgKmRzdHApCnsKIHJldHVybiBiaXRtYXBfcGFyc2VsaXN0KGJ1Ziwg KChkc3RwKS0+Yml0cyksICgodW5zaWduZWQgaW50KTgpKTsKfQoKCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGNw dW1hc2tfc2l6ZSh2b2lkKQp7CiByZXR1cm4gKCgoKCh1bnNpZ25lZCBpbnQpOCkpICsgKChzaXpl b2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKSAqIHNpemVvZihsb25n KTsKfQojIDc0OSAiLi9pbmNsdWRlL2xpbnV4L2NwdW1hc2suaCIKdHlwZWRlZiBzdHJ1Y3QgY3B1 bWFzayBjcHVtYXNrX3Zhcl90WzFdOwoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBhbGxvY19jcHVtYXNrX3ZhcihjcHVtYXNr X3Zhcl90ICptYXNrLCBnZnBfdCBmbGFncykKewogcmV0dXJuIHRydWU7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYWxsb2Nf Y3B1bWFza192YXJfbm9kZShjcHVtYXNrX3Zhcl90ICptYXNrLCBnZnBfdCBmbGFncywKICAgICAg IGludCBub2RlKQp7CiByZXR1cm4gdHJ1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB6YWxsb2NfY3B1bWFza192YXIoY3B1 bWFza192YXJfdCAqbWFzaywgZ2ZwX3QgZmxhZ3MpCnsKIGNwdW1hc2tfY2xlYXIoKm1hc2spOwog cmV0dXJuIHRydWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgemFsbG9jX2NwdW1hc2tfdmFyX25vZGUoY3B1bWFza192YXJf dCAqbWFzaywgZ2ZwX3QgZmxhZ3MsCiAgICAgICBpbnQgbm9kZSkKewogY3B1bWFza19jbGVhcigq bWFzayk7CiByZXR1cm4gdHJ1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhbGxvY19ib290bWVtX2NwdW1hc2tfdmFyKGNw dW1hc2tfdmFyX3QgKm1hc2spCnsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBmcmVlX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFy X3QgbWFzaykKewp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90 IG1hc2spCnsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBjcHVtYXNrX2F2YWlsYWJsZShjcHVtYXNrX3Zhcl90IG1hc2spCnsK IHJldHVybiB0cnVlOwp9CgoKCgpleHRlcm4gY29uc3QgdW5zaWduZWQgbG9uZyBjcHVfYWxsX2Jp dHNbKCgoOCkgKyAoKHNpemVvZihsb25nKSAqIDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4 KSkpXTsKIyA4MDkgIi4vaW5jbHVkZS9saW51eC9jcHVtYXNrLmgiCnZvaWQgaW5pdF9jcHVfcHJl c2VudChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjKTsKdm9pZCBpbml0X2NwdV9wb3NzaWJsZShj b25zdCBzdHJ1Y3QgY3B1bWFzayAqc3JjKTsKdm9pZCBpbml0X2NwdV9vbmxpbmUoY29uc3Qgc3Ry dWN0IGNwdW1hc2sgKnNyYyk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlc2V0X2NwdV9wb3NzaWJsZV9tYXNrKHZvaWQpCnsK IGJpdG1hcF96ZXJvKCgoJl9fY3B1X3Bvc3NpYmxlX21hc2spLT5iaXRzKSwgOCk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQK c2V0X2NwdV9wb3NzaWJsZSh1bnNpZ25lZCBpbnQgY3B1LCBib29sIHBvc3NpYmxlKQp7CiBpZiAo cG9zc2libGUpCiAgY3B1bWFza19zZXRfY3B1KGNwdSwgJl9fY3B1X3Bvc3NpYmxlX21hc2spOwog ZWxzZQogIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X3Bvc3NpYmxlX21hc2spOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkCnNldF9jcHVfcHJlc2VudCh1bnNpZ25lZCBpbnQgY3B1LCBib29sIHByZXNlbnQpCnsKIGlm IChwcmVzZW50KQogIGNwdW1hc2tfc2V0X2NwdShjcHUsICZfX2NwdV9wcmVzZW50X21hc2spOwog ZWxzZQogIGNwdW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X3ByZXNlbnRfbWFzayk7Cn0KCnZv aWQgc2V0X2NwdV9vbmxpbmUodW5zaWduZWQgaW50IGNwdSwgYm9vbCBvbmxpbmUpOwoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApz ZXRfY3B1X2FjdGl2ZSh1bnNpZ25lZCBpbnQgY3B1LCBib29sIGFjdGl2ZSkKewogaWYgKGFjdGl2 ZSkKICBjcHVtYXNrX3NldF9jcHUoY3B1LCAmX19jcHVfYWN0aXZlX21hc2spOwogZWxzZQogIGNw dW1hc2tfY2xlYXJfY3B1KGNwdSwgJl9fY3B1X2FjdGl2ZV9tYXNrKTsKfQojIDg2MiAiLi9pbmNs dWRlL2xpbnV4L2NwdW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fY2hlY2tfaXNfYml0bWFwKGNvbnN0IHVuc2lnbmVk IGxvbmcgKmJpdG1hcCkKewogcmV0dXJuIDE7Cn0KIyA4NzQgIi4vaW5jbHVkZS9saW51eC9jcHVt YXNrLmgiCmV4dGVybiBjb25zdCB1bnNpZ25lZCBsb25nCiBjcHVfYml0X2JpdG1hcFs2NCArMV1b KCgoOCkgKyAoKHNpemVvZihsb25nKSAqIDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4KSkp XTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpnZXRfY3B1X21hc2sodW5zaWduZWQgaW50IGNwdSkK ewogY29uc3QgdW5zaWduZWQgbG9uZyAqcCA9IGNwdV9iaXRfYml0bWFwWzEgKyBjcHUgJSA2NF07 CiBwIC09IGNwdSAvIDY0OwogcmV0dXJuICgoc3RydWN0IGNwdW1hc2sgKikoMSA/IChwKSA6ICh2 b2lkICopc2l6ZW9mKF9fY2hlY2tfaXNfYml0bWFwKHApKSkpOwp9CiMgOTExICIuL2luY2x1ZGUv bGludXgvY3B1bWFzay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzc2l6ZV90CmNwdW1hcF9wcmludF90b19wYWdlYnVmKGJvb2wgbGlz dCwgY2hhciAqYnVmLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaykKewogcmV0dXJuIGJpdG1h cF9wcmludF90b19wYWdlYnVmKGxpc3QsIGJ1ZiwgKChtYXNrKS0+Yml0cyksCiAgICAgICAgICBu cl9jcHVfaWRzKTsKfQojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vY3B1bWFzay5oIiAyCgpl eHRlcm4gY3B1bWFza192YXJfdCBjcHVfY2FsbGluX21hc2s7CmV4dGVybiBjcHVtYXNrX3Zhcl90 IGNwdV9jYWxsb3V0X21hc2s7CmV4dGVybiBjcHVtYXNrX3Zhcl90IGNwdV9pbml0aWFsaXplZF9t YXNrOwpleHRlcm4gY3B1bWFza192YXJfdCBjcHVfc2libGluZ19zZXR1cF9tYXNrOwoKZXh0ZXJu IHZvaWQgc2V0dXBfY3B1X2xvY2FsX21hc2tzKHZvaWQpOwojIDEyICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL21zci5oIiAyCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL21zci5oIiAx CiMgMTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgiIDIKCnN0cnVjdCBtc3IgewogdW5p b24gewogIHN0cnVjdCB7CiAgIHUzMiBsOwogICB1MzIgaDsKICB9OwogIHU2NCBxOwogfTsKfTsK CnN0cnVjdCBtc3JfaW5mbyB7CiB1MzIgbXNyX25vOwogc3RydWN0IG1zciByZWc7CiBzdHJ1Y3Qg bXNyICptc3JzOwogaW50IGVycjsKfTsKCnN0cnVjdCBtc3JfcmVnc19pbmZvIHsKIHUzMiAqcmVn czsKIGludCBlcnI7Cn07CgpzdHJ1Y3Qgc2F2ZWRfbXNyIHsKIGJvb2wgdmFsaWQ7CiBzdHJ1Y3Qg bXNyX2luZm8gaW5mbzsKfTsKCnN0cnVjdCBzYXZlZF9tc3JzIHsKIHVuc2lnbmVkIGludCBudW07 CiBzdHJ1Y3Qgc2F2ZWRfbXNyICphcnJheTsKfTsKIyA2OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9tc3IuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvdHJhY2Vwb2ludC1kZWZzLmgiIDEKIyAxMiAi Li9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9z dGF0aWNfa2V5LmgiIDEKIyAxMyAiLi9pbmNsdWRlL2xpbnV4L3RyYWNlcG9pbnQtZGVmcy5oIiAy CgpzdHJ1Y3QgdHJhY2VfcHJpbnRfZmxhZ3MgewogdW5zaWduZWQgbG9uZyBtYXNrOwogY29uc3Qg Y2hhciAqbmFtZTsKfTsKCnN0cnVjdCB0cmFjZV9wcmludF9mbGFnc191NjQgewogdW5zaWduZWQg bG9uZyBsb25nIG1hc2s7CiBjb25zdCBjaGFyICpuYW1lOwp9OwoKc3RydWN0IHRyYWNlcG9pbnRf ZnVuYyB7CiB2b2lkICpmdW5jOwogdm9pZCAqZGF0YTsKIGludCBwcmlvOwp9OwoKc3RydWN0IHRy YWNlcG9pbnQgewogY29uc3QgY2hhciAqbmFtZTsKIHN0cnVjdCBzdGF0aWNfa2V5IGtleTsKIGlu dCAoKnJlZ2Z1bmMpKHZvaWQpOwogdm9pZCAoKnVucmVnZnVuYykodm9pZCk7CiBzdHJ1Y3QgdHJh Y2Vwb2ludF9mdW5jICpmdW5jczsKfTsKCgp0eXBlZGVmIGNvbnN0IGludCB0cmFjZXBvaW50X3B0 cl90OwoKCgoKc3RydWN0IGJwZl9yYXdfZXZlbnRfbWFwIHsKIHN0cnVjdCB0cmFjZXBvaW50ICp0 cDsKIHZvaWQgKmJwZl9mdW5jOwogdTMyIG51bV9hcmdzOwogdTMyIHdyaXRhYmxlX3NpemU7Cn0g X19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7CiMgNjkgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vbXNyLmgiIDIKCmV4dGVybiBzdHJ1Y3QgdHJhY2Vwb2ludCBfX3RyYWNlcG9pbnRfcmVh ZF9tc3I7CmV4dGVybiBzdHJ1Y3QgdHJhY2Vwb2ludCBfX3RyYWNlcG9pbnRfd3JpdGVfbXNyOwpl eHRlcm4gc3RydWN0IHRyYWNlcG9pbnQgX190cmFjZXBvaW50X3JkcG1jOwoKZXh0ZXJuIHZvaWQg ZG9fdHJhY2Vfd3JpdGVfbXNyKHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwsIGludCBmYWlsZWQp OwpleHRlcm4gdm9pZCBkb190cmFjZV9yZWFkX21zcih1bnNpZ25lZCBpbnQgbXNyLCB1NjQgdmFs LCBpbnQgZmFpbGVkKTsKZXh0ZXJuIHZvaWQgZG9fdHJhY2VfcmRwbWModW5zaWduZWQgaW50IG1z ciwgdTY0IHZhbCwgaW50IGZhaWxlZCk7CiMgOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNy LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19yZG1zcih1bnNpZ25lZCBpbnQgbXNyKQp7CiB1bnNpZ25lZCBsb25nIGxvdywgaGln aDsKCiBhc20gdm9sYXRpbGUoIjE6IHJkbXNyXG4iCiAgICAgICAiMjpcbiIKICAgICAgICIgLnB1 c2hzZWN0aW9uIFwiX19leF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcg KCIgIjFiIiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiMmIiICIpIC0gLlxuIiAiIC5sb25nICgiICJl eF9oYW5kbGVyX3JkbXNyX3Vuc2FmZSIgIikgLSAuXG4iICIgLnBvcHNlY3Rpb25cbiIKICAgICAg IDogIj1hIiAobG93KSwgIj1kIiAoaGlnaCkgOiAiYyIgKG1zcikpOwoKIHJldHVybiAoKGxvdykg fCAoaGlnaCkgPDwgMzIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX3dybXNyKHVuc2lnbmVkIGludCBtc3IsIHUzMiBsb3csIHUzMiBoaWdoKQp7CiBh c20gdm9sYXRpbGUoIjE6IHdybXNyXG4iCiAgICAgICAiMjpcbiIKICAgICAgICIgLnB1c2hzZWN0 aW9uIFwiX19leF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjFi IiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiMmIiICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5k bGVyX3dybXNyX3Vuc2FmZSIgIikgLSAuXG4iICIgLnBvcHNlY3Rpb25cbiIKICAgICAgIDogOiAi YyIgKG1zciksICJhIihsb3cpLCAiZCIgKGhpZ2gpIDogIm1lbW9yeSIpOwp9CiMgMTI1ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlX3JlYWRf bXNyKHVuc2lnbmVkIGludCBtc3IpCnsKIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CgogdmFsID0g X19yZG1zcihtc3IpOwoKIGlmIChzdGF0aWNfa2V5X2ZhbHNlKCYoX190cmFjZXBvaW50X3JlYWRf bXNyKS5rZXkpKQogIGRvX3RyYWNlX3JlYWRfbXNyKG1zciwgdmFsLCAwKTsKCiByZXR1cm4gdmFs Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGxvbmcgbmF0aXZlX3JlYWRfbXNyX3NhZmUodW5zaWduZWQgaW50 IG1zciwKICAgICAgICAgICAgaW50ICplcnIpCnsKIHVuc2lnbmVkIGxvbmcgbG93LCBoaWdoOwoK IGFzbSB2b2xhdGlsZSgiMjogcmRtc3IgOyB4b3IgJVtlcnJdLCVbZXJyXVxuIgogICAgICAgIjE6 XG5cdCIKICAgICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG5cdCIKICAgICAgICIzOiBtb3Yg JVtmYXVsdF0sJVtlcnJdXG5cdCIKICAgICAgICJ4b3JsICUlZWF4LCAlJWVheFxuXHQiCiAgICAg ICAieG9ybCAlJWVkeCwgJSVlZHhcblx0IgogICAgICAgImptcCAxYlxuXHQiCiAgICAgICAiLnBy ZXZpb3VzXG5cdCIKICAgICAgICIgLnB1c2hzZWN0aW9uIFwiX19leF90YWJsZVwiLFwiYVwiXG4i ICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjJiIiAiKSAtIC5cbiIgIiAubG9uZyAoIiAiM2Ii ICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5kbGVyX2RlZmF1bHQiICIpIC0gLlxuIiAiIC5w b3BzZWN0aW9uXG4iCiAgICAgICA6IFtlcnJdICI9ciIgKCplcnIpLCAiPWEiIChsb3cpLCAiPWQi IChoaWdoKQogICAgICAgOiAiYyIgKG1zciksIFtmYXVsdF0gImkiICgtNSkpOwogaWYgKHN0YXRp Y19rZXlfZmFsc2UoJihfX3RyYWNlcG9pbnRfcmVhZF9tc3IpLmtleSkpCiAgZG9fdHJhY2VfcmVh ZF9tc3IobXNyLCAoKGxvdykgfCAoaGlnaCkgPDwgMzIpLCAqZXJyKTsKIHJldHVybiAoKGxvdykg fCAoaGlnaCkgPDwgMzIpOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkKbmF0aXZlX3dyaXRlX21zcih1bnNpZ25lZCBpbnQgbXNyLCB1MzIgbG93LCB1MzIg aGlnaCkKewogX193cm1zcihtc3IsIGxvdywgaGlnaCk7CgogaWYgKHN0YXRpY19rZXlfZmFsc2Uo JihfX3RyYWNlcG9pbnRfd3JpdGVfbXNyKS5rZXkpKQogIGRvX3RyYWNlX3dyaXRlX21zcihtc3Is ICgodTY0KWhpZ2ggPDwgMzIgfCBsb3cpLCAwKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkKbmF0aXZlX3dyaXRlX21zcl9zYWZlKHVuc2lnbmVkIGludCBt c3IsIHUzMiBsb3csIHUzMiBoaWdoKQp7CiBpbnQgZXJyOwoKIGFzbSB2b2xhdGlsZSgiMjogd3Jt c3IgOyB4b3IgJVtlcnJdLCVbZXJyXVxuIgogICAgICAgIjE6XG5cdCIKICAgICAgICIuc2VjdGlv biAuZml4dXAsXCJheFwiXG5cdCIKICAgICAgICIzOiAgbW92ICVbZmF1bHRdLCVbZXJyXSA7IGpt cCAxYlxuXHQiCiAgICAgICAiLnByZXZpb3VzXG5cdCIKICAgICAgICIgLnB1c2hzZWN0aW9uIFwi X19leF90YWJsZVwiLFwiYVwiXG4iICIgLmJhbGlnbiA0XG4iICIgLmxvbmcgKCIgIjJiIiAiKSAt IC5cbiIgIiAubG9uZyAoIiAiM2IiICIpIC0gLlxuIiAiIC5sb25nICgiICJleF9oYW5kbGVyX2Rl ZmF1bHQiICIpIC0gLlxuIiAiIC5wb3BzZWN0aW9uXG4iCiAgICAgICA6IFtlcnJdICI9YSIgKGVy cikKICAgICAgIDogImMiIChtc3IpLCAiMCIgKGxvdyksICJkIiAoaGlnaCksCiAgICAgICAgIFtm YXVsdF0gImkiICgtNSkKICAgICAgIDogIm1lbW9yeSIpOwogaWYgKHN0YXRpY19rZXlfZmFsc2Uo JihfX3RyYWNlcG9pbnRfd3JpdGVfbXNyKS5rZXkpKQogIGRvX3RyYWNlX3dyaXRlX21zcihtc3Is ICgodTY0KWhpZ2ggPDwgMzIgfCBsb3cpLCBlcnIpOwogcmV0dXJuIGVycjsKfQoKZXh0ZXJuIGlu dCByZG1zcl9zYWZlX3JlZ3ModTMyIHJlZ3NbOF0pOwpleHRlcm4gaW50IHdybXNyX3NhZmVfcmVn cyh1MzIgcmVnc1s4XSk7CiMgMjAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgbG9uZyByZHRzYyh2 b2lkKQp7CiB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKCiBhc20gdm9sYXRpbGUoInJkdHNjIiA6 ICI9YSIgKGxvdyksICI9ZCIgKGhpZ2gpKTsKCiByZXR1cm4gKChsb3cpIHwgKGhpZ2gpIDw8IDMy KTsKfQojIDIxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGxvbmcgcmR0c2Nfb3JkZXJlZCh2b2lk KQp7CiB1bnNpZ25lZCBsb25nIGxvdywgaGlnaDsKIyAyMzYgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vbXNyLmgiCiBhc20gdm9sYXRpbGUoIiMgQUxUOiBvbGRpbnN0cjJcbiIgIjY2MTpcblx0IiAi cmR0c2MiICJcbjY2MjpcbiIgIiMgQUxUOiBwYWRkaW5nMlxuIiAiLnNraXAgLSgoIiAiKCgiICI2 NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4gKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAi KSBeICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSAmIC0oLSgoIiAiNjY1IiIxIiJmLSIi NjY0IiIxIiJmIiAiKSA8ICgiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICIpKSkpKSIgIiAtICgi ICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJm IiAiKSBeICgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikgXiAoIiAiNjY1IiIyIiJmLSIi NjY0IiIyIiJmIiAiKSkgJiAtKC0oKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIikgPCAoIiAi NjY1IiIyIiJmLSIiNjY0IiIyIiJmIiAiKSkpKSkiICIgLSAoIiAiNjYyYi02NjFiIiAiKSksIDB4 OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4i ICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQg IiAiKCAzKjMyKzE4KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUg IiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJc biIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIiMiIiZiAtIC5cbiIgIiAud29y ZCAiICIoIDEqMzIrMjcpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0 ZSAiICI2NjUiIjIiImYtIiI2NjQiIjIiImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIg IlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFjZW1lbnQs IFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEiICJcbiIgIjY2NCIiMSIiOlxuXHQi ICJsZmVuY2U7IHJkdHNjIiAiXG4iICI2NjUiIjEiICI6XG4iICIjIEFMVDogcmVwbGFjZW1lbnQg IiAiMiIgIlxuIiAiNjY0IiIyIiI6XG5cdCIgInJkdHNjcCIgIlxuIiAiNjY1IiIyIiAiOlxuIiAi LnBvcHNlY3Rpb25cbiIKCgogICA6ICI9YSIgKGxvdyksICI9ZCIgKGhpZ2gpCgogICA6OiAiZWN4 Iik7CgogcmV0dXJuICgobG93KSB8IChoaWdoKSA8PCAzMik7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbG9u ZyBuYXRpdmVfcmVhZF9wbWMoaW50IGNvdW50ZXIpCnsKIHVuc2lnbmVkIGxvbmcgbG93LCBoaWdo OwoKIGFzbSB2b2xhdGlsZSgicmRwbWMiIDogIj1hIiAobG93KSwgIj1kIiAoaGlnaCkgOiAiYyIg KGNvdW50ZXIpKTsKIGlmIChzdGF0aWNfa2V5X2ZhbHNlKCYoX190cmFjZXBvaW50X3JkcG1jKS5r ZXkpKQogIGRvX3RyYWNlX3JkcG1jKGNvdW50ZXIsICgobG93KSB8IChoaWdoKSA8PCAzMiksIDAp OwogcmV0dXJuICgobG93KSB8IChoaWdoKSA8PCAzMik7Cn0KCgoKCiMgMSAiLi9pbmNsdWRlL2xp bnV4L2Vycm5vLmgiIDEKCgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZXJybm8uaCIgMQoj IDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vZXJybm8uaCIgMQojIDIg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2Vycm5vLmgiIDIKIyA2ICIuL2luY2x1ZGUvbGludXgvZXJy bm8uaCIgMgojIDI2MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIgMgojIDI3MyAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9tc3IuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cm1zcih1bnNpZ25lZCBpbnQgbXNyLCB1 MzIgbG93LCB1MzIgaGlnaCkKewogbmF0aXZlX3dyaXRlX21zcihtc3IsIGxvdywgaGlnaCk7Cn0K CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgd3Jtc3JsKHVuc2lnbmVkIGludCBtc3IsIHU2NCB2YWwpCnsKIG5hdGl2ZV93cml0 ZV9tc3IobXNyLCAodTMyKSh2YWwgJiAweGZmZmZmZmZmVUxMKSwgKHUzMikodmFsID4+IDMyKSk7 Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgd3Jtc3Jfc2FmZSh1bnNpZ25lZCBpbnQgbXNyLCB1MzIgbG93LCB1MzIgaGlnaCkK ewogcmV0dXJuIG5hdGl2ZV93cml0ZV9tc3Jfc2FmZShtc3IsIGxvdywgaGlnaCk7Cn0KIyAzMDIg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXNyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByZG1zcmxfc2FmZSh1bnNpZ25lZCBp bnQgbXNyLCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCnsKIGludCBlcnI7CgogKnAgPSBuYXRpdmVf cmVhZF9tc3Jfc2FmZShtc3IsICZlcnIpOwogcmV0dXJuIGVycjsKfQojIDMyNCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9tc3IuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHdybXNybF9zYWZlKHUzMiBtc3IsIHU2NCB2YWwpCnsK IHJldHVybiB3cm1zcl9zYWZlKG1zciwgKHUzMil2YWwsICh1MzIpKHZhbCA+PiAzMikpOwp9CgoK CgoKc3RydWN0IG1zciAqbXNyc19hbGxvYyh2b2lkKTsKdm9pZCBtc3JzX2ZyZWUoc3RydWN0IG1z ciAqbXNycyk7CmludCBtc3Jfc2V0X2JpdCh1MzIgbXNyLCB1OCBiaXQpOwppbnQgbXNyX2NsZWFy X2JpdCh1MzIgbXNyLCB1OCBiaXQpOwoKCmludCByZG1zcl9vbl9jcHUodW5zaWduZWQgaW50IGNw dSwgdTMyIG1zcl9ubywgdTMyICpsLCB1MzIgKmgpOwppbnQgd3Jtc3Jfb25fY3B1KHVuc2lnbmVk IGludCBjcHUsIHUzMiBtc3Jfbm8sIHUzMiBsLCB1MzIgaCk7CmludCByZG1zcmxfb25fY3B1KHVu c2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHU2NCAqcSk7CmludCB3cm1zcmxfb25fY3B1KHVu c2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHU2NCBxKTsKdm9pZCByZG1zcl9vbl9jcHVzKGNv bnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCB1MzIgbXNyX25vLCBzdHJ1Y3QgbXNyICptc3JzKTsK dm9pZCB3cm1zcl9vbl9jcHVzKGNvbnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCB1MzIgbXNyX25v LCBzdHJ1Y3QgbXNyICptc3JzKTsKaW50IHJkbXNyX3NhZmVfb25fY3B1KHVuc2lnbmVkIGludCBj cHUsIHUzMiBtc3Jfbm8sIHUzMiAqbCwgdTMyICpoKTsKaW50IHdybXNyX3NhZmVfb25fY3B1KHVu c2lnbmVkIGludCBjcHUsIHUzMiBtc3Jfbm8sIHUzMiBsLCB1MzIgaCk7CmludCByZG1zcmxfc2Fm ZV9vbl9jcHUodW5zaWduZWQgaW50IGNwdSwgdTMyIG1zcl9ubywgdTY0ICpxKTsKaW50IHdybXNy bF9zYWZlX29uX2NwdSh1bnNpZ25lZCBpbnQgY3B1LCB1MzIgbXNyX25vLCB1NjQgcSk7CmludCBy ZG1zcl9zYWZlX3JlZ3Nfb25fY3B1KHVuc2lnbmVkIGludCBjcHUsIHUzMiByZWdzWzhdKTsKaW50 IHdybXNyX3NhZmVfcmVnc19vbl9jcHUodW5zaWduZWQgaW50IGNwdSwgdTMyIHJlZ3NbOF0pOwoj IDIzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCgoKIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3NwZWNpYWxfaW5zbnMuaCIgMQojIDE5ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3NwZWNpYWxfaW5zbnMuaCIKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19mb3JjZV9vcmRl cjsKCnZvaWQgbmF0aXZlX3dyaXRlX2NyMCh1bnNpZ25lZCBsb25nIHZhbCk7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBs b25nIG5hdGl2ZV9yZWFkX2NyMCh2b2lkKQp7CiB1bnNpZ25lZCBsb25nIHZhbDsKIGFzbSB2b2xh dGlsZSgibW92ICUlY3IwLCUwXG5cdCIgOiAiPXIiICh2YWwpLCAiPW0iIChfX2ZvcmNlX29yZGVy KSk7CiByZXR1cm4gdmFsOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5hdGl2ZV9yZWFkX2NyMih2b2lkKQp7 CiB1bnNpZ25lZCBsb25nIHZhbDsKIGFzbSB2b2xhdGlsZSgibW92ICUlY3IyLCUwXG5cdCIgOiAi PXIiICh2YWwpLCAiPW0iIChfX2ZvcmNlX29yZGVyKSk7CiByZXR1cm4gdmFsOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5h dGl2ZV93cml0ZV9jcjIodW5zaWduZWQgbG9uZyB2YWwpCnsKIGFzbSB2b2xhdGlsZSgibW92ICUw LCUlY3IyIjogOiAiciIgKHZhbCksICJtIiAoX19mb3JjZV9vcmRlcikpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBs b25nIF9fbmF0aXZlX3JlYWRfY3IzKHZvaWQpCnsKIHVuc2lnbmVkIGxvbmcgdmFsOwogYXNtIHZv bGF0aWxlKCJtb3YgJSVjcjMsJTBcblx0IiA6ICI9ciIgKHZhbCksICI9bSIgKF9fZm9yY2Vfb3Jk ZXIpKTsKIHJldHVybiB2YWw7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbmF0aXZlX3dyaXRlX2NyMyh1bnNpZ25lZCBsb25n IHZhbCkKewogYXNtIHZvbGF0aWxlKCJtb3YgJTAsJSVjcjMiOiA6ICJyIiAodmFsKSwgIm0iIChf X2ZvcmNlX29yZGVyKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbmF0aXZlX3JlYWRfY3I0KHZvaWQpCnsK IHVuc2lnbmVkIGxvbmcgdmFsOwojIDY5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NwZWNpYWxf aW5zbnMuaCIKIGFzbSB2b2xhdGlsZSgibW92ICUlY3I0LCUwXG5cdCIgOiAiPXIiICh2YWwpLCAi PW0iIChfX2ZvcmNlX29yZGVyKSk7CgogcmV0dXJuIHZhbDsKfQoKdm9pZCBuYXRpdmVfd3JpdGVf Y3I0KHVuc2lnbmVkIGxvbmcgdmFsKTsKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgcmRwa3J1KHZvaWQpCnsKIHUzMiBlY3ggPSAw OwogdTMyIGVkeCwgcGtydTsKCgoKCgogYXNtIHZvbGF0aWxlKCIuYnl0ZSAweDBmLDB4MDEsMHhl ZVxuXHQiCiAgICAgICA6ICI9YSIgKHBrcnUpLCAiPWQiIChlZHgpCiAgICAgICA6ICJjIiAoZWN4 KSk7CiByZXR1cm4gcGtydTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cnBrcnUodTMyIHBrcnUpCnsKIHUzMiBlY3ggPSAw LCBlZHggPSAwOwoKCgoKCiBhc20gdm9sYXRpbGUoIi5ieXRlIDB4MGYsMHgwMSwweGVmXG5cdCIK ICAgICAgIDogOiAiYSIgKHBrcnUpLCAiYyIoZWN4KSwgImQiKGVkeCkpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fd3Jp dGVfcGtydSh1MzIgcGtydSkKewoKCgoKIGlmIChwa3J1ID09IHJkcGtydSgpKQogIHJldHVybjsK CiB3cnBrcnUocGtydSk7Cn0KIyAxMjcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3BlY2lhbF9p bnNucy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIG5hdGl2ZV93YmludmQodm9pZCkKewogYXNtIHZvbGF0aWxlKCJ3YmludmQi OiA6IDoibWVtb3J5Iik7Cn0KCmV4dGVybiB2b2lkIG5hdGl2ZV9sb2FkX2dzX2luZGV4KHVuc2ln bmVkKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGxvbmcgX19yZWFkX2NyNCh2b2lkKQp7CiByZXR1cm4gbmF0aXZlX3Jl YWRfY3I0KCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHJlYWRfY3IwKHZvaWQpCnsKIHJldHVybiBu YXRpdmVfcmVhZF9jcjAoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9jcjAodW5zaWduZWQgbG9uZyB4KQp7CiBu YXRpdmVfd3JpdGVfY3IwKHgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIHJlYWRfY3IyKHZvaWQpCnsKIHJl dHVybiBuYXRpdmVfcmVhZF9jcjIoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9jcjIodW5zaWduZWQgbG9uZyB4 KQp7CiBuYXRpdmVfd3JpdGVfY3IyKHgpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3JlYWRfY3Iz KHZvaWQpCnsKIHJldHVybiBfX25hdGl2ZV9yZWFkX2NyMygpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX2NyMyh1 bnNpZ25lZCBsb25nIHgpCnsKIG5hdGl2ZV93cml0ZV9jcjMoeCk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX193cml0ZV9j cjQodW5zaWduZWQgbG9uZyB4KQp7CiBuYXRpdmVfd3JpdGVfY3I0KHgpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdiaW52 ZCh2b2lkKQp7CiBuYXRpdmVfd2JpbnZkKCk7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2FkX2dzX2luZGV4KHVuc2ln bmVkIHNlbGVjdG9yKQp7CiBuYXRpdmVfbG9hZF9nc19pbmRleChzZWxlY3Rvcik7Cn0KCgoKCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGNsZmx1c2godm9sYXRpbGUgdm9pZCAqX19wKQp7CiBhc20gdm9sYXRpbGUoImNsZmx1c2gg JTAiIDogIittIiAoKih2b2xhdGlsZSBjaGFyICopX19wKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY2xmbHVzaG9wdCh2 b2xhdGlsZSB2b2lkICpfX3ApCnsKIGFzbSBfX2lubGluZSB2b2xhdGlsZSAoIiMgQUxUOiBvbGRu c3RyXG4iICI2NjE6XG5cdCIgIi5ieXRlICIgIjB4M2UiICI7IGNsZmx1c2ggJVAwIiAiXG42NjI6 XG4iICIjIEFMVDogcGFkZGluZ1xuIiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIi ZiIgIiktKCIgIjY2MmItNjYxYiIgIikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIi MSIiZiIgIiktKCIgIjY2MmItNjYxYiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2Vj dGlvbiAuYWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9u ZyAiICI2NjQiIjEiImYgLSAuXG4iICIgLndvcmQgIiAiKCA5KjMyKzIzKSIgIlxuIiAiIC5ieXRl ICIgIjY2MyIiYi02NjFiIiAiXG4iICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAi XG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNl Y3Rpb24gLmFsdGluc3RyX3JlcGxhY2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVu dCAiICIxIiAiXG4iICI2NjQiIjEiIjpcblx0IiAiLmJ5dGUgMHg2NjsgY2xmbHVzaCAlUDAiICJc biIgIjY2NSIiMSIgIjpcbiIgIi5wb3BzZWN0aW9uXG4iIDogIittIiAoKih2b2xhdGlsZSBjaGFy ICopX19wKSA6ICJpIiAoMCkpCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBjbHdiKHZvbGF0aWxlIHZvaWQgKl9fcCkKewogdm9sYXRpbGUg c3RydWN0IHsgY2hhciB4WzY0XTsgfSAqcCA9IF9fcDsKCiBhc20gdm9sYXRpbGUoIiMgQUxUOiBv bGRpbnN0cjJcbiIgIjY2MTpcblx0IiAiLmJ5dGUgIiAiMHgzZSIgIjsgY2xmbHVzaCAoJVtwYXhd KSIgIlxuNjYyOlxuIiAiIyBBTFQ6IHBhZGRpbmcyXG4iICIuc2tpcCAtKCgiICIoKCIgIjY2NSIi MSIiZi0iIjY2NCIiMSIiZiIgIikgXiAoKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIpIF4g KCIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpICYgLSgtKCgiICI2NjUiIjEiImYtIiI2NjQi IjEiImYiICIpIDwgKCIgIjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIikpKSkpIiAiIC0gKCIgIjY2 MmItNjYxYiIgIikpID4gMCkgKiAiICIoIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIp IF4gKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSBeICgiICI2NjUiIjIiImYtIiI2NjQi IjIiImYiICIpKSAmIC0oLSgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKSA8ICgiICI2NjUi IjIiImYtIiI2NjQiIjIiImYiICIpKSkpKSIgIiAtICgiICI2NjJiLTY2MWIiICIpKSwgMHg5MFxu IiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAu bG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIiMSIiZiAtIC5cbiIgIiAud29yZCAiICIo IDkqMzIrMjMpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIgIiAuYnl0ZSAiICI2 NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYyYiIgIlxuIiAi IC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAiNjY0IiIyIiJmIC0gLlxuIiAiIC53b3JkICIg IiggOSozMisyNCkiICJcbiIgIiAuYnl0ZSAiICI2NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIg IjY2NSIiMiIiZi0iIjY2NCIiMiIiZiIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4i ICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJh eFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAiMSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgIi5i eXRlIDB4NjY7IGNsZmx1c2ggKCVbcGF4XSkiICJcbiIgIjY2NSIiMSIgIjpcbiIgIiMgQUxUOiBy ZXBsYWNlbWVudCAiICIyIiAiXG4iICI2NjQiIjIiIjpcblx0IiAiLmJ5dGUgMHg2NiwgMHgwZiwg MHhhZSwgMHgzMCIgIlxuIiAiNjY1IiIyIiAiOlxuIiAiLnBvcHNlY3Rpb25cbiIKCgoKCgogIDog W3BdICIrbSIgKCpwKQogIDogW3BheF0gImEiIChwKSk7Cn0KIyAyNiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L3R5 cGVzLmgiIDEKIyAxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUvdHlwZXMuaCIKc3RydWN0 IGZyZWdzX3N0YXRlIHsKIHUzMiBjd2Q7CiB1MzIgc3dkOwogdTMyIHR3ZDsKIHUzMiBmaXA7CiB1 MzIgZmNzOwogdTMyIGZvbzsKIHUzMiBmb3M7CgoKIHUzMiBzdF9zcGFjZVsyMF07CgoKIHUzMiBz dGF0dXM7Cn07CgoKCgoKCgpzdHJ1Y3QgZnhyZWdzX3N0YXRlIHsKIHUxNiBjd2Q7CiB1MTYgc3dk OwogdTE2IHR3ZDsKIHUxNiBmb3A7CiB1bmlvbiB7CiAgc3RydWN0IHsKICAgdTY0IHJpcDsKICAg dTY0IHJkcDsKICB9OwogIHN0cnVjdCB7CiAgIHUzMiBmaXA7CiAgIHUzMiBmY3M7CiAgIHUzMiBm b287CiAgIHUzMiBmb3M7CiAgfTsKIH07CiB1MzIgbXhjc3I7CiB1MzIgbXhjc3JfbWFzazsKCgog dTMyIHN0X3NwYWNlWzMyXTsKCgogdTMyIHhtbV9zcGFjZVs2NF07CgogdTMyIHBhZGRpbmdbMTJd OwoKIHVuaW9uIHsKICB1MzIgcGFkZGluZzFbMTJdOwogIHUzMiBzd19yZXNlcnZlZFsxMl07CiB9 OwoKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOwojIDc5ICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL2ZwdS90eXBlcy5oIgpzdHJ1Y3Qgc3dyZWdzX3N0YXRlIHsKIHUzMiBjd2Q7CiB1MzIg c3dkOwogdTMyIHR3ZDsKIHUzMiBmaXA7CiB1MzIgZmNzOwogdTMyIGZvbzsKIHUzMiBmb3M7Cgog dTMyIHN0X3NwYWNlWzIwXTsKIHU4IGZ0b3A7CiB1OCBjaGFuZ2VkOwogdTggbG9va2FoZWFkOwog dTggbm9fdXBkYXRlOwogdTggcm07CiB1OCBhbGltaXQ7CiBzdHJ1Y3QgbWF0aF9lbXVfaW5mbyAq aW5mbzsKIHUzMiBlbnRyeV9laXA7Cn07CgoKCgplbnVtIHhmZWF0dXJlIHsKIFhGRUFUVVJFX0ZQ LAogWEZFQVRVUkVfU1NFLAoKCgoKIFhGRUFUVVJFX1lNTSwKIFhGRUFUVVJFX0JORFJFR1MsCiBY RkVBVFVSRV9CTkRDU1IsCiBYRkVBVFVSRV9PUE1BU0ssCiBYRkVBVFVSRV9aTU1fSGkyNTYsCiBY RkVBVFVSRV9IaTE2X1pNTSwKIFhGRUFUVVJFX1BUX1VOSU1QTEVNRU5URURfU09fRkFSLAogWEZF QVRVUkVfUEtSVSwKCiBYRkVBVFVSRV9NQVgsCn07CiMgMTM5ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2ZwdS90eXBlcy5oIgpzdHJ1Y3QgcmVnXzEyOF9iaXQgewogdTggcmVnYnl0ZXNbMTI4Lzhd Owp9OwpzdHJ1Y3QgcmVnXzI1Nl9iaXQgewogdTggcmVnYnl0ZXNbMjU2LzhdOwp9OwpzdHJ1Y3Qg cmVnXzUxMl9iaXQgewogdTggcmVnYnl0ZXNbNTEyLzhdOwp9OwojIDE1OSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9mcHUvdHlwZXMuaCIKc3RydWN0IHltbWhfc3RydWN0IHsKIHN0cnVjdCByZWdf MTI4X2JpdCBoaV95bW1bMTZdOwp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCgoKc3Ry dWN0IG1weF9ibmRyZWcgewogdTY0IGxvd2VyX2JvdW5kOwogdTY0IHVwcGVyX2JvdW5kOwp9IF9f YXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCgoKc3RydWN0IG1weF9ibmRyZWdfc3RhdGUgewog c3RydWN0IG1weF9ibmRyZWcgYm5kcmVnWzRdOwp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18p KTsKCgoKCgoKc3RydWN0IG1weF9ibmRjc3IgewogdTY0IGJuZGNmZ3U7CiB1NjQgYm5kc3RhdHVz Owp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCgoKCnN0cnVjdCBtcHhfYm5kY3NyX3N0 YXRlIHsKIHVuaW9uIHsKICBzdHJ1Y3QgbXB4X2JuZGNzciBibmRjc3I7CiAgdTggcGFkX3RvXzY0 X2J5dGVzWzY0XTsKIH07Cn0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoKCgoKCgoKc3Ry dWN0IGF2eF81MTJfb3BtYXNrX3N0YXRlIHsKIHU2NCBvcG1hc2tfcmVnWzhdOwp9IF9fYXR0cmli dXRlX18oKF9fcGFja2VkX18pKTsKCgoKCgoKc3RydWN0IGF2eF81MTJfem1tX3VwcGVyc19zdGF0 ZSB7CiBzdHJ1Y3QgcmVnXzI1Nl9iaXQgem1tX3VwcGVyWzE2XTsKfSBfX2F0dHJpYnV0ZV9fKChf X3BhY2tlZF9fKSk7CgoKCgoKc3RydWN0IGF2eF81MTJfaGkxNl9zdGF0ZSB7CiBzdHJ1Y3QgcmVn XzUxMl9iaXQgaGkxNl96bW1bMTZdOwp9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCgoK CgpzdHJ1Y3QgcGtydV9zdGF0ZSB7CiB1MzIgcGtydTsKIHUzMiBwYWQ7Cn0gX19hdHRyaWJ1dGVf XygoX19wYWNrZWRfXykpOwoKc3RydWN0IHhzdGF0ZV9oZWFkZXIgewogdTY0IHhmZWF0dXJlczsK IHU2NCB4Y29tcF9idjsKIHU2NCByZXNlcnZlZFs2XTsKfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQp KTsKIyAyNTMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L3R5cGVzLmgiCnN0cnVjdCB4cmVn c19zdGF0ZSB7CiBzdHJ1Y3QgZnhyZWdzX3N0YXRlIGkzODc7CiBzdHJ1Y3QgeHN0YXRlX2hlYWRl ciBoZWFkZXI7CiB1OCBleHRlbmRlZF9zdGF0ZV9hcmVhWzBdOwp9IF9fYXR0cmlidXRlX18gKChw YWNrZWQsIGFsaWduZWQgKDY0KSkpOwojIDI2OCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9mcHUv dHlwZXMuaCIKdW5pb24gZnByZWdzX3N0YXRlIHsKIHN0cnVjdCBmcmVnc19zdGF0ZSBmc2F2ZTsK IHN0cnVjdCBmeHJlZ3Nfc3RhdGUgZnhzYXZlOwogc3RydWN0IHN3cmVnc19zdGF0ZSBzb2Z0Owog c3RydWN0IHhyZWdzX3N0YXRlIHhzYXZlOwogdTggX19wYWRkaW5nWygoMVVMKSA8PCAxMildOwp9 OwoKCgoKCgpzdHJ1Y3QgZnB1IHsKIyAyOTQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L3R5 cGVzLmgiCiB1bnNpZ25lZCBpbnQgbGFzdF9jcHU7CgoKCgoKCiB1bnNpZ25lZCBsb25nIGF2eDUx Ml90aW1lc3RhbXA7CiMgMzEyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ZwdS90eXBlcy5oIgog dW5pb24gZnByZWdzX3N0YXRlIHN0YXRlOwoKCgoKfTsKIyAyNyAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdW53aW5kX2hp bnRzLmgiIDEKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL29yY190eXBlcy5oIiAxCiMg NzMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vb3JjX3R5cGVzLmgiCnN0cnVjdCBvcmNfZW50cnkg ewogczE2IHNwX29mZnNldDsKIHMxNiBicF9vZmZzZXQ7CiB1bnNpZ25lZCBzcF9yZWc6NDsKIHVu c2lnbmVkIGJwX3JlZzo0OwogdW5zaWduZWQgdHlwZToyOwogdW5zaWduZWQgZW5kOjE7Cn0gX19h dHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoKCgoKCgoKc3RydWN0IHVud2luZF9oaW50IHsKIHUz MiBpcDsKIHMxNiBzcF9vZmZzZXQ7CiB1OCBzcF9yZWc7CiB1OCB0eXBlOwogdTggZW5kOwp9Owoj IDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdW53aW5kX2hpbnRzLmgiIDIKIyAyOCAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vdm14ZmVhdHVyZXMuaCIgMQojIDI5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIiAyCgojIDEgIi4vaW5jbHVkZS9saW51eC9wZXJzb25hbGl0eS5oIiAxCgoKCgojIDEgIi4v aW5jbHVkZS91YXBpL2xpbnV4L3BlcnNvbmFsaXR5LmgiIDEKIyAxMSAiLi9pbmNsdWRlL3VhcGkv bGludXgvcGVyc29uYWxpdHkuaCIKZW51bSB7CiBVTkFNRTI2ID0gMHgwMDIwMDAwLAogQUREUl9O T19SQU5ET01JWkUgPSAweDAwNDAwMDAsCiBGRFBJQ19GVU5DUFRSUyA9IDB4MDA4MDAwMCwKCgog TU1BUF9QQUdFX1pFUk8gPSAweDAxMDAwMDAsCiBBRERSX0NPTVBBVF9MQVlPVVQgPSAweDAyMDAw MDAsCiBSRUFEX0lNUExJRVNfRVhFQyA9IDB4MDQwMDAwMCwKIEFERFJfTElNSVRfMzJCSVQgPSAw eDA4MDAwMDAsCiBTSE9SVF9JTk9ERSA9IDB4MTAwMDAwMCwKIFdIT0xFX1NFQ09ORFMgPSAweDIw MDAwMDAsCiBTVElDS1lfVElNRU9VVFMgPSAweDQwMDAwMDAsCiBBRERSX0xJTUlUXzNHQiA9IDB4 ODAwMDAwMCwKfTsKIyA0MiAiLi9pbmNsdWRlL3VhcGkvbGludXgvcGVyc29uYWxpdHkuaCIKZW51 bSB7CiBQRVJfTElOVVggPSAweDAwMDAsCiBQRVJfTElOVVhfMzJCSVQgPSAweDAwMDAgfCBBRERS X0xJTUlUXzMyQklULAogUEVSX0xJTlVYX0ZEUElDID0gMHgwMDAwIHwgRkRQSUNfRlVOQ1BUUlMs CiBQRVJfU1ZSNCA9IDB4MDAwMSB8IFNUSUNLWV9USU1FT1VUUyB8IE1NQVBfUEFHRV9aRVJPLAog UEVSX1NWUjMgPSAweDAwMDIgfCBTVElDS1lfVElNRU9VVFMgfCBTSE9SVF9JTk9ERSwKIFBFUl9T Q09TVlIzID0gMHgwMDAzIHwgU1RJQ0tZX1RJTUVPVVRTIHwKICAgICAgV0hPTEVfU0VDT05EUyB8 IFNIT1JUX0lOT0RFLAogUEVSX09TUjUgPSAweDAwMDMgfCBTVElDS1lfVElNRU9VVFMgfCBXSE9M RV9TRUNPTkRTLAogUEVSX1dZU0VWMzg2ID0gMHgwMDA0IHwgU1RJQ0tZX1RJTUVPVVRTIHwgU0hP UlRfSU5PREUsCiBQRVJfSVNDUjQgPSAweDAwMDUgfCBTVElDS1lfVElNRU9VVFMsCiBQRVJfQlNE ID0gMHgwMDA2LAogUEVSX1NVTk9TID0gMHgwMDA2IHwgU1RJQ0tZX1RJTUVPVVRTLAogUEVSX1hF TklYID0gMHgwMDA3IHwgU1RJQ0tZX1RJTUVPVVRTIHwgU0hPUlRfSU5PREUsCiBQRVJfTElOVVgz MiA9IDB4MDAwOCwKIFBFUl9MSU5VWDMyXzNHQiA9IDB4MDAwOCB8IEFERFJfTElNSVRfM0dCLAog UEVSX0lSSVgzMiA9IDB4MDAwOSB8IFNUSUNLWV9USU1FT1VUUywKIFBFUl9JUklYTjMyID0gMHgw MDBhIHwgU1RJQ0tZX1RJTUVPVVRTLAogUEVSX0lSSVg2NCA9IDB4MDAwYiB8IFNUSUNLWV9USU1F T1VUUywKIFBFUl9SSVNDT1MgPSAweDAwMGMsCiBQRVJfU09MQVJJUyA9IDB4MDAwZCB8IFNUSUNL WV9USU1FT1VUUywKIFBFUl9VVzcgPSAweDAwMGUgfCBTVElDS1lfVElNRU9VVFMgfCBNTUFQX1BB R0VfWkVSTywKIFBFUl9PU0Y0ID0gMHgwMDBmLAogUEVSX0hQVVggPSAweDAwMTAsCiBQRVJfTUFT SyA9IDB4MDBmZiwKfTsKIyA2ICIuL2luY2x1ZGUvbGludXgvcGVyc29uYWxpdHkuaCIgMgojIDMx ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIiAyCgoKCiMgMSAiLi9pbmNsdWRl L2xpbnV4L2Vyci5oIiAxCgoKCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQv dWFwaS9hc20vZXJybm8uaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC9lcnIuaCIgMgojIDI0ICIu L2luY2x1ZGUvbGludXgvZXJyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkgRVJSX1BUUihsb25nIGVycm9yKQp7CiByZXR1cm4gKHZvaWQgKikgZXJyb3I7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGxvbmcgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIFBUUl9FUlIo IGNvbnN0IHZvaWQgKnB0cikKewogcmV0dXJuIChsb25nKSBwdHI7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIElTX0VSUiggY29uc3Qgdm9pZCAqcHRyKQp7 CiByZXR1cm4gX19idWlsdGluX2V4cGVjdCghISgodW5zaWduZWQgbG9uZykodm9pZCAqKSgodW5z aWduZWQgbG9uZylwdHIpID49ICh1bnNpZ25lZCBsb25nKS00MDk1KSwgMCk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIElTX0VSUl9PUl9OVUxMKCBjb25z dCB2b2lkICpwdHIpCnsKIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KCEhKCFwdHIpLCAwKSB8fCBf X2J1aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBsb25nKSh2b2lkICopKCh1bnNpZ25lZCBsb25n KXB0cikgPj0gKHVuc2lnbmVkIGxvbmcpLTQwOTUpLCAwKTsKfQojIDUxICIuL2luY2x1ZGUvbGlu dXgvZXJyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg RVJSX0NBU1QoIGNvbnN0IHZvaWQgKnB0cikKewoKIHJldHVybiAodm9pZCAqKSBwdHI7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgUFRSX0VSUl9PUl9aRVJP KCBjb25zdCB2b2lkICpwdHIpCnsKIGlmIChJU19FUlIocHRyKSkKICByZXR1cm4gUFRSX0VSUihw dHIpOwogZWxzZQogIHJldHVybiAwOwp9CiMgMzUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJv Y2Vzc29yLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvaXJxZmxhZ3MuaCIgMQojIDE2ICIuL2lu Y2x1ZGUvbGludXgvaXJxZmxhZ3MuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2lycWZs YWdzLmgiIDEKIyAxOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pcnFmbGFncy5oIgpleHRlcm4g aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25l ZCBsb25nIG5hdGl2ZV9zYXZlX2ZsKHZvaWQpOwpleHRlcm4gaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5hdGl2ZV9zYXZlX2Zs KHZvaWQpCnsKIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgoKCgoKCiBhc20gdm9sYXRpbGUoIiMgX19y YXdfc2F2ZV9mbGFnc1xuXHQiCiAgICAgICAicHVzaGYgOyBwb3AgJTAiCiAgICAgICA6ICI9cm0i IChmbGFncykKICAgICAgIDoKICAgICAgIDogIm1lbW9yeSIpOwoKIHJldHVybiBmbGFnczsKfQoK ZXh0ZXJuIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBuYXRpdmVfcmVzdG9yZV9mbCh1bnNpZ25lZCBsb25nIGZsYWdzKTsKZXh0ZXJuIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVf cmVzdG9yZV9mbCh1bnNpZ25lZCBsb25nIGZsYWdzKQp7CiBhc20gdm9sYXRpbGUoInB1c2ggJTAg OyBwb3BmIgogICAgICAgOgogICAgICAgOiJnIiAoZmxhZ3MpCiAgICAgICA6Im1lbW9yeSIsICJj YyIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIG5hdGl2ZV9pcnFfZGlzYWJsZSh2b2lkKQp7CiBhc20gdm9sYXRpbGUoImNs aSI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBuYXRpdmVfaXJxX2VuYWJsZSh2b2lkKQp7CiBhc20g dm9sYXRpbGUoInN0aSI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9u X18oIi5jcHVpZGxlLnRleHQiKSkpIHZvaWQgbmF0aXZlX3NhZmVfaGFsdCh2b2lkKQp7CiBtZHNf aWRsZV9jbGVhcl9jcHVfYnVmZmVycygpOwogYXNtIHZvbGF0aWxlKCJzdGk7IGhsdCI6IDogOiJt ZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5jcHVpZGxlLnRleHQiKSkp IHZvaWQgbmF0aXZlX2hhbHQodm9pZCkKewogbWRzX2lkbGVfY2xlYXJfY3B1X2J1ZmZlcnMoKTsK IGFzbSB2b2xhdGlsZSgiaGx0IjogOiA6Im1lbW9yeSIpOwp9CiMgNzcgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vaXJxZmxhZ3MuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHVuc2lnbmVkIGxvbmcgYXJjaF9sb2NhbF9zYXZlX2ZsYWdzKHZvaWQpCnsKIHJldHVybiBu YXRpdmVfc2F2ZV9mbCgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBhcmNoX2xvY2FsX2lycV9yZXN0b3JlKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCnsKIG5h dGl2ZV9yZXN0b3JlX2ZsKGZsYWdzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYXJjaF9sb2NhbF9pcnFfZGlzYWJsZSh2b2lkKQp7CiBuYXRpdmVfaXJx X2Rpc2FibGUoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgYXJjaF9sb2NhbF9pcnFfZW5hYmxlKHZvaWQpCnsKIG5hdGl2ZV9pcnFfZW5hYmxlKCk7Cn0K CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmNwdWlkbGUudGV4dCIpKSkgdm9pZCBh cmNoX3NhZmVfaGFsdCh2b2lkKQp7CiBuYXRpdmVfc2FmZV9oYWx0KCk7Cn0KCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX3NlY3Rpb25fXygiLmNwdWlkbGUudGV4dCIpKSkgdm9pZCBoYWx0KHZvaWQpCnsK IG5hdGl2ZV9oYWx0KCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGFyY2hfbG9jYWxfaXJxX3NhdmUodm9pZCkKewogdW5zaWduZWQg bG9uZyBmbGFncyA9IGFyY2hfbG9jYWxfc2F2ZV9mbGFncygpOwogYXJjaF9sb2NhbF9pcnFfZGlz YWJsZSgpOwogcmV0dXJuIGZsYWdzOwp9CiMgMTYyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ly cWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCBhcmNoX2lycXNfZGlzYWJsZWRfZmxhZ3ModW5zaWduZWQgbG9uZyBmbGFn cykKewogcmV0dXJuICEoZmxhZ3MgJiAoKCgxVUwpKSA8PCAoOSkpKTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGFyY2hfaXJx c19kaXNhYmxlZCh2b2lkKQp7CiB1bnNpZ25lZCBsb25nIGZsYWdzID0gYXJjaF9sb2NhbF9zYXZl X2ZsYWdzKCk7CgogcmV0dXJuIGFyY2hfaXJxc19kaXNhYmxlZF9mbGFncyhmbGFncyk7Cn0KIyAx NyAiLi9pbmNsdWRlL2xpbnV4L2lycWZsYWdzLmgiIDIKIyAyNSAiLi9pbmNsdWRlL2xpbnV4L2ly cWZsYWdzLmgiCiAgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB0cmFjZV9zb2Z0aXJxc19vbih1bnNpZ25lZCBsb25nIGlwKSB7IH0K ICBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHRyYWNlX3NvZnRpcnFzX29mZih1bnNpZ25lZCBsb25nIGlwKSB7IH0KICBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxv Y2tkZXBfaGFyZGlycXNfb24odW5zaWduZWQgbG9uZyBpcCkgeyB9CiAgc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NrZGVwX2hh cmRpcnFzX29mZih1bnNpZ25lZCBsb25nIGlwKSB7IH0KIyAzNiAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9wcm9jZXNzb3IuaCIgMgojIDYxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nv ci5oIgplbnVtIHRsYl9pbmZvcyB7CiBFTlRSSUVTLAogTlJfSU5GTwp9OwoKZXh0ZXJuIHUxNiBf X2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKSB0bGJfbGxp XzRrW05SX0lORk9dOwpleHRlcm4gdTE2IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0 YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGlfMm1bTlJfSU5GT107CmV4dGVybiB1MTYgX19hdHRy aWJ1dGVfXygoX19zZWN0aW9uX18oIi5kYXRhLi5yZWFkX21vc3RseSIpKSkgdGxiX2xsaV80bVtO Ul9JTkZPXTsKZXh0ZXJuIHUxNiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJl YWRfbW9zdGx5IikpKSB0bGJfbGxkXzRrW05SX0lORk9dOwpleHRlcm4gdTE2IF9fYXR0cmlidXRl X18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHRsYl9sbGRfMm1bTlJfSU5G T107CmV4dGVybiB1MTYgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5kYXRhLi5yZWFkX21v c3RseSIpKSkgdGxiX2xsZF80bVtOUl9JTkZPXTsKZXh0ZXJuIHUxNiBfX2F0dHJpYnV0ZV9fKChf X3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKSB0bGJfbGxkXzFnW05SX0lORk9dOwoK CgoKCgoKc3RydWN0IGNwdWluZm9feDg2IHsKIF9fdTggeDg2OwogX191OCB4ODZfdmVuZG9yOwog X191OCB4ODZfbW9kZWw7CiBfX3U4IHg4Nl9zdGVwcGluZzsKCgogaW50IHg4Nl90bGJzaXplOwoK CiBfX3UzMiB2bXhfY2FwYWJpbGl0eVszXTsKCiBfX3U4IHg4Nl92aXJ0X2JpdHM7CiBfX3U4IHg4 Nl9waHlzX2JpdHM7CgogX191OCB4ODZfY29yZWlkX2JpdHM7CiBfX3U4IGN1X2lkOwoKIF9fdTMy IGV4dGVuZGVkX2NwdWlkX2xldmVsOwoKIGludCBjcHVpZF9sZXZlbDsKCgoKCgogdW5pb24gewog IF9fdTMyIHg4Nl9jYXBhYmlsaXR5WzE5ICsgMV07CiAgdW5zaWduZWQgbG9uZyB4ODZfY2FwYWJp bGl0eV9hbGlnbm1lbnQ7CiB9OwogY2hhciB4ODZfdmVuZG9yX2lkWzE2XTsKIGNoYXIgeDg2X21v ZGVsX2lkWzY0XTsKCiB1bnNpZ25lZCBpbnQgeDg2X2NhY2hlX3NpemU7CiBpbnQgeDg2X2NhY2hl X2FsaWdubWVudDsKCiBpbnQgeDg2X2NhY2hlX21heF9ybWlkOwogaW50IHg4Nl9jYWNoZV9vY2Nf c2NhbGU7CiBpbnQgeDg2X3Bvd2VyOwogdW5zaWduZWQgbG9uZyBsb29wc19wZXJfamlmZnk7Cgog dTE2IHg4Nl9tYXhfY29yZXM7CiB1MTYgYXBpY2lkOwogdTE2IGluaXRpYWxfYXBpY2lkOwogdTE2 IHg4Nl9jbGZsdXNoX3NpemU7CgogdTE2IGJvb3RlZF9jb3JlczsKCiB1MTYgcGh5c19wcm9jX2lk OwoKIHUxNiBsb2dpY2FsX3Byb2NfaWQ7CgogdTE2IGNwdV9jb3JlX2lkOwogdTE2IGNwdV9kaWVf aWQ7CiB1MTYgbG9naWNhbF9kaWVfaWQ7CgogdTE2IGNwdV9pbmRleDsKIHUzMiBtaWNyb2NvZGU7 CgogdTggeDg2X2NhY2hlX2JpdHM7CiB1bnNpZ25lZCBpbml0aWFsaXplZCA6IDE7Cn0gX19hdHRy aWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykpOwoKc3RydWN0IGNwdWlkX3JlZ3MgewogdTMy IGVheCwgZWJ4LCBlY3gsIGVkeDsKfTsKCmVudW0gY3B1aWRfcmVnc19pZHggewogQ1BVSURfRUFY ID0gMCwKIENQVUlEX0VCWCwKIENQVUlEX0VDWCwKIENQVUlEX0VEWCwKfTsKIyAxNzAgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYg Ym9vdF9jcHVfZGF0YTsKZXh0ZXJuIHN0cnVjdCBjcHVpbmZvX3g4NiBuZXdfY3B1X2RhdGE7Cgpl eHRlcm4gX191MzIgY3B1X2NhcHNfY2xlYXJlZFsxOSArIDFdOwpleHRlcm4gX191MzIgY3B1X2Nh cHNfc2V0WzE5ICsgMV07CgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5w ZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVvZl9fKHN0cnVjdCBjcHVpbmZvX3g4Nikg Y3B1X2luZm87CgoKCgoKCmV4dGVybiBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgY3B1aW5m b19vcDsKCgoKZXh0ZXJuIHZvaWQgY3B1X2RldGVjdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgbG9uZyBsb25nIGwxdGZfcGZuX2xpbWl0KHZvaWQpCnsKIHJldHVybiAoKCgoMVVM TCkpKSA8PCAoYm9vdF9jcHVfZGF0YS54ODZfY2FjaGVfYml0cyAtIDEgLSAxMikpOwp9CgpleHRl cm4gdm9pZCBlYXJseV9jcHVfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgaWRlbnRpZnlfYm9vdF9j cHUodm9pZCk7CmV4dGVybiB2b2lkIGlkZW50aWZ5X3NlY29uZGFyeV9jcHUoc3RydWN0IGNwdWlu Zm9feDg2ICopOwpleHRlcm4gdm9pZCBwcmludF9jcHVfaW5mbyhzdHJ1Y3QgY3B1aW5mb194ODYg Kik7CnZvaWQgcHJpbnRfY3B1X21zcihzdHJ1Y3QgY3B1aW5mb194ODYgKik7CgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaGF2 ZV9jcHVpZF9wKHZvaWQpCnsKIHJldHVybiAxOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9jcHVpZCh1bnNpZ25l ZCBpbnQgKmVheCwgdW5zaWduZWQgaW50ICplYngsCiAgICB1bnNpZ25lZCBpbnQgKmVjeCwgdW5z aWduZWQgaW50ICplZHgpCnsKCiBhc20gdm9sYXRpbGUoImNwdWlkIgogICAgIDogIj1hIiAoKmVh eCksCiAgICAgICAiPWIiICgqZWJ4KSwKICAgICAgICI9YyIgKCplY3gpLAogICAgICAgIj1kIiAo KmVkeCkKICAgICA6ICIwIiAoKmVheCksICIyIiAoKmVjeCkKICAgICA6ICJtZW1vcnkiKTsKfQoj IDIzNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IG5h dGl2ZV9jcHVpZF9lYXgodW5zaWduZWQgaW50IG9wKSB7IHVuc2lnbmVkIGludCBlYXggPSBvcCwg ZWJ4LCBlY3ggPSAwLCBlZHg7IG5hdGl2ZV9jcHVpZCgmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsg cmV0dXJuIGVheDsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgbmF0aXZlX2NwdWlkX2VieCh1bnNpZ25lZCBpbnQg b3ApIHsgdW5zaWduZWQgaW50IGVheCA9IG9wLCBlYngsIGVjeCA9IDAsIGVkeDsgbmF0aXZlX2Nw dWlkKCZlYXgsICZlYngsICZlY3gsICZlZHgpOyByZXR1cm4gZWJ4OyB9CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBu YXRpdmVfY3B1aWRfZWN4KHVuc2lnbmVkIGludCBvcCkgeyB1bnNpZ25lZCBpbnQgZWF4ID0gb3As IGVieCwgZWN4ID0gMCwgZWR4OyBuYXRpdmVfY3B1aWQoJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7 IHJldHVybiBlY3g7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IG5hdGl2ZV9jcHVpZF9lZHgodW5zaWduZWQgaW50 IG9wKSB7IHVuc2lnbmVkIGludCBlYXggPSBvcCwgZWJ4LCBlY3ggPSAwLCBlZHg7IG5hdGl2ZV9j cHVpZCgmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsgcmV0dXJuIGVkeDsgfQoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQg bG9uZyByZWFkX2NyM19wYSh2b2lkKQp7CiByZXR1cm4gX19yZWFkX2NyMygpICYgKDB4N0ZGRkZG RkZGRkZGRjAwMHVsbCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgbmF0aXZlX3JlYWRfY3IzX3BhKHZvaWQp CnsKIHJldHVybiBfX25hdGl2ZV9yZWFkX2NyMygpICYgKDB4N0ZGRkZGRkZGRkZGRjAwMHVsbCk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgbG9hZF9jcjMocGdkX3QgKnBnZGlyKQp7CiB3cml0ZV9jcjMoKF9fcGh5c19hZGRy X25vZGVidWcoKHVuc2lnbmVkIGxvbmcpKHBnZGlyKSkgfCAwVUxMKSk7Cn0KIyAzMTIgIi4vYXJj aC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0cnVjdCB4ODZfaHdfdHNzIHsKIHUzMiBy ZXNlcnZlZDE7CiB1NjQgc3AwOwoKCgoKCiB1NjQgc3AxOwoKCgoKCgogdTY0IHNwMjsKCiB1NjQg cmVzZXJ2ZWQyOwogdTY0IGlzdFs3XTsKIHUzMiByZXNlcnZlZDM7CiB1MzIgcmVzZXJ2ZWQ0Owog dTE2IHJlc2VydmVkNTsKIHUxNiBpb19iaXRtYXBfYmFzZTsKCn0gX19hdHRyaWJ1dGVfXygocGFj a2VkKSk7CiMgMzcwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3Qg ZW50cnlfc3RhY2sgewogdW5zaWduZWQgbG9uZyB3b3Jkc1s2NF07Cn07CgpzdHJ1Y3QgZW50cnlf c3RhY2tfcGFnZSB7CiBzdHJ1Y3QgZW50cnlfc3RhY2sgc3RhY2s7Cn0gX19hdHRyaWJ1dGVfXygo X19hbGlnbmVkX18oKCgxVUwpIDw8IDEyKSkpKTsKCgoKCnN0cnVjdCB4ODZfaW9fYml0bWFwIHsK CiB1NjQgcHJldl9zZXF1ZW5jZTsKIyAzOTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vz c29yLmgiCiB1bnNpZ25lZCBpbnQgcHJldl9tYXg7CgoKCgoKCgogdW5zaWduZWQgbG9uZyBiaXRt YXBbKCg2NTUzNiAvIDgpIC8gc2l6ZW9mKGxvbmcpKSArIDFdOwoKCgoKCiB1bnNpZ25lZCBsb25n IG1hcGFsbFsoKDY1NTM2IC8gOCkgLyBzaXplb2YobG9uZykpICsgMV07Cn07CgpzdHJ1Y3QgdHNz X3N0cnVjdCB7CgoKCgoKIHN0cnVjdCB4ODZfaHdfdHNzIHg4Nl90c3M7Cgogc3RydWN0IHg4Nl9p b19iaXRtYXAgaW9fYml0bWFwOwp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgoMVVMKSA8 PCAxMikpKSk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIg Ii4ucGFnZV9hbGlnbmVkIikpKSBfX3R5cGVvZl9fKHN0cnVjdCB0c3Nfc3RydWN0KSBjcHVfdHNz X3J3IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgoMVVMKSA8PCAxMikpKSk7CgoKc3RydWN0 IGlycV9zdGFjayB7CiBjaGFyIHN0YWNrWygoKDFVTCkgPDwgMTIpIDw8ICgyICsgMCkpXTsKfSBf X2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoKCgxVUwpIDw8IDEyKSA8PCAoMiArIDApKSkpKTsK CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiIikpKSBfX3R5 cGVvZl9fKHN0cnVjdCBpcnFfc3RhY2sgKikgaGFyZGlycV9zdGFja19wdHI7CiMgNDM3ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdHJ1Y3QgZml4ZWRfcGVyY3B1X2RhdGEg ewoKCgoKCiBjaGFyIGdzX2Jhc2VbNDBdOwogdW5zaWduZWQgbG9uZyBzdGFja19jYW5hcnk7Cn07 CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4uZmlyc3Qi KSkpIF9fdHlwZW9mX18oc3RydWN0IGZpeGVkX3BlcmNwdV9kYXRhKSBmaXhlZF9wZXJjcHVfZGF0 YSBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7CmV4dGVybiB0eXBlb2Yo Zml4ZWRfcGVyY3B1X2RhdGEpIGluaXRfcGVyX2NwdV9fZml4ZWRfcGVyY3B1X2RhdGE7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNp Z25lZCBsb25nIGNwdV9rZXJuZWxtb2RlX2dzX2Jhc2UoaW50IGNwdSkKewogcmV0dXJuICh1bnNp Z25lZCBsb25nKSgqKHsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgm KGZpeGVkX3BlcmNwdV9kYXRhLmdzX2Jhc2UpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3Zw cF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgi IiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihmaXhlZF9wZXJjcHVfZGF0YS5nc19i YXNlKSkpKSAqKSgoJihmaXhlZF9wZXJjcHVfZGF0YS5nc19iYXNlKSkpKSk7ICh0eXBlb2YoKHR5 cGVvZigqKCgmKGZpeGVkX3BlcmNwdV9kYXRhLmdzX2Jhc2UpKSkpICopKCgmKGZpeGVkX3BlcmNw dV9kYXRhLmdzX2Jhc2UpKSkpKSAoX19wdHIgKyAoKChfX3Blcl9jcHVfb2Zmc2V0WyhjcHUpXSkp KSk7IH0pOyB9KSk7Cn0KCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVy Y3B1IiAiIikpKSBfX3R5cGVvZl9fKHVuc2lnbmVkIGludCkgaXJxX2NvdW50OwpleHRlcm4gdm9p ZCBpZ25vcmVfc3lzcmV0KHZvaWQpOwoKCgp2b2lkIHNhdmVfZnNnc19mb3Jfa3ZtKHZvaWQpOwoj IDQ4MCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIKZXh0ZXJuIHVuc2lnbmVk IGludCBmcHVfa2VybmVsX3hzdGF0ZV9zaXplOwpleHRlcm4gdW5zaWduZWQgaW50IGZwdV91c2Vy X3hzdGF0ZV9zaXplOwoKc3RydWN0IHBlcmZfZXZlbnQ7Cgp0eXBlZGVmIHN0cnVjdCB7CiB1bnNp Z25lZCBsb25nIHNlZzsKfSBtbV9zZWdtZW50X3Q7CgpzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB7Cgog c3RydWN0IGRlc2Nfc3RydWN0IHRsc19hcnJheVszXTsKCgoKIHVuc2lnbmVkIGxvbmcgc3A7CgoK CiB1bnNpZ25lZCBzaG9ydCBlczsKIHVuc2lnbmVkIHNob3J0IGRzOwogdW5zaWduZWQgc2hvcnQg ZnNpbmRleDsKIHVuc2lnbmVkIHNob3J0IGdzaW5kZXg7CgoKCiB1bnNpZ25lZCBsb25nIGZzYmFz ZTsKIHVuc2lnbmVkIGxvbmcgZ3NiYXNlOwojIDUxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9w cm9jZXNzb3IuaCIKIHN0cnVjdCBwZXJmX2V2ZW50ICpwdHJhY2VfYnBzWzRdOwoKIHVuc2lnbmVk IGxvbmcgZGVidWdyZWc2OwoKIHVuc2lnbmVkIGxvbmcgcHRyYWNlX2RyNzsKCiB1bnNpZ25lZCBs b25nIGNyMjsKIHVuc2lnbmVkIGxvbmcgdHJhcF9ucjsKIHVuc2lnbmVkIGxvbmcgZXJyb3JfY29k ZTsKCgoKCgogc3RydWN0IGlvX2JpdG1hcCAqaW9fYml0bWFwOwoKCgoKCgogdW5zaWduZWQgbG9u ZyBpb3BsX2VtdWw7CgogbW1fc2VnbWVudF90IGFkZHJfbGltaXQ7CgogdW5zaWduZWQgaW50IHNp Z19vbl91YWNjZXNzX2VycjoxOwogdW5zaWduZWQgaW50IHVhY2Nlc3NfZXJyOjE7CgoKIHN0cnVj dCBmcHUgZnB1OwoKCgoKfTsKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hfdGhyZWFkX3N0cnVjdF93aGl0ZWxpc3QodW5z aWduZWQgbG9uZyAqb2Zmc2V0LAogICAgICB1bnNpZ25lZCBsb25nICpzaXplKQp7CiAqb2Zmc2V0 ID0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCB0aHJlYWRfc3RydWN0LCBmcHUuc3RhdGUpOwog KnNpemUgPSBmcHVfa2VybmVsX3hzdGF0ZV9zaXplOwp9CiMgNTcxICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3Byb2Nlc3Nvci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCm5hdGl2ZV9sb2FkX3NwMCh1bnNpZ25lZCBsb25nIHNw MCkKewogZG8geyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1 X3Rzc19ydy54ODZfdHNzLnNwMCkpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3Zlcmlm eTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIHsg Y2FzZSAxOiBkbyB7IHR5cGVkZWYgdHlwZW9mKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgcHRv X1RfXzsgaWYgKDApIHsgcHRvX1RfXyBwdG9fdG1wX187IHB0b190bXBfXyA9IChzcDApOyAodm9p ZClwdG9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSkg eyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInFpIiAoKHB0b19UX18pKHNwMCkp KTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAlMSwiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicmkiICgocHRvX1Rf Xykoc3AwKSkpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICUxLCIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIg KChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEg JTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkp IDogInJlIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9z aXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgMjogZG8geyB0eXBlZGVmIHR5cGVvZigo Y3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIHB0b19UX187IGlmICgwKSB7IHB0b19UX18gcHRvX3Rt cF9fOyBwdG9fdG1wX18gPSAoc3AwKTsgKHZvaWQpcHRvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9m KChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3Yi ICJiICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5z cDApKSA6ICJxaSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGls ZSAoIm1vdiIgIncgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54 ODZfdHNzLnNwMCkpIDogInJpIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgNDogYXNt IHZvbGF0aWxlICgibW92IiAibCAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVf dHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicmkiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2Fz ZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyZSIgKChwdG9fVF9fKShzcDApKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBj YXNlIDQ6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSBwdG9f VF9fOyBpZiAoMCkgeyBwdG9fVF9fIHB0b190bXBfXzsgcHRvX3RtcF9fID0gKHNwMCk7ICh2b2lk KXB0b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpKSB7 IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgOiAicWkiICgocHRvX1RfXykoc3AwKSkp OyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICUxLCIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9fVF9f KShzcDApKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgJTEsIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJpIiAo KHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAl MSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkg OiAicmUiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3Np emUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA4OiBkbyB7IHR5cGVkZWYgdHlwZW9mKChj cHVfdHNzX3J3Lng4Nl90c3Muc3AwKSkgcHRvX1RfXzsgaWYgKDApIHsgcHRvX1RfXyBwdG9fdG1w X187IHB0b190bXBfXyA9IChzcDApOyAodm9pZClwdG9fdG1wX187IH0gc3dpdGNoIChzaXplb2Yo KGNwdV90c3NfcncueDg2X3Rzcy5zcDApKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoY3B1X3Rzc19ydy54ODZfdHNzLnNw MCkpIDogInFpIiAoKHB0b19UX18pKHNwMCkpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxl ICgibW92IiAidyAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChjcHVfdHNzX3J3Lng4 Nl90c3Muc3AwKSkgOiAicmkiICgocHRvX1RfXykoc3AwKSkpOyBicmVhazsgY2FzZSA0OiBhc20g dm9sYXRpbGUgKCJtb3YiICJsICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKGNwdV90 c3NfcncueDg2X3Rzcy5zcDApKSA6ICJyaSIgKChwdG9fVF9fKShzcDApKSk7IGJyZWFrOyBjYXNl IDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoY3B1X3Rzc19ydy54ODZfdHNzLnNwMCkpIDogInJlIiAoKHB0b19UX18pKHNwMCkpKTsgYnJl YWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIoKTticmVhazsgfSB9IHdoaWxlICgwKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBuYXRpdmVfc3dhcGdzKHZvaWQpCnsKCiBhc20gdm9sYXRpbGUoInN3YXBncyIgOjo6 ICJtZW1vcnkiKTsKCn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgY3VycmVudF90b3Bfb2Zfc3RhY2sodm9pZCkK ewoKCgoKCiByZXR1cm4gKHsgdHlwZW9mKGNwdV90c3NfcncueDg2X3Rzcy5zcDEpIHBmb19yZXRf Xzsgc3dpdGNoIChzaXplb2YoY3B1X3Rzc19ydy54ODZfdHNzLnNwMSkpIHsgY2FzZSAxOiBhc20o Im1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDog InAiICgmKGNwdV90c3NfcncueDg2X3Rzcy5zcDEpKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSgibW92 IiAidyAiIiUlIiJncyIiOiIgIiUiICJQMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAicCIg KCYoY3B1X3Rzc19ydy54ODZfdHNzLnNwMSkpKTsgYnJlYWs7IGNhc2UgNDogYXNtKCJtb3YiICJs ICIiJSUiImdzIiI6IiAiJSIgIlAxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJwIiAoJihj cHVfdHNzX3J3Lng4Nl90c3Muc3AxKSkpOyBicmVhazsgY2FzZSA4OiBhc20oIm1vdiIgInEgIiIl JSIiZ3MiIjoiICIlIiAiUDEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogInAiICgmKGNwdV90 c3NfcncueDg2X3Rzcy5zcDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IHBmb19yZXRfXzsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgb25fdGhyZWFkX3N0YWNrKHZvaWQpCnsKIHJldHVy biAodW5zaWduZWQgbG9uZykoY3VycmVudF90b3Bfb2Zfc3RhY2soKSAtCiAgICAgICAgICBjdXJy ZW50X3N0YWNrX3BvaW50ZXIpIDwgKCgoMVVMKSA8PCAxMikgPDwgKDIgKyAwKSk7Cn0KCgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBsb2FkX3NwMCh1bnNpZ25lZCBsb25nIHNwMCkKewogbmF0aXZlX2xvYWRfc3AwKHNwMCk7 Cn0KCgoKCmV4dGVybiB2b2lkIHJlbGVhc2VfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsK CnVuc2lnbmVkIGxvbmcgZ2V0X3djaGFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CgoKCgoKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgY3B1aWQodW5zaWduZWQgaW50IG9wLAogICAgdW5zaWduZWQgaW50ICplYXgsIHVuc2lnbmVk IGludCAqZWJ4LAogICAgdW5zaWduZWQgaW50ICplY3gsIHVuc2lnbmVkIGludCAqZWR4KQp7CiAq ZWF4ID0gb3A7CiAqZWN4ID0gMDsKIG5hdGl2ZV9jcHVpZChlYXgsIGVieCwgZWN4LCBlZHgpOwp9 CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBjcHVpZF9jb3VudCh1bnNpZ25lZCBpbnQgb3AsIGludCBjb3VudCwKICAgICAgICAg IHVuc2lnbmVkIGludCAqZWF4LCB1bnNpZ25lZCBpbnQgKmVieCwKICAgICAgICAgIHVuc2lnbmVk IGludCAqZWN4LCB1bnNpZ25lZCBpbnQgKmVkeCkKewogKmVheCA9IG9wOwogKmVjeCA9IGNvdW50 OwogbmF0aXZlX2NwdWlkKGVheCwgZWJ4LCBlY3gsIGVkeCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBj cHVpZF9lYXgodW5zaWduZWQgaW50IG9wKQp7CiB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwg ZWR4OwoKIGNwdWlkKG9wLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKCiByZXR1cm4gZWF4Owp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB1bnNpZ25lZCBpbnQgY3B1aWRfZWJ4KHVuc2lnbmVkIGludCBvcCkKewogdW5zaWduZWQgaW50 IGVheCwgZWJ4LCBlY3gsIGVkeDsKCiBjcHVpZChvcCwgJmVheCwgJmVieCwgJmVjeCwgJmVkeCk7 CgogcmV0dXJuIGVieDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGNwdWlkX2VjeCh1bnNpZ25lZCBpbnQgb3Ap CnsKIHVuc2lnbmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7CgogY3B1aWQob3AsICZlYXgsICZl YngsICZlY3gsICZlZHgpOwoKIHJldHVybiBlY3g7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBjcHVpZF9lZHgo dW5zaWduZWQgaW50IG9wKQp7CiB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4OwoKIGNw dWlkKG9wLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKCiByZXR1cm4gZWR4Owp9CgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHJlcF9ub3Aodm9pZCkKewogYXNtIHZv bGF0aWxlKCJyZXA7IG5vcCIgOjo6ICJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIGNwdV9yZWxheCh2b2lkKQp7CiByZXBfbm9wKCk7Cn0KIyA3MDUg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3luY19jb3JlKHZvaWQp CnsKIyA3MzggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCiB1bnNpZ25lZCBp bnQgdG1wOwoKIGFzbSB2b2xhdGlsZSAoCiAgIjk4NzogXG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlz Y2FyZC51bndpbmRfaGludHNcblx0IiAiLmxvbmcgOTg3YiAtIC5cblx0IiAiLnNob3J0ICIgIjAi ICJcblx0IiAiLmJ5dGUgIiAiMCIgIlxuXHQiICIuYnl0ZSAiICIzIiAiXG5cdCIgIi5ieXRlICIg IjAiICJcblx0IiAiLmJhbGlnbiA0IFxuXHQiICIucG9wc2VjdGlvblxuXHQiCiAgIm1vdiAlJXNz LCAlMFxuXHQiCiAgInB1c2hxICVxMFxuXHQiCiAgInB1c2hxICUlcnNwXG5cdCIKICAiYWRkcSAk OCwgKCUlcnNwKVxuXHQiCiAgInB1c2hmcVxuXHQiCiAgIm1vdiAlJWNzLCAlMFxuXHQiCiAgInB1 c2hxICVxMFxuXHQiCiAgInB1c2hxICQxZlxuXHQiCiAgImlyZXRxXG5cdCIKICAiOTg3OiBcblx0 IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVud2luZF9oaW50c1xuXHQiICIubG9uZyA5ODdiIC0g LlxuXHQiICIuc2hvcnQgIiAiMCIgIlxuXHQiICIuYnl0ZSAiICIwIiAiXG5cdCIgIi5ieXRlICIg IjQiICJcblx0IiAiLmJ5dGUgIiAiMCIgIlxuXHQiICIuYmFsaWduIDQgXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIKICAiMToiCiAgOiAiPSZyIiAodG1wKSwgIityIiAoY3VycmVudF9zdGFja19wb2lu dGVyKSA6IDogImNjIiwgIm1lbW9yeSIpOwoKfQoKZXh0ZXJuIHZvaWQgc2VsZWN0X2lkbGVfcm91 dGluZShjb25zdCBzdHJ1Y3QgY3B1aW5mb194ODYgKmMpOwpleHRlcm4gdm9pZCBhbWRfZTQwMF9j MWVfYXBpY19zZXR1cCh2b2lkKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGJvb3Rfb3B0aW9uX2lk bGVfb3ZlcnJpZGU7CgplbnVtIGlkbGVfYm9vdF9vdmVycmlkZSB7SURMRV9OT19PVkVSUklERT0w LCBJRExFX0hBTFQsIElETEVfTk9NV0FJVCwKICAgIElETEVfUE9MTH07CgpleHRlcm4gdm9pZCBl bmFibGVfc2VwX2NwdSh2b2lkKTsKZXh0ZXJuIGludCBzeXNlbnRlcl9zZXR1cCh2b2lkKTsKCgoK ZXh0ZXJuIHN0cnVjdCBkZXNjX3B0ciBlYXJseV9nZHRfZGVzY3I7CgpleHRlcm4gdm9pZCBzd2l0 Y2hfdG9fbmV3X2dkdChpbnQpOwpleHRlcm4gdm9pZCBsb2FkX2RpcmVjdF9nZHQoaW50KTsKZXh0 ZXJuIHZvaWQgbG9hZF9maXhtYXBfZ2R0KGludCk7CmV4dGVybiB2b2lkIGxvYWRfcGVyY3B1X3Nl Z21lbnQoaW50KTsKZXh0ZXJuIHZvaWQgY3B1X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIGNyNF9p bml0KHZvaWQpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBnZXRfZGVidWdjdGxtc3Iodm9pZCkKewogdW5zaWdu ZWQgbG9uZyBkZWJ1Z2N0bG1zciA9IDA7CgoKCgoKICgoZGVidWdjdGxtc3IpID0gbmF0aXZlX3Jl YWRfbXNyKCgweDAwMDAwMWQ5KSkpOwoKIHJldHVybiBkZWJ1Z2N0bG1zcjsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB1cGRh dGVfZGVidWdjdGxtc3IodW5zaWduZWQgbG9uZyBkZWJ1Z2N0bG1zcikKewoKCgoKIHdybXNybCgw eDAwMDAwMWQ5LCBkZWJ1Z2N0bG1zcik7Cn0KCmV4dGVybiB2b2lkIHNldF90YXNrX2Jsb2Nrc3Rl cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGJvb2wgb24pOwoKCmV4dGVybiBpbnQgYm9vdGxv YWRlcl90eXBlOwpleHRlcm4gaW50IGJvb3Rsb2FkZXJfdmVyc2lvbjsKCmV4dGVybiBjaGFyIGln bm9yZV9mcHVfaXJxOwojIDgyNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBwcmVmZXRjaChjb25zdCB2b2lkICp4KQp7CiBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIj IEFMVDogb2xkbnN0clxuIiAiNjYxOlxuXHQiICJwcmVmZXRjaHQwICVQMSIgIlxuNjYyOlxuIiAi IyBBTFQ6IHBhZGRpbmdcbiIgIi5za2lwIC0oKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICIp LSgiICI2NjJiLTY2MWIiICIpKSA+IDApICogIiAiKCgiICI2NjUiIjEiImYtIiI2NjQiIjEiImYi ICIpLSgiICI2NjJiLTY2MWIiICIpKSwweDkwXG4iICI2NjMiICI6XG4iICIucHVzaHNlY3Rpb24g LmFsdGluc3RydWN0aW9ucyxcImFcIlxuIiAiIC5sb25nIDY2MWIgLSAuXG4iICIgLmxvbmcgIiAi NjY0IiIxIiJmIC0gLlxuIiAiIC53b3JkICIgIiggMCozMisyNSkiICJcbiIgIiAuYnl0ZSAiICI2 NjMiImItNjYxYiIgIlxuIiAiIC5ieXRlICIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIlxuIiAi IC5ieXRlICIgIjY2MyIiYi02NjJiIiAiXG4iICIucG9wc2VjdGlvblxuIiAiLnB1c2hzZWN0aW9u IC5hbHRpbnN0cl9yZXBsYWNlbWVudCwgXCJheFwiXG4iICIjIEFMVDogcmVwbGFjZW1lbnQgIiAi MSIgIlxuIiAiNjY0IiIxIiI6XG5cdCIgInByZWZldGNobnRhICVQMSIgIlxuIiAiNjY1IiIxIiAi OlxuIiAiLnBvcHNlY3Rpb25cbiIgOiA6ICJpIiAoMCksICJtIiAoKihjb25zdCBjaGFyICopeCkp CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcHJlZmV0Y2h3KGNv bnN0IHZvaWQgKngpCnsKIGFzbSBfX2lubGluZSB2b2xhdGlsZSAoIiMgQUxUOiBvbGRuc3RyXG4i ICI2NjE6XG5cdCIgInByZWZldGNodDAgJVAxIiAiXG42NjI6XG4iICIjIEFMVDogcGFkZGluZ1xu IiAiLnNraXAgLSgoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYxYiIg IikpID4gMCkgKiAiICIoKCIgIjY2NSIiMSIiZi0iIjY2NCIiMSIiZiIgIiktKCIgIjY2MmItNjYx YiIgIikpLDB4OTBcbiIgIjY2MyIgIjpcbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJ1Y3Rpb25z LFwiYVwiXG4iICIgLmxvbmcgNjYxYiAtIC5cbiIgIiAubG9uZyAiICI2NjQiIjEiImYgLSAuXG4i ICIgLndvcmQgIiAiKCA2KjMyKyA4KSIgIlxuIiAiIC5ieXRlICIgIjY2MyIiYi02NjFiIiAiXG4i ICIgLmJ5dGUgIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJi LTY2MmIiICJcbiIgIi5wb3BzZWN0aW9uXG4iICIucHVzaHNlY3Rpb24gLmFsdGluc3RyX3JlcGxh Y2VtZW50LCBcImF4XCJcbiIgIiMgQUxUOiByZXBsYWNlbWVudCAiICIxIiAiXG4iICI2NjQiIjEi Ijpcblx0IiAicHJlZmV0Y2h3ICVQMSIgIlxuIiAiNjY1IiIxIiAiOlxuIiAiLnBvcHNlY3Rpb25c biIgOiA6ICJpIiAoMCksICJtIiAoKihjb25zdCBjaGFyICopeCkpCgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNwaW5fbG9ja19wcmVmZXRjaChjb25zdCB2b2lkICp4KQp7 CiBwcmVmZXRjaHcoeCk7Cn0KIyA5MjUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29y LmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIEtTVEtfRVNQKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFz ayk7CgoKCmV4dGVybiB2b2lkIHN0YXJ0X3RocmVhZChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5z aWduZWQgbG9uZyBuZXdfaXAsCiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmV3X3NwKTsKIyA5 NDUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgiCmV4dGVybiBpbnQgZ2V0X3Rz Y19tb2RlKHVuc2lnbmVkIGxvbmcgYWRyKTsKZXh0ZXJuIGludCBzZXRfdHNjX21vZGUodW5zaWdu ZWQgaW50IHZhbCk7CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNw dSIgIiIpKSkgX190eXBlb2ZfXyh1NjQpIG1zcl9taXNjX2ZlYXR1cmVzX3NoYWRvdzsKCgpleHRl cm4gdTE2IGFtZF9nZXRfbmJfaWQoaW50IGNwdSk7CmV4dGVybiB1MzIgYW1kX2dldF9ub2Rlc19w ZXJfc29ja2V0KHZvaWQpOwoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVpbnQzMl90IGh5cGVydmlzb3JfY3B1aWRfYmFzZShjb25z dCBjaGFyICpzaWcsIHVpbnQzMl90IGxlYXZlcykKewogdWludDMyX3QgYmFzZSwgZWF4LCBzaWdu YXR1cmVbM107CgogZm9yIChiYXNlID0gMHg0MDAwMDAwMDsgYmFzZSA8IDB4NDAwMTAwMDA7IGJh c2UgKz0gMHgxMDApIHsKICBjcHVpZChiYXNlLCAmZWF4LCAmc2lnbmF0dXJlWzBdLCAmc2lnbmF0 dXJlWzFdLCAmc2lnbmF0dXJlWzJdKTsKCiAgaWYgKCFtZW1jbXAoc2lnLCBzaWduYXR1cmUsIDEy KSAmJgogICAgICAobGVhdmVzID09IDAgfHwgKChlYXggLSBiYXNlKSA+PSBsZWF2ZXMpKSkKICAg cmV0dXJuIGJhc2U7CiB9CgogcmV0dXJuIDA7Cn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIGFyY2hf YWxpZ25fc3RhY2sodW5zaWduZWQgbG9uZyBzcCk7CnZvaWQgZnJlZV9pbml0X3BhZ2VzKGNvbnN0 IGNoYXIgKndoYXQsIHVuc2lnbmVkIGxvbmcgYmVnaW4sIHVuc2lnbmVkIGxvbmcgZW5kKTsKZXh0 ZXJuIHZvaWQgZnJlZV9rZXJuZWxfaW1hZ2VfcGFnZXMoY29uc3QgY2hhciAqd2hhdCwgdm9pZCAq YmVnaW4sIHZvaWQgKmVuZCk7Cgp2b2lkIGRlZmF1bHRfaWRsZSh2b2lkKTsKCgoKCgoKdm9pZCBz dG9wX3RoaXNfY3B1KHZvaWQgKmR1bW15KTsKdm9pZCBtaWNyb2NvZGVfY2hlY2sodm9pZCk7Cgpl bnVtIGwxdGZfbWl0aWdhdGlvbnMgewogTDFURl9NSVRJR0FUSU9OX09GRiwKIEwxVEZfTUlUSUdB VElPTl9GTFVTSF9OT1dBUk4sCiBMMVRGX01JVElHQVRJT05fRkxVU0gsCiBMMVRGX01JVElHQVRJ T05fRkxVU0hfTk9TTVQsCiBMMVRGX01JVElHQVRJT05fRlVMTCwKIEwxVEZfTUlUSUdBVElPTl9G VUxMX0ZPUkNFCn07CgpleHRlcm4gZW51bSBsMXRmX21pdGlnYXRpb25zIGwxdGZfbWl0aWdhdGlv bjsKCmVudW0gbWRzX21pdGlnYXRpb25zIHsKIE1EU19NSVRJR0FUSU9OX09GRiwKIE1EU19NSVRJ R0FUSU9OX0ZVTEwsCiBNRFNfTUlUSUdBVElPTl9WTVdFUlYsCn07CiMgNiAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiIDIKCgoKCgoKZW51bSBjcHVpZF9sZWFmcwp7CiBDUFVJ RF8xX0VEWCA9IDAsCiBDUFVJRF84MDAwXzAwMDFfRURYLAogQ1BVSURfODA4Nl8wMDAxX0VEWCwK IENQVUlEX0xOWF8xLAogQ1BVSURfMV9FQ1gsCiBDUFVJRF9DMDAwXzAwMDFfRURYLAogQ1BVSURf ODAwMF8wMDAxX0VDWCwKIENQVUlEX0xOWF8yLAogQ1BVSURfTE5YXzMsCiBDUFVJRF83XzBfRUJY LAogQ1BVSURfRF8xX0VBWCwKIENQVUlEX0xOWF80LAogQ1BVSURfN18xX0VBWCwKIENQVUlEXzgw MDBfMDAwOF9FQlgsCiBDUFVJRF82X0VBWCwKIENQVUlEXzgwMDBfMDAwQV9FRFgsCiBDUFVJRF83 X0VDWCwKIENQVUlEXzgwMDBfMDAwN19FQlgsCiBDUFVJRF83X0VEWCwKfTsKCgpleHRlcm4gY29u c3QgY2hhciAqIGNvbnN0IHg4Nl9jYXBfZmxhZ3NbMTkqMzJdOwpleHRlcm4gY29uc3QgY2hhciAq IGNvbnN0IHg4Nl9wb3dlcl9mbGFnc1szMl07CiMgNDkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v Y3B1ZmVhdHVyZS5oIgpleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IHg4Nl9idWdfZmxhZ3NbMSoz Ml07CiMgMTQxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZlYXR1cmUuaCIKZXh0ZXJuIHZv aWQgc2V0dXBfY2xlYXJfY3B1X2NhcCh1bnNpZ25lZCBpbnQgYml0KTsKZXh0ZXJuIHZvaWQgY2xl YXJfY3B1X2NhcChzdHJ1Y3QgY3B1aW5mb194ODYgKmMsIHVuc2lnbmVkIGludCBiaXQpOwojIDE3 MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkgYm9vbCBfc3RhdGljX2NwdV9oYXModTE2IGJpdCkKewogZG8geyBh c20gZ290bygiMTogam1wIDZmXG4iICIyOlxuIiAiLnNraXAgLSgoKDVmLTRmKSAtICgyYi0xYikp ID4gMCkgKiAiICIoKDVmLTRmKSAtICgyYi0xYikpLDB4OTBcbiIgIjM6XG4iICIuc2VjdGlvbiAu YWx0aW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgLmxvbmcgMWIgLSAuXG4iICIgLmxvbmcgNGYgLSAu XG4iICIgLndvcmQgJVBbYWx3YXlzXVxuIiAiIC5ieXRlIDNiIC0gMWJcbiIgIiAuYnl0ZSA1ZiAt IDRmXG4iICIgLmJ5dGUgM2IgLSAyYlxuIiAiLnByZXZpb3VzXG4iICIuc2VjdGlvbiAuYWx0aW5z dHJfcmVwbGFjZW1lbnQsXCJheFwiXG4iICI0OiBqbXAgJWxbdF9ub11cbiIgIjU6XG4iICIucHJl dmlvdXNcbiIgIi5zZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAubG9uZyAxYiAt IC5cbiIgIiAubG9uZyAwXG4iICIgLndvcmQgJVBbZmVhdHVyZV1cbiIgIiAuYnl0ZSAzYiAtIDFi XG4iICIgLmJ5dGUgMFxuIiAiIC5ieXRlIDBcbiIgIi5wcmV2aW91c1xuIiAiLnNlY3Rpb24gLmFs dGluc3RyX2F1eCxcImF4XCJcbiIgIjY6XG4iICIgdGVzdGIgJVtiaXRudW1dLCVbY2FwX2J5dGVd XG4iICIgam56ICVsW3RfeWVzXVxuIiAiIGptcCAlbFt0X25vXVxuIiAiLnByZXZpb3VzXG4iIDog OiBbZmVhdHVyZV0gImkiIChiaXQpLCBbYWx3YXlzXSAiaSIgKCggMyozMisyMSkpLCBbYml0bnVt XSAiaSIgKDEgPDwgKGJpdCAmIDcpKSwgW2NhcF9ieXRlXSAibSIgKCgoY29uc3QgY2hhciAqKWJv b3RfY3B1X2RhdGEueDg2X2NhcGFiaWxpdHkpW2JpdCA+PiAzXSkgOiA6IHRfeWVzLCB0X25vKTsg YXNtICgiIik7IH0gd2hpbGUgKDApCiMgMjEwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2NwdWZl YXR1cmUuaCIKICAgICAgICAgICAgICAgICAgIDsKdF95ZXM6CiByZXR1cm4gdHJ1ZTsKdF9ubzoK IHJldHVybiBmYWxzZTsKfQojIDU0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZv LmgiIDIKCgpzdHJ1Y3QgdGhyZWFkX2luZm8gewogdW5zaWduZWQgbG9uZyBmbGFnczsKIHUzMiBz dGF0dXM7Cn07CiMgMTg2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVhZF9pbmZvLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBhcmNoX3dpdGhpbl9zdGFja19mcmFtZXMoY29uc3Qgdm9pZCAqIGNvbnN0IHN0YWNrLAogICAg ICAgIGNvbnN0IHZvaWQgKiBjb25zdCBzdGFja2VuZCwKICAgICAgICBjb25zdCB2b2lkICpvYmos IHVuc2lnbmVkIGxvbmcgbGVuKQp7CiMgMjE4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RocmVh ZF9pbmZvLmgiCiByZXR1cm4gTk9UX1NUQUNLOwoKfQojIDI0MiAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS90aHJlYWRfaW5mby5oIgpleHRlcm4gdm9pZCBhcmNoX3Rhc2tfY2FjaGVfaW5pdCh2b2lk KTsKZXh0ZXJuIGludCBhcmNoX2R1cF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKmRz dCwgc3RydWN0IHRhc2tfc3RydWN0ICpzcmMpOwpleHRlcm4gdm9pZCBhcmNoX3JlbGVhc2VfdGFz a19zdHJ1Y3Qoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwpleHRlcm4gdm9pZCBhcmNoX3NldHVw X25ld19leGVjKHZvaWQpOwojIDM5ICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIgMgoj IDUzICIuL2luY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXRfdGlfdGhyZWFkX2Zs YWcoc3RydWN0IHRocmVhZF9pbmZvICp0aSwgaW50IGZsYWcpCnsKIHNldF9iaXQoZmxhZywgKHVu c2lnbmVkIGxvbmcgKikmdGktPmZsYWdzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl90aV90aHJlYWRfZmxhZyhz dHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBpbnQgZmxhZykKewogY2xlYXJfYml0KGZsYWcsICh1bnNp Z25lZCBsb25nICopJnRpLT5mbGFncyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdXBkYXRlX3RpX3RocmVhZF9mbGFnKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdGksIGludCBmbGFnLAogICAgICBib29sIHZhbHVlKQp7CiBpZiAo dmFsdWUpCiAgc2V0X3RpX3RocmVhZF9mbGFnKHRpLCBmbGFnKTsKIGVsc2UKICBjbGVhcl90aV90 aHJlYWRfZmxhZyh0aSwgZmxhZyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9zZXRfdGlfdGhyZWFkX2ZsYWco c3RydWN0IHRocmVhZF9pbmZvICp0aSwgaW50IGZsYWcpCnsKIHJldHVybiB0ZXN0X2FuZF9zZXRf Yml0KGZsYWcsICh1bnNpZ25lZCBsb25nICopJnRpLT5mbGFncyk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0ZXN0X2FuZF9j bGVhcl90aV90aHJlYWRfZmxhZyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBpbnQgZmxhZykKewog cmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChmbGFnLCAodW5zaWduZWQgbG9uZyAqKSZ0aS0+Zmxh Z3MpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgdGVzdF90aV90aHJlYWRfZmxhZyhzdHJ1Y3QgdGhyZWFkX2luZm8gKnRpLCBp bnQgZmxhZykKewogcmV0dXJuIHRlc3RfYml0KGZsYWcsICh1bnNpZ25lZCBsb25nICopJnRpLT5m bGFncyk7Cn0KIyAxMjIgIi4vaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNoZWNr X29iamVjdF9zaXplKGNvbnN0IHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBuLAogICAgICAgICBi b29sIHRvX3VzZXIpCnsgfQoKCmV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygi Y29weSBzb3VyY2Ugc2l6ZSBpcyB0b28gc21hbGwiKSkpCl9fYmFkX2NvcHlfZnJvbSh2b2lkKTsK ZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJjb3B5IGRlc3RpbmF0aW9uIHNp emUgaXMgdG9vIHNtYWxsIikpKQpfX2JhZF9jb3B5X3RvKHZvaWQpOwoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjb3B5X292ZXJm bG93KGludCBzaXplLCB1bnNpZ25lZCBsb25nIGNvdW50KQp7CiAoeyBpbnQgX19yZXRfd2Fybl9v biA9ICEhKDEpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRv IHsgX193YXJuX3ByaW50aygiQnVmZmVyIG92ZXJmbG93IGRldGVjdGVkICglZCA8ICVsdSkhXG4i LCBzaXplLCBjb3VudCk7IGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIu Ynl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4i ICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4i ICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQu d29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdf ZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAo ImluY2x1ZGUvbGludXgvdGhyZWFkX2luZm8uaCIpLCAiaSIgKDEzNCksICJpIiAoKDEgPDwgMCl8 KCgxIDw8IDMpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkp OyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICgwKSk7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRp bl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg Ym9vbApjaGVja19jb3B5X3NpemUoY29uc3Qgdm9pZCAqYWRkciwgc2l6ZV90IGJ5dGVzLCBib29s IGlzX3NvdXJjZSkKewogaW50IHN6ID0gX19idWlsdGluX29iamVjdF9zaXplKGFkZHIsIDApOwog aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoc3ogPj0gMCAmJiBzeiA8IGJ5dGVzKSwgMCkpIHsKICBp ZiAoIV9fYnVpbHRpbl9jb25zdGFudF9wKGJ5dGVzKSkKICAgY29weV9vdmVyZmxvdyhzeiwgYnl0 ZXMpOwogIGVsc2UgaWYgKGlzX3NvdXJjZSkKICAgX19iYWRfY29weV9mcm9tKCk7CiAgZWxzZQog ICBfX2JhZF9jb3B5X3RvKCk7CiAgcmV0dXJuIGZhbHNlOwogfQogaWYgKCh7IGludCBfX3JldF93 YXJuX29uID0gISEoYnl0ZXMgPiAoKGludCkofjBVID4+IDEpKSk7IGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGls ZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJs ZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6 YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpm aWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMy IiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9u IiA6IDogImkiICgiaW5jbHVkZS9saW51eC90aHJlYWRfaW5mby5oIiksICJpIiAoMTUwKSwgImki ICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBi dWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1 c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIu cG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDEpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5f ZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSkpCiAgcmV0dXJuIGZhbHNlOwogY2hlY2tf b2JqZWN0X3NpemUoYWRkciwgYnl0ZXMsIGlzX3NvdXJjZSk7CiByZXR1cm4gdHJ1ZTsKfQojIDgg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vcHJlZW1wdC5oIiAyCgpleHRlcm4gX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhpbnQpIF9fcHJlZW1w dF9jb3VudDsKIyAyNCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wcmVlbXB0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IHByZWVtcHRfY291bnQodm9pZCkKewogcmV0 dXJuICh7IHR5cGVvZihfX3ByZWVtcHRfY291bnQpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2Yo X19wcmVlbXB0X2NvdW50KSkgeyBjYXNlIDE6IGFzbSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIl IiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBi cmVhazsgY2FzZSAyOiBhc20gKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2UgNDog YXNtICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9f KSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBjYXNlIDg6IGFzbSAoIm1vdiIgInEg IiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJl ZW1wdF9jb3VudCkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9f cmV0X187IH0pICYgfjB4ODAwMDAwMDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZCBwcmVlbXB0X2NvdW50X3NldChpbnQgcGMpCnsKIGludCBvbGQsIG5ldzsKCiBk byB7CiAgb2xkID0gKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGZvX3JldF9fOyBzd2l0Y2gg KHNpemVvZihfX3ByZWVtcHRfY291bnQpKSB7IGNhc2UgMTogYXNtICgibW92IiAiYiAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2Nv dW50KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIi LCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsg Y2FzZSA0OiBhc20gKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChw Zm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2UgODogYXNtICgi bW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IHBmb19yZXRfXzsgfSk7CiAgbmV3ID0gKG9sZCAmIDB4ODAwMDAwMDApIHwKICAgKHBjICYg fjB4ODAwMDAwMDApOwogfSB3aGlsZSAoKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGNvX3Jl dF9fOyB0eXBlb2YoX19wcmVlbXB0X2NvdW50KSBwY29fb2xkX18gPSAob2xkKTsgdHlwZW9mKF9f cHJlZW1wdF9jb3VudCkgcGNvX25ld19fID0gKG5ldyk7IHN3aXRjaCAoc2l6ZW9mKF9fcHJlZW1w dF9jb3VudCkpIHsgY2FzZSAxOiBhc20gKCJjbXB4Y2hnYiAlMiwgIiIlJSIiZ3MiIjoiICIlIiAi MSIgOiAiPWEiIChwY29fcmV0X18pLCAiK20iIChfX3ByZWVtcHRfY291bnQpIDogInEiIChwY29f bmV3X18pLCAiMCIgKHBjb19vbGRfXykgOiAibWVtb3J5Iik7IGJyZWFrOyBjYXNlIDI6IGFzbSAo ImNtcHhjaGd3ICUyLCAiIiUlIiJncyIiOiIgIiUiICIxIiA6ICI9YSIgKHBjb19yZXRfXyksICIr bSIgKF9fcHJlZW1wdF9jb3VudCkgOiAiciIgKHBjb19uZXdfXyksICIwIiAocGNvX29sZF9fKSA6 ICJtZW1vcnkiKTsgYnJlYWs7IGNhc2UgNDogYXNtICgiY21weGNoZ2wgJTIsICIiJSUiImdzIiI6 IiAiJSIgIjEiIDogIj1hIiAocGNvX3JldF9fKSwgIittIiAoX19wcmVlbXB0X2NvdW50KSA6ICJy IiAocGNvX25ld19fKSwgIjAiIChwY29fb2xkX18pIDogIm1lbW9yeSIpOyBicmVhazsgY2FzZSA4 OiBhc20gKCJjbXB4Y2hncSAlMiwgIiIlJSIiZ3MiIjoiICIlIiAiMSIgOiAiPWEiIChwY29fcmV0 X18pLCAiK20iIChfX3ByZWVtcHRfY291bnQpIDogInIiIChwY29fbmV3X18pLCAiMCIgKHBjb19v bGRfXykgOiAibWVtb3J5Iik7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9 IHBjb19yZXRfXzsgfSkgIT0gb2xkKTsKfQojIDU4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3By ZWVtcHQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNldF9wcmVl bXB0X25lZWRfcmVzY2hlZCh2b2lkKQp7CiBkbyB7IHR5cGVkZWYgdHlwZW9mKChfX3ByZWVtcHRf Y291bnQpKSBwdG9fVF9fOyBpZiAoMCkgeyBwdG9fVF9fIHB0b190bXBfXzsgcHRvX3RtcF9fID0g KH4weDgwMDAwMDAwKTsgKHZvaWQpcHRvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKChfX3ByZWVt cHRfY291bnQpKSkgeyBjYXNlIDE6IGFzbSAoImFuZCIgImIgJTEsIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicWkiICgocHRvX1RfXykofjB4ODAwMDAw MDApKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSAoImFuZCIgIncgJTEsIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocHRvX1RfXykofjB4ODAwMDAw MDApKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSAoImFuZCIgImwgJTEsIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocHRvX1RfXykofjB4ODAwMDAw MDApKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSAoImFuZCIgInEgJTEsIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmUiICgocHRvX1RfXykofjB4ODAwMDAw MDApKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDAp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgY2xlYXJfcHJlZW1w dF9uZWVkX3Jlc2NoZWQodm9pZCkKewogZG8geyB0eXBlZGVmIHR5cGVvZigoX19wcmVlbXB0X2Nv dW50KSkgcHRvX1RfXzsgaWYgKDApIHsgcHRvX1RfXyBwdG9fdG1wX187IHB0b190bXBfXyA9ICgw eDgwMDAwMDAwKTsgKHZvaWQpcHRvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKChfX3ByZWVtcHRf Y291bnQpKSkgeyBjYXNlIDE6IGFzbSAoIm9yIiAiYiAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJxaSIgKChwdG9fVF9fKSgweDgwMDAwMDAwKSkp OyBicmVhazsgY2FzZSAyOiBhc20gKCJvciIgIncgJTEsIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicmkiICgocHRvX1RfXykoMHg4MDAwMDAwMCkpKTsg YnJlYWs7IGNhc2UgNDogYXNtICgib3IiICJsICUxLCIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInJpIiAoKHB0b19UX18pKDB4ODAwMDAwMDApKSk7IGJy ZWFrOyBjYXNlIDg6IGFzbSAoIm9yIiAicSAlMSwiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KChfX3ByZWVtcHRfY291bnQpKSA6ICJyZSIgKChwdG9fVF9fKSgweDgwMDAwMDAwKSkpOyBicmVh azsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIHRlc3RfcHJlZW1wdF9uZWVkX3Jlc2No ZWQodm9pZCkKewogcmV0dXJuICEoKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGZvX3JldF9f OyBzd2l0Y2ggKHNpemVvZihfX3ByZWVtcHRfY291bnQpKSB7IGNhc2UgMTogYXNtICgibW92IiAi YiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoX19w cmVlbXB0X2NvdW50KSk7IGJyZWFrOyBjYXNlIDI6IGFzbSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoi ICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkp OyBicmVhazsgY2FzZSA0OiBhc20gKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIg OiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2Ug ODogYXNtICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3Jl dF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJj cHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSkgJiAweDgwMDAwMDAwKTsKfQoKCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX3ByZWVtcHRfY291bnRfYWRkKGludCB2 YWwpCnsKIGRvIHsgdHlwZWRlZiB0eXBlb2YoKF9fcHJlZW1wdF9jb3VudCkpIHBhb19UX187IGNv bnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCh2YWwpICYmICgodmFsKSA9 PSAxIHx8ICh2YWwpID09IC0xKSkgPyAoaW50KSh2YWwpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBw YW9fdG1wX187IHBhb190bXBfXyA9ICh2YWwpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChz aXplb2YoKF9fcHJlZW1wdF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkp OyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkYiAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkgOiAicWkiICgocGFvX1Rf XykodmFsKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jdyAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSh2YWwpKSk7 IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0 X2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKHZhbCkpKTsgYnJlYWs7IGNh c2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNt ICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKChfX3ByZWVtcHRfY291bnQpKSk7 IGVsc2UgYXNtICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVl bXB0X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykodmFsKSkpOyBicmVhazsgZGVmYXVsdDogX19i YWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIF9fcHJlZW1wdF9jb3VudF9zdWIoaW50IHZhbCkKewogZG8geyB0 eXBlZGVmIHR5cGVvZigoX19wcmVlbXB0X2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19J RF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKC12YWwpICYmICgoLXZhbCkgPT0gMSB8fCAoLXZh bCkgPT0gLTEpKSA/IChpbnQpKC12YWwpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187 IHBhb190bXBfXyA9ICgtdmFsKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKChf X3ByZWVtcHRfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNi ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBp ZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZGIgJTEsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKC12YWwp KSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVl bXB0X2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKF9fcHJlZW1wdF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC12YWwpKSk7IGJyZWFr OyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50 KSkpOyBlbHNlIGFzbSAoImFkZGwgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9f cHJlZW1wdF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC12YWwpKSk7IGJyZWFrOyBjYXNlIDg6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKF9fcHJlZW1wdF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRl Y3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoX19wcmVlbXB0X2NvdW50KSkpOyBlbHNl IGFzbSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKF9fcHJlZW1wdF9j b3VudCkpIDogInJlIiAoKHBhb19UX18pKC12YWwpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgYm9vbCBfX3ByZWVtcHRfY291bnRfZGVjX2FuZF90ZXN0KHZvaWQpCnsK IHJldHVybiAoeyBib29sIGM7IGFzbSB2b2xhdGlsZSAoImRlY2wiICIgIiAiJSUiImdzIiI6IiAi JSIgIlt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29kZSAiICJlIiAiKi9cbiIgOiBb dmFyXSAiK20iIChfX3ByZWVtcHRfY291bnQpLCAiPUBjYyIgImUiIChjKSA6IDogIm1lbW9yeSIp OyBjOyB9KTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBib29sIHNo b3VsZF9yZXNjaGVkKGludCBwcmVlbXB0X29mZnNldCkKewogcmV0dXJuIF9fYnVpbHRpbl9leHBl Y3QoISEoKHsgdHlwZW9mKF9fcHJlZW1wdF9jb3VudCkgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVv ZihfX3ByZWVtcHRfY291bnQpKSB7IGNhc2UgMTogYXNtICgibW92IiAiYiAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoX19wcmVlbXB0X2NvdW50KSk7 IGJyZWFrOyBjYXNlIDI6IGFzbSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKF9fcHJlZW1wdF9jb3VudCkpOyBicmVhazsgY2FzZSA0 OiBhc20gKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0 X18pIDogIm0iIChfX3ByZWVtcHRfY291bnQpKTsgYnJlYWs7IGNhc2UgODogYXNtICgibW92IiAi cSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoX19w cmVlbXB0X2NvdW50KSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBm b19yZXRfXzsgfSkgPT0gcHJlZW1wdF9vZmZzZXQpLCAwKTsKfQojIDc5ICIuL2luY2x1ZGUvbGlu dXgvcHJlZW1wdC5oIiAyCiMgMjc3ICIuL2luY2x1ZGUvbGludXgvcHJlZW1wdC5oIgpzdHJ1Y3Qg cHJlZW1wdF9ub3RpZmllcjsKIyAyOTMgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiCnN0cnVj dCBwcmVlbXB0X29wcyB7CiB2b2lkICgqc2NoZWRfaW4pKHN0cnVjdCBwcmVlbXB0X25vdGlmaWVy ICpub3RpZmllciwgaW50IGNwdSk7CiB2b2lkICgqc2NoZWRfb3V0KShzdHJ1Y3QgcHJlZW1wdF9u b3RpZmllciAqbm90aWZpZXIsCiAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0KTsKfTsKIyAz MDYgIi4vaW5jbHVkZS9saW51eC9wcmVlbXB0LmgiCnN0cnVjdCBwcmVlbXB0X25vdGlmaWVyIHsK IHN0cnVjdCBobGlzdF9ub2RlIGxpbms7CiBzdHJ1Y3QgcHJlZW1wdF9vcHMgKm9wczsKfTsKCnZv aWQgcHJlZW1wdF9ub3RpZmllcl9pbmModm9pZCk7CnZvaWQgcHJlZW1wdF9ub3RpZmllcl9kZWMo dm9pZCk7CnZvaWQgcHJlZW1wdF9ub3RpZmllcl9yZWdpc3RlcihzdHJ1Y3QgcHJlZW1wdF9ub3Rp ZmllciAqbm90aWZpZXIpOwp2b2lkIHByZWVtcHRfbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3Qg cHJlZW1wdF9ub3RpZmllciAqbm90aWZpZXIpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwcmVlbXB0X25vdGlmaWVyX2luaXQo c3RydWN0IHByZWVtcHRfbm90aWZpZXIgKm5vdGlmaWVyLAogICAgICAgICBzdHJ1Y3QgcHJlZW1w dF9vcHMgKm9wcykKewogSU5JVF9ITElTVF9OT0RFKCZub3RpZmllci0+bGluayk7CiBub3RpZmll ci0+b3BzID0gb3BzOwp9CiMgNTIgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCgoKCgoK CiMgMSAiLi9pbmNsdWRlL2xpbnV4L2JvdHRvbV9oYWxmLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xp bnV4L2JvdHRvbV9oYWxmLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCBfX2xvY2FsX2JoX2Rpc2FibGVfaXAodW5zaWduZWQgbG9uZyBpcCwgdW5zaWduZWQgaW50IGNu dCkKewogX19wcmVlbXB0X2NvdW50X2FkZChjbnQpOwogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6 IDogOiJtZW1vcnkiKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9jYWxfYmhfZGlzYWJsZSh2b2lkKQp7CiBfX2xvY2Fs X2JoX2Rpc2FibGVfaXAoKHsgX19sYWJlbF9fIF9faGVyZTsgX19oZXJlOiAodW5zaWduZWQgbG9u ZykmJl9faGVyZTsgfSksICgyICogKDFVTCA8PCAoMCArIDgpKSkpOwp9CgpleHRlcm4gdm9pZCBf bG9jYWxfYmhfZW5hYmxlKHZvaWQpOwpleHRlcm4gdm9pZCBfX2xvY2FsX2JoX2VuYWJsZV9pcCh1 bnNpZ25lZCBsb25nIGlwLCB1bnNpZ25lZCBpbnQgY250KTsKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9jYWxfYmhfZW5hYmxl X2lwKHVuc2lnbmVkIGxvbmcgaXApCnsKIF9fbG9jYWxfYmhfZW5hYmxlX2lwKGlwLCAoMiAqICgx VUwgPDwgKDAgKyA4KSkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NhbF9iaF9lbmFibGUodm9pZCkKewogX19sb2Nh bF9iaF9lbmFibGVfaXAoKHsgX19sYWJlbF9fIF9faGVyZTsgX19oZXJlOiAodW5zaWduZWQgbG9u ZykmJl9faGVyZTsgfSksICgyICogKDFVTCA8PCAoMCArIDgpKSkpOwp9CiMgNTkgIi4vaW5jbHVk ZS9saW51eC9zcGlubG9jay5oIiAyCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQv YXNtL21taW93Yi5oIiAxCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL21taW93Yi5oIiAxCiMg MiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC9hc20vbW1pb3diLmgiIDIKIyA2MSAiLi9p bmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiIDIKIyA4MyAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2Nr LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX3R5cGVzLmgiIDEKIyAxOCAiLi9pbmNs dWRlL2xpbnV4L3NwaW5sb2NrX3R5cGVzLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2xvY2tkZXAu aCIgMQojIDEzICIuL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7 CnN0cnVjdCBsb2NrZGVwX21hcDsKCgpleHRlcm4gaW50IHByb3ZlX2xvY2tpbmc7CmV4dGVybiBp bnQgbG9ja19zdGF0OwojIDQxMyAiLi9pbmNsdWRlL2xpbnV4L2xvY2tkZXAuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2Nr ZGVwX2luaXRfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCnsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsb2NrZGVw X29mZih2b2lkKQp7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9vbih2b2lkKQp7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9z ZXRfc2VsZnRlc3RfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCnsKfQojIDQ1OCAiLi9p bmNsdWRlL2xpbnV4L2xvY2tkZXAuaCIKc3RydWN0IGxvY2tfY2xhc3Nfa2V5IHsgfTsKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg bG9ja2RlcF9yZWdpc3Rlcl9rZXkoc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpCnsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBsb2NrZGVwX3VucmVnaXN0ZXJfa2V5KHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KQp7Cn0K CgoKCnN0cnVjdCBsb2NrZGVwX21hcCB7IH07CiMgNDg0ICIuL2luY2x1ZGUvbGludXgvbG9ja2Rl cC5oIgpzdHJ1Y3QgcGluX2Nvb2tpZSB7IH07CiMgNDk0ICIuL2luY2x1ZGUvbGludXgvbG9ja2Rl cC5oIgplbnVtIHhobG9ja19jb250ZXh0X3QgewogWEhMT0NLX0hBUkQsCiBYSExPQ0tfU09GVCwK IFhITE9DS19DVFhfTlIsCn07CiMgNTA4ICIuL2luY2x1ZGUvbGludXgvbG9ja2RlcC5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IGxvY2tkZXBfaW52YXJpYW50X3N0YXRlKGJvb2wgZm9yY2UpIHt9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbG9ja2RlcF9mcmVl X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKSB7fQojIDU3MCAiLi9pbmNsdWRlL2xpbnV4 L2xvY2tkZXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBwcmludF9pcnF0cmFjZV9ldmVudHMoc3RydWN0IHRhc2tfc3RydWN0 ICpjdXJyKQp7Cn0KIyA2NjggIi4vaW5jbHVkZS9saW51eC9sb2NrZGVwLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKbG9ja2Rl cF9yY3Vfc3VzcGljaW91cyhjb25zdCBjaGFyICpmaWxlLCBjb25zdCBpbnQgbGluZSwgY29uc3Qg Y2hhciAqcykKewp9CiMgMTkgIi4vaW5jbHVkZS9saW51eC9zcGlubG9ja190eXBlcy5oIiAyCgp0 eXBlZGVmIHN0cnVjdCByYXdfc3BpbmxvY2sgewogYXJjaF9zcGlubG9ja190IHJhd19sb2NrOwoK CgoKCgoKfSByYXdfc3BpbmxvY2tfdDsKIyA2MSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX3R5 cGVzLmgiCnR5cGVkZWYgc3RydWN0IHNwaW5sb2NrIHsKIHVuaW9uIHsKICBzdHJ1Y3QgcmF3X3Nw aW5sb2NrIHJsb2NrOwojIDcyICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfdHlwZXMuaCIKIH07 Cn0gc3BpbmxvY2tfdDsKIyA4MyAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX3R5cGVzLmgiCiMg MSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja190eXBlcy5oIiAxCiMgMTEgIi4vaW5jbHVkZS9saW51 eC9yd2xvY2tfdHlwZXMuaCIKdHlwZWRlZiBzdHJ1Y3QgewogYXJjaF9yd2xvY2tfdCByYXdfbG9j azsKCgoKCgoKCn0gcndsb2NrX3Q7CiMgODQgIi4vaW5jbHVkZS9saW51eC9zcGlubG9ja190eXBl cy5oIiAyCiMgODQgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCgoKCgoKIyAxICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3NwaW5sb2NrLmgiIDEKIyAxMCAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9zcGlubG9jay5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnQuaCIg MQojIDE4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhcmF2aXJ0LmgiCiMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9mcmFtZS5oIiAxCiMgMTkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFy YXZpcnQuaCIgMgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBsb25nIHBhcmF2aXJ0X3NjaGVkX2Nsb2NrKHZvaWQp CnsKIHJldHVybiAoeyB1bnNpZ25lZCBsb25nIGxvbmcgX19yZXQ7IHVuc2lnbmVkIGxvbmcgX19l ZGkgPSBfX2VkaSwgX19lc2kgPSBfX2VzaSwgX19lZHggPSBfX2VkeCwgX19lY3ggPSBfX2VjeCwg X19lYXggPSBfX2VheDs7ICgodm9pZClwdl9vcHMudGltZS5zY2hlZF9jbG9jayk7IGlmIChzaXpl b2YodW5zaWduZWQgbG9uZyBsb25nKSA+IHNpemVvZih1bnNpZ25lZCBsb25nKSkgeyBhc20gdm9s YXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0 cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9u XG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2Vj dGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIg IiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVt XSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Ns b2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19l c2kpLCAiPWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIj1hIiAoX19lYXgpLCAiK3IiIChjdXJy ZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9v ZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIHRpbWUuc2NoZWRfY2xvY2sp IC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLnRpbWUu c2NoZWRfY2xvY2spKSwgW3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpIDog Im1lbW9yeSIsICJjYyIgLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIpOyBfX3JldCA9ICh1bnNp Z25lZCBsb25nIGxvbmcpKCgoKHU2NClfX2VkeCkgPDwgMzIpIHwgX19lYXgpOyB9IGVsc2UgeyBh c20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2Nh cmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3Bz ZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5w dXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAi ICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90 eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2 aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1T IiAoX19lc2kpLCAiPWQiIChfX2VkeCksICI9YyIgKF9fZWN4KSwgIj1hIiAoX19lYXgpLCAiK3Ii IChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVp bHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIHRpbWUuc2NoZWRf Y2xvY2spIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3Bz LnRpbWUuc2NoZWRfY2xvY2spKSwgW3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0g MSkpIDogIm1lbW9yeSIsICJjYyIgLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIpOyBfX3JldCA9 ICh1bnNpZ25lZCBsb25nIGxvbmcpKF9fZWF4ICYgKHsgdW5zaWduZWQgbG9uZyBfX21hc2sgPSB+ MFVMOyBzd2l0Y2ggKHNpemVvZih1bnNpZ25lZCBsb25nIGxvbmcpKSB7IGNhc2UgMTogX19tYXNr ID0gMHhmZlVMOyBicmVhazsgY2FzZSAyOiBfX21hc2sgPSAweGZmZmZVTDsgYnJlYWs7IGNhc2Ug NDogX19tYXNrID0gMHhmZmZmZmZmZlVMOyBicmVhazsgZGVmYXVsdDogYnJlYWs7IH0gX19tYXNr OyB9KSk7IH0gX19yZXQ7IH0pOwp9CgpzdHJ1Y3Qgc3RhdGljX2tleTsKZXh0ZXJuIHN0cnVjdCBz dGF0aWNfa2V5IHBhcmF2aXJ0X3N0ZWFsX2VuYWJsZWQ7CmV4dGVybiBzdHJ1Y3Qgc3RhdGljX2tl eSBwYXJhdmlydF9zdGVhbF9ycV9lbmFibGVkOwoKX19hdHRyaWJ1dGVfXygoX19leHRlcm5hbGx5 X3Zpc2libGVfXykpIHZvaWQgX19uYXRpdmVfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3Bp bmxvY2sgKmxvY2spOwpib29sIHB2X2lzX25hdGl2ZV9zcGluX3VubG9jayh2b2lkKTsKX19hdHRy aWJ1dGVfXygoX19leHRlcm5hbGx5X3Zpc2libGVfXykpIGJvb2wgX19uYXRpdmVfdmNwdV9pc19w cmVlbXB0ZWQobG9uZyBjcHUpOwpib29sIHB2X2lzX25hdGl2ZV92Y3B1X2lzX3ByZWVtcHRlZCh2 b2lkKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHU2NCBwYXJhdmlydF9zdGVhbF9jbG9jayhpbnQgY3B1KQp7CiByZXR1cm4gKHsgdTY0 IF9fcmV0OyB1bnNpZ25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9fZWR4 ID0gX19lZHgsIF9fZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3BzLnRp bWUuc3RlYWxfY2xvY2spOyBpZiAoc2l6ZW9mKHU2NCkgPiBzaXplb2YodW5zaWduZWQgbG9uZykp IHsgYXNtIHZvbGF0aWxlKCIiICI3NzE6XG5cdCIgIjk5OTpcblx0IiAiLnB1c2hzZWN0aW9uIC5k aXNjYXJkLnJldHBvbGluZV9zYWZlXG5cdCIgIiAiICIucXVhZCIgIiAiICIgOTk5YlxuXHQiICIu cG9wc2VjdGlvblxuXHQiICJjYWxsIColY1twYXJhdmlydF9vcHB0cl07IiAiXG4iICI3NzI6XG4i ICIucHVzaHNlY3Rpb24gLnBhcmFpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAiICIuYmFsaWduIDgi ICIgIiAiXG4iICIgIiAiLnF1YWQiICIgIiAiIDc3MWJcbiIgIiAgLmJ5dGUgIiAiJWNbcGFyYXZp cnRfdHlwZW51bV0iICJcbiIgIiAgLmJ5dGUgNzcyYi03NzFiXG4iICIgIC5zaG9ydCAiICIlY1tw YXJhdmlydF9jbG9iYmVyXSIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIiIgOiAiPUQiIChfX2VkaSks ICI9UyIgKF9fZXNpKSwgIj1kIiAoX19lZHgpLCAiPWMiIChfX2VjeCksICI9YSIgKF9fZWF4KSwg IityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtwYXJhdmlydF90eXBlbnVtXSAiaSIgKChf X2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBsYXRlLCB0aW1lLnN0 ZWFsX2Nsb2NrKSAvIHNpemVvZih2b2lkICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2 X29wcy50aW1lLnN0ZWFsX2Nsb2NrKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5 KSAtIDEpKSwgIkQiICgodW5zaWduZWQgbG9uZykoY3B1KSkgOiAibWVtb3J5IiwgImNjIiAsICJy OCIsICJyOSIsICJyMTAiLCAicjExIik7IF9fcmV0ID0gKHU2NCkoKCgodTY0KV9fZWR4KSA8PCAz MikgfCBfX2VheCk7IH0gZWxzZSB7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQi ICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3Bw dHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwi XG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIg IC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxu IiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4i ICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19l Y3gpLCAiPWEiIChfX2VheCksICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZp cnRfdHlwZW51bV0gImkiICgoX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRj aF90ZW1wbGF0ZSwgdGltZS5zdGVhbF9jbG9jaykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZp cnRfb3BwdHJdICJpIiAoJihwdl9vcHMudGltZS5zdGVhbF9jbG9jaykpLCBbcGFyYXZpcnRfY2xv YmJlcl0gImkiICgoKDEgPDwgOSkgLSAxKSksICJEIiAoKHVuc2lnbmVkIGxvbmcpKGNwdSkpIDog Im1lbW9yeSIsICJjYyIgLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIpOyBfX3JldCA9ICh1NjQp KF9fZWF4ICYgKHsgdW5zaWduZWQgbG9uZyBfX21hc2sgPSB+MFVMOyBzd2l0Y2ggKHNpemVvZih1 NjQpKSB7IGNhc2UgMTogX19tYXNrID0gMHhmZlVMOyBicmVhazsgY2FzZSAyOiBfX21hc2sgPSAw eGZmZmZVTDsgYnJlYWs7IGNhc2UgNDogX19tYXNrID0gMHhmZmZmZmZmZlVMOyBicmVhazsgZGVm YXVsdDogYnJlYWs7IH0gX19tYXNrOyB9KSk7IH0gX19yZXQ7IH0pOwp9CgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzbG93X2Rv d25faW8odm9pZCkKewogcHZfb3BzLmNwdS5pb19kZWxheSgpOwoKCgoKCn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19mbHVz aF90bGIodm9pZCkKewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9f ZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lk KXB2X29wcy5tbXUuZmx1c2hfdGxiX3VzZXIpOyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAi OTk5OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIg Ii5xdWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2 aXJ0X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9u cyxcImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcx YlxuIiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJi LTc3MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2Vj dGlvblxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19lc2kpLCAiPWQiIChfX2VkeCksICI9 YyIgKF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtwYXJhdmlydF90eXBl bnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBs YXRlLCBtbXUuZmx1c2hfdGxiX3VzZXIpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29w cHRyXSAiaSIgKCYocHZfb3BzLm1tdS5mbHVzaF90bGJfdXNlcikpLCBbcGFyYXZpcnRfY2xvYmJl cl0gImkiICgoKDEgPDwgOSkgLSAxKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAi cjkiLCAicjEwIiwgInIxMSIpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2ZsdXNoX3RsYl9nbG9iYWwodm9pZCkK ewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9 IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5tbXUu Zmx1c2hfdGxiX2tlcm5lbCk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIg Ii5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIg IiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJd OyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4i ICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5i eXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAi ICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIi IDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gp LCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAo KF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5m bHVzaF90bGJfa2VybmVsKSAvIHNpemVvZih2b2lkICopKSksIFtwYXJhdmlydF9vcHB0cl0gImki ICgmKHB2X29wcy5tbXUuZmx1c2hfdGxiX2tlcm5lbCkpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImki ICgoKDEgPDwgOSkgLSAxKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAi cjEwIiwgInIxMSIpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2ZsdXNoX3RsYl9vbmVfdXNlcih1bnNpZ25lZCBs b25nIGFkZHIpCnsKICh7IHVuc2lnbmVkIGxvbmcgX19lZGkgPSBfX2VkaSwgX19lc2kgPSBfX2Vz aSwgX19lZHggPSBfX2VkeCwgX19lY3ggPSBfX2VjeCwgX19lYXggPSBfX2VheDs7ICgodm9pZClw dl9vcHMubW11LmZsdXNoX3RsYl9vbmVfdXNlcik7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQi ICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIg IiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFy YXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rp b25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3 NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3 MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3Bz ZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwg Ij1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5 cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVt cGxhdGUsIG1tdS5mbHVzaF90bGJfb25lX3VzZXIpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2 aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLm1tdS5mbHVzaF90bGJfb25lX3VzZXIpKSwgW3BhcmF2 aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBsb25nKShh ZGRyKSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAicjEwIiwgInIxMSIp OyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBmbHVzaF90bGJfb3RoZXJzKGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVt YXNrLAogICAgICAgIGNvbnN0IHN0cnVjdCBmbHVzaF90bGJfaW5mbyAqaW5mbykKewogKHsgdW5z aWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBf X2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5tbXUuZmx1c2hfdGxi X290aGVycyk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJc blx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAi NzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJh bGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVj W3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQg IiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAo X19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChj dXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRp bl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5mbHVzaF90bGJf b3RoZXJzKSAvIHNpemVvZih2b2lkICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2X29w cy5tbXUuZmx1c2hfdGxiX290aGVycykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwg OSkgLSAxKSksICJEIiAoKHVuc2lnbmVkIGxvbmcpKGNwdW1hc2spKSwgIlMiICgodW5zaWduZWQg bG9uZykoaW5mbykpIDogIm1lbW9yeSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIs ICJyMTEiKTsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGFyYXZpcnRfdGxiX3JlbW92ZV90YWJsZShzdHJ1Y3QgbW11 X2dhdGhlciAqdGxiLCB2b2lkICp0YWJsZSkKewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9f ZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9 IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5tbXUudGxiX3JlbW92ZV90YWJsZSk7IGFzbSB2b2xhdGls ZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xp bmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0 IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9u IC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIgIlxuIiAiICIg Ii5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAi XG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJl cl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMiIChfX2VzaSks ICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIp IDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFy YXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS50bGJfcmVtb3ZlX3RhYmxlKSAvIHNpemVvZih2b2lk ICopKSksIFtwYXJhdmlydF9vcHB0cl0gImkiICgmKHB2X29wcy5tbXUudGxiX3JlbW92ZV90YWJs ZSkpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAxKSksICJEIiAoKHVuc2ln bmVkIGxvbmcpKHRsYikpLCAiUyIgKCh1bnNpZ25lZCBsb25nKSh0YWJsZSkpIDogIm1lbW9yeSIs ICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGFy YXZpcnRfYXJjaF9leGl0X21tYXAoc3RydWN0IG1tX3N0cnVjdCAqbW0pCnsKICh7IHVuc2lnbmVk IGxvbmcgX19lZGkgPSBfX2VkaSwgX19lc2kgPSBfX2VzaSwgX19lZHggPSBfX2VkeCwgX19lY3gg PSBfX2VjeCwgX19lYXggPSBfX2VheDs7ICgodm9pZClwdl9vcHMubW11LmV4aXRfbW1hcCk7IGFz bSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2Fy ZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJcblx0IiAiLnBvcHNl Y3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAiNzcyOlxuIiAiLnB1 c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJhbGlnbiA4IiAiICIg IlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVjW3BhcmF2aXJ0X3R5 cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQgIiAiJWNbcGFyYXZp cnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1EIiAoX19lZGkpLCAiPVMi IChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3IiIChjdXJyZW50X3N0YWNr X3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihz dHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIG1tdS5leGl0X21tYXApIC8gc2l6ZW9mKHZv aWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLm1tdS5leGl0X21tYXApKSwg W3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBs b25nKShtbSkpIDogIm1lbW9yeSIsICJjYyIgLCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJy MTEiKTsgfSk7Cn0KIyA2NDIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHB2X3F1ZXVlZF9zcGluX2xvY2tf c2xvd3BhdGgoc3RydWN0IHFzcGlubG9jayAqbG9jaywKICAgICAgIHUzMiB2YWwpCnsKICh7IHVu c2lnbmVkIGxvbmcgX19lZGkgPSBfX2VkaSwgX19lc2kgPSBfX2VzaSwgX19lZHggPSBfX2VkeCwg X19lY3ggPSBfX2VjeCwgX19lYXggPSBfX2VheDs7ICgodm9pZClwdl9vcHMubG9jay5xdWV1ZWRf c3Bpbl9sb2NrX3Nsb3dwYXRoKTsgYXNtIHZvbGF0aWxlKCIiICI3NzE6XG5cdCIgIjk5OTpcblx0 IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJldHBvbGluZV9zYWZlXG5cdCIgIiAiICIucXVhZCIg IiAiICIgOTk5YlxuXHQiICIucG9wc2VjdGlvblxuXHQiICJjYWxsIColY1twYXJhdmlydF9vcHB0 cl07IiAiXG4iICI3NzI6XG4iICIucHVzaHNlY3Rpb24gLnBhcmFpbnN0cnVjdGlvbnMsXCJhXCJc biIgIiAiICIuYmFsaWduIDgiICIgIiAiXG4iICIgIiAiLnF1YWQiICIgIiAiIDc3MWJcbiIgIiAg LmJ5dGUgIiAiJWNbcGFyYXZpcnRfdHlwZW51bV0iICJcbiIgIiAgLmJ5dGUgNzcyYi03NzFiXG4i ICIgIC5zaG9ydCAiICIlY1twYXJhdmlydF9jbG9iYmVyXSIgIlxuIiAiLnBvcHNlY3Rpb25cbiIg IiIgOiAiPUQiIChfX2VkaSksICI9UyIgKF9fZXNpKSwgIj1kIiAoX19lZHgpLCAiPWMiIChfX2Vj eCksICIrciIgKGN1cnJlbnRfc3RhY2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImki ICgoX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgbG9j ay5xdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRoKSAvIHNpemVvZih2b2lkICopKSksIFtwYXJhdmly dF9vcHB0cl0gImkiICgmKHB2X29wcy5sb2NrLnF1ZXVlZF9zcGluX2xvY2tfc2xvd3BhdGgpKSwg W3BhcmF2aXJ0X2Nsb2JiZXJdICJpIiAoKCgxIDw8IDkpIC0gMSkpLCAiRCIgKCh1bnNpZ25lZCBs b25nKShsb2NrKSksICJTIiAoKHVuc2lnbmVkIGxvbmcpKHZhbCkpIDogIm1lbW9yeSIsICJjYyIg LCAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiKTsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBwdl9xdWV1ZWRfc3Bpbl91bmxvY2soc3RydWN0IHFz cGlubG9jayAqbG9jaykKewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9 IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2 b2lkKXB2X29wcy5sb2NrLnF1ZXVlZF9zcGluX3VubG9jay5mdW5jKTsgYXNtIHZvbGF0aWxlKCIi ICI3NzE6XG5cdCIgIjk5OTpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJldHBvbGluZV9z YWZlXG5cdCIgIiAiICIucXVhZCIgIiAiICIgOTk5YlxuXHQiICIucG9wc2VjdGlvblxuXHQiICJj YWxsIColY1twYXJhdmlydF9vcHB0cl07IiAiXG4iICI3NzI6XG4iICIucHVzaHNlY3Rpb24gLnBh cmFpbnN0cnVjdGlvbnMsXCJhXCJcbiIgIiAiICIuYmFsaWduIDgiICIgIiAiXG4iICIgIiAiLnF1 YWQiICIgIiAiIDc3MWJcbiIgIiAgLmJ5dGUgIiAiJWNbcGFyYXZpcnRfdHlwZW51bV0iICJcbiIg IiAgLmJ5dGUgNzcyYi03NzFiXG4iICIgIC5zaG9ydCAiICIlY1twYXJhdmlydF9jbG9iYmVyXSIg IlxuIiAiLnBvcHNlY3Rpb25cbiIgIiIgOiAiPWEiIChfX2VheCksICIrciIgKGN1cnJlbnRfc3Rh Y2tfcG9pbnRlcikgOiBbcGFyYXZpcnRfdHlwZW51bV0gImkiICgoX19idWlsdGluX29mZnNldG9m KHN0cnVjdCBwYXJhdmlydF9wYXRjaF90ZW1wbGF0ZSwgbG9jay5xdWV1ZWRfc3Bpbl91bmxvY2su ZnVuYykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMu bG9jay5xdWV1ZWRfc3Bpbl91bmxvY2suZnVuYykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgo KDEgPDwgMCkpKSwgIkQiICgodW5zaWduZWQgbG9uZykobG9jaykpIDogIm1lbW9yeSIsICJjYyIg KTsgfSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBwdl93YWl0 KHU4ICpwdHIsIHU4IHZhbCkKewogKHsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2Vz aSA9IF9fZXNpLCBfX2VkeCA9IF9fZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4Ozsg KCh2b2lkKXB2X29wcy5sb2NrLndhaXQpOyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5 OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5x dWFkIiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0 X29wcHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxc ImFcIlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxu IiAiICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3 MWJcbiIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlv blxuIiAiIiA6ICI9RCIgKF9fZWRpKSwgIj1TIiAoX19lc2kpLCAiPWQiIChfX2VkeCksICI9YyIg KF9fZWN4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtwYXJhdmlydF90eXBlbnVt XSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3BhdGNoX3RlbXBsYXRl LCBsb2NrLndhaXQpIC8gc2l6ZW9mKHZvaWQgKikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYo cHZfb3BzLmxvY2sud2FpdCkpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgOSkgLSAx KSksICJEIiAoKHVuc2lnbmVkIGxvbmcpKHB0cikpLCAiUyIgKCh1bnNpZ25lZCBsb25nKSh2YWwp KSA6ICJtZW1vcnkiLCAiY2MiICwgInJheCIsICJyOCIsICJyOSIsICJyMTAiLCAicjExIik7IH0p Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgcHZfa2ljayhpbnQg Y3B1KQp7CiAoeyB1bnNpZ25lZCBsb25nIF9fZWRpID0gX19lZGksIF9fZXNpID0gX19lc2ksIF9f ZWR4ID0gX19lZHgsIF9fZWN4ID0gX19lY3gsIF9fZWF4ID0gX19lYXg7OyAoKHZvaWQpcHZfb3Bz LmxvY2sua2ljayk7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNo c2VjdGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5 OWJcblx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxu IiAiNzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAi LmJhbGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIg IiVjW3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hv cnQgIiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1E IiAoX19lZGkpLCAiPVMiIChfX2VzaSksICI9ZCIgKF9fZWR4KSwgIj1jIiAoX19lY3gpLCAiK3Ii IChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1dICJpIiAoKF9fYnVp bHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUsIGxvY2sua2ljaykg LyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZpcnRfb3BwdHJdICJpIiAoJihwdl9vcHMubG9jay5r aWNrKSksIFtwYXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCA5KSAtIDEpKSwgIkQiICgodW5z aWduZWQgbG9uZykoY3B1KSkgOiAibWVtb3J5IiwgImNjIiAsICJyYXgiLCAicjgiLCAicjkiLCAi cjEwIiwgInIxMSIpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBi b29sIHB2X3ZjcHVfaXNfcHJlZW1wdGVkKGxvbmcgY3B1KQp7CiByZXR1cm4gKHsgYm9vbCBfX3Jl dDsgdW5zaWduZWQgbG9uZyBfX2VkaSA9IF9fZWRpLCBfX2VzaSA9IF9fZXNpLCBfX2VkeCA9IF9f ZWR4LCBfX2VjeCA9IF9fZWN4LCBfX2VheCA9IF9fZWF4OzsgKCh2b2lkKXB2X29wcy5sb2NrLnZj cHVfaXNfcHJlZW1wdGVkLmZ1bmMpOyBpZiAoc2l6ZW9mKGJvb2wpID4gc2l6ZW9mKHVuc2lnbmVk IGxvbmcpKSB7IGFzbSB2b2xhdGlsZSgiIiAiNzcxOlxuXHQiICI5OTk6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC5yZXRwb2xpbmVfc2FmZVxuXHQiICIgIiAiLnF1YWQiICIgIiAiIDk5OWJc blx0IiAiLnBvcHNlY3Rpb25cblx0IiAiY2FsbCAqJWNbcGFyYXZpcnRfb3BwdHJdOyIgIlxuIiAi NzcyOlxuIiAiLnB1c2hzZWN0aW9uIC5wYXJhaW5zdHJ1Y3Rpb25zLFwiYVwiXG4iICIgIiAiLmJh bGlnbiA4IiAiICIgIlxuIiAiICIgIi5xdWFkIiAiICIgIiA3NzFiXG4iICIgIC5ieXRlICIgIiVj W3BhcmF2aXJ0X3R5cGVudW1dIiAiXG4iICIgIC5ieXRlIDc3MmItNzcxYlxuIiAiICAuc2hvcnQg IiAiJWNbcGFyYXZpcnRfY2xvYmJlcl0iICJcbiIgIi5wb3BzZWN0aW9uXG4iICIiIDogIj1hIiAo X19lYXgpLCAiK3IiIChjdXJyZW50X3N0YWNrX3BvaW50ZXIpIDogW3BhcmF2aXJ0X3R5cGVudW1d ICJpIiAoKF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgcGFyYXZpcnRfcGF0Y2hfdGVtcGxhdGUs IGxvY2sudmNwdV9pc19wcmVlbXB0ZWQuZnVuYykgLyBzaXplb2Yodm9pZCAqKSkpLCBbcGFyYXZp cnRfb3BwdHJdICJpIiAoJihwdl9vcHMubG9jay52Y3B1X2lzX3ByZWVtcHRlZC5mdW5jKSksIFtw YXJhdmlydF9jbG9iYmVyXSAiaSIgKCgoMSA8PCAwKSkpLCAiRCIgKCh1bnNpZ25lZCBsb25nKShj cHUpKSA6ICJtZW1vcnkiLCAiY2MiICk7IF9fcmV0ID0gKGJvb2wpKCgoKHU2NClfX2VkeCkgPDwg MzIpIHwgX19lYXgpOyB9IGVsc2UgeyBhc20gdm9sYXRpbGUoIiIgIjc3MTpcblx0IiAiOTk5Olxu XHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmV0cG9saW5lX3NhZmVcblx0IiAiICIgIi5xdWFk IiAiICIgIiA5OTliXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgImNhbGwgKiVjW3BhcmF2aXJ0X29w cHRyXTsiICJcbiIgIjc3MjpcbiIgIi5wdXNoc2VjdGlvbiAucGFyYWluc3RydWN0aW9ucyxcImFc IlxuIiAiICIgIi5iYWxpZ24gOCIgIiAiICJcbiIgIiAiICIucXVhZCIgIiAiICIgNzcxYlxuIiAi ICAuYnl0ZSAiICIlY1twYXJhdmlydF90eXBlbnVtXSIgIlxuIiAiICAuYnl0ZSA3NzJiLTc3MWJc biIgIiAgLnNob3J0ICIgIiVjW3BhcmF2aXJ0X2Nsb2JiZXJdIiAiXG4iICIucG9wc2VjdGlvblxu IiAiIiA6ICI9YSIgKF9fZWF4KSwgIityIiAoY3VycmVudF9zdGFja19wb2ludGVyKSA6IFtwYXJh dmlydF90eXBlbnVtXSAiaSIgKChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBhcmF2aXJ0X3Bh dGNoX3RlbXBsYXRlLCBsb2NrLnZjcHVfaXNfcHJlZW1wdGVkLmZ1bmMpIC8gc2l6ZW9mKHZvaWQg KikpKSwgW3BhcmF2aXJ0X29wcHRyXSAiaSIgKCYocHZfb3BzLmxvY2sudmNwdV9pc19wcmVlbXB0 ZWQuZnVuYykpLCBbcGFyYXZpcnRfY2xvYmJlcl0gImkiICgoKDEgPDwgMCkpKSwgIkQiICgodW5z aWduZWQgbG9uZykoY3B1KSkgOiAibWVtb3J5IiwgImNjIiApOyBfX3JldCA9IChib29sKShfX2Vh eCAmICh7IHVuc2lnbmVkIGxvbmcgX19tYXNrID0gfjBVTDsgc3dpdGNoIChzaXplb2YoYm9vbCkp IHsgY2FzZSAxOiBfX21hc2sgPSAweGZmVUw7IGJyZWFrOyBjYXNlIDI6IF9fbWFzayA9IDB4ZmZm ZlVMOyBicmVhazsgY2FzZSA0OiBfX21hc2sgPSAweGZmZmZmZmZmVUw7IGJyZWFrOyBkZWZhdWx0 OiBicmVhazsgfSBfX21hc2s7IH0pKTsgfSBfX3JldDsgfSk7Cn0KCnZvaWQgX19yYXdfY2FsbGVl X3NhdmVfX19uYXRpdmVfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2sp Owpib29sIF9fcmF3X2NhbGxlZV9zYXZlX19fbmF0aXZlX3ZjcHVfaXNfcHJlZW1wdGVkKGxvbmcg Y3B1KTsKIyA3OTggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcGFyYXZpcnQuaCIKZXh0ZXJuIHZv aWQgZGVmYXVsdF9iYW5uZXIodm9pZCk7CiMgOTM5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Bh cmF2aXJ0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgcGFyYXZpcnRfYXJjaF9kdXBfbW1hcChzdHJ1Y3QgbW1fc3RydWN0ICpv bGRtbSwKICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQp7Cn0KIyAxMSAiLi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMgMjcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3Bp bmxvY2suaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5oIiAxCiMgMTQg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdTMyIHF1ZXVlZF9mZXRjaF9zZXRfcGVuZGluZ19hY3F1aXJlKHN0cnVj dCBxc3BpbmxvY2sgKmxvY2spCnsKIHUzMiB2YWw7CgoKCgoKCiB2YWwgPSAoeyBib29sIGM7IGFz bSB2b2xhdGlsZSAoIi5wdXNoc2VjdGlvbiAuc21wX2xvY2tzLFwiYVwiXG4iICIuYmFsaWduIDRc biIgIi5sb25nIDY3MWYgLSAuXG4iICIucG9wc2VjdGlvblxuIiAiNjcxOiIgIlxuXHRsb2NrOyAi ICJidHNsIiAiICVbdmFsXSwgIiAiJVt2YXJdIiAiXG5cdC8qIG91dHB1dCBjb25kaXRpb24gY29k ZSAiICJjIiAiKi9cbiIgOiBbdmFyXSAiK20iIChsb2NrLT52YWwuY291bnRlciksICI9QGNjIiAi YyIgKGMpIDogW3ZhbF0gIkkiICgoMCArIDgpKSA6ICJtZW1vcnkiKTsgYzsgfSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICogKDFVIDw8ICgwICsgOCkpOwogdmFsIHw9IGF0b21p Y19yZWFkKCZsb2NrLT52YWwpICYgfigoKDFVIDw8IDgpIC0gMSkgPDwgKDAgKyA4KSk7CgogcmV0 dXJuIHZhbDsKfQoKCmV4dGVybiB2b2lkIG5hdGl2ZV9xdWV1ZWRfc3Bpbl9sb2NrX3Nsb3dwYXRo KHN0cnVjdCBxc3BpbmxvY2sgKmxvY2ssIHUzMiB2YWwpOwpleHRlcm4gdm9pZCBfX3B2X2luaXRf bG9ja19oYXNoKHZvaWQpOwpleHRlcm4gdm9pZCBfX3B2X3F1ZXVlZF9zcGluX2xvY2tfc2xvd3Bh dGgoc3RydWN0IHFzcGlubG9jayAqbG9jaywgdTMyIHZhbCk7CmV4dGVybiB2b2lkIF9fcmF3X2Nh bGxlZV9zYXZlX19fcHZfcXVldWVkX3NwaW5fdW5sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2sp OwojIDQzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5hdGl2ZV9x dWV1ZWRfc3Bpbl91bmxvY2soc3RydWN0IHFzcGlubG9jayAqbG9jaykKewogZG8geyBkbyB7IGV4 dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzQ1KHZvaWQpIF9fYXR0cmlidXRlX18oKF9f ZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0 eS4iKSkpOyBpZiAoISgoc2l6ZW9mKCombG9jay0+bG9ja2VkKSA9PSBzaXplb2YoY2hhcikgfHwg c2l6ZW9mKCombG9jay0+bG9ja2VkKSA9PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJmxvY2st PmxvY2tlZCkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKCombG9jay0+bG9ja2VkKSA9PSBzaXpl b2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfNDUoKTsgfSB3aGlsZSAoMCk7IF9fYXNt X18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7ICh7IHVuaW9uIHsgdHlwZW9mKCombG9j ay0+bG9ja2VkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZigqJmxvY2stPmxvY2tlZCkpICgwKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCombG9jay0+bG9j a2VkKSwgX191Ll9fYywgc2l6ZW9mKCombG9jay0+bG9ja2VkKSk7IF9fdS5fX3ZhbDsgfSk7IH0g d2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHF1ZXVlZF9zcGluX2xvY2tfc2xvd3BhdGgoc3RydWN0IHFzcGlu bG9jayAqbG9jaywgdTMyIHZhbCkKewogcHZfcXVldWVkX3NwaW5fbG9ja19zbG93cGF0aChsb2Nr LCB2YWwpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHF1ZXVlZF9zcGluX3VubG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2Nr KQp7CiBwdl9xdWV1ZWRfc3Bpbl91bmxvY2sobG9jayk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHZjcHVfaXNfcHJlZW1w dGVkKGxvbmcgY3B1KQp7CiByZXR1cm4gcHZfdmNwdV9pc19wcmVlbXB0ZWQoY3B1KTsKfQojIDcz ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9jay5oIgpleHRlcm4gc3RydWN0IHN0YXRp Y19rZXlfdHJ1ZSB2aXJ0X3NwaW5fbG9ja19rZXk7Cgp2b2lkIG5hdGl2ZV9wdl9sb2NrX2luaXQo dm9pZCkgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmli dXRlX18oKF9fY29sZF9fKSkgOwojIDg2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3FzcGlubG9j ay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIHZpcnRfc3Bpbl9sb2NrKHN0cnVjdCBxc3BpbmxvY2sgKmxvY2spCnsKIGlmICgh KHsgYm9vbCBicmFuY2g7IGlmIChfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigq JnZpcnRfc3Bpbl9sb2NrX2tleSksIHN0cnVjdCBzdGF0aWNfa2V5X3RydWUpKSBicmFuY2ggPSAh YXJjaF9zdGF0aWNfYnJhbmNoKCYoJnZpcnRfc3Bpbl9sb2NrX2tleSktPmtleSwgdHJ1ZSk7IGVs c2UgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKComdmlydF9zcGluX2xv Y2tfa2V5KSwgc3RydWN0IHN0YXRpY19rZXlfZmFsc2UpKSBicmFuY2ggPSAhYXJjaF9zdGF0aWNf YnJhbmNoX2p1bXAoJigmdmlydF9zcGluX2xvY2tfa2V5KS0+a2V5LCB0cnVlKTsgZWxzZSBicmFu Y2ggPSBfX19fd3JvbmdfYnJhbmNoX2Vycm9yKCk7IF9fYnVpbHRpbl9leHBlY3QoISEoYnJhbmNo KSwgMSk7IH0pKQogIHJldHVybiBmYWxzZTsKCgoKCgoKCiBkbyB7CiAgd2hpbGUgKGF0b21pY19y ZWFkKCZsb2NrLT52YWwpICE9IDApCiAgIGNwdV9yZWxheCgpOwogfSB3aGlsZSAoYXRvbWljX2Nt cHhjaGcoJmxvY2stPnZhbCwgMCwgKDFVIDw8IDApKSAhPSAwKTsKCiByZXR1cm4gdHJ1ZTsKfQoK CgoKCgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2suaCIgMQojIDIwICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvcXNwaW5sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lu bGluZV9fKSkgaW50IHF1ZXVlZF9zcGluX2lzX2xvY2tlZChzdHJ1Y3QgcXNwaW5sb2NrICpsb2Nr KQp7CgoKCgogcmV0dXJuIGF0b21pY19yZWFkKCZsb2NrLT52YWwpOwp9CiMgMzkgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9xc3BpbmxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSBpbnQgcXVldWVkX3NwaW5fdmFsdWVfdW5sb2NrZWQoc3RydWN0IHFzcGlubG9jayBsb2Nr KQp7CiByZXR1cm4gIWF0b21pY19yZWFkKCZsb2NrLnZhbCk7Cn0KCgoKCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVf XygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgcXVldWVkX3NwaW5faXNfY29udGVuZGVkKHN0cnVj dCBxc3BpbmxvY2sgKmxvY2spCnsKIHJldHVybiBhdG9taWNfcmVhZCgmbG9jay0+dmFsKSAmIH4o KCgxVSA8PCA4KSAtIDEpIDw8IDApOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgcXVldWVkX3NwaW5fdHJ5bG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQp7 CiB1MzIgdmFsID0gYXRvbWljX3JlYWQoJmxvY2stPnZhbCk7CgogaWYgKF9fYnVpbHRpbl9leHBl Y3QoISEodmFsKSwgMCkpCiAgcmV0dXJuIDA7CgogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoISEo YXRvbWljX3RyeV9jbXB4Y2hnKCZsb2NrLT52YWwsICZ2YWwsICgxVSA8PCAwKSkpLCAxKTsKfQoK ZXh0ZXJuIHZvaWQgcXVldWVkX3NwaW5fbG9ja19zbG93cGF0aChzdHJ1Y3QgcXNwaW5sb2NrICps b2NrLCB1MzIgdmFsKTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgcXVldWVkX3NwaW5fbG9jayhzdHJ1Y3QgcXNwaW5sb2NrICpsb2NrKQp7CiB1MzIgdmFsID0g MDsKCiBpZiAoX19idWlsdGluX2V4cGVjdCghIShhdG9taWNfdHJ5X2NtcHhjaGcoJmxvY2stPnZh bCwgJnZhbCwgKDFVIDw8IDApKSksIDEpKQogIHJldHVybjsKCiBxdWV1ZWRfc3Bpbl9sb2NrX3Ns b3dwYXRoKGxvY2ssIHZhbCk7Cn0KIyAxMTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vcXNwaW5s b2NrLmgiIDIKIyAyOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMgNDMg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vc3BpbmxvY2suaCIKIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvYXNtL3Fyd2xvY2suaCIgMQoKCgoKCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3Fyd2xv Y2suaCIgMQojIDMwICIuL2luY2x1ZGUvYXNtLWdlbmVyaWMvcXJ3bG9jay5oIgpleHRlcm4gdm9p ZCBxdWV1ZWRfcmVhZF9sb2NrX3Nsb3dwYXRoKHN0cnVjdCBxcndsb2NrICpsb2NrKTsKZXh0ZXJu IHZvaWQgcXVldWVkX3dyaXRlX2xvY2tfc2xvd3BhdGgoc3RydWN0IHFyd2xvY2sgKmxvY2spOwoK CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgcXVldWVkX3JlYWRfdHJ5bG9jayhzdHJ1Y3QgcXJ3bG9jayAqbG9jaykKewogdTMy IGNudHM7CgogY250cyA9IGF0b21pY19yZWFkKCZsb2NrLT5jbnRzKTsKIGlmIChfX2J1aWx0aW5f ZXhwZWN0KCEhKCEoY250cyAmIDB4MWZmKSksIDEpKSB7CiAgY250cyA9ICh1MzIpYXRvbWljX2Fk ZF9yZXR1cm4oKDFVIDw8IDkpLCAmbG9jay0+Y250cyk7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3Qo ISEoIShjbnRzICYgMHgxZmYpKSwgMSkpCiAgIHJldHVybiAxOwogIGF0b21pY19zdWIoKDFVIDw8 IDkpLCAmbG9jay0+Y250cyk7CiB9CiByZXR1cm4gMDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcXVldWVkX3dyaXRl X3RyeWxvY2soc3RydWN0IHFyd2xvY2sgKmxvY2spCnsKIHUzMiBjbnRzOwoKIGNudHMgPSBhdG9t aWNfcmVhZCgmbG9jay0+Y250cyk7CiBpZiAoX19idWlsdGluX2V4cGVjdCghIShjbnRzKSwgMCkp CiAgcmV0dXJuIDA7CgogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoISEoYXRvbWljX3RyeV9jbXB4 Y2hnKCZsb2NrLT5jbnRzLCAmY250cywgMHgwZmYpKSwgMSkKICAgICAgICAgICAgICAgIDsKfQoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBxdWV1ZWRfcmVhZF9sb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQp7CiB1MzIgY250 czsKCiBjbnRzID0gYXRvbWljX2FkZF9yZXR1cm4oKDFVIDw8IDkpLCAmbG9jay0+Y250cyk7CiBp ZiAoX19idWlsdGluX2V4cGVjdCghISghKGNudHMgJiAweDFmZikpLCAxKSkKICByZXR1cm47CgoK IHF1ZXVlZF9yZWFkX2xvY2tfc2xvd3BhdGgobG9jayk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHF1ZXVlZF93cml0 ZV9sb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQp7CiB1MzIgY250cyA9IDA7CgogaWYgKF9fYnVp bHRpbl9leHBlY3QoISEoYXRvbWljX3RyeV9jbXB4Y2hnKCZsb2NrLT5jbnRzLCAmY250cywgMHgw ZmYpKSwgMSkpCiAgcmV0dXJuOwoKIHF1ZXVlZF93cml0ZV9sb2NrX3Nsb3dwYXRoKGxvY2spOwp9 CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBxdWV1ZWRfcmVhZF91bmxvY2soc3RydWN0IHFyd2xvY2sgKmxvY2spCnsKCgoK ICh2b2lkKWF0b21pY19zdWJfcmV0dXJuKCgxVSA8PCA5KSwgJmxvY2stPmNudHMpOwp9CgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBxdWV1ZWRfd3JpdGVfdW5sb2NrKHN0cnVjdCBxcndsb2NrICpsb2NrKQp7CiBkbyB7IGRv IHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMTE2KHZvaWQpIF9fYXR0cmlidXRl X18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0 b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKCombG9jay0+d2xvY2tlZCkgPT0gc2l6ZW9mKGNo YXIpIHx8IHNpemVvZigqJmxvY2stPndsb2NrZWQpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9m KCombG9jay0+d2xvY2tlZCkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKCombG9jay0+d2xvY2tl ZCkgPT0gc2l6ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzExNigpOyB9IHdoaWxl ICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0 eXBlb2YoKiZsb2NrLT53bG9ja2VkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192 YWwgPSAoIHR5cGVvZigqJmxvY2stPndsb2NrZWQpKSAoMCkgfTsgX193cml0ZV9vbmNlX3NpemUo JigqJmxvY2stPndsb2NrZWQpLCBfX3UuX19jLCBzaXplb2YoKiZsb2NrLT53bG9ja2VkKSk7IF9f dS5fX3ZhbDsgfSk7IH0gd2hpbGUgKDApOwp9CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9x cndsb2NrLmgiIDIKIyA0NCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zcGlubG9jay5oIiAyCiMg OTAgIi4vaW5jbHVkZS9saW51eC9zcGlubG9jay5oIiAyCiMgMTc4ICIuL2luY2x1ZGUvbGludXgv c3BpbmxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBkb19yYXdfc3Bpbl9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKQp7 CiAodm9pZCkwOwogcXVldWVkX3NwaW5fbG9jaygmbG9jay0+cmF3X2xvY2spOwogZG8geyB9IHdo aWxlICgwKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQKZG9fcmF3X3NwaW5fbG9ja19mbGFncyhyYXdfc3BpbmxvY2tf dCAqbG9jaywgdW5zaWduZWQgbG9uZyAqZmxhZ3MpCnsKICh2b2lkKTA7CiBxdWV1ZWRfc3Bpbl9s b2NrKCZsb2NrLT5yYXdfbG9jayk7CiBkbyB7IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZG9fcmF3X3Nw aW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jaykKewogaW50IHJldCA9IHF1ZXVlZF9zcGlu X3RyeWxvY2soJihsb2NrKS0+cmF3X2xvY2spOwoKIGlmIChyZXQpCiAgZG8geyB9IHdoaWxlICgw KTsKCiByZXR1cm4gcmV0Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRvX3Jhd19zcGluX3VubG9jayhyYXdfc3BpbmxvY2tf dCAqbG9jaykKewogZG8geyB9IHdoaWxlICgwKTsKIHF1ZXVlZF9zcGluX3VubG9jaygmbG9jay0+ cmF3X2xvY2spOwogKHZvaWQpMDsKfQojIDMxMCAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgi CiMgMSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9jay5oIiAxCiMgMzExICIuL2luY2x1ZGUvbGludXgv c3BpbmxvY2suaCIgMgoKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAu aCIgMQojIDE4ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2tfYXBpX3NtcC5oIgppbnQgaW5fbG9j a19mdW5jdGlvbnModW5zaWduZWQgbG9uZyBhZGRyKTsKCgoKdm9pZCBfX2F0dHJpYnV0ZV9fKChz ZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX2xvY2socmF3X3NwaW5sb2NrX3Qg KmxvY2spIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkg X3Jhd19zcGluX2xvY2tfbmVzdGVkKHJhd19zcGlubG9ja190ICpsb2NrLCBpbnQgc3ViY2xhc3Mp CiAgICAgICAgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0Iikp KQpfcmF3X3NwaW5fbG9ja19uZXN0X2xvY2socmF3X3NwaW5sb2NrX3QgKmxvY2ssIHN0cnVjdCBs b2NrZGVwX21hcCAqbWFwKQogICAgICAgIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIu c3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX2xvY2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2sp IDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19z cGluX2xvY2tfaXJxKHJhd19zcGlubG9ja190ICpsb2NrKQogICAgICAgIDsKCnVuc2lnbmVkIGxv bmcgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl9s b2NrX2lycXNhdmUocmF3X3NwaW5sb2NrX3QgKmxvY2spCiAgICAgICAgOwp1bnNpZ25lZCBsb25n IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQpfcmF3X3NwaW5fbG9j a19pcnFzYXZlX25lc3RlZChyYXdfc3BpbmxvY2tfdCAqbG9jaywgaW50IHN1YmNsYXNzKQogICAg ICAgIDsKaW50IF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3 X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jayk7CmludCBfX2F0dHJpYnV0ZV9fKChz ZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX3RyeWxvY2tfYmgocmF3X3NwaW5s b2NrX3QgKmxvY2spOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0 IikpKSBfcmF3X3NwaW5fdW5sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKSA7CnZvaWQgX19hdHRy aWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfc3Bpbl91bmxvY2tfYmgo cmF3X3NwaW5sb2NrX3QgKmxvY2spIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3Bp bmxvY2sudGV4dCIpKSkgX3Jhd19zcGluX3VubG9ja19pcnEocmF3X3NwaW5sb2NrX3QgKmxvY2sp IDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkKX3Jhd19z cGluX3VubG9ja19pcnFyZXN0b3JlKHJhd19zcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25n IGZsYWdzKQogICAgICAgIDsKIyA4NiAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IF9fcmF3X3NwaW5fdHJ5bG9jayhyYXdfc3BpbmxvY2tfdCAqbG9jaykKewogX19hc21f XyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIGlmIChkb19yYXdfc3Bpbl90cnlsb2Nr KGxvY2spKSB7CiAgZG8geyB9IHdoaWxlICgwKTsKICByZXR1cm4gMTsKIH0KIF9fYXNtX18gX192 b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiByZXR1cm4gMDsKfQojIDEwNCAiLi9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3Jhd19zcGluX2xvY2tf aXJxc2F2ZShyYXdfc3BpbmxvY2tfdCAqbG9jaykKewogdW5zaWduZWQgbG9uZyBmbGFnczsKCiBk byB7IGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXky OyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXkyKTsgMTsgfSk7IGZsYWdzID0gYXJjaF9sb2Nh bF9pcnFfc2F2ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRp bGVfXygiIjogOiA6Im1lbW9yeSIpOwogZG8geyB9IHdoaWxlICgwKTsKIyAxMTkgIi4vaW5jbHVk ZS9saW51eC9zcGlubG9ja19hcGlfc21wLmgiCiBkb19yYXdfc3Bpbl9sb2NrX2ZsYWdzKGxvY2ss ICZmbGFncyk7CgogcmV0dXJuIGZsYWdzOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3NwaW5fbG9ja19pcnEocmF3 X3NwaW5sb2NrX3QgKmxvY2spCnsKIGRvIHsgYXJjaF9sb2NhbF9pcnFfZGlzYWJsZSgpOyB9IHdo aWxlICgwKTsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBkbyB7IH0g d2hpbGUgKDApOwogZG9fcmF3X3NwaW5fbG9jayhsb2NrKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19zcGluX2xv Y2tfYmgocmF3X3NwaW5sb2NrX3QgKmxvY2spCnsKIF9fbG9jYWxfYmhfZGlzYWJsZV9pcCgodW5z aWduZWQgbG9uZylfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksICgoMiAqICgxVUwgPDwgKDAg KyA4KSkpICsgMCkpOwogZG8geyB9IHdoaWxlICgwKTsKIGRvX3Jhd19zcGluX2xvY2sobG9jayk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgX19yYXdfc3Bpbl9sb2NrKHJhd19zcGlubG9ja190ICpsb2NrKQp7CiBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogZG8geyB9IHdoaWxlICgwKTsKIGRvX3Jh d19zcGluX2xvY2sobG9jayk7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19zcGluX3VubG9jayhyYXdfc3Bpbmxv Y2tfdCAqbG9jaykKewogZG8geyB9IHdoaWxlICgwKTsKIGRvX3Jhd19zcGluX3VubG9jayhsb2Nr KTsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdf c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShyYXdfc3BpbmxvY2tfdCAqbG9jaywKICAgICAgICAgdW5z aWduZWQgbG9uZyBmbGFncykKewogZG8geyB9IHdoaWxlICgwKTsKIGRvX3Jhd19zcGluX3VubG9j ayhsb2NrKTsKIGRvIHsgZG8geyAoeyB1bnNpZ25lZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFn cykgX19kdW1teTI7ICh2b2lkKSgmX19kdW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsgYXJjaF9s b2NhbF9pcnFfcmVzdG9yZShmbGFncyk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIF9fYXNt X18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfc3Bpbl91bmxv Y2tfaXJxKHJhd19zcGlubG9ja190ICpsb2NrKQp7CiBkbyB7IH0gd2hpbGUgKDApOwogZG9fcmF3 X3NwaW5fdW5sb2NrKGxvY2spOwogZG8geyBhcmNoX2xvY2FsX2lycV9lbmFibGUoKTsgfSB3aGls ZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9f cmF3X3NwaW5fdW5sb2NrX2JoKHJhd19zcGlubG9ja190ICpsb2NrKQp7CiBkbyB7IH0gd2hpbGUg KDApOwogZG9fcmF3X3NwaW5fdW5sb2NrKGxvY2spOwogX19sb2NhbF9iaF9lbmFibGVfaXAoKHVu c2lnbmVkIGxvbmcpX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCAoKDIgKiAoMVVMIDw8ICgw ICsgOCkpKSArIDApKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fcmF3X3NwaW5fdHJ5bG9ja19iaChyYXdfc3BpbmxvY2tf dCAqbG9jaykKewogX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRp bl9yZXR1cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CiBpZiAo ZG9fcmF3X3NwaW5fdHJ5bG9jayhsb2NrKSkgewogIGRvIHsgfSB3aGlsZSAoMCk7CiAgcmV0dXJu IDE7CiB9CiBfX2xvY2FsX2JoX2VuYWJsZV9pcCgodW5zaWduZWQgbG9uZylfX2J1aWx0aW5fcmV0 dXJuX2FkZHJlc3MoMCksICgoMiAqICgxVUwgPDwgKDAgKyA4KSkpICsgMCkpOwogcmV0dXJuIDA7 Cn0KCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja19hcGlfc21wLmgiIDEKIyAxOCAiLi9pbmNs dWRlL2xpbnV4L3J3bG9ja19hcGlfc21wLmgiCnZvaWQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigi LnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfcmVhZF9sb2NrKHJ3bG9ja190ICpsb2NrKSA7CnZvaWQg X19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9j ayhyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9j ay50ZXh0IikpKSBfcmF3X3JlYWRfbG9ja19iaChyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9fYXR0 cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3X3dyaXRlX2xvY2tfYmgo cndsb2NrX3QgKmxvY2spIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2su dGV4dCIpKSkgX3Jhd19yZWFkX2xvY2tfaXJxKHJ3bG9ja190ICpsb2NrKSA7CnZvaWQgX19hdHRy aWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfbG9ja19pcnEo cndsb2NrX3QgKmxvY2spIDsKdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIu c3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFkX2xvY2tfaXJxc2F2ZShyd2xvY2tfdCAqbG9jaykK ICAgICAgIDsKdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2su dGV4dCIpKSkgX3Jhd193cml0ZV9sb2NrX2lycXNhdmUocndsb2NrX3QgKmxvY2spCiAgICAgICA7 CmludCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFk X3RyeWxvY2socndsb2NrX3QgKmxvY2spOwppbnQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNw aW5sb2NrLnRleHQiKSkpIF9yYXdfd3JpdGVfdHJ5bG9jayhyd2xvY2tfdCAqbG9jayk7CnZvaWQg X19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnNwaW5sb2NrLnRleHQiKSkpIF9yYXdfcmVhZF91bmxv Y2socndsb2NrX3QgKmxvY2spIDsKdm9pZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3Bpbmxv Y2sudGV4dCIpKSkgX3Jhd193cml0ZV91bmxvY2socndsb2NrX3QgKmxvY2spIDsKdm9pZCBfX2F0 dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkgX3Jhd19yZWFkX3VubG9ja19i aChyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9j ay50ZXh0IikpKSBfcmF3X3dyaXRlX3VubG9ja19iaChyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9f YXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKSBfcmF3X3JlYWRfdW5sb2Nr X2lycShyd2xvY2tfdCAqbG9jaykgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlu bG9jay50ZXh0IikpKSBfcmF3X3dyaXRlX3VubG9ja19pcnEocndsb2NrX3QgKmxvY2spIDsKdm9p ZCBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc3BpbmxvY2sudGV4dCIpKSkKX3Jhd19yZWFkX3Vu bG9ja19pcnFyZXN0b3JlKHJ3bG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzKQogICAg ICAgOwp2b2lkIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5zcGlubG9jay50ZXh0IikpKQpfcmF3 X3dyaXRlX3VubG9ja19pcnFyZXN0b3JlKHJ3bG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZs YWdzKQogICAgICAgOwojIDExNyAiLi9pbmNsdWRlL2xpbnV4L3J3bG9ja19hcGlfc21wLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBfX3Jhd19yZWFkX3RyeWxvY2socndsb2NrX3QgKmxvY2spCnsKIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBpZiAocXVldWVkX3JlYWRfdHJ5bG9jaygmKGxvY2spLT5y YXdfbG9jaykpIHsKICBkbyB7IH0gd2hpbGUgKDApOwogIHJldHVybiAxOwogfQogX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIHJldHVybiAwOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19yYXdfd3Jp dGVfdHJ5bG9jayhyd2xvY2tfdCAqbG9jaykKewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog OiJtZW1vcnkiKTsKIGlmIChxdWV1ZWRfd3JpdGVfdHJ5bG9jaygmKGxvY2spLT5yYXdfbG9jaykp IHsKICBkbyB7IH0gd2hpbGUgKDApOwogIHJldHVybiAxOwogfQogX19hc21fXyBfX3ZvbGF0aWxl X18oIiI6IDogOiJtZW1vcnkiKTsKIHJldHVybiAwOwp9CiMgMTQ2ICIuL2luY2x1ZGUvbGludXgv cndsb2NrX2FwaV9zbXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19yZWFkX2xvY2socndsb2NrX3QgKmxvY2spCnsK IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBkbyB7IH0gd2hpbGUgKDAp OwogZG8geyh2b2lkKTA7IHF1ZXVlZF9yZWFkX2xvY2soJihsb2NrKS0+cmF3X2xvY2spOyB9IHdo aWxlICgwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3Jhd19yZWFkX2xvY2tfaXJxc2F2ZShyd2xvY2tf dCAqbG9jaykKewogdW5zaWduZWQgbG9uZyBmbGFnczsKCiBkbyB7IGRvIHsgKHsgdW5zaWduZWQg bG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0g Jl9fZHVtbXkyKTsgMTsgfSk7IGZsYWdzID0gYXJjaF9sb2NhbF9pcnFfc2F2ZSgpOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIp OwogZG8geyB9IHdoaWxlICgwKTsKIGRvIHsodm9pZCkwOyBxdWV1ZWRfcmVhZF9sb2NrKCYoKGxv Y2spKS0+cmF3X2xvY2spOyB9IHdoaWxlICgwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7CiByZXR1cm4gZmxhZ3M7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfcmVhZF9sb2NrX2lycShy d2xvY2tfdCAqbG9jaykKewogZG8geyBhcmNoX2xvY2FsX2lycV9kaXNhYmxlKCk7IH0gd2hpbGUg KDApOwogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIGRvIHsgfSB3aGls ZSAoMCk7CiBkbyB7KHZvaWQpMDsgcXVldWVkX3JlYWRfbG9jaygmKGxvY2spLT5yYXdfbG9jayk7 IH0gd2hpbGUgKDApOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3JlYWRfbG9ja19iaChyd2xvY2tfdCAqbG9jaykK ewogX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRpbl9yZXR1cm5f YWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CiBkbyB7IH0gd2hpbGUg KDApOwogZG8geyh2b2lkKTA7IHF1ZXVlZF9yZWFkX2xvY2soJihsb2NrKS0+cmF3X2xvY2spOyB9 IHdoaWxlICgwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBfX3Jhd193cml0ZV9sb2NrX2lycXNhdmUocnds b2NrX3QgKmxvY2spCnsKIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CgogZG8geyBkbyB7ICh7IHVuc2ln bmVkIGxvbmcgX19kdW1teTsgdHlwZW9mKGZsYWdzKSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15 ID09ICZfX2R1bW15Mik7IDE7IH0pOyBmbGFncyA9IGFyY2hfbG9jYWxfaXJxX3NhdmUoKTsgfSB3 aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1v cnkiKTsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7KHZvaWQpMDsgcXVldWVkX3dyaXRlX2xvY2so JigobG9jaykpLT5yYXdfbG9jayk7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7CiByZXR1cm4gZmxhZ3M7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfd3JpdGVfbG9j a19pcnEocndsb2NrX3QgKmxvY2spCnsKIGRvIHsgYXJjaF9sb2NhbF9pcnFfZGlzYWJsZSgpOyB9 IHdoaWxlICgwKTsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBkbyB7 IH0gd2hpbGUgKDApOwogZG8geyh2b2lkKTA7IHF1ZXVlZF93cml0ZV9sb2NrKCYobG9jayktPnJh d19sb2NrKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfd3JpdGVfbG9ja19iaChyd2xvY2tf dCAqbG9jaykKewogX19sb2NhbF9iaF9kaXNhYmxlX2lwKCh1bnNpZ25lZCBsb25nKV9fYnVpbHRp bl9yZXR1cm5fYWRkcmVzcygwKSwgKCgyICogKDFVTCA8PCAoMCArIDgpKSkgKyAwKSk7CiBkbyB7 IH0gd2hpbGUgKDApOwogZG8geyh2b2lkKTA7IHF1ZXVlZF93cml0ZV9sb2NrKCYobG9jayktPnJh d19sb2NrKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfd3JpdGVfbG9jayhyd2xvY2tfdCAq bG9jaykKewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIGRvIHsgfSB3 aGlsZSAoMCk7CiBkbyB7KHZvaWQpMDsgcXVldWVkX3dyaXRlX2xvY2soJihsb2NrKS0+cmF3X2xv Y2spOyB9IHdoaWxlICgwKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dyaXRlX3VubG9jayhyd2xvY2tfdCAq bG9jaykKewogZG8geyB9IHdoaWxlICgwKTsKIGRvIHtxdWV1ZWRfd3JpdGVfdW5sb2NrKCYobG9j ayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVf XygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3JlYWRfdW5sb2NrKHJ3bG9ja190ICps b2NrKQp7CiBkbyB7IH0gd2hpbGUgKDApOwogZG8ge3F1ZXVlZF9yZWFkX3VubG9jaygmKGxvY2sp LT5yYXdfbG9jayk7ICh2b2lkKTA7IH0gd2hpbGUgKDApOwogX19hc21fXyBfX3ZvbGF0aWxlX18o IiI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApfX3Jhd19yZWFkX3VubG9ja19pcnFyZXN0b3JlKHJ3 bG9ja190ICpsb2NrLCB1bnNpZ25lZCBsb25nIGZsYWdzKQp7CiBkbyB7IH0gd2hpbGUgKDApOwog ZG8ge3F1ZXVlZF9yZWFkX3VubG9jaygmKGxvY2spLT5yYXdfbG9jayk7ICh2b2lkKTA7IH0gd2hp bGUgKDApOwogZG8geyBkbyB7ICh7IHVuc2lnbmVkIGxvbmcgX19kdW1teTsgdHlwZW9mKGZsYWdz KSBfX2R1bW15MjsgKHZvaWQpKCZfX2R1bW15ID09ICZfX2R1bW15Mik7IDE7IH0pOyBhcmNoX2xv Y2FsX2lycV9yZXN0b3JlKGZsYWdzKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogX19hc21f XyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX3Jhd19yZWFkX3VubG9j a19pcnEocndsb2NrX3QgKmxvY2spCnsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7cXVldWVkX3Jl YWRfdW5sb2NrKCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CiBkbyB7 IGFyY2hfbG9jYWxfaXJxX2VuYWJsZSgpOyB9IHdoaWxlICgwKTsKIF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19yYXdfcmVhZF91bmxvY2tfYmgocndsb2Nr X3QgKmxvY2spCnsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7cXVldWVkX3JlYWRfdW5sb2NrKCYo bG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CiBfX2xvY2FsX2JoX2VuYWJs ZV9pcCgodW5zaWduZWQgbG9uZylfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksICgoMiAqICgx VUwgPDwgKDAgKyA4KSkpICsgMCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dyaXRlX3VubG9ja19pcnFyZXN0 b3JlKHJ3bG9ja190ICpsb2NrLAogICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncykKewogZG8g eyB9IHdoaWxlICgwKTsKIGRvIHtxdWV1ZWRfd3JpdGVfdW5sb2NrKCYobG9jayktPnJhd19sb2Nr KTsgKHZvaWQpMDsgfSB3aGlsZSAoMCk7CiBkbyB7IGRvIHsgKHsgdW5zaWduZWQgbG9uZyBfX2R1 bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0gJl9fZHVtbXky KTsgMTsgfSk7IGFyY2hfbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOyB9IHdoaWxlICgwKTsgfSB3 aGlsZSAoMCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IF9fcmF3X3dyaXRlX3VubG9ja19pcnEocndsb2NrX3QgKmxvY2spCnsKIGRvIHsgfSB3aGlsZSAo MCk7CiBkbyB7cXVldWVkX3dyaXRlX3VubG9jaygmKGxvY2spLT5yYXdfbG9jayk7ICh2b2lkKTA7 IH0gd2hpbGUgKDApOwogZG8geyBhcmNoX2xvY2FsX2lycV9lbmFibGUoKTsgfSB3aGlsZSAoMCk7 CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmF3X3dy aXRlX3VubG9ja19iaChyd2xvY2tfdCAqbG9jaykKewogZG8geyB9IHdoaWxlICgwKTsKIGRvIHtx dWV1ZWRfd3JpdGVfdW5sb2NrKCYobG9jayktPnJhd19sb2NrKTsgKHZvaWQpMDsgfSB3aGlsZSAo MCk7CiBfX2xvY2FsX2JoX2VuYWJsZV9pcCgodW5zaWduZWQgbG9uZylfX2J1aWx0aW5fcmV0dXJu X2FkZHJlc3MoMCksICgoMiAqICgxVUwgPDwgKDAgKyA4KSkpICsgMCkpOwp9CiMgMTkxICIuL2lu Y2x1ZGUvbGludXgvc3BpbmxvY2tfYXBpX3NtcC5oIiAyCiMgMzE3ICIuL2luY2x1ZGUvbGludXgv c3BpbmxvY2suaCIgMgojIDMyNSAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgcmF3X3NwaW5sb2NrX3QgKnNwaW5sb2NrX2NoZWNr KHNwaW5sb2NrX3QgKmxvY2spCnsKIHJldHVybiAmbG9jay0+cmxvY2s7Cn0KCgoKCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX2xvY2soc3BpbmxvY2tfdCAq bG9jaykKewogX3Jhd19zcGluX2xvY2soJmxvY2stPnJsb2NrKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNwaW5fbG9ja19iaChzcGlubG9ja190ICpsb2NrKQp7 CiBfcmF3X3NwaW5fbG9ja19iaCgmbG9jay0+cmxvY2spOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBzcGluX3RyeWxvY2soc3BpbmxvY2tfdCAqbG9jaykKewogcmV0 dXJuIChfcmF3X3NwaW5fdHJ5bG9jaygmbG9jay0+cmxvY2spKTsKfQojIDM2MSAiLi9pbmNsdWRl L2xpbnV4L3NwaW5sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCBzcGluX2xvY2tfaXJxKHNwaW5sb2NrX3QgKmxvY2spCnsKIF9yYXdfc3Bpbl9sb2NrX2lycSgm bG9jay0+cmxvY2spOwp9CiMgMzc2ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNwaW5fdW5sb2NrKHNwaW5sb2NrX3Qg KmxvY2spCnsKIF9fcmF3X3NwaW5fdW5sb2NrKCZsb2NrLT5ybG9jayk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX3VubG9ja19iaChzcGlubG9ja190ICps b2NrKQp7CiBfcmF3X3NwaW5fdW5sb2NrX2JoKCZsb2NrLT5ybG9jayk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX3VubG9ja19pcnEoc3BpbmxvY2tfdCAq bG9jaykKewogX19yYXdfc3Bpbl91bmxvY2tfaXJxKCZsb2NrLT5ybG9jayk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBzcGluX3VubG9ja19pcnFyZXN0b3JlKHNw aW5sb2NrX3QgKmxvY2ssIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCnsKIGRvIHsgKHsgdW5zaWduZWQg bG9uZyBfX2R1bW15OyB0eXBlb2YoZmxhZ3MpIF9fZHVtbXkyOyAodm9pZCkoJl9fZHVtbXkgPT0g Jl9fZHVtbXkyKTsgMTsgfSk7IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9jay0+cmxv Y2ssIGZsYWdzKTsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IHNwaW5fdHJ5bG9ja19iaChzcGlubG9ja190ICpsb2NrKQp7CiByZXR1cm4gKF9y YXdfc3Bpbl90cnlsb2NrX2JoKCZsb2NrLT5ybG9jaykpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBzcGluX3RyeWxvY2tfaXJxKHNwaW5sb2NrX3QgKmxvY2spCnsK IHJldHVybiAoeyBkbyB7IGFyY2hfbG9jYWxfaXJxX2Rpc2FibGUoKTsgfSB3aGlsZSAoMCk7IChf cmF3X3NwaW5fdHJ5bG9jaygmbG9jay0+cmxvY2spKSA/IDEgOiAoeyBkbyB7IGFyY2hfbG9jYWxf aXJxX2VuYWJsZSgpOyB9IHdoaWxlICgwKTsgMDsgfSk7IH0pOwp9CiMgNDI5ICIuL2luY2x1ZGUv bGludXgvc3BpbmxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQg c3Bpbl9pc19sb2NrZWQoc3BpbmxvY2tfdCAqbG9jaykKewogcmV0dXJuIHF1ZXVlZF9zcGluX2lz X2xvY2tlZCgmKCZsb2NrLT5ybG9jayktPnJhd19sb2NrKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBpbnQgc3Bpbl9pc19jb250ZW5kZWQoc3BpbmxvY2tfdCAqbG9jaykK ewogcmV0dXJuIHF1ZXVlZF9zcGluX2lzX2NvbnRlbmRlZCgmKCZsb2NrLT5ybG9jayktPnJhd19s b2NrKTsKfQojIDQ1NCAiLi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgiCmV4dGVybiBpbnQgX2F0 b21pY19kZWNfYW5kX2xvY2soYXRvbWljX3QgKmF0b21pYywgc3BpbmxvY2tfdCAqbG9jayk7CgoK CmV4dGVybiBpbnQgX2F0b21pY19kZWNfYW5kX2xvY2tfaXJxc2F2ZShhdG9taWNfdCAqYXRvbWlj LCBzcGlubG9ja190ICpsb2NrLAogICAgIHVuc2lnbmVkIGxvbmcgKmZsYWdzKTsKCgoKaW50IF9f YWxsb2NfYnVja2V0X3NwaW5sb2NrcyhzcGlubG9ja190ICoqbG9ja3MsIHVuc2lnbmVkIGludCAq bG9ja19tYXNrLAogICAgICAgIHNpemVfdCBtYXhfc2l6ZSwgdW5zaWduZWQgaW50IGNwdV9tdWx0 LAogICAgICAgIGdmcF90IGdmcCwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBzdHJ1Y3QgbG9j a19jbGFzc19rZXkgKmtleSk7CiMgNDc4ICIuL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaCIKdm9p ZCBmcmVlX2J1Y2tldF9zcGlubG9ja3Moc3BpbmxvY2tfdCAqbG9ja3MpOwojIDE3ICIuL2luY2x1 ZGUvbGludXgva3JlZi5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiIDEKIyA4 OCAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCnN0cnVjdCBtdXRleDsKIyA5OCAiLi9pbmNs dWRlL2xpbnV4L3JlZmNvdW50LmgiCnR5cGVkZWYgc3RydWN0IHJlZmNvdW50X3N0cnVjdCB7CiBh dG9taWNfdCByZWZzOwp9IHJlZmNvdW50X3Q7CgoKCgoKZW51bSByZWZjb3VudF9zYXR1cmF0aW9u X3R5cGUgewogUkVGQ09VTlRfQUREX05PVF9aRVJPX09WRiwKIFJFRkNPVU5UX0FERF9PVkYsCiBS RUZDT1VOVF9BRERfVUFGLAogUkVGQ09VTlRfU1VCX1VBRiwKIFJFRkNPVU5UX0RFQ19MRUFLLAp9 OwoKdm9pZCByZWZjb3VudF93YXJuX3NhdHVyYXRlKHJlZmNvdW50X3QgKnIsIGVudW0gcmVmY291 bnRfc2F0dXJhdGlvbl90eXBlIHQpOwoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlZmNvdW50X3NldChyZWZjb3VudF90 ICpyLCBpbnQgbikKewogYXRvbWljX3NldCgmci0+cmVmcywgbik7Cn0KCgoKCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVk IGludCByZWZjb3VudF9yZWFkKGNvbnN0IHJlZmNvdW50X3QgKnIpCnsKIHJldHVybiBhdG9taWNf cmVhZCgmci0+cmVmcyk7Cn0KIyAxNTUgIi4vaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9vbCByZWZjb3VudF9hZGRfbm90 X3plcm8oaW50IGksIHJlZmNvdW50X3QgKnIpCnsKIGludCBvbGQgPSByZWZjb3VudF9yZWFkKHIp OwoKIGRvIHsKICBpZiAoIW9sZCkKICAgYnJlYWs7CiB9IHdoaWxlICghYXRvbWljX3RyeV9jbXB4 Y2hnKCZyLT5yZWZzLCAmb2xkLCBvbGQgKyBpKSk7CgogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo b2xkIDwgMCB8fCBvbGQgKyBpIDwgMCksIDApKQogIHJlZmNvdW50X3dhcm5fc2F0dXJhdGUociwg UkVGQ09VTlRfQUREX05PVF9aRVJPX09WRik7CgogcmV0dXJuIG9sZDsKfQojIDE4NiAiLi9pbmNs dWRlL2xpbnV4L3JlZmNvdW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVmY291bnRfYWRkKGludCBpLCByZWZjb3VudF90 ICpyKQp7CiBpbnQgb2xkID0gYXRvbWljX2ZldGNoX2FkZChpLCAmci0+cmVmcyk7CgogaWYgKF9f YnVpbHRpbl9leHBlY3QoISEoIW9sZCksIDApKQogIHJlZmNvdW50X3dhcm5fc2F0dXJhdGUociwg UkVGQ09VTlRfQUREX1VBRik7CiBlbHNlIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKG9sZCA8IDAg fHwgb2xkICsgaSA8IDApLCAwKSkKICByZWZjb3VudF93YXJuX3NhdHVyYXRlKHIsIFJFRkNPVU5U X0FERF9PVkYpOwp9CiMgMjA5ICIuL2luY2x1ZGUvbGludXgvcmVmY291bnQuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGJvb2wgcmVmY291bnRfaW5jX25vdF96ZXJv KHJlZmNvdW50X3QgKnIpCnsKIHJldHVybiByZWZjb3VudF9hZGRfbm90X3plcm8oMSwgcik7Cn0K IyAyMjYgIi4vaW5jbHVkZS9saW51eC9yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlZmNvdW50X2luYyhyZWZj b3VudF90ICpyKQp7CiByZWZjb3VudF9hZGQoMSwgcik7Cn0KIyAyNTEgIi4vaW5jbHVkZS9saW51 eC9yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9v bCByZWZjb3VudF9zdWJfYW5kX3Rlc3QoaW50IGksIHJlZmNvdW50X3QgKnIpCnsKIGludCBvbGQg PSBhdG9taWNfZmV0Y2hfc3ViKGksICZyLT5yZWZzKTsKCiBpZiAob2xkID09IGkpIHsKICBfX2Fz bV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogIHJldHVybiB0cnVlOwogfQoKIGlm IChfX2J1aWx0aW5fZXhwZWN0KCEhKG9sZCA8IDAgfHwgb2xkIC0gaSA8IDApLCAwKSkKICByZWZj b3VudF93YXJuX3NhdHVyYXRlKHIsIFJFRkNPVU5UX1NVQl9VQUYpOwoKIHJldHVybiBmYWxzZTsK fQojIDI3OSAiLi9pbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19hbmRfdGVzdChyZWZjb3VudF90 ICpyKQp7CiByZXR1cm4gcmVmY291bnRfc3ViX2FuZF90ZXN0KDEsIHIpOwp9CiMgMjk0ICIuL2lu Y2x1ZGUvbGludXgvcmVmY291bnQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByZWZjb3VudF9kZWMocmVmY291bnRfdCAqcikK ewogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoYXRvbWljX2ZldGNoX3N1YigxLCAmci0+cmVmcykg PD0gMSksIDApKQogIHJlZmNvdW50X3dhcm5fc2F0dXJhdGUociwgUkVGQ09VTlRfREVDX0xFQUsp Owp9CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGJvb2wg cmVmY291bnRfZGVjX2lmX29uZShyZWZjb3VudF90ICpyKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18o KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBib29sIHJlZmNvdW50X2RlY19ub3Rfb25lKHJlZmNv dW50X3QgKnIpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGJvb2wgcmVmY291bnRfZGVjX2FuZF9tdXRleF9sb2NrKHJlZmNvdW50X3QgKnIsIHN0cnVjdCBt dXRleCAqbG9jayk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkgYm9vbCByZWZjb3VudF9kZWNfYW5kX2xvY2socmVmY291bnRfdCAqciwgc3BpbmxvY2tfdCAq bG9jayk7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgYm9v bCByZWZjb3VudF9kZWNfYW5kX2xvY2tfaXJxc2F2ZShyZWZjb3VudF90ICpyLAogICAgICAgICAg ICAgc3BpbmxvY2tfdCAqbG9jaywKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmZsYWdzKTsK IyAxOCAiLi9pbmNsdWRlL2xpbnV4L2tyZWYuaCIgMgoKc3RydWN0IGtyZWYgewogcmVmY291bnRf dCByZWZjb3VudDsKfTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga3JlZl9pbml0KHN0cnVjdCBrcmVmICprcmVmKQp7 CiByZWZjb3VudF9zZXQoJmtyZWYtPnJlZmNvdW50LCAxKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGtyZWZf cmVhZChjb25zdCBzdHJ1Y3Qga3JlZiAqa3JlZikKewogcmV0dXJuIHJlZmNvdW50X3JlYWQoJmty ZWYtPnJlZmNvdW50KTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga3JlZl9nZXQoc3RydWN0IGtyZWYgKmtyZWYpCnsK IHJlZmNvdW50X2luYygma3JlZi0+cmVmY291bnQpOwp9CiMgNjIgIi4vaW5jbHVkZS9saW51eC9r cmVmLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCBrcmVmX3B1dChzdHJ1Y3Qga3JlZiAqa3JlZiwgdm9pZCAoKnJlbGVhc2UpKHN0 cnVjdCBrcmVmICprcmVmKSkKewogaWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdCgma3JlZi0+cmVm Y291bnQpKSB7CiAgcmVsZWFzZShrcmVmKTsKICByZXR1cm4gMTsKIH0KIHJldHVybiAwOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQga3JlZl9wdXRfbXV0ZXgoc3RydWN0IGtyZWYgKmtyZWYsCiAgICAgdm9pZCAoKnJlbGVhc2Up KHN0cnVjdCBrcmVmICprcmVmKSwKICAgICBzdHJ1Y3QgbXV0ZXggKmxvY2spCnsKIGlmIChyZWZj b3VudF9kZWNfYW5kX211dGV4X2xvY2soJmtyZWYtPnJlZmNvdW50LCBsb2NrKSkgewogIHJlbGVh c2Uoa3JlZik7CiAgcmV0dXJuIDE7CiB9CiByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGtyZWZfcHV0X2xvY2so c3RydWN0IGtyZWYgKmtyZWYsCiAgICB2b2lkICgqcmVsZWFzZSkoc3RydWN0IGtyZWYgKmtyZWYp LAogICAgc3BpbmxvY2tfdCAqbG9jaykKewogaWYgKHJlZmNvdW50X2RlY19hbmRfbG9jaygma3Jl Zi0+cmVmY291bnQsIGxvY2spKSB7CiAgcmVsZWFzZShrcmVmKTsKICByZXR1cm4gMTsKIH0KIHJl dHVybiAwOwp9CiMgMTA5ICIuL2luY2x1ZGUvbGludXgva3JlZi5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVf XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtyZWZfZ2V0X3VubGVzc196ZXJvKHN0cnVjdCBr cmVmICprcmVmKQp7CiByZXR1cm4gcmVmY291bnRfaW5jX25vdF96ZXJvKCZrcmVmLT5yZWZjb3Vu dCk7Cn0KIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL29z X3R5cGVzLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIgMQojIDE1ICIuL2luY2x1 ZGUvbGludXgvc2xhYi5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIgMQoKCgoKIyAxICIu L2luY2x1ZGUvbGludXgvbW1kZWJ1Zy5oIiAxCgoKCgoKCgpzdHJ1Y3QgcGFnZTsKc3RydWN0IHZt X2FyZWFfc3RydWN0OwpzdHJ1Y3QgbW1fc3RydWN0OwoKZXh0ZXJuIHZvaWQgZHVtcF9wYWdlKHN0 cnVjdCBwYWdlICpwYWdlLCBjb25zdCBjaGFyICpyZWFzb24pOwpleHRlcm4gdm9pZCBfX2R1bXBf cGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgY29uc3QgY2hhciAqcmVhc29uKTsKdm9pZCBkdW1wX3Zt YShjb25zdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CnZvaWQgZHVtcF9tbShjb25zdCBz dHJ1Y3QgbW1fc3RydWN0ICptbSk7CiMgNiAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIiAyCiMgMSAi Li9pbmNsdWRlL2xpbnV4L21tem9uZS5oIiAxCiMgMTAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUu aCIKIyAxICIuL2luY2x1ZGUvbGludXgvd2FpdC5oIiAxCiMgMTIgIi4vaW5jbHVkZS9saW51eC93 YWl0LmgiCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvd2FpdC5oIiAxCiMgMTMgIi4vaW5jbHVk ZS9saW51eC93YWl0LmgiIDIKCnR5cGVkZWYgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgd2FpdF9x dWV1ZV9lbnRyeV90OwoKdHlwZWRlZiBpbnQgKCp3YWl0X3F1ZXVlX2Z1bmNfdCkoc3RydWN0IHdh aXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCB1bnNpZ25lZCBtb2RlLCBpbnQgZmxhZ3MsIHZvaWQg KmtleSk7CmludCBkZWZhdWx0X3dha2VfZnVuY3Rpb24oc3RydWN0IHdhaXRfcXVldWVfZW50cnkg KndxX2VudHJ5LCB1bnNpZ25lZCBtb2RlLCBpbnQgZmxhZ3MsIHZvaWQgKmtleSk7CiMgMjcgIi4v aW5jbHVkZS9saW51eC93YWl0LmgiCnN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5IHsKIHVuc2lnbmVk IGludCBmbGFnczsKIHZvaWQgKnByaXZhdGU7CiB3YWl0X3F1ZXVlX2Z1bmNfdCBmdW5jOwogc3Ry dWN0IGxpc3RfaGVhZCBlbnRyeTsKfTsKCnN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgewogc3Bpbmxv Y2tfdCBsb2NrOwogc3RydWN0IGxpc3RfaGVhZCBoZWFkOwp9Owp0eXBlZGVmIHN0cnVjdCB3YWl0 X3F1ZXVlX2hlYWQgd2FpdF9xdWV1ZV9oZWFkX3Q7CgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CiMgNjEg Ii4vaW5jbHVkZS9saW51eC93YWl0LmgiCmV4dGVybiB2b2lkIF9faW5pdF93YWl0cXVldWVfaGVh ZChzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1 Y3QgbG9ja19jbGFzc19rZXkgKik7CiMgNzkgIi4vaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg aW5pdF93YWl0cXVldWVfZW50cnkoc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnApCnsKIHdxX2VudHJ5LT5mbGFncyA9IDA7CiB3cV9lbnRyeS0+ cHJpdmF0ZSA9IHA7CiB3cV9lbnRyeS0+ZnVuYyA9IGRlZmF1bHRfd2FrZV9mdW5jdGlvbjsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZAppbml0X3dhaXRxdWV1ZV9mdW5jX2VudHJ5KHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3 cV9lbnRyeSwgd2FpdF9xdWV1ZV9mdW5jX3QgZnVuYykKewogd3FfZW50cnktPmZsYWdzID0gMDsK IHdxX2VudHJ5LT5wcml2YXRlID0gKCh2b2lkICopMCk7CiB3cV9lbnRyeS0+ZnVuYyA9IGZ1bmM7 Cn0KIyAxMjQgIi4vaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB3YWl0cXVldWVfYWN0aXZlKHN0 cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQpCnsKIHJldHVybiAhbGlzdF9lbXB0eSgmd3Ff aGVhZC0+aGVhZCk7Cn0KIyAxMzcgIi4vaW5jbHVkZS9saW51eC93YWl0LmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgd3FfaGFz X3NpbmdsZV9zbGVlcGVyKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQpCnsKIHJldHVy biBsaXN0X2lzX3Npbmd1bGFyKCZ3cV9oZWFkLT5oZWFkKTsKfQojIDE1MCAiLi9pbmNsdWRlL2xp bnV4L3dhaXQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCB3cV9oYXNfc2xlZXBlcihzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3 cV9oZWFkKQp7CgoKCgoKCgogYXNtIHZvbGF0aWxlKCJsb2NrOyBhZGRsICQwLC00KCUlcnNwKSIg Ojo6ICJtZW1vcnkiLCAiY2MiKTsKIHJldHVybiB3YWl0cXVldWVfYWN0aXZlKHdxX2hlYWQpOwp9 CgpleHRlcm4gdm9pZCBhZGRfd2FpdF9xdWV1ZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9o ZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpOwpleHRlcm4gdm9pZCBhZGRf d2FpdF9xdWV1ZV9leGNsdXNpdmUoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3Ry dWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5KTsKZXh0ZXJuIHZvaWQgcmVtb3ZlX3dhaXRf cXVldWUoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVf ZW50cnkgKndxX2VudHJ5KTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19hZGRfd2FpdF9xdWV1ZShzdHJ1Y3Qgd2FpdF9xdWV1 ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpCnsKIGxp c3RfYWRkKCZ3cV9lbnRyeS0+ZW50cnksICZ3cV9oZWFkLT5oZWFkKTsKfQoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApfX2Fk ZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBz dHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpCnsKIHdxX2VudHJ5LT5mbGFncyB8PSAw eDAxOwogX19hZGRfd2FpdF9xdWV1ZSh3cV9oZWFkLCB3cV9lbnRyeSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19hZGRf d2FpdF9xdWV1ZV9lbnRyeV90YWlsKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0 cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRyeSkKewogbGlzdF9hZGRfdGFpbCgmd3FfZW50 cnktPmVudHJ5LCAmd3FfaGVhZC0+aGVhZCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKX19hZGRfd2FpdF9xdWV1ZV9lbnRy eV90YWlsX2V4Y2x1c2l2ZShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qg d2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnkpCnsKIHdxX2VudHJ5LT5mbGFncyB8PSAweDAxOwog X19hZGRfd2FpdF9xdWV1ZV9lbnRyeV90YWlsKHdxX2hlYWQsIHdxX2VudHJ5KTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApf X3JlbW92ZV93YWl0X3F1ZXVlKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0cnVj dCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRyeSkKewogbGlzdF9kZWwoJndxX2VudHJ5LT5lbnRy eSk7Cn0KCnZvaWQgX193YWtlX3VwKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHVu c2lnbmVkIGludCBtb2RlLCBpbnQgbnIsIHZvaWQgKmtleSk7CnZvaWQgX193YWtlX3VwX2xvY2tl ZF9rZXkoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgdW5zaWduZWQgaW50IG1vZGUs IHZvaWQgKmtleSk7CnZvaWQgX193YWtlX3VwX2xvY2tlZF9rZXlfYm9va21hcmsoc3RydWN0IHdh aXRfcXVldWVfaGVhZCAqd3FfaGVhZCwKICB1bnNpZ25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5LCB3 YWl0X3F1ZXVlX2VudHJ5X3QgKmJvb2ttYXJrKTsKdm9pZCBfX3dha2VfdXBfc3luY19rZXkoc3Ry dWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgdW5zaWduZWQgaW50IG1vZGUsIHZvaWQgKmtl eSk7CnZvaWQgX193YWtlX3VwX2xvY2tlZF9zeW5jX2tleShzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFk ICp3cV9oZWFkLCB1bnNpZ25lZCBpbnQgbW9kZSwgdm9pZCAqa2V5KTsKdm9pZCBfX3dha2VfdXBf bG9ja2VkKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHVuc2lnbmVkIGludCBtb2Rl LCBpbnQgbnIpOwp2b2lkIF9fd2FrZV91cF9zeW5jKHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndx X2hlYWQsIHVuc2lnbmVkIGludCBtb2RlKTsKIyAyNDggIi4vaW5jbHVkZS9saW51eC93YWl0Lmgi CmV4dGVybiB2b2lkIGluaXRfd2FpdF9lbnRyeShzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3Ff ZW50cnksIGludCBmbGFncyk7CiMgNzMyICIuL2luY2x1ZGUvbGludXgvd2FpdC5oIgpleHRlcm4g aW50IGRvX3dhaXRfaW50cih3YWl0X3F1ZXVlX2hlYWRfdCAqLCB3YWl0X3F1ZXVlX2VudHJ5X3Qg Kik7CmV4dGVybiBpbnQgZG9fd2FpdF9pbnRyX2lycSh3YWl0X3F1ZXVlX2hlYWRfdCAqLCB3YWl0 X3F1ZXVlX2VudHJ5X3QgKik7CiMgMTEyNiAiLi9pbmNsdWRlL2xpbnV4L3dhaXQuaCIKdm9pZCBw cmVwYXJlX3RvX3dhaXQoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdh aXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCBpbnQgc3RhdGUpOwp2b2lkIHByZXBhcmVfdG9fd2Fp dF9leGNsdXNpdmUoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRf cXVldWVfZW50cnkgKndxX2VudHJ5LCBpbnQgc3RhdGUpOwpsb25nIHByZXBhcmVfdG9fd2FpdF9l dmVudChzdHJ1Y3Qgd2FpdF9xdWV1ZV9oZWFkICp3cV9oZWFkLCBzdHJ1Y3Qgd2FpdF9xdWV1ZV9l bnRyeSAqd3FfZW50cnksIGludCBzdGF0ZSk7CnZvaWQgZmluaXNoX3dhaXQoc3RydWN0IHdhaXRf cXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfcXVldWVfZW50cnkgKndxX2VudHJ5KTsK bG9uZyB3YWl0X3dva2VuKHN0cnVjdCB3YWl0X3F1ZXVlX2VudHJ5ICp3cV9lbnRyeSwgdW5zaWdu ZWQgbW9kZSwgbG9uZyB0aW1lb3V0KTsKaW50IHdva2VuX3dha2VfZnVuY3Rpb24oc3RydWN0IHdh aXRfcXVldWVfZW50cnkgKndxX2VudHJ5LCB1bnNpZ25lZCBtb2RlLCBpbnQgc3luYywgdm9pZCAq a2V5KTsKaW50IGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRy eSAqd3FfZW50cnksIHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2b2lkICprZXkpOwojIDExICIu L2luY2x1ZGUvbGludXgvbW16b25lLmgiIDIKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvbnVtYS5o IiAxCiMgMTUgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoKIyAxICIuL2luY2x1ZGUvbGlu dXgvc2VxbG9jay5oIiAxCiMgNDggIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCnR5cGVkZWYg c3RydWN0IHNlcWNvdW50IHsKIHVuc2lnbmVkIHNlcXVlbmNlOwoKCgp9IHNlcWNvdW50X3Q7Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIF9fc2VxY291bnRfaW5pdChzZXFjb3VudF90ICpzLCBjb25zdCBjaGFyICpuYW1lLAogICAg ICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpCnsKCgoKIGRvIHsgKHZvaWQpKG5hbWUpOyAo dm9pZCkoa2V5KTsgfSB3aGlsZSAoMCk7CiBzLT5zZXF1ZW5jZSA9IDA7Cn0KIyAxMDggIi4vaW5j bHVkZS9saW51eC9zZXFsb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIF9fcmVhZF9zZXFjb3VudF9iZWdpbihjb25z dCBzZXFjb3VudF90ICpzKQp7CiB1bnNpZ25lZCByZXQ7CgpyZXBlYXQ6CiByZXQgPSAoeyB1bmlv biB7IHR5cGVvZihzLT5zZXF1ZW5jZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEp IF9fcmVhZF9vbmNlX3NpemUoJihzLT5zZXF1ZW5jZSksIF9fdS5fX2MsIHNpemVvZihzLT5zZXF1 ZW5jZSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKHMtPnNlcXVlbmNlKSwgX191 Ll9fYywgc2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsg fSk7CiBpZiAoX19idWlsdGluX2V4cGVjdCghIShyZXQgJiAxKSwgMCkpIHsKICBjcHVfcmVsYXgo KTsKICBnb3RvIHJlcGVhdDsKIH0KIHJldHVybiByZXQ7Cn0KIyAxMzAgIi4vaW5jbHVkZS9saW51 eC9zZXFsb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHVuc2lnbmVkIHJhd19yZWFkX3NlcWNvdW50KGNvbnN0IHNlcWNvdW50X3Qg KnMpCnsKIHVuc2lnbmVkIHJldCA9ICh7IHVuaW9uIHsgdHlwZW9mKHMtPnNlcXVlbmNlKSBfX3Zh bDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKHMtPnNlcXVl bmNlKSwgX191Ll9fYywgc2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6 ZV9ub2NoZWNrKCYocy0+c2VxdWVuY2UpLCBfX3UuX19jLCBzaXplb2Yocy0+c2VxdWVuY2UpKTsg ZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIi OiA6IDoibWVtb3J5Iik7CiByZXR1cm4gcmV0Owp9CiMgMTQ2ICIuL2luY2x1ZGUvbGludXgvc2Vx bG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB1bnNpZ25lZCByYXdfcmVhZF9zZXFjb3VudF9iZWdpbihjb25zdCBzZXFjb3VudF90 ICpzKQp7CiB1bnNpZ25lZCByZXQgPSBfX3JlYWRfc2VxY291bnRfYmVnaW4ocyk7CiBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogcmV0dXJuIHJldDsKfQojIDE2MiAiLi9p bmNsdWRlL2xpbnV4L3NlcWxvY2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgcmVhZF9zZXFjb3VudF9iZWdpbihjb25z dCBzZXFjb3VudF90ICpzKQp7CiA7CiByZXR1cm4gcmF3X3JlYWRfc2VxY291bnRfYmVnaW4ocyk7 Cn0KIyAxODIgIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJhd19zZXFjb3Vu dF9iZWdpbihjb25zdCBzZXFjb3VudF90ICpzKQp7CiB1bnNpZ25lZCByZXQgPSAoeyB1bmlvbiB7 IHR5cGVvZihzLT5zZXF1ZW5jZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9f cmVhZF9vbmNlX3NpemUoJihzLT5zZXF1ZW5jZSksIF9fdS5fX2MsIHNpemVvZihzLT5zZXF1ZW5j ZSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKHMtPnNlcXVlbmNlKSwgX191Ll9f Yywgc2l6ZW9mKHMtPnNlcXVlbmNlKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7 CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwogcmV0dXJuIHJldCAmIH4x Owp9CiMgMjAzICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19yZWFkX3NlcWNvdW50 X3JldHJ5KGNvbnN0IHNlcWNvdW50X3QgKnMsIHVuc2lnbmVkIHN0YXJ0KQp7CiByZXR1cm4gX19i dWlsdGluX2V4cGVjdCghIShzLT5zZXF1ZW5jZSAhPSBzdGFydCksIDApOwp9CiMgMjE4ICIuL2lu Y2x1ZGUvbGludXgvc2VxbG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmVhZF9zZXFjb3VudF9yZXRyeShjb25zdCBzZXFj b3VudF90ICpzLCB1bnNpZ25lZCBzdGFydCkKewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDog OiJtZW1vcnkiKTsKIHJldHVybiBfX3JlYWRfc2VxY291bnRfcmV0cnkocywgc3RhcnQpOwp9CgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgcmF3X3dyaXRlX3NlcWNvdW50X2JlZ2luKHNlcWNvdW50X3QgKnMpCnsKIHMtPnNlcXVl bmNlKys7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJh d193cml0ZV9zZXFjb3VudF9lbmQoc2VxY291bnRfdCAqcykKewogX19hc21fXyBfX3ZvbGF0aWxl X18oIiI6IDogOiJtZW1vcnkiKTsKIHMtPnNlcXVlbmNlKys7Cn0KIyAyNzIgIi4vaW5jbHVkZS9s aW51eC9zZXFsb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcmF3X3dyaXRlX3NlcWNvdW50X2JhcnJpZXIoc2VxY291bnRf dCAqcykKewogcy0+c2VxdWVuY2UrKzsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVt b3J5Iik7CiBzLT5zZXF1ZW5jZSsrOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcmF3X3JlYWRfc2VxY291bnRfbGF0Y2goc2Vx Y291bnRfdCAqcykKewoKIGludCBzZXEgPSAoeyB1bmlvbiB7IHR5cGVvZihzLT5zZXF1ZW5jZSkg X192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihzLT5z ZXF1ZW5jZSksIF9fdS5fX2MsIHNpemVvZihzLT5zZXF1ZW5jZSkpOyBlbHNlIF9fcmVhZF9vbmNl X3NpemVfbm9jaGVjaygmKHMtPnNlcXVlbmNlKSwgX191Ll9fYywgc2l6ZW9mKHMtPnNlcXVlbmNl KSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CiByZXR1cm4gc2VxOwp9CiMgMzYz ICIuL2luY2x1ZGUvbGludXgvc2VxbG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJhd193cml0ZV9zZXFjb3VudF9sYXRj aChzZXFjb3VudF90ICpzKQp7CiAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l bW9yeSIpOwogICAgICAgcy0+c2VxdWVuY2UrKzsKICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9f KCIiOiA6IDoibWVtb3J5Iik7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3NlcWNvdW50X2JlZ2luX25lc3Rl ZChzZXFjb3VudF90ICpzLCBpbnQgc3ViY2xhc3MpCnsKIHJhd193cml0ZV9zZXFjb3VudF9iZWdp bihzKTsKIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3JpdGVfc2VxY291bnRfYmVnaW4oc2Vx Y291bnRfdCAqcykKewogd3JpdGVfc2VxY291bnRfYmVnaW5fbmVzdGVkKHMsIDApOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHdyaXRlX3NlcWNvdW50X2VuZChzZXFjb3VudF90ICpzKQp7CiBkbyB7IH0gd2hpbGUgKDApOwog cmF3X3dyaXRlX3NlcWNvdW50X2VuZChzKTsKfQojIDM5OCAiLi9pbmNsdWRlL2xpbnV4L3NlcWxv Y2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCB3cml0ZV9zZXFjb3VudF9pbnZhbGlkYXRlKHNlcWNvdW50X3QgKnMpCnsKIF9f YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBzLT5zZXF1ZW5jZSs9MjsKfQoK dHlwZWRlZiBzdHJ1Y3Qgewogc3RydWN0IHNlcWNvdW50IHNlcWNvdW50Owogc3BpbmxvY2tfdCBs b2NrOwp9IHNlcWxvY2tfdDsKIyA0MzEgIi4vaW5jbHVkZS9saW51eC9zZXFsb2NrLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIHJlYWRfc2VxYmVnaW4oY29uc3Qgc2VxbG9ja190ICpzbCkKewogcmV0dXJuIHJlYWRfc2Vx Y291bnRfYmVnaW4oJnNsLT5zZXFjb3VudCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIHJlYWRfc2VxcmV0cnkoY29u c3Qgc2VxbG9ja190ICpzbCwgdW5zaWduZWQgc3RhcnQpCnsKIHJldHVybiByZWFkX3NlcWNvdW50 X3JldHJ5KCZzbC0+c2VxY291bnQsIHN0YXJ0KTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHdyaXRlX3NlcWxvY2so c2VxbG9ja190ICpzbCkKewogc3Bpbl9sb2NrKCZzbC0+bG9jayk7CiB3cml0ZV9zZXFjb3VudF9i ZWdpbigmc2wtPnNlcWNvdW50KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9zZXF1bmxvY2soc2VxbG9ja190ICpz bCkKewogd3JpdGVfc2VxY291bnRfZW5kKCZzbC0+c2VxY291bnQpOwogc3Bpbl91bmxvY2soJnNs LT5sb2NrKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB3cml0ZV9zZXFsb2NrX2JoKHNlcWxvY2tfdCAqc2wpCnsKIHNwaW5f bG9ja19iaCgmc2wtPmxvY2spOwogd3JpdGVfc2VxY291bnRfYmVnaW4oJnNsLT5zZXFjb3VudCk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgd3JpdGVfc2VxdW5sb2NrX2JoKHNlcWxvY2tfdCAqc2wpCnsKIHdyaXRlX3NlcWNv dW50X2VuZCgmc2wtPnNlcWNvdW50KTsKIHNwaW5fdW5sb2NrX2JoKCZzbC0+bG9jayk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgd3JpdGVfc2VxbG9ja19pcnEoc2VxbG9ja190ICpzbCkKewogc3Bpbl9sb2NrX2lycSgmc2wt PmxvY2spOwogd3JpdGVfc2VxY291bnRfYmVnaW4oJnNsLT5zZXFjb3VudCk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3Jp dGVfc2VxdW5sb2NrX2lycShzZXFsb2NrX3QgKnNsKQp7CiB3cml0ZV9zZXFjb3VudF9lbmQoJnNs LT5zZXFjb3VudCk7CiBzcGluX3VubG9ja19pcnEoJnNsLT5sb2NrKTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9u ZyBfX3dyaXRlX3NlcWxvY2tfaXJxc2F2ZShzZXFsb2NrX3QgKnNsKQp7CiB1bnNpZ25lZCBsb25n IGZsYWdzOwoKIGRvIHsgZG8geyAoeyB1bnNpZ25lZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFn cykgX19kdW1teTI7ICh2b2lkKSgmX19kdW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsgZmxhZ3Mg PSBfcmF3X3NwaW5fbG9ja19pcnFzYXZlKHNwaW5sb2NrX2NoZWNrKCZzbC0+bG9jaykpOyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCk7CiB3cml0ZV9zZXFjb3VudF9iZWdpbigmc2wtPnNlcWNvdW50 KTsKIHJldHVybiBmbGFnczsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAp3cml0ZV9zZXF1bmxvY2tfaXJxcmVzdG9yZShz ZXFsb2NrX3QgKnNsLCB1bnNpZ25lZCBsb25nIGZsYWdzKQp7CiB3cml0ZV9zZXFjb3VudF9lbmQo JnNsLT5zZXFjb3VudCk7CiBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzbC0+bG9jaywgZmxhZ3Mp Owp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgcmVhZF9zZXFsb2NrX2V4Y2woc2VxbG9ja190ICpzbCkKewogc3Bpbl9s b2NrKCZzbC0+bG9jayk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmVhZF9zZXF1bmxvY2tfZXhjbChzZXFsb2NrX3QgKnNs KQp7CiBzcGluX3VubG9jaygmc2wtPmxvY2spOwp9CiMgNTI2ICIuL2luY2x1ZGUvbGludXgvc2Vx bG9jay5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHJlYWRfc2VxYmVnaW5fb3JfbG9jayhzZXFsb2NrX3QgKmxvY2ssIGludCAq c2VxKQp7CiBpZiAoISgqc2VxICYgMSkpCiAgKnNlcSA9IHJlYWRfc2VxYmVnaW4obG9jayk7CiBl bHNlCiAgcmVhZF9zZXFsb2NrX2V4Y2wobG9jayk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBuZWVkX3NlcXJldHJ5KHNlcWxv Y2tfdCAqbG9jaywgaW50IHNlcSkKewogcmV0dXJuICEoc2VxICYgMSkgJiYgcmVhZF9zZXFyZXRy eShsb2NrLCBzZXEpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRvbmVfc2VxcmV0cnkoc2VxbG9ja190ICpsb2NrLCBpbnQg c2VxKQp7CiBpZiAoc2VxICYgMSkKICByZWFkX3NlcXVubG9ja19leGNsKGxvY2spOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHJlYWRfc2VxbG9ja19leGNsX2JoKHNlcWxvY2tfdCAqc2wpCnsKIHNwaW5fbG9ja19iaCgmc2wt PmxvY2spOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHJlYWRfc2VxdW5sb2NrX2V4Y2xfYmgoc2VxbG9ja190ICpzbCkKewog c3Bpbl91bmxvY2tfYmgoJnNsLT5sb2NrKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByZWFkX3NlcWxvY2tfZXhjbF9pcnEo c2VxbG9ja190ICpzbCkKewogc3Bpbl9sb2NrX2lycSgmc2wtPmxvY2spOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlYWRf c2VxdW5sb2NrX2V4Y2xfaXJxKHNlcWxvY2tfdCAqc2wpCnsKIHNwaW5fdW5sb2NrX2lycSgmc2wt PmxvY2spOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF9fcmVhZF9zZXFsb2NrX2V4Y2xfaXJxc2F2ZShzZXFs b2NrX3QgKnNsKQp7CiB1bnNpZ25lZCBsb25nIGZsYWdzOwoKIGRvIHsgZG8geyAoeyB1bnNpZ25l ZCBsb25nIF9fZHVtbXk7IHR5cGVvZihmbGFncykgX19kdW1teTI7ICh2b2lkKSgmX19kdW1teSA9 PSAmX19kdW1teTIpOyAxOyB9KTsgZmxhZ3MgPSBfcmF3X3NwaW5fbG9ja19pcnFzYXZlKHNwaW5s b2NrX2NoZWNrKCZzbC0+bG9jaykpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiByZXR1cm4g ZmxhZ3M7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQKcmVhZF9zZXF1bmxvY2tfZXhjbF9pcnFyZXN0b3JlKHNlcWxvY2tf dCAqc2wsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCnsKIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNs LT5sb2NrLCBmbGFncyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcKcmVhZF9zZXFiZWdpbl9vcl9sb2NrX2ly cXNhdmUoc2VxbG9ja190ICpsb2NrLCBpbnQgKnNlcSkKewogdW5zaWduZWQgbG9uZyBmbGFncyA9 IDA7CgogaWYgKCEoKnNlcSAmIDEpKQogICpzZXEgPSByZWFkX3NlcWJlZ2luKGxvY2spOwogZWxz ZQogIGRvIHsgZmxhZ3MgPSBfX3JlYWRfc2VxbG9ja19leGNsX2lycXNhdmUobG9jayk7IH0gd2hp bGUgKDApOwoKIHJldHVybiBmbGFnczsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApkb25lX3NlcXJldHJ5X2lycXJlc3RvcmUo c2VxbG9ja190ICpsb2NrLCBpbnQgc2VxLCB1bnNpZ25lZCBsb25nIGZsYWdzKQp7CiBpZiAoc2Vx ICYgMSkKICByZWFkX3NlcXVubG9ja19leGNsX2lycXJlc3RvcmUobG9jaywgZmxhZ3MpOwp9CiMg MTcgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9ub2Rl bWFzay5oIiAxCiMgOTggIi4vaW5jbHVkZS9saW51eC9ub2RlbWFzay5oIgp0eXBlZGVmIHN0cnVj dCB7IHVuc2lnbmVkIGxvbmcgYml0c1soKCgoMSA8PCAwKSkgKyAoKHNpemVvZihsb25nKSAqIDgp KSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4KSkpXTsgfSBub2RlbWFza190OwpleHRlcm4gbm9k ZW1hc2tfdCBfdW51c2VkX25vZGVtYXNrX2FyZ187CiMgMTA5ICIuL2luY2x1ZGUvbGludXgvbm9k ZW1hc2suaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdW5zaWduZWQgaW50IF9fbm9kZW1hc2tfcHJfbnVtbm9kZXMoY29uc3Qgbm9kZW1h c2tfdCAqbSkKewogcmV0dXJuIG0gPyAoMSA8PCAwKSA6IDA7Cn0Kc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29uc3QgdW5zaWduZWQgbG9u ZyAqX19ub2RlbWFza19wcl9iaXRzKGNvbnN0IG5vZGVtYXNrX3QgKm0pCnsKIHJldHVybiBtID8g bS0+Yml0cyA6ICgodm9pZCAqKTApOwp9CiMgMTI4ICIuL2luY2x1ZGUvbGludXgvbm9kZW1hc2su aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fbm9kZV9zZXQoaW50 IG5vZGUsIHZvbGF0aWxlIG5vZGVtYXNrX3QgKmRzdHApCnsKIHNldF9iaXQobm9kZSwgZHN0cC0+ Yml0cyk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIF9fbm9kZV9jbGVhcihpbnQgbm9kZSwgdm9sYXRpbGUgbm9kZW1hc2tf dCAqZHN0cCkKewogY2xlYXJfYml0KG5vZGUsIGRzdHAtPmJpdHMpOwp9CgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX25vZGVz X3NldGFsbChub2RlbWFza190ICpkc3RwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIGJpdG1hcF9m aWxsKGRzdHAtPmJpdHMsIG5iaXRzKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19ub2Rlc19jbGVhcihub2RlbWFza190 ICpkc3RwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIGJpdG1hcF96ZXJvKGRzdHAtPmJpdHMsIG5i aXRzKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgX19ub2RlX3Rlc3RfYW5kX3NldChpbnQgbm9kZSwgbm9kZW1hc2tf dCAqYWRkcikKewogcmV0dXJuIHRlc3RfYW5kX3NldF9iaXQobm9kZSwgYWRkci0+Yml0cyk7Cn0K CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBfX25vZGVzX2FuZChub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFza190ICpz cmMxcCwKICAgICBjb25zdCBub2RlbWFza190ICpzcmMycCwgdW5zaWduZWQgaW50IG5iaXRzKQp7 CiBiaXRtYXBfYW5kKGRzdHAtPmJpdHMsIHNyYzFwLT5iaXRzLCBzcmMycC0+Yml0cywgbmJpdHMp Owp9CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19ub2Rlc19vcihub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFza190 ICpzcmMxcCwKICAgICBjb25zdCBub2RlbWFza190ICpzcmMycCwgdW5zaWduZWQgaW50IG5iaXRz KQp7CiBiaXRtYXBfb3IoZHN0cC0+Yml0cywgc3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0 cyk7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBfX25vZGVzX3hvcihub2RlbWFza190ICpkc3RwLCBjb25zdCBub2RlbWFz a190ICpzcmMxcCwKICAgICBjb25zdCBub2RlbWFza190ICpzcmMycCwgdW5zaWduZWQgaW50IG5i aXRzKQp7CiBiaXRtYXBfeG9yKGRzdHAtPmJpdHMsIHNyYzFwLT5iaXRzLCBzcmMycC0+Yml0cywg bmJpdHMpOwp9CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgX19ub2Rlc19hbmRub3Qobm9kZW1hc2tfdCAqZHN0cCwgY29uc3Qg bm9kZW1hc2tfdCAqc3JjMXAsCiAgICAgY29uc3Qgbm9kZW1hc2tfdCAqc3JjMnAsIHVuc2lnbmVk IGludCBuYml0cykKewogYml0bWFwX2FuZG5vdChkc3RwLT5iaXRzLCBzcmMxcC0+Yml0cywgc3Jj MnAtPmJpdHMsIG5iaXRzKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfY29tcGxlbWVudChub2RlbWFza190 ICpkc3RwLAogICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIHVuc2lnbmVkIGludCBuYml0cykK ewogYml0bWFwX2NvbXBsZW1lbnQoZHN0cC0+Yml0cywgc3JjcC0+Yml0cywgbmJpdHMpOwp9CgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBfX25vZGVzX2VxdWFsKGNvbnN0IG5vZGVtYXNrX3QgKnNyYzFwLAogICAgIGNvbnN0IG5v ZGVtYXNrX3QgKnNyYzJwLCB1bnNpZ25lZCBpbnQgbmJpdHMpCnsKIHJldHVybiBiaXRtYXBfZXF1 YWwoc3JjMXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7Cn0KCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZXNfaW50 ZXJzZWN0cyhjb25zdCBub2RlbWFza190ICpzcmMxcCwKICAgICBjb25zdCBub2RlbWFza190ICpz cmMycCwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiByZXR1cm4gYml0bWFwX2ludGVyc2VjdHMoc3Jj MXAtPmJpdHMsIHNyYzJwLT5iaXRzLCBuYml0cyk7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZXNfc3Vic2V0KGNv bnN0IG5vZGVtYXNrX3QgKnNyYzFwLAogICAgIGNvbnN0IG5vZGVtYXNrX3QgKnNyYzJwLCB1bnNp Z25lZCBpbnQgbmJpdHMpCnsKIHJldHVybiBiaXRtYXBfc3Vic2V0KHNyYzFwLT5iaXRzLCBzcmMy cC0+Yml0cywgbmJpdHMpOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZXNfZW1wdHkoY29uc3Qgbm9kZW1hc2tfdCAq c3JjcCwgdW5zaWduZWQgaW50IG5iaXRzKQp7CiByZXR1cm4gYml0bWFwX2VtcHR5KHNyY3AtPmJp dHMsIG5iaXRzKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBfX25vZGVzX2Z1bGwoY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCwg dW5zaWduZWQgaW50IG5iaXRzKQp7CiByZXR1cm4gYml0bWFwX2Z1bGwoc3JjcC0+Yml0cywgbmJp dHMpOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fbm9kZXNfd2VpZ2h0KGNvbnN0IG5vZGVtYXNrX3QgKnNyY3AsIHVuc2ln bmVkIGludCBuYml0cykKewogcmV0dXJuIGJpdG1hcF93ZWlnaHQoc3JjcC0+Yml0cywgbmJpdHMp Owp9CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19ub2Rlc19zaGlmdF9yaWdodChub2RlbWFza190ICpkc3RwLAogICAgIGNv bnN0IG5vZGVtYXNrX3QgKnNyY3AsIGludCBuLCBpbnQgbmJpdHMpCnsKIGJpdG1hcF9zaGlmdF9y aWdodChkc3RwLT5iaXRzLCBzcmNwLT5iaXRzLCBuLCBuYml0cyk7Cn0KCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX25vZGVz X3NoaWZ0X2xlZnQobm9kZW1hc2tfdCAqZHN0cCwKICAgICBjb25zdCBub2RlbWFza190ICpzcmNw LCBpbnQgbiwgaW50IG5iaXRzKQp7CiBiaXRtYXBfc2hpZnRfbGVmdChkc3RwLT5iaXRzLCBzcmNw LT5iaXRzLCBuLCBuYml0cyk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19maXJzdF9ub2RlKGNvbnN0IG5vZGVtYXNr X3QgKnNyY3ApCnsKIHJldHVybiBfX2J1aWx0aW5fY2hvb3NlX2V4cHIoKCghIShzaXplb2YoKHR5 cGVvZigoaW50KSgoMSA8PCAwKSkpICopMSA9PSAodHlwZW9mKChpbnQpKGZpbmRfZmlyc3RfYml0 KHNyY3AtPmJpdHMsICgxIDw8IDApKSkpICopMSkpKSAmJiAoKHNpemVvZihpbnQpID09IHNpemVv ZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKChpbnQpKCgxIDw8IDApKSkgKiAwbCkpIDogKGludCAq KTgpKSkgJiYgKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKChp bnQpKGZpbmRfZmlyc3RfYml0KHNyY3AtPmJpdHMsICgxIDw8IDApKSkpICogMGwpKSA6IChpbnQg Kik4KSkpKSksICgoKGludCkoKDEgPDwgMCkpKSA8ICgoaW50KShmaW5kX2ZpcnN0X2JpdChzcmNw LT5iaXRzLCAoMSA8PCAwKSkpKSA/ICgoaW50KSgoMSA8PCAwKSkpIDogKChpbnQpKGZpbmRfZmly c3RfYml0KHNyY3AtPmJpdHMsICgxIDw8IDApKSkpKSwgKHsgdHlwZW9mKChpbnQpKCgxIDw8IDAp KSkgX19VTklRVUVfSURfX194MiA9ICgoaW50KSgoMSA8PCAwKSkpOyB0eXBlb2YoKGludCkoZmlu ZF9maXJzdF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCkpKSkgX19VTklRVUVfSURfX195MyA9ICgo aW50KShmaW5kX2ZpcnN0X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSkpKTsgKChfX1VOSVFVRV9J RF9fX3gyKSA8IChfX1VOSVFVRV9JRF9fX3kzKSA/IChfX1VOSVFVRV9JRF9fX3gyKSA6IChfX1VO SVFVRV9JRF9fX3kzKSk7IH0pKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX25leHRfbm9kZShpbnQgbiwgY29uc3Qgbm9k ZW1hc2tfdCAqc3JjcCkKewogcmV0dXJuIF9fYnVpbHRpbl9jaG9vc2VfZXhwcigoKCEhKHNpemVv ZigodHlwZW9mKChpbnQpKCgxIDw8IDApKSkgKikxID09ICh0eXBlb2YoKGludCkoZmluZF9uZXh0 X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSwgbisxKSkpICopMSkpKSAmJiAoKHNpemVvZihpbnQp ID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKChpbnQpKCgxIDw8IDApKSkgKiAwbCkp IDogKGludCAqKTgpKSkgJiYgKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKiko KGxvbmcpKChpbnQpKGZpbmRfbmV4dF9iaXQoc3JjcC0+Yml0cywgKDEgPDwgMCksIG4rMSkpKSAq IDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKChpbnQpKCgxIDw8IDApKSkgPCAoKGludCkoZmluZF9u ZXh0X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSwgbisxKSkpID8gKChpbnQpKCgxIDw8IDApKSkg OiAoKGludCkoZmluZF9uZXh0X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSwgbisxKSkpKSwgKHsg dHlwZW9mKChpbnQpKCgxIDw8IDApKSkgX19VTklRVUVfSURfX194NCA9ICgoaW50KSgoMSA8PCAw KSkpOyB0eXBlb2YoKGludCkoZmluZF9uZXh0X2JpdChzcmNwLT5iaXRzLCAoMSA8PCAwKSwgbisx KSkpIF9fVU5JUVVFX0lEX19feTUgPSAoKGludCkoZmluZF9uZXh0X2JpdChzcmNwLT5iaXRzLCAo MSA8PCAwKSwgbisxKSkpOyAoKF9fVU5JUVVFX0lEX19feDQpIDwgKF9fVU5JUVVFX0lEX19feTUp ID8gKF9fVU5JUVVFX0lEX19feDQpIDogKF9fVU5JUVVFX0lEX19feTUpKTsgfSkpOwp9CgoKCgoK CmludCBfX25leHRfbm9kZV9pbihpbnQgbm9kZSwgY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCk7Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGluaXRfbm9kZW1hc2tfb2Zfbm9kZShub2RlbWFza190ICptYXNrLCBpbnQgbm9kZSkKewog X19ub2Rlc19jbGVhcigmKCptYXNrKSwgKDEgPDwgMCkpOwogX19ub2RlX3NldCgobm9kZSksICYo Km1hc2spKTsKfQojIDI5OSAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2ZpcnN0 X3Vuc2V0X25vZGUoY29uc3Qgbm9kZW1hc2tfdCAqbWFza3ApCnsKIHJldHVybiBfX2J1aWx0aW5f Y2hvb3NlX2V4cHIoKCghIShzaXplb2YoKHR5cGVvZigoaW50KSgoMSA8PCAwKSkpICopMSA9PSAo dHlwZW9mKChpbnQpKGZpbmRfZmlyc3RfemVyb19iaXQobWFza3AtPmJpdHMsICgxIDw8IDApKSkp ICopMSkpKSAmJiAoKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcp KChpbnQpKCgxIDw8IDApKSkgKiAwbCkpIDogKGludCAqKTgpKSkgJiYgKHNpemVvZihpbnQpID09 IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKChpbnQpKGZpbmRfZmlyc3RfemVyb19iaXQo bWFza3AtPmJpdHMsICgxIDw8IDApKSkpICogMGwpKSA6IChpbnQgKik4KSkpKSksICgoKGludCko KDEgPDwgMCkpKSA8ICgoaW50KShmaW5kX2ZpcnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8 PCAwKSkpKSA/ICgoaW50KSgoMSA8PCAwKSkpIDogKChpbnQpKGZpbmRfZmlyc3RfemVyb19iaXQo bWFza3AtPmJpdHMsICgxIDw8IDApKSkpKSwgKHsgdHlwZW9mKChpbnQpKCgxIDw8IDApKSkgX19V TklRVUVfSURfX194NiA9ICgoaW50KSgoMSA8PCAwKSkpOyB0eXBlb2YoKGludCkoZmluZF9maXJz dF96ZXJvX2JpdChtYXNrcC0+Yml0cywgKDEgPDwgMCkpKSkgX19VTklRVUVfSURfX195NyA9ICgo aW50KShmaW5kX2ZpcnN0X3plcm9fYml0KG1hc2twLT5iaXRzLCAoMSA8PCAwKSkpKTsgKChfX1VO SVFVRV9JRF9fX3g2KSA8IChfX1VOSVFVRV9JRF9fX3k3KSA/IChfX1VOSVFVRV9JRF9fX3g2KSA6 IChfX1VOSVFVRV9JRF9fX3k3KSk7IH0pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsKfQojIDMzMyAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBfX25vZGVtYXNrX3BhcnNlX3VzZXIoY29uc3QgY2hhciAqYnVmLCBpbnQgbGVuLAogICAg IG5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKewogcmV0dXJuIGJpdG1hcF9wYXJzZV91c2Vy KGJ1ZiwgbGVuLCBkc3RwLT5iaXRzLCBuYml0cyk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19ub2RlbGlzdF9wYXJzZShj b25zdCBjaGFyICpidWYsIG5vZGVtYXNrX3QgKmRzdHAsIGludCBuYml0cykKewogcmV0dXJuIGJp dG1hcF9wYXJzZWxpc3QoYnVmLCBkc3RwLT5iaXRzLCBuYml0cyk7Cn0KCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbm9kZV9y ZW1hcChpbnQgb2xkYml0LAogIGNvbnN0IG5vZGVtYXNrX3QgKm9sZHAsIGNvbnN0IG5vZGVtYXNr X3QgKm5ld3AsIGludCBuYml0cykKewogcmV0dXJuIGJpdG1hcF9iaXRyZW1hcChvbGRiaXQsIG9s ZHAtPmJpdHMsIG5ld3AtPmJpdHMsIG5iaXRzKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbm9kZXNfcmVtYXAobm9k ZW1hc2tfdCAqZHN0cCwgY29uc3Qgbm9kZW1hc2tfdCAqc3JjcCwKICBjb25zdCBub2RlbWFza190 ICpvbGRwLCBjb25zdCBub2RlbWFza190ICpuZXdwLCBpbnQgbmJpdHMpCnsKIGJpdG1hcF9yZW1h cChkc3RwLT5iaXRzLCBzcmNwLT5iaXRzLCBvbGRwLT5iaXRzLCBuZXdwLT5iaXRzLCBuYml0cyk7 Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBfX25vZGVzX29udG8obm9kZW1hc2tfdCAqZHN0cCwgY29uc3Qgbm9kZW1hc2tf dCAqb3JpZ3AsCiAgY29uc3Qgbm9kZW1hc2tfdCAqcmVsbWFwcCwgaW50IG5iaXRzKQp7CiBiaXRt YXBfb250byhkc3RwLT5iaXRzLCBvcmlncC0+Yml0cywgcmVsbWFwcC0+Yml0cywgbmJpdHMpOwp9 CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgX19ub2Rlc19mb2xkKG5vZGVtYXNrX3QgKmRzdHAsIGNvbnN0IG5vZGVtYXNrX3Qg Km9yaWdwLAogIGludCBzeiwgaW50IG5iaXRzKQp7CiBiaXRtYXBfZm9sZChkc3RwLT5iaXRzLCBv cmlncC0+Yml0cywgc3osIG5iaXRzKTsKfQojIDM5MSAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNr LmgiCmVudW0gbm9kZV9zdGF0ZXMgewogTl9QT1NTSUJMRSwKIE5fT05MSU5FLAogTl9OT1JNQUxf TUVNT1JZLAoKCgogTl9ISUdIX01FTU9SWSA9IE5fTk9STUFMX01FTU9SWSwKCiBOX01FTU9SWSwK IE5fQ1BVLAogTlJfTk9ERV9TVEFURVMKfTsKCgoKCgoKZXh0ZXJuIG5vZGVtYXNrX3Qgbm9kZV9z dGF0ZXNbTlJfTk9ERV9TVEFURVNdOwojIDQ2NCAiLi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBub2RlX3N0YXRlKGludCBub2RlLCBlbnVtIG5vZGVfc3RhdGVzIHN0YXRlKQp7CiByZXR1 cm4gbm9kZSA9PSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIG5vZGVfc2V0X3N0YXRlKGludCBub2RlLCBlbnVtIG5vZGVf c3RhdGVzIHN0YXRlKQp7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbm9kZV9jbGVhcl9zdGF0ZShpbnQgbm9kZSwgZW51bSBu b2RlX3N0YXRlcyBzdGF0ZSkKewp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbnVtX25vZGVfc3RhdGUoZW51bSBub2RlX3N0YXRl cyBzdGF0ZSkKewogcmV0dXJuIDE7Cn0KIyA0OTkgIi4vaW5jbHVkZS9saW51eC9ub2RlbWFzay5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgbm9kZV9yYW5kb20oY29uc3Qgbm9kZW1hc2tfdCAqbWFzaykKewogcmV0dXJuIDA7Cn0K IyA1MzEgIi4vaW5jbHVkZS9saW51eC9ub2RlbWFzay5oIgpzdHJ1Y3Qgbm9kZW1hc2tfc2NyYXRj aCB7CiBub2RlbWFza190IG1hc2sxOwogbm9kZW1hc2tfdCBtYXNrMjsKfTsKIyAxOCAiLi9pbmNs dWRlL2xpbnV4L21tem9uZS5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2VibG9jay1mbGFn cy5oIiAxCiMgMTggIi4vaW5jbHVkZS9saW51eC9wYWdlYmxvY2stZmxhZ3MuaCIKZW51bSBwYWdl YmxvY2tfYml0cyB7CiBQQl9taWdyYXRlLAogUEJfbWlncmF0ZV9lbmQgPSBQQl9taWdyYXRlICsg MyAtIDEsCgogUEJfbWlncmF0ZV9za2lwLAoKCgoKCiBOUl9QQUdFQkxPQ0tfQklUUwp9OwojIDU1 ICIuL2luY2x1ZGUvbGludXgvcGFnZWJsb2NrLWZsYWdzLmgiCnN0cnVjdCBwYWdlOwoKdW5zaWdu ZWQgbG9uZyBnZXRfcGZuYmxvY2tfZmxhZ3NfbWFzayhzdHJ1Y3QgcGFnZSAqcGFnZSwKICAgIHVu c2lnbmVkIGxvbmcgcGZuLAogICAgdW5zaWduZWQgbG9uZyBlbmRfYml0aWR4LAogICAgdW5zaWdu ZWQgbG9uZyBtYXNrKTsKCnZvaWQgc2V0X3BmbmJsb2NrX2ZsYWdzX21hc2soc3RydWN0IHBhZ2Ug KnBhZ2UsCiAgICB1bnNpZ25lZCBsb25nIGZsYWdzLAogICAgdW5zaWduZWQgbG9uZyBwZm4sCiAg ICB1bnNpZ25lZCBsb25nIGVuZF9iaXRpZHgsCiAgICB1bnNpZ25lZCBsb25nIG1hc2spOwojIDE5 ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvcGFnZS1m bGFncy1sYXlvdXQuaCIgMQoKCgoKCiMgMSAiLi9pbmNsdWRlL2dlbmVyYXRlZC9ib3VuZHMuaCIg MQojIDcgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLWxheW91dC5oIiAyCiMgMjAgIi4vaW5j bHVkZS9saW51eC9tbXpvbmUuaCIgMgoKIyAxICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIg MQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXNfdGFzay5oIiAxCiMgMTkgIi4vaW5j bHVkZS9saW51eC9tbV90eXBlc190YXNrLmgiCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90 bGJiYXRjaC5oIiAxCgoKCgoKCnN0cnVjdCBhcmNoX3RsYmZsdXNoX3VubWFwX2JhdGNoIHsKCgoK CiBzdHJ1Y3QgY3B1bWFzayBjcHVtYXNrOwp9OwojIDIwICIuL2luY2x1ZGUvbGludXgvbW1fdHlw ZXNfdGFzay5oIiAyCiMgMzQgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlc190YXNrLmgiCnN0cnVj dCB2bWFjYWNoZSB7CiB1NjQgc2VxbnVtOwogc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWFzWygx VSA8PCAyKV07Cn07CgoKCgoKZW51bSB7CiBNTV9GSUxFUEFHRVMsCiBNTV9BTk9OUEFHRVMsCiBN TV9TV0FQRU5UUywKIE1NX1NITUVNUEFHRVMsCiBOUl9NTV9DT1VOVEVSUwp9OwoKCgoKc3RydWN0 IHRhc2tfcnNzX3N0YXQgewogaW50IGV2ZW50czsKIGludCBjb3VudFtOUl9NTV9DT1VOVEVSU107 Cn07CgoKc3RydWN0IG1tX3Jzc19zdGF0IHsKIGF0b21pY19sb25nX3QgY291bnRbTlJfTU1fQ09V TlRFUlNdOwp9OwoKc3RydWN0IHBhZ2VfZnJhZyB7CiBzdHJ1Y3QgcGFnZSAqcGFnZTsKCiBfX3Uz MiBvZmZzZXQ7CiBfX3UzMiBzaXplOwoKCgoKfTsKCgpzdHJ1Y3QgdGxiZmx1c2hfdW5tYXBfYmF0 Y2ggewojIDg1ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXNfdGFzay5oIgogc3RydWN0IGFyY2hf dGxiZmx1c2hfdW5tYXBfYmF0Y2ggYXJjaDsKCgogYm9vbCBmbHVzaF9yZXF1aXJlZDsKCgoKCgoK IGJvb2wgd3JpdGFibGU7Cgp9OwojIDYgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAyCgoj IDEgIi4vaW5jbHVkZS9saW51eC9hdXh2ZWMuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9s aW51eC9hdXh2ZWMuaCIgMQoKCgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYXV4 dmVjLmgiIDEKIyA2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9hdXh2ZWMuaCIgMgojIDYgIi4vaW5j bHVkZS9saW51eC9hdXh2ZWMuaCIgMgojIDggIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAy CgoKIyAxICIuL2luY2x1ZGUvbGludXgvcmJ0cmVlLmgiIDEKIyAyMiAiLi9pbmNsdWRlL2xpbnV4 L3JidHJlZS5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIiAxCiMgMzggIi4vaW5j bHVkZS9saW51eC9yY3VwZGF0ZS5oIgp2b2lkIGNhbGxfcmN1KHN0cnVjdCBjYWxsYmFja19oZWFk ICpoZWFkLCByY3VfY2FsbGJhY2tfdCBmdW5jKTsKdm9pZCByY3VfYmFycmllcl90YXNrcyh2b2lk KTsKdm9pZCBzeW5jaHJvbml6ZV9yY3Uodm9pZCk7CiMgNTcgIi4vaW5jbHVkZS9saW51eC9yY3Vw ZGF0ZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIF9fcmN1X3JlYWRfbG9jayh2b2lkKQp7CiBfX2FzbV9fIF9fdm9sYXRpbGVf XygiIjogOiA6Im1lbW9yeSIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fcmN1X3JlYWRfdW5sb2NrKHZvaWQpCnsKIF9f YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByY3VfcHJlZW1wdF9k ZXB0aCh2b2lkKQp7CiByZXR1cm4gMDsKfQoKCgoKdm9pZCByY3VfaW5pdCh2b2lkKTsKZXh0ZXJu IGludCByY3Vfc2NoZWR1bGVyX2FjdGl2ZSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRh dGEuLnJlYWRfbW9zdGx5IikpKTsKdm9pZCByY3Vfc2NoZWRfY2xvY2tfaXJxKGludCB1c2VyKTsK dm9pZCByY3VfcmVwb3J0X2RlYWQodW5zaWduZWQgaW50IGNwdSk7CnZvaWQgcmN1dHJlZV9taWdy YXRlX2NhbGxiYWNrcyhpbnQgY3B1KTsKCgp2b2lkIHJjdV9zeXNycV9zdGFydCh2b2lkKTsKdm9p ZCByY3Vfc3lzcnFfZW5kKHZvaWQpOwojIDkzICIuL2luY2x1ZGUvbGludXgvcmN1cGRhdGUuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCByY3VfdXNlcl9lbnRlcih2b2lkKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByY3VfdXNlcl9leGl0KHZvaWQpIHsg fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgcmN1X2luaXRfbm9oeih2b2lkKSB7IH0KIyAxNDggIi4vaW5jbHVkZS9saW51 eC9yY3VwZGF0ZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGV4aXRfdGFza3NfcmN1X3N0YXJ0KHZvaWQpIHsgfQpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGV4 aXRfdGFza3NfcmN1X2ZpbmlzaCh2b2lkKSB7IH0KIyAxNzEgIi4vaW5jbHVkZS9saW51eC9yY3Vw ZGF0ZS5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9yY3V0cmVlLmgiIDEKIyAyMCAiLi9pbmNsdWRl L2xpbnV4L3JjdXRyZWUuaCIKdm9pZCByY3Vfc29mdGlycV9xcyh2b2lkKTsKdm9pZCByY3Vfbm90 ZV9jb250ZXh0X3N3aXRjaChib29sIHByZWVtcHQpOwppbnQgcmN1X25lZWRzX2NwdSh1NjQgYmFz ZW0sIHU2NCAqbmV4dGV2dCk7CnZvaWQgcmN1X2NwdV9zdGFsbF9yZXNldCh2b2lkKTsKCgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCByY3VfdmlydF9ub3RlX2NvbnRleHRfc3dpdGNoKGludCBjcHUpCnsKIHJjdV9ub3RlX2Nv bnRleHRfc3dpdGNoKGZhbHNlKTsKfQoKdm9pZCBzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKHZv aWQpOwp2b2lkIGtmcmVlX2NhbGxfcmN1KHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkLCByY3Vf Y2FsbGJhY2tfdCBmdW5jKTsKCnZvaWQgcmN1X2JhcnJpZXIodm9pZCk7CmJvb2wgcmN1X2Vxc19z cGVjaWFsX3NldChpbnQgY3B1KTsKdm9pZCByY3VfbW9tZW50YXJ5X2R5bnRpY2tfaWRsZSh2b2lk KTsKdm9pZCBrZnJlZV9yY3Vfc2NoZWR1bGVyX3J1bm5pbmcodm9pZCk7CnVuc2lnbmVkIGxvbmcg Z2V0X3N0YXRlX3N5bmNocm9uaXplX3JjdSh2b2lkKTsKdm9pZCBjb25kX3N5bmNocm9uaXplX3Jj dSh1bnNpZ25lZCBsb25nIG9sZHN0YXRlKTsKCnZvaWQgcmN1X2lkbGVfZW50ZXIodm9pZCk7CnZv aWQgcmN1X2lkbGVfZXhpdCh2b2lkKTsKdm9pZCByY3VfaXJxX2VudGVyKHZvaWQpOwp2b2lkIHJj dV9pcnFfZXhpdCh2b2lkKTsKdm9pZCByY3VfaXJxX2VudGVyX2lycXNvbih2b2lkKTsKdm9pZCBy Y3VfaXJxX2V4aXRfaXJxc29uKHZvaWQpOwoKdm9pZCBleGl0X3JjdSh2b2lkKTsKCnZvaWQgcmN1 X3NjaGVkdWxlcl9zdGFydGluZyh2b2lkKTsKZXh0ZXJuIGludCByY3Vfc2NoZWR1bGVyX2FjdGl2 ZSBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmRhdGEuLnJlYWRfbW9zdGx5IikpKTsKdm9p ZCByY3VfZW5kX2lua2VybmVsX2Jvb3Qodm9pZCk7CmJvb2wgcmN1X2lzX3dhdGNoaW5nKHZvaWQp OwoKdm9pZCByY3VfYWxsX3FzKHZvaWQpOwoKCgppbnQgcmN1dHJlZV9wcmVwYXJlX2NwdSh1bnNp Z25lZCBpbnQgY3B1KTsKaW50IHJjdXRyZWVfb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsK aW50IHJjdXRyZWVfb2ZmbGluZV9jcHUodW5zaWduZWQgaW50IGNwdSk7CmludCByY3V0cmVlX2Rl YWRfY3B1KHVuc2lnbmVkIGludCBjcHUpOwppbnQgcmN1dHJlZV9keWluZ19jcHUodW5zaWduZWQg aW50IGNwdSk7CnZvaWQgcmN1X2NwdV9zdGFydGluZyh1bnNpZ25lZCBpbnQgY3B1KTsKIyAxNzIg Ii4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIiAyCiMgMTkyICIuL2luY2x1ZGUvbGludXgvcmN1 cGRhdGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBpbml0X3JjdV9oZWFkKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKSB7 IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBkZXN0cm95X3JjdV9oZWFkKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKSB7IH0K c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBpbml0X3JjdV9oZWFkX29uX3N0YWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkKSB7 IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBkZXN0cm95X3JjdV9oZWFkX29uX3N0YWNrKHN0cnVjdCBjYWxsYmFja19oZWFkICpo ZWFkKSB7IH0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIHJjdV9sb2NrZGVwX2N1cnJlbnRfY3B1X29ubGluZSh2b2lkKSB7 IHJldHVybiB0cnVlOyB9CiMgMjMxICIuL2luY2x1ZGUvbGludXgvcmN1cGRhdGUuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJj dV9yZWFkX2xvY2tfaGVsZCh2b2lkKQp7CiByZXR1cm4gMTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJjdV9yZWFkX2xvY2tf YmhfaGVsZCh2b2lkKQp7CiByZXR1cm4gMTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJjdV9yZWFkX2xvY2tfc2NoZWRfaGVs ZCh2b2lkKQp7CiByZXR1cm4gITA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByY3VfcmVhZF9sb2NrX2FueV9oZWxkKHZvaWQp CnsKIHJldHVybiAhMDsKfQojIDU5NyAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCByY3VfcmVhZF9sb2NrKHZvaWQpCnsK IF9fcmN1X3JlYWRfbG9jaygpOwogKHZvaWQpMDsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7IH0g d2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKfQojIDY0OSAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3JlYWRfdW5s b2NrKHZvaWQpCnsKIGRvIHsgfSB3aGlsZSAoMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7CiAodm9pZCkwOwogX19yY3VfcmVhZF91bmxvY2soKTsK IGRvIHsgfSB3aGlsZSAoMCk7Cn0KIyA2NzAgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHJjdV9yZWFkX2xvY2tfYmgodm9pZCkKewogbG9jYWxfYmhfZGlzYWJsZSgpOwogKHZvaWQp MDsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCgoKCgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9yZWFk X3VubG9ja19iaCh2b2lkKQp7CiBkbyB7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogZG8geyB9IHdoaWxlICgwKTsKICh2 b2lkKTA7CiBsb2NhbF9iaF9lbmFibGUoKTsKfQojIDcwNSAiLi9pbmNsdWRlL2xpbnV4L3JjdXBk YXRlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgcmN1X3JlYWRfbG9ja19zY2hlZCh2b2lkKQp7CiBfX2FzbV9fIF9fdm9sYXRp bGVfXygiIjogOiA6Im1lbW9yeSIpOwogKHZvaWQpMDsKIGRvIHsgfSB3aGlsZSAoMCk7CiBkbyB7 IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIHJjdV9yZWFkX2xvY2tfc2NoZWRfbm90cmFjZSh2b2lkKQp7CiBfX2FzbV9fIF9fdm9sYXRp bGVfXygiIjogOiA6Im1lbW9yeSIpOwogKHZvaWQpMDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdV9yZWFkX3Vu bG9ja19zY2hlZCh2b2lkKQp7CiBkbyB7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogZG8geyB9IHdoaWxlICgwKTsK ICh2b2lkKTA7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9CgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmN1X3JlYWRfdW5sb2Nr X3NjaGVkX25vdHJhY2Uodm9pZCkKewogKHZvaWQpMDsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIi OiA6IDoibWVtb3J5Iik7Cn0KIyA4NzAgIi4vaW5jbHVkZS9saW51eC9yY3VwZGF0ZS5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHJjdV9oZWFkX2luaXQoc3RydWN0IGNhbGxiYWNrX2hlYWQgKnJocCkKewogcmhwLT5mdW5jID0g KHJjdV9jYWxsYmFja190KX4wTDsKfQojIDg4OCAiLi9pbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wKcmN1X2hlYWRfYWZ0ZXJfY2FsbF9yY3Uoc3RydWN0IGNhbGxiYWNrX2hlYWQgKnJocCwg cmN1X2NhbGxiYWNrX3QgZikKewogcmN1X2NhbGxiYWNrX3QgZnVuYyA9ICh7IHVuaW9uIHsgdHlw ZW9mKHJocC0+ZnVuYykgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9v bmNlX3NpemUoJihyaHAtPmZ1bmMpLCBfX3UuX19jLCBzaXplb2YocmhwLT5mdW5jKSk7IGVsc2Ug X19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocmhwLT5mdW5jKSwgX191Ll9fYywgc2l6ZW9mKHJo cC0+ZnVuYykpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOwoKIGlmIChmdW5jID09 IGYpCiAgcmV0dXJuIHRydWU7CiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGZ1bmMgIT0gKHJj dV9jYWxsYmFja190KX4wTCk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24p LCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYs IDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIu bG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxv bmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIg Ilx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6Zmxh Z3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9s aW51eC9yY3VwZGF0ZS5oIiksICJpIiAoODk1KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAo KDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDAp OyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNo YWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIg KDgpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24p LCAwKTsgfSk7CiByZXR1cm4gZmFsc2U7Cn0KCgpleHRlcm4gaW50IHJjdV9leHBlZGl0ZWQ7CmV4 dGVybiBpbnQgcmN1X25vcm1hbDsKIyAyMyAiLi9pbmNsdWRlL2xpbnV4L3JidHJlZS5oIiAyCgpz dHJ1Y3QgcmJfbm9kZSB7CiB1bnNpZ25lZCBsb25nIF9fcmJfcGFyZW50X2NvbG9yOwogc3RydWN0 IHJiX25vZGUgKnJiX3JpZ2h0Owogc3RydWN0IHJiX25vZGUgKnJiX2xlZnQ7Cn0gX19hdHRyaWJ1 dGVfXygoYWxpZ25lZChzaXplb2YobG9uZykpKSk7CgoKc3RydWN0IHJiX3Jvb3Qgewogc3RydWN0 IHJiX25vZGUgKnJiX25vZGU7Cn07CiMgNDkgIi4vaW5jbHVkZS9saW51eC9yYnRyZWUuaCIKZXh0 ZXJuIHZvaWQgcmJfaW5zZXJ0X2NvbG9yKHN0cnVjdCByYl9ub2RlICosIHN0cnVjdCByYl9yb290 ICopOwpleHRlcm4gdm9pZCByYl9lcmFzZShzdHJ1Y3QgcmJfbm9kZSAqLCBzdHJ1Y3QgcmJfcm9v dCAqKTsKCgoKZXh0ZXJuIHN0cnVjdCByYl9ub2RlICpyYl9uZXh0KGNvbnN0IHN0cnVjdCByYl9u b2RlICopOwpleHRlcm4gc3RydWN0IHJiX25vZGUgKnJiX3ByZXYoY29uc3Qgc3RydWN0IHJiX25v ZGUgKik7CmV4dGVybiBzdHJ1Y3QgcmJfbm9kZSAqcmJfZmlyc3QoY29uc3Qgc3RydWN0IHJiX3Jv b3QgKik7CmV4dGVybiBzdHJ1Y3QgcmJfbm9kZSAqcmJfbGFzdChjb25zdCBzdHJ1Y3QgcmJfcm9v dCAqKTsKCgpleHRlcm4gc3RydWN0IHJiX25vZGUgKnJiX2ZpcnN0X3Bvc3RvcmRlcihjb25zdCBz dHJ1Y3QgcmJfcm9vdCAqKTsKZXh0ZXJuIHN0cnVjdCByYl9ub2RlICpyYl9uZXh0X3Bvc3RvcmRl cihjb25zdCBzdHJ1Y3QgcmJfbm9kZSAqKTsKCgpleHRlcm4gdm9pZCByYl9yZXBsYWNlX25vZGUo c3RydWN0IHJiX25vZGUgKnZpY3RpbSwgc3RydWN0IHJiX25vZGUgKm5ldywKICAgICAgIHN0cnVj dCByYl9yb290ICpyb290KTsKZXh0ZXJuIHZvaWQgcmJfcmVwbGFjZV9ub2RlX3JjdShzdHJ1Y3Qg cmJfbm9kZSAqdmljdGltLCBzdHJ1Y3QgcmJfbm9kZSAqbmV3LAogICAgc3RydWN0IHJiX3Jvb3Qg KnJvb3QpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCByYl9saW5rX25vZGUoc3RydWN0IHJiX25vZGUgKm5vZGUsIHN0cnVjdCBy Yl9ub2RlICpwYXJlbnQsCiAgICBzdHJ1Y3QgcmJfbm9kZSAqKnJiX2xpbmspCnsKIG5vZGUtPl9f cmJfcGFyZW50X2NvbG9yID0gKHVuc2lnbmVkIGxvbmcpcGFyZW50Owogbm9kZS0+cmJfbGVmdCA9 IG5vZGUtPnJiX3JpZ2h0ID0gKCh2b2lkICopMCk7CgogKnJiX2xpbmsgPSBub2RlOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk IHJiX2xpbmtfbm9kZV9yY3Uoc3RydWN0IHJiX25vZGUgKm5vZGUsIHN0cnVjdCByYl9ub2RlICpw YXJlbnQsCiAgICAgICAgc3RydWN0IHJiX25vZGUgKipyYl9saW5rKQp7CiBub2RlLT5fX3JiX3Bh cmVudF9jb2xvciA9ICh1bnNpZ25lZCBsb25nKXBhcmVudDsKIG5vZGUtPnJiX2xlZnQgPSBub2Rl LT5yYl9yaWdodCA9ICgodm9pZCAqKTApOwoKIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1 aW50cHRyX3QpKG5vZGUpOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChub2RlKSAmJiAoX3Jf YV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAqKTApKSAoeyB1bmlvbiB7IHR5cGVvZigoKnJi X2xpbmspKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigo KnJiX2xpbmspKSkgKCh0eXBlb2YoKnJiX2xpbmspKShfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29u Y2Vfc2l6ZSgmKCgqcmJfbGluaykpLCBfX3UuX19jLCBzaXplb2YoKCpyYl9saW5rKSkpOyBfX3Uu X192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF84NCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6 ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJipyYl9s aW5rKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6ZW9mKComKnJiX2xpbmspID09IHNpemVvZihzaG9y dCkgfHwgc2l6ZW9mKComKnJiX2xpbmspID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJipyYl9s aW5rKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfODQoKTsgfSB3aGls ZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7ICh7IHVuaW9uIHsg dHlwZW9mKComKnJiX2xpbmspIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9 ICggdHlwZW9mKComKnJiX2xpbmspKSAoKHR5cGVvZigqKCh0eXBlb2YoKnJiX2xpbmspKV9yX2Ff cF9fdikpICopKCh0eXBlb2YoKnJiX2xpbmspKV9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9z aXplKCYoKiYqcmJfbGluayksIF9fdS5fX2MsIHNpemVvZigqJipyYl9saW5rKSk7IF9fdS5fX3Zh bDsgfSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKfQojIDEyNSAiLi9pbmNsdWRlL2xpbnV4 L3JidHJlZS5oIgpzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgewogc3RydWN0IHJiX3Jvb3QgcmJfcm9v dDsKIHN0cnVjdCByYl9ub2RlICpyYl9sZWZ0bW9zdDsKfTsKCgoKCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByYl9pbnNlcnRf Y29sb3JfY2FjaGVkKHN0cnVjdCByYl9ub2RlICpub2RlLAogICAgICAgc3RydWN0IHJiX3Jvb3Rf Y2FjaGVkICpyb290LAogICAgICAgYm9vbCBsZWZ0bW9zdCkKewogaWYgKGxlZnRtb3N0KQogIHJv b3QtPnJiX2xlZnRtb3N0ID0gbm9kZTsKIHJiX2luc2VydF9jb2xvcihub2RlLCAmcm9vdC0+cmJf cm9vdCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgcmJfZXJhc2VfY2FjaGVkKHN0cnVjdCByYl9ub2RlICpub2RlLAogICAg ICAgc3RydWN0IHJiX3Jvb3RfY2FjaGVkICpyb290KQp7CiBpZiAocm9vdC0+cmJfbGVmdG1vc3Qg PT0gbm9kZSkKICByb290LT5yYl9sZWZ0bW9zdCA9IHJiX25leHQobm9kZSk7CiByYl9lcmFzZShu b2RlLCAmcm9vdC0+cmJfcm9vdCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmJfcmVwbGFjZV9ub2RlX2NhY2hlZChzdHJ1 Y3QgcmJfbm9kZSAqdmljdGltLAogICAgICAgc3RydWN0IHJiX25vZGUgKm5ldywKICAgICAgIHN0 cnVjdCByYl9yb290X2NhY2hlZCAqcm9vdCkKewogaWYgKHJvb3QtPnJiX2xlZnRtb3N0ID09IHZp Y3RpbSkKICByb290LT5yYl9sZWZ0bW9zdCA9IG5ldzsKIHJiX3JlcGxhY2Vfbm9kZSh2aWN0aW0s IG5ldywgJnJvb3QtPnJiX3Jvb3QpOwp9CiMgMTEgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5o IiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3J3c2VtLmgiIDEKIyAyMCAiLi9pbmNsdWRlL2xpbnV4 L3J3c2VtLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L29zcV9sb2NrLmgiIDEKIyA5ICIuL2luY2x1 ZGUvbGludXgvb3NxX2xvY2suaCIKc3RydWN0IG9wdGltaXN0aWNfc3Bpbl9ub2RlIHsKIHN0cnVj dCBvcHRpbWlzdGljX3NwaW5fbm9kZSAqbmV4dCwgKnByZXY7CiBpbnQgbG9ja2VkOwogaW50IGNw dTsKfTsKCnN0cnVjdCBvcHRpbWlzdGljX3NwaW5fcXVldWUgewoKCgoKIGF0b21pY190IHRhaWw7 Cn07CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgb3NxX2xvY2tfaW5pdChzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVl ICpsb2NrKQp7CiBhdG9taWNfc2V0KCZsb2NrLT50YWlsLCAoMCkpOwp9CgpleHRlcm4gYm9vbCBv c3FfbG9jayhzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVlICpsb2NrKTsKZXh0ZXJuIHZvaWQg b3NxX3VubG9jayhzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVlICpsb2NrKTsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgb3Nx X2lzX2xvY2tlZChzdHJ1Y3Qgb3B0aW1pc3RpY19zcGluX3F1ZXVlICpsb2NrKQp7CiByZXR1cm4g YXRvbWljX3JlYWQoJmxvY2stPnRhaWwpICE9ICgwKTsKfQojIDIxICIuL2luY2x1ZGUvbGludXgv cndzZW0uaCIgMgojIDM1ICIuL2luY2x1ZGUvbGludXgvcndzZW0uaCIKc3RydWN0IHJ3X3NlbWFw aG9yZSB7CiBhdG9taWNfbG9uZ190IGNvdW50OwoKCgoKCiBhdG9taWNfbG9uZ190IG93bmVyOwoK IHN0cnVjdCBvcHRpbWlzdGljX3NwaW5fcXVldWUgb3NxOwoKIHJhd19zcGlubG9ja190IHdhaXRf bG9jazsKIHN0cnVjdCBsaXN0X2hlYWQgd2FpdF9saXN0OwoKCgoKCgp9OwojIDYzICIuL2luY2x1 ZGUvbGludXgvcndzZW0uaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJ3c2VtX2lzX2xvY2tlZChzdHJ1Y3Qgcndfc2VtYXBob3Jl ICpzZW0pCnsKIHJldHVybiBhdG9taWNfbG9uZ19yZWFkKCZzZW0tPmNvdW50KSAhPSAwOwp9CiMg MTAzICIuL2luY2x1ZGUvbGludXgvcndzZW0uaCIKZXh0ZXJuIHZvaWQgX19pbml0X3J3c2VtKHN0 cnVjdCByd19zZW1hcGhvcmUgKnNlbSwgY29uc3QgY2hhciAqbmFtZSwKICAgIHN0cnVjdCBsb2Nr X2NsYXNzX2tleSAqa2V5KTsKIyAxMTkgIi4vaW5jbHVkZS9saW51eC9yd3NlbS5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcndz ZW1faXNfY29udGVuZGVkKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSkKewogcmV0dXJuICFsaXN0 X2VtcHR5KCZzZW0tPndhaXRfbGlzdCk7Cn0KCgoKCmV4dGVybiB2b2lkIGRvd25fcmVhZChzdHJ1 Y3Qgcndfc2VtYXBob3JlICpzZW0pOwpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKSBkb3duX3JlYWRfa2lsbGFibGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAq c2VtKTsKCgoKCmV4dGVybiBpbnQgZG93bl9yZWFkX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9y ZSAqc2VtKTsKCgoKCmV4dGVybiB2b2lkIGRvd25fd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAq c2VtKTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg ZG93bl93cml0ZV9raWxsYWJsZShzdHJ1Y3Qgcndfc2VtYXBob3JlICpzZW0pOwoKCgoKZXh0ZXJu IGludCBkb3duX3dyaXRlX3RyeWxvY2soc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKTsKCgoKCmV4 dGVybiB2b2lkIHVwX3JlYWQoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKTsKCgoKCmV4dGVybiB2 b2lkIHVwX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNlbSk7CgoKCgpleHRlcm4gdm9pZCBk b3duZ3JhZGVfd3JpdGUoc3RydWN0IHJ3X3NlbWFwaG9yZSAqc2VtKTsKIyAxMiAiLi9pbmNsdWRl L2xpbnV4L21tX3R5cGVzLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvY29tcGxldGlvbi5oIiAx CiMgMjYgIi4vaW5jbHVkZS9saW51eC9jb21wbGV0aW9uLmgiCnN0cnVjdCBjb21wbGV0aW9uIHsK IHVuc2lnbmVkIGludCBkb25lOwogd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKfTsKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBj b21wbGV0ZV9hY3F1aXJlKHN0cnVjdCBjb21wbGV0aW9uICp4KSB7fQpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNvbXBsZXRlX3Jl bGVhc2Uoc3RydWN0IGNvbXBsZXRpb24gKngpIHt9CiMgODUgIi4vaW5jbHVkZS9saW51eC9jb21w bGV0aW9uLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgX19pbml0X2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24gKngpCnsK IHgtPmRvbmUgPSAwOwogZG8geyBzdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IF9fa2V5OyBf X2luaXRfd2FpdHF1ZXVlX2hlYWQoKCZ4LT53YWl0KSwgIiZ4LT53YWl0IiwgJl9fa2V5KTsgfSB3 aGlsZSAoMCk7Cn0KIyA5OCAiLi9pbmNsdWRlL2xpbnV4L2NvbXBsZXRpb24uaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCByZWlu aXRfY29tcGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqeCkKewogeC0+ZG9uZSA9IDA7Cn0KCmV4 dGVybiB2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24gKik7CmV4dGVy biB2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb25faW8oc3RydWN0IGNvbXBsZXRpb24gKik7CmV4dGVy biBpbnQgd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBjb21wbGV0aW9u ICp4KTsKZXh0ZXJuIGludCB3YWl0X2Zvcl9jb21wbGV0aW9uX2tpbGxhYmxlKHN0cnVjdCBjb21w bGV0aW9uICp4KTsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgd2FpdF9mb3JfY29tcGxldGlvbl90aW1l b3V0KHN0cnVjdCBjb21wbGV0aW9uICp4LAogICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQp OwpleHRlcm4gdW5zaWduZWQgbG9uZyB3YWl0X2Zvcl9jb21wbGV0aW9uX2lvX3RpbWVvdXQoc3Ry dWN0IGNvbXBsZXRpb24gKngsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwpleHRl cm4gbG9uZyB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGVfdGltZW91dCgKIHN0cnVj dCBjb21wbGV0aW9uICp4LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwpleHRlcm4gbG9uZyB3YWl0 X2Zvcl9jb21wbGV0aW9uX2tpbGxhYmxlX3RpbWVvdXQoCiBzdHJ1Y3QgY29tcGxldGlvbiAqeCwg dW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKZXh0ZXJuIGJvb2wgdHJ5X3dhaXRfZm9yX2NvbXBsZXRp b24oc3RydWN0IGNvbXBsZXRpb24gKngpOwpleHRlcm4gYm9vbCBjb21wbGV0aW9uX2RvbmUoc3Ry dWN0IGNvbXBsZXRpb24gKngpOwoKZXh0ZXJuIHZvaWQgY29tcGxldGUoc3RydWN0IGNvbXBsZXRp b24gKik7CmV4dGVybiB2b2lkIGNvbXBsZXRlX2FsbChzdHJ1Y3QgY29tcGxldGlvbiAqKTsKIyAx MyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3Vw cm9iZXMuaCIgMQojIDE5ICIuL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oIgpzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3Q7CnN0cnVjdCBtbV9zdHJ1Y3Q7CnN0cnVjdCBpbm9kZTsKc3RydWN0IG5vdGlmaWVy X2Jsb2NrOwpzdHJ1Y3QgcGFnZTsKCgoKCgoKZW51bSB1cHJvYmVfZmlsdGVyX2N0eCB7CiBVUFJP QkVfRklMVEVSX1JFR0lTVEVSLAogVVBST0JFX0ZJTFRFUl9VTlJFR0lTVEVSLAogVVBST0JFX0ZJ TFRFUl9NTUFQLAp9OwoKc3RydWN0IHVwcm9iZV9jb25zdW1lciB7CiBpbnQgKCpoYW5kbGVyKShz dHJ1Y3QgdXByb2JlX2NvbnN1bWVyICpzZWxmLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CiBpbnQg KCpyZXRfaGFuZGxlcikoc3RydWN0IHVwcm9iZV9jb25zdW1lciAqc2VsZiwKICAgIHVuc2lnbmVk IGxvbmcgZnVuYywKICAgIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKIGJvb2wgKCpmaWx0ZXIpKHN0 cnVjdCB1cHJvYmVfY29uc3VtZXIgKnNlbGYsCiAgICBlbnVtIHVwcm9iZV9maWx0ZXJfY3R4IGN0 eCwKICAgIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKCiBzdHJ1Y3QgdXByb2JlX2NvbnN1bWVyICpu ZXh0Owp9OwojIDE0MiAiLi9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaCIKc3RydWN0IHVwcm9iZXNf c3RhdGUgewp9OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB1cHJvYmVzX2luaXQodm9pZCkKewp9CgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAp1cHJvYmVfcmVn aXN0ZXIoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgc3RydWN0IHVwcm9iZV9j b25zdW1lciAqdWMpCnsKIHJldHVybiAtMzg7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVwcm9iZV9yZWdpc3Rlcl9yZWZjdHIo c3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IHJlZl9jdHJfb2Zmc2V0 LCBzdHJ1Y3QgdXByb2JlX2NvbnN1bWVyICp1YykKewogcmV0dXJuIC0zODsKfQpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKdXByb2Jl X2FwcGx5KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIHN0cnVjdCB1cHJvYmVf Y29uc3VtZXIgKnVjLCBib29sIGFkZCkKewogcmV0dXJuIC0zODsKfQpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCnVwcm9iZV91bnJl Z2lzdGVyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIHN0cnVjdCB1cHJvYmVf Y29uc3VtZXIgKnVjKQp7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVwcm9iZV9tbWFwKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hKQp7CiByZXR1cm4gMDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCnVwcm9iZV9tdW5tYXAoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQp7Cn0Kc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCB1cHJvYmVfc3RhcnRfZHVwX21tYXAodm9pZCkKewp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdXByb2JlX2VuZF9kdXBfbW1h cCh2b2lkKQp7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZAp1cHJvYmVfZHVwX21tYXAoc3RydWN0IG1tX3N0cnVjdCAqb2xkbW0s IHN0cnVjdCBtbV9zdHJ1Y3QgKm5ld21tKQp7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB1cHJvYmVfbm90aWZ5X3Jlc3VtZShz dHJ1Y3QgcHRfcmVncyAqcmVncykKewp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdXByb2JlX2Rlbnlfc2lnbmFsKHZvaWQpCnsK IHJldHVybiBmYWxzZTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVwcm9iZV9mcmVlX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVj dCAqdCkKewp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgdXByb2JlX2NvcHlfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQs IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCnsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHVwcm9iZV9jbGVhcl9zdGF0ZShzdHJ1Y3Qg bW1fc3RydWN0ICptbSkKewp9CiMgMTUgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIiAyCgoj IDEgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC93 b3JrcXVldWUuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvdGltZXIuaCIgMQoKCgoKCiMgMSAiLi9p bmNsdWRlL2xpbnV4L2t0aW1lLmgiIDEKIyAyNCAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiCiMg MSAiLi9pbmNsdWRlL2xpbnV4L3RpbWUuaCIgMQojIDEwICIuL2luY2x1ZGUvbGludXgvdGltZS5o IgpleHRlcm4gc3RydWN0IHRpbWV6b25lIHN5c190ejsKCmludCBnZXRfdGltZXNwZWM2NChzdHJ1 Y3QgdGltZXNwZWM2NCAqdHMsCiAgY29uc3Qgc3RydWN0IF9fa2VybmVsX3RpbWVzcGVjICp1dHMp OwppbnQgcHV0X3RpbWVzcGVjNjQoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzLAogIHN0cnVj dCBfX2tlcm5lbF90aW1lc3BlYyAqdXRzKTsKaW50IGdldF9pdGltZXJzcGVjNjQoc3RydWN0IGl0 aW1lcnNwZWM2NCAqaXQsCiAgIGNvbnN0IHN0cnVjdCBfX2tlcm5lbF9pdGltZXJzcGVjICp1aXQp OwppbnQgcHV0X2l0aW1lcnNwZWM2NChjb25zdCBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICppdCwKICAg c3RydWN0IF9fa2VybmVsX2l0aW1lcnNwZWMgKnVpdCk7CgpleHRlcm4gdGltZTY0X3QgbWt0aW1l NjQoY29uc3QgdW5zaWduZWQgaW50IHllYXIsIGNvbnN0IHVuc2lnbmVkIGludCBtb24sCiAgIGNv bnN0IHVuc2lnbmVkIGludCBkYXksIGNvbnN0IHVuc2lnbmVkIGludCBob3VyLAogICBjb25zdCB1 bnNpZ25lZCBpbnQgbWluLCBjb25zdCB1bnNpZ25lZCBpbnQgc2VjKTsKIyAzOSAiLi9pbmNsdWRl L2xpbnV4L3RpbWUuaCIKZXh0ZXJuIHZvaWQgY2xlYXJfaXRpbWVyKHZvaWQpOwoKCgoKZXh0ZXJu IGxvbmcgZG9fdXRpbWVzKGludCBkZmQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgdGlt ZXNwZWM2NCAqdGltZXMsIGludCBmbGFncyk7CgoKCgoKc3RydWN0IHRtIHsKCgoKCiBpbnQgdG1f c2VjOwoKIGludCB0bV9taW47CgogaW50IHRtX2hvdXI7CgogaW50IHRtX21kYXk7CgogaW50IHRt X21vbjsKCiBsb25nIHRtX3llYXI7CgogaW50IHRtX3dkYXk7CgogaW50IHRtX3lkYXk7Cn07Cgp2 b2lkIHRpbWU2NF90b190bSh0aW1lNjRfdCB0b3RhbHNlY3MsIGludCBvZmZzZXQsIHN0cnVjdCB0 bSAqcmVzdWx0KTsKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3RpbWUzMi5oIiAxCiMgMTMgIi4vaW5j bHVkZS9saW51eC90aW1lMzIuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvdGltZXguaCIgMQojIDU2 ICIuL2luY2x1ZGUvbGludXgvdGltZXguaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC90aW1l eC5oIiAxCiMgNTYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWV4LmgiCiMgMSAiLi9pbmNsdWRl L2xpbnV4L3RpbWUuaCIgMQojIDU3ICIuL2luY2x1ZGUvdWFwaS9saW51eC90aW1leC5oIiAyCiMg OTcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3RpbWV4LmgiCnN0cnVjdCBfX2tlcm5lbF90aW1leF90 aW1ldmFsIHsKIF9fa2VybmVsX3RpbWU2NF90IHR2X3NlYzsKIGxvbmcgbG9uZyB0dl91c2VjOwp9 OwoKc3RydWN0IF9fa2VybmVsX3RpbWV4IHsKIHVuc2lnbmVkIGludCBtb2RlczsKIGludCA6MzI7 CiBsb25nIGxvbmcgb2Zmc2V0OwogbG9uZyBsb25nIGZyZXE7CiBsb25nIGxvbmcgbWF4ZXJyb3I7 CiBsb25nIGxvbmcgZXN0ZXJyb3I7CiBpbnQgc3RhdHVzOwogaW50IDozMjsKIGxvbmcgbG9uZyBj b25zdGFudDsKIGxvbmcgbG9uZyBwcmVjaXNpb247CiBsb25nIGxvbmcgdG9sZXJhbmNlOwoKCiBz dHJ1Y3QgX19rZXJuZWxfdGltZXhfdGltZXZhbCB0aW1lOwogbG9uZyBsb25nIHRpY2s7CgogbG9u ZyBsb25nIHBwc2ZyZXE7CiBsb25nIGxvbmcgaml0dGVyOwogaW50IHNoaWZ0OwogaW50IDozMjsK IGxvbmcgbG9uZyBzdGFiaWw7CiBsb25nIGxvbmcgaml0Y250OwogbG9uZyBsb25nIGNhbGNudDsK IGxvbmcgbG9uZyBlcnJjbnQ7CiBsb25nIGxvbmcgc3RiY250OwoKIGludCB0YWk7CgogaW50IDoz MjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7 IGludCA6MzI7CiBpbnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwp9OwojIDU3ICIuL2luY2x1ZGUv bGludXgvdGltZXguaCIgMgoKCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3BhcmFtLmgi IDEKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9wYXJhbS5o IiAxCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3BhcmFtLmgiIDEKCgoKCiMgMSAiLi9pbmNs dWRlL3VhcGkvYXNtLWdlbmVyaWMvcGFyYW0uaCIgMQojIDYgIi4vaW5jbHVkZS9hc20tZ2VuZXJp Yy9wYXJhbS5oIiAyCiMgMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2FzbS9w YXJhbS5oIiAyCiMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvcGFyYW0uaCIgMgojIDY0ICIuL2lu Y2x1ZGUvbGludXgvdGltZXguaCIgMgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RpbWV4 LmgiIDEKCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmgiIDEKIyAxNiAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS90c2MuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgY3lj bGVzX3Q7CgpleHRlcm4gdW5zaWduZWQgaW50IGNwdV9raHo7CmV4dGVybiB1bnNpZ25lZCBpbnQg dHNjX2toejsKCmV4dGVybiB2b2lkIGRpc2FibGVfVFNDKHZvaWQpOwoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY3ljbGVzX3QgZ2V0X2N5 Y2xlcyh2b2lkKQp7CgoKCgoKIHJldHVybiByZHRzYygpOwp9CgpleHRlcm4gc3RydWN0IHN5c3Rl bV9jb3VudGVydmFsX3QgY29udmVydF9hcnRfdG9fdHNjKHU2NCBhcnQpOwpleHRlcm4gc3RydWN0 IHN5c3RlbV9jb3VudGVydmFsX3QgY29udmVydF9hcnRfbnNfdG9fdHNjKHU2NCBhcnRfbnMpOwoK ZXh0ZXJuIHZvaWQgdHNjX2Vhcmx5X2luaXQodm9pZCk7CmV4dGVybiB2b2lkIHRzY19pbml0KHZv aWQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBjYWxpYnJhdGVfZGVsYXlfaXNfa25vd24odm9pZCk7 CmV4dGVybiB2b2lkIG1hcmtfdHNjX3Vuc3RhYmxlKGNoYXIgKnJlYXNvbik7CmV4dGVybiBpbnQg dW5zeW5jaHJvbml6ZWRfdHNjKHZvaWQpOwpleHRlcm4gaW50IGNoZWNrX3RzY191bnN0YWJsZSh2 b2lkKTsKZXh0ZXJuIHZvaWQgbWFya190c2NfYXN5bmNfcmVzZXRzKGNoYXIgKnJlYXNvbik7CmV4 dGVybiB1bnNpZ25lZCBsb25nIG5hdGl2ZV9jYWxpYnJhdGVfY3B1X2Vhcmx5KHZvaWQpOwpleHRl cm4gdW5zaWduZWQgbG9uZyBuYXRpdmVfY2FsaWJyYXRlX3RzYyh2b2lkKTsKZXh0ZXJuIHVuc2ln bmVkIGxvbmcgbG9uZyBuYXRpdmVfc2NoZWRfY2xvY2tfZnJvbV90c2ModTY0IHRzYyk7CgpleHRl cm4gaW50IHRzY19jbG9ja3NvdXJjZV9yZWxpYWJsZTsKCmV4dGVybiBib29sIHRzY19hc3luY19y ZXNldHM7CiMgNTkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdHNjLmgiCmV4dGVybiBib29sIHRz Y19zdG9yZV9hbmRfY2hlY2tfdHNjX2FkanVzdChib29sIGJvb3RjcHUpOwpleHRlcm4gdm9pZCB0 c2NfdmVyaWZ5X3RzY19hZGp1c3QoYm9vbCByZXN1bWUpOwpleHRlcm4gdm9pZCBjaGVja190c2Nf c3luY19zb3VyY2UoaW50IGNwdSk7CmV4dGVybiB2b2lkIGNoZWNrX3RzY19zeW5jX3RhcmdldCh2 b2lkKTsKCgoKCgoKCmV4dGVybiBpbnQgbm90c2Nfc2V0dXAoY2hhciAqKTsKZXh0ZXJuIHZvaWQg dHNjX3NhdmVfc2NoZWRfY2xvY2tfc3RhdGUodm9pZCk7CmV4dGVybiB2b2lkIHRzY19yZXN0b3Jl X3NjaGVkX2Nsb2NrX3N0YXRlKHZvaWQpOwoKdW5zaWduZWQgbG9uZyBjcHVfa2h6X2Zyb21fbXNy KHZvaWQpOwojIDcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdGltZXguaCIgMgojIDY2ICIuL2lu Y2x1ZGUvbGludXgvdGltZXguaCIgMgojIDEzOSAiLi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCmV4 dGVybiB1bnNpZ25lZCBsb25nIHRpY2tfdXNlYzsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdGlja19u c2VjOwojIDE1NCAiLi9pbmNsdWRlL2xpbnV4L3RpbWV4LmgiCmV4dGVybiBpbnQgZG9fYWRqdGlt ZXgoc3RydWN0IF9fa2VybmVsX3RpbWV4ICopOwpleHRlcm4gaW50IGRvX2Nsb2NrX2FkanRpbWUo Y29uc3QgY2xvY2tpZF90IHdoaWNoX2Nsb2NrLCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKiBrdHgp OwoKZXh0ZXJuIHZvaWQgaGFyZHBwcyhjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqLCBjb25zdCBz dHJ1Y3QgdGltZXNwZWM2NCAqKTsKCmludCByZWFkX2N1cnJlbnRfdGltZXIodW5zaWduZWQgbG9u ZyAqdGltZXJfdmFsKTsKdm9pZCBudHBfbm90aWZ5X2Ntb3NfdGltZXIodm9pZCk7CiMgMTQgIi4v aW5jbHVkZS9saW51eC90aW1lMzIuaCIgMgoKdHlwZWRlZiBzMzIgb2xkX3RpbWUzMl90OwoKc3Ry dWN0IG9sZF90aW1lc3BlYzMyIHsKIG9sZF90aW1lMzJfdCB0dl9zZWM7CiBzMzIgdHZfbnNlYzsK fTsKCnN0cnVjdCBvbGRfdGltZXZhbDMyIHsKIG9sZF90aW1lMzJfdCB0dl9zZWM7CiBzMzIgdHZf dXNlYzsKfTsKCnN0cnVjdCBvbGRfaXRpbWVyc3BlYzMyIHsKIHN0cnVjdCBvbGRfdGltZXNwZWMz MiBpdF9pbnRlcnZhbDsKIHN0cnVjdCBvbGRfdGltZXNwZWMzMiBpdF92YWx1ZTsKfTsKCnN0cnVj dCBvbGRfdXRpbWJ1ZjMyIHsKIG9sZF90aW1lMzJfdCBhY3RpbWU7CiBvbGRfdGltZTMyX3QgbW9k dGltZTsKfTsKCnN0cnVjdCBvbGRfdGltZXgzMiB7CiB1MzIgbW9kZXM7CiBzMzIgb2Zmc2V0Owog czMyIGZyZXE7CiBzMzIgbWF4ZXJyb3I7CiBzMzIgZXN0ZXJyb3I7CiBzMzIgc3RhdHVzOwogczMy IGNvbnN0YW50OwogczMyIHByZWNpc2lvbjsKIHMzMiB0b2xlcmFuY2U7CiBzdHJ1Y3Qgb2xkX3Rp bWV2YWwzMiB0aW1lOwogczMyIHRpY2s7CiBzMzIgcHBzZnJlcTsKIHMzMiBqaXR0ZXI7CiBzMzIg c2hpZnQ7CiBzMzIgc3RhYmlsOwogczMyIGppdGNudDsKIHMzMiBjYWxjbnQ7CiBzMzIgZXJyY250 OwogczMyIHN0YmNudDsKIHMzMiB0YWk7CgogczMyOjMyOyBzMzI6MzI7IHMzMjozMjsgczMyOjMy OwogczMyOjMyOyBzMzI6MzI7IHMzMjozMjsgczMyOjMyOwogczMyOjMyOyBzMzI6MzI7IHMzMjoz MjsKfTsKCmV4dGVybiBpbnQgZ2V0X29sZF90aW1lc3BlYzMyKHN0cnVjdCB0aW1lc3BlYzY0ICos IGNvbnN0IHZvaWQgKik7CmV4dGVybiBpbnQgcHV0X29sZF90aW1lc3BlYzMyKGNvbnN0IHN0cnVj dCB0aW1lc3BlYzY0ICosIHZvaWQgKik7CmV4dGVybiBpbnQgZ2V0X29sZF9pdGltZXJzcGVjMzIo c3RydWN0IGl0aW1lcnNwZWM2NCAqaXRzLAogICBjb25zdCBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMz MiAqdWl0cyk7CmV4dGVybiBpbnQgcHV0X29sZF9pdGltZXJzcGVjMzIoY29uc3Qgc3RydWN0IGl0 aW1lcnNwZWM2NCAqaXRzLAogICBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMzMiAqdWl0cyk7CnN0cnVj dCBfX2tlcm5lbF90aW1leDsKaW50IGdldF9vbGRfdGltZXgzMihzdHJ1Y3QgX19rZXJuZWxfdGlt ZXggKiwgY29uc3Qgc3RydWN0IG9sZF90aW1leDMyICopOwppbnQgcHV0X29sZF90aW1leDMyKHN0 cnVjdCBvbGRfdGltZXgzMiAqLCBjb25zdCBzdHJ1Y3QgX19rZXJuZWxfdGltZXggKik7CgoKCgoK CgpleHRlcm4gc3RydWN0IF9fa2VybmVsX29sZF90aW1ldmFsIG5zX3RvX2tlcm5lbF9vbGRfdGlt ZXZhbChzNjQgbnNlYyk7CiMgNzUgIi4vaW5jbHVkZS9saW51eC90aW1lLmgiIDIKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXRp bWVyc3BlYzY0X3ZhbGlkKGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjNjQgKml0cykKewogaWYgKCF0 aW1lc3BlYzY0X3ZhbGlkKCYoaXRzLT5pdF9pbnRlcnZhbCkpIHx8CiAgIXRpbWVzcGVjNjRfdmFs aWQoJihpdHMtPml0X3ZhbHVlKSkpCiAgcmV0dXJuIGZhbHNlOwoKIHJldHVybiB0cnVlOwp9CiMg MTE0ICIuL2luY2x1ZGUvbGludXgvdGltZS5oIgpzdHJ1Y3QgdGltZW5zX29mZnNldCB7CiBzNjQg c2VjOwogdTY0IG5zZWM7Cn07CiMgMjUgIi4vaW5jbHVkZS9saW51eC9rdGltZS5oIiAyCiMgMSAi Li9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIgMQojIDExICIuL2luY2x1ZGUvbGludXgvamlmZmll cy5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vcGFyYW0uaCIg MQojIDEyICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIiAyCiMgMSAiLi9pbmNsdWRlL2dlbmVy YXRlZC90aW1lY29uc3QuaCIgMQojIDEzICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIiAyCiMg NjAgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCmV4dGVybiBpbnQgcmVnaXN0ZXJfcmVmaW5l ZF9qaWZmaWVzKGxvbmcgY2xvY2tfdGlja19yYXRlKTsKIyA4MCAiLi9pbmNsdWRlL2xpbnV4L2pp ZmZpZXMuaCIKZXh0ZXJuIHU2NCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoMSA8PCAoNikp KSwgX19zZWN0aW9uX18oIi5kYXRhLi5jYWNoZWxpbmVfYWxpZ25lZCIpKSkgamlmZmllc182NDsK ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgdm9sYXRpbGUgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18o KDEgPDwgKDYpKSksIF9fc2VjdGlvbl9fKCIuZGF0YS4uY2FjaGVsaW5lX2FsaWduZWQiKSkpIGpp ZmZpZXM7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB1NjQgZ2V0X2ppZmZpZXNfNjQodm9pZCkKewogcmV0dXJuICh1NjQpamlmZmll czsKfQojIDE5MCAiLi9pbmNsdWRlL2xpbnV4L2ppZmZpZXMuaCIKZXh0ZXJuIHVuc2lnbmVkIGxv bmcgcHJlc2V0X2xwajsKIyAyOTEgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCmV4dGVybiB1 bnNpZ25lZCBpbnQgamlmZmllc190b19tc2Vjcyhjb25zdCB1bnNpZ25lZCBsb25nIGopOwpleHRl cm4gdW5zaWduZWQgaW50IGppZmZpZXNfdG9fdXNlY3MoY29uc3QgdW5zaWduZWQgbG9uZyBqKTsK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHU2NCBqaWZmaWVzX3RvX25zZWNzKGNvbnN0IHVuc2lnbmVkIGxvbmcgaikKewogcmV0dXJuICh1 NjQpamlmZmllc190b191c2VjcyhqKSAqIDEwMDBMOwp9CgpleHRlcm4gdTY0IGppZmZpZXM2NF90 b19uc2Vjcyh1NjQgaik7CmV4dGVybiB1NjQgamlmZmllczY0X3RvX21zZWNzKHU2NCBqKTsKCmV4 dGVybiB1bnNpZ25lZCBsb25nIF9fbXNlY3NfdG9famlmZmllcyhjb25zdCB1bnNpZ25lZCBpbnQg bSk7CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgX21zZWNzX3RvX2ppZmZpZXMoY29uc3QgdW5zaWduZWQg aW50IG0pCnsKIHJldHVybiAobSArICgxMDAwTCAvIDI1MCkgLSAxKSAvICgxMDAwTCAvIDI1MCk7 Cn0KIyAzNjQgIi4vaW5jbHVkZS9saW51eC9qaWZmaWVzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdW5zaWduZWQgbG9uZyBtc2Vjc190b19qaWZmaWVzKGNvbnN0IHVuc2ln bmVkIGludCBtKQp7CiBpZiAoX19idWlsdGluX2NvbnN0YW50X3AobSkpIHsKICBpZiAoKGludClt IDwgMCkKICAgcmV0dXJuICgoKChsb25nKSh+MFVMID4+IDEpKSA+PiAxKS0xKTsKICByZXR1cm4g X21zZWNzX3RvX2ppZmZpZXMobSk7CiB9IGVsc2UgewogIHJldHVybiBfX21zZWNzX3RvX2ppZmZp ZXMobSk7CiB9Cn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIF9fdXNlY3NfdG9famlmZmllcyhjb25z dCB1bnNpZ25lZCBpbnQgdSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIF91c2Vjc190b19qaWZmaWVzKGNvbnN0 IHVuc2lnbmVkIGludCB1KQp7CiByZXR1cm4gKHUgKyAoMTAwMDAwMEwgLyAyNTApIC0gMSkgLyAo MTAwMDAwMEwgLyAyNTApOwp9CiMgNDExICIuL2luY2x1ZGUvbGludXgvamlmZmllcy5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0 dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGxvbmcgdXNlY3NfdG9famlm Zmllcyhjb25zdCB1bnNpZ25lZCBpbnQgdSkKewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHUp KSB7CiAgaWYgKHUgPiBqaWZmaWVzX3RvX3VzZWNzKCgoKChsb25nKSh+MFVMID4+IDEpKSA+PiAx KS0xKSkpCiAgIHJldHVybiAoKCgobG9uZykofjBVTCA+PiAxKSkgPj4gMSktMSk7CiAgcmV0dXJu IF91c2Vjc190b19qaWZmaWVzKHUpOwogfSBlbHNlIHsKICByZXR1cm4gX191c2Vjc190b19qaWZm aWVzKHUpOwogfQp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyB0aW1lc3BlYzY0X3RvX2ppZmZpZXMo Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnZhbHVlKTsKZXh0ZXJuIHZvaWQgamlmZmllc190b190 aW1lc3BlYzY0KGNvbnN0IHVuc2lnbmVkIGxvbmcgamlmZmllcywKICAgICAgc3RydWN0IHRpbWVz cGVjNjQgKnZhbHVlKTsKZXh0ZXJuIGNsb2NrX3QgamlmZmllc190b19jbG9ja190KHVuc2lnbmVk IGxvbmcgeCk7CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGNsb2NrX3QgamlmZmllc19kZWx0YV90b19jbG9ja190KGxvbmcgZGVsdGEpCnsK IHJldHVybiBqaWZmaWVzX3RvX2Nsb2NrX3QoX19idWlsdGluX2Nob29zZV9leHByKCgoISEoc2l6 ZW9mKCh0eXBlb2YoMEwpICopMSA9PSAodHlwZW9mKGRlbHRhKSAqKTEpKSkgJiYgKChzaXplb2Yo aW50KSA9PSBzaXplb2YoKig4ID8gKCh2b2lkICopKChsb25nKSgwTCkgKiAwbCkpIDogKGludCAq KTgpKSkgJiYgKHNpemVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKGRl bHRhKSAqIDBsKSkgOiAoaW50ICopOCkpKSkpLCAoKDBMKSA+IChkZWx0YSkgPyAoMEwpIDogKGRl bHRhKSksICh7IHR5cGVvZigwTCkgX19VTklRVUVfSURfX194OSA9ICgwTCk7IHR5cGVvZihkZWx0 YSkgX19VTklRVUVfSURfX195MTAgPSAoZGVsdGEpOyAoKF9fVU5JUVVFX0lEX19feDkpID4gKF9f VU5JUVVFX0lEX19feTEwKSA/IChfX1VOSVFVRV9JRF9fX3g5KSA6IChfX1VOSVFVRV9JRF9fX3kx MCkpOyB9KSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgamlmZmllc19kZWx0YV90b19tc2Vjcyhsb25nIGRl bHRhKQp7CiByZXR1cm4gamlmZmllc190b19tc2VjcyhfX2J1aWx0aW5fY2hvb3NlX2V4cHIoKCgh IShzaXplb2YoKHR5cGVvZigwTCkgKikxID09ICh0eXBlb2YoZGVsdGEpICopMSkpKSAmJiAoKHNp emVvZihpbnQpID09IHNpemVvZigqKDggPyAoKHZvaWQgKikoKGxvbmcpKDBMKSAqIDBsKSkgOiAo aW50ICopOCkpKSAmJiAoc2l6ZW9mKGludCkgPT0gc2l6ZW9mKCooOCA/ICgodm9pZCAqKSgobG9u ZykoZGVsdGEpICogMGwpKSA6IChpbnQgKik4KSkpKSksICgoMEwpID4gKGRlbHRhKSA/ICgwTCkg OiAoZGVsdGEpKSwgKHsgdHlwZW9mKDBMKSBfX1VOSVFVRV9JRF9fX3gxMSA9ICgwTCk7IHR5cGVv ZihkZWx0YSkgX19VTklRVUVfSURfX195MTIgPSAoZGVsdGEpOyAoKF9fVU5JUVVFX0lEX19feDEx KSA+IChfX1VOSVFVRV9JRF9fX3kxMikgPyAoX19VTklRVUVfSURfX194MTEpIDogKF9fVU5JUVVF X0lEX19feTEyKSk7IH0pKSk7Cn0KCmV4dGVybiB1bnNpZ25lZCBsb25nIGNsb2NrX3RfdG9famlm Zmllcyh1bnNpZ25lZCBsb25nIHgpOwpleHRlcm4gdTY0IGppZmZpZXNfNjRfdG9fY2xvY2tfdCh1 NjQgeCk7CmV4dGVybiB1NjQgbnNlY190b19jbG9ja190KHU2NCB4KTsKZXh0ZXJuIHU2NCBuc2Vj c190b19qaWZmaWVzNjQodTY0IG4pOwpleHRlcm4gdW5zaWduZWQgbG9uZyBuc2Vjc190b19qaWZm aWVzKHU2NCBuKTsKIyAyNiAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiIDIKCgp0eXBlZGVmIHM2 NCBrdGltZV90OwojIDM3ICIuL2luY2x1ZGUvbGludXgva3RpbWUuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9z ZXQoY29uc3QgczY0IHNlY3MsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbnNlY3MpCnsKIGlmIChfX2J1 aWx0aW5fZXhwZWN0KCEhKHNlY3MgPj0gKCgoczY0KX4oKHU2NCkxIDw8IDYzKSkgLyAxMDAwMDAw MDAwTCkpLCAwKSkKICByZXR1cm4gKChzNjQpfigodTY0KTEgPDwgNjMpKTsKCiByZXR1cm4gc2Vj cyAqIDEwMDAwMDAwMDBMICsgKHM2NCluc2VjczsKfQojIDcwICIuL2luY2x1ZGUvbGludXgva3Rp bWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkga3RpbWVfdCB0aW1lc3BlYzY0X3RvX2t0aW1lKHN0cnVjdCB0aW1lc3BlYzY0IHRzKQp7 CiByZXR1cm4ga3RpbWVfc2V0KHRzLnR2X3NlYywgdHMudHZfbnNlYyk7Cn0KCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQga3Rp bWVfdG9fbnMoY29uc3Qga3RpbWVfdCBrdCkKewogcmV0dXJuIGt0Owp9CiMgOTQgIi4vaW5jbHVk ZS9saW51eC9rdGltZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQga3RpbWVfY29tcGFyZShjb25zdCBrdGltZV90IGNtcDEsIGNv bnN0IGt0aW1lX3QgY21wMikKewogaWYgKGNtcDEgPCBjbXAyKQogIHJldHVybiAtMTsKIGlmIChj bXAxID4gY21wMikKICByZXR1cm4gMTsKIHJldHVybiAwOwp9CiMgMTEwICIuL2luY2x1ZGUvbGlu dXgva3RpbWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBrdGltZV9hZnRlcihjb25zdCBrdGltZV90IGNtcDEsIGNvbnN0IGt0 aW1lX3QgY21wMikKewogcmV0dXJuIGt0aW1lX2NvbXBhcmUoY21wMSwgY21wMikgPiAwOwp9CiMg MTIyICIuL2luY2x1ZGUvbGludXgva3RpbWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrdGltZV9iZWZvcmUoY29uc3Qga3Rp bWVfdCBjbXAxLCBjb25zdCBrdGltZV90IGNtcDIpCnsKIHJldHVybiBrdGltZV9jb21wYXJlKGNt cDEsIGNtcDIpIDwgMDsKfQojIDE0NyAiLi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBrdGlt ZV9kaXZucyhjb25zdCBrdGltZV90IGt0LCBzNjQgZGl2KQp7CgoKCgogKHsgaW50IF9fcmV0X3dh cm5fb24gPSAhIShkaXYgPCAwKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9v biksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgw ZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIg Ii5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIu bG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMx IiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5Ojpm bGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRl L2xpbnV4L2t0aW1lLmgiKSwgImkiICgxNTMpLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSks ICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9s YXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIu bG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDEzKSk7IH0pOyB9 IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwog cmV0dXJuIGt0IC8gZGl2Owp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0IGt0aW1lX3RvX3VzKGNvbnN0IGt0aW1lX3Qga3QpCnsK IHJldHVybiBrdGltZV9kaXZucyhrdCwgMTAwMEwpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQga3RpbWVfdG9fbXMoY29uc3Qg a3RpbWVfdCBrdCkKewogcmV0dXJuIGt0aW1lX2Rpdm5zKGt0LCAxMDAwMDAwTCk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBr dGltZV91c19kZWx0YShjb25zdCBrdGltZV90IGxhdGVyLCBjb25zdCBrdGltZV90IGVhcmxpZXIp CnsKICAgICAgIHJldHVybiBrdGltZV90b191cygoKGxhdGVyKSAtIChlYXJsaWVyKSkpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBz NjQga3RpbWVfbXNfZGVsdGEoY29uc3Qga3RpbWVfdCBsYXRlciwgY29uc3Qga3RpbWVfdCBlYXJs aWVyKQp7CiByZXR1cm4ga3RpbWVfdG9fbXMoKChsYXRlcikgLSAoZWFybGllcikpKTsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3Rp bWVfdCBrdGltZV9hZGRfdXMoY29uc3Qga3RpbWVfdCBrdCwgY29uc3QgdTY0IHVzZWMpCnsKIHJl dHVybiAoKGt0KSArICh1c2VjICogMTAwMEwpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9hZGRfbXMoY29u c3Qga3RpbWVfdCBrdCwgY29uc3QgdTY0IG1zZWMpCnsKIHJldHVybiAoKGt0KSArIChtc2VjICog MTAwMDAwMEwpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9zdWJfdXMoY29uc3Qga3RpbWVfdCBrdCwgY29u c3QgdTY0IHVzZWMpCnsKIHJldHVybiAoKGt0KSAtICh1c2VjICogMTAwMEwpKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVf dCBrdGltZV9zdWJfbXMoY29uc3Qga3RpbWVfdCBrdCwgY29uc3QgdTY0IG1zZWMpCnsKIHJldHVy biAoKGt0KSAtIChtc2VjICogMTAwMDAwMEwpKTsKfQoKZXh0ZXJuIGt0aW1lX3Qga3RpbWVfYWRk X3NhZmUoY29uc3Qga3RpbWVfdCBsaHMsIGNvbnN0IGt0aW1lX3QgcmhzKTsKIyAyMDggIi4vaW5j bHVkZS9saW51eC9rdGltZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSkgYm9vbCBrdGltZV90b190aW1lc3BlYzY0X2NvbmQoY29uc3Qga3RpbWVfdCBrdCwKICAgICAg ICAgICAgIHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKewogaWYgKGt0KSB7CiAgKnRzID0gbnNfdG9f dGltZXNwZWM2NCgoa3QpKTsKICByZXR1cm4gdHJ1ZTsKIH0gZWxzZSB7CiAgcmV0dXJuIGZhbHNl OwogfQp9CiMgMjI4ICIuL2luY2x1ZGUvbGludXgva3RpbWUuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBuc190b19rdGlt ZSh1NjQgbnMpCnsKIHJldHVybiBuczsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBtc190b19rdGltZSh1NjQgbXMpCnsK IHJldHVybiBtcyAqIDEwMDAwMDBMOwp9CgojIDEgIi4vaW5jbHVkZS9saW51eC90aW1la2VlcGlu Zy5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgiCnZvaWQgdGltZWtlZXBp bmdfaW5pdCh2b2lkKTsKZXh0ZXJuIGludCB0aW1la2VlcGluZ19zdXNwZW5kZWQ7CgoKZXh0ZXJu IHZvaWQgdXBkYXRlX3Byb2Nlc3NfdGltZXMoaW50IHVzZXIpOwpleHRlcm4gdm9pZCB4dGltZV91 cGRhdGUodW5zaWduZWQgbG9uZyB0aWNrcyk7CgoKCgpleHRlcm4gaW50IGRvX3NldHRpbWVvZmRh eTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CmV4dGVybiBpbnQgZG9fc3lzX3NldHRp bWVvZmRheTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICp0diwKICAgICBjb25zdCBzdHJ1Y3Qg dGltZXpvbmUgKnR6KTsKIyA0MSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgiCmV4dGVy biB2b2lkIGt0aW1lX2dldF9yYXdfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwpleHRlcm4g dm9pZCBrdGltZV9nZXRfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwpleHRlcm4gdm9pZCBr dGltZV9nZXRfcmVhbF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0dik7CmV4dGVybiB2b2lkIGt0 aW1lX2dldF9jb2Fyc2VfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwpleHRlcm4gdm9pZCBr dGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwoKdm9pZCBn ZXRib290dGltZTY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CgoKCgpleHRlcm4gdGltZTY0X3Qg a3RpbWVfZ2V0X3NlY29uZHModm9pZCk7CmV4dGVybiB0aW1lNjRfdCBfX2t0aW1lX2dldF9yZWFs X3NlY29uZHModm9pZCk7CmV4dGVybiB0aW1lNjRfdCBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKHZv aWQpOwoKCgoKCmVudW0gdGtfb2Zmc2V0cyB7CiBUS19PRkZTX1JFQUwsCiBUS19PRkZTX0JPT1Qs CiBUS19PRkZTX1RBSSwKIFRLX09GRlNfTUFYLAp9OwoKZXh0ZXJuIGt0aW1lX3Qga3RpbWVfZ2V0 KHZvaWQpOwpleHRlcm4ga3RpbWVfdCBrdGltZV9nZXRfd2l0aF9vZmZzZXQoZW51bSB0a19vZmZz ZXRzIG9mZnMpOwpleHRlcm4ga3RpbWVfdCBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0KGVu dW0gdGtfb2Zmc2V0cyBvZmZzKTsKZXh0ZXJuIGt0aW1lX3Qga3RpbWVfbW9ub190b19hbnkoa3Rp bWVfdCB0bW9ubywgZW51bSB0a19vZmZzZXRzIG9mZnMpOwpleHRlcm4ga3RpbWVfdCBrdGltZV9n ZXRfcmF3KHZvaWQpOwpleHRlcm4gdTMyIGt0aW1lX2dldF9yZXNvbHV0aW9uX25zKHZvaWQpOwoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkga3RpbWVfdCBrdGltZV9nZXRfcmVhbCh2b2lkKQp7CiByZXR1cm4ga3RpbWVfZ2V0X3dpdGhf b2Zmc2V0KFRLX09GRlNfUkVBTCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2NvYXJzZV9yZWFsKHZv aWQpCnsKIHJldHVybiBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0KFRLX09GRlNfUkVBTCk7 Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2Jvb3R0aW1lKHZvaWQpCnsKIHJldHVybiBrdGlt ZV9nZXRfd2l0aF9vZmZzZXQoVEtfT0ZGU19CT09UKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBrdGltZV9nZXRfY29h cnNlX2Jvb3R0aW1lKHZvaWQpCnsKIHJldHVybiBrdGltZV9nZXRfY29hcnNlX3dpdGhfb2Zmc2V0 KFRLX09GRlNfQk9PVCk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3Qga3RpbWVfZ2V0X2Nsb2NrdGFpKHZvaWQpCnsK IHJldHVybiBrdGltZV9nZXRfd2l0aF9vZmZzZXQoVEtfT0ZGU19UQUkpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0 aW1lX2dldF9jb2Fyc2VfY2xvY2t0YWkodm9pZCkKewogcmV0dXJuIGt0aW1lX2dldF9jb2Fyc2Vf d2l0aF9vZmZzZXQoVEtfT0ZGU19UQUkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGt0aW1lX2dldF9jb2Fyc2Uodm9p ZCkKewogc3RydWN0IHRpbWVzcGVjNjQgdHM7Cgoga3RpbWVfZ2V0X2NvYXJzZV90czY0KCZ0cyk7 CiByZXR1cm4gdGltZXNwZWM2NF90b19rdGltZSh0cyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY29hcnNl X25zKHZvaWQpCnsKIHJldHVybiBrdGltZV90b19ucyhrdGltZV9nZXRfY29hcnNlKCkpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1 NjQga3RpbWVfZ2V0X2NvYXJzZV9yZWFsX25zKHZvaWQpCnsKIHJldHVybiBrdGltZV90b19ucyhr dGltZV9nZXRfY29hcnNlX3JlYWwoKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY29hcnNlX2Jvb3R0aW1l X25zKHZvaWQpCnsKIHJldHVybiBrdGltZV90b19ucyhrdGltZV9nZXRfY29hcnNlX2Jvb3R0aW1l KCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB1NjQga3RpbWVfZ2V0X2NvYXJzZV9jbG9ja3RhaV9ucyh2b2lkKQp7CiByZXR1cm4g a3RpbWVfdG9fbnMoa3RpbWVfZ2V0X2NvYXJzZV9jbG9ja3RhaSgpKTsKfQoKCgoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga3RpbWVfdCBr dGltZV9tb25vX3RvX3JlYWwoa3RpbWVfdCBtb25vKQp7CiByZXR1cm4ga3RpbWVfbW9ub190b19h bnkobW9ubywgVEtfT0ZGU19SRUFMKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IGt0aW1lX2dldF9ucyh2b2lkKQp7CiByZXR1 cm4ga3RpbWVfdG9fbnMoa3RpbWVfZ2V0KCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVfZ2V0X3JlYWxfbnModm9p ZCkKewogcmV0dXJuIGt0aW1lX3RvX25zKGt0aW1lX2dldF9yZWFsKCkpOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQga3RpbWVf Z2V0X2Jvb3R0aW1lX25zKHZvaWQpCnsKIHJldHVybiBrdGltZV90b19ucyhrdGltZV9nZXRfYm9v dHRpbWUoKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHU2NCBrdGltZV9nZXRfY2xvY2t0YWlfbnModm9pZCkKewogcmV0dXJuIGt0 aW1lX3RvX25zKGt0aW1lX2dldF9jbG9ja3RhaSgpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IGt0aW1lX2dldF9yYXdfbnMo dm9pZCkKewogcmV0dXJuIGt0aW1lX3RvX25zKGt0aW1lX2dldF9yYXcoKSk7Cn0KCmV4dGVybiB1 NjQga3RpbWVfZ2V0X21vbm9fZmFzdF9ucyh2b2lkKTsKZXh0ZXJuIHU2NCBrdGltZV9nZXRfcmF3 X2Zhc3RfbnModm9pZCk7CmV4dGVybiB1NjQga3RpbWVfZ2V0X2Jvb3RfZmFzdF9ucyh2b2lkKTsK ZXh0ZXJuIHU2NCBrdGltZV9nZXRfcmVhbF9mYXN0X25zKHZvaWQpOwoKCgoKCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0aW1l X2dldF9ib290dGltZV90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKewogKnRzID0gbnNfdG9f dGltZXNwZWM2NCgoa3RpbWVfZ2V0X2Jvb3R0aW1lKCkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrdGltZV9nZXRfY29h cnNlX2Jvb3R0aW1lX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKQp7CiAqdHMgPSBuc190b190 aW1lc3BlYzY0KChrdGltZV9nZXRfY29hcnNlX2Jvb3R0aW1lKCkpKTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdGltZTY0X3Qga3Rp bWVfZ2V0X2Jvb3R0aW1lX3NlY29uZHModm9pZCkKewogcmV0dXJuIGt0aW1lX2Rpdm5zKGt0aW1l X2dldF9jb2Fyc2VfYm9vdHRpbWUoKSwgMTAwMDAwMDAwMEwpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGt0aW1lX2dldF9j bG9ja3RhaV90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cykKewogKnRzID0gbnNfdG9fdGltZXNw ZWM2NCgoa3RpbWVfZ2V0X2Nsb2NrdGFpKCkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrdGltZV9nZXRfY29hcnNlX2Ns b2NrdGFpX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKQp7CiAqdHMgPSBuc190b190aW1lc3Bl YzY0KChrdGltZV9nZXRfY29hcnNlX2Nsb2NrdGFpKCkpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdGltZTY0X3Qga3RpbWVfZ2V0 X2Nsb2NrdGFpX3NlY29uZHModm9pZCkKewogcmV0dXJuIGt0aW1lX2Rpdm5zKGt0aW1lX2dldF9j b2Fyc2VfY2xvY2t0YWkoKSwgMTAwMDAwMDAwMEwpOwp9CgoKCgpleHRlcm4gYm9vbCB0aW1la2Vl cGluZ19ydGNfc2tpcHN1c3BlbmQodm9pZCk7CmV4dGVybiBib29sIHRpbWVrZWVwaW5nX3J0Y19z a2lwcmVzdW1lKHZvaWQpOwoKZXh0ZXJuIHZvaWQgdGltZWtlZXBpbmdfaW5qZWN0X3NsZWVwdGlt ZTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICpkZWx0YSk7CiMgMjM0ICIuL2luY2x1ZGUvbGlu dXgvdGltZWtlZXBpbmcuaCIKc3RydWN0IHN5c3RlbV90aW1lX3NuYXBzaG90IHsKIHU2NCBjeWNs ZXM7CiBrdGltZV90IHJlYWw7CiBrdGltZV90IHJhdzsKIHVuc2lnbmVkIGludCBjbG9ja193YXNf c2V0X3NlcTsKIHU4IGNzX3dhc19jaGFuZ2VkX3NlcTsKfTsKIyAyNDkgIi4vaW5jbHVkZS9saW51 eC90aW1la2VlcGluZy5oIgpzdHJ1Y3Qgc3lzdGVtX2RldmljZV9jcm9zc3RzdGFtcCB7CiBrdGlt ZV90IGRldmljZTsKIGt0aW1lX3Qgc3lzX3JlYWx0aW1lOwoga3RpbWVfdCBzeXNfbW9ub3JhdzsK fTsKIyAyNjIgIi4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIgpzdHJ1Y3Qgc3lzdGVtX2Nv dW50ZXJ2YWxfdCB7CiB1NjQgY3ljbGVzOwogc3RydWN0IGNsb2Nrc291cmNlICpjczsKfTsKCgoK CmV4dGVybiBpbnQgZ2V0X2RldmljZV9zeXN0ZW1fY3Jvc3N0c3RhbXAoCiAgIGludCAoKmdldF90 aW1lX2ZuKShrdGltZV90ICpkZXZpY2VfdGltZSwKICAgIHN0cnVjdCBzeXN0ZW1fY291bnRlcnZh bF90ICpzeXN0ZW1fY291bnRlcnZhbCwKICAgIHZvaWQgKmN0eCksCiAgIHZvaWQgKmN0eCwKICAg c3RydWN0IHN5c3RlbV90aW1lX3NuYXBzaG90ICpoaXN0b3J5LAogICBzdHJ1Y3Qgc3lzdGVtX2Rl dmljZV9jcm9zc3RzdGFtcCAqeHRzdGFtcCk7CgoKCgpleHRlcm4gdm9pZCBrdGltZV9nZXRfc25h cHNob3Qoc3RydWN0IHN5c3RlbV90aW1lX3NuYXBzaG90ICpzeXN0aW1lX3NuYXBzaG90KTsKCgoK CmV4dGVybiBpbnQgcGVyc2lzdGVudF9jbG9ja19pc19sb2NhbDsKCmV4dGVybiB2b2lkIHJlYWRf cGVyc2lzdGVudF9jbG9jazY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CnZvaWQgcmVhZF9wZXJz aXN0ZW50X3dhbGxfYW5kX2Jvb3Rfb2Zmc2V0KHN0cnVjdCB0aW1lc3BlYzY0ICp3YWxsX2Nsb2Nr LAogICAgICAgc3RydWN0IHRpbWVzcGVjNjQgKmJvb3Rfb2Zmc2V0KTsKZXh0ZXJuIGludCB1cGRh dGVfcGVyc2lzdGVudF9jbG9jazY0KHN0cnVjdCB0aW1lc3BlYzY0IG5vdyk7CiMgMjM5ICIuL2lu Y2x1ZGUvbGludXgva3RpbWUuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC90aW1la2VlcGluZzMy LmgiIDEKIyA5ICIuL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmczMi5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25n IGdldF9zZWNvbmRzKHZvaWQpCnsKIHJldHVybiBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKCk7Cn0K IyAyNDAgIi4vaW5jbHVkZS9saW51eC9rdGltZS5oIiAyCiMgNyAiLi9pbmNsdWRlL2xpbnV4L3Rp bWVyLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnb2JqZWN0cy5oIiAxCgoKCgoKCgpl bnVtIGRlYnVnX29ial9zdGF0ZSB7CiBPREVCVUdfU1RBVEVfTk9ORSwKIE9ERUJVR19TVEFURV9J TklULAogT0RFQlVHX1NUQVRFX0lOQUNUSVZFLAogT0RFQlVHX1NUQVRFX0FDVElWRSwKIE9ERUJV R19TVEFURV9ERVNUUk9ZRUQsCiBPREVCVUdfU1RBVEVfTk9UQVZBSUxBQkxFLAogT0RFQlVHX1NU QVRFX01BWCwKfTsKCnN0cnVjdCBkZWJ1Z19vYmpfZGVzY3I7CiMgMjggIi4vaW5jbHVkZS9saW51 eC9kZWJ1Z29iamVjdHMuaCIKc3RydWN0IGRlYnVnX29iaiB7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSBu b2RlOwogZW51bSBkZWJ1Z19vYmpfc3RhdGUgc3RhdGU7CiB1bnNpZ25lZCBpbnQgYXN0YXRlOwog dm9pZCAqb2JqZWN0Owogc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3I7Cn07CiMgNTUgIi4v aW5jbHVkZS9saW51eC9kZWJ1Z29iamVjdHMuaCIKc3RydWN0IGRlYnVnX29ial9kZXNjciB7CiBj b25zdCBjaGFyICpuYW1lOwogdm9pZCAqKCpkZWJ1Z19oaW50KSh2b2lkICphZGRyKTsKIGJvb2wg KCppc19zdGF0aWNfb2JqZWN0KSh2b2lkICphZGRyKTsKIGJvb2wgKCpmaXh1cF9pbml0KSh2b2lk ICphZGRyLCBlbnVtIGRlYnVnX29ial9zdGF0ZSBzdGF0ZSk7CiBib29sICgqZml4dXBfYWN0aXZh dGUpKHZvaWQgKmFkZHIsIGVudW0gZGVidWdfb2JqX3N0YXRlIHN0YXRlKTsKIGJvb2wgKCpmaXh1 cF9kZXN0cm95KSh2b2lkICphZGRyLCBlbnVtIGRlYnVnX29ial9zdGF0ZSBzdGF0ZSk7CiBib29s ICgqZml4dXBfZnJlZSkodm9pZCAqYWRkciwgZW51bSBkZWJ1Z19vYmpfc3RhdGUgc3RhdGUpOwog Ym9vbCAoKmZpeHVwX2Fzc2VydF9pbml0KSh2b2lkICphZGRyLCBlbnVtIGRlYnVnX29ial9zdGF0 ZSBzdGF0ZSk7Cn07CiMgODggIi4vaW5jbHVkZS9saW51eC9kZWJ1Z29iamVjdHMuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApk ZWJ1Z19vYmplY3RfaW5pdCAodm9pZCAqYWRkciwgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVz Y3IpIHsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkCmRlYnVnX29iamVjdF9pbml0X29uX3N0YWNrKHZvaWQgKmFkZHIsIHN0cnVj dCBkZWJ1Z19vYmpfZGVzY3IgKmRlc2NyKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CmRlYnVnX29iamVjdF9hY3RpdmF0ZSAo dm9pZCAqYWRkciwgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3IpIHsgcmV0dXJuIDA7IH0K c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZApkZWJ1Z19vYmplY3RfZGVhY3RpdmF0ZSh2b2lkICphZGRyLCBzdHJ1Y3QgZGVidWdfb2Jq X2Rlc2NyICpkZXNjcikgeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKZGVidWdfb2JqZWN0X2Rlc3Ryb3kgKHZvaWQgKmFkZHIs IHN0cnVjdCBkZWJ1Z19vYmpfZGVzY3IgKmRlc2NyKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApkZWJ1Z19vYmplY3RfZnJl ZSAodm9pZCAqYWRkciwgc3RydWN0IGRlYnVnX29ial9kZXNjciAqZGVzY3IpIHsgfQpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCmRl YnVnX29iamVjdF9hc3NlcnRfaW5pdCh2b2lkICphZGRyLCBzdHJ1Y3QgZGVidWdfb2JqX2Rlc2Ny ICpkZXNjcikgeyB9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGRlYnVnX29iamVjdHNfZWFybHlfaW5pdCh2b2lkKSB7IH0Kc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBkZWJ1Z19vYmplY3RzX21lbV9pbml0KHZvaWQpIHsgfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKZGVidWdfY2hlY2tf bm9fb2JqX2ZyZWVkKGNvbnN0IHZvaWQgKmFkZHJlc3MsIHVuc2lnbmVkIGxvbmcgc2l6ZSkgeyB9 CiMgOSAiLi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiIDIKCgpzdHJ1Y3QgdGltZXJfbGlzdCB7CgoK Cgogc3RydWN0IGhsaXN0X25vZGUgZW50cnk7CiB1bnNpZ25lZCBsb25nIGV4cGlyZXM7CiB2b2lk ICgqZnVuY3Rpb24pKHN0cnVjdCB0aW1lcl9saXN0ICopOwogdTMyIGZsYWdzOwoKCgoKfTsKIyA5 MCAiLi9pbmNsdWRlL2xpbnV4L3RpbWVyLmgiCnZvaWQgaW5pdF90aW1lcl9rZXkoc3RydWN0IHRp bWVyX2xpc3QgKnRpbWVyLAogICAgICB2b2lkICgqZnVuYykoc3RydWN0IHRpbWVyX2xpc3QgKiks IHVuc2lnbmVkIGludCBmbGFncywKICAgICAgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGxvY2tf Y2xhc3Nfa2V5ICprZXkpOwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbml0X3RpbWVyX29uX3N0YWNrX2tleShzdHJ1 Y3QgdGltZXJfbGlzdCAqdGltZXIsCiAgICAgICAgdm9pZCAoKmZ1bmMpKHN0cnVjdCB0aW1lcl9s aXN0ICopLAogICAgICAgIHVuc2lnbmVkIGludCBmbGFncywKICAgICAgICBjb25zdCBjaGFyICpu YW1lLAogICAgICAgIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KQp7CiBpbml0X3RpbWVyX2tl eSh0aW1lciwgZnVuYywgZmxhZ3MsIG5hbWUsIGtleSk7Cn0KIyAxNDkgIi4vaW5jbHVkZS9saW51 eC90aW1lci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGRlc3Ryb3lfdGltZXJfb25fc3RhY2soc3RydWN0IHRpbWVyX2xpc3Qg KnRpbWVyKSB7IH0KIyAxNjUgIi4vaW5jbHVkZS9saW51eC90aW1lci5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGltZXJfcGVu ZGluZyhjb25zdCBzdHJ1Y3QgdGltZXJfbGlzdCAqIHRpbWVyKQp7CiByZXR1cm4gdGltZXItPmVu dHJ5LnBwcmV2ICE9ICgodm9pZCAqKTApOwp9CgpleHRlcm4gdm9pZCBhZGRfdGltZXJfb24oc3Ry dWN0IHRpbWVyX2xpc3QgKnRpbWVyLCBpbnQgY3B1KTsKZXh0ZXJuIGludCBkZWxfdGltZXIoc3Ry dWN0IHRpbWVyX2xpc3QgKiB0aW1lcik7CmV4dGVybiBpbnQgbW9kX3RpbWVyKHN0cnVjdCB0aW1l cl9saXN0ICp0aW1lciwgdW5zaWduZWQgbG9uZyBleHBpcmVzKTsKZXh0ZXJuIGludCBtb2RfdGlt ZXJfcGVuZGluZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIsIHVuc2lnbmVkIGxvbmcgZXhwaXJl cyk7CmV4dGVybiBpbnQgdGltZXJfcmVkdWNlKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lciwgdW5z aWduZWQgbG9uZyBleHBpcmVzKTsKCgoKCgoKCmV4dGVybiB2b2lkIGFkZF90aW1lcihzdHJ1Y3Qg dGltZXJfbGlzdCAqdGltZXIpOwoKZXh0ZXJuIGludCB0cnlfdG9fZGVsX3RpbWVyX3N5bmMoc3Ry dWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKCgogIGV4dGVybiBpbnQgZGVsX3RpbWVyX3N5bmMoc3Ry dWN0IHRpbWVyX2xpc3QgKnRpbWVyKTsKCgoKCgoKZXh0ZXJuIHZvaWQgaW5pdF90aW1lcnModm9p ZCk7CmV4dGVybiB2b2lkIHJ1bl9sb2NhbF90aW1lcnModm9pZCk7CnN0cnVjdCBocnRpbWVyOwpl eHRlcm4gZW51bSBocnRpbWVyX3Jlc3RhcnQgaXRfcmVhbF9mbihzdHJ1Y3QgaHJ0aW1lciAqKTsK CgpzdHJ1Y3QgY3RsX3RhYmxlOwoKZXh0ZXJuIHVuc2lnbmVkIGludCBzeXNjdGxfdGltZXJfbWln cmF0aW9uOwppbnQgdGltZXJfbWlncmF0aW9uX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqdGFi bGUsIGludCB3cml0ZSwKICAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLAogICAgICAg bG9mZl90ICpwcG9zKTsKCgp1bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllcyh1bnNpZ25lZCBs b25nIGosIGludCBjcHUpOwp1bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllc19yZWxhdGl2ZSh1 bnNpZ25lZCBsb25nIGosIGludCBjcHUpOwp1bnNpZ25lZCBsb25nIHJvdW5kX2ppZmZpZXModW5z aWduZWQgbG9uZyBqKTsKdW5zaWduZWQgbG9uZyByb3VuZF9qaWZmaWVzX3JlbGF0aXZlKHVuc2ln bmVkIGxvbmcgaik7Cgp1bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllc191cCh1bnNpZ25lZCBs b25nIGosIGludCBjcHUpOwp1bnNpZ25lZCBsb25nIF9fcm91bmRfamlmZmllc191cF9yZWxhdGl2 ZSh1bnNpZ25lZCBsb25nIGosIGludCBjcHUpOwp1bnNpZ25lZCBsb25nIHJvdW5kX2ppZmZpZXNf dXAodW5zaWduZWQgbG9uZyBqKTsKdW5zaWduZWQgbG9uZyByb3VuZF9qaWZmaWVzX3VwX3JlbGF0 aXZlKHVuc2lnbmVkIGxvbmcgaik7CgoKaW50IHRpbWVyc19wcmVwYXJlX2NwdSh1bnNpZ25lZCBp bnQgY3B1KTsKaW50IHRpbWVyc19kZWFkX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKIyAxMCAiLi9p bmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIiAyCiMgMTggIi4vaW5jbHVkZS9saW51eC93b3JrcXVl dWUuaCIKc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3Q7CgpzdHJ1Y3Qgd29ya19zdHJ1Y3Q7CnR5cGVk ZWYgdm9pZCAoKndvcmtfZnVuY190KShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOwp2b2lkIGRl bGF5ZWRfd29ya190aW1lcl9mbihzdHJ1Y3QgdGltZXJfbGlzdCAqdCk7CgoKCgoKCgplbnVtIHsK IFdPUktfU1RSVUNUX1BFTkRJTkdfQklUID0gMCwKIFdPUktfU1RSVUNUX0RFTEFZRURfQklUID0g MSwKIFdPUktfU1RSVUNUX1BXUV9CSVQgPSAyLAogV09SS19TVFJVQ1RfTElOS0VEX0JJVCA9IDMs CgoKCgogV09SS19TVFJVQ1RfQ09MT1JfU0hJRlQgPSA0LAoKCiBXT1JLX1NUUlVDVF9DT0xPUl9C SVRTID0gNCwKCiBXT1JLX1NUUlVDVF9QRU5ESU5HID0gMSA8PCBXT1JLX1NUUlVDVF9QRU5ESU5H X0JJVCwKIFdPUktfU1RSVUNUX0RFTEFZRUQgPSAxIDw8IFdPUktfU1RSVUNUX0RFTEFZRURfQklU LAogV09SS19TVFJVQ1RfUFdRID0gMSA8PCBXT1JLX1NUUlVDVF9QV1FfQklULAogV09SS19TVFJV Q1RfTElOS0VEID0gMSA8PCBXT1JLX1NUUlVDVF9MSU5LRURfQklULAoKCgogV09SS19TVFJVQ1Rf U1RBVElDID0gMCwKCgoKCgoKIFdPUktfTlJfQ09MT1JTID0gKDEgPDwgV09SS19TVFJVQ1RfQ09M T1JfQklUUykgLSAxLAogV09SS19OT19DT0xPUiA9IFdPUktfTlJfQ09MT1JTLAoKCiBXT1JLX0NQ VV9VTkJPVU5EID0gOCwKCgoKCgoKIFdPUktfU1RSVUNUX0ZMQUdfQklUUyA9IFdPUktfU1RSVUNU X0NPTE9SX1NISUZUICsKICAgICAgV09SS19TVFJVQ1RfQ09MT1JfQklUUywKCgogV09SS19PRkZR X0ZMQUdfQkFTRSA9IFdPUktfU1RSVUNUX0NPTE9SX1NISUZULAoKIF9fV09SS19PRkZRX0NBTkNF TElORyA9IFdPUktfT0ZGUV9GTEFHX0JBU0UsCiBXT1JLX09GRlFfQ0FOQ0VMSU5HID0gKDEgPDwg X19XT1JLX09GRlFfQ0FOQ0VMSU5HKSwKCgoKCgoKIFdPUktfT0ZGUV9GTEFHX0JJVFMgPSAxLAog V09SS19PRkZRX1BPT0xfU0hJRlQgPSBXT1JLX09GRlFfRkxBR19CQVNFICsgV09SS19PRkZRX0ZM QUdfQklUUywKIFdPUktfT0ZGUV9MRUZUID0gNjQgLSBXT1JLX09GRlFfUE9PTF9TSElGVCwKIFdP UktfT0ZGUV9QT09MX0JJVFMgPSBXT1JLX09GRlFfTEVGVCA8PSAzMSA/IFdPUktfT0ZGUV9MRUZU IDogMzEsCiBXT1JLX09GRlFfUE9PTF9OT05FID0gKDFMVSA8PCBXT1JLX09GRlFfUE9PTF9CSVRT KSAtIDEsCgoKIFdPUktfU1RSVUNUX0ZMQUdfTUFTSyA9ICgxVUwgPDwgV09SS19TVFJVQ1RfRkxB R19CSVRTKSAtIDEsCiBXT1JLX1NUUlVDVF9XUV9EQVRBX01BU0sgPSB+V09SS19TVFJVQ1RfRkxB R19NQVNLLAogV09SS19TVFJVQ1RfTk9fUE9PTCA9ICh1bnNpZ25lZCBsb25nKVdPUktfT0ZGUV9Q T09MX05PTkUgPDwgV09SS19PRkZRX1BPT0xfU0hJRlQsCgoKIFdPUktfQlVTWV9QRU5ESU5HID0g MSA8PCAwLAogV09SS19CVVNZX1JVTk5JTkcgPSAxIDw8IDEsCgoKIFdPUktFUl9ERVNDX0xFTiA9 IDI0LAp9OwoKc3RydWN0IHdvcmtfc3RydWN0IHsKIGF0b21pY19sb25nX3QgZGF0YTsKIHN0cnVj dCBsaXN0X2hlYWQgZW50cnk7CiB3b3JrX2Z1bmNfdCBmdW5jOwoKCgp9OwoKCgoKCnN0cnVjdCBk ZWxheWVkX3dvcmsgewogc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CiBzdHJ1Y3QgdGltZXJfbGlz dCB0aW1lcjsKCgogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwogaW50IGNwdTsKfTsKCnN0 cnVjdCByY3Vfd29yayB7CiBzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIHN0cnVjdCBjYWxsYmFj a19oZWFkIHJjdTsKCgogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwp9OwoKCgoKCgpzdHJ1 Y3Qgd29ya3F1ZXVlX2F0dHJzIHsKCgoKIGludCBuaWNlOwoKCgoKIGNwdW1hc2tfdmFyX3QgY3B1 bWFzazsKIyAxNTUgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKIGJvb2wgbm9fbnVtYTsK fTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBkZWxheWVkX3dvcmsgKnRvX2RlbGF5ZWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCnsKIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKSh3b3JrKTsgZG8g eyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNjAodm9pZCkgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFpbmVyX29mKCkiKSkp OyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKHdvcmspKSwg dHlwZW9mKCgoc3RydWN0IGRlbGF5ZWRfd29yayAqKTApLT53b3JrKSkgJiYgIV9fYnVpbHRpbl90 eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCood29yaykpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29t cGlsZXRpbWVfYXNzZXJ0XzE2MCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgZGVsYXllZF93b3Jr ICopKF9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgZGVsYXllZF93b3JrLCB3b3Jr KSkpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc3RydWN0IHJjdV93b3JrICp0b19yY3Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCnsKIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKSh3b3JrKTsgZG8g eyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNjUodm9pZCkgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFpbmVyX29mKCkiKSkp OyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqKHdvcmspKSwg dHlwZW9mKCgoc3RydWN0IHJjdV93b3JrICopMCktPndvcmspKSAmJiAhX19idWlsdGluX3R5cGVz X2NvbXBhdGlibGVfcCh0eXBlb2YoKih3b3JrKSksIHR5cGVvZih2b2lkKSkpKSkgX19jb21waWxl dGltZV9hc3NlcnRfMTY1KCk7IH0gd2hpbGUgKDApOyAoKHN0cnVjdCByY3Vfd29yayAqKShfX21w dHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHJjdV93b3JrLCB3b3JrKSkpOyB9KTsKfQoK c3RydWN0IGV4ZWN1dGVfd29yayB7CiBzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKfTsKIyAyMTUg Ii4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2luaXRfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmssIGludCBvbnN0YWNrKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXN0cm95X3dvcmtfb25fc3Rh Y2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXN0cm95X2RlbGF5ZWRfd29y a19vbl9zdGFjayhzdHJ1Y3QgZGVsYXllZF93b3JrICp3b3JrKSB7IH0Kc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IHdv cmtfc3RhdGljKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykgeyByZXR1cm4gMDsgfQojIDMwOCAi Li9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgplbnVtIHsKIFdRX1VOQk9VTkQgPSAxIDw8IDEs CiBXUV9GUkVFWkFCTEUgPSAxIDw8IDIsCiBXUV9NRU1fUkVDTEFJTSA9IDEgPDwgMywKIFdRX0hJ R0hQUkkgPSAxIDw8IDQsCiBXUV9DUFVfSU5URU5TSVZFID0gMSA8PCA1LAogV1FfU1lTRlMgPSAx IDw8IDYsCiMgMzQxICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCiBXUV9QT1dFUl9FRkZJ Q0lFTlQgPSAxIDw8IDcsCgogX19XUV9EUkFJTklORyA9IDEgPDwgMTYsCiBfX1dRX09SREVSRUQg PSAxIDw8IDE3LAogX19XUV9MRUdBQ1kgPSAxIDw8IDE4LAogX19XUV9PUkRFUkVEX0VYUExJQ0lU ID0gMSA8PCAxOSwKCiBXUV9NQVhfQUNUSVZFID0gNTEyLAogV1FfTUFYX1VOQk9VTkRfUEVSX0NQ VSA9IDQsCiBXUV9ERkxfQUNUSVZFID0gV1FfTUFYX0FDVElWRSAvIDIsCn07CiMgMzg1ICIuL2lu Y2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCmV4dGVybiBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAq c3lzdGVtX3dxOwpleHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9oaWdocHJp X3dxOwpleHRlcm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9sb25nX3dxOwpleHRl cm4gc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV91bmJvdW5kX3dxOwpleHRlcm4gc3Ry dWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnN5c3RlbV9mcmVlemFibGVfd3E7CmV4dGVybiBzdHJ1Y3Qg d29ya3F1ZXVlX3N0cnVjdCAqc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cTsKZXh0ZXJuIHN0cnVj dCB3b3JrcXVldWVfc3RydWN0ICpzeXN0ZW1fZnJlZXphYmxlX3Bvd2VyX2VmZmljaWVudF93cTsK IyA0MDcgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKc3RydWN0IHdvcmtxdWV1ZV9zdHJ1 Y3QgKmFsbG9jX3dvcmtxdWV1ZShjb25zdCBjaGFyICpmbXQsCiAgICAgIHVuc2lnbmVkIGludCBm bGFncywKICAgICAgaW50IG1heF9hY3RpdmUsIC4uLik7CiMgNDM2ICIuL2luY2x1ZGUvbGludXgv d29ya3F1ZXVlLmgiCmV4dGVybiB2b2lkIGRlc3Ryb3lfd29ya3F1ZXVlKHN0cnVjdCB3b3JrcXVl dWVfc3RydWN0ICp3cSk7CgpzdHJ1Y3Qgd29ya3F1ZXVlX2F0dHJzICphbGxvY193b3JrcXVldWVf YXR0cnModm9pZCk7CnZvaWQgZnJlZV93b3JrcXVldWVfYXR0cnMoc3RydWN0IHdvcmtxdWV1ZV9h dHRycyAqYXR0cnMpOwppbnQgYXBwbHlfd29ya3F1ZXVlX2F0dHJzKHN0cnVjdCB3b3JrcXVldWVf c3RydWN0ICp3cSwKICAgICBjb25zdCBzdHJ1Y3Qgd29ya3F1ZXVlX2F0dHJzICphdHRycyk7Cmlu dCB3b3JrcXVldWVfc2V0X3VuYm91bmRfY3B1bWFzayhjcHVtYXNrX3Zhcl90IGNwdW1hc2spOwoK ZXh0ZXJuIGJvb2wgcXVldWVfd29ya19vbihpbnQgY3B1LCBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVj dCAqd3EsCiAgIHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CmV4dGVybiBib29sIHF1ZXVlX3dv cmtfbm9kZShpbnQgbm9kZSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAogICAgICAgc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKZXh0ZXJuIGJvb2wgcXVldWVfZGVsYXllZF93b3JrX29u KGludCBjcHUsIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwKICAgc3RydWN0IGRlbGF5ZWRf d29yayAqd29yaywgdW5zaWduZWQgbG9uZyBkZWxheSk7CmV4dGVybiBib29sIG1vZF9kZWxheWVk X3dvcmtfb24oaW50IGNwdSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAogICBzdHJ1Y3Qg ZGVsYXllZF93b3JrICpkd29yaywgdW5zaWduZWQgbG9uZyBkZWxheSk7CmV4dGVybiBib29sIHF1 ZXVlX3JjdV93b3JrKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwgc3RydWN0IHJjdV93b3Jr ICpyd29yayk7CgpleHRlcm4gdm9pZCBmbHVzaF93b3JrcXVldWUoc3RydWN0IHdvcmtxdWV1ZV9z dHJ1Y3QgKndxKTsKZXh0ZXJuIHZvaWQgZHJhaW5fd29ya3F1ZXVlKHN0cnVjdCB3b3JrcXVldWVf c3RydWN0ICp3cSk7CgpleHRlcm4gaW50IHNjaGVkdWxlX29uX2VhY2hfY3B1KHdvcmtfZnVuY190 IGZ1bmMpOwoKaW50IGV4ZWN1dGVfaW5fcHJvY2Vzc19jb250ZXh0KHdvcmtfZnVuY190IGZuLCBz dHJ1Y3QgZXhlY3V0ZV93b3JrICopOwoKZXh0ZXJuIGJvb2wgZmx1c2hfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspOwpleHRlcm4gYm9vbCBjYW5jZWxfd29ya19zeW5jKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yayk7CgpleHRlcm4gYm9vbCBmbHVzaF9kZWxheWVkX3dvcmsoc3RydWN0IGRl bGF5ZWRfd29yayAqZHdvcmspOwpleHRlcm4gYm9vbCBjYW5jZWxfZGVsYXllZF93b3JrKHN0cnVj dCBkZWxheWVkX3dvcmsgKmR3b3JrKTsKZXh0ZXJuIGJvb2wgY2FuY2VsX2RlbGF5ZWRfd29ya19z eW5jKHN0cnVjdCBkZWxheWVkX3dvcmsgKmR3b3JrKTsKCmV4dGVybiBib29sIGZsdXNoX3JjdV93 b3JrKHN0cnVjdCByY3Vfd29yayAqcndvcmspOwoKZXh0ZXJuIHZvaWQgd29ya3F1ZXVlX3NldF9t YXhfYWN0aXZlKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwKICAgICAgICAgaW50IG1heF9h Y3RpdmUpOwpleHRlcm4gc3RydWN0IHdvcmtfc3RydWN0ICpjdXJyZW50X3dvcmsodm9pZCk7CmV4 dGVybiBib29sIGN1cnJlbnRfaXNfd29ya3F1ZXVlX3Jlc2N1ZXIodm9pZCk7CmV4dGVybiBib29s IHdvcmtxdWV1ZV9jb25nZXN0ZWQoaW50IGNwdSwgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndx KTsKZXh0ZXJuIHVuc2lnbmVkIGludCB3b3JrX2J1c3koc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAxLCAyKSkpIHZvaWQg c2V0X3dvcmtlcl9kZXNjKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKZXh0ZXJuIHZvaWQgcHJpbnRf d29ya2VyX2luZm8oY29uc3QgY2hhciAqbG9nX2x2bCwgc3RydWN0IHRhc2tfc3RydWN0ICp0YXNr KTsKZXh0ZXJuIHZvaWQgc2hvd193b3JrcXVldWVfc3RhdGUodm9pZCk7CmV4dGVybiB2b2lkIHdx X3dvcmtlcl9jb21tKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzayk7CiMgNTA0ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcXVldWVfd29y ayhzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3EsCiAgICAgICAgIHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKewogcmV0dXJuIHF1ZXVlX3dvcmtfb24oV09SS19DUFVfVU5CT1VORCwgd3EsIHdv cmspOwp9CiMgNTE4ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcXVldWVfZGVs YXllZF93b3JrKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSwKICAgICAgICAgIHN0cnVjdCBk ZWxheWVkX3dvcmsgKmR3b3JrLAogICAgICAgICAgdW5zaWduZWQgbG9uZyBkZWxheSkKewogcmV0 dXJuIHF1ZXVlX2RlbGF5ZWRfd29ya19vbihXT1JLX0NQVV9VTkJPVU5ELCB3cSwgZHdvcmssIGRl bGF5KTsKfQojIDUzMyAiLi9pbmNsdWRlL2xpbnV4L3dvcmtxdWV1ZS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG1vZF9kZWxh eWVkX3dvcmsoc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAogICAgICAgIHN0cnVjdCBkZWxh eWVkX3dvcmsgKmR3b3JrLAogICAgICAgIHVuc2lnbmVkIGxvbmcgZGVsYXkpCnsKIHJldHVybiBt b2RfZGVsYXllZF93b3JrX29uKFdPUktfQ1BVX1VOQk9VTkQsIHdxLCBkd29yaywgZGVsYXkpOwp9 CiMgNTQ3ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2NoZWR1bGVfd29ya19v bihpbnQgY3B1LCBzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCnsKIHJldHVybiBxdWV1ZV93b3Jr X29uKGNwdSwgc3lzdGVtX3dxLCB3b3JrKTsKfQojIDU2NiAiLi9pbmNsdWRlL2xpbnV4L3dvcmtx dWV1ZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIHNjaGVkdWxlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQp7CiBy ZXR1cm4gcXVldWVfd29yayhzeXN0ZW1fd3EsIHdvcmspOwp9CiMgNTk1ICIuL2luY2x1ZGUvbGlu dXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgZmx1c2hfc2NoZWR1bGVkX3dvcmsodm9pZCkKewogZmx1c2hf d29ya3F1ZXVlKHN5c3RlbV93cSk7Cn0KIyA2MDkgIi4vaW5jbHVkZS9saW51eC93b3JrcXVldWUu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBzY2hlZHVsZV9kZWxheWVkX3dvcmtfb24oaW50IGNwdSwgc3RydWN0IGRlbGF5ZWRf d29yayAqZHdvcmssCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGVsYXkpCnsKIHJldHVybiBxdWV1 ZV9kZWxheWVkX3dvcmtfb24oY3B1LCBzeXN0ZW1fd3EsIGR3b3JrLCBkZWxheSk7Cn0KIyA2MjMg Ii4vaW5jbHVkZS9saW51eC93b3JrcXVldWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBzY2hlZHVsZV9kZWxheWVkX3dvcmso c3RydWN0IGRlbGF5ZWRfd29yayAqZHdvcmssCiAgICAgIHVuc2lnbmVkIGxvbmcgZGVsYXkpCnsK IHJldHVybiBxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCBkd29yaywgZGVsYXkpOwp9CiMg NjM5ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCmxvbmcgd29ya19vbl9jcHUoaW50IGNw dSwgbG9uZyAoKmZuKSh2b2lkICopLCB2b2lkICphcmcpOwpsb25nIHdvcmtfb25fY3B1X3NhZmUo aW50IGNwdSwgbG9uZyAoKmZuKSh2b2lkICopLCB2b2lkICphcmcpOwoKCgpleHRlcm4gdm9pZCBm cmVlemVfd29ya3F1ZXVlc19iZWdpbih2b2lkKTsKZXh0ZXJuIGJvb2wgZnJlZXplX3dvcmtxdWV1 ZXNfYnVzeSh2b2lkKTsKZXh0ZXJuIHZvaWQgdGhhd193b3JrcXVldWVzKHZvaWQpOwoKCgppbnQg d29ya3F1ZXVlX3N5c2ZzX3JlZ2lzdGVyKHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cSk7CiMg NjU5ICIuL2luY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgd3Ffd2F0Y2hkb2dfdG91Y2go aW50IGNwdSkgeyB9CgoKCmludCB3b3JrcXVldWVfcHJlcGFyZV9jcHUodW5zaWduZWQgaW50IGNw dSk7CmludCB3b3JrcXVldWVfb25saW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKaW50IHdvcmtx dWV1ZV9vZmZsaW5lX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKCgppbnQgX19hdHRyaWJ1dGVfXygo X19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgd29y a3F1ZXVlX2luaXRfZWFybHkodm9pZCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygi LmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSB3b3JrcXVldWVfaW5pdCh2 b2lkKTsKIyAxNyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiIDIKCiMgMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9tbXUuaCIgMQoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9tdXRleC5o IiAxCiMgMjEgIi4vaW5jbHVkZS9saW51eC9tdXRleC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9k ZWJ1Z19sb2Nrcy5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnX2xvY2tzLmgiCnN0cnVj dCB0YXNrX3N0cnVjdDsKCmV4dGVybiBpbnQgZGVidWdfbG9ja3MgX19hdHRyaWJ1dGVfXygoX19z ZWN0aW9uX18oIi5kYXRhLi5yZWFkX21vc3RseSIpKSk7CmV4dGVybiBpbnQgZGVidWdfbG9ja3Nf c2lsZW50IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkp OwoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGludCBfX2RlYnVnX2xvY2tzX29mZih2b2lkKQp7CiByZXR1cm4gKHsgdHlwZW9mKCZkZWJ1 Z19sb2NrcykgX19haV9wdHIgPSAoJmRlYnVnX2xvY2tzKTsga2FzYW5fY2hlY2tfd3JpdGUoX19h aV9wdHIsIHNpemVvZigqX19haV9wdHIpKTsgKHsgX190eXBlb2ZfXyAoKigoX19haV9wdHIpKSkg X19yZXQgPSAoKDApKTsgc3dpdGNoIChzaXplb2YoKigoX19haV9wdHIpKSkpIHsgY2FzZSAxOiBh c20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAiYiAlYjAsICUxXG4iIDogIitxIiAoX19yZXQpLCAiK20i ICgqKChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSAyOiBhc20g dm9sYXRpbGUgKCIiICJ4Y2hnIiAidyAldzAsICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgq KChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJjYyIpOyBicmVhazsgY2FzZSA0OiBhc20gdm9s YXRpbGUgKCIiICJ4Y2hnIiAibCAlMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9f YWlfcHRyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGls ZSAoIiIgInhjaGciICJxICVxMCwgJTFcbiIgOiAiK3IiIChfX3JldCksICIrbSIgKCooKF9fYWlf cHRyKSkpIDogOiAibWVtb3J5IiwgImNjIik7IGJyZWFrOyBkZWZhdWx0OiBfX3hjaGdfd3Jvbmdf c2l6ZSgpOyB9IF9fcmV0OyB9KTsgfSk7Cn0KCgoKCmV4dGVybiBpbnQgZGVidWdfbG9ja3Nfb2Zm KHZvaWQpOwojIDQ5ICIuL2luY2x1ZGUvbGludXgvZGVidWdfbG9ja3MuaCIKc3RydWN0IHRhc2tf c3RydWN0OwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWJ1Z19zaG93X2FsbF9sb2Nrcyh2b2lkKQp7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg ZGVidWdfc2hvd19oZWxkX2xvY2tzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKewp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk CmRlYnVnX2NoZWNrX25vX2xvY2tzX2ZyZWVkKGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxv bmcgbGVuKQp7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQKZGVidWdfY2hlY2tfbm9fbG9ja3NfaGVsZCh2b2lkKQp7Cn0KIyAy MiAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiIDIKCnN0cnVjdCB3d19hY3F1aXJlX2N0eDsKIyA1 MyAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiCnN0cnVjdCBtdXRleCB7CiBhdG9taWNfbG9uZ190 IG93bmVyOwogc3BpbmxvY2tfdCB3YWl0X2xvY2s7Cgogc3RydWN0IG9wdGltaXN0aWNfc3Bpbl9x dWV1ZSBvc3E7Cgogc3RydWN0IGxpc3RfaGVhZCB3YWl0X2xpc3Q7CgoKCgoKCn07CgoKCgoKc3Ry dWN0IG11dGV4X3dhaXRlciB7CiBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiBzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2s7CiBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eDsKCgoKfTsKIyA5MiAi Li9pbmNsdWRlL2xpbnV4L211dGV4LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbXV0ZXhfZGVzdHJveShzdHJ1Y3QgbXV0ZXgg KmxvY2spIHt9CiMgMTI4ICIuL2luY2x1ZGUvbGludXgvbXV0ZXguaCIKZXh0ZXJuIHZvaWQgX19t dXRleF9pbml0KHN0cnVjdCBtdXRleCAqbG9jaywgY29uc3QgY2hhciAqbmFtZSwKICAgIHN0cnVj dCBsb2NrX2NsYXNzX2tleSAqa2V5KTsKCgoKCgoKCmV4dGVybiBib29sIG11dGV4X2lzX2xvY2tl ZChzdHJ1Y3QgbXV0ZXggKmxvY2spOwojIDE2NSAiLi9pbmNsdWRlL2xpbnV4L211dGV4LmgiCmV4 dGVybiB2b2lkIG11dGV4X2xvY2soc3RydWN0IG11dGV4ICpsb2NrKTsKZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgbXV0ZXhfbG9ja19pbnRlcnJ1cHRp YmxlKHN0cnVjdCBtdXRleCAqbG9jayk7CmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJu X3VudXNlZF9yZXN1bHRfXykpIG11dGV4X2xvY2tfa2lsbGFibGUoc3RydWN0IG11dGV4ICpsb2Nr KTsKZXh0ZXJuIHZvaWQgbXV0ZXhfbG9ja19pbyhzdHJ1Y3QgbXV0ZXggKmxvY2spOwojIDE4MyAi Li9pbmNsdWRlL2xpbnV4L211dGV4LmgiCmV4dGVybiBpbnQgbXV0ZXhfdHJ5bG9jayhzdHJ1Y3Qg bXV0ZXggKmxvY2spOwpleHRlcm4gdm9pZCBtdXRleF91bmxvY2soc3RydWN0IG11dGV4ICpsb2Nr KTsKCmV4dGVybiBpbnQgYXRvbWljX2RlY19hbmRfbXV0ZXhfbG9jayhhdG9taWNfdCAqY250LCBz dHJ1Y3QgbXV0ZXggKmxvY2spOwoKCgoKCmVudW0gbXV0ZXhfdHJ5bG9ja19yZWN1cnNpdmVfZW51 bSB7CiBNVVRFWF9UUllMT0NLX0ZBSUxFRCA9IDAsCiBNVVRFWF9UUllMT0NLX1NVQ0NFU1MgPSAx LAogTVVURVhfVFJZTE9DS19SRUNVUlNJVkUsCn07CiMgMjEwICIuL2luY2x1ZGUvbGludXgvbXV0 ZXguaCIKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBlbnVt IG11dGV4X3RyeWxvY2tfcmVjdXJzaXZlX2VudW0KbXV0ZXhfdHJ5bG9ja19yZWN1cnNpdmUoc3Ry dWN0IG11dGV4ICpsb2NrKTsKIyA4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21tdS5oIiAyCgoK CgoKdHlwZWRlZiBzdHJ1Y3QgewoKCgoKIHU2NCBjdHhfaWQ7CiMgMjggIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vbW11LmgiCiBhdG9taWM2NF90IHRsYl9nZW47CgoKIHN0cnVjdCByd19zZW1hcGhv cmUgbGR0X3Vzcl9zZW07CiBzdHJ1Y3QgbGR0X3N0cnVjdCAqbGR0OwoKCgoKIHVuc2lnbmVkIHNo b3J0IGlhMzJfY29tcGF0OwoKCiBzdHJ1Y3QgbXV0ZXggbG9jazsKIHZvaWQgKnZkc287CiBjb25z dCBzdHJ1Y3QgdmRzb19pbWFnZSAqdmRzb19pbWFnZTsKCiBhdG9taWNfdCBwZXJmX3JkcG1jX2Fs bG93ZWQ7CgoKCgoKIHUxNiBwa2V5X2FsbG9jYXRpb25fbWFwOwogczE2IGV4ZWN1dGVfb25seV9w a2V5OwoKfSBtbV9jb250ZXh0X3Q7CgoKCgoKCgp2b2lkIGxlYXZlX21tKGludCBjcHUpOwojIDE5 ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIgMgoKCgoKCgoKc3RydWN0IGFkZHJlc3Nfc3Bh Y2U7CnN0cnVjdCBtZW1fY2dyb3VwOwojIDY4ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIK c3RydWN0IHBhZ2UgewogdW5zaWduZWQgbG9uZyBmbGFnczsKCgoKCgoKCiB1bmlvbiB7CiAgc3Ry dWN0IHsKCgoKCgogICBzdHJ1Y3QgbGlzdF9oZWFkIGxydTsKCiAgIHN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nOwogICB1bnNpZ25lZCBsb25nIGluZGV4OwoKCgoKCgogICB1bnNpZ25lZCBs b25nIHByaXZhdGU7CiAgfTsKICBzdHJ1Y3QgewoKCgoKICAgZG1hX2FkZHJfdCBkbWFfYWRkcjsK ICB9OwogIHN0cnVjdCB7CiAgIHVuaW9uIHsKICAgIHN0cnVjdCBsaXN0X2hlYWQgc2xhYl9saXN0 OwogICAgc3RydWN0IHsKICAgICBzdHJ1Y3QgcGFnZSAqbmV4dDsKCiAgICAgaW50IHBhZ2VzOwog ICAgIGludCBwb2JqZWN0czsKCgoKCiAgICB9OwogICB9OwogICBzdHJ1Y3Qga21lbV9jYWNoZSAq c2xhYl9jYWNoZTsKCiAgIHZvaWQgKmZyZWVsaXN0OwogICB1bmlvbiB7CiAgICB2b2lkICpzX21l bTsKICAgIHVuc2lnbmVkIGxvbmcgY291bnRlcnM7CiAgICBzdHJ1Y3QgewogICAgIHVuc2lnbmVk IGludXNlOjE2OwogICAgIHVuc2lnbmVkIG9iamVjdHM6MTU7CiAgICAgdW5zaWduZWQgZnJvemVu OjE7CiAgICB9OwogICB9OwogIH07CiAgc3RydWN0IHsKICAgdW5zaWduZWQgbG9uZyBjb21wb3Vu ZF9oZWFkOwoKCiAgIHVuc2lnbmVkIGNoYXIgY29tcG91bmRfZHRvcjsKICAgdW5zaWduZWQgY2hh ciBjb21wb3VuZF9vcmRlcjsKICAgYXRvbWljX3QgY29tcG91bmRfbWFwY291bnQ7CiAgfTsKICBz dHJ1Y3QgewogICB1bnNpZ25lZCBsb25nIF9jb21wb3VuZF9wYWRfMTsKICAgdW5zaWduZWQgbG9u ZyBfY29tcG91bmRfcGFkXzI7CgogICBzdHJ1Y3QgbGlzdF9oZWFkIGRlZmVycmVkX2xpc3Q7CiAg fTsKICBzdHJ1Y3QgewogICB1bnNpZ25lZCBsb25nIF9wdF9wYWRfMTsKICAgcGd0YWJsZV90IHBt ZF9odWdlX3B0ZTsKICAgdW5zaWduZWQgbG9uZyBfcHRfcGFkXzI7CiAgIHVuaW9uIHsKICAgIHN0 cnVjdCBtbV9zdHJ1Y3QgKnB0X21tOwogICAgYXRvbWljX3QgcHRfZnJhZ19yZWZjb3VudDsKICAg fTsKCgoKICAgc3BpbmxvY2tfdCBwdGw7CgogIH07CiAgc3RydWN0IHsKCiAgIHN0cnVjdCBkZXZf cGFnZW1hcCAqcGdtYXA7CiAgIHZvaWQgKnpvbmVfZGV2aWNlX2RhdGE7CiMgMTcyICIuL2luY2x1 ZGUvbGludXgvbW1fdHlwZXMuaCIKICB9OwoKCiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgY2FsbGJh Y2tfaGVhZDsKIH07CgogdW5pb24gewoKCgoKICBhdG9taWNfdCBfbWFwY291bnQ7CgoKCgoKCgog IHVuc2lnbmVkIGludCBwYWdlX3R5cGU7CgogIHVuc2lnbmVkIGludCBhY3RpdmU7CiAgaW50IHVu aXRzOwogfTsKCgogYXRvbWljX3QgX3JlZmNvdW50OwoKCiBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVt X2Nncm91cDsKIyAyMjIgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgp9IDsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGF0b21pY190 ICpjb21wb3VuZF9tYXBjb3VudF9wdHIoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiAmcGFn ZVsxXS5jb21wb3VuZF9tYXBjb3VudDsKfQojIDI0MCAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVz LmgiCnN0cnVjdCBwYWdlX2ZyYWdfY2FjaGUgewogdm9pZCAqIHZhOwoKIF9fdTE2IG9mZnNldDsK IF9fdTE2IHNpemU7CgoKCgoKCiB1bnNpZ25lZCBpbnQgcGFnZWNudF9iaWFzOwogYm9vbCBwZm1l bWFsbG9jOwp9OwoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHZtX2ZsYWdzX3Q7CgoKCgoKCnN0cnVj dCB2bV9yZWdpb24gewogc3RydWN0IHJiX25vZGUgdm1fcmI7CiB2bV9mbGFnc190IHZtX2ZsYWdz OwogdW5zaWduZWQgbG9uZyB2bV9zdGFydDsKIHVuc2lnbmVkIGxvbmcgdm1fZW5kOwogdW5zaWdu ZWQgbG9uZyB2bV90b3A7CiB1bnNpZ25lZCBsb25nIHZtX3Bnb2ZmOwogc3RydWN0IGZpbGUgKnZt X2ZpbGU7CgogaW50IHZtX3VzYWdlOwogYm9vbCB2bV9pY2FjaGVfZmx1c2hlZCA6IDE7Cgp9Owoj IDI4MyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCnN0cnVjdCB2bV91c2VyZmF1bHRmZF9j dHgge307CiMgMjkyICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKc3RydWN0IHZtX2FyZWFf c3RydWN0IHsKCgogdW5zaWduZWQgbG9uZyB2bV9zdGFydDsKIHVuc2lnbmVkIGxvbmcgdm1fZW5k OwoKCgogc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bV9uZXh0LCAqdm1fcHJldjsKCiBzdHJ1Y3Qg cmJfbm9kZSB2bV9yYjsKCgoKCgoKCiB1bnNpZ25lZCBsb25nIHJiX3N1YnRyZWVfZ2FwOwoKCgog c3RydWN0IG1tX3N0cnVjdCAqdm1fbW07CgoKCgoKIHBncHJvdF90IHZtX3BhZ2VfcHJvdDsKIHVu c2lnbmVkIGxvbmcgdm1fZmxhZ3M7CgoKCgoKIHN0cnVjdCB7CiAgc3RydWN0IHJiX25vZGUgcmI7 CiAgdW5zaWduZWQgbG9uZyByYl9zdWJ0cmVlX2xhc3Q7CiB9IHNoYXJlZDsKCgoKCgoKCiBzdHJ1 Y3QgbGlzdF9oZWFkIGFub25fdm1hX2NoYWluOwoKIHN0cnVjdCBhbm9uX3ZtYSAqYW5vbl92bWE7 CgoKIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAqdm1fb3BzOwoKCiB1bnNpZ25l ZCBsb25nIHZtX3Bnb2ZmOwoKIHN0cnVjdCBmaWxlICogdm1fZmlsZTsKIHZvaWQgKiB2bV9wcml2 YXRlX2RhdGE7CgoKIGF0b21pY19sb25nX3Qgc3dhcF9yZWFkYWhlYWRfaW5mbzsKCgoKCgoKCiBz dHJ1Y3Qgdm1fdXNlcmZhdWx0ZmRfY3R4IHZtX3VzZXJmYXVsdGZkX2N0eDsKfSBfX2F0dHJpYnV0 ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpzdHJ1Y3QgY29yZV90aHJlYWQgewogc3RydWN0 IHRhc2tfc3RydWN0ICp0YXNrOwogc3RydWN0IGNvcmVfdGhyZWFkICpuZXh0Owp9OwoKc3RydWN0 IGNvcmVfc3RhdGUgewogYXRvbWljX3QgbnJfdGhyZWFkczsKIHN0cnVjdCBjb3JlX3RocmVhZCBk dW1wZXI7CiBzdHJ1Y3QgY29tcGxldGlvbiBzdGFydHVwOwp9OwoKc3RydWN0IGtpb2N0eF90YWJs ZTsKc3RydWN0IG1tX3N0cnVjdCB7CiBzdHJ1Y3QgewogIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq bW1hcDsKICBzdHJ1Y3QgcmJfcm9vdCBtbV9yYjsKICB1NjQgdm1hY2FjaGVfc2VxbnVtOwoKICB1 bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpIChzdHJ1Y3QgZmlsZSAqZmlscCwKICAg IHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4sCiAgICB1bnNpZ25lZCBsb25n IHBnb2ZmLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCiAgdW5zaWduZWQgbG9uZyBtbWFwX2Jhc2U7 CiAgdW5zaWduZWQgbG9uZyBtbWFwX2xlZ2FjeV9iYXNlOwoKCgoKCiAgdW5zaWduZWQgbG9uZyB0 YXNrX3NpemU7CiAgdW5zaWduZWQgbG9uZyBoaWdoZXN0X3ZtX2VuZDsKICBwZ2RfdCAqIHBnZDsK IyA0MDMgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgogIGF0b21pY190IG1lbWJhcnJpZXJf c3RhdGU7CiMgNDE1ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKICBhdG9taWNfdCBtbV91 c2VyczsKIyA0MjQgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgogIGF0b21pY190IG1tX2Nv dW50OwoKCiAgYXRvbWljX2xvbmdfdCBwZ3RhYmxlc19ieXRlczsKCiAgaW50IG1hcF9jb3VudDsK CiAgc3BpbmxvY2tfdCBwYWdlX3RhYmxlX2xvY2s7CgoKICBzdHJ1Y3Qgcndfc2VtYXBob3JlIG1t YXBfc2VtOwoKICBzdHJ1Y3QgbGlzdF9oZWFkIG1tbGlzdDsKCgoKCgoKICB1bnNpZ25lZCBsb25n IGhpd2F0ZXJfcnNzOwogIHVuc2lnbmVkIGxvbmcgaGl3YXRlcl92bTsKCiAgdW5zaWduZWQgbG9u ZyB0b3RhbF92bTsKICB1bnNpZ25lZCBsb25nIGxvY2tlZF92bTsKICBhdG9taWM2NF90IHBpbm5l ZF92bTsKICB1bnNpZ25lZCBsb25nIGRhdGFfdm07CiAgdW5zaWduZWQgbG9uZyBleGVjX3ZtOwog IHVuc2lnbmVkIGxvbmcgc3RhY2tfdm07CiAgdW5zaWduZWQgbG9uZyBkZWZfZmxhZ3M7CgogIHNw aW5sb2NrX3QgYXJnX2xvY2s7CiAgdW5zaWduZWQgbG9uZyBzdGFydF9jb2RlLCBlbmRfY29kZSwg c3RhcnRfZGF0YSwgZW5kX2RhdGE7CiAgdW5zaWduZWQgbG9uZyBzdGFydF9icmssIGJyaywgc3Rh cnRfc3RhY2s7CiAgdW5zaWduZWQgbG9uZyBhcmdfc3RhcnQsIGFyZ19lbmQsIGVudl9zdGFydCwg ZW52X2VuZDsKCiAgdW5zaWduZWQgbG9uZyBzYXZlZF9hdXh2WygyKigxICsgMjAgKyAxKSldOwoK CgoKCiAgc3RydWN0IG1tX3Jzc19zdGF0IHJzc19zdGF0OwoKICBzdHJ1Y3QgbGludXhfYmluZm10 ICpiaW5mbXQ7CgoKICBtbV9jb250ZXh0X3QgY29udGV4dDsKCiAgdW5zaWduZWQgbG9uZyBmbGFn czsKCiAgc3RydWN0IGNvcmVfc3RhdGUgKmNvcmVfc3RhdGU7CgoKICBzcGlubG9ja190IGlvY3R4 X2xvY2s7CiAgc3RydWN0IGtpb2N0eF90YWJsZSAqaW9jdHhfdGFibGU7CiMgNDkxICIuL2luY2x1 ZGUvbGludXgvbW1fdHlwZXMuaCIKICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKm93bmVyOwoKICBzdHJ1 Y3QgdXNlcl9uYW1lc3BhY2UgKnVzZXJfbnM7CgoKICBzdHJ1Y3QgZmlsZSAqZXhlX2ZpbGU7Cgog IHN0cnVjdCBtbXVfbm90aWZpZXJfc3Vic2NyaXB0aW9ucyAqbm90aWZpZXJfc3Vic2NyaXB0aW9u czsKIyA1MjIgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgogIGF0b21pY190IHRsYl9mbHVz aF9wZW5kaW5nOwoKCiAgYm9vbCB0bGJfZmx1c2hfYmF0Y2hlZDsKCiAgc3RydWN0IHVwcm9iZXNf c3RhdGUgdXByb2Jlc19zdGF0ZTsKCiAgYXRvbWljX2xvbmdfdCBodWdldGxiX3VzYWdlOwoKICBz dHJ1Y3Qgd29ya19zdHJ1Y3QgYXN5bmNfcHV0X3dvcms7CiB9IF9fYXR0cmlidXRlX18oKF9fZGVz aWduYXRlZF9pbml0X18pKTsKCgoKCgogdW5zaWduZWQgbG9uZyBjcHVfYml0bWFwW107Cn07Cgpl eHRlcm4gc3RydWN0IG1tX3N0cnVjdCBpbml0X21tOwoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbW1faW5pdF9jcHVtYXNrKHN0 cnVjdCBtbV9zdHJ1Y3QgKm1tKQp7CiB1bnNpZ25lZCBsb25nIGNwdV9iaXRtYXAgPSAodW5zaWdu ZWQgbG9uZyltbTsKCiBjcHVfYml0bWFwICs9IF9fYnVpbHRpbl9vZmZzZXRvZihzdHJ1Y3QgbW1f c3RydWN0LCBjcHVfYml0bWFwKTsKIGNwdW1hc2tfY2xlYXIoKHN0cnVjdCBjcHVtYXNrICopY3B1 X2JpdG1hcCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBjcHVtYXNrX3QgKm1tX2NwdW1hc2soc3RydWN0IG1tX3N0cnVjdCAqbW0p CnsKIHJldHVybiAoc3RydWN0IGNwdW1hc2sgKikmbW0tPmNwdV9iaXRtYXA7Cn0KCnN0cnVjdCBt bXVfZ2F0aGVyOwpleHRlcm4gdm9pZCB0bGJfZ2F0aGVyX21tdShzdHJ1Y3QgbW11X2dhdGhlciAq dGxiLCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2ln bmVkIGxvbmcgZW5kKTsKZXh0ZXJuIHZvaWQgdGxiX2ZpbmlzaF9tbXUoc3RydWN0IG1tdV9nYXRo ZXIgKnRsYiwKICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaW5pdF90bGJfZmx1c2hfcGVuZGluZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKewogYXRvbWlj X3NldCgmbW0tPnRsYl9mbHVzaF9wZW5kaW5nLCAwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbmNfdGxiX2ZsdXNoX3Bl bmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCnsKIGF0b21pY19pbmMoJm1tLT50bGJfZmx1c2hf cGVuZGluZyk7CiMgNjA4ICIuL2luY2x1ZGUvbGludXgvbW1fdHlwZXMuaCIKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWNf dGxiX2ZsdXNoX3BlbmRpbmcoc3RydWN0IG1tX3N0cnVjdCAqbW0pCnsKIyA2MjAgIi4vaW5jbHVk ZS9saW51eC9tbV90eXBlcy5oIgogYXRvbWljX2RlYygmbW0tPnRsYl9mbHVzaF9wZW5kaW5nKTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBtbV90bGJfZmx1c2hfcGVuZGluZyhzdHJ1Y3QgbW1fc3RydWN0ICptbSkKewojIDYz MyAiLi9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgiCiByZXR1cm4gYXRvbWljX3JlYWQoJm1tLT50 bGJfZmx1c2hfcGVuZGluZyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgbW1fdGxiX2ZsdXNoX25lc3RlZChzdHJ1Y3QgbW1f c3RydWN0ICptbSkKewoKCgoKCgoKIHJldHVybiBhdG9taWNfcmVhZCgmbW0tPnRsYl9mbHVzaF9w ZW5kaW5nKSA+IDE7Cn0KCnN0cnVjdCB2bV9mYXVsdDsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBp bnQgdm1fZmF1bHRfdDsKIyA2ODIgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgplbnVtIHZt X2ZhdWx0X3JlYXNvbiB7CiBWTV9GQVVMVF9PT00gPSAoIHZtX2ZhdWx0X3QpMHgwMDAwMDEsCiBW TV9GQVVMVF9TSUdCVVMgPSAoIHZtX2ZhdWx0X3QpMHgwMDAwMDIsCiBWTV9GQVVMVF9NQUpPUiA9 ICggdm1fZmF1bHRfdCkweDAwMDAwNCwKIFZNX0ZBVUxUX1dSSVRFID0gKCB2bV9mYXVsdF90KTB4 MDAwMDA4LAogVk1fRkFVTFRfSFdQT0lTT04gPSAoIHZtX2ZhdWx0X3QpMHgwMDAwMTAsCiBWTV9G QVVMVF9IV1BPSVNPTl9MQVJHRSA9ICggdm1fZmF1bHRfdCkweDAwMDAyMCwKIFZNX0ZBVUxUX1NJ R1NFR1YgPSAoIHZtX2ZhdWx0X3QpMHgwMDAwNDAsCiBWTV9GQVVMVF9OT1BBR0UgPSAoIHZtX2Zh dWx0X3QpMHgwMDAxMDAsCiBWTV9GQVVMVF9MT0NLRUQgPSAoIHZtX2ZhdWx0X3QpMHgwMDAyMDAs CiBWTV9GQVVMVF9SRVRSWSA9ICggdm1fZmF1bHRfdCkweDAwMDQwMCwKIFZNX0ZBVUxUX0ZBTExC QUNLID0gKCB2bV9mYXVsdF90KTB4MDAwODAwLAogVk1fRkFVTFRfRE9ORV9DT1cgPSAoIHZtX2Zh dWx0X3QpMHgwMDEwMDAsCiBWTV9GQVVMVF9ORUVERFNZTkMgPSAoIHZtX2ZhdWx0X3QpMHgwMDIw MDAsCiBWTV9GQVVMVF9ISU5ERVhfTUFTSyA9ICggdm1fZmF1bHRfdCkweDBmMDAwMCwKfTsKIyA3 MjIgIi4vaW5jbHVkZS9saW51eC9tbV90eXBlcy5oIgpzdHJ1Y3Qgdm1fc3BlY2lhbF9tYXBwaW5n IHsKIGNvbnN0IGNoYXIgKm5hbWU7CgoKCgoKCgogc3RydWN0IHBhZ2UgKipwYWdlczsKCgoKCgog dm1fZmF1bHRfdCAoKmZhdWx0KShjb25zdCBzdHJ1Y3Qgdm1fc3BlY2lhbF9tYXBwaW5nICpzbSwK ICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAogICAgc3RydWN0IHZtX2ZhdWx0ICp2bWYp OwoKIGludCAoKm1yZW1hcCkoY29uc3Qgc3RydWN0IHZtX3NwZWNpYWxfbWFwcGluZyAqc20sCiAg ICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKm5ld192bWEpOwp9OwoKZW51bSB0bGJfZmx1c2hf cmVhc29uIHsKIFRMQl9GTFVTSF9PTl9UQVNLX1NXSVRDSCwKIFRMQl9SRU1PVEVfU0hPT1RET1dO LAogVExCX0xPQ0FMX1NIT09URE9XTiwKIFRMQl9MT0NBTF9NTV9TSE9PVERPV04sCiBUTEJfUkVN T1RFX1NFTkRfSVBJLAogTlJfVExCX0ZMVVNIX1JFQVNPTlMsCn07CgoKCgoKdHlwZWRlZiBzdHJ1 Y3QgewogdW5zaWduZWQgbG9uZyB2YWw7Cn0gc3dwX2VudHJ5X3Q7CiMgMjIgIi4vaW5jbHVkZS9s aW51eC9tbXpvbmUuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiIDEKIyA5 OSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKZW51bSBwYWdlZmxhZ3MgewogUEdfbG9j a2VkLAogUEdfcmVmZXJlbmNlZCwKIFBHX3VwdG9kYXRlLAogUEdfZGlydHksCiBQR19scnUsCiBQ R19hY3RpdmUsCiBQR193b3JraW5nc2V0LAogUEdfd2FpdGVycywKIFBHX2Vycm9yLAogUEdfc2xh YiwKIFBHX293bmVyX3ByaXZfMSwKIFBHX2FyY2hfMSwKIFBHX3Jlc2VydmVkLAogUEdfcHJpdmF0 ZSwKIFBHX3ByaXZhdGVfMiwKIFBHX3dyaXRlYmFjaywKIFBHX2hlYWQsCiBQR19tYXBwZWR0b2Rp c2ssCiBQR19yZWNsYWltLAogUEdfc3dhcGJhY2tlZCwKIFBHX3VuZXZpY3RhYmxlLAoKIFBHX21s b2NrZWQsCgoKIFBHX3VuY2FjaGVkLAojIDEzNCAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3Mu aCIKIF9fTlJfUEFHRUZMQUdTLAoKCiBQR19jaGVja2VkID0gUEdfb3duZXJfcHJpdl8xLAoKCiBQ R19zd2FwY2FjaGUgPSBQR19vd25lcl9wcml2XzEsCgoKCgoKIFBHX2ZzY2FjaGUgPSBQR19wcml2 YXRlXzIsCgoKCiBQR19waW5uZWQgPSBQR19vd25lcl9wcml2XzEsCgogUEdfc2F2ZXBpbm5lZCA9 IFBHX2RpcnR5LAoKIFBHX2ZvcmVpZ24gPSBQR19vd25lcl9wcml2XzEsCgogUEdfeGVuX3JlbWFw cGVkID0gUEdfb3duZXJfcHJpdl8xLAoKCiBQR19zbG9iX2ZyZWUgPSBQR19wcml2YXRlLAoKCiBQ R19kb3VibGVfbWFwID0gUEdfcHJpdmF0ZV8yLAoKCiBQR19pc29sYXRlZCA9IFBHX3JlY2xhaW0s Cn07CgoKCnN0cnVjdCBwYWdlOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBhZ2UgKmNvbXBvdW5kX2hlYWQoc3RydWN0IHBh Z2UgKnBhZ2UpCnsKIHVuc2lnbmVkIGxvbmcgaGVhZCA9ICh7IHVuaW9uIHsgdHlwZW9mKHBhZ2Ut PmNvbXBvdW5kX2hlYWQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRf b25jZV9zaXplKCYocGFnZS0+Y29tcG91bmRfaGVhZCksIF9fdS5fX2MsIHNpemVvZihwYWdlLT5j b21wb3VuZF9oZWFkKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYocGFnZS0+Y29t cG91bmRfaGVhZCksIF9fdS5fX2MsIHNpemVvZihwYWdlLT5jb21wb3VuZF9oZWFkKSk7IGRvIHsg fSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7CgogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoaGVh ZCAmIDEpLCAwKSkKICByZXR1cm4gKHN0cnVjdCBwYWdlICopIChoZWFkIC0gMSk7CiByZXR1cm4g cGFnZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVRhaWwo c3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiAoeyB1bmlvbiB7IHR5cGVvZihwYWdlLT5jb21w b3VuZF9oZWFkKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vf c2l6ZSgmKHBhZ2UtPmNvbXBvdW5kX2hlYWQpLCBfX3UuX19jLCBzaXplb2YocGFnZS0+Y29tcG91 bmRfaGVhZCkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKHBhZ2UtPmNvbXBvdW5k X2hlYWQpLCBfX3UuX19jLCBzaXplb2YocGFnZS0+Y29tcG91bmRfaGVhZCkpOyBkbyB7IH0gd2hp bGUgKDApOyBfX3UuX192YWw7IH0pICYgMTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgUGFnZUNvbXBvdW5kKHN0cnVjdCBwYWdlICpwYWdlKQp7CiByZXR1cm4gdGVz dF9iaXQoUEdfaGVhZCwgJnBhZ2UtPmZsYWdzKSB8fCBQYWdlVGFpbChwYWdlKTsKfQoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBQ YWdlUG9pc29uZWQoY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiBwYWdlLT5mbGFn cyA9PSAtMWw7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGFnZV9pbml0X3BvaXNvbihzdHJ1Y3QgcGFnZSAqcGFnZSwg c2l6ZV90IHNpemUpCnsKfQojIDMxMiAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUxvY2tlZChzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfbG9ja2VkLCAmKHsgKCh2b2lkKShzaXplb2Yo KCBsb25nKSgwICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25n KShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBh Z2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IHZvaWQgX19TZXRQYWdlTG9ja2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19s b2NrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkp OyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBh Z2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUxvY2tlZChzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyBfX2NsZWFyX2JpdChQR19sb2NrZWQsICYoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg aW50IFBhZ2VXYWl0ZXJzKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR193 YWl0ZXJzLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlVGFpbChwYWdlKSkpKSk7ICh7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNl dFBhZ2VXYWl0ZXJzKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQoUEdfd2FpdGVycywgJih7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3Mp OyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VXYWl0 ZXJzKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR193YWl0ZXJzLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlV2FpdGVycyhz dHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX2NsZWFyX2JpdChQR193YWl0ZXJzLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0Kc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUVycm9yKHN0cnVjdCBwYWdlICpw YWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19lcnJvciwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFn ZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsg fSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lk IFNldFBhZ2VFcnJvcihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX2Vycm9yLCAmKHsg KCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBj b21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlRXJyb3Ioc3RydWN0IHBhZ2UgKnBhZ2UpIHsg Y2xlYXJfYml0KFBHX2Vycm9yLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VU YWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29t cG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdz KTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdl RXJyb3Ioc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19l cnJvciwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7 ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0Kc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVJlZmVyZW5jZWQoc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3JlZmVyZW5jZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5k X2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5l X18pKSB2b2lkIFNldFBhZ2VSZWZlcmVuY2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQo UEdfcmVmZXJlbmNlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsg fSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlUmVmZXJl bmNlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfcmVmZXJlbmNlZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkp KTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQogc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVJlZmVyZW5jZWQoc3RydWN0IHBhZ2Ug KnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19yZWZlcmVuY2VkLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlUmVmZXJlbmNlZChzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBfX3NldF9iaXQoUEdfcmVmZXJlbmNlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko UGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdl KTsgfSktPmZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQ YWdlRGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX2RpcnR5LCAm KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlRGlydHkoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgc2V0X2JpdChQR19kaXJ0eSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNv bmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZs YWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdl RGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX2RpcnR5LCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBj b21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgaW50IFRlc3RTZXRQYWdlRGlydHkoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0 dXJuIHRlc3RfYW5kX3NldF9iaXQoUEdfZGlydHksICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQg VGVzdENsZWFyUGFnZURpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2FuZF9j bGVhcl9iaXQoUEdfZGlydHksICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25l ZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFn cyk7IH0KIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFn ZURpcnR5KHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX2RpcnR5LCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkp OyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgaW50IFBhZ2VMUlUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRl c3RfYml0KFBHX2xydSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsg fSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZUxSVShzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX2xydSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChw YWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgQ2xlYXJQYWdlTFJVKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19scnUsICYo eyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2Up KSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlTFJVKHN0cnVjdCBwYWdlICpwYWdl KSB7IF9fY2xlYXJfYml0KFBHX2xydSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSkt PmZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlQWN0 aXZlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19hY3RpdmUsICYoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkp KSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19h bHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VBY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg c2V0X2JpdChQR19hY3RpdmUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25l ZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZUFj dGl2ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfYWN0aXZlLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBj b21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUFjdGl2ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBf X2NsZWFyX2JpdChQR19hY3RpdmUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5m bGFncyk7IH0KIHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RDbGVh clBhZ2VBY3RpdmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2Jp dChQR19hY3RpdmUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21w b3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0K c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVdvcmtpbmdzZXQoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3dvcmtpbmdzZXQsICYoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7 IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VXb3JraW5nc2V0KHN0cnVjdCBwYWdlICpwYWdlKSB7 IHNldF9iaXQoUEdfd29ya2luZ3NldCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSkt PmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQ YWdlV29ya2luZ3NldChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfd29ya2luZ3Nl dCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQo cGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfQogc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZVdvcmtpbmdzZXQoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR193b3JraW5nc2V0 LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChw YWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VTbGFiKHN0cnVjdCBwYWdlICpwYWdlKSB7 IHJldHVybiB0ZXN0X2JpdChQR19zbGFiLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYm IFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29u ZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSkt PmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQ YWdlU2xhYihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX3NldF9iaXQoUEdfc2xhYiwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91 bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlU2xhYihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBfX2Ns ZWFyX2JpdChQR19zbGFiLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWls KHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91 bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsg fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlU2xvYkZyZWUoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3Nsb2JfZnJlZSwgJih7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91 bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB2b2lkIF9fU2V0UGFnZVNsb2JGcmVlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9f c2V0X2JpdChQR19zbG9iX2ZyZWUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFn ZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChj b21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+Zmxh Z3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFn ZVNsb2JGcmVlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX3Nsb2JfZnJlZSwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkp KTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0Kc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUNoZWNrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg cmV0dXJuIHRlc3RfYml0KFBHX2NoZWNrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZUNoZWNrZWQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgc2V0X2JpdChQR19jaGVja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZUNoZWNrZWQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgY2xlYXJfYml0KFBHX2NoZWNrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEg JiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdl UG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VQaW5uZWQoc3RydWN0IHBhZ2UgKnBhZ2Up IHsgcmV0dXJuIHRlc3RfYml0KFBHX3Bpbm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko MCAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBh Z2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlUGlubmVkKHN0cnVjdCBwYWdlICpw YWdlKSB7IHNldF9iaXQoUEdfcGlubmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygo X19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBjbGVhcl9iaXQoUEdfcGlubmVkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0KIHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RTZXRQYWdlUGlubmVkKHN0cnVjdCBwYWdlICpw YWdlKSB7IHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KFBHX3Bpbm5lZCwgJih7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VQaW5u ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19waW5u ZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkp KTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KTsgfSktPmZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdf c2F2ZXBpbm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlQ29tcG91bmQo cGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZCBTZXRQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0 KFBHX3NhdmVwaW5uZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBv dW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFn ZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlU2F2ZVBpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBj bGVhcl9iaXQoUEdfc2F2ZXBpbm5lZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQ YWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lz b25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9OwpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlRm9yZWlnbihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBy ZXR1cm4gdGVzdF9iaXQoUEdfZm9yZWlnbiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAm JiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlRm9yZWlnbihzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBzZXRfYml0KFBHX2ZvcmVpZ24sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYg UGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9p c29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlRm9yZWlnbihzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyBjbGVhcl9iaXQoUEdfZm9yZWlnbiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAm JiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQ b2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9OwpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlWGVuUmVtYXBwZWQoc3RydWN0IHBhZ2UgKnBh Z2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3hlbl9yZW1hcHBlZCwgJih7ICgodm9pZCkoc2l6ZW9m KCggbG9uZykoMCAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlWGVuUmVtYXBwZWQo c3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR194ZW5fcmVtYXBwZWQsICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdz KTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlWGVu UmVtYXBwZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3hlbl9yZW1hcHBlZCwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAo eyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0p OyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBU ZXN0Q2xlYXJQYWdlWGVuUmVtYXBwZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3Rf YW5kX2NsZWFyX2JpdChQR194ZW5fcmVtYXBwZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZVJlc2VydmVkKHN0cnVjdCBwYWdlICpw YWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19yZXNlcnZlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoMCAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxv bmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBTZXRQYWdlUmVzZXJ2ZWQoc3RydWN0 IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR19yZXNlcnZlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxv bmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VSZXNlcnZlZChzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfcmVzZXJ2ZWQsICYoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2Yo KCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfQog c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg X19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fQ2xlYXJQYWdlUmVzZXJ2 ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfcmVzZXJ2ZWQsICYoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZs YWdzKTsgfQogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIF9fU2V0UGFn ZVJlc2VydmVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19yZXNlcnZlZCwgJih7 ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9 KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VT d2FwQmFja2VkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19zd2FwYmFj a2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsg KHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdl KSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0 ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVN3YXBCYWNrZWQoc3RydWN0IHBh Z2UgKnBhZ2UpIHsgc2V0X2JpdChQR19zd2FwYmFja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBs b25nKSgxICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgQ2xlYXJQYWdlU3dhcEJhY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdf c3dhcGJhY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdl KSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hl YWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KIHN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZVN3YXBCYWNr ZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfc3dhcGJhY2tlZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29t cG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0KIHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBfX1NldFBhZ2VTd2FwQmFja2VkKHN0cnVjdCBwYWdlICpwYWdl KSB7IF9fc2V0X2JpdChQR19zd2FwYmFja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgx ICYmIFBhZ2VUYWlsKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9p c29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsg fSktPmZsYWdzKTsgfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlUHJpdmF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfcHJp dmF0ZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsg cGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZv aWQgU2V0UGFnZVByaXZhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR19wcml2YXRl LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBD bGVhclBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19wcml2YXRl LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X1NldFBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19wcml2YXRl LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg X19DbGVhclBhZ2VQcml2YXRlKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX3By aXZhdGUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7 IHBhZ2U7IH0pLT5mbGFncyk7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBp bnQgUGFnZVByaXZhdGUyKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19w cml2YXRlXzIsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkp KSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB2b2lkIFNldFBhZ2VQcml2YXRlMihzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3By aXZhdGVfMiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkp KTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp IHZvaWQgQ2xlYXJQYWdlUHJpdmF0ZTIoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBH X3ByaXZhdGVfMiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2Up KSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIGludCBUZXN0U2V0UGFnZVByaXZhdGUyKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0 ZXN0X2FuZF9zZXRfYml0KFBHX3ByaXZhdGVfMiwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko UGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlUHJpdmF0ZTIoc3RydWN0IHBh Z2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19wcml2YXRlXzIsICYoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5m bGFncyk7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZU93bmVy UHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX293bmVyX3ByaXZf MSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFn ZTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg U2V0UGFnZU93bmVyUHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR19vd25lcl9w cml2XzEsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7 IHBhZ2U7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2 b2lkIENsZWFyUGFnZU93bmVyUHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBH X293bmVyX3ByaXZfMSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBh Z2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfQogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSBpbnQgVGVzdENsZWFyUGFnZU93bmVyUHJpdjEoc3RydWN0IHBhZ2UgKnBhZ2UpIHsg cmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19vd25lcl9wcml2XzEsICYoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pLT5mbGFncyk7IH0K CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlV3JpdGViYWNr KHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR193cml0ZWJhY2ssICYoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNv bXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBUZXN0U2V0UGFnZVdyaXRlYmFjayhzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyByZXR1cm4gdGVzdF9hbmRfc2V0X2JpdChQR193cml0ZWJhY2ssICYoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hl YWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VXcml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0 dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR193cml0ZWJhY2ssICYoeyAoKHZvaWQpKHNpemVvZigo IGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg aW50IFBhZ2VNYXBwZWRUb0Rpc2soc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0 KFBHX21hcHBlZHRvZGlzaywgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFp bChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBv dW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7 IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VNYXBwZWRU b0Rpc2soc3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR19tYXBwZWR0b2Rpc2ssICYoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNv bXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3 YXlzX2lubGluZV9fKSkgdm9pZCBDbGVhclBhZ2VNYXBwZWRUb0Rpc2soc3RydWN0IHBhZ2UgKnBh Z2UpIHsgY2xlYXJfYml0KFBHX21hcHBlZHRvZGlzaywgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoMSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFn ZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsg fSk7IH0pLT5mbGFncyk7IH0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlUmVjbGFpbShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfcmVj bGFpbSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7 ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VSZWNsYWltKHN0cnVjdCBwYWdl ICpwYWdlKSB7IHNldF9iaXQoUEdfcmVjbGFpbSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko MSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENs ZWFyUGFnZVJlY2xhaW0oc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3JlY2xhaW0s ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkp KSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBUZXN0Q2xlYXJQYWdlUmVjbGFpbShzdHJ1Y3QgcGFn ZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KFBHX3JlY2xhaW0sICYoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNp emVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBv dW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgaW50IFBhZ2VSZWFkYWhlYWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJu IHRlc3RfYml0KFBHX3JlY2xhaW0sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDAgJiYgUGFn ZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29u ZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgU2V0UGFnZVJlYWRhaGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkg eyBzZXRfYml0KFBHX3JlY2xhaW0sICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFn ZUNvbXBvdW5kKHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29u ZWQocGFnZSkpKSkpOyBwYWdlOyB9KTsgfSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlUmVhZGFoZWFkKHN0cnVjdCBwYWdlICpwYWdl KSB7IGNsZWFyX2JpdChQR19yZWNsYWltLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYm IFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFncyk7IH0KIHN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFRlc3RDbGVhclBhZ2VSZWFkYWhlYWQoc3RydWN0IHBh Z2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQR19yZWNsYWltLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9p ZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5m bGFncyk7IH0KIyAzNzYgIi4vaW5jbHVkZS9saW51eC9wYWdlLWZsYWdzLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBQYWdlSGln aE1lbShjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gMDsgfSBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIFNldFBhZ2VI aWdoTWVtKHN0cnVjdCBwYWdlICpwYWdlKSB7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBDbGVhclBhZ2VIaWdoTWVtKHN0cnVj dCBwYWdlICpwYWdlKSB7IH0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBp bnQgUGFnZVN3YXBDYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewoKIHBhZ2UgPSBjb21wb3VuZF9o ZWFkKHBhZ2UpOwoKIHJldHVybiBQYWdlU3dhcEJhY2tlZChwYWdlKSAmJiB0ZXN0X2JpdChQR19z d2FwY2FjaGUsICZwYWdlLT5mbGFncyk7Cgp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdm9pZCBTZXRQYWdlU3dhcENhY2hlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHNldF9iaXQo UEdfc3dhcGNhY2hlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBh Z2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRf aGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlU3dhcENhY2hl KHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR19zd2FwY2FjaGUsICYoeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5k X2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIGludCBQYWdlVW5ldmljdGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0 dXJuIHRlc3RfYml0KFBHX3VuZXZpY3RhYmxlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQ YWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2Up OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBT ZXRQYWdlVW5ldmljdGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgc2V0X2JpdChQR191bmV2aWN0 YWJsZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hl YWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSktPmZsYWdzKTsgfSBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xlYXJQYWdlVW5ldmljdGFibGUoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX3VuZXZpY3RhYmxlLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVhZChwYWdlKSkpKSkpOyBjb21w b3VuZF9oZWFkKHBhZ2UpOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIHZvaWQgX19DbGVhclBhZ2VVbmV2aWN0YWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSkg eyBfX2NsZWFyX2JpdChQR191bmV2aWN0YWJsZSwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko UGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdl KTsgfSktPmZsYWdzKTsgfQogc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQg VGVzdENsZWFyUGFnZVVuZXZpY3RhYmxlKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0 X2FuZF9jbGVhcl9iaXQoUEdfdW5ldmljdGFibGUsICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcp KFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFn ZSk7IH0pLT5mbGFncyk7IH0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBQYWdlTWxvY2tlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gdGVzdF9iaXQoUEdfbWxv Y2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMCAmJiBQYWdlVGFpbChwYWdlKSkpKSk7 ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNvbXBvdW5kX2hlYWQocGFn ZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFncyk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VNbG9ja2VkKHN0cnVjdCBwYWdl ICpwYWdlKSB7IHNldF9iaXQoUEdfbWxvY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZyko MSAmJiBQYWdlVGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBv aXNvbmVkKGNvbXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7 IH0pLT5mbGFncyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENs ZWFyUGFnZU1sb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJfYml0KFBHX21sb2NrZWQs ICYoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkp KSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7IH0pOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9f KChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19DbGVhclBhZ2VNbG9ja2VkKHN0cnVjdCBwYWdl ICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX21sb2NrZWQsICYoeyAoKHZvaWQpKHNpemVvZigoIGxv bmcpKDEgJiYgUGFnZVRhaWwocGFnZSkpKSkpOyAoeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKFBh Z2VQb2lzb25lZChjb21wb3VuZF9oZWFkKHBhZ2UpKSkpKSk7IGNvbXBvdW5kX2hlYWQocGFnZSk7 IH0pOyB9KS0+ZmxhZ3MpOyB9CiBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGlu dCBUZXN0U2V0UGFnZU1sb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5k X3NldF9iaXQoUEdfbWxvY2tlZCwgJih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdl VGFpbChwYWdlKSkpKSk7ICh7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKGNv bXBvdW5kX2hlYWQocGFnZSkpKSkpKTsgY29tcG91bmRfaGVhZChwYWdlKTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgVGVzdENsZWFyUGFn ZU1sb2NrZWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYW5kX2NsZWFyX2JpdChQ R19tbG9ja2VkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWlsKHBhZ2Up KSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91bmRfaGVh ZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsgfQoKCgoK CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlVW5jYWNoZWQoc3Ry dWN0IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuIHRlc3RfYml0KFBHX3VuY2FjaGVkLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKSgwICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VVbmNh Y2hlZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBzZXRfYml0KFBHX3VuY2FjaGVkLCAmKHsgKCh2b2lk KShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VDb21wb3VuZChwYWdlKSkpKSk7ICh7ICgodm9pZCko c2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSk7IH0pLT5mbGFn cyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIENsZWFyUGFnZVVu Y2FjaGVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IGNsZWFyX2JpdChQR191bmNhY2hlZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoMSAmJiBQYWdlQ29tcG91bmQocGFnZSkpKSkpOyAoeyAoKHZv aWQpKHNpemVvZigoIGxvbmcpKFBhZ2VQb2lzb25lZChwYWdlKSkpKSk7IHBhZ2U7IH0pOyB9KS0+ ZmxhZ3MpOyB9CiMgNDE5ICIuL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgUGFnZUhX UG9pc29uKGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiAwOyB9IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgU2V0UGFn ZUhXUG9pc29uKHN0cnVjdCBwYWdlICpwYWdlKSB7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBDbGVhclBhZ2VIV1BvaXNvbihz dHJ1Y3QgcGFnZSAqcGFnZSkgeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2V0X2h3cG9pc29uX2ZyZWVfYnVkZHlfcGFnZShz dHJ1Y3QgcGFnZSAqcGFnZSkKewogcmV0dXJuIDA7Cn0KIyA0NTYgIi4vaW5jbHVkZS9saW51eC9w YWdlLWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VN YXBwaW5nRmxhZ3Moc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiAoKHVuc2lnbmVkIGxvbmcp cGFnZS0+bWFwcGluZyAmICgweDEgfCAweDIpKSAhPSAwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fs d2F5c19pbmxpbmVfXykpIGludCBQYWdlQW5vbihzdHJ1Y3QgcGFnZSAqcGFnZSkKewogcGFnZSA9 IGNvbXBvdW5kX2hlYWQocGFnZSk7CiByZXR1cm4gKCh1bnNpZ25lZCBsb25nKXBhZ2UtPm1hcHBp bmcgJiAweDEpICE9IDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50 IF9fUGFnZU1vdmFibGUoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIHJldHVybiAoKHVuc2lnbmVkIGxv bmcpcGFnZS0+bWFwcGluZyAmICgweDEgfCAweDIpKSA9PQogICAgMHgyOwp9CiMgNDgwICIuL2lu Y2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIGludCBQYWdlS3NtKHN0cnVjdCBwYWdlICpwYWdlKQp7CiBwYWdlID0gY29tcG91bmRfaGVh ZChwYWdlKTsKIHJldHVybiAoKHVuc2lnbmVkIGxvbmcpcGFnZS0+bWFwcGluZyAmICgweDEgfCAw eDIpKSA9PQogICAgKDB4MSB8IDB4Mik7Cn0KCgoKCnU2NCBzdGFibGVfcGFnZV9mbGFncyhzdHJ1 Y3QgcGFnZSAqcGFnZSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgUGFnZVVwdG9kYXRlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiBp bnQgcmV0OwogcGFnZSA9IGNvbXBvdW5kX2hlYWQocGFnZSk7CiByZXQgPSB0ZXN0X2JpdChQR191 cHRvZGF0ZSwgJihwYWdlKS0+ZmxhZ3MpOwojIDUwNSAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxh Z3MuaCIKIGlmIChyZXQpCiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsK CiByZXR1cm4gcmV0Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg X19TZXRQYWdlVXB0b2RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICgodm9pZCkoc2l6ZW9mKCgg bG9uZykoUGFnZVRhaWwocGFnZSkpKSkpOwogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJt ZW1vcnkiKTsKIF9fc2V0X2JpdChQR191cHRvZGF0ZSwgJnBhZ2UtPmZsYWdzKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIFNldFBhZ2VVcHRvZGF0ZShzdHJ1Y3Qg cGFnZSAqcGFnZSkKewogKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlVGFpbChwYWdlKSkpKSk7 CgoKCgoKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiBzZXRfYml0KFBH X3VwdG9kYXRlLCAmcGFnZS0+ZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIHZvaWQgQ2xlYXJQYWdlVXB0b2RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgY2xlYXJf Yml0KFBHX3VwdG9kYXRlLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgxICYmIFBhZ2VUYWls KHBhZ2UpKSkpKTsgKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQoY29tcG91 bmRfaGVhZChwYWdlKSkpKSkpOyBjb21wb3VuZF9oZWFkKHBhZ2UpOyB9KTsgfSktPmZsYWdzKTsg fQoKaW50IHRlc3RfY2xlYXJfcGFnZV93cml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpOwppbnQg X190ZXN0X3NldF9wYWdlX3dyaXRlYmFjayhzdHJ1Y3QgcGFnZSAqcGFnZSwgYm9vbCBrZWVwX3dy aXRlKTsKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBzZXRfcGFnZV93cml0ZWJhY2soc3RydWN0IHBhZ2UgKnBhZ2UpCnsK IF9fdGVzdF9zZXRfcGFnZV93cml0ZWJhY2socGFnZSwgZmFsc2UpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF9wYWdl X3dyaXRlYmFja19rZWVwd3JpdGUoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKIF9fdGVzdF9zZXRfcGFn ZV93cml0ZWJhY2socGFnZSwgdHJ1ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgaW50IFBhZ2VIZWFkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQ R19oZWFkLCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkp OyBwYWdlOyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkg dm9pZCBfX1NldFBhZ2VIZWFkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fc2V0X2JpdChQR19oZWFk LCAmKHsgKCh2b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdl OyB9KS0+ZmxhZ3MpOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X0NsZWFyUGFnZUhlYWQoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19jbGVhcl9iaXQoUEdfaGVhZCwg Jih7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsg fSktPmZsYWdzKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgQ2xl YXJQYWdlSGVhZChzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBjbGVhcl9iaXQoUEdfaGVhZCwgJih7ICgo dm9pZCkoc2l6ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZs YWdzKTsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIHNldF9jb21w b3VuZF9oZWFkKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcGFnZSAqaGVhZCkKewogKHsgdW5p b24geyB0eXBlb2YocGFnZS0+Y29tcG91bmRfaGVhZCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2YocGFnZS0+Y29tcG91bmRfaGVhZCkpICgodW5zaWduZWQg bG9uZyloZWFkICsgMSkgfTsgX193cml0ZV9vbmNlX3NpemUoJihwYWdlLT5jb21wb3VuZF9oZWFk KSwgX191Ll9fYywgc2l6ZW9mKHBhZ2UtPmNvbXBvdW5kX2hlYWQpKTsgX191Ll9fdmFsOyB9KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGNsZWFyX2NvbXBvdW5k X2hlYWQoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICh7IHVuaW9uIHsgdHlwZW9mKHBhZ2UtPmNvbXBv dW5kX2hlYWQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9m KHBhZ2UtPmNvbXBvdW5kX2hlYWQpKSAoMCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihwYWdlLT5j b21wb3VuZF9oZWFkKSwgX191Ll9fYywgc2l6ZW9mKHBhZ2UtPmNvbXBvdW5kX2hlYWQpKTsgX191 Ll9fdmFsOyB9KTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgQ2xlYXJQYWdlQ29tcG91bmQoc3RydWN0IHBhZ2UgKnBhZ2Up CnsKIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoIVBhZ2VIZWFkKHBhZ2UpKSwgMCkpIGRv IHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAi XG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAi MWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVj MCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVn X2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJc dC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvcGFn ZS1mbGFncy5oIiksICJpIiAoNTY1KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19l bnRyeSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5w dXNoc2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQi ICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDE0KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBf X2J1aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxl ICgwKTsKIENsZWFyUGFnZUhlYWQocGFnZSk7Cn0KCgoKCgppbnQgUGFnZUh1Z2Uoc3RydWN0IHBh Z2UgKnBhZ2UpOwppbnQgUGFnZUhlYWRIdWdlKHN0cnVjdCBwYWdlICpwYWdlKTsKYm9vbCBwYWdl X2h1Z2VfYWN0aXZlKHN0cnVjdCBwYWdlICpwYWdlKTsKIyA1OTYgIi4vaW5jbHVkZS9saW51eC9w YWdlLWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBQYWdlVHJhbnNIdWdlKHN0cnVjdCBwYWdlICpwYWdlKQp7CiAoKHZv aWQpKHNpemVvZigoIGxvbmcpKFBhZ2VUYWlsKHBhZ2UpKSkpKTsKIHJldHVybiBQYWdlSGVhZChw YWdlKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgUGFnZVRyYW5zQ29tcG91bmQoc3RydWN0IHBhZ2UgKnBhZ2UpCnsK IHJldHVybiBQYWdlQ29tcG91bmQocGFnZSk7Cn0KIyA2MzMgIi4vaW5jbHVkZS9saW51eC9wYWdl LWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCBQYWdlVHJhbnNDb21wb3VuZE1hcChzdHJ1Y3QgcGFnZSAqcGFnZSkKewog c3RydWN0IHBhZ2UgKmhlYWQ7CgogaWYgKCFQYWdlVHJhbnNDb21wb3VuZChwYWdlKSkKICByZXR1 cm4gMDsKCiBpZiAoUGFnZUFub24ocGFnZSkpCiAgcmV0dXJuIGF0b21pY19yZWFkKCZwYWdlLT5f bWFwY291bnQpIDwgMDsKCiBoZWFkID0gY29tcG91bmRfaGVhZChwYWdlKTsKCiByZXR1cm4gYXRv bWljX3JlYWQoJnBhZ2UtPl9tYXBjb3VudCkgPT0KICAgICAgICBhdG9taWNfcmVhZChjb21wb3Vu ZF9tYXBjb3VudF9wdHIoaGVhZCkpOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBQYWdlVHJhbnNUYWlsKHN0cnVjdCBw YWdlICpwYWdlKQp7CiByZXR1cm4gUGFnZVRhaWwocGFnZSk7Cn0KIyA2NzIgIi4vaW5jbHVkZS9s aW51eC9wYWdlLWZsYWdzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGludCBQYWdlRG91YmxlTWFwKHN0cnVjdCBwYWdlICpwYWdlKQp7 CiByZXR1cm4gUGFnZUhlYWQocGFnZSkgJiYgdGVzdF9iaXQoUEdfZG91YmxlX21hcCwgJnBhZ2Vb MV0uZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIFNldFBhZ2VEb3VibGVNYXAoc3RydWN0IHBhZ2UgKnBhZ2UpCnsK ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VIZWFkKHBhZ2UpKSkpKTsKIHNldF9iaXQoUEdf ZG91YmxlX21hcCwgJnBhZ2VbMV0uZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIENsZWFyUGFnZURvdWJsZU1hcChz dHJ1Y3QgcGFnZSAqcGFnZSkKewogKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZUhlYWQocGFn ZSkpKSkpOwogY2xlYXJfYml0KFBHX2RvdWJsZV9tYXAsICZwYWdlWzFdLmZsYWdzKTsKfQpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg VGVzdFNldFBhZ2VEb3VibGVNYXAoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICgodm9pZCkoc2l6ZW9m KCggbG9uZykoIVBhZ2VIZWFkKHBhZ2UpKSkpKTsKIHJldHVybiB0ZXN0X2FuZF9zZXRfYml0KFBH X2RvdWJsZV9tYXAsICZwYWdlWzFdLmZsYWdzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IFRlc3RDbGVhclBhZ2VEb3VibGVN YXAoc3RydWN0IHBhZ2UgKnBhZ2UpCnsKICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VIZWFk KHBhZ2UpKSkpKTsKIHJldHVybiB0ZXN0X2FuZF9jbGVhcl9iaXQoUEdfZG91YmxlX21hcCwgJnBh Z2VbMV0uZmxhZ3MpOwp9CiMgNzMxICIuL2luY2x1ZGUvbGludXgvcGFnZS1mbGFncy5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg cGFnZV9oYXNfdHlwZShzdHJ1Y3QgcGFnZSAqcGFnZSkKewogcmV0dXJuIChpbnQpcGFnZS0+cGFn ZV90eXBlIDwgLTEyODsKfQojIDc1NiAiLi9pbmNsdWRlL2xpbnV4L3BhZ2UtZmxhZ3MuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUJ1ZGR5KHN0cnVjdCBwYWdl ICpwYWdlKSB7IHJldHVybiAoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMHgwMDAw MDA4MCkpID09IDB4ZjAwMDAwMDApOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9f KSkgdm9pZCBfX1NldFBhZ2VCdWRkeShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVv ZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMCkpID09IDB4ZjAw MDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwMDgwOyB9IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRl X18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUJ1ZGR5KHN0cnVjdCBwYWdl ICpwYWdlKSB7ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VCdWRkeShwYWdlKSkpKSk7IHBh Z2UtPnBhZ2VfdHlwZSB8PSAweDAwMDAwMDgwOyB9CiMgNzY1ICIuL2luY2x1ZGUvbGludXgvcGFn ZS1mbGFncy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGludCBQYWdlT2Zm bGluZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyByZXR1cm4gKChwYWdlLT5wYWdlX3R5cGUgJiAoMHhm MDAwMDAwMCB8IDB4MDAwMDAxMDApKSA9PSAweGYwMDAwMDAwKTsgfSBzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlT2ZmbGluZShzdHJ1Y3QgcGFnZSAqcGFn ZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAw MDAwIHwgMCkpID09IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAw MTAwOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFn ZU9mZmxpbmUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFn ZU9mZmxpbmUocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5cGUgfD0gMHgwMDAwMDEwMDsgfQoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VLbWVtY2coc3RydWN0 IHBhZ2UgKnBhZ2UpIHsgcmV0dXJuICgocGFnZS0+cGFnZV90eXBlICYgKDB4ZjAwMDAwMDAgfCAw eDAwMDAwMjAwKSkgPT0gMHhmMDAwMDAwMCk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5s aW5lX18pKSB2b2lkIF9fU2V0UGFnZUttZW1jZyhzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQp KHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAmICgweGYwMDAwMDAwIHwgMCkpID09 IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9IH4weDAwMDAwMjAwOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUttZW1jZyhzdHJ1 Y3QgcGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlS21lbWNnKHBhZ2Up KSkpKTsgcGFnZS0+cGFnZV90eXBlIHw9IDB4MDAwMDAyMDA7IH0KCgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkgaW50IFBhZ2VUYWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyBy ZXR1cm4gKChwYWdlLT5wYWdlX3R5cGUgJiAoMHhmMDAwMDAwMCB8IDB4MDAwMDA0MDApKSA9PSAw eGYwMDAwMDAwKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19T ZXRQYWdlVGFibGUoc3RydWN0IHBhZ2UgKnBhZ2UpIHsgKCh2b2lkKShzaXplb2YoKCBsb25nKSgh KChwYWdlLT5wYWdlX3R5cGUgJiAoMHhmMDAwMDAwMCB8IDApKSA9PSAweGYwMDAwMDAwKSkpKSk7 IHBhZ2UtPnBhZ2VfdHlwZSAmPSB+MHgwMDAwMDQwMDsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpIHZvaWQgX19DbGVhclBhZ2VUYWJsZShzdHJ1Y3QgcGFnZSAqcGFnZSkgeyAo KHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlVGFibGUocGFnZSkpKSkpOyBwYWdlLT5wYWdlX3R5 cGUgfD0gMHgwMDAwMDQwMDsgfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSBpbnQgUGFnZUd1YXJkKHN0cnVjdCBwYWdlICpwYWdlKSB7IHJldHVybiAoKHBhZ2UtPnBhZ2Vf dHlwZSAmICgweGYwMDAwMDAwIHwgMHgwMDAwMDgwMCkpID09IDB4ZjAwMDAwMDApOyB9IHN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX1NldFBhZ2VHdWFyZChzdHJ1Y3Qg cGFnZSAqcGFnZSkgeyAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCEoKHBhZ2UtPnBhZ2VfdHlwZSAm ICgweGYwMDAwMDAwIHwgMCkpID09IDB4ZjAwMDAwMDApKSkpKTsgcGFnZS0+cGFnZV90eXBlICY9 IH4weDAwMDAwODAwOyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBf X0NsZWFyUGFnZUd1YXJkKHN0cnVjdCBwYWdlICpwYWdlKSB7ICgodm9pZCkoc2l6ZW9mKCggbG9u ZykoIVBhZ2VHdWFyZChwYWdlKSkpKSk7IHBhZ2UtPnBhZ2VfdHlwZSB8PSAweDAwMDAwODAwOyB9 CgpleHRlcm4gYm9vbCBpc19mcmVlX2J1ZGR5X3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UpOwoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19h dHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSBpbnQgUGFnZUlzb2xhdGVkKHN0cnVjdCBw YWdlICpwYWdlKSB7IHJldHVybiB0ZXN0X2JpdChQR19pc29sYXRlZCwgJih7ICgodm9pZCkoc2l6 ZW9mKCggbG9uZykoUGFnZVBvaXNvbmVkKHBhZ2UpKSkpKTsgcGFnZTsgfSktPmZsYWdzKTsgfSBz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgX19TZXRQYWdlSXNvbGF0ZWQo c3RydWN0IHBhZ2UgKnBhZ2UpIHsgX19zZXRfYml0KFBHX2lzb2xhdGVkLCAmKHsgKCh2b2lkKShz aXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+ZmxhZ3MpOyB9 IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCBfX0NsZWFyUGFnZUlzb2xh dGVkKHN0cnVjdCBwYWdlICpwYWdlKSB7IF9fY2xlYXJfYml0KFBHX2lzb2xhdGVkLCAmKHsgKCh2 b2lkKShzaXplb2YoKCBsb25nKShQYWdlUG9pc29uZWQocGFnZSkpKSkpOyBwYWdlOyB9KS0+Zmxh Z3MpOyB9OwoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBQYWdlU2xhYlBmbWVtYWxsb2Moc3RydWN0IHBhZ2UgKnBhZ2UpCnsK ICgodm9pZCkoc2l6ZW9mKCggbG9uZykoIVBhZ2VTbGFiKHBhZ2UpKSkpKTsKIHJldHVybiBQYWdl QWN0aXZlKHBhZ2UpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIFNldFBhZ2VTbGFiUGZtZW1hbGxvYyhzdHJ1Y3QgcGFnZSAq cGFnZSkKewogKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZVNsYWIocGFnZSkpKSkpOwogU2V0 UGFnZUFjdGl2ZShwYWdlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX0NsZWFyUGFnZVNsYWJQZm1lbWFsbG9jKHN0cnVj dCBwYWdlICpwYWdlKQp7CiAoKHZvaWQpKHNpemVvZigoIGxvbmcpKCFQYWdlU2xhYihwYWdlKSkp KSk7CiBfX0NsZWFyUGFnZUFjdGl2ZShwYWdlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBDbGVhclBhZ2VTbGFiUGZtZW1h bGxvYyhzdHJ1Y3QgcGFnZSAqcGFnZSkKewogKCh2b2lkKShzaXplb2YoKCBsb25nKSghUGFnZVNs YWIocGFnZSkpKSkpOwogQ2xlYXJQYWdlQWN0aXZlKHBhZ2UpOwp9CiMgODUyICIuL2luY2x1ZGUv bGludXgvcGFnZS1mbGFncy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGFnZV9oYXNfcHJpdmF0ZShzdHJ1Y3QgcGFnZSAqcGFn ZSkKewogcmV0dXJuICEhKHBhZ2UtPmZsYWdzICYgKDFVTCA8PCBQR19wcml2YXRlIHwgMVVMIDw8 IFBHX3ByaXZhdGVfMikpOwp9CiMgMjMgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgojIDQx ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCmVudW0gbWlncmF0ZXR5cGUgewogTUlHUkFURV9V Tk1PVkFCTEUsCiBNSUdSQVRFX01PVkFCTEUsCiBNSUdSQVRFX1JFQ0xBSU1BQkxFLAogTUlHUkFU RV9QQ1BUWVBFUywKIE1JR1JBVEVfSElHSEFUT01JQyA9IE1JR1JBVEVfUENQVFlQRVMsCiMgNjQg Ii4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKIE1JR1JBVEVfSVNPTEFURSwKCiBNSUdSQVRFX1RZ UEVTCn07CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBtaWdyYXRldHlwZV9uYW1lc1tNSUdS QVRFX1RZUEVTXTsKIyA4MCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlzX21pZ3Jh dGVfbW92YWJsZShpbnQgbXQpCnsKIHJldHVybiBmYWxzZSB8fCBtdCA9PSBNSUdSQVRFX01PVkFC TEU7Cn0KCgoKCgpleHRlcm4gaW50IHBhZ2VfZ3JvdXBfYnlfbW9iaWxpdHlfZGlzYWJsZWQ7CiMg OTggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IGZyZWVfYXJlYSB7CiBzdHJ1Y3Qg bGlzdF9oZWFkIGZyZWVfbGlzdFtNSUdSQVRFX1RZUEVTXTsKIHVuc2lnbmVkIGxvbmcgbnJfZnJl ZTsKfTsKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGFkZF90b19mcmVlX2FyZWEoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCBm cmVlX2FyZWEgKmFyZWEsCiAgICAgICAgaW50IG1pZ3JhdGV0eXBlKQp7CiBsaXN0X2FkZCgmcGFn ZS0+bHJ1LCAmYXJlYS0+ZnJlZV9saXN0W21pZ3JhdGV0eXBlXSk7CiBhcmVhLT5ucl9mcmVlKys7 Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFkZF90b19mcmVlX2FyZWFfdGFpbChzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0 IGZyZWVfYXJlYSAqYXJlYSwKICAgICAgaW50IG1pZ3JhdGV0eXBlKQp7CiBsaXN0X2FkZF90YWls KCZwYWdlLT5scnUsICZhcmVhLT5mcmVlX2xpc3RbbWlncmF0ZXR5cGVdKTsKIGFyZWEtPm5yX2Zy ZWUrKzsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGFkZF90b19mcmVlX2FyZWFfcmFuZG9tKHN0cnVjdCBwYWdlICpw YWdlLAogIHN0cnVjdCBmcmVlX2FyZWEgKmFyZWEsIGludCBtaWdyYXRldHlwZSkKewogYWRkX3Rv X2ZyZWVfYXJlYShwYWdlLCBhcmVhLCBtaWdyYXRldHlwZSk7Cn0KCgoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBtb3ZlX3RvX2Zy ZWVfYXJlYShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IGZyZWVfYXJlYSAqYXJlYSwKICAgICAg ICBpbnQgbWlncmF0ZXR5cGUpCnsKIGxpc3RfbW92ZSgmcGFnZS0+bHJ1LCAmYXJlYS0+ZnJlZV9s aXN0W21pZ3JhdGV0eXBlXSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwYWdlICpnZXRfcGFnZV9mcm9tX2ZyZWVfYXJl YShzdHJ1Y3QgZnJlZV9hcmVhICphcmVhLAogICAgICAgICBpbnQgbWlncmF0ZXR5cGUpCnsKIHJl dHVybiAoeyBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkX18gPSAoJmFyZWEtPmZyZWVfbGlzdFttaWdy YXRldHlwZV0pOyBzdHJ1Y3QgbGlzdF9oZWFkICpwb3NfXyA9ICh7IHVuaW9uIHsgdHlwZW9mKGhl YWRfXy0+bmV4dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNl X3NpemUoJihoZWFkX18tPm5leHQpLCBfX3UuX19jLCBzaXplb2YoaGVhZF9fLT5uZXh0KSk7IGVs c2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoaGVhZF9fLT5uZXh0KSwgX191Ll9fYywgc2l6 ZW9mKGhlYWRfXy0+bmV4dCkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyBwb3Nf XyAhPSBoZWFkX18gPyAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKShwb3NfXyk7IGRvIHsgZXh0 ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMTQxKHZvaWQpIF9fYXR0cmlidXRlX18oKF9f ZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYg KCEoISghX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihwb3NfXykpLCB0eXBl b2YoKChzdHJ1Y3QgcGFnZSAqKTApLT5scnUpKSAmJiAhX19idWlsdGluX3R5cGVzX2NvbXBhdGli bGVfcCh0eXBlb2YoKihwb3NfXykpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNz ZXJ0XzE0MSgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgcGFnZSAqKShfX21wdHIgLSBfX2J1aWx0 aW5fb2Zmc2V0b2Yoc3RydWN0IHBhZ2UsIGxydSkpKTsgfSkgOiAoKHZvaWQgKikwKTsgfSkKICAg ICAgICAgICAgICAgICAgICAgIDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWxfcGFnZV9mcm9tX2ZyZWVfYXJlYShzdHJ1 Y3QgcGFnZSAqcGFnZSwKICBzdHJ1Y3QgZnJlZV9hcmVhICphcmVhKQp7CiBsaXN0X2RlbCgmcGFn ZS0+bHJ1KTsKIF9fQ2xlYXJQYWdlQnVkZHkocGFnZSk7CiAoKHBhZ2UpLT5wcml2YXRlID0gKDAp KTsKIGFyZWEtPm5yX2ZyZWUtLTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBmcmVlX2FyZWFfZW1wdHkoc3RydWN0IGZyZWVf YXJlYSAqYXJlYSwgaW50IG1pZ3JhdGV0eXBlKQp7CiByZXR1cm4gbGlzdF9lbXB0eSgmYXJlYS0+ ZnJlZV9saXN0W21pZ3JhdGV0eXBlXSk7Cn0KCnN0cnVjdCBwZ2xpc3RfZGF0YTsKIyAxNjggIi4v aW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IHpvbmVfcGFkZGluZyB7CiBjaGFyIHhbMF07 Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMSA8PCAoNikpKSk7CiMgMTkwICIuL2luY2x1 ZGUvbGludXgvbW16b25lLmgiCmVudW0gem9uZV9zdGF0X2l0ZW0gewoKIE5SX0ZSRUVfUEFHRVMs CiBOUl9aT05FX0xSVV9CQVNFLAogTlJfWk9ORV9JTkFDVElWRV9BTk9OID0gTlJfWk9ORV9MUlVf QkFTRSwKIE5SX1pPTkVfQUNUSVZFX0FOT04sCiBOUl9aT05FX0lOQUNUSVZFX0ZJTEUsCiBOUl9a T05FX0FDVElWRV9GSUxFLAogTlJfWk9ORV9VTkVWSUNUQUJMRSwKIE5SX1pPTkVfV1JJVEVfUEVO RElORywKIE5SX01MT0NLLAogTlJfUEFHRVRBQkxFLAogTlJfS0VSTkVMX1NUQUNLX0tCLAoKIE5S X0JPVU5DRSwKCiBOUl9aU1BBR0VTLAoKIE5SX0ZSRUVfQ01BX1BBR0VTLAogTlJfVk1fWk9ORV9T VEFUX0lURU1TIH07CgplbnVtIG5vZGVfc3RhdF9pdGVtIHsKIE5SX0xSVV9CQVNFLAogTlJfSU5B Q1RJVkVfQU5PTiA9IE5SX0xSVV9CQVNFLAogTlJfQUNUSVZFX0FOT04sCiBOUl9JTkFDVElWRV9G SUxFLAogTlJfQUNUSVZFX0ZJTEUsCiBOUl9VTkVWSUNUQUJMRSwKIE5SX1NMQUJfUkVDTEFJTUFC TEUsCiBOUl9TTEFCX1VOUkVDTEFJTUFCTEUsCiBOUl9JU09MQVRFRF9BTk9OLAogTlJfSVNPTEFU RURfRklMRSwKIFdPUktJTkdTRVRfTk9ERVMsCiBXT1JLSU5HU0VUX1JFRkFVTFQsCiBXT1JLSU5H U0VUX0FDVElWQVRFLAogV09SS0lOR1NFVF9SRVNUT1JFLAogV09SS0lOR1NFVF9OT0RFUkVDTEFJ TSwKIE5SX0FOT05fTUFQUEVELAogTlJfRklMRV9NQVBQRUQsCgogTlJfRklMRV9QQUdFUywKIE5S X0ZJTEVfRElSVFksCiBOUl9XUklURUJBQ0ssCiBOUl9XUklURUJBQ0tfVEVNUCwKIE5SX1NITUVN LAogTlJfU0hNRU1fVEhQUywKIE5SX1NITUVNX1BNRE1BUFBFRCwKIE5SX0ZJTEVfVEhQUywKIE5S X0ZJTEVfUE1ETUFQUEVELAogTlJfQU5PTl9USFBTLAogTlJfVU5TVEFCTEVfTkZTLAogTlJfVk1T Q0FOX1dSSVRFLAogTlJfVk1TQ0FOX0lNTUVESUFURSwKIE5SX0RJUlRJRUQsCiBOUl9XUklUVEVO LAogTlJfS0VSTkVMX01JU0NfUkVDTEFJTUFCTEUsCiBOUl9WTV9OT0RFX1NUQVRfSVRFTVMKfTsK IyAyNjIgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKZW51bSBscnVfbGlzdCB7CiBMUlVfSU5B Q1RJVkVfQU5PTiA9IDAsCiBMUlVfQUNUSVZFX0FOT04gPSAwICsgMSwKIExSVV9JTkFDVElWRV9G SUxFID0gMCArIDIsCiBMUlVfQUNUSVZFX0ZJTEUgPSAwICsgMiArIDEsCiBMUlVfVU5FVklDVEFC TEUsCiBOUl9MUlVfTElTVFMKfTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlzX2ZpbGVfbHJ1KGVudW0gbHJ1X2xpc3Qg bHJ1KQp7CiByZXR1cm4gKGxydSA9PSBMUlVfSU5BQ1RJVkVfRklMRSB8fCBscnUgPT0gTFJVX0FD VElWRV9GSUxFKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBpc19hY3RpdmVfbHJ1KGVudW0gbHJ1X2xpc3QgbHJ1KQp7CiBy ZXR1cm4gKGxydSA9PSBMUlVfQUNUSVZFX0FOT04gfHwgbHJ1ID09IExSVV9BQ1RJVkVfRklMRSk7 Cn0KCnN0cnVjdCB6b25lX3JlY2xhaW1fc3RhdCB7CiMgMjk0ICIuL2luY2x1ZGUvbGludXgvbW16 b25lLmgiCiB1bnNpZ25lZCBsb25nIHJlY2VudF9yb3RhdGVkWzJdOwogdW5zaWduZWQgbG9uZyBy ZWNlbnRfc2Nhbm5lZFsyXTsKfTsKCmVudW0gbHJ1dmVjX2ZsYWdzIHsKIExSVVZFQ19DT05HRVNU RUQsCgoKfTsKCnN0cnVjdCBscnV2ZWMgewogc3RydWN0IGxpc3RfaGVhZCBsaXN0c1tOUl9MUlVf TElTVFNdOwogc3RydWN0IHpvbmVfcmVjbGFpbV9zdGF0IHJlY2xhaW1fc3RhdDsKCiBhdG9taWNf bG9uZ190IGluYWN0aXZlX2FnZTsKCiB1bnNpZ25lZCBsb25nIHJlZmF1bHRzOwoKIHVuc2lnbmVk IGxvbmcgZmxhZ3M7Cgogc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdDsKCn07CiMgMzI2ICIuL2lu Y2x1ZGUvbGludXgvbW16b25lLmgiCnR5cGVkZWYgdW5zaWduZWQgaXNvbGF0ZV9tb2RlX3Q7Cgpl bnVtIHpvbmVfd2F0ZXJtYXJrcyB7CiBXTUFSS19NSU4sCiBXTUFSS19MT1csCiBXTUFSS19ISUdI LAogTlJfV01BUksKfTsKCgoKCgoKc3RydWN0IHBlcl9jcHVfcGFnZXMgewogaW50IGNvdW50Owog aW50IGhpZ2g7CiBpbnQgYmF0Y2g7CgoKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdHNbTUlHUkFURV9Q Q1BUWVBFU107Cn07CgpzdHJ1Y3QgcGVyX2NwdV9wYWdlc2V0IHsKIHN0cnVjdCBwZXJfY3B1X3Bh Z2VzIHBjcDsKCgoKCgogczggc3RhdF90aHJlc2hvbGQ7CiBzOCB2bV9zdGF0X2RpZmZbTlJfVk1f Wk9ORV9TVEFUX0lURU1TXTsKCn07CgpzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCB7CiBzOCBzdGF0 X3RocmVzaG9sZDsKIHM4IHZtX25vZGVfc3RhdF9kaWZmW05SX1ZNX05PREVfU1RBVF9JVEVNU107 Cn07CgoKCmVudW0gem9uZV90eXBlIHsKIyA0MDAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK IFpPTkVfRE1BLAoKCiBaT05FX0RNQTMyLAoKCgoKCgogWk9ORV9OT1JNQUwsCiMgNDIyICIuL2lu Y2x1ZGUvbGludXgvbW16b25lLmgiCiBaT05FX01PVkFCTEUsCgoKCiBfX01BWF9OUl9aT05FUwoK fTsKCgoKc3RydWN0IHpvbmUgewoKCgogdW5zaWduZWQgbG9uZyBfd2F0ZXJtYXJrW05SX1dNQVJL XTsKIHVuc2lnbmVkIGxvbmcgd2F0ZXJtYXJrX2Jvb3N0OwoKIHVuc2lnbmVkIGxvbmcgbnJfcmVz ZXJ2ZWRfaGlnaGF0b21pYzsKIyA0NTAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKIGxvbmcg bG93bWVtX3Jlc2VydmVbNF07CgoKCgogc3RydWN0IHBnbGlzdF9kYXRhICp6b25lX3BnZGF0Owog c3RydWN0IHBlcl9jcHVfcGFnZXNldCAqcGFnZXNldDsKIyA0NjcgIi4vaW5jbHVkZS9saW51eC9t bXpvbmUuaCIKIHVuc2lnbmVkIGxvbmcgem9uZV9zdGFydF9wZm47CiMgNTA0ICIuL2luY2x1ZGUv bGludXgvbW16b25lLmgiCiBhdG9taWNfbG9uZ190IG1hbmFnZWRfcGFnZXM7CiB1bnNpZ25lZCBs b25nIHNwYW5uZWRfcGFnZXM7CiB1bnNpZ25lZCBsb25nIHByZXNlbnRfcGFnZXM7CgogY29uc3Qg Y2hhciAqbmFtZTsKCgoKCgoKCiB1bnNpZ25lZCBsb25nIG5yX2lzb2xhdGVfcGFnZWJsb2NrOwoK CgoKIHNlcWxvY2tfdCBzcGFuX3NlcWxvY2s7CgoKIGludCBpbml0aWFsaXplZDsKCgogc3RydWN0 IHpvbmVfcGFkZGluZyBfcGFkMV87CgoKIHN0cnVjdCBmcmVlX2FyZWEgZnJlZV9hcmVhWzExXTsK CgogdW5zaWduZWQgbG9uZyBmbGFnczsKCgogc3BpbmxvY2tfdCBsb2NrOwoKCiBzdHJ1Y3Qgem9u ZV9wYWRkaW5nIF9wYWQyXzsKCgoKCgoKIHVuc2lnbmVkIGxvbmcgcGVyY3B1X2RyaWZ0X21hcms7 CgoKCiB1bnNpZ25lZCBsb25nIGNvbXBhY3RfY2FjaGVkX2ZyZWVfcGZuOwoKIHVuc2lnbmVkIGxv bmcgY29tcGFjdF9jYWNoZWRfbWlncmF0ZV9wZm5bMl07CiB1bnNpZ25lZCBsb25nIGNvbXBhY3Rf aW5pdF9taWdyYXRlX3BmbjsKIHVuc2lnbmVkIGxvbmcgY29tcGFjdF9pbml0X2ZyZWVfcGZuOwoj IDU2MyAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgogdW5zaWduZWQgaW50IGNvbXBhY3RfY29u c2lkZXJlZDsKIHVuc2lnbmVkIGludCBjb21wYWN0X2RlZmVyX3NoaWZ0OwogaW50IGNvbXBhY3Rf b3JkZXJfZmFpbGVkOwoKCgoKIGJvb2wgY29tcGFjdF9ibG9ja3NraXBfZmx1c2g7CgoKIGJvb2wg Y29udGlndW91czsKCiBzdHJ1Y3Qgem9uZV9wYWRkaW5nIF9wYWQzXzsKCiBhdG9taWNfbG9uZ190 IHZtX3N0YXRbTlJfVk1fWk9ORV9TVEFUX0lURU1TXTsKIGF0b21pY19sb25nX3Qgdm1fbnVtYV9z dGF0WzBdOwp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDEgPDwgKDYpKSkpOwoKZW51bSBw Z2RhdF9mbGFncyB7CiBQR0RBVF9ESVJUWSwKCgoKIFBHREFUX1dSSVRFQkFDSywKCgogUEdEQVRf UkVDTEFJTV9MT0NLRUQsCn07CgplbnVtIHpvbmVfZmxhZ3MgewogWk9ORV9CT09TVEVEX1dBVEVS TUFSSywKCgp9OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyB6b25lX21hbmFnZWRfcGFnZXMoc3RydWN0IHpvbmUg KnpvbmUpCnsKIHJldHVybiAodW5zaWduZWQgbG9uZylhdG9taWNfbG9uZ19yZWFkKCZ6b25lLT5t YW5hZ2VkX3BhZ2VzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyB6b25lX2VuZF9wZm4oY29uc3Qgc3RydWN0 IHpvbmUgKnpvbmUpCnsKIHJldHVybiB6b25lLT56b25lX3N0YXJ0X3BmbiArIHpvbmUtPnNwYW5u ZWRfcGFnZXM7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgem9uZV9zcGFuc19wZm4oY29uc3Qgc3RydWN0IHpvbmUgKnpvbmUs IHVuc2lnbmVkIGxvbmcgcGZuKQp7CiByZXR1cm4gem9uZS0+em9uZV9zdGFydF9wZm4gPD0gcGZu ICYmIHBmbiA8IHpvbmVfZW5kX3Bmbih6b25lKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB6b25lX2lzX2luaXRpYWxpemVk KHN0cnVjdCB6b25lICp6b25lKQp7CiByZXR1cm4gem9uZS0+aW5pdGlhbGl6ZWQ7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg em9uZV9pc19lbXB0eShzdHJ1Y3Qgem9uZSAqem9uZSkKewogcmV0dXJuIHpvbmUtPnNwYW5uZWRf cGFnZXMgPT0gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgem9uZV9pbnRlcnNlY3RzKHN0cnVjdCB6b25lICp6b25l LAogIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQp7CiBp ZiAoem9uZV9pc19lbXB0eSh6b25lKSkKICByZXR1cm4gZmFsc2U7CiBpZiAoc3RhcnRfcGZuID49 IHpvbmVfZW5kX3Bmbih6b25lKSB8fAogICAgIHN0YXJ0X3BmbiArIG5yX3BhZ2VzIDw9IHpvbmUt PnpvbmVfc3RhcnRfcGZuKQogIHJldHVybiBmYWxzZTsKCiByZXR1cm4gdHJ1ZTsKfQojIDY0OSAi Li9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgplbnVtIHsKIFpPTkVMSVNUX0ZBTExCQUNLLAoKCgoK CgoKIE1BWF9aT05FTElTVFMKfTsKCgoKCgpzdHJ1Y3Qgem9uZXJlZiB7CiBzdHJ1Y3Qgem9uZSAq em9uZTsKIGludCB6b25lX2lkeDsKfTsKIyA2ODQgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIK c3RydWN0IHpvbmVsaXN0IHsKIHN0cnVjdCB6b25lcmVmIF96b25lcmVmc1soKDEgPDwgMCkgKiA0 KSArIDFdOwp9OwoKCgpleHRlcm4gc3RydWN0IHBhZ2UgKm1lbV9tYXA7CgoKCnN0cnVjdCBkZWZl cnJlZF9zcGxpdCB7CiBzcGlubG9ja190IHNwbGl0X3F1ZXVlX2xvY2s7CiBzdHJ1Y3QgbGlzdF9o ZWFkIHNwbGl0X3F1ZXVlOwogdW5zaWduZWQgbG9uZyBzcGxpdF9xdWV1ZV9sZW47Cn07CiMgNzA5 ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0cnVjdCBib290bWVtX2RhdGE7CnR5cGVkZWYg c3RydWN0IHBnbGlzdF9kYXRhIHsKIHN0cnVjdCB6b25lIG5vZGVfem9uZXNbNF07CiBzdHJ1Y3Qg em9uZWxpc3Qgbm9kZV96b25lbGlzdHNbTUFYX1pPTkVMSVNUU107CiBpbnQgbnJfem9uZXM7CiMg NzMxICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCiBzcGlubG9ja190IG5vZGVfc2l6ZV9sb2Nr OwoKIHVuc2lnbmVkIGxvbmcgbm9kZV9zdGFydF9wZm47CiB1bnNpZ25lZCBsb25nIG5vZGVfcHJl c2VudF9wYWdlczsKIHVuc2lnbmVkIGxvbmcgbm9kZV9zcGFubmVkX3BhZ2VzOwoKIGludCBub2Rl X2lkOwogd2FpdF9xdWV1ZV9oZWFkX3Qga3N3YXBkX3dhaXQ7CiB3YWl0X3F1ZXVlX2hlYWRfdCBw Zm1lbWFsbG9jX3dhaXQ7CiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmtzd2FwZDsKCiBpbnQga3N3YXBk X29yZGVyOwogZW51bSB6b25lX3R5cGUga3N3YXBkX2NsYXNzem9uZV9pZHg7CgogaW50IGtzd2Fw ZF9mYWlsdXJlczsKCgogaW50IGtjb21wYWN0ZF9tYXhfb3JkZXI7CiBlbnVtIHpvbmVfdHlwZSBr Y29tcGFjdGRfY2xhc3N6b25lX2lkeDsKIHdhaXRfcXVldWVfaGVhZF90IGtjb21wYWN0ZF93YWl0 Owogc3RydWN0IHRhc2tfc3RydWN0ICprY29tcGFjdGQ7CgoKCgoKIHVuc2lnbmVkIGxvbmcgdG90 YWxyZXNlcnZlX3BhZ2VzOwojIDc2OCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgogc3RydWN0 IHpvbmVfcGFkZGluZyBfcGFkMV87CiBzcGlubG9ja190IGxydV9sb2NrOwojIDc4MCAiLi9pbmNs dWRlL2xpbnV4L21tem9uZS5oIgogc3RydWN0IGRlZmVycmVkX3NwbGl0IGRlZmVycmVkX3NwbGl0 X3F1ZXVlOwojIDc5MCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgogc3RydWN0IGxydXZlYyBf X2xydXZlYzsKCiB1bnNpZ25lZCBsb25nIGZsYWdzOwoKIHN0cnVjdCB6b25lX3BhZGRpbmcgX3Bh ZDJfOwoKCiBzdHJ1Y3QgcGVyX2NwdV9ub2Rlc3RhdCAqcGVyX2NwdV9ub2Rlc3RhdHM7CiBhdG9t aWNfbG9uZ190IHZtX3N0YXRbTlJfVk1fTk9ERV9TVEFUX0lURU1TXTsKfSBwZ19kYXRhX3Q7CiMg ODEzICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgcGdkYXRfZW5kX3Bm bihwZ19kYXRhX3QgKnBnZGF0KQp7CiByZXR1cm4gcGdkYXQtPm5vZGVfc3RhcnRfcGZuICsgcGdk YXQtPm5vZGVfc3Bhbm5lZF9wYWdlczsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwZ2RhdF9pc19lbXB0eShwZ19kYXRhX3Qg KnBnZGF0KQp7CiByZXR1cm4gIXBnZGF0LT5ub2RlX3N0YXJ0X3BmbiAmJiAhcGdkYXQtPm5vZGVf c3Bhbm5lZF9wYWdlczsKfQoKIyAxICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIg MQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiIDEKIyA2ICIuL2luY2x1ZGUvbGlu dXgvbWVtb3J5X2hvdHBsdWcuaCIgMgoKIyAxICIuL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIg MQojIDE2ICIuL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCIKIyAxICIuL2luY2x1ZGUvbGludXgv c3JjdS5oIiAxCiMgMjIgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCiMgMSAiLi9pbmNsdWRlL2xp bnV4L3JjdV9zZWdjYmxpc3QuaCIgMQojIDIxICIuL2luY2x1ZGUvbGludXgvcmN1X3NlZ2NibGlz dC5oIgpzdHJ1Y3QgcmN1X2NibGlzdCB7CiBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZDsKIHN0 cnVjdCBjYWxsYmFja19oZWFkICoqdGFpbDsKIGxvbmcgbGVuOwp9OwojIDY2ICIuL2luY2x1ZGUv bGludXgvcmN1X3NlZ2NibGlzdC5oIgpzdHJ1Y3QgcmN1X3NlZ2NibGlzdCB7CiBzdHJ1Y3QgY2Fs bGJhY2tfaGVhZCAqaGVhZDsKIHN0cnVjdCBjYWxsYmFja19oZWFkICoqdGFpbHNbNF07CiB1bnNp Z25lZCBsb25nIGdwX3NlcVs0XTsKCgoKIGxvbmcgbGVuOwoKIHU4IGVuYWJsZWQ7CiB1OCBvZmZs b2FkZWQ7Cn07CiMgMjMgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiIDIKCnN0cnVjdCBzcmN1X3N0 cnVjdDsKIyA0MSAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIKaW50IGluaXRfc3JjdV9zdHJ1Y3Qo c3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApOwoKCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvc3Jj dXRyZWUuaCIgMQojIDE0ICIuL2luY2x1ZGUvbGludXgvc3JjdXRyZWUuaCIKIyAxICIuL2luY2x1 ZGUvbGludXgvcmN1X25vZGVfdHJlZS5oIiAxCiMgMTUgIi4vaW5jbHVkZS9saW51eC9zcmN1dHJl ZS5oIiAyCgoKc3RydWN0IHNyY3Vfbm9kZTsKc3RydWN0IHNyY3Vfc3RydWN0OwoKCgoKCnN0cnVj dCBzcmN1X2RhdGEgewoKIHVuc2lnbmVkIGxvbmcgc3JjdV9sb2NrX2NvdW50WzJdOwogdW5zaWdu ZWQgbG9uZyBzcmN1X3VubG9ja19jb3VudFsyXTsKCgogc3BpbmxvY2tfdCBsb2NrIF9fYXR0cmli dXRlX18oKF9fYWxpZ25lZF9fKDEgPDwgKDYpKSkpOwogc3RydWN0IHJjdV9zZWdjYmxpc3Qgc3Jj dV9jYmxpc3Q7CiB1bnNpZ25lZCBsb25nIHNyY3VfZ3Bfc2VxX25lZWRlZDsKIHVuc2lnbmVkIGxv bmcgc3JjdV9ncF9zZXFfbmVlZGVkX2V4cDsKIGJvb2wgc3JjdV9jYmxpc3RfaW52b2tpbmc7CiBz dHJ1Y3QgdGltZXJfbGlzdCBkZWxheV93b3JrOwogc3RydWN0IHdvcmtfc3RydWN0IHdvcms7CiBz dHJ1Y3QgY2FsbGJhY2tfaGVhZCBzcmN1X2JhcnJpZXJfaGVhZDsKIHN0cnVjdCBzcmN1X25vZGUg Km15bm9kZTsKIHVuc2lnbmVkIGxvbmcgZ3JwbWFzazsKCiBpbnQgY3B1Owogc3RydWN0IHNyY3Vf c3RydWN0ICpzc3A7Cn07CgoKCgpzdHJ1Y3Qgc3JjdV9ub2RlIHsKIHNwaW5sb2NrX3QgbG9jazsK IHVuc2lnbmVkIGxvbmcgc3JjdV9oYXZlX2Nic1s0XTsKCgogdW5zaWduZWQgbG9uZyBzcmN1X2Rh dGFfaGF2ZV9jYnNbNF07CgogdW5zaWduZWQgbG9uZyBzcmN1X2dwX3NlcV9uZWVkZWRfZXhwOwog c3RydWN0IHNyY3Vfbm9kZSAqc3JjdV9wYXJlbnQ7CiBpbnQgZ3JwbG87CiBpbnQgZ3JwaGk7Cn07 CgoKCgpzdHJ1Y3Qgc3JjdV9zdHJ1Y3Qgewogc3RydWN0IHNyY3Vfbm9kZSBub2RlWzFdOwogc3Ry dWN0IHNyY3Vfbm9kZSAqbGV2ZWxbMSArIDFdOwoKIHN0cnVjdCBtdXRleCBzcmN1X2NiX211dGV4 Owogc3BpbmxvY2tfdCBsb2NrOwogc3RydWN0IG11dGV4IHNyY3VfZ3BfbXV0ZXg7CiB1bnNpZ25l ZCBpbnQgc3JjdV9pZHg7CiB1bnNpZ25lZCBsb25nIHNyY3VfZ3Bfc2VxOwogdW5zaWduZWQgbG9u ZyBzcmN1X2dwX3NlcV9uZWVkZWQ7CiB1bnNpZ25lZCBsb25nIHNyY3VfZ3Bfc2VxX25lZWRlZF9l eHA7CiB1bnNpZ25lZCBsb25nIHNyY3VfbGFzdF9ncF9lbmQ7CiBzdHJ1Y3Qgc3JjdV9kYXRhICpz ZGE7CiB1bnNpZ25lZCBsb25nIHNyY3VfYmFycmllcl9zZXE7CiBzdHJ1Y3QgbXV0ZXggc3JjdV9i YXJyaWVyX211dGV4Owogc3RydWN0IGNvbXBsZXRpb24gc3JjdV9iYXJyaWVyX2NvbXBsZXRpb247 CgogYXRvbWljX3Qgc3JjdV9iYXJyaWVyX2NwdV9jbnQ7CgoKIHN0cnVjdCBkZWxheWVkX3dvcmsg d29yazsKCgoKfTsKIyAxMzcgIi4vaW5jbHVkZS9saW51eC9zcmN1dHJlZS5oIgp2b2lkIHN5bmNo cm9uaXplX3NyY3VfZXhwZWRpdGVkKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTsKdm9pZCBzcmN1 X2JhcnJpZXIoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApOwp2b2lkIHNyY3VfdG9ydHVyZV9zdGF0 c19wcmludChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgY2hhciAqdHQsIGNoYXIgKnRmKTsKIyA1 MCAiLi9pbmNsdWRlL2xpbnV4L3NyY3UuaCIgMgoKCgoKCgoKdm9pZCBjYWxsX3NyY3Uoc3RydWN0 IHNyY3Vfc3RydWN0ICpzc3AsIHN0cnVjdCBjYWxsYmFja19oZWFkICpoZWFkLAogIHZvaWQgKCpm dW5jKShzdHJ1Y3QgY2FsbGJhY2tfaGVhZCAqaGVhZCkpOwp2b2lkIGNsZWFudXBfc3JjdV9zdHJ1 Y3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApOwppbnQgX19zcmN1X3JlYWRfbG9jayhzdHJ1Y3Qg c3JjdV9zdHJ1Y3QgKnNzcCkgOwp2b2lkIF9fc3JjdV9yZWFkX3VubG9jayhzdHJ1Y3Qgc3JjdV9z dHJ1Y3QgKnNzcCwgaW50IGlkeCkgOwp2b2lkIHN5bmNocm9uaXplX3NyY3Uoc3RydWN0IHNyY3Vf c3RydWN0ICpzc3ApOwojIDkxICIuL2luY2x1ZGUvbGludXgvc3JjdS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc3JjdV9yZWFk X2xvY2tfaGVsZChjb25zdCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkKewogcmV0dXJuIDE7Cn0K IyAxNTAgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBzcmN1X3JlYWRfbG9jayhzdHJ1Y3Qg c3JjdV9zdHJ1Y3QgKnNzcCkKewogaW50IHJldHZhbDsKCiByZXR2YWwgPSBfX3NyY3VfcmVhZF9s b2NrKHNzcCk7CiBkbyB7IH0gd2hpbGUgKDApOwogcmV0dXJuIHJldHZhbDsKfQoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKc3JjdV9yZWFkX2xvY2tfbm90cmFj ZShzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkKewogaW50IHJldHZhbDsKCiByZXR2YWwgPSBfX3Ny Y3VfcmVhZF9sb2NrKHNzcCk7CiByZXR1cm4gcmV0dmFsOwp9CiMgMTc2ICIuL2luY2x1ZGUvbGlu dXgvc3JjdS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHNyY3VfcmVhZF91bmxvY2soc3RydWN0IHNyY3Vfc3RydWN0ICpzc3As IGludCBpZHgpCgp7CiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGlkeCAmIH4weDEpOyBpZiAo X19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19p bmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rp b24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0 IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQj IGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4i ICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4i ICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvc3JjdS5oIiksICJpIiAoMTc5 KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0 cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0 IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxu XHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDE1KSk7IH0pOyB9IHdoaWxlICgwKTsgX19i dWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwogZG8geyB9IHdoaWxlICgw KTsKIF9fc3JjdV9yZWFkX3VubG9jayhzc3AsIGlkeCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApzcmN1X3JlYWRfdW5sb2NrX25vdHJhY2Uoc3RydWN0 IHNyY3Vfc3RydWN0ICpzc3AsIGludCBpZHgpCnsKIF9fc3JjdV9yZWFkX3VubG9jayhzc3AsIGlk eCk7Cn0KIyAyMDAgIi4vaW5jbHVkZS9saW51eC9zcmN1LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc21wX21iX19hZnRlcl9z cmN1X3JlYWRfdW5sb2NrKHZvaWQpCnsKCn0KIyAxNyAiLi9pbmNsdWRlL2xpbnV4L25vdGlmaWVy LmgiIDIKIyA0OSAiLi9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgiCnN0cnVjdCBub3RpZmllcl9i bG9jazsKCnR5cGVkZWYgaW50ICgqbm90aWZpZXJfZm5fdCkoc3RydWN0IG5vdGlmaWVyX2Jsb2Nr ICpuYiwKICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpOwoKc3RydWN0IG5vdGlm aWVyX2Jsb2NrIHsKIG5vdGlmaWVyX2ZuX3Qgbm90aWZpZXJfY2FsbDsKIHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmV4dDsKIGludCBwcmlvcml0eTsKfTsKCnN0cnVjdCBhdG9taWNfbm90aWZpZXJf aGVhZCB7CiBzcGlubG9ja190IGxvY2s7CiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKmhlYWQ7Cn07 CgpzdHJ1Y3QgYmxvY2tpbmdfbm90aWZpZXJfaGVhZCB7CiBzdHJ1Y3Qgcndfc2VtYXBob3JlIHJ3 c2VtOwogc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpoZWFkOwp9OwoKc3RydWN0IHJhd19ub3RpZmll cl9oZWFkIHsKIHN0cnVjdCBub3RpZmllcl9ibG9jayAqaGVhZDsKfTsKCnN0cnVjdCBzcmN1X25v dGlmaWVyX2hlYWQgewogc3RydWN0IG11dGV4IG11dGV4Owogc3RydWN0IHNyY3Vfc3RydWN0IHNy Y3U7CiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKmhlYWQ7Cn07CiMgOTMgIi4vaW5jbHVkZS9saW51 eC9ub3RpZmllci5oIgpleHRlcm4gdm9pZCBzcmN1X2luaXRfbm90aWZpZXJfaGVhZChzdHJ1Y3Qg c3JjdV9ub3RpZmllcl9oZWFkICpuaCk7CiMgMTQ0ICIuL2luY2x1ZGUvbGludXgvbm90aWZpZXIu aCIKZXh0ZXJuIGludCBhdG9taWNfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoc3RydWN0IGF0b21p Y19ub3RpZmllcl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKZXh0ZXJu IGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihzdHJ1Y3QgYmxvY2tpbmdfbm90 aWZpZXJfaGVhZCAqbmgsCiAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CmV4dGVybiBpbnQg cmF3X25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKHN0cnVjdCByYXdfbm90aWZpZXJfaGVhZCAqbmgs CiAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CmV4dGVybiBpbnQgc3JjdV9ub3RpZmllcl9j aGFpbl9yZWdpc3RlcihzdHJ1Y3Qgc3JjdV9ub3RpZmllcl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90 aWZpZXJfYmxvY2sgKm5iKTsKCmV4dGVybiBpbnQgYXRvbWljX25vdGlmaWVyX2NoYWluX3VucmVn aXN0ZXIoc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90aWZpZXJf YmxvY2sgKm5iKTsKZXh0ZXJuIGludCBibG9ja2luZ19ub3RpZmllcl9jaGFpbl91bnJlZ2lzdGVy KHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90aWZpZXJfYmxv Y2sgKm5iKTsKZXh0ZXJuIGludCByYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3Qg cmF3X25vdGlmaWVyX2hlYWQgKm5oLAogIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwpleHRl cm4gaW50IHNyY3Vfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcihzdHJ1Y3Qgc3JjdV9ub3RpZmll cl9oZWFkICpuaCwKICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKCmV4dGVybiBpbnQgYXRv bWljX25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkICpuaCwK ICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdik7CmV4dGVybiBpbnQgX19hdG9taWNfbm90aWZp ZXJfY2FsbF9jaGFpbihzdHJ1Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgKm5oLAogdW5zaWduZWQg bG9uZyB2YWwsIHZvaWQgKnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2NhbGxzKTsKZXh0ZXJu IGludCBibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKHN0cnVjdCBibG9ja2luZ19ub3RpZmll cl9oZWFkICpuaCwKICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdik7CmV4dGVybiBpbnQgX19i bG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKHN0cnVjdCBibG9ja2luZ19ub3RpZmllcl9oZWFk ICpuaCwKIHVuc2lnbmVkIGxvbmcgdmFsLCB2b2lkICp2LCBpbnQgbnJfdG9fY2FsbCwgaW50ICpu cl9jYWxscyk7CmV4dGVybiBpbnQgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJhd19u b3RpZmllcl9oZWFkICpuaCwKICB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqdik7CmV4dGVybiBp bnQgX19yYXdfbm90aWZpZXJfY2FsbF9jaGFpbihzdHJ1Y3QgcmF3X25vdGlmaWVyX2hlYWQgKm5o LAogdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2Nh bGxzKTsKZXh0ZXJuIGludCBzcmN1X25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHNyY3Vfbm90 aWZpZXJfaGVhZCAqbmgsCiAgdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYpOwpleHRlcm4gaW50 IF9fc3JjdV9ub3RpZmllcl9jYWxsX2NoYWluKHN0cnVjdCBzcmN1X25vdGlmaWVyX2hlYWQgKm5o LAogdW5zaWduZWQgbG9uZyB2YWwsIHZvaWQgKnYsIGludCBucl90b19jYWxsLCBpbnQgKm5yX2Nh bGxzKTsKIyAxOTAgIi4vaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgbm90aWZpZXJfZnJv bV9lcnJubyhpbnQgZXJyKQp7CiBpZiAoZXJyKQogIHJldHVybiAweDgwMDAgfCAoMHgwMDAxIC0g ZXJyKTsKCiByZXR1cm4gMHgwMDAxOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG5vdGlmaWVyX3RvX2Vycm5vKGludCByZXQp CnsKIHJldCAmPSB+MHg4MDAwOwogcmV0dXJuIHJldCA+IDB4MDAwMSA/IDB4MDAwMSAtIHJldCA6 IDA7Cn0KIyAyMzQgIi4vaW5jbHVkZS9saW51eC9ub3RpZmllci5oIgpleHRlcm4gc3RydWN0IGJs b2NraW5nX25vdGlmaWVyX2hlYWQgcmVib290X25vdGlmaWVyX2xpc3Q7CiMgOCAiLi9pbmNsdWRl L2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiIDIKCgpzdHJ1Y3QgcGFnZTsKc3RydWN0IHpvbmU7CnN0 cnVjdCBwZ2xpc3RfZGF0YTsKc3RydWN0IG1lbV9zZWN0aW9uOwpzdHJ1Y3QgbWVtb3J5X2Jsb2Nr OwpzdHJ1Y3QgcmVzb3VyY2U7CnN0cnVjdCB2bWVtX2FsdG1hcDsKIyA0MCAiLi9pbmNsdWRlL2xp bnV4L21lbW9yeV9ob3RwbHVnLmgiCmVudW0gewogTUVNT1JZX0hPVFBMVUdfTUlOX0JPT1RNRU1f VFlQRSA9IDEyLAogU0VDVElPTl9JTkZPID0gTUVNT1JZX0hPVFBMVUdfTUlOX0JPT1RNRU1fVFlQ RSwKIE1JWF9TRUNUSU9OX0lORk8sCiBOT0RFX0lORk8sCiBNRU1PUllfSE9UUExVR19NQVhfQk9P VE1FTV9UWVBFID0gTk9ERV9JTkZPLAp9OwoKCmVudW0gewogTU1PUF9PRkZMSU5FID0gLTEsCiBN TU9QX09OTElORV9LRUVQLAogTU1PUF9PTkxJTkVfS0VSTkVMLAogTU1PUF9PTkxJTkVfTU9WQUJM RSwKfTsKCgoKCgoKc3RydWN0IG1ocF9yZXN0cmljdGlvbnMgewogdW5zaWduZWQgbG9uZyBmbGFn czsKIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwOwp9OwojIDczICIuL2luY2x1ZGUvbGludXgv bWVtb3J5X2hvdHBsdWcuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgem9uZV9zcGFuX3NlcWJlZ2luKHN0cnVjdCB6b25l ICp6b25lKQp7CiByZXR1cm4gcmVhZF9zZXFiZWdpbigmem9uZS0+c3Bhbl9zZXFsb2NrKTsKfQpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgem9uZV9zcGFuX3NlcXJldHJ5KHN0cnVjdCB6b25lICp6b25lLCB1bnNpZ25lZCBpdikKewog cmV0dXJuIHJlYWRfc2VxcmV0cnkoJnpvbmUtPnNwYW5fc2VxbG9jaywgaXYpOwp9CnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgem9u ZV9zcGFuX3dyaXRlbG9jayhzdHJ1Y3Qgem9uZSAqem9uZSkKewogd3JpdGVfc2VxbG9jaygmem9u ZS0+c3Bhbl9zZXFsb2NrKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHpvbmVfc3Bhbl93cml0ZXVubG9jayhzdHJ1Y3Qgem9u ZSAqem9uZSkKewogd3JpdGVfc2VxdW5sb2NrKCZ6b25lLT5zcGFuX3NlcWxvY2spOwp9CnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg em9uZV9zZXFsb2NrX2luaXQoc3RydWN0IHpvbmUgKnpvbmUpCnsKIGRvIHsgX19zZXFjb3VudF9p bml0KCYoJnpvbmUtPnNwYW5fc2VxbG9jayktPnNlcWNvdW50LCAoKHZvaWQgKikwKSwgKCh2b2lk ICopMCkpOyBkbyB7IHNwaW5sb2NrX2NoZWNrKCYoJnpvbmUtPnNwYW5fc2VxbG9jayktPmxvY2sp OyBkbyB7ICooJigmKCZ6b25lLT5zcGFuX3NlcWxvY2spLT5sb2NrKS0+cmxvY2spID0gKHJhd19z cGlubG9ja190KSB7IC5yYXdfbG9jayA9IHsgeyAudmFsID0geyAoMCkgfSB9IH0sIH07IH0gd2hp bGUgKDApOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7Cn0KZXh0ZXJuIGludCB6b25lX2dyb3df ZnJlZV9saXN0cyhzdHJ1Y3Qgem9uZSAqem9uZSwgdW5zaWduZWQgbG9uZyBuZXdfbnJfcGFnZXMp OwpleHRlcm4gaW50IHpvbmVfZ3Jvd193YWl0cXVldWVzKHN0cnVjdCB6b25lICp6b25lLCB1bnNp Z25lZCBsb25nIG5yX3BhZ2VzKTsKZXh0ZXJuIGludCBhZGRfb25lX2hpZ2hwYWdlKHN0cnVjdCBw YWdlICpwYWdlLCBpbnQgcGZuLCBpbnQgYmFkX3Bwcm8pOwoKZXh0ZXJuIGludCBvbmxpbmVfcGFn ZXModW5zaWduZWQgbG9uZyBwZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAgIGludCBvbmxp bmVfdHlwZSwgaW50IG5pZCk7CmV4dGVybiBzdHJ1Y3Qgem9uZSAqdGVzdF9wYWdlc19pbl9hX3pv bmUodW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCiAgICAgIHVuc2lnbmVkIGxvbmcgZW5kX3Bmbik7 CmV4dGVybiB1bnNpZ25lZCBsb25nIF9fb2ZmbGluZV9pc29sYXRlZF9wYWdlcyh1bnNpZ25lZCBs b25nIHN0YXJ0X3BmbiwKICAgICAgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsKCnR5cGVkZWYgdm9p ZCAoKm9ubGluZV9wYWdlX2NhbGxiYWNrX3QpKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBp bnQgb3JkZXIpOwoKZXh0ZXJuIHZvaWQgZ2VuZXJpY19vbmxpbmVfcGFnZShzdHJ1Y3QgcGFnZSAq cGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKTsKZXh0ZXJuIGludCBzZXRfb25saW5lX3BhZ2VfY2Fs bGJhY2sob25saW5lX3BhZ2VfY2FsbGJhY2tfdCBjYWxsYmFjayk7CmV4dGVybiBpbnQgcmVzdG9y ZV9vbmxpbmVfcGFnZV9jYWxsYmFjayhvbmxpbmVfcGFnZV9jYWxsYmFja190IGNhbGxiYWNrKTsK CmV4dGVybiBpbnQgdHJ5X29ubGluZV9ub2RlKGludCBuaWQpOwoKZXh0ZXJuIGludCBhcmNoX2Fk ZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwKICAgc3RydWN0IG1ocF9yZXN0 cmljdGlvbnMgKnJlc3RyaWN0aW9ucyk7CmV4dGVybiB1NjQgbWF4X21lbV9zaXplOwoKZXh0ZXJu IGJvb2wgbWVtaHBfYXV0b19vbmxpbmU7CgpleHRlcm4gYm9vbCBtb3ZhYmxlX25vZGVfZW5hYmxl ZDsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBtb3ZhYmxlX25vZGVfaXNfZW5hYmxlZCh2b2lkKQp7CiByZXR1cm4gbW92YWJsZV9u b2RlX2VuYWJsZWQ7Cn0KCmV4dGVybiB2b2lkIGFyY2hfcmVtb3ZlX21lbW9yeShpbnQgbmlkLCB1 NjQgc3RhcnQsIHU2NCBzaXplLAogICAgICAgICAgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAp OwpleHRlcm4gdm9pZCBfX3JlbW92ZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5z aWduZWQgbG9uZyBucl9wYWdlcywKICAgICAgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApOwoK CmV4dGVybiBpbnQgX19hZGRfcGFnZXMoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4s IHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAgICAgICAgIHN0cnVjdCBtaHBfcmVzdHJpY3Rpb25z ICpyZXN0cmljdGlvbnMpOwojIDE0MCAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgi CmludCBhZGRfcGFnZXMoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVk IGxvbmcgbnJfcGFnZXMsCiAgICAgICBzdHJ1Y3QgbWhwX3Jlc3RyaWN0aW9ucyAqcmVzdHJpY3Rp b25zKTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgbWVtb3J5X2FkZF9waHlzYWRkcl90b19uaWQodTY0IHN0YXJ0KQp7CiBy ZXR1cm4gMDsKfQojIDE5OSAiLi9pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBnX2Rh dGFfdCAqZ2VuZXJpY19hbGxvY19ub2RlZGF0YShpbnQgbmlkKQp7CiBkbyB7IGRvIHsgYXNtIF9f aW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0 aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJc dCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0 IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxu IiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xu IiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgi KSwgImkiICgyMDEpLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9 IHdoaWxlICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9u IC5kaXNjYXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgOiA6ICJpIiAoMTYpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91 bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiByZXR1cm4gKCh2b2lkICop MCk7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBnZW5lcmljX2ZyZWVfbm9kZWRhdGEocGdfZGF0YV90ICpwZ2RhdCkKewp9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgYXJjaF9yZWZyZXNoX25vZGVkYXRhKGludCBuaWQsIHBnX2RhdGFfdCAqcGdkYXQpCnsKfQoK CgoKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkp IF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgcmVnaXN0ZXJfcGFnZV9ib290bWVtX2luZm9fbm9k ZShzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KTsKCgoKCgpleHRlcm4gdm9pZCBwdXRfcGFnZV9i b290bWVtKHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIHZvaWQgZ2V0X3BhZ2VfYm9vdG1lbSh1 bnNpZ25lZCBsb25nIGluZ28sIHN0cnVjdCBwYWdlICpwYWdlLAogICAgICAgIHVuc2lnbmVkIGxv bmcgdHlwZSk7Cgp2b2lkIGdldF9vbmxpbmVfbWVtcyh2b2lkKTsKdm9pZCBwdXRfb25saW5lX21l bXModm9pZCk7Cgp2b2lkIG1lbV9ob3RwbHVnX2JlZ2luKHZvaWQpOwp2b2lkIG1lbV9ob3RwbHVn X2RvbmUodm9pZCk7CiMgMjgzICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkKdm9p ZCBwZ2RhdF9yZXNpemVfbG9jayhzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0LCB1bnNpZ25lZCBs b25nICpmbGFncykKewogZG8geyBkbyB7ICh7IHVuc2lnbmVkIGxvbmcgX19kdW1teTsgdHlwZW9m KCpmbGFncykgX19kdW1teTI7ICh2b2lkKSgmX19kdW1teSA9PSAmX19kdW1teTIpOyAxOyB9KTsg KmZsYWdzID0gX3Jhd19zcGluX2xvY2tfaXJxc2F2ZShzcGlubG9ja19jaGVjaygmcGdkYXQtPm5v ZGVfc2l6ZV9sb2NrKSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKfQpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQp2b2lkIHBnZGF0X3Jl c2l6ZV91bmxvY2soc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwgdW5zaWduZWQgbG9uZyAqZmxh Z3MpCnsKIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBnZGF0LT5ub2RlX3NpemVfbG9jaywgKmZs YWdzKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKQp2b2lkIHBnZGF0X3Jlc2l6ZV9pbml0KHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQp CnsKIGRvIHsgc3BpbmxvY2tfY2hlY2soJnBnZGF0LT5ub2RlX3NpemVfbG9jayk7IGRvIHsgKigm KCZwZ2RhdC0+bm9kZV9zaXplX2xvY2spLT5ybG9jaykgPSAocmF3X3NwaW5sb2NrX3QpIHsgLnJh d19sb2NrID0geyB7IC52YWwgPSB7ICgwKSB9IH0gfSwgfTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUg KDApOwp9CiMgMzA5ICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIKZXh0ZXJuIGJv b2wgaXNfbWVtX3NlY3Rpb25fcmVtb3ZhYmxlKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzKTsKZXh0ZXJuIHZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKTsKZXh0 ZXJuIGludCBvZmZsaW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzKTsKZXh0ZXJuIGludCByZW1vdmVfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFy dCwgdTY0IHNpemUpOwpleHRlcm4gdm9pZCBfX3JlbW92ZV9tZW1vcnkoaW50IG5pZCwgdTY0IHN0 YXJ0LCB1NjQgc2l6ZSk7CiMgMzM3ICIuL2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaCIK ZXh0ZXJuIHZvaWQgc2V0X3pvbmVfY29udGlndW91cyhzdHJ1Y3Qgem9uZSAqem9uZSk7CmV4dGVy biB2b2lkIGNsZWFyX3pvbmVfY29udGlndW91cyhzdHJ1Y3Qgem9uZSAqem9uZSk7CgpleHRlcm4g dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLnJlZi50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX25vaW5saW5lX18pKSBmcmVlX2FyZWFfaW5pdF9jb3JlX2hvdHBsdWcoaW50IG5pZCk7 CmV4dGVybiBpbnQgX19hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUpOwpl eHRlcm4gaW50IGFkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSk7CmV4dGVy biBpbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlc291 cmNlKTsKZXh0ZXJuIHZvaWQgbW92ZV9wZm5fcmFuZ2VfdG9fem9uZShzdHJ1Y3Qgem9uZSAqem9u ZSwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sCiAgdW5zaWduZWQgbG9uZyBucl9wYWdlcywgc3Ry dWN0IHZtZW1fYWx0bWFwICphbHRtYXApOwpleHRlcm4gdm9pZCByZW1vdmVfcGZuX3JhbmdlX2Zy b21fem9uZShzdHJ1Y3Qgem9uZSAqem9uZSwKICAgICAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0 X3BmbiwKICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKTsKZXh0ZXJuIGJvb2wgaXNf bWVtYmxvY2tfb2ZmbGluZWQoc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtKTsKZXh0ZXJuIGludCBz cGFyc2VfYWRkX3NlY3Rpb24oaW50IG5pZCwgdW5zaWduZWQgbG9uZyBwZm4sCiAgdW5zaWduZWQg bG9uZyBucl9wYWdlcywgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApOwpleHRlcm4gdm9pZCBz cGFyc2VfcmVtb3ZlX3NlY3Rpb24oc3RydWN0IG1lbV9zZWN0aW9uICptcywKICB1bnNpZ25lZCBs b25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKICB1bnNpZ25lZCBsb25nIG1hcF9vZmZz ZXQsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwKTsKZXh0ZXJuIHN0cnVjdCBwYWdlICpzcGFy c2VfZGVjb2RlX21lbV9tYXAodW5zaWduZWQgbG9uZyBjb2RlZF9tZW1fbWFwLAogICAgICAgdW5z aWduZWQgbG9uZyBwbnVtKTsKZXh0ZXJuIGJvb2wgYWxsb3dfb25saW5lX3Bmbl9yYW5nZShpbnQg bmlkLCB1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKICBpbnQgb25s aW5lX3R5cGUpOwpleHRlcm4gc3RydWN0IHpvbmUgKnpvbmVfZm9yX3Bmbl9yYW5nZShpbnQgb25s aW5lX3R5cGUsIGludCBuaWQsIHVuc2lnbmVkIHN0YXJ0X3BmbiwKICB1bnNpZ25lZCBsb25nIG5y X3BhZ2VzKTsKIyA4MjQgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIgMgoKdm9pZCBidWlsZF9h bGxfem9uZWxpc3RzKHBnX2RhdGFfdCAqcGdkYXQpOwp2b2lkIHdha2V1cF9rc3dhcGQoc3RydWN0 IHpvbmUgKnpvbmUsIGdmcF90IGdmcF9tYXNrLCBpbnQgb3JkZXIsCiAgICAgZW51bSB6b25lX3R5 cGUgY2xhc3N6b25lX2lkeCk7CmJvb2wgX196b25lX3dhdGVybWFya19vayhzdHJ1Y3Qgem9uZSAq eiwgdW5zaWduZWQgaW50IG9yZGVyLCB1bnNpZ25lZCBsb25nIG1hcmssCiAgICBpbnQgY2xhc3N6 b25lX2lkeCwgdW5zaWduZWQgaW50IGFsbG9jX2ZsYWdzLAogICAgbG9uZyBmcmVlX3BhZ2VzKTsK Ym9vbCB6b25lX3dhdGVybWFya19vayhzdHJ1Y3Qgem9uZSAqeiwgdW5zaWduZWQgaW50IG9yZGVy LAogIHVuc2lnbmVkIGxvbmcgbWFyaywgaW50IGNsYXNzem9uZV9pZHgsCiAgdW5zaWduZWQgaW50 IGFsbG9jX2ZsYWdzKTsKYm9vbCB6b25lX3dhdGVybWFya19va19zYWZlKHN0cnVjdCB6b25lICp6 LCB1bnNpZ25lZCBpbnQgb3JkZXIsCiAgdW5zaWduZWQgbG9uZyBtYXJrLCBpbnQgY2xhc3N6b25l X2lkeCk7CmVudW0gbWVtbWFwX2NvbnRleHQgewogTUVNTUFQX0VBUkxZLAogTUVNTUFQX0hPVFBM VUcsCn07CmV4dGVybiB2b2lkIGluaXRfY3VycmVudGx5X2VtcHR5X3pvbmUoc3RydWN0IHpvbmUg KnpvbmUsIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLAogICAgICAgICB1bnNpZ25lZCBsb25nIHNp emUpOwoKZXh0ZXJuIHZvaWQgbHJ1dmVjX2luaXQoc3RydWN0IGxydXZlYyAqbHJ1dmVjKTsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBwZ2xpc3RfZGF0YSAqbHJ1dmVjX3BnZGF0KHN0cnVjdCBscnV2ZWMgKmxydXZlYykKewoK IHJldHVybiBscnV2ZWMtPnBnZGF0OwoKCgp9CgpleHRlcm4gdW5zaWduZWQgbG9uZyBscnV2ZWNf bHJ1X3NpemUoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBlbnVtIGxydV9saXN0IGxydSwgaW50IHpv bmVfaWR4KTsKCgp2b2lkIG1lbW9yeV9wcmVzZW50KGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3Rh cnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKCgoKCgp2b2lkIG1lbWJsb2Nrc19wcmVzZW50KHZvaWQp OwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IGxvY2FsX21lbW9yeV9ub2RlKGludCBub2RlX2lkKSB7IHJldHVybiBub2Rl X2lkOyB9OwojIDg4NSAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG1hbmFnZWRfem9u ZShzdHJ1Y3Qgem9uZSAqem9uZSkKewogcmV0dXJuIHpvbmVfbWFuYWdlZF9wYWdlcyh6b25lKTsK fQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgcG9wdWxhdGVkX3pvbmUoc3RydWN0IHpvbmUgKnpvbmUpCnsKIHJldHVybiB6b25l LT5wcmVzZW50X3BhZ2VzOwp9CiMgOTA3ICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB6 b25lX3RvX25pZChzdHJ1Y3Qgem9uZSAqem9uZSkKewogcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgem9uZV9z ZXRfbmlkKHN0cnVjdCB6b25lICp6b25lLCBpbnQgbmlkKSB7fQoKCmV4dGVybiBpbnQgbW92YWJs ZV96b25lOwojIDkyOCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaXNfaGlnaG1lbV9p ZHgoZW51bSB6b25lX3R5cGUgaWR4KQp7CgoKCgogcmV0dXJuIDA7Cgp9CgoKCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaXNf aGlnaG1lbShzdHJ1Y3Qgem9uZSAqem9uZSkKewoKCgogcmV0dXJuIDA7Cgp9CgoKc3RydWN0IGN0 bF90YWJsZTsKaW50IG1pbl9mcmVlX2tieXRlc19zeXNjdGxfaGFuZGxlcihzdHJ1Y3QgY3RsX3Rh YmxlICosIGludCwKICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmludCB3YXRlcm1h cmtfYm9vc3RfZmFjdG9yX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAog ICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKaW50IHdhdGVybWFya19zY2FsZV9mYWN0 b3Jfc3lzY3RsX2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCiAgICAgdm9pZCAqLCBz aXplX3QgKiwgbG9mZl90ICopOwpleHRlcm4gaW50IHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRp b1s0XTsKaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxf dGFibGUgKiwgaW50LAogICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKaW50IHBlcmNw dV9wYWdlbGlzdF9mcmFjdGlvbl9zeXNjdGxfaGFuZGxlcihzdHJ1Y3QgY3RsX3RhYmxlICosIGlu dCwKICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmludCBzeXNjdGxfbWluX3VubWFw cGVkX3JhdGlvX3N5c2N0bF9oYW5kbGVyKHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAogICB2b2lk ICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmludCBzeXNjdGxfbWluX3NsYWJfcmF0aW9fc3lzY3Rs X2hhbmRsZXIoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCiAgIHZvaWQgKiwgc2l6ZV90ICosIGxv ZmZfdCAqKTsKCmV4dGVybiBpbnQgbnVtYV96b25lbGlzdF9vcmRlcl9oYW5kbGVyKHN0cnVjdCBj dGxfdGFibGUgKiwgaW50LAogICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmV4dGVybiBj aGFyIG51bWFfem9uZWxpc3Rfb3JkZXJbXTsKCgoKCmV4dGVybiBzdHJ1Y3QgcGdsaXN0X2RhdGEg Y29udGlnX3BhZ2VfZGF0YTsKIyA5ODggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKZXh0ZXJu IHN0cnVjdCBwZ2xpc3RfZGF0YSAqZmlyc3Rfb25saW5lX3BnZGF0KHZvaWQpOwpleHRlcm4gc3Ry dWN0IHBnbGlzdF9kYXRhICpuZXh0X29ubGluZV9wZ2RhdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBn ZGF0KTsKZXh0ZXJuIHN0cnVjdCB6b25lICpuZXh0X3pvbmUoc3RydWN0IHpvbmUgKnpvbmUpOwoj IDEwMjAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHpvbmUgKnpvbmVsaXN0X3pv bmUoc3RydWN0IHpvbmVyZWYgKnpvbmVyZWYpCnsKIHJldHVybiB6b25lcmVmLT56b25lOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgem9uZWxpc3Rfem9uZV9pZHgoc3RydWN0IHpvbmVyZWYgKnpvbmVyZWYpCnsKIHJldHVybiB6 b25lcmVmLT56b25lX2lkeDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHpvbmVsaXN0X25vZGVfaWR4KHN0cnVjdCB6b25lcmVm ICp6b25lcmVmKQp7CiByZXR1cm4gem9uZV90b19uaWQoem9uZXJlZi0+em9uZSk7Cn0KCnN0cnVj dCB6b25lcmVmICpfX25leHRfem9uZXNfem9uZWxpc3Qoc3RydWN0IHpvbmVyZWYgKnosCiAgICAg ZW51bSB6b25lX3R5cGUgaGlnaGVzdF96b25laWR4LAogICAgIG5vZGVtYXNrX3QgKm5vZGVzKTsK IyAxMDUxICIuL2luY2x1ZGUvbGludXgvbW16b25lLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkgc3RydWN0IHpvbmVyZWYgKm5leHRfem9uZXNfem9uZWxpc3Qoc3RydWN0IHpv bmVyZWYgKnosCiAgICAgZW51bSB6b25lX3R5cGUgaGlnaGVzdF96b25laWR4LAogICAgIG5vZGVt YXNrX3QgKm5vZGVzKQp7CiBpZiAoX19idWlsdGluX2V4cGVjdCghISghbm9kZXMgJiYgem9uZWxp c3Rfem9uZV9pZHgoeikgPD0gaGlnaGVzdF96b25laWR4KSwgMSkpCiAgcmV0dXJuIHo7CiByZXR1 cm4gX19uZXh0X3pvbmVzX3pvbmVsaXN0KHosIGhpZ2hlc3Rfem9uZWlkeCwgbm9kZXMpOwp9CiMg MTA3NiAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qgem9uZXJlZiAqZmlyc3Rfem9u ZXNfem9uZWxpc3Qoc3RydWN0IHpvbmVsaXN0ICp6b25lbGlzdCwKICAgICBlbnVtIHpvbmVfdHlw ZSBoaWdoZXN0X3pvbmVpZHgsCiAgICAgbm9kZW1hc2tfdCAqbm9kZXMpCnsKIHJldHVybiBuZXh0 X3pvbmVzX3pvbmVsaXN0KHpvbmVsaXN0LT5fem9uZXJlZnMsCiAgICAgICBoaWdoZXN0X3pvbmVp ZHgsIG5vZGVzKTsKfQojIDExNjAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQg bG9uZyBwZm5fdG9fc2VjdGlvbl9ucih1bnNpZ25lZCBsb25nIHBmbikKewogcmV0dXJuIHBmbiA+ PiAoMjcgLSAxMik7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBzZWN0aW9uX25yX3RvX3Bmbih1bnNpZ25lZCBs b25nIHNlYykKewogcmV0dXJuIHNlYyA8PCAoMjcgLSAxMik7Cn0KIyAxMTg3ICIuL2luY2x1ZGUv bGludXgvbW16b25lLmgiCnN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSB7CiB1bnNpZ25lZCBsb25n IHN1YnNlY3Rpb25fbWFwWygoKCgxVUwgPDwgKDI3IC0gMjEpKSkgKyAoKHNpemVvZihsb25nKSAq IDgpKSAtIDEpIC8gKChzaXplb2YobG9uZykgKiA4KSkpXTsKCiB1bnNpZ25lZCBsb25nIHBhZ2Vi bG9ja19mbGFnc1swXTsKfTsKCnZvaWQgc3Vic2VjdGlvbl9tYXBfaW5pdCh1bnNpZ25lZCBsb25n IHBmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyk7CgpzdHJ1Y3QgcGFnZTsKc3RydWN0IHBhZ2Vf ZXh0OwpzdHJ1Y3QgbWVtX3NlY3Rpb24gewojIDEyMTAgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUu aCIKIHVuc2lnbmVkIGxvbmcgc2VjdGlvbl9tZW1fbWFwOwoKIHN0cnVjdCBtZW1fc2VjdGlvbl91 c2FnZSAqdXNhZ2U7CgoKCgoKIHN0cnVjdCBwYWdlX2V4dCAqcGFnZV9leHQ7CiB1bnNpZ25lZCBs b25nIHBhZDsKCgoKCgp9OwojIDEyMzggIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKZXh0ZXJu IHN0cnVjdCBtZW1fc2VjdGlvbiAqKm1lbV9zZWN0aW9uOwoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyAqc2Vj dGlvbl90b191c2VtYXAoc3RydWN0IG1lbV9zZWN0aW9uICptcykKewogcmV0dXJuIG1zLT51c2Fn ZS0+cGFnZWJsb2NrX2ZsYWdzOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgbWVtX3NlY3Rpb24gKl9fbnJfdG9fc2VjdGlv bih1bnNpZ25lZCBsb25nIG5yKQp7CgogaWYgKCFtZW1fc2VjdGlvbikKICByZXR1cm4gKCh2b2lk ICopMCk7CgogaWYgKCFtZW1fc2VjdGlvblsoKG5yKSAvICgoKDFVTCkgPDwgMTIpIC8gc2l6ZW9m IChzdHJ1Y3QgbWVtX3NlY3Rpb24pKSldKQogIHJldHVybiAoKHZvaWQgKikwKTsKIHJldHVybiAm bWVtX3NlY3Rpb25bKChucikgLyAoKCgxVUwpIDw8IDEyKSAvIHNpemVvZiAoc3RydWN0IG1lbV9z ZWN0aW9uKSkpXVtuciAmICgoKCgxVUwpIDw8IDEyKSAvIHNpemVvZiAoc3RydWN0IG1lbV9zZWN0 aW9uKSkgLSAxKV07Cn0KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgX19zZWN0aW9uX25yKHN0cnVjdCBt ZW1fc2VjdGlvbiAqbXMpOwpleHRlcm4gc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9p ZCk7CiMgMTI4MiAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGFnZSAqX19zZWN0 aW9uX21lbV9tYXBfYWRkcihzdHJ1Y3QgbWVtX3NlY3Rpb24gKnNlY3Rpb24pCnsKIHVuc2lnbmVk IGxvbmcgbWFwID0gc2VjdGlvbi0+c2VjdGlvbl9tZW1fbWFwOwogbWFwICY9ICh+KCgxVUw8PDQp LTEpKTsKIHJldHVybiAoc3RydWN0IHBhZ2UgKiltYXA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwcmVzZW50X3NlY3Rpb24o c3RydWN0IG1lbV9zZWN0aW9uICpzZWN0aW9uKQp7CiByZXR1cm4gKHNlY3Rpb24gJiYgKHNlY3Rp b24tPnNlY3Rpb25fbWVtX21hcCAmICgxVUw8PDApKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwcmVzZW50X3NlY3Rpb25f bnIodW5zaWduZWQgbG9uZyBucikKewogcmV0dXJuIHByZXNlbnRfc2VjdGlvbihfX25yX3RvX3Nl Y3Rpb24obnIpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHZhbGlkX3NlY3Rpb24oc3RydWN0IG1lbV9zZWN0aW9uICpzZWN0 aW9uKQp7CiByZXR1cm4gKHNlY3Rpb24gJiYgKHNlY3Rpb24tPnNlY3Rpb25fbWVtX21hcCAmICgx VUw8PDEpKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBlYXJseV9zZWN0aW9uKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlv bikKewogcmV0dXJuIChzZWN0aW9uICYmIChzZWN0aW9uLT5zZWN0aW9uX21lbV9tYXAgJiAoMVVM PDwzKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgdmFsaWRfc2VjdGlvbl9ucih1bnNpZ25lZCBsb25nIG5yKQp7CiByZXR1 cm4gdmFsaWRfc2VjdGlvbihfX25yX3RvX3NlY3Rpb24obnIpKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG9ubGluZV9zZWN0 aW9uKHN0cnVjdCBtZW1fc2VjdGlvbiAqc2VjdGlvbikKewogcmV0dXJuIChzZWN0aW9uICYmIChz ZWN0aW9uLT5zZWN0aW9uX21lbV9tYXAgJiAoMVVMPDwyKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgb25saW5lX3NlY3Rp b25fbnIodW5zaWduZWQgbG9uZyBucikKewogcmV0dXJuIG9ubGluZV9zZWN0aW9uKF9fbnJfdG9f c2VjdGlvbihucikpOwp9CgoKdm9pZCBvbmxpbmVfbWVtX3NlY3Rpb25zKHVuc2lnbmVkIGxvbmcg c3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIGVuZF9wZm4pOwoKdm9pZCBvZmZsaW5lX21lbV9zZWN0 aW9ucyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBlbmRfcGZuKTsKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IG1lbV9zZWN0aW9uICpfX3Bmbl90b19zZWN0aW9uKHVuc2lnbmVkIGxvbmcgcGZuKQp7 CiByZXR1cm4gX19ucl90b19zZWN0aW9uKHBmbl90b19zZWN0aW9uX25yKHBmbikpOwp9CgpleHRl cm4gdW5zaWduZWQgbG9uZyBfX2hpZ2hlc3RfcHJlc2VudF9zZWN0aW9uX25yOwoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN1YnNl Y3Rpb25fbWFwX2luZGV4KHVuc2lnbmVkIGxvbmcgcGZuKQp7CiByZXR1cm4gKHBmbiAmIH4oKH4o KDFVTCA8PCAoMjcgLSAxMikpLTEpKSkpIC8gKDFVTCA8PCAoMjEgLSAxMikpOwp9CgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHBm bl9zZWN0aW9uX3ZhbGlkKHN0cnVjdCBtZW1fc2VjdGlvbiAqbXMsIHVuc2lnbmVkIGxvbmcgcGZu KQp7CiBpbnQgaWR4ID0gc3Vic2VjdGlvbl9tYXBfaW5kZXgocGZuKTsKCiByZXR1cm4gdGVzdF9i aXQoaWR4LCBtcy0+dXNhZ2UtPnN1YnNlY3Rpb25fbWFwKTsKfQojIDEzNTggIi4vaW5jbHVkZS9s aW51eC9tbXpvbmUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHBmbl92YWxpZCh1bnNpZ25lZCBsb25nIHBmbikKewogc3RydWN0 IG1lbV9zZWN0aW9uICptczsKCiBpZiAocGZuX3RvX3NlY3Rpb25fbnIocGZuKSA+PSAoMVVMIDw8 ICgoMCA/IDUyIDogNDYpIC0gMjcpKSkKICByZXR1cm4gMDsKIG1zID0gX19ucl90b19zZWN0aW9u KHBmbl90b19zZWN0aW9uX25yKHBmbikpOwogaWYgKCF2YWxpZF9zZWN0aW9uKG1zKSkKICByZXR1 cm4gMDsKCgoKCiByZXR1cm4gZWFybHlfc2VjdGlvbihtcykgfHwgcGZuX3NlY3Rpb25fdmFsaWQo bXMsIHBmbik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgcGZuX3ByZXNlbnQodW5zaWduZWQgbG9uZyBwZm4pCnsKIGlmIChw Zm5fdG9fc2VjdGlvbl9ucihwZm4pID49ICgxVUwgPDwgKCgwID8gNTIgOiA0NikgLSAyNykpKQog IHJldHVybiAwOwogcmV0dXJuIHByZXNlbnRfc2VjdGlvbihfX25yX3RvX3NlY3Rpb24ocGZuX3Rv X3NlY3Rpb25fbnIocGZuKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25nIG5leHRfcHJlc2VudF9zZWN0aW9u X25yKHVuc2lnbmVkIGxvbmcgc2VjdGlvbl9ucikKewogd2hpbGUgKCsrc2VjdGlvbl9uciA8PSBf X2hpZ2hlc3RfcHJlc2VudF9zZWN0aW9uX25yKSB7CiAgaWYgKHByZXNlbnRfc2VjdGlvbl9ucihz ZWN0aW9uX25yKSkKICAgcmV0dXJuIHNlY3Rpb25fbnI7CiB9CgogcmV0dXJuIC0xOwp9CiMgMTQw OCAiLi9pbmNsdWRlL2xpbnV4L21tem9uZS5oIgp2b2lkIHNwYXJzZV9pbml0KHZvaWQpOwojIDE0 MjEgIi4vaW5jbHVkZS9saW51eC9tbXpvbmUuaCIKc3RydWN0IG1taW5pdF9wZm5uaWRfY2FjaGUg ewogdW5zaWduZWQgbG9uZyBsYXN0X3N0YXJ0OwogdW5zaWduZWQgbG9uZyBsYXN0X2VuZDsKIGlu dCBsYXN0X25pZDsKfTsKCgoKCgp2b2lkIG1lbW9yeV9wcmVzZW50KGludCBuaWQsIHVuc2lnbmVk IGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKIyAxNDY5ICIuL2luY2x1ZGUvbGludXgv bW16b25lLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgbWVtbWFwX3ZhbGlkX3dpdGhpbih1bnNpZ25lZCBsb25nIHBmbiwKICAg ICBzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHpvbmUgKnpvbmUpCnsKIHJldHVybiB0cnVlOwp9 CiMgNyAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIiAyCgoKIyAxICIuL2luY2x1ZGUvbGludXgvdG9w b2xvZ3kuaCIgMQojIDMwICIuL2luY2x1ZGUvbGludXgvdG9wb2xvZ3kuaCIKIyAxICIuL2luY2x1 ZGUvbGludXgvYXJjaF90b3BvbG9neS5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L2FyY2hfdG9w b2xvZ3kuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LmgiIDEKCgoKCgoKIyAxICIuL2lu Y2x1ZGUvbGludXgvc21wLmgiIDEKIyAxNSAiLi9pbmNsdWRlL2xpbnV4L3NtcC5oIgojIDEgIi4v aW5jbHVkZS9saW51eC9sbGlzdC5oIiAxCiMgNTQgIi4vaW5jbHVkZS9saW51eC9sbGlzdC5oIgpz dHJ1Y3QgbGxpc3RfaGVhZCB7CiBzdHJ1Y3QgbGxpc3Rfbm9kZSAqZmlyc3Q7Cn07CgpzdHJ1Y3Qg bGxpc3Rfbm9kZSB7CiBzdHJ1Y3QgbGxpc3Rfbm9kZSAqbmV4dDsKfTsKIyA2OSAiLi9pbmNsdWRl L2xpbnV4L2xsaXN0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgaW5pdF9sbGlzdF9oZWFkKHN0cnVjdCBsbGlzdF9oZWFkICps aXN0KQp7CiBsaXN0LT5maXJzdCA9ICgodm9pZCAqKTApOwp9CiMgMTg3ICIuL2luY2x1ZGUvbGlu dXgvbGxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBsbGlzdF9lbXB0eShjb25zdCBzdHJ1Y3QgbGxpc3RfaGVhZCAqaGVh ZCkKewogcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKGhlYWQtPmZpcnN0KSBfX3ZhbDsgY2hhciBf X2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKGhlYWQtPmZpcnN0KSwgX191 Ll9fYywgc2l6ZW9mKGhlYWQtPmZpcnN0KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNr KCYoaGVhZC0+Zmlyc3QpLCBfX3UuX19jLCBzaXplb2YoaGVhZC0+Zmlyc3QpKTsgZG8geyB9IHdo aWxlICgwKTsgX191Ll9fdmFsOyB9KSA9PSAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGxsaXN0X25v ZGUgKmxsaXN0X25leHQoc3RydWN0IGxsaXN0X25vZGUgKm5vZGUpCnsKIHJldHVybiBub2RlLT5u ZXh0Owp9CgpleHRlcm4gYm9vbCBsbGlzdF9hZGRfYmF0Y2goc3RydWN0IGxsaXN0X25vZGUgKm5l d19maXJzdCwKICAgICAgIHN0cnVjdCBsbGlzdF9ub2RlICpuZXdfbGFzdCwKICAgICAgIHN0cnVj dCBsbGlzdF9oZWFkICpoZWFkKTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgbGxpc3RfYWRkKHN0cnVjdCBsbGlzdF9u b2RlICpuZXcsIHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQp7CiByZXR1cm4gbGxpc3RfYWRkX2Jh dGNoKG5ldywgbmV3LCBoZWFkKTsKfQojIDIyMCAiLi9pbmNsdWRlL2xpbnV4L2xsaXN0LmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBsbGlzdF9ub2RlICpsbGlzdF9kZWxfYWxsKHN0cnVjdCBsbGlzdF9oZWFkICpoZWFkKQp7 CiByZXR1cm4gKHsgdHlwZW9mKCZoZWFkLT5maXJzdCkgX19haV9wdHIgPSAoJmhlYWQtPmZpcnN0 KTsga2FzYW5fY2hlY2tfd3JpdGUoX19haV9wdHIsIHNpemVvZigqX19haV9wdHIpKTsgKHsgX190 eXBlb2ZfXyAoKigoX19haV9wdHIpKSkgX19yZXQgPSAoKCgodm9pZCAqKTApKSk7IHN3aXRjaCAo c2l6ZW9mKCooKF9fYWlfcHRyKSkpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgiIiAieGNoZyIg ImIgJWIwLCAlMVxuIiA6ICIrcSIgKF9fcmV0KSwgIittIiAoKigoX19haV9wdHIpKSkgOiA6ICJt ZW1vcnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgiIiAieGNoZyIgIncg JXcwLCAlMVxuIiA6ICIrciIgKF9fcmV0KSwgIittIiAoKigoX19haV9wdHIpKSkgOiA6ICJtZW1v cnkiLCAiY2MiKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgiIiAieGNoZyIgImwgJTAs ICUxXG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIs ICJjYyIpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCIiICJ4Y2hnIiAicSAlcTAsICUx XG4iIDogIityIiAoX19yZXQpLCAiK20iICgqKChfX2FpX3B0cikpKSA6IDogIm1lbW9yeSIsICJj YyIpOyBicmVhazsgZGVmYXVsdDogX194Y2hnX3dyb25nX3NpemUoKTsgfSBfX3JldDsgfSk7IH0p Owp9CgpleHRlcm4gc3RydWN0IGxsaXN0X25vZGUgKmxsaXN0X2RlbF9maXJzdChzdHJ1Y3QgbGxp c3RfaGVhZCAqaGVhZCk7CgpzdHJ1Y3QgbGxpc3Rfbm9kZSAqbGxpc3RfcmV2ZXJzZV9vcmRlcihz dHJ1Y3QgbGxpc3Rfbm9kZSAqaGVhZCk7CiMgMTYgIi4vaW5jbHVkZS9saW51eC9zbXAuaCIgMgoK dHlwZWRlZiB2b2lkICgqc21wX2NhbGxfZnVuY190KSh2b2lkICppbmZvKTsKdHlwZWRlZiBib29s ICgqc21wX2NvbmRfZnVuY190KShpbnQgY3B1LCB2b2lkICppbmZvKTsKc3RydWN0IF9fY2FsbF9z aW5nbGVfZGF0YSB7CiBzdHJ1Y3QgbGxpc3Rfbm9kZSBsbGlzdDsKIHNtcF9jYWxsX2Z1bmNfdCBm dW5jOwogdm9pZCAqaW5mbzsKIHVuc2lnbmVkIGludCBmbGFnczsKfTsKCgp0eXBlZGVmIHN0cnVj dCBfX2NhbGxfc2luZ2xlX2RhdGEgY2FsbF9zaW5nbGVfZGF0YV90CiBfX2F0dHJpYnV0ZV9fKChf X2FsaWduZWRfXyhzaXplb2Yoc3RydWN0IF9fY2FsbF9zaW5nbGVfZGF0YSkpKSk7CgoKZXh0ZXJu IHVuc2lnbmVkIGludCB0b3RhbF9jcHVzOwoKaW50IHNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShp bnQgY3B1aWQsIHNtcF9jYWxsX2Z1bmNfdCBmdW5jLCB2b2lkICppbmZvLAogICAgICAgIGludCB3 YWl0KTsKCgoKCnZvaWQgb25fZWFjaF9jcHUoc21wX2NhbGxfZnVuY190IGZ1bmMsIHZvaWQgKmlu Zm8sIGludCB3YWl0KTsKCgoKCgp2b2lkIG9uX2VhY2hfY3B1X21hc2soY29uc3Qgc3RydWN0IGNw dW1hc2sgKm1hc2ssIHNtcF9jYWxsX2Z1bmNfdCBmdW5jLAogIHZvaWQgKmluZm8sIGJvb2wgd2Fp dCk7CgoKCgoKCnZvaWQgb25fZWFjaF9jcHVfY29uZChzbXBfY29uZF9mdW5jX3QgY29uZF9mdW5j LCBzbXBfY2FsbF9mdW5jX3QgZnVuYywKICAgICAgICB2b2lkICppbmZvLCBib29sIHdhaXQpOwoK dm9pZCBvbl9lYWNoX2NwdV9jb25kX21hc2soc21wX2NvbmRfZnVuY190IGNvbmRfZnVuYywgc21w X2NhbGxfZnVuY190IGZ1bmMsCiAgICAgIHZvaWQgKmluZm8sIGJvb2wgd2FpdCwgY29uc3Qgc3Ry dWN0IGNwdW1hc2sgKm1hc2spOwoKaW50IHNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZV9hc3luYyhp bnQgY3B1LCBjYWxsX3NpbmdsZV9kYXRhX3QgKmNzZCk7CgoKCgoKCgojIDEgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vc21wLmgiIDEKIyAxMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaCIK IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlYy5oIiAxCgoKCgoKIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIgMQojIDIyICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL21wc3BlY19kZWYuaCIKc3RydWN0IG1wZl9pbnRlbCB7CiBjaGFyIHNpZ25hdHVyZVs0XTsK IHVuc2lnbmVkIGludCBwaHlzcHRyOwogdW5zaWduZWQgY2hhciBsZW5ndGg7CiB1bnNpZ25lZCBj aGFyIHNwZWNpZmljYXRpb247CiB1bnNpZ25lZCBjaGFyIGNoZWNrc3VtOwogdW5zaWduZWQgY2hh ciBmZWF0dXJlMTsKIHVuc2lnbmVkIGNoYXIgZmVhdHVyZTI7CiB1bnNpZ25lZCBjaGFyIGZlYXR1 cmUzOwogdW5zaWduZWQgY2hhciBmZWF0dXJlNDsKIHVuc2lnbmVkIGNoYXIgZmVhdHVyZTU7Cn07 CgoKCnN0cnVjdCBtcGNfdGFibGUgewogY2hhciBzaWduYXR1cmVbNF07CiB1bnNpZ25lZCBzaG9y dCBsZW5ndGg7CiBjaGFyIHNwZWM7CiBjaGFyIGNoZWNrc3VtOwogY2hhciBvZW1bOF07CiBjaGFy IHByb2R1Y3RpZFsxMl07CiB1bnNpZ25lZCBpbnQgb2VtcHRyOwogdW5zaWduZWQgc2hvcnQgb2Vt c2l6ZTsKIHVuc2lnbmVkIHNob3J0IG9lbWNvdW50OwogdW5zaWduZWQgaW50IGxhcGljOwogdW5z aWduZWQgaW50IHJlc2VydmVkOwp9OwojIDY4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3Bl Y19kZWYuaCIKc3RydWN0IG1wY19jcHUgewogdW5zaWduZWQgY2hhciB0eXBlOwogdW5zaWduZWQg Y2hhciBhcGljaWQ7CiB1bnNpZ25lZCBjaGFyIGFwaWN2ZXI7CiB1bnNpZ25lZCBjaGFyIGNwdWZs YWc7CiB1bnNpZ25lZCBpbnQgY3B1ZmVhdHVyZTsKIHVuc2lnbmVkIGludCBmZWF0dXJlZmxhZzsK IHVuc2lnbmVkIGludCByZXNlcnZlZFsyXTsKfTsKCnN0cnVjdCBtcGNfYnVzIHsKIHVuc2lnbmVk IGNoYXIgdHlwZTsKIHVuc2lnbmVkIGNoYXIgYnVzaWQ7CiB1bnNpZ25lZCBjaGFyIGJ1c3R5cGVb Nl07Cn07CiMgMTA2ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIKc3RydWN0 IG1wY19pb2FwaWMgewogdW5zaWduZWQgY2hhciB0eXBlOwogdW5zaWduZWQgY2hhciBhcGljaWQ7 CiB1bnNpZ25lZCBjaGFyIGFwaWN2ZXI7CiB1bnNpZ25lZCBjaGFyIGZsYWdzOwogdW5zaWduZWQg aW50IGFwaWNhZGRyOwp9OwoKc3RydWN0IG1wY19pbnRzcmMgewogdW5zaWduZWQgY2hhciB0eXBl OwogdW5zaWduZWQgY2hhciBpcnF0eXBlOwogdW5zaWduZWQgc2hvcnQgaXJxZmxhZzsKIHVuc2ln bmVkIGNoYXIgc3JjYnVzOwogdW5zaWduZWQgY2hhciBzcmNidXNpcnE7CiB1bnNpZ25lZCBjaGFy IGRzdGFwaWM7CiB1bnNpZ25lZCBjaGFyIGRzdGlycTsKfTsKCmVudW0gbXBfaXJxX3NvdXJjZV90 eXBlcyB7CiBtcF9JTlQgPSAwLAogbXBfTk1JID0gMSwKIG1wX1NNSSA9IDIsCiBtcF9FeHRJTlQg PSAzCn07CiMgMTQ1ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlY19kZWYuaCIKc3RydWN0 IG1wY19saW50c3JjIHsKIHVuc2lnbmVkIGNoYXIgdHlwZTsKIHVuc2lnbmVkIGNoYXIgaXJxdHlw ZTsKIHVuc2lnbmVkIHNob3J0IGlycWZsYWc7CiB1bnNpZ25lZCBjaGFyIHNyY2J1c2lkOwogdW5z aWduZWQgY2hhciBzcmNidXNpcnE7CiB1bnNpZ25lZCBjaGFyIGRlc3RhcGljOwogdW5zaWduZWQg Y2hhciBkZXN0YXBpY2xpbnQ7Cn07CgoKCnN0cnVjdCBtcGNfb2VtdGFibGUgewogY2hhciBzaWdu YXR1cmVbNF07CiB1bnNpZ25lZCBzaG9ydCBsZW5ndGg7CiBjaGFyIHJldjsKIGNoYXIgY2hlY2tz dW07CiBjaGFyIG1wY1s4XTsKfTsKIyAxNzcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVj X2RlZi5oIgplbnVtIG1wX2J1c3R5cGUgewogTVBfQlVTX0lTQSA9IDEsCiBNUF9CVVNfRUlTQSwK IE1QX0JVU19QQ0ksCn07CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tcHNwZWMuaCIgMgoj IDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIgMQoKCgoKCgpzdHJ1Y3QgbXBj X2J1czsKc3RydWN0IG1wY19jcHU7CnN0cnVjdCBtcGNfdGFibGU7CnN0cnVjdCBjcHVpbmZvX3g4 NjsKIyAyMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpzdHJ1Y3QgeDg2X2lu aXRfbXBwYXJzZSB7CiB2b2lkICgqbXBjX3JlY29yZCkodW5zaWduZWQgaW50IG1vZGUpOwogdm9p ZCAoKnNldHVwX2lvYXBpY19pZHMpKHZvaWQpOwogaW50ICgqbXBjX2FwaWNfaWQpKHN0cnVjdCBt cGNfY3B1ICptKTsKIHZvaWQgKCpzbXBfcmVhZF9tcGNfb2VtKShzdHJ1Y3QgbXBjX3RhYmxlICpt cGMpOwogdm9pZCAoKm1wY19vZW1fcGNpX2J1cykoc3RydWN0IG1wY19idXMgKm0pOwogdm9pZCAo Km1wY19vZW1fYnVzX2luZm8pKHN0cnVjdCBtcGNfYnVzICptLCBjaGFyICpuYW1lKTsKIHZvaWQg KCpmaW5kX3NtcF9jb25maWcpKHZvaWQpOwogdm9pZCAoKmdldF9zbXBfY29uZmlnKSh1bnNpZ25l ZCBpbnQgZWFybHkpOwp9OwojIDQyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0Lmgi CnN0cnVjdCB4ODZfaW5pdF9yZXNvdXJjZXMgewogdm9pZCAoKnByb2JlX3JvbXMpKHZvaWQpOwog dm9pZCAoKnJlc2VydmVfcmVzb3VyY2VzKSh2b2lkKTsKIGNoYXIgKigqbWVtb3J5X3NldHVwKSh2 b2lkKTsKfTsKIyA1NyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpzdHJ1Y3Qg eDg2X2luaXRfaXJxcyB7CiB2b2lkICgqcHJlX3ZlY3Rvcl9pbml0KSh2b2lkKTsKIHZvaWQgKCpp bnRyX2luaXQpKHZvaWQpOwogdm9pZCAoKnRyYXBfaW5pdCkodm9pZCk7CiB2b2lkICgqaW50cl9t b2RlX3NlbGVjdCkodm9pZCk7CiB2b2lkICgqaW50cl9tb2RlX2luaXQpKHZvaWQpOwp9OwoKCgoK CgpzdHJ1Y3QgeDg2X2luaXRfb2VtIHsKIHZvaWQgKCphcmNoX3NldHVwKSh2b2lkKTsKIHZvaWQg KCpiYW5uZXIpKHZvaWQpOwp9OwojIDgyICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0 LmgiCnN0cnVjdCB4ODZfaW5pdF9wYWdpbmcgewogdm9pZCAoKnBhZ2V0YWJsZV9pbml0KSh2b2lk KTsKfTsKIyA5MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpzdHJ1Y3QgeDg2 X2luaXRfdGltZXJzIHsKIHZvaWQgKCpzZXR1cF9wZXJjcHVfY2xvY2tldikodm9pZCk7CiB2b2lk ICgqdGltZXJfaW5pdCkodm9pZCk7CiB2b2lkICgqd2FsbGNsb2NrX2luaXQpKHZvaWQpOwp9OwoK CgoKCnN0cnVjdCB4ODZfaW5pdF9pb21tdSB7CiBpbnQgKCppb21tdV9pbml0KSh2b2lkKTsKfTsK IyAxMTQgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIKc3RydWN0IHg4Nl9pbml0 X3BjaSB7CiBpbnQgKCphcmNoX2luaXQpKHZvaWQpOwogaW50ICgqaW5pdCkodm9pZCk7CiB2b2lk ICgqaW5pdF9pcnEpKHZvaWQpOwogdm9pZCAoKmZpeHVwX2lycXMpKHZvaWQpOwp9OwojIDEyOSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpzdHJ1Y3QgeDg2X2h5cGVyX2luaXQg ewogdm9pZCAoKmluaXRfcGxhdGZvcm0pKHZvaWQpOwogdm9pZCAoKmd1ZXN0X2xhdGVfaW5pdCko dm9pZCk7CiBib29sICgqeDJhcGljX2F2YWlsYWJsZSkodm9pZCk7CiB2b2lkICgqaW5pdF9tZW1f bWFwcGluZykodm9pZCk7CiB2b2lkICgqaW5pdF9hZnRlcl9ib290bWVtKSh2b2lkKTsKfTsKCgoK CgoKCnN0cnVjdCB4ODZfaW5pdF9hY3BpIHsKIHZvaWQgKCpzZXRfcm9vdF9wb2ludGVyKSh1NjQg YWRkcik7CiB1NjQgKCpnZXRfcm9vdF9wb2ludGVyKSh2b2lkKTsKIHZvaWQgKCpyZWR1Y2VkX2h3 X2Vhcmx5X2luaXQpKHZvaWQpOwp9OwoKCgoKCnN0cnVjdCB4ODZfaW5pdF9vcHMgewogc3RydWN0 IHg4Nl9pbml0X3Jlc291cmNlcyByZXNvdXJjZXM7CiBzdHJ1Y3QgeDg2X2luaXRfbXBwYXJzZSBt cHBhcnNlOwogc3RydWN0IHg4Nl9pbml0X2lycXMgaXJxczsKIHN0cnVjdCB4ODZfaW5pdF9vZW0g b2VtOwogc3RydWN0IHg4Nl9pbml0X3BhZ2luZyBwYWdpbmc7CiBzdHJ1Y3QgeDg2X2luaXRfdGlt ZXJzIHRpbWVyczsKIHN0cnVjdCB4ODZfaW5pdF9pb21tdSBpb21tdTsKIHN0cnVjdCB4ODZfaW5p dF9wY2kgcGNpOwogc3RydWN0IHg4Nl9oeXBlcl9pbml0IGh5cGVyOwogc3RydWN0IHg4Nl9pbml0 X2FjcGkgYWNwaTsKfTsKCgoKCgoKc3RydWN0IHg4Nl9jcHVpbml0X29wcyB7CiB2b2lkICgqc2V0 dXBfcGVyY3B1X2Nsb2NrZXYpKHZvaWQpOwogdm9pZCAoKmVhcmx5X3BlcmNwdV9jbG9ja19pbml0 KSh2b2lkKTsKIHZvaWQgKCpmaXh1cF9jcHVfaWQpKHN0cnVjdCBjcHVpbmZvX3g4NiAqYywgaW50 IG5vZGUpOwp9OwoKc3RydWN0IHRpbWVzcGVjNjQ7CiMgMTk4ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL3g4Nl9pbml0LmgiCnN0cnVjdCB4ODZfbGVnYWN5X2RldmljZXMgewogaW50IHBucGJpb3M7 Cn07CiMgMjExICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0LmgiCmVudW0geDg2X2xl Z2FjeV9pODA0Ml9zdGF0ZSB7CiBYODZfTEVHQUNZX0k4MDQyX1BMQVRGT1JNX0FCU0VOVCwKIFg4 Nl9MRUdBQ1lfSTgwNDJfRklSTVdBUkVfQUJTRU5ULAogWDg2X0xFR0FDWV9JODA0Ml9FWFBFQ1RF RF9QUkVTRU5ULAp9OwojIDIyOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS94ODZfaW5pdC5oIgpz dHJ1Y3QgeDg2X2xlZ2FjeV9mZWF0dXJlcyB7CiBlbnVtIHg4Nl9sZWdhY3lfaTgwNDJfc3RhdGUg aTgwNDI7CiBpbnQgcnRjOwogaW50IHdhcm1fcmVzZXQ7CiBpbnQgbm9fdmdhOwogaW50IHJlc2Vy dmVfYmlvc19yZWdpb25zOwogc3RydWN0IHg4Nl9sZWdhY3lfZGV2aWNlcyBkZXZpY2VzOwp9OwoK CgoKCgpzdHJ1Y3QgeDg2X2h5cGVyX3J1bnRpbWUgewogdm9pZCAoKnBpbl92Y3B1KShpbnQgY3B1 KTsKfTsKIyAyNjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCIKc3RydWN0IHg4 Nl9wbGF0Zm9ybV9vcHMgewogdW5zaWduZWQgbG9uZyAoKmNhbGlicmF0ZV9jcHUpKHZvaWQpOwog dW5zaWduZWQgbG9uZyAoKmNhbGlicmF0ZV90c2MpKHZvaWQpOwogdm9pZCAoKmdldF93YWxsY2xv Y2spKHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CiBpbnQgKCpzZXRfd2FsbGNsb2NrKShjb25zdCBz dHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwogdm9pZCAoKmlvbW11X3NodXRkb3duKSh2b2lkKTsKIGJv b2wgKCppc191bnRyYWNrZWRfcGF0X3JhbmdlKSh1NjQgc3RhcnQsIHU2NCBlbmQpOwogdm9pZCAo Km5taV9pbml0KSh2b2lkKTsKIHVuc2lnbmVkIGNoYXIgKCpnZXRfbm1pX3JlYXNvbikodm9pZCk7 CiB2b2lkICgqc2F2ZV9zY2hlZF9jbG9ja19zdGF0ZSkodm9pZCk7CiB2b2lkICgqcmVzdG9yZV9z Y2hlZF9jbG9ja19zdGF0ZSkodm9pZCk7CiB2b2lkICgqYXBpY19wb3N0X2luaXQpKHZvaWQpOwog c3RydWN0IHg4Nl9sZWdhY3lfZmVhdHVyZXMgbGVnYWN5Owogdm9pZCAoKnNldF9sZWdhY3lfZmVh dHVyZXMpKHZvaWQpOwogc3RydWN0IHg4Nl9oeXBlcl9ydW50aW1lIGh5cGVyOwp9OwoKc3RydWN0 IHBjaV9kZXY7CgpzdHJ1Y3QgeDg2X21zaV9vcHMgewogaW50ICgqc2V0dXBfbXNpX2lycXMpKHN0 cnVjdCBwY2lfZGV2ICpkZXYsIGludCBudmVjLCBpbnQgdHlwZSk7CiB2b2lkICgqdGVhcmRvd25f bXNpX2lycSkodW5zaWduZWQgaW50IGlycSk7CiB2b2lkICgqdGVhcmRvd25fbXNpX2lycXMpKHN0 cnVjdCBwY2lfZGV2ICpkZXYpOwogdm9pZCAoKnJlc3RvcmVfbXNpX2lycXMpKHN0cnVjdCBwY2lf ZGV2ICpkZXYpOwp9OwoKc3RydWN0IHg4Nl9hcGljX29wcyB7CiB1bnNpZ25lZCBpbnQgKCppb19h cGljX3JlYWQpICh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZyk7CiB2b2lkICgq cmVzdG9yZSkodm9pZCk7Cn07CgpleHRlcm4gc3RydWN0IHg4Nl9pbml0X29wcyB4ODZfaW5pdDsK ZXh0ZXJuIHN0cnVjdCB4ODZfY3B1aW5pdF9vcHMgeDg2X2NwdWluaXQ7CmV4dGVybiBzdHJ1Y3Qg eDg2X3BsYXRmb3JtX29wcyB4ODZfcGxhdGZvcm07CmV4dGVybiBzdHJ1Y3QgeDg2X21zaV9vcHMg eDg2X21zaTsKZXh0ZXJuIHN0cnVjdCB4ODZfYXBpY19vcHMgeDg2X2FwaWNfb3BzOwoKZXh0ZXJu IHZvaWQgeDg2X2Vhcmx5X2luaXRfcGxhdGZvcm1fcXVpcmtzKHZvaWQpOwpleHRlcm4gdm9pZCB4 ODZfaW5pdF9ub29wKHZvaWQpOwpleHRlcm4gdm9pZCB4ODZfaW5pdF91aW50X25vb3AodW5zaWdu ZWQgaW50IHVudXNlZCk7CmV4dGVybiBib29sIGJvb2xfeDg2X2luaXRfbm9vcCh2b2lkKTsKZXh0 ZXJuIHZvaWQgeDg2X29wX2ludF9ub29wKGludCBjcHUpOwpleHRlcm4gYm9vbCB4ODZfcG5wYmlv c19kaXNhYmxlZCh2b2lkKTsKIyA4ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21wc3BlYy5oIiAy CiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljZGVmLmgiIDEKIyAxNzkgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vYXBpY2RlZi5oIgpzdHJ1Y3QgbG9jYWxfYXBpYyB7CgogICAgICAgIHN0 cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDE7CgogICAg ICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMDI7 CgogICAgICAgIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMSA6IDI0LAogICBw aHlzX2FwaWNfaWQgOiA0LAogICBfX3Jlc2VydmVkXzIgOiA0OwogIHVuc2lnbmVkIGludCBfX3Jl c2VydmVkWzNdOwogfSBpZDsKCiAgICAgICAgY29uc3QKIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50 IHZlcnNpb24gOiA4LAogICBfX3Jlc2VydmVkXzEgOiA4LAogICBtYXhfbHZ0IDogOCwKICAgX19y ZXNlcnZlZF8yIDogODsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZFszXTsKIH0gdmVyc2lvbjsK CiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZl ZF8wMzsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19y ZXNlcnZlZF8wNDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07 IH0gX19yZXNlcnZlZF8wNTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRbNF07IH0gX19yZXNlcnZlZF8wNjsKCiAgICAgICAgc3RydWN0IHsKICB1bnNpZ25lZCBpbnQg cHJpb3JpdHkgOiA4LAogICBfX3Jlc2VydmVkXzEgOiAyNDsKICB1bnNpZ25lZCBpbnQgX19yZXNl cnZlZF8yWzNdOwogfSB0cHI7CgogICAgICAgIGNvbnN0CiBzdHJ1Y3QgewogIHVuc2lnbmVkIGlu dCBwcmlvcml0eSA6IDgsCiAgIF9fcmVzZXJ2ZWRfMSA6IDI0OwogIHVuc2lnbmVkIGludCBfX3Jl c2VydmVkXzJbM107CiB9IGFwcjsKCiAgICAgICAgY29uc3QKIHN0cnVjdCB7CiAgdW5zaWduZWQg aW50IHByaW9yaXR5IDogOCwKICAgX19yZXNlcnZlZF8xIDogMjQ7CiAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfMlszXTsKIH0gcHByOwoKICAgICAgICBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCBl b2k7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiB9IGVvaTsKCiAgICAgICAgc3RydWN0 IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wNzsKCiAgICAgICAg c3RydWN0IHsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8xIDogMjQsCiAgIGxvZ2ljYWxfZGVz dCA6IDg7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKIH0gbGRyOwoKICAgICAgICBz dHJ1Y3QgewogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzEgOiAyOCwKICAgbW9kZWwgOiA0Owog IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzJbM107CiB9IGRmcjsKCiAgICAgICAgc3RydWN0IHsK ICB1bnNpZ25lZCBpbnQgc3B1cmlvdXNfdmVjdG9yIDogOCwKICAgYXBpY19lbmFibGVkIDogMSwK ICAgZm9jdXNfY3B1IDogMSwKICAgX19yZXNlcnZlZF8yIDogMjI7CiAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfM1szXTsKIH0gc3ZyOwoKICAgICAgICBzdHJ1Y3QgewogICAgICAgICB1bnNpZ25l ZCBpbnQgYml0ZmllbGQ7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbM107CiB9IGlzciBbOF07 CgogICAgICAgIHN0cnVjdCB7CiAgICAgICAgIHVuc2lnbmVkIGludCBiaXRmaWVsZDsKICB1bnNp Z25lZCBpbnQgX19yZXNlcnZlZFszXTsKIH0gdG1yIFs4XTsKCiAgICAgICAgc3RydWN0IHsKICAg ICAgICAgdW5zaWduZWQgaW50IGJpdGZpZWxkOwogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzNd OwogfSBpcnIgWzhdOwoKICAgICAgICB1bmlvbiB7CiAgc3RydWN0IHsKICAgdW5zaWduZWQgaW50 IHNlbmRfY3NfZXJyb3IgOiAxLAogICAgcmVjZWl2ZV9jc19lcnJvciA6IDEsCiAgICBzZW5kX2Fj Y2VwdF9lcnJvciA6IDEsCiAgICByZWNlaXZlX2FjY2VwdF9lcnJvciA6IDEsCiAgICBfX3Jlc2Vy dmVkXzEgOiAxLAogICAgc2VuZF9pbGxlZ2FsX3ZlY3RvciA6IDEsCiAgICByZWNlaXZlX2lsbGVn YWxfdmVjdG9yIDogMSwKICAgIGlsbGVnYWxfcmVnaXN0ZXJfYWRkcmVzcyA6IDEsCiAgICBfX3Jl c2VydmVkXzIgOiAyNDsKICAgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRfM1szXTsKICB9IGVycm9y X2JpdHM7CiAgc3RydWN0IHsKICAgdW5zaWduZWQgaW50IGVycm9yczsKICAgdW5zaWduZWQgaW50 IF9fcmVzZXJ2ZWRfM1szXTsKICB9IGFsbF9lcnJvcnM7CiB9IGVzcjsKCiAgICAgICAgc3RydWN0 IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wODsKCiAgICAgICAg c3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8wOTsKCiAg ICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8x MDsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0gX19yZXNl cnZlZF8xMTsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRbNF07IH0g X19yZXNlcnZlZF8xMjsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVzZXJ2ZWRb NF07IH0gX19yZXNlcnZlZF8xMzsKCiAgICAgICAgc3RydWN0IHsgdW5zaWduZWQgaW50IF9fcmVz ZXJ2ZWRbNF07IH0gX19yZXNlcnZlZF8xNDsKCiAgICAgICAgc3RydWN0IHsKICB1bnNpZ25lZCBp bnQgdmVjdG9yIDogOCwKICAgZGVsaXZlcnlfbW9kZSA6IDMsCiAgIGRlc3RpbmF0aW9uX21vZGUg OiAxLAogICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogICBfX3Jlc2VydmVkXzEgOiAxLAogICBsZXZl bCA6IDEsCiAgIHRyaWdnZXIgOiAxLAogICBfX3Jlc2VydmVkXzIgOiAyLAogICBzaG9ydGhhbmQg OiAyLAogICBfX3Jlc2VydmVkXzMgOiAxMjsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNd OwogfSBpY3IxOwoKICAgICAgICBzdHJ1Y3QgewogIHVuaW9uIHsKICAgdW5zaWduZWQgaW50IF9f cmVzZXJ2ZWRfMSA6IDI0LAogICAgcGh5c19kZXN0IDogNCwKICAgIF9fcmVzZXJ2ZWRfMiA6IDQ7 CiAgIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzMgOiAyNCwKICAgIGxvZ2ljYWxfZGVzdCA6IDg7 CiAgfSBkZXN0OwogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiB9IGljcjI7CgogICAg ICAgIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgIF9fcmVzZXJ2ZWRfMSA6 IDQsCiAgIGRlbGl2ZXJ5X3N0YXR1cyA6IDEsCiAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgIG1hc2sg OiAxLAogICB0aW1lcl9tb2RlIDogMSwKICAgX19yZXNlcnZlZF8zIDogMTQ7CiAgdW5zaWduZWQg aW50IF9fcmVzZXJ2ZWRfNFszXTsKIH0gbHZ0X3RpbWVyOwoKICAgICAgICBzdHJ1Y3QgewogIHVu c2lnbmVkIGludCB2ZWN0b3IgOiA4LAogICBkZWxpdmVyeV9tb2RlIDogMywKICAgX19yZXNlcnZl ZF8xIDogMSwKICAgZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgX19yZXNlcnZlZF8yIDogMywKICAg bWFzayA6IDEsCiAgIF9fcmVzZXJ2ZWRfMyA6IDE1OwogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVk XzRbM107CiB9IGx2dF90aGVybWFsOwoKICAgICAgICBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCB2 ZWN0b3IgOiA4LAogICBkZWxpdmVyeV9tb2RlIDogMywKICAgX19yZXNlcnZlZF8xIDogMSwKICAg ZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgX19yZXNlcnZlZF8yIDogMywKICAgbWFzayA6IDEsCiAg IF9fcmVzZXJ2ZWRfMyA6IDE1OwogIHVuc2lnbmVkIGludCBfX3Jlc2VydmVkXzRbM107CiB9IGx2 dF9wYzsKCiAgICAgICAgc3RydWN0IHsKICB1bnNpZ25lZCBpbnQgdmVjdG9yIDogOCwKICAgZGVs aXZlcnlfbW9kZSA6IDMsCiAgIF9fcmVzZXJ2ZWRfMSA6IDEsCiAgIGRlbGl2ZXJ5X3N0YXR1cyA6 IDEsCiAgIHBvbGFyaXR5IDogMSwKICAgcmVtb3RlX2lyciA6IDEsCiAgIHRyaWdnZXIgOiAxLAog ICBtYXNrIDogMSwKICAgX19yZXNlcnZlZF8yIDogMTU7CiAgdW5zaWduZWQgaW50IF9fcmVzZXJ2 ZWRfM1szXTsKIH0gbHZ0X2xpbnQwOwoKICAgICAgICBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCB2 ZWN0b3IgOiA4LAogICBkZWxpdmVyeV9tb2RlIDogMywKICAgX19yZXNlcnZlZF8xIDogMSwKICAg ZGVsaXZlcnlfc3RhdHVzIDogMSwKICAgcG9sYXJpdHkgOiAxLAogICByZW1vdGVfaXJyIDogMSwK ICAgdHJpZ2dlciA6IDEsCiAgIG1hc2sgOiAxLAogICBfX3Jlc2VydmVkXzIgOiAxNTsKICB1bnNp Z25lZCBpbnQgX19yZXNlcnZlZF8zWzNdOwogfSBsdnRfbGludDE7CgogICAgICAgIHN0cnVjdCB7 CiAgdW5zaWduZWQgaW50IHZlY3RvciA6IDgsCiAgIF9fcmVzZXJ2ZWRfMSA6IDQsCiAgIGRlbGl2 ZXJ5X3N0YXR1cyA6IDEsCiAgIF9fcmVzZXJ2ZWRfMiA6IDMsCiAgIG1hc2sgOiAxLAogICBfX3Jl c2VydmVkXzMgOiAxNTsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF80WzNdOwogfSBsdnRfZXJy b3I7CgogICAgICAgIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IGluaXRpYWxfY291bnQ7CiAgdW5z aWduZWQgaW50IF9fcmVzZXJ2ZWRfMlszXTsKIH0gdGltZXJfaWNyOwoKICAgICAgICBjb25zdAog c3RydWN0IHsKICB1bnNpZ25lZCBpbnQgY3Vycl9jb3VudDsKICB1bnNpZ25lZCBpbnQgX19yZXNl cnZlZF8yWzNdOwogfSB0aW1lcl9jY3I7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVkIGludCBf X3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTY7CgogICAgICAgIHN0cnVjdCB7IHVuc2lnbmVk IGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTc7CgogICAgICAgIHN0cnVjdCB7IHVu c2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTg7CgogICAgICAgIHN0cnVj dCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMTk7CgogICAgICAg IHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IGRpdmlzb3IgOiA0LAogICBfX3Jlc2VydmVkXzEgOiAy ODsKICB1bnNpZ25lZCBpbnQgX19yZXNlcnZlZF8yWzNdOwogfSB0aW1lcl9kY3I7CgogICAgICAg IHN0cnVjdCB7IHVuc2lnbmVkIGludCBfX3Jlc2VydmVkWzRdOyB9IF9fcmVzZXJ2ZWRfMjA7Cgp9 IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIyA0MzUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v YXBpY2RlZi5oIgplbnVtIGlvYXBpY19pcnFfZGVzdGluYXRpb25fdHlwZXMgewogZGVzdF9GaXhl ZCA9IDAsCiBkZXN0X0xvd2VzdFByaW8gPSAxLAogZGVzdF9TTUkgPSAyLAogZGVzdF9fcmVzZXJ2 ZWRfMSA9IDMsCiBkZXN0X05NSSA9IDQsCiBkZXN0X0lOSVQgPSA1LAogZGVzdF9fcmVzZXJ2ZWRf MiA9IDYsCiBkZXN0X0V4dElOVCA9IDcKfTsKIyA5ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL21w c3BlYy5oIiAyCgpleHRlcm4gaW50IHBpY19tb2RlOwojIDQwICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL21wc3BlYy5oIgpleHRlcm4gdW5zaWduZWQgbG9uZyBtcF9idXNfbm90X3BjaVsoKCgyNTYp ICsgKChzaXplb2YobG9uZykgKiA4KSkgLSAxKSAvICgoc2l6ZW9mKGxvbmcpICogOCkpKV07Cgpl eHRlcm4gdW5zaWduZWQgaW50IGJvb3RfY3B1X3BoeXNpY2FsX2FwaWNpZDsKZXh0ZXJuIHU4IGJv b3RfY3B1X2FwaWNfdmVyc2lvbjsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbXBfbGFwaWNfYWRkcjsK CgpleHRlcm4gaW50IHNtcF9mb3VuZF9jb25maWc7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGdldF9zbXBfY29uZmlnKHZv aWQpCnsKIHg4Nl9pbml0Lm1wcGFyc2UuZ2V0X3NtcF9jb25maWcoMCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZWFybHlf Z2V0X3NtcF9jb25maWcodm9pZCkKewogeDg2X2luaXQubXBwYXJzZS5nZXRfc21wX2NvbmZpZygx KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBmaW5kX3NtcF9jb25maWcodm9pZCkKewogeDg2X2luaXQubXBwYXJzZS5maW5k X3NtcF9jb25maWcoKTsKfQoKCmV4dGVybiB2b2lkIGU4MjBfX21lbWJsb2NrX2FsbG9jX3Jlc2Vy dmVkX21wY19uZXcodm9pZCk7CmV4dGVybiBpbnQgZW5hYmxlX3VwZGF0ZV9tcHRhYmxlOwpleHRl cm4gaW50IGRlZmF1bHRfbXBjX2FwaWNfaWQoc3RydWN0IG1wY19jcHUgKm0pOwpleHRlcm4gdm9p ZCBkZWZhdWx0X3NtcF9yZWFkX21wY19vZW0oc3RydWN0IG1wY190YWJsZSAqbXBjKTsKCmV4dGVy biB2b2lkIGRlZmF1bHRfbXBjX29lbV9idXNfaW5mbyhzdHJ1Y3QgbXBjX2J1cyAqbSwgY2hhciAq c3RyKTsKCgoKZXh0ZXJuIHZvaWQgZGVmYXVsdF9maW5kX3NtcF9jb25maWcodm9pZCk7CmV4dGVy biB2b2lkIGRlZmF1bHRfZ2V0X3NtcF9jb25maWcodW5zaWduZWQgaW50IGVhcmx5KTsKIyA4OSAi Li9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9tcHNwZWMuaCIKaW50IGdlbmVyaWNfcHJvY2Vzc29yX2lu Zm8oaW50IGFwaWNpZCwgaW50IHZlcnNpb24pOwoKCgpzdHJ1Y3QgcGh5c2lkX21hc2sgewogdW5z aWduZWQgbG9uZyBtYXNrWygoKDMyNzY4KSArICgoc2l6ZW9mKGxvbmcpICogOCkpIC0gMSkgLyAo KHNpemVvZihsb25nKSAqIDgpKSldOwp9OwoKdHlwZWRlZiBzdHJ1Y3QgcGh5c2lkX21hc2sgcGh5 c2lkX21hc2tfdDsKIyAxMzIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vbXBzcGVjLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcgcGh5c2lkc19jb2VyY2UocGh5c2lkX21hc2tfdCAqbWFwKQp7CiByZXR1cm4gbWFw LT5tYXNrWzBdOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHBoeXNpZHNfcHJvbW90ZSh1bnNpZ25lZCBsb25nIHBoeXNpZHMs IHBoeXNpZF9tYXNrX3QgKm1hcCkKewogYml0bWFwX3plcm8oKCptYXApLm1hc2ssIDMyNzY4KTsK IG1hcC0+bWFza1swXSA9IHBoeXNpZHM7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGh5c2lkX3NldF9tYXNrX29mX3BoeXNp ZChpbnQgcGh5c2lkLCBwaHlzaWRfbWFza190ICptYXApCnsKIGJpdG1hcF96ZXJvKCgqbWFwKS5t YXNrLCAzMjc2OCk7CiBzZXRfYml0KHBoeXNpZCwgKCptYXApLm1hc2spOwp9CgoKCgpleHRlcm4g cGh5c2lkX21hc2tfdCBwaHlzX2NwdV9wcmVzZW50X21hcDsKIyAxMyAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9zbXAuaCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpYy5oIiAxCiMg MTEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBpYy5oIgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vZml4bWFwLmgiIDEKIyAyOSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIK IyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIgMQojIDkgIi4vYXJjaC94ODYvaW5j bHVkZS9hc20vYWNwaS5oIgojIDEgIi4vaW5jbHVkZS9hY3BpL3BkY19pbnRlbC5oIiAxCiMgMTAg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIiAyCgojIDEgIi4vYXJjaC94ODYvaW5jbHVk ZS9hc20vbnVtYS5oIiAxCgoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS90b3BvbG9n eS5oIiAxCiMgODUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG51bWFf bm9kZV9pZCh2b2lkKQp7CiByZXR1cm4gMDsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBlYXJseV9jcHVfdG9fbm9kZShp bnQgY3B1KQp7CiByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXR1cF9ub2RlX3RvX2NwdW1hc2tfbWFwKHZv aWQpIHsgfQoKCgojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy90b3BvbG9neS5oIiAxCiMgMTA0 ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RvcG9sb2d5LmgiIDIKCmV4dGVybiBjb25zdCBzdHJ1 Y3QgY3B1bWFzayAqY3B1X2NvcmVncm91cF9tYXNrKGludCBjcHUpOwojIDExOCAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS90b3BvbG9neS5oIgpleHRlcm4gdW5zaWduZWQgaW50IF9fbWF4X2xvZ2lj YWxfcGFja2FnZXM7CgoKZXh0ZXJuIHVuc2lnbmVkIGludCBfX21heF9kaWVfcGVyX3BhY2thZ2U7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgdG9wb2xvZ3lfbWF4X2RpZV9wZXJfcGFja2FnZSh2b2lkKQp7CiByZXR1cm4gX19tYXhf ZGllX3Blcl9wYWNrYWdlOwp9CgpleHRlcm4gaW50IF9fbWF4X3NtdF90aHJlYWRzOwoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHRv cG9sb2d5X21heF9zbXRfdGhyZWFkcyh2b2lkKQp7CiByZXR1cm4gX19tYXhfc210X3RocmVhZHM7 Cn0KCmludCB0b3BvbG9neV91cGRhdGVfcGFja2FnZV9tYXAodW5zaWduZWQgaW50IGFwaWNpZCwg dW5zaWduZWQgaW50IGNwdSk7CmludCB0b3BvbG9neV91cGRhdGVfZGllX21hcCh1bnNpZ25lZCBp bnQgZGllaWQsIHVuc2lnbmVkIGludCBjcHUpOwppbnQgdG9wb2xvZ3lfcGh5c190b19sb2dpY2Fs X3BrZyh1bnNpZ25lZCBpbnQgcGtnKTsKaW50IHRvcG9sb2d5X3BoeXNfdG9fbG9naWNhbF9kaWUo dW5zaWduZWQgaW50IGRpZSwgdW5zaWduZWQgaW50IGNwdSk7CmJvb2wgdG9wb2xvZ3lfaXNfcHJp bWFyeV90aHJlYWQodW5zaWduZWQgaW50IGNwdSk7CmJvb2wgdG9wb2xvZ3lfc210X3N1cHBvcnRl ZCh2b2lkKTsKIyAxNTYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vdG9wb2xvZ3kuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBh cmNoX2ZpeF9waHlzX3BhY2thZ2VfaWQoaW50IG51bSwgdTMyIHNsb3QpCnsKfQoKc3RydWN0IHBj aV9idXM7CmludCB4ODZfcGNpX3Jvb3RfYnVzX25vZGUoaW50IGJ1cyk7CnZvaWQgeDg2X3BjaV9y b290X2J1c19yZXNvdXJjZXMoaW50IGJ1cywgc3RydWN0IGxpc3RfaGVhZCAqcmVzb3VyY2VzKTsK CmV4dGVybiBib29sIHg4Nl90b3BvbG9neV91cGRhdGU7CgoKCgpleHRlcm4gX19hdHRyaWJ1dGVf Xygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIi4ucmVhZF9tb3N0bHkiKSkpIF9fdHlwZW9mX18o aW50KSBzY2hlZF9jb3JlX3ByaW9yaXR5OwpleHRlcm4gdW5zaWduZWQgaW50IF9fYXR0cmlidXRl X18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIHN5c2N0bF9zY2hlZF9pdG10 X2VuYWJsZWQ7CgoKdm9pZCBzY2hlZF9zZXRfaXRtdF9jb3JlX3ByaW8oaW50IHByaW8sIGludCBj b3JlX2NwdSk7CgoKaW50IHNjaGVkX3NldF9pdG10X3N1cHBvcnQodm9pZCk7CgoKdm9pZCBzY2hl ZF9jbGVhcl9pdG10X3N1cHBvcnQodm9pZCk7CiMgOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9u dW1hLmgiIDIKIyA0NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9udW1hLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X2Fw aWNpZF90b19ub2RlKGludCBhcGljaWQsIHMxNiBub2RlKQp7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBudW1hX2NwdV9ub2Rl KGludCBjcHUpCnsKIHJldHVybiAoLTEpOwp9CiMgNjYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v bnVtYS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIG51bWFfc2V0X25vZGUoaW50IGNwdSwgaW50IG5vZGUpIHsgfQpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG51 bWFfY2xlYXJfbm9kZShpbnQgY3B1KSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbml0X2NwdV90b19ub2RlKHZvaWQpIHsg fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIG51bWFfYWRkX2NwdShpbnQgY3B1KSB7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBudW1hX3JlbW92ZV9jcHUoaW50 IGNwdSkgeyB9CiMgMTIgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYWNwaS5oIiAyCiMgMSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIgMQojIDEzICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2FjcGkuaCIgMgojIDIzICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIKZXh0ZXJu IGludCBhY3BpX2xhcGljOwpleHRlcm4gaW50IGFjcGlfaW9hcGljOwpleHRlcm4gaW50IGFjcGlf bm9pcnE7CmV4dGVybiBpbnQgYWNwaV9zdHJpY3Q7CmV4dGVybiBpbnQgYWNwaV9kaXNhYmxlZDsK ZXh0ZXJuIGludCBhY3BpX3BjaV9kaXNhYmxlZDsKZXh0ZXJuIGludCBhY3BpX3NraXBfdGltZXJf b3ZlcnJpZGU7CmV4dGVybiBpbnQgYWNwaV91c2VfdGltZXJfb3ZlcnJpZGU7CmV4dGVybiBpbnQg YWNwaV9maXhfcGluMl9wb2xhcml0eTsKZXh0ZXJuIGludCBhY3BpX2Rpc2FibGVfY21jZmY7Cgpl eHRlcm4gdTggYWNwaV9zY2lfZmxhZ3M7CmV4dGVybiB1MzIgYWNwaV9zY2lfb3ZlcnJpZGVfZ3Np Owp2b2lkIGFjcGlfcGljX3NjaV9zZXRfdHJpZ2dlcih1bnNpZ25lZCBpbnQsIHUxNik7CgpzdHJ1 Y3QgZGV2aWNlOwoKZXh0ZXJuIGludCAoKl9fYWNwaV9yZWdpc3Rlcl9nc2kpKHN0cnVjdCBkZXZp Y2UgKmRldiwgdTMyIGdzaSwKICAgICAgaW50IHRyaWdnZXIsIGludCBwb2xhcml0eSk7CmV4dGVy biB2b2lkICgqX19hY3BpX3VucmVnaXN0ZXJfZ3NpKSh1MzIgZ3NpKTsKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGlzYWJsZV9h Y3BpKHZvaWQpCnsKIGFjcGlfZGlzYWJsZWQgPSAxOwogYWNwaV9wY2lfZGlzYWJsZWQgPSAxOwog YWNwaV9ub2lycSA9IDE7Cn0KCmV4dGVybiBpbnQgYWNwaV9nc2lfdG9faXJxKHUzMiBnc2ksIHVu c2lnbmVkIGludCAqaXJxKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYWNwaV9ub2lycV9zZXQodm9pZCkgeyBhY3BpX25vaXJx ID0gMTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGFjcGlfZGlzYWJsZV9wY2kodm9pZCkKewogYWNwaV9wY2lfZGlzYWJsZWQg PSAxOwogYWNwaV9ub2lycV9zZXQoKTsKfQoKCmV4dGVybiBpbnQgKCphY3BpX3N1c3BlbmRfbG93 bGV2ZWwpKHZvaWQpOwoKCnVuc2lnbmVkIGxvbmcgYWNwaV9nZXRfd2FrZXVwX2FkZHJlc3Modm9p ZCk7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB1bnNpZ25lZCBpbnQgYWNwaV9wcm9jZXNzb3JfY3N0YXRlX2NoZWNrKHVuc2lnbmVk IGludCBtYXhfY3N0YXRlKQp7CgoKCgoKCiBpZiAoYm9vdF9jcHVfZGF0YS54ODYgPT0gMHgwRiAm JgogICAgIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciA9PSAyICYmCiAgICAgYm9vdF9jcHVfZGF0 YS54ODZfbW9kZWwgPD0gMHgwNSAmJgogICAgIGJvb3RfY3B1X2RhdGEueDg2X3N0ZXBwaW5nIDwg MHgwQSkKICByZXR1cm4gMTsKIGVsc2UgaWYgKChfX2J1aWx0aW5fY29uc3RhbnRfcCgoMTkqMzIg KyAoNCkpKSAmJiAoICgoKCgxOSozMiArICg0KSkpPj41KT09KDApICYmICgxVUw8PCgoKDE5KjMy ICsgKDQpKSkmMzEpICYgKCgxPDwoKCAwKjMyKyAwKSAmIDMxKSl8MHwoMTw8KCggMCozMisgNSkg JiAzMSkpfCgxPDwoKCAwKjMyKyA2KSAmIDMxKSl8ICgxPDwoKCAwKjMyKyA4KSAmIDMxKSl8MHwo MTw8KCggMCozMisyNCkgJiAzMSkpfCgxPDwoKCAwKjMyKzE1KSAmIDMxKSl8ICgxPDwoKCAwKjMy KzI1KSAmIDMxKSl8KDE8PCgoIDAqMzIrMjYpICYgMzEpKSkgKSkgfHwgKCgoKDE5KjMyICsgKDQp KSk+PjUpPT0oMSkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAoKDE8PCgoIDEqMzIr MjkpICYgMzEpKXwwKSApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgyKSAmJiAoMVVMPDwo KCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oMykg JiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAoKDE8PCgoIDMqMzIrMjApICYgMzEpKSkg KSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oNCkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkp KSYzMSkgJiAoMCkgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oNSkgJiYgKDFVTDw8KCgo MTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDYpICYm ICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+ NSk9PSg3KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMy ICsgKDQpKSk+PjUpPT0oOCkgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8 ICgoKCgxOSozMiArICg0KSkpPj41KT09KDkpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEp ICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgxMCkgJiYgKDFVTDw8KCgoMTkqMzIg KyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDExKSAmJiAoMVVM PDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0o MTIpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAo NCkpKT4+NSk9PSgxMykgJiYgKDFVTDw8KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgo KCgxOSozMiArICg0KSkpPj41KT09KDE0KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAm IDAgKSkgfHwgKCgoKDE5KjMyICsgKDQpKSk+PjUpPT0oMTUpICYmICgxVUw8PCgoKDE5KjMyICsg KDQpKSkmMzEpICYgMCApKSB8fCAoKCgoMTkqMzIgKyAoNCkpKT4+NSk9PSgxNikgJiYgKDFVTDw8 KCgoMTkqMzIgKyAoNCkpKSYzMSkgJiAwICkpIHx8ICgoKCgxOSozMiArICg0KSkpPj41KT09KDE3 KSAmJiAoMVVMPDwoKCgxOSozMiArICg0KSkpJjMxKSAmIDAgKSkgfHwgKCgoKDE5KjMyICsgKDQp KSk+PjUpPT0oMTgpICYmICgxVUw8PCgoKDE5KjMyICsgKDQpKSkmMzEpICYgMCApKSB8fCAoKGlu dCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkgfHwgKChpbnQpKHNp emVvZihzdHJ1Y3QgeyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpKSA/IDEgOiB0ZXN0X2JpdCgo MTkqMzIgKyAoNCkpLCAodW5zaWduZWQgbG9uZyAqKSgoJmJvb3RfY3B1X2RhdGEpLT54ODZfY2Fw YWJpbGl0eSkpKSkKICByZXR1cm4gMTsKIGVsc2UKICByZXR1cm4gbWF4X2NzdGF0ZTsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCBhcmNoX2hhc19hY3BpX3BkYyh2b2lkKQp7CiBzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSAmKCoo eyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2luZm8pKSAr IDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNp Z25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2Yo KigoJihjcHVfaW5mbykpKSkgKikoKCYoY3B1X2luZm8pKSkpKTsgKHR5cGVvZigodHlwZW9mKCoo KCYoY3B1X2luZm8pKSkpICopKCgmKGNwdV9pbmZvKSkpKSkgKF9fcHRyICsgKCgoX19wZXJfY3B1 X29mZnNldFsoMCldKSkpKTsgfSk7IH0pKTsKIHJldHVybiAoYy0+eDg2X3ZlbmRvciA9PSAwIHx8 CiAgYy0+eDg2X3ZlbmRvciA9PSA1KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX2FjcGlfc2V0X3BkY19iaXRzKHUz MiAqYnVmKQp7CiBzdHJ1Y3QgY3B1aW5mb194ODYgKmMgPSAmKCooeyBkbyB7IGNvbnN0IHZvaWQg Kl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2luZm8pKSArIDApKSgodm9pZCAqKTApOyAo dm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBf X2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihjcHVfaW5mbykpKSkg KikoKCYoY3B1X2luZm8pKSkpKTsgKHR5cGVvZigodHlwZW9mKCooKCYoY3B1X2luZm8pKSkpICop KCgmKGNwdV9pbmZvKSkpKSkgKF9fcHRyICsgKCgoX19wZXJfY3B1X29mZnNldFsoMCldKSkpKTsg fSk7IH0pKTsKCiBidWZbMl0gfD0gKCgweDAwMTApIHwgKDB4MDAwOCkgfCAoMHgwMDAyKSB8ICgw eDAxMDApIHwgKDB4MDIwMCkpOwoKIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AoKCA0KjMyKyA3 KSkgJiYgKCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgwKSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMx KSAmICgoMTw8KCggMCozMisgMCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIrIDUpICYgMzEpKXwoMTw8 KCggMCozMisgNikgJiAzMSkpfCAoMTw8KCggMCozMisgOCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIr MjQpICYgMzEpKXwoMTw8KCggMCozMisxNSkgJiAzMSkpfCAoMTw8KCggMCozMisyNSkgJiAzMSkp fCgxPDwoKCAwKjMyKzI2KSAmIDMxKSkpICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDEpICYm ICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgKCgxPDwoKCAxKjMyKzI5KSAmIDMxKSl8MCkgKSkg fHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMikgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAw ICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDMpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEp ICYgKCgxPDwoKCAzKjMyKzIwKSAmIDMxKSkpICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDQp ICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgKDApICkpIHx8ICgoKCggNCozMisgNykpPj41 KT09KDUpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcp KT4+NSk9PSg2KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMy KyA3KSk+PjUpPT0oNykgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCgg NCozMisgNykpPj41KT09KDgpICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAo KCgoIDQqMzIrIDcpKT4+NSk9PSg5KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkg fHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTApICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYg MCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgxMSkgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYz MSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDEyKSAmJiAoMVVMPDwoKCggNCozMisg NykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTMpICYmICgxVUw8PCgoKCA0 KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9PSgxNCkgJiYgKDFVTDw8 KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgNykpPj41KT09KDE1KSAmJiAo MVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyA3KSk+PjUpPT0oMTYp ICYmICgxVUw8PCgoKCA0KjMyKyA3KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDcpKT4+NSk9 PSgxNykgJiYgKDFVTDw8KCgoIDQqMzIrIDcpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgNykp Pj41KT09KDE4KSAmJiAoMVVMPDwoKCggNCozMisgNykpJjMxKSAmIDAgKSkgfHwgKChpbnQpKHNp emVvZihzdHJ1Y3QgeyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpIHx8ICgoaW50KShzaXplb2Yo c3RydWN0IHsgaW50OigtISEoMTkgIT0gMTkpKTsgfSkpKSkgPyAxIDogdGVzdF9iaXQoKCA0KjMy KyA3KSwgKHVuc2lnbmVkIGxvbmcgKikoKGMpLT54ODZfY2FwYWJpbGl0eSkpKSkKICBidWZbMl0g fD0gKCgweDAwMDgpIHwgKDB4MDAwMikgfCAoMHgwMDIwKSB8ICgweDA4MDApIHwgKDB4MDAwMSkp OwoKIGlmICgoX19idWlsdGluX2NvbnN0YW50X3AoKCAwKjMyKzIyKSkgJiYgKCAoKCgoIDAqMzIr MjIpKT4+NSk9PSgwKSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmICgoMTw8KCggMCozMisg MCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIrIDUpICYgMzEpKXwoMTw8KCggMCozMisgNikgJiAzMSkp fCAoMTw8KCggMCozMisgOCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIrMjQpICYgMzEpKXwoMTw8KCgg MCozMisxNSkgJiAzMSkpfCAoMTw8KCggMCozMisyNSkgJiAzMSkpfCgxPDwoKCAwKjMyKzI2KSAm IDMxKSkpICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDEpICYmICgxVUw8PCgoKCAwKjMyKzIy KSkmMzEpICYgKCgxPDwoKCAxKjMyKzI5KSAmIDMxKSl8MCkgKSkgfHwgKCgoKCAwKjMyKzIyKSk+ PjUpPT0oMikgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisy MikpPj41KT09KDMpICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgKCgxPDwoKCAzKjMyKzIw KSAmIDMxKSkpICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDQpICYmICgxVUw8PCgoKCAwKjMy KzIyKSkmMzEpICYgKDApICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDUpICYmICgxVUw8PCgo KCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSg2KSAmJiAoMVVM PDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oNykgJiYg KDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDgp ICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9 PSg5KSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+ PjUpPT0oMTApICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIr MjIpKT4+NSk9PSgxMSkgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCgg MCozMisyMikpPj41KT09KDEyKSAmJiAoMVVMPDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwg KCgoKCAwKjMyKzIyKSk+PjUpPT0oMTMpICYmICgxVUw8PCgoKCAwKjMyKzIyKSkmMzEpICYgMCAp KSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSgxNCkgJiYgKDFVTDw8KCgoIDAqMzIrMjIpKSYzMSkg JiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDE1KSAmJiAoMVVMPDwoKCggMCozMisyMikp JjMxKSAmIDAgKSkgfHwgKCgoKCAwKjMyKzIyKSk+PjUpPT0oMTYpICYmICgxVUw8PCgoKCAwKjMy KzIyKSkmMzEpICYgMCApKSB8fCAoKCgoIDAqMzIrMjIpKT4+NSk9PSgxNykgJiYgKDFVTDw8KCgo IDAqMzIrMjIpKSYzMSkgJiAwICkpIHx8ICgoKCggMCozMisyMikpPj41KT09KDE4KSAmJiAoMVVM PDwoKCggMCozMisyMikpJjMxKSAmIDAgKSkgfHwgKChpbnQpKHNpemVvZihzdHJ1Y3QgeyBpbnQ6 KC0hISgxOSAhPSAxOSkpOyB9KSkpIHx8ICgoaW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEo MTkgIT0gMTkpKTsgfSkpKSkgPyAxIDogdGVzdF9iaXQoKCAwKjMyKzIyKSwgKHVuc2lnbmVkIGxv bmcgKikoKGMpLT54ODZfY2FwYWJpbGl0eSkpKSkKICBidWZbMl0gfD0gKDB4MDAwNCk7CgoKCgog aWYgKCEoX19idWlsdGluX2NvbnN0YW50X3AoKCA0KjMyKyAzKSkgJiYgKCAoKCgoIDQqMzIrIDMp KT4+NSk9PSgwKSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmICgoMTw8KCggMCozMisgMCkg JiAzMSkpfDB8KDE8PCgoIDAqMzIrIDUpICYgMzEpKXwoMTw8KCggMCozMisgNikgJiAzMSkpfCAo MTw8KCggMCozMisgOCkgJiAzMSkpfDB8KDE8PCgoIDAqMzIrMjQpICYgMzEpKXwoMTw8KCggMCoz MisxNSkgJiAzMSkpfCAoMTw8KCggMCozMisyNSkgJiAzMSkpfCgxPDwoKCAwKjMyKzI2KSAmIDMx KSkpICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDEpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkm MzEpICYgKCgxPDwoKCAxKjMyKzI5KSAmIDMxKSl8MCkgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUp PT0oMikgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykp Pj41KT09KDMpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgKCgxPDwoKCAzKjMyKzIwKSAm IDMxKSkpICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDQpICYmICgxVUw8PCgoKCA0KjMyKyAz KSkmMzEpICYgKDApICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDUpICYmICgxVUw8PCgoKCA0 KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSg2KSAmJiAoMVVMPDwo KCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oNykgJiYgKDFV TDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDgpICYm ICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSg5 KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUp PT0oMTApICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMp KT4+NSk9PSgxMSkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCoz MisgMykpPj41KT09KDEyKSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKCgo KCA0KjMyKyAzKSk+PjUpPT0oMTMpICYmICgxVUw8PCgoKCA0KjMyKyAzKSkmMzEpICYgMCApKSB8 fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgxNCkgJiYgKDFVTDw8KCgoIDQqMzIrIDMpKSYzMSkgJiAw ICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDE1KSAmJiAoMVVMPDwoKCggNCozMisgMykpJjMx KSAmIDAgKSkgfHwgKCgoKCA0KjMyKyAzKSk+PjUpPT0oMTYpICYmICgxVUw8PCgoKCA0KjMyKyAz KSkmMzEpICYgMCApKSB8fCAoKCgoIDQqMzIrIDMpKT4+NSk9PSgxNykgJiYgKDFVTDw8KCgoIDQq MzIrIDMpKSYzMSkgJiAwICkpIHx8ICgoKCggNCozMisgMykpPj41KT09KDE4KSAmJiAoMVVMPDwo KCggNCozMisgMykpJjMxKSAmIDAgKSkgfHwgKChpbnQpKHNpemVvZihzdHJ1Y3QgeyBpbnQ6KC0h ISgxOSAhPSAxOSkpOyB9KSkpIHx8ICgoaW50KShzaXplb2Yoc3RydWN0IHsgaW50OigtISEoMTkg IT0gMTkpKTsgfSkpKSkgPyAxIDogdGVzdF9iaXQoKCA0KjMyKyAzKSwgKHVuc2lnbmVkIGxvbmcg KikoKGMpLT54ODZfY2FwYWJpbGl0eSkpKSkKICBidWZbMl0gJj0gfigoMHgwMjAwKSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgYWNwaV9oYXNfY3B1X2luX21hZHQodm9pZCkKewogcmV0dXJuICEhYWNwaV9sYXBpYzsKfQoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgYWNwaV9hcmNoX3NldF9yb290X3BvaW50ZXIodTY0IGFkZHIpCnsKIHg4Nl9pbml0LmFj cGkuc2V0X3Jvb3RfcG9pbnRlcihhZGRyKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBhY3BpX2FyY2hfZ2V0X3Jvb3RfcG9p bnRlcih2b2lkKQp7CiByZXR1cm4geDg2X2luaXQuYWNwaS5nZXRfcm9vdF9wb2ludGVyKCk7Cn0K CnZvaWQgYWNwaV9nZW5lcmljX3JlZHVjZWRfaHdfaW5pdCh2b2lkKTsKCnZvaWQgeDg2X2RlZmF1 bHRfc2V0X3Jvb3RfcG9pbnRlcih1NjQgYWRkcik7CnU2NCB4ODZfZGVmYXVsdF9nZXRfcm9vdF9w b2ludGVyKHZvaWQpOwojIDE2NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hY3BpLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBncHJv dF90IGFyY2hfYXBlaV9nZXRfbWVtX2F0dHJpYnV0ZShwaHlzX2FkZHJfdCBhZGRyKQp7CiMgMTgw ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FjcGkuaCIKIHJldHVybiAoKHBncHJvdF90KSB7ICgo KCgoKHB0ZXZhbF90KSgxKSkgPDwgMCl8KCgocHRldmFsX3QpKDEpKSA8PCAxKXwgMHwoKChwdGV2 YWxfdCkoMSkpIDw8IDUpfCgoKHB0ZXZhbF90KSgxKSkgPDwgNjMpfCgoKHB0ZXZhbF90KSgxKSkg PDwgNil8IDB8KCgocHRldmFsX3QpKDEpKSA8PCA4KSkgfCAwKSAmIF9fZGVmYXVsdF9rZXJuZWxf cHRlX21hc2spIH0gKTsKfQojIDMwICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2ZpeG1hcC5oIiAy CgoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3ZzeXNjYWxsLmgiIDEKCgoK CmVudW0gdnN5c2NhbGxfbnVtIHsKIF9fTlJfdmdldHRpbWVvZmRheSwKIF9fTlJfdnRpbWUsCiBf X05SX3ZnZXRjcHUsCn07CiMgMzcgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZml4bWFwLmgiIDIK IyA3NSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKZW51bSBmaXhlZF9hZGRyZXNz ZXMgewoKCgoKIFZTWVNDQUxMX1BBR0UgPSAoKCgoKCgoLTEwVUwgPDwgMjApICsgKCgxVUwpIDw8 IDEyKSktMSkgfCAoKF9fdHlwZW9mX18oKC0xMFVMIDw8IDIwKSArICgoMVVMKSA8PCAxMikpKSgo MTw8MjEpLTEpKSkrMSkgLSAoKDFVTCkgPDwgMTIpKSAtICgtMTBVTCA8PCAyMCkpID4+IDEyLAoK CiBGSVhfREJHUF9CQVNFLAogRklYX0VBUkxZQ09OX01FTV9CQVNFLAoKCgoKIEZJWF9BUElDX0JB U0UsCgoKIEZJWF9JT19BUElDX0JBU0VfMCwKIEZJWF9JT19BUElDX0JBU0VfRU5EID0gRklYX0lP X0FQSUNfQkFTRV8wICsgMTI4IC0gMSwKIyAxMDMgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZml4 bWFwLmgiCiBGSVhfUEFSQVZJUlRfQk9PVE1BUCwKCgoKCgoKCiBGSVhfQVBFSV9HSEVTX0lSUSwK IEZJWF9BUEVJX0dIRVNfTk1JLAoKCiBfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2Vz LAojIDEyNyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIKIEZJWF9CVE1BUF9FTkQg PQogIChfX2VuZF9vZl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzIF4KICAgKF9fZW5kX29mX3Bl cm1hbmVudF9maXhlZF9hZGRyZXNzZXMgKyAoNjQgKiA4KSAtIDEpKSAmCiAgLTUxMgogID8gX19l bmRfb2ZfcGVybWFuZW50X2ZpeGVkX2FkZHJlc3NlcyArICg2NCAqIDgpIC0KICAgIChfX2VuZF9v Zl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzICYgKCg2NCAqIDgpIC0gMSkpCiAgOiBfX2VuZF9v Zl9wZXJtYW5lbnRfZml4ZWRfYWRkcmVzc2VzLAogRklYX0JUTUFQX0JFR0lOID0gRklYX0JUTUFQ X0VORCArICg2NCAqIDgpIC0gMSwKCgoKCgoKIF9fZW5kX29mX2ZpeGVkX2FkZHJlc3Nlcwp9OwoK CmV4dGVybiB2b2lkIHJlc2VydmVfdG9wX2FkZHJlc3ModW5zaWduZWQgbG9uZyByZXNlcnZlKTsK CgoKCgoKZXh0ZXJuIGludCBmaXhtYXBzX3NldDsKCmV4dGVybiBwdGVfdCAqa21hcF9wdGU7Cgpl eHRlcm4gcHRlX3QgKnBrbWFwX3BhZ2VfdGFibGU7Cgp2b2lkIF9fbmF0aXZlX3NldF9maXhtYXAo ZW51bSBmaXhlZF9hZGRyZXNzZXMgaWR4LCBwdGVfdCBwdGUpOwp2b2lkIG5hdGl2ZV9zZXRfZml4 bWFwKHVuc2lnbmVkIGlkeCwKICAgICAgICAgcGh5c19hZGRyX3QgcGh5cywgcGdwcm90X3QgZmxh Z3MpOwoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgX19zZXRfZml4bWFwKGVudW0gZml4ZWRfYWRkcmVzc2VzIGlkeCwKICAgIHBo eXNfYWRkcl90IHBoeXMsIHBncHJvdF90IGZsYWdzKQp7CiBuYXRpdmVfc2V0X2ZpeG1hcChpZHgs IHBoeXMsIGZsYWdzKTsKfQojIDE4MSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9maXhtYXAuaCIK dm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1 dGVfXygoX19jb2xkX18pKSAqZWFybHlfbWVtcmVtYXBfZW5jcnlwdGVkKHJlc291cmNlX3NpemVf dCBwaHlzX2FkZHIsCiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOwp2b2lkIF9fYXR0cmli dXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRf XykpICplYXJseV9tZW1yZW1hcF9lbmNyeXB0ZWRfd3AocmVzb3VyY2Vfc2l6ZV90IHBoeXNfYWRk ciwKICAgICAgdW5zaWduZWQgbG9uZyBzaXplKTsKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rp b25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSAqZWFybHlfbWVt cmVtYXBfZGVjcnlwdGVkKHJlc291cmNlX3NpemVfdCBwaHlzX2FkZHIsCiAgICAgICAgICB1bnNp Z25lZCBsb25nIHNpemUpOwp2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50 ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpICplYXJseV9tZW1yZW1hcF9kZWNyeXB0 ZWRfd3AocmVzb3VyY2Vfc2l6ZV90IHBoeXNfYWRkciwKICAgICAgdW5zaWduZWQgbG9uZyBzaXpl KTsKCiMgMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL2ZpeG1hcC5oIiAxCiMgMzAgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9maXhtYXAuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KSB1bnNpZ25lZCBsb25nIGZpeF90b192aXJ0KGNvbnN0IHVuc2lnbmVkIGludCBpZHgpCnsKIGRv IHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMzIodm9pZCkgX19hdHRyaWJ1dGVf XygoX19lcnJvcl9fKCJCVUlMRF9CVUdfT04gZmFpbGVkOiAiICJpZHggPj0gX19lbmRfb2ZfZml4 ZWRfYWRkcmVzc2VzIikpKTsgaWYgKCEoIShpZHggPj0gX19lbmRfb2ZfZml4ZWRfYWRkcmVzc2Vz KSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzMyKCk7IH0gd2hpbGUgKDApOwogcmV0dXJuICgoKCgo KCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygoLTEwVUwg PDwgMjApICsgKCgxVUwpIDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8PCAxMikp IC0gKChpZHgpIDw8IDEyKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgdmlydF90b19maXgoY29uc3QgdW5z aWduZWQgbG9uZyB2YWRkcikKewogZG8geyBpZiAoX19idWlsdGluX2V4cGVjdCghISh2YWRkciA+ PSAoKCgoKCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygo LTEwVUwgPDwgMjApICsgKCgxVUwpIDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8 PCAxMikpIHx8IHZhZGRyIDwgKCgoKCgoKC0xMFVMIDw8IDIwKSArICgoMVVMKSA8PCAxMikpLTEp IHwgKChfX3R5cGVvZl9fKCgtMTBVTCA8PCAyMCkgKyAoKDFVTCkgPDwgMTIpKSkoKDE8PDIxKS0x KSkpKzEpIC0gKCgxVUwpIDw8IDEyKSkgLSAoX19lbmRfb2ZfcGVybWFuZW50X2ZpeGVkX2FkZHJl c3NlcyA8PCAxMikpKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQi ICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wi XG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRy XG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAi XHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBi dWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJp IiAoImluY2x1ZGUvYXNtLWdlbmVyaWMvZml4bWFwLmgiKSwgImkiICgzOCksICJpIiAoMCksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2 b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0 IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgxNykpOyB9 KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDAp OyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiByZXR1cm4gKCgoKCgoKCgtMTBVTCA8PCAyMCkg KyAoKDFVTCkgPDwgMTIpKS0xKSB8ICgoX190eXBlb2ZfXygoLTEwVUwgPDwgMjApICsgKCgxVUwp IDw8IDEyKSkpKCgxPDwyMSktMSkpKSsxKSAtICgoMVVMKSA8PCAxMikpIC0gKCh2YWRkcikmKH4o KCgxVUwpIDw8IDEyKS0xKSkpKSA+PiAxMik7Cn0KIyAxOTEgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vZml4bWFwLmgiIDIKCgoKCnZvaWQgX19lYXJseV9zZXRfZml4bWFwKGVudW0gZml4ZWRfYWRk cmVzc2VzIGlkeCwKICAgcGh5c19hZGRyX3QgcGh5cywgcGdwcm90X3QgZmxhZ3MpOwojIDEyICIu L2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWMuaCIgMgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9oYXJkaXJxLmgiIDEKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogdTE2IF9fc29mdGlycV9w ZW5kaW5nOwoKCgogdW5zaWduZWQgaW50IF9fbm1pX2NvdW50OwoKIHVuc2lnbmVkIGludCBhcGlj X3RpbWVyX2lycXM7CiB1bnNpZ25lZCBpbnQgaXJxX3NwdXJpb3VzX2NvdW50OwogdW5zaWduZWQg aW50IGljcl9yZWFkX3JldHJ5X2NvdW50OwoKCiB1bnNpZ25lZCBpbnQga3ZtX3Bvc3RlZF9pbnRy X2lwaXM7CiB1bnNpZ25lZCBpbnQga3ZtX3Bvc3RlZF9pbnRyX3dha2V1cF9pcGlzOwogdW5zaWdu ZWQgaW50IGt2bV9wb3N0ZWRfaW50cl9uZXN0ZWRfaXBpczsKCiB1bnNpZ25lZCBpbnQgeDg2X3Bs YXRmb3JtX2lwaXM7CiB1bnNpZ25lZCBpbnQgYXBpY19wZXJmX2lycXM7CiB1bnNpZ25lZCBpbnQg YXBpY19pcnFfd29ya19pcnFzOwoKIHVuc2lnbmVkIGludCBpcnFfcmVzY2hlZF9jb3VudDsKIHVu c2lnbmVkIGludCBpcnFfY2FsbF9jb3VudDsKCiB1bnNpZ25lZCBpbnQgaXJxX3RsYl9jb3VudDsK CiB1bnNpZ25lZCBpbnQgaXJxX3RoZXJtYWxfY291bnQ7CgoKIHVuc2lnbmVkIGludCBpcnFfdGhy ZXNob2xkX2NvdW50OwoKCiB1bnNpZ25lZCBpbnQgaXJxX2RlZmVycmVkX2Vycm9yX2NvdW50OwoK CiB1bnNpZ25lZCBpbnQgaXJxX2h2X2NhbGxiYWNrX2NvdW50OwoKCiB1bnNpZ25lZCBpbnQgaXJx X2h2X3JlZW5saWdodGVubWVudF9jb3VudDsKIHVuc2lnbmVkIGludCBoeXBlcnZfc3RpbWVyMF9j b3VudDsKCn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYpKSkpKSBpcnFfY3B1 c3RhdF90OwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIi KSkpIF9fdHlwZW9mX18oaXJxX2NwdXN0YXRfdCkgaXJxX3N0YXQgX19hdHRyaWJ1dGVfXygoX19h bGlnbmVkX18oKDEgPDwgKDYpKSkpKTsKCgoKCgpleHRlcm4gdm9pZCBhY2tfYmFkX2lycSh1bnNp Z25lZCBpbnQgaXJxKTsKCmV4dGVybiB1NjQgYXJjaF9pcnFfc3RhdF9jcHUodW5zaWduZWQgaW50 IGNwdSk7CgoKZXh0ZXJuIHU2NCBhcmNoX2lycV9zdGF0KHZvaWQpOwojIDgwICIuL2FyY2gveDg2 L2luY2x1ZGUvYXNtL2hhcmRpcnEuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrdm1fc2V0X2NwdV9sMXRmX2ZsdXNoX2wxZCh2 b2lkKSB7IH0KIyAxNSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiIDIKIyA0NSAiLi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZ2VuZXJpY19hcGljX3Byb2JlKHZvaWQp CnsKfQoKCgoKZXh0ZXJuIGludCBhcGljX3ZlcmJvc2l0eTsKZXh0ZXJuIGludCBsb2NhbF9hcGlj X3RpbWVyX2MyX29rOwoKZXh0ZXJuIGludCBkaXNhYmxlX2FwaWM7CmV4dGVybiB1bnNpZ25lZCBp bnQgbGFwaWNfdGltZXJfcGVyaW9kOwoKZXh0ZXJuIGVudW0gYXBpY19pbnRyX21vZGVfaWQgYXBp Y19pbnRyX21vZGU7CmVudW0gYXBpY19pbnRyX21vZGVfaWQgewogQVBJQ19QSUMsCiBBUElDX1ZJ UlRVQUxfV0lSRSwKIEFQSUNfVklSVFVBTF9XSVJFX05PX0NPTkZJRywKIEFQSUNfU1lNTUVUUklD X0lPLAogQVBJQ19TWU1NRVRSSUNfSU9fTk9fUk9VVElORwp9OwoKCmV4dGVybiB2b2lkIF9faW5x dWlyZV9yZW1vdGVfYXBpYyhpbnQgYXBpY2lkKTsKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZWZhdWx0X2lucXVpcmVf cmVtb3RlX2FwaWMoaW50IGFwaWNpZCkKewogaWYgKGFwaWNfdmVyYm9zaXR5ID49IDIpCiAgX19p bnF1aXJlX3JlbW90ZV9hcGljKGFwaWNpZCk7Cn0KIyA4OSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9hcGljLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgYXBpY19mcm9tX3NtcF9jb25maWcodm9pZCkKewogcmV0dXJuIHNtcF9m b3VuZF9jb25maWcgJiYgIWRpc2FibGVfYXBpYzsKfQojIDEwMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9hcGljLmgiCmV4dGVybiBpbnQgc2V0dXBfcHJvZmlsaW5nX3RpbWVyKHVuc2lnbmVkIGlu dCk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIG5hdGl2ZV9hcGljX21lbV93cml0ZSh1MzIgcmVnLCB1MzIgdikKewogdm9sYXRp bGUgdTMyICphZGRyID0gKHZvbGF0aWxlIHUzMiAqKSgoZml4X3RvX3ZpcnQoRklYX0FQSUNfQkFT RSkpICsgcmVnKTsKCiBhc20gX19pbmxpbmUgdm9sYXRpbGUgKCIjIEFMVDogb2xkbnN0clxuIiAi NjYxOlxuXHQiICJtb3ZsICUwLCAlUDEiICJcbjY2MjpcbiIgIiMgQUxUOiBwYWRkaW5nXG4iICIu c2tpcCAtKCgoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAiNjYyYi02NjFiIiAiKSkg PiAwKSAqICIgIigoIiAiNjY1IiIxIiJmLSIiNjY0IiIxIiJmIiAiKS0oIiAiNjYyYi02NjFiIiAi KSksMHg5MFxuIiAiNjYzIiAiOlxuIiAiLnB1c2hzZWN0aW9uIC5hbHRpbnN0cnVjdGlvbnMsXCJh XCJcbiIgIiAubG9uZyA2NjFiIC0gLlxuIiAiIC5sb25nICIgIjY2NCIiMSIiZiAtIC5cbiIgIiAu d29yZCAiICIoMTkqMzIgKyAoNSkpIiAiXG4iICIgLmJ5dGUgIiAiNjYzIiJiLTY2MWIiICJcbiIg IiAuYnl0ZSAiICI2NjUiIjEiImYtIiI2NjQiIjEiImYiICJcbiIgIiAuYnl0ZSAiICI2NjMiImIt NjYyYiIgIlxuIiAiLnBvcHNlY3Rpb25cbiIgIi5wdXNoc2VjdGlvbiAuYWx0aW5zdHJfcmVwbGFj ZW1lbnQsIFwiYXhcIlxuIiAiIyBBTFQ6IHJlcGxhY2VtZW50ICIgIjEiICJcbiIgIjY2NCIiMSIi OlxuXHQiICJ4Y2hnbCAlMCwgJVAxIiAiXG4iICI2NjUiIjEiICI6XG4iICIucG9wc2VjdGlvblxu IiA6ICI9ciIgKHYpLCAiPW0iICgqYWRkcikgOiAiaSIgKDApLCAiMCIgKHYpLCAibSIgKCphZGRy KSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHUzMiBu YXRpdmVfYXBpY19tZW1fcmVhZCh1MzIgcmVnKQp7CiByZXR1cm4gKigodm9sYXRpbGUgdTMyICop KChmaXhfdG9fdmlydChGSVhfQVBJQ19CQVNFKSkgKyByZWcpKTsKfQoKZXh0ZXJuIHZvaWQgbmF0 aXZlX2FwaWNfd2FpdF9pY3JfaWRsZSh2b2lkKTsKZXh0ZXJuIHUzMiBuYXRpdmVfc2FmZV9hcGlj X3dhaXRfaWNyX2lkbGUodm9pZCk7CmV4dGVybiB2b2lkIG5hdGl2ZV9hcGljX2ljcl93cml0ZSh1 MzIgbG93LCB1MzIgaWQpOwpleHRlcm4gdTY0IG5hdGl2ZV9hcGljX2ljcl9yZWFkKHZvaWQpOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBhcGljX2lzX3gyYXBpY19lbmFibGVkKHZvaWQpCnsKIHU2NCBtc3I7CgogaWYgKHJkbXNy bF9zYWZlKDB4MDAwMDAwMWIsICZtc3IpKQogIHJldHVybiBmYWxzZTsKIHJldHVybiBtc3IgJiAo MVVMIDw8IDEwKTsKfQoKZXh0ZXJuIHZvaWQgZW5hYmxlX0lSX3gyYXBpYyh2b2lkKTsKCmV4dGVy biBpbnQgZ2V0X3BoeXNpY2FsX2Jyb2FkY2FzdCh2b2lkKTsKCmV4dGVybiBpbnQgbGFwaWNfZ2V0 X21heGx2dCh2b2lkKTsKZXh0ZXJuIHZvaWQgY2xlYXJfbG9jYWxfQVBJQyh2b2lkKTsKZXh0ZXJu IHZvaWQgZGlzY29ubmVjdF9ic3BfQVBJQyhpbnQgdmlydF93aXJlX3NldHVwKTsKZXh0ZXJuIHZv aWQgZGlzYWJsZV9sb2NhbF9BUElDKHZvaWQpOwpleHRlcm4gdm9pZCBhcGljX3NvZnRfZGlzYWJs ZSh2b2lkKTsKZXh0ZXJuIHZvaWQgbGFwaWNfc2h1dGRvd24odm9pZCk7CmV4dGVybiB2b2lkIHN5 bmNfQXJiX0lEcyh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF9ic3BfQVBJQyh2b2lkKTsKZXh0ZXJu IHZvaWQgYXBpY19pbnRyX21vZGVfc2VsZWN0KHZvaWQpOwpleHRlcm4gdm9pZCBhcGljX2ludHJf bW9kZV9pbml0KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2FwaWNfbWFwcGluZ3Modm9pZCk7CnZv aWQgcmVnaXN0ZXJfbGFwaWNfYWRkcmVzcyh1bnNpZ25lZCBsb25nIGFkZHJlc3MpOwpleHRlcm4g dm9pZCBzZXR1cF9ib290X0FQSUNfY2xvY2sodm9pZCk7CmV4dGVybiB2b2lkIHNldHVwX3NlY29u ZGFyeV9BUElDX2Nsb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBsYXBpY191cGRhdGVfdHNjX2ZyZXEo dm9pZCk7CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IGFwaWNfZm9yY2VfZW5hYmxlKHVuc2lnbmVkIGxvbmcgYWRkcikKewogcmV0 dXJuIC0xOwp9CgoKCgpleHRlcm4gdm9pZCBhcGljX2FwX3NldHVwKHZvaWQpOwoKCgoKCmV4dGVy biBpbnQgYXBpY19pc19jbHVzdGVyZWRfYm94KHZvaWQpOwoKCgoKCgoKZXh0ZXJuIGludCBzZXR1 cF9BUElDX2VpbHZ0KHU4IGx2dF9vZmYsIHU4IHZlY3RvciwgdTggbXNnX3R5cGUsIHU4IG1hc2sp OwpleHRlcm4gdm9pZCBsYXBpY19hc3NpZ25fc3lzdGVtX3ZlY3RvcnModm9pZCk7CmV4dGVybiB2 b2lkIGxhcGljX2Fzc2lnbl9sZWdhY3lfdmVjdG9yKHVuc2lnbmVkIGludCBpc2FpcnEsIGJvb2wg cmVwbGFjZSk7CmV4dGVybiB2b2lkIGxhcGljX29ubGluZSh2b2lkKTsKZXh0ZXJuIHZvaWQgbGFw aWNfb2ZmbGluZSh2b2lkKTsKZXh0ZXJuIGJvb2wgYXBpY19uZWVkc19waXQodm9pZCk7CgpleHRl cm4gdm9pZCBhcGljX3NlbmRfSVBJX2FsbGJ1dHNlbGYodW5zaWduZWQgaW50IHZlY3Rvcik7CiMg MjcxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja194MmFwaWModm9p ZCkgeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgeDJhcGljX3NldHVwKHZvaWQpIHsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgeDJhcGljX2VuYWJsZWQodm9p ZCkgeyByZXR1cm4gMDsgfQoKCgoKCnN0cnVjdCBpcnFfZGF0YTsKIyAyOTAgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vYXBpYy5oIgpzdHJ1Y3QgYXBpYyB7Cgogdm9pZCAoKmVvaV93cml0ZSkodTMy IHJlZywgdTMyIHYpOwogdm9pZCAoKm5hdGl2ZV9lb2lfd3JpdGUpKHUzMiByZWcsIHUzMiB2KTsK IHZvaWQgKCp3cml0ZSkodTMyIHJlZywgdTMyIHYpOwogdTMyICgqcmVhZCkodTMyIHJlZyk7CgoK IHZvaWQgKCp3YWl0X2ljcl9pZGxlKSh2b2lkKTsKIHUzMiAoKnNhZmVfd2FpdF9pY3JfaWRsZSko dm9pZCk7Cgogdm9pZCAoKnNlbmRfSVBJKShpbnQgY3B1LCBpbnQgdmVjdG9yKTsKIHZvaWQgKCpz ZW5kX0lQSV9tYXNrKShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbWFzaywgaW50IHZlY3Rvcik7CiB2 b2lkICgqc2VuZF9JUElfbWFza19hbGxidXRzZWxmKShjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbXNr LCBpbnQgdmVjKTsKIHZvaWQgKCpzZW5kX0lQSV9hbGxidXRzZWxmKShpbnQgdmVjdG9yKTsKIHZv aWQgKCpzZW5kX0lQSV9hbGwpKGludCB2ZWN0b3IpOwogdm9pZCAoKnNlbmRfSVBJX3NlbGYpKGlu dCB2ZWN0b3IpOwoKCiB1MzIgZGVzdF9sb2dpY2FsOwogdTMyIGRpc2FibGVfZXNyOwogdTMyIGly cV9kZWxpdmVyeV9tb2RlOwogdTMyIGlycV9kZXN0X21vZGU7CgogdTMyICgqY2FsY19kZXN0X2Fw aWNpZCkodW5zaWduZWQgaW50IGNwdSk7CgoKIHU2NCAoKmljcl9yZWFkKSh2b2lkKTsKIHZvaWQg KCppY3Jfd3JpdGUpKHUzMiBsb3csIHUzMiBoaWdoKTsKCgogaW50ICgqcHJvYmUpKHZvaWQpOwog aW50ICgqYWNwaV9tYWR0X29lbV9jaGVjaykoY2hhciAqb2VtX2lkLCBjaGFyICpvZW1fdGFibGVf aWQpOwogaW50ICgqYXBpY19pZF92YWxpZCkodTMyIGFwaWNpZCk7CiBpbnQgKCphcGljX2lkX3Jl Z2lzdGVyZWQpKHZvaWQpOwoKIGJvb2wgKCpjaGVja19hcGljaWRfdXNlZCkocGh5c2lkX21hc2tf dCAqbWFwLCBpbnQgYXBpY2lkKTsKIHZvaWQgKCppbml0X2FwaWNfbGRyKSh2b2lkKTsKIHZvaWQg KCppb2FwaWNfcGh5c19pZF9tYXApKHBoeXNpZF9tYXNrX3QgKnBoeXNfbWFwLCBwaHlzaWRfbWFz a190ICpyZXRtYXApOwogdm9pZCAoKnNldHVwX2FwaWNfcm91dGluZykodm9pZCk7CiBpbnQgKCpj cHVfcHJlc2VudF90b19hcGljaWQpKGludCBtcHNfY3B1KTsKIHZvaWQgKCphcGljaWRfdG9fY3B1 X3ByZXNlbnQpKGludCBwaHlzX2FwaWNpZCwgcGh5c2lkX21hc2tfdCAqcmV0bWFwKTsKIGludCAo KmNoZWNrX3BoeXNfYXBpY2lkX3ByZXNlbnQpKGludCBwaHlzX2FwaWNpZCk7CiBpbnQgKCpwaHlz X3BrZ19pZCkoaW50IGNwdWlkX2FwaWMsIGludCBpbmRleF9tc2IpOwoKIHUzMiAoKmdldF9hcGlj X2lkKSh1bnNpZ25lZCBsb25nIHgpOwogdTMyICgqc2V0X2FwaWNfaWQpKHVuc2lnbmVkIGludCBp ZCk7CgoKIGludCAoKndha2V1cF9zZWNvbmRhcnlfY3B1KShpbnQgYXBpY2lkLCB1bnNpZ25lZCBs b25nIHN0YXJ0X2VpcCk7Cgogdm9pZCAoKmlucXVpcmVfcmVtb3RlX2FwaWMpKGludCBhcGljaWQp OwojIDM1NiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiCiBjaGFyICpuYW1lOwp9OwoK CgoKCgpleHRlcm4gc3RydWN0IGFwaWMgKmFwaWM7CiMgMzg0ICIuL2FyY2gveDg2L2luY2x1ZGUv YXNtL2FwaWMuaCIKZXh0ZXJuIHN0cnVjdCBhcGljICpfX2FwaWNkcml2ZXJzW10sICpfX2FwaWNk cml2ZXJzX2VuZFtdOwoKCgoKCmV4dGVybiBpbnQgd2FrZXVwX3NlY29uZGFyeV9jcHVfdmlhX25t aShpbnQgYXBpY2lkLCB1bnNpZ25lZCBsb25nIHN0YXJ0X2VpcCk7CmV4dGVybiBpbnQgbGFwaWNf Y2FuX3VucGx1Z19jcHUodm9pZCk7CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgYXBpY19yZWFkKHUzMiByZWcpCnsKIHJldHVy biBhcGljLT5yZWFkKHJlZyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXBpY193cml0ZSh1MzIgcmVnLCB1MzIgdmFsKQp7 CiBhcGljLT53cml0ZShyZWcsIHZhbCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXBpY19lb2kodm9pZCkKewogYXBpYy0+ ZW9pX3dyaXRlKDB4QjAsIDB4MCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBhcGljX2ljcl9yZWFkKHZvaWQpCnsKIHJldHVy biBhcGljLT5pY3JfcmVhZCgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFwaWNfaWNyX3dyaXRlKHUzMiBsb3csIHUzMiBo aWdoKQp7CiBhcGljLT5pY3Jfd3JpdGUobG93LCBoaWdoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcGljX3dhaXRfaWNy X2lkbGUodm9pZCkKewogYXBpYy0+d2FpdF9pY3JfaWRsZSgpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgc2FmZV9hcGljX3dh aXRfaWNyX2lkbGUodm9pZCkKewogcmV0dXJuIGFwaWMtPnNhZmVfd2FpdF9pY3JfaWRsZSgpOwp9 CgpleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkg X19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBhcGljX3NldF9lb2lfd3JpdGUodm9pZCAoKmVvaV93 cml0ZSkodTMyIHJlZywgdTMyIHYpKTsKIyA0NDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vYXBp Yy5oIgpleHRlcm4gdm9pZCBhcGljX2Fja19pcnEoc3RydWN0IGlycV9kYXRhICpkYXRhKTsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgYWNrX0FQSUNfaXJxKHZvaWQpCnsKCgoKCiBhcGljX2VvaSgpOwp9CgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBsYXBpY192 ZWN0b3Jfc2V0X2luX2lycih1bnNpZ25lZCBpbnQgdmVjdG9yKQp7CiB1MzIgaXJyID0gYXBpY19y ZWFkKDB4MjAwICsgKHZlY3RvciAvIDMyICogMHgxMCkpOwoKIHJldHVybiAhIShpcnIgJiAoMVUg PDwgKHZlY3RvciAlIDMyKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBkZWZhdWx0X2dldF9hcGljX2lkKHVuc2ln bmVkIGxvbmcgeCkKewogdW5zaWduZWQgaW50IHZlciA9ICgoYXBpY19yZWFkKDB4MzApKSAmIDB4 RkZ1KTsKCiBpZiAoKCh2ZXIpID49IDB4MTQpIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCgoIDMq MzIrMjYpKSAmJiAoICgoKCggMyozMisyNikpPj41KT09KDApICYmICgxVUw8PCgoKCAzKjMyKzI2 KSkmMzEpICYgKCgxPDwoKCAwKjMyKyAwKSAmIDMxKSl8MHwoMTw8KCggMCozMisgNSkgJiAzMSkp fCgxPDwoKCAwKjMyKyA2KSAmIDMxKSl8ICgxPDwoKCAwKjMyKyA4KSAmIDMxKSl8MHwoMTw8KCgg MCozMisyNCkgJiAzMSkpfCgxPDwoKCAwKjMyKzE1KSAmIDMxKSl8ICgxPDwoKCAwKjMyKzI1KSAm IDMxKSl8KDE8PCgoIDAqMzIrMjYpICYgMzEpKSkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0o MSkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAoKDE8PCgoIDEqMzIrMjkpICYgMzEpKXww KSApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgyKSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMx KSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMykgJiYgKDFVTDw8KCgoIDMqMzIrMjYp KSYzMSkgJiAoKDE8PCgoIDMqMzIrMjApICYgMzEpKSkgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUp PT0oNCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAoMCkgKSkgfHwgKCgoKCAzKjMyKzI2 KSk+PjUpPT0oNSkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyoz MisyNikpPj41KT09KDYpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgo IDMqMzIrMjYpKT4+NSk9PSg3KSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwg KCgoKCAzKjMyKzI2KSk+PjUpPT0oOCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkp IHx8ICgoKCggMyozMisyNikpPj41KT09KDkpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYg MCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgxMCkgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYz MSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09KDExKSAmJiAoMVVMPDwoKCggMyozMisy NikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMTIpICYmICgxVUw8PCgoKCAz KjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9PSgxMykgJiYgKDFVTDw8 KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikpPj41KT09KDE0KSAmJiAo MVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMyKzI2KSk+PjUpPT0oMTUp ICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKCgoIDMqMzIrMjYpKT4+NSk9 PSgxNikgJiYgKDFVTDw8KCgoIDMqMzIrMjYpKSYzMSkgJiAwICkpIHx8ICgoKCggMyozMisyNikp Pj41KT09KDE3KSAmJiAoMVVMPDwoKCggMyozMisyNikpJjMxKSAmIDAgKSkgfHwgKCgoKCAzKjMy KzI2KSk+PjUpPT0oMTgpICYmICgxVUw8PCgoKCAzKjMyKzI2KSkmMzEpICYgMCApKSB8fCAoKGlu dCkoc2l6ZW9mKHN0cnVjdCB7IGludDooLSEhKDE5ICE9IDE5KSk7IH0pKSkgfHwgKChpbnQpKHNp emVvZihzdHJ1Y3QgeyBpbnQ6KC0hISgxOSAhPSAxOSkpOyB9KSkpKSA/IDEgOiB0ZXN0X2JpdCgo IDMqMzIrMjYpLCAodW5zaWduZWQgbG9uZyAqKSgoJmJvb3RfY3B1X2RhdGEpLT54ODZfY2FwYWJp bGl0eSkpKSkKICByZXR1cm4gKHggPj4gMjQpICYgMHhGRjsKIGVsc2UKICByZXR1cm4gKHggPj4g MjQpICYgMHgwRjsKfQoKCgoKCgoKZXh0ZXJuIHZvaWQgZ2VuZXJpY19iaWdzbXBfcHJvYmUodm9p ZCk7CgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaCIgMQojIDQ4NiAiLi9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9hcGljLmgiIDIKCgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rp b24oIi5kYXRhLi5wZXJjcHUiICIuLnJlYWRfbW9zdGx5IikpKSBfX3R5cGVvZl9fKHUxNikgeDg2 X2Jpb3NfY3B1X2FwaWNpZDsgZXh0ZXJuIF9fdHlwZW9mX18odTE2KSAqeDg2X2Jpb3NfY3B1X2Fw aWNpZF9lYXJseV9wdHI7IGV4dGVybiBfX3R5cGVvZl9fKHUxNikgeDg2X2Jpb3NfY3B1X2FwaWNp ZF9lYXJseV9tYXBbXTsKCmV4dGVybiBzdHJ1Y3QgYXBpYyBhcGljX25vb3A7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBp bnQgcmVhZF9hcGljX2lkKHZvaWQpCnsKIHVuc2lnbmVkIGludCByZWcgPSBhcGljX3JlYWQoMHgy MCk7CgogcmV0dXJuIGFwaWMtPmdldF9hcGljX2lkKHJlZyk7Cn0KCmV4dGVybiBpbnQgZGVmYXVs dF9hcGljX2lkX3ZhbGlkKHUzMiBhcGljaWQpOwpleHRlcm4gaW50IGRlZmF1bHRfYWNwaV9tYWR0 X29lbV9jaGVjayhjaGFyICosIGNoYXIgKik7CmV4dGVybiB2b2lkIGRlZmF1bHRfc2V0dXBfYXBp Y19yb3V0aW5nKHZvaWQpOwoKZXh0ZXJuIHUzMiBhcGljX2RlZmF1bHRfY2FsY19hcGljaWQodW5z aWduZWQgaW50IGNwdSk7CmV4dGVybiB1MzIgYXBpY19mbGF0X2NhbGNfYXBpY2lkKHVuc2lnbmVk IGludCBjcHUpOwoKZXh0ZXJuIGJvb2wgZGVmYXVsdF9jaGVja19hcGljaWRfdXNlZChwaHlzaWRf bWFza190ICptYXAsIGludCBhcGljaWQpOwpleHRlcm4gdm9pZCBkZWZhdWx0X2lvYXBpY19waHlz X2lkX21hcChwaHlzaWRfbWFza190ICpwaHlzX21hcCwgcGh5c2lkX21hc2tfdCAqcmV0bWFwKTsK ZXh0ZXJuIGludCBkZWZhdWx0X2NwdV9wcmVzZW50X3RvX2FwaWNpZChpbnQgbXBzX2NwdSk7CmV4 dGVybiBpbnQgZGVmYXVsdF9jaGVja19waHlzX2FwaWNpZF9wcmVzZW50KGludCBwaHlzX2FwaWNp ZCk7CgoKCgpib29sIGFwaWNfaWRfaXNfcHJpbWFyeV90aHJlYWQodW5zaWduZWQgaW50IGlkKTsK dm9pZCBhcGljX3NtdF91cGRhdGUodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgaXJxX2VudGVyKHZv aWQpOwpleHRlcm4gdm9pZCBpcnFfZXhpdCh2b2lkKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZW50ZXJpbmdfaXJxKHZvaWQp CnsKIGlycV9lbnRlcigpOwoga3ZtX3NldF9jcHVfbDF0Zl9mbHVzaF9sMWQoKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBl bnRlcmluZ19hY2tfaXJxKHZvaWQpCnsKIGVudGVyaW5nX2lycSgpOwogYWNrX0FQSUNfaXJxKCk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgaXBpX2VudGVyaW5nX2Fja19pcnEodm9pZCkKewogaXJxX2VudGVyKCk7CiBhY2tf QVBJQ19pcnEoKTsKIGt2bV9zZXRfY3B1X2wxdGZfZmx1c2hfbDFkKCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZXhpdGlu Z19pcnEodm9pZCkKewogaXJxX2V4aXQoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBleGl0aW5nX2Fja19pcnEodm9pZCkK ewogYWNrX0FQSUNfaXJxKCk7CiBpcnFfZXhpdCgpOwp9CgpleHRlcm4gdm9pZCBpb2FwaWNfemFw X2xvY2tzKHZvaWQpOwojIDE0ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NtcC5oIiAyCgojIDEg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vaW9fYXBpYy5oIiAxCgoKCgoKCgojIDEgIi4vYXJjaC94 ODYvaW5jbHVkZS9hc20vaXJxX3ZlY3RvcnMuaCIgMQojIDkgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vaW9fYXBpYy5oIiAyCiMgMjggIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vaW9fYXBpYy5oIgp1 bmlvbiBJT19BUElDX3JlZ18wMCB7CiB1MzIgcmF3Owogc3RydWN0IHsKICB1MzIgX19yZXNlcnZl ZF8yIDogMTQsCiAgIExUUyA6IDEsCiAgIGRlbGl2ZXJ5X3R5cGUgOiAxLAogICBfX3Jlc2VydmVk XzEgOiA4LAogICBJRCA6IDg7CiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSBiaXRzOwp9OwoK dW5pb24gSU9fQVBJQ19yZWdfMDEgewogdTMyIHJhdzsKIHN0cnVjdCB7CiAgdTMyIHZlcnNpb24g OiA4LAogICBfX3Jlc2VydmVkXzIgOiA3LAogICBQUlEgOiAxLAogICBlbnRyaWVzIDogOCwKICAg X19yZXNlcnZlZF8xIDogODsKIH0gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGJpdHM7Cn07Cgp1 bmlvbiBJT19BUElDX3JlZ18wMiB7CiB1MzIgcmF3Owogc3RydWN0IHsKICB1MzIgX19yZXNlcnZl ZF8yIDogMjQsCiAgIGFyYml0cmF0aW9uIDogNCwKICAgX19yZXNlcnZlZF8xIDogNDsKIH0gX19h dHRyaWJ1dGVfXyAoKHBhY2tlZCkpIGJpdHM7Cn07Cgp1bmlvbiBJT19BUElDX3JlZ18wMyB7CiB1 MzIgcmF3Owogc3RydWN0IHsKICB1MzIgYm9vdF9EVCA6IDEsCiAgIF9fcmVzZXJ2ZWRfMSA6IDMx OwogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSkgYml0czsKfTsKCnN0cnVjdCBJT19BUElDX3Jv dXRlX2VudHJ5IHsKIF9fdTMyIHZlY3RvciA6IDgsCiAgZGVsaXZlcnlfbW9kZSA6IDMsCgoKCiAg ZGVzdF9tb2RlIDogMSwKICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogIHBvbGFyaXR5IDogMSwKICBp cnIgOiAxLAogIHRyaWdnZXIgOiAxLAogIG1hc2sgOiAxLAogIF9fcmVzZXJ2ZWRfMiA6IDE1OwoK IF9fdTMyIF9fcmVzZXJ2ZWRfMyA6IDI0LAogIGRlc3QgOiA4Owp9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKTsKCnN0cnVjdCBJUl9JT19BUElDX3JvdXRlX2VudHJ5IHsKIF9fdTY0IHZlY3RvciA6 IDgsCiAgemVybyA6IDMsCiAgaW5kZXgyIDogMSwKICBkZWxpdmVyeV9zdGF0dXMgOiAxLAogIHBv bGFyaXR5IDogMSwKICBpcnIgOiAxLAogIHRyaWdnZXIgOiAxLAogIG1hc2sgOiAxLAogIHJlc2Vy dmVkIDogMzEsCiAgZm9ybWF0IDogMSwKICBpbmRleCA6IDE1Owp9IF9fYXR0cmlidXRlX18gKChw YWNrZWQpKTsKCnN0cnVjdCBpcnFfYWxsb2NfaW5mbzsKc3RydWN0IGlvYXBpY19kb21haW5fY2Zn OwojIDEyMyAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9pb19hcGljLmgiCmV4dGVybiBpbnQgbnJf aW9hcGljczsKCmV4dGVybiBpbnQgbXBjX2lvYXBpY19pZChpbnQgaW9hcGljKTsKZXh0ZXJuIHVu c2lnbmVkIGludCBtcGNfaW9hcGljX2FkZHIoaW50IGlvYXBpYyk7CgoKZXh0ZXJuIGludCBtcF9p cnFfZW50cmllczsKCgpleHRlcm4gc3RydWN0IG1wY19pbnRzcmMgbXBfaXJxc1soMjU2ICogNCld OwoKCmV4dGVybiBpbnQgc2tpcF9pb2FwaWNfc2V0dXA7CgoKZXh0ZXJuIGludCBub2lvYXBpY3F1 aXJrOwoKCmV4dGVybiBpbnQgbm9pb2FwaWNyZXJvdXRlOwoKZXh0ZXJuIHUzMiBnc2lfdG9wOwoK ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW9fYXBpY19pcnFzOwojIDE1NiAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS9pb19hcGljLmgiCnN0cnVjdCBpcnFfY2ZnOwpleHRlcm4gdm9pZCBpb2FwaWNfaW5z ZXJ0X3Jlc291cmNlcyh2b2lkKTsKZXh0ZXJuIGludCBhcmNoX2Vhcmx5X2lvYXBpY19pbml0KHZv aWQpOwoKZXh0ZXJuIGludCBzYXZlX2lvYXBpY19lbnRyaWVzKHZvaWQpOwpleHRlcm4gdm9pZCBt YXNrX2lvYXBpY19lbnRyaWVzKHZvaWQpOwpleHRlcm4gaW50IHJlc3RvcmVfaW9hcGljX2VudHJp ZXModm9pZCk7CgpleHRlcm4gdm9pZCBzZXR1cF9pb2FwaWNfaWRzX2Zyb21fbXBjKHZvaWQpOwpl eHRlcm4gdm9pZCBzZXR1cF9pb2FwaWNfaWRzX2Zyb21fbXBjX25vY2hlY2sodm9pZCk7CgpleHRl cm4gaW50IG1wX2ZpbmRfaW9hcGljKHUzMiBnc2kpOwpleHRlcm4gaW50IG1wX2ZpbmRfaW9hcGlj X3BpbihpbnQgaW9hcGljLCB1MzIgZ3NpKTsKZXh0ZXJuIGludCBtcF9tYXBfZ3NpX3RvX2lycSh1 MzIgZ3NpLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAgICAgICAgc3RydWN0IGlycV9hbGxvY19pbmZv ICppbmZvKTsKZXh0ZXJuIHZvaWQgbXBfdW5tYXBfaXJxKGludCBpcnEpOwpleHRlcm4gaW50IG1w X3JlZ2lzdGVyX2lvYXBpYyhpbnQgaWQsIHUzMiBhZGRyZXNzLCB1MzIgZ3NpX2Jhc2UsCiAgICAg ICAgIHN0cnVjdCBpb2FwaWNfZG9tYWluX2NmZyAqY2ZnKTsKZXh0ZXJuIGludCBtcF91bnJlZ2lz dGVyX2lvYXBpYyh1MzIgZ3NpX2Jhc2UpOwpleHRlcm4gaW50IG1wX2lvYXBpY19yZWdpc3RlcmVk KHUzMiBnc2lfYmFzZSk7CgpleHRlcm4gdm9pZCBpb2FwaWNfc2V0X2FsbG9jX2F0dHIoc3RydWN0 IGlycV9hbGxvY19pbmZvICppbmZvLAogICAgICBpbnQgbm9kZSwgaW50IHRyaWdnZXIsIGludCBw b2xhcml0eSk7CgpleHRlcm4gdm9pZCBtcF9zYXZlX2lycShzdHJ1Y3QgbXBjX2ludHNyYyAqbSk7 CgpleHRlcm4gdm9pZCBkaXNhYmxlX2lvYXBpY19zdXBwb3J0KHZvaWQpOwoKZXh0ZXJuIHZvaWQg X19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18o KF9fY29sZF9fKSkgaW9fYXBpY19pbml0X21hcHBpbmdzKHZvaWQpOwpleHRlcm4gdW5zaWduZWQg aW50IG5hdGl2ZV9pb19hcGljX3JlYWQodW5zaWduZWQgaW50IGFwaWMsIHVuc2lnbmVkIGludCBy ZWcpOwpleHRlcm4gdm9pZCBuYXRpdmVfcmVzdG9yZV9ib290X2lycV9tb2RlKHZvaWQpOwoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5z aWduZWQgaW50IGlvX2FwaWNfcmVhZCh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJl ZykKewogcmV0dXJuIHg4Nl9hcGljX29wcy5pb19hcGljX3JlYWQoYXBpYywgcmVnKTsKfQoKZXh0 ZXJuIHZvaWQgc2V0dXBfSU9fQVBJQyh2b2lkKTsKZXh0ZXJuIHZvaWQgZW5hYmxlX0lPX0FQSUMo dm9pZCk7CmV4dGVybiB2b2lkIGNsZWFyX0lPX0FQSUModm9pZCk7CmV4dGVybiB2b2lkIHJlc3Rv cmVfYm9vdF9pcnFfbW9kZSh2b2lkKTsKZXh0ZXJuIGludCBJT19BUElDX2dldF9QQ0lfaXJxX3Zl Y3RvcihpbnQgYnVzLCBpbnQgZGV2Zm4sIGludCBwaW4pOwpleHRlcm4gdm9pZCBwcmludF9JT19B UElDcyh2b2lkKTsKIyAxNiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9zbXAuaCIgMgoKCgoKCmV4 dGVybiBpbnQgc21wX251bV9zaWJsaW5nczsKZXh0ZXJuIHVuc2lnbmVkIGludCBudW1fcHJvY2Vz c29yczsKCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5y ZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfc2libGluZ19tYXA7 CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21v c3RseSIpKSkgX190eXBlb2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfY29yZV9tYXA7CmV4dGVybiBf X2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkg X190eXBlb2ZfXyhjcHVtYXNrX3Zhcl90KSBjcHVfZGllX21hcDsKCmV4dGVybiBfX2F0dHJpYnV0 ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2Zf XyhjcHVtYXNrX3Zhcl90KSBjcHVfbGxjX3NoYXJlZF9tYXA7CmV4dGVybiBfX2F0dHJpYnV0ZV9f KChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1 MTYpIGNwdV9sbGNfaWQ7CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVy Y3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyhpbnQpIGNwdV9udW1iZXI7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgY3B1bWFzayAqY3B1X2xsY19zaGFyZWRfbWFzayhpbnQgY3B1KQp7CiByZXR1cm4gKCooeyBk byB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X2xsY19zaGFyZWRf bWFwKSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsg KHsgdW5zaWduZWQgbG9uZyBfX3B0cjsgX19hc21fXyAoIiIgOiAiPXIiKF9fcHRyKSA6ICIwIigo dHlwZW9mKCooKCYoY3B1X2xsY19zaGFyZWRfbWFwKSkpKSAqKSgoJihjcHVfbGxjX3NoYXJlZF9t YXApKSkpKTsgKHR5cGVvZigodHlwZW9mKCooKCYoY3B1X2xsY19zaGFyZWRfbWFwKSkpKSAqKSgo JihjcHVfbGxjX3NoYXJlZF9tYXApKSkpKSAoX19wdHIgKyAoKChfX3Blcl9jcHVfb2Zmc2V0Wyhj cHUpXSkpKSk7IH0pOyB9KSk7Cn0KCmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0 YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1MTYpIHg4Nl9jcHVfdG9f YXBpY2lkOyBleHRlcm4gX190eXBlb2ZfXyh1MTYpICp4ODZfY3B1X3RvX2FwaWNpZF9lYXJseV9w dHI7IGV4dGVybiBfX3R5cGVvZl9fKHUxNikgeDg2X2NwdV90b19hcGljaWRfZWFybHlfbWFwW107 CmV4dGVybiBfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21v c3RseSIpKSkgX190eXBlb2ZfXyh1MzIpIHg4Nl9jcHVfdG9fYWNwaWlkOyBleHRlcm4gX190eXBl b2ZfXyh1MzIpICp4ODZfY3B1X3RvX2FjcGlpZF9lYXJseV9wdHI7IGV4dGVybiBfX3R5cGVvZl9f KHUzMikgeDg2X2NwdV90b19hY3BpaWRfZWFybHlfbWFwW107CmV4dGVybiBfX2F0dHJpYnV0ZV9f KChzZWN0aW9uKCIuZGF0YS4ucGVyY3B1IiAiLi5yZWFkX21vc3RseSIpKSkgX190eXBlb2ZfXyh1 MTYpIHg4Nl9iaW9zX2NwdV9hcGljaWQ7IGV4dGVybiBfX3R5cGVvZl9fKHUxNikgKng4Nl9iaW9z X2NwdV9hcGljaWRfZWFybHlfcHRyOyBleHRlcm4gX190eXBlb2ZfXyh1MTYpIHg4Nl9iaW9zX2Nw dV9hcGljaWRfZWFybHlfbWFwW107CgoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpzdHJ1Y3Qgc21w X29wcyB7CiB2b2lkICgqc21wX3ByZXBhcmVfYm9vdF9jcHUpKHZvaWQpOwogdm9pZCAoKnNtcF9w cmVwYXJlX2NwdXMpKHVuc2lnbmVkIG1heF9jcHVzKTsKIHZvaWQgKCpzbXBfY3B1c19kb25lKSh1 bnNpZ25lZCBtYXhfY3B1cyk7Cgogdm9pZCAoKnN0b3Bfb3RoZXJfY3B1cykoaW50IHdhaXQpOwog dm9pZCAoKmNyYXNoX3N0b3Bfb3RoZXJfY3B1cykodm9pZCk7CiB2b2lkICgqc21wX3NlbmRfcmVz Y2hlZHVsZSkoaW50IGNwdSk7CgogaW50ICgqY3B1X3VwKSh1bnNpZ25lZCBjcHUsIHN0cnVjdCB0 YXNrX3N0cnVjdCAqdGlkbGUpOwogaW50ICgqY3B1X2Rpc2FibGUpKHZvaWQpOwogdm9pZCAoKmNw dV9kaWUpKHVuc2lnbmVkIGludCBjcHUpOwogdm9pZCAoKnBsYXlfZGVhZCkodm9pZCk7Cgogdm9p ZCAoKnNlbmRfY2FsbF9mdW5jX2lwaSkoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2spOwogdm9p ZCAoKnNlbmRfY2FsbF9mdW5jX3NpbmdsZV9pcGkpKGludCBjcHUpOwp9OwoKCmV4dGVybiB2b2lk IHNldF9jcHVfc2libGluZ19tYXAoaW50IGNwdSk7CgoKZXh0ZXJuIHN0cnVjdCBzbXBfb3BzIHNt cF9vcHM7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHNtcF9zZW5kX3N0b3Aodm9pZCkKewogc21wX29wcy5zdG9wX290aGVyX2Nw dXMoMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgc3RvcF9vdGhlcl9jcHVzKHZvaWQpCnsKIHNtcF9vcHMuc3RvcF9vdGhl cl9jcHVzKDEpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHNtcF9wcmVwYXJlX2Jvb3RfY3B1KHZvaWQpCnsKIHNtcF9vcHMu c21wX3ByZXBhcmVfYm9vdF9jcHUoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzbXBfcHJlcGFyZV9jcHVzKHVuc2lnbmVk IGludCBtYXhfY3B1cykKewogc21wX29wcy5zbXBfcHJlcGFyZV9jcHVzKG1heF9jcHVzKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBzbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cykKewogc21wX29wcy5zbXBf Y3B1c19kb25lKG1heF9jcHVzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fY3B1X3VwKHVuc2lnbmVkIGludCBjcHUsIHN0 cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpCnsKIHJldHVybiBzbXBfb3BzLmNwdV91cChjcHUsIHRp ZGxlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fY3B1X2Rpc2FibGUodm9pZCkKewogcmV0dXJuIHNtcF9vcHMuY3B1X2Rp c2FibGUoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBfX2NwdV9kaWUodW5zaWduZWQgaW50IGNwdSkKewogc21wX29wcy5j cHVfZGllKGNwdSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGxheV9kZWFkKHZvaWQpCnsKIHNtcF9vcHMucGxheV9kZWFk KCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgc21wX3NlbmRfcmVzY2hlZHVsZShpbnQgY3B1KQp7CiBzbXBfb3BzLnNtcF9z ZW5kX3Jlc2NoZWR1bGUoY3B1KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBhcmNoX3NlbmRfY2FsbF9mdW5jdGlvbl9zaW5n bGVfaXBpKGludCBjcHUpCnsKIHNtcF9vcHMuc2VuZF9jYWxsX2Z1bmNfc2luZ2xlX2lwaShjcHUp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGFyY2hfc2VuZF9jYWxsX2Z1bmN0aW9uX2lwaV9tYXNrKGNvbnN0IHN0cnVjdCBj cHVtYXNrICptYXNrKQp7CiBzbXBfb3BzLnNlbmRfY2FsbF9mdW5jX2lwaShtYXNrKTsKfQoKdm9p ZCBjcHVfZGlzYWJsZV9jb21tb24odm9pZCk7CnZvaWQgbmF0aXZlX3NtcF9wcmVwYXJlX2Jvb3Rf Y3B1KHZvaWQpOwp2b2lkIG5hdGl2ZV9zbXBfcHJlcGFyZV9jcHVzKHVuc2lnbmVkIGludCBtYXhf Y3B1cyk7CnZvaWQgY2FsY3VsYXRlX21heF9sb2dpY2FsX3BhY2thZ2VzKHZvaWQpOwp2b2lkIG5h dGl2ZV9zbXBfY3B1c19kb25lKHVuc2lnbmVkIGludCBtYXhfY3B1cyk7CmludCBjb21tb25fY3B1 X3VwKHVuc2lnbmVkIGludCBjcHVudW0sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpOwppbnQg bmF0aXZlX2NwdV91cCh1bnNpZ25lZCBpbnQgY3B1bnVtLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRp ZGxlKTsKaW50IG5hdGl2ZV9jcHVfZGlzYWJsZSh2b2lkKTsKaW50IGNvbW1vbl9jcHVfZGllKHVu c2lnbmVkIGludCBjcHUpOwp2b2lkIG5hdGl2ZV9jcHVfZGllKHVuc2lnbmVkIGludCBjcHUpOwp2 b2lkIGhsdF9wbGF5X2RlYWQodm9pZCk7CnZvaWQgbmF0aXZlX3BsYXlfZGVhZCh2b2lkKTsKdm9p ZCBwbGF5X2RlYWRfY29tbW9uKHZvaWQpOwp2b2lkIHdiaW52ZF9vbl9jcHUoaW50IGNwdSk7Cmlu dCB3YmludmRfb25fYWxsX2NwdXModm9pZCk7Cgp2b2lkIG5hdGl2ZV9zbXBfc2VuZF9yZXNjaGVk dWxlKGludCBjcHUpOwp2b2lkIG5hdGl2ZV9zZW5kX2NhbGxfZnVuY19pcGkoY29uc3Qgc3RydWN0 IGNwdW1hc2sgKm1hc2spOwp2b2lkIG5hdGl2ZV9zZW5kX2NhbGxfZnVuY19zaW5nbGVfaXBpKGlu dCBjcHUpOwp2b2lkIHg4Nl9pZGxlX3RocmVhZF9pbml0KHVuc2lnbmVkIGludCBjcHUsIHN0cnVj dCB0YXNrX3N0cnVjdCAqaWRsZSk7Cgp2b2lkIHNtcF9zdG9yZV9ib290X2NwdV9pbmZvKHZvaWQp Owp2b2lkIHNtcF9zdG9yZV9jcHVfaW5mbyhpbnQgaWQpOwoKIF9fYXR0cmlidXRlX18oKF9fZXh0 ZXJuYWxseV92aXNpYmxlX18pKSB2b2lkIHNtcF9yZWJvb3RfaW50ZXJydXB0KHZvaWQpOwpfX2F0 dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSkgdm9pZCBzbXBfcmVzY2hlZHVsZV9p bnRlcnJ1cHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwpfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFs bHlfdmlzaWJsZV9fKSkgdm9pZCBzbXBfY2FsbF9mdW5jdGlvbl9pbnRlcnJ1cHQoc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpOwpfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSkgdm9p ZCBzbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGVfaW50ZXJydXB0KHN0cnVjdCBwdF9yZWdzICpyKTsK IyAxODUgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc21wLmgiCmV4dGVybiB1bnNpZ25lZCBkaXNh YmxlZF9jcHVzOwoKCmV4dGVybiBpbnQgaGFyZF9zbXBfcHJvY2Vzc29yX2lkKHZvaWQpOwojIDY4 ICIuL2luY2x1ZGUvbGludXgvc21wLmgiIDIKIyA3NyAiLi9pbmNsdWRlL2xpbnV4L3NtcC5oIgpl eHRlcm4gdm9pZCBzbXBfc2VuZF9zdG9wKHZvaWQpOwoKCgoKZXh0ZXJuIHZvaWQgc21wX3NlbmRf cmVzY2hlZHVsZShpbnQgY3B1KTsKCgoKCgpleHRlcm4gdm9pZCBzbXBfcHJlcGFyZV9jcHVzKHVu c2lnbmVkIGludCBtYXhfY3B1cyk7CgoKCgpleHRlcm4gaW50IF9fY3B1X3VwKHVuc2lnbmVkIGlu dCBjcHVudW0sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGlkbGUpOwoKCgoKZXh0ZXJuIHZvaWQgc21w X2NwdXNfZG9uZSh1bnNpZ25lZCBpbnQgbWF4X2NwdXMpOwoKCgoKdm9pZCBzbXBfY2FsbF9mdW5j dGlvbihzbXBfY2FsbF9mdW5jX3QgZnVuYywgdm9pZCAqaW5mbywgaW50IHdhaXQpOwp2b2lkIHNt cF9jYWxsX2Z1bmN0aW9uX21hbnkoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ssCiAgICAgICBz bXBfY2FsbF9mdW5jX3QgZnVuYywgdm9pZCAqaW5mbywgYm9vbCB3YWl0KTsKCmludCBzbXBfY2Fs bF9mdW5jdGlvbl9hbnkoY29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ssCiAgICAgc21wX2NhbGxf ZnVuY190IGZ1bmMsIHZvaWQgKmluZm8sIGludCB3YWl0KTsKCnZvaWQga2lja19hbGxfY3B1c19z eW5jKHZvaWQpOwp2b2lkIHdha2VfdXBfYWxsX2lkbGVfY3B1cyh2b2lkKTsKCgoKCnZvaWQgX19h dHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9f Y29sZF9fKSkgY2FsbF9mdW5jdGlvbl9pbml0KHZvaWQpOwp2b2lkIGdlbmVyaWNfc21wX2NhbGxf ZnVuY3Rpb25fc2luZ2xlX2ludGVycnVwdCh2b2lkKTsKCgoKCgoKCnZvaWQgc21wX3ByZXBhcmVf Ym9vdF9jcHUodm9pZCk7CgpleHRlcm4gdW5zaWduZWQgaW50IHNldHVwX21heF9jcHVzOwpleHRl cm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRy aWJ1dGVfXygoX19jb2xkX18pKSBzZXR1cF9ucl9jcHVfaWRzKHZvaWQpOwpleHRlcm4gdm9pZCBf X2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygo X19jb2xkX18pKSBzbXBfaW5pdCh2b2lkKTsKCmV4dGVybiBpbnQgX19ib290X2NwdV9pZDsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCBnZXRfYm9vdF9jcHVfaWQodm9pZCkKewogcmV0dXJuIF9fYm9vdF9jcHVfaWQ7Cn0KIyAyMjgg Ii4vaW5jbHVkZS9saW51eC9zbXAuaCIKZXh0ZXJuIHZvaWQgYXJjaF9kaXNhYmxlX3NtcF9zdXBw b3J0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgYXJjaF9lbmFibGVfbm9uYm9vdF9jcHVzX2JlZ2luKHZv aWQpOwpleHRlcm4gdm9pZCBhcmNoX2VuYWJsZV9ub25ib290X2NwdXNfZW5kKHZvaWQpOwoKdm9p ZCBzbXBfc2V0dXBfcHJvY2Vzc29yX2lkKHZvaWQpOwoKaW50IHNtcF9jYWxsX29uX2NwdSh1bnNp Z25lZCBpbnQgY3B1LCBpbnQgKCpmdW5jKSh2b2lkICopLCB2b2lkICpwYXIsCiAgICAgIGJvb2wg cGh5cyk7CgoKaW50IHNtcGNmZF9wcmVwYXJlX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKaW50IHNt cGNmZF9kZWFkX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKaW50IHNtcGNmZF9keWluZ19jcHUodW5z aWduZWQgaW50IGNwdSk7CiMgOCAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS5oIiAyCiMgNjUgIi4v aW5jbHVkZS9saW51eC9wZXJjcHUuaCIKZXh0ZXJuIHZvaWQgKnBjcHVfYmFzZV9hZGRyOwpleHRl cm4gY29uc3QgdW5zaWduZWQgbG9uZyAqcGNwdV91bml0X29mZnNldHM7CgpzdHJ1Y3QgcGNwdV9n cm91cF9pbmZvIHsKIGludCBucl91bml0czsKIHVuc2lnbmVkIGxvbmcgYmFzZV9vZmZzZXQ7CiB1 bnNpZ25lZCBpbnQgKmNwdV9tYXA7Cgp9OwoKc3RydWN0IHBjcHVfYWxsb2NfaW5mbyB7CiBzaXpl X3Qgc3RhdGljX3NpemU7CiBzaXplX3QgcmVzZXJ2ZWRfc2l6ZTsKIHNpemVfdCBkeW5fc2l6ZTsK IHNpemVfdCB1bml0X3NpemU7CiBzaXplX3QgYXRvbV9zaXplOwogc2l6ZV90IGFsbG9jX3NpemU7 CiBzaXplX3QgX19haV9zaXplOwogaW50IG5yX2dyb3VwczsKIHN0cnVjdCBwY3B1X2dyb3VwX2lu Zm8gZ3JvdXBzW107Cn07CgplbnVtIHBjcHVfZmMgewogUENQVV9GQ19BVVRPLAogUENQVV9GQ19F TUJFRCwKIFBDUFVfRkNfUEFHRSwKCiBQQ1BVX0ZDX05SLAp9OwpleHRlcm4gY29uc3QgY2hhciAq IGNvbnN0IHBjcHVfZmNfbmFtZXNbUENQVV9GQ19OUl07CgpleHRlcm4gZW51bSBwY3B1X2ZjIHBj cHVfY2hvc2VuX2ZjOwoKdHlwZWRlZiB2b2lkICogKCpwY3B1X2ZjX2FsbG9jX2ZuX3QpKHVuc2ln bmVkIGludCBjcHUsIHNpemVfdCBzaXplLAogICAgICAgICBzaXplX3QgYWxpZ24pOwp0eXBlZGVm IHZvaWQgKCpwY3B1X2ZjX2ZyZWVfZm5fdCkodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CnR5cGVk ZWYgdm9pZCAoKnBjcHVfZmNfcG9wdWxhdGVfcHRlX2ZuX3QpKHVuc2lnbmVkIGxvbmcgYWRkcik7 CnR5cGVkZWYgaW50IChwY3B1X2ZjX2NwdV9kaXN0YW5jZV9mbl90KSh1bnNpZ25lZCBpbnQgZnJv bSwgdW5zaWduZWQgaW50IHRvKTsKCmV4dGVybiBzdHJ1Y3QgcGNwdV9hbGxvY19pbmZvICogX19h dHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9f Y29sZF9fKSkgcGNwdV9hbGxvY19hbGxvY19pbmZvKGludCBucl9ncm91cHMsCiAgICAgICAgICAg IGludCBucl91bml0cyk7CmV4dGVybiB2b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIu aW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpIHBjcHVfZnJlZV9hbGxvY19p bmZvKHN0cnVjdCBwY3B1X2FsbG9jX2luZm8gKmFpKTsKCmV4dGVybiB2b2lkIF9fYXR0cmlidXRl X18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykp IHBjcHVfc2V0dXBfZmlyc3RfY2h1bmsoY29uc3Qgc3RydWN0IHBjcHVfYWxsb2NfaW5mbyAqYWks CiAgICAgIHZvaWQgKmJhc2VfYWRkcik7CgoKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3Nl Y3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBwY3B1X2Vt YmVkX2ZpcnN0X2NodW5rKHNpemVfdCByZXNlcnZlZF9zaXplLCBzaXplX3QgZHluX3NpemUsCiAg ICBzaXplX3QgYXRvbV9zaXplLAogICAgcGNwdV9mY19jcHVfZGlzdGFuY2VfZm5fdCBjcHVfZGlz dGFuY2VfZm4sCiAgICBwY3B1X2ZjX2FsbG9jX2ZuX3QgYWxsb2NfZm4sCiAgICBwY3B1X2ZjX2Zy ZWVfZm5fdCBmcmVlX2ZuKTsKCgoKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25f XygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBwY3B1X3BhZ2VfZmly c3RfY2h1bmsoc2l6ZV90IHJlc2VydmVkX3NpemUsCiAgICBwY3B1X2ZjX2FsbG9jX2ZuX3QgYWxs b2NfZm4sCiAgICBwY3B1X2ZjX2ZyZWVfZm5fdCBmcmVlX2ZuLAogICAgcGNwdV9mY19wb3B1bGF0 ZV9wdGVfZm5fdCBwb3B1bGF0ZV9wdGVfZm4pOwoKCmV4dGVybiB2b2lkICpfX2FsbG9jX3Jlc2Vy dmVkX3BlcmNwdShzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWduKTsKZXh0ZXJuIGJvb2wgX19pc19r ZXJuZWxfcGVyY3B1X2FkZHJlc3ModW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nICpj YW5fYWRkcik7CmV4dGVybiBib29sIGlzX2tlcm5lbF9wZXJjcHVfYWRkcmVzcyh1bnNpZ25lZCBs b25nIGFkZHIpOwoKCgoKCmV4dGVybiB2b2lkICpfX2FsbG9jX3BlcmNwdV9nZnAoc2l6ZV90IHNp emUsIHNpemVfdCBhbGlnbiwgZ2ZwX3QgZ2ZwKTsKZXh0ZXJuIHZvaWQgKl9fYWxsb2NfcGVyY3B1 KHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ24pOwpleHRlcm4gdm9pZCBmcmVlX3BlcmNwdSh2b2lk ICpfX3BkYXRhKTsKZXh0ZXJuIHBoeXNfYWRkcl90IHBlcl9jcHVfcHRyX3RvX3BoeXModm9pZCAq YWRkcik7CiMgMTQ2ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LmgiCmV4dGVybiB1bnNpZ25lZCBs b25nIHBjcHVfbnJfcGFnZXModm9pZCk7CiMgMTAgIi4vaW5jbHVkZS9saW51eC9hcmNoX3RvcG9s b2d5LmgiIDIKCnZvaWQgdG9wb2xvZ3lfbm9ybWFsaXplX2NwdV9zY2FsZSh2b2lkKTsKaW50IHRv cG9sb2d5X3VwZGF0ZV9jcHVfdG9wb2xvZ3kodm9pZCk7CgpzdHJ1Y3QgZGV2aWNlX25vZGU7CmJv b2wgdG9wb2xvZ3lfcGFyc2VfY3B1X2NhcGFjaXR5KHN0cnVjdCBkZXZpY2Vfbm9kZSAqY3B1X25v ZGUsIGludCBjcHUpOwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJj cHUiICIiKSkpIF9fdHlwZW9mX18odW5zaWduZWQgbG9uZykgY3B1X3NjYWxlOwoKc3RydWN0IHNj aGVkX2RvbWFpbjsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkKdW5zaWduZWQgbG9uZyB0b3BvbG9neV9nZXRfY3B1X3NjYWxlKGludCBjcHUp CnsKIHJldHVybiAoKih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigo JihjcHVfc2NhbGUpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hp bGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIp IDogIjAiKCh0eXBlb2YoKigoJihjcHVfc2NhbGUpKSkpICopKCgmKGNwdV9zY2FsZSkpKSkpOyAo dHlwZW9mKCh0eXBlb2YoKigoJihjcHVfc2NhbGUpKSkpICopKCgmKGNwdV9zY2FsZSkpKSkpIChf X3B0ciArICgoKF9fcGVyX2NwdV9vZmZzZXRbKGNwdSldKSkpKTsgfSk7IH0pKTsKfQoKdm9pZCB0 b3BvbG9neV9zZXRfY3B1X3NjYWxlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgY2Fw YWNpdHkpOwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5kYXRhLi5wZXJjcHUiICIi KSkpIF9fdHlwZW9mX18odW5zaWduZWQgbG9uZykgZnJlcV9zY2FsZTsKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpCnVuc2lnbmVkIGxvbmcg dG9wb2xvZ3lfZ2V0X2ZyZXFfc2NhbGUoaW50IGNwdSkKewogcmV0dXJuICgqKHsgZG8geyBjb25z dCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGZyZXFfc2NhbGUpKSArIDApKSgodm9p ZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25n IF9fcHRyOyBfX2FzbV9fICgiIiA6ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihmcmVx X3NjYWxlKSkpKSAqKSgoJihmcmVxX3NjYWxlKSkpKSk7ICh0eXBlb2YoKHR5cGVvZigqKCgmKGZy ZXFfc2NhbGUpKSkpICopKCgmKGZyZXFfc2NhbGUpKSkpKSAoX19wdHIgKyAoKChfX3Blcl9jcHVf b2Zmc2V0WyhjcHUpXSkpKSk7IH0pOyB9KSk7Cn0KCnN0cnVjdCBjcHVfdG9wb2xvZ3kgewogaW50 IHRocmVhZF9pZDsKIGludCBjb3JlX2lkOwogaW50IHBhY2thZ2VfaWQ7CiBpbnQgbGxjX2lkOwog Y3B1bWFza190IHRocmVhZF9zaWJsaW5nOwogY3B1bWFza190IGNvcmVfc2libGluZzsKIGNwdW1h c2tfdCBsbGNfc2libGluZzsKfTsKIyAzMSAiLi9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgiIDIK IyA0NiAiLi9pbmNsdWRlL2xpbnV4L3RvcG9sb2d5LmgiCmludCBhcmNoX3VwZGF0ZV9jcHVfdG9w b2xvZ3kodm9pZCk7CiMgNzUgIi4vaW5jbHVkZS9saW51eC90b3BvbG9neS5oIgpleHRlcm4gaW50 IF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuZGF0YS4ucmVhZF9tb3N0bHkiKSkpIG5vZGVf cmVjbGFpbV9kaXN0YW5jZTsKIyAxNzcgIi4vaW5jbHVkZS9saW51eC90b3BvbG9neS5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg bnVtYV9tZW1faWQodm9pZCkKewogcmV0dXJuIG51bWFfbm9kZV9pZCgpOwp9CgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBub2Rl X3RvX21lbV9ub2RlKGludCBub2RlKQp7CiByZXR1cm4gbm9kZTsKfQojIDIxOSAiLi9pbmNsdWRl L2xpbnV4L3RvcG9sb2d5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfc210X21hc2soaW50 IGNwdSkKewogcmV0dXJuICgoKih7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5 cGVvZigoJihjcHVfc2libGluZ19tYXApKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92 ZXJpZnk7IH0gd2hpbGUgKDApOyAoeyB1bnNpZ25lZCBsb25nIF9fcHRyOyBfX2FzbV9fICgiIiA6 ICI9ciIoX19wdHIpIDogIjAiKCh0eXBlb2YoKigoJihjcHVfc2libGluZ19tYXApKSkpICopKCgm KGNwdV9zaWJsaW5nX21hcCkpKSkpOyAodHlwZW9mKCh0eXBlb2YoKigoJihjcHVfc2libGluZ19t YXApKSkpICopKCgmKGNwdV9zaWJsaW5nX21hcCkpKSkpIChfX3B0ciArICgoKF9fcGVyX2NwdV9v ZmZzZXRbKGNwdSldKSkpKTsgfSk7IH0pKSk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1 X2NwdV9tYXNrKGludCBjcHUpCnsKIHJldHVybiAoKHZvaWQpKCh2b2lkKShjcHUpLDApLCAoKGNv bnN0IHN0cnVjdCBjcHVtYXNrICopJl9fY3B1X29ubGluZV9tYXNrKSk7Cn0KIyAxMCAiLi9pbmNs dWRlL2xpbnV4L2dmcC5oIiAyCgpzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7CiMgMzA4ICIuL2luY2x1 ZGUvbGludXgvZ2ZwLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCBnZnBmbGFnc190b19taWdyYXRldHlwZShjb25zdCBnZnBfdCBn ZnBfZmxhZ3MpCnsKICgodm9pZCkoc2l6ZW9mKCggbG9uZykoKGdmcF9mbGFncyAmICgoKCBnZnBf dCkweDEwdSl8KCggZ2ZwX3QpMHgwOHUpKSkgPT0gKCgoIGdmcF90KTB4MTB1KXwoKCBnZnBfdCkw eDA4dSkpKSkpKTsKIGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMzExKHZv aWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiKDFV TCA8PCBHRlBfTU9WQUJMRV9TSElGVCkgIT0gX19fR0ZQX01PVkFCTEUiKSkpOyBpZiAoISghKCgx VUwgPDwgMykgIT0gMHgwOHUpKSkgX19jb21waWxldGltZV9hc3NlcnRfMzExKCk7IH0gd2hpbGUg KDApOwogZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8zMTIodm9pZCkgX19h dHRyaWJ1dGVfXygoX19lcnJvcl9fKCJCVUlMRF9CVUdfT04gZmFpbGVkOiAiICIoX19fR0ZQX01P VkFCTEUgPj4gR0ZQX01PVkFCTEVfU0hJRlQpICE9IE1JR1JBVEVfTU9WQUJMRSIpKSk7IGlmICgh KCEoKDB4MDh1ID4+IDMpICE9IE1JR1JBVEVfTU9WQUJMRSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF8zMTIoKTsgfSB3aGlsZSAoMCk7CgogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEocGFnZV9ncm91 cF9ieV9tb2JpbGl0eV9kaXNhYmxlZCksIDApKQogIHJldHVybiBNSUdSQVRFX1VOTU9WQUJMRTsK CgogcmV0dXJuIChnZnBfZmxhZ3MgJiAoKCggZ2ZwX3QpMHgxMHUpfCgoIGdmcF90KTB4MDh1KSkp ID4+IDM7Cn0KCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBnZnBmbGFnc19hbGxvd19ibG9ja2luZyhjb25zdCBnZnBfdCBnZnBf ZmxhZ3MpCnsKIHJldHVybiAhIShnZnBfZmxhZ3MgJiAoKCBnZnBfdCkweDQwMHUpKTsKfQojIDM0 NSAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdmcGZsYWdzX25vcm1hbF9jb250ZXh0KGNv bnN0IGdmcF90IGdmcF9mbGFncykKewogcmV0dXJuIChnZnBfZmxhZ3MgJiAoKCggZ2ZwX3QpMHg0 MDB1KSB8ICgoIGdmcF90KTB4MjAwMDB1KSkpID09CiAgKCggZ2ZwX3QpMHg0MDB1KTsKfQojIDQ0 MSAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIHpvbmVfdHlwZSBnZnBfem9uZShnZnBfdCBm bGFncykKewogZW51bSB6b25lX3R5cGUgejsKIGludCBiaXQgPSAoIGludCkgKGZsYWdzICYgKCgo IGdmcF90KTB4MDF1KXwoKCBnZnBfdCkweDAydSl8KCggZ2ZwX3QpMHgwNHUpfCgoIGdmcF90KTB4 MDh1KSkpOwoKIHogPSAoKCAoWk9ORV9OT1JNQUwgPDwgMCAqIDIpIHwgKFpPTkVfRE1BIDw8IDB4 MDF1ICogMikgfCAoWk9ORV9OT1JNQUwgPDwgMHgwMnUgKiAyKSB8IChaT05FX0RNQTMyIDw8IDB4 MDR1ICogMikgfCAoWk9ORV9OT1JNQUwgPDwgMHgwOHUgKiAyKSB8IChaT05FX0RNQSA8PCAoMHgw OHUgfCAweDAxdSkgKiAyKSB8IChaT05FX01PVkFCTEUgPDwgKDB4MDh1IHwgMHgwMnUpICogMikg fCAoWk9ORV9ETUEzMiA8PCAoMHgwOHUgfCAweDA0dSkgKiAyKSkgPj4gKGJpdCAqIDIpKSAmCiAg ICAgICgoMSA8PCAyKSAtIDEpOwogKCh2b2lkKShzaXplb2YoKCBsb25nKSgoKCAxIDw8ICgweDAx dSB8IDB4MDJ1KSB8IDEgPDwgKDB4MDF1IHwgMHgwNHUpIHwgMSA8PCAoMHgwNHUgfCAweDAydSkg fCAxIDw8ICgweDAxdSB8IDB4MDR1IHwgMHgwMnUpIHwgMSA8PCAoMHgwOHUgfCAweDAydSB8IDB4 MDF1KSB8IDEgPDwgKDB4MDh1IHwgMHgwNHUgfCAweDAxdSkgfCAxIDw8ICgweDA4dSB8IDB4MDR1 IHwgMHgwMnUpIHwgMSA8PCAoMHgwOHUgfCAweDA0dSB8IDB4MDF1IHwgMHgwMnUpICkgPj4gYml0 KSAmIDEpKSkpOwogcmV0dXJuIHo7Cn0KIyA0NTkgIi4vaW5jbHVkZS9saW51eC9nZnAuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 IGdmcF96b25lbGlzdChnZnBfdCBmbGFncykKewoKCgoKIHJldHVybiBaT05FTElTVF9GQUxMQkFD SzsKfQojIDQ3NyAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qgem9uZWxpc3QgKm5vZGVf em9uZWxpc3QoaW50IG5pZCwgZ2ZwX3QgZmxhZ3MpCnsKIHJldHVybiAoJmNvbnRpZ19wYWdlX2Rh dGEpLT5ub2RlX3pvbmVsaXN0cyArIGdmcF96b25lbGlzdChmbGFncyk7Cn0KCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGFyY2hf ZnJlZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb3JkZXIpIHsgfQoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXJjaF9h bGxvY19wYWdlKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb3JkZXIpIHsgfQoKCnN0cnVjdCBwYWdl ICoKX19hbGxvY19wYWdlc19ub2RlbWFzayhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9y ZGVyLCBpbnQgcHJlZmVycmVkX25pZCwKICAgICAgIG5vZGVtYXNrX3QgKm5vZGVtYXNrKTsKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0 cnVjdCBwYWdlICoKX19hbGxvY19wYWdlcyhnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9y ZGVyLCBpbnQgcHJlZmVycmVkX25pZCkKewogcmV0dXJuIF9fYWxsb2NfcGFnZXNfbm9kZW1hc2so Z2ZwX21hc2ssIG9yZGVyLCBwcmVmZXJyZWRfbmlkLCAoKHZvaWQgKikwKSk7Cn0KCgoKCgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgcGFnZSAqCl9fYWxsb2NfcGFnZXNfbm9kZShpbnQgbmlkLCBnZnBfdCBnZnBfbWFzaywgdW5z aWduZWQgaW50IG9yZGVyKQp7CiAoKHZvaWQpKHNpemVvZigoIGxvbmcpKG5pZCA8IDAgfHwgbmlk ID49ICgxIDw8IDApKSkpKTsKICgodm9pZCkoc2l6ZW9mKCggbG9uZykoKGdmcF9tYXNrICYgKCgg Z2ZwX3QpMHgyMDAwMDB1KSkgJiYgIW5vZGVfc3RhdGUoKG5pZCksIE5fT05MSU5FKSkpKSk7Cgog cmV0dXJuIF9fYWxsb2NfcGFnZXMoZ2ZwX21hc2ssIG9yZGVyLCBuaWQpOwp9CgoKCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVj dCBwYWdlICphbGxvY19wYWdlc19ub2RlKGludCBuaWQsIGdmcF90IGdmcF9tYXNrLAogICAgICB1 bnNpZ25lZCBpbnQgb3JkZXIpCnsKIGlmIChuaWQgPT0gKC0xKSkKICBuaWQgPSBudW1hX21lbV9p ZCgpOwoKIHJldHVybiBfX2FsbG9jX3BhZ2VzX25vZGUobmlkLCBnZnBfbWFzaywgb3JkZXIpOwp9 CiMgNTUzICIuL2luY2x1ZGUvbGludXgvZ2ZwLmgiCmV4dGVybiB1bnNpZ25lZCBsb25nIF9fZ2V0 X2ZyZWVfcGFnZXMoZ2ZwX3QgZ2ZwX21hc2ssIHVuc2lnbmVkIGludCBvcmRlcik7CmV4dGVybiB1 bnNpZ25lZCBsb25nIGdldF96ZXJvZWRfcGFnZShnZnBfdCBnZnBfbWFzayk7Cgp2b2lkICphbGxv Y19wYWdlc19leGFjdChzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2spOwp2b2lkIGZyZWVfcGFn ZXNfZXhhY3Qodm9pZCAqdmlydCwgc2l6ZV90IHNpemUpOwp2b2lkICogX19hdHRyaWJ1dGVfXygo X19zZWN0aW9uX18oIi5tZW1pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGFsbG9jX3BhZ2VzX2V4YWN0 X25pZChpbnQgbmlkLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwX21hc2spOwoKCgoKCgoKZXh0ZXJu IHZvaWQgX19mcmVlX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIp OwpleHRlcm4gdm9pZCBmcmVlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgaW50 IG9yZGVyKTsKZXh0ZXJuIHZvaWQgZnJlZV91bnJlZl9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKTsK ZXh0ZXJuIHZvaWQgZnJlZV91bnJlZl9wYWdlX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCk7 CgpzdHJ1Y3QgcGFnZV9mcmFnX2NhY2hlOwpleHRlcm4gdm9pZCBfX3BhZ2VfZnJhZ19jYWNoZV9k cmFpbihzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IGNvdW50KTsKZXh0ZXJuIHZvaWQg KnBhZ2VfZnJhZ19hbGxvYyhzdHJ1Y3QgcGFnZV9mcmFnX2NhY2hlICpuYywKICAgICAgICB1bnNp Z25lZCBpbnQgZnJhZ3N6LCBnZnBfdCBnZnBfbWFzayk7CmV4dGVybiB2b2lkIHBhZ2VfZnJhZ19m cmVlKHZvaWQgKmFkZHIpOwoKCgoKdm9pZCBwYWdlX2FsbG9jX2luaXQodm9pZCk7CnZvaWQgZHJh aW5fem9uZV9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfcGFnZXMgKnBj cCk7CnZvaWQgZHJhaW5fYWxsX3BhZ2VzKHN0cnVjdCB6b25lICp6b25lKTsKdm9pZCBkcmFpbl9s b2NhbF9wYWdlcyhzdHJ1Y3Qgem9uZSAqem9uZSk7Cgp2b2lkIHBhZ2VfYWxsb2NfaW5pdF9sYXRl KHZvaWQpOwojIDU5NCAiLi9pbmNsdWRlL2xpbnV4L2dmcC5oIgpleHRlcm4gZ2ZwX3QgZ2ZwX2Fs bG93ZWRfbWFzazsKCgpib29sIGdmcF9wZm1lbWFsbG9jX2FsbG93ZWQoZ2ZwX3QgZ2ZwX21hc2sp OwoKZXh0ZXJuIHZvaWQgcG1fcmVzdHJpY3RfZ2ZwX21hc2sodm9pZCk7CmV4dGVybiB2b2lkIHBt X3Jlc3RvcmVfZ2ZwX21hc2sodm9pZCk7CgoKZXh0ZXJuIGJvb2wgcG1fc3VzcGVuZGVkX3N0b3Jh Z2Uodm9pZCk7CiMgNjEzICIuL2luY2x1ZGUvbGludXgvZ2ZwLmgiCmV4dGVybiBpbnQgYWxsb2Nf Y29udGlnX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogICAg ICAgICB1bnNpZ25lZCBtaWdyYXRldHlwZSwgZ2ZwX3QgZ2ZwX21hc2spOwpleHRlcm4gc3RydWN0 IHBhZ2UgKmFsbG9jX2NvbnRpZ19wYWdlcyh1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLCBnZnBfdCBn ZnBfbWFzaywKICAgICAgICAgICBpbnQgbmlkLCBub2RlbWFza190ICpub2RlbWFzayk7Cgp2b2lk IGZyZWVfY29udGlnX3JhbmdlKHVuc2lnbmVkIGxvbmcgcGZuLCB1bnNpZ25lZCBpbnQgbnJfcGFn ZXMpOwojIDE2ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L292ZXJmbG93LmgiIDEKIyAyNTMgIi4vaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc2l6ZV90IGFycmF5X3NpemUoc2l6ZV90 IGEsIHNpemVfdCBiKQp7CiBzaXplX3QgYnl0ZXM7CgogaWYgKCh7IHR5cGVvZihhKSBfX2EgPSAo YSk7IHR5cGVvZihiKSBfX2IgPSAoYik7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAo dm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVs X292ZXJmbG93KF9fYSwgX19iLCBfX2QpOyB9KSkKICByZXR1cm4gKH4oc2l6ZV90KTApOwoKIHJl dHVybiBieXRlczsKfQojIDI3NSAiLi9pbmNsdWRlL2xpbnV4L292ZXJmbG93LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzaXplX3QgYXJyYXkzX3NpemUoc2l6ZV90 IGEsIHNpemVfdCBiLCBzaXplX3QgYykKewogc2l6ZV90IGJ5dGVzOwoKIGlmICgoeyB0eXBlb2Yo YSkgX19hID0gKGEpOyB0eXBlb2YoYikgX19iID0gKGIpOyB0eXBlb2YoJmJ5dGVzKSBfX2QgPSAo JmJ5dGVzKTsgKHZvaWQpICgmX19hID09ICZfX2IpOyAodm9pZCkgKCZfX2EgPT0gX19kKTsgX19i dWlsdGluX211bF9vdmVyZmxvdyhfX2EsIF9fYiwgX19kKTsgfSkpCiAgcmV0dXJuICh+KHNpemVf dCkwKTsKIGlmICgoeyB0eXBlb2YoYnl0ZXMpIF9fYSA9IChieXRlcyk7IHR5cGVvZihjKSBfX2Ig PSAoYyk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9f Yik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19i LCBfX2QpOyB9KSkKICByZXR1cm4gKH4oc2l6ZV90KTApOwoKIHJldHVybiBieXRlczsKfQoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzaXplX3QgX19hYl9jX3Np emUoc2l6ZV90IGEsIHNpemVfdCBiLCBzaXplX3QgYykKewogc2l6ZV90IGJ5dGVzOwoKIGlmICgo eyB0eXBlb2YoYSkgX19hID0gKGEpOyB0eXBlb2YoYikgX19iID0gKGIpOyB0eXBlb2YoJmJ5dGVz KSBfX2QgPSAoJmJ5dGVzKTsgKHZvaWQpICgmX19hID09ICZfX2IpOyAodm9pZCkgKCZfX2EgPT0g X19kKTsgX19idWlsdGluX211bF9vdmVyZmxvdyhfX2EsIF9fYiwgX19kKTsgfSkpCiAgcmV0dXJu ICh+KHNpemVfdCkwKTsKIGlmICgoeyB0eXBlb2YoYnl0ZXMpIF9fYSA9IChieXRlcyk7IHR5cGVv ZihjKSBfX2IgPSAoYyk7IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZf X2EgPT0gJl9fYik7ICh2b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fYWRkX292ZXJmbG93 KF9fYSwgX19iLCBfX2QpOyB9KSkKICByZXR1cm4gKH4oc2l6ZV90KTApOwoKIHJldHVybiBieXRl czsKfQojIDE3ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCgoKIyAxICIuL2luY2x1ZGUvbGlu dXgvcGVyY3B1LXJlZmNvdW50LmgiIDEKIyA1OSAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZj b3VudC5oIgpzdHJ1Y3QgcGVyY3B1X3JlZjsKdHlwZWRlZiB2b2lkIChwZXJjcHVfcmVmX2Z1bmNf dCkoc3RydWN0IHBlcmNwdV9yZWYgKik7CgoKZW51bSB7CiBfX1BFUkNQVV9SRUZfQVRPTUlDID0g MUxVIDw8IDAsCiBfX1BFUkNQVV9SRUZfREVBRCA9IDFMVSA8PCAxLAogX19QRVJDUFVfUkVGX0FU T01JQ19ERUFEID0gX19QRVJDUFVfUkVGX0FUT01JQyB8IF9fUEVSQ1BVX1JFRl9ERUFELAoKIF9f UEVSQ1BVX1JFRl9GTEFHX0JJVFMgPSAyLAp9OwoKCmVudW0gewoKCgoKCgoKIFBFUkNQVV9SRUZf SU5JVF9BVE9NSUMgPSAxIDw8IDAsCgoKCgoKCiBQRVJDUFVfUkVGX0lOSVRfREVBRCA9IDEgPDwg MSwKCgoKCiBQRVJDUFVfUkVGX0FMTE9XX1JFSU5JVCA9IDEgPDwgMiwKfTsKCnN0cnVjdCBwZXJj cHVfcmVmIHsKIGF0b21pY19sb25nX3QgY291bnQ7CgoKCgogdW5zaWduZWQgbG9uZyBwZXJjcHVf Y291bnRfcHRyOwogcGVyY3B1X3JlZl9mdW5jX3QgKnJlbGVhc2U7CiBwZXJjcHVfcmVmX2Z1bmNf dCAqY29uZmlybV9zd2l0Y2g7CiBib29sIGZvcmNlX2F0b21pYzoxOwogYm9vbCBhbGxvd19yZWlu aXQ6MTsKIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKfTsKCmludCBfX2F0dHJpYnV0ZV9fKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgcGVyY3B1X3JlZl9pbml0KHN0cnVjdCBwZXJjcHVfcmVm ICpyZWYsCiAgICAgcGVyY3B1X3JlZl9mdW5jX3QgKnJlbGVhc2UsIHVuc2lnbmVkIGludCBmbGFn cywKICAgICBnZnBfdCBnZnApOwp2b2lkIHBlcmNwdV9yZWZfZXhpdChzdHJ1Y3QgcGVyY3B1X3Jl ZiAqcmVmKTsKdm9pZCBwZXJjcHVfcmVmX3N3aXRjaF90b19hdG9taWMoc3RydWN0IHBlcmNwdV9y ZWYgKnJlZiwKICAgICBwZXJjcHVfcmVmX2Z1bmNfdCAqY29uZmlybV9zd2l0Y2gpOwp2b2lkIHBl cmNwdV9yZWZfc3dpdGNoX3RvX2F0b21pY19zeW5jKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpOwp2 b2lkIHBlcmNwdV9yZWZfc3dpdGNoX3RvX3BlcmNwdShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKTsK dm9pZCBwZXJjcHVfcmVmX2tpbGxfYW5kX2NvbmZpcm0oc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwK ICAgICBwZXJjcHVfcmVmX2Z1bmNfdCAqY29uZmlybV9raWxsKTsKdm9pZCBwZXJjcHVfcmVmX3Jl c3VycmVjdChzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKTsKdm9pZCBwZXJjcHVfcmVmX3JlaW5pdChz dHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKTsKIyAxMzQgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVm Y291bnQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBwZXJjcHVfcmVmX2tpbGwoc3RydWN0IHBlcmNwdV9yZWYgKnJlZikKewog cGVyY3B1X3JlZl9raWxsX2FuZF9jb25maXJtKHJlZiwgKCh2b2lkICopMCkpOwp9CgoKCgoKCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIF9fcmVmX2lzX3BlcmNwdShzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmLAogICAgICAgdW5zaWdu ZWQgbG9uZyAqKnBlcmNwdV9jb3VudHApCnsKIHVuc2lnbmVkIGxvbmcgcGVyY3B1X3B0cjsKIyAx NjEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKIHBlcmNwdV9wdHIgPSAoeyB1 bmlvbiB7IHR5cGVvZihyZWYtPnBlcmNwdV9jb3VudF9wdHIpIF9fdmFsOyBjaGFyIF9fY1sxXTsg fSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYocmVmLT5wZXJjcHVfY291bnRfcHRyKSwg X191Ll9fYywgc2l6ZW9mKHJlZi0+cGVyY3B1X2NvdW50X3B0cikpOyBlbHNlIF9fcmVhZF9vbmNl X3NpemVfbm9jaGVjaygmKHJlZi0+cGVyY3B1X2NvdW50X3B0ciksIF9fdS5fX2MsIHNpemVvZihy ZWYtPnBlcmNwdV9jb3VudF9wdHIpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsK CgoKCgoKCiBpZiAoX19idWlsdGluX2V4cGVjdCghIShwZXJjcHVfcHRyICYgX19QRVJDUFVfUkVG X0FUT01JQ19ERUFEKSwgMCkpCiAgcmV0dXJuIGZhbHNlOwoKICpwZXJjcHVfY291bnRwID0gKHVu c2lnbmVkIGxvbmcgKilwZXJjcHVfcHRyOwogcmV0dXJuIHRydWU7Cn0KIyAxODUgIi4vaW5jbHVk ZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVfcmVmX2dldF9tYW55KHN0cnVj dCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCnsKIHVuc2lnbmVkIGxvbmcgKnBl cmNwdV9jb3VudDsKCiByY3VfcmVhZF9sb2NrKCk7CgogaWYgKF9fcmVmX2lzX3BlcmNwdShyZWYs ICZwZXJjcHVfY291bnQpKQogIGRvIHsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAo dHlwZW9mKCgmKCpwZXJjcHVfY291bnQpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92 ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKCpwZXJjcHVfY291bnQpKSB7IGNhc2Ug MTogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkpIHBhb19UX187IGNvbnN0IGlu dCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChucikgJiYgKChucikgPT0gMSB8fCAo bnIpID09IC0xKSkgPyAoaW50KShucikgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsg cGFvX3RtcF9fID0gKG5yKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVy Y3B1X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgi aW5jYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIg JTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIg KChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2 b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRp bGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkgOiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJk ZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug YXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA4OiBpZiAo cGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZv bGF0aWxlICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgMjog ZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBw YW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChucikgJiYgKChucikgPT0gMSB8fCAobnIp ID09IC0xKSkgPyAoaW50KShucikgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFv X3RtcF9fID0gKG5yKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1 X2NvdW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5j YiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChw YW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xh dGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp KTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUg KCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkg OiAicmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNt IHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFv X0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0 aWxlICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkp OyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGRlZmF1 bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgNDogZG8g eyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9f SURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChucikgJiYgKChucikgPT0gMSB8fCAobnIpID09 IC0xKSkgPyAoaW50KShucikgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3Rt cF9fID0gKG5yKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1X2Nv dW50KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jYiAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChw YW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChwYW9f VF9fKShucikpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGls ZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJh ZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAi cmkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBh c20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVf Y291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZv bGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lE X18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxl ICgiZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBl bHNlIGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGRlZmF1bHQ6 IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgODogZG8geyB0 eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURf XyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcChucikgJiYgKChucikgPT0gMSB8fCAobnIpID09IC0x KSkgPyAoaW50KShucikgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9f ID0gKG5yKTsgKHZvaWQpcGFvX3RtcF9fOyB9IHN3aXRjaCAoc2l6ZW9mKCgqcGVyY3B1X2NvdW50 KSkpIHsgY2FzZSAxOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jYiAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9f SURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjYiAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGIgJTEsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJxaSIgKChwYW9fVF9f KShucikpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAo ImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGR3 ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmki ICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g dm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0 aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBicmVhazsgY2FzZSA4OiBpZiAocGFvX0lEX18g PT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgi ZGVjcSAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGFzbSB2b2xhdGlsZSAoImFkZHEgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSA6ICJyZSIgKChwYW9fVF9fKShucikpKTsgYnJlYWs7IGRlZmF1bHQ6IF9f YmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3Np emVfY2FsbF9wYXJhbWV0ZXIoKTticmVhazsgfSB9IHdoaWxlICgwKTsKIGVsc2UKICBhdG9taWNf bG9uZ19hZGQobnIsICZyZWYtPmNvdW50KTsKCiByY3VfcmVhZF91bmxvY2soKTsKfQojIDIwNyAi Li9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9yZWZfZ2V0KHN0 cnVjdCBwZXJjcHVfcmVmICpyZWYpCnsKIHBlcmNwdV9yZWZfZ2V0X21hbnkocmVmLCAxKTsKfQoj IDIyMiAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHBlcmNwdV9yZWZf dHJ5Z2V0X21hbnkoc3RydWN0IHBlcmNwdV9yZWYgKnJlZiwKICAgICAgIHVuc2lnbmVkIGxvbmcg bnIpCnsKIHVuc2lnbmVkIGxvbmcgKnBlcmNwdV9jb3VudDsKIGJvb2wgcmV0OwoKIHJjdV9yZWFk X2xvY2soKTsKCiBpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgJnBlcmNwdV9jb3VudCkpIHsKICBk byB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5ID0gKHR5cGVvZigoJigqcGVyY3B1X2Nv dW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsg c3dpdGNoKHNpemVvZigqcGVyY3B1X2NvdW50KSkgeyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBl b2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWls dGluX2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCko bnIpIDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2 b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2Ug MTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJy ZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18p KG5yKSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgi aW5jbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNl IGlmIChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwg JTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIg KChwYW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2 b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRp bGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50 KSkgOiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVf c2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRvIHsgdHlwZWRlZiB0eXBlb2Yo KCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGlu X2NvbnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCkobnIp IDogMDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2b2lk KXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2UgMTog aWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9f ID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5y KSkpOyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5j bCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlm IChwYW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChw YW9fVF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xh dGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp KTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUg KCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkg OiAicmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6 ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpw ZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2Nv bnN0YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCkobnIpIDog MDsgaWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2b2lkKXBh b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2UgMTogaWYg KHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2 b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBj YXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkp OyBicmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jbCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChw YW9fSURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9f VF9fKShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGls ZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJh ZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAi cmUiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJj cHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0 YW50X3AobnIpICYmICgobnIpID09IDEgfHwgKG5yKSA9PSAtMSkpID8gKGludCkobnIpIDogMDsg aWYgKDApIHsgcGFvX1RfXyBwYW9fdG1wX187IHBhb190bXBfXyA9IChucik7ICh2b2lkKXBhb190 bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBh b19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xh dGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp KTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBjYXNl IDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0x KSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKG5yKSkpOyBi cmVhazsgY2FzZSA0OiBpZiAocGFvX0lEX18gPT0gMSkgYXNtIHZvbGF0aWxlICgiaW5jbCAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGlmIChwYW9f SURfXyA9PSAtMSkgYXNtIHZvbGF0aWxlICgiZGVjbCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkpOyBlbHNlIGFzbSB2b2xhdGlsZSAoImFkZGwgJTEsICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSA6ICJyaSIgKChwYW9fVF9f KShucikpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAo ImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRx ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUi ICgocGFvX1RfXykobnIpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9 IH0gd2hpbGUgKDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7 YnJlYWs7IH0gfSB3aGlsZSAoMCk7CiAgcmV0ID0gdHJ1ZTsKIH0gZWxzZSB7CiAgcmV0ID0gYXRv bWljX2xvbmdfYWRkX3VubGVzcygmcmVmLT5jb3VudCwgbnIsIDApOwogfQoKIHJjdV9yZWFkX3Vu bG9jaygpOwoKIHJldHVybiByZXQ7Cn0KIyAyNTEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVm Y291bnQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBwZXJjcHVfcmVmX3RyeWdldChzdHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKQp7 CiByZXR1cm4gcGVyY3B1X3JlZl90cnlnZXRfbWFueShyZWYsIDEpOwp9CiMgMjcxICIuL2luY2x1 ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcGVyY3B1X3JlZl90cnlnZXRfbGl2ZShz dHJ1Y3QgcGVyY3B1X3JlZiAqcmVmKQp7CiB1bnNpZ25lZCBsb25nICpwZXJjcHVfY291bnQ7CiBi b29sIHJldCA9IGZhbHNlOwoKIHJjdV9yZWFkX2xvY2soKTsKCiBpZiAoX19yZWZfaXNfcGVyY3B1 KHJlZiwgJnBlcmNwdV9jb3VudCkpIHsKICBkbyB7IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVy aWZ5ID0gKHR5cGVvZigoJigqcGVyY3B1X2NvdW50KSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQp X192cHBfdmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZigqcGVyY3B1X2NvdW50KSkg eyBjYXNlIDE6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBj b25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAx IHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBf XzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpw ZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUg KCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRk YiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFp IiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20g dm9sYXRpbGUgKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0 aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9 PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJk ZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug YXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChw YW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9s YXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZh dWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDI6IGRv IHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFv X0lEX18gPSAoX19idWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAt MSkpID8gKGludCkoMSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9f ID0gKDEpOyAodm9pZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVfY291bnQp KSkgeyBjYXNlIDE6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNiICIiJSUi ImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19J RF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBhb19UX18p KDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJp bmN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2Ug aWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAl MSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAo KHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9s YXRpbGUgKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxl ICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp IDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAx KSBhc20gdm9sYXRpbGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJj cHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNx ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNt IHZvbGF0aWxlICgiYWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpIDogInJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDQ6IGRvIHsgdHlwZWRlZiB0 eXBlb2YoKCpwZXJjcHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19i dWlsdGluX2NvbnN0YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCko MSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9p ZClwYW9fdG1wX187IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBh c20gdm9sYXRpbGUgKCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVf Y291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFr OyBjYXNlIDI6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdz IiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9f ID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEp KSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNs ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRp bGUgKCJpbmNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7 IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgi YWRkcSAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDog InJlIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgp OyB9IH0gd2hpbGUgKDApO2JyZWFrOyBjYXNlIDg6IGRvIHsgdHlwZWRlZiB0eXBlb2YoKCpwZXJj cHVfY291bnQpKSBwYW9fVF9fOyBjb25zdCBpbnQgcGFvX0lEX18gPSAoX19idWlsdGluX2NvbnN0 YW50X3AoMSkgJiYgKCgxKSA9PSAxIHx8ICgxKSA9PSAtMSkpID8gKGludCkoMSkgOiAwOyBpZiAo MCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKDEpOyAodm9pZClwYW9fdG1wX187 IH0gc3dpdGNoIChzaXplb2YoKCpwZXJjcHVfY291bnQpKSkgeyBjYXNlIDE6IGlmIChwYW9fSURf XyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUg KCJkZWNiICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVs c2UgYXNtIHZvbGF0aWxlICgiYWRkYiAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpIDogInFpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBjYXNlIDI6IGlm IChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmN3ICIiJSUiImdzIiI6IiAiJSIgIjAi IDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20g dm9sYXRpbGUgKCJkZWN3ICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291 bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkdyAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7IGJyZWFrOyBj YXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNsICIiJSUiImdzIiI6 IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpw ZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKDEpKSk7 IGJyZWFrOyBjYXNlIDg6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gdm9sYXRpbGUgKCJpbmNxICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgaWYgKHBh b19JRF9fID09IC0xKSBhc20gdm9sYXRpbGUgKCJkZWNxICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpwZXJjcHVfY291bnQpKSk7IGVsc2UgYXNtIHZvbGF0aWxlICgiYWRkcSAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpIDogInJlIiAoKHBhb19U X18pKDEpKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IH0gd2hpbGUg KDApO2JyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7YnJlYWs7IH0g fSB3aGlsZSAoMCk7CiAgcmV0ID0gdHJ1ZTsKIH0gZWxzZSBpZiAoIShyZWYtPnBlcmNwdV9jb3Vu dF9wdHIgJiBfX1BFUkNQVV9SRUZfREVBRCkpIHsKICByZXQgPSBhdG9taWNfbG9uZ19pbmNfbm90 X3plcm8oJnJlZi0+Y291bnQpOwogfQoKIHJjdV9yZWFkX3VubG9jaygpOwoKIHJldHVybiByZXQ7 Cn0KIyAzMDAgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVf cmVmX3B1dF9tYW55KHN0cnVjdCBwZXJjcHVfcmVmICpyZWYsIHVuc2lnbmVkIGxvbmcgbnIpCnsK IHVuc2lnbmVkIGxvbmcgKnBlcmNwdV9jb3VudDsKCiByY3VfcmVhZF9sb2NrKCk7CgogaWYgKF9f cmVmX2lzX3BlcmNwdShyZWYsICZwZXJjcHVfY291bnQpKQogIGRvIHsgZG8geyBjb25zdCB2b2lk ICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKCpwZXJjcHVfY291bnQpKSArIDApKSgodm9pZCAq KTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKCpwZXJj cHVfY291bnQpKSB7IGNhc2UgMTogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3VudCkp IHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgtKHR5 cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSAmJiAoKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShu cikpID09IDEgfHwgKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpID09IC0xKSkgPyAoaW50 KSgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFv X3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSk7ICh2b2lk KXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2UgMTog aWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBl cmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFz bSB2b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9s YXRpbGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2Nv dW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsg YnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2wgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFv X0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRsICUxLCAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmkiICgocGFvX1Rf XykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBh b19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xh dGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkp KTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9j b3VudCkpKG5yKSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3 aGlsZSAoMCk7YnJlYWs7IGNhc2UgMjogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9jb3Vu dCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgt KHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSAmJiAoKC0odHlwZW9mKCpwZXJjcHVfY291bnQp KShucikpID09IDEgfHwgKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpID09IC0xKSkgPyAo aW50KSgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA6IDA7IGlmICgwKSB7IHBhb19UX18g cGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSk7ICh2 b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNhc2Ug MTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBlb2Yo KnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEp IGFzbSB2b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY3cg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20g dm9sYXRpbGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1 X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkp KTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2wg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAo cGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRsICUxLCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmkiICgocGFv X1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgODogaWYg KHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2 b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3Vu dCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNw dV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0g fSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgNDogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNwdV9j b3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRf cCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSAmJiAoKC0odHlwZW9mKCpwZXJjcHVfY291 bnQpKShucikpID09IDEgfHwgKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpID09IC0xKSkg PyAoaW50KSgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA6IDA7IGlmICgwKSB7IHBhb19U X18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSk7 ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7IGNh c2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0g LTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBl b2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09 IDEpIGFzbSB2b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBl cmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRl Y3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBh c20gdm9sYXRpbGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVy Y3B1X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5y KSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImlu Y2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBp ZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRsICUx LCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmkiICgo cGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgODog aWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9j b3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnBl cmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7 IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgODogZG8geyB0eXBlZGVmIHR5cGVvZigoKnBlcmNw dV9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3Rh bnRfcCgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSAmJiAoKC0odHlwZW9mKCpwZXJjcHVf Y291bnQpKShucikpID09IDEgfHwgKC0odHlwZW9mKCpwZXJjcHVfY291bnQpKShucikpID09IC0x KSkgPyAoaW50KSgtKHR5cGVvZigqcGVyY3B1X2NvdW50KSkobnIpKSA6IDA7IGlmICgwKSB7IHBh b19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5y KSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnBlcmNwdV9jb3VudCkpKSB7 IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY2IgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRiICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0 eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9f ID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAo ImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBhc20gdm9sYXRpbGUgKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq cGVyY3B1X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkp KG5yKSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAo ImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSB2b2xhdGlsZSAoImRlY2wgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRs ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmki ICgocGFvX1RfXykoLSh0eXBlb2YoKnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGNhc2Ug ODogaWYgKHBhb19JRF9fID09IDEpIGFzbSB2b2xhdGlsZSAoImluY3EgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnBlcmNwdV9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSB2b2xhdGlsZSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnBlcmNw dV9jb3VudCkpKTsgZWxzZSBhc20gdm9sYXRpbGUgKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqcGVyY3B1X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2Yo KnBlcmNwdV9jb3VudCkpKG5yKSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXpl KCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0 ZXIoKTticmVhazsgfSB9IHdoaWxlICgwKTsKIGVsc2UgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEo YXRvbWljX2xvbmdfc3ViX2FuZF90ZXN0KG5yLCAmcmVmLT5jb3VudCkpLCAwKSkKICByZWYtPnJl bGVhc2UocmVmKTsKCiByY3VfcmVhZF91bmxvY2soKTsKfQojIDMyMyAiLi9pbmNsdWRlL2xpbnV4 L3BlcmNwdS1yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9yZWZfcHV0KHN0cnVjdCBwZXJjcHVfcmVm ICpyZWYpCnsKIHBlcmNwdV9yZWZfcHV0X21hbnkocmVmLCAxKTsKfQojIDMzNyAiLi9pbmNsdWRl L2xpbnV4L3BlcmNwdS1yZWZjb3VudC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHBlcmNwdV9yZWZfaXNfZHlpbmcoc3RydWN0 IHBlcmNwdV9yZWYgKnJlZikKewogcmV0dXJuIHJlZi0+cGVyY3B1X2NvdW50X3B0ciAmIF9fUEVS Q1BVX1JFRl9ERUFEOwp9CiMgMzUwICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJlZmNvdW50Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgcGVyY3B1X3JlZl9pc196ZXJvKHN0cnVjdCBwZXJjcHVfcmVmICpyZWYpCnsKIHVuc2ln bmVkIGxvbmcgKnBlcmNwdV9jb3VudDsKCiBpZiAoX19yZWZfaXNfcGVyY3B1KHJlZiwgJnBlcmNw dV9jb3VudCkpCiAgcmV0dXJuIGZhbHNlOwogcmV0dXJuICFhdG9taWNfbG9uZ19yZWFkKCZyZWYt PmNvdW50KTsKfQojIDIwICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIiAyCiMgMTM2ICIuL2luY2x1 ZGUvbGludXgvc2xhYi5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9rYXNhbi5oIiAxCgoKCgoKCnN0 cnVjdCBrbWVtX2NhY2hlOwpzdHJ1Y3QgcGFnZTsKc3RydWN0IHZtX3N0cnVjdDsKc3RydWN0IHRh c2tfc3RydWN0OwojIDEwMSAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5w b2lzb25fc2hhZG93KGNvbnN0IHZvaWQgKmFkZHJlc3MsIHNpemVfdCBzaXplKSB7fQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBr YXNhbl91bnBvaXNvbl90YXNrX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykge30Kc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBrYXNhbl91bnBvaXNvbl9zdGFja19hYm92ZV9zcF90byhjb25zdCB2b2lkICp3YXRlcm1hcmsp IHt9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGthc2FuX2VuYWJsZV9jdXJyZW50KHZvaWQpIHt9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fZGlzYWJs ZV9jdXJyZW50KHZvaWQpIHt9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2FsbG9jX3BhZ2VzKHN0cnVjdCBwYWdlICpw YWdlLCB1bnNpZ25lZCBpbnQgb3JkZXIpIHt9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fZnJlZV9wYWdlcyhzdHJ1Y3Qg cGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKSB7fQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9jYWNoZV9jcmVh dGUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAogICAgICAgICAgdW5zaWduZWQgaW50ICpzaXpl LAogICAgICAgICAgc2xhYl9mbGFnc190ICpmbGFncykge30KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fcG9pc29uX3Ns YWIoc3RydWN0IHBhZ2UgKnBhZ2UpIHt9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25fb2JqZWN0X2RhdGEo c3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAogICAgIHZvaWQgKm9iamVjdCkge30Kc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNh bl9wb2lzb25fb2JqZWN0X2RhdGEoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAogICAgIHZvaWQg Km9iamVjdCkge30Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCAqa2FzYW5faW5pdF9zbGFiX29iaihzdHJ1Y3Qga21lbV9jYWNoZSAq Y2FjaGUsCiAgICBjb25zdCB2b2lkICpvYmplY3QpCnsKIHJldHVybiAodm9pZCAqKW9iamVjdDsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqa2FzYW5fa21hbGxvY19sYXJnZSh2b2lkICpwdHIsIHNpemVfdCBzaXplLCBnZnBf dCBmbGFncykKewogcmV0dXJuIHB0cjsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGthc2FuX2tmcmVlX2xhcmdlKHZvaWQgKnB0 ciwgdW5zaWduZWQgbG9uZyBpcCkge30Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9wb2lzb25fa2ZyZWUodm9pZCAqcHRy LCB1bnNpZ25lZCBsb25nIGlwKSB7fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9rbWFsbG9jKHN0cnVjdCBrbWVtX2Nh Y2hlICpzLCBjb25zdCB2b2lkICpvYmplY3QsCiAgICBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3Mp CnsKIHJldHVybiAodm9pZCAqKW9iamVjdDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9rcmVhbGxvYyhjb25zdCB2 b2lkICpvYmplY3QsIHNpemVfdCBuZXdfc2l6ZSwKICAgICBnZnBfdCBmbGFncykKewogcmV0dXJu ICh2b2lkICopb2JqZWN0Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprYXNhbl9zbGFiX2FsbG9jKHN0cnVjdCBrbWVtX2Nh Y2hlICpzLCB2b2lkICpvYmplY3QsCiAgICAgICBnZnBfdCBmbGFncykKewogcmV0dXJuIG9iamVj dDsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGthc2FuX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2Jq ZWN0LAogICAgICAgdW5zaWduZWQgbG9uZyBpcCkKewogcmV0dXJuIGZhbHNlOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQga2Fz YW5fbW9kdWxlX2FsbG9jKHZvaWQgKmFkZHIsIHNpemVfdCBzaXplKSB7IHJldHVybiAwOyB9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQga2FzYW5fZnJlZV9zaGFkb3coY29uc3Qgc3RydWN0IHZtX3N0cnVjdCAqdm0pIHt9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg a2FzYW5fYWRkX3plcm9fc2hhZG93KHZvaWQgKnN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpCnsK IHJldHVybiAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQga2FzYW5fcmVtb3ZlX3plcm9fc2hhZG93KHZvaWQgKnN0YXJ0LAog ICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKe30KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25fc2xhYihjb25z dCB2b2lkICpwdHIpIHsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzaXplX3Qga2FzYW5fbWV0YWRhdGFfc2l6ZShzdHJ1Y3Qga21lbV9j YWNoZSAqY2FjaGUpIHsgcmV0dXJuIDA7IH0KIyAxODAgIi4vaW5jbHVkZS9saW51eC9rYXNhbi5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGthc2FuX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUpIHt9CnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQga2FzYW5fY2FjaGVfc2h1dGRvd24oc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlKSB7fQojIDE5 OCAiLi9pbmNsdWRlL2xpbnV4L2thc2FuLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5faW5pdF90YWdzKHZvaWQpIHsg fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqa2FzYW5fcmVzZXRfdGFnKGNvbnN0IHZvaWQgKmFkZHIpCnsKIHJldHVybiAodm9p ZCAqKWFkZHI7Cn0KIyAyMTUgIi4vaW5jbHVkZS9saW51eC9rYXNhbi5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQga2FzYW5fcG9w dWxhdGVfdm1hbGxvYyh1bnNpZ25lZCBsb25nIHN0YXJ0LAogICAgIHVuc2lnbmVkIGxvbmcgc2l6 ZSkKewogcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fcG9pc29uX3ZtYWxsb2MoY29uc3Qgdm9pZCAq c3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKeyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fdW5wb2lzb25fdm1hbGxv Yyhjb25zdCB2b2lkICpzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKQp7IH0Kc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrYXNhbl9y ZWxlYXNlX3ZtYWxsb2ModW5zaWduZWQgbG9uZyBzdGFydCwKICAgICAgdW5zaWduZWQgbG9uZyBl bmQsCiAgICAgIHVuc2lnbmVkIGxvbmcgZnJlZV9yZWdpb25fc3RhcnQsCiAgICAgIHVuc2lnbmVk IGxvbmcgZnJlZV9yZWdpb25fZW5kKSB7fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2FzYW5fbm9uX2Nhbm9uaWNhbF9o b29rKHVuc2lnbmVkIGxvbmcgYWRkcikgeyB9CiMgMTM3ICIuL2luY2x1ZGUvbGludXgvc2xhYi5o IiAyCgpzdHJ1Y3QgbWVtX2Nncm91cDsKCgoKdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25f XygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBrbWVtX2NhY2hlX2lu aXQodm9pZCk7CmJvb2wgc2xhYl9pc19hdmFpbGFibGUodm9pZCk7CgpleHRlcm4gYm9vbCB1c2Vy Y29weV9mYWxsYmFjazsKCnN0cnVjdCBrbWVtX2NhY2hlICprbWVtX2NhY2hlX2NyZWF0ZShjb25z dCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQgc2l6ZSwKICAgdW5zaWduZWQgaW50IGFsaWduLCBz bGFiX2ZsYWdzX3QgZmxhZ3MsCiAgIHZvaWQgKCpjdG9yKSh2b2lkICopKTsKc3RydWN0IGttZW1f Y2FjaGUgKmttZW1fY2FjaGVfY3JlYXRlX3VzZXJjb3B5KGNvbnN0IGNoYXIgKm5hbWUsCiAgIHVu c2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBpbnQgYWxpZ24sCiAgIHNsYWJfZmxhZ3NfdCBmbGFn cywKICAgdW5zaWduZWQgaW50IHVzZXJvZmZzZXQsIHVuc2lnbmVkIGludCB1c2Vyc2l6ZSwKICAg dm9pZCAoKmN0b3IpKHZvaWQgKikpOwp2b2lkIGttZW1fY2FjaGVfZGVzdHJveShzdHJ1Y3Qga21l bV9jYWNoZSAqKTsKaW50IGttZW1fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICopOwoK dm9pZCBtZW1jZ19jcmVhdGVfa21lbV9jYWNoZShzdHJ1Y3QgbWVtX2Nncm91cCAqLCBzdHJ1Y3Qg a21lbV9jYWNoZSAqKTsKdm9pZCBtZW1jZ19kZWFjdGl2YXRlX2ttZW1fY2FjaGVzKHN0cnVjdCBt ZW1fY2dyb3VwICosIHN0cnVjdCBtZW1fY2dyb3VwICopOwojIDE4NyAiLi9pbmNsdWRlL2xpbnV4 L3NsYWIuaCIKdm9pZCAqIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBr cmVhbGxvYyhjb25zdCB2b2lkICosIHNpemVfdCwgZ2ZwX3QpOwp2b2lkIGtmcmVlKGNvbnN0IHZv aWQgKik7CnZvaWQga3pmcmVlKGNvbnN0IHZvaWQgKik7CnNpemVfdCBfX2tzaXplKGNvbnN0IHZv aWQgKik7CnNpemVfdCBrc2l6ZShjb25zdCB2b2lkICopOwoKCnZvaWQgX19jaGVja19oZWFwX29i amVjdChjb25zdCB2b2lkICpwdHIsIHVuc2lnbmVkIGxvbmcgbiwgc3RydWN0IHBhZ2UgKnBhZ2Us CiAgIGJvb2wgdG9fdXNlcik7CiMgMzA4ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgplbnVtIGtt YWxsb2NfY2FjaGVfdHlwZSB7CiBLTUFMTE9DX05PUk1BTCA9IDAsCiBLTUFMTE9DX1JFQ0xBSU0s CgogS01BTExPQ19ETUEsCgogTlJfS01BTExPQ19UWVBFUwp9OwoKCmV4dGVybiBzdHJ1Y3Qga21l bV9jYWNoZSAqCmttYWxsb2NfY2FjaGVzW05SX0tNQUxMT0NfVFlQRVNdWygoMTEgKyAxMiAtIDEp IDw9IDI1ID8gKDExICsgMTIgLSAxKSA6IDI1KSArIDFdOwoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSBlbnVtIGttYWxsb2NfY2FjaGVfdHlwZSBrbWFsbG9jX3R5cGUoZ2ZwX3Qg ZmxhZ3MpCnsKCgoKCgogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKGZsYWdzICYgKCgoIGdmcF90 KTB4MDF1KSB8ICgoIGdmcF90KTB4MTB1KSkpID09IDApLCAxKSkKICByZXR1cm4gS01BTExPQ19O T1JNQUw7CgoKCgoKIHJldHVybiBmbGFncyAmICgoIGdmcF90KTB4MDF1KSA/IEtNQUxMT0NfRE1B IDogS01BTExPQ19SRUNMQUlNOwoKCgp9CiMgMzQ5ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBf X2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIHVuc2lnbmVkIGludCBrbWFsbG9jX2lu ZGV4KHNpemVfdCBzaXplKQp7CiBpZiAoIXNpemUpCiAgcmV0dXJuIDA7CgogaWYgKHNpemUgPD0g KDEgPDwgNSkpCiAgcmV0dXJuIDU7CgogaWYgKCgxIDw8IDUpIDw9IDMyICYmIHNpemUgPiA2NCAm JiBzaXplIDw9IDk2KQogIHJldHVybiAxOwogaWYgKCgxIDw8IDUpIDw9IDY0ICYmIHNpemUgPiAx MjggJiYgc2l6ZSA8PSAxOTIpCiAgcmV0dXJuIDI7CiBpZiAoc2l6ZSA8PSA4KSByZXR1cm4gMzsK IGlmIChzaXplIDw9IDE2KSByZXR1cm4gNDsKIGlmIChzaXplIDw9IDMyKSByZXR1cm4gNTsKIGlm IChzaXplIDw9IDY0KSByZXR1cm4gNjsKIGlmIChzaXplIDw9IDEyOCkgcmV0dXJuIDc7CiBpZiAo c2l6ZSA8PSAyNTYpIHJldHVybiA4OwogaWYgKHNpemUgPD0gNTEyKSByZXR1cm4gOTsKIGlmIChz aXplIDw9IDEwMjQpIHJldHVybiAxMDsKIGlmIChzaXplIDw9IDIgKiAxMDI0KSByZXR1cm4gMTE7 CiBpZiAoc2l6ZSA8PSA0ICogMTAyNCkgcmV0dXJuIDEyOwogaWYgKHNpemUgPD0gOCAqIDEwMjQp IHJldHVybiAxMzsKIGlmIChzaXplIDw9IDE2ICogMTAyNCkgcmV0dXJuIDE0OwogaWYgKHNpemUg PD0gMzIgKiAxMDI0KSByZXR1cm4gMTU7CiBpZiAoc2l6ZSA8PSA2NCAqIDEwMjQpIHJldHVybiAx NjsKIGlmIChzaXplIDw9IDEyOCAqIDEwMjQpIHJldHVybiAxNzsKIGlmIChzaXplIDw9IDI1NiAq IDEwMjQpIHJldHVybiAxODsKIGlmIChzaXplIDw9IDUxMiAqIDEwMjQpIHJldHVybiAxOTsKIGlm IChzaXplIDw9IDEwMjQgKiAxMDI0KSByZXR1cm4gMjA7CiBpZiAoc2l6ZSA8PSAyICogMTAyNCAq IDEwMjQpIHJldHVybiAyMTsKIGlmIChzaXplIDw9IDQgKiAxMDI0ICogMTAyNCkgcmV0dXJuIDIy OwogaWYgKHNpemUgPD0gOCAqIDEwMjQgKiAxMDI0KSByZXR1cm4gMjM7CiBpZiAoc2l6ZSA8PSAx NiAqIDEwMjQgKiAxMDI0KSByZXR1cm4gMjQ7CiBpZiAoc2l6ZSA8PSAzMiAqIDEwMjQgKiAxMDI0 KSByZXR1cm4gMjU7CiBpZiAoc2l6ZSA8PSA2NCAqIDEwMjQgKiAxMDI0KSByZXR1cm4gMjY7CiBk byB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIg IlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIg IjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIl YzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1 Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAi XHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3Ns YWIuaCIpLCAiaSIgKDM4NSksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkp KSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNl Y3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBv cHNlY3Rpb25cblx0IiA6IDogImkiICgxOCkpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWls dGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKCgogcmV0dXJuIC0x Owp9CgoKdm9pZCAqX19rbWFsbG9jKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncykgX19hdHRyaWJ1 dGVfXygoX19hc3N1bWVfYWxpZ25lZF9fKF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykp KSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpOwp2b2lkICprbWVtX2NhY2hlX2FsbG9jKHN0 cnVjdCBrbWVtX2NhY2hlICosIGdmcF90IGZsYWdzKSBfX2F0dHJpYnV0ZV9fKChfX2Fzc3VtZV9h bGlnbmVkX18oX19hbGlnbm9mX18odW5zaWduZWQgbG9uZyBsb25nKSkpKSBfX2F0dHJpYnV0ZV9f KChfX21hbGxvY19fKSk7CnZvaWQga21lbV9jYWNoZV9mcmVlKHN0cnVjdCBrbWVtX2NhY2hlICos IHZvaWQgKik7CiMgNDAzICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgp2b2lkIGttZW1fY2FjaGVf ZnJlZV9idWxrKHN0cnVjdCBrbWVtX2NhY2hlICosIHNpemVfdCwgdm9pZCAqKik7CmludCBrbWVt X2NhY2hlX2FsbG9jX2J1bGsoc3RydWN0IGttZW1fY2FjaGUgKiwgZ2ZwX3QsIHNpemVfdCwgdm9p ZCAqKik7CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkIGtmcmVl X2J1bGsoc2l6ZV90IHNpemUsIHZvaWQgKipwKQp7CiBrbWVtX2NhY2hlX2ZyZWVfYnVsaygoKHZv aWQgKikwKSwgc2l6ZSwgcCk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgKl9fa21hbGxvY19ub2RlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncywgaW50IG5v ZGUpCnsKIHJldHVybiBfX2ttYWxsb2Moc2l6ZSwgZmxhZ3MpOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChf X2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKmttZW1fY2FjaGVfYWxsb2Nfbm9kZShzdHJ1Y3Qga21l bV9jYWNoZSAqcywgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKQp7CiByZXR1cm4ga21lbV9jYWNoZV9h bGxvYyhzLCBmbGFncyk7Cn0KCgoKZXh0ZXJuIHZvaWQgKmttZW1fY2FjaGVfYWxsb2NfdHJhY2Uo c3RydWN0IGttZW1fY2FjaGUgKiwgZ2ZwX3QsIHNpemVfdCkgX19hdHRyaWJ1dGVfXygoX19hc3N1 bWVfYWxpZ25lZF9fKF9fYWxpZ25vZl9fKHVuc2lnbmVkIGxvbmcgbG9uZykpKSkgX19hdHRyaWJ1 dGVfXygoX19tYWxsb2NfXykpOwoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpIHZvaWQgKgprbWVtX2NhY2hlX2FsbG9jX25vZGVfdHJhY2Uoc3RydWN0IGttZW1fY2FjaGUg KnMsCiAgICAgICAgIGdmcF90IGdmcGZsYWdzLAogICAgICAgICBpbnQgbm9kZSwgc2l6ZV90IHNp emUpCnsKIHJldHVybiBrbWVtX2NhY2hlX2FsbG9jX3RyYWNlKHMsIGdmcGZsYWdzLCBzaXplKTsK fQojIDQ2OSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKZXh0ZXJuIHZvaWQgKmttYWxsb2Nfb3Jk ZXIoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCB1bnNpZ25lZCBpbnQgb3JkZXIpIF9fYXR0cmli dXRlX18oKF9fYXNzdW1lX2FsaWduZWRfXygoKDFVTCkgPDwgMTIpKSkpIF9fYXR0cmlidXRlX18o KF9fbWFsbG9jX18pKTsKCgpleHRlcm4gdm9pZCAqa21hbGxvY19vcmRlcl90cmFjZShzaXplX3Qg c2l6ZSwgZ2ZwX3QgZmxhZ3MsIHVuc2lnbmVkIGludCBvcmRlcikgX19hdHRyaWJ1dGVfXygoX19h c3N1bWVfYWxpZ25lZF9fKCgoMVVMKSA8PCAxMikpKSkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2Nf XykpOwojIDQ4MSAiLi9pbmNsdWRlL2xpbnV4L3NsYWIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKSB2b2lkICprbWFsbG9jX2xhcmdlKHNpemVfdCBzaXplLCBnZnBfdCBmbGFn cykKewogdW5zaWduZWQgaW50IG9yZGVyID0gZ2V0X29yZGVyKHNpemUpOwogcmV0dXJuIGttYWxs b2Nfb3JkZXJfdHJhY2Uoc2l6ZSwgZmxhZ3MsIG9yZGVyKTsKfQojIDU0MSAiLi9pbmNsdWRlL2xp bnV4L3NsYWIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkICprbWFs bG9jKHNpemVfdCBzaXplLCBnZnBfdCBmbGFncykKewogaWYgKF9fYnVpbHRpbl9jb25zdGFudF9w KHNpemUpKSB7CgogIHVuc2lnbmVkIGludCBpbmRleDsKCiAgaWYgKHNpemUgPiAoMVVMIDw8ICgo MTEgKyAxMiAtIDEpIDw9IDI1ID8gKDExICsgMTIgLSAxKSA6IDI1KSkpCiAgIHJldHVybiBrbWFs bG9jX2xhcmdlKHNpemUsIGZsYWdzKTsKCiAgaW5kZXggPSBrbWFsbG9jX2luZGV4KHNpemUpOwoK ICBpZiAoIWluZGV4KQogICByZXR1cm4gKCh2b2lkICopMTYpOwoKICByZXR1cm4ga21lbV9jYWNo ZV9hbGxvY190cmFjZSgKICAgIGttYWxsb2NfY2FjaGVzW2ttYWxsb2NfdHlwZShmbGFncyldW2lu ZGV4XSwKICAgIGZsYWdzLCBzaXplKTsKCiB9CiByZXR1cm4gX19rbWFsbG9jKHNpemUsIGZsYWdz KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKSB2b2lkICprbWFsbG9jX25v ZGUoc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKewoKIGlmIChfX2J1aWx0aW5f Y29uc3RhbnRfcChzaXplKSAmJgogIHNpemUgPD0gKDFVTCA8PCAoKDExICsgMTIgLSAxKSA8PSAy NSA/ICgxMSArIDEyIC0gMSkgOiAyNSkpKSB7CiAgdW5zaWduZWQgaW50IGkgPSBrbWFsbG9jX2lu ZGV4KHNpemUpOwoKICBpZiAoIWkpCiAgIHJldHVybiAoKHZvaWQgKikxNik7CgogIHJldHVybiBr bWVtX2NhY2hlX2FsbG9jX25vZGVfdHJhY2UoCiAgICBrbWFsbG9jX2NhY2hlc1trbWFsbG9jX3R5 cGUoZmxhZ3MpXVtpXSwKICAgICAgZmxhZ3MsIG5vZGUsIHNpemUpOwogfQoKIHJldHVybiBfX2tt YWxsb2Nfbm9kZShzaXplLCBmbGFncywgbm9kZSk7Cn0KCmludCBtZW1jZ191cGRhdGVfYWxsX2Nh Y2hlcyhpbnQgbnVtX21lbWNncyk7CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICprbWFsbG9jX2FycmF5KHNpemVfdCBu LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCnsKIHNpemVfdCBieXRlczsKCiBpZiAoX19idWls dGluX2V4cGVjdCghISgoeyB0eXBlb2YobikgX19hID0gKG4pOyB0eXBlb2Yoc2l6ZSkgX19iID0g KHNpemUpOyB0eXBlb2YoJmJ5dGVzKSBfX2QgPSAoJmJ5dGVzKTsgKHZvaWQpICgmX19hID09ICZf X2IpOyAodm9pZCkgKCZfX2EgPT0gX19kKTsgX19idWlsdGluX211bF9vdmVyZmxvdyhfX2EsIF9f YiwgX19kKTsgfSkpLCAwKSkKICByZXR1cm4gKCh2b2lkICopMCk7CiBpZiAoX19idWlsdGluX2Nv bnN0YW50X3AobikgJiYgX19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZSkpCiAgcmV0dXJuIGttYWxs b2MoYnl0ZXMsIGZsYWdzKTsKIHJldHVybiBfX2ttYWxsb2MoYnl0ZXMsIGZsYWdzKTsKfQoKCgoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqa2NhbGxvYyhzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQp7CiBy ZXR1cm4ga21hbGxvY19hcnJheShuLCBzaXplLCBmbGFncyB8ICgoIGdmcF90KTB4MTAwdSkpOwp9 CiMgNjE5ICIuL2luY2x1ZGUvbGludXgvc2xhYi5oIgpleHRlcm4gdm9pZCAqX19rbWFsbG9jX3Ry YWNrX2NhbGxlcihzaXplX3QsIGdmcF90LCB1bnNpZ25lZCBsb25nKTsKCgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqa21hbGxv Y19hcnJheV9ub2RlKHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsCiAgICAgICAg ICAgaW50IG5vZGUpCnsKIHNpemVfdCBieXRlczsKCiBpZiAoX19idWlsdGluX2V4cGVjdCghISgo eyB0eXBlb2YobikgX19hID0gKG4pOyB0eXBlb2Yoc2l6ZSkgX19iID0gKHNpemUpOyB0eXBlb2Yo JmJ5dGVzKSBfX2QgPSAoJmJ5dGVzKTsgKHZvaWQpICgmX19hID09ICZfX2IpOyAodm9pZCkgKCZf X2EgPT0gX19kKTsgX19idWlsdGluX211bF9vdmVyZmxvdyhfX2EsIF9fYiwgX19kKTsgfSkpLCAw KSkKICByZXR1cm4gKCh2b2lkICopMCk7CiBpZiAoX19idWlsdGluX2NvbnN0YW50X3AobikgJiYg X19idWlsdGluX2NvbnN0YW50X3Aoc2l6ZSkpCiAgcmV0dXJuIGttYWxsb2Nfbm9kZShieXRlcywg ZmxhZ3MsIG5vZGUpOwogcmV0dXJuIF9fa21hbGxvY19ub2RlKGJ5dGVzLCBmbGFncywgbm9kZSk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgKmtjYWxsb2Nfbm9kZShzaXplX3Qgbiwgc2l6ZV90IHNpemUsIGdmcF90IGZsYWdz LCBpbnQgbm9kZSkKewogcmV0dXJuIGttYWxsb2NfYXJyYXlfbm9kZShuLCBzaXplLCBmbGFncyB8 ICgoIGdmcF90KTB4MTAwdSksIG5vZGUpOwp9CiMgNjU3ICIuL2luY2x1ZGUvbGludXgvc2xhYi5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkICprbWVtX2NhY2hlX3phbGxvYyhzdHJ1Y3Qga21lbV9jYWNoZSAqaywgZ2ZwX3QgZmxh Z3MpCnsKIHJldHVybiBrbWVtX2NhY2hlX2FsbG9jKGssIGZsYWdzIHwgKCggZ2ZwX3QpMHgxMDB1 KSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCAqa3phbGxvYyhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCnsKIHJl dHVybiBrbWFsbG9jKHNpemUsIGZsYWdzIHwgKCggZ2ZwX3QpMHgxMDB1KSk7Cn0KCgoKCgoKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgKmt6YWxsb2Nfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKQp7CiBy ZXR1cm4ga21hbGxvY19ub2RlKHNpemUsIGZsYWdzIHwgKCggZ2ZwX3QpMHgxMDB1KSwgbm9kZSk7 Cn0KCnVuc2lnbmVkIGludCBrbWVtX2NhY2hlX3NpemUoc3RydWN0IGttZW1fY2FjaGUgKnMpOwp2 b2lkIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpIGttZW1fY2FjaGVfaW5pdF9sYXRlKHZvaWQpOwoKCmludCBzbGFiX3By ZXBhcmVfY3B1KHVuc2lnbmVkIGludCBjcHUpOwppbnQgc2xhYl9kZWFkX2NwdSh1bnNpZ25lZCBp bnQgY3B1KTsKIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L29zX3R5cGVzLmgiIDIKCgoKIyAxICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIiAxCiMgMzEg Ii4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxl LmgiIDEKIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiCiMgMSAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiIDEKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIiAxCiMgMTAg Ii4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIgpzdHJ1Y3Qgd2FpdF9iaXRfa2V5IHsKIHZvaWQg KmZsYWdzOwogaW50IGJpdF9ucjsKIHVuc2lnbmVkIGxvbmcgdGltZW91dDsKfTsKCnN0cnVjdCB3 YWl0X2JpdF9xdWV1ZV9lbnRyeSB7CiBzdHJ1Y3Qgd2FpdF9iaXRfa2V5IGtleTsKIHN0cnVjdCB3 YWl0X3F1ZXVlX2VudHJ5IHdxX2VudHJ5Owp9OwoKCgoKdHlwZWRlZiBpbnQgd2FpdF9iaXRfYWN0 aW9uX2Yoc3RydWN0IHdhaXRfYml0X2tleSAqa2V5LCBpbnQgbW9kZSk7Cgp2b2lkIF9fd2FrZV91 cF9iaXQoc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgdm9pZCAqd29yZCwgaW50IGJp dCk7CmludCBfX3dhaXRfb25fYml0KHN0cnVjdCB3YWl0X3F1ZXVlX2hlYWQgKndxX2hlYWQsIHN0 cnVjdCB3YWl0X2JpdF9xdWV1ZV9lbnRyeSAqd2JxX2VudHJ5LCB3YWl0X2JpdF9hY3Rpb25fZiAq YWN0aW9uLCB1bnNpZ25lZCBpbnQgbW9kZSk7CmludCBfX3dhaXRfb25fYml0X2xvY2soc3RydWN0 IHdhaXRfcXVldWVfaGVhZCAqd3FfaGVhZCwgc3RydWN0IHdhaXRfYml0X3F1ZXVlX2VudHJ5ICp3 YnFfZW50cnksIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGludCBtb2RlKTsK dm9pZCB3YWtlX3VwX2JpdCh2b2lkICp3b3JkLCBpbnQgYml0KTsKaW50IG91dF9vZl9saW5lX3dh aXRfb25fYml0KHZvaWQgKndvcmQsIGludCwgd2FpdF9iaXRfYWN0aW9uX2YgKmFjdGlvbiwgdW5z aWduZWQgaW50IG1vZGUpOwppbnQgb3V0X29mX2xpbmVfd2FpdF9vbl9iaXRfdGltZW91dCh2b2lk ICp3b3JkLCBpbnQsIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGludCBtb2Rl LCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOwppbnQgb3V0X29mX2xpbmVfd2FpdF9vbl9iaXRfbG9j ayh2b2lkICp3b3JkLCBpbnQsIHdhaXRfYml0X2FjdGlvbl9mICphY3Rpb24sIHVuc2lnbmVkIGlu dCBtb2RlKTsKc3RydWN0IHdhaXRfcXVldWVfaGVhZCAqYml0X3dhaXRxdWV1ZSh2b2lkICp3b3Jk LCBpbnQgYml0KTsKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0 LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgd2FpdF9iaXRfaW5pdCh2b2lkKTsK CmludCB3YWtlX2JpdF9mdW5jdGlvbihzdHJ1Y3Qgd2FpdF9xdWV1ZV9lbnRyeSAqd3FfZW50cnks IHVuc2lnbmVkIG1vZGUsIGludCBzeW5jLCB2b2lkICprZXkpOwojIDQ5ICIuL2luY2x1ZGUvbGlu dXgvd2FpdF9iaXQuaCIKZXh0ZXJuIGludCBiaXRfd2FpdChzdHJ1Y3Qgd2FpdF9iaXRfa2V5ICpr ZXksIGludCBtb2RlKTsKZXh0ZXJuIGludCBiaXRfd2FpdF9pbyhzdHJ1Y3Qgd2FpdF9iaXRfa2V5 ICprZXksIGludCBtb2RlKTsKZXh0ZXJuIGludCBiaXRfd2FpdF90aW1lb3V0KHN0cnVjdCB3YWl0 X2JpdF9rZXkgKmtleSwgaW50IG1vZGUpOwpleHRlcm4gaW50IGJpdF93YWl0X2lvX3RpbWVvdXQo c3RydWN0IHdhaXRfYml0X2tleSAqa2V5LCBpbnQgbW9kZSk7CiMgNzAgIi4vaW5jbHVkZS9saW51 eC93YWl0X2JpdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQKd2FpdF9vbl9iaXQodW5zaWduZWQgbG9uZyAqd29yZCwgaW50IGJp dCwgdW5zaWduZWQgbW9kZSkKewogZG8geyBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsK IGlmICghdGVzdF9iaXQoYml0LCB3b3JkKSkKICByZXR1cm4gMDsKIHJldHVybiBvdXRfb2ZfbGlu ZV93YWl0X29uX2JpdCh3b3JkLCBiaXQsCiAgICAgICAgICAgYml0X3dhaXQsCiAgICAgICAgICAg bW9kZSk7Cn0KIyA5NSAiLi9pbmNsdWRlL2xpbnV4L3dhaXRfYml0LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAp3YWl0X29uX2Jp dF9pbyh1bnNpZ25lZCBsb25nICp3b3JkLCBpbnQgYml0LCB1bnNpZ25lZCBtb2RlKQp7CiBkbyB7 IGRvIHsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogaWYgKCF0ZXN0X2JpdChiaXQsIHdvcmQp KQogIHJldHVybiAwOwogcmV0dXJuIG91dF9vZl9saW5lX3dhaXRfb25fYml0KHdvcmQsIGJpdCwK ICAgICAgICAgICBiaXRfd2FpdF9pbywKICAgICAgICAgICBtb2RlKTsKfQojIDEyMSAiLi9pbmNs dWRlL2xpbnV4L3dhaXRfYml0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGludAp3YWl0X29uX2JpdF90aW1lb3V0KHVuc2lnbmVkIGxv bmcgKndvcmQsIGludCBiaXQsIHVuc2lnbmVkIG1vZGUsCiAgICAgIHVuc2lnbmVkIGxvbmcgdGlt ZW91dCkKewogZG8geyBkbyB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIGlmICghdGVzdF9i aXQoYml0LCB3b3JkKSkKICByZXR1cm4gMDsKIHJldHVybiBvdXRfb2ZfbGluZV93YWl0X29uX2Jp dF90aW1lb3V0KHdvcmQsIGJpdCwKICAgICAgICAgICAgYml0X3dhaXRfdGltZW91dCwKICAgICAg ICAgICAgbW9kZSwgdGltZW91dCk7Cn0KIyAxNDkgIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQKd2FpdF9vbl9iaXRfYWN0aW9uKHVuc2lnbmVkIGxvbmcgKndvcmQsIGludCBiaXQsIHdh aXRfYml0X2FjdGlvbl9mICphY3Rpb24sCiAgICAgdW5zaWduZWQgbW9kZSkKewogZG8geyBkbyB7 IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIGlmICghdGVzdF9iaXQoYml0LCB3b3JkKSkKICBy ZXR1cm4gMDsKIHJldHVybiBvdXRfb2ZfbGluZV93YWl0X29uX2JpdCh3b3JkLCBiaXQsIGFjdGlv biwgbW9kZSk7Cn0KIyAxNzggIi4vaW5jbHVkZS9saW51eC93YWl0X2JpdC5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQKd2FpdF9v bl9iaXRfbG9jayh1bnNpZ25lZCBsb25nICp3b3JkLCBpbnQgYml0LCB1bnNpZ25lZCBtb2RlKQp7 CiBkbyB7IGRvIHsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogaWYgKCF0ZXN0X2FuZF9zZXRf Yml0KGJpdCwgd29yZCkpCiAgcmV0dXJuIDA7CiByZXR1cm4gb3V0X29mX2xpbmVfd2FpdF9vbl9i aXRfbG9jayh3b3JkLCBiaXQsIGJpdF93YWl0LCBtb2RlKTsKfQojIDIwMiAiLi9pbmNsdWRlL2xp bnV4L3dhaXRfYml0LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludAp3YWl0X29uX2JpdF9sb2NrX2lvKHVuc2lnbmVkIGxvbmcgKndv cmQsIGludCBiaXQsIHVuc2lnbmVkIG1vZGUpCnsKIGRvIHsgZG8geyB9IHdoaWxlICgwKTsgfSB3 aGlsZSAoMCk7CiBpZiAoIXRlc3RfYW5kX3NldF9iaXQoYml0LCB3b3JkKSkKICByZXR1cm4gMDsK IHJldHVybiBvdXRfb2ZfbGluZV93YWl0X29uX2JpdF9sb2NrKHdvcmQsIGJpdCwgYml0X3dhaXRf aW8sIG1vZGUpOwp9CiMgMjI4ICIuL2luY2x1ZGUvbGludXgvd2FpdF9iaXQuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50CndhaXRf b25fYml0X2xvY2tfYWN0aW9uKHVuc2lnbmVkIGxvbmcgKndvcmQsIGludCBiaXQsIHdhaXRfYml0 X2FjdGlvbl9mICphY3Rpb24sCiAgIHVuc2lnbmVkIG1vZGUpCnsKIGRvIHsgZG8geyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CiBpZiAoIXRlc3RfYW5kX3NldF9iaXQoYml0LCB3b3JkKSkKICBy ZXR1cm4gMDsKIHJldHVybiBvdXRfb2ZfbGluZV93YWl0X29uX2JpdF9sb2NrKHdvcmQsIGJpdCwg YWN0aW9uLCBtb2RlKTsKfQoKZXh0ZXJuIHZvaWQgaW5pdF93YWl0X3Zhcl9lbnRyeShzdHJ1Y3Qg d2FpdF9iaXRfcXVldWVfZW50cnkgKndicV9lbnRyeSwgdm9pZCAqdmFyLCBpbnQgZmxhZ3MpOwpl eHRlcm4gdm9pZCB3YWtlX3VwX3Zhcih2b2lkICp2YXIpOwpleHRlcm4gd2FpdF9xdWV1ZV9oZWFk X3QgKl9fdmFyX3dhaXRxdWV1ZSh2b2lkICpwKTsKIyAzMzAgIi4vaW5jbHVkZS9saW51eC93YWl0 X2JpdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGNsZWFyX2FuZF93YWtlX3VwX2JpdChpbnQgYml0LCB2b2lkICp3b3JkKQp7 CiBjbGVhcl9iaXRfdW5sb2NrKGJpdCwgd29yZCk7CgogZG8geyB9IHdoaWxlICgwKTsKIHdha2Vf dXBfYml0KHdvcmQsIGJpdCk7Cn0KIyA3ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi4v aW5jbHVkZS9saW51eC9rZGV2X3QuaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9r ZGV2X3QuaCIgMQojIDYgIi4vaW5jbHVkZS9saW51eC9rZGV2X3QuaCIgMgojIDI0ICIuL2luY2x1 ZGUvbGludXgva2Rldl90LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgb2xkX3ZhbGlkX2RldihkZXZfdCBkZXYpCnsKIHJldHVy biAoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDIwKSkgPCAyNTYgJiYgKCh1bnNpZ25lZCBpbnQp ICgoZGV2KSAmICgoMVUgPDwgMjApIC0gMSkpKSA8IDI1NjsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTE2IG9sZF9lbmNvZGVfZGV2 KGRldl90IGRldikKewogcmV0dXJuICgoKHVuc2lnbmVkIGludCkgKChkZXYpID4+IDIwKSkgPDwg OCkgfCAoKHVuc2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCAyMCkgLSAxKSkpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBkZXZf dCBvbGRfZGVjb2RlX2Rldih1MTYgdmFsKQp7CiByZXR1cm4gKCgoKHZhbCA+PiA4KSAmIDI1NSkg PDwgMjApIHwgKHZhbCAmIDI1NSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgbmV3X2VuY29kZV9kZXYoZGV2X3QgZGV2KQp7 CiB1bnNpZ25lZCBtYWpvciA9ICgodW5zaWduZWQgaW50KSAoKGRldikgPj4gMjApKTsKIHVuc2ln bmVkIG1pbm9yID0gKCh1bnNpZ25lZCBpbnQpICgoZGV2KSAmICgoMVUgPDwgMjApIC0gMSkpKTsK IHJldHVybiAobWlub3IgJiAweGZmKSB8IChtYWpvciA8PCA4KSB8ICgobWlub3IgJiB+MHhmZikg PDwgMTIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBkZXZfdCBuZXdfZGVjb2RlX2Rldih1MzIgZGV2KQp7CiB1bnNpZ25lZCBtYWpv ciA9IChkZXYgJiAweGZmZjAwKSA+PiA4OwogdW5zaWduZWQgbWlub3IgPSAoZGV2ICYgMHhmZikg fCAoKGRldiA+PiAxMikgJiAweGZmZjAwKTsKIHJldHVybiAoKChtYWpvcikgPDwgMjApIHwgKG1p bm9yKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHU2NCBodWdlX2VuY29kZV9kZXYoZGV2X3QgZGV2KQp7CiByZXR1cm4gbmV3X2Vu Y29kZV9kZXYoZGV2KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgZGV2X3QgaHVnZV9kZWNvZGVfZGV2KHU2NCBkZXYpCnsKIHJldHVy biBuZXdfZGVjb2RlX2RldihkZXYpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc3lzdl92YWxpZF9kZXYoZGV2X3QgZGV2KQp7 CiByZXR1cm4gKCh1bnNpZ25lZCBpbnQpICgoZGV2KSA+PiAyMCkpIDwgKDE8PDE0KSAmJiAoKHVu c2lnbmVkIGludCkgKChkZXYpICYgKCgxVSA8PCAyMCkgLSAxKSkpIDwgKDE8PDE4KTsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMy IHN5c3ZfZW5jb2RlX2RldihkZXZfdCBkZXYpCnsKIHJldHVybiAoKHVuc2lnbmVkIGludCkgKChk ZXYpICYgKCgxVSA8PCAyMCkgLSAxKSkpIHwgKCgodW5zaWduZWQgaW50KSAoKGRldikgPj4gMjAp KSA8PCAxOCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHVuc2lnbmVkIHN5c3ZfbWFqb3IodTMyIGRldikKewogcmV0dXJuIChkZXYg Pj4gMTgpICYgMHgzZmZmOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBzeXN2X21pbm9yKHUzMiBkZXYpCnsKIHJldHVy biBkZXYgJiAweDNmZmZmOwp9CiMgOCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIuL2lu Y2x1ZGUvbGludXgvZGNhY2hlLmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvcmN1bGlz dC5oIiAxCiMgMzEgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgSU5JVF9MSVNUX0hF QURfUkNVKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCnsKICh7IHVuaW9uIHsgdHlwZW9mKGxpc3Qt Pm5leHQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKGxp c3QtPm5leHQpKSAobGlzdCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihsaXN0LT5uZXh0KSwgX191 Ll9fYywgc2l6ZW9mKGxpc3QtPm5leHQpKTsgX191Ll9fdmFsOyB9KTsKICh7IHVuaW9uIHsgdHlw ZW9mKGxpc3QtPnByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICgg dHlwZW9mKGxpc3QtPnByZXYpKSAobGlzdCkgfTsgX193cml0ZV9vbmNlX3NpemUoJihsaXN0LT5w cmV2KSwgX191Ll9fYywgc2l6ZW9mKGxpc3QtPnByZXYpKTsgX191Ll9fdmFsOyB9KTsKfQojIDc3 ICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIF9fbGlzdF9hZGRfcmN1KHN0cnVjdCBs aXN0X2hlYWQgKm5ldywKICBzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2LCBzdHJ1Y3QgbGlzdF9oZWFk ICpuZXh0KQp7CiBpZiAoIV9fbGlzdF9hZGRfdmFsaWQobmV3LCBwcmV2LCBuZXh0KSkKICByZXR1 cm47CgogbmV3LT5uZXh0ID0gbmV4dDsKIG5ldy0+cHJldiA9IHByZXY7CiBkbyB7IHVpbnRwdHJf dCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuZXcpOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRf cChuZXcpICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9u IHsgdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpIF9f dmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0 IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpKSAoKHR5cGVvZigoKigoc3RydWN0IGxp c3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25j ZV9zaXplKCYoKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSksIF9f dS5fX2MsIHNpemVvZigoKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkp KSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRp bWVfYXNzZXJ0Xzg1KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUg d29yZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9m KComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihj aGFyKSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkp KSkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKiko JihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBs aXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihsb25nKSkpKSBfX2NvbXBp bGV0aW1lX2Fzc2VydF84NSgpOyB9IHdoaWxlICgwKTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6 IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0eXBlb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihwcmV2KS0+bmV4dCkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFs ID0gKCB0eXBlb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkp ICgodHlwZW9mKCooKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4 dCkpKSkpX3JfYV9wX192KSkgKikoKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihw cmV2KS0+bmV4dCkpKSkpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJigqKChz dHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSwgX191Ll9fYywgc2l6ZW9mKCom KCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpKTsgX191Ll9fdmFsOyB9 KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogbmV4dC0+cHJldiA9IG5ldzsKfQojIDEwNSAi Li9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X2FkZF9yY3Uoc3RydWN0IGxpc3Rf aGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQp7CiBfX2xpc3RfYWRkX3JjdShuZXcs IGhlYWQsIGhlYWQtPm5leHQpOwp9CiMgMTI2ICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkIGxpc3RfYWRkX3RhaWxfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKm5ldywKICAgICBzdHJ1Y3Qg bGlzdF9oZWFkICpoZWFkKQp7CiBfX2xpc3RfYWRkX3JjdShuZXcsIGhlYWQtPnByZXYsIGhlYWQp Owp9CiMgMTU2ICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGxpc3RfZGVsX3JjdShz dHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKewogX19saXN0X2RlbF9lbnRyeShlbnRyeSk7CiBlbnRy eS0+cHJldiA9ICgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwp9CiMg MTgyICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2RlbF9pbml0X3JjdShz dHJ1Y3QgaGxpc3Rfbm9kZSAqbikKewogaWYgKCFobGlzdF91bmhhc2hlZChuKSkgewogIF9faGxp c3RfZGVsKG4pOwogICh7IHVuaW9uIHsgdHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2Nb MV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZihuLT5wcHJldikpICgoKHZvaWQgKikwKSkg fTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihuLT5wcHJl dikpOyBfX3UuX192YWw7IH0pOwogfQp9CiMgMTk4ICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIGxpc3RfcmVwbGFjZV9yY3Uoc3RydWN0IGxpc3RfaGVhZCAqb2xkLAogICAgc3RydWN0 IGxpc3RfaGVhZCAqbmV3KQp7CiBuZXctPm5leHQgPSBvbGQtPm5leHQ7CiBuZXctPnByZXYgPSBv bGQtPnByZXY7CiBkbyB7IHVpbnRwdHJfdCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuZXcpOyA7 IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChuZXcpICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRy X3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihuZXctPnByZXYpLT5uZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsg Ll9fdmFsID0gKCB0eXBlb2YoKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldikt Pm5leHQpKSkpKSkgKCh0eXBlb2YoKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2 KS0+bmV4dCkpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgqKChzdHJ1 Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9m KCgoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSkpOyBfX3Uu X192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2Vy dF8yMDModm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNp emVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXplb2YoKiYoKigo c3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hh cikgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYobmV3LT5wcmV2KS0+bmV4 dCkpKSkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYoKigo c3RydWN0IGxpc3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YobG9u ZykpKSkgX19jb21waWxldGltZV9hc3NlcnRfMjAzKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9f dm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1 Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpIF9fdmFsOyBjaGFyIF9fY1sx XTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiop KCYobmV3LT5wcmV2KS0+bmV4dCkpKSkpICgodHlwZW9mKCooKHR5cGVvZigoKigoc3RydWN0IGxp c3RfaGVhZCAqKikoJihuZXctPnByZXYpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSAqKSgodHlwZW9m KCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKG5ldy0+cHJldiktPm5leHQpKSkpKV9yX2FfcF9f dikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKiYoKigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihu ZXctPnByZXYpLT5uZXh0KSkpKSwgX191Ll9fYywgc2l6ZW9mKComKCooKHN0cnVjdCBsaXN0X2hl YWQgKiopKCYobmV3LT5wcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgw KTsgfSB3aGlsZSAoMCk7CiBuZXctPm5leHQtPnByZXYgPSBuZXc7CiBvbGQtPnByZXYgPSAoKHZv aWQgKikgMHgxMjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwpKTsKfQojIDIyNyAiLi9pbmNsdWRl L2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBfX2xpc3Rfc3BsaWNlX2luaXRfcmN1KHN0cnVjdCBsaXN0 X2hlYWQgKmxpc3QsCiAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwcmV2LAogICAgICAgc3RydWN0 IGxpc3RfaGVhZCAqbmV4dCwKICAgICAgIHZvaWQgKCpzeW5jKSh2b2lkKSkKewogc3RydWN0IGxp c3RfaGVhZCAqZmlyc3QgPSBsaXN0LT5uZXh0Owogc3RydWN0IGxpc3RfaGVhZCAqbGFzdCA9IGxp c3QtPnByZXY7CgoKCgoKCgogSU5JVF9MSVNUX0hFQURfUkNVKGxpc3QpOwojIDI1MCAiLi9pbmNs dWRlL2xpbnV4L3JjdWxpc3QuaCIKIHN5bmMoKTsKIyAyNjAgIi4vaW5jbHVkZS9saW51eC9yY3Vs aXN0LmgiCiBsYXN0LT5uZXh0ID0gbmV4dDsKIGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1 aW50cHRyX3QpKGZpcnN0KTsgOyBpZiAoX19idWlsdGluX2NvbnN0YW50X3AoZmlyc3QpICYmIChf cl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKCgo Kigoc3RydWN0IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0IGxpc3RfaGVhZCAq KikoJihwcmV2KS0+bmV4dCkpKSkpKSAoKHR5cGVvZigoKigoc3RydWN0IGxpc3RfaGVhZCAqKiko JihwcmV2KS0+bmV4dCkpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKCgq KChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSksIF9fdS5fX2MsIHNpemVv ZigoKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpKSk7IF9fdS5fX3Zh bDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI2 MSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQg c3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1 Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YoY2hhcikgfHwgc2l6 ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVv ZihzaG9ydCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBsaXN0X2hlYWQgKiopKCYocHJldiktPm5l eHQpKSkpID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoq KSgmKHByZXYpLT5uZXh0KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3Nl cnRfMjYxKCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9y eSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYp LT5uZXh0KSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVv ZigqJigqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2Yo KigodHlwZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0KSkpKSlfcl9h X3BfX3YpKSAqKSgodHlwZW9mKCgqKChzdHJ1Y3QgbGlzdF9oZWFkICoqKSgmKHByZXYpLT5uZXh0 KSkpKSlfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKComKCooKHN0cnVjdCBsaXN0 X2hlYWQgKiopKCYocHJldiktPm5leHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0 IGxpc3RfaGVhZCAqKikoJihwcmV2KS0+bmV4dCkpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxl ICgwKTsgfSB3aGlsZSAoMCk7CiBmaXJzdC0+cHJldiA9IHByZXY7CiBuZXh0LT5wcmV2ID0gbGFz dDsKfQojIDI3MyAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3NwbGljZV9p bml0X3JjdShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAogICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhl YWQsCiAgICAgdm9pZCAoKnN5bmMpKHZvaWQpKQp7CiBpZiAoIWxpc3RfZW1wdHkobGlzdCkpCiAg X19saXN0X3NwbGljZV9pbml0X3JjdShsaXN0LCBoZWFkLCBoZWFkLT5uZXh0LCBzeW5jKTsKfQoj IDI4OCAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBsaXN0X3NwbGljZV90YWlsX2lu aXRfcmN1KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFk ICpoZWFkLAogICAgICAgICAgdm9pZCAoKnN5bmMpKHZvaWQpKQp7CiBpZiAoIWxpc3RfZW1wdHko bGlzdCkpCiAgX19saXN0X3NwbGljZV9pbml0X3JjdShsaXN0LCBoZWFkLT5wcmV2LCBoZWFkLCBz eW5jKTsKfQojIDQ4MyAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3QuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9kZWxf cmN1KHN0cnVjdCBobGlzdF9ub2RlICpuKQp7CiBfX2hsaXN0X2RlbChuKTsKICh7IHVuaW9uIHsg dHlwZW9mKG4tPnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAo IHR5cGVvZihuLT5wcHJldikpICgoKHZvaWQgKikgMHgxMjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAw VUwpKSkgfTsgX193cml0ZV9vbmNlX3NpemUoJihuLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihu LT5wcHJldikpOyBfX3UuX192YWw7IH0pOwp9CiMgNDk2ICIuL2luY2x1ZGUvbGludXgvcmN1bGlz dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGhsaXN0X3JlcGxhY2VfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpvbGQsCiAgICAg c3RydWN0IGhsaXN0X25vZGUgKm5ldykKewogc3RydWN0IGhsaXN0X25vZGUgKm5leHQgPSBvbGQt Pm5leHQ7CgogbmV3LT5uZXh0ID0gbmV4dDsKICh7IHVuaW9uIHsgdHlwZW9mKG5ldy0+cHByZXYp IF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG5ldy0+cHBy ZXYpKSAob2xkLT5wcHJldikgfTsgX193cml0ZV9vbmNlX3NpemUoJihuZXctPnBwcmV2KSwgX191 Ll9fYywgc2l6ZW9mKG5ldy0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKIGRvIHsgdWludHB0cl90 IF9yX2FfcF9fdiA9ICh1aW50cHRyX3QpKG5ldyk7IDsgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9w KG5ldykgJiYgKF9yX2FfcF9fdikgPT0gKHVpbnRwdHJfdCkoKHZvaWQgKikwKSkgKHsgdW5pb24g eyB0eXBlb2YoKCooc3RydWN0IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikpIF9fdmFsOyBjaGFy IF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgqKHN0cnVjdCBobGlzdF9ub2Rl ICoqKW5ldy0+cHByZXYpKSkgKCh0eXBlb2YoKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBw cmV2KSkoX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigoKihzdHJ1Y3QgaGxpc3Rf bm9kZSAqKiluZXctPnBwcmV2KSksIF9fdS5fX2MsIHNpemVvZigoKihzdHJ1Y3QgaGxpc3Rfbm9k ZSAqKiluZXctPnBwcmV2KSkpOyBfX3UuX192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4g dm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF81MDModm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJv cl9fKCJOZWVkIG5hdGl2ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIp KSk7IGlmICghKChzaXplb2YoKiYqKHN0cnVjdCBobGlzdF9ub2RlICoqKW5ldy0+cHByZXYpID09 IHNpemVvZihjaGFyKSB8fCBzaXplb2YoKiYqKHN0cnVjdCBobGlzdF9ub2RlICoqKW5ldy0+cHBy ZXYpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKilu ZXctPnBwcmV2KSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYqKHN0cnVjdCBobGlzdF9ub2Rl ICoqKW5ldy0+cHByZXYpID09IHNpemVvZihsb25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF81 MDMoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7 ICh7IHVuaW9uIHsgdHlwZW9mKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSBf X3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqJiooc3RydWN0 IGhsaXN0X25vZGUgKiopbmV3LT5wcHJldikpICgodHlwZW9mKCooKHR5cGVvZigqKHN0cnVjdCBo bGlzdF9ub2RlICoqKW5ldy0+cHByZXYpKV9yX2FfcF9fdikpICopKCh0eXBlb2YoKihzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSlfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6 ZSgmKComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9m KComKihzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiluZXctPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7IH0g d2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIGlmIChuZXh0KQogICh7IHVuaW9uIHsgdHlwZW9mKG5l dy0+bmV4dC0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICgg dHlwZW9mKG5ldy0+bmV4dC0+cHByZXYpKSAoJm5ldy0+bmV4dCkgfTsgX193cml0ZV9vbmNlX3Np emUoJihuZXctPm5leHQtPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG5ldy0+bmV4dC0+cHByZXYp KTsgX191Ll9fdmFsOyB9KTsKICh7IHVuaW9uIHsgdHlwZW9mKG9sZC0+cHByZXYpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG9sZC0+cHByZXYpKSAoKCh2 b2lkICopIDB4MTIyICsgKDB4ZGVhZDAwMDAwMDAwMDAwMFVMKSkpIH07IF9fd3JpdGVfb25jZV9z aXplKCYob2xkLT5wcHJldiksIF9fdS5fX2MsIHNpemVvZihvbGQtPnBwcmV2KSk7IF9fdS5fX3Zh bDsgfSk7Cn0KIyA1MzUgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfYWRk X2hlYWRfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuLAogICAgIHN0cnVjdCBobGlzdF9oZWFkICpo KQp7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqZmlyc3QgPSBoLT5maXJzdDsKCiBuLT5uZXh0ID0gZmly c3Q7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYpKSAoJmgtPmZpcnN0KSB9OyBfX3dyaXRl X29uY2Vfc2l6ZSgmKG4tPnBwcmV2KSwgX191Ll9fYywgc2l6ZW9mKG4tPnBwcmV2KSk7IF9fdS5f X3ZhbDsgfSk7CiBkbyB7IHVpbnRwdHJfdCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuKTsgOyBp ZiAoX19idWlsdGluX2NvbnN0YW50X3AobikgJiYgKF9yX2FfcF9fdikgPT0gKHVpbnRwdHJfdCko KHZvaWQgKikwKSkgKHsgdW5pb24geyB0eXBlb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiko JihoKS0+Zmlyc3QpKSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAo IHR5cGVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkpKSAoKHR5 cGVvZigoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0KSkpKSkoX3JfYV9wX192 KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGgp LT5maXJzdCkpKSkpLCBfX3UuX19jLCBzaXplb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiko JihoKS0+Zmlyc3QpKSkpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVybiB2 b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzU0Mih2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9y X18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikp KTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3Qp KSkpID09IHNpemVvZihjaGFyKSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiop KCYoaCktPmZpcnN0KSkpKSA9PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpID09IHNpemVvZihpbnQpIHx8IHNpemVvZigq JigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpID09IHNpemVvZihsb25n KSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF81NDIoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192 b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7ICh7IHVuaW9uIHsgdHlwZW9mKComKCooKHN0cnVj dCBobGlzdF9ub2RlICoqKSgmKGgpLT5maXJzdCkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9f dSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCkt PmZpcnN0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKiko JihoKS0+Zmlyc3QpKSkpKV9yX2FfcF9fdikpICopKCh0eXBlb2YoKCooKHN0cnVjdCBobGlzdF9u b2RlICoqKSgmKGgpLT5maXJzdCkpKSkpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUo JigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihoKS0+Zmlyc3QpKSkpLCBfX3UuX19jLCBz aXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYoaCktPmZpcnN0KSkpKSk7IF9fdS5f X3ZhbDsgfSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIGlmIChmaXJzdCkKICAoeyB1bmlv biB7IHR5cGVvZihmaXJzdC0+cHByZXYpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5f X3ZhbCA9ICggdHlwZW9mKGZpcnN0LT5wcHJldikpICgmbi0+bmV4dCkgfTsgX193cml0ZV9vbmNl X3NpemUoJihmaXJzdC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2YoZmlyc3QtPnBwcmV2KSk7IF9f dS5fX3ZhbDsgfSk7Cn0KIyA1NjYgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0LmgiCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxp c3RfYWRkX3RhaWxfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuLAogICAgICAgICAgc3RydWN0IGhs aXN0X2hlYWQgKmgpCnsKIHN0cnVjdCBobGlzdF9ub2RlICppLCAqbGFzdCA9ICgodm9pZCAqKTAp OwoKCiBmb3IgKGkgPSBoLT5maXJzdDsgaTsgaSA9IGktPm5leHQpCiAgbGFzdCA9IGk7CgogaWYg KGxhc3QpIHsKICBuLT5uZXh0ID0gbGFzdC0+bmV4dDsKICAoeyB1bmlvbiB7IHR5cGVvZihuLT5w cHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+ cHByZXYpKSAoJmxhc3QtPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+cHByZXYpLCBf X3UuX19jLCBzaXplb2Yobi0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKICBkbyB7IHVpbnRwdHJf dCBfcl9hX3BfX3YgPSAodWludHB0cl90KShuKTsgOyBpZiAoX19idWlsdGluX2NvbnN0YW50X3Ao bikgJiYgKF9yX2FfcF9fdikgPT0gKHVpbnRwdHJfdCkoKHZvaWQgKikwKSkgKHsgdW5pb24geyB0 eXBlb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+bmV4dCkpKSkpIF9fdmFs OyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCgoKigoc3RydWN0IGhs aXN0X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpKSkgKCh0eXBlb2YoKCooKHN0cnVjdCBobGlz dF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSkoX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNl X3NpemUoJigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSksIF9f dS5fX2MsIHNpemVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkp KSkpOyBfX3UuX192YWw7IH0pOyBlbHNlIGRvIHsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0 aW1lX2Fzc2VydF81Nzgodm9pZCkgX19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJOZWVkIG5hdGl2 ZSB3b3JkIHNpemVkIHN0b3Jlcy9sb2FkcyBmb3IgYXRvbWljaXR5LiIpKSk7IGlmICghKChzaXpl b2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpID09IHNpemVv ZihjaGFyKSB8fCBzaXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYobGFzdCktPm5l eHQpKSkpID09IHNpemVvZihzaG9ydCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2Rl ICoqKSgmKGxhc3QpLT5uZXh0KSkpKSA9PSBzaXplb2YoaW50KSB8fCBzaXplb2YoKiYoKigoc3Ry dWN0IGhsaXN0X25vZGUgKiopKCYobGFzdCktPm5leHQpKSkpID09IHNpemVvZihsb25nKSkpKSBf X2NvbXBpbGV0aW1lX2Fzc2VydF81NzgoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18gX192b2xhdGls ZV9fKCIiOiA6IDoibWVtb3J5Iik7ICh7IHVuaW9uIHsgdHlwZW9mKComKCooKHN0cnVjdCBobGlz dF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0g eyAuX192YWwgPSAoIHR5cGVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihsYXN0KS0+ bmV4dCkpKSkpICgodHlwZW9mKCooKHR5cGVvZigoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYo bGFzdCktPm5leHQpKSkpKV9yX2FfcF9fdikpICopKCh0eXBlb2YoKCooKHN0cnVjdCBobGlzdF9u b2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSlfcl9hX3BfX3YpKSB9OyBfX3dyaXRlX29uY2Vfc2l6 ZSgmKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSwgX191Ll9f Yywgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKGxhc3QpLT5uZXh0KSkpKSk7 IF9fdS5fX3ZhbDsgfSk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIH0gZWxzZSB7CiAgaGxp c3RfYWRkX2hlYWRfcmN1KG4sIGgpOwogfQp9CiMgNjAyICIuL2luY2x1ZGUvbGludXgvcmN1bGlz dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB2b2lkIGhsaXN0X2FkZF9iZWZvcmVfcmN1KHN0cnVjdCBobGlzdF9ub2RlICpuLAogICAg IHN0cnVjdCBobGlzdF9ub2RlICpuZXh0KQp7CiAoeyB1bmlvbiB7IHR5cGVvZihuLT5wcHJldikg X192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yobi0+cHByZXYp KSAobmV4dC0+cHByZXYpIH07IF9fd3JpdGVfb25jZV9zaXplKCYobi0+cHByZXYpLCBfX3UuX19j LCBzaXplb2Yobi0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKIG4tPm5leHQgPSBuZXh0OwogZG8g eyB1aW50cHRyX3QgX3JfYV9wX192ID0gKHVpbnRwdHJfdCkobik7IDsgaWYgKF9fYnVpbHRpbl9j b25zdGFudF9wKG4pICYmIChfcl9hX3BfX3YpID09ICh1aW50cHRyX3QpKCh2b2lkICopMCkpICh7 IHVuaW9uIHsgdHlwZW9mKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKChuKS0+cHByZXYpKSkp KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigoKCooKHN0 cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSkpICgodHlwZW9mKCgqKChzdHJ1Y3Qg aGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25j ZV9zaXplKCYoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpLCBfX3Uu X19jLCBzaXplb2YoKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpKTsg X191Ll9fdmFsOyB9KTsgZWxzZSBkbyB7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9h c3NlcnRfNjA3KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29y ZCBzaXplZCBzdG9yZXMvbG9hZHMgZm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKCom KCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSA9PSBzaXplb2YoY2hhcikg fHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSA9PSBz aXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5w cHJldikpKSkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2Rl ICoqKSgobiktPnBwcmV2KSkpKSA9PSBzaXplb2YobG9uZykpKSkgX19jb21waWxldGltZV9hc3Nl cnRfNjA3KCk7IH0gd2hpbGUgKDApOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9y eSIpOyAoeyB1bmlvbiB7IHR5cGVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5w cHJldikpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo KiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKChuKS0+cHByZXYpKSkpKSAoKHR5cGVvZigqKCh0 eXBlb2YoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgobiktPnBwcmV2KSkpKSlfcl9hX3BfX3Yp KSAqKSgodHlwZW9mKCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoKG4pLT5wcHJldikpKSkpX3Jf YV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAq KikoKG4pLT5wcHJldikpKSksIF9fdS5fX2MsIHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9k ZSAqKikoKG4pLT5wcHJldikpKSkpOyBfX3UuX192YWw7IH0pOyB9IHdoaWxlICgwKTsgfSB3aGls ZSAoMCk7CiAoeyB1bmlvbiB7IHR5cGVvZihuZXh0LT5wcHJldikgX192YWw7IGNoYXIgX19jWzFd OyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YobmV4dC0+cHByZXYpKSAoJm4tPm5leHQpIH07 IF9fd3JpdGVfb25jZV9zaXplKCYobmV4dC0+cHByZXYpLCBfX3UuX19jLCBzaXplb2YobmV4dC0+ cHByZXYpKTsgX191Ll9fdmFsOyB9KTsKfQojIDYyOSAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3Qu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBobGlzdF9hZGRfYmVoaW5kX3JjdShzdHJ1Y3QgaGxpc3Rfbm9kZSAqbiwKICAgICBz dHJ1Y3QgaGxpc3Rfbm9kZSAqcHJldikKewogbi0+bmV4dCA9IHByZXYtPm5leHQ7CiAoeyB1bmlv biB7IHR5cGVvZihuLT5wcHJldikgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFs ID0gKCB0eXBlb2Yobi0+cHByZXYpKSAoJnByZXYtPm5leHQpIH07IF9fd3JpdGVfb25jZV9zaXpl KCYobi0+cHByZXYpLCBfX3UuX19jLCBzaXplb2Yobi0+cHByZXYpKTsgX191Ll9fdmFsOyB9KTsK IGRvIHsgdWludHB0cl90IF9yX2FfcF9fdiA9ICh1aW50cHRyX3QpKG4pOyA7IGlmIChfX2J1aWx0 aW5fY29uc3RhbnRfcChuKSAmJiAoX3JfYV9wX192KSA9PSAodWludHB0cl90KSgodm9pZCAqKTAp KSAoeyB1bmlvbiB7IHR5cGVvZigoKCooKHN0cnVjdCBobGlzdF9ub2RlICoqKSgmKHByZXYpLT5u ZXh0KSkpKSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2Yo KCgqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkpKSAoKHR5cGVvZigo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpKShfcl9hX3BfX3YpKSB9 OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldikt Pm5leHQpKSkpKSwgX191Ll9fYywgc2l6ZW9mKCgoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYo cHJldiktPm5leHQpKSkpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2UgZG8geyBkbyB7IGV4dGVybiB2 b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzYzNCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9y X18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9taWNpdHkuIikp KTsgaWYgKCEoKHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4 dCkpKSkgPT0gc2l6ZW9mKGNoYXIpIHx8IHNpemVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAq KikoJihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiYoKigoc3Ry dWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpID09IHNpemVvZihpbnQpIHx8IHNp emVvZigqJigqKChzdHJ1Y3QgaGxpc3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkgPT0gc2l6 ZW9mKGxvbmcpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzYzNCgpOyB9IHdoaWxlICgwKTsgX19h c21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0eXBlb2YoKiYo Kigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKComKCooKHN0cnVjdCBobGlzdF9ub2Rl ICoqKSgmKHByZXYpLT5uZXh0KSkpKSkgKCh0eXBlb2YoKigodHlwZW9mKCgqKChzdHJ1Y3QgaGxp c3Rfbm9kZSAqKikoJihwcmV2KS0+bmV4dCkpKSkpX3JfYV9wX192KSkgKikoKHR5cGVvZigoKigo c3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5leHQpKSkpKV9yX2FfcF9fdikpIH07IF9f d3JpdGVfb25jZV9zaXplKCYoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJldiktPm5l eHQpKSkpLCBfX3UuX19jLCBzaXplb2YoKiYoKigoc3RydWN0IGhsaXN0X25vZGUgKiopKCYocHJl diktPm5leHQpKSkpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwog aWYgKG4tPm5leHQpCiAgKHsgdW5pb24geyB0eXBlb2Yobi0+bmV4dC0+cHByZXYpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKG4tPm5leHQtPnBwcmV2KSkg KCZuLT5uZXh0KSB9OyBfX3dyaXRlX29uY2Vfc2l6ZSgmKG4tPm5leHQtPnBwcmV2KSwgX191Ll9f Yywgc2l6ZW9mKG4tPm5leHQtPnBwcmV2KSk7IF9fdS5fX3ZhbDsgfSk7Cn0KIyA4ICIuL2luY2x1 ZGUvbGludXgvZGNhY2hlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvcmN1bGlzdF9ibC5oIiAx CgoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9saXN0X2JsLmgiIDEKCgoKCgojIDEgIi4vaW5j bHVkZS9saW51eC9iaXRfc3BpbmxvY2suaCIgMQojIDE2ICIuL2luY2x1ZGUvbGludXgvYml0X3Nw aW5sb2NrLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgYml0X3NwaW5fbG9jayhpbnQgYml0bnVtLCB1bnNpZ25lZCBsb25nICph ZGRyKQp7CgoKCgoKCgogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKCiB3 aGlsZSAoX19idWlsdGluX2V4cGVjdCghISh0ZXN0X2FuZF9zZXRfYml0X2xvY2soYml0bnVtLCBh ZGRyKSksIDApKSB7CiAgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICBk byB7CiAgIGNwdV9yZWxheCgpOwogIH0gd2hpbGUgKHRlc3RfYml0KGJpdG51bSwgYWRkcikpOwog IF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiB9CgogKHZvaWQpMDsKfQoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IGJpdF9zcGluX3RyeWxvY2soaW50IGJpdG51bSwgdW5zaWduZWQgbG9uZyAqYWRkcikK ewogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKCiBpZiAoX19idWlsdGlu X2V4cGVjdCghISh0ZXN0X2FuZF9zZXRfYml0X2xvY2soYml0bnVtLCBhZGRyKSksIDApKSB7CiAg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICByZXR1cm4gMDsKIH0KCiAo dm9pZCkwOwogcmV0dXJuIDE7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYml0X3NwaW5fdW5sb2NrKGludCBiaXRudW0s IHVuc2lnbmVkIGxvbmcgKmFkZHIpCnsKCgoKCiBjbGVhcl9iaXRfdW5sb2NrKGJpdG51bSwgYWRk cik7CgogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICh2b2lkKTA7Cn0K CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBfX2JpdF9zcGluX3VubG9jayhpbnQgYml0bnVtLCB1bnNpZ25lZCBsb25nICph ZGRyKQp7CgoKCgogX19jbGVhcl9iaXRfdW5sb2NrKGJpdG51bSwgYWRkcik7CgogX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKICh2b2lkKTA7Cn0KCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBiaXRfc3Bp bl9pc19sb2NrZWQoaW50IGJpdG51bSwgdW5zaWduZWQgbG9uZyAqYWRkcikKewoKIHJldHVybiB0 ZXN0X2JpdChiaXRudW0sIGFkZHIpOwoKCgoKCn0KIyA3ICIuL2luY2x1ZGUvbGludXgvbGlzdF9i bC5oIiAyCiMgMzQgIi4vaW5jbHVkZS9saW51eC9saXN0X2JsLmgiCnN0cnVjdCBobGlzdF9ibF9o ZWFkIHsKIHN0cnVjdCBobGlzdF9ibF9ub2RlICpmaXJzdDsKfTsKCnN0cnVjdCBobGlzdF9ibF9u b2RlIHsKIHN0cnVjdCBobGlzdF9ibF9ub2RlICpuZXh0LCAqKnBwcmV2Owp9OwoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIElO SVRfSExJU1RfQkxfTk9ERShzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqaCkKewogaC0+bmV4dCA9ICgo dm9pZCAqKTApOwogaC0+cHByZXYgPSAoKHZvaWQgKikwKTsKfQoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGhsaXN0X2JsX3Vu aGFzaGVkKGNvbnN0IHN0cnVjdCBobGlzdF9ibF9ub2RlICpoKQp7CiByZXR1cm4gIWgtPnBwcmV2 Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqaGxpc3RfYmxfZmlyc3Qoc3RydWN0IGhsaXN0X2Js X2hlYWQgKmgpCnsKIHJldHVybiAoc3RydWN0IGhsaXN0X2JsX25vZGUgKikKICAoKHVuc2lnbmVk IGxvbmcpaC0+Zmlyc3QgJiB+MVVMKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9ibF9zZXRfZmlyc3Qoc3RydWN0 IGhsaXN0X2JsX2hlYWQgKmgsCiAgICAgc3RydWN0IGhsaXN0X2JsX25vZGUgKm4pCnsKIGRvIHsg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKHVuc2lnbmVkIGxvbmcpbiAmIDFVTCksIDApKSBkbyB7 IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxu IiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFi IiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19l bnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQu b3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2xpc3Rf YmwuaCIpLCAiaSIgKDY2KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkp KTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2Vj dGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9w c2VjdGlvblxuXHQiIDogOiAiaSIgKDE5KSk7IH0pOyBhc20gdm9sYXRpbGUoIiIpOyBfX2J1aWx0 aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsK IGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoKCh1bnNpZ25lZCBsb25nKWgtPmZpcnN0ICYg MVVMKSAhPSAxVUwpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIg Ii5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJc biIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJc biIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJc dC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1 Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImki ICgiaW5jbHVkZS9saW51eC9saXN0X2JsLmgiKSwgImkiICg2NyksICJpIiAoMCksICJpIiAoc2l6 ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGls ZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxv bmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgyMCkpOyB9KTsgYXNt IHZvbGF0aWxlKCIiKTsgX19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCkKICAgICAgICAgICAgICAgICAgICAgICAgOwogaC0+Zmlyc3Qg PSAoc3RydWN0IGhsaXN0X2JsX25vZGUgKikoKHVuc2lnbmVkIGxvbmcpbiB8IDFVTCk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgaGxpc3RfYmxfZW1wdHkoY29uc3Qgc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgpCnsKIHJldHVy biAhKCh1bnNpZ25lZCBsb25nKSh7IHVuaW9uIHsgdHlwZW9mKGgtPmZpcnN0KSBfX3ZhbDsgY2hh ciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKGgtPmZpcnN0KSwgX191 Ll9fYywgc2l6ZW9mKGgtPmZpcnN0KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYo aC0+Zmlyc3QpLCBfX3UuX19jLCBzaXplb2YoaC0+Zmlyc3QpKTsgZG8geyB9IHdoaWxlICgwKTsg X191Ll9fdmFsOyB9KSAmIH4xVUwpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX2FkZF9oZWFkKHN0cnVjdCBo bGlzdF9ibF9ub2RlICpuLAogICAgIHN0cnVjdCBobGlzdF9ibF9oZWFkICpoKQp7CiBzdHJ1Y3Qg aGxpc3RfYmxfbm9kZSAqZmlyc3QgPSBobGlzdF9ibF9maXJzdChoKTsKCiBuLT5uZXh0ID0gZmly c3Q7CiBpZiAoZmlyc3QpCiAgZmlyc3QtPnBwcmV2ID0gJm4tPm5leHQ7CiBuLT5wcHJldiA9ICZo LT5maXJzdDsKIGhsaXN0X2JsX3NldF9maXJzdChoLCBuKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9ibF9hZGRf YmVmb3JlKHN0cnVjdCBobGlzdF9ibF9ub2RlICpuLAogICAgICAgICAgIHN0cnVjdCBobGlzdF9i bF9ub2RlICpuZXh0KQp7CiBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqKnBwcmV2ID0gbmV4dC0+cHBy ZXY7Cgogbi0+cHByZXYgPSBwcHJldjsKIG4tPm5leHQgPSBuZXh0OwogbmV4dC0+cHByZXYgPSAm bi0+bmV4dDsKCgogKHsgdW5pb24geyB0eXBlb2YoKnBwcmV2KSBfX3ZhbDsgY2hhciBfX2NbMV07 IH0gX191ID0geyAuX192YWwgPSAoIHR5cGVvZigqcHByZXYpKSAoKHN0cnVjdCBobGlzdF9ibF9u b2RlICopICgodWludHB0cl90KW4gfCAoKHVpbnRwdHJfdCkqcHByZXYgJiAxVUwpKSkgfTsgX193 cml0ZV9vbmNlX3NpemUoJigqcHByZXYpLCBfX3UuX19jLCBzaXplb2YoKnBwcmV2KSk7IF9fdS5f X3ZhbDsgfSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhsaXN0X2JsX2FkZF9iZWhpbmQoc3RydWN0IGhsaXN0X2Js X25vZGUgKm4sCiAgICAgICAgICAgc3RydWN0IGhsaXN0X2JsX25vZGUgKnByZXYpCnsKIG4tPm5l eHQgPSBwcmV2LT5uZXh0Owogbi0+cHByZXYgPSAmcHJldi0+bmV4dDsKIHByZXYtPm5leHQgPSBu OwoKIGlmIChuLT5uZXh0KQogIG4tPm5leHQtPnBwcmV2ID0gJm4tPm5leHQ7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19o bGlzdF9ibF9kZWwoc3RydWN0IGhsaXN0X2JsX25vZGUgKm4pCnsKIHN0cnVjdCBobGlzdF9ibF9u b2RlICpuZXh0ID0gbi0+bmV4dDsKIHN0cnVjdCBobGlzdF9ibF9ub2RlICoqcHByZXYgPSBuLT5w cHJldjsKCiBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBsb25nKW4gJiAx VUwpLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4 MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQi ICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAi LmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVj MSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6 ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVk ZS9saW51eC9saXN0X2JsLmgiKSwgImkiICgxMjApLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1 Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpc blx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIg LSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjEpKTsgfSk7IGFzbSB2b2xhdGls ZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7 IH0gd2hpbGUgKDApOwoKCiAoeyB1bmlvbiB7IHR5cGVvZigqcHByZXYpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKCpwcHJldikpICgoc3RydWN0IGhsaXN0 X2JsX25vZGUgKikgKCh1bnNpZ25lZCBsb25nKW5leHQgfCAoKHVuc2lnbmVkIGxvbmcpKnBwcmV2 ICYgMVVMKSkpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKnBwcmV2KSwgX191Ll9fYywgc2l6ZW9m KCpwcHJldikpOyBfX3UuX192YWw7IH0pCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwogaWYgKG5leHQpCiAgbmV4dC0+cHByZXYgPSBwcHJldjsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBobGlzdF9ibF9kZWwoc3RydWN0IGhsaXN0X2JsX25vZGUgKm4pCnsKIF9faGxpc3RfYmxf ZGVsKG4pOwogbi0+bmV4dCA9ICgodm9pZCAqKSAweDEwMCArICgweGRlYWQwMDAwMDAwMDAwMDBV TCkpOwogbi0+cHByZXYgPSAoKHZvaWQgKikgMHgxMjIgKyAoMHhkZWFkMDAwMDAwMDAwMDAwVUwp KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBobGlzdF9ibF9kZWxfaW5pdChzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKewog aWYgKCFobGlzdF9ibF91bmhhc2hlZChuKSkgewogIF9faGxpc3RfYmxfZGVsKG4pOwogIElOSVRf SExJU1RfQkxfTk9ERShuKTsKIH0KfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBobGlzdF9ibF9sb2NrKHN0cnVjdCBobGlzdF9i bF9oZWFkICpiKQp7CiBiaXRfc3Bpbl9sb2NrKDAsICh1bnNpZ25lZCBsb25nICopYik7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgaGxpc3RfYmxfdW5sb2NrKHN0cnVjdCBobGlzdF9ibF9oZWFkICpiKQp7CiBfX2JpdF9zcGlu X3VubG9jaygwLCAodW5zaWduZWQgbG9uZyAqKWIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGhsaXN0X2JsX2lzX2xvY2tl ZChzdHJ1Y3QgaGxpc3RfYmxfaGVhZCAqYikKewogcmV0dXJuIGJpdF9zcGluX2lzX2xvY2tlZCgw LCAodW5zaWduZWQgbG9uZyAqKWIpOwp9CiMgOSAiLi9pbmNsdWRlL2xpbnV4L3JjdWxpc3RfYmwu aCIgMgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgaGxpc3RfYmxfc2V0X2ZpcnN0X3JjdShzdHJ1Y3QgaGxpc3RfYmxfaGVhZCAq aCwKICAgICBzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKewogZG8geyBpZiAoX19idWlsdGluX2V4 cGVjdCghISgodW5zaWduZWQgbG9uZyluICYgMVVMKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxp bmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24g X19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBi dWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1 Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJc dC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIu cG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvcmN1bGlzdF9ibC5oIiksICJpIiAo MTQpLCAiaSIgKDApLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgw KTsgZG8geyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJk LnVucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg OiA6ICJpIiAoMjIpKTsgfSk7IGFzbSB2b2xhdGlsZSgiIik7IF9fYnVpbHRpbl91bnJlYWNoYWJs ZSgpOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOwogZG8geyBpZiAoX19i dWlsdGluX2V4cGVjdCghISgoKHVuc2lnbmVkIGxvbmcpaC0+Zmlyc3QgJiAxVUwpICE9IDFVTCks IDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwg MHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5s b25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9u ZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAi XHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFn c1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xp bnV4L3JjdWxpc3RfYmwuaCIpLCAiaSIgKDE1KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0 IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0g LlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDIzKSk7IH0pOyBhc20gdm9sYXRpbGUo IiIpOyBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9 IHdoaWxlICgwKQogICAgICAgICAgICAgICAgICAgICAgICA7CiBkbyB7IHVpbnRwdHJfdCBfcl9h X3BfX3YgPSAodWludHB0cl90KSgoc3RydWN0IGhsaXN0X2JsX25vZGUgKikoKHVuc2lnbmVkIGxv bmcpbiB8IDFVTCkpOyA7IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCgoc3RydWN0IGhsaXN0X2Js X25vZGUgKikoKHVuc2lnbmVkIGxvbmcpbiB8IDFVTCkpICYmIChfcl9hX3BfX3YpID09ICh1aW50 cHRyX3QpKCh2b2lkICopMCkpICh7IHVuaW9uIHsgdHlwZW9mKChoLT5maXJzdCkpIF9fdmFsOyBj aGFyIF9fY1sxXTsgfSBfX3UgPSB7IC5fX3ZhbCA9ICggdHlwZW9mKChoLT5maXJzdCkpKSAoKHR5 cGVvZihoLT5maXJzdCkpKF9yX2FfcF9fdikpIH07IF9fd3JpdGVfb25jZV9zaXplKCYoKGgtPmZp cnN0KSksIF9fdS5fX2MsIHNpemVvZigoaC0+Zmlyc3QpKSk7IF9fdS5fX3ZhbDsgfSk7IGVsc2Ug ZG8geyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzE3KHZvaWQpIF9fYXR0 cmlidXRlX18oKF9fZXJyb3JfXygiTmVlZCBuYXRpdmUgd29yZCBzaXplZCBzdG9yZXMvbG9hZHMg Zm9yIGF0b21pY2l0eS4iKSkpOyBpZiAoISgoc2l6ZW9mKComaC0+Zmlyc3QpID09IHNpemVvZihj aGFyKSB8fCBzaXplb2YoKiZoLT5maXJzdCkgPT0gc2l6ZW9mKHNob3J0KSB8fCBzaXplb2YoKiZo LT5maXJzdCkgPT0gc2l6ZW9mKGludCkgfHwgc2l6ZW9mKComaC0+Zmlyc3QpID09IHNpemVvZihs b25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNygpOyB9IHdoaWxlICgwKTsgX19hc21fXyBf X3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgKHsgdW5pb24geyB0eXBlb2YoKiZoLT5maXJz dCkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdSA9IHsgLl9fdmFsID0gKCB0eXBlb2YoKiZoLT5m aXJzdCkpICgodHlwZW9mKCooKHR5cGVvZihoLT5maXJzdCkpX3JfYV9wX192KSkgKikoKHR5cGVv ZihoLT5maXJzdCkpX3JfYV9wX192KSkgfTsgX193cml0ZV9vbmNlX3NpemUoJigqJmgtPmZpcnN0 KSwgX191Ll9fYywgc2l6ZW9mKComaC0+Zmlyc3QpKTsgX191Ll9fdmFsOyB9KTsgfSB3aGlsZSAo MCk7IH0gd2hpbGUgKDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBobGlzdF9ibF9ub2RlICpobGlzdF9i bF9maXJzdF9yY3Uoc3RydWN0IGhsaXN0X2JsX2hlYWQgKmgpCnsKIHJldHVybiAoc3RydWN0IGhs aXN0X2JsX25vZGUgKikKICAoKHVuc2lnbmVkIGxvbmcpKHsgdHlwZW9mKCooaC0+Zmlyc3QpKSAq X19fX19fX19wMSA9ICh0eXBlb2YoKihoLT5maXJzdCkpICopKHsgdW5pb24geyB0eXBlb2YoKGgt PmZpcnN0KSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3Np emUoJigoaC0+Zmlyc3QpKSwgX191Ll9fYywgc2l6ZW9mKChoLT5maXJzdCkpKTsgZWxzZSBfX3Jl YWRfb25jZV9zaXplX25vY2hlY2soJigoaC0+Zmlyc3QpKSwgX191Ll9fYywgc2l6ZW9mKChoLT5m aXJzdCkpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgw KTsgOyAoKHR5cGVvZigqKGgtPmZpcnN0KSkgKikoX19fX19fX19wMSkpOyB9KSAmIH4xVUwpOwp9 CiMgNDYgIi4vaW5jbHVkZS9saW51eC9yY3VsaXN0X2JsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfYmxfZGVsX3Jj dShzdHJ1Y3QgaGxpc3RfYmxfbm9kZSAqbikKewogX19obGlzdF9ibF9kZWwobik7CiBuLT5wcHJl diA9ICgodm9pZCAqKSAweDEyMiArICgweGRlYWQwMDAwMDAwMDAwMDBVTCkpOwp9CiMgNzEgIi4v aW5jbHVkZS9saW51eC9yY3VsaXN0X2JsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaGxpc3RfYmxfYWRkX2hlYWRfcmN1KHN0 cnVjdCBobGlzdF9ibF9ub2RlICpuLAogICAgIHN0cnVjdCBobGlzdF9ibF9oZWFkICpoKQp7CiBz dHJ1Y3QgaGxpc3RfYmxfbm9kZSAqZmlyc3Q7CgoKIGZpcnN0ID0gaGxpc3RfYmxfZmlyc3QoaCk7 Cgogbi0+bmV4dCA9IGZpcnN0OwogaWYgKGZpcnN0KQogIGZpcnN0LT5wcHJldiA9ICZuLT5uZXh0 Owogbi0+cHByZXYgPSAmaC0+Zmlyc3Q7CgoKIGhsaXN0X2JsX3NldF9maXJzdF9yY3UoaCwgbik7 Cn0KIyA5ICIuL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIKCgoKCiMgMSAiLi9pbmNsdWRlL2xp bnV4L2xvY2tyZWYuaCIgMQojIDI1ICIuL2luY2x1ZGUvbGludXgvbG9ja3JlZi5oIgpzdHJ1Y3Qg bG9ja3JlZiB7CiB1bmlvbiB7CgogIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBs b2NrX2NvdW50OwoKICBzdHJ1Y3QgewogICBzcGlubG9ja190IGxvY2s7CiAgIGludCBjb3VudDsK ICB9OwogfTsKfTsKCmV4dGVybiB2b2lkIGxvY2tyZWZfZ2V0KHN0cnVjdCBsb2NrcmVmICopOwpl eHRlcm4gaW50IGxvY2tyZWZfcHV0X3JldHVybihzdHJ1Y3QgbG9ja3JlZiAqKTsKZXh0ZXJuIGlu dCBsb2NrcmVmX2dldF9ub3RfemVybyhzdHJ1Y3QgbG9ja3JlZiAqKTsKZXh0ZXJuIGludCBsb2Nr cmVmX3B1dF9ub3RfemVybyhzdHJ1Y3QgbG9ja3JlZiAqKTsKZXh0ZXJuIGludCBsb2NrcmVmX2dl dF9vcl9sb2NrKHN0cnVjdCBsb2NrcmVmICopOwpleHRlcm4gaW50IGxvY2tyZWZfcHV0X29yX2xv Y2soc3RydWN0IGxvY2tyZWYgKik7CgpleHRlcm4gdm9pZCBsb2NrcmVmX21hcmtfZGVhZChzdHJ1 Y3QgbG9ja3JlZiAqKTsKZXh0ZXJuIGludCBsb2NrcmVmX2dldF9ub3RfZGVhZChzdHJ1Y3QgbG9j a3JlZiAqKTsKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIF9fbG9ja3JlZl9pc19kZWFkKGNvbnN0IHN0cnVjdCBsb2NrcmVmICps KQp7CiByZXR1cm4gKChpbnQpbC0+Y291bnQgPCAwKTsKfQojIDE0ICIuL2luY2x1ZGUvbGludXgv ZGNhY2hlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvc3RyaW5naGFzaC5oIiAxCgoKCgoKCiMg MSAiLi9pbmNsdWRlL2xpbnV4L2hhc2guaCIgMQoKCgoKCiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRl L2dlbmVyYXRlZC91YXBpL2FzbS90eXBlcy5oIiAxCiMgNyAiLi9pbmNsdWRlL2xpbnV4L2hhc2gu aCIgMgojIDYwICIuL2luY2x1ZGUvbGludXgvaGFzaC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MzIgX19oYXNoXzMyX2dlbmVyaWMo dTMyIHZhbCkKewogcmV0dXJuIHZhbCAqIDB4NjFDODg2NDc7Cn0KCgoKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHUzMiBoYXNoXzMyX2dl bmVyaWModTMyIHZhbCwgdW5zaWduZWQgaW50IGJpdHMpCnsKCiByZXR1cm4gX19oYXNoXzMyX2dl bmVyaWModmFsKSA+PiAoMzIgLSBiaXRzKTsKfQoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKSB1MzIgaGFzaF82NF9nZW5lcmljKHU2NCB2YWwsIHVuc2lnbmVkIGludCBiaXRz KQp7CgoKIHJldHVybiB2YWwgKiAweDYxQzg4NjQ2ODBCNTgzRUJ1bGwgPj4gKDY0IC0gYml0cyk7 CgoKCgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB1MzIgaGFzaF9wdHIoY29uc3Qgdm9pZCAqcHRyLCB1bnNpZ25lZCBpbnQgYml0cykK ewogcmV0dXJuIGhhc2hfNjRfZ2VuZXJpYygodW5zaWduZWQgbG9uZylwdHIsIGJpdHMpOwp9CgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dTMyIGhhc2gzMl9wdHIoY29uc3Qgdm9pZCAqcHRyKQp7CiB1bnNpZ25lZCBsb25nIHZhbCA9ICh1 bnNpZ25lZCBsb25nKXB0cjsKCgogdmFsIF49ICh2YWwgPj4gMzIpOwoKIHJldHVybiAodTMyKXZh bDsKfQojIDggIi4vaW5jbHVkZS9saW51eC9zdHJpbmdoYXNoLmgiIDIKIyA0MiAiLi9pbmNsdWRl L2xpbnV4L3N0cmluZ2hhc2guaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZwpwYXJ0aWFsX25hbWVfaGFzaCh1bnNp Z25lZCBsb25nIGMsIHVuc2lnbmVkIGxvbmcgcHJldmhhc2gpCnsKIHJldHVybiAocHJldmhhc2gg KyAoYyA8PCA0KSArIChjID4+IDQpKSAqIDExOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBlbmRfbmFt ZV9oYXNoKHVuc2lnbmVkIGxvbmcgaGFzaCkKewogcmV0dXJuIGhhc2hfNjRfZ2VuZXJpYyhoYXNo LCAzMik7Cn0KIyA2NiAiLi9pbmNsdWRlL2xpbnV4L3N0cmluZ2hhc2guaCIKZXh0ZXJuIHVuc2ln bmVkIGludCBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIGZ1bGxfbmFtZV9oYXNoKGNvbnN0IHZv aWQgKnNhbHQsIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTsKIyA3NyAiLi9pbmNsdWRlL2xp bnV4L3N0cmluZ2hhc2guaCIKZXh0ZXJuIHU2NCBfX2F0dHJpYnV0ZV9fKChfX3B1cmVfXykpIGhh c2hsZW5fc3RyaW5nKGNvbnN0IHZvaWQgKnNhbHQsIGNvbnN0IGNoYXIgKm5hbWUpOwojIDE1ICIu L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiIDIKCgpzdHJ1Y3QgcGF0aDsKc3RydWN0IHZmc21vdW50 OwojIDQ3ICIuL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0cnVjdCBxc3RyIHsKIHVuaW9uIHsK ICBzdHJ1Y3QgewogICB1MzIgaGFzaDsgdTMyIGxlbjsKICB9OwogIHU2NCBoYXNoX2xlbjsKIH07 CiBjb25zdCB1bnNpZ25lZCBjaGFyICpuYW1lOwp9OwoKCgpleHRlcm4gY29uc3Qgc3RydWN0IHFz dHIgZW1wdHlfbmFtZTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBxc3RyIHNsYXNoX25hbWU7CgpzdHJ1 Y3QgZGVudHJ5X3N0YXRfdCB7CiBsb25nIG5yX2RlbnRyeTsKIGxvbmcgbnJfdW51c2VkOwogbG9u ZyBhZ2VfbGltaXQ7CiBsb25nIHdhbnRfcGFnZXM7CiBsb25nIG5yX25lZ2F0aXZlOwogbG9uZyBk dW1teTsKfTsKZXh0ZXJuIHN0cnVjdCBkZW50cnlfc3RhdF90IGRlbnRyeV9zdGF0OwojIDg5ICIu L2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0cnVjdCBkZW50cnkgewoKIHVuc2lnbmVkIGludCBk X2ZsYWdzOwogc2VxY291bnRfdCBkX3NlcTsKIHN0cnVjdCBobGlzdF9ibF9ub2RlIGRfaGFzaDsK IHN0cnVjdCBkZW50cnkgKmRfcGFyZW50Owogc3RydWN0IHFzdHIgZF9uYW1lOwogc3RydWN0IGlu b2RlICpkX2lub2RlOwoKIHVuc2lnbmVkIGNoYXIgZF9pbmFtZVszMl07CgoKIHN0cnVjdCBsb2Nr cmVmIGRfbG9ja3JlZjsKIGNvbnN0IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyAqZF9vcDsKIHN0 cnVjdCBzdXBlcl9ibG9jayAqZF9zYjsKIHVuc2lnbmVkIGxvbmcgZF90aW1lOwogdm9pZCAqZF9m c2RhdGE7CgogdW5pb24gewogIHN0cnVjdCBsaXN0X2hlYWQgZF9scnU7CiAgd2FpdF9xdWV1ZV9o ZWFkX3QgKmRfd2FpdDsKIH07CiBzdHJ1Y3QgbGlzdF9oZWFkIGRfY2hpbGQ7CiBzdHJ1Y3QgbGlz dF9oZWFkIGRfc3ViZGlyczsKCgoKIHVuaW9uIHsKICBzdHJ1Y3QgaGxpc3Rfbm9kZSBkX2FsaWFz OwogIHN0cnVjdCBobGlzdF9ibF9ub2RlIGRfaW5fbG9va3VwX2hhc2g7CiAgIHN0cnVjdCBjYWxs YmFja19oZWFkIGRfcmN1OwogfSBkX3U7Cn0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2lu aXRfXykpOwoKCgoKCgoKZW51bSBkZW50cnlfZF9sb2NrX2NsYXNzCnsKIERFTlRSWV9EX0xPQ0tf Tk9STUFMLAogREVOVFJZX0RfTE9DS19ORVNURUQKfTsKCnN0cnVjdCBkZW50cnlfb3BlcmF0aW9u cyB7CiBpbnQgKCpkX3JldmFsaWRhdGUpKHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQgaW50KTsK IGludCAoKmRfd2Vha19yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICosIHVuc2lnbmVkIGludCk7 CiBpbnQgKCpkX2hhc2gpKGNvbnN0IHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHFzdHIgKik7CiBp bnQgKCpkX2NvbXBhcmUpKGNvbnN0IHN0cnVjdCBkZW50cnkgKiwKICAgdW5zaWduZWQgaW50LCBj b25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCBxc3RyICopOwogaW50ICgqZF9kZWxldGUpKGNvbnN0 IHN0cnVjdCBkZW50cnkgKik7CiBpbnQgKCpkX2luaXQpKHN0cnVjdCBkZW50cnkgKik7CiB2b2lk ICgqZF9yZWxlYXNlKShzdHJ1Y3QgZGVudHJ5ICopOwogdm9pZCAoKmRfcHJ1bmUpKHN0cnVjdCBk ZW50cnkgKik7CiB2b2lkICgqZF9pcHV0KShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAq KTsKIGNoYXIgKigqZF9kbmFtZSkoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIGludCk7CiBzdHJ1 Y3QgdmZzbW91bnQgKigqZF9hdXRvbW91bnQpKHN0cnVjdCBwYXRoICopOwogaW50ICgqZF9tYW5h Z2UpKGNvbnN0IHN0cnVjdCBwYXRoICosIGJvb2wpOwogc3RydWN0IGRlbnRyeSAqKCpkX3JlYWwp KHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IGlub2RlICopOwp9IF9fYXR0cmlidXRlX18o KF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSk7CiMgMjIxICIuL2luY2x1ZGUvbGludXgvZGNhY2hl LmgiCmV4dGVybiBzZXFsb2NrX3QgcmVuYW1lX2xvY2s7CgoKCgpleHRlcm4gdm9pZCBkX2luc3Rh bnRpYXRlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBkX2lu c3RhbnRpYXRlX25ldyhzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHN0 cnVjdCBkZW50cnkgKiBkX2luc3RhbnRpYXRlX3VuaXF1ZShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj dCBpbm9kZSAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2luc3RhbnRpYXRlX2Fub24oc3Ry dWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIF9fZF9kcm9wKHN0cnVj dCBkZW50cnkgKmRlbnRyeSk7CmV4dGVybiB2b2lkIGRfZHJvcChzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpOwpleHRlcm4gdm9pZCBkX2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gdm9pZCBk X3NldF9kX29wKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3Qgc3RydWN0IGRlbnRyeV9vcGVy YXRpb25zICpvcCk7CgoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2FsbG9jKHN0cnVjdCBkZW50 cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9hbGxv Y19hbm9uKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2Fs bG9jX3BhcmFsbGVsKHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IHFzdHIgKiwKICAgICB3 YWl0X3F1ZXVlX2hlYWRfdCAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX3NwbGljZV9hbGlh cyhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkg KiBkX2FkZF9jaShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcXN0ciAq KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX2V4YWN0X2FsaWFzKHN0cnVjdCBkZW50cnkgKiwg c3RydWN0IGlub2RlICopOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9maW5kX2FueV9hbGlhcyhz dHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKiBkX29idGFpbl9hbGlh cyhzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICogZF9vYnRhaW5fcm9vdChz dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIHNocmlua19kY2FjaGVfc2Ioc3RydWN0IHN1cGVy X2Jsb2NrICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX3BhcmVudChzdHJ1Y3QgZGVudHJ5 ICopOwpleHRlcm4gdm9pZCBzaHJpbmtfZGNhY2hlX2Zvcl91bW91bnQoc3RydWN0IHN1cGVyX2Js b2NrICopOwpleHRlcm4gdm9pZCBkX2ludmFsaWRhdGUoc3RydWN0IGRlbnRyeSAqKTsKCgpleHRl cm4gc3RydWN0IGRlbnRyeSAqIGRfbWFrZV9yb290KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4g dm9pZCBkX2dlbm9jaWRlKHN0cnVjdCBkZW50cnkgKik7CgpleHRlcm4gdm9pZCBkX3RtcGZpbGUo c3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CgpleHRlcm4gc3RydWN0IGRlbnRyeSAq ZF9maW5kX2FsaWFzKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJuIHZvaWQgZF9wcnVuZV9hbGlhc2Vz KHN0cnVjdCBpbm9kZSAqKTsKCgpleHRlcm4gaW50IHBhdGhfaGFzX3N1Ym1vdW50cyhjb25zdCBz dHJ1Y3QgcGF0aCAqKTsKCgoKCmV4dGVybiB2b2lkIGRfcmVoYXNoKHN0cnVjdCBkZW50cnkgKik7 CgpleHRlcm4gdm9pZCBkX2FkZChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKCgpl eHRlcm4gdm9pZCBkX21vdmUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRl cm4gdm9pZCBkX2V4Y2hhbmdlKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0 ZXJuIHN0cnVjdCBkZW50cnkgKmRfYW5jZXN0b3Ioc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVu dHJ5ICopOwoKCmV4dGVybiBzdHJ1Y3QgZGVudHJ5ICpkX2xvb2t1cChjb25zdCBzdHJ1Y3QgZGVu dHJ5ICosIGNvbnN0IHN0cnVjdCBxc3RyICopOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqZF9oYXNo X2FuZF9sb29rdXAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKZXh0ZXJuIHN0cnVj dCBkZW50cnkgKl9fZF9sb29rdXAoY29uc3Qgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3Qg cXN0ciAqKTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKl9fZF9sb29rdXBfcmN1KGNvbnN0IHN0cnVj dCBkZW50cnkgKnBhcmVudCwKICAgIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lLCB1bnNpZ25lZCAq c2VxKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGRfY291bnQoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiBy ZXR1cm4gZGVudHJ5LT5kX2xvY2tyZWYuY291bnQ7Cn0KCgoKCmV4dGVybiBfX2F0dHJpYnV0ZV9f KChfX2Zvcm1hdF9fKHByaW50ZiwgNCwgNSkpKQpjaGFyICpkeW5hbWljX2RuYW1lKHN0cnVjdCBk ZW50cnkgKiwgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBjaGFyICpf X2RfcGF0aChjb25zdCBzdHJ1Y3QgcGF0aCAqLCBjb25zdCBzdHJ1Y3QgcGF0aCAqLCBjaGFyICos IGludCk7CmV4dGVybiBjaGFyICpkX2Fic29sdXRlX3BhdGgoY29uc3Qgc3RydWN0IHBhdGggKiwg Y2hhciAqLCBpbnQpOwpleHRlcm4gY2hhciAqZF9wYXRoKGNvbnN0IHN0cnVjdCBwYXRoICosIGNo YXIgKiwgaW50KTsKZXh0ZXJuIGNoYXIgKmRlbnRyeV9wYXRoX3JhdyhzdHJ1Y3QgZGVudHJ5ICos IGNoYXIgKiwgaW50KTsKZXh0ZXJuIGNoYXIgKmRlbnRyeV9wYXRoKHN0cnVjdCBkZW50cnkgKiwg Y2hhciAqLCBpbnQpOwojIDMxMSAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGVu dHJ5ICpkZ2V0X2Rsb2NrKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogaWYgKGRlbnRyeSkKICBk ZW50cnktPmRfbG9ja3JlZi5jb3VudCsrOwogcmV0dXJuIGRlbnRyeTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRlbnRy eSAqZGdldChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIGlmIChkZW50cnkpCiAgbG9ja3JlZl9n ZXQoJmRlbnRyeS0+ZF9sb2NrcmVmKTsKIHJldHVybiBkZW50cnk7Cn0KCmV4dGVybiBzdHJ1Y3Qg ZGVudHJ5ICpkZ2V0X3BhcmVudChzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwojIDMzNCAiLi9pbmNs dWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZF91bmhhc2hlZChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpCnsKIHJldHVybiBobGlzdF9ibF91bmhhc2hlZCgmZGVudHJ5LT5kX2hhc2gpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgZF91bmxpbmtlZChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIHJldHVybiBkX3Vu aGFzaGVkKGRlbnRyeSkgJiYgISgoZGVudHJ5KSA9PSAoZGVudHJ5KS0+ZF9wYXJlbnQpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgY2FudF9tb3VudChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIHJldHVybiAoZGVu dHJ5LT5kX2ZsYWdzICYgMHgwMDAwMDEwMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZG9udF9tb3VudChzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpCnsKIHNwaW5fbG9jaygmZGVudHJ5LT5kX2xvY2tyZWYubG9jayk7CiBkZW50 cnktPmRfZmxhZ3MgfD0gMHgwMDAwMDEwMDsKIHNwaW5fdW5sb2NrKCZkZW50cnktPmRfbG9ja3Jl Zi5sb2NrKTsKfQoKZXh0ZXJuIHZvaWQgX19kX2xvb2t1cF9kb25lKHN0cnVjdCBkZW50cnkgKik7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgZF9pbl9sb29rdXAoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4g ZGVudHJ5LT5kX2ZsYWdzICYgMHgxMDAwMDAwMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkX2xvb2t1cF9kb25lKHN0cnVj dCBkZW50cnkgKmRlbnRyeSkKewogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoZF9pbl9sb29rdXAo ZGVudHJ5KSksIDApKSB7CiAgc3Bpbl9sb2NrKCZkZW50cnktPmRfbG9ja3JlZi5sb2NrKTsKICBf X2RfbG9va3VwX2RvbmUoZGVudHJ5KTsKICBzcGluX3VubG9jaygmZGVudHJ5LT5kX2xvY2tyZWYu bG9jayk7CiB9Cn0KCmV4dGVybiB2b2lkIGRwdXQoc3RydWN0IGRlbnRyeSAqKTsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZF9t YW5hZ2VkKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9m bGFncyAmICgweDAwMDEwMDAwfDB4MDAwMjAwMDB8MHgwMDA0MDAwMCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZF9tb3Vu dHBvaW50KGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9m bGFncyAmIDB4MDAwMTAwMDA7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIF9fZF9lbnRyeV90eXBlKGNvbnN0IHN0 cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9mbGFncyAmIDB4MDA3MDAw MDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZF9pc19taXNzKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0 dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgwMDAwMDAwMDsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3do aXRlb3V0KGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIF9fZF9lbnRyeV90 eXBlKGRlbnRyeSkgPT0gMHgwMDEwMDAwMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2Nhbl9sb29rdXAoY29uc3Qgc3Ry dWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4gX19kX2VudHJ5X3R5cGUoZGVudHJ5KSA9PSAw eDAwMjAwMDAwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIGRfaXNfYXV0b2Rpcihjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpCnsKIHJldHVybiBfX2RfZW50cnlfdHlwZShkZW50cnkpID09IDB4MDAzMDAwMDA7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgZF9pc19kaXIoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4gZF9jYW5f bG9va3VwKGRlbnRyeSkgfHwgZF9pc19hdXRvZGlyKGRlbnRyeSk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZF9pc19zeW1s aW5rKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIF9fZF9lbnRyeV90eXBl KGRlbnRyeSkgPT0gMHgwMDYwMDAwMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3JlZyhjb25zdCBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnkpCnsKIHJldHVybiBfX2RfZW50cnlfdHlwZShkZW50cnkpID09IDB4MDA0MDAw MDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZF9pc19zcGVjaWFsKGNvbnN0IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewog cmV0dXJuIF9fZF9lbnRyeV90eXBlKGRlbnRyeSkgPT0gMHgwMDUwMDAwMDsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lz X2ZpbGUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4gZF9pc19yZWcoZGVu dHJ5KSB8fCBkX2lzX3NwZWNpYWwoZGVudHJ5KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX25lZ2F0aXZlKGNvbnN0 IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewoKIHJldHVybiBkX2lzX21pc3MoZGVudHJ5KTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBkX2ZsYWdzX25lZ2F0aXZlKHVuc2lnbmVkIGZsYWdzKQp7CiByZXR1cm4gKGZsYWdzICYg MHgwMDcwMDAwMCkgPT0gMHgwMDAwMDAwMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX3Bvc2l0aXZlKGNvbnN0IHN0 cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuICFkX2lzX25lZ2F0aXZlKGRlbnRyeSk7Cn0K IyA0NjggIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX3JlYWxseV9pc19uZWdhdGl2 ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIHJldHVybiBkZW50cnktPmRfaW5vZGUg PT0gKCh2b2lkICopMCk7Cn0KIyA0ODYgIi4vaW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBk X3JlYWxseV9pc19wb3NpdGl2ZShjb25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKIHJldHVy biBkZW50cnktPmRfaW5vZGUgIT0gKCh2b2lkICopMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBzaW1wbGVfcG9zaXRpdmUo Y29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiByZXR1cm4gZF9yZWFsbHlfaXNfcG9zaXRp dmUoZGVudHJ5KSAmJiAhZF91bmhhc2hlZChkZW50cnkpOwp9CgpleHRlcm4gdm9pZCBkX3NldF9m YWxsdGhydShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkX2lzX2ZhbGx0aHJ1KGNvbnN0 IHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9mbGFncyAmIDB4MDEw MDAwMDA7Cn0KCgpleHRlcm4gaW50IHN5c2N0bF92ZnNfY2FjaGVfcHJlc3N1cmU7CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25l ZCBsb25nIHZmc19wcmVzc3VyZV9yYXRpbyh1bnNpZ25lZCBsb25nIHZhbCkKewogcmV0dXJuICgg eyB0eXBlb2YodmFsKSBxdW90ID0gKHZhbCkgLyAoMTAwKTsgdHlwZW9mKHZhbCkgcmVtID0gKHZh bCkgJSAoMTAwKTsgKHF1b3QgKiAoc3lzY3RsX3Zmc19jYWNoZV9wcmVzc3VyZSkpICsgKChyZW0g KiAoc3lzY3RsX3Zmc19jYWNoZV9wcmVzc3VyZSkpIC8gKDEwMCkpOyB9ICk7Cn0KIyA1MTggIi4v aW5jbHVkZS9saW51eC9kY2FjaGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGlub2RlICpkX2lub2RlKGNvbnN0IHN0cnVj dCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuIGRlbnRyeS0+ZF9pbm9kZTsKfQojIDUzMCAiLi9p bmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgaW5vZGUgKmRfaW5vZGVfcmN1KGNvbnN0IHN0 cnVjdCBkZW50cnkgKmRlbnRyeSkKewogcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKGRlbnRyeS0+ ZF9pbm9kZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3Np emUoJihkZW50cnktPmRfaW5vZGUpLCBfX3UuX19jLCBzaXplb2YoZGVudHJ5LT5kX2lub2RlKSk7 IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoZGVudHJ5LT5kX2lub2RlKSwgX191Ll9f Yywgc2l6ZW9mKGRlbnRyeS0+ZF9pbm9kZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7 IH0pOwp9CiMgNTQ1ICIuL2luY2x1ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpbm9kZSAqZF9i YWNraW5nX2lub2RlKGNvbnN0IHN0cnVjdCBkZW50cnkgKnVwcGVyKQp7CiBzdHJ1Y3QgaW5vZGUg Kmlub2RlID0gdXBwZXItPmRfaW5vZGU7CgogcmV0dXJuIGlub2RlOwp9CiMgNTYyICIuL2luY2x1 ZGUvbGludXgvZGNhY2hlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZW50cnkgKmRfYmFja2luZ19kZW50cnkoc3RydWN0 IGRlbnRyeSAqdXBwZXIpCnsKIHJldHVybiB1cHBlcjsKfQojIDU3NyAiLi9pbmNsdWRlL2xpbnV4 L2RjYWNoZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgZGVudHJ5ICpkX3JlYWwoc3RydWN0IGRlbnRyeSAqZGVudHJ5LAog ICAgICAgIGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGlmIChfX2J1aWx0aW5fZXhwZWN0 KCEhKGRlbnRyeS0+ZF9mbGFncyAmIDB4MDQwMDAwMDApLCAwKSkKICByZXR1cm4gZGVudHJ5LT5k X29wLT5kX3JlYWwoZGVudHJ5LCBpbm9kZSk7CiBlbHNlCiAgcmV0dXJuIGRlbnRyeTsKfQojIDU5 MyAiLi9pbmNsdWRlL2xpbnV4L2RjYWNoZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgaW5vZGUgKmRfcmVhbF9pbm9kZShj b25zdCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCnsKCiByZXR1cm4gZF9iYWNraW5nX2lub2RlKGRf cmVhbCgoc3RydWN0IGRlbnRyeSAqKSBkZW50cnksICgodm9pZCAqKTApKSk7Cn0KCnN0cnVjdCBu YW1lX3NuYXBzaG90IHsKIHN0cnVjdCBxc3RyIG5hbWU7CiB1bnNpZ25lZCBjaGFyIGlubGluZV9u YW1lWzMyXTsKfTsKdm9pZCB0YWtlX2RlbnRyeV9uYW1lX3NuYXBzaG90KHN0cnVjdCBuYW1lX3Nu YXBzaG90ICosIHN0cnVjdCBkZW50cnkgKik7CnZvaWQgcmVsZWFzZV9kZW50cnlfbmFtZV9zbmFw c2hvdChzdHJ1Y3QgbmFtZV9zbmFwc2hvdCAqKTsKIyA5ICIuL2luY2x1ZGUvbGludXgvZnMuaCIg MgojIDEgIi4vaW5jbHVkZS9saW51eC9wYXRoLmgiIDEKCgoKCnN0cnVjdCBkZW50cnk7CnN0cnVj dCB2ZnNtb3VudDsKCnN0cnVjdCBwYXRoIHsKIHN0cnVjdCB2ZnNtb3VudCAqbW50Owogc3RydWN0 IGRlbnRyeSAqZGVudHJ5Owp9IF9fYXR0cmlidXRlX18oKF9fZGVzaWduYXRlZF9pbml0X18pKTsK CmV4dGVybiB2b2lkIHBhdGhfZ2V0KGNvbnN0IHN0cnVjdCBwYXRoICopOwpleHRlcm4gdm9pZCBw YXRoX3B1dChjb25zdCBzdHJ1Y3QgcGF0aCAqKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwYXRoX2VxdWFsKGNvbnN0IHN0cnVj dCBwYXRoICpwYXRoMSwgY29uc3Qgc3RydWN0IHBhdGggKnBhdGgyKQp7CiByZXR1cm4gcGF0aDEt Pm1udCA9PSBwYXRoMi0+bW50ICYmIHBhdGgxLT5kZW50cnkgPT0gcGF0aDItPmRlbnRyeTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBwYXRoX3B1dF9pbml0KHN0cnVjdCBwYXRoICpwYXRoKQp7CiBwYXRoX3B1dChwYXRoKTsK ICpwYXRoID0gKHN0cnVjdCBwYXRoKSB7IH07Cn0KIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgi IDIKIyAxICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIiAxCgoKCgoKIyAxICIuL2FyY2gveDg2L2lu Y2x1ZGUvdWFwaS9hc20vc3RhdC5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v cG9zaXhfdHlwZXMuaCIgMQojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zdGF0Lmgi IDIKIyA4MyAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3N0YXQuaCIKc3RydWN0IHN0YXQg ewogX19rZXJuZWxfdWxvbmdfdCBzdF9kZXY7CiBfX2tlcm5lbF91bG9uZ190IHN0X2lubzsKIF9f a2VybmVsX3Vsb25nX3Qgc3Rfbmxpbms7CgogdW5zaWduZWQgaW50IHN0X21vZGU7CiB1bnNpZ25l ZCBpbnQgc3RfdWlkOwogdW5zaWduZWQgaW50IHN0X2dpZDsKIHVuc2lnbmVkIGludCBfX3BhZDA7 CiBfX2tlcm5lbF91bG9uZ190IHN0X3JkZXY7CiBfX2tlcm5lbF9sb25nX3Qgc3Rfc2l6ZTsKIF9f a2VybmVsX2xvbmdfdCBzdF9ibGtzaXplOwogX19rZXJuZWxfbG9uZ190IHN0X2Jsb2NrczsKCiBf X2tlcm5lbF91bG9uZ190IHN0X2F0aW1lOwogX19rZXJuZWxfdWxvbmdfdCBzdF9hdGltZV9uc2Vj OwogX19rZXJuZWxfdWxvbmdfdCBzdF9tdGltZTsKIF9fa2VybmVsX3Vsb25nX3Qgc3RfbXRpbWVf bnNlYzsKIF9fa2VybmVsX3Vsb25nX3Qgc3RfY3RpbWU7CiBfX2tlcm5lbF91bG9uZ190IHN0X2N0 aW1lX25zZWM7CiBfX2tlcm5lbF9sb25nX3QgX191bnVzZWRbM107Cn07CiMgMTE3ICIuL2FyY2gv eDg2L2luY2x1ZGUvdWFwaS9hc20vc3RhdC5oIgpzdHJ1Y3QgX19vbGRfa2VybmVsX3N0YXQgewog dW5zaWduZWQgc2hvcnQgc3RfZGV2OwogdW5zaWduZWQgc2hvcnQgc3RfaW5vOwogdW5zaWduZWQg c2hvcnQgc3RfbW9kZTsKIHVuc2lnbmVkIHNob3J0IHN0X25saW5rOwogdW5zaWduZWQgc2hvcnQg c3RfdWlkOwogdW5zaWduZWQgc2hvcnQgc3RfZ2lkOwogdW5zaWduZWQgc2hvcnQgc3RfcmRldjsK CgoKCgoKIHVuc2lnbmVkIGludCBzdF9zaXplOwogdW5zaWduZWQgaW50IHN0X2F0aW1lOwogdW5z aWduZWQgaW50IHN0X210aW1lOwogdW5zaWduZWQgaW50IHN0X2N0aW1lOwoKfTsKIyA3ICIuL2lu Y2x1ZGUvbGludXgvc3RhdC5oIiAyCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3RhdC5oIiAx CiMgNTYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3N0YXQuaCIKc3RydWN0IHN0YXR4X3RpbWVzdGFt cCB7CiBfX3M2NCB0dl9zZWM7CiBfX3UzMiB0dl9uc2VjOwogX19zMzIgX19yZXNlcnZlZDsKfTsK IyA5OSAiLi9pbmNsdWRlL3VhcGkvbGludXgvc3RhdC5oIgpzdHJ1Y3Qgc3RhdHggewoKIF9fdTMy IHN0eF9tYXNrOwogX191MzIgc3R4X2Jsa3NpemU7CiBfX3U2NCBzdHhfYXR0cmlidXRlczsKCiBf X3UzMiBzdHhfbmxpbms7CiBfX3UzMiBzdHhfdWlkOwogX191MzIgc3R4X2dpZDsKIF9fdTE2IHN0 eF9tb2RlOwogX191MTYgX19zcGFyZTBbMV07CgogX191NjQgc3R4X2lubzsKIF9fdTY0IHN0eF9z aXplOwogX191NjQgc3R4X2Jsb2NrczsKIF9fdTY0IHN0eF9hdHRyaWJ1dGVzX21hc2s7Cgogc3Ry dWN0IHN0YXR4X3RpbWVzdGFtcCBzdHhfYXRpbWU7CiBzdHJ1Y3Qgc3RhdHhfdGltZXN0YW1wIHN0 eF9idGltZTsKIHN0cnVjdCBzdGF0eF90aW1lc3RhbXAgc3R4X2N0aW1lOwogc3RydWN0IHN0YXR4 X3RpbWVzdGFtcCBzdHhfbXRpbWU7CgogX191MzIgc3R4X3JkZXZfbWFqb3I7CiBfX3UzMiBzdHhf cmRldl9taW5vcjsKIF9fdTMyIHN0eF9kZXZfbWFqb3I7CiBfX3UzMiBzdHhfZGV2X21pbm9yOwoK IF9fdTY0IF9fc3BhcmUyWzE0XTsKCn07CiMgOCAiLi9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMgoj IDIwICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC91aWRnaWQu aCIgMQojIDE2ICIuL2luY2x1ZGUvbGludXgvdWlkZ2lkLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L2hpZ2h1aWQuaCIgMQojIDM1ICIuL2luY2x1ZGUvbGludXgvaGlnaHVpZC5oIgpleHRlcm4gaW50 IG92ZXJmbG93dWlkOwpleHRlcm4gaW50IG92ZXJmbG93Z2lkOwoKZXh0ZXJuIHZvaWQgX19iYWRf dWlkKHZvaWQpOwpleHRlcm4gdm9pZCBfX2JhZF9naWQodm9pZCk7CiMgODIgIi4vaW5jbHVkZS9s aW51eC9oaWdodWlkLmgiCmV4dGVybiBpbnQgZnNfb3ZlcmZsb3d1aWQ7CmV4dGVybiBpbnQgZnNf b3ZlcmZsb3dnaWQ7CiMgMTcgIi4vaW5jbHVkZS9saW51eC91aWRnaWQuaCIgMgoKc3RydWN0IHVz ZXJfbmFtZXNwYWNlOwpleHRlcm4gc3RydWN0IHVzZXJfbmFtZXNwYWNlIGluaXRfdXNlcl9uczsK CnR5cGVkZWYgc3RydWN0IHsKIHVpZF90IHZhbDsKfSBrdWlkX3Q7CgoKdHlwZWRlZiBzdHJ1Y3Qg ewogZ2lkX3QgdmFsOwp9IGtnaWRfdDsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1aWRfdCBfX2t1aWRfdmFsKGt1aWRfdCB1aWQp CnsKIHJldHVybiB1aWQudmFsOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBnaWRfdCBfX2tnaWRfdmFsKGtnaWRfdCBnaWQpCnsKIHJl dHVybiBnaWQudmFsOwp9CiMgNjEgIi4vaW5jbHVkZS9saW51eC91aWRnaWQuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRf ZXEoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKewogcmV0dXJuIF9fa3VpZF92YWwobGVmdCkg PT0gX19rdWlkX3ZhbChyaWdodCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ2lkX2VxKGtnaWRfdCBsZWZ0LCBrZ2lkX3Qg cmlnaHQpCnsKIHJldHVybiBfX2tnaWRfdmFsKGxlZnQpID09IF9fa2dpZF92YWwocmlnaHQpOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIHVpZF9ndChrdWlkX3QgbGVmdCwga3VpZF90IHJpZ2h0KQp7CiByZXR1cm4gX19rdWlk X3ZhbChsZWZ0KSA+IF9fa3VpZF92YWwocmlnaHQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGdpZF9ndChrZ2lkX3QgbGVm dCwga2dpZF90IHJpZ2h0KQp7CiByZXR1cm4gX19rZ2lkX3ZhbChsZWZ0KSA+IF9fa2dpZF92YWwo cmlnaHQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIHVpZF9ndGUoa3VpZF90IGxlZnQsIGt1aWRfdCByaWdodCkKewogcmV0 dXJuIF9fa3VpZF92YWwobGVmdCkgPj0gX19rdWlkX3ZhbChyaWdodCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZ2lkX2d0 ZShrZ2lkX3QgbGVmdCwga2dpZF90IHJpZ2h0KQp7CiByZXR1cm4gX19rZ2lkX3ZhbChsZWZ0KSA+ PSBfX2tnaWRfdmFsKHJpZ2h0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRfbHQoa3VpZF90IGxlZnQsIGt1aWRfdCBy aWdodCkKewogcmV0dXJuIF9fa3VpZF92YWwobGVmdCkgPCBfX2t1aWRfdmFsKHJpZ2h0KTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBnaWRfbHQoa2dpZF90IGxlZnQsIGtnaWRfdCByaWdodCkKewogcmV0dXJuIF9fa2dpZF92 YWwobGVmdCkgPCBfX2tnaWRfdmFsKHJpZ2h0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1aWRfbHRlKGt1aWRfdCBsZWZ0 LCBrdWlkX3QgcmlnaHQpCnsKIHJldHVybiBfX2t1aWRfdmFsKGxlZnQpIDw9IF9fa3VpZF92YWwo cmlnaHQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIGdpZF9sdGUoa2dpZF90IGxlZnQsIGtnaWRfdCByaWdodCkKewogcmV0 dXJuIF9fa2dpZF92YWwobGVmdCkgPD0gX19rZ2lkX3ZhbChyaWdodCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdWlkX3Zh bGlkKGt1aWRfdCB1aWQpCnsKIHJldHVybiBfX2t1aWRfdmFsKHVpZCkgIT0gKHVpZF90KSAtMTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgYm9vbCBnaWRfdmFsaWQoa2dpZF90IGdpZCkKewogcmV0dXJuIF9fa2dpZF92YWwoZ2lkKSAh PSAoZ2lkX3QpIC0xOwp9CgoKCmV4dGVybiBrdWlkX3QgbWFrZV9rdWlkKHN0cnVjdCB1c2VyX25h bWVzcGFjZSAqZnJvbSwgdWlkX3QgdWlkKTsKZXh0ZXJuIGtnaWRfdCBtYWtlX2tnaWQoc3RydWN0 IHVzZXJfbmFtZXNwYWNlICpmcm9tLCBnaWRfdCBnaWQpOwoKZXh0ZXJuIHVpZF90IGZyb21fa3Vp ZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBrdWlkX3QgdWlkKTsKZXh0ZXJuIGdpZF90IGZy b21fa2dpZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBrZ2lkX3QgZ2lkKTsKZXh0ZXJuIHVp ZF90IGZyb21fa3VpZF9tdW5nZWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICp0bywga3VpZF90IHVp ZCk7CmV4dGVybiBnaWRfdCBmcm9tX2tnaWRfbXVuZ2VkKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAq dG8sIGtnaWRfdCBnaWQpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBrdWlkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2VyX25hbWVz cGFjZSAqbnMsIGt1aWRfdCB1aWQpCnsKIHJldHVybiBmcm9tX2t1aWQobnMsIHVpZCkgIT0gKHVp ZF90KSAtMTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBrZ2lkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAq bnMsIGtnaWRfdCBnaWQpCnsKIHJldHVybiBmcm9tX2tnaWQobnMsIGdpZCkgIT0gKGdpZF90KSAt MTsKfQojIDIxICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIiAyCgoKCnN0cnVjdCBrc3RhdCB7CiB1 MzIgcmVzdWx0X21hc2s7CiB1bW9kZV90IG1vZGU7CiB1bnNpZ25lZCBpbnQgbmxpbms7CiB1aW50 MzJfdCBibGtzaXplOwogdTY0IGF0dHJpYnV0ZXM7CiB1NjQgYXR0cmlidXRlc19tYXNrOwojIDM5 ICIuL2luY2x1ZGUvbGludXgvc3RhdC5oIgogdTY0IGlubzsKIGRldl90IGRldjsKIGRldl90IHJk ZXY7CiBrdWlkX3QgdWlkOwoga2dpZF90IGdpZDsKIGxvZmZfdCBzaXplOwogc3RydWN0IHRpbWVz cGVjNjQgYXRpbWU7CiBzdHJ1Y3QgdGltZXNwZWM2NCBtdGltZTsKIHN0cnVjdCB0aW1lc3BlYzY0 IGN0aW1lOwogc3RydWN0IHRpbWVzcGVjNjQgYnRpbWU7CiB1NjQgYmxvY2tzOwp9OwojIDExICIu L2luY2x1ZGUvbGludXgvZnMuaCIgMgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1Lmgi IDEKIyAxMyAiLi9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L3Nocmlua2VyLmgiIDEKIyAxMiAiLi9pbmNsdWRlL2xpbnV4L3Nocmlua2VyLmgiCnN0cnVjdCBz aHJpbmtfY29udHJvbCB7CiBnZnBfdCBnZnBfbWFzazsKCgogaW50IG5pZDsKCgoKCgoKIHVuc2ln bmVkIGxvbmcgbnJfdG9fc2NhbjsKCgoKCgoKIHVuc2lnbmVkIGxvbmcgbnJfc2Nhbm5lZDsKCgog c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOwp9OwojIDYwICIuL2luY2x1ZGUvbGludXgvc2hyaW5r ZXIuaCIKc3RydWN0IHNocmlua2VyIHsKIHVuc2lnbmVkIGxvbmcgKCpjb3VudF9vYmplY3RzKShz dHJ1Y3Qgc2hyaW5rZXIgKiwKICAgICAgICAgICBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKnNjKTsK IHVuc2lnbmVkIGxvbmcgKCpzY2FuX29iamVjdHMpKHN0cnVjdCBzaHJpbmtlciAqLAogICAgICAg ICAgc3RydWN0IHNocmlua19jb250cm9sICpzYyk7CgogbG9uZyBiYXRjaDsKIGludCBzZWVrczsK IHVuc2lnbmVkIGZsYWdzOwoKCiBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CgoKIGludCBpZDsKCgog YXRvbWljX2xvbmdfdCAqbnJfZGVmZXJyZWQ7Cn07CiMgOTAgIi4vaW5jbHVkZS9saW51eC9zaHJp bmtlci5oIgpleHRlcm4gaW50IHByZWFsbG9jX3Nocmlua2VyKHN0cnVjdCBzaHJpbmtlciAqc2hy aW5rZXIpOwpleHRlcm4gdm9pZCByZWdpc3Rlcl9zaHJpbmtlcl9wcmVwYXJlZChzdHJ1Y3Qgc2hy aW5rZXIgKnNocmlua2VyKTsKZXh0ZXJuIGludCByZWdpc3Rlcl9zaHJpbmtlcihzdHJ1Y3Qgc2hy aW5rZXIgKnNocmlua2VyKTsKZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl9zaHJpbmtlcihzdHJ1Y3Qg c2hyaW5rZXIgKnNocmlua2VyKTsKZXh0ZXJuIHZvaWQgZnJlZV9wcmVhbGxvY2VkX3Nocmlua2Vy KHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIpOwojIDE0ICIuL2luY2x1ZGUvbGludXgvbGlzdF9s cnUuaCIgMgoKc3RydWN0IG1lbV9jZ3JvdXA7CgoKZW51bSBscnVfc3RhdHVzIHsKIExSVV9SRU1P VkVELAogTFJVX1JFTU9WRURfUkVUUlksCgogTFJVX1JPVEFURSwKIExSVV9TS0lQLAogTFJVX1JF VFJZLAoKfTsKCnN0cnVjdCBsaXN0X2xydV9vbmUgewogc3RydWN0IGxpc3RfaGVhZCBsaXN0OwoK IGxvbmcgbnJfaXRlbXM7Cn07CgpzdHJ1Y3QgbGlzdF9scnVfbWVtY2cgewogc3RydWN0IGNhbGxi YWNrX2hlYWQgcmN1OwoKIHN0cnVjdCBsaXN0X2xydV9vbmUgKmxydVswXTsKfTsKCnN0cnVjdCBs aXN0X2xydV9ub2RlIHsKCiBzcGlubG9ja190IGxvY2s7Cgogc3RydWN0IGxpc3RfbHJ1X29uZSBs cnU7CgoKIHN0cnVjdCBsaXN0X2xydV9tZW1jZyAqbWVtY2dfbHJ1czsKCiBsb25nIG5yX2l0ZW1z Owp9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSk7CgpzdHJ1Y3QgbGlz dF9scnUgewogc3RydWN0IGxpc3RfbHJ1X25vZGUgKm5vZGU7Cgogc3RydWN0IGxpc3RfaGVhZCBs aXN0OwogaW50IHNocmlua2VyX2lkOwogYm9vbCBtZW1jZ19hd2FyZTsKCn07Cgp2b2lkIGxpc3Rf bHJ1X2Rlc3Ryb3koc3RydWN0IGxpc3RfbHJ1ICpscnUpOwppbnQgX19saXN0X2xydV9pbml0KHN0 cnVjdCBsaXN0X2xydSAqbHJ1LCBib29sIG1lbWNnX2F3YXJlLAogICAgICBzdHJ1Y3QgbG9ja19j bGFzc19rZXkgKmtleSwgc3RydWN0IHNocmlua2VyICpzaHJpbmtlcik7CiMgNzIgIi4vaW5jbHVk ZS9saW51eC9saXN0X2xydS5oIgppbnQgbWVtY2dfdXBkYXRlX2FsbF9saXN0X2xydXMoaW50IG51 bV9tZW1jZ3MpOwp2b2lkIG1lbWNnX2RyYWluX2FsbF9saXN0X2xydXMoaW50IHNyY19pZHgsIHN0 cnVjdCBtZW1fY2dyb3VwICpkc3RfbWVtY2cpOwojIDkxICIuL2luY2x1ZGUvbGludXgvbGlzdF9s cnUuaCIKYm9vbCBsaXN0X2xydV9hZGQoc3RydWN0IGxpc3RfbHJ1ICpscnUsIHN0cnVjdCBsaXN0 X2hlYWQgKml0ZW0pOwojIDEwNCAiLi9pbmNsdWRlL2xpbnV4L2xpc3RfbHJ1LmgiCmJvb2wgbGlz dF9scnVfZGVsKHN0cnVjdCBsaXN0X2xydSAqbHJ1LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsK IyAxMTYgIi4vaW5jbHVkZS9saW51eC9saXN0X2xydS5oIgp1bnNpZ25lZCBsb25nIGxpc3RfbHJ1 X2NvdW50X29uZShzdHJ1Y3QgbGlzdF9scnUgKmxydSwKICAgICBpbnQgbmlkLCBzdHJ1Y3QgbWVt X2Nncm91cCAqbWVtY2cpOwp1bnNpZ25lZCBsb25nIGxpc3RfbHJ1X2NvdW50X25vZGUoc3RydWN0 IGxpc3RfbHJ1ICpscnUsIGludCBuaWQpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9uZyBsaXN0X2xydV9zaHJpbmtf Y291bnQoc3RydWN0IGxpc3RfbHJ1ICpscnUsCiAgICAgICAgc3RydWN0IHNocmlua19jb250cm9s ICpzYykKewogcmV0dXJuIGxpc3RfbHJ1X2NvdW50X29uZShscnUsIHNjLT5uaWQsIHNjLT5tZW1j Zyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGxvbmcgbGlzdF9scnVfY291bnQoc3RydWN0IGxpc3RfbHJ1ICpscnUp CnsKIGxvbmcgY291bnQgPSAwOwogaW50IG5pZDsKCiBmb3IgKCAobmlkKSA9IDA7IChuaWQpID09 IDA7IChuaWQpID0gMSkKICBjb3VudCArPSBsaXN0X2xydV9jb3VudF9ub2RlKGxydSwgbmlkKTsK CiByZXR1cm4gY291bnQ7Cn0KCnZvaWQgbGlzdF9scnVfaXNvbGF0ZShzdHJ1Y3QgbGlzdF9scnVf b25lICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICppdGVtKTsKdm9pZCBsaXN0X2xydV9pc29sYXRl X21vdmUoc3RydWN0IGxpc3RfbHJ1X29uZSAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAqaXRlbSwK ICAgICAgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCk7Cgp0eXBlZGVmIGVudW0gbHJ1X3N0YXR1cyAo Kmxpc3RfbHJ1X3dhbGtfY2IpKHN0cnVjdCBsaXN0X2hlYWQgKml0ZW0sCiAgc3RydWN0IGxpc3Rf bHJ1X29uZSAqbGlzdCwgc3BpbmxvY2tfdCAqbG9jaywgdm9pZCAqY2JfYXJnKTsKIyAxNjYgIi4v aW5jbHVkZS9saW51eC9saXN0X2xydS5oIgp1bnNpZ25lZCBsb25nIGxpc3RfbHJ1X3dhbGtfb25l KHN0cnVjdCBsaXN0X2xydSAqbHJ1LAogICAgaW50IG5pZCwgc3RydWN0IG1lbV9jZ3JvdXAgKm1l bWNnLAogICAgbGlzdF9scnVfd2Fsa19jYiBpc29sYXRlLCB2b2lkICpjYl9hcmcsCiAgICB1bnNp Z25lZCBsb25nICpucl90b193YWxrKTsKIyAxODMgIi4vaW5jbHVkZS9saW51eC9saXN0X2xydS5o Igp1bnNpZ25lZCBsb25nIGxpc3RfbHJ1X3dhbGtfb25lX2lycShzdHJ1Y3QgbGlzdF9scnUgKmxy dSwKICAgICAgICBpbnQgbmlkLCBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCiAgICAgICAgbGlz dF9scnVfd2Fsa19jYiBpc29sYXRlLCB2b2lkICpjYl9hcmcsCiAgICAgICAgdW5zaWduZWQgbG9u ZyAqbnJfdG9fd2Fsayk7CnVuc2lnbmVkIGxvbmcgbGlzdF9scnVfd2Fsa19ub2RlKHN0cnVjdCBs aXN0X2xydSAqbHJ1LCBpbnQgbmlkLAogICAgIGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9p ZCAqY2JfYXJnLAogICAgIHVuc2lnbmVkIGxvbmcgKm5yX3RvX3dhbGspOwoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgbG9u ZwpsaXN0X2xydV9zaHJpbmtfd2FsayhzdHJ1Y3QgbGlzdF9scnUgKmxydSwgc3RydWN0IHNocmlu a19jb250cm9sICpzYywKICAgICAgIGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9pZCAqY2Jf YXJnKQp7CiByZXR1cm4gbGlzdF9scnVfd2Fsa19vbmUobHJ1LCBzYy0+bmlkLCBzYy0+bWVtY2cs IGlzb2xhdGUsIGNiX2FyZywKICAgICAmc2MtPm5yX3RvX3NjYW4pOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBsb25n Cmxpc3RfbHJ1X3Nocmlua193YWxrX2lycShzdHJ1Y3QgbGlzdF9scnUgKmxydSwgc3RydWN0IHNo cmlua19jb250cm9sICpzYywKICAgIGxpc3RfbHJ1X3dhbGtfY2IgaXNvbGF0ZSwgdm9pZCAqY2Jf YXJnKQp7CiByZXR1cm4gbGlzdF9scnVfd2Fsa19vbmVfaXJxKGxydSwgc2MtPm5pZCwgc2MtPm1l bWNnLCBpc29sYXRlLCBjYl9hcmcsCiAgICAgICAgICZzYy0+bnJfdG9fc2Nhbik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcKbGlzdF9scnVfd2FsayhzdHJ1Y3QgbGlzdF9scnUgKmxydSwgbGlzdF9scnVfd2Fs a19jYiBpc29sYXRlLAogICAgICAgdm9pZCAqY2JfYXJnLCB1bnNpZ25lZCBsb25nIG5yX3RvX3dh bGspCnsKIGxvbmcgaXNvbGF0ZWQgPSAwOwogaW50IG5pZDsKCiBmb3IgKCAobmlkKSA9IDA7IChu aWQpID09IDA7IChuaWQpID0gMSkgewogIGlzb2xhdGVkICs9IGxpc3RfbHJ1X3dhbGtfbm9kZShs cnUsIG5pZCwgaXNvbGF0ZSwKICAgICAgICAgICAgY2JfYXJnLCAmbnJfdG9fd2Fsayk7CiAgaWYg KG5yX3RvX3dhbGsgPD0gMCkKICAgYnJlYWs7CiB9CiByZXR1cm4gaXNvbGF0ZWQ7Cn0KIyAxNCAi Li9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUu aCIgMQojIDE4ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgojIDEgIi4vaW5jbHVkZS9s aW51eC94YXJyYXkuaCIgMQojIDE1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCiMgMSAiLi9p bmNsdWRlL2xpbnV4L2tjb25maWcuaCIgMQojIDE2ICIuL2luY2x1ZGUvbGludXgveGFycmF5Lmgi IDIKIyA1MiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YV9ta192YWx1ZSh1bnNp Z25lZCBsb25nIHYpCnsKICh7IGludCBfX3JldF93YXJuX29uID0gISEoKGxvbmcpdiA8IDApOyBp ZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20g X19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNl Y3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIg Ilx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAi XHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5l XG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMz XG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgveGFycmF5LmgiKSwgImki ICg1NCksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1 Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVz aHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5w b3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjQpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5f ZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CiByZXR1cm4gKHZvaWQgKikoKHYgPDwg MSkgfCAxKTsKfQojIDY1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcg eGFfdG9fdmFsdWUoY29uc3Qgdm9pZCAqZW50cnkpCnsKIHJldHVybiAodW5zaWduZWQgbG9uZyll bnRyeSA+PiAxOwp9CiMgNzcgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9pc192 YWx1ZShjb25zdCB2b2lkICplbnRyeSkKewogcmV0dXJuICh1bnNpZ25lZCBsb25nKWVudHJ5ICYg MTsKfQojIDk1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX3RhZ19wb2ludGVy KHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgdGFnKQp7CiByZXR1cm4gKHZvaWQgKikoKHVuc2lnbmVk IGxvbmcpcCB8IHRhZyk7Cn0KIyAxMTAgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAq eGFfdW50YWdfcG9pbnRlcih2b2lkICplbnRyeSkKewogcmV0dXJuICh2b2lkICopKCh1bnNpZ25l ZCBsb25nKWVudHJ5ICYgfjNVTCk7Cn0KIyAxMjUgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dW5zaWduZWQgaW50IHhhX3BvaW50ZXJfdGFnKHZvaWQgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2ln bmVkIGxvbmcpZW50cnkgJiAzVUw7Cn0KIyAxNDMgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCAqeGFfbWtfaW50ZXJuYWwodW5zaWduZWQgbG9uZyB2KQp7CiByZXR1cm4gKHZvaWQgKiko KHYgPDwgMikgfCAyKTsKfQojIDE1NSAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25l ZCBsb25nIHhhX3RvX2ludGVybmFsKGNvbnN0IHZvaWQgKmVudHJ5KQp7CiByZXR1cm4gKHVuc2ln bmVkIGxvbmcpZW50cnkgPj4gMjsKfQojIDE2NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIHhhX2lzX2ludGVybmFsKGNvbnN0IHZvaWQgKmVudHJ5KQp7CiByZXR1cm4gKCh1bnNpZ25l ZCBsb25nKWVudHJ5ICYgMykgPT0gMjsKfQojIDE4MyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBib29sIHhhX2lzX3plcm8oY29uc3Qgdm9pZCAqZW50cnkpCnsKIHJldHVybiBfX2J1aWx0aW5f ZXhwZWN0KCEhKGVudHJ5ID09IHhhX21rX2ludGVybmFsKDI1NykpLCAwKTsKfQojIDE5OSAiLi9p bmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX2Vycihjb25zdCB2b2lkICplbnRyeSkK ewogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoISEoeGFfaXNfaW50ZXJuYWwoZW50cnkpICYmIGVu dHJ5ID49IHhhX21rX2ludGVybmFsKC00MDk1KSksIDApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsKfQojIDIxNyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg eGFfZXJyKHZvaWQgKmVudHJ5KQp7CgogaWYgKHhhX2lzX2VycihlbnRyeSkpCiAgcmV0dXJuIChs b25nKWVudHJ5ID4+IDI7CiByZXR1cm4gMDsKfQojIDIzNiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJh eS5oIgpzdHJ1Y3QgeGFfbGltaXQgewogdTMyIG1heDsKIHUzMiBtaW47Cn07CgoKCgoKCnR5cGVk ZWYgdW5zaWduZWQgeGFfbWFya190OwoKCgoKCgoKZW51bSB4YV9sb2NrX3R5cGUgewogWEFfTE9D S19JUlEgPSAxLAogWEFfTE9DS19CSCA9IDIsCn07CiMgMjkyICIuL2luY2x1ZGUvbGludXgveGFy cmF5LmgiCnN0cnVjdCB4YXJyYXkgewogc3BpbmxvY2tfdCB4YV9sb2NrOwoKIGdmcF90IHhhX2Zs YWdzOwogdm9pZCAqIHhhX2hlYWQ7Cn07CiMgMzQ3ICIuL2luY2x1ZGUvbGludXgveGFycmF5Lmgi CnZvaWQgKnhhX2xvYWQoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKdm9p ZCAqeGFfc3RvcmUoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4LCB2b2lkICpl bnRyeSwgZ2ZwX3QpOwp2b2lkICp4YV9lcmFzZShzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxv bmcgaW5kZXgpOwp2b2lkICp4YV9zdG9yZV9yYW5nZShzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVk IGxvbmcgZmlyc3QsIHVuc2lnbmVkIGxvbmcgbGFzdCwKICAgdm9pZCAqZW50cnksIGdmcF90KTsK Ym9vbCB4YV9nZXRfbWFyayhzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHhh X21hcmtfdCk7CnZvaWQgeGFfc2V0X21hcmsoc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25n IGluZGV4LCB4YV9tYXJrX3QpOwp2b2lkIHhhX2NsZWFyX21hcmsoc3RydWN0IHhhcnJheSAqLCB1 bnNpZ25lZCBsb25nIGluZGV4LCB4YV9tYXJrX3QpOwp2b2lkICp4YV9maW5kKHN0cnVjdCB4YXJy YXkgKnhhLCB1bnNpZ25lZCBsb25nICppbmRleCwKICB1bnNpZ25lZCBsb25nIG1heCwgeGFfbWFy a190KSBfX2F0dHJpYnV0ZV9fKChub25udWxsKDIpKSk7CnZvaWQgKnhhX2ZpbmRfYWZ0ZXIoc3Ry dWN0IHhhcnJheSAqeGEsIHVuc2lnbmVkIGxvbmcgKmluZGV4LAogIHVuc2lnbmVkIGxvbmcgbWF4 LCB4YV9tYXJrX3QpIF9fYXR0cmlidXRlX18oKG5vbm51bGwoMikpKTsKdW5zaWduZWQgaW50IHhh X2V4dHJhY3Qoc3RydWN0IHhhcnJheSAqLCB2b2lkICoqZHN0LCB1bnNpZ25lZCBsb25nIHN0YXJ0 LAogIHVuc2lnbmVkIGxvbmcgbWF4LCB1bnNpZ25lZCBpbnQgbiwgeGFfbWFya190KTsKdm9pZCB4 YV9kZXN0cm95KHN0cnVjdCB4YXJyYXkgKik7CiMgMzc0ICIuL2luY2x1ZGUvbGludXgveGFycmF5 LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgeGFfaW5pdF9mbGFncyhzdHJ1Y3QgeGFycmF5ICp4YSwgZ2ZwX3QgZmxhZ3MpCnsK IGRvIHsgc3BpbmxvY2tfY2hlY2soJnhhLT54YV9sb2NrKTsgZG8geyAqKCYoJnhhLT54YV9sb2Nr KS0+cmxvY2spID0gKHJhd19zcGlubG9ja190KSB7IC5yYXdfbG9jayA9IHsgeyAudmFsID0geyAo MCkgfSB9IH0sIH07IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIHhhLT54YV9mbGFncyA9IGZs YWdzOwogeGEtPnhhX2hlYWQgPSAoKHZvaWQgKikwKTsKfQojIDM4OSAiLi9pbmNsdWRlL2xpbnV4 L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHhhX2luaXQoc3RydWN0IHhhcnJheSAqeGEpCnsKIHhhX2luaXRfZmxh Z3MoeGEsIDApOwp9CiMgNDAxICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgeGFfZW1w dHkoY29uc3Qgc3RydWN0IHhhcnJheSAqeGEpCnsKIHJldHVybiB4YS0+eGFfaGVhZCA9PSAoKHZv aWQgKikwKTsKfQojIDQxNCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX21hcmtl ZChjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwgeGFfbWFya190IG1hcmspCnsKIHJldHVybiB4YS0+ eGFfZmxhZ3MgJiAoKCBnZnBfdCkoKDFVIDw8ICgyMyArIDApKSA8PCAoIHVuc2lnbmVkKShtYXJr KSkpOwp9CiMgNTU0ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnZvaWQgKl9feGFfZXJhc2Uo c3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKdm9pZCAqX194YV9zdG9yZShz dHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCk7 CnZvaWQgKl9feGFfY21weGNoZyhzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcgaW5kZXgs IHZvaWQgKm9sZCwKICB2b2lkICplbnRyeSwgZ2ZwX3QpOwppbnQgX19hdHRyaWJ1dGVfXygoX193 YXJuX3VudXNlZF9yZXN1bHRfXykpIF9feGFfaW5zZXJ0KHN0cnVjdCB4YXJyYXkgKiwgdW5zaWdu ZWQgbG9uZyBpbmRleCwKICB2b2lkICplbnRyeSwgZ2ZwX3QpOwppbnQgX19hdHRyaWJ1dGVfXygo X193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9feGFfYWxsb2Moc3RydWN0IHhhcnJheSAqLCB1MzIg KmlkLCB2b2lkICplbnRyeSwKICBzdHJ1Y3QgeGFfbGltaXQsIGdmcF90KTsKaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfX3hhX2FsbG9jX2N5Y2xpYyhzdHJ1Y3Qg eGFycmF5ICosIHUzMiAqaWQsIHZvaWQgKmVudHJ5LAogIHN0cnVjdCB4YV9saW1pdCwgdTMyICpu ZXh0LCBnZnBfdCk7CnZvaWQgX194YV9zZXRfbWFyayhzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVk IGxvbmcgaW5kZXgsIHhhX21hcmtfdCk7CnZvaWQgX194YV9jbGVhcl9tYXJrKHN0cnVjdCB4YXJy YXkgKiwgdW5zaWduZWQgbG9uZyBpbmRleCwgeGFfbWFya190KTsKIyA1ODEgIi4vaW5jbHVkZS9s aW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfc3RvcmVfYmgoc3RydWN0IHhhcnJheSAqeGEsIHVuc2ln bmVkIGxvbmcgaW5kZXgsCiAgdm9pZCAqZW50cnksIGdmcF90IGdmcCkKewogdm9pZCAqY3VycjsK CiBzcGluX2xvY2tfYmgoJih4YSktPnhhX2xvY2spOwogY3VyciA9IF9feGFfc3RvcmUoeGEsIGlu ZGV4LCBlbnRyeSwgZ2ZwKTsKIHNwaW5fdW5sb2NrX2JoKCYoeGEpLT54YV9sb2NrKTsKCiByZXR1 cm4gY3VycjsKfQojIDYwNyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YV9zdG9y ZV9pcnEoc3RydWN0IHhhcnJheSAqeGEsIHVuc2lnbmVkIGxvbmcgaW5kZXgsCiAgdm9pZCAqZW50 cnksIGdmcF90IGdmcCkKewogdm9pZCAqY3VycjsKCiBzcGluX2xvY2tfaXJxKCYoeGEpLT54YV9s b2NrKTsKIGN1cnIgPSBfX3hhX3N0b3JlKHhhLCBpbmRleCwgZW50cnksIGdmcCk7CiBzcGluX3Vu bG9ja19pcnEoJih4YSktPnhhX2xvY2spOwoKIHJldHVybiBjdXJyOwp9CiMgNjMyICIuL2luY2x1 ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX2VyYXNlX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1 bnNpZ25lZCBsb25nIGluZGV4KQp7CiB2b2lkICplbnRyeTsKCiBzcGluX2xvY2tfYmgoJih4YSkt PnhhX2xvY2spOwogZW50cnkgPSBfX3hhX2VyYXNlKHhhLCBpbmRleCk7CiBzcGluX3VubG9ja19i aCgmKHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVudHJ5Owp9CiMgNjU2ICIuL2luY2x1ZGUvbGlu dXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgKnhhX2VyYXNlX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWdu ZWQgbG9uZyBpbmRleCkKewogdm9pZCAqZW50cnk7Cgogc3Bpbl9sb2NrX2lycSgmKHhhKS0+eGFf bG9jayk7CiBlbnRyeSA9IF9feGFfZXJhc2UoeGEsIGluZGV4KTsKIHNwaW5fdW5sb2NrX2lycSgm KHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVudHJ5Owp9CiMgNjgyICIuL2luY2x1ZGUvbGludXgv eGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgKnhhX2NtcHhjaGcoc3RydWN0IHhhcnJheSAqeGEsIHVuc2lnbmVkIGxv bmcgaW5kZXgsCiAgIHZvaWQgKm9sZCwgdm9pZCAqZW50cnksIGdmcF90IGdmcCkKewogdm9pZCAq Y3VycjsKCiBzcGluX2xvY2soJih4YSktPnhhX2xvY2spOwogY3VyciA9IF9feGFfY21weGNoZyh4 YSwgaW5kZXgsIG9sZCwgZW50cnksIGdmcCk7CiBzcGluX3VubG9jaygmKHhhKS0+eGFfbG9jayk7 CgogcmV0dXJuIGN1cnI7Cn0KIyA3MDkgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAq eGFfY21weGNoZ19iaChzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCwKICAg dm9pZCAqb2xkLCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQp7CiB2b2lkICpjdXJyOwoKIHNwaW5f bG9ja19iaCgmKHhhKS0+eGFfbG9jayk7CiBjdXJyID0gX194YV9jbXB4Y2hnKHhhLCBpbmRleCwg b2xkLCBlbnRyeSwgZ2ZwKTsKIHNwaW5fdW5sb2NrX2JoKCYoeGEpLT54YV9sb2NrKTsKCiByZXR1 cm4gY3VycjsKfQojIDczNiAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICp4YV9jbXB4 Y2hnX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRleCwKICAgdm9pZCAq b2xkLCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQp7CiB2b2lkICpjdXJyOwoKIHNwaW5fbG9ja19p cnEoJih4YSktPnhhX2xvY2spOwogY3VyciA9IF9feGFfY21weGNoZyh4YSwgaW5kZXgsIG9sZCwg ZW50cnksIGdmcCk7CiBzcGluX3VubG9ja19pcnEoJih4YSktPnhhX2xvY2spOwoKIHJldHVybiBj dXJyOwp9CiMgNzY1ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBfX2F0dHJpYnV0ZV9f KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgeGFfaW5zZXJ0KHN0cnVjdCB4YXJyYXkgKnhhLAog IHVuc2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCBnZnApCnsKIGludCBlcnI7 Cgogc3Bpbl9sb2NrKCYoeGEpLT54YV9sb2NrKTsKIGVyciA9IF9feGFfaW5zZXJ0KHhhLCBpbmRl eCwgZW50cnksIGdmcCk7CiBzcGluX3VubG9jaygmKHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVy cjsKfQojIDc5NCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygo X193YXJuX3VudXNlZF9yZXN1bHRfXykpIHhhX2luc2VydF9iaChzdHJ1Y3QgeGFycmF5ICp4YSwK ICB1bnNpZ25lZCBsb25nIGluZGV4LCB2b2lkICplbnRyeSwgZ2ZwX3QgZ2ZwKQp7CiBpbnQgZXJy OwoKIHNwaW5fbG9ja19iaCgmKHhhKS0+eGFfbG9jayk7CiBlcnIgPSBfX3hhX2luc2VydCh4YSwg aW5kZXgsIGVudHJ5LCBnZnApOwogc3Bpbl91bmxvY2tfYmgoJih4YSktPnhhX2xvY2spOwoKIHJl dHVybiBlcnI7Cn0KIyA4MjMgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB4YV9pbnNlcnRfaXJxKHN0cnVjdCB4YXJy YXkgKnhhLAogIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHZvaWQgKmVudHJ5LCBnZnBfdCBnZnApCnsK IGludCBlcnI7Cgogc3Bpbl9sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CiBlcnIgPSBfX3hhX2lu c2VydCh4YSwgaW5kZXgsIGVudHJ5LCBnZnApOwogc3Bpbl91bmxvY2tfaXJxKCYoeGEpLT54YV9s b2NrKTsKCiByZXR1cm4gZXJyOwp9CiMgODUyICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBpbnQgeGFfYWxsb2Moc3RydWN0 IHhhcnJheSAqeGEsIHUzMiAqaWQsCiAgdm9pZCAqZW50cnksIHN0cnVjdCB4YV9saW1pdCBsaW1p dCwgZ2ZwX3QgZ2ZwKQp7CiBpbnQgZXJyOwoKIHNwaW5fbG9jaygmKHhhKS0+eGFfbG9jayk7CiBl cnIgPSBfX3hhX2FsbG9jKHhhLCBpZCwgZW50cnksIGxpbWl0LCBnZnApOwogc3Bpbl91bmxvY2so Jih4YSktPnhhX2xvY2spOwoKIHJldHVybiBlcnI7Cn0KIyA4ODEgIi4vaW5jbHVkZS9saW51eC94 YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSB4YV9h bGxvY19iaChzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwKICB2b2lkICplbnRyeSwgc3RydWN0 IHhhX2xpbWl0IGxpbWl0LCBnZnBfdCBnZnApCnsKIGludCBlcnI7Cgogc3Bpbl9sb2NrX2JoKCYo eGEpLT54YV9sb2NrKTsKIGVyciA9IF9feGFfYWxsb2MoeGEsIGlkLCBlbnRyeSwgbGltaXQsIGdm cCk7CiBzcGluX3VubG9ja19iaCgmKHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVycjsKfQojIDkx MCAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIHhhX2FsbG9jX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwK ICB2b2lkICplbnRyeSwgc3RydWN0IHhhX2xpbWl0IGxpbWl0LCBnZnBfdCBnZnApCnsKIGludCBl cnI7Cgogc3Bpbl9sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CiBlcnIgPSBfX3hhX2FsbG9jKHhh LCBpZCwgZW50cnksIGxpbWl0LCBnZnApOwogc3Bpbl91bmxvY2tfaXJxKCYoeGEpLT54YV9sb2Nr KTsKCiByZXR1cm4gZXJyOwp9CiMgOTQzICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB4 YV9hbGxvY19jeWNsaWMoc3RydWN0IHhhcnJheSAqeGEsIHUzMiAqaWQsIHZvaWQgKmVudHJ5LAog IHN0cnVjdCB4YV9saW1pdCBsaW1pdCwgdTMyICpuZXh0LCBnZnBfdCBnZnApCnsKIGludCBlcnI7 Cgogc3Bpbl9sb2NrKCYoeGEpLT54YV9sb2NrKTsKIGVyciA9IF9feGFfYWxsb2NfY3ljbGljKHhh LCBpZCwgZW50cnksIGxpbWl0LCBuZXh0LCBnZnApOwogc3Bpbl91bmxvY2soJih4YSktPnhhX2xv Y2spOwoKIHJldHVybiBlcnI7Cn0KIyA5NzYgIi4vaW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50 IHhhX2FsbG9jX2N5Y2xpY19iaChzdHJ1Y3QgeGFycmF5ICp4YSwgdTMyICppZCwgdm9pZCAqZW50 cnksCiAgc3RydWN0IHhhX2xpbWl0IGxpbWl0LCB1MzIgKm5leHQsIGdmcF90IGdmcCkKewogaW50 IGVycjsKCiBzcGluX2xvY2tfYmgoJih4YSktPnhhX2xvY2spOwogZXJyID0gX194YV9hbGxvY19j eWNsaWMoeGEsIGlkLCBlbnRyeSwgbGltaXQsIG5leHQsIGdmcCk7CiBzcGluX3VubG9ja19iaCgm KHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVycjsKfQojIDEwMDkgIi4vaW5jbHVkZS9saW51eC94 YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgaW50IHhhX2FsbG9jX2N5Y2xpY19pcnEoc3RydWN0IHhhcnJheSAqeGEsIHUzMiAq aWQsIHZvaWQgKmVudHJ5LAogIHN0cnVjdCB4YV9saW1pdCBsaW1pdCwgdTMyICpuZXh0LCBnZnBf dCBnZnApCnsKIGludCBlcnI7Cgogc3Bpbl9sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CiBlcnIg PSBfX3hhX2FsbG9jX2N5Y2xpYyh4YSwgaWQsIGVudHJ5LCBsaW1pdCwgbmV4dCwgZ2ZwKTsKIHNw aW5fdW5sb2NrX2lycSgmKHhhKS0+eGFfbG9jayk7CgogcmV0dXJuIGVycjsKfQojIDEwMzkgIi4v aW5jbHVkZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1 bHRfXykpCmludCB4YV9yZXNlcnZlKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGlu ZGV4LCBnZnBfdCBnZnApCnsKIHJldHVybiB4YV9lcnIoeGFfY21weGNoZyh4YSwgaW5kZXgsICgo dm9pZCAqKTApLCB4YV9ta19pbnRlcm5hbCgyNTcpLCBnZnApKTsKfQojIDEwNTcgIi4vaW5jbHVk ZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp CmludCB4YV9yZXNlcnZlX2JoKHN0cnVjdCB4YXJyYXkgKnhhLCB1bnNpZ25lZCBsb25nIGluZGV4 LCBnZnBfdCBnZnApCnsKIHJldHVybiB4YV9lcnIoeGFfY21weGNoZ19iaCh4YSwgaW5kZXgsICgo dm9pZCAqKTApLCB4YV9ta19pbnRlcm5hbCgyNTcpLCBnZnApKTsKfQojIDEwNzUgIi4vaW5jbHVk ZS9saW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp CmludCB4YV9yZXNlcnZlX2lycShzdHJ1Y3QgeGFycmF5ICp4YSwgdW5zaWduZWQgbG9uZyBpbmRl eCwgZ2ZwX3QgZ2ZwKQp7CiByZXR1cm4geGFfZXJyKHhhX2NtcHhjaGdfaXJxKHhhLCBpbmRleCwg KCh2b2lkICopMCksIHhhX21rX2ludGVybmFsKDI1NyksIGdmcCkpOwp9CiMgMTA5MCAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHhhX3JlbGVhc2Uoc3RydWN0IHhhcnJheSAqeGEsIHVu c2lnbmVkIGxvbmcgaW5kZXgpCnsKIHhhX2NtcHhjaGcoeGEsIGluZGV4LCB4YV9ta19pbnRlcm5h bCgyNTcpLCAoKHZvaWQgKikwKSwgMCk7Cn0KIyAxMTIyICIuL2luY2x1ZGUvbGludXgveGFycmF5 LmgiCnN0cnVjdCB4YV9ub2RlIHsKIHVuc2lnbmVkIGNoYXIgc2hpZnQ7CiB1bnNpZ25lZCBjaGFy IG9mZnNldDsKIHVuc2lnbmVkIGNoYXIgY291bnQ7CiB1bnNpZ25lZCBjaGFyIG5yX3ZhbHVlczsK IHN0cnVjdCB4YV9ub2RlICpwYXJlbnQ7CiBzdHJ1Y3QgeGFycmF5ICphcnJheTsKIHVuaW9uIHsK ICBzdHJ1Y3QgbGlzdF9oZWFkIHByaXZhdGVfbGlzdDsKICBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCBj YWxsYmFja19oZWFkOwogfTsKIHZvaWQgKnNsb3RzWygxVUwgPDwgKDAgPyA0IDogNikpXTsKIHVu aW9uIHsKICB1bnNpZ25lZCBsb25nIHRhZ3NbM11bKCgoKDFVTCA8PCAoMCA/IDQgOiA2KSkpICsg KDY0KSAtIDEpIC8gKDY0KSldOwogIHVuc2lnbmVkIGxvbmcgbWFya3NbM11bKCgoKDFVTCA8PCAo MCA/IDQgOiA2KSkpICsgKDY0KSAtIDEpIC8gKDY0KSldOwogfTsKfTsKCnZvaWQgeGFfZHVtcChj b25zdCBzdHJ1Y3QgeGFycmF5ICopOwp2b2lkIHhhX2R1bXBfbm9kZShjb25zdCBzdHJ1Y3QgeGFf bm9kZSAqKTsKIyAxMTYyICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX2hlYWQo Y29uc3Qgc3RydWN0IHhhcnJheSAqeGEpCnsKIHJldHVybiAoeyB0eXBlb2YoKih4YS0+eGFfaGVh ZCkpICpfX19fX19fX3AxID0gKHR5cGVvZigqKHhhLT54YV9oZWFkKSkgKikoeyB1bmlvbiB7IHR5 cGVvZigoeGEtPnhhX2hlYWQpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkgX19y ZWFkX29uY2Vfc2l6ZSgmKCh4YS0+eGFfaGVhZCkpLCBfX3UuX19jLCBzaXplb2YoKHhhLT54YV9o ZWFkKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCh4YS0+eGFfaGVhZCkpLCBf X3UuX19jLCBzaXplb2YoKHhhLT54YV9oZWFkKSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192 YWw7IH0pOyBkbyB7IH0gd2hpbGUgKDApOyA7ICgodHlwZW9mKCooeGEtPnhhX2hlYWQpKSAqKShf X19fX19fX3AxKSk7IH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgKnhhX2hlYWRfbG9ja2VkKGNvbnN0IHN0cnVjdCB4YXJyYXkgKnhhKQp7CiByZXR1cm4g KHsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKHhhLT54YV9oZWFkKSkgKikoKHhhLT54 YV9oZWFkKSkpOyB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7Cn0KCgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2 b2lkICp4YV9lbnRyeShjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKICAgIGNvbnN0IHN0cnVjdCB4 YV9ub2RlICpub2RlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQp7CiBkbyB7IH0gd2hpbGUgKDApOwog cmV0dXJuICh7IHR5cGVvZigqKG5vZGUtPnNsb3RzW29mZnNldF0pKSAqX19fX19fX19wMSA9ICh0 eXBlb2YoKihub2RlLT5zbG90c1tvZmZzZXRdKSkgKikoeyB1bmlvbiB7IHR5cGVvZigobm9kZS0+ c2xvdHNbb2Zmc2V0XSkpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRf b25jZV9zaXplKCYoKG5vZGUtPnNsb3RzW29mZnNldF0pKSwgX191Ll9fYywgc2l6ZW9mKChub2Rl LT5zbG90c1tvZmZzZXRdKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChub2Rl LT5zbG90c1tvZmZzZXRdKSksIF9fdS5fX2MsIHNpemVvZigobm9kZS0+c2xvdHNbb2Zmc2V0XSkp KTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAo KHR5cGVvZigqKG5vZGUtPnNsb3RzW29mZnNldF0pKSAqKShfX19fX19fX3AxKSk7IH0pCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKnhhX2VudHJ5X2xvY2tl ZChjb25zdCBzdHJ1Y3QgeGFycmF5ICp4YSwKICAgIGNvbnN0IHN0cnVjdCB4YV9ub2RlICpub2Rl LCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQp7CiBkbyB7IH0gd2hpbGUgKDApOwogcmV0dXJuICh7IGRv IHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihub2RlLT5zbG90c1tvZmZzZXRdKSkgKikoKG5v ZGUtPnNsb3RzW29mZnNldF0pKSk7IH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCB4YV9ub2RlICp4YV9wYXJlbnQoY29uc3Qgc3RydWN0IHhhcnJheSAq eGEsCiAgICAgY29uc3Qgc3RydWN0IHhhX25vZGUgKm5vZGUpCnsKIHJldHVybiAoeyB0eXBlb2Yo Kihub2RlLT5wYXJlbnQpKSAqX19fX19fX19wMSA9ICh0eXBlb2YoKihub2RlLT5wYXJlbnQpKSAq KSh7IHVuaW9uIHsgdHlwZW9mKChub2RlLT5wYXJlbnQpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0g X191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKChub2RlLT5wYXJlbnQpKSwgX191Ll9fYywg c2l6ZW9mKChub2RlLT5wYXJlbnQpKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYo KG5vZGUtPnBhcmVudCkpLCBfX3UuX19jLCBzaXplb2YoKG5vZGUtPnBhcmVudCkpKTsgZG8geyB9 IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigq KG5vZGUtPnBhcmVudCkpICopKF9fX19fX19fcDEpKTsgfSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHhhX25vZGUgKnhhX3BhcmVudF9sb2NrZWQoY29u c3Qgc3RydWN0IHhhcnJheSAqeGEsCiAgICAgY29uc3Qgc3RydWN0IHhhX25vZGUgKm5vZGUpCnsK IHJldHVybiAoeyBkbyB7IH0gd2hpbGUgKDApOyA7ICgodHlwZW9mKCoobm9kZS0+cGFyZW50KSkg KikoKG5vZGUtPnBhcmVudCkpKTsgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCAqeGFfbWtfbm9kZShjb25zdCBzdHJ1Y3QgeGFfbm9kZSAqbm9kZSkKewog cmV0dXJuICh2b2lkICopKCh1bnNpZ25lZCBsb25nKW5vZGUgfCAyKTsKfQoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB4YV9u b2RlICp4YV90b19ub2RlKGNvbnN0IHZvaWQgKmVudHJ5KQp7CiByZXR1cm4gKHN0cnVjdCB4YV9u b2RlICopKCh1bnNpZ25lZCBsb25nKWVudHJ5IC0gMik7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX25vZGUoY29u c3Qgdm9pZCAqZW50cnkpCnsKIHJldHVybiB4YV9pc19pbnRlcm5hbChlbnRyeSkgJiYgKHVuc2ln bmVkIGxvbmcpZW50cnkgPiA0MDk2Owp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqeGFfbWtfc2libGluZyh1bnNpZ25lZCBp bnQgb2Zmc2V0KQp7CiByZXR1cm4geGFfbWtfaW50ZXJuYWwob2Zmc2V0KTsKfQoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVk IGxvbmcgeGFfdG9fc2libGluZyhjb25zdCB2b2lkICplbnRyeSkKewogcmV0dXJuIHhhX3RvX2lu dGVybmFsKGVudHJ5KTsKfQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YV9pc19zaWJsaW5nKGNvbnN0IHZvaWQgKmVu dHJ5KQp7CiByZXR1cm4gMSAmJiB4YV9pc19pbnRlcm5hbChlbnRyeSkgJiYKICAoZW50cnkgPCB4 YV9ta19zaWJsaW5nKCgxVUwgPDwgKDAgPyA0IDogNikpIC0gMSkpOwp9CiMgMTI1OSAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhX2lzX3JldHJ5KGNvbnN0IHZvaWQgKmVudHJ5KQp7 CiByZXR1cm4gX19idWlsdGluX2V4cGVjdCghIShlbnRyeSA9PSB4YV9ta19pbnRlcm5hbCgyNTYp KSwgMCk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgeGFfaXNfYWR2YW5jZWQoY29uc3Qgdm9pZCAqZW50cnkpCnsK IHJldHVybiB4YV9pc19pbnRlcm5hbChlbnRyeSkgJiYgKGVudHJ5IDw9IHhhX21rX2ludGVybmFs KDI1NikpOwp9CiMgMTI4NyAiLi9pbmNsdWRlL2xpbnV4L3hhcnJheS5oIgp0eXBlZGVmIHZvaWQg KCp4YV91cGRhdGVfbm9kZV90KShzdHJ1Y3QgeGFfbm9kZSAqbm9kZSk7CiMgMTMwNiAiLi9pbmNs dWRlL2xpbnV4L3hhcnJheS5oIgpzdHJ1Y3QgeGFfc3RhdGUgewogc3RydWN0IHhhcnJheSAqeGE7 CiB1bnNpZ25lZCBsb25nIHhhX2luZGV4OwogdW5zaWduZWQgY2hhciB4YV9zaGlmdDsKIHVuc2ln bmVkIGNoYXIgeGFfc2liczsKIHVuc2lnbmVkIGNoYXIgeGFfb2Zmc2V0OwogdW5zaWduZWQgY2hh ciB4YV9wYWQ7CiBzdHJ1Y3QgeGFfbm9kZSAqeGFfbm9kZTsKIHN0cnVjdCB4YV9ub2RlICp4YV9h bGxvYzsKIHhhX3VwZGF0ZV9ub2RlX3QgeGFfdXBkYXRlOwp9OwojIDEzODUgIi4vaW5jbHVkZS9s aW51eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHhhc19lcnJvcihjb25zdCBzdHJ1Y3QgeGFfc3RhdGUgKnhhcykK ewogcmV0dXJuIHhhX2Vycih4YXMtPnhhX25vZGUpOwp9CiMgMTM5OSAiLi9pbmNsdWRlL2xpbnV4 L3hhcnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIHhhc19zZXRfZXJyKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBsb25nIGVy cikKewogeGFzLT54YV9ub2RlID0gKChzdHJ1Y3QgeGFfbm9kZSAqKSgoKHVuc2lnbmVkIGxvbmcp ZXJyIDw8IDIpIHwgMlVMKSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgeGFzX2ludmFsaWQoY29uc3Qgc3RydWN0 IHhhX3N0YXRlICp4YXMpCnsKIHJldHVybiAodW5zaWduZWQgbG9uZyl4YXMtPnhhX25vZGUgJiAz Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBib29sIHhhc192YWxpZChjb25zdCBzdHJ1Y3QgeGFfc3RhdGUgKnhhcykKewog cmV0dXJuICF4YXNfaW52YWxpZCh4YXMpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHhhc19pc19ub2RlKGNvbnN0 IHN0cnVjdCB4YV9zdGF0ZSAqeGFzKQp7CiByZXR1cm4geGFzX3ZhbGlkKHhhcykgJiYgeGFzLT54 YV9ub2RlOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCB4YXNfbm90X25vZGUoc3RydWN0IHhhX25vZGUgKm5vZGUpCnsKIHJl dHVybiAoKHVuc2lnbmVkIGxvbmcpbm9kZSAmIDMpIHx8ICFub2RlOwp9CgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB4YXNfZnJv emVuKHN0cnVjdCB4YV9ub2RlICpub2RlKQp7CiByZXR1cm4gKHVuc2lnbmVkIGxvbmcpbm9kZSAm IDI7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIHhhc190b3Aoc3RydWN0IHhhX25vZGUgKm5vZGUpCnsKIHJldHVybiBub2Rl IDw9ICgoc3RydWN0IHhhX25vZGUgKikzVUwpOwp9CiMgMTQ2NSAiLi9pbmNsdWRlL2xpbnV4L3hh cnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHhhc19yZXNldChzdHJ1Y3QgeGFfc3RhdGUgKnhhcykKewogeGFzLT54YV9u b2RlID0gKChzdHJ1Y3QgeGFfbm9kZSAqKTNVTCk7Cn0KIyAxNDgyICIuL2luY2x1ZGUvbGludXgv eGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgeGFzX3JldHJ5KHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBjb25zdCB2b2lk ICplbnRyeSkKewogaWYgKHhhX2lzX3plcm8oZW50cnkpKQogIHJldHVybiB0cnVlOwogaWYgKCF4 YV9pc19yZXRyeShlbnRyeSkpCiAgcmV0dXJuIGZhbHNlOwogeGFzX3Jlc2V0KHhhcyk7CiByZXR1 cm4gdHJ1ZTsKfQoKdm9pZCAqeGFzX2xvYWQoc3RydWN0IHhhX3N0YXRlICopOwp2b2lkICp4YXNf c3RvcmUoc3RydWN0IHhhX3N0YXRlICosIHZvaWQgKmVudHJ5KTsKdm9pZCAqeGFzX2ZpbmQoc3Ry dWN0IHhhX3N0YXRlICosIHVuc2lnbmVkIGxvbmcgbWF4KTsKdm9pZCAqeGFzX2ZpbmRfY29uZmxp Y3Qoc3RydWN0IHhhX3N0YXRlICopOwoKYm9vbCB4YXNfZ2V0X21hcmsoY29uc3Qgc3RydWN0IHhh X3N0YXRlICosIHhhX21hcmtfdCk7CnZvaWQgeGFzX3NldF9tYXJrKGNvbnN0IHN0cnVjdCB4YV9z dGF0ZSAqLCB4YV9tYXJrX3QpOwp2b2lkIHhhc19jbGVhcl9tYXJrKGNvbnN0IHN0cnVjdCB4YV9z dGF0ZSAqLCB4YV9tYXJrX3QpOwp2b2lkICp4YXNfZmluZF9tYXJrZWQoc3RydWN0IHhhX3N0YXRl ICosIHVuc2lnbmVkIGxvbmcgbWF4LCB4YV9tYXJrX3QpOwp2b2lkIHhhc19pbml0X21hcmtzKGNv bnN0IHN0cnVjdCB4YV9zdGF0ZSAqKTsKCmJvb2wgeGFzX25vbWVtKHN0cnVjdCB4YV9zdGF0ZSAq LCBnZnBfdCk7CnZvaWQgeGFzX3BhdXNlKHN0cnVjdCB4YV9zdGF0ZSAqKTsKCnZvaWQgeGFzX2Ny ZWF0ZV9yYW5nZShzdHJ1Y3QgeGFfc3RhdGUgKik7CiMgMTUyMiAiLi9pbmNsdWRlL2xpbnV4L3hh cnJheS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkICp4YXNfcmVsb2FkKHN0cnVjdCB4YV9zdGF0ZSAqeGFzKQp7CiBzdHJ1Y3Qg eGFfbm9kZSAqbm9kZSA9IHhhcy0+eGFfbm9kZTsKCiBpZiAobm9kZSkKICByZXR1cm4geGFfZW50 cnkoeGFzLT54YSwgbm9kZSwgeGFzLT54YV9vZmZzZXQpOwogcmV0dXJuIHhhX2hlYWQoeGFzLT54 YSk7Cn0KIyAxNTQwICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgeGFzX3NldChzdHJ1 Y3QgeGFfc3RhdGUgKnhhcywgdW5zaWduZWQgbG9uZyBpbmRleCkKewogeGFzLT54YV9pbmRleCA9 IGluZGV4OwogeGFzLT54YV9ub2RlID0gKChzdHJ1Y3QgeGFfbm9kZSAqKTNVTCk7Cn0KCgoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgeGFzX3NldF9vcmRlcihzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgdW5zaWduZWQgbG9uZyBp bmRleCwKICAgICB1bnNpZ25lZCBpbnQgb3JkZXIpCnsKCiB4YXMtPnhhX2luZGV4ID0gb3JkZXIg PCA2NCA/IChpbmRleCA+PiBvcmRlcikgPDwgb3JkZXIgOiAwOwogeGFzLT54YV9zaGlmdCA9IG9y ZGVyIC0gKG9yZGVyICUgKDAgPyA0IDogNikpOwogeGFzLT54YV9zaWJzID0gKDEgPDwgKG9yZGVy ICUgKDAgPyA0IDogNikpKSAtIDE7CiB4YXMtPnhhX25vZGUgPSAoKHN0cnVjdCB4YV9ub2RlICop M1VMKTsKCgoKCn0KIyAxNTc0ICIuL2luY2x1ZGUvbGludXgveGFycmF5LmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgeGFzX3Nl dF91cGRhdGUoc3RydWN0IHhhX3N0YXRlICp4YXMsIHhhX3VwZGF0ZV9ub2RlX3QgdXBkYXRlKQp7 CiB4YXMtPnhhX3VwZGF0ZSA9IHVwZGF0ZTsKfQojIDE1OTAgIi4vaW5jbHVkZS9saW51eC94YXJy YXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCAqeGFzX25leHRfZW50cnkoc3RydWN0IHhhX3N0YXRlICp4YXMsIHVuc2lnbmVk IGxvbmcgbWF4KQp7CiBzdHJ1Y3QgeGFfbm9kZSAqbm9kZSA9IHhhcy0+eGFfbm9kZTsKIHZvaWQg KmVudHJ5OwoKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHhhc19ub3Rfbm9kZShub2RlKSB8fCBu b2RlLT5zaGlmdCB8fCB4YXMtPnhhX29mZnNldCAhPSAoeGFzLT54YV9pbmRleCAmICgoMVVMIDw8 ICgwID8gNCA6IDYpKSAtIDEpKSksIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQogIHJldHVybiB4YXNfZmluZCh4YXMsIG1heCk7CgogZG8g ewogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKHhhcy0+eGFfaW5kZXggPj0gbWF4KSwgMCkpCiAg IHJldHVybiB4YXNfZmluZCh4YXMsIG1heCk7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFz LT54YV9vZmZzZXQgPT0gKCgxVUwgPDwgKDAgPyA0IDogNikpIC0gMSkpLCAwKSkKICAgcmV0dXJu IHhhc19maW5kKHhhcywgbWF4KTsKICBlbnRyeSA9IHhhX2VudHJ5KHhhcy0+eGEsIG5vZGUsIHhh cy0+eGFfb2Zmc2V0ICsgMSk7CiAgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoeGFfaXNfaW50ZXJu YWwoZW50cnkpKSwgMCkpCiAgIHJldHVybiB4YXNfZmluZCh4YXMsIG1heCk7CiAgeGFzLT54YV9v ZmZzZXQrKzsKICB4YXMtPnhhX2luZGV4Kys7CiB9IHdoaWxlICghZW50cnkpOwoKIHJldHVybiBl bnRyeTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHVuc2lnbmVkIGludCB4YXNfZmluZF9jaHVuayhzdHJ1Y3QgeGFfc3RhdGUgKnhh cywgYm9vbCBhZHZhbmNlLAogIHhhX21hcmtfdCBtYXJrKQp7CiB1bnNpZ25lZCBsb25nICphZGRy ID0geGFzLT54YV9ub2RlLT5tYXJrc1soIHVuc2lnbmVkKW1hcmtdOwogdW5zaWduZWQgaW50IG9m ZnNldCA9IHhhcy0+eGFfb2Zmc2V0OwoKIGlmIChhZHZhbmNlKQogIG9mZnNldCsrOwogaWYgKCgx VUwgPDwgKDAgPyA0IDogNikpID09IDY0KSB7CiAgaWYgKG9mZnNldCA8ICgxVUwgPDwgKDAgPyA0 IDogNikpKSB7CiAgIHVuc2lnbmVkIGxvbmcgZGF0YSA9ICphZGRyICYgKH4wVUwgPDwgb2Zmc2V0 KTsKICAgaWYgKGRhdGEpCiAgICByZXR1cm4gX19mZnMoZGF0YSk7CiAgfQogIHJldHVybiAoMVVM IDw8ICgwID8gNCA6IDYpKTsKIH0KCiByZXR1cm4gZmluZF9uZXh0X2JpdChhZGRyLCAoMVVMIDw8 ICgwID8gNCA6IDYpKSwgb2Zmc2V0KTsKfQojIDE2NDcgIi4vaW5jbHVkZS9saW51eC94YXJyYXku aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqeGFzX25leHRfbWFya2VkKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCB1bnNpZ25lZCBs b25nIG1heCwKICAgICAgICB4YV9tYXJrX3QgbWFyaykKewogc3RydWN0IHhhX25vZGUgKm5vZGUg PSB4YXMtPnhhX25vZGU7CiB1bnNpZ25lZCBpbnQgb2Zmc2V0OwoKIGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKHhhc19ub3Rfbm9kZShub2RlKSB8fCBub2RlLT5zaGlmdCksIDApKQogIHJldHVybiB4 YXNfZmluZF9tYXJrZWQoeGFzLCBtYXgsIG1hcmspOwogb2Zmc2V0ID0geGFzX2ZpbmRfY2h1bmso eGFzLCB0cnVlLCBtYXJrKTsKIHhhcy0+eGFfb2Zmc2V0ID0gb2Zmc2V0OwogeGFzLT54YV9pbmRl eCA9ICh4YXMtPnhhX2luZGV4ICYgfigoMVVMIDw8ICgwID8gNCA6IDYpKSAtIDEpKSArIG9mZnNl dDsKIGlmICh4YXMtPnhhX2luZGV4ID4gbWF4KQogIHJldHVybiAoKHZvaWQgKikwKTsKIGlmIChv ZmZzZXQgPT0gKDFVTCA8PCAoMCA/IDQgOiA2KSkpCiAgcmV0dXJuIHhhc19maW5kX21hcmtlZCh4 YXMsIG1heCwgbWFyayk7CiByZXR1cm4geGFfZW50cnkoeGFzLT54YSwgbm9kZSwgb2Zmc2V0KTsK fQoKCgoKCmVudW0gewogWEFfQ0hFQ0tfU0NIRUQgPSA0MDk2LAp9OwojIDE3MjQgIi4vaW5jbHVk ZS9saW51eC94YXJyYXkuaCIKdm9pZCAqX194YXNfbmV4dChzdHJ1Y3QgeGFfc3RhdGUgKik7CnZv aWQgKl9feGFzX3ByZXYoc3RydWN0IHhhX3N0YXRlICopOwojIDE3NDMgIi4vaW5jbHVkZS9saW51 eC94YXJyYXkuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCAqeGFzX3ByZXYoc3RydWN0IHhhX3N0YXRlICp4YXMpCnsKIHN0cnVj dCB4YV9ub2RlICpub2RlID0geGFzLT54YV9ub2RlOwoKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KHhhc19ub3Rfbm9kZShub2RlKSB8fCBub2RlLT5zaGlmdCB8fCB4YXMtPnhhX29mZnNldCA9PSAw KSwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgKQogIHJldHVybiBfX3hhc19wcmV2KHhhcyk7 CgogeGFzLT54YV9pbmRleC0tOwogeGFzLT54YV9vZmZzZXQtLTsKIHJldHVybiB4YV9lbnRyeSh4 YXMtPnhhLCBub2RlLCB4YXMtPnhhX29mZnNldCk7Cn0KIyAxNzcyICIuL2luY2x1ZGUvbGludXgv eGFycmF5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgKnhhc19uZXh0KHN0cnVjdCB4YV9zdGF0ZSAqeGFzKQp7CiBzdHJ1Y3Qg eGFfbm9kZSAqbm9kZSA9IHhhcy0+eGFfbm9kZTsKCiBpZiAoX19idWlsdGluX2V4cGVjdCghISh4 YXNfbm90X25vZGUobm9kZSkgfHwgbm9kZS0+c2hpZnQgfHwgeGFzLT54YV9vZmZzZXQgPT0gKCgx VUwgPDwgKDAgPyA0IDogNikpIC0gMSkpLCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCiAgcmV0dXJuIF9feGFzX25leHQoeGFzKTsKCiB4YXMtPnhhX2luZGV4Kys7CiB4 YXMtPnhhX29mZnNldCsrOwogcmV0dXJuIHhhX2VudHJ5KHhhcy0+eGEsIG5vZGUsIHhhcy0+eGFf b2Zmc2V0KTsKfQojIDE5ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIiAyCiMgNDMgIi4v aW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcmFkaXhfdHJlZV9pc19pbnRlcm5hbF9u b2RlKHZvaWQgKnB0cikKewogcmV0dXJuICgodW5zaWduZWQgbG9uZylwdHIgJiAzVUwpID09CiAg ICAyVUw7Cn0KIyA3NCAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCByYWRpeF90 cmVlX2VtcHR5KGNvbnN0IHN0cnVjdCB4YXJyYXkgKnJvb3QpCnsKIHJldHVybiByb290LT54YV9o ZWFkID09ICgodm9pZCAqKTApOwp9CiMgOTQgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgi CnN0cnVjdCByYWRpeF90cmVlX2l0ZXIgewogdW5zaWduZWQgbG9uZyBpbmRleDsKIHVuc2lnbmVk IGxvbmcgbmV4dF9pbmRleDsKIHVuc2lnbmVkIGxvbmcgdGFnczsKIHN0cnVjdCB4YV9ub2RlICpu b2RlOwp9OwojIDE2NSAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqcmFkaXhf dHJlZV9kZXJlZl9zbG90KHZvaWQgKipzbG90KQp7CiByZXR1cm4gKHsgdHlwZW9mKCooKnNsb3Qp KSAqX19fX19fX19wMSA9ICh0eXBlb2YoKigqc2xvdCkpICopKHsgdW5pb24geyB0eXBlb2YoKCpz bG90KSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUo JigoKnNsb3QpKSwgX191Ll9fYywgc2l6ZW9mKCgqc2xvdCkpKTsgZWxzZSBfX3JlYWRfb25jZV9z aXplX25vY2hlY2soJigoKnNsb3QpKSwgX191Ll9fYywgc2l6ZW9mKCgqc2xvdCkpKTsgZG8geyB9 IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9IHdoaWxlICgwKTsgOyAoKHR5cGVvZigq KCpzbG90KSkgKikoX19fX19fX19wMSkpOyB9KTsKfQojIDE3OSAiLi9pbmNsdWRlL2xpbnV4L3Jh ZGl4LXRyZWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCAqcmFkaXhfdHJlZV9kZXJlZl9zbG90X3Byb3RlY3RlZCh2b2lkICoq c2xvdCwKICAgICAgIHNwaW5sb2NrX3QgKnRyZWVsb2NrKQp7CiByZXR1cm4gKHsgZG8geyB9IHdo aWxlICgwKTsgOyAoKHR5cGVvZigqKCpzbG90KSkgKikoKCpzbG90KSkpOyB9KTsKfQojIDE5MiAi Li9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJhZGl4X3RyZWVfZGVyZWZfcmV0cnko dm9pZCAqYXJnKQp7CiByZXR1cm4gX19idWlsdGluX2V4cGVjdCghIShyYWRpeF90cmVlX2lzX2lu dGVybmFsX25vZGUoYXJnKSksIDApOwp9CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCByYWRpeF90cmVlX2V4Y2VwdGlvbih2 b2lkICphcmcpCnsKIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KCEhKCh1bnNpZ25lZCBsb25nKWFy ZyAmIDNVTCksIDApOwp9CgppbnQgcmFkaXhfdHJlZV9pbnNlcnQoc3RydWN0IHhhcnJheSAqLCB1 bnNpZ25lZCBsb25nIGluZGV4LAogICB2b2lkICopOwp2b2lkICpfX3JhZGl4X3RyZWVfbG9va3Vw KGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwgdW5zaWduZWQgbG9uZyBpbmRleCwKICAgICBzdHJ1Y3Qg eGFfbm9kZSAqKm5vZGVwLCB2b2lkICoqKnNsb3RwKTsKdm9pZCAqcmFkaXhfdHJlZV9sb29rdXAo Y29uc3Qgc3RydWN0IHhhcnJheSAqLCB1bnNpZ25lZCBsb25nKTsKdm9pZCAqKnJhZGl4X3RyZWVf bG9va3VwX3Nsb3QoY29uc3Qgc3RydWN0IHhhcnJheSAqLAogICAgIHVuc2lnbmVkIGxvbmcgaW5k ZXgpOwp2b2lkIF9fcmFkaXhfdHJlZV9yZXBsYWNlKHN0cnVjdCB4YXJyYXkgKiwgc3RydWN0IHhh X25vZGUgKiwKICAgICB2b2lkICoqc2xvdCwgdm9pZCAqZW50cnkpOwp2b2lkIHJhZGl4X3RyZWVf aXRlcl9yZXBsYWNlKHN0cnVjdCB4YXJyYXkgKiwKICBjb25zdCBzdHJ1Y3QgcmFkaXhfdHJlZV9p dGVyICosIHZvaWQgKipzbG90LCB2b2lkICplbnRyeSk7CnZvaWQgcmFkaXhfdHJlZV9yZXBsYWNl X3Nsb3Qoc3RydWN0IHhhcnJheSAqLAogICAgICAgIHZvaWQgKipzbG90LCB2b2lkICplbnRyeSk7 CnZvaWQgcmFkaXhfdHJlZV9pdGVyX2RlbGV0ZShzdHJ1Y3QgeGFycmF5ICosCiAgIHN0cnVjdCBy YWRpeF90cmVlX2l0ZXIgKml0ZXIsIHZvaWQgKipzbG90KTsKdm9pZCAqcmFkaXhfdHJlZV9kZWxl dGVfaXRlbShzdHJ1Y3QgeGFycmF5ICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CnZvaWQgKnJh ZGl4X3RyZWVfZGVsZXRlKHN0cnVjdCB4YXJyYXkgKiwgdW5zaWduZWQgbG9uZyk7CnVuc2lnbmVk IGludCByYWRpeF90cmVlX2dhbmdfbG9va3VwKGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwKICAgdm9p ZCAqKnJlc3VsdHMsIHVuc2lnbmVkIGxvbmcgZmlyc3RfaW5kZXgsCiAgIHVuc2lnbmVkIGludCBt YXhfaXRlbXMpOwppbnQgcmFkaXhfdHJlZV9wcmVsb2FkKGdmcF90IGdmcF9tYXNrKTsKaW50IHJh ZGl4X3RyZWVfbWF5YmVfcHJlbG9hZChnZnBfdCBnZnBfbWFzayk7CnZvaWQgcmFkaXhfdHJlZV9p bml0KHZvaWQpOwp2b2lkICpyYWRpeF90cmVlX3RhZ19zZXQoc3RydWN0IHhhcnJheSAqLAogICB1 bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBpbnQgdGFnKTsKdm9pZCAqcmFkaXhfdHJlZV90 YWdfY2xlYXIoc3RydWN0IHhhcnJheSAqLAogICB1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25l ZCBpbnQgdGFnKTsKaW50IHJhZGl4X3RyZWVfdGFnX2dldChjb25zdCBzdHJ1Y3QgeGFycmF5ICos CiAgIHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGludCB0YWcpOwp2b2lkIHJhZGl4X3Ry ZWVfaXRlcl90YWdfY2xlYXIoc3RydWN0IHhhcnJheSAqLAogIGNvbnN0IHN0cnVjdCByYWRpeF90 cmVlX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGludCB0YWcpOwp1bnNpZ25lZCBpbnQgcmFkaXhfdHJl ZV9nYW5nX2xvb2t1cF90YWcoY29uc3Qgc3RydWN0IHhhcnJheSAqLAogIHZvaWQgKipyZXN1bHRz LCB1bnNpZ25lZCBsb25nIGZpcnN0X2luZGV4LAogIHVuc2lnbmVkIGludCBtYXhfaXRlbXMsIHVu c2lnbmVkIGludCB0YWcpOwp1bnNpZ25lZCBpbnQgcmFkaXhfdHJlZV9nYW5nX2xvb2t1cF90YWdf c2xvdChjb25zdCBzdHJ1Y3QgeGFycmF5ICosCiAgdm9pZCAqKipyZXN1bHRzLCB1bnNpZ25lZCBs b25nIGZpcnN0X2luZGV4LAogIHVuc2lnbmVkIGludCBtYXhfaXRlbXMsIHVuc2lnbmVkIGludCB0 YWcpOwppbnQgcmFkaXhfdHJlZV90YWdnZWQoY29uc3Qgc3RydWN0IHhhcnJheSAqLCB1bnNpZ25l ZCBpbnQgdGFnKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgcmFkaXhfdHJlZV9wcmVsb2FkX2VuZCh2b2lkKQp7CiBfX2FzbV9f IF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwp9Cgp2b2lkICoqaWRyX2dldF9mcmVlKHN0 cnVjdCB4YXJyYXkgKnJvb3QsCiAgICAgICAgIHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIs IGdmcF90IGdmcCwKICAgICAgICAgdW5zaWduZWQgbG9uZyBtYXgpOwoKZW51bSB7CiBSQURJWF9U UkVFX0lURVJfVEFHX01BU0sgPSAweDBmLAogUkFESVhfVFJFRV9JVEVSX1RBR0dFRCA9IDB4MTAs CiBSQURJWF9UUkVFX0lURVJfQ09OVElHID0gMHgyMCwKfTsKIyAyNjggIi4vaW5jbHVkZS9saW51 eC9yYWRpeC10cmVlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCAq KgpyYWRpeF90cmVlX2l0ZXJfaW5pdChzdHJ1Y3QgcmFkaXhfdHJlZV9pdGVyICppdGVyLCB1bnNp Z25lZCBsb25nIHN0YXJ0KQp7CiMgMjc5ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgog aXRlci0+aW5kZXggPSAwOwogaXRlci0+bmV4dF9pbmRleCA9IHN0YXJ0OwogcmV0dXJuICgodm9p ZCAqKTApOwp9CiMgMjk3ICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgp2b2lkICoqcmFk aXhfdHJlZV9uZXh0X2NodW5rKGNvbnN0IHN0cnVjdCB4YXJyYXkgKiwKICAgICAgICBzdHJ1Y3Qg cmFkaXhfdHJlZV9pdGVyICppdGVyLCB1bnNpZ25lZCBmbGFncyk7CiMgMzEwICIuL2luY2x1ZGUv bGludXgvcmFkaXgtdHJlZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICoqCnJhZGl4X3RyZWVfaXRlcl9sb29rdXAoY29uc3Qg c3RydWN0IHhhcnJheSAqcm9vdCwKICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlciwgdW5z aWduZWQgbG9uZyBpbmRleCkKewogcmFkaXhfdHJlZV9pdGVyX2luaXQoaXRlciwgaW5kZXgpOwog cmV0dXJuIHJhZGl4X3RyZWVfbmV4dF9jaHVuayhyb290LCBpdGVyLCBSQURJWF9UUkVFX0lURVJf Q09OVElHKTsKfQojIDMyNyAiLi9pbmNsdWRlL2xpbnV4L3JhZGl4LXRyZWUuaCIKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgX19hdHRyaWJ1 dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCnZvaWQgKipyYWRpeF90cmVlX2l0ZXJfcmV0 cnkoc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlcikKewogaXRlci0+bmV4dF9pbmRleCA9IGl0 ZXItPmluZGV4OwogaXRlci0+dGFncyA9IDA7CiByZXR1cm4gKCh2b2lkICopMCk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGxvbmcKX19yYWRpeF90cmVlX2l0ZXJfYWRkKHN0cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0 ZXIsIHVuc2lnbmVkIGxvbmcgc2xvdHMpCnsKIHJldHVybiBpdGVyLT5pbmRleCArIHNsb3RzOwp9 CiMgMzUxICIuL2luY2x1ZGUvbGludXgvcmFkaXgtdHJlZS5oIgp2b2lkICoqX19hdHRyaWJ1dGVf XygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHJhZGl4X3RyZWVfaXRlcl9yZXN1bWUodm9pZCAq KnNsb3QsCiAgICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlcik7CgoKCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGxvbmcKcmFkaXhfdHJlZV9jaHVua19zaXplKHN0 cnVjdCByYWRpeF90cmVlX2l0ZXIgKml0ZXIpCnsKIHJldHVybiBpdGVyLT5uZXh0X2luZGV4IC0g aXRlci0+aW5kZXg7Cn0KIyAzODUgIi4vaW5jbHVkZS9saW51eC9yYWRpeC10cmVlLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkgdm9pZCAqKnJhZGl4X3RyZWVfbmV4dF9zbG90 KHZvaWQgKipzbG90LAogICAgc3RydWN0IHJhZGl4X3RyZWVfaXRlciAqaXRlciwgdW5zaWduZWQg ZmxhZ3MpCnsKIGlmIChmbGFncyAmIFJBRElYX1RSRUVfSVRFUl9UQUdHRUQpIHsKICBpdGVyLT50 YWdzID4+PSAxOwogIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKCFpdGVyLT50YWdzKSwgMCkpCiAg IHJldHVybiAoKHZvaWQgKikwKTsKICBpZiAoX19idWlsdGluX2V4cGVjdCghIShpdGVyLT50YWdz ICYgMXVsKSwgMSkpIHsKICAgaXRlci0+aW5kZXggPSBfX3JhZGl4X3RyZWVfaXRlcl9hZGQoaXRl ciwgMSk7CiAgIHNsb3QrKzsKICAgZ290byBmb3VuZDsKICB9CiAgaWYgKCEoZmxhZ3MgJiBSQURJ WF9UUkVFX0lURVJfQ09OVElHKSkgewogICB1bnNpZ25lZCBvZmZzZXQgPSBfX2ZmcyhpdGVyLT50 YWdzKTsKCiAgIGl0ZXItPnRhZ3MgPj49IG9mZnNldCsrOwogICBpdGVyLT5pbmRleCA9IF9fcmFk aXhfdHJlZV9pdGVyX2FkZChpdGVyLCBvZmZzZXQpOwogICBzbG90ICs9IG9mZnNldDsKICAgZ290 byBmb3VuZDsKICB9CiB9IGVsc2UgewogIGxvbmcgY291bnQgPSByYWRpeF90cmVlX2NodW5rX3Np emUoaXRlcik7CgogIHdoaWxlICgtLWNvdW50ID4gMCkgewogICBzbG90Kys7CiAgIGl0ZXItPmlu ZGV4ID0gX19yYWRpeF90cmVlX2l0ZXJfYWRkKGl0ZXIsIDEpOwoKICAgaWYgKF9fYnVpbHRpbl9l eHBlY3QoISEoKnNsb3QpLCAxKSkKICAgIGdvdG8gZm91bmQ7CiAgIGlmIChmbGFncyAmIFJBRElY X1RSRUVfSVRFUl9DT05USUcpIHsKCiAgICBpdGVyLT5uZXh0X2luZGV4ID0gMDsKICAgIGJyZWFr OwogICB9CiAgfQogfQogcmV0dXJuICgodm9pZCAqKTApOwoKIGZvdW5kOgogcmV0dXJuIHNsb3Q7 Cn0KIyAxNiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCgoKIyAxICIuL2luY2x1ZGUvbGludXgv cGlkLmgiIDEKIyA5ICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCmVudW0gcGlkX3R5cGUKewogUElE VFlQRV9QSUQsCiBQSURUWVBFX1RHSUQsCiBQSURUWVBFX1BHSUQsCiBQSURUWVBFX1NJRCwKIFBJ RFRZUEVfTUFYLAp9OwojIDU0ICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCnN0cnVjdCB1cGlkIHsK IGludCBucjsKIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpuczsKfTsKCnN0cnVjdCBwaWQKewogcmVm Y291bnRfdCBjb3VudDsKIHVuc2lnbmVkIGludCBsZXZlbDsKCiBzdHJ1Y3QgaGxpc3RfaGVhZCB0 YXNrc1tQSURUWVBFX01BWF07Cgogd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9waWRmZDsKIHN0cnVj dCBjYWxsYmFja19oZWFkIHJjdTsKIHN0cnVjdCB1cGlkIG51bWJlcnNbMV07Cn07CgpleHRlcm4g c3RydWN0IHBpZCBpbml0X3N0cnVjdF9waWQ7CgpleHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3Bl cmF0aW9ucyBwaWRmZF9mb3BzOwoKc3RydWN0IGZpbGU7CgpleHRlcm4gc3RydWN0IHBpZCAqcGlk ZmRfcGlkKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwaWQgKmdldF9waWQoc3Ry dWN0IHBpZCAqcGlkKQp7CiBpZiAocGlkKQogIHJlZmNvdW50X2luYygmcGlkLT5jb3VudCk7CiBy ZXR1cm4gcGlkOwp9CgpleHRlcm4gdm9pZCBwdXRfcGlkKHN0cnVjdCBwaWQgKnBpZCk7CmV4dGVy biBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpZF90YXNrKHN0cnVjdCBwaWQgKnBpZCwgZW51bSBwaWRf dHlwZSk7CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgcGlkX2hhc190YXNrKHN0cnVjdCBwaWQgKnBpZCwgZW51bSBwaWRfdHlwZSB0 eXBlKQp7CiByZXR1cm4gIWhsaXN0X2VtcHR5KCZwaWQtPnRhc2tzW3R5cGVdKTsKfQpleHRlcm4g c3RydWN0IHRhc2tfc3RydWN0ICpnZXRfcGlkX3Rhc2soc3RydWN0IHBpZCAqcGlkLCBlbnVtIHBp ZF90eXBlKTsKCmV4dGVybiBzdHJ1Y3QgcGlkICpnZXRfdGFza19waWQoc3RydWN0IHRhc2tfc3Ry dWN0ICp0YXNrLCBlbnVtIHBpZF90eXBlIHR5cGUpOwoKCgoKZXh0ZXJuIHZvaWQgYXR0YWNoX3Bp ZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGVudW0gcGlkX3R5cGUpOwpleHRlcm4gdm9pZCBk ZXRhY2hfcGlkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgZW51bSBwaWRfdHlwZSk7CmV4dGVy biB2b2lkIGNoYW5nZV9waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBlbnVtIHBpZF90eXBl LAogICBzdHJ1Y3QgcGlkICpwaWQpOwpleHRlcm4gdm9pZCB0cmFuc2Zlcl9waWQoc3RydWN0IHRh c2tfc3RydWN0ICpvbGQsIHN0cnVjdCB0YXNrX3N0cnVjdCAqbmV3LAogICAgZW51bSBwaWRfdHlw ZSk7CgpzdHJ1Y3QgcGlkX25hbWVzcGFjZTsKZXh0ZXJuIHN0cnVjdCBwaWRfbmFtZXNwYWNlIGlu aXRfcGlkX25zOwojIDExOCAiLi9pbmNsdWRlL2xpbnV4L3BpZC5oIgpleHRlcm4gc3RydWN0IHBp ZCAqZmluZF9waWRfbnMoaW50IG5yLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpOwpleHRlcm4g c3RydWN0IHBpZCAqZmluZF92cGlkKGludCBucik7CgoKCgpleHRlcm4gc3RydWN0IHBpZCAqZmlu ZF9nZXRfcGlkKGludCBucik7CmV4dGVybiBzdHJ1Y3QgcGlkICpmaW5kX2dlX3BpZChpbnQgbnIs IHN0cnVjdCBwaWRfbmFtZXNwYWNlICopOwoKZXh0ZXJuIHN0cnVjdCBwaWQgKmFsbG9jX3BpZChz dHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMsIHBpZF90ICpzZXRfdGlkLAogICAgICAgIHNpemVfdCBz ZXRfdGlkX3NpemUpOwpleHRlcm4gdm9pZCBmcmVlX3BpZChzdHJ1Y3QgcGlkICpwaWQpOwpleHRl cm4gdm9pZCBkaXNhYmxlX3BpZF9hbGxvY2F0aW9uKHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyk7 CiMgMTQyICIuL2luY2x1ZGUvbGludXgvcGlkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpuc19v Zl9waWQoc3RydWN0IHBpZCAqcGlkKQp7CiBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMgPSAoKHZv aWQgKikwKTsKIGlmIChwaWQpCiAgbnMgPSBwaWQtPm51bWJlcnNbcGlkLT5sZXZlbF0ubnM7CiBy ZXR1cm4gbnM7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXNfY2hpbGRfcmVhcGVyKHN0cnVjdCBwaWQgKnBpZCkK ewogcmV0dXJuIHBpZC0+bnVtYmVyc1twaWQtPmxldmVsXS5uciA9PSAxOwp9CiMgMTcyICIuL2lu Y2x1ZGUvbGludXgvcGlkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHBpZF90IHBpZF9ucihzdHJ1Y3QgcGlkICpwaWQpCnsKIHBpZF90 IG5yID0gMDsKIGlmIChwaWQpCiAgbnIgPSBwaWQtPm51bWJlcnNbMF0ubnI7CiByZXR1cm4gbnI7 Cn0KCnBpZF90IHBpZF9ucl9ucyhzdHJ1Y3QgcGlkICpwaWQsIHN0cnVjdCBwaWRfbmFtZXNwYWNl ICpucyk7CnBpZF90IHBpZF92bnIoc3RydWN0IHBpZCAqcGlkKTsKIyAyMCAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiIDIKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2NhcGFiaWxpdHkuaCIgMQojIDE2 ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4 L2NhcGFiaWxpdHkuaCIgMQojIDM5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9jYXBhYmlsaXR5Lmgi CnR5cGVkZWYgc3RydWN0IF9fdXNlcl9jYXBfaGVhZGVyX3N0cnVjdCB7CiBfX3UzMiB2ZXJzaW9u OwogaW50IHBpZDsKfSAqY2FwX3VzZXJfaGVhZGVyX3Q7Cgp0eXBlZGVmIHN0cnVjdCBfX3VzZXJf Y2FwX2RhdGFfc3RydWN0IHsKICAgICAgICBfX3UzMiBlZmZlY3RpdmU7CiAgICAgICAgX191MzIg cGVybWl0dGVkOwogICAgICAgIF9fdTMyIGluaGVyaXRhYmxlOwp9ICpjYXBfdXNlcl9kYXRhX3Q7 CiMgNzIgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2NhcGFiaWxpdHkuaCIKc3RydWN0IHZmc19jYXBf ZGF0YSB7CiBfX2xlMzIgbWFnaWNfZXRjOwogc3RydWN0IHsKICBfX2xlMzIgcGVybWl0dGVkOwog IF9fbGUzMiBpbmhlcml0YWJsZTsKIH0gZGF0YVsyXTsKfTsKCgoKCnN0cnVjdCB2ZnNfbnNfY2Fw X2RhdGEgewogX19sZTMyIG1hZ2ljX2V0YzsKIHN0cnVjdCB7CiAgX19sZTMyIHBlcm1pdHRlZDsK ICBfX2xlMzIgaW5oZXJpdGFibGU7CiB9IGRhdGFbMl07CiBfX2xlMzIgcm9vdGlkOwp9OwojIDE3 ICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0eS5oIiAyCgoKCgoKZXh0ZXJuIGludCBmaWxlX2Nh cHNfZW5hYmxlZDsKCnR5cGVkZWYgc3RydWN0IGtlcm5lbF9jYXBfc3RydWN0IHsKIF9fdTMyIGNh cFsyXTsKfSBrZXJuZWxfY2FwX3Q7CgoKc3RydWN0IGNwdV92ZnNfY2FwX2RhdGEgewogX191MzIg bWFnaWNfZXRjOwoga2VybmVsX2NhcF90IHBlcm1pdHRlZDsKIGtlcm5lbF9jYXBfdCBpbmhlcml0 YWJsZTsKIGt1aWRfdCByb290aWQ7Cn07CgoKCgoKc3RydWN0IGZpbGU7CnN0cnVjdCBpbm9kZTsK c3RydWN0IGRlbnRyeTsKc3RydWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3QgdXNlcl9uYW1lc3BhY2U7 CgpleHRlcm4gY29uc3Qga2VybmVsX2NhcF90IF9fY2FwX2VtcHR5X3NldDsKZXh0ZXJuIGNvbnN0 IGtlcm5lbF9jYXBfdCBfX2NhcF9pbml0X2VmZl9zZXQ7CiMgMTE4ICIuL2luY2x1ZGUvbGludXgv Y2FwYWJpbGl0eS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBrZXJuZWxfY2FwX3QgY2FwX2NvbWJpbmUoY29uc3Qga2VybmVsX2NhcF90 IGEsCiAgICAgICAgICAgY29uc3Qga2VybmVsX2NhcF90IGIpCnsKIGtlcm5lbF9jYXBfdCBkZXN0 OwogZG8geyB1bnNpZ25lZCBfX2NhcGk7IGZvciAoX19jYXBpID0gMDsgX19jYXBpIDwgMjsgKytf X2NhcGkpIHsgZGVzdC5jYXBbX19jYXBpXSA9IGEuY2FwW19fY2FwaV0gfCBiLmNhcFtfX2NhcGld OyB9IH0gd2hpbGUgKDApOwogcmV0dXJuIGRlc3Q7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfaW50ZXJz ZWN0KGNvbnN0IGtlcm5lbF9jYXBfdCBhLAogICAgICBjb25zdCBrZXJuZWxfY2FwX3QgYikKewog a2VybmVsX2NhcF90IGRlc3Q7CiBkbyB7IHVuc2lnbmVkIF9fY2FwaTsgZm9yIChfX2NhcGkgPSAw OyBfX2NhcGkgPCAyOyArK19fY2FwaSkgeyBkZXN0LmNhcFtfX2NhcGldID0gYS5jYXBbX19jYXBp XSAmIGIuY2FwW19fY2FwaV07IH0gfSB3aGlsZSAoMCk7CiByZXR1cm4gZGVzdDsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga2VybmVs X2NhcF90IGNhcF9kcm9wKGNvbnN0IGtlcm5lbF9jYXBfdCBhLAogICAgICAgIGNvbnN0IGtlcm5l bF9jYXBfdCBkcm9wKQp7CiBrZXJuZWxfY2FwX3QgZGVzdDsKIGRvIHsgdW5zaWduZWQgX19jYXBp OyBmb3IgKF9fY2FwaSA9IDA7IF9fY2FwaSA8IDI7ICsrX19jYXBpKSB7IGRlc3QuY2FwW19fY2Fw aV0gPSBhLmNhcFtfX2NhcGldICZ+IGRyb3AuY2FwW19fY2FwaV07IH0gfSB3aGlsZSAoMCk7CiBy ZXR1cm4gZGVzdDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkga2VybmVsX2NhcF90IGNhcF9pbnZlcnQoY29uc3Qga2VybmVsX2NhcF90 IGMpCnsKIGtlcm5lbF9jYXBfdCBkZXN0OwogZG8geyB1bnNpZ25lZCBfX2NhcGk7IGZvciAoX19j YXBpID0gMDsgX19jYXBpIDwgMjsgKytfX2NhcGkpIHsgZGVzdC5jYXBbX19jYXBpXSA9IH4gYy5j YXBbX19jYXBpXTsgfSB9IHdoaWxlICgwKTsKIHJldHVybiBkZXN0Owp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGNhcF9pc2Ns ZWFyKGNvbnN0IGtlcm5lbF9jYXBfdCBhKQp7CiB1bnNpZ25lZCBfX2NhcGk7CiBmb3IgKF9fY2Fw aSA9IDA7IF9fY2FwaSA8IDI7ICsrX19jYXBpKSB7CiAgaWYgKGEuY2FwW19fY2FwaV0gIT0gMCkK ICAgcmV0dXJuIGZhbHNlOwogfQogcmV0dXJuIHRydWU7Cn0KIyAxNjYgIi4vaW5jbHVkZS9saW51 eC9jYXBhYmlsaXR5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGJvb2wgY2FwX2lzc3Vic2V0KGNvbnN0IGtlcm5lbF9jYXBfdCBhLCBj b25zdCBrZXJuZWxfY2FwX3Qgc2V0KQp7CiBrZXJuZWxfY2FwX3QgZGVzdDsKIGRlc3QgPSBjYXBf ZHJvcChhLCBzZXQpOwogcmV0dXJuIGNhcF9pc2NsZWFyKGRlc3QpOwp9CgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBf dCBjYXBfZHJvcF9mc19zZXQoY29uc3Qga2VybmVsX2NhcF90IGEpCnsKIGNvbnN0IGtlcm5lbF9j YXBfdCBfX2NhcF9mc19zZXQgPSAoKGtlcm5lbF9jYXBfdCl7eyAoKDEgPDwgKCgwKSAmIDMxKSkg fCAoMSA8PCAoKDI3KSAmIDMxKSkgfCAoMSA8PCAoKDEpICYgMzEpKSB8ICgxIDw8ICgoMikgJiAz MSkpIHwgKDEgPDwgKCgzKSAmIDMxKSkgfCAoMSA8PCAoKDQpICYgMzEpKSkgfCAoMSA8PCAoKDkp ICYgMzEpKSwgKCgxIDw8ICgoMzIpICYgMzEpKSkgfSB9KTsKIHJldHVybiBjYXBfZHJvcChhLCBf X2NhcF9mc19zZXQpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBrZXJuZWxfY2FwX3QgY2FwX3JhaXNlX2ZzX3NldChjb25zdCBrZXJu ZWxfY2FwX3QgYSwKICAgICAgICAgY29uc3Qga2VybmVsX2NhcF90IHBlcm1pdHRlZCkKewogY29u c3Qga2VybmVsX2NhcF90IF9fY2FwX2ZzX3NldCA9ICgoa2VybmVsX2NhcF90KXt7ICgoMSA8PCAo KDApICYgMzEpKSB8ICgxIDw8ICgoMjcpICYgMzEpKSB8ICgxIDw8ICgoMSkgJiAzMSkpIHwgKDEg PDwgKCgyKSAmIDMxKSkgfCAoMSA8PCAoKDMpICYgMzEpKSB8ICgxIDw8ICgoNCkgJiAzMSkpKSB8 ICgxIDw8ICgoOSkgJiAzMSkpLCAoKDEgPDwgKCgzMikgJiAzMSkpKSB9IH0pOwogcmV0dXJuIGNh cF9jb21iaW5lKGEsCiAgICAgIGNhcF9pbnRlcnNlY3QocGVybWl0dGVkLCBfX2NhcF9mc19zZXQp KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkga2VybmVsX2NhcF90IGNhcF9kcm9wX25mc2Rfc2V0KGNvbnN0IGtlcm5lbF9jYXBfdCBh KQp7CiBjb25zdCBrZXJuZWxfY2FwX3QgX19jYXBfZnNfc2V0ID0gKChrZXJuZWxfY2FwX3Qpe3sg KCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwgKCgyNykgJiAzMSkpIHwgKDEgPDwgKCgxKSAmIDMx KSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgxIDw8ICgoMykgJiAzMSkpIHwgKDEgPDwgKCg0KSAm IDMxKSkpIHwgKDEgPDwgKCgyNCkgJiAzMSkpLCAoKDEgPDwgKCgzMikgJiAzMSkpKSB9IH0pOwog cmV0dXJuIGNhcF9kcm9wKGEsIF9fY2FwX2ZzX3NldCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGtlcm5lbF9jYXBfdCBjYXBfcmFp c2VfbmZzZF9zZXQoY29uc3Qga2VybmVsX2NhcF90IGEsCiAgICAgICAgICAgY29uc3Qga2VybmVs X2NhcF90IHBlcm1pdHRlZCkKewogY29uc3Qga2VybmVsX2NhcF90IF9fY2FwX25mc2Rfc2V0ID0g KChrZXJuZWxfY2FwX3Qpe3sgKCgxIDw8ICgoMCkgJiAzMSkpIHwgKDEgPDwgKCgyNykgJiAzMSkp IHwgKDEgPDwgKCgxKSAmIDMxKSkgfCAoMSA8PCAoKDIpICYgMzEpKSB8ICgxIDw8ICgoMykgJiAz MSkpIHwgKDEgPDwgKCg0KSAmIDMxKSkpIHwgKDEgPDwgKCgyNCkgJiAzMSkpLCAoKDEgPDwgKCgz MikgJiAzMSkpKSB9IH0pOwogcmV0dXJuIGNhcF9jb21iaW5lKGEsCiAgICAgIGNhcF9pbnRlcnNl Y3QocGVybWl0dGVkLCBfX2NhcF9uZnNkX3NldCkpOwp9CgoKZXh0ZXJuIGJvb2wgaGFzX2NhcGFi aWxpdHkoc3RydWN0IHRhc2tfc3RydWN0ICp0LCBpbnQgY2FwKTsKZXh0ZXJuIGJvb2wgaGFzX25z X2NhcGFiaWxpdHkoc3RydWN0IHRhc2tfc3RydWN0ICp0LAogICAgICAgICBzdHJ1Y3QgdXNlcl9u YW1lc3BhY2UgKm5zLCBpbnQgY2FwKTsKZXh0ZXJuIGJvb2wgaGFzX2NhcGFiaWxpdHlfbm9hdWRp dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIGludCBjYXApOwpleHRlcm4gYm9vbCBoYXNfbnNfY2Fw YWJpbGl0eV9ub2F1ZGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwKICAgICAgICAgIHN0cnVjdCB1 c2VyX25hbWVzcGFjZSAqbnMsIGludCBjYXApOwpleHRlcm4gYm9vbCBjYXBhYmxlKGludCBjYXAp OwpleHRlcm4gYm9vbCBuc19jYXBhYmxlKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbnMsIGludCBj YXApOwpleHRlcm4gYm9vbCBuc19jYXBhYmxlX25vYXVkaXQoc3RydWN0IHVzZXJfbmFtZXNwYWNl ICpucywgaW50IGNhcCk7CmV4dGVybiBib29sIG5zX2NhcGFibGVfc2V0aWQoc3RydWN0IHVzZXJf bmFtZXNwYWNlICpucywgaW50IGNhcCk7CiMgMjUwICIuL2luY2x1ZGUvbGludXgvY2FwYWJpbGl0 eS5oIgpleHRlcm4gYm9vbCBwcml2aWxlZ2VkX3dydF9pbm9kZV91aWRnaWQoc3RydWN0IHVzZXJf bmFtZXNwYWNlICpucywgY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSk7CmV4dGVybiBib29sIGNh cGFibGVfd3J0X2lub2RlX3VpZGdpZChjb25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgY2Fw KTsKZXh0ZXJuIGJvb2wgZmlsZV9uc19jYXBhYmxlKGNvbnN0IHN0cnVjdCBmaWxlICpmaWxlLCBz dHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5zLCBpbnQgY2FwKTsKZXh0ZXJuIGJvb2wgcHRyYWNlcl9j YXBhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKm5z KTsKCgpleHRlcm4gaW50IGdldF92ZnNfY2Fwc19mcm9tX2Rpc2soY29uc3Qgc3RydWN0IGRlbnRy eSAqZGVudHJ5LCBzdHJ1Y3QgY3B1X3Zmc19jYXBfZGF0YSAqY3B1X2NhcHMpOwoKZXh0ZXJuIGlu dCBjYXBfY29udmVydF9uc2NhcChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHZvaWQgKippdmFsdWUs IHNpemVfdCBzaXplKTsKIyAyNSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIuL2luY2x1 ZGUvbGludXgvc2VtYXBob3JlLmgiIDEKIyAxNSAiLi9pbmNsdWRlL2xpbnV4L3NlbWFwaG9yZS5o IgpzdHJ1Y3Qgc2VtYXBob3JlIHsKIHJhd19zcGlubG9ja190IGxvY2s7CiB1bnNpZ25lZCBpbnQg Y291bnQ7CiBzdHJ1Y3QgbGlzdF9oZWFkIHdhaXRfbGlzdDsKfTsKIyAzMSAiLi9pbmNsdWRlL2xp bnV4L3NlbWFwaG9yZS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNlbWFfaW5pdChzdHJ1Y3Qgc2VtYXBob3JlICpzZW0sIGlu dCB2YWwpCnsKIHN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgX19rZXk7CiAqc2VtID0gKHN0 cnVjdCBzZW1hcGhvcmUpIHsgLmxvY2sgPSAocmF3X3NwaW5sb2NrX3QpIHsgLnJhd19sb2NrID0g eyB7IC52YWwgPSB7ICgwKSB9IH0gfSwgfSwgLmNvdW50ID0gdmFsLCAud2FpdF9saXN0ID0geyAm KCgqc2VtKS53YWl0X2xpc3QpLCAmKCgqc2VtKS53YWl0X2xpc3QpIH0sIH07CiBkbyB7ICh2b2lk KSgic2VtYXBob3JlLT5sb2NrIik7ICh2b2lkKSgmX19rZXkpOyB9IHdoaWxlICgwKTsKfQoKZXh0 ZXJuIHZvaWQgZG93bihzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pOwpleHRlcm4gaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkb3duX2ludGVycnVwdGlibGUoc3RydWN0 IHNlbWFwaG9yZSAqc2VtKTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkgZG93bl9raWxsYWJsZShzdHJ1Y3Qgc2VtYXBob3JlICpzZW0pOwpleHRlcm4g aW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkb3duX3RyeWxvY2so c3RydWN0IHNlbWFwaG9yZSAqc2VtKTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgZG93bl90aW1lb3V0KHN0cnVjdCBzZW1hcGhvcmUgKnNlbSwgbG9u ZyBqaWZmaWVzKTsKZXh0ZXJuIHZvaWQgdXAoc3RydWN0IHNlbWFwaG9yZSAqc2VtKTsKIyAyNiAi Li9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMQoK CgoKCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmNudGwuaCIgMQoKCgoKIyAxICIuL2FyY2gv eDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2ZjbnRsLmgiIDEKIyAxICIuL2luY2x1ZGUv dWFwaS9hc20tZ2VuZXJpYy9mY250bC5oIiAxCiMgMTU2ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2Vu ZXJpYy9mY250bC5oIgpzdHJ1Y3QgZl9vd25lcl9leCB7CiBpbnQgdHlwZTsKIF9fa2VybmVsX3Bp ZF90IHBpZDsKfTsKIyAxOTYgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2ZjbnRsLmgiCnN0 cnVjdCBmbG9jayB7CiBzaG9ydCBsX3R5cGU7CiBzaG9ydCBsX3doZW5jZTsKIF9fa2VybmVsX29m Zl90IGxfc3RhcnQ7CiBfX2tlcm5lbF9vZmZfdCBsX2xlbjsKIF9fa2VybmVsX3BpZF90IGxfcGlk OwoKfTsKCgoKCgoKCnN0cnVjdCBmbG9jazY0IHsKIHNob3J0IGxfdHlwZTsKIHNob3J0IGxfd2hl bmNlOwogX19rZXJuZWxfbG9mZl90IGxfc3RhcnQ7CiBfX2tlcm5lbF9sb2ZmX3QgbF9sZW47CiBf X2tlcm5lbF9waWRfdCBsX3BpZDsKCn07CiMgMiAiLi9hcmNoL3g4Ni9pbmNsdWRlL2dlbmVyYXRl ZC91YXBpL2FzbS9mY250bC5oIiAyCiMgNiAiLi9pbmNsdWRlL3VhcGkvbGludXgvZmNudGwuaCIg MgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L29wZW5hdDIuaCIgMQojIDE5ICIuL2luY2x1ZGUv dWFwaS9saW51eC9vcGVuYXQyLmgiCnN0cnVjdCBvcGVuX2hvdyB7CiBfX3U2NCBmbGFnczsKIF9f dTY0IG1vZGU7CiBfX3U2NCByZXNvbHZlOwp9OwojIDcgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2Zj bnRsLmgiIDIKIyA3ICIuL2luY2x1ZGUvbGludXgvZmNudGwuaCIgMgojIDI3ICIuL2luY2x1ZGUv bGludXgvZnMuaCIgMgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2ZpZW1hcC5oIiAxCiMgMTcg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L2ZpZW1hcC5oIgpzdHJ1Y3QgZmllbWFwX2V4dGVudCB7CiBf X3U2NCBmZV9sb2dpY2FsOwoKIF9fdTY0IGZlX3BoeXNpY2FsOwoKIF9fdTY0IGZlX2xlbmd0aDsK IF9fdTY0IGZlX3Jlc2VydmVkNjRbMl07CiBfX3UzMiBmZV9mbGFnczsKIF9fdTMyIGZlX3Jlc2Vy dmVkWzNdOwp9OwoKc3RydWN0IGZpZW1hcCB7CiBfX3U2NCBmbV9zdGFydDsKCiBfX3U2NCBmbV9s ZW5ndGg7CgogX191MzIgZm1fZmxhZ3M7CiBfX3UzMiBmbV9tYXBwZWRfZXh0ZW50czsKIF9fdTMy IGZtX2V4dGVudF9jb3VudDsKIF9fdTMyIGZtX3Jlc2VydmVkOwogc3RydWN0IGZpZW1hcF9leHRl bnQgZm1fZXh0ZW50c1swXTsKfTsKIyAyOCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiIDIKCgoKIyAx ICIuL2luY2x1ZGUvbGludXgvbWlncmF0ZV9tb2RlLmgiIDEKIyAxNSAiLi9pbmNsdWRlL2xpbnV4 L21pZ3JhdGVfbW9kZS5oIgplbnVtIG1pZ3JhdGVfbW9kZSB7CiBNSUdSQVRFX0FTWU5DLAogTUlH UkFURV9TWU5DX0xJR0hULAogTUlHUkFURV9TWU5DLAogTUlHUkFURV9TWU5DX05PX0NPUFksCn07 CiMgMzIgIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCgoKIyAxICIuL2luY2x1ZGUvbGludXgvcGVy Y3B1LXJ3c2VtLmgiIDEKCgoKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3JjdXdhaXQuaCIgMQoj IDE1ICIuL2luY2x1ZGUvbGludXgvcmN1d2FpdC5oIgpzdHJ1Y3QgcmN1d2FpdCB7CiBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2s7Cn07CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJjdXdhaXRfaW5pdChzdHJ1Y3QgcmN1d2Fp dCAqdykKewogdy0+dGFzayA9ICgodm9pZCAqKTApOwp9CgpleHRlcm4gdm9pZCByY3V3YWl0X3dh a2VfdXAoc3RydWN0IHJjdXdhaXQgKncpOwojIDkgIi4vaW5jbHVkZS9saW51eC9wZXJjcHUtcndz ZW0uaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9yY3Vfc3luYy5oIiAxCiMgMTcgIi4vaW5jbHVk ZS9saW51eC9yY3Vfc3luYy5oIgpzdHJ1Y3QgcmN1X3N5bmMgewogaW50IGdwX3N0YXRlOwogaW50 IGdwX2NvdW50Owogd2FpdF9xdWV1ZV9oZWFkX3QgZ3Bfd2FpdDsKCiBzdHJ1Y3QgY2FsbGJhY2tf aGVhZCBjYl9oZWFkOwp9OwojIDMyICIuL2luY2x1ZGUvbGludXgvcmN1X3N5bmMuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBy Y3Vfc3luY19pc19pZGxlKHN0cnVjdCByY3Vfc3luYyAqcnNwKQp7CiBkbyB7IH0gd2hpbGUgKDAp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIHJldHVybiAhKHsg dW5pb24geyB0eXBlb2YocnNwLT5ncF9zdGF0ZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsg aWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihyc3AtPmdwX3N0YXRlKSwgX191Ll9fYywgc2l6ZW9m KHJzcC0+Z3Bfc3RhdGUpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJihyc3AtPmdw X3N0YXRlKSwgX191Ll9fYywgc2l6ZW9mKHJzcC0+Z3Bfc3RhdGUpKTsgZG8geyB9IHdoaWxlICgw KTsgX191Ll9fdmFsOyB9KTsKfQoKZXh0ZXJuIHZvaWQgcmN1X3N5bmNfaW5pdChzdHJ1Y3QgcmN1 X3N5bmMgKik7CmV4dGVybiB2b2lkIHJjdV9zeW5jX2VudGVyX3N0YXJ0KHN0cnVjdCByY3Vfc3lu YyAqKTsKZXh0ZXJuIHZvaWQgcmN1X3N5bmNfZW50ZXIoc3RydWN0IHJjdV9zeW5jICopOwpleHRl cm4gdm9pZCByY3Vfc3luY19leGl0KHN0cnVjdCByY3Vfc3luYyAqKTsKZXh0ZXJuIHZvaWQgcmN1 X3N5bmNfZHRvcihzdHJ1Y3QgcmN1X3N5bmMgKik7CiMgMTAgIi4vaW5jbHVkZS9saW51eC9wZXJj cHUtcndzZW0uaCIgMgoKCnN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlIHsKIHN0cnVjdCByY3Vf c3luYyByc3M7CiB1bnNpZ25lZCBpbnQgKnJlYWRfY291bnQ7CiBzdHJ1Y3Qgcndfc2VtYXBob3Jl IHJ3X3NlbTsKIHN0cnVjdCByY3V3YWl0IHdyaXRlcjsKIGludCByZWFkZXJzX2Jsb2NrOwp9Owoj IDMzICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJ3c2VtLmgiCmV4dGVybiBpbnQgX19wZXJjcHVf ZG93bl9yZWFkKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICosIGludCk7CmV4dGVybiB2b2lk IF9fcGVyY3B1X3VwX3JlYWQoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBl cmNwdV9kb3duX3JlYWQoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSkKewogZG8geyBk byB7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKCiBkbyB7IH0gd2hpbGUgKDApOwoKIF9fYXNt X18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7CiMgNTEgIi4vaW5jbHVkZS9saW51eC9w ZXJjcHUtcndzZW0uaCIKICh7IF9fdGhpc19jcHVfcHJlZW1wdF9jaGVjaygiYWRkIik7IGRvIHsg ZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKCpzZW0tPnJlYWRfY291 bnQpKSArIDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBz d2l0Y2goc2l6ZW9mKCpzZW0tPnJlYWRfY291bnQpKSB7IGNhc2UgMTogZG8geyB0eXBlZGVmIHR5 cGVvZigoKnNlbS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChf X2J1aWx0aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50 KSgxKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2 b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNh c2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYg KHBhb19JRF9fID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBh c20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2Nv dW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9f ID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRs ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAi cmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFv X1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGls ZSAoMCk7YnJlYWs7IGNhc2UgMjogZG8geyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3Vu dCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgx KSAmJiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBh b19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0 Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09 IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUx LCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWki ICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAo ImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1Rf XykoMSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAo cGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsg YnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgNDog ZG8geyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGlu dCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEp ID09IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9f dG1wX18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVh ZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFv X0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJl YWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0g LTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2Ug NDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAo ImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsg ZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5y ZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBh b19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20g KCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50 KSkgOiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9z aXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgODogZG8geyB0eXBlZGVmIHR5cGVvZigo KnNlbS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0 aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6 IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBh b190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTog aWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRl Y2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFk X2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19J RF9fID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJh ZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkg OiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEp IGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgo cGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImlu Y3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXyko MSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7 YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3NpemVfY2FsbF9wYXJhbWV0ZXIoKTticmVhazsgfSB9IHdo aWxlICgwKTsgfSk7CiBpZiAoX19idWlsdGluX2V4cGVjdCghISghcmN1X3N5bmNfaXNfaWRsZSgm c2VtLT5yc3MpKSwgMCkpCiAgX19wZXJjcHVfZG93bl9yZWFkKHNlbSwgZmFsc2UpOwoKCgoKIF9f YXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBwZXJjcHVfZG93bl9y ZWFkX3RyeWxvY2soc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSkKewogaW50IHJldCA9 IDE7CgogX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKCgoKICh7IF9fdGhp c19jcHVfcHJlZW1wdF9jaGVjaygiYWRkIik7IGRvIHsgZG8geyBjb25zdCB2b2lkICpfX3ZwcF92 ZXJpZnkgPSAodHlwZW9mKCgmKCpzZW0tPnJlYWRfY291bnQpKSArIDApKSgodm9pZCAqKTApOyAo dm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2goc2l6ZW9mKCpzZW0tPnJlYWRf Y291bnQpKSB7IGNhc2UgMTogZG8geyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3VudCkp IHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSAm JiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBhb19U X18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2gg KHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEp IGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAi IiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgo cGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImlu Y3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXyko MSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFv X0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJl YWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0g LTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIg KCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1 bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgMjogZG8g eyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBw YW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEpID09 IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1w X18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9j b3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7 IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEp IGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3Vu dCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgq c2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgNDog aWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRl Y2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFk X2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19J RF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJh ZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkg OiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXpl KCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGNhc2UgNDogZG8geyB0eXBlZGVmIHR5cGVvZigoKnNl bS0+cmVhZF9jb3VudCkpIHBhb19UX187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5f Y29uc3RhbnRfcCgxKSAmJiAoKDEpID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6IDA7 IGlmICgwKSB7IHBhb19UX18gcGFvX3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBhb190 bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYg KHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2Ig IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBh c20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2Nv dW50KSkgOiAicWkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9f ID09IDEpIGFzbSAoImluY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3 ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAi cmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFz bSAoImluY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAi MCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFv X1RfXykoMSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3Eg IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBp ZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIg IiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoMSkp KTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJl YWs7IGNhc2UgODogZG8geyB0eXBlZGVmIHR5cGVvZigoKnNlbS0+cmVhZF9jb3VudCkpIHBhb19U X187IGNvbnN0IGludCBwYW9fSURfXyA9IChfX2J1aWx0aW5fY29uc3RhbnRfcCgxKSAmJiAoKDEp ID09IDEgfHwgKDEpID09IC0xKSkgPyAoaW50KSgxKSA6IDA7IGlmICgwKSB7IHBhb19UX18gcGFv X3RtcF9fOyBwYW9fdG1wX18gPSAoMSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVv ZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAo ImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1Rf XykoMSkpKTsgYnJlYWs7IGNhc2UgMjogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3cgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAo cGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3cgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGR3ICUxLCAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsg YnJlYWs7IGNhc2UgNDogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2wgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18g PT0gLTEpIGFzbSAoImRlY2wgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRsICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIr bSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmkiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGNh c2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFz bSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkp KTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoMSkpKTsgYnJlYWs7IGRlZmF1bHQ6IF9f YmFkX3BlcmNwdV9zaXplKCk7IH0gfSB3aGlsZSAoMCk7YnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3Np emVfY2FsbF9wYXJhbWV0ZXIoKTticmVhazsgfSB9IHdoaWxlICgwKTsgfSk7CiBpZiAoX19idWls dGluX2V4cGVjdCghISghcmN1X3N5bmNfaXNfaWRsZSgmc2VtLT5yc3MpKSwgMCkpCiAgcmV0ID0g X19wZXJjcHVfZG93bl9yZWFkKHNlbSwgdHJ1ZSk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjog OiA6Im1lbW9yeSIpOwoKCgoKCiBpZiAocmV0KQogIGRvIHsgfSB3aGlsZSAoMCk7CgogcmV0dXJu IHJldDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBwZXJjcHVfdXBfcmVhZChzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFwaG9yZSAq c2VtKQp7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoKCgogaWYgKF9f YnVpbHRpbl9leHBlY3QoISEocmN1X3N5bmNfaXNfaWRsZSgmc2VtLT5yc3MpKSwgMSkpCiAgKHsg X190aGlzX2NwdV9wcmVlbXB0X2NoZWNrKCJhZGQiKTsgZG8geyBkbyB7IGNvbnN0IHZvaWQgKl9f dnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoKnNlbS0+cmVhZF9jb3VudCkpICsgMCkpKCh2b2lkICop MCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoKnNlbS0+ cmVhZF9jb3VudCkpIHsgY2FzZSAxOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqc2VtLT5yZWFkX2Nv dW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9w KC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgJiYgKCgtKHR5cGVvZigqc2VtLT5yZWFk X2NvdW50KSkoMSkpID09IDEgfHwgKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0g LTEpKSA/IChpbnQpKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgOiAwOyBpZiAoMCkg eyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKC0odHlwZW9mKCpzZW0tPnJlYWRfY291 bnQpKSgxKSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9j b3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lE X18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+ cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBlb2YoKnNl bS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkg YXNtICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50 KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjdyAiIiUlIiJncyIiOiIgIiUi ICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHcgJTEsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJyaSIgKChw YW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDQ6 IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIitt IiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJk ZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVs c2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgx KSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIi Z3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFv X0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNl bS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIw IiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2Yo KnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3Np emUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSAyOiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgq c2VtLT5yZWFkX2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9fID0gKF9fYnVpbHRp bl9jb25zdGFudF9wKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgJiYgKCgtKHR5cGVv Zigqc2VtLT5yZWFkX2NvdW50KSkoMSkpID09IDEgfHwgKC0odHlwZW9mKCpzZW0tPnJlYWRfY291 bnQpKSgxKSkgPT0gLTEpKSA/IChpbnQpKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkg OiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0gKC0odHlwZW9mKCpz ZW0tPnJlYWRfY291bnQpKSgxKSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigo KnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09IDEpIGFzbSAoImlu Y2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAi K20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUxLCAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWkiICgocGFvX1RfXyko LSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2FzZSAyOiBpZiAocGFv X0lEX18gPT0gMSkgYXNtICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2Vt LT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNtICgiZGVjdyAiIiUl IiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAo ImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSA6ICJyaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpKSk7IGJy ZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIiJSUiImdzIiI6IiAi JSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYgKHBhb19JRF9fID09 IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRf Y291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlwZW9mKCpzZW0tPnJl YWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9fID09IDEpIGFzbSAo ImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsg ZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIg OiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRxICUxLCAiIiUlIiJn cyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicmUiICgocGFvX1Rf XykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgZGVmYXVsdDogX19i YWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA0OiBkbyB7IHR5cGVk ZWYgdHlwZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkgcGFvX1RfXzsgY29uc3QgaW50IHBhb19JRF9f ID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkg JiYgKCgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpID09IDEgfHwgKC0odHlwZW9mKCpz ZW0tPnJlYWRfY291bnQpKSgxKSkgPT0gLTEpKSA/IChpbnQpKC0odHlwZW9mKCpzZW0tPnJlYWRf Y291bnQpKSgxKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsgcGFvX3RtcF9fID0g KC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSk7ICh2b2lkKXBhb190bXBfXzsgfSBzd2l0 Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYgKHBhb19JRF9fID09 IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9j b3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2IgIiIlJSIiZ3MiIjoi ICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRiICUx LCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAicWki ICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsgY2Fz ZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6 ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURfXyA9PSAtMSkgYXNt ICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkp OyBlbHNlIGFzbSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0t PnJlYWRfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50 KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBhc20gKCJpbmNsICIi JSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgaWYg KHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAo KCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIlJSIiZ3MiIjoiICIl IiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBhb19UX18pKC0odHlw ZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgODogaWYgKHBhb19JRF9f ID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVh ZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY3EgIiIlJSIiZ3Mi IjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBhc20gKCJhZGRx ICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkgOiAi cmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkpOyBicmVhazsg ZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTticmVhazsgY2FzZSA4 OiBkbyB7IHR5cGVkZWYgdHlwZW9mKCgqc2VtLT5yZWFkX2NvdW50KSkgcGFvX1RfXzsgY29uc3Qg aW50IHBhb19JRF9fID0gKF9fYnVpbHRpbl9jb25zdGFudF9wKC0odHlwZW9mKCpzZW0tPnJlYWRf Y291bnQpKSgxKSkgJiYgKCgtKHR5cGVvZigqc2VtLT5yZWFkX2NvdW50KSkoMSkpID09IDEgfHwg KC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkgPT0gLTEpKSA/IChpbnQpKC0odHlwZW9m KCpzZW0tPnJlYWRfY291bnQpKSgxKSkgOiAwOyBpZiAoMCkgeyBwYW9fVF9fIHBhb190bXBfXzsg cGFvX3RtcF9fID0gKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSk7ICh2b2lkKXBhb190 bXBfXzsgfSBzd2l0Y2ggKHNpemVvZigoKnNlbS0+cmVhZF9jb3VudCkpKSB7IGNhc2UgMTogaWYg KHBhb19JRF9fID09IDEpIGFzbSAoImluY2IgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgo KnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRlY2Ig IiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBh c20gKCJhZGRiICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2Nv dW50KSkgOiAicWkiICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEpKSkp OyBicmVhazsgY2FzZSAyOiBpZiAocGFvX0lEX18gPT0gMSkgYXNtICgiaW5jdyAiIiUlIiJncyIi OiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFkX2NvdW50KSkpOyBlbHNlIGlmIChwYW9fSURf XyA9PSAtMSkgYXNtICgiZGVjdyAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5y ZWFkX2NvdW50KSkpOyBlbHNlIGFzbSAoImFkZHcgJTEsICIiJSUiImdzIiI6IiAiJSIgIjAiIDog IittIiAoKCpzZW0tPnJlYWRfY291bnQpKSA6ICJyaSIgKChwYW9fVF9fKSgtKHR5cGVvZigqc2Vt LT5yZWFkX2NvdW50KSkoMSkpKSk7IGJyZWFrOyBjYXNlIDQ6IGlmIChwYW9fSURfXyA9PSAxKSBh c20gKCJpbmNsICIiJSUiImdzIiI6IiAiJSIgIjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQp KSk7IGVsc2UgaWYgKHBhb19JRF9fID09IC0xKSBhc20gKCJkZWNsICIiJSUiImdzIiI6IiAiJSIg IjAiIDogIittIiAoKCpzZW0tPnJlYWRfY291bnQpKSk7IGVsc2UgYXNtICgiYWRkbCAlMSwgIiIl JSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpIDogInJpIiAoKHBh b19UX18pKC0odHlwZW9mKCpzZW0tPnJlYWRfY291bnQpKSgxKSkpKTsgYnJlYWs7IGNhc2UgODog aWYgKHBhb19JRF9fID09IDEpIGFzbSAoImluY3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20i ICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxzZSBpZiAocGFvX0lEX18gPT0gLTEpIGFzbSAoImRl Y3EgIiIlJSIiZ3MiIjoiICIlIiAiMCIgOiAiK20iICgoKnNlbS0+cmVhZF9jb3VudCkpKTsgZWxz ZSBhc20gKCJhZGRxICUxLCAiIiUlIiJncyIiOiIgIiUiICIwIiA6ICIrbSIgKCgqc2VtLT5yZWFk X2NvdW50KSkgOiAicmUiICgocGFvX1RfXykoLSh0eXBlb2YoKnNlbS0+cmVhZF9jb3VudCkpKDEp KSkpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSB9IHdoaWxlICgwKTti cmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFtZXRlcigpO2JyZWFrOyB9IH0gd2hp bGUgKDApOyB9KTsKIGVsc2UKICBfX3BlcmNwdV91cF9yZWFkKHNlbSk7CiBfX2FzbV9fIF9fdm9s YXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOwoKIGRvIHsgfSB3aGlsZSAoMCk7Cn0KCmV4dGVybiB2 b2lkIHBlcmNwdV9kb3duX3dyaXRlKHN0cnVjdCBwZXJjcHVfcndfc2VtYXBob3JlICopOwpleHRl cm4gdm9pZCBwZXJjcHVfdXBfd3JpdGUoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7Cgpl eHRlcm4gaW50IF9fcGVyY3B1X2luaXRfcndzZW0oc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUg KiwKICAgIGNvbnN0IGNoYXIgKiwgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICopOwoKZXh0ZXJuIHZv aWQgcGVyY3B1X2ZyZWVfcndzZW0oc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKik7CiMgMTE4 ICIuL2luY2x1ZGUvbGludXgvcGVyY3B1LXJ3c2VtLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3J3c2VtX3JlbGVh c2Uoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSwKICAgICBib29sIHJlYWQsIHVuc2ln bmVkIGxvbmcgaXApCnsKIGRvIHsgfSB3aGlsZSAoMCk7CgogaWYgKCFyZWFkKQogIGF0b21pY19s b25nX3NldCgmc2VtLT5yd19zZW0ub3duZXIsICgtMkwpKTsKCn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X3J3c2Vt X2FjcXVpcmUoc3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUgKnNlbSwKICAgICBib29sIHJlYWQs IHVuc2lnbmVkIGxvbmcgaXApCnsKIGRvIHsgfSB3aGlsZSAoMCk7CgogaWYgKCFyZWFkKQogIGF0 b21pY19sb25nX3NldCgmc2VtLT5yd19zZW0ub3duZXIsIChsb25nKWdldF9jdXJyZW50KCkpOwoK fQojIDM1ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgoKIyAxICIuL2luY2x1ZGUvbGludXgvZGVs YXllZF9jYWxsLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xpbnV4L2RlbGF5ZWRfY2FsbC5oIgpzdHJ1 Y3QgZGVsYXllZF9jYWxsIHsKIHZvaWQgKCpmbikodm9pZCAqKTsKIHZvaWQgKmFyZzsKfTsKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHZvaWQgc2V0X2RlbGF5ZWRfY2FsbChzdHJ1Y3QgZGVsYXllZF9jYWxsICpjYWxsLAogIHZvaWQg KCpmbikodm9pZCAqKSwgdm9pZCAqYXJnKQp7CiBjYWxsLT5mbiA9IGZuOwogY2FsbC0+YXJnID0g YXJnOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGRvX2RlbGF5ZWRfY2FsbChzdHJ1Y3QgZGVsYXllZF9jYWxsICpjYWxsKQp7 CiBpZiAoY2FsbC0+Zm4pCiAgY2FsbC0+Zm4oY2FsbC0+YXJnKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjbGVhcl9kZWxh eWVkX2NhbGwoc3RydWN0IGRlbGF5ZWRfY2FsbCAqY2FsbCkKewogY2FsbC0+Zm4gPSAoKHZvaWQg KikwKTsKfQojIDM3ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51 eC91dWlkLmgiIDEKIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3V1aWQuaCIKIyAxICIuL2luY2x1ZGUv dWFwaS9saW51eC91dWlkLmgiIDEKIyAyMyAiLi9pbmNsdWRlL3VhcGkvbGludXgvdXVpZC5oIgp0 eXBlZGVmIHN0cnVjdCB7CiBfX3U4IGJbMTZdOwp9IGd1aWRfdDsKIyAzNSAiLi9pbmNsdWRlL3Vh cGkvbGludXgvdXVpZC5oIgp0eXBlZGVmIGd1aWRfdCB1dWlkX2xlOwojIDEyICIuL2luY2x1ZGUv bGludXgvdXVpZC5oIiAyCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiBfX3U4IGJbMTZdOwp9IHV1aWRf dDsKIyAzMyAiLi9pbmNsdWRlL2xpbnV4L3V1aWQuaCIKZXh0ZXJuIGNvbnN0IGd1aWRfdCBndWlk X251bGw7CmV4dGVybiBjb25zdCB1dWlkX3QgdXVpZF9udWxsOwoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBndWlkX2VxdWFsKGNv bnN0IGd1aWRfdCAqdTEsIGNvbnN0IGd1aWRfdCAqdTIpCnsKIHJldHVybiBtZW1jbXAodTEsIHUy LCBzaXplb2YoZ3VpZF90KSkgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBndWlkX2NvcHkoZ3VpZF90ICpkc3QsIGNv bnN0IGd1aWRfdCAqc3JjKQp7CiBtZW1jcHkoZHN0LCBzcmMsIHNpemVvZihndWlkX3QpKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBndWlkX2lzX251bGwoY29uc3QgZ3VpZF90ICpndWlkKQp7CiByZXR1cm4gZ3VpZF9lcXVh bChndWlkLCAmZ3VpZF9udWxsKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1dWlkX2VxdWFsKGNvbnN0IHV1aWRfdCAqdTEs IGNvbnN0IHV1aWRfdCAqdTIpCnsKIHJldHVybiBtZW1jbXAodTEsIHUyLCBzaXplb2YodXVpZF90 KSkgPT0gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB1dWlkX2NvcHkodXVpZF90ICpkc3QsIGNvbnN0IHV1aWRfdCAqc3Jj KQp7CiBtZW1jcHkoZHN0LCBzcmMsIHNpemVvZih1dWlkX3QpKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB1dWlkX2lzX251 bGwoY29uc3QgdXVpZF90ICp1dWlkKQp7CiByZXR1cm4gdXVpZF9lcXVhbCh1dWlkLCAmdXVpZF9u dWxsKTsKfQoKdm9pZCBnZW5lcmF0ZV9yYW5kb21fdXVpZCh1bnNpZ25lZCBjaGFyIHV1aWRbMTZd KTsKCmV4dGVybiB2b2lkIGd1aWRfZ2VuKGd1aWRfdCAqdSk7CmV4dGVybiB2b2lkIHV1aWRfZ2Vu KHV1aWRfdCAqdSk7Cgpib29sIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSB1dWlkX2lzX3ZhbGlkKGNvbnN0IGNoYXIgKnV1aWQpOwoKZXh0ZXJuIGNvbnN0IHU4IGd1aWRf aW5kZXhbMTZdOwpleHRlcm4gY29uc3QgdTggdXVpZF9pbmRleFsxNl07CgppbnQgZ3VpZF9wYXJz ZShjb25zdCBjaGFyICp1dWlkLCBndWlkX3QgKnUpOwppbnQgdXVpZF9wYXJzZShjb25zdCBjaGFy ICp1dWlkLCB1dWlkX3QgKnUpOwoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB1dWlkX2xlX2NtcChjb25zdCBndWlkX3QgdTEs IGNvbnN0IGd1aWRfdCB1MikKewogcmV0dXJuIG1lbWNtcCgmdTEsICZ1Miwgc2l6ZW9mKGd1aWRf dCkpOwp9CiMgMzggIi4vaW5jbHVkZS9saW51eC9mcy5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4 L2VycnNlcS5oIiAxCgoKCgoKCgp0eXBlZGVmIHUzMiBlcnJzZXFfdDsKCmVycnNlcV90IGVycnNl cV9zZXQoZXJyc2VxX3QgKmVzZXEsIGludCBlcnIpOwplcnJzZXFfdCBlcnJzZXFfc2FtcGxlKGVy cnNlcV90ICplc2VxKTsKaW50IGVycnNlcV9jaGVjayhlcnJzZXFfdCAqZXNlcSwgZXJyc2VxX3Qg c2luY2UpOwppbnQgZXJyc2VxX2NoZWNrX2FuZF9hZHZhbmNlKGVycnNlcV90ICplc2VxLCBlcnJz ZXFfdCAqc2luY2UpOwojIDM5ICIuL2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi4vaW5jbHVk ZS9saW51eC9pb3ByaW8uaCIgMQoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMQoj IDEwICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9z Y2hlZC5oIiAxCiMgODkgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCBjbG9u ZV9hcmdzIHsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBmbGFnczsKIF9fdTY0 IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBwaWRmZDsKIF9fdTY0IF9fYXR0cmlidXRlX18o KGFsaWduZWQoOCkpKSBjaGlsZF90aWQ7CiBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgp KSkgcGFyZW50X3RpZDsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBleGl0X3Np Z25hbDsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBzdGFjazsKIF9fdTY0IF9f YXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBzdGFja19zaXplOwogX191NjQgX19hdHRyaWJ1dGVf XygoYWxpZ25lZCg4KSkpIHRsczsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKSBz ZXRfdGlkOwogX191NjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpIHNldF90aWRfc2l6ZTsK fTsKIyAxMSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCgoKCiMgMSAiLi9pbmNsdWRlL2xp bnV4L3NlbS5oIiAxCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIiAxCgoKCgoj IDEgIi4vaW5jbHVkZS9saW51eC9pcGMuaCIgMQoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9y aGFzaHRhYmxlLXR5cGVzLmgiIDEKIyAxNyAiLi9pbmNsdWRlL2xpbnV4L3JoYXNodGFibGUtdHlw ZXMuaCIKc3RydWN0IHJoYXNoX2hlYWQgewogc3RydWN0IHJoYXNoX2hlYWQgKm5leHQ7Cn07Cgpz dHJ1Y3QgcmhsaXN0X2hlYWQgewogc3RydWN0IHJoYXNoX2hlYWQgcmhlYWQ7CiBzdHJ1Y3Qgcmhs aXN0X2hlYWQgKm5leHQ7Cn07CgpzdHJ1Y3QgYnVja2V0X3RhYmxlOwoKCgoKCgpzdHJ1Y3Qgcmhh c2h0YWJsZV9jb21wYXJlX2FyZyB7CiBzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQ7CiBjb25zdCB2b2lk ICprZXk7Cn07Cgp0eXBlZGVmIHUzMiAoKnJodF9oYXNoZm5fdCkoY29uc3Qgdm9pZCAqZGF0YSwg dTMyIGxlbiwgdTMyIHNlZWQpOwp0eXBlZGVmIHUzMiAoKnJodF9vYmpfaGFzaGZuX3QpKGNvbnN0 IHZvaWQgKmRhdGEsIHUzMiBsZW4sIHUzMiBzZWVkKTsKdHlwZWRlZiBpbnQgKCpyaHRfb2JqX2Nt cGZuX3QpKHN0cnVjdCByaGFzaHRhYmxlX2NvbXBhcmVfYXJnICphcmcsCiAgICAgICAgICBjb25z dCB2b2lkICpvYmopOwojIDU2ICIuL2luY2x1ZGUvbGludXgvcmhhc2h0YWJsZS10eXBlcy5oIgpz dHJ1Y3Qgcmhhc2h0YWJsZV9wYXJhbXMgewogdTE2IG5lbGVtX2hpbnQ7CiB1MTYga2V5X2xlbjsK IHUxNiBrZXlfb2Zmc2V0OwogdTE2IGhlYWRfb2Zmc2V0OwogdW5zaWduZWQgaW50IG1heF9zaXpl OwogdTE2IG1pbl9zaXplOwogYm9vbCBhdXRvbWF0aWNfc2hyaW5raW5nOwogcmh0X2hhc2hmbl90 IGhhc2hmbjsKIHJodF9vYmpfaGFzaGZuX3Qgb2JqX2hhc2hmbjsKIHJodF9vYmpfY21wZm5fdCBv YmpfY21wZm47Cn07CiMgODEgIi4vaW5jbHVkZS9saW51eC9yaGFzaHRhYmxlLXR5cGVzLmgiCnN0 cnVjdCByaGFzaHRhYmxlIHsKIHN0cnVjdCBidWNrZXRfdGFibGUgKnRibDsKIHVuc2lnbmVkIGlu dCBrZXlfbGVuOwogdW5zaWduZWQgaW50IG1heF9lbGVtczsKIHN0cnVjdCByaGFzaHRhYmxlX3Bh cmFtcyBwOwogYm9vbCByaGxpc3Q7CiBzdHJ1Y3Qgd29ya19zdHJ1Y3QgcnVuX3dvcms7CiBzdHJ1 Y3QgbXV0ZXggbXV0ZXg7CiBzcGlubG9ja190IGxvY2s7CiBhdG9taWNfdCBuZWxlbXM7Cn07CgoK CgoKc3RydWN0IHJobHRhYmxlIHsKIHN0cnVjdCByaGFzaHRhYmxlIGh0Owp9OwoKCgoKCgpzdHJ1 Y3Qgcmhhc2h0YWJsZV93YWxrZXIgewogc3RydWN0IGxpc3RfaGVhZCBsaXN0Owogc3RydWN0IGJ1 Y2tldF90YWJsZSAqdGJsOwp9OwojIDEyMCAiLi9pbmNsdWRlL2xpbnV4L3JoYXNodGFibGUtdHlw ZXMuaCIKc3RydWN0IHJoYXNodGFibGVfaXRlciB7CiBzdHJ1Y3Qgcmhhc2h0YWJsZSAqaHQ7CiBz dHJ1Y3Qgcmhhc2hfaGVhZCAqcDsKIHN0cnVjdCByaGxpc3RfaGVhZCAqbGlzdDsKIHN0cnVjdCBy aGFzaHRhYmxlX3dhbGtlciB3YWxrZXI7CiB1bnNpZ25lZCBpbnQgc2xvdDsKIHVuc2lnbmVkIGlu dCBza2lwOwogYm9vbCBlbmRfb2ZfdGFibGU7Cn07CgppbnQgcmhhc2h0YWJsZV9pbml0KHN0cnVj dCByaGFzaHRhYmxlICpodCwKICAgICAgY29uc3Qgc3RydWN0IHJoYXNodGFibGVfcGFyYW1zICpw YXJhbXMpOwppbnQgcmhsdGFibGVfaW5pdChzdHJ1Y3QgcmhsdGFibGUgKmhsdCwKICAgIGNvbnN0 IHN0cnVjdCByaGFzaHRhYmxlX3BhcmFtcyAqcGFyYW1zKTsKIyA4ICIuL2luY2x1ZGUvbGludXgv aXBjLmgiIDIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9pcGMuaCIgMQojIDEwICIuL2luY2x1 ZGUvdWFwaS9saW51eC9pcGMuaCIKc3RydWN0IGlwY19wZXJtCnsKIF9fa2VybmVsX2tleV90IGtl eTsKIF9fa2VybmVsX3VpZF90IHVpZDsKIF9fa2VybmVsX2dpZF90IGdpZDsKIF9fa2VybmVsX3Vp ZF90IGN1aWQ7CiBfX2tlcm5lbF9naWRfdCBjZ2lkOwogX19rZXJuZWxfbW9kZV90IG1vZGU7CiB1 bnNpZ25lZCBzaG9ydCBzZXE7Cn07CgoKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVk L3VhcGkvYXNtL2lwY2J1Zi5oIiAxCiMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaXBj YnVmLmgiIDEKIyAyMiAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvaXBjYnVmLmgiCnN0cnVj dCBpcGM2NF9wZXJtIHsKIF9fa2VybmVsX2tleV90IGtleTsKIF9fa2VybmVsX3VpZDMyX3QgdWlk OwogX19rZXJuZWxfZ2lkMzJfdCBnaWQ7CiBfX2tlcm5lbF91aWQzMl90IGN1aWQ7CiBfX2tlcm5l bF9naWQzMl90IGNnaWQ7CiBfX2tlcm5lbF9tb2RlX3QgbW9kZTsKCiB1bnNpZ25lZCBjaGFyIF9f cGFkMVs0IC0gc2l6ZW9mKF9fa2VybmVsX21vZGVfdCldOwogdW5zaWduZWQgc2hvcnQgc2VxOwog dW5zaWduZWQgc2hvcnQgX19wYWQyOwogX19rZXJuZWxfdWxvbmdfdCBfX3VudXNlZDE7CiBfX2tl cm5lbF91bG9uZ190IF9fdW51c2VkMjsKfTsKIyAyICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJh dGVkL3VhcGkvYXNtL2lwY2J1Zi5oIiAyCiMgMjMgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2lwYy5o IiAyCiMgNTggIi4vaW5jbHVkZS91YXBpL2xpbnV4L2lwYy5oIgpzdHJ1Y3QgaXBjX2tsdWRnZSB7 CiBzdHJ1Y3QgbXNnYnVmICptc2dwOwogbG9uZyBtc2d0eXA7Cn07CiMgOSAiLi9pbmNsdWRlL2xp bnV4L2lwYy5oIiAyCgoKCnN0cnVjdCBrZXJuX2lwY19wZXJtIHsKIHNwaW5sb2NrX3QgbG9jazsK IGJvb2wgZGVsZXRlZDsKIGludCBpZDsKIGtleV90IGtleTsKIGt1aWRfdCB1aWQ7CiBrZ2lkX3Qg Z2lkOwoga3VpZF90IGN1aWQ7CiBrZ2lkX3QgY2dpZDsKIHVtb2RlX3QgbW9kZTsKIHVuc2lnbmVk IGxvbmcgc2VxOwogdm9pZCAqc2VjdXJpdHk7Cgogc3RydWN0IHJoYXNoX2hlYWQga2h0bm9kZTsK CiBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCByY3U7CiByZWZjb3VudF90IHJlZmNvdW50Owp9IF9fYXR0 cmlidXRlX18oKF9fYWxpZ25lZF9fKCgxIDw8ICg2KSkpKSkgX19hdHRyaWJ1dGVfXygoX19kZXNp Z25hdGVkX2luaXRfXykpOwojIDYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIiAyCiMgMjUg Ii4vaW5jbHVkZS91YXBpL2xpbnV4L3NlbS5oIgpzdHJ1Y3Qgc2VtaWRfZHMgewogc3RydWN0IGlw Y19wZXJtIHNlbV9wZXJtOwogX19rZXJuZWxfb2xkX3RpbWVfdCBzZW1fb3RpbWU7CiBfX2tlcm5l bF9vbGRfdGltZV90IHNlbV9jdGltZTsKIHN0cnVjdCBzZW0gKnNlbV9iYXNlOwogc3RydWN0IHNl bV9xdWV1ZSAqc2VtX3BlbmRpbmc7CiBzdHJ1Y3Qgc2VtX3F1ZXVlICoqc2VtX3BlbmRpbmdfbGFz dDsKIHN0cnVjdCBzZW1fdW5kbyAqdW5kbzsKIHVuc2lnbmVkIHNob3J0IHNlbV9uc2VtczsKfTsK CgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zZW1idWYuaCIgMQoKCgoKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lwY2J1Zi5oIiAxCiMgNiAiLi9h cmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NlbWJ1Zi5oIiAyCiMgMTggIi4vYXJjaC94ODYvaW5j bHVkZS91YXBpL2FzbS9zZW1idWYuaCIKc3RydWN0IHNlbWlkNjRfZHMgewogc3RydWN0IGlwYzY0 X3Blcm0gc2VtX3Blcm07CgoKCgoKCiBfX2tlcm5lbF9sb25nX3Qgc2VtX290aW1lOwogX19rZXJu ZWxfdWxvbmdfdCBfX3VudXNlZDE7CiBfX2tlcm5lbF9sb25nX3Qgc2VtX2N0aW1lOwogX19rZXJu ZWxfdWxvbmdfdCBfX3VudXNlZDI7CgogX19rZXJuZWxfdWxvbmdfdCBzZW1fbnNlbXM7CiBfX2tl cm5lbF91bG9uZ190IF9fdW51c2VkMzsKIF9fa2VybmVsX3Vsb25nX3QgX191bnVzZWQ0Owp9Owoj IDM4ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zZW0uaCIgMgoKCnN0cnVjdCBzZW1idWYgewogdW5z aWduZWQgc2hvcnQgc2VtX251bTsKIHNob3J0IHNlbV9vcDsKIHNob3J0IHNlbV9mbGc7Cn07CgoK dW5pb24gc2VtdW4gewogaW50IHZhbDsKIHN0cnVjdCBzZW1pZF9kcyAqYnVmOwogdW5zaWduZWQg c2hvcnQgKmFycmF5Owogc3RydWN0IHNlbWluZm8gKl9fYnVmOwogdm9pZCAqX19wYWQ7Cn07Cgpz dHJ1Y3Qgc2VtaW5mbyB7CiBpbnQgc2VtbWFwOwogaW50IHNlbW1uaTsKIGludCBzZW1tbnM7CiBp bnQgc2VtbW51OwogaW50IHNlbW1zbDsKIGludCBzZW1vcG07CiBpbnQgc2VtdW1lOwogaW50IHNl bXVzejsKIGludCBzZW12bXg7CiBpbnQgc2VtYWVtOwp9OwojIDYgIi4vaW5jbHVkZS9saW51eC9z ZW0uaCIgMgoKc3RydWN0IHRhc2tfc3RydWN0OwpzdHJ1Y3Qgc2VtX3VuZG9fbGlzdDsKCgoKc3Ry dWN0IHN5c3Zfc2VtIHsKIHN0cnVjdCBzZW1fdW5kb19saXN0ICp1bmRvX2xpc3Q7Cn07CgpleHRl cm4gaW50IGNvcHlfc2VtdW5kbyh1bnNpZ25lZCBsb25nIGNsb25lX2ZsYWdzLCBzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRzayk7CmV4dGVybiB2b2lkIGV4aXRfc2VtKHN0cnVjdCB0YXNrX3N0cnVjdCAq dHNrKTsKIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIuL2luY2x1ZGUvbGlu dXgvc2htLmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zaG0uaCIgMQoKCgoK CgojIDEgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL2h1Z2V0bGJfZW5jb2RlLmgiIDEKIyA4 ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zaG0uaCIgMgojIDI4ICIuL2luY2x1ZGUvdWFwaS9saW51 eC9zaG0uaCIKc3RydWN0IHNobWlkX2RzIHsKIHN0cnVjdCBpcGNfcGVybSBzaG1fcGVybTsKIGlu dCBzaG1fc2Vnc3o7CiBfX2tlcm5lbF9vbGRfdGltZV90IHNobV9hdGltZTsKIF9fa2VybmVsX29s ZF90aW1lX3Qgc2htX2R0aW1lOwogX19rZXJuZWxfb2xkX3RpbWVfdCBzaG1fY3RpbWU7CiBfX2tl cm5lbF9pcGNfcGlkX3Qgc2htX2NwaWQ7CiBfX2tlcm5lbF9pcGNfcGlkX3Qgc2htX2xwaWQ7CiB1 bnNpZ25lZCBzaG9ydCBzaG1fbmF0dGNoOwogdW5zaWduZWQgc2hvcnQgc2htX3VudXNlZDsKIHZv aWQgKnNobV91bnVzZWQyOwogdm9pZCAqc2htX3VudXNlZDM7Cn07CgoKIyAxICIuL2FyY2gveDg2 L2luY2x1ZGUvdWFwaS9hc20vc2htYnVmLmgiIDEKCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2Fz bS1nZW5lcmljL3NobWJ1Zi5oIiAxCiMgMjUgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3No bWJ1Zi5oIgpzdHJ1Y3Qgc2htaWQ2NF9kcyB7CiBzdHJ1Y3QgaXBjNjRfcGVybSBzaG1fcGVybTsK IHNpemVfdCBzaG1fc2Vnc3o7CgogbG9uZyBzaG1fYXRpbWU7CiBsb25nIHNobV9kdGltZTsKIGxv bmcgc2htX2N0aW1lOwojIDQwICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaG1idWYuaCIK IF9fa2VybmVsX3BpZF90IHNobV9jcGlkOwogX19rZXJuZWxfcGlkX3Qgc2htX2xwaWQ7CiB1bnNp Z25lZCBsb25nIHNobV9uYXR0Y2g7CiB1bnNpZ25lZCBsb25nIF9fdW51c2VkNDsKIHVuc2lnbmVk IGxvbmcgX191bnVzZWQ1Owp9OwoKc3RydWN0IHNobWluZm82NCB7CiB1bnNpZ25lZCBsb25nIHNo bW1heDsKIHVuc2lnbmVkIGxvbmcgc2htbWluOwogdW5zaWduZWQgbG9uZyBzaG1tbmk7CiB1bnNp Z25lZCBsb25nIHNobXNlZzsKIHVuc2lnbmVkIGxvbmcgc2htYWxsOwogdW5zaWduZWQgbG9uZyBf X3VudXNlZDE7CiB1bnNpZ25lZCBsb25nIF9fdW51c2VkMjsKIHVuc2lnbmVkIGxvbmcgX191bnVz ZWQzOwogdW5zaWduZWQgbG9uZyBfX3VudXNlZDQ7Cn07CiMgNyAiLi9hcmNoL3g4Ni9pbmNsdWRl L3VhcGkvYXNtL3NobWJ1Zi5oIiAyCiMgNDQgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NobS5oIiAy CiMgOTMgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NobS5oIgpzdHJ1Y3Qgc2htaW5mbyB7CiBpbnQg c2htbWF4OwogaW50IHNobW1pbjsKIGludCBzaG1tbmk7CiBpbnQgc2htc2VnOwogaW50IHNobWFs bDsKfTsKCnN0cnVjdCBzaG1faW5mbyB7CiBpbnQgdXNlZF9pZHM7CiBfX2tlcm5lbF91bG9uZ190 IHNobV90b3Q7CiBfX2tlcm5lbF91bG9uZ190IHNobV9yc3M7CiBfX2tlcm5lbF91bG9uZ190IHNo bV9zd3A7CiBfX2tlcm5lbF91bG9uZ190IHN3YXBfYXR0ZW1wdHM7CiBfX2tlcm5lbF91bG9uZ190 IHN3YXBfc3VjY2Vzc2VzOwp9OwojIDggIi4vaW5jbHVkZS9saW51eC9zaG0uaCIgMgojIDEgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vc2htcGFyYW0uaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC9z aG0uaCIgMgoKc3RydWN0IGZpbGU7CgoKc3RydWN0IHN5c3Zfc2htIHsKIHN0cnVjdCBsaXN0X2hl YWQgc2htX2NsaXN0Owp9OwoKbG9uZyBkb19zaG1hdChpbnQgc2htaWQsIGNoYXIgKnNobWFkZHIs IGludCBzaG1mbGcsIHVuc2lnbmVkIGxvbmcgKmFkZHIsCiAgICAgICB1bnNpZ25lZCBsb25nIHNo bWxiYSk7CmJvb2wgaXNfZmlsZV9zaG1faHVnZXBhZ2VzKHN0cnVjdCBmaWxlICpmaWxlKTsKdm9p ZCBleGl0X3NobShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOwojIDE3ICIuL2luY2x1ZGUvbGlu dXgvc2NoZWQuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9rY292LmgiIDEKCgoKCiMgMSAiLi9p bmNsdWRlL3VhcGkvbGludXgva2Nvdi5oIiAxCiMgMTEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2tj b3YuaCIKc3RydWN0IGtjb3ZfcmVtb3RlX2FyZyB7CiBfX3UzMiB0cmFjZV9tb2RlOwogX191MzIg YXJlYV9zaXplOwogX191MzIgbnVtX2hhbmRsZXM7CiBfX3U2NCBfX2F0dHJpYnV0ZV9fKChhbGln bmVkKDgpKSkgY29tbW9uX2hhbmRsZTsKIF9fdTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkp KSBoYW5kbGVzWzBdOwp9OwojIDI2ICIuL2luY2x1ZGUvdWFwaS9saW51eC9rY292LmgiCmVudW0g ewojIDM1ICIuL2luY2x1ZGUvdWFwaS9saW51eC9rY292LmgiCiBLQ09WX1RSQUNFX1BDID0gMCwK CiBLQ09WX1RSQUNFX0NNUCA9IDEsCn07CiMgNTYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L2tjb3Yu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgX191NjQga2Nvdl9yZW1vdGVfaGFuZGxlKF9fdTY0IHN1YnN5cywgX191NjQgaW5zdCkKewog aWYgKHN1YnN5cyAmIH4oMHhmZnVsbCA8PCA1NikgfHwgaW5zdCAmIH4oMHhmZmZmZmZmZnVsbCkp CiAgcmV0dXJuIDA7CiByZXR1cm4gc3Vic3lzIHwgaW5zdDsKfQojIDYgIi4vaW5jbHVkZS9saW51 eC9rY292LmgiIDIKCnN0cnVjdCB0YXNrX3N0cnVjdDsKIyA1NyAiLi9pbmNsdWRlL2xpbnV4L2tj b3YuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBrY292X3Rhc2tfaW5pdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpIHt9CnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg a2Nvdl90YXNrX2V4aXQoc3RydWN0IHRhc2tfc3RydWN0ICp0KSB7fQpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtjb3ZfcHJlcGFy ZV9zd2l0Y2goc3RydWN0IHRhc2tfc3RydWN0ICp0KSB7fQpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtjb3ZfZmluaXNoX3N3aXRj aChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpIHt9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQga2Nvdl9yZW1vdGVfc3RhcnQodTY0IGhh bmRsZSkge30Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBrY292X3JlbW90ZV9zdG9wKHZvaWQpIHt9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHU2NCBrY292X2NvbW1vbl9o YW5kbGUodm9pZCkKewogcmV0dXJuIDA7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrY292X3JlbW90ZV9zdGFydF9jb21tb24o dTY0IGlkKSB7fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGtjb3ZfcmVtb3RlX3N0YXJ0X3VzYih1NjQgaWQpIHt9CiMgMTggIi4v aW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCgojIDEgIi4vaW5jbHVkZS9saW51eC9wbGlzdC5oIiAx CiMgNzkgIi4vaW5jbHVkZS9saW51eC9wbGlzdC5oIgpzdHJ1Y3QgcGxpc3RfaGVhZCB7CiBzdHJ1 Y3QgbGlzdF9oZWFkIG5vZGVfbGlzdDsKfTsKCnN0cnVjdCBwbGlzdF9ub2RlIHsKIGludCBwcmlv Owogc3RydWN0IGxpc3RfaGVhZCBwcmlvX2xpc3Q7CiBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGVfbGlz dDsKfTsKIyAxMjEgIi4vaW5jbHVkZS9saW51eC9wbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkCnBsaXN0X2hlYWRfaW5p dChzdHJ1Y3QgcGxpc3RfaGVhZCAqaGVhZCkKewogSU5JVF9MSVNUX0hFQUQoJmhlYWQtPm5vZGVf bGlzdCk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBwbGlzdF9ub2RlX2luaXQoc3RydWN0IHBsaXN0X25vZGUgKm5v ZGUsIGludCBwcmlvKQp7CiBub2RlLT5wcmlvID0gcHJpbzsKIElOSVRfTElTVF9IRUFEKCZub2Rl LT5wcmlvX2xpc3QpOwogSU5JVF9MSVNUX0hFQUQoJm5vZGUtPm5vZGVfbGlzdCk7Cn0KCmV4dGVy biB2b2lkIHBsaXN0X2FkZChzdHJ1Y3QgcGxpc3Rfbm9kZSAqbm9kZSwgc3RydWN0IHBsaXN0X2hl YWQgKmhlYWQpOwpleHRlcm4gdm9pZCBwbGlzdF9kZWwoc3RydWN0IHBsaXN0X25vZGUgKm5vZGUs IHN0cnVjdCBwbGlzdF9oZWFkICpoZWFkKTsKCmV4dGVybiB2b2lkIHBsaXN0X3JlcXVldWUoc3Ry dWN0IHBsaXN0X25vZGUgKm5vZGUsIHN0cnVjdCBwbGlzdF9oZWFkICpoZWFkKTsKIyAyMTAgIi4v aW5jbHVkZS9saW51eC9wbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGxpc3RfaGVhZF9lbXB0eShjb25zdCBzdHJ1Y3Qg cGxpc3RfaGVhZCAqaGVhZCkKewogcmV0dXJuIGxpc3RfZW1wdHkoJmhlYWQtPm5vZGVfbGlzdCk7 Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgcGxpc3Rfbm9kZV9lbXB0eShjb25zdCBzdHJ1Y3QgcGxpc3Rfbm9kZSAqbm9k ZSkKewogcmV0dXJuIGxpc3RfZW1wdHkoJm5vZGUtPm5vZGVfbGlzdCk7Cn0KIyAyODAgIi4vaW5j bHVkZS9saW51eC9wbGlzdC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgcGxpc3Rfbm9kZSAqcGxpc3RfZmlyc3QoY29uc3Qg c3RydWN0IHBsaXN0X2hlYWQgKmhlYWQpCnsKIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9p ZCAqKShoZWFkLT5ub2RlX2xpc3QubmV4dCk7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGlt ZV9hc3NlcnRfMjgyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBl IG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVz X2NvbXBhdGlibGVfcCh0eXBlb2YoKihoZWFkLT5ub2RlX2xpc3QubmV4dCkpLCB0eXBlb2YoKChz dHJ1Y3QgcGxpc3Rfbm9kZSAqKTApLT5ub2RlX2xpc3QpKSAmJiAhX19idWlsdGluX3R5cGVzX2Nv bXBhdGlibGVfcCh0eXBlb2YoKihoZWFkLT5ub2RlX2xpc3QubmV4dCkpLCB0eXBlb2Yodm9pZCkp KSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzI4MigpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgcGxp c3Rfbm9kZSAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBsaXN0X25vZGUs IG5vZGVfbGlzdCkpKTsgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQoK CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgc3RydWN0IHBsaXN0X25vZGUgKnBsaXN0X2xhc3QoY29uc3Qgc3RydWN0IHBsaXN0X2hl YWQgKmhlYWQpCnsKIHJldHVybiAoeyB2b2lkICpfX21wdHIgPSAodm9pZCAqKShoZWFkLT5ub2Rl X2xpc3QucHJldik7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMjk0KHZv aWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21hdGNoIGluIGNv bnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0 eXBlb2YoKihoZWFkLT5ub2RlX2xpc3QucHJldikpLCB0eXBlb2YoKChzdHJ1Y3QgcGxpc3Rfbm9k ZSAqKTApLT5ub2RlX2xpc3QpKSAmJiAhX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBl b2YoKihoZWFkLT5ub2RlX2xpc3QucHJldikpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29tcGlsZXRp bWVfYXNzZXJ0XzI5NCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgcGxpc3Rfbm9kZSAqKShfX21w dHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IHBsaXN0X25vZGUsIG5vZGVfbGlzdCkpKTsg fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKfQojIDIwICIuL2luY2x1ZGUv bGludXgvc2NoZWQuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiIDEKIyAxNSAi Li9pbmNsdWRlL2xpbnV4L2hydGltZXIuaCIKIyAxICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lcl9k ZWZzLmgiIDEKIyAxNiAiLi9pbmNsdWRlL2xpbnV4L2hydGltZXIuaCIgMgoKCgoKCiMgMSAiLi9p bmNsdWRlL2xpbnV4L3RpbWVycXVldWUuaCIgMQojIDkgIi4vaW5jbHVkZS9saW51eC90aW1lcnF1 ZXVlLmgiCnN0cnVjdCB0aW1lcnF1ZXVlX25vZGUgewogc3RydWN0IHJiX25vZGUgbm9kZTsKIGt0 aW1lX3QgZXhwaXJlczsKfTsKCnN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgewogc3RydWN0IHJiX3Jv b3RfY2FjaGVkIHJiX3Jvb3Q7Cn07CgoKZXh0ZXJuIGJvb2wgdGltZXJxdWV1ZV9hZGQoc3RydWN0 IHRpbWVycXVldWVfaGVhZCAqaGVhZCwKICAgICAgc3RydWN0IHRpbWVycXVldWVfbm9kZSAqbm9k ZSk7CmV4dGVybiBib29sIHRpbWVycXVldWVfZGVsKHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgKmhl YWQsCiAgICAgIHN0cnVjdCB0aW1lcnF1ZXVlX25vZGUgKm5vZGUpOwpleHRlcm4gc3RydWN0IHRp bWVycXVldWVfbm9kZSAqdGltZXJxdWV1ZV9pdGVyYXRlX25leHQoCiAgICAgIHN0cnVjdCB0aW1l cnF1ZXVlX25vZGUgKm5vZGUpOwojIDMzICIuL2luY2x1ZGUvbGludXgvdGltZXJxdWV1ZS5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKQpz dHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICp0aW1lcnF1ZXVlX2dldG5leHQoc3RydWN0IHRpbWVycXVl dWVfaGVhZCAqaGVhZCkKewogc3RydWN0IHJiX25vZGUgKmxlZnRtb3N0ID0gKCZoZWFkLT5yYl9y b290KS0+cmJfbGVmdG1vc3Q7CgogcmV0dXJuICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICopKGxl ZnRtb3N0KTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8zOCh2b2lkKSBf X2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWlu ZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9m KCoobGVmdG1vc3QpKSwgdHlwZW9mKCgoc3RydWN0IHRpbWVycXVldWVfbm9kZSAqKTApLT5ub2Rl KSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCoobGVmdG1vc3QpKSwg dHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF8zOCgpOyB9IHdoaWxlICgwKTsg KChzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICopKF9fbXB0ciAtIF9fYnVpbHRpbl9vZmZzZXRvZihz dHJ1Y3QgdGltZXJxdWV1ZV9ub2RlLCBub2RlKSkpOyB9KTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0aW1lcnF1ZXVlX2lu aXQoc3RydWN0IHRpbWVycXVldWVfbm9kZSAqbm9kZSkKewogKCgmbm9kZS0+bm9kZSktPl9fcmJf cGFyZW50X2NvbG9yID0gKHVuc2lnbmVkIGxvbmcpKCZub2RlLT5ub2RlKSk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGlt ZXJxdWV1ZV9ub2RlX3F1ZXVlZChzdHJ1Y3QgdGltZXJxdWV1ZV9ub2RlICpub2RlKQp7CiByZXR1 cm4gISgoJm5vZGUtPm5vZGUpLT5fX3JiX3BhcmVudF9jb2xvciA9PSAodW5zaWduZWQgbG9uZyko Jm5vZGUtPm5vZGUpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0aW1lcnF1ZXVlX25vZGVfZXhwaXJlcyhzdHJ1Y3QgdGlt ZXJxdWV1ZV9ub2RlICpub2RlKQp7CiByZXR1cm4gbm9kZS0+ZXhwaXJlczsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0aW1l cnF1ZXVlX2luaXRfaGVhZChzdHJ1Y3QgdGltZXJxdWV1ZV9oZWFkICpoZWFkKQp7CiBoZWFkLT5y Yl9yb290ID0gKHN0cnVjdCByYl9yb290X2NhY2hlZCkgeyB7KCh2b2lkICopMCksIH0sICgodm9p ZCAqKTApIH07Cn0KIyAyMiAiLi9pbmNsdWRlL2xpbnV4L2hydGltZXIuaCIgMgoKc3RydWN0IGhy dGltZXJfY2xvY2tfYmFzZTsKc3RydWN0IGhydGltZXJfY3B1X2Jhc2U7CiMgMzggIi4vaW5jbHVk ZS9saW51eC9ocnRpbWVyLmgiCmVudW0gaHJ0aW1lcl9tb2RlIHsKIEhSVElNRVJfTU9ERV9BQlMg PSAweDAwLAogSFJUSU1FUl9NT0RFX1JFTCA9IDB4MDEsCiBIUlRJTUVSX01PREVfUElOTkVEID0g MHgwMiwKIEhSVElNRVJfTU9ERV9TT0ZUID0gMHgwNCwKIEhSVElNRVJfTU9ERV9IQVJEID0gMHgw OCwKCiBIUlRJTUVSX01PREVfQUJTX1BJTk5FRCA9IEhSVElNRVJfTU9ERV9BQlMgfCBIUlRJTUVS X01PREVfUElOTkVELAogSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQgPSBIUlRJTUVSX01PREVfUkVM IHwgSFJUSU1FUl9NT0RFX1BJTk5FRCwKCiBIUlRJTUVSX01PREVfQUJTX1NPRlQgPSBIUlRJTUVS X01PREVfQUJTIHwgSFJUSU1FUl9NT0RFX1NPRlQsCiBIUlRJTUVSX01PREVfUkVMX1NPRlQgPSBI UlRJTUVSX01PREVfUkVMIHwgSFJUSU1FUl9NT0RFX1NPRlQsCgogSFJUSU1FUl9NT0RFX0FCU19Q SU5ORURfU09GVCA9IEhSVElNRVJfTU9ERV9BQlNfUElOTkVEIHwgSFJUSU1FUl9NT0RFX1NPRlQs CiBIUlRJTUVSX01PREVfUkVMX1BJTk5FRF9TT0ZUID0gSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQg fCBIUlRJTUVSX01PREVfU09GVCwKCiBIUlRJTUVSX01PREVfQUJTX0hBUkQgPSBIUlRJTUVSX01P REVfQUJTIHwgSFJUSU1FUl9NT0RFX0hBUkQsCiBIUlRJTUVSX01PREVfUkVMX0hBUkQgPSBIUlRJ TUVSX01PREVfUkVMIHwgSFJUSU1FUl9NT0RFX0hBUkQsCgogSFJUSU1FUl9NT0RFX0FCU19QSU5O RURfSEFSRCA9IEhSVElNRVJfTU9ERV9BQlNfUElOTkVEIHwgSFJUSU1FUl9NT0RFX0hBUkQsCiBI UlRJTUVSX01PREVfUkVMX1BJTk5FRF9IQVJEID0gSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQgfCBI UlRJTUVSX01PREVfSEFSRCwKfTsKCgoKCmVudW0gaHJ0aW1lcl9yZXN0YXJ0IHsKIEhSVElNRVJf Tk9SRVNUQVJULAogSFJUSU1FUl9SRVNUQVJULAp9OwojIDExNyAiLi9pbmNsdWRlL2xpbnV4L2hy dGltZXIuaCIKc3RydWN0IGhydGltZXIgewogc3RydWN0IHRpbWVycXVldWVfbm9kZSBub2RlOwog a3RpbWVfdCBfc29mdGV4cGlyZXM7CiBlbnVtIGhydGltZXJfcmVzdGFydCAoKmZ1bmN0aW9uKShz dHJ1Y3QgaHJ0aW1lciAqKTsKIHN0cnVjdCBocnRpbWVyX2Nsb2NrX2Jhc2UgKmJhc2U7CiB1OCBz dGF0ZTsKIHU4IGlzX3JlbDsKIHU4IGlzX3NvZnQ7CiB1OCBpc19oYXJkOwp9OwojIDEzNSAiLi9p bmNsdWRlL2xpbnV4L2hydGltZXIuaCIKc3RydWN0IGhydGltZXJfc2xlZXBlciB7CiBzdHJ1Y3Qg aHJ0aW1lciB0aW1lcjsKIHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKfTsKIyAxNTggIi4vaW5j bHVkZS9saW51eC9ocnRpbWVyLmgiCnN0cnVjdCBocnRpbWVyX2Nsb2NrX2Jhc2Ugewogc3RydWN0 IGhydGltZXJfY3B1X2Jhc2UgKmNwdV9iYXNlOwogdW5zaWduZWQgaW50IGluZGV4OwogY2xvY2tp ZF90IGNsb2NraWQ7CiBzZXFjb3VudF90IHNlcTsKIHN0cnVjdCBocnRpbWVyICpydW5uaW5nOwog c3RydWN0IHRpbWVycXVldWVfaGVhZCBhY3RpdmU7CiBrdGltZV90ICgqZ2V0X3RpbWUpKHZvaWQp Owoga3RpbWVfdCBvZmZzZXQ7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYp KSkpKTsKCmVudW0gaHJ0aW1lcl9iYXNlX3R5cGUgewogSFJUSU1FUl9CQVNFX01PTk9UT05JQywK IEhSVElNRVJfQkFTRV9SRUFMVElNRSwKIEhSVElNRVJfQkFTRV9CT09UVElNRSwKIEhSVElNRVJf QkFTRV9UQUksCiBIUlRJTUVSX0JBU0VfTU9OT1RPTklDX1NPRlQsCiBIUlRJTUVSX0JBU0VfUkVB TFRJTUVfU09GVCwKIEhSVElNRVJfQkFTRV9CT09UVElNRV9TT0ZULAogSFJUSU1FUl9CQVNFX1RB SV9TT0ZULAogSFJUSU1FUl9NQVhfQ0xPQ0tfQkFTRVMsCn07CiMgMjEzICIuL2luY2x1ZGUvbGlu dXgvaHJ0aW1lci5oIgpzdHJ1Y3QgaHJ0aW1lcl9jcHVfYmFzZSB7CiByYXdfc3BpbmxvY2tfdCBs b2NrOwogdW5zaWduZWQgaW50IGNwdTsKIHVuc2lnbmVkIGludCBhY3RpdmVfYmFzZXM7CiB1bnNp Z25lZCBpbnQgY2xvY2tfd2FzX3NldF9zZXE7CiB1bnNpZ25lZCBpbnQgaHJlc19hY3RpdmUgOiAx LAogICAgIGluX2hydGlycSA6IDEsCiAgICAgaGFuZ19kZXRlY3RlZCA6IDEsCiAgICAgc29mdGly cV9hY3RpdmF0ZWQgOiAxOwoKIHVuc2lnbmVkIGludCBucl9ldmVudHM7CiB1bnNpZ25lZCBzaG9y dCBucl9yZXRyaWVzOwogdW5zaWduZWQgc2hvcnQgbnJfaGFuZ3M7CiB1bnNpZ25lZCBpbnQgbWF4 X2hhbmdfdGltZTsKCgoKCgoga3RpbWVfdCBleHBpcmVzX25leHQ7CiBzdHJ1Y3QgaHJ0aW1lciAq bmV4dF90aW1lcjsKIGt0aW1lX3Qgc29mdGlycV9leHBpcmVzX25leHQ7CiBzdHJ1Y3QgaHJ0aW1l ciAqc29mdGlycV9uZXh0X3RpbWVyOwogc3RydWN0IGhydGltZXJfY2xvY2tfYmFzZSBjbG9ja19i YXNlW0hSVElNRVJfTUFYX0NMT0NLX0JBU0VTXTsKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRf XygoMSA8PCAoNikpKSkpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRpbWVyX3NldF9leHBpcmVzKHN0cnVjdCBocnRpbWVy ICp0aW1lciwga3RpbWVfdCB0aW1lKQp7CiB0aW1lci0+bm9kZS5leHBpcmVzID0gdGltZTsKIHRp bWVyLT5fc29mdGV4cGlyZXMgPSB0aW1lOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfc2V0X2V4cGlyZXNfcmFu Z2Uoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbWUsIGt0aW1lX3QgZGVsdGEpCnsK IHRpbWVyLT5fc29mdGV4cGlyZXMgPSB0aW1lOwogdGltZXItPm5vZGUuZXhwaXJlcyA9IGt0aW1l X2FkZF9zYWZlKHRpbWUsIGRlbHRhKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRpbWVyX3NldF9leHBpcmVzX3Jhbmdl X25zKHN0cnVjdCBocnRpbWVyICp0aW1lciwga3RpbWVfdCB0aW1lLCB1NjQgZGVsdGEpCnsKIHRp bWVyLT5fc29mdGV4cGlyZXMgPSB0aW1lOwogdGltZXItPm5vZGUuZXhwaXJlcyA9IGt0aW1lX2Fk ZF9zYWZlKHRpbWUsIG5zX3RvX2t0aW1lKGRlbHRhKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9zZXRfZXhw aXJlc190djY0KHN0cnVjdCBocnRpbWVyICp0aW1lciwgczY0IHR2NjQpCnsKIHRpbWVyLT5ub2Rl LmV4cGlyZXMgPSB0djY0OwogdGltZXItPl9zb2Z0ZXhwaXJlcyA9IHR2NjQ7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0 aW1lcl9hZGRfZXhwaXJlcyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsIGt0aW1lX3QgdGltZSkKewog dGltZXItPm5vZGUuZXhwaXJlcyA9IGt0aW1lX2FkZF9zYWZlKHRpbWVyLT5ub2RlLmV4cGlyZXMs IHRpbWUpOwogdGltZXItPl9zb2Z0ZXhwaXJlcyA9IGt0aW1lX2FkZF9zYWZlKHRpbWVyLT5fc29m dGV4cGlyZXMsIHRpbWUpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJfYWRkX2V4cGlyZXNfbnMoc3RydWN0IGhy dGltZXIgKnRpbWVyLCB1NjQgbnMpCnsKIHRpbWVyLT5ub2RlLmV4cGlyZXMgPSAoKHRpbWVyLT5u b2RlLmV4cGlyZXMpICsgKG5zKSk7CiB0aW1lci0+X3NvZnRleHBpcmVzID0gKCh0aW1lci0+X3Nv ZnRleHBpcmVzKSArIChucykpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90IGhydGltZXJfZ2V0X2V4cGlyZXMoY29uc3Qg c3RydWN0IGhydGltZXIgKnRpbWVyKQp7CiByZXR1cm4gdGltZXItPm5vZGUuZXhwaXJlczsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg a3RpbWVfdCBocnRpbWVyX2dldF9zb2Z0ZXhwaXJlcyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGlt ZXIpCnsKIHJldHVybiB0aW1lci0+X3NvZnRleHBpcmVzOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQgaHJ0aW1lcl9nZXRfZXhw aXJlc190djY0KGNvbnN0IHN0cnVjdCBocnRpbWVyICp0aW1lcikKewogcmV0dXJuIHRpbWVyLT5u b2RlLmV4cGlyZXM7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgczY0IGhydGltZXJfZ2V0X3NvZnRleHBpcmVzX3R2NjQoY29uc3Qgc3Ry dWN0IGhydGltZXIgKnRpbWVyKQp7CiByZXR1cm4gdGltZXItPl9zb2Z0ZXhwaXJlczsKfQoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgczY0 IGhydGltZXJfZ2V0X2V4cGlyZXNfbnMoY29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyKQp7CiBy ZXR1cm4ga3RpbWVfdG9fbnModGltZXItPm5vZGUuZXhwaXJlcyk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGt0aW1lX3QgaHJ0aW1l cl9leHBpcmVzX3JlbWFpbmluZyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCnsKIHJldHVy biAoKHRpbWVyLT5ub2RlLmV4cGlyZXMpIC0gKHRpbWVyLT5iYXNlLT5nZXRfdGltZSgpKSk7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGt0aW1lX3QgaHJ0aW1lcl9jYl9nZXRfdGltZShzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCnsKIHJl dHVybiB0aW1lci0+YmFzZS0+Z2V0X3RpbWUoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGhydGltZXJfaXNfaHJlc19hY3Rp dmUoc3RydWN0IGhydGltZXIgKnRpbWVyKQp7CiByZXR1cm4gMSA/CiAgdGltZXItPmJhc2UtPmNw dV9iYXNlLT5ocmVzX2FjdGl2ZSA6IDA7Cn0KCgpzdHJ1Y3QgY2xvY2tfZXZlbnRfZGV2aWNlOwoK ZXh0ZXJuIHZvaWQgaHJ0aW1lcl9pbnRlcnJ1cHQoc3RydWN0IGNsb2NrX2V2ZW50X2RldmljZSAq ZGV2KTsKCmV4dGVybiB2b2lkIGNsb2NrX3dhc19zZXRfZGVsYXllZCh2b2lkKTsKCmV4dGVybiB1 bnNpZ25lZCBpbnQgaHJ0aW1lcl9yZXNvbHV0aW9uOwojIDMzMiAiLi9pbmNsdWRlL2xpbnV4L2hy dGltZXIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkga3RpbWVfdApfX2hydGltZXJfZXhwaXJlc19yZW1haW5pbmdfYWRqdXN0ZWQoY29u c3Qgc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IG5vdykKewoga3RpbWVfdCByZW0gPSAo KHRpbWVyLT5ub2RlLmV4cGlyZXMpIC0gKG5vdykpOwoKCgoKCiBpZiAoMCAmJiB0aW1lci0+aXNf cmVsKQogIHJlbSAtPSBocnRpbWVyX3Jlc29sdXRpb247CiByZXR1cm4gcmVtOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrdGltZV90 CmhydGltZXJfZXhwaXJlc19yZW1haW5pbmdfYWRqdXN0ZWQoY29uc3Qgc3RydWN0IGhydGltZXIg KnRpbWVyKQp7CiByZXR1cm4gX19ocnRpbWVyX2V4cGlyZXNfcmVtYWluaW5nX2FkanVzdGVkKHRp bWVyLAogICAgICAgICAgdGltZXItPmJhc2UtPmdldF90aW1lKCkpOwp9CgpleHRlcm4gdm9pZCBj bG9ja193YXNfc2V0KHZvaWQpOwoKZXh0ZXJuIHZvaWQgdGltZXJmZF9jbG9ja193YXNfc2V0KHZv aWQpOwoKCgpleHRlcm4gdm9pZCBocnRpbWVyc19yZXN1bWUodm9pZCk7CgpleHRlcm4gX19hdHRy aWJ1dGVfXygoc2VjdGlvbigiLmRhdGEuLnBlcmNwdSIgIiIpKSkgX190eXBlb2ZfXyhzdHJ1Y3Qg dGlja19kZXZpY2UpIHRpY2tfY3B1X2RldmljZTsKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9jYW5jZWxfd2Fp dF9ydW5uaW5nKHN0cnVjdCBocnRpbWVyICp0aW1lcikKewogY3B1X3JlbGF4KCk7Cn0KCgoKCgpl eHRlcm4gdm9pZCBocnRpbWVyX2luaXQoc3RydWN0IGhydGltZXIgKnRpbWVyLCBjbG9ja2lkX3Qg d2hpY2hfY2xvY2ssCiAgICBlbnVtIGhydGltZXJfbW9kZSBtb2RlKTsKZXh0ZXJuIHZvaWQgaHJ0 aW1lcl9pbml0X3NsZWVwZXIoc3RydWN0IGhydGltZXJfc2xlZXBlciAqc2wsIGNsb2NraWRfdCBj bG9ja19pZCwKICAgICBlbnVtIGhydGltZXJfbW9kZSBtb2RlKTsKIyAzODkgIi4vaW5jbHVkZS9s aW51eC9ocnRpbWVyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgaHJ0aW1lcl9pbml0X29uX3N0YWNrKHN0cnVjdCBocnRpbWVy ICp0aW1lciwKICAgICAgY2xvY2tpZF90IHdoaWNoX2Nsb2NrLAogICAgICBlbnVtIGhydGltZXJf bW9kZSBtb2RlKQp7CiBocnRpbWVyX2luaXQodGltZXIsIHdoaWNoX2Nsb2NrLCBtb2RlKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBocnRpbWVyX2luaXRfc2xlZXBlcl9vbl9zdGFjayhzdHJ1Y3QgaHJ0aW1lcl9zbGVlcGVy ICpzbCwKICAgICAgIGNsb2NraWRfdCBjbG9ja19pZCwKICAgICAgIGVudW0gaHJ0aW1lcl9tb2Rl IG1vZGUpCnsKIGhydGltZXJfaW5pdF9zbGVlcGVyKHNsLCBjbG9ja19pZCwgbW9kZSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZv aWQgZGVzdHJveV9ocnRpbWVyX29uX3N0YWNrKHN0cnVjdCBocnRpbWVyICp0aW1lcikgeyB9CgoK CmV4dGVybiB2b2lkIGhydGltZXJfc3RhcnRfcmFuZ2VfbnMoc3RydWN0IGhydGltZXIgKnRpbWVy LCBrdGltZV90IHRpbSwKICAgICAgIHU2NCByYW5nZV9ucywgY29uc3QgZW51bSBocnRpbWVyX21v ZGUgbW9kZSk7CiMgNDE4ICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lci5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGhydGltZXJf c3RhcnQoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IHRpbSwKICAgICBjb25zdCBlbnVt IGhydGltZXJfbW9kZSBtb2RlKQp7CiBocnRpbWVyX3N0YXJ0X3JhbmdlX25zKHRpbWVyLCB0aW0s IDAsIG1vZGUpOwp9CgpleHRlcm4gaW50IGhydGltZXJfY2FuY2VsKHN0cnVjdCBocnRpbWVyICp0 aW1lcik7CmV4dGVybiBpbnQgaHJ0aW1lcl90cnlfdG9fY2FuY2VsKHN0cnVjdCBocnRpbWVyICp0 aW1lcik7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGhydGltZXJfc3RhcnRfZXhwaXJlcyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIs CiAgICAgIGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpCnsKIHU2NCBkZWx0YTsKIGt0aW1lX3Qgc29m dCwgaGFyZDsKIHNvZnQgPSBocnRpbWVyX2dldF9zb2Z0ZXhwaXJlcyh0aW1lcik7CiBoYXJkID0g aHJ0aW1lcl9nZXRfZXhwaXJlcyh0aW1lcik7CiBkZWx0YSA9IGt0aW1lX3RvX25zKCgoaGFyZCkg LSAoc29mdCkpKTsKIGhydGltZXJfc3RhcnRfcmFuZ2VfbnModGltZXIsIHNvZnQsIGRlbHRhLCBt b2RlKTsKfQoKdm9pZCBocnRpbWVyX3NsZWVwZXJfc3RhcnRfZXhwaXJlcyhzdHJ1Y3QgaHJ0aW1l cl9zbGVlcGVyICpzbCwKICAgICAgIGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBocnRp bWVyX3Jlc3RhcnQoc3RydWN0IGhydGltZXIgKnRpbWVyKQp7CiBocnRpbWVyX3N0YXJ0X2V4cGly ZXModGltZXIsIEhSVElNRVJfTU9ERV9BQlMpOwp9CgoKZXh0ZXJuIGt0aW1lX3QgX19ocnRpbWVy X2dldF9yZW1haW5pbmcoY29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyLCBib29sIGFkanVzdCk7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBrdGltZV90IGhydGltZXJfZ2V0X3JlbWFpbmluZyhjb25zdCBzdHJ1Y3QgaHJ0aW1lciAqdGlt ZXIpCnsKIHJldHVybiBfX2hydGltZXJfZ2V0X3JlbWFpbmluZyh0aW1lciwgZmFsc2UpOwp9Cgpl eHRlcm4gdTY0IGhydGltZXJfZ2V0X25leHRfZXZlbnQodm9pZCk7CmV4dGVybiB1NjQgaHJ0aW1l cl9uZXh0X2V2ZW50X3dpdGhvdXQoY29uc3Qgc3RydWN0IGhydGltZXIgKmV4Y2x1ZGUpOwoKZXh0 ZXJuIGJvb2wgaHJ0aW1lcl9hY3RpdmUoY29uc3Qgc3RydWN0IGhydGltZXIgKnRpbWVyKTsKIyA0 NjcgIi4vaW5jbHVkZS9saW51eC9ocnRpbWVyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaHJ0aW1lcl9pc19xdWV1ZWQoc3Ry dWN0IGhydGltZXIgKnRpbWVyKQp7CgogcmV0dXJuICEhKCh7IHVuaW9uIHsgdHlwZW9mKHRpbWVy LT5zdGF0ZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3Np emUoJih0aW1lci0+c3RhdGUpLCBfX3UuX19jLCBzaXplb2YodGltZXItPnN0YXRlKSk7IGVsc2Ug X19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYodGltZXItPnN0YXRlKSwgX191Ll9fYywgc2l6ZW9m KHRpbWVyLT5zdGF0ZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pICYgMHgwMSk7 Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgaHJ0aW1lcl9jYWxsYmFja19ydW5uaW5nKHN0cnVjdCBocnRpbWVyICp0aW1l cikKewogcmV0dXJuIHRpbWVyLT5iYXNlLT5ydW5uaW5nID09IHRpbWVyOwp9CgoKZXh0ZXJuIHU2 NApocnRpbWVyX2ZvcndhcmQoc3RydWN0IGhydGltZXIgKnRpbWVyLCBrdGltZV90IG5vdywga3Rp bWVfdCBpbnRlcnZhbCk7CiMgNTAyICIuL2luY2x1ZGUvbGludXgvaHJ0aW1lci5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1NjQgaHJ0 aW1lcl9mb3J3YXJkX25vdyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIsCiAgICAgICAgICBrdGltZV90 IGludGVydmFsKQp7CiByZXR1cm4gaHJ0aW1lcl9mb3J3YXJkKHRpbWVyLCB0aW1lci0+YmFzZS0+ Z2V0X3RpbWUoKSwgaW50ZXJ2YWwpOwp9CgoKCmV4dGVybiBpbnQgbmFub3NsZWVwX2NvcHlvdXQo c3RydWN0IHJlc3RhcnRfYmxvY2sgKiwgc3RydWN0IHRpbWVzcGVjNjQgKik7CmV4dGVybiBsb25n IGhydGltZXJfbmFub3NsZWVwKGt0aW1lX3QgcnF0cCwgY29uc3QgZW51bSBocnRpbWVyX21vZGUg bW9kZSwKICAgICAgICAgY29uc3QgY2xvY2tpZF90IGNsb2NraWQpOwoKZXh0ZXJuIGludCBzY2hl ZHVsZV9ocnRpbWVvdXRfcmFuZ2Uoa3RpbWVfdCAqZXhwaXJlcywgdTY0IGRlbHRhLAogICAgICAg IGNvbnN0IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwpleHRlcm4gaW50IHNjaGVkdWxlX2hydGlt ZW91dF9yYW5nZV9jbG9jayhrdGltZV90ICpleHBpcmVzLAogICAgICAgdTY0IGRlbHRhLAogICAg ICAgY29uc3QgZW51bSBocnRpbWVyX21vZGUgbW9kZSwKICAgICAgIGNsb2NraWRfdCBjbG9ja19p ZCk7CmV4dGVybiBpbnQgc2NoZWR1bGVfaHJ0aW1lb3V0KGt0aW1lX3QgKmV4cGlyZXMsIGNvbnN0 IGVudW0gaHJ0aW1lcl9tb2RlIG1vZGUpOwoKCmV4dGVybiB2b2lkIGhydGltZXJfcnVuX3F1ZXVl cyh2b2lkKTsKCgpleHRlcm4gdm9pZCBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQu dGV4dCIpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKSBocnRpbWVyc19pbml0KHZvaWQpOwoK CmV4dGVybiB2b2lkIHN5c3JxX3RpbWVyX2xpc3Rfc2hvdyh2b2lkKTsKCmludCBocnRpbWVyc19w cmVwYXJlX2NwdSh1bnNpZ25lZCBpbnQgY3B1KTsKCmludCBocnRpbWVyc19kZWFkX2NwdSh1bnNp Z25lZCBpbnQgY3B1KTsKIyAyMSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIuL2lu Y2x1ZGUvbGludXgvc2VjY29tcC5oIiAxCgoKCgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3Nl Y2NvbXAuaCIgMQojIDU5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zZWNjb21wLmgiCnN0cnVjdCBz ZWNjb21wX2RhdGEgewogaW50IG5yOwogX191MzIgYXJjaDsKIF9fdTY0IGluc3RydWN0aW9uX3Bv aW50ZXI7CiBfX3U2NCBhcmdzWzZdOwp9OwoKc3RydWN0IHNlY2NvbXBfbm90aWZfc2l6ZXMgewog X191MTYgc2VjY29tcF9ub3RpZjsKIF9fdTE2IHNlY2NvbXBfbm90aWZfcmVzcDsKIF9fdTE2IHNl Y2NvbXBfZGF0YTsKfTsKCnN0cnVjdCBzZWNjb21wX25vdGlmIHsKIF9fdTY0IGlkOwogX191MzIg cGlkOwogX191MzIgZmxhZ3M7CiBzdHJ1Y3Qgc2VjY29tcF9kYXRhIGRhdGE7Cn07CiMgMTA4ICIu L2luY2x1ZGUvdWFwaS9saW51eC9zZWNjb21wLmgiCnN0cnVjdCBzZWNjb21wX25vdGlmX3Jlc3Ag ewogX191NjQgaWQ7CiBfX3M2NCB2YWw7CiBfX3MzMiBlcnJvcjsKIF9fdTMyIGZsYWdzOwp9Owoj IDYgIi4vaW5jbHVkZS9saW51eC9zZWNjb21wLmgiIDIKIyAxNSAiLi9pbmNsdWRlL2xpbnV4L3Nl Y2NvbXAuaCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3NlY2NvbXAuaCIgMQoKCgoKIyAx ICIuL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZC5oIiAxCgoKCgojIDEgIi4vYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS91bmlzdGQuaCIgMQojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20v dW5pc3RkLmgiIDIKIyAxOCAiLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91bmlzdGQuaCIKIyAxICIu L2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL3VuaXN0ZF82NC5oIiAxCiMgMTkg Ii4vYXJjaC94ODYvaW5jbHVkZS9hc20vdW5pc3RkLmgiIDIKIyAxICIuL2FyY2gveDg2L2luY2x1 ZGUvZ2VuZXJhdGVkL2FzbS91bmlzdGRfNjRfeDMyLmgiIDEKIyAyMCAiLi9hcmNoL3g4Ni9pbmNs dWRlL2FzbS91bmlzdGQuaCIgMgojIDYgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2VjY29tcC5o IiAyCiMgMTkgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2VjY29tcC5oIgojIDEgIi4vaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWNjb21wLmgiIDEKIyAxMSAiLi9pbmNsdWRlL2FzbS1nZW5lcmljL3Nl Y2NvbXAuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC91bmlzdGQuaCIgMQojIDEyICIuL2lu Y2x1ZGUvYXNtLWdlbmVyaWMvc2VjY29tcC5oIiAyCiMgMjAgIi4vYXJjaC94ODYvaW5jbHVkZS9h c20vc2VjY29tcC5oIiAyCiMgMTYgIi4vaW5jbHVkZS9saW51eC9zZWNjb21wLmgiIDIKCnN0cnVj dCBzZWNjb21wX2ZpbHRlcjsKIyAyOSAiLi9pbmNsdWRlL2xpbnV4L3NlY2NvbXAuaCIKc3RydWN0 IHNlY2NvbXAgewogaW50IG1vZGU7CiBzdHJ1Y3Qgc2VjY29tcF9maWx0ZXIgKmZpbHRlcjsKfTsK CgpleHRlcm4gaW50IF9fc2VjdXJlX2NvbXB1dGluZyhjb25zdCBzdHJ1Y3Qgc2VjY29tcF9kYXRh ICpzZCk7CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCBzZWN1cmVfY29tcHV0aW5nKHZvaWQpCnsKIGlmIChfX2J1aWx0aW5fZXhwZWN0 KCEhKHRlc3RfdGlfdGhyZWFkX2ZsYWcoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKilnZXRfY3VycmVu dCgpKSwgOCkpLCAwKSkKICByZXR1cm4gX19zZWN1cmVfY29tcHV0aW5nKCgodm9pZCAqKTApKTsK IHJldHVybiAwOwp9CgoKCgpleHRlcm4gbG9uZyBwcmN0bF9nZXRfc2VjY29tcCh2b2lkKTsKZXh0 ZXJuIGxvbmcgcHJjdGxfc2V0X3NlY2NvbXAodW5zaWduZWQgbG9uZywgdm9pZCAqKTsKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBz ZWNjb21wX21vZGUoc3RydWN0IHNlY2NvbXAgKnMpCnsKIHJldHVybiBzLT5tb2RlOwp9CiMgODQg Ii4vaW5jbHVkZS9saW51eC9zZWNjb21wLmgiCmV4dGVybiB2b2lkIHB1dF9zZWNjb21wX2ZpbHRl cihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CmV4dGVybiB2b2lkIGdldF9zZWNjb21wX2ZpbHRl cihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7CiMgOTggIi4vaW5jbHVkZS9saW51eC9zZWNjb21w LmgiCmV4dGVybiBsb25nIHNlY2NvbXBfZ2V0X2ZpbHRlcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2ssCiAgICAgICAgICB1bnNpZ25lZCBsb25nIGZpbHRlcl9vZmYsIHZvaWQgKmRhdGEpOwpleHRl cm4gbG9uZyBzZWNjb21wX2dldF9tZXRhZGF0YShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCiAg ICAgdW5zaWduZWQgbG9uZyBmaWx0ZXJfb2ZmLCB2b2lkICpkYXRhKTsKIyAyMiAiLi9pbmNsdWRl L2xpbnV4L3NjaGVkLmgiIDIKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvcmVzb3VyY2UuaCIgMQoK CgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9yZXNvdXJjZS5oIiAxCiMgMjQgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L3Jlc291cmNlLmgiCnN0cnVjdCBydXNhZ2Ugewogc3RydWN0IF9fa2VybmVs X29sZF90aW1ldmFsIHJ1X3V0aW1lOwogc3RydWN0IF9fa2VybmVsX29sZF90aW1ldmFsIHJ1X3N0 aW1lOwogX19rZXJuZWxfbG9uZ190IHJ1X21heHJzczsKIF9fa2VybmVsX2xvbmdfdCBydV9peHJz czsKIF9fa2VybmVsX2xvbmdfdCBydV9pZHJzczsKIF9fa2VybmVsX2xvbmdfdCBydV9pc3JzczsK IF9fa2VybmVsX2xvbmdfdCBydV9taW5mbHQ7CiBfX2tlcm5lbF9sb25nX3QgcnVfbWFqZmx0Owog X19rZXJuZWxfbG9uZ190IHJ1X25zd2FwOwogX19rZXJuZWxfbG9uZ190IHJ1X2luYmxvY2s7CiBf X2tlcm5lbF9sb25nX3QgcnVfb3VibG9jazsKIF9fa2VybmVsX2xvbmdfdCBydV9tc2dzbmQ7CiBf X2tlcm5lbF9sb25nX3QgcnVfbXNncmN2OwogX19rZXJuZWxfbG9uZ190IHJ1X25zaWduYWxzOwog X19rZXJuZWxfbG9uZ190IHJ1X252Y3N3OwogX19rZXJuZWxfbG9uZ190IHJ1X25pdmNzdzsKfTsK CnN0cnVjdCBybGltaXQgewogX19rZXJuZWxfdWxvbmdfdCBybGltX2N1cjsKIF9fa2VybmVsX3Vs b25nX3QgcmxpbV9tYXg7Cn07CgoKCnN0cnVjdCBybGltaXQ2NCB7CiBfX3U2NCBybGltX2N1cjsK IF9fdTY0IHJsaW1fbWF4Owp9OwojIDc4ICIuL2luY2x1ZGUvdWFwaS9saW51eC9yZXNvdXJjZS5o IgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFwaS9hc20vcmVzb3VyY2UuaCIg MQojIDEgIi4vaW5jbHVkZS9hc20tZ2VuZXJpYy9yZXNvdXJjZS5oIiAxCgoKCgojIDEgIi4vaW5j bHVkZS91YXBpL2FzbS1nZW5lcmljL3Jlc291cmNlLmgiIDEKIyA2ICIuL2luY2x1ZGUvYXNtLWdl bmVyaWMvcmVzb3VyY2UuaCIgMgojIDIgIi4vYXJjaC94ODYvaW5jbHVkZS9nZW5lcmF0ZWQvdWFw aS9hc20vcmVzb3VyY2UuaCIgMgojIDc5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9yZXNvdXJjZS5o IiAyCiMgNiAiLi9pbmNsdWRlL2xpbnV4L3Jlc291cmNlLmgiIDIKCgpzdHJ1Y3QgdGFza19zdHJ1 Y3Q7Cgp2b2lkIGdldHJ1c2FnZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCB3aG8sIHN0cnVj dCBydXNhZ2UgKnJ1KTsKaW50IGRvX3BybGltaXQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHVu c2lnbmVkIGludCByZXNvdXJjZSwKICBzdHJ1Y3QgcmxpbWl0ICpuZXdfcmxpbSwgc3RydWN0IHJs aW1pdCAqb2xkX3JsaW0pOwojIDI2ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIgMgojIDEgIi4v aW5jbHVkZS9saW51eC9sYXRlbmN5dG9wLmgiIDEKIyAxNCAiLi9pbmNsdWRlL2xpbnV4L2xhdGVu Y3l0b3AuaCIKc3RydWN0IHRhc2tfc3RydWN0OwoKCgoKCgpzdHJ1Y3QgbGF0ZW5jeV9yZWNvcmQg ewogdW5zaWduZWQgbG9uZyBiYWNrdHJhY2VbMTJdOwogdW5zaWduZWQgaW50IGNvdW50OwogdW5z aWduZWQgbG9uZyB0aW1lOwogdW5zaWduZWQgbG9uZyBtYXg7Cn07CgoKCmV4dGVybiBpbnQgbGF0 ZW5jeXRvcF9lbmFibGVkOwp2b2lkIF9fYWNjb3VudF9zY2hlZHVsZXJfbGF0ZW5jeShzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2ssIGludCB1c2VjcywgaW50IGludGVyKTsKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZAphY2NvdW50X3Nj aGVkdWxlcl9sYXRlbmN5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IHVzZWNzLCBpbnQg aW50ZXIpCnsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGxhdGVuY3l0b3BfZW5hYmxlZCksIDAp KQogIF9fYWNjb3VudF9zY2hlZHVsZXJfbGF0ZW5jeSh0YXNrLCB1c2VjcywgaW50ZXIpOwp9Cgp2 b2lkIGNsZWFyX3Rza19sYXRlbmN5X3RyYWNpbmcoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKCmV4 dGVybiBpbnQgc3lzY3RsX2xhdGVuY3l0b3Aoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3 cml0ZSwKICAgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7CiMgMjcg Ii4vaW5jbHVkZS9saW51eC9zY2hlZC5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkL3By aW8uaCIgMQojIDQ4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQvcHJpby5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBsb25nIG5pY2VfdG9f cmxpbWl0KGxvbmcgbmljZSkKewogcmV0dXJuICgxOSAtIG5pY2UgKyAxKTsKfQoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgbG9uZyBy bGltaXRfdG9fbmljZShsb25nIHByaW8pCnsKIHJldHVybiAoMTkgLSBwcmlvICsgMSk7Cn0KIyAy OCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvc2NoZWQv dHlwZXMuaCIgMQojIDE3ICIuL2luY2x1ZGUvbGludXgvc2NoZWQvdHlwZXMuaCIKc3RydWN0IHRh c2tfY3B1dGltZSB7CiB1NjQgc3RpbWU7CiB1NjQgdXRpbWU7CiB1bnNpZ25lZCBsb25nIGxvbmcg c3VtX2V4ZWNfcnVudGltZTsKfTsKIyAyOSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAx ICIuL2luY2x1ZGUvbGludXgvc2lnbmFsX3R5cGVzLmgiIDEKIyAxMCAiLi9pbmNsdWRlL2xpbnV4 L3NpZ25hbF90eXBlcy5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NpZ25hbC5oIiAxCgoK CgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vc2lnbmFsLmgiIDEKIyAyMSAiLi9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS9zaWduYWwuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIG9sZF9zaWdzZXRf dDsKCnR5cGVkZWYgc3RydWN0IHsKIHVuc2lnbmVkIGxvbmcgc2lnWyg2NCAvIDY0KV07Cn0gc2ln c2V0X3Q7CgoKCgoKCnR5cGVkZWYgc2lnc2V0X3QgY29tcGF0X3NpZ3NldF90OwoKCgojIDEgIi4v YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaCIgMQojIDExICIuL2FyY2gveDg2L2lu Y2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiCnN0cnVjdCBzaWdpbmZvOwojIDk0ICIuL2FyY2gveDg2 L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiCiMgMSAiLi9pbmNsdWRlL3VhcGkvYXNtLWdlbmVy aWMvc2lnbmFsLWRlZnMuaCIgMQojIDE4ICIuL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy9zaWdu YWwtZGVmcy5oIgp0eXBlZGVmIHZvaWQgX19zaWduYWxmbl90KGludCk7CnR5cGVkZWYgX19zaWdu YWxmbl90ICpfX3NpZ2hhbmRsZXJfdDsKCnR5cGVkZWYgdm9pZCBfX3Jlc3RvcmVmbl90KHZvaWQp Owp0eXBlZGVmIF9fcmVzdG9yZWZuX3QgKl9fc2lncmVzdG9yZV90OwojIDk1ICIuL2FyY2gveDg2 L2luY2x1ZGUvdWFwaS9hc20vc2lnbmFsLmgiIDIKIyAxMjggIi4vYXJjaC94ODYvaW5jbHVkZS91 YXBpL2FzbS9zaWduYWwuaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnYWx0c3RhY2sgewogdm9pZCAqc3Nf c3A7CiBpbnQgc3NfZmxhZ3M7CiBzaXplX3Qgc3Nfc2l6ZTsKfSBzdGFja190OwojIDM3ICIuL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL3NpZ25hbC5oIiAyCgpleHRlcm4gdm9pZCBkb19zaWduYWwoc3Ry dWN0IHB0X3JlZ3MgKnJlZ3MpOwojIDYgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3NpZ25hbC5oIiAy CiMgMSAiLi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3NpZ2luZm8uaCIgMQojIDEzICIuL2Fy Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2lnaW5mby5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2Fz bS1nZW5lcmljL3NpZ2luZm8uaCIgMQoKCgoKCgoKdHlwZWRlZiB1bmlvbiBzaWd2YWwgewogaW50 IHNpdmFsX2ludDsKIHZvaWQgKnNpdmFsX3B0cjsKfSBzaWd2YWxfdDsKIyAzMiAiLi9pbmNsdWRl L3VhcGkvYXNtLWdlbmVyaWMvc2lnaW5mby5oIgp1bmlvbiBfX3NpZmllbGRzIHsKCiBzdHJ1Y3Qg ewogIF9fa2VybmVsX3BpZF90IF9waWQ7CiAgX19rZXJuZWxfdWlkMzJfdCBfdWlkOwogfSBfa2ls bDsKCgogc3RydWN0IHsKICBfX2tlcm5lbF90aW1lcl90IF90aWQ7CiAgaW50IF9vdmVycnVuOwog IHNpZ3ZhbF90IF9zaWd2YWw7CiAgaW50IF9zeXNfcHJpdmF0ZTsKIH0gX3RpbWVyOwoKCiBzdHJ1 Y3QgewogIF9fa2VybmVsX3BpZF90IF9waWQ7CiAgX19rZXJuZWxfdWlkMzJfdCBfdWlkOwogIHNp Z3ZhbF90IF9zaWd2YWw7CiB9IF9ydDsKCgogc3RydWN0IHsKICBfX2tlcm5lbF9waWRfdCBfcGlk OwogIF9fa2VybmVsX3VpZDMyX3QgX3VpZDsKICBpbnQgX3N0YXR1czsKICBfX2tlcm5lbF9jbG9j a190IF91dGltZTsKICBfX2tlcm5lbF9jbG9ja190IF9zdGltZTsKIH0gX3NpZ2NobGQ7CgoKIHN0 cnVjdCB7CiAgdm9pZCAqX2FkZHI7CiMgNzcgIi4vaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3Np Z2luZm8uaCIKICB1bmlvbiB7CgoKCgogICBzaG9ydCBfYWRkcl9sc2I7CgogICBzdHJ1Y3Qgewog ICAgY2hhciBfZHVtbXlfYm5kWyhfX2FsaWdub2ZfXyh2b2lkICopIDwgc2l6ZW9mKHNob3J0KSA/ IHNpemVvZihzaG9ydCkgOiBfX2FsaWdub2ZfXyh2b2lkICopKV07CiAgICB2b2lkICpfbG93ZXI7 CiAgICB2b2lkICpfdXBwZXI7CiAgIH0gX2FkZHJfYm5kOwoKICAgc3RydWN0IHsKICAgIGNoYXIg X2R1bW15X3BrZXlbKF9fYWxpZ25vZl9fKHZvaWQgKikgPCBzaXplb2Yoc2hvcnQpID8gc2l6ZW9m KHNob3J0KSA6IF9fYWxpZ25vZl9fKHZvaWQgKikpXTsKICAgIF9fdTMyIF9wa2V5OwogICB9IF9h ZGRyX3BrZXk7CiAgfTsKIH0gX3NpZ2ZhdWx0OwoKCiBzdHJ1Y3QgewogIGxvbmcgX2JhbmQ7CiAg aW50IF9mZDsKIH0gX3NpZ3BvbGw7CgoKIHN0cnVjdCB7CiAgdm9pZCAqX2NhbGxfYWRkcjsKICBp bnQgX3N5c2NhbGw7CiAgdW5zaWduZWQgaW50IF9hcmNoOwogfSBfc2lnc3lzOwp9OwojIDEyOSAi Li9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvc2lnaW5mby5oIgp0eXBlZGVmIHN0cnVjdCBzaWdp bmZvIHsKIHVuaW9uIHsKICBzdHJ1Y3QgeyBpbnQgc2lfc2lnbm87IGludCBzaV9lcnJubzsgaW50 IHNpX2NvZGU7IHVuaW9uIF9fc2lmaWVsZHMgX3NpZmllbGRzOyB9OwogIGludCBfc2lfcGFkWzEy OC9zaXplb2YoaW50KV07CiB9Owp9IHNpZ2luZm9fdDsKIyAzMjAgIi4vaW5jbHVkZS91YXBpL2Fz bS1nZW5lcmljL3NpZ2luZm8uaCIKdHlwZWRlZiBzdHJ1Y3Qgc2lnZXZlbnQgewogc2lndmFsX3Qg c2lnZXZfdmFsdWU7CiBpbnQgc2lnZXZfc2lnbm87CiBpbnQgc2lnZXZfbm90aWZ5OwogdW5pb24g ewogIGludCBfcGFkWygoNjQgLSAoc2l6ZW9mKGludCkgKiAyICsgc2l6ZW9mKHNpZ3ZhbF90KSkp IC8gc2l6ZW9mKGludCkpXTsKICAgaW50IF90aWQ7CgogIHN0cnVjdCB7CiAgIHZvaWQgKCpfZnVu Y3Rpb24pKHNpZ3ZhbF90KTsKICAgdm9pZCAqX2F0dHJpYnV0ZTsKICB9IF9zaWdldl90aHJlYWQ7 CiB9IF9zaWdldl91bjsKfSBzaWdldmVudF90OwojIDE0ICIuL2FyY2gveDg2L2luY2x1ZGUvdWFw aS9hc20vc2lnaW5mby5oIiAyCiMgNyAiLi9pbmNsdWRlL3VhcGkvbGludXgvc2lnbmFsLmgiIDIK IyAxMSAiLi9pbmNsdWRlL2xpbnV4L3NpZ25hbF90eXBlcy5oIiAyCgp0eXBlZGVmIHN0cnVjdCBr ZXJuZWxfc2lnaW5mbyB7CiBzdHJ1Y3QgeyBpbnQgc2lfc2lnbm87IGludCBzaV9lcnJubzsgaW50 IHNpX2NvZGU7IHVuaW9uIF9fc2lmaWVsZHMgX3NpZmllbGRzOyB9Owp9IGtlcm5lbF9zaWdpbmZv X3Q7CgoKCgoKc3RydWN0IHNpZ3F1ZXVlIHsKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIGludCBm bGFnczsKIGtlcm5lbF9zaWdpbmZvX3QgaW5mbzsKIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsK fTsKCgoKCnN0cnVjdCBzaWdwZW5kaW5nIHsKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIHNpZ3Nl dF90IHNpZ25hbDsKfTsKCnN0cnVjdCBzaWdhY3Rpb24gewoKIF9fc2lnaGFuZGxlcl90IHNhX2hh bmRsZXI7CiB1bnNpZ25lZCBsb25nIHNhX2ZsYWdzOwoKCgoKCiBfX3NpZ3Jlc3RvcmVfdCBzYV9y ZXN0b3JlcjsKCiBzaWdzZXRfdCBzYV9tYXNrOwp9OwoKc3RydWN0IGtfc2lnYWN0aW9uIHsKIHN0 cnVjdCBzaWdhY3Rpb24gc2E7CgoKCn07CiMgNjUgIi4vaW5jbHVkZS9saW51eC9zaWduYWxfdHlw ZXMuaCIKc3RydWN0IGtzaWduYWwgewogc3RydWN0IGtfc2lnYWN0aW9uIGthOwoga2VybmVsX3Np Z2luZm9fdCBpbmZvOwogaW50IHNpZzsKfTsKIyAzMCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgi IDIKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3Rhc2tfaW9fYWNjb3VudGluZy5oIiAxCiMgMTIgIi4v aW5jbHVkZS9saW51eC90YXNrX2lvX2FjY291bnRpbmcuaCIKc3RydWN0IHRhc2tfaW9fYWNjb3Vu dGluZyB7CgoKIHU2NCByY2hhcjsKCiB1NjQgd2NoYXI7CgogdTY0IHN5c2NyOwoKIHU2NCBzeXNj dzsKCgoKCgoKCiB1NjQgcmVhZF9ieXRlczsKCgoKCgogdTY0IHdyaXRlX2J5dGVzOwojIDQ0ICIu L2luY2x1ZGUvbGludXgvdGFza19pb19hY2NvdW50aW5nLmgiCiB1NjQgY2FuY2VsbGVkX3dyaXRl X2J5dGVzOwoKfTsKIyAzMiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKIyAxICIuL2luY2x1 ZGUvbGludXgvcG9zaXgtdGltZXJzLmgiIDEKCgoKCgoKIyAxICIuL2luY2x1ZGUvbGludXgvYWxh cm10aW1lci5oIiAxCiMgOSAiLi9pbmNsdWRlL2xpbnV4L2FsYXJtdGltZXIuaCIKc3RydWN0IHJ0 Y19kZXZpY2U7CgplbnVtIGFsYXJtdGltZXJfdHlwZSB7CiBBTEFSTV9SRUFMVElNRSwKIEFMQVJN X0JPT1RUSU1FLAoKCiBBTEFSTV9OVU1UWVBFLAoKCiBBTEFSTV9SRUFMVElNRV9GUkVFWkVSLAog QUxBUk1fQk9PVFRJTUVfRlJFRVpFUiwKfTsKCmVudW0gYWxhcm10aW1lcl9yZXN0YXJ0IHsKIEFM QVJNVElNRVJfTk9SRVNUQVJULAogQUxBUk1USU1FUl9SRVNUQVJULAp9OwojIDQyICIuL2luY2x1 ZGUvbGludXgvYWxhcm10aW1lci5oIgpzdHJ1Y3QgYWxhcm0gewogc3RydWN0IHRpbWVycXVldWVf bm9kZSBub2RlOwogc3RydWN0IGhydGltZXIgdGltZXI7CiBlbnVtIGFsYXJtdGltZXJfcmVzdGFy dCAoKmZ1bmN0aW9uKShzdHJ1Y3QgYWxhcm0gKiwga3RpbWVfdCBub3cpOwogZW51bSBhbGFybXRp bWVyX3R5cGUgdHlwZTsKIGludCBzdGF0ZTsKIHZvaWQgKmRhdGE7Cn07Cgp2b2lkIGFsYXJtX2lu aXQoc3RydWN0IGFsYXJtICphbGFybSwgZW51bSBhbGFybXRpbWVyX3R5cGUgdHlwZSwKICBlbnVt IGFsYXJtdGltZXJfcmVzdGFydCAoKmZ1bmN0aW9uKShzdHJ1Y3QgYWxhcm0gKiwga3RpbWVfdCkp Owp2b2lkIGFsYXJtX3N0YXJ0KHN0cnVjdCBhbGFybSAqYWxhcm0sIGt0aW1lX3Qgc3RhcnQpOwp2 b2lkIGFsYXJtX3N0YXJ0X3JlbGF0aXZlKHN0cnVjdCBhbGFybSAqYWxhcm0sIGt0aW1lX3Qgc3Rh cnQpOwp2b2lkIGFsYXJtX3Jlc3RhcnQoc3RydWN0IGFsYXJtICphbGFybSk7CmludCBhbGFybV90 cnlfdG9fY2FuY2VsKHN0cnVjdCBhbGFybSAqYWxhcm0pOwppbnQgYWxhcm1fY2FuY2VsKHN0cnVj dCBhbGFybSAqYWxhcm0pOwoKdTY0IGFsYXJtX2ZvcndhcmQoc3RydWN0IGFsYXJtICphbGFybSwg a3RpbWVfdCBub3csIGt0aW1lX3QgaW50ZXJ2YWwpOwp1NjQgYWxhcm1fZm9yd2FyZF9ub3coc3Ry dWN0IGFsYXJtICphbGFybSwga3RpbWVfdCBpbnRlcnZhbCk7Cmt0aW1lX3QgYWxhcm1fZXhwaXJl c19yZW1haW5pbmcoY29uc3Qgc3RydWN0IGFsYXJtICphbGFybSk7CgoKCnN0cnVjdCBydGNfZGV2 aWNlICphbGFybXRpbWVyX2dldF9ydGNkZXYodm9pZCk7CiMgOCAiLi9pbmNsdWRlL2xpbnV4L3Bv c2l4LXRpbWVycy5oIiAyCgoKc3RydWN0IGtlcm5lbF9zaWdpbmZvOwpzdHJ1Y3QgdGFza19zdHJ1 Y3Q7CiMgMzggIi4vaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY2xvY2tpZF90IG1ha2Vf cHJvY2Vzc19jcHVjbG9jayhjb25zdCB1bnNpZ25lZCBpbnQgcGlkLAogIGNvbnN0IGNsb2NraWRf dCBjbG9jaykKewogcmV0dXJuICgofnBpZCkgPDwgMykgfCBjbG9jazsKfQpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjbG9ja2lkX3QgbWFr ZV90aHJlYWRfY3B1Y2xvY2soY29uc3QgdW5zaWduZWQgaW50IHRpZCwKICBjb25zdCBjbG9ja2lk X3QgY2xvY2spCnsKIHJldHVybiBtYWtlX3Byb2Nlc3NfY3B1Y2xvY2sodGlkLCBjbG9jayB8IDQp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBjbG9ja2lkX3QgZmRfdG9fY2xvY2tpZChjb25zdCBpbnQgZmQpCnsKIHJldHVybiBtYWtl X3Byb2Nlc3NfY3B1Y2xvY2soKHVuc2lnbmVkIGludCkgZmQsIDMpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgY2xvY2tpZF90 b19mZChjb25zdCBjbG9ja2lkX3QgY2xrKQp7CiByZXR1cm4gfihjbGsgPj4gMyk7Cn0KIyA2OSAi Li9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oIgpzdHJ1Y3QgY3B1X3RpbWVyIHsKIHN0cnVj dCB0aW1lcnF1ZXVlX25vZGUgbm9kZTsKIHN0cnVjdCB0aW1lcnF1ZXVlX2hlYWQgKmhlYWQ7CiBz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiBzdHJ1Y3QgbGlzdF9oZWFkIGVsaXN0OwogaW50IGZp cmluZzsKfTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgY3B1X3RpbWVyX2VucXVldWUoc3RydWN0IHRpbWVycXVldWVfaGVhZCAq aGVhZCwKICAgICAgICAgc3RydWN0IGNwdV90aW1lciAqY3RtcikKewogY3Rtci0+aGVhZCA9IGhl YWQ7CiByZXR1cm4gdGltZXJxdWV1ZV9hZGQoaGVhZCwgJmN0bXItPm5vZGUpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNw dV90aW1lcl9kZXF1ZXVlKHN0cnVjdCBjcHVfdGltZXIgKmN0bXIpCnsKIGlmIChjdG1yLT5oZWFk KSB7CiAgdGltZXJxdWV1ZV9kZWwoY3Rtci0+aGVhZCwgJmN0bXItPm5vZGUpOwogIGN0bXItPmhl YWQgPSAoKHZvaWQgKikwKTsKIH0KfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTY0IGNwdV90aW1lcl9nZXRleHBpcmVzKHN0cnVjdCBj cHVfdGltZXIgKmN0bXIpCnsKIHJldHVybiBjdG1yLT5ub2RlLmV4cGlyZXM7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgY3B1 X3RpbWVyX3NldGV4cGlyZXMoc3RydWN0IGNwdV90aW1lciAqY3RtciwgdTY0IGV4cCkKewogY3Rt ci0+bm9kZS5leHBpcmVzID0gZXhwOwp9CgoKCgoKCnN0cnVjdCBwb3NpeF9jcHV0aW1lcl9iYXNl IHsKIHU2NCBuZXh0ZXZ0Owogc3RydWN0IHRpbWVycXVldWVfaGVhZCB0cWhlYWQ7Cn07CiMgMTIy ICIuL2luY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgiCnN0cnVjdCBwb3NpeF9jcHV0aW1lcnMg ewogc3RydWN0IHBvc2l4X2NwdXRpbWVyX2Jhc2UgYmFzZXNbM107CiB1bnNpZ25lZCBpbnQgdGlt ZXJzX2FjdGl2ZTsKIHVuc2lnbmVkIGludCBleHBpcnlfYWN0aXZlOwp9OwoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwb3NpeF9j cHV0aW1lcnNfaW5pdChzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzICpwY3QpCnsKIG1lbXNldChwY3Qs IDAsIHNpemVvZigqcGN0KSk7CiBwY3QtPmJhc2VzWzBdLm5leHRldnQgPSAoKHU2NCl+MFVMTCk7 CiBwY3QtPmJhc2VzWzFdLm5leHRldnQgPSAoKHU2NCl+MFVMTCk7CiBwY3QtPmJhc2VzWzJdLm5l eHRldnQgPSAoKHU2NCl+MFVMTCk7Cn0KCnZvaWQgcG9zaXhfY3B1dGltZXJzX2dyb3VwX2luaXQo c3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0LCB1NjQgY3B1X2xpbWl0KTsKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcG9zaXhf Y3B1dGltZXJzX3J0X3dhdGNoZG9nKHN0cnVjdCBwb3NpeF9jcHV0aW1lcnMgKnBjdCwKICAgICAg ICAgICAgdTY0IHJ1bnRpbWUpCnsKIHBjdC0+YmFzZXNbMl0ubmV4dGV2dCA9IHJ1bnRpbWU7Cn0K IyAxOTMgIi4vaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaCIKc3RydWN0IGtfaXRpbWVyIHsK IHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKIHN0cnVjdCBobGlzdF9ub2RlIHRfaGFzaDsKIHNwaW5s b2NrX3QgaXRfbG9jazsKIGNvbnN0IHN0cnVjdCBrX2Nsb2NrICprY2xvY2s7CiBjbG9ja2lkX3Qg aXRfY2xvY2s7CiB0aW1lcl90IGl0X2lkOwogaW50IGl0X2FjdGl2ZTsKIHM2NCBpdF9vdmVycnVu OwogczY0IGl0X292ZXJydW5fbGFzdDsKIGludCBpdF9yZXF1ZXVlX3BlbmRpbmc7CiBpbnQgaXRf c2lnZXZfbm90aWZ5Owoga3RpbWVfdCBpdF9pbnRlcnZhbDsKIHN0cnVjdCBzaWduYWxfc3RydWN0 ICppdF9zaWduYWw7CiB1bmlvbiB7CiAgc3RydWN0IHBpZCAqaXRfcGlkOwogIHN0cnVjdCB0YXNr X3N0cnVjdCAqaXRfcHJvY2VzczsKIH07CiBzdHJ1Y3Qgc2lncXVldWUgKnNpZ3E7CiB1bmlvbiB7 CiAgc3RydWN0IHsKICAgc3RydWN0IGhydGltZXIgdGltZXI7CiAgfSByZWFsOwogIHN0cnVjdCBj cHVfdGltZXIgY3B1OwogIHN0cnVjdCB7CiAgIHN0cnVjdCBhbGFybSBhbGFybXRpbWVyOwogIH0g YWxhcm07CiB9IGl0Owogc3RydWN0IGNhbGxiYWNrX2hlYWQgcmN1Owp9OwoKdm9pZCBydW5fcG9z aXhfY3B1X3RpbWVycyh2b2lkKTsKdm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXQoc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrKTsKdm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0 IHRhc2tfc3RydWN0ICp0YXNrKTsKdm9pZCBzZXRfcHJvY2Vzc19jcHVfdGltZXIoc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBpbnQgY2xvY2tfaWR4LAogICAgICB1NjQgKm5ld3Zh bCwgdTY0ICpvbGR2YWwpOwoKdm9pZCB1cGRhdGVfcmxpbWl0X2NwdShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgcmxpbV9uZXcpOwoKdm9pZCBwb3NpeHRpbWVyX3JlYXJt KHN0cnVjdCBrZXJuZWxfc2lnaW5mbyAqaW5mbyk7CiMgMzMgIi4vaW5jbHVkZS9saW51eC9zY2hl ZC5oIiAyCiMgMSAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5oIiAxCiMgMTYgIi4vaW5jbHVk ZS91YXBpL2xpbnV4L3JzZXEuaCIKZW51bSByc2VxX2NwdV9pZF9zdGF0ZSB7CiBSU0VRX0NQVV9J RF9VTklOSVRJQUxJWkVEID0gLTEsCiBSU0VRX0NQVV9JRF9SRUdJU1RSQVRJT05fRkFJTEVEID0g LTIsCn07CgplbnVtIHJzZXFfZmxhZ3MgewogUlNFUV9GTEFHX1VOUkVHSVNURVIgPSAoMSA8PCAw KSwKfTsKCmVudW0gcnNlcV9jc19mbGFnc19iaXQgewogUlNFUV9DU19GTEFHX05PX1JFU1RBUlRf T05fUFJFRU1QVF9CSVQgPSAwLAogUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fU0lHTkFMX0JJ VCA9IDEsCiBSU0VRX0NTX0ZMQUdfTk9fUkVTVEFSVF9PTl9NSUdSQVRFX0JJVCA9IDIsCn07Cgpl bnVtIHJzZXFfY3NfZmxhZ3MgewogUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVCA9 CiAgKDFVIDw8IFJTRVFfQ1NfRkxBR19OT19SRVNUQVJUX09OX1BSRUVNUFRfQklUKSwKIFJTRVFf Q1NfRkxBR19OT19SRVNUQVJUX09OX1NJR05BTCA9CiAgKDFVIDw8IFJTRVFfQ1NfRkxBR19OT19S RVNUQVJUX09OX1NJR05BTF9CSVQpLAogUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fTUlHUkFU RSA9CiAgKDFVIDw8IFJTRVFfQ1NfRkxBR19OT19SRVNUQVJUX09OX01JR1JBVEVfQklUKSwKfTsK CgoKCgoKc3RydWN0IHJzZXFfY3MgewoKIF9fdTMyIHZlcnNpb247CgogX191MzIgZmxhZ3M7CiBf X3U2NCBzdGFydF9pcDsKCiBfX3U2NCBwb3N0X2NvbW1pdF9vZmZzZXQ7CiBfX3U2NCBhYm9ydF9p cDsKfSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQgKiBzaXplb2YoX191NjQpKSkpOwoKCgoKCgoK c3RydWN0IHJzZXEgewojIDc1ICIuL2luY2x1ZGUvdWFwaS9saW51eC9yc2VxLmgiCiBfX3UzMiBj cHVfaWRfc3RhcnQ7CiMgOTAgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3JzZXEuaCIKIF9fdTMyIGNw dV9pZDsKIyAxMDkgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3JzZXEuaCIKIHVuaW9uIHsKICBfX3U2 NCBwdHI2NDsKCiAgX191NjQgcHRyOwojIDEyNCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5o IgogfSByc2VxX2NzOwojIDE0NCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcnNlcS5oIgogX191MzIg ZmxhZ3M7Cn0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg0ICogc2l6ZW9mKF9fdTY0KSkpKTsKIyAz NCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiIDIKCgpzdHJ1Y3QgYXVkaXRfY29udGV4dDsKc3Ry dWN0IGJhY2tpbmdfZGV2X2luZm87CnN0cnVjdCBiaW9fbGlzdDsKc3RydWN0IGJsa19wbHVnOwpz dHJ1Y3QgY2FwdHVyZV9jb250cm9sOwpzdHJ1Y3QgY2ZzX3JxOwpzdHJ1Y3QgZnNfc3RydWN0Owpz dHJ1Y3QgZnV0ZXhfcGlfc3RhdGU7CnN0cnVjdCBpb19jb250ZXh0OwpzdHJ1Y3QgbWVtcG9saWN5 OwpzdHJ1Y3QgbmFtZWlkYXRhOwpzdHJ1Y3QgbnNwcm94eTsKc3RydWN0IHBlcmZfZXZlbnRfY29u dGV4dDsKc3RydWN0IHBpZF9uYW1lc3BhY2U7CnN0cnVjdCBwaXBlX2lub2RlX2luZm87CnN0cnVj dCByY3Vfbm9kZTsKc3RydWN0IHJlY2xhaW1fc3RhdGU7CnN0cnVjdCByb2J1c3RfbGlzdF9oZWFk OwpzdHJ1Y3Qgcm9vdF9kb21haW47CnN0cnVjdCBycTsKc3RydWN0IHNjaGVkX2F0dHI7CnN0cnVj dCBzY2hlZF9wYXJhbTsKc3RydWN0IHNlcV9maWxlOwpzdHJ1Y3Qgc2lnaGFuZF9zdHJ1Y3Q7CnN0 cnVjdCBzaWduYWxfc3RydWN0OwpzdHJ1Y3QgdGFza19kZWxheV9pbmZvOwpzdHJ1Y3QgdGFza19n cm91cDsKIyAyMTUgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gdm9pZCBzY2hlZHVs ZXJfdGljayh2b2lkKTsKCgoKZXh0ZXJuIGxvbmcgc2NoZWR1bGVfdGltZW91dChsb25nIHRpbWVv dXQpOwpleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X2ludGVycnVwdGlibGUobG9uZyB0aW1l b3V0KTsKZXh0ZXJuIGxvbmcgc2NoZWR1bGVfdGltZW91dF9raWxsYWJsZShsb25nIHRpbWVvdXQp OwpleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X3VuaW50ZXJydXB0aWJsZShsb25nIHRpbWVv dXQpOwpleHRlcm4gbG9uZyBzY2hlZHVsZV90aW1lb3V0X2lkbGUobG9uZyB0aW1lb3V0KTsKIHZv aWQgc2NoZWR1bGUodm9pZCk7CmV4dGVybiB2b2lkIHNjaGVkdWxlX3ByZWVtcHRfZGlzYWJsZWQo dm9pZCk7CiB2b2lkIHByZWVtcHRfc2NoZWR1bGVfaXJxKHZvaWQpOwoKZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgaW9fc2NoZWR1bGVfcHJlcGFyZSh2 b2lkKTsKZXh0ZXJuIHZvaWQgaW9fc2NoZWR1bGVfZmluaXNoKGludCB0b2tlbik7CmV4dGVybiBs b25nIGlvX3NjaGVkdWxlX3RpbWVvdXQobG9uZyB0aW1lb3V0KTsKZXh0ZXJuIHZvaWQgaW9fc2No ZWR1bGUodm9pZCk7CiMgMjQyICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHByZXZf Y3B1dGltZSB7CgogdTY0IHV0aW1lOwogdTY0IHN0aW1lOwogcmF3X3NwaW5sb2NrX3QgbG9jazsK Cn07CgplbnVtIHZ0aW1lX3N0YXRlIHsKCiBWVElNRV9JTkFDVElWRSA9IDAsCgogVlRJTUVfSURM RSwKCiBWVElNRV9TWVMsCgogVlRJTUVfVVNFUiwKCiBWVElNRV9HVUVTVCwKfTsKCnN0cnVjdCB2 dGltZSB7CiBzZXFjb3VudF90IHNlcWNvdW50OwogdW5zaWduZWQgbG9uZyBsb25nIHN0YXJ0dGlt ZTsKIGVudW0gdnRpbWVfc3RhdGUgc3RhdGU7CiB1bnNpZ25lZCBpbnQgY3B1OwogdTY0IHV0aW1l OwogdTY0IHN0aW1lOwogdTY0IGd0aW1lOwp9OwoKCgoKCgoKZW51bSB1Y2xhbXBfaWQgewogVUNM QU1QX01JTiA9IDAsCiBVQ0xBTVBfTUFYLAogVUNMQU1QX0NOVAp9OwoKCmV4dGVybiBzdHJ1Y3Qg cm9vdF9kb21haW4gZGVmX3Jvb3RfZG9tYWluOwpleHRlcm4gc3RydWN0IG11dGV4IHNjaGVkX2Rv bWFpbnNfbXV0ZXg7CgoKc3RydWN0IHNjaGVkX2luZm8gewoKCgoKIHVuc2lnbmVkIGxvbmcgcGNv dW50OwoKCiB1bnNpZ25lZCBsb25nIGxvbmcgcnVuX2RlbGF5OwoKCgoKIHVuc2lnbmVkIGxvbmcg bG9uZyBsYXN0X2Fycml2YWw7CgoKIHVuc2lnbmVkIGxvbmcgbG9uZyBsYXN0X3F1ZXVlZDsKCgp9 OwojIDMyNSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0cnVjdCBsb2FkX3dlaWdodCB7CiB1 bnNpZ25lZCBsb25nIHdlaWdodDsKIHUzMiBpbnZfd2VpZ2h0Owp9OwojIDM1MiAiLi9pbmNsdWRl L2xpbnV4L3NjaGVkLmgiCnN0cnVjdCB1dGlsX2VzdCB7CiB1bnNpZ25lZCBpbnQgZW5xdWV1ZWQ7 CiB1bnNpZ25lZCBpbnQgZXdtYTsKCn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oc2l6ZW9m KHU2NCkpKSk7CiMgNDAxICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3RydWN0IHNjaGVkX2F2 ZyB7CiB1NjQgbGFzdF91cGRhdGVfdGltZTsKIHU2NCBsb2FkX3N1bTsKIHU2NCBydW5uYWJsZV9s b2FkX3N1bTsKIHUzMiB1dGlsX3N1bTsKIHUzMiBwZXJpb2RfY29udHJpYjsKIHVuc2lnbmVkIGxv bmcgbG9hZF9hdmc7CiB1bnNpZ25lZCBsb25nIHJ1bm5hYmxlX2xvYWRfYXZnOwogdW5zaWduZWQg bG9uZyB1dGlsX2F2ZzsKIHN0cnVjdCB1dGlsX2VzdCB1dGlsX2VzdDsKfSBfX2F0dHJpYnV0ZV9f KChfX2FsaWduZWRfXygoMSA8PCAoNikpKSkpOwoKc3RydWN0IHNjaGVkX3N0YXRpc3RpY3MgewoK IHU2NCB3YWl0X3N0YXJ0OwogdTY0IHdhaXRfbWF4OwogdTY0IHdhaXRfY291bnQ7CiB1NjQgd2Fp dF9zdW07CiB1NjQgaW93YWl0X2NvdW50OwogdTY0IGlvd2FpdF9zdW07CgogdTY0IHNsZWVwX3N0 YXJ0OwogdTY0IHNsZWVwX21heDsKIHM2NCBzdW1fc2xlZXBfcnVudGltZTsKCiB1NjQgYmxvY2tf c3RhcnQ7CiB1NjQgYmxvY2tfbWF4OwogdTY0IGV4ZWNfbWF4OwogdTY0IHNsaWNlX21heDsKCiB1 NjQgbnJfbWlncmF0aW9uc19jb2xkOwogdTY0IG5yX2ZhaWxlZF9taWdyYXRpb25zX2FmZmluZTsK IHU2NCBucl9mYWlsZWRfbWlncmF0aW9uc19ydW5uaW5nOwogdTY0IG5yX2ZhaWxlZF9taWdyYXRp b25zX2hvdDsKIHU2NCBucl9mb3JjZWRfbWlncmF0aW9uczsKCiB1NjQgbnJfd2FrZXVwczsKIHU2 NCBucl93YWtldXBzX3N5bmM7CiB1NjQgbnJfd2FrZXVwc19taWdyYXRlOwogdTY0IG5yX3dha2V1 cHNfbG9jYWw7CiB1NjQgbnJfd2FrZXVwc19yZW1vdGU7CiB1NjQgbnJfd2FrZXVwc19hZmZpbmU7 CiB1NjQgbnJfd2FrZXVwc19hZmZpbmVfYXR0ZW1wdHM7CiB1NjQgbnJfd2FrZXVwc19wYXNzaXZl OwogdTY0IG5yX3dha2V1cHNfaWRsZTsKCn07CgpzdHJ1Y3Qgc2NoZWRfZW50aXR5IHsKCiBzdHJ1 Y3QgbG9hZF93ZWlnaHQgbG9hZDsKIHVuc2lnbmVkIGxvbmcgcnVubmFibGVfd2VpZ2h0Owogc3Ry dWN0IHJiX25vZGUgcnVuX25vZGU7CiBzdHJ1Y3QgbGlzdF9oZWFkIGdyb3VwX25vZGU7CiB1bnNp Z25lZCBpbnQgb25fcnE7CgogdTY0IGV4ZWNfc3RhcnQ7CiB1NjQgc3VtX2V4ZWNfcnVudGltZTsK IHU2NCB2cnVudGltZTsKIHU2NCBwcmV2X3N1bV9leGVjX3J1bnRpbWU7CgogdTY0IG5yX21pZ3Jh dGlvbnM7Cgogc3RydWN0IHNjaGVkX3N0YXRpc3RpY3Mgc3RhdGlzdGljczsKCgogaW50IGRlcHRo Owogc3RydWN0IHNjaGVkX2VudGl0eSAqcGFyZW50OwoKIHN0cnVjdCBjZnNfcnEgKmNmc19ycTsK CiBzdHJ1Y3QgY2ZzX3JxICpteV9xOwojIDQ4MiAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBz dHJ1Y3Qgc2NoZWRfYXZnIGF2ZzsKCn07CgpzdHJ1Y3Qgc2NoZWRfcnRfZW50aXR5IHsKIHN0cnVj dCBsaXN0X2hlYWQgcnVuX2xpc3Q7CiB1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CiB1bnNpZ25lZCBs b25nIHdhdGNoZG9nX3N0YW1wOwogdW5zaWduZWQgaW50IHRpbWVfc2xpY2U7CiB1bnNpZ25lZCBz aG9ydCBvbl9ycTsKIHVuc2lnbmVkIHNob3J0IG9uX2xpc3Q7Cgogc3RydWN0IHNjaGVkX3J0X2Vu dGl0eSAqYmFjazsKCgoKCgoKCn0gX19hdHRyaWJ1dGVfXygoX19kZXNpZ25hdGVkX2luaXRfXykp OwoKc3RydWN0IHNjaGVkX2RsX2VudGl0eSB7CiBzdHJ1Y3QgcmJfbm9kZSByYl9ub2RlOwoKCgoK CgogdTY0IGRsX3J1bnRpbWU7CiB1NjQgZGxfZGVhZGxpbmU7CiB1NjQgZGxfcGVyaW9kOwogdTY0 IGRsX2J3OwogdTY0IGRsX2RlbnNpdHk7CgoKCgoKCiBzNjQgcnVudGltZTsKIHU2NCBkZWFkbGlu ZTsKIHVuc2lnbmVkIGludCBmbGFnczsKIyA1NTEgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgog dW5zaWduZWQgaW50IGRsX3Rocm90dGxlZCA6IDE7CiB1bnNpZ25lZCBpbnQgZGxfYm9vc3RlZCA6 IDE7CiB1bnNpZ25lZCBpbnQgZGxfeWllbGRlZCA6IDE7CiB1bnNpZ25lZCBpbnQgZGxfbm9uX2Nv bnRlbmRpbmcgOiAxOwogdW5zaWduZWQgaW50IGRsX292ZXJydW4gOiAxOwoKCgoKCiBzdHJ1Y3Qg aHJ0aW1lciBkbF90aW1lcjsKIyA1NzAgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgogc3RydWN0 IGhydGltZXIgaW5hY3RpdmVfdGltZXI7Cn07CiMgNjA4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQu aCIKdW5pb24gcmN1X3NwZWNpYWwgewogc3RydWN0IHsKICB1OCBibG9ja2VkOwogIHU4IG5lZWRf cXM7CiAgdTggZXhwX2hpbnQ7CiAgdTggZGVmZXJyZWRfcXM7CiB9IGI7CiB1MzIgczsKfTsKCmVu dW0gcGVyZl9ldmVudF90YXNrX2NvbnRleHQgewogcGVyZl9pbnZhbGlkX2NvbnRleHQgPSAtMSwK IHBlcmZfaHdfY29udGV4dCA9IDAsCiBwZXJmX3N3X2NvbnRleHQsCiBwZXJmX25yX3Rhc2tfY29u dGV4dHMsCn07CgpzdHJ1Y3Qgd2FrZV9xX25vZGUgewogc3RydWN0IHdha2VfcV9ub2RlICpuZXh0 Owp9OwoKc3RydWN0IHRhc2tfc3RydWN0IHsKCgoKCgogc3RydWN0IHRocmVhZF9pbmZvIHRocmVh ZF9pbmZvOwoKCiB2b2xhdGlsZSBsb25nIHN0YXRlOwoKCgoKCgoKIHZvaWQgKnN0YWNrOwogcmVm Y291bnRfdCB1c2FnZTsKCiB1bnNpZ25lZCBpbnQgZmxhZ3M7CiB1bnNpZ25lZCBpbnQgcHRyYWNl OwoKCiBzdHJ1Y3QgbGxpc3Rfbm9kZSB3YWtlX2VudHJ5OwogaW50IG9uX2NwdTsKCgogdW5zaWdu ZWQgaW50IGNwdTsKCiB1bnNpZ25lZCBpbnQgd2FrZWVfZmxpcHM7CiB1bnNpZ25lZCBsb25nIHdh a2VlX2ZsaXBfZGVjYXlfdHM7CiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmxhc3Rfd2FrZWU7CiMgNjcw ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIGludCByZWNlbnRfdXNlZF9jcHU7CiBpbnQgd2Fr ZV9jcHU7CgogaW50IG9uX3JxOwoKIGludCBwcmlvOwogaW50IHN0YXRpY19wcmlvOwogaW50IG5v cm1hbF9wcmlvOwogdW5zaWduZWQgaW50IHJ0X3ByaW9yaXR5OwoKIGNvbnN0IHN0cnVjdCBzY2hl ZF9jbGFzcyAqc2NoZWRfY2xhc3M7CiBzdHJ1Y3Qgc2NoZWRfZW50aXR5IHNlOwogc3RydWN0IHNj aGVkX3J0X2VudGl0eSBydDsKCiBzdHJ1Y3QgdGFza19ncm91cCAqc2NoZWRfdGFza19ncm91cDsK CiBzdHJ1Y3Qgc2NoZWRfZGxfZW50aXR5IGRsOwojIDY5NyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVk LmgiCiBzdHJ1Y3QgaGxpc3RfaGVhZCBwcmVlbXB0X25vdGlmaWVyczsKCgoKIHVuc2lnbmVkIGlu dCBidHJhY2Vfc2VxOwoKCiB1bnNpZ25lZCBpbnQgcG9saWN5OwogaW50IG5yX2NwdXNfYWxsb3dl ZDsKIGNvbnN0IGNwdW1hc2tfdCAqY3B1c19wdHI7CiBjcHVtYXNrX3QgY3B1c19tYXNrOwojIDcy NCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBzdHJ1Y3Qgc2NoZWRfaW5mbyBzY2hlZF9pbmZv OwoKIHN0cnVjdCBsaXN0X2hlYWQgdGFza3M7Cgogc3RydWN0IHBsaXN0X25vZGUgcHVzaGFibGVf dGFza3M7CiBzdHJ1Y3QgcmJfbm9kZSBwdXNoYWJsZV9kbF90YXNrczsKCgogc3RydWN0IG1tX3N0 cnVjdCAqbW07CiBzdHJ1Y3QgbW1fc3RydWN0ICphY3RpdmVfbW07CgoKIHN0cnVjdCB2bWFjYWNo ZSB2bWFjYWNoZTsKCgogc3RydWN0IHRhc2tfcnNzX3N0YXQgcnNzX3N0YXQ7CgogaW50IGV4aXRf c3RhdGU7CiBpbnQgZXhpdF9jb2RlOwogaW50IGV4aXRfc2lnbmFsOwoKIGludCBwZGVhdGhfc2ln bmFsOwoKIHVuc2lnbmVkIGxvbmcgam9iY3RsOwoKCiB1bnNpZ25lZCBpbnQgcGVyc29uYWxpdHk7 CgoKIHVuc2lnbmVkIHNjaGVkX3Jlc2V0X29uX2Zvcms6MTsKIHVuc2lnbmVkIHNjaGVkX2NvbnRy aWJ1dGVzX3RvX2xvYWQ6MTsKIHVuc2lnbmVkIHNjaGVkX21pZ3JhdGVkOjE7CiB1bnNpZ25lZCBz Y2hlZF9yZW1vdGVfd2FrZXVwOjE7CgoKCgoKIHVuc2lnbmVkIDowOwoKCgoKIHVuc2lnbmVkIGlu X2V4ZWN2ZToxOwogdW5zaWduZWQgaW5faW93YWl0OjE7CgogdW5zaWduZWQgcmVzdG9yZV9zaWdt YXNrOjE7CgoKIHVuc2lnbmVkIGluX3VzZXJfZmF1bHQ6MTsKCgoKCgoKIHVuc2lnbmVkIG5vX2Nn cm91cF9taWdyYXRpb246MTsKCiB1bnNpZ25lZCBmcm96ZW46MTsKCgoKIHVuc2lnbmVkIHVzZV9t ZW1kZWxheToxOwoKCiB1bnNpZ25lZCBsb25nIGF0b21pY19mbGFnczsKCiBzdHJ1Y3QgcmVzdGFy dF9ibG9jayByZXN0YXJ0X2Jsb2NrOwoKIHBpZF90IHBpZDsKIHBpZF90IHRnaWQ7CgoKCiB1bnNp Z25lZCBsb25nIHN0YWNrX2NhbmFyeTsKIyA4MDcgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgog c3RydWN0IHRhc2tfc3RydWN0ICpyZWFsX3BhcmVudDsKCgogc3RydWN0IHRhc2tfc3RydWN0ICpw YXJlbnQ7CgoKCgogc3RydWN0IGxpc3RfaGVhZCBjaGlsZHJlbjsKIHN0cnVjdCBsaXN0X2hlYWQg c2libGluZzsKIHN0cnVjdCB0YXNrX3N0cnVjdCAqZ3JvdXBfbGVhZGVyOwoKCgoKCgoKIHN0cnVj dCBsaXN0X2hlYWQgcHRyYWNlZDsKIHN0cnVjdCBsaXN0X2hlYWQgcHRyYWNlX2VudHJ5OwoKCiBz dHJ1Y3QgcGlkICp0aHJlYWRfcGlkOwogc3RydWN0IGhsaXN0X25vZGUgcGlkX2xpbmtzW1BJRFRZ UEVfTUFYXTsKIHN0cnVjdCBsaXN0X2hlYWQgdGhyZWFkX2dyb3VwOwogc3RydWN0IGxpc3RfaGVh ZCB0aHJlYWRfbm9kZTsKCiBzdHJ1Y3QgY29tcGxldGlvbiAqdmZvcmtfZG9uZTsKCgogaW50ICpz ZXRfY2hpbGRfdGlkOwoKCiBpbnQgKmNsZWFyX2NoaWxkX3RpZDsKCiB1NjQgdXRpbWU7CiB1NjQg c3RpbWU7CgoKCgogdTY0IGd0aW1lOwogc3RydWN0IHByZXZfY3B1dGltZSBwcmV2X2NwdXRpbWU7 CiMgODU4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKIHVuc2lnbmVkIGxvbmcgbnZjc3c7CiB1 bnNpZ25lZCBsb25nIG5pdmNzdzsKCgogdTY0IHN0YXJ0X3RpbWU7CgoKIHU2NCBzdGFydF9ib290 dGltZTsKCgogdW5zaWduZWQgbG9uZyBtaW5fZmx0OwogdW5zaWduZWQgbG9uZyBtYWpfZmx0OwoK CiBzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzIHBvc2l4X2NwdXRpbWVyczsKCgoKCiBjb25zdCBzdHJ1 Y3QgY3JlZCAqcHRyYWNlcl9jcmVkOwoKCiBjb25zdCBzdHJ1Y3QgY3JlZCAqcmVhbF9jcmVkOwoK CiBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZDsKCgoKIHN0cnVjdCBrZXkgKmNhY2hlZF9yZXF1ZXN0 ZWRfa2V5OwojIDg5NyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBjaGFyIGNvbW1bMTZdOwoK IHN0cnVjdCBuYW1laWRhdGEgKm5hbWVpZGF0YTsKCgogc3RydWN0IHN5c3Zfc2VtIHN5c3ZzZW07 CiBzdHJ1Y3Qgc3lzdl9zaG0gc3lzdnNobTsKCgogdW5zaWduZWQgbG9uZyBsYXN0X3N3aXRjaF9j b3VudDsKIHVuc2lnbmVkIGxvbmcgbGFzdF9zd2l0Y2hfdGltZTsKCgogc3RydWN0IGZzX3N0cnVj dCAqZnM7CgoKIHN0cnVjdCBmaWxlc19zdHJ1Y3QgKmZpbGVzOwoKCiBzdHJ1Y3QgbnNwcm94eSAq bnNwcm94eTsKCgogc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZ25hbDsKIHN0cnVjdCBzaWdoYW5k X3N0cnVjdCAqc2lnaGFuZDsKIHNpZ3NldF90IGJsb2NrZWQ7CiBzaWdzZXRfdCByZWFsX2Jsb2Nr ZWQ7Cgogc2lnc2V0X3Qgc2F2ZWRfc2lnbWFzazsKIHN0cnVjdCBzaWdwZW5kaW5nIHBlbmRpbmc7 CiB1bnNpZ25lZCBsb25nIHNhc19zc19zcDsKIHNpemVfdCBzYXNfc3Nfc2l6ZTsKIHVuc2lnbmVk IGludCBzYXNfc3NfZmxhZ3M7Cgogc3RydWN0IGNhbGxiYWNrX2hlYWQgKnRhc2tfd29ya3M7CgoK CiBzdHJ1Y3QgYXVkaXRfY29udGV4dCAqYXVkaXRfY29udGV4dDsKCiBrdWlkX3QgbG9naW51aWQ7 CiB1bnNpZ25lZCBpbnQgc2Vzc2lvbmlkOwoKIHN0cnVjdCBzZWNjb21wIHNlY2NvbXA7CgoKIHUz MiBwYXJlbnRfZXhlY19pZDsKIHUzMiBzZWxmX2V4ZWNfaWQ7CgoKIHNwaW5sb2NrX3QgYWxsb2Nf bG9jazsKCgogcmF3X3NwaW5sb2NrX3QgcGlfbG9jazsKCiBzdHJ1Y3Qgd2FrZV9xX25vZGUgd2Fr ZV9xOwoKCgogc3RydWN0IHJiX3Jvb3RfY2FjaGVkIHBpX3dhaXRlcnM7Cgogc3RydWN0IHRhc2tf c3RydWN0ICpwaV90b3BfdGFzazsKCiBzdHJ1Y3QgcnRfbXV0ZXhfd2FpdGVyICpwaV9ibG9ja2Vk X29uOwojIDEwMDAgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgogdm9pZCAqam91cm5hbF9pbmZv OwoKCiBzdHJ1Y3QgYmlvX2xpc3QgKmJpb19saXN0OwoKCgogc3RydWN0IGJsa19wbHVnICpwbHVn OwoKCgogc3RydWN0IHJlY2xhaW1fc3RhdGUgKnJlY2xhaW1fc3RhdGU7Cgogc3RydWN0IGJhY2tp bmdfZGV2X2luZm8gKmJhY2tpbmdfZGV2X2luZm87Cgogc3RydWN0IGlvX2NvbnRleHQgKmlvX2Nv bnRleHQ7CgoKIHN0cnVjdCBjYXB0dXJlX2NvbnRyb2wgKmNhcHR1cmVfY29udHJvbDsKCgogdW5z aWduZWQgbG9uZyBwdHJhY2VfbWVzc2FnZTsKIGtlcm5lbF9zaWdpbmZvX3QgKmxhc3Rfc2lnaW5m bzsKCiBzdHJ1Y3QgdGFza19pb19hY2NvdW50aW5nIGlvYWM7CgoKCgoKCiB1NjQgYWNjdF9yc3Nf bWVtMTsKCiB1NjQgYWNjdF92bV9tZW0xOwoKIHU2NCBhY2N0X3RpbWV4cGQ7CgoKCiBub2RlbWFz a190IG1lbXNfYWxsb3dlZDsKCiBzZXFjb3VudF90IG1lbXNfYWxsb3dlZF9zZXE7CiBpbnQgY3B1 c2V0X21lbV9zcHJlYWRfcm90b3I7CiBpbnQgY3B1c2V0X3NsYWJfc3ByZWFkX3JvdG9yOwoKCgog c3RydWN0IGNzc19zZXQgKmNncm91cHM7Cgogc3RydWN0IGxpc3RfaGVhZCBjZ19saXN0OwoKCgoK Cgogc3RydWN0IHJvYnVzdF9saXN0X2hlYWQgKnJvYnVzdF9saXN0OwoKCgogc3RydWN0IGxpc3Rf aGVhZCBwaV9zdGF0ZV9saXN0Owogc3RydWN0IGZ1dGV4X3BpX3N0YXRlICpwaV9zdGF0ZV9jYWNo ZTsKIHN0cnVjdCBtdXRleCBmdXRleF9leGl0X211dGV4OwogdW5zaWduZWQgaW50IGZ1dGV4X3N0 YXRlOwoKCiBzdHJ1Y3QgcGVyZl9ldmVudF9jb250ZXh0ICpwZXJmX2V2ZW50X2N0eHBbcGVyZl9u cl90YXNrX2NvbnRleHRzXTsKIHN0cnVjdCBtdXRleCBwZXJmX2V2ZW50X211dGV4Owogc3RydWN0 IGxpc3RfaGVhZCBwZXJmX2V2ZW50X2xpc3Q7CiMgMTEzMCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVk LmgiCiBzdHJ1Y3QgcnNlcSAqcnNlcTsKIHUzMiByc2VxX3NpZzsKCgoKCiB1bnNpZ25lZCBsb25n IHJzZXFfZXZlbnRfbWFzazsKCgogc3RydWN0IHRsYmZsdXNoX3VubWFwX2JhdGNoIHRsYl91YmM7 CgogdW5pb24gewogIHJlZmNvdW50X3QgcmN1X3VzZXJzOwogIHN0cnVjdCBjYWxsYmFja19oZWFk IHJjdTsKIH07CgoKIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnNwbGljZV9waXBlOwoKIHN0cnVj dCBwYWdlX2ZyYWcgdGFza19mcmFnOwoKCiBzdHJ1Y3QgdGFza19kZWxheV9pbmZvICpkZWxheXM7 CiMgMTE2MyAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCiBpbnQgbnJfZGlydGllZDsKIGludCBu cl9kaXJ0aWVkX3BhdXNlOwoKIHVuc2lnbmVkIGxvbmcgZGlydHlfcGF1c2VkX3doZW47CgoKIGlu dCBsYXRlbmN5X3JlY29yZF9jb3VudDsKIHN0cnVjdCBsYXRlbmN5X3JlY29yZCBsYXRlbmN5X3Jl Y29yZFszMl07CgoKCgoKIHU2NCB0aW1lcl9zbGFja19uczsKIHU2NCBkZWZhdWx0X3RpbWVyX3Ns YWNrX25zOwoKCgoKCgoKIGludCBjdXJyX3JldF9zdGFjazsKIGludCBjdXJyX3JldF9kZXB0aDsK Cgogc3RydWN0IGZ0cmFjZV9yZXRfc3RhY2sgKnJldF9zdGFjazsKCgogdW5zaWduZWQgbG9uZyBs b25nIGZ0cmFjZV90aW1lc3RhbXA7CgoKCgoKIGF0b21pY190IHRyYWNlX292ZXJydW47CgoKIGF0 b21pY190IHRyYWNpbmdfZ3JhcGhfcGF1c2U7CgoKCgogdW5zaWduZWQgbG9uZyB0cmFjZTsKCgog dW5zaWduZWQgbG9uZyB0cmFjZV9yZWN1cnNpb247CiMgMTIzNSAiLi9pbmNsdWRlL2xpbnV4L3Nj aGVkLmgiCiBzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2dfaW5fb29tOwogZ2ZwX3QgbWVtY2dfb29t X2dmcF9tYXNrOwogaW50IG1lbWNnX29vbV9vcmRlcjsKCgogdW5zaWduZWQgaW50IG1lbWNnX25y X3BhZ2VzX292ZXJfaGlnaDsKCgogc3RydWN0IG1lbV9jZ3JvdXAgKmFjdGl2ZV9tZW1jZzsKCgoK IHN0cnVjdCByZXF1ZXN0X3F1ZXVlICp0aHJvdHRsZV9xdWV1ZTsKCgoKCgoKIHVuc2lnbmVkIGlu dCBzZXF1ZW50aWFsX2lvOwogdW5zaWduZWQgaW50IHNlcXVlbnRpYWxfaW9fYXZnOwoKCgoKIGlu dCBwYWdlZmF1bHRfZGlzYWJsZWQ7Cgogc3RydWN0IHRhc2tfc3RydWN0ICpvb21fcmVhcGVyX2xp c3Q7CgoKIHN0cnVjdCB2bV9zdHJ1Y3QgKnN0YWNrX3ZtX2FyZWE7CgoKCiByZWZjb3VudF90IHN0 YWNrX3JlZmNvdW50OwoKCgoKCgogdm9pZCAqc2VjdXJpdHk7CiMgMTI4OCAiLi9pbmNsdWRlL2xp bnV4L3NjaGVkLmgiCgoKCiBzdHJ1Y3QgdGhyZWFkX3N0cnVjdCB0aHJlYWQ7CgoKCgoKCgp9OwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IHBpZCAqdGFza19waWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQp7CiByZXR1cm4g dGFzay0+dGhyZWFkX3BpZDsKfQojIDEzMTcgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpwaWRf dCBfX3Rhc2tfcGlkX25yX25zKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgZW51bSBwaWRfdHlw ZSB0eXBlLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpOwoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19waWRfbnIoc3Ry dWN0IHRhc2tfc3RydWN0ICp0c2spCnsKIHJldHVybiB0c2stPnBpZDsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19w aWRfbnJfbnMoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpu cykKewogcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNrLCBQSURUWVBFX1BJRCwgbnMpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBw aWRfdCB0YXNrX3BpZF92bnIoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsKIHJldHVybiBfX3Rh c2tfcGlkX25yX25zKHRzaywgUElEVFlQRV9QSUQsICgodm9pZCAqKTApKTsKfQoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHBpZF90IHRh c2tfdGdpZF9ucihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogcmV0dXJuIHRzay0+dGdpZDsK fQojIDEzNTAgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgcGlkX2FsaXZlKGNvbnN0IHN0 cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogcmV0dXJuIHAtPnRocmVhZF9waWQgIT0gKCh2b2lkICop MCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHBpZF90IHRhc2tfcGdycF9ucl9ucyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3Ry dWN0IHBpZF9uYW1lc3BhY2UgKm5zKQp7CiByZXR1cm4gX190YXNrX3BpZF9ucl9ucyh0c2ssIFBJ RFRZUEVfUEdJRCwgbnMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3BncnBfdm5yKHN0cnVjdCB0YXNrX3N0cnVj dCAqdHNrKQp7CiByZXR1cm4gX190YXNrX3BpZF9ucl9ucyh0c2ssIFBJRFRZUEVfUEdJRCwgKCh2 b2lkICopMCkpOwp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19zZXNzaW9uX25yX25zKHN0cnVjdCB0YXNrX3N0cnVj dCAqdHNrLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpCnsKIHJldHVybiBfX3Rhc2tfcGlkX25y X25zKHRzaywgUElEVFlQRV9TSUQsIG5zKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19zZXNzaW9uX3ZucihzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNrLCBQSURU WVBFX1NJRCwgKCh2b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBwaWRfdCB0YXNrX3RnaWRfbnJfbnMoc3RydWN0IHRh c2tfc3RydWN0ICp0c2ssIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucykKewogcmV0dXJuIF9fdGFz a19waWRfbnJfbnModHNrLCBQSURUWVBFX1RHSUQsIG5zKTsKfQoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza190Z2lkX3Zu cihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogcmV0dXJuIF9fdGFza19waWRfbnJfbnModHNr LCBQSURUWVBFX1RHSUQsICgodm9pZCAqKTApKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19wcGlkX25yX25zKGNv bnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgcGlkX25hbWVzcGFjZSAqbnMpCnsK IHBpZF90IHBpZCA9IDA7CgogcmN1X3JlYWRfbG9jaygpOwogaWYgKHBpZF9hbGl2ZSh0c2spKQog IHBpZCA9IHRhc2tfdGdpZF9ucl9ucygoeyB0eXBlb2YoKih0c2stPnJlYWxfcGFyZW50KSkgKl9f X19fX19fcDEgPSAodHlwZW9mKCoodHNrLT5yZWFsX3BhcmVudCkpICopKHsgdW5pb24geyB0eXBl b2YoKHRzay0+cmVhbF9wYXJlbnQpKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191OyBpZiAoMSkg X19yZWFkX29uY2Vfc2l6ZSgmKCh0c2stPnJlYWxfcGFyZW50KSksIF9fdS5fX2MsIHNpemVvZigo dHNrLT5yZWFsX3BhcmVudCkpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigodHNr LT5yZWFsX3BhcmVudCkpLCBfX3UuX19jLCBzaXplb2YoKHRzay0+cmVhbF9wYXJlbnQpKSk7IGRv IHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBl b2YoKih0c2stPnJlYWxfcGFyZW50KSkgKikoX19fX19fX19wMSkpOyB9KSwgbnMpOwogcmN1X3Jl YWRfdW5sb2NrKCk7CgogcmV0dXJuIHBpZDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcGlkX3QgdGFza19wcGlkX25yKGNvbnN0IHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQp7CiByZXR1cm4gdGFza19wcGlkX25yX25zKHRzaywgJmlu aXRfcGlkX25zKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHBpZF90IHRhc2tfcGdycF9ucihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz aykKewogcmV0dXJuIHRhc2tfcGdycF9ucl9ucyh0c2ssICZpbml0X3BpZF9ucyk7Cn0KCgoKCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVu c2lnbmVkIGludCB0YXNrX3N0YXRlX2luZGV4KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQp7CiB1 bnNpZ25lZCBpbnQgdHNrX3N0YXRlID0gKHsgdW5pb24geyB0eXBlb2YodHNrLT5zdGF0ZSkgX192 YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJih0c2stPnN0 YXRlKSwgX191Ll9fYywgc2l6ZW9mKHRzay0+c3RhdGUpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXpl X25vY2hlY2soJih0c2stPnN0YXRlKSwgX191Ll9fYywgc2l6ZW9mKHRzay0+c3RhdGUpKTsgZG8g eyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsKIHVuc2lnbmVkIGludCBzdGF0ZSA9ICh0c2tf c3RhdGUgfCB0c2stPmV4aXRfc3RhdGUpICYgKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4 MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCk7CgogZG8geyBleHRlcm4g dm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNDE3KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJy b3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAw MiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAx KSkgPT0gMCB8fCAoKCgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAw MDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKCgoKCgweDAwMDAg fCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAw eDAwNDApICsgMSkgPDwgMSkpIC0gMSkpICE9IDApIikpKTsgaWYgKCEoISgoKCgoMHgwMDAwIHwg MHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgw MDQwKSArIDEpIDw8IDEpKSA9PSAwIHx8ICgoKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8 IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkg JiAoKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAx MCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgLSAxKSkgIT0gMCkpKSkgX19jb21waWxl dGltZV9hc3NlcnRfMTQxNygpOyB9IHdoaWxlICgwKTsKCiBpZiAodHNrX3N0YXRlID09ICgweDAw MDIgfCAweDA0MDApKQogIHN0YXRlID0gKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSk7CgogcmV0dXJuIGZs cyhzdGF0ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGNoYXIgdGFza19pbmRleF90b19jaGFyKHVuc2lnbmVkIGludCBzdGF0ZSkK ewogc3RhdGljIGNvbnN0IGNoYXIgc3RhdGVfY2hhcltdID0gIlJTRFR0WFpQSSI7CgogZG8geyBl eHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8xNDI5KHZvaWQpIF9fYXR0cmlidXRlX18o KF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiMSArIGlsb2cyKFRBU0tfUkVQT1JU X01BWCkgIT0gc2l6ZW9mKHN0YXRlX2NoYXIpIC0gMSIpKSk7IGlmICghKCEoMSArICggX19idWls dGluX2NvbnN0YW50X3AoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgw MDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA/ICggX19idWlsdGlu X2NvbnN0YW50X3AoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4 IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA/ICggKCgoKDB4MDAwMCB8 IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4 MDA0MCkgKyAxKSA8PCAxKSkgPCAyID8gMCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIg fCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkp ICYgKDFVTEwgPDwgNjMpID8gNjMgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgw MDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgx VUxMIDw8IDYyKSA/IDYyIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8 IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8 PCA2MSkgPyA2MSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAw MDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNjAp ID8gNjAgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwg MHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDU5KSA/IDU5 IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAx MCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1OCkgPyA1OCA6ICgo KCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAw eDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNTcpID8gNTcgOiAoKCgoMHgw MDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIw IHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDU2KSA/IDU2IDogKCgoKDB4MDAwMCB8 IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4 MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1NSkgPyA1NSA6ICgoKCgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp ICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNTQpID8gNTQgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwg MHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEp IDw8IDEpKSAmICgxVUxMIDw8IDUzKSA/IDUzIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAw MiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAx KSkgJiAoMVVMTCA8PCA1MikgPyA1MiA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAw eDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYg KDFVTEwgPDwgNTEpID8gNTEgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0 IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxM IDw8IDUwKSA/IDUwIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0 OSkgPyA0OSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDgg fCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNDgpID8g NDggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgw MDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQ3KSA/IDQ3IDog KCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8 IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0NikgPyA0NiA6ICgoKCgw eDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAw MjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgNDUpID8gNDUgOiAoKCgoMHgwMDAw IHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwg MHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQ0KSA/IDQ0IDogKCgoKDB4MDAwMCB8IDB4 MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0 MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA0MykgPyA0MyA6ICgoKCgweDAwMDAgfCAweDAwMDEg fCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsg MSkgPDwgMSkpICYgKDFVTEwgPDwgNDIpID8gNDIgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgw MDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8 IDEpKSAmICgxVUxMIDw8IDQxKSA/IDQxIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8 IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkg JiAoMVVMTCA8PCA0MCkgPyA0MCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFV TEwgPDwgMzkpID8gMzkgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwg MHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8 IDM4KSA/IDM4IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAw OCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzNykg PyAzNyA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAw eDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMzYpID8gMzYg OiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEw IHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDM1KSA/IDM1IDogKCgo KDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4 MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzNCkgPyAzNCA6ICgoKCgweDAw MDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAg fCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMzMpID8gMzMgOiAoKCgoMHgwMDAwIHwg MHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgw MDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDMyKSA/IDMyIDogKCgoKDB4MDAwMCB8IDB4MDAw MSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkg KyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAzMSkgPyAzMSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAw eDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkg PDwgMSkpICYgKDFVTEwgPDwgMzApID8gMzAgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAy IHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEp KSAmICgxVUxMIDw8IDI5KSA/IDI5IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4 MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAo MVVMTCA8PCAyOCkgPyAyOCA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQg fCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwg PDwgMjcpID8gMjcgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgw MDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDI2 KSA/IDI2IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8 IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyNSkgPyAy NSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAw MTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMjQpID8gMjQgOiAo KCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwg MHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDIzKSA/IDIzIDogKCgoKDB4 MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAy MCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyMikgPyAyMiA6ICgoKCgweDAwMDAg fCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAw eDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMjEpID8gMjEgOiAoKCgoMHgwMDAwIHwgMHgw MDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQw KSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDIwKSA/IDIwIDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8 IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAx KSA8PCAxKSkgJiAoMVVMTCA8PCAxOSkgPyAxOSA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAw MDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwg MSkpICYgKDFVTEwgPDwgMTgpID8gMTggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwg MHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAm ICgxVUxMIDw8IDE3KSA/IDE3IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAw NCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVM TCA8PCAxNikgPyAxNiA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAw eDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwg MTUpID8gMTUgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4 IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDE0KSA/ IDE0IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4 MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAxMykgPyAxMyA6 ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAg fCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMTIpID8gMTIgOiAoKCgo MHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgw MDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDExKSA/IDExIDogKCgoKDB4MDAw MCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8 IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAxMCkgPyAxMCA6ICgoKCgweDAwMDAgfCAw eDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAw NDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgOSkgPyA5IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8 IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAx KSA8PCAxKSkgJiAoMVVMTCA8PCA4KSA/IDggOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAy IHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEp KSAmICgxVUxMIDw8IDcpID8gNyA6ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAw MDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFV TEwgPDwgNikgPyA2IDogKCgoKDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4 MDAwOCB8IDB4MDAxMCB8IDB4MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCA1 KSA/IDUgOiAoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwg MHgwMDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSAmICgxVUxMIDw8IDQpID8gNCA6 ICgoKCgweDAwMDAgfCAweDAwMDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAg fCAweDAwMjAgfCAweDAwNDApICsgMSkgPDwgMSkpICYgKDFVTEwgPDwgMykgPyAzIDogKCgoKDB4 MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4MDAy MCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgJiAoMVVMTCA8PCAyKSA/IDIgOiAxKSA6IC0xKSA6IChz aXplb2YoKCgoMHgwMDAwIHwgMHgwMDAxIHwgMHgwMDAyIHwgMHgwMDA0IHwgMHgwMDA4IHwgMHgw MDEwIHwgMHgwMDIwIHwgMHgwMDQwKSArIDEpIDw8IDEpKSA8PSA0KSA/IF9faWxvZzJfdTMyKCgo KDB4MDAwMCB8IDB4MDAwMSB8IDB4MDAwMiB8IDB4MDAwNCB8IDB4MDAwOCB8IDB4MDAxMCB8IDB4 MDAyMCB8IDB4MDA0MCkgKyAxKSA8PCAxKSkgOiBfX2lsb2cyX3U2NCgoKCgweDAwMDAgfCAweDAw MDEgfCAweDAwMDIgfCAweDAwMDQgfCAweDAwMDggfCAweDAwMTAgfCAweDAwMjAgfCAweDAwNDAp ICsgMSkgPDwgMSkpICkgIT0gc2l6ZW9mKHN0YXRlX2NoYXIpIC0gMSkpKSBfX2NvbXBpbGV0aW1l X2Fzc2VydF8xNDI5KCk7IH0gd2hpbGUgKDApOwoKIHJldHVybiBzdGF0ZV9jaGFyW3N0YXRlXTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgY2hhciB0YXNrX3N0YXRlX3RvX2NoYXIoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsKIHJl dHVybiB0YXNrX2luZGV4X3RvX2NoYXIodGFza19zdGF0ZV9pbmRleCh0c2spKTsKfQojIDE0NDgg Ii4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaXNfZ2xvYmFsX2luaXQoc3RydWN0IHRhc2tf c3RydWN0ICp0c2spCnsKIHJldHVybiB0YXNrX3RnaWRfbnIodHNrKSA9PSAxOwp9CgpleHRlcm4g c3RydWN0IHBpZCAqY2FkX3BpZDsKIyAxNTE3ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9v bCBpc19wZXJjcHVfdGhyZWFkKHZvaWQpCnsKCiByZXR1cm4gKGdldF9jdXJyZW50KCktPmZsYWdz ICYgMHgwNDAwMDAwMCkgJiYKICAoZ2V0X2N1cnJlbnQoKS0+bnJfY3B1c19hbGxvd2VkID09IDEp OwoKCgp9CiMgMTU0OSAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19ub19uZXdf cHJpdnMoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCgwLCAmcC0+YXRv bWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X25vX25ld19wcml2cyhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnApIHsgc2V0X2JpdCgwLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwcmVh ZF9wYWdlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyByZXR1cm4gdGVzdF9iaXQoMSwgJnAtPmF0 b21pY19mbGFncyk7IH0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCB0YXNrX3NldF9zcHJlYWRfcGFnZShzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnApIHsgc2V0X2JpdCgxLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfY2xlYXJf c3ByZWFkX3BhZ2Uoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IGNsZWFyX2JpdCgxLCAmcC0+YXRv bWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwcmVhZF9zbGFiKHN0cnVjdCB0YXNrX3N0cnVjdCAq cCkgeyByZXR1cm4gdGVzdF9iaXQoMiwgJnAtPmF0b21pY19mbGFncyk7IH0Kc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB0YXNrX3Nl dF9zcHJlYWRfc2xhYihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgc2V0X2JpdCgyLCAmcC0+YXRv bWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfY2xlYXJfc3ByZWFkX3NsYWIoc3RydWN0IHRhc2tfc3Ry dWN0ICpwKSB7IGNsZWFyX2JpdCgyLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3Nw ZWNfc3NiX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCgz LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfc3NiX2Rpc2FibGUoc3Ry dWN0IHRhc2tfc3RydWN0ICpwKSB7IHNldF9iaXQoMywgJnAtPmF0b21pY19mbGFncyk7IH0Kc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCB0YXNrX2NsZWFyX3NwZWNfc3NiX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IGNs ZWFyX2JpdCgzLCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwZWNfc3NiX25vZXhl YyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApIHsgcmV0dXJuIHRlc3RfYml0KDcsICZwLT5hdG9taWNf ZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgdGFza19zZXRfc3BlY19zc2Jfbm9leGVjKHN0cnVjdCB0YXNrX3N0cnVj dCAqcCkgeyBzZXRfYml0KDcsICZwLT5hdG9taWNfZmxhZ3MpOyB9CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdGFza19jbGVhcl9z cGVjX3NzYl9ub2V4ZWMoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IGNsZWFyX2JpdCg3LCAmcC0+ YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0YXNrX3NwZWNfc3NiX2ZvcmNlX2Rpc2FibGUoc3RydWN0 IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCg0LCAmcC0+YXRvbWljX2ZsYWdzKTsg fQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHRhc2tfc2V0X3NwZWNfc3NiX2ZvcmNlX2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0 ICpwKSB7IHNldF9iaXQoNCwgJnAtPmF0b21pY19mbGFncyk7IH0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19zcGVjX2li X2Rpc2FibGUoc3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCg1LCAmcC0+ YXRvbWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfaWJfZGlzYWJsZShzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnApIHsgc2V0X2JpdCg1LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHRhc2tf Y2xlYXJfc3BlY19pYl9kaXNhYmxlKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyBjbGVhcl9iaXQo NSwgJnAtPmF0b21pY19mbGFncyk7IH0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19zcGVjX2liX2ZvcmNlX2Rpc2FibGUo c3RydWN0IHRhc2tfc3RydWN0ICpwKSB7IHJldHVybiB0ZXN0X2JpdCg2LCAmcC0+YXRvbWljX2Zs YWdzKTsgfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHRhc2tfc2V0X3NwZWNfaWJfZm9yY2VfZGlzYWJsZShzdHJ1Y3QgdGFza19z dHJ1Y3QgKnApIHsgc2V0X2JpdCg2LCAmcC0+YXRvbWljX2ZsYWdzKTsgfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZApjdXJyZW50 X3Jlc3RvcmVfZmxhZ3ModW5zaWduZWQgbG9uZyBvcmlnX2ZsYWdzLCB1bnNpZ25lZCBsb25nIGZs YWdzKQp7CiBnZXRfY3VycmVudCgpLT5mbGFncyAmPSB+ZmxhZ3M7CiBnZXRfY3VycmVudCgpLT5m bGFncyB8PSBvcmlnX2ZsYWdzICYgZmxhZ3M7Cn0KCmV4dGVybiBpbnQgY3B1c2V0X2NwdW1hc2tf Y2FuX3Nocmluayhjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3VyLCBjb25zdCBzdHJ1Y3QgY3B1bWFz ayAqdHJpYWwpOwpleHRlcm4gaW50IHRhc2tfY2FuX2F0dGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnAsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjc19jcHVzX2FsbG93ZWQpOwoKZXh0ZXJuIHZvaWQg ZG9fc2V0X2NwdXNfYWxsb3dlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0cnVjdCBj cHVtYXNrICpuZXdfbWFzayk7CmV4dGVybiBpbnQgc2V0X2NwdXNfYWxsb3dlZF9wdHIoc3RydWN0 IHRhc2tfc3RydWN0ICpwLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbmV3X21hc2spOwojIDE2MDIg Ii4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gaW50IHlpZWxkX3RvKHN0cnVjdCB0YXNr X3N0cnVjdCAqcCwgYm9vbCBwcmVlbXB0KTsKZXh0ZXJuIHZvaWQgc2V0X3VzZXJfbmljZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnAsIGxvbmcgbmljZSk7CmV4dGVybiBpbnQgdGFza19wcmlvKGNvbnN0 IHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGFza19uaWNlKGNvbnN0IHN0cnVj dCB0YXNrX3N0cnVjdCAqcCkKewogcmV0dXJuICgoKHApLT5zdGF0aWNfcHJpbykgLSAoMTAwICsg KDE5IC0gLTIwICsgMSkgLyAyKSk7Cn0KCmV4dGVybiBpbnQgY2FuX25pY2UoY29uc3Qgc3RydWN0 IHRhc2tfc3RydWN0ICpwLCBjb25zdCBpbnQgbmljZSk7CmV4dGVybiBpbnQgdGFza19jdXJyKGNv bnN0IHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7CmV4dGVybiBpbnQgaWRsZV9jcHUoaW50IGNwdSk7 CmV4dGVybiBpbnQgYXZhaWxhYmxlX2lkbGVfY3B1KGludCBjcHUpOwpleHRlcm4gaW50IHNjaGVk X3NldHNjaGVkdWxlcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgaW50LCBjb25zdCBzdHJ1Y3Qgc2No ZWRfcGFyYW0gKik7CmV4dGVybiBpbnQgc2NoZWRfc2V0c2NoZWR1bGVyX25vY2hlY2soc3RydWN0 IHRhc2tfc3RydWN0ICosIGludCwgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICopOwpleHRlcm4g aW50IHNjaGVkX3NldGF0dHIoc3RydWN0IHRhc2tfc3RydWN0ICosIGNvbnN0IHN0cnVjdCBzY2hl ZF9hdHRyICopOwpleHRlcm4gaW50IHNjaGVkX3NldGF0dHJfbm9jaGVjayhzdHJ1Y3QgdGFza19z dHJ1Y3QgKiwgY29uc3Qgc3RydWN0IHNjaGVkX2F0dHIgKik7CmV4dGVybiBzdHJ1Y3QgdGFza19z dHJ1Y3QgKmlkbGVfdGFzayhpbnQgY3B1KTsKCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgaXNfaWRsZV90YXNrKGNvbnN0 IHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKewogcmV0dXJuICEhKHAtPmZsYWdzICYgMHgwMDAwMDAw Mik7Cn0KCmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJfdGFzayhpbnQgY3B1KTsKZXh0 ZXJuIHZvaWQgaWE2NF9zZXRfY3Vycl90YXNrKGludCBjcHUsIHN0cnVjdCB0YXNrX3N0cnVjdCAq cCk7Cgp2b2lkIHlpZWxkKHZvaWQpOwoKdW5pb24gdGhyZWFkX3VuaW9uIHsKCiBzdHJ1Y3QgdGFz a19zdHJ1Y3QgdGFzazsKCgoKCiB1bnNpZ25lZCBsb25nIHN0YWNrWygoKDFVTCkgPDwgMTIpIDw8 ICgyICsgMCkpL3NpemVvZihsb25nKV07Cn07CgoKCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW5p dF9zdGFja1soKCgxVUwpIDw8IDEyKSA8PCAoMiArIDApKSAvIHNpemVvZih1bnNpZ25lZCBsb25n KV07CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgc3RydWN0IHRocmVhZF9pbmZvICp0YXNrX3RocmVhZF9pbmZvKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdGFzaykKewogcmV0dXJuICZ0YXNrLT50aHJlYWRfaW5mbzsKfQojIDE2NzkgIi4vaW5j bHVkZS9saW51eC9zY2hlZC5oIgpleHRlcm4gc3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX3Rhc2tf YnlfdnBpZChwaWRfdCBucik7CmV4dGVybiBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmZpbmRfdGFza19i eV9waWRfbnMocGlkX3QgbnIsIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucyk7CgoKCgpleHRlcm4g c3RydWN0IHRhc2tfc3RydWN0ICpmaW5kX2dldF90YXNrX2J5X3ZwaWQocGlkX3QgbnIpOwoKZXh0 ZXJuIGludCB3YWtlX3VwX3N0YXRlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCB1bnNpZ25lZCBp bnQgc3RhdGUpOwpleHRlcm4gaW50IHdha2VfdXBfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRzayk7CmV4dGVybiB2b2lkIHdha2VfdXBfbmV3X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0 c2spOwoKCmV4dGVybiB2b2lkIGtpY2tfcHJvY2VzcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7 CgoKCgpleHRlcm4gdm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ss IGNvbnN0IGNoYXIgKmZyb20sIGJvb2wgZXhlYyk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNldF90YXNrX2NvbW0oc3RydWN0 IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmZyb20pCnsKIF9fc2V0X3Rhc2tfY29tbSh0 c2ssIGZyb20sIGZhbHNlKTsKfQoKZXh0ZXJuIGNoYXIgKl9fZ2V0X3Rhc2tfY29tbShjaGFyICp0 bywgc2l6ZV90IGxlbiwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwoKCgoKCgp2b2lkIHNjaGVk dWxlcl9pcGkodm9pZCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIHdhaXRfdGFza19pbmFjdGl2ZShz dHJ1Y3QgdGFza19zdHJ1Y3QgKiwgbG9uZyBtYXRjaF9zdGF0ZSk7CiMgMTcyNSAiLi9pbmNsdWRl L2xpbnV4L3NjaGVkLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRzaywgaW50IGZsYWcpCnsKIHNldF90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVhZF9pbmZv KHRzayksIGZsYWcpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNsZWFyX3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRzaywgaW50IGZsYWcpCnsKIGNsZWFyX3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFk X2luZm8odHNrKSwgZmxhZyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdXBkYXRlX3Rza190aHJlYWRfZmxhZyhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRzaywgaW50IGZsYWcsCiAgICAgICBib29sIHZhbHVlKQp7CiB1cGRhdGVf dGlfdGhyZWFkX2ZsYWcodGFza190aHJlYWRfaW5mbyh0c2spLCBmbGFnLCB2YWx1ZSk7Cn0KCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlu dCB0ZXN0X2FuZF9zZXRfdHNrX3RocmVhZF9mbGFnKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBp bnQgZmxhZykKewogcmV0dXJuIHRlc3RfYW5kX3NldF90aV90aHJlYWRfZmxhZyh0YXNrX3RocmVh ZF9pbmZvKHRzayksIGZsYWcpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGVzdF9hbmRfY2xlYXJfdHNrX3RocmVhZF9mbGFn KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBpbnQgZmxhZykKewogcmV0dXJuIHRlc3RfYW5kX2Ns ZWFyX3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxhZyk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCB0 ZXN0X3Rza190aHJlYWRfZmxhZyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgaW50IGZsYWcpCnsK IHJldHVybiB0ZXN0X3RpX3RocmVhZF9mbGFnKHRhc2tfdGhyZWFkX2luZm8odHNrKSwgZmxhZyk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgc2V0X3Rza19uZWVkX3Jlc2NoZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsK IHNldF90c2tfdGhyZWFkX2ZsYWcodHNrLDMpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNsZWFyX3Rza19uZWVkX3Jlc2No ZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsKIGNsZWFyX3Rza190aHJlYWRfZmxhZyh0c2ss Myk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGludCB0ZXN0X3Rza19uZWVkX3Jlc2NoZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2sp CnsKIHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KCEhKHRlc3RfdHNrX3RocmVhZF9mbGFnKHRzaywz KSksIDApOwp9CiMgMTc3OCAiLi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgiCmV4dGVybiBpbnQgX2Nv bmRfcmVzY2hlZCh2b2lkKTsKIyAxNzg4ICIuL2luY2x1ZGUvbGludXgvc2NoZWQuaCIKZXh0ZXJu IGludCBfX2NvbmRfcmVzY2hlZF9sb2NrKHNwaW5sb2NrX3QgKmxvY2spOwoKCgoKCgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGNv bmRfcmVzY2hlZF9yY3Uodm9pZCkKewoKIHJjdV9yZWFkX3VubG9jaygpOwogKHsgX19fbWlnaHRf c2xlZXAoImluY2x1ZGUvbGludXgvc2NoZWQuaCIsIDE3OTksIDApOyBfY29uZF9yZXNjaGVkKCk7 IH0pOwogcmN1X3JlYWRfbG9jaygpOwoKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc3Bpbl9uZWVkYnJlYWsoc3Bpbmxv Y2tfdCAqbG9jaykKewoKCgogcmV0dXJuIDA7Cgp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpIGJvb2wgbmVlZF9yZXNjaGVkKHZvaWQpCnsKIHJldHVybiBfX2J1aWx0aW5fZXhw ZWN0KCEhKHRlc3RfdGlfdGhyZWFkX2ZsYWcoKChzdHJ1Y3QgdGhyZWFkX2luZm8gKilnZXRfY3Vy cmVudCgpKSwgMykpLCAwKTsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbnQgdGFza19jcHUoY29uc3Qgc3Ry dWN0IHRhc2tfc3RydWN0ICpwKQp7CgogcmV0dXJuICh7IHVuaW9uIHsgdHlwZW9mKHAtPmNwdSkg X192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJihwLT5j cHUpLCBfX3UuX19jLCBzaXplb2YocC0+Y3B1KSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2No ZWNrKCYocC0+Y3B1KSwgX191Ll9fYywgc2l6ZW9mKHAtPmNwdSkpOyBkbyB7IH0gd2hpbGUgKDAp OyBfX3UuX192YWw7IH0pOwoKCgp9CgpleHRlcm4gdm9pZCBzZXRfdGFza19jcHUoc3RydWN0IHRh c2tfc3RydWN0ICpwLCB1bnNpZ25lZCBpbnQgY3B1KTsKIyAxODY3ICIuL2luY2x1ZGUvbGludXgv c2NoZWQuaCIKZXh0ZXJuIGxvbmcgc2NoZWRfc2V0YWZmaW5pdHkocGlkX3QgcGlkLCBjb25zdCBz dHJ1Y3QgY3B1bWFzayAqbmV3X21hc2spOwpleHRlcm4gbG9uZyBzY2hlZF9nZXRhZmZpbml0eShw aWRfdCBwaWQsIHN0cnVjdCBjcHVtYXNrICptYXNrKTsKIyAxODgwICIuL2luY2x1ZGUvbGludXgv c2NoZWQuaCIKZW51bSByc2VxX2V2ZW50X21hc2tfYml0cyB7CiBSU0VRX0VWRU5UX1BSRUVNUFRf QklUID0gUlNFUV9DU19GTEFHX05PX1JFU1RBUlRfT05fUFJFRU1QVF9CSVQsCiBSU0VRX0VWRU5U X1NJR05BTF9CSVQgPSBSU0VRX0NTX0ZMQUdfTk9fUkVTVEFSVF9PTl9TSUdOQUxfQklULAogUlNF UV9FVkVOVF9NSUdSQVRFX0JJVCA9IFJTRVFfQ1NfRkxBR19OT19SRVNUQVJUX09OX01JR1JBVEVf QklULAp9OwoKZW51bSByc2VxX2V2ZW50X21hc2sgewogUlNFUV9FVkVOVF9QUkVFTVBUID0gKDFV IDw8IFJTRVFfRVZFTlRfUFJFRU1QVF9CSVQpLAogUlNFUV9FVkVOVF9TSUdOQUwgPSAoMVUgPDwg UlNFUV9FVkVOVF9TSUdOQUxfQklUKSwKIFJTRVFfRVZFTlRfTUlHUkFURSA9ICgxVSA8PCBSU0VR X0VWRU5UX01JR1JBVEVfQklUKSwKfTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9zZXRfbm90aWZ5X3Jlc3VtZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnQpCnsKIGlmICh0LT5yc2VxKQogIHNldF90c2tfdGhyZWFkX2ZsYWco dCwgMSk7Cn0KCnZvaWQgX19yc2VxX2hhbmRsZV9ub3RpZnlfcmVzdW1lKHN0cnVjdCBrc2lnbmFs ICpzaWcsIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9oYW5kbGVfbm90aWZ5X3Jl c3VtZShzdHJ1Y3Qga3NpZ25hbCAqa3NpZywKICAgICAgICAgIHN0cnVjdCBwdF9yZWdzICpyZWdz KQp7CiBpZiAoZ2V0X2N1cnJlbnQoKS0+cnNlcSkKICBfX3JzZXFfaGFuZGxlX25vdGlmeV9yZXN1 bWUoa3NpZywgcmVncyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9zaWduYWxfZGVsaXZlcihzdHJ1Y3Qga3NpZ25h bCAqa3NpZywKICAgICAgICAgICBzdHJ1Y3QgcHRfcmVncyAqcmVncykKewogX19hc21fXyBfX3Zv bGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIF9fc2V0X2JpdChSU0VRX0VWRU5UX1NJR05BTF9C SVQsICZnZXRfY3VycmVudCgpLT5yc2VxX2V2ZW50X21hc2spOwogX19hc21fXyBfX3ZvbGF0aWxl X18oIiI6IDogOiJtZW1vcnkiKTsKIHJzZXFfaGFuZGxlX25vdGlmeV9yZXN1bWUoa3NpZywgcmVn cyk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIHJzZXFfcHJlZW1wdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQpCnsKIF9fc2V0 X2JpdChSU0VRX0VWRU5UX1BSRUVNUFRfQklULCAmdC0+cnNlcV9ldmVudF9tYXNrKTsKIHJzZXFf c2V0X25vdGlmeV9yZXN1bWUodCk7Cn0KCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFfbWlncmF0ZShzdHJ1Y3QgdGFza19z dHJ1Y3QgKnQpCnsKIF9fc2V0X2JpdChSU0VRX0VWRU5UX01JR1JBVEVfQklULCAmdC0+cnNlcV9l dmVudF9tYXNrKTsKIHJzZXFfc2V0X25vdGlmeV9yZXN1bWUodCk7Cn0KCgoKCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFf Zm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHVuc2lnbmVkIGxvbmcgY2xvbmVfZmxhZ3MpCnsK IGlmIChjbG9uZV9mbGFncyAmIDB4MDAwMDAxMDApIHsKICB0LT5yc2VxID0gKCh2b2lkICopMCk7 CiAgdC0+cnNlcV9zaWcgPSAwOwogIHQtPnJzZXFfZXZlbnRfbWFzayA9IDA7CiB9IGVsc2Ugewog IHQtPnJzZXEgPSBnZXRfY3VycmVudCgpLT5yc2VxOwogIHQtPnJzZXFfc2lnID0gZ2V0X2N1cnJl bnQoKS0+cnNlcV9zaWc7CiAgdC0+cnNlcV9ldmVudF9tYXNrID0gZ2V0X2N1cnJlbnQoKS0+cnNl cV9ldmVudF9tYXNrOwogfQp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJzZXFfZXhlY3ZlKHN0cnVjdCB0YXNrX3N0cnVjdCAq dCkKewogdC0+cnNlcSA9ICgodm9pZCAqKTApOwogdC0+cnNlcV9zaWcgPSAwOwogdC0+cnNlcV9l dmVudF9tYXNrID0gMDsKfQojIDE5ODIgIi4vaW5jbHVkZS9saW51eC9zY2hlZC5oIgp2b2lkIF9f ZXhpdF91bWgoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spOwoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBleGl0X3VtaChzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRzaykKewogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEodHNrLT5mbGFncyAm IDB4MDIwMDAwMDApLCAwKSkKICBfX2V4aXRfdW1oKHRzayk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcnNlcV9z eXNjYWxsKHN0cnVjdCBwdF9yZWdzICpyZWdzKQp7Cn0KCgoKY29uc3Qgc3RydWN0IHNjaGVkX2F2 ZyAqc2NoZWRfdHJhY2VfY2ZzX3JxX2F2ZyhzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEpOwpjaGFyICpz Y2hlZF90cmFjZV9jZnNfcnFfcGF0aChzdHJ1Y3QgY2ZzX3JxICpjZnNfcnEsIGNoYXIgKnN0ciwg aW50IGxlbik7CmludCBzY2hlZF90cmFjZV9jZnNfcnFfY3B1KHN0cnVjdCBjZnNfcnEgKmNmc19y cSk7Cgpjb25zdCBzdHJ1Y3Qgc2NoZWRfYXZnICpzY2hlZF90cmFjZV9ycV9hdmdfcnQoc3RydWN0 IHJxICpycSk7CmNvbnN0IHN0cnVjdCBzY2hlZF9hdmcgKnNjaGVkX3RyYWNlX3JxX2F2Z19kbChz dHJ1Y3QgcnEgKnJxKTsKY29uc3Qgc3RydWN0IHNjaGVkX2F2ZyAqc2NoZWRfdHJhY2VfcnFfYXZn X2lycShzdHJ1Y3QgcnEgKnJxKTsKCmludCBzY2hlZF90cmFjZV9ycV9jcHUoc3RydWN0IHJxICpy cSk7Cgpjb25zdCBzdHJ1Y3QgY3B1bWFzayAqc2NoZWRfdHJhY2VfcmRfc3BhbihzdHJ1Y3Qgcm9v dF9kb21haW4gKnJkKTsKIyA2ICIuL2luY2x1ZGUvbGludXgvaW9wcmlvLmgiIDIKIyAxICIuL2lu Y2x1ZGUvbGludXgvc2NoZWQvcnQuaCIgMQoKCgoKCgpzdHJ1Y3QgdGFza19zdHJ1Y3Q7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg cnRfcHJpbyhpbnQgcHJpbykKewogaWYgKF9fYnVpbHRpbl9leHBlY3QoISEocHJpbyA8IDEwMCks IDApKQogIHJldHVybiAxOwogcmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBydF90YXNrKHN0cnVjdCB0YXNrX3N0 cnVjdCAqcCkKewogcmV0dXJuIHJ0X3ByaW8ocC0+cHJpbyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdGFza19pc19yZWFs dGltZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogaW50IHBvbGljeSA9IHRzay0+cG9saWN5 OwoKIGlmIChwb2xpY3kgPT0gMSB8fCBwb2xpY3kgPT0gMikKICByZXR1cm4gdHJ1ZTsKIGlmIChw b2xpY3kgPT0gNikKICByZXR1cm4gdHJ1ZTsKIHJldHVybiBmYWxzZTsKfQoKCgoKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB0 YXNrX3N0cnVjdCAqcnRfbXV0ZXhfZ2V0X3RvcF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkK ewogcmV0dXJuIHAtPnBpX3RvcF90YXNrOwp9CmV4dGVybiB2b2lkIHJ0X211dGV4X3NldHByaW8o c3RydWN0IHRhc2tfc3RydWN0ICpwLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnBpX3Rhc2spOwpleHRl cm4gdm9pZCBydF9tdXRleF9hZGp1c3RfcGkoc3RydWN0IHRhc2tfc3RydWN0ICpwKTsKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCB0 c2tfaXNfcGlfYmxvY2tlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKewogcmV0dXJuIHRzay0+ cGlfYmxvY2tlZF9vbiAhPSAoKHZvaWQgKikwKTsKfQojIDU4ICIuL2luY2x1ZGUvbGludXgvc2No ZWQvcnQuaCIKZXh0ZXJuIHZvaWQgbm9ybWFsaXplX3J0X3Rhc2tzKHZvaWQpOwojIDcgIi4vaW5j bHVkZS9saW51eC9pb3ByaW8uaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaCIg MQojIDkgIi4vaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaCIKZW51bSB7CiBJQ1FfRVhJVEVEID0g MSA8PCAyLAp9OwojIDcyICIuL2luY2x1ZGUvbGludXgvaW9jb250ZXh0LmgiCnN0cnVjdCBpb19j cSB7CiBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcTsKIHN0cnVjdCBpb19jb250ZXh0ICppb2M7CgoK CgoKCgogdW5pb24gewogIHN0cnVjdCBsaXN0X2hlYWQgcV9ub2RlOwogIHN0cnVjdCBrbWVtX2Nh Y2hlICpfX3JjdV9pY3FfY2FjaGU7CiB9OwogdW5pb24gewogIHN0cnVjdCBobGlzdF9ub2RlIGlv Y19ub2RlOwogIHN0cnVjdCBjYWxsYmFja19oZWFkIF9fcmN1X2hlYWQ7CiB9OwoKIHVuc2lnbmVk IGludCBmbGFnczsKfTsKCgoKCgpzdHJ1Y3QgaW9fY29udGV4dCB7CiBhdG9taWNfbG9uZ190IHJl ZmNvdW50OwogYXRvbWljX3QgYWN0aXZlX3JlZjsKIGF0b21pY190IG5yX3Rhc2tzOwoKCiBzcGlu bG9ja190IGxvY2s7CgogdW5zaWduZWQgc2hvcnQgaW9wcmlvOwoKCgoKIGludCBucl9iYXRjaF9y ZXF1ZXN0czsKIHVuc2lnbmVkIGxvbmcgbGFzdF93YWl0ZWQ7Cgogc3RydWN0IHhhcnJheSBpY3Ff dHJlZTsKIHN0cnVjdCBpb19jcSAqaWNxX2hpbnQ7CiBzdHJ1Y3QgaGxpc3RfaGVhZCBpY3FfbGlz dDsKCiBzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVsZWFzZV93b3JrOwp9OwojIDEyOSAiLi9pbmNsdWRl L2xpbnV4L2lvY29udGV4dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGdldF9pb19jb250ZXh0X2FjdGl2ZShzdHJ1Y3QgaW9f Y29udGV4dCAqaW9jKQp7CiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGF0b21pY19sb25nX3Jl YWQoJmlvYy0+cmVmY291bnQpIDw9IDApOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93 YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0 ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIy Olx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJc dCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29y ZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50 cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImlu Y2x1ZGUvbGludXgvaW9jb250ZXh0LmgiKSwgImkiICgxMzEpLCAiaSIgKCgxIDw8IDApfCgoMSA8 PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3 aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2Nh cmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg OiA6ICJpIiAoMjUpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0 X3dhcm5fb24pLCAwKTsgfSk7CiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKGF0b21pY19yZWFk KCZpb2MtPmFjdGl2ZV9yZWYpIDw9IDApOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93 YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0 ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIy Olx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJc dCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29y ZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50 cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImlu Y2x1ZGUvbGludXgvaW9jb250ZXh0LmgiKSwgImkiICgxMzIpLCAiaSIgKCgxIDw8IDApfCgoMSA8 PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3 aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2Nh cmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIg OiA6ICJpIiAoMjYpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0 X3dhcm5fb24pLCAwKTsgfSk7CiBhdG9taWNfbG9uZ19pbmMoJmlvYy0+cmVmY291bnQpOwogYXRv bWljX2luYygmaW9jLT5hY3RpdmVfcmVmKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpb2NfdGFza19saW5rKHN0cnVjdCBp b19jb250ZXh0ICppb2MpCnsKIGdldF9pb19jb250ZXh0X2FjdGl2ZShpb2MpOwoKICh7IGludCBf X3JldF93YXJuX29uID0gISEoYXRvbWljX3JlYWQoJmlvYy0+bnJfdGFza3MpIDw9IDApOyBpZiAo X19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19p bmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rp b24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0 IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQj IGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4i ICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4i ICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvaW9jb250ZXh0LmgiKSwgImki ICgxNDEpLCAiaSIgKCgxIDw8IDApfCgoMSA8PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXpl b2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMw OlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIg LSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMjcpKTsgfSk7IH0gd2hpbGUgKDAp OyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CiBhdG9taWNfaW5j KCZpb2MtPm5yX3Rhc2tzKTsKfQoKc3RydWN0IHRhc2tfc3RydWN0OwoKdm9pZCBwdXRfaW9fY29u dGV4dChzdHJ1Y3QgaW9fY29udGV4dCAqaW9jKTsKdm9pZCBwdXRfaW9fY29udGV4dF9hY3RpdmUo c3RydWN0IGlvX2NvbnRleHQgKmlvYyk7CnZvaWQgZXhpdF9pb19jb250ZXh0KHN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzayk7CnN0cnVjdCBpb19jb250ZXh0ICpnZXRfdGFza19pb19jb250ZXh0KHN0 cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKICAgICAgICAgICBnZnBfdCBnZnBfZmxhZ3MsIGludCBu b2RlKTsKIyA4ICIuL2luY2x1ZGUvbGludXgvaW9wcmlvLmgiIDIKIyAyNyAiLi9pbmNsdWRlL2xp bnV4L2lvcHJpby5oIgplbnVtIHsKIElPUFJJT19DTEFTU19OT05FLAogSU9QUklPX0NMQVNTX1JU LAogSU9QUklPX0NMQVNTX0JFLAogSU9QUklPX0NMQVNTX0lETEUsCn07CgoKCgoKCmVudW0gewog SU9QUklPX1dIT19QUk9DRVNTID0gMSwKIElPUFJJT19XSE9fUEdSUCwKIElPUFJJT19XSE9fVVNF UiwKfTsKIyA1NCAiLi9pbmNsdWRlL2xpbnV4L2lvcHJpby5oIgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdGFza19uaWNlX2lvcHJp byhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCnsKIHJldHVybiAodGFza19uaWNlKHRhc2spICsg MjApIC8gNTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIGludCB0YXNrX25pY2VfaW9jbGFzcyhzdHJ1Y3QgdGFza19zdHJ1Y3Qg KnRhc2spCnsKIGlmICh0YXNrLT5wb2xpY3kgPT0gNSkKICByZXR1cm4gSU9QUklPX0NMQVNTX0lE TEU7CiBlbHNlIGlmICh0YXNrX2lzX3JlYWx0aW1lKHRhc2spKQogIHJldHVybiBJT1BSSU9fQ0xB U1NfUlQ7CiBlbHNlCiAgcmV0dXJuIElPUFJJT19DTEFTU19CRTsKfQoKCgoKCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBnZXRfY3Vy cmVudF9pb3ByaW8odm9pZCkKewogc3RydWN0IGlvX2NvbnRleHQgKmlvYyA9IGdldF9jdXJyZW50 KCktPmlvX2NvbnRleHQ7CgogaWYgKGlvYykKICByZXR1cm4gaW9jLT5pb3ByaW87CiByZXR1cm4g KCgoSU9QUklPX0NMQVNTX05PTkUpIDw8ICgxMykpIHwgMCk7Cn0KCgoKCmV4dGVybiBpbnQgaW9w cmlvX2Jlc3QodW5zaWduZWQgc2hvcnQgYXByaW8sIHVuc2lnbmVkIHNob3J0IGJwcmlvKTsKCmV4 dGVybiBpbnQgc2V0X3Rhc2tfaW9wcmlvKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgaW50IGlv cHJpbyk7CgoKZXh0ZXJuIGludCBpb3ByaW9fY2hlY2tfY2FwKGludCBpb3ByaW8pOwojIDQwICIu L2luY2x1ZGUvbGludXgvZnMuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9mc190eXBlcy5oIiAx CiMgNzEgIi4vaW5jbHVkZS9saW51eC9mc190eXBlcy5oIgpleHRlcm4gdW5zaWduZWQgY2hhciBm c19mdHlwZV90b19kdHlwZSh1bnNpZ25lZCBpbnQgZmlsZXR5cGUpOwpleHRlcm4gdW5zaWduZWQg Y2hhciBmc191bW9kZV90b19mdHlwZSh1bW9kZV90IG1vZGUpOwpleHRlcm4gdW5zaWduZWQgY2hh ciBmc191bW9kZV90b19kdHlwZSh1bW9kZV90IG1vZGUpOwojIDQxICIuL2luY2x1ZGUvbGludXgv ZnMuaCIgMgoKCgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9mcy5oIiAxCiMgNTQgIi4vaW5j bHVkZS91YXBpL2xpbnV4L2ZzLmgiCnN0cnVjdCBmaWxlX2Nsb25lX3JhbmdlIHsKIF9fczY0IHNy Y19mZDsKIF9fdTY0IHNyY19vZmZzZXQ7CiBfX3U2NCBzcmNfbGVuZ3RoOwogX191NjQgZGVzdF9v ZmZzZXQ7Cn07CgpzdHJ1Y3QgZnN0cmltX3JhbmdlIHsKIF9fdTY0IHN0YXJ0OwogX191NjQgbGVu OwogX191NjQgbWlubGVuOwp9OwoKCgoKCgpzdHJ1Y3QgZmlsZV9kZWR1cGVfcmFuZ2VfaW5mbyB7 CiBfX3M2NCBkZXN0X2ZkOwogX191NjQgZGVzdF9vZmZzZXQ7CiBfX3U2NCBieXRlc19kZWR1cGVk OwoKCgoKCgogX19zMzIgc3RhdHVzOwogX191MzIgcmVzZXJ2ZWQ7Cn07CgoKc3RydWN0IGZpbGVf ZGVkdXBlX3JhbmdlIHsKIF9fdTY0IHNyY19vZmZzZXQ7CiBfX3U2NCBzcmNfbGVuZ3RoOwogX191 MTYgZGVzdF9jb3VudDsKIF9fdTE2IHJlc2VydmVkMTsKIF9fdTMyIHJlc2VydmVkMjsKIHN0cnVj dCBmaWxlX2RlZHVwZV9yYW5nZV9pbmZvIGluZm9bMF07Cn07CgoKc3RydWN0IGZpbGVzX3N0YXRf c3RydWN0IHsKIHVuc2lnbmVkIGxvbmcgbnJfZmlsZXM7CiB1bnNpZ25lZCBsb25nIG5yX2ZyZWVf ZmlsZXM7CiB1bnNpZ25lZCBsb25nIG1heF9maWxlczsKfTsKCnN0cnVjdCBpbm9kZXNfc3RhdF90 IHsKIGxvbmcgbnJfaW5vZGVzOwogbG9uZyBucl91bnVzZWQ7CiBsb25nIGR1bW15WzVdOwp9OwoK CgoKCgoKc3RydWN0IGZzeGF0dHIgewogX191MzIgZnN4X3hmbGFnczsKIF9fdTMyIGZzeF9leHRz aXplOwogX191MzIgZnN4X25leHRlbnRzOwogX191MzIgZnN4X3Byb2ppZDsKIF9fdTMyIGZzeF9j b3dleHRzaXplOwogdW5zaWduZWQgY2hhciBmc3hfcGFkWzhdOwp9OwojIDI4NSAiLi9pbmNsdWRl L3VhcGkvbGludXgvZnMuaCIKdHlwZWRlZiBpbnQgX19rZXJuZWxfcndmX3Q7CiMgNDYgIi4vaW5j bHVkZS9saW51eC9mcy5oIiAyCgpzdHJ1Y3QgYmFja2luZ19kZXZfaW5mbzsKc3RydWN0IGJkaV93 cml0ZWJhY2s7CnN0cnVjdCBiaW87CnN0cnVjdCBleHBvcnRfb3BlcmF0aW9uczsKc3RydWN0IGhk X2dlb21ldHJ5OwpzdHJ1Y3QgaW92ZWM7CnN0cnVjdCBraW9jYjsKc3RydWN0IGtvYmplY3Q7CnN0 cnVjdCBwaXBlX2lub2RlX2luZm87CnN0cnVjdCBwb2xsX3RhYmxlX3N0cnVjdDsKc3RydWN0IGtz dGF0ZnM7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3RydWN0IHZmc21vdW50OwpzdHJ1Y3QgY3Jl ZDsKc3RydWN0IHN3YXBfaW5mb19zdHJ1Y3Q7CnN0cnVjdCBzZXFfZmlsZTsKc3RydWN0IHdvcmtx dWV1ZV9zdHJ1Y3Q7CnN0cnVjdCBpb3ZfaXRlcjsKc3RydWN0IGZzY3J5cHRfaW5mbzsKc3RydWN0 IGZzY3J5cHRfb3BlcmF0aW9uczsKc3RydWN0IGZzdmVyaXR5X2luZm87CnN0cnVjdCBmc3Zlcml0 eV9vcGVyYXRpb25zOwpzdHJ1Y3QgZnNfY29udGV4dDsKc3RydWN0IGZzX3BhcmFtZXRlcl9zcGVj OwoKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkp IF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgaW5vZGVfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQg X19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18o KF9fY29sZF9fKSkgaW5vZGVfaW5pdF9lYXJseSh2b2lkKTsKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1 dGVfXygoX19zZWN0aW9uX18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9f KSkgZmlsZXNfaW5pdCh2b2lkKTsKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9u X18oIi5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgZmlsZXNfbWF4Zmls ZXNfaW5pdCh2b2lkKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZXNfc3RhdF9zdHJ1Y3QgZmlsZXNfc3Rh dDsKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ2V0X21heF9maWxlcyh2b2lkKTsKZXh0ZXJuIHVuc2ln bmVkIGludCBzeXNjdGxfbnJfb3BlbjsKZXh0ZXJuIHN0cnVjdCBpbm9kZXNfc3RhdF90IGlub2Rl c19zdGF0OwpleHRlcm4gaW50IGxlYXNlc19lbmFibGUsIGxlYXNlX2JyZWFrX3RpbWU7CmV4dGVy biBpbnQgc3lzY3RsX3Byb3RlY3RlZF9zeW1saW5rczsKZXh0ZXJuIGludCBzeXNjdGxfcHJvdGVj dGVkX2hhcmRsaW5rczsKZXh0ZXJuIGludCBzeXNjdGxfcHJvdGVjdGVkX2ZpZm9zOwpleHRlcm4g aW50IHN5c2N0bF9wcm90ZWN0ZWRfcmVndWxhcjsKCnR5cGVkZWYgX19rZXJuZWxfcndmX3Qgcndm X3Q7CgpzdHJ1Y3QgYnVmZmVyX2hlYWQ7CnR5cGVkZWYgaW50IChnZXRfYmxvY2tfdCkoc3RydWN0 IGlub2RlICppbm9kZSwgc2VjdG9yX3QgaWJsb2NrLAogICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJo X3Jlc3VsdCwgaW50IGNyZWF0ZSk7CnR5cGVkZWYgaW50IChkaW9faW9kb25lX3QpKHN0cnVjdCBr aW9jYiAqaW9jYiwgbG9mZl90IG9mZnNldCwKICAgc3NpemVfdCBieXRlcywgdm9pZCAqcHJpdmF0 ZSk7CiMgMjI0ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGlhdHRyIHsKIHVuc2lnbmVk IGludCBpYV92YWxpZDsKIHVtb2RlX3QgaWFfbW9kZTsKIGt1aWRfdCBpYV91aWQ7CiBrZ2lkX3Qg aWFfZ2lkOwogbG9mZl90IGlhX3NpemU7CiBzdHJ1Y3QgdGltZXNwZWM2NCBpYV9hdGltZTsKIHN0 cnVjdCB0aW1lc3BlYzY0IGlhX210aW1lOwogc3RydWN0IHRpbWVzcGVjNjQgaWFfY3RpbWU7CgoK CgoKCiBzdHJ1Y3QgZmlsZSAqaWFfZmlsZTsKfTsKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3F1 b3RhLmgiIDEKIyA0MCAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCiMgMSAiLi9pbmNsdWRlL2xp bnV4L3BlcmNwdV9jb3VudGVyLmgiIDEKIyAyMCAiLi9pbmNsdWRlL2xpbnV4L3BlcmNwdV9jb3Vu dGVyLmgiCnN0cnVjdCBwZXJjcHVfY291bnRlciB7CiByYXdfc3BpbmxvY2tfdCBsb2NrOwogczY0 IGNvdW50OwoKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKCiBzMzIgKmNvdW50ZXJzOwp9OwoKZXh0 ZXJuIGludCBwZXJjcHVfY291bnRlcl9iYXRjaDsKCmludCBfX3BlcmNwdV9jb3VudGVyX2luaXQo c3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMsIHM2NCBhbW91bnQsIGdmcF90IGdmcCwKICAgICBz dHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7CiMgNDEgIi4vaW5jbHVkZS9saW51eC9wZXJjcHVf Y291bnRlci5oIgp2b2lkIHBlcmNwdV9jb3VudGVyX2Rlc3Ryb3koc3RydWN0IHBlcmNwdV9jb3Vu dGVyICpmYmMpOwp2b2lkIHBlcmNwdV9jb3VudGVyX3NldChzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIg KmZiYywgczY0IGFtb3VudCk7CnZvaWQgcGVyY3B1X2NvdW50ZXJfYWRkX2JhdGNoKHN0cnVjdCBw ZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50LAogICAgICAgICBzMzIgYmF0Y2gpOwpzNjQg X19wZXJjcHVfY291bnRlcl9zdW0oc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMpOwppbnQgX19w ZXJjcHVfY291bnRlcl9jb21wYXJlKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgcmhz LCBzMzIgYmF0Y2gpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHBlcmNwdV9jb3VudGVyX2NvbXBhcmUoc3RydWN0IHBlcmNwdV9j b3VudGVyICpmYmMsIHM2NCByaHMpCnsKIHJldHVybiBfX3BlcmNwdV9jb3VudGVyX2NvbXBhcmUo ZmJjLCByaHMsIHBlcmNwdV9jb3VudGVyX2JhdGNoKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwZXJjcHVfY291bnRlcl9h ZGQoc3RydWN0IHBlcmNwdV9jb3VudGVyICpmYmMsIHM2NCBhbW91bnQpCnsKIHBlcmNwdV9jb3Vu dGVyX2FkZF9iYXRjaChmYmMsIGFtb3VudCwgcGVyY3B1X2NvdW50ZXJfYmF0Y2gpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzNjQg cGVyY3B1X2NvdW50ZXJfc3VtX3Bvc2l0aXZlKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQp7 CiBzNjQgcmV0ID0gX19wZXJjcHVfY291bnRlcl9zdW0oZmJjKTsKIHJldHVybiByZXQgPCAwID8g MCA6IHJldDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgczY0IHBlcmNwdV9jb3VudGVyX3N1bShzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIg KmZiYykKewogcmV0dXJuIF9fcGVyY3B1X2NvdW50ZXJfc3VtKGZiYyk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHM2NCBwZXJjcHVf Y291bnRlcl9yZWFkKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjKQp7CiByZXR1cm4gZmJjLT5j b3VudDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzNjQgcGVyY3B1X2NvdW50ZXJfcmVhZF9wb3NpdGl2ZShzdHJ1Y3QgcGVy Y3B1X2NvdW50ZXIgKmZiYykKewogczY0IHJldCA9IGZiYy0+Y291bnQ7CgogX19hc21fXyBfX3Zv bGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsKIGlmIChyZXQgPj0gMCkKICByZXR1cm4gcmV0Owog cmV0dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgcGVyY3B1X2NvdW50ZXJfaW5pdGlhbGl6ZWQoc3RydWN0IHBlcmNw dV9jb3VudGVyICpmYmMpCnsKIHJldHVybiAoZmJjLT5jb3VudGVycyAhPSAoKHZvaWQgKikwKSk7 Cn0KIyAxNzcgIi4vaW5jbHVkZS9saW51eC9wZXJjcHVfY291bnRlci5oIgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBlcmNwdV9j b3VudGVyX2luYyhzdHJ1Y3QgcGVyY3B1X2NvdW50ZXIgKmZiYykKewogcGVyY3B1X2NvdW50ZXJf YWRkKGZiYywgMSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1X2NvdW50ZXJfZGVjKHN0cnVjdCBwZXJjcHVfY291 bnRlciAqZmJjKQp7CiBwZXJjcHVfY291bnRlcl9hZGQoZmJjLCAtMSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcGVyY3B1 X2NvdW50ZXJfc3ViKHN0cnVjdCBwZXJjcHVfY291bnRlciAqZmJjLCBzNjQgYW1vdW50KQp7CiBw ZXJjcHVfY291bnRlcl9hZGQoZmJjLCAtYW1vdW50KTsKfQojIDQxICIuL2luY2x1ZGUvbGludXgv cXVvdGEuaCIgMgoKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9kcWJsa194ZnMuaCIgMQojIDUz ICIuL2luY2x1ZGUvdWFwaS9saW51eC9kcWJsa194ZnMuaCIKdHlwZWRlZiBzdHJ1Y3QgZnNfZGlz a19xdW90YSB7CiBfX3M4IGRfdmVyc2lvbjsKIF9fczggZF9mbGFnczsKIF9fdTE2IGRfZmllbGRt YXNrOwogX191MzIgZF9pZDsKIF9fdTY0IGRfYmxrX2hhcmRsaW1pdDsKIF9fdTY0IGRfYmxrX3Nv ZnRsaW1pdDsKIF9fdTY0IGRfaW5vX2hhcmRsaW1pdDsKIF9fdTY0IGRfaW5vX3NvZnRsaW1pdDsK IF9fdTY0IGRfYmNvdW50OwogX191NjQgZF9pY291bnQ7CiBfX3MzMiBkX2l0aW1lcjsKCiBfX3Mz MiBkX2J0aW1lcjsKIF9fdTE2IGRfaXdhcm5zOwogX191MTYgZF9id2FybnM7CiBfX3MzMiBkX3Bh ZGRpbmcyOwogX191NjQgZF9ydGJfaGFyZGxpbWl0OwogX191NjQgZF9ydGJfc29mdGxpbWl0Owog X191NjQgZF9ydGJjb3VudDsKIF9fczMyIGRfcnRidGltZXI7CiBfX3UxNiBkX3J0Yndhcm5zOwog X19zMTYgZF9wYWRkaW5nMzsKIGNoYXIgZF9wYWRkaW5nNFs4XTsKfSBmc19kaXNrX3F1b3RhX3Q7 CiMgMTQ5ICIuL2luY2x1ZGUvdWFwaS9saW51eC9kcWJsa194ZnMuaCIKdHlwZWRlZiBzdHJ1Y3Qg ZnNfcWZpbGVzdGF0IHsKIF9fdTY0IHFmc19pbm87CiBfX3U2NCBxZnNfbmJsa3M7CiBfX3UzMiBx ZnNfbmV4dGVudHM7Cn0gZnNfcWZpbGVzdGF0X3Q7Cgp0eXBlZGVmIHN0cnVjdCBmc19xdW90YV9z dGF0IHsKIF9fczggcXNfdmVyc2lvbjsKIF9fdTE2IHFzX2ZsYWdzOwogX19zOCBxc19wYWQ7CiBm c19xZmlsZXN0YXRfdCBxc191cXVvdGE7CiBmc19xZmlsZXN0YXRfdCBxc19ncXVvdGE7CiBfX3Uz MiBxc19pbmNvcmVkcXM7CiBfX3MzMiBxc19idGltZWxpbWl0OwogX19zMzIgcXNfaXRpbWVsaW1p dDsKIF9fczMyIHFzX3J0YnRpbWVsaW1pdDsKIF9fdTE2IHFzX2J3YXJubGltaXQ7CiBfX3UxNiBx c19pd2FybmxpbWl0Owp9IGZzX3F1b3RhX3N0YXRfdDsKIyAxOTIgIi4vaW5jbHVkZS91YXBpL2xp bnV4L2RxYmxrX3hmcy5oIgpzdHJ1Y3QgZnNfcWZpbGVzdGF0diB7CiBfX3U2NCBxZnNfaW5vOwog X191NjQgcWZzX25ibGtzOwogX191MzIgcWZzX25leHRlbnRzOwogX191MzIgcWZzX3BhZDsKfTsK CnN0cnVjdCBmc19xdW90YV9zdGF0diB7CiBfX3M4IHFzX3ZlcnNpb247CiBfX3U4IHFzX3BhZDE7 CiBfX3UxNiBxc19mbGFnczsKIF9fdTMyIHFzX2luY29yZWRxczsKIHN0cnVjdCBmc19xZmlsZXN0 YXR2IHFzX3VxdW90YTsKIHN0cnVjdCBmc19xZmlsZXN0YXR2IHFzX2dxdW90YTsKIHN0cnVjdCBm c19xZmlsZXN0YXR2IHFzX3BxdW90YTsKIF9fczMyIHFzX2J0aW1lbGltaXQ7CiBfX3MzMiBxc19p dGltZWxpbWl0OwogX19zMzIgcXNfcnRidGltZWxpbWl0OwogX191MTYgcXNfYndhcm5saW1pdDsK IF9fdTE2IHFzX2l3YXJubGltaXQ7CiBfX3U2NCBxc19wYWQyWzhdOwp9OwojIDQzICIuL2luY2x1 ZGUvbGludXgvcXVvdGEuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9kcWJsa192MS5oIiAxCiMg NDQgIi4vaW5jbHVkZS9saW51eC9xdW90YS5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2RxYmxr X3YyLmgiIDEKIyA5ICIuL2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIKIyAxICIuL2luY2x1ZGUv bGludXgvZHFibGtfcXRyZWUuaCIgMQojIDE4ICIuL2luY2x1ZGUvbGludXgvZHFibGtfcXRyZWUu aCIKc3RydWN0IGRxdW90OwpzdHJ1Y3Qga3FpZDsKCgpzdHJ1Y3QgcXRyZWVfZm10X29wZXJhdGlv bnMgewogdm9pZCAoKm1lbTJkaXNrX2RxYmxrKSh2b2lkICpkaXNrLCBzdHJ1Y3QgZHF1b3QgKmRx dW90KTsKIHZvaWQgKCpkaXNrMm1lbV9kcWJsaykoc3RydWN0IGRxdW90ICpkcXVvdCwgdm9pZCAq ZGlzayk7CiBpbnQgKCppc19pZCkodm9pZCAqZGlzaywgc3RydWN0IGRxdW90ICpkcXVvdCk7Cn07 CgoKc3RydWN0IHF0cmVlX21lbV9kcWluZm8gewogc3RydWN0IHN1cGVyX2Jsb2NrICpkcWlfc2I7 CiBpbnQgZHFpX3R5cGU7CiB1bnNpZ25lZCBpbnQgZHFpX2Jsb2NrczsKIHVuc2lnbmVkIGludCBk cWlfZnJlZV9ibGs7CiB1bnNpZ25lZCBpbnQgZHFpX2ZyZWVfZW50cnk7CiB1bnNpZ25lZCBpbnQg ZHFpX2Jsb2Nrc2l6ZV9iaXRzOwogdW5zaWduZWQgaW50IGRxaV9lbnRyeV9zaXplOwogdW5zaWdu ZWQgaW50IGRxaV91c2FibGVfYnM7CiB1bnNpZ25lZCBpbnQgZHFpX3F0cmVlX2RlcHRoOwogY29u c3Qgc3RydWN0IHF0cmVlX2ZtdF9vcGVyYXRpb25zICpkcWlfb3BzOwp9OwoKaW50IHF0cmVlX3dy aXRlX2RxdW90KHN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZvLCBzdHJ1Y3QgZHF1b3QgKmRx dW90KTsKaW50IHF0cmVlX3JlYWRfZHF1b3Qoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8s IHN0cnVjdCBkcXVvdCAqZHF1b3QpOwppbnQgcXRyZWVfZGVsZXRlX2RxdW90KHN0cnVjdCBxdHJl ZV9tZW1fZHFpbmZvICppbmZvLCBzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKaW50IHF0cmVlX3JlbGVh c2VfZHF1b3Qoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8sIHN0cnVjdCBkcXVvdCAqZHF1 b3QpOwppbnQgcXRyZWVfZW50cnlfdW51c2VkKHN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZv LCBjaGFyICpkaXNrKTsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgaW50IHF0cmVlX2RlcHRoKHN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICpp bmZvKQp7CiB1bnNpZ25lZCBpbnQgZXBiID0gaW5mby0+ZHFpX3VzYWJsZV9icyA+PiAyOwogdW5z aWduZWQgbG9uZyBsb25nIGVudHJpZXMgPSBlcGI7CiBpbnQgaTsKCiBmb3IgKGkgPSAxOyBlbnRy aWVzIDwgKDFVTEwgPDwgMzIpOyBpKyspCiAgZW50cmllcyAqPSBlcGI7CiByZXR1cm4gaTsKfQpp bnQgcXRyZWVfZ2V0X25leHRfaWQoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8sIHN0cnVj dCBrcWlkICpxaWQpOwojIDEwICIuL2luY2x1ZGUvbGludXgvZHFibGtfdjIuaCIgMgojIDQ1ICIu L2luY2x1ZGUvbGludXgvcXVvdGEuaCIgMgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9wcm9qaWQu aCIgMQojIDE3ICIuL2luY2x1ZGUvbGludXgvcHJvamlkLmgiCnN0cnVjdCB1c2VyX25hbWVzcGFj ZTsKZXh0ZXJuIHN0cnVjdCB1c2VyX25hbWVzcGFjZSBpbml0X3VzZXJfbnM7Cgp0eXBlZGVmIF9f a2VybmVsX3VpZDMyX3QgcHJvamlkX3Q7Cgp0eXBlZGVmIHN0cnVjdCB7CiBwcm9qaWRfdCB2YWw7 Cn0ga3Byb2ppZF90OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgcHJvamlkX3QgX19rcHJvamlkX3ZhbChrcHJvamlkX3QgcHJvamlkKQp7 CiByZXR1cm4gcHJvamlkLnZhbDsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHByb2ppZF9lcShrcHJvamlkX3QgbGVm dCwga3Byb2ppZF90IHJpZ2h0KQp7CiByZXR1cm4gX19rcHJvamlkX3ZhbChsZWZ0KSA9PSBfX2tw cm9qaWRfdmFsKHJpZ2h0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBwcm9qaWRfbHQoa3Byb2ppZF90IGxlZnQsIGtwcm9q aWRfdCByaWdodCkKewogcmV0dXJuIF9fa3Byb2ppZF92YWwobGVmdCkgPCBfX2twcm9qaWRfdmFs KHJpZ2h0KTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBwcm9qaWRfdmFsaWQoa3Byb2ppZF90IHByb2ppZCkKewogcmV0dXJu ICFwcm9qaWRfZXEocHJvamlkLCAoa3Byb2ppZF90KXsgLTEgfSk7Cn0KCgoKZXh0ZXJuIGtwcm9q aWRfdCBtYWtlX2twcm9qaWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpmcm9tLCBwcm9qaWRfdCBw cm9qaWQpOwoKZXh0ZXJuIHByb2ppZF90IGZyb21fa3Byb2ppZChzdHJ1Y3QgdXNlcl9uYW1lc3Bh Y2UgKnRvLCBrcHJvamlkX3QgcHJvamlkKTsKZXh0ZXJuIHByb2ppZF90IGZyb21fa3Byb2ppZF9t dW5nZWQoc3RydWN0IHVzZXJfbmFtZXNwYWNlICp0bywga3Byb2ppZF90IHByb2ppZCk7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29s IGtwcm9qaWRfaGFzX21hcHBpbmcoc3RydWN0IHVzZXJfbmFtZXNwYWNlICpucywga3Byb2ppZF90 IHByb2ppZCkKewogcmV0dXJuIGZyb21fa3Byb2ppZChucywgcHJvamlkKSAhPSAocHJvamlkX3Qp LTE7Cn0KIyA0OSAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiIDIKIyAxICIuL2luY2x1ZGUvdWFw aS9saW51eC9xdW90YS5oIiAxCiMgOTAgIi4vaW5jbHVkZS91YXBpL2xpbnV4L3F1b3RhLmgiCmVu dW0gewogUUlGX0JMSU1JVFNfQiA9IDAsCiBRSUZfU1BBQ0VfQiwKIFFJRl9JTElNSVRTX0IsCiBR SUZfSU5PREVTX0IsCiBRSUZfQlRJTUVfQiwKIFFJRl9JVElNRV9CLAp9OwojIDExMCAiLi9pbmNs dWRlL3VhcGkvbGludXgvcXVvdGEuaCIKc3RydWN0IGlmX2RxYmxrIHsKIF9fdTY0IGRxYl9iaGFy ZGxpbWl0OwogX191NjQgZHFiX2Jzb2Z0bGltaXQ7CiBfX3U2NCBkcWJfY3Vyc3BhY2U7CiBfX3U2 NCBkcWJfaWhhcmRsaW1pdDsKIF9fdTY0IGRxYl9pc29mdGxpbWl0OwogX191NjQgZHFiX2N1cmlu b2RlczsKIF9fdTY0IGRxYl9idGltZTsKIF9fdTY0IGRxYl9pdGltZTsKIF9fdTMyIGRxYl92YWxp ZDsKfTsKCnN0cnVjdCBpZl9uZXh0ZHFibGsgewogX191NjQgZHFiX2JoYXJkbGltaXQ7CiBfX3U2 NCBkcWJfYnNvZnRsaW1pdDsKIF9fdTY0IGRxYl9jdXJzcGFjZTsKIF9fdTY0IGRxYl9paGFyZGxp bWl0OwogX191NjQgZHFiX2lzb2Z0bGltaXQ7CiBfX3U2NCBkcWJfY3VyaW5vZGVzOwogX191NjQg ZHFiX2J0aW1lOwogX191NjQgZHFiX2l0aW1lOwogX191MzIgZHFiX3ZhbGlkOwogX191MzIgZHFi X2lkOwp9OwojIDE0NCAiLi9pbmNsdWRlL3VhcGkvbGludXgvcXVvdGEuaCIKZW51bSB7CiBEUUZf Uk9PVF9TUVVBU0hfQiA9IDAsCiBEUUZfU1lTX0ZJTEVfQiA9IDE2LAoKIERRRl9QUklWQVRFCn07 CgoKCgoKCnN0cnVjdCBpZl9kcWluZm8gewogX191NjQgZHFpX2JncmFjZTsKIF9fdTY0IGRxaV9p Z3JhY2U7CiBfX3UzMiBkcWlfZmxhZ3M7CiBfX3UzMiBkcWlfdmFsaWQ7Cn07CiMgMTc4ICIuL2lu Y2x1ZGUvdWFwaS9saW51eC9xdW90YS5oIgplbnVtIHsKIFFVT1RBX05MX0NfVU5TUEVDLAogUVVP VEFfTkxfQ19XQVJOSU5HLAogX19RVU9UQV9OTF9DX01BWCwKfTsKCgplbnVtIHsKIFFVT1RBX05M X0FfVU5TUEVDLAogUVVPVEFfTkxfQV9RVFlQRSwKIFFVT1RBX05MX0FfRVhDRVNTX0lELAogUVVP VEFfTkxfQV9XQVJOSU5HLAogUVVPVEFfTkxfQV9ERVZfTUFKT1IsCiBRVU9UQV9OTF9BX0RFVl9N SU5PUiwKIFFVT1RBX05MX0FfQ0FVU0VEX0lELAogUVVPVEFfTkxfQV9QQUQsCiBfX1FVT1RBX05M X0FfTUFYLAp9OwojIDUwICIuL2luY2x1ZGUvbGludXgvcXVvdGEuaCIgMgoKCgoKZW51bSBxdW90 YV90eXBlIHsKIFVTUlFVT1RBID0gMCwKIEdSUFFVT1RBID0gMSwKIFBSSlFVT1RBID0gMiwKfTsK CgoKCgoKdHlwZWRlZiBfX2tlcm5lbF91aWQzMl90IHFpZF90Owp0eXBlZGVmIGxvbmcgbG9uZyBx c2l6ZV90OwoKc3RydWN0IGtxaWQgewogdW5pb24gewogIGt1aWRfdCB1aWQ7CiAga2dpZF90IGdp ZDsKICBrcHJvamlkX3QgcHJvamlkOwogfTsKIGVudW0gcXVvdGFfdHlwZSB0eXBlOwp9OwoKZXh0 ZXJuIGJvb2wgcWlkX2VxKHN0cnVjdCBrcWlkIGxlZnQsIHN0cnVjdCBrcWlkIHJpZ2h0KTsKZXh0 ZXJuIGJvb2wgcWlkX2x0KHN0cnVjdCBrcWlkIGxlZnQsIHN0cnVjdCBrcWlkIHJpZ2h0KTsKZXh0 ZXJuIHFpZF90IGZyb21fa3FpZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnRvLCBzdHJ1Y3Qga3Fp ZCBxaWQpOwpleHRlcm4gcWlkX3QgZnJvbV9rcWlkX211bmdlZChzdHJ1Y3QgdXNlcl9uYW1lc3Bh Y2UgKnRvLCBzdHJ1Y3Qga3FpZCBxaWQpOwpleHRlcm4gYm9vbCBxaWRfdmFsaWQoc3RydWN0IGtx aWQgcWlkKTsKIyA5NyAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrcWlkIG1ha2Vf a3FpZChzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKmZyb20sCiAgICAgICAgZW51bSBxdW90YV90eXBl IHR5cGUsIHFpZF90IHFpZCkKewogc3RydWN0IGtxaWQga3FpZDsKCiBrcWlkLnR5cGUgPSB0eXBl Owogc3dpdGNoICh0eXBlKSB7CiBjYXNlIFVTUlFVT1RBOgogIGtxaWQudWlkID0gbWFrZV9rdWlk KGZyb20sIHFpZCk7CiAgYnJlYWs7CiBjYXNlIEdSUFFVT1RBOgogIGtxaWQuZ2lkID0gbWFrZV9r Z2lkKGZyb20sIHFpZCk7CiAgYnJlYWs7CiBjYXNlIFBSSlFVT1RBOgogIGtxaWQucHJvamlkID0g bWFrZV9rcHJvamlkKGZyb20sIHFpZCk7CiAgYnJlYWs7CiBkZWZhdWx0OgogIGRvIHsgZG8geyBh c20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVz aHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAy YiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJi IiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5Ojps aW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIr JWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUvbGludXgvcXVvdGEuaCIpLCAi aSIgKDExNCksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hp bGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRp c2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICgyOCkpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWlsdGluX3VucmVh Y2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsKIH0KIHJldHVybiBrcWlkOwp9CgoK CgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzdHJ1Y3Qga3FpZCBtYWtlX2txaWRfaW52YWxpZChlbnVtIHF1b3RhX3R5cGUgdHlwZSkK ewogc3RydWN0IGtxaWQga3FpZDsKCiBrcWlkLnR5cGUgPSB0eXBlOwogc3dpdGNoICh0eXBlKSB7 CiBjYXNlIFVTUlFVT1RBOgogIGtxaWQudWlkID0gKGt1aWRfdCl7IC0xIH07CiAgYnJlYWs7CiBj YXNlIEdSUFFVT1RBOgogIGtxaWQuZ2lkID0gKGtnaWRfdCl7IC0xIH07CiAgYnJlYWs7CiBjYXNl IFBSSlFVT1RBOgogIGtxaWQucHJvamlkID0gKGtwcm9qaWRfdCl7IC0xIH07CiAgYnJlYWs7CiBk ZWZhdWx0OgogIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAw eDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0 IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIg Ii5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAl YzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6 OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1 ZGUvbGludXgvcXVvdGEuaCIpLCAiaSIgKDE0MSksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVj dCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxu XHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAt IC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgyOSkpOyB9KTsgYXNtIHZvbGF0aWxl KCIiKTsgX19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsK IH0KIHJldHVybiBrcWlkOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtxaWQgbWFrZV9rcWlkX3VpZChrdWlkX3Qg dWlkKQp7CiBzdHJ1Y3Qga3FpZCBrcWlkOwoga3FpZC50eXBlID0gVVNSUVVPVEE7CiBrcWlkLnVp ZCA9IHVpZDsKIHJldHVybiBrcWlkOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtxaWQgbWFrZV9rcWlkX2dpZChr Z2lkX3QgZ2lkKQp7CiBzdHJ1Y3Qga3FpZCBrcWlkOwoga3FpZC50eXBlID0gR1JQUVVPVEE7CiBr cWlkLmdpZCA9IGdpZDsKIHJldHVybiBrcWlkOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtxaWQgbWFrZV9rcWlk X3Byb2ppZChrcHJvamlkX3QgcHJvamlkKQp7CiBzdHJ1Y3Qga3FpZCBrcWlkOwoga3FpZC50eXBl ID0gUFJKUVVPVEE7CiBrcWlkLnByb2ppZCA9IHByb2ppZDsKIHJldHVybiBrcWlkOwp9CgoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgcWlkX2hhc19tYXBwaW5nKHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqbnMsIHN0cnVjdCBr cWlkIHFpZCkKewogcmV0dXJuIGZyb21fa3FpZChucywgcWlkKSAhPSAocWlkX3QpIC0xOwp9CgoK ZXh0ZXJuIHNwaW5sb2NrX3QgZHFfZGF0YV9sb2NrOwojIDIwNSAiLi9pbmNsdWRlL2xpbnV4L3F1 b3RhLmgiCnN0cnVjdCBtZW1fZHFibGsgewogcXNpemVfdCBkcWJfYmhhcmRsaW1pdDsKIHFzaXpl X3QgZHFiX2Jzb2Z0bGltaXQ7CiBxc2l6ZV90IGRxYl9jdXJzcGFjZTsKIHFzaXplX3QgZHFiX3Jz dnNwYWNlOwogcXNpemVfdCBkcWJfaWhhcmRsaW1pdDsKIHFzaXplX3QgZHFiX2lzb2Z0bGltaXQ7 CiBxc2l6ZV90IGRxYl9jdXJpbm9kZXM7CiB0aW1lNjRfdCBkcWJfYnRpbWU7CiB0aW1lNjRfdCBk cWJfaXRpbWU7Cn07CgoKCgpzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGU7CgpzdHJ1Y3QgbWVtX2Rx aW5mbyB7CiBzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgKmRxaV9mb3JtYXQ7CiBpbnQgZHFpX2Zt dF9pZDsKCiBzdHJ1Y3QgbGlzdF9oZWFkIGRxaV9kaXJ0eV9saXN0OwogdW5zaWduZWQgbG9uZyBk cWlfZmxhZ3M7CiB1bnNpZ25lZCBpbnQgZHFpX2JncmFjZTsKIHVuc2lnbmVkIGludCBkcWlfaWdy YWNlOwogcXNpemVfdCBkcWlfbWF4X3NwY19saW1pdDsKIHFzaXplX3QgZHFpX21heF9pbm9fbGlt aXQ7CiB2b2lkICpkcWlfcHJpdjsKfTsKCnN0cnVjdCBzdXBlcl9ibG9jazsKCgoKCgoKZW51bSB7 CiBEUUZfSU5GT19ESVJUWV9CID0gRFFGX1BSSVZBVEUsCn07CgoKZXh0ZXJuIHZvaWQgbWFya19p bmZvX2RpcnR5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlKTsKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGluZm9fZGly dHkoc3RydWN0IG1lbV9kcWluZm8gKmluZm8pCnsKIHJldHVybiB0ZXN0X2JpdChEUUZfSU5GT19E SVJUWV9CLCAmaW5mby0+ZHFpX2ZsYWdzKTsKfQoKZW51bSB7CiBEUVNUX0xPT0tVUFMsCiBEUVNU X0RST1BTLAogRFFTVF9SRUFEUywKIERRU1RfV1JJVEVTLAogRFFTVF9DQUNIRV9ISVRTLAogRFFT VF9BTExPQ19EUVVPVFMsCiBEUVNUX0ZSRUVfRFFVT1RTLAogRFFTVF9TWU5DUywKIF9EUVNUX0RR U1RBVF9MQVNUCn07CgpzdHJ1Y3QgZHFzdGF0cyB7CiB1bnNpZ25lZCBsb25nIHN0YXRbX0RRU1Rf RFFTVEFUX0xBU1RdOwogc3RydWN0IHBlcmNwdV9jb3VudGVyIGNvdW50ZXJbX0RRU1RfRFFTVEFU X0xBU1RdOwp9OwoKZXh0ZXJuIHN0cnVjdCBkcXN0YXRzIGRxc3RhdHM7CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRxc3RhdHNf aW5jKHVuc2lnbmVkIGludCB0eXBlKQp7CiBwZXJjcHVfY291bnRlcl9pbmMoJmRxc3RhdHMuY291 bnRlclt0eXBlXSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgZHFzdGF0c19kZWModW5zaWduZWQgaW50IHR5cGUpCnsKIHBl cmNwdV9jb3VudGVyX2RlYygmZHFzdGF0cy5jb3VudGVyW3R5cGVdKTsKfQojIDI5NCAiLi9pbmNs dWRlL2xpbnV4L3F1b3RhLmgiCnN0cnVjdCBkcXVvdCB7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSBkcV9o YXNoOwogc3RydWN0IGxpc3RfaGVhZCBkcV9pbnVzZTsKIHN0cnVjdCBsaXN0X2hlYWQgZHFfZnJl ZTsKIHN0cnVjdCBsaXN0X2hlYWQgZHFfZGlydHk7CiBzdHJ1Y3QgbXV0ZXggZHFfbG9jazsKIHNw aW5sb2NrX3QgZHFfZHFiX2xvY2s7CiBhdG9taWNfdCBkcV9jb3VudDsKIHN0cnVjdCBzdXBlcl9i bG9jayAqZHFfc2I7CiBzdHJ1Y3Qga3FpZCBkcV9pZDsKIGxvZmZfdCBkcV9vZmY7CiB1bnNpZ25l ZCBsb25nIGRxX2ZsYWdzOwogc3RydWN0IG1lbV9kcWJsayBkcV9kcWI7Cn07CgoKc3RydWN0IHF1 b3RhX2Zvcm1hdF9vcHMgewogaW50ICgqY2hlY2tfcXVvdGFfZmlsZSkoc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgaW50IHR5cGUpOwogaW50ICgqcmVhZF9maWxlX2luZm8pKHN0cnVjdCBzdXBlcl9i bG9jayAqc2IsIGludCB0eXBlKTsKIGludCAoKndyaXRlX2ZpbGVfaW5mbykoc3RydWN0IHN1cGVy X2Jsb2NrICpzYiwgaW50IHR5cGUpOwogaW50ICgqZnJlZV9maWxlX2luZm8pKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIGludCB0eXBlKTsKIGludCAoKnJlYWRfZHFibGspKHN0cnVjdCBkcXVvdCAq ZHF1b3QpOwogaW50ICgqY29tbWl0X2RxYmxrKShzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKIGludCAo KnJlbGVhc2VfZHFibGspKHN0cnVjdCBkcXVvdCAqZHF1b3QpOwogaW50ICgqZ2V0X25leHRfaWQp KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBrcWlkICpxaWQpOwp9OwoKCnN0cnVjdCBk cXVvdF9vcGVyYXRpb25zIHsKIGludCAoKndyaXRlX2RxdW90KSAoc3RydWN0IGRxdW90ICopOwog c3RydWN0IGRxdW90ICooKmFsbG9jX2RxdW90KShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgaW50KTsK IHZvaWQgKCpkZXN0cm95X2RxdW90KShzdHJ1Y3QgZHF1b3QgKik7CiBpbnQgKCphY3F1aXJlX2Rx dW90KSAoc3RydWN0IGRxdW90ICopOwogaW50ICgqcmVsZWFzZV9kcXVvdCkgKHN0cnVjdCBkcXVv dCAqKTsKIGludCAoKm1hcmtfZGlydHkpIChzdHJ1Y3QgZHF1b3QgKik7CiBpbnQgKCp3cml0ZV9p bmZvKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7CgoKIHFzaXplX3QgKigqZ2V0X3Jlc2Vy dmVkX3NwYWNlKSAoc3RydWN0IGlub2RlICopOwogaW50ICgqZ2V0X3Byb2ppZCkgKHN0cnVjdCBp bm9kZSAqLCBrcHJvamlkX3QgKik7CgogaW50ICgqZ2V0X2lub2RlX3VzYWdlKSAoc3RydWN0IGlu b2RlICosIHFzaXplX3QgKik7CgogaW50ICgqZ2V0X25leHRfaWQpIChzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLCBzdHJ1Y3Qga3FpZCAqcWlkKTsKfTsKCnN0cnVjdCBwYXRoOwoKCnN0cnVjdCBxY19k cWJsayB7CiBpbnQgZF9maWVsZG1hc2s7CiB1NjQgZF9zcGNfaGFyZGxpbWl0OwogdTY0IGRfc3Bj X3NvZnRsaW1pdDsKIHU2NCBkX2lub19oYXJkbGltaXQ7CiB1NjQgZF9pbm9fc29mdGxpbWl0Owog dTY0IGRfc3BhY2U7CiB1NjQgZF9pbm9fY291bnQ7CiBzNjQgZF9pbm9fdGltZXI7CgogczY0IGRf c3BjX3RpbWVyOwogaW50IGRfaW5vX3dhcm5zOwogaW50IGRfc3BjX3dhcm5zOwogdTY0IGRfcnRf c3BjX2hhcmRsaW1pdDsKIHU2NCBkX3J0X3NwY19zb2Z0bGltaXQ7CiB1NjQgZF9ydF9zcGFjZTsK IHM2NCBkX3J0X3NwY190aW1lcjsKIGludCBkX3J0X3NwY193YXJuczsKfTsKIyAzOTUgIi4vaW5j bHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgcWNfdHlwZV9zdGF0ZSB7CiB1bnNpZ25lZCBpbnQg ZmxhZ3M7CiB1bnNpZ25lZCBpbnQgc3BjX3RpbWVsaW1pdDsKCiB1bnNpZ25lZCBpbnQgaW5vX3Rp bWVsaW1pdDsKIHVuc2lnbmVkIGludCBydF9zcGNfdGltZWxpbWl0OwogdW5zaWduZWQgaW50IHNw Y193YXJubGltaXQ7CiB1bnNpZ25lZCBpbnQgaW5vX3dhcm5saW1pdDsKIHVuc2lnbmVkIGludCBy dF9zcGNfd2FybmxpbWl0OwogdW5zaWduZWQgbG9uZyBsb25nIGlubzsKIGJsa2NudF90IGJsb2Nr czsKIGJsa2NudF90IG5leHRlbnRzOwp9OwoKc3RydWN0IHFjX3N0YXRlIHsKIHVuc2lnbmVkIGlu dCBzX2luY29yZWRxczsKIHN0cnVjdCBxY190eXBlX3N0YXRlIHNfc3RhdGVbM107Cn07CgoKc3Ry dWN0IHFjX2luZm8gewogaW50IGlfZmllbGRtYXNrOwogdW5zaWduZWQgaW50IGlfZmxhZ3M7CiB1 bnNpZ25lZCBpbnQgaV9zcGNfdGltZWxpbWl0OwoKIHVuc2lnbmVkIGludCBpX2lub190aW1lbGlt aXQ7CiB1bnNpZ25lZCBpbnQgaV9ydF9zcGNfdGltZWxpbWl0OwogdW5zaWduZWQgaW50IGlfc3Bj X3dhcm5saW1pdDsKIHVuc2lnbmVkIGludCBpX2lub193YXJubGltaXQ7CiB1bnNpZ25lZCBpbnQg aV9ydF9zcGNfd2FybmxpbWl0Owp9OwoKCnN0cnVjdCBxdW90YWN0bF9vcHMgewogaW50ICgqcXVv dGFfb24pKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQsIGludCwgY29uc3Qgc3RydWN0IHBhdGgg Kik7CiBpbnQgKCpxdW90YV9vZmYpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQpOwogaW50ICgq cXVvdGFfZW5hYmxlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdW5zaWduZWQgaW50KTsKIGludCAo KnF1b3RhX2Rpc2FibGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBpbnQpOwogaW50 ICgqcXVvdGFfc3luYykoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7CiBpbnQgKCpzZXRfaW5m bykoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCwgc3RydWN0IHFjX2luZm8gKik7CiBpbnQgKCpn ZXRfZHFibGspKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3Qga3FpZCwgc3RydWN0IHFjX2Rx YmxrICopOwogaW50ICgqZ2V0X25leHRkcWJsaykoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVj dCBrcWlkICosCiAgICAgICAgc3RydWN0IHFjX2RxYmxrICopOwogaW50ICgqc2V0X2RxYmxrKShz dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGtxaWQsIHN0cnVjdCBxY19kcWJsayAqKTsKIGlu dCAoKmdldF9zdGF0ZSkoc3RydWN0IHN1cGVyX2Jsb2NrICosIHN0cnVjdCBxY19zdGF0ZSAqKTsK IGludCAoKnJtX3hxdW90YSkoc3RydWN0IHN1cGVyX2Jsb2NrICosIHVuc2lnbmVkIGludCk7Cn07 CgpzdHJ1Y3QgcXVvdGFfZm9ybWF0X3R5cGUgewogaW50IHFmX2ZtdF9pZDsKIGNvbnN0IHN0cnVj dCBxdW90YV9mb3JtYXRfb3BzICpxZl9vcHM7CiBzdHJ1Y3QgbW9kdWxlICpxZl9vd25lcjsKIHN0 cnVjdCBxdW90YV9mb3JtYXRfdHlwZSAqcWZfbmV4dDsKfTsKIyA0NjMgIi4vaW5jbHVkZS9saW51 eC9xdW90YS5oIgplbnVtIHsKIF9EUVVPVF9VU0FHRV9FTkFCTEVEID0gMCwKIF9EUVVPVF9MSU1J VFNfRU5BQkxFRCwKIF9EUVVPVF9TVVNQRU5ERUQsCgoKIF9EUVVPVF9TVEFURV9GTEFHUwp9Owoj IDQ5MCAiLi9pbmNsdWRlL2xpbnV4L3F1b3RhLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGludCBkcXVvdF9zdGF0ZV9m bGFnKHVuc2lnbmVkIGludCBmbGFncywgaW50IHR5cGUpCnsKIHJldHVybiBmbGFncyA8PCB0eXBl Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBpbnQgZHF1b3RfZ2VuZXJpY19mbGFnKHVuc2lnbmVkIGludCBmbGFncywg aW50IHR5cGUpCnsKIHJldHVybiAoZmxhZ3MgPj4gdHlwZSkgJiAoKDEgPDwgX0RRVU9UX1VTQUdF X0VOQUJMRUQgKiAzKSB8ICgxIDw8IF9EUVVPVF9MSU1JVFNfRU5BQkxFRCAqIDMpIHwgKDEgPDwg X0RRVU9UX1NVU1BFTkRFRCAqIDMpKTsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGlu ZV9fKSkgdW5zaWduZWQgZHF1b3Rfc3RhdGVfdHlwZXModW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVk IGZsYWcpCnsKIGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfNTAzKHZvaWQp IF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygiQlVJTERfQlVHX09OIGZhaWxlZDogIiAiKGZsYWcp ID09IDAgfHwgKCgoZmxhZykgJiAoKGZsYWcpIC0gMSkpICE9IDApIikpKTsgaWYgKCEoISgoZmxh ZykgPT0gMCB8fCAoKChmbGFnKSAmICgoZmxhZykgLSAxKSkgIT0gMCkpKSkgX19jb21waWxldGlt ZV9hc3NlcnRfNTAzKCk7IH0gd2hpbGUgKDApOwogcmV0dXJuIChmbGFncyAvIGZsYWcpICYgKCgx IDw8IDMpIC0gMSk7Cn0KCgpleHRlcm4gdm9pZCBxdW90YV9zZW5kX3dhcm5pbmcoc3RydWN0IGtx aWQgcWlkLCBkZXZfdCBkZXYsCiAgICAgICAgICBjb25zdCBjaGFyIHdhcm50eXBlKTsKIyA1MTgg Ii4vaW5jbHVkZS9saW51eC9xdW90YS5oIgpzdHJ1Y3QgcXVvdGFfaW5mbyB7CiB1bnNpZ25lZCBp bnQgZmxhZ3M7CiBzdHJ1Y3Qgcndfc2VtYXBob3JlIGRxaW9fc2VtOwogc3RydWN0IGlub2RlICpm aWxlc1szXTsKIHN0cnVjdCBtZW1fZHFpbmZvIGluZm9bM107CiBjb25zdCBzdHJ1Y3QgcXVvdGFf Zm9ybWF0X29wcyAqb3BzWzNdOwp9OwoKaW50IHJlZ2lzdGVyX3F1b3RhX2Zvcm1hdChzdHJ1Y3Qg cXVvdGFfZm9ybWF0X3R5cGUgKmZtdCk7CnZvaWQgdW5yZWdpc3Rlcl9xdW90YV9mb3JtYXQoc3Ry dWN0IHF1b3RhX2Zvcm1hdF90eXBlICpmbXQpOwoKc3RydWN0IHF1b3RhX21vZHVsZV9uYW1lIHsK IGludCBxbV9mbXRfaWQ7CiBjaGFyICpxbV9tb2RfbmFtZTsKfTsKIyAyNDYgIi4vaW5jbHVkZS9s aW51eC9mcy5oIiAyCiMgMjc5ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKZW51bSBwb3NpdGl2ZV9h b3BfcmV0dXJucyB7CiBBT1BfV1JJVEVQQUdFX0FDVElWQVRFID0gMHg4MDAwMCwKIEFPUF9UUlVO Q0FURURfUEFHRSA9IDB4ODAwMDEsCn07CiMgMjkyICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3Ry dWN0IHBhZ2U7CnN0cnVjdCBhZGRyZXNzX3NwYWNlOwpzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2w7 CgoKCgoKZW51bSByd19oaW50IHsKIFdSSVRFX0xJRkVfTk9UX1NFVCA9IDAsCiBXUklURV9MSUZF X05PTkUgPSAxLAogV1JJVEVfTElGRV9TSE9SVCA9IDIsCiBXUklURV9MSUZFX01FRElVTSA9IDMs CiBXUklURV9MSUZFX0xPTkcgPSA0LAogV1JJVEVfTElGRV9FWFRSRU1FID0gNSwKfTsKIyAzMTgg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3Qga2lvY2Igewogc3RydWN0IGZpbGUgKmtpX2Zp bHA7CgoKCgogbG9mZl90IGtpX3BvczsKIHZvaWQgKCpraV9jb21wbGV0ZSkoc3RydWN0IGtpb2Ni ICppb2NiLCBsb25nIHJldCwgbG9uZyByZXQyKTsKIHZvaWQgKnByaXZhdGU7CiBpbnQga2lfZmxh Z3M7CiB1MTYga2lfaGludDsKIHUxNiBraV9pb3ByaW87CiB1bnNpZ25lZCBpbnQga2lfY29va2ll OwoKCn07CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIGlzX3N5bmNfa2lvY2Ioc3RydWN0IGtpb2NiICpraW9jYikKewogcmV0dXJu IGtpb2NiLT5raV9jb21wbGV0ZSA9PSAoKHZvaWQgKikwKTsKfQojIDM0OSAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiCnR5cGVkZWYgc3RydWN0IHsKIHNpemVfdCB3cml0dGVuOwogc2l6ZV90IGNvdW50 OwogdW5pb24gewogIGNoYXIgKmJ1ZjsKICB2b2lkICpkYXRhOwogfSBhcmc7CiBpbnQgZXJyb3I7 Cn0gcmVhZF9kZXNjcmlwdG9yX3Q7Cgp0eXBlZGVmIGludCAoKnJlYWRfYWN0b3JfdCkocmVhZF9k ZXNjcmlwdG9yX3QgKiwgc3RydWN0IHBhZ2UgKiwKICB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs b25nKTsKCnN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgewogaW50ICgqd3JpdGVwYWdl KShzdHJ1Y3QgcGFnZSAqcGFnZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpOwogaW50 ICgqcmVhZHBhZ2UpKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICopOwoKCiBpbnQgKCp3cml0 ZXBhZ2VzKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wg Kik7CgoKIGludCAoKnNldF9wYWdlX2RpcnR5KShzdHJ1Y3QgcGFnZSAqcGFnZSk7CgoKCgoKIGlu dCAoKnJlYWRwYWdlcykoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpt YXBwaW5nLAogICBzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlcywgdW5zaWduZWQgbnJfcGFnZXMpOwoK IGludCAoKndyaXRlX2JlZ2luKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq bWFwcGluZywKICAgIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3MsCiAg ICBzdHJ1Y3QgcGFnZSAqKnBhZ2VwLCB2b2lkICoqZnNkYXRhKTsKIGludCAoKndyaXRlX2VuZCko c3RydWN0IGZpbGUgKiwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCiAgICBsb2ZmX3Qg cG9zLCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwKICAgIHN0cnVjdCBwYWdlICpwYWdl LCB2b2lkICpmc2RhdGEpOwoKCiBzZWN0b3JfdCAoKmJtYXApKHN0cnVjdCBhZGRyZXNzX3NwYWNl ICosIHNlY3Rvcl90KTsKIHZvaWQgKCppbnZhbGlkYXRlcGFnZSkgKHN0cnVjdCBwYWdlICosIHVu c2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKIGludCAoKnJlbGVhc2VwYWdlKSAoc3RydWN0IHBh Z2UgKiwgZ2ZwX3QpOwogdm9pZCAoKmZyZWVwYWdlKShzdHJ1Y3QgcGFnZSAqKTsKIHNzaXplX3Qg KCpkaXJlY3RfSU8pKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpOwoKCgoK IGludCAoKm1pZ3JhdGVwYWdlKSAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwKICAgc3RydWN0IHBh Z2UgKiwgc3RydWN0IHBhZ2UgKiwgZW51bSBtaWdyYXRlX21vZGUpOwogYm9vbCAoKmlzb2xhdGVf cGFnZSkoc3RydWN0IHBhZ2UgKiwgaXNvbGF0ZV9tb2RlX3QpOwogdm9pZCAoKnB1dGJhY2tfcGFn ZSkoc3RydWN0IHBhZ2UgKik7CiBpbnQgKCpsYXVuZGVyX3BhZ2UpIChzdHJ1Y3QgcGFnZSAqKTsK IGludCAoKmlzX3BhcnRpYWxseV91cHRvZGF0ZSkgKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxv bmcsCiAgICAgdW5zaWduZWQgbG9uZyk7CiB2b2lkICgqaXNfZGlydHlfd3JpdGViYWNrKSAoc3Ry dWN0IHBhZ2UgKiwgYm9vbCAqLCBib29sICopOwogaW50ICgqZXJyb3JfcmVtb3ZlX3BhZ2UpKHN0 cnVjdCBhZGRyZXNzX3NwYWNlICosIHN0cnVjdCBwYWdlICopOwoKCiBpbnQgKCpzd2FwX2FjdGl2 YXRlKShzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqc2lzLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKICAg IHNlY3Rvcl90ICpzcGFuKTsKIHZvaWQgKCpzd2FwX2RlYWN0aXZhdGUpKHN0cnVjdCBmaWxlICpm aWxlKTsKfTsKCmV4dGVybiBjb25zdCBzdHJ1Y3QgYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIGVt cHR5X2FvcHM7CgoKCgoKaW50IHBhZ2VjYWNoZV93cml0ZV9iZWdpbihzdHJ1Y3QgZmlsZSAqLCBz dHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgIGxvZmZfdCBwb3MsIHVuc2lnbmVkIGxl biwgdW5zaWduZWQgZmxhZ3MsCiAgICBzdHJ1Y3QgcGFnZSAqKnBhZ2VwLCB2b2lkICoqZnNkYXRh KTsKCmludCBwYWdlY2FjaGVfd3JpdGVfZW5kKHN0cnVjdCBmaWxlICosIHN0cnVjdCBhZGRyZXNz X3NwYWNlICptYXBwaW5nLAogICAgbG9mZl90IHBvcywgdW5zaWduZWQgbGVuLCB1bnNpZ25lZCBj b3BpZWQsCiAgICBzdHJ1Y3QgcGFnZSAqcGFnZSwgdm9pZCAqZnNkYXRhKTsKIyA0NDUgIi4vaW5j bHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgYWRkcmVzc19zcGFjZSB7CiBzdHJ1Y3QgaW5vZGUgKmhv c3Q7CiBzdHJ1Y3QgeGFycmF5IGlfcGFnZXM7CiBnZnBfdCBnZnBfbWFzazsKIGF0b21pY190IGlf bW1hcF93cml0YWJsZTsKCgoKCiBzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgaV9tbWFwOwogc3RydWN0 IHJ3X3NlbWFwaG9yZSBpX21tYXBfcndzZW07CiB1bnNpZ25lZCBsb25nIG5ycGFnZXM7CiB1bnNp Z25lZCBsb25nIG5yZXhjZXB0aW9uYWw7CiB1bnNpZ25lZCBsb25nIHdyaXRlYmFja19pbmRleDsK IGNvbnN0IHN0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgKmFfb3BzOwogdW5zaWduZWQg bG9uZyBmbGFnczsKIGVycnNlcV90IHdiX2VycjsKIHNwaW5sb2NrX3QgcHJpdmF0ZV9sb2NrOwog c3RydWN0IGxpc3RfaGVhZCBwcml2YXRlX2xpc3Q7CiB2b2lkICpwcml2YXRlX2RhdGE7Cn0gX19h dHRyaWJ1dGVfXygoYWxpZ25lZChzaXplb2YobG9uZykpKSkgX19hdHRyaWJ1dGVfXygoX19kZXNp Z25hdGVkX2luaXRfXykpOwoKCgoKCnN0cnVjdCByZXF1ZXN0X3F1ZXVlOwoKc3RydWN0IGJsb2Nr X2RldmljZSB7CiBkZXZfdCBiZF9kZXY7CiBpbnQgYmRfb3BlbmVyczsKIHN0cnVjdCBpbm9kZSAq IGJkX2lub2RlOwogc3RydWN0IHN1cGVyX2Jsb2NrICogYmRfc3VwZXI7CiBzdHJ1Y3QgbXV0ZXgg YmRfbXV0ZXg7CiB2b2lkICogYmRfY2xhaW1pbmc7CiB2b2lkICogYmRfaG9sZGVyOwogaW50IGJk X2hvbGRlcnM7CiBib29sIGJkX3dyaXRlX2hvbGRlcjsKCiBzdHJ1Y3QgbGlzdF9oZWFkIGJkX2hv bGRlcl9kaXNrczsKCiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICogYmRfY29udGFpbnM7CiB1bnNpZ25l ZCBiZF9ibG9ja19zaXplOwogdTggYmRfcGFydG5vOwogc3RydWN0IGhkX3N0cnVjdCAqIGJkX3Bh cnQ7CgogdW5zaWduZWQgYmRfcGFydF9jb3VudDsKIGludCBiZF9pbnZhbGlkYXRlZDsKIHN0cnVj dCBnZW5kaXNrICogYmRfZGlzazsKIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICogYmRfcXVldWU7CiBz dHJ1Y3QgYmFja2luZ19kZXZfaW5mbyAqYmRfYmRpOwogc3RydWN0IGxpc3RfaGVhZCBiZF9saXN0 OwoKCgoKCgogdW5zaWduZWQgbG9uZyBiZF9wcml2YXRlOwoKCiBpbnQgYmRfZnNmcmVlemVfY291 bnQ7Cgogc3RydWN0IG11dGV4IGJkX2ZzZnJlZXplX211dGV4Owp9IF9fYXR0cmlidXRlX18oKF9f ZGVzaWduYXRlZF9pbml0X18pKTsKIyA1MTkgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIG1h cHBpbmdfdGFnZ2VkKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCB4YV9tYXJrX3QgdGFn KQp7CiByZXR1cm4geGFfbWFya2VkKCZtYXBwaW5nLT5pX3BhZ2VzLCB0YWcpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlf bW1hcF9sb2NrX3dyaXRlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQp7CiBkb3duX3dy aXRlKCZtYXBwaW5nLT5pX21tYXBfcndzZW0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfbW1hcF91bmxvY2tfd3JpdGUo c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCnsKIHVwX3dyaXRlKCZtYXBwaW5nLT5pX21t YXBfcndzZW0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGlfbW1hcF9sb2NrX3JlYWQoc3RydWN0IGFkZHJlc3Nfc3BhY2Ug Km1hcHBpbmcpCnsKIGRvd25fcmVhZCgmbWFwcGluZy0+aV9tbWFwX3J3c2VtKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBp X21tYXBfdW5sb2NrX3JlYWQoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCnsKIHVwX3Jl YWQoJm1hcHBpbmctPmlfbW1hcF9yd3NlbSk7Cn0KCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBtYXBwaW5nX21hcHBlZChzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKewogcmV0dXJuICEoKHsgdW5pb24geyB0eXBlb2Yo KCZtYXBwaW5nLT5pX21tYXAucmJfcm9vdCktPnJiX25vZGUpIF9fdmFsOyBjaGFyIF9fY1sxXTsg fSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKCZtYXBwaW5nLT5pX21tYXAucmJfcm9v dCktPnJiX25vZGUpLCBfX3UuX19jLCBzaXplb2YoKCZtYXBwaW5nLT5pX21tYXAucmJfcm9vdCkt PnJiX25vZGUpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXplX25vY2hlY2soJigoJm1hcHBpbmctPmlf bW1hcC5yYl9yb290KS0+cmJfbm9kZSksIF9fdS5fX2MsIHNpemVvZigoJm1hcHBpbmctPmlfbW1h cC5yYl9yb290KS0+cmJfbm9kZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pID09 ICgodm9pZCAqKTApKTsKfQojIDU2MSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBtYXBwaW5n X3dyaXRhYmx5X21hcHBlZChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKewogcmV0dXJu IGF0b21pY19yZWFkKCZtYXBwaW5nLT5pX21tYXBfd3JpdGFibGUpID4gMDsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IG1hcHBp bmdfbWFwX3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQp7CiByZXR1cm4g YXRvbWljX2luY191bmxlc3NfbmVnYXRpdmUoJm1hcHBpbmctPmlfbW1hcF93cml0YWJsZSkgPwog IDAgOiAtMTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBtYXBwaW5nX3VubWFwX3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3Nw YWNlICptYXBwaW5nKQp7CiBhdG9taWNfZGVjKCZtYXBwaW5nLT5pX21tYXBfd3JpdGFibGUpOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgbWFwcGluZ19kZW55X3dyaXRhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n KQp7CiByZXR1cm4gYXRvbWljX2RlY191bmxlc3NfcG9zaXRpdmUoJm1hcHBpbmctPmlfbW1hcF93 cml0YWJsZSkgPwogIDAgOiAtMTY7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWFwcGluZ19hbGxvd193cml0YWJsZShzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKewogYXRvbWljX2luYygmbWFwcGluZy0+aV9tbWFw X3dyaXRhYmxlKTsKfQojIDU5OSAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0cnVjdCBwb3NpeF9h Y2w7CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHN0cnVjdCBwb3NpeF9hY2wgKgp1bmNhY2hlZF9hY2xfc2VudGluZWwoc3RydWN0IHRh c2tfc3RydWN0ICp0YXNrKQp7CiByZXR1cm4gKHZvaWQgKil0YXNrICsgMTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbAppc191 bmNhY2hlZF9hY2woc3RydWN0IHBvc2l4X2FjbCAqYWNsKQp7CiByZXR1cm4gKGxvbmcpYWNsICYg MTsKfQoKCgoKCgoKc3RydWN0IGZzbm90aWZ5X21hcmtfY29ubmVjdG9yOwoKCgoKCgpzdHJ1Y3Qg aW5vZGUgewogdW1vZGVfdCBpX21vZGU7CiB1bnNpZ25lZCBzaG9ydCBpX29wZmxhZ3M7CiBrdWlk X3QgaV91aWQ7CiBrZ2lkX3QgaV9naWQ7CiB1bnNpZ25lZCBpbnQgaV9mbGFnczsKCgogc3RydWN0 IHBvc2l4X2FjbCAqaV9hY2w7CiBzdHJ1Y3QgcG9zaXhfYWNsICppX2RlZmF1bHRfYWNsOwoKCiBj b25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyAqaV9vcDsKIHN0cnVjdCBzdXBlcl9ibG9jayAq aV9zYjsKIHN0cnVjdCBhZGRyZXNzX3NwYWNlICppX21hcHBpbmc7CgoKIHZvaWQgKmlfc2VjdXJp dHk7CgoKCiB1bnNpZ25lZCBsb25nIGlfaW5vOwoKCgoKCgoKIHVuaW9uIHsKICBjb25zdCB1bnNp Z25lZCBpbnQgaV9ubGluazsKICB1bnNpZ25lZCBpbnQgX19pX25saW5rOwogfTsKIGRldl90IGlf cmRldjsKIGxvZmZfdCBpX3NpemU7CiBzdHJ1Y3QgdGltZXNwZWM2NCBpX2F0aW1lOwogc3RydWN0 IHRpbWVzcGVjNjQgaV9tdGltZTsKIHN0cnVjdCB0aW1lc3BlYzY0IGlfY3RpbWU7CiBzcGlubG9j a190IGlfbG9jazsKIHVuc2lnbmVkIHNob3J0IGlfYnl0ZXM7CiB1OCBpX2Jsa2JpdHM7CiB1OCBp X3dyaXRlX2hpbnQ7CiBibGtjbnRfdCBpX2Jsb2NrczsKCgoKCgoKIHVuc2lnbmVkIGxvbmcgaV9z dGF0ZTsKIHN0cnVjdCByd19zZW1hcGhvcmUgaV9yd3NlbTsKCiB1bnNpZ25lZCBsb25nIGRpcnRp ZWRfd2hlbjsKIHVuc2lnbmVkIGxvbmcgZGlydGllZF90aW1lX3doZW47Cgogc3RydWN0IGhsaXN0 X25vZGUgaV9oYXNoOwogc3RydWN0IGxpc3RfaGVhZCBpX2lvX2xpc3Q7Cgogc3RydWN0IGJkaV93 cml0ZWJhY2sgKmlfd2I7CgoKIGludCBpX3diX2Zybl93aW5uZXI7CiB1MTYgaV93Yl9mcm5fYXZn X3RpbWU7CiB1MTYgaV93Yl9mcm5faGlzdG9yeTsKCiBzdHJ1Y3QgbGlzdF9oZWFkIGlfbHJ1Owog c3RydWN0IGxpc3RfaGVhZCBpX3NiX2xpc3Q7CiBzdHJ1Y3QgbGlzdF9oZWFkIGlfd2JfbGlzdDsK IHVuaW9uIHsKICBzdHJ1Y3QgaGxpc3RfaGVhZCBpX2RlbnRyeTsKICBzdHJ1Y3QgY2FsbGJhY2tf aGVhZCBpX3JjdTsKIH07CiBhdG9taWM2NF90IGlfdmVyc2lvbjsKIGF0b21pYzY0X3QgaV9zZXF1 ZW5jZTsKIGF0b21pY190IGlfY291bnQ7CiBhdG9taWNfdCBpX2Rpb19jb3VudDsKIGF0b21pY190 IGlfd3JpdGVjb3VudDsKCiBhdG9taWNfdCBpX3JlYWRjb3VudDsKCiB1bmlvbiB7CiAgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqaV9mb3A7CiAgdm9pZCAoKmZyZWVfaW5vZGUpKHN0cnVj dCBpbm9kZSAqKTsKIH07CiBzdHJ1Y3QgZmlsZV9sb2NrX2NvbnRleHQgKmlfZmxjdHg7CiBzdHJ1 Y3QgYWRkcmVzc19zcGFjZSBpX2RhdGE7CiBzdHJ1Y3QgbGlzdF9oZWFkIGlfZGV2aWNlczsKIHVu aW9uIHsKICBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICppX3BpcGU7CiAgc3RydWN0IGJsb2NrX2Rl dmljZSAqaV9iZGV2OwogIHN0cnVjdCBjZGV2ICppX2NkZXY7CiAgY2hhciAqaV9saW5rOwogIHVu c2lnbmVkIGlfZGlyX3NlcTsKIH07CgogX191MzIgaV9nZW5lcmF0aW9uOwoKCiBfX3UzMiBpX2Zz bm90aWZ5X21hc2s7CiBzdHJ1Y3QgZnNub3RpZnlfbWFya19jb25uZWN0b3IgKmlfZnNub3RpZnlf bWFya3M7CiMgNzM4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKIHZvaWQgKmlfcHJpdmF0ZTsKfSBf X2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpzdHJ1Y3QgdGltZXNwZWM2NCB0 aW1lc3RhbXBfdHJ1bmNhdGUoc3RydWN0IHRpbWVzcGVjNjQgdCwgc3RydWN0IGlub2RlICppbm9k ZSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBpbnQgaV9ibG9ja3NpemUoY29uc3Qgc3RydWN0IGlub2RlICpub2RlKQp7 CiByZXR1cm4gKDEgPDwgbm9kZS0+aV9ibGtiaXRzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlub2RlX3VuaGFzaGVkKHN0 cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHJldHVybiBobGlzdF91bmhhc2hlZCgmaW5vZGUtPmlfaGFz aCk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfZmFrZV9oYXNoKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsK IGhsaXN0X2FkZF9mYWtlKCZpbm9kZS0+aV9oYXNoKTsKfQojIDc4MCAiLi9pbmNsdWRlL2xpbnV4 L2ZzLmgiCmVudW0gaW5vZGVfaV9tdXRleF9sb2NrX2NsYXNzCnsKIElfTVVURVhfTk9STUFMLAog SV9NVVRFWF9QQVJFTlQsCiBJX01VVEVYX0NISUxELAogSV9NVVRFWF9YQVRUUiwKIElfTVVURVhf Tk9ORElSMiwKIElfTVVURVhfUEFSRU5UMiwKfTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfbG9jayhzdHJ1Y3QgaW5v ZGUgKmlub2RlKQp7CiBkb3duX3dyaXRlKCZpbm9kZS0+aV9yd3NlbSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5vZGVf dW5sb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHVwX3dyaXRlKCZpbm9kZS0+aV9yd3NlbSk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgaW5vZGVfbG9ja19zaGFyZWQoc3RydWN0IGlub2RlICppbm9kZSkKewogZG93bl9y ZWFkKCZpbm9kZS0+aV9yd3NlbSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW5vZGVfdW5sb2NrX3NoYXJlZChzdHJ1Y3Qg aW5vZGUgKmlub2RlKQp7CiB1cF9yZWFkKCZpbm9kZS0+aV9yd3NlbSk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBpbm9kZV90 cnlsb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHJldHVybiBkb3duX3dyaXRlX3RyeWxvY2so Jmlub2RlLT5pX3J3c2VtKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGlub2RlX3RyeWxvY2tfc2hhcmVkKHN0cnVjdCBpbm9k ZSAqaW5vZGUpCnsKIHJldHVybiBkb3duX3JlYWRfdHJ5bG9jaygmaW5vZGUtPmlfcndzZW0pOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgaW5vZGVfaXNfbG9ja2VkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHJldHVybiByd3Nl bV9pc19sb2NrZWQoJmlub2RlLT5pX3J3c2VtKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9sb2NrX25lc3RlZChz dHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBzdWJjbGFzcykKewogZG93bl93cml0ZSgmaW5v ZGUtPmlfcndzZW0pOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX2xvY2tfc2hhcmVkX25lc3RlZChzdHJ1Y3QgaW5v ZGUgKmlub2RlLCB1bnNpZ25lZCBzdWJjbGFzcykKewogZG93bl9yZWFkKCZpbm9kZS0+aV9yd3Nl bSk7Cn0KCnZvaWQgbG9ja190d29fbm9uZGlyZWN0b3JpZXMoc3RydWN0IGlub2RlICosIHN0cnVj dCBpbm9kZSopOwp2b2lkIHVubG9ja190d29fbm9uZGlyZWN0b3JpZXMoc3RydWN0IGlub2RlICos IHN0cnVjdCBpbm9kZSopOwojIDg0OCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvZmZfdCBpX3Np emVfcmVhZChjb25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiMgODY3ICIuL2luY2x1ZGUvbGlu dXgvZnMuaCIKIHJldHVybiBpbm9kZS0+aV9zaXplOwoKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfc2l6ZV93cml0 ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgaV9zaXplKQp7CiMgODg5ICIuL2luY2x1ZGUv bGludXgvZnMuaCIKIGlub2RlLT5pX3NpemUgPSBpX3NpemU7Cgp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbWlub3Io Y29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKewogcmV0dXJuICgodW5zaWduZWQgaW50KSAoKGlu b2RlLT5pX3JkZXYpICYgKCgxVSA8PCAyMCkgLSAxKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1bnNpZ25lZCBpbWFqb3IoY29u c3Qgc3RydWN0IGlub2RlICppbm9kZSkKewogcmV0dXJuICgodW5zaWduZWQgaW50KSAoKGlub2Rl LT5pX3JkZXYpID4+IDIwKSk7Cn0KCmV4dGVybiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpJX0JERVYo c3RydWN0IGlub2RlICppbm9kZSk7CgpzdHJ1Y3QgZm93bl9zdHJ1Y3Qgewogcndsb2NrX3QgbG9j azsKIHN0cnVjdCBwaWQgKnBpZDsKIGVudW0gcGlkX3R5cGUgcGlkX3R5cGU7CiBrdWlkX3QgdWlk LCBldWlkOwogaW50IHNpZ251bTsKfTsKCgoKCnN0cnVjdCBmaWxlX3JhX3N0YXRlIHsKIHVuc2ln bmVkIGxvbmcgc3RhcnQ7CiB1bnNpZ25lZCBpbnQgc2l6ZTsKIHVuc2lnbmVkIGludCBhc3luY19z aXplOwoKCiB1bnNpZ25lZCBpbnQgcmFfcGFnZXM7CiB1bnNpZ25lZCBpbnQgbW1hcF9taXNzOwog bG9mZl90IHByZXZfcG9zOwp9OwoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJhX2hhc19pbmRleChzdHJ1Y3QgZmlsZV9yYV9z dGF0ZSAqcmEsIHVuc2lnbmVkIGxvbmcgaW5kZXgpCnsKIHJldHVybiAoaW5kZXggPj0gcmEtPnN0 YXJ0ICYmCiAgaW5kZXggPCByYS0+c3RhcnQgKyByYS0+c2l6ZSk7Cn0KCnN0cnVjdCBmaWxlIHsK IHVuaW9uIHsKICBzdHJ1Y3QgbGxpc3Rfbm9kZSBmdV9sbGlzdDsKICBzdHJ1Y3QgY2FsbGJhY2tf aGVhZCBmdV9yY3VoZWFkOwogfSBmX3U7CiBzdHJ1Y3QgcGF0aCBmX3BhdGg7CiBzdHJ1Y3QgaW5v ZGUgKmZfaW5vZGU7CiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmX29wOwoKCgoKCiBz cGlubG9ja190IGZfbG9jazsKIGVudW0gcndfaGludCBmX3dyaXRlX2hpbnQ7CiBhdG9taWNfbG9u Z190IGZfY291bnQ7CiB1bnNpZ25lZCBpbnQgZl9mbGFnczsKIGZtb2RlX3QgZl9tb2RlOwogc3Ry dWN0IG11dGV4IGZfcG9zX2xvY2s7CiBsb2ZmX3QgZl9wb3M7CiBzdHJ1Y3QgZm93bl9zdHJ1Y3Qg Zl9vd25lcjsKIGNvbnN0IHN0cnVjdCBjcmVkICpmX2NyZWQ7CiBzdHJ1Y3QgZmlsZV9yYV9zdGF0 ZSBmX3JhOwoKIHU2NCBmX3ZlcnNpb247Cgogdm9pZCAqZl9zZWN1cml0eTsKCgogdm9pZCAqcHJp dmF0ZV9kYXRhOwoKCgogc3RydWN0IGxpc3RfaGVhZCBmX2VwX2xpbmtzOwogc3RydWN0IGxpc3Rf aGVhZCBmX3RmaWxlX2xsaW5rOwoKIHN0cnVjdCBhZGRyZXNzX3NwYWNlICpmX21hcHBpbmc7CiBl cnJzZXFfdCBmX3diX2VycjsKfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSkK ICBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDQpKSk7CgpzdHJ1Y3QgZmlsZV9oYW5kbGUgewogX191 MzIgaGFuZGxlX2J5dGVzOwogaW50IGhhbmRsZV90eXBlOwoKIHVuc2lnbmVkIGNoYXIgZl9oYW5k bGVbMF07Cn07CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgZmlsZSAqZ2V0X2ZpbGUoc3RydWN0IGZpbGUgKmYpCnsKIGF0b21p Y19sb25nX2luYygmZi0+Zl9jb3VudCk7CiByZXR1cm4gZjsKfQojIDEwMjYgIi4vaW5jbHVkZS9s aW51eC9mcy5oIgp0eXBlZGVmIHZvaWQgKmZsX293bmVyX3Q7CgpzdHJ1Y3QgZmlsZV9sb2NrOwoK c3RydWN0IGZpbGVfbG9ja19vcGVyYXRpb25zIHsKIHZvaWQgKCpmbF9jb3B5X2xvY2spKHN0cnVj dCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKIHZvaWQgKCpmbF9yZWxlYXNlX3By aXZhdGUpKHN0cnVjdCBmaWxlX2xvY2sgKik7Cn07CgpzdHJ1Y3QgbG9ja19tYW5hZ2VyX29wZXJh dGlvbnMgewogZmxfb3duZXJfdCAoKmxtX2dldF9vd25lcikoZmxfb3duZXJfdCk7CiB2b2lkICgq bG1fcHV0X293bmVyKShmbF9vd25lcl90KTsKIHZvaWQgKCpsbV9ub3RpZnkpKHN0cnVjdCBmaWxl X2xvY2sgKik7CiBpbnQgKCpsbV9ncmFudCkoc3RydWN0IGZpbGVfbG9jayAqLCBpbnQpOwogYm9v bCAoKmxtX2JyZWFrKShzdHJ1Y3QgZmlsZV9sb2NrICopOwogaW50ICgqbG1fY2hhbmdlKShzdHJ1 Y3QgZmlsZV9sb2NrICosIGludCwgc3RydWN0IGxpc3RfaGVhZCAqKTsKIHZvaWQgKCpsbV9zZXR1 cCkoc3RydWN0IGZpbGVfbG9jayAqLCB2b2lkICoqKTsKfTsKCnN0cnVjdCBsb2NrX21hbmFnZXIg ewogc3RydWN0IGxpc3RfaGVhZCBsaXN0OwoKCgoKIGJvb2wgYmxvY2tfb3BlbnM7Cn07CgpzdHJ1 Y3QgbmV0Owp2b2lkIGxvY2tzX3N0YXJ0X2dyYWNlKHN0cnVjdCBuZXQgKiwgc3RydWN0IGxvY2tf bWFuYWdlciAqKTsKdm9pZCBsb2Nrc19lbmRfZ3JhY2Uoc3RydWN0IGxvY2tfbWFuYWdlciAqKTsK Ym9vbCBsb2Nrc19pbl9ncmFjZShzdHJ1Y3QgbmV0ICopOwpib29sIG9wZW5zX2luX2dyYWNlKHN0 cnVjdCBuZXQgKik7CgoKIyAxICIuL2luY2x1ZGUvbGludXgvbmZzX2ZzX2kuaCIgMQoKCgoKc3Ry dWN0IG5sbV9sb2Nrb3duZXI7CgoKCgpzdHJ1Y3QgbmZzX2xvY2tfaW5mbyB7CiB1MzIgc3RhdGU7 CiBzdHJ1Y3QgbmxtX2xvY2tvd25lciAqb3duZXI7CiBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cn07 CgpzdHJ1Y3QgbmZzNF9sb2NrX3N0YXRlOwpzdHJ1Y3QgbmZzNF9sb2NrX2luZm8gewogc3RydWN0 IG5mczRfbG9ja19zdGF0ZSAqb3duZXI7Cn07CiMgMTA2MiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgi IDIKIyAxMDgwICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RydWN0IGZpbGVfbG9jayB7CiBzdHJ1 Y3QgZmlsZV9sb2NrICpmbF9ibG9ja2VyOwogc3RydWN0IGxpc3RfaGVhZCBmbF9saXN0Owogc3Ry dWN0IGhsaXN0X25vZGUgZmxfbGluazsKIHN0cnVjdCBsaXN0X2hlYWQgZmxfYmxvY2tlZF9yZXF1 ZXN0czsKCgogc3RydWN0IGxpc3RfaGVhZCBmbF9ibG9ja2VkX21lbWJlcjsKCgogZmxfb3duZXJf dCBmbF9vd25lcjsKIHVuc2lnbmVkIGludCBmbF9mbGFnczsKIHVuc2lnbmVkIGNoYXIgZmxfdHlw ZTsKIHVuc2lnbmVkIGludCBmbF9waWQ7CiBpbnQgZmxfbGlua19jcHU7CiB3YWl0X3F1ZXVlX2hl YWRfdCBmbF93YWl0Owogc3RydWN0IGZpbGUgKmZsX2ZpbGU7CiBsb2ZmX3QgZmxfc3RhcnQ7CiBs b2ZmX3QgZmxfZW5kOwoKIHN0cnVjdCBmYXN5bmNfc3RydWN0ICogZmxfZmFzeW5jOwoKIHVuc2ln bmVkIGxvbmcgZmxfYnJlYWtfdGltZTsKIHVuc2lnbmVkIGxvbmcgZmxfZG93bmdyYWRlX3RpbWU7 CgogY29uc3Qgc3RydWN0IGZpbGVfbG9ja19vcGVyYXRpb25zICpmbF9vcHM7CiBjb25zdCBzdHJ1 Y3QgbG9ja19tYW5hZ2VyX29wZXJhdGlvbnMgKmZsX2xtb3BzOwogdW5pb24gewogIHN0cnVjdCBu ZnNfbG9ja19pbmZvIG5mc19mbDsKICBzdHJ1Y3QgbmZzNF9sb2NrX2luZm8gbmZzNF9mbDsKICBz dHJ1Y3QgewogICBzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7CiAgIGludCBzdGF0ZTsKICAgdW5zaWdu ZWQgaW50IGRlYnVnX2lkOwogIH0gYWZzOwogfSBmbF91Owp9IF9fYXR0cmlidXRlX18oKF9fZGVz aWduYXRlZF9pbml0X18pKTsKCnN0cnVjdCBmaWxlX2xvY2tfY29udGV4dCB7CiBzcGlubG9ja190 IGZsY19sb2NrOwogc3RydWN0IGxpc3RfaGVhZCBmbGNfZmxvY2s7CiBzdHJ1Y3QgbGlzdF9oZWFk IGZsY19wb3NpeDsKIHN0cnVjdCBsaXN0X2hlYWQgZmxjX2xlYXNlOwp9OwojIDExMzIgIi4vaW5j bHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBzZW5kX3NpZ2lvKHN0cnVjdCBmb3duX3N0cnVj dCAqZm93biwgaW50IGZkLCBpbnQgYmFuZCk7CgoKCgpleHRlcm4gaW50IGZjbnRsX2dldGxrKHN0 cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgc3RydWN0IGZsb2NrICopOwpleHRlcm4gaW50IGZj bnRsX3NldGxrKHVuc2lnbmVkIGludCwgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LAogICBz dHJ1Y3QgZmxvY2sgKik7CgoKCgoKCgpleHRlcm4gaW50IGZjbnRsX3NldGxlYXNlKHVuc2lnbmVk IGludCBmZCwgc3RydWN0IGZpbGUgKmZpbHAsIGxvbmcgYXJnKTsKZXh0ZXJuIGludCBmY250bF9n ZXRsZWFzZShzdHJ1Y3QgZmlsZSAqZmlscCk7CgoKdm9pZCBsb2Nrc19mcmVlX2xvY2tfY29udGV4 dChzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKdm9pZCBsb2Nrc19mcmVlX2xvY2soc3RydWN0IGZpbGVf bG9jayAqZmwpOwpleHRlcm4gdm9pZCBsb2Nrc19pbml0X2xvY2soc3RydWN0IGZpbGVfbG9jayAq KTsKZXh0ZXJuIHN0cnVjdCBmaWxlX2xvY2sgKiBsb2Nrc19hbGxvY19sb2NrKHZvaWQpOwpleHRl cm4gdm9pZCBsb2Nrc19jb3B5X2xvY2soc3RydWN0IGZpbGVfbG9jayAqLCBzdHJ1Y3QgZmlsZV9s b2NrICopOwpleHRlcm4gdm9pZCBsb2Nrc19jb3B5X2NvbmZsb2NrKHN0cnVjdCBmaWxlX2xvY2sg Kiwgc3RydWN0IGZpbGVfbG9jayAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVtb3ZlX3Bvc2l4KHN0 cnVjdCBmaWxlICosIGZsX293bmVyX3QpOwpleHRlcm4gdm9pZCBsb2Nrc19yZW1vdmVfZmlsZShz dHJ1Y3QgZmlsZSAqKTsKZXh0ZXJuIHZvaWQgbG9ja3NfcmVsZWFzZV9wcml2YXRlKHN0cnVjdCBm aWxlX2xvY2sgKik7CmV4dGVybiB2b2lkIHBvc2l4X3Rlc3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBz dHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHBvc2l4X2xvY2tfZmlsZShzdHJ1Y3QgZmls ZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQg bG9ja3NfZGVsZXRlX2Jsb2NrKHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgdmZzX3Rl c3RfbG9jayhzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgZmlsZV9sb2NrICopOwpleHRlcm4gaW50IHZm c19sb2NrX2ZpbGUoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgaW50LCBzdHJ1Y3QgZmlsZV9sb2Nr ICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CmV4dGVybiBpbnQgdmZzX2NhbmNlbF9sb2NrKHN0cnVj dCBmaWxlICpmaWxwLCBzdHJ1Y3QgZmlsZV9sb2NrICpmbCk7CmV4dGVybiBpbnQgbG9ja3NfbG9j a19pbm9kZV93YWl0KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlX2xvY2sgKmZsKTsK ZXh0ZXJuIGludCBfX2JyZWFrX2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGlu dCBmbGFncywgdW5zaWduZWQgaW50IHR5cGUpOwpleHRlcm4gdm9pZCBsZWFzZV9nZXRfbXRpbWUo c3RydWN0IGlub2RlICosIHN0cnVjdCB0aW1lc3BlYzY0ICp0aW1lKTsKZXh0ZXJuIGludCBnZW5l cmljX3NldGxlYXNlKHN0cnVjdCBmaWxlICosIGxvbmcsIHN0cnVjdCBmaWxlX2xvY2sgKiosIHZv aWQgKipwcml2KTsKZXh0ZXJuIGludCB2ZnNfc2V0bGVhc2Uoc3RydWN0IGZpbGUgKiwgbG9uZywg c3RydWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CmV4dGVybiBpbnQgbGVhc2VfbW9kaWZ5KHN0 cnVjdCBmaWxlX2xvY2sgKiwgaW50LCBzdHJ1Y3QgbGlzdF9oZWFkICopOwoKc3RydWN0IG5vdGlm aWVyX2Jsb2NrOwpleHRlcm4gaW50IGxlYXNlX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3Rp Zmllcl9ibG9jayAqKTsKZXh0ZXJuIHZvaWQgbGVhc2VfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2sgKik7CgpzdHJ1Y3QgZmlsZXNfc3RydWN0OwpleHRlcm4gdm9pZCBz aG93X2ZkX2xvY2tzKHN0cnVjdCBzZXFfZmlsZSAqZiwKICAgIHN0cnVjdCBmaWxlICpmaWxwLCBz dHJ1Y3QgZmlsZXNfc3RydWN0ICpmaWxlcyk7CiMgMTMxNyAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHN0cnVjdCBpbm9kZSAqZmlsZV9pbm9kZShjb25zdCBzdHJ1Y3QgZmlsZSAqZikKewogcmV0dXJu IGYtPmZfaW5vZGU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZW50cnkgKmZpbGVfZGVudHJ5KGNvbnN0IHN0cnVjdCBm aWxlICpmaWxlKQp7CiByZXR1cm4gZF9yZWFsKGZpbGUtPmZfcGF0aC5kZW50cnksIGZpbGVfaW5v ZGUoZmlsZSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgbG9ja3NfbG9ja19maWxlX3dhaXQoc3RydWN0IGZpbGUgKmZpbHAs IHN0cnVjdCBmaWxlX2xvY2sgKmZsKQp7CiByZXR1cm4gbG9ja3NfbG9ja19pbm9kZV93YWl0KGZp bGVfaW5vZGUoZmlscCksIGZsKTsKfQoKc3RydWN0IGZhc3luY19zdHJ1Y3Qgewogcndsb2NrX3Qg ZmFfbG9jazsKIGludCBtYWdpYzsKIGludCBmYV9mZDsKIHN0cnVjdCBmYXN5bmNfc3RydWN0ICpm YV9uZXh0Owogc3RydWN0IGZpbGUgKmZhX2ZpbGU7CiBzdHJ1Y3QgY2FsbGJhY2tfaGVhZCBmYV9y Y3U7Cn07CgoKCgpleHRlcm4gaW50IGZhc3luY19oZWxwZXIoaW50LCBzdHJ1Y3QgZmlsZSAqLCBp bnQsIHN0cnVjdCBmYXN5bmNfc3RydWN0ICoqKTsKZXh0ZXJuIHN0cnVjdCBmYXN5bmNfc3RydWN0 ICpmYXN5bmNfaW5zZXJ0X2VudHJ5KGludCwgc3RydWN0IGZpbGUgKiwgc3RydWN0IGZhc3luY19z dHJ1Y3QgKiosIHN0cnVjdCBmYXN5bmNfc3RydWN0ICopOwpleHRlcm4gaW50IGZhc3luY19yZW1v dmVfZW50cnkoc3RydWN0IGZpbGUgKiwgc3RydWN0IGZhc3luY19zdHJ1Y3QgKiopOwpleHRlcm4g c3RydWN0IGZhc3luY19zdHJ1Y3QgKmZhc3luY19hbGxvYyh2b2lkKTsKZXh0ZXJuIHZvaWQgZmFz eW5jX2ZyZWUoc3RydWN0IGZhc3luY19zdHJ1Y3QgKik7CgoKZXh0ZXJuIHZvaWQga2lsbF9mYXN5 bmMoc3RydWN0IGZhc3luY19zdHJ1Y3QgKiosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIF9fZl9z ZXRvd24oc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBwaWQgKiwgZW51bSBwaWRfdHlwZSwgaW50 IGZvcmNlKTsKZXh0ZXJuIGludCBmX3NldG93bihzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQg bG9uZyBhcmcsIGludCBmb3JjZSk7CmV4dGVybiB2b2lkIGZfZGVsb3duKHN0cnVjdCBmaWxlICpm aWxwKTsKZXh0ZXJuIHBpZF90IGZfZ2V0b3duKHN0cnVjdCBmaWxlICpmaWxwKTsKZXh0ZXJuIGlu dCBzZW5kX3NpZ3VyZyhzdHJ1Y3QgZm93bl9zdHJ1Y3QgKmZvd24pOwojIDE0MDggIi4vaW5jbHVk ZS9saW51eC9mcy5oIgplbnVtIHsKIFNCX1VORlJPWkVOID0gMCwKIFNCX0ZSRUVaRV9XUklURSA9 IDEsCiBTQl9GUkVFWkVfUEFHRUZBVUxUID0gMiwKIFNCX0ZSRUVaRV9GUyA9IDMsCgogU0JfRlJF RVpFX0NPTVBMRVRFID0gNCwKfTsKCgoKc3RydWN0IHNiX3dyaXRlcnMgewogaW50IGZyb3plbjsK IHdhaXRfcXVldWVfaGVhZF90IHdhaXRfdW5mcm96ZW47CiBzdHJ1Y3QgcGVyY3B1X3J3X3NlbWFw aG9yZSByd19zZW1bKFNCX0ZSRUVaRV9DT01QTEVURSAtIDEpXTsKfTsKCnN0cnVjdCBzdXBlcl9i bG9jayB7CiBzdHJ1Y3QgbGlzdF9oZWFkIHNfbGlzdDsKIGRldl90IHNfZGV2OwogdW5zaWduZWQg Y2hhciBzX2Jsb2Nrc2l6ZV9iaXRzOwogdW5zaWduZWQgbG9uZyBzX2Jsb2Nrc2l6ZTsKIGxvZmZf dCBzX21heGJ5dGVzOwogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKnNfdHlwZTsKIGNvbnN0IHN0 cnVjdCBzdXBlcl9vcGVyYXRpb25zICpzX29wOwogY29uc3Qgc3RydWN0IGRxdW90X29wZXJhdGlv bnMgKmRxX29wOwogY29uc3Qgc3RydWN0IHF1b3RhY3RsX29wcyAqc19xY29wOwogY29uc3Qgc3Ry dWN0IGV4cG9ydF9vcGVyYXRpb25zICpzX2V4cG9ydF9vcDsKIHVuc2lnbmVkIGxvbmcgc19mbGFn czsKIHVuc2lnbmVkIGxvbmcgc19pZmxhZ3M7CiB1bnNpZ25lZCBsb25nIHNfbWFnaWM7CiBzdHJ1 Y3QgZGVudHJ5ICpzX3Jvb3Q7CiBzdHJ1Y3Qgcndfc2VtYXBob3JlIHNfdW1vdW50OwogaW50IHNf Y291bnQ7CiBhdG9taWNfdCBzX2FjdGl2ZTsKCiB2b2lkICpzX3NlY3VyaXR5OwoKIGNvbnN0IHN0 cnVjdCB4YXR0cl9oYW5kbGVyICoqc194YXR0cjsKCgoKCgoKCiBzdHJ1Y3QgaGxpc3RfYmxfaGVh ZCBzX3Jvb3RzOwogc3RydWN0IGxpc3RfaGVhZCBzX21vdW50czsKIHN0cnVjdCBibG9ja19kZXZp Y2UgKnNfYmRldjsKIHN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpzX2JkaTsKIHN0cnVjdCBtdGRf aW5mbyAqc19tdGQ7CiBzdHJ1Y3QgaGxpc3Rfbm9kZSBzX2luc3RhbmNlczsKIHVuc2lnbmVkIGlu dCBzX3F1b3RhX3R5cGVzOwogc3RydWN0IHF1b3RhX2luZm8gc19kcXVvdDsKCiBzdHJ1Y3Qgc2Jf d3JpdGVycyBzX3dyaXRlcnM7CgoKCgoKCiB2b2lkICpzX2ZzX2luZm87CgoKIHUzMiBzX3RpbWVf Z3JhbjsKCiB0aW1lNjRfdCBzX3RpbWVfbWluOwogdGltZTY0X3Qgc190aW1lX21heDsKCiBfX3Uz MiBzX2Zzbm90aWZ5X21hc2s7CiBzdHJ1Y3QgZnNub3RpZnlfbWFya19jb25uZWN0b3IgKnNfZnNu b3RpZnlfbWFya3M7CgoKIGNoYXIgc19pZFszMl07CiB1dWlkX3Qgc191dWlkOwoKIHVuc2lnbmVk IGludCBzX21heF9saW5rczsKIGZtb2RlX3Qgc19tb2RlOwoKCgoKCiBzdHJ1Y3QgbXV0ZXggc192 ZnNfcmVuYW1lX211dGV4OwoKCgoKCiBjb25zdCBjaGFyICpzX3N1YnR5cGU7CgogY29uc3Qgc3Ry dWN0IGRlbnRyeV9vcGVyYXRpb25zICpzX2Rfb3A7CgoKCgogaW50IGNsZWFuY2FjaGVfcG9vbGlk OwoKIHN0cnVjdCBzaHJpbmtlciBzX3NocmluazsKCgogYXRvbWljX2xvbmdfdCBzX3JlbW92ZV9j b3VudDsKCgogYXRvbWljX2xvbmdfdCBzX2Zzbm90aWZ5X2lub2RlX3JlZnM7CgoKIGludCBzX3Jl YWRvbmx5X3JlbW91bnQ7CgoKIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpzX2Rpb19kb25lX3dx Owogc3RydWN0IGhsaXN0X2hlYWQgc19waW5zOwoKCgoKCgogc3RydWN0IHVzZXJfbmFtZXNwYWNl ICpzX3VzZXJfbnM7CgoKCgoKCiBzdHJ1Y3QgbGlzdF9scnUgc19kZW50cnlfbHJ1Owogc3RydWN0 IGxpc3RfbHJ1IHNfaW5vZGVfbHJ1Owogc3RydWN0IGNhbGxiYWNrX2hlYWQgcmN1Owogc3RydWN0 IHdvcmtfc3RydWN0IGRlc3Ryb3lfd29yazsKCiBzdHJ1Y3QgbXV0ZXggc19zeW5jX2xvY2s7CgoK CgogaW50IHNfc3RhY2tfZGVwdGg7CgoKIHNwaW5sb2NrX3Qgc19pbm9kZV9saXN0X2xvY2sgX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYpKSkpKTsKIHN0cnVjdCBsaXN0X2hlYWQg c19pbm9kZXM7Cgogc3BpbmxvY2tfdCBzX2lub2RlX3dibGlzdF9sb2NrOwogc3RydWN0IGxpc3Rf aGVhZCBzX2lub2Rlc193YjsKfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7 CgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVpZF90IGlfdWlkX3JlYWQoY29uc3Qgc3RydWN0IGlub2RlICppbm9kZSkKewogcmV0 dXJuIGZyb21fa3VpZChpbm9kZS0+aV9zYi0+c191c2VyX25zLCBpbm9kZS0+aV91aWQpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBn aWRfdCBpX2dpZF9yZWFkKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIHJldHVybiBmcm9t X2tnaWQoaW5vZGUtPmlfc2ItPnNfdXNlcl9ucywgaW5vZGUtPmlfZ2lkKTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpX3Vp ZF93cml0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1aWRfdCB1aWQpCnsKIGlub2RlLT5pX3VpZCA9 IG1ha2Vfa3VpZChpbm9kZS0+aV9zYi0+c191c2VyX25zLCB1aWQpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlfZ2lkX3dy aXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGdpZF90IGdpZCkKewogaW5vZGUtPmlfZ2lkID0gbWFr ZV9rZ2lkKGlub2RlLT5pX3NiLT5zX3VzZXJfbnMsIGdpZCk7Cn0KCmV4dGVybiBzdHJ1Y3QgdGlt ZXNwZWM2NCBjdXJyZW50X3RpbWUoc3RydWN0IGlub2RlICppbm9kZSk7CgoKCgoKdm9pZCBfX3Ni X2VuZF93cml0ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgbGV2ZWwpOwppbnQgX19zYl9z dGFydF93cml0ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgbGV2ZWwsIGJvb2wgd2FpdCk7 CiMgMTYwMCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2JfZW5kX3dyaXRlKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IpCnsKIF9fc2JfZW5kX3dyaXRlKHNiLCBTQl9GUkVFWkVfV1JJVEUpOwp9 CiMgMTYxMiAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2JfZW5kX3BhZ2VmYXVsdChzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiBfX3NiX2VuZF93cml0ZShzYiwgU0JfRlJFRVpFX1BBR0VG QVVMVCk7Cn0KIyAxNjI0ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzYl9lbmRfaW50d3Jp dGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKewogX19zYl9lbmRfd3JpdGUoc2IsIFNCX0ZSRUVa RV9GUyk7Cn0KIyAxNjQ4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzYl9zdGFydF93cml0 ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiBfX3NiX3N0YXJ0X3dyaXRlKHNiLCBTQl9GUkVF WkVfV1JJVEUsIHRydWUpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc2Jfc3RhcnRfd3JpdGVfdHJ5bG9jayhzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiKQp7CiByZXR1cm4gX19zYl9zdGFydF93cml0ZShzYiwgU0JfRlJFRVpFX1dS SVRFLCBmYWxzZSk7Cn0KIyAxNjc3ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzYl9zdGFy dF9wYWdlZmF1bHQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKewogX19zYl9zdGFydF93cml0ZShz YiwgU0JfRlJFRVpFX1BBR0VGQVVMVCwgdHJ1ZSk7Cn0KIyAxNjk1ICIuL2luY2x1ZGUvbGludXgv ZnMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBzYl9zdGFydF9pbnR3cml0ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiBf X3NiX3N0YXJ0X3dyaXRlKHNiLCBTQl9GUkVFWkVfRlMsIHRydWUpOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgc2Jfc3RhcnRf aW50d3JpdGVfdHJ5bG9jayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQp7CiByZXR1cm4gX19zYl9z dGFydF93cml0ZShzYiwgU0JfRlJFRVpFX0ZTLCBmYWxzZSk7Cn0KCgpleHRlcm4gYm9vbCBpbm9k ZV9vd25lcl9vcl9jYXBhYmxlKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5vZGUpOwoKCgoKZXh0ZXJu IGludCB2ZnNfY3JlYXRlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVtb2RlX3Qs IGJvb2wpOwpleHRlcm4gaW50IHZmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy eSAqLCB1bW9kZV90KTsKZXh0ZXJuIGludCB2ZnNfbWtub2Qoc3RydWN0IGlub2RlICosIHN0cnVj dCBkZW50cnkgKiwgdW1vZGVfdCwgZGV2X3QpOwpleHRlcm4gaW50IHZmc19zeW1saW5rKHN0cnVj dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmZz X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBz dHJ1Y3QgaW5vZGUgKiopOwpleHRlcm4gaW50IHZmc19ybWRpcihzdHJ1Y3QgaW5vZGUgKiwgc3Ry dWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCB2ZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqLCBzdHJ1 Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKik7CmV4dGVybiBpbnQgdmZzX3JlbmFtZShzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy eSAqLCBzdHJ1Y3QgaW5vZGUgKiosIHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgdmZzX3doaXRl b3V0KHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwoKZXh0ZXJuIHN0cnVjdCBkZW50 cnkgKnZmc190bXBmaWxlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlLAogICAg ICBpbnQgb3Blbl9mbGFnKTsKCmludCB2ZnNfbWtvYmooc3RydWN0IGRlbnRyeSAqLCB1bW9kZV90 LAogIGludCAoKmYpKHN0cnVjdCBkZW50cnkgKiwgdW1vZGVfdCwgdm9pZCAqKSwKICB2b2lkICop OwoKZXh0ZXJuIGxvbmcgdmZzX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQg Y21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CiMgMTc0MCAiLi9pbmNsdWRlL2xpbnV4L2ZzLmgiCmV4 dGVybiB2b2lkIGlub2RlX2luaXRfb3duZXIoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3Ry dWN0IGlub2RlICpkaXIsCiAgIHVtb2RlX3QgbW9kZSk7CmV4dGVybiBib29sIG1heV9vcGVuX2Rl dihjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCk7CgoKCnN0cnVjdCBmaWVtYXBfZXh0ZW50X2luZm8g ewogdW5zaWduZWQgaW50IGZpX2ZsYWdzOwogdW5zaWduZWQgaW50IGZpX2V4dGVudHNfbWFwcGVk OwogdW5zaWduZWQgaW50IGZpX2V4dGVudHNfbWF4Owogc3RydWN0IGZpZW1hcF9leHRlbnQgKmZp X2V4dGVudHNfc3RhcnQ7Cgp9OwppbnQgZmllbWFwX2ZpbGxfbmV4dF9leHRlbnQoc3RydWN0IGZp ZW1hcF9leHRlbnRfaW5mbyAqaW5mbywgdTY0IGxvZ2ljYWwsCiAgICAgICB1NjQgcGh5cywgdTY0 IGxlbiwgdTMyIGZsYWdzKTsKaW50IGZpZW1hcF9jaGVja19mbGFncyhzdHJ1Y3QgZmllbWFwX2V4 dGVudF9pbmZvICpmaWVpbmZvLCB1MzIgZnNfZmxhZ3MpOwoKCgoKCgoKc3RydWN0IGRpcl9jb250 ZXh0Owp0eXBlZGVmIGludCAoKmZpbGxkaXJfdCkoc3RydWN0IGRpcl9jb250ZXh0ICosIGNvbnN0 IGNoYXIgKiwgaW50LCBsb2ZmX3QsIHU2NCwKICAgIHVuc2lnbmVkKTsKCnN0cnVjdCBkaXJfY29u dGV4dCB7CiBmaWxsZGlyX3QgYWN0b3I7CiBsb2ZmX3QgcG9zOwp9OwoKc3RydWN0IGJsb2NrX2Rl dmljZV9vcGVyYXRpb25zOwojIDE4MTkgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgaW92 X2l0ZXI7CgpzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKIHN0cnVjdCBtb2R1bGUgKm93bmVyOwog bG9mZl90ICgqbGxzZWVrKSAoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwogc3NpemVfdCAo KnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyICosIHNpemVfdCwgbG9mZl90ICopOwogc3NpemVf dCAoKndyaXRlKSAoc3RydWN0IGZpbGUgKiwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAq KTsKIHNzaXplX3QgKCpyZWFkX2l0ZXIpIChzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9pdGVy ICopOwogc3NpemVfdCAoKndyaXRlX2l0ZXIpIChzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9p dGVyICopOwogaW50ICgqaW9wb2xsKShzdHJ1Y3Qga2lvY2IgKmtpb2NiLCBib29sIHNwaW4pOwog aW50ICgqaXRlcmF0ZSkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKIGlu dCAoKml0ZXJhdGVfc2hhcmVkKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IGRpcl9jb250ZXh0ICop OwogX19wb2xsX3QgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3Ry dWN0ICopOwogbG9uZyAoKnVubG9ja2VkX2lvY3RsKSAoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQg aW50LCB1bnNpZ25lZCBsb25nKTsKIGxvbmcgKCpjb21wYXRfaW9jdGwpIChzdHJ1Y3QgZmlsZSAq LCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcpOwogaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxl ICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKIHVuc2lnbmVkIGxvbmcgbW1hcF9zdXBwb3J0 ZWRfZmxhZ3M7CiBpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwog aW50ICgqZmx1c2gpIChzdHJ1Y3QgZmlsZSAqLCBmbF9vd25lcl90IGlkKTsKIGludCAoKnJlbGVh c2UpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CiBpbnQgKCpmc3luYykgKHN0cnVj dCBmaWxlICosIGxvZmZfdCwgbG9mZl90LCBpbnQgZGF0YXN5bmMpOwogaW50ICgqZmFzeW5jKSAo aW50LCBzdHJ1Y3QgZmlsZSAqLCBpbnQpOwogaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGlu dCwgc3RydWN0IGZpbGVfbG9jayAqKTsKIHNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKIHVuc2lnbmVk IGxvbmcgKCpnZXRfdW5tYXBwZWRfYXJlYSkoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywg dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CiBpbnQgKCpjaGVj a19mbGFncykoaW50KTsKIGludCAoKmZsb2NrKSAoc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3Qg ZmlsZV9sb2NrICopOwogc3NpemVfdCAoKnNwbGljZV93cml0ZSkoc3RydWN0IHBpcGVfaW5vZGVf aW5mbyAqLCBzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgc2l6ZV90LCB1bnNpZ25lZCBpbnQpOwog c3NpemVfdCAoKnNwbGljZV9yZWFkKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgKiwgc3RydWN0IHBp cGVfaW5vZGVfaW5mbyAqLCBzaXplX3QsIHVuc2lnbmVkIGludCk7CiBpbnQgKCpzZXRsZWFzZSko c3RydWN0IGZpbGUgKiwgbG9uZywgc3RydWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CiBsb25n ICgqZmFsbG9jYXRlKShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsIGxvZmZfdCBvZmZzZXQs CiAgICAgbG9mZl90IGxlbik7CiB2b2lkICgqc2hvd19mZGluZm8pKHN0cnVjdCBzZXFfZmlsZSAq bSwgc3RydWN0IGZpbGUgKmYpOwoKCgogc3NpemVfdCAoKmNvcHlfZmlsZV9yYW5nZSkoc3RydWN0 IGZpbGUgKiwgbG9mZl90LCBzdHJ1Y3QgZmlsZSAqLAogICBsb2ZmX3QsIHNpemVfdCwgdW5zaWdu ZWQgaW50KTsKIGxvZmZfdCAoKnJlbWFwX2ZpbGVfcmFuZ2UpKHN0cnVjdCBmaWxlICpmaWxlX2lu LCBsb2ZmX3QgcG9zX2luLAogICAgICAgc3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9z X291dCwKICAgICAgIGxvZmZfdCBsZW4sIHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7CiBpbnQg KCpmYWR2aXNlKShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwgaW50KTsKfSBfX2F0dHJp YnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB7 CiBzdHJ1Y3QgZGVudHJ5ICogKCpsb29rdXApIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5 ICosIHVuc2lnbmVkIGludCk7CiBjb25zdCBjaGFyICogKCpnZXRfbGluaykgKHN0cnVjdCBkZW50 cnkgKiwgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZWxheWVkX2NhbGwgKik7CiBpbnQgKCpwZXJt aXNzaW9uKSAoc3RydWN0IGlub2RlICosIGludCk7CiBzdHJ1Y3QgcG9zaXhfYWNsICogKCpnZXRf YWNsKShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKCiBpbnQgKCpyZWFkbGluaykgKHN0cnVjdCBkZW50 cnkgKiwgY2hhciAqLGludCk7CgogaW50ICgqY3JlYXRlKSAoc3RydWN0IGlub2RlICosc3RydWN0 IGRlbnRyeSAqLCB1bW9kZV90LCBib29sKTsKIGludCAoKmxpbmspIChzdHJ1Y3QgZGVudHJ5ICos c3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKIGludCAoKnVubGluaykgKHN0cnVjdCBp bm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CiBpbnQgKCpzeW1saW5rKSAoc3RydWN0IGlub2RlICos c3RydWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIgKik7CiBpbnQgKCpta2RpcikgKHN0cnVjdCBpbm9k ZSAqLHN0cnVjdCBkZW50cnkgKix1bW9kZV90KTsKIGludCAoKnJtZGlyKSAoc3RydWN0IGlub2Rl ICosc3RydWN0IGRlbnRyeSAqKTsKIGludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0 IGRlbnRyeSAqLHVtb2RlX3QsZGV2X3QpOwogaW50ICgqcmVuYW1lKSAoc3RydWN0IGlub2RlICos IHN0cnVjdCBkZW50cnkgKiwKICAgc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgdW5z aWduZWQgaW50KTsKIGludCAoKnNldGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0 ciAqKTsKIGludCAoKmdldGF0dHIpIChjb25zdCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXQg KiwgdTMyLCB1bnNpZ25lZCBpbnQpOwogc3NpemVfdCAoKmxpc3R4YXR0cikgKHN0cnVjdCBkZW50 cnkgKiwgY2hhciAqLCBzaXplX3QpOwogaW50ICgqZmllbWFwKShzdHJ1Y3QgaW5vZGUgKiwgc3Ry dWN0IGZpZW1hcF9leHRlbnRfaW5mbyAqLCB1NjQgc3RhcnQsCiAgICAgICAgdTY0IGxlbik7CiBp bnQgKCp1cGRhdGVfdGltZSkoc3RydWN0IGlub2RlICosIHN0cnVjdCB0aW1lc3BlYzY0ICosIGlu dCk7CiBpbnQgKCphdG9taWNfb3Blbikoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwK ICAgICAgc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgb3Blbl9mbGFnLAogICAgICB1bW9kZV90IGNy ZWF0ZV9tb2RlKTsKIGludCAoKnRtcGZpbGUpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRy eSAqLCB1bW9kZV90KTsKIGludCAoKnNldF9hY2wpKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgcG9z aXhfYWNsICosIGludCk7Cn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oKDEgPDwgKDYpKSkp KTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHNzaXplX3QgY2FsbF9yZWFkX2l0ZXIoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBraW9j YiAqa2lvLAogICAgICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpCnsKIHJldHVybiBmaWxlLT5m X29wLT5yZWFkX2l0ZXIoa2lvLCBpdGVyKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3NpemVfdCBjYWxsX3dyaXRlX2l0ZXIoc3Ry dWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBraW9jYiAqa2lvLAogICAgICAgICAgc3RydWN0IGlvdl9p dGVyICppdGVyKQp7CiByZXR1cm4gZmlsZS0+Zl9vcC0+d3JpdGVfaXRlcihraW8sIGl0ZXIpOwp9 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgY2FsbF9tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKewogcmV0dXJuIGZpbGUtPmZfb3AtPm1tYXAoZmlsZSwgdm1hKTsKfQoKc3NpemVfdCBy d19jb3B5X2NoZWNrX3V2ZWN0b3IoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBpb3ZlYyAqIHV2ZWN0 b3IsCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfc2VncywgdW5zaWduZWQgbG9uZyBmYXN0X3Nl Z3MsCiAgICAgICAgIHN0cnVjdCBpb3ZlYyAqZmFzdF9wb2ludGVyLAogICAgICAgICBzdHJ1Y3Qg aW92ZWMgKipyZXRfcG9pbnRlcik7CgpleHRlcm4gc3NpemVfdCBfX3Zmc19yZWFkKHN0cnVjdCBm aWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90IHZmc19yZWFk KHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QgKik7CmV4dGVybiBzc2l6ZV90 IHZmc193cml0ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCwgbG9mZl90ICop OwpleHRlcm4gc3NpemVfdCB2ZnNfcmVhZHYoc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlv dmVjICosCiAgdW5zaWduZWQgbG9uZywgbG9mZl90ICosIHJ3Zl90KTsKZXh0ZXJuIHNzaXplX3Qg dmZzX2NvcHlfZmlsZV9yYW5nZShzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QgLCBzdHJ1Y3QgZmlsZSAq LAogICAgICAgbG9mZl90LCBzaXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzc2l6ZV90IGdl bmVyaWNfY29weV9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlX2luLCBsb2ZmX3QgcG9zX2lu LAogICAgICAgICAgIHN0cnVjdCBmaWxlICpmaWxlX291dCwgbG9mZl90IHBvc19vdXQsCiAgICAg ICAgICAgc2l6ZV90IGxlbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKZXh0ZXJuIGludCBnZW5lcmlj X3JlbWFwX2ZpbGVfcmFuZ2VfcHJlcChzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9mZl90IHBvc19p biwKICAgICAgc3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCwKICAgICAgbG9m Zl90ICpjb3VudCwKICAgICAgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdzKTsKZXh0ZXJuIGxvZmZf dCBkb19jbG9uZV9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlX2luLCBsb2ZmX3QgcG9zX2lu LAogICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAogICAgICBsb2Zm X3QgbGVuLCB1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpOwpleHRlcm4gbG9mZl90IHZmc19jbG9u ZV9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlX2luLCBsb2ZmX3QgcG9zX2luLAogICAgICAg c3RydWN0IGZpbGUgKmZpbGVfb3V0LCBsb2ZmX3QgcG9zX291dCwKICAgICAgIGxvZmZfdCBsZW4s IHVuc2lnbmVkIGludCByZW1hcF9mbGFncyk7CmV4dGVybiBpbnQgdmZzX2RlZHVwZV9maWxlX3Jh bmdlKHN0cnVjdCBmaWxlICpmaWxlLAogICAgIHN0cnVjdCBmaWxlX2RlZHVwZV9yYW5nZSAqc2Ft ZSk7CmV4dGVybiBsb2ZmX3QgdmZzX2RlZHVwZV9maWxlX3JhbmdlX29uZShzdHJ1Y3QgZmlsZSAq c3JjX2ZpbGUsIGxvZmZfdCBzcmNfcG9zLAogICAgIHN0cnVjdCBmaWxlICpkc3RfZmlsZSwgbG9m Zl90IGRzdF9wb3MsCiAgICAgbG9mZl90IGxlbiwgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdzKTsK CgpzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyB7CiAgICBzdHJ1Y3QgaW5vZGUgKigqYWxsb2NfaW5v ZGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwogdm9pZCAoKmRlc3Ryb3lfaW5vZGUpKHN0cnVj dCBpbm9kZSAqKTsKIHZvaWQgKCpmcmVlX2lub2RlKShzdHJ1Y3QgaW5vZGUgKik7CgogICAgdm9p ZCAoKmRpcnR5X2lub2RlKSAoc3RydWN0IGlub2RlICosIGludCBmbGFncyk7CiBpbnQgKCp3cml0 ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyk7 CiBpbnQgKCpkcm9wX2lub2RlKSAoc3RydWN0IGlub2RlICopOwogdm9pZCAoKmV2aWN0X2lub2Rl KSAoc3RydWN0IGlub2RlICopOwogdm9pZCAoKnB1dF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9j ayAqKTsKIGludCAoKnN5bmNfZnMpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KTsK IGludCAoKmZyZWV6ZV9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIGludCAoKmZyZWV6 ZV9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIGludCAoKnRoYXdfc3VwZXIpIChzdHJ1Y3Qg c3VwZXJfYmxvY2sgKik7CiBpbnQgKCp1bmZyZWV6ZV9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAq KTsKIGludCAoKnN0YXRmcykgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGtzdGF0ZnMgKik7CiBp bnQgKCpyZW1vdW50X2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCAqLCBjaGFyICopOwog dm9pZCAoKnVtb3VudF9iZWdpbikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKCiBpbnQgKCpzaG93 X29wdGlvbnMpKHN0cnVjdCBzZXFfZmlsZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwogaW50ICgqc2hv d19kZXZuYW1lKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKIGludCAoKnNo b3dfcGF0aCkoc3RydWN0IHNlcV9maWxlICosIHN0cnVjdCBkZW50cnkgKik7CiBpbnQgKCpzaG93 X3N0YXRzKShzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKCiBzc2l6ZV90ICgq cXVvdGFfcmVhZCkoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCwgY2hhciAqLCBzaXplX3QsIGxv ZmZfdCk7CiBzc2l6ZV90ICgqcXVvdGFfd3JpdGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQs IGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QpOwogc3RydWN0IGRxdW90ICoqKCpnZXRfZHF1 b3RzKShzdHJ1Y3QgaW5vZGUgKik7CgogaW50ICgqYmRldl90cnlfdG9fZnJlZV9wYWdlKShzdHJ1 Y3Qgc3VwZXJfYmxvY2sqLCBzdHJ1Y3QgcGFnZSosIGdmcF90KTsKIGxvbmcgKCpucl9jYWNoZWRf b2JqZWN0cykoc3RydWN0IHN1cGVyX2Jsb2NrICosCiAgICAgIHN0cnVjdCBzaHJpbmtfY29udHJv bCAqKTsKIGxvbmcgKCpmcmVlX2NhY2hlZF9vYmplY3RzKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwK ICAgICAgICBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKik7Cn07CiMgMjAxNyAiLi9pbmNsdWRlL2xp bnV4L2ZzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGJvb2wgc2JfcmRvbmx5KGNvbnN0IHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpIHsg cmV0dXJuIHNiLT5zX2ZsYWdzICYgMTsgfQojIDIwNDcgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIEhBU19VTk1BUFBFRF9JRChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiByZXR1cm4gIXVpZF92 YWxpZChpbm9kZS0+aV91aWQpIHx8ICFnaWRfdmFsaWQoaW5vZGUtPmlfZ2lkKTsKfQoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgZW51bSBy d19oaW50IGZpbGVfd3JpdGVfaGludChzdHJ1Y3QgZmlsZSAqZmlsZSkKewogaWYgKGZpbGUtPmZf d3JpdGVfaGludCAhPSBXUklURV9MSUZFX05PVF9TRVQpCiAgcmV0dXJuIGZpbGUtPmZfd3JpdGVf aGludDsKCiByZXR1cm4gZmlsZV9pbm9kZShmaWxlKS0+aV93cml0ZV9oaW50Owp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaW9j Yl9mbGFncyhzdHJ1Y3QgZmlsZSAqZmlsZSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1MTYga2lfaGludF92YWxpZGF0ZShlbnVtIHJ3 X2hpbnQgaGludCkKewogdHlwZW9mKCgoc3RydWN0IGtpb2NiICopMCktPmtpX2hpbnQpIG1heF9o aW50ID0gLTE7CgogaWYgKGhpbnQgPD0gbWF4X2hpbnQpCiAgcmV0dXJuIGhpbnQ7CiByZXR1cm4g MDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdm9pZCBpbml0X3N5bmNfa2lvY2Ioc3RydWN0IGtpb2NiICpraW9jYiwgc3RydWN0IGZp bGUgKmZpbHApCnsKICpraW9jYiA9IChzdHJ1Y3Qga2lvY2IpIHsKICAua2lfZmlscCA9IGZpbHAs CiAgLmtpX2ZsYWdzID0gaW9jYl9mbGFncyhmaWxwKSwKICAua2lfaGludCA9IGtpX2hpbnRfdmFs aWRhdGUoZmlsZV93cml0ZV9oaW50KGZpbHApKSwKICAua2lfaW9wcmlvID0gZ2V0X2N1cnJlbnRf aW9wcmlvKCksCiB9Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtpb2NiX2Nsb25lKHN0cnVjdCBraW9jYiAqa2lvY2IsIHN0 cnVjdCBraW9jYiAqa2lvY2Jfc3JjLAogICAgICAgICAgc3RydWN0IGZpbGUgKmZpbHApCnsKICpr aW9jYiA9IChzdHJ1Y3Qga2lvY2IpIHsKICAua2lfZmlscCA9IGZpbHAsCiAgLmtpX2ZsYWdzID0g a2lvY2Jfc3JjLT5raV9mbGFncywKICAua2lfaGludCA9IGtpb2NiX3NyYy0+a2lfaGludCwKICAu a2lfaW9wcmlvID0ga2lvY2Jfc3JjLT5raV9pb3ByaW8sCiAgLmtpX3BvcyA9IGtpb2NiX3NyYy0+ a2lfcG9zLAogfTsKfQojIDIxODEgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gdm9pZCBf X21hcmtfaW5vZGVfZGlydHkoc3RydWN0IGlub2RlICosIGludCk7CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgbWFya19pbm9kZV9k aXJ0eShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUsICgo KDEgPDwgMCkgfCAoMSA8PCAxKSkgfCAoMSA8PCAyKSkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIG1hcmtfaW5vZGVfZGly dHlfc3luYyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBfX21hcmtfaW5vZGVfZGlydHkoaW5vZGUs ICgxIDw8IDApKTsKfQoKZXh0ZXJuIHZvaWQgaW5jX25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUp OwpleHRlcm4gdm9pZCBkcm9wX25saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9p ZCBjbGVhcl9ubGluayhzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIHZvaWQgc2V0X25saW5r KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBubGluayk7CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlub2RlX2lu Y19saW5rX2NvdW50KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGluY19ubGluayhpbm9kZSk7CiBt YXJrX2lub2RlX2RpcnR5KGlub2RlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9kZWNfbGlua19jb3VudChzdHJ1 Y3QgaW5vZGUgKmlub2RlKQp7CiBkcm9wX25saW5rKGlub2RlKTsKIG1hcmtfaW5vZGVfZGlydHko aW5vZGUpOwp9CgplbnVtIGZpbGVfdGltZV9mbGFncyB7CiBTX0FUSU1FID0gMSwKIFNfTVRJTUUg PSAyLAogU19DVElNRSA9IDQsCiBTX1ZFUlNJT04gPSA4LAp9OwoKZXh0ZXJuIGJvb2wgYXRpbWVf bmVlZHNfdXBkYXRlKGNvbnN0IHN0cnVjdCBwYXRoICosIHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu IHZvaWQgdG91Y2hfYXRpbWUoY29uc3Qgc3RydWN0IHBhdGggKik7CnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZmlsZV9hY2Nlc3Nl ZChzdHJ1Y3QgZmlsZSAqZmlsZSkKewogaWYgKCEoZmlsZS0+Zl9mbGFncyAmIDAxMDAwMDAwKSkK ICB0b3VjaF9hdGltZSgmZmlsZS0+Zl9wYXRoKTsKfQoKZXh0ZXJuIGludCBmaWxlX21vZGlmaWVk KHN0cnVjdCBmaWxlICpmaWxlKTsKCmludCBzeW5jX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUs IHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKTsKaW50IHN5bmNfaW5vZGVfbWV0YWRhdGEo c3RydWN0IGlub2RlICppbm9kZSwgaW50IHdhaXQpOwoKc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUg ewogY29uc3QgY2hhciAqbmFtZTsKIGludCBmc19mbGFnczsKCgoKCgoKIGludCAoKmluaXRfZnNf Y29udGV4dCkoc3RydWN0IGZzX2NvbnRleHQgKik7CiBjb25zdCBzdHJ1Y3QgZnNfcGFyYW1ldGVy X3NwZWMgKnBhcmFtZXRlcnM7CiBzdHJ1Y3QgZGVudHJ5ICooKm1vdW50KSAoc3RydWN0IGZpbGVf c3lzdGVtX3R5cGUgKiwgaW50LAogICAgICAgICBjb25zdCBjaGFyICosIHZvaWQgKik7CiB2b2lk ICgqa2lsbF9zYikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKIHN0cnVjdCBtb2R1bGUgKm93bmVy Owogc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiBuZXh0Owogc3RydWN0IGhsaXN0X2hlYWQgZnNf c3VwZXJzOwoKIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBzX2xvY2tfa2V5Owogc3RydWN0IGxvY2tf Y2xhc3Nfa2V5IHNfdW1vdW50X2tleTsKIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBzX3Zmc19yZW5h bWVfa2V5Owogc3RydWN0IGxvY2tfY2xhc3Nfa2V5IHNfd3JpdGVyc19rZXlbKFNCX0ZSRUVaRV9D T01QTEVURSAtIDEpXTsKCiBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgaV9sb2NrX2tleTsKIHN0cnVj dCBsb2NrX2NsYXNzX2tleSBpX211dGV4X2tleTsKIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBpX211 dGV4X2Rpcl9rZXk7Cn07CgoKCgpleHRlcm4gc3RydWN0IGRlbnRyeSAqbW91bnRfYmRldihzdHJ1 Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZSwKIGludCBmbGFncywgY29uc3QgY2hhciAqZGV2 X25hbWUsIHZvaWQgKmRhdGEsCiBpbnQgKCpmaWxsX3N1cGVyKShzdHJ1Y3Qgc3VwZXJfYmxvY2sg Kiwgdm9pZCAqLCBpbnQpKTsKIyAyMjcxICIuL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIHN0 cnVjdCBkZW50cnkgKm1vdW50X3NpbmdsZShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlw ZSwKIGludCBmbGFncywgdm9pZCAqZGF0YSwKIGludCAoKmZpbGxfc3VwZXIpKHN0cnVjdCBzdXBl cl9ibG9jayAqLCB2b2lkICosIGludCkpOwpleHRlcm4gc3RydWN0IGRlbnRyeSAqbW91bnRfbm9k ZXYoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCiBpbnQgZmxhZ3MsIHZvaWQgKmRh dGEsCiBpbnQgKCpmaWxsX3N1cGVyKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAqLCBpbnQp KTsKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKm1vdW50X3N1YnRyZWUoc3RydWN0IHZmc21vdW50ICpt bnQsIGNvbnN0IGNoYXIgKnBhdGgpOwp2b2lkIGdlbmVyaWNfc2h1dGRvd25fc3VwZXIoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYik7Cgp2b2lkIGtpbGxfYmxvY2tfc3VwZXIoc3RydWN0IHN1cGVyX2Js b2NrICpzYik7CgoKCgoKCnZvaWQga2lsbF9hbm9uX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAq c2IpOwp2b2lkIGtpbGxfbGl0dGVyX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwp2b2lk IGRlYWN0aXZhdGVfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnZvaWQgZGVhY3RpdmF0 ZV9sb2NrZWRfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmludCBzZXRfYW5vbl9zdXBl cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMsIHZvaWQgKmRhdGEpOwppbnQgc2V0X2Fub25fc3VwZXJf ZmMoc3RydWN0IHN1cGVyX2Jsb2NrICpzLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpOwppbnQgZ2V0 X2Fub25fYmRldihkZXZfdCAqKTsKdm9pZCBmcmVlX2Fub25fYmRldihkZXZfdCk7CnN0cnVjdCBz dXBlcl9ibG9jayAqc2dldF9mYyhzdHJ1Y3QgZnNfY29udGV4dCAqZmMsCiAgICAgICBpbnQgKCp0 ZXN0KShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGZzX2NvbnRleHQgKiksCiAgICAgICBp bnQgKCpzZXQpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBzdHJ1Y3QgZnNfY29udGV4dCAqKSk7CnN0 cnVjdCBzdXBlcl9ibG9jayAqc2dldChzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqdHlwZSwKICAg aW50ICgqdGVzdCkoc3RydWN0IHN1cGVyX2Jsb2NrICosdm9pZCAqKSwKICAgaW50ICgqc2V0KShz dHJ1Y3Qgc3VwZXJfYmxvY2sgKix2b2lkICopLAogICBpbnQgZmxhZ3MsIHZvaWQgKmRhdGEpOwoj IDIzMjAgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpleHRlcm4gaW50IHJlZ2lzdGVyX2ZpbGVzeXN0 ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CmV4dGVybiBpbnQgdW5yZWdpc3Rlcl9maWxl c3lzdGVtKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gc3RydWN0IHZmc21vdW50 ICprZXJuX21vdW50KHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICopOwpleHRlcm4gdm9pZCBrZXJu X3VubW91bnQoc3RydWN0IHZmc21vdW50ICptbnQpOwpleHRlcm4gaW50IG1heV91bW91bnRfdHJl ZShzdHJ1Y3QgdmZzbW91bnQgKik7CmV4dGVybiBpbnQgbWF5X3Vtb3VudChzdHJ1Y3QgdmZzbW91 bnQgKik7CmV4dGVybiBsb25nIGRvX21vdW50KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAog ICAgICAgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwpleHRlcm4gc3RydWN0 IHZmc21vdW50ICpjb2xsZWN0X21vdW50cyhjb25zdCBzdHJ1Y3QgcGF0aCAqKTsKZXh0ZXJuIHZv aWQgZHJvcF9jb2xsZWN0ZWRfbW91bnRzKHN0cnVjdCB2ZnNtb3VudCAqKTsKZXh0ZXJuIGludCBp dGVyYXRlX21vdW50cyhpbnQgKCopKHN0cnVjdCB2ZnNtb3VudCAqLCB2b2lkICopLCB2b2lkICos CiAgICAgc3RydWN0IHZmc21vdW50ICopOwpleHRlcm4gaW50IHZmc19zdGF0ZnMoY29uc3Qgc3Ry dWN0IHBhdGggKiwgc3RydWN0IGtzdGF0ZnMgKik7CmV4dGVybiBpbnQgdXNlcl9zdGF0ZnMoY29u c3QgY2hhciAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKZXh0ZXJuIGludCBmZF9zdGF0ZnMoaW50LCBz dHJ1Y3Qga3N0YXRmcyAqKTsKZXh0ZXJuIGludCBmcmVlemVfc3VwZXIoc3RydWN0IHN1cGVyX2Js b2NrICpzdXBlcik7CmV4dGVybiBpbnQgdGhhd19zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnN1 cGVyKTsKZXh0ZXJuIGJvb2wgb3VyX21udChzdHJ1Y3QgdmZzbW91bnQgKm1udCk7CmV4dGVybiBf X2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQppbnQgc3VwZXJfc2V0dXBf YmRpX25hbWUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgY2hhciAqZm10LCAuLi4pOwpleHRlcm4g aW50IHN1cGVyX3NldHVwX2JkaShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKCmV4dGVybiBpbnQg Y3VycmVudF91bWFzayh2b2lkKTsKCmV4dGVybiB2b2lkIGlob2xkKHN0cnVjdCBpbm9kZSAqIGlu b2RlKTsKZXh0ZXJuIHZvaWQgaXB1dChzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbnQgZ2VuZXJp Y191cGRhdGVfdGltZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHRpbWVzcGVjNjQgKiwgaW50KTsK CgpleHRlcm4gc3RydWN0IGtvYmplY3QgKmZzX2tvYmo7CgoKCgpleHRlcm4gaW50IGxvY2tzX21h bmRhdG9yeV9sb2NrZWQoc3RydWN0IGZpbGUgKik7CmV4dGVybiBpbnQgbG9ja3NfbWFuZGF0b3J5 X2FyZWEoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICosIGxvZmZfdCwgbG9mZl90LCB1bnNp Z25lZCBjaGFyKTsKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fbWFuZGF0b3J5X2xvY2soc3RydWN0IGlub2RlICppbm8p CnsKIHJldHVybiAoaW5vLT5pX21vZGUgJiAoMDAwMjAwMCB8IDAwMDEwKSkgPT0gMDAwMjAwMDsK fQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBpbnQgbWFuZGF0b3J5X2xvY2soc3RydWN0IGlub2RlICppbm8pCnsKIHJldHVybiAo KGlubyktPmlfc2ItPnNfZmxhZ3MgJiAoNjQpKSAmJiBfX21hbmRhdG9yeV9sb2NrKGlubyk7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBsb2Nrc192ZXJpZnlfbG9ja2VkKHN0cnVjdCBmaWxlICpmaWxlKQp7CiBpZiAobWFuZGF0 b3J5X2xvY2soZmlsZV9pbm9kZShmaWxlKSkpCiAgcmV0dXJuIGxvY2tzX21hbmRhdG9yeV9sb2Nr ZWQoZmlsZSk7CiByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGxvY2tzX3ZlcmlmeV90cnVuY2F0ZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLAogICAgICAgIHN0cnVjdCBmaWxlICpmLAogICAgICAgIGxvZmZfdCBzaXpl KQp7CiBpZiAoIWlub2RlLT5pX2ZsY3R4IHx8ICFtYW5kYXRvcnlfbG9jayhpbm9kZSkpCiAgcmV0 dXJuIDA7CgogaWYgKHNpemUgPCBpbm9kZS0+aV9zaXplKSB7CiAgcmV0dXJuIGxvY2tzX21hbmRh dG9yeV9hcmVhKGlub2RlLCBmLCBzaXplLCBpbm9kZS0+aV9zaXplIC0gMSwKICAgIDEpOwogfSBl bHNlIHsKICByZXR1cm4gbG9ja3NfbWFuZGF0b3J5X2FyZWEoaW5vZGUsIGYsIGlub2RlLT5pX3Np emUsIHNpemUgLSAxLAogICAgMSk7CiB9Cn0KIyAyNDM4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGJyZWFrX2xlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBtb2RlKQp7 CgoKCgoKCiBhc20gdm9sYXRpbGUoImxvY2s7IGFkZGwgJDAsLTQoJSVyc3ApIiA6OjogIm1lbW9y eSIsICJjYyIpOwogaWYgKGlub2RlLT5pX2ZsY3R4ICYmICFsaXN0X2VtcHR5X2NhcmVmdWwoJmlu b2RlLT5pX2ZsY3R4LT5mbGNfbGVhc2UpKQogIHJldHVybiBfX2JyZWFrX2xlYXNlKGlub2RlLCBt b2RlLCAzMik7CiByZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2RlbGVnKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHVuc2lnbmVkIGludCBtb2RlKQp7CgoKCgoKCiBhc20gdm9sYXRpbGUoImxvY2s7IGFkZGwg JDAsLTQoJSVyc3ApIiA6OjogIm1lbW9yeSIsICJjYyIpOwogaWYgKGlub2RlLT5pX2ZsY3R4ICYm ICFsaXN0X2VtcHR5X2NhcmVmdWwoJmlub2RlLT5pX2ZsY3R4LT5mbGNfbGVhc2UpKQogIHJldHVy biBfX2JyZWFrX2xlYXNlKGlub2RlLCBtb2RlLCA0KTsKIHJldHVybiAwOwp9CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdHJ5X2Jy ZWFrX2RlbGVnKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBpbm9kZSAqKmRlbGVnYXRlZF9p bm9kZSkKewogaW50IHJldDsKCiByZXQgPSBicmVha19kZWxlZyhpbm9kZSwgMDAwMDAwMDF8MDAw MDQwMDApOwogaWYgKHJldCA9PSAtMTEgJiYgZGVsZWdhdGVkX2lub2RlKSB7CiAgKmRlbGVnYXRl ZF9pbm9kZSA9IGlub2RlOwogIGlob2xkKGlub2RlKTsKIH0KIHJldHVybiByZXQ7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBi cmVha19kZWxlZ193YWl0KHN0cnVjdCBpbm9kZSAqKmRlbGVnYXRlZF9pbm9kZSkKewogaW50IHJl dDsKCiByZXQgPSBicmVha19kZWxlZygqZGVsZWdhdGVkX2lub2RlLCAwMDAwMDAwMSk7CiBpcHV0 KCpkZWxlZ2F0ZWRfaW5vZGUpOwogKmRlbGVnYXRlZF9pbm9kZSA9ICgodm9pZCAqKTApOwogcmV0 dXJuIHJldDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IGJyZWFrX2xheW91dChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBib29sIHdh aXQpCnsKIGFzbSB2b2xhdGlsZSgibG9jazsgYWRkbCAkMCwtNCglJXJzcCkiIDo6OiAibWVtb3J5 IiwgImNjIik7CiBpZiAoaW5vZGUtPmlfZmxjdHggJiYgIWxpc3RfZW1wdHlfY2FyZWZ1bCgmaW5v ZGUtPmlfZmxjdHgtPmZsY19sZWFzZSkpCiAgcmV0dXJuIF9fYnJlYWtfbGVhc2UoaW5vZGUsCiAg ICB3YWl0ID8gMDAwMDAwMDEgOiAwMDAwMDAwMSB8IDAwMDA0MDAwLAogICAgMjA0OCk7CiByZXR1 cm4gMDsKfQojIDI1MjggIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdHJ1Y3QgYXVkaXRfbmFtZXM7 CnN0cnVjdCBmaWxlbmFtZSB7CiBjb25zdCBjaGFyICpuYW1lOwogY29uc3QgY2hhciAqdXB0cjsK IGludCByZWZjbnQ7CiBzdHJ1Y3QgYXVkaXRfbmFtZXMgKmFuYW1lOwogY29uc3QgY2hhciBpbmFt ZVtdOwp9OwpfU3RhdGljX2Fzc2VydChfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGZpbGVuYW1l LCBpbmFtZSkgJSBzaXplb2YobG9uZykgPT0gMCwgIm9mZnNldG9mKHN0cnVjdCBmaWxlbmFtZSwg aW5hbWUpICUgc2l6ZW9mKGxvbmcpID09IDAiKTsKCmV4dGVybiBsb25nIHZmc190cnVuY2F0ZShj b25zdCBzdHJ1Y3QgcGF0aCAqLCBsb2ZmX3QpOwpleHRlcm4gaW50IGRvX3RydW5jYXRlKHN0cnVj dCBkZW50cnkgKiwgbG9mZl90IHN0YXJ0LCB1bnNpZ25lZCBpbnQgdGltZV9hdHRycywKICAgICAg ICAgc3RydWN0IGZpbGUgKmZpbHApOwpleHRlcm4gaW50IHZmc19mYWxsb2NhdGUoc3RydWN0IGZp bGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LAogICBsb2ZmX3QgbGVuKTsKZXh0ZXJu IGxvbmcgZG9fc3lzX29wZW4oaW50IGRmZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFn cywKICAgdW1vZGVfdCBtb2RlKTsKZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxlX29wZW5fbmFtZShz dHJ1Y3QgZmlsZW5hbWUgKiwgaW50LCB1bW9kZV90KTsKZXh0ZXJuIHN0cnVjdCBmaWxlICpmaWxw X29wZW4oY29uc3QgY2hhciAqLCBpbnQsIHVtb2RlX3QpOwpleHRlcm4gc3RydWN0IGZpbGUgKmZp bGVfb3Blbl9yb290KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IHZmc21vdW50ICosCiAgICAgICBj b25zdCBjaGFyICosIGludCwgdW1vZGVfdCk7CmV4dGVybiBzdHJ1Y3QgZmlsZSAqIGRlbnRyeV9v cGVuKGNvbnN0IHN0cnVjdCBwYXRoICosIGludCwgY29uc3Qgc3RydWN0IGNyZWQgKik7CmV4dGVy biBzdHJ1Y3QgZmlsZSAqIG9wZW5fd2l0aF9mYWtlX3BhdGgoY29uc3Qgc3RydWN0IHBhdGggKiwg aW50LAogICAgICBzdHJ1Y3QgaW5vZGUqLCBjb25zdCBzdHJ1Y3QgY3JlZCAqKTsKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZp bGUgKmZpbGVfY2xvbmVfb3BlbihzdHJ1Y3QgZmlsZSAqZmlsZSkKewogcmV0dXJuIGRlbnRyeV9v cGVuKCZmaWxlLT5mX3BhdGgsIGZpbGUtPmZfZmxhZ3MsIGZpbGUtPmZfY3JlZCk7Cn0KZXh0ZXJu IGludCBmaWxwX2Nsb3NlKHN0cnVjdCBmaWxlICosIGZsX293bmVyX3QgaWQpOwoKZXh0ZXJuIHN0 cnVjdCBmaWxlbmFtZSAqZ2V0bmFtZV9mbGFncyhjb25zdCBjaGFyICosIGludCwgaW50ICopOwpl eHRlcm4gc3RydWN0IGZpbGVuYW1lICpnZXRuYW1lKGNvbnN0IGNoYXIgKik7CmV4dGVybiBzdHJ1 Y3QgZmlsZW5hbWUgKmdldG5hbWVfa2VybmVsKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHB1 dG5hbWUoc3RydWN0IGZpbGVuYW1lICpuYW1lKTsKCmV4dGVybiBpbnQgZmluaXNoX29wZW4oc3Ry dWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKICAgaW50ICgqb3Blbikoc3Ry dWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopKTsKZXh0ZXJuIGludCBmaW5pc2hfbm9fb3Blbihz dHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKCgpleHRlcm4gdm9pZCBf X2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXygiLmluaXQudGV4dCIpKSkgX19hdHRyaWJ1dGVfXygo X19jb2xkX18pKSB2ZnNfY2FjaGVzX2luaXRfZWFybHkodm9pZCk7CmV4dGVybiB2b2lkIF9fYXR0 cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpIHZmc19jYWNoZXNfaW5pdCh2b2lkKTsKCmV4dGVybiBzdHJ1Y3Qga21lbV9jYWNoZSAq bmFtZXNfY2FjaGVwOwoKCgoKCmV4dGVybiBpbnQgcmVnaXN0ZXJfYmxrZGV2KHVuc2lnbmVkIGlu dCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgdW5yZWdpc3Rlcl9ibGtkZXYodW5zaWduZWQg aW50LCBjb25zdCBjaGFyICopOwpleHRlcm4gdm9pZCBiZGV2X3VuaGFzaF9pbm9kZShkZXZfdCBk ZXYpOwpleHRlcm4gc3RydWN0IGJsb2NrX2RldmljZSAqYmRnZXQoZGV2X3QpOwpleHRlcm4gc3Ry dWN0IGJsb2NrX2RldmljZSAqYmRncmFiKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYpOwpleHRl cm4gdm9pZCBiZF9zZXRfc2l6ZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIGxvZmZfdCBzaXplKTsK ZXh0ZXJuIHZvaWQgYmRfZm9yZ2V0KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpleHRlcm4gdm9pZCBi ZHB1dChzdHJ1Y3QgYmxvY2tfZGV2aWNlICopOwpleHRlcm4gdm9pZCBpbnZhbGlkYXRlX2JkZXYo c3RydWN0IGJsb2NrX2RldmljZSAqKTsKZXh0ZXJuIHZvaWQgaXRlcmF0ZV9iZGV2cyh2b2lkICgq KShzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIHZvaWQgKiksIHZvaWQgKik7CmV4dGVybiBpbnQgc3lu Y19ibG9ja2RldihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KTsKZXh0ZXJuIHZvaWQga2lsbF9i ZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmZy ZWV6ZV9iZGV2KHN0cnVjdCBibG9ja19kZXZpY2UgKik7CmV4dGVybiB2b2lkIGVtZXJnZW5jeV90 aGF3X2FsbCh2b2lkKTsKZXh0ZXJuIHZvaWQgZW1lcmdlbmN5X3RoYXdfYmRldihzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIGludCB0aGF3X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAq YmRldiwgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiBpbnQgZnN5bmNfYmRldihzdHJ1 Y3QgYmxvY2tfZGV2aWNlICopOwoKZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqYmxvY2tkZXZf c3VwZXJibG9jazsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgc2JfaXNfYmxrZGV2X3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqc2Ip CnsKIHJldHVybiBzYiA9PSBibG9ja2Rldl9zdXBlcmJsb2NrOwp9CiMgMjYzMSAiLi9pbmNsdWRl L2xpbnV4L2ZzLmgiCmV4dGVybiBpbnQgc3luY19maWxlc3lzdGVtKHN0cnVjdCBzdXBlcl9ibG9j ayAqKTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmX2Jsa19mb3BzOwpl eHRlcm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBkZWZfY2hyX2ZvcHM7CgpleHRlcm4g aW50IGlvY3RsX2J5X2JkZXYoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCwgdW5zaWdu ZWQgbG9uZyk7CmV4dGVybiBpbnQgYmxrZGV2X2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKiwg Zm1vZGVfdCwgdW5zaWduZWQsIHVuc2lnbmVkIGxvbmcpOwpleHRlcm4gbG9uZyBjb21wYXRfYmxr ZGV2X2lvY3RsKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJu IGludCBibGtkZXZfZ2V0KHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGZtb2RlX3QgbW9kZSwg dm9pZCAqaG9sZGVyKTsKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2UgKmJsa2Rldl9nZXRfYnlf cGF0aChjb25zdCBjaGFyICpwYXRoLCBmbW9kZV90IG1vZGUsCiAgICAgICAgICAgIHZvaWQgKmhv bGRlcik7CmV4dGVybiBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpibGtkZXZfZ2V0X2J5X2RldihkZXZf dCBkZXYsIGZtb2RlX3QgbW9kZSwKICAgICAgICAgICB2b2lkICpob2xkZXIpOwpleHRlcm4gc3Ry dWN0IGJsb2NrX2RldmljZSAqYmRfc3RhcnRfY2xhaW1pbmcoc3RydWN0IGJsb2NrX2RldmljZSAq YmRldiwKICAgICAgICAgICB2b2lkICpob2xkZXIpOwpleHRlcm4gdm9pZCBiZF9maW5pc2hfY2xh aW1pbmcoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKICAgICAgICAgIHN0cnVjdCBibG9ja19k ZXZpY2UgKndob2xlLCB2b2lkICpob2xkZXIpOwpleHRlcm4gdm9pZCBiZF9hYm9ydF9jbGFpbWlu ZyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LAogICAgICAgICBzdHJ1Y3QgYmxvY2tfZGV2aWNl ICp3aG9sZSwgdm9pZCAqaG9sZGVyKTsKZXh0ZXJuIHZvaWQgYmxrZGV2X3B1dChzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2LCBmbW9kZV90IG1vZGUpOwoKCmV4dGVybiBpbnQgYmRfbGlua19kaXNr X2hvbGRlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgZ2VuZGlzayAqZGlzayk7 CmV4dGVybiB2b2lkIGJkX3VubGlua19kaXNrX2hvbGRlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpi ZGV2LAogICAgICBzdHJ1Y3QgZ2VuZGlzayAqZGlzayk7CiMgMjY3NiAiLi9pbmNsdWRlL2xpbnV4 L2ZzLmgiCmV4dGVybiBpbnQgYWxsb2NfY2hyZGV2X3JlZ2lvbihkZXZfdCAqLCB1bnNpZ25lZCwg dW5zaWduZWQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcmVnaXN0ZXJfY2hyZGV2X3JlZ2lv bihkZXZfdCwgdW5zaWduZWQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgX19yZWdpc3Rlcl9j aHJkZXYodW5zaWduZWQgaW50IG1ham9yLCB1bnNpZ25lZCBpbnQgYmFzZW1pbm9yLAogICAgICAg IHVuc2lnbmVkIGludCBjb3VudCwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTsKZXh0ZXJuIHZvaWQgX191bnJlZ2lzdGVyX2NocmRl dih1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVkIGludCBiYXNlbWlub3IsCiAgICB1bnNpZ25l ZCBpbnQgY291bnQsIGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gdm9pZCB1bnJlZ2lzdGVyX2No cmRldl9yZWdpb24oZGV2X3QsIHVuc2lnbmVkKTsKZXh0ZXJuIHZvaWQgY2hyZGV2X3Nob3coc3Ry dWN0IHNlcV9maWxlICosb2ZmX3QpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX2NocmRldih1bnNpZ25lZCBpbnQg bWFqb3IsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgKmZvcHMpCnsKIHJldHVybiBfX3JlZ2lzdGVyX2NocmRldihtYWpvciwgMCwgMjU2LCBuYW1l LCBmb3BzKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCB1bnJlZ2lzdGVyX2NocmRldih1bnNpZ25lZCBpbnQgbWFqb3IsIGNv bnN0IGNoYXIgKm5hbWUpCnsKIF9fdW5yZWdpc3Rlcl9jaHJkZXYobWFqb3IsIDAsIDI1NiwgbmFt ZSk7Cn0KCgoKCgoKCmV4dGVybiBjb25zdCBjaGFyICpfX2JkZXZuYW1lKGRldl90LCBjaGFyICpi dWZmZXIpOwpleHRlcm4gY29uc3QgY2hhciAqYmRldm5hbWUoc3RydWN0IGJsb2NrX2RldmljZSAq YmRldiwgY2hhciAqYnVmZmVyKTsKZXh0ZXJuIHN0cnVjdCBibG9ja19kZXZpY2UgKmxvb2t1cF9i ZGV2KGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIGJsa2Rldl9zaG93KHN0cnVjdCBzZXFfZmls ZSAqLG9mZl90KTsKCgoKCgpleHRlcm4gdm9pZCBpbml0X3NwZWNpYWxfaW5vZGUoc3RydWN0IGlu b2RlICosIHVtb2RlX3QsIGRldl90KTsKCgpleHRlcm4gdm9pZCBtYWtlX2JhZF9pbm9kZShzdHJ1 Y3QgaW5vZGUgKik7CmV4dGVybiBib29sIGlzX2JhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CgoK ZXh0ZXJuIGludCByZXZhbGlkYXRlX2Rpc2soc3RydWN0IGdlbmRpc2sgKik7CmV4dGVybiBpbnQg Y2hlY2tfZGlza19jaGFuZ2Uoc3RydWN0IGJsb2NrX2RldmljZSAqKTsKZXh0ZXJuIGludCBfX2lu dmFsaWRhdGVfZGV2aWNlKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgYm9vbCk7CmV4dGVybiBpbnQg aW52YWxpZGF0ZV9wYXJ0aXRpb24oc3RydWN0IGdlbmRpc2sgKiwgaW50KTsKCnVuc2lnbmVkIGxv bmcgaW52YWxpZGF0ZV9tYXBwaW5nX3BhZ2VzKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5n LAogICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaW52 YWxpZGF0ZV9yZW1vdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSkKewogaWYgKCgoKGlub2Rl LT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMDAwMDApIHx8ICgoKGlub2RlLT5pX21vZGUpICYg MDAxNzAwMDApID09IDAwNDAwMDApIHx8CiAgICAgKCgoaW5vZGUtPmlfbW9kZSkgJiAwMDE3MDAw MCkgPT0gMDEyMDAwMCkpCiAgaW52YWxpZGF0ZV9tYXBwaW5nX3BhZ2VzKGlub2RlLT5pX21hcHBp bmcsIDAsIC0xKTsKfQpleHRlcm4gaW50IGludmFsaWRhdGVfaW5vZGVfcGFnZXMyKHN0cnVjdCBh ZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKZXh0ZXJuIGludCBpbnZhbGlkYXRlX2lub2RlX3BhZ2Vz Ml9yYW5nZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgICAgdW5zaWduZWQgbG9u ZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOwpleHRlcm4gaW50IHdyaXRlX2lub2RlX25vdyhz dHJ1Y3QgaW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBmaWxlbWFwX2ZkYXRhd3JpdGUoc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKik7CmV4dGVybiBpbnQgZmlsZW1hcF9mbHVzaChzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqKTsKZXh0ZXJuIGludCBmaWxlbWFwX2ZkYXRhd2FpdF9rZWVwX2Vycm9ycyhzdHJ1 Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CmV4dGVybiBpbnQgZmlsZW1hcF9mZGF0YXdhaXRf cmFuZ2Uoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgbG9mZl90IGxzdGFydCwKICAgICAgIGxvZmZf dCBsZW5kKTsKZXh0ZXJuIGludCBmaWxlbWFwX2ZkYXRhd2FpdF9yYW5nZV9rZWVwX2Vycm9ycyhz dHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICBsb2ZmX3Qgc3RhcnRfYnl0ZSwgbG9mZl90 IGVuZF9ieXRlKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCBmaWxlbWFwX2ZkYXRhd2FpdChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq bWFwcGluZykKewogcmV0dXJuIGZpbGVtYXBfZmRhdGF3YWl0X3JhbmdlKG1hcHBpbmcsIDAsICgo bG9uZyBsb25nKSh+MFVMTCA+PiAxKSkpOwp9CgpleHRlcm4gYm9vbCBmaWxlbWFwX3JhbmdlX2hh c19wYWdlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIGxvZmZfdCBsc3RhcnQsCiAgICAgIGxvZmZf dCBsZW5kKTsKZXh0ZXJuIGludCBmaWxlbWFwX3dyaXRlX2FuZF93YWl0X3JhbmdlKHN0cnVjdCBh ZGRyZXNzX3NwYWNlICptYXBwaW5nLAogICAgICAgICAgICBsb2ZmX3QgbHN0YXJ0LCBsb2ZmX3Qg bGVuZCk7CmV4dGVybiBpbnQgX19maWxlbWFwX2ZkYXRhd3JpdGVfcmFuZ2Uoc3RydWN0IGFkZHJl c3Nfc3BhY2UgKm1hcHBpbmcsCiAgICBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsIGludCBzeW5j X21vZGUpOwpleHRlcm4gaW50IGZpbGVtYXBfZmRhdGF3cml0ZV9yYW5nZShzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqbWFwcGluZywKICAgIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCk7CmV4dGVybiBp bnQgZmlsZW1hcF9jaGVja19lcnJvcnMoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpOwpl eHRlcm4gdm9pZCBfX2ZpbGVtYXBfc2V0X3diX2VycihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFw cGluZywgaW50IGVycik7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgZmlsZW1hcF93cml0ZV9hbmRfd2FpdChzdHJ1Y3QgYWRkcmVz c19zcGFjZSAqbWFwcGluZykKewogcmV0dXJuIGZpbGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2Uo bWFwcGluZywgMCwgKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSk7Cn0KCmV4dGVybiBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGZpbGVfZmRhdGF3YWl0X3Jhbmdl KHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3QgbHN0YXJ0LAogICAgICBsb2ZmX3QgbGVuZCk7CmV4 dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGZpbGVfY2hl Y2tfYW5kX2FkdmFuY2Vfd2JfZXJyKHN0cnVjdCBmaWxlICpmaWxlKTsKZXh0ZXJuIGludCBfX2F0 dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZmlsZV93cml0ZV9hbmRfd2FpdF9y YW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwKICAgICAgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kKTsK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBmaWxlX3dyaXRlX2FuZF93YWl0KHN0cnVjdCBmaWxlICpmaWxlKQp7CiByZXR1cm4gZmls ZV93cml0ZV9hbmRfd2FpdF9yYW5nZShmaWxlLCAwLCAoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkp KTsKfQojIDI3OTEgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZpbGVtYXBfc2V0X3diX2Vy cihzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgaW50IGVycikKewoKIGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKGVyciksIDApKQogIF9fZmlsZW1hcF9zZXRfd2JfZXJyKG1hcHBpbmcsIGVy cik7Cn0KIyAyODA4ICIuL2luY2x1ZGUvbGludXgvZnMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGZpbGVtYXBfY2hlY2tfd2Jf ZXJyKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogICAgIGVycnNlcV90IHNpbmNlKQp7 CiByZXR1cm4gZXJyc2VxX2NoZWNrKCZtYXBwaW5nLT53Yl9lcnIsIHNpbmNlKTsKfQojIDI4MjEg Ii4vaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBlcnJzZXFfdCBmaWxlbWFwX3NhbXBsZV93Yl9lcnIoc3Ry dWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcpCnsKIHJldHVybiBlcnJzZXFfc2FtcGxlKCZtYXBw aW5nLT53Yl9lcnIpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBpbnQgZmlsZW1hcF9ucl90aHBzKHN0cnVjdCBhZGRyZXNzX3NwYWNl ICptYXBwaW5nKQp7CgoKCiByZXR1cm4gMDsKCn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZmlsZW1hcF9ucl90aHBzX2luYyhz dHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKewoKCgogKHsgaW50IF9fcmV0X3dhcm5fb24g PSAhISgxKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7 IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxu IiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFi IiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAi ICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19l bnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQu b3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2ZzLmgi KSwgImkiICgyODQwKSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8IDgpKSksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRp bGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9u ZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDMwKSk7IH0pOyB9IHdo aWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBmaWxlbWFwX25yX3RocHNfZGVjKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKQp7 CgoKCiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKDEpOyBpZiAoX19idWlsdGluX2V4cGVjdCgh IShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6 XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJh d1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19h ZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxu IiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0 IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6 ICJpIiAoImluY2x1ZGUvbGludXgvZnMuaCIpLCAiaSIgKDI4NDkpLCAiaSIgKCgxIDw8IDApfCgo MSA8PCAxKSB8ICgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsg fSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRp c2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5c dCIgOiA6ICJpIiAoMzEpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9f cmV0X3dhcm5fb24pLCAwKTsgfSk7Cgp9CgpleHRlcm4gaW50IHZmc19mc3luY19yYW5nZShzdHJ1 Y3QgZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZW5kLAogICAgICBpbnQgZGF0YXN5 bmMpOwpleHRlcm4gaW50IHZmc19mc3luYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IGRhdGFzeW5j KTsKCmV4dGVybiBpbnQgc3luY19maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qg b2Zmc2V0LCBsb2ZmX3QgbmJ5dGVzLAogICAgdW5zaWduZWQgaW50IGZsYWdzKTsKCgoKCgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3Np emVfdCBnZW5lcmljX3dyaXRlX3N5bmMoc3RydWN0IGtpb2NiICppb2NiLCBzc2l6ZV90IGNvdW50 KQp7CiBpZiAoaW9jYi0+a2lfZmxhZ3MgJiAoMSA8PCA0KSkgewogIGludCByZXQgPSB2ZnNfZnN5 bmNfcmFuZ2UoaW9jYi0+a2lfZmlscCwKICAgIGlvY2ItPmtpX3BvcyAtIGNvdW50LCBpb2NiLT5r aV9wb3MgLSAxLAogICAgKGlvY2ItPmtpX2ZsYWdzICYgKDEgPDwgNSkpID8gMCA6IDEpOwogIGlm IChyZXQpCiAgIHJldHVybiByZXQ7CiB9CgogcmV0dXJuIGNvdW50Owp9CgpleHRlcm4gdm9pZCBl bWVyZ2VuY3lfc3luYyh2b2lkKTsKZXh0ZXJuIHZvaWQgZW1lcmdlbmN5X3JlbW91bnQodm9pZCk7 CgoKZXh0ZXJuIGludCBibWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90ICpibG9jayk7 CgoKCgoKCgpleHRlcm4gaW50IG5vdGlmeV9jaGFuZ2Uoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg aWF0dHIgKiwgc3RydWN0IGlub2RlICoqKTsKZXh0ZXJuIGludCBpbm9kZV9wZXJtaXNzaW9uKHN0 cnVjdCBpbm9kZSAqLCBpbnQpOwpleHRlcm4gaW50IGdlbmVyaWNfcGVybWlzc2lvbihzdHJ1Y3Qg aW5vZGUgKiwgaW50KTsKZXh0ZXJuIGludCBfX2NoZWNrX3N0aWNreShzdHJ1Y3QgaW5vZGUgKmRp ciwgc3RydWN0IGlub2RlICppbm9kZSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGV4ZWN1dGVfb2soc3RydWN0IGlub2RlICpp bm9kZSkKewogcmV0dXJuIChpbm9kZS0+aV9tb2RlICYgKDAwMTAwfDAwMDEwfDAwMDAxKSkgfHwg KCgoaW5vZGUtPmlfbW9kZSkgJiAwMDE3MDAwMCkgPT0gMDA0MDAwMCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZmlsZV9z dGFydF93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSkKewogaWYgKCEoKChmaWxlX2lub2RlKGZpbGUp LT5pX21vZGUpICYgMDAxNzAwMDApID09IDAxMDAwMDApKQogIHJldHVybjsKIF9fc2Jfc3RhcnRf d3JpdGUoZmlsZV9pbm9kZShmaWxlKS0+aV9zYiwgU0JfRlJFRVpFX1dSSVRFLCB0cnVlKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBmaWxlX3N0YXJ0X3dyaXRlX3RyeWxvY2soc3RydWN0IGZpbGUgKmZpbGUpCnsKIGlmICgh KCgoZmlsZV9pbm9kZShmaWxlKS0+aV9tb2RlKSAmIDAwMTcwMDAwKSA9PSAwMTAwMDAwKSkKICBy ZXR1cm4gdHJ1ZTsKIHJldHVybiBfX3NiX3N0YXJ0X3dyaXRlKGZpbGVfaW5vZGUoZmlsZSktPmlf c2IsIFNCX0ZSRUVaRV9XUklURSwgZmFsc2UpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZpbGVfZW5kX3dyaXRlKHN0cnVj dCBmaWxlICpmaWxlKQp7CiBpZiAoISgoKGZpbGVfaW5vZGUoZmlsZSktPmlfbW9kZSkgJiAwMDE3 MDAwMCkgPT0gMDEwMDAwMCkpCiAgcmV0dXJuOwogX19zYl9lbmRfd3JpdGUoZmlsZV9pbm9kZShm aWxlKS0+aV9zYiwgU0JfRlJFRVpFX1dSSVRFKTsKfQojIDI5MzcgIi4vaW5jbHVkZS9saW51eC9m cy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgZ2V0X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiByZXR1cm4g YXRvbWljX2luY191bmxlc3NfbmVnYXRpdmUoJmlub2RlLT5pX3dyaXRlY291bnQpID8gMCA6IC0y NjsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBpbnQgZGVueV93cml0ZV9hY2Nlc3Moc3RydWN0IGZpbGUgKmZpbGUpCnsKIHN0cnVjdCBp bm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbGUpOwogcmV0dXJuIGF0b21pY19kZWNfdW5sZXNz X3Bvc2l0aXZlKCZpbm9kZS0+aV93cml0ZWNvdW50KSA/IDAgOiAtMjY7Cn0Kc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwdXRfd3Jp dGVfYWNjZXNzKHN0cnVjdCBpbm9kZSAqIGlub2RlKQp7CiBhdG9taWNfZGVjKCZpbm9kZS0+aV93 cml0ZWNvdW50KTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGFsbG93X3dyaXRlX2FjY2VzcyhzdHJ1Y3QgZmlsZSAqZmlsZSkK ewogaWYgKGZpbGUpCiAgYXRvbWljX2luYygmZmlsZV9pbm9kZShmaWxlKS0+aV93cml0ZWNvdW50 KTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIGlub2RlX2lzX29wZW5fZm9yX3dyaXRlKGNvbnN0IHN0cnVjdCBpbm9kZSAqaW5v ZGUpCnsKIHJldHVybiBhdG9taWNfcmVhZCgmaW5vZGUtPmlfd3JpdGVjb3VudCkgPiAwOwp9CgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCBpX3JlYWRjb3VudF9kZWMoc3RydWN0IGlub2RlICppbm9kZSkKewogZG8geyBpZiAoX19i dWlsdGluX2V4cGVjdCghISghYXRvbWljX3JlYWQoJmlub2RlLT5pX3JlYWRjb3VudCkpLCAwKSkg ZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIi ICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAi ICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAi JWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBi dWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIg Ilx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9m cy5oIiksICJpIiAoMjk2MyksICJpIiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkp KSk7IH0gd2hpbGUgKDApOyBkbyB7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNl Y3Rpb24gLmRpc2NhcmQudW5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBv cHNlY3Rpb25cblx0IiA6IDogImkiICgzMikpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWls dGluX3VucmVhY2hhYmxlKCk7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7 CiBhdG9taWNfZGVjKCZpbm9kZS0+aV9yZWFkY291bnQpOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaV9yZWFkY291bnRfaW5j KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGF0b21pY19pbmMoJmlub2RlLT5pX3JlYWRjb3VudCk7 Cn0KIyAyOTgwICIuL2luY2x1ZGUvbGludXgvZnMuaCIKZXh0ZXJuIGludCBkb19waXBlX2ZsYWdz KGludCAqLCBpbnQpOwojIDI5OTYgIi4vaW5jbHVkZS9saW51eC9mcy5oIgplbnVtIGtlcm5lbF9y ZWFkX2ZpbGVfaWQgewogUkVBRElOR19VTktOT1dOLCBSRUFESU5HX0ZJUk1XQVJFLCBSRUFESU5H X0ZJUk1XQVJFX1BSRUFMTE9DX0JVRkZFUiwgUkVBRElOR19NT0RVTEUsIFJFQURJTkdfS0VYRUNf SU1BR0UsIFJFQURJTkdfS0VYRUNfSU5JVFJBTUZTLCBSRUFESU5HX1BPTElDWSwgUkVBRElOR19Y NTA5X0NFUlRJRklDQVRFLCBSRUFESU5HX01BWF9JRCwKfTsKCnN0YXRpYyBjb25zdCBjaGFyICog Y29uc3Qga2VybmVsX3JlYWRfZmlsZV9zdHJbXSA9IHsKICJ1bmtub3duIiwgImZpcm13YXJlIiwg ImZpcm13YXJlIiwgImtlcm5lbC1tb2R1bGUiLCAia2V4ZWMtaW1hZ2UiLCAia2V4ZWMtaW5pdHJh bWZzIiwgInNlY3VyaXR5LXBvbGljeSIsICJ4NTA5LWNlcnRpZmljYXRlIiwgIiIsCn07CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25z dCBjaGFyICprZXJuZWxfcmVhZF9maWxlX2lkX3N0cihlbnVtIGtlcm5lbF9yZWFkX2ZpbGVfaWQg aWQpCnsKIGlmICgodW5zaWduZWQpaWQgPj0gUkVBRElOR19NQVhfSUQpCiAgcmV0dXJuIGtlcm5l bF9yZWFkX2ZpbGVfc3RyW1JFQURJTkdfVU5LTk9XTl07CgogcmV0dXJuIGtlcm5lbF9yZWFkX2Zp bGVfc3RyW2lkXTsKfQoKZXh0ZXJuIGludCBrZXJuZWxfcmVhZF9maWxlKHN0cnVjdCBmaWxlICos IHZvaWQgKiosIGxvZmZfdCAqLCBsb2ZmX3QsCiAgICAgICBlbnVtIGtlcm5lbF9yZWFkX2ZpbGVf aWQpOwpleHRlcm4gaW50IGtlcm5lbF9yZWFkX2ZpbGVfZnJvbV9wYXRoKGNvbnN0IGNoYXIgKiwg dm9pZCAqKiwgbG9mZl90ICosIGxvZmZfdCwKICAgICAgICAgIGVudW0ga2VybmVsX3JlYWRfZmls ZV9pZCk7CmV4dGVybiBpbnQga2VybmVsX3JlYWRfZmlsZV9mcm9tX2ZkKGludCwgdm9pZCAqKiwg bG9mZl90ICosIGxvZmZfdCwKICAgICAgICBlbnVtIGtlcm5lbF9yZWFkX2ZpbGVfaWQpOwpleHRl cm4gc3NpemVfdCBrZXJuZWxfcmVhZChzdHJ1Y3QgZmlsZSAqLCB2b2lkICosIHNpemVfdCwgbG9m Zl90ICopOwpleHRlcm4gc3NpemVfdCBrZXJuZWxfd3JpdGUoc3RydWN0IGZpbGUgKiwgY29uc3Qg dm9pZCAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHNzaXplX3QgX19rZXJuZWxfd3JpdGUo c3RydWN0IGZpbGUgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIHN0 cnVjdCBmaWxlICogb3Blbl9leGVjKGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIGJvb2wgaXNfc3Vi ZGlyKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGJvb2wgcGF0aF9p c191bmRlcihjb25zdCBzdHJ1Y3QgcGF0aCAqLCBjb25zdCBzdHJ1Y3QgcGF0aCAqKTsKCmV4dGVy biBjaGFyICpmaWxlX3BhdGgoc3RydWN0IGZpbGUgKiwgY2hhciAqLCBpbnQpOwoKCgoKZXh0ZXJu IGxvZmZfdCBkZWZhdWx0X2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwg aW50IHdoZW5jZSk7CgpleHRlcm4gbG9mZl90IHZmc19sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUs IGxvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpOwoKZXh0ZXJuIGludCBpbm9kZV9pbml0X2Fsd2F5 cyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBpbm9k ZV9pbml0X29uY2Uoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBhZGRyZXNzX3NwYWNlX2lu aXRfb25jZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CmV4dGVybiBzdHJ1Y3QgaW5v ZGUgKiBpZ3JhYihzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBpbm9fdCBpdW5pcXVlKHN0cnVjdCBz dXBlcl9ibG9jayAqLCBpbm9fdCk7CmV4dGVybiBpbnQgaW5vZGVfbmVlZHNfc3luYyhzdHJ1Y3Qg aW5vZGUgKmlub2RlKTsKZXh0ZXJuIGludCBnZW5lcmljX2RlbGV0ZV9pbm9kZShzdHJ1Y3QgaW5v ZGUgKmlub2RlKTsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IGdlbmVyaWNfZHJvcF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7 CiByZXR1cm4gIWlub2RlLT5pX25saW5rIHx8IGlub2RlX3VuaGFzaGVkKGlub2RlKTsKfQoKZXh0 ZXJuIHN0cnVjdCBpbm9kZSAqaWxvb2t1cDVfbm93YWl0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2Is CiAgdW5zaWduZWQgbG9uZyBoYXNodmFsLCBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9p ZCAqKSwKICB2b2lkICpkYXRhKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAqaWxvb2t1cDUoc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBoYXNodmFsLAogIGludCAoKnRlc3QpKHN0 cnVjdCBpbm9kZSAqLCB2b2lkICopLCB2b2lkICpkYXRhKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAq aWxvb2t1cChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIGlubyk7CgpleHRl cm4gc3RydWN0IGlub2RlICppbm9kZV9pbnNlcnQ1KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHVuc2ln bmVkIGxvbmcgaGFzaHZhbCwKICBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwK ICBpbnQgKCpzZXQpKHN0cnVjdCBpbm9kZSAqLCB2b2lkICopLAogIHZvaWQgKmRhdGEpOwpleHRl cm4gc3RydWN0IGlub2RlICogaWdldDVfbG9ja2VkKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNp Z25lZCBsb25nLCBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwgaW50ICgqc2V0 KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwgdm9pZCAqKTsKZXh0ZXJuIHN0cnVjdCBpbm9kZSAq IGlnZXRfbG9ja2VkKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB1bnNpZ25lZCBsb25nKTsKZXh0ZXJu IHN0cnVjdCBpbm9kZSAqZmluZF9pbm9kZV9ub3dhaXQoc3RydWN0IHN1cGVyX2Jsb2NrICosCiAg ICAgICAgICAgdW5zaWduZWQgbG9uZywKICAgICAgICAgICBpbnQgKCptYXRjaCkoc3RydWN0IGlu b2RlICosCiAgICAgICAgICB1bnNpZ25lZCBsb25nLCB2b2lkICopLAogICAgICAgICAgIHZvaWQg KmRhdGEpOwpleHRlcm4gaW50IGluc2VydF9pbm9kZV9sb2NrZWQ0KHN0cnVjdCBpbm9kZSAqLCB1 bnNpZ25lZCBsb25nLCBpbnQgKCp0ZXN0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwgdm9pZCAq KTsKZXh0ZXJuIGludCBpbnNlcnRfaW5vZGVfbG9ja2VkKHN0cnVjdCBpbm9kZSAqKTsKCgoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCBsb2NrZGVwX2Fubm90YXRlX2lub2RlX211dGV4X2tleShzdHJ1Y3QgaW5vZGUgKmlub2RlKSB7 IH07CgpleHRlcm4gdm9pZCB1bmxvY2tfbmV3X2lub2RlKHN0cnVjdCBpbm9kZSAqKTsKZXh0ZXJu IHZvaWQgZGlzY2FyZF9uZXdfaW5vZGUoc3RydWN0IGlub2RlICopOwpleHRlcm4gdW5zaWduZWQg aW50IGdldF9uZXh0X2lubyh2b2lkKTsKZXh0ZXJuIHZvaWQgZXZpY3RfaW5vZGVzKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IpOwoKZXh0ZXJuIHZvaWQgX19pZ2V0KHN0cnVjdCBpbm9kZSAqIGlub2Rl KTsKZXh0ZXJuIHZvaWQgaWdldF9mYWlsZWQoc3RydWN0IGlub2RlICopOwpleHRlcm4gdm9pZCBj bGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiB2b2lkIF9fZGVzdHJveV9pbm9kZShz dHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKm5ld19pbm9kZV9wc2V1ZG8oc3Ry dWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKm5ld19pbm9kZShzdHJ1 Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKZXh0ZXJuIHZvaWQgZnJlZV9pbm9kZV9ub25yY3Uoc3RydWN0 IGlub2RlICppbm9kZSk7CmV4dGVybiBpbnQgc2hvdWxkX3JlbW92ZV9zdWlkKHN0cnVjdCBkZW50 cnkgKik7CmV4dGVybiBpbnQgZmlsZV9yZW1vdmVfcHJpdnMoc3RydWN0IGZpbGUgKik7CgpleHRl cm4gdm9pZCBfX2luc2VydF9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqLCB1bnNpZ25lZCBsb25n IGhhc2h2YWwpOwpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSB2b2lkIGluc2VydF9pbm9kZV9oYXNoKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsK IF9faW5zZXJ0X2lub2RlX2hhc2goaW5vZGUsIGlub2RlLT5pX2lubyk7Cn0KCmV4dGVybiB2b2lk IF9fcmVtb3ZlX2lub2RlX2hhc2goc3RydWN0IGlub2RlICopOwpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJlbW92ZV9pbm9kZV9o YXNoKHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGlmICghaW5vZGVfdW5oYXNoZWQoaW5vZGUpICYm ICFobGlzdF9mYWtlKCZpbm9kZS0+aV9oYXNoKSkKICBfX3JlbW92ZV9pbm9kZV9oYXNoKGlub2Rl KTsKfQoKZXh0ZXJuIHZvaWQgaW5vZGVfc2JfbGlzdF9hZGQoc3RydWN0IGlub2RlICppbm9kZSk7 CgoKZXh0ZXJuIGludCBiZGV2X3JlYWRfb25seShzdHJ1Y3QgYmxvY2tfZGV2aWNlICopOwoKZXh0 ZXJuIGludCBzZXRfYmxvY2tzaXplKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgaW50KTsKZXh0ZXJu IGludCBzYl9zZXRfYmxvY2tzaXplKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQpOwpleHRlcm4g aW50IHNiX21pbl9ibG9ja3NpemUoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7CgpleHRlcm4g aW50IGdlbmVyaWNfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVj dCAqKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfcmVhZG9ubHlfbW1hcChzdHJ1Y3QgZmlsZSAq LCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfd3JpdGVf Y2hlY2tzKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKik7CmV4dGVybiBpbnQgZ2Vu ZXJpY19yZW1hcF9jaGVja3Moc3RydWN0IGZpbGUgKmZpbGVfaW4sIGxvZmZfdCBwb3NfaW4sCiAg ICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0LAogICAgbG9mZl90ICpjb3Vu dCwgdW5zaWduZWQgaW50IHJlbWFwX2ZsYWdzKTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfcndf Y2hlY2tzKHN0cnVjdCBmaWxlICpmaWxlX2luLCBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQpOwpleHRl cm4gaW50IGdlbmVyaWNfY29weV9maWxlX2NoZWNrcyhzdHJ1Y3QgZmlsZSAqZmlsZV9pbiwgbG9m Zl90IHBvc19pbiwKICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZV9vdXQsIGxvZmZfdCBwb3Nfb3V0 LAogICAgICAgIHNpemVfdCAqY291bnQsIHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiBzc2l6 ZV90IGdlbmVyaWNfZmlsZV9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICosIHN0cnVjdCBpb3ZfaXRl ciAqKTsKZXh0ZXJuIHNzaXplX3QgX19nZW5lcmljX2ZpbGVfd3JpdGVfaXRlcihzdHJ1Y3Qga2lv Y2IgKiwgc3RydWN0IGlvdl9pdGVyICopOwpleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfd3Jp dGVfaXRlcihzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9pdGVyICopOwpleHRlcm4gc3NpemVf dCBnZW5lcmljX2ZpbGVfZGlyZWN0X3dyaXRlKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0 ZXIgKik7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcGVyZm9ybV93cml0ZShzdHJ1Y3QgZmlsZSAq LCBzdHJ1Y3QgaW92X2l0ZXIgKiwgbG9mZl90KTsKCnNzaXplX3QgdmZzX2l0ZXJfcmVhZChzdHJ1 Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGlvdl9pdGVyICppdGVyLCBsb2ZmX3QgKnBwb3MsCiAgcndm X3QgZmxhZ3MpOwpzc2l6ZV90IHZmc19pdGVyX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1 Y3QgaW92X2l0ZXIgKml0ZXIsIGxvZmZfdCAqcHBvcywKICByd2ZfdCBmbGFncyk7CnNzaXplX3Qg dmZzX2lvY2JfaXRlcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qga2lvY2IgKmlvY2Is CiAgICAgIHN0cnVjdCBpb3ZfaXRlciAqaXRlcik7CnNzaXplX3QgdmZzX2lvY2JfaXRlcl93cml0 ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGtpb2NiICppb2NiLAogICAgICAgc3RydWN0IGlv dl9pdGVyICppdGVyKTsKCgpleHRlcm4gc3NpemVfdCBibGtkZXZfcmVhZF9pdGVyKHN0cnVjdCBr aW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0byk7CmV4dGVybiBzc2l6ZV90IGJsa2Rldl93 cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKTsKZXh0 ZXJuIGludCBibGtkZXZfZnN5bmMoc3RydWN0IGZpbGUgKmZpbHAsIGxvZmZfdCBzdGFydCwgbG9m Zl90IGVuZCwKICAgaW50IGRhdGFzeW5jKTsKZXh0ZXJuIHZvaWQgYmxvY2tfc3luY19wYWdlKHN0 cnVjdCBwYWdlICpwYWdlKTsKCgpleHRlcm4gc3NpemVfdCBnZW5lcmljX2ZpbGVfc3BsaWNlX3Jl YWQoc3RydWN0IGZpbGUgKiwgbG9mZl90ICosCiAgc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqLCBz aXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzc2l6ZV90IGl0ZXJfZmlsZV9zcGxpY2Vfd3Jp dGUoc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqLAogIHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCBz aXplX3QsIHVuc2lnbmVkIGludCk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfc3BsaWNlX3NlbmRw YWdlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsCiAgc3RydWN0IGZpbGUgKm91dCwgbG9m Zl90ICosIHNpemVfdCBsZW4sIHVuc2lnbmVkIGludCBmbGFncyk7CmV4dGVybiBsb25nIGRvX3Nw bGljZV9kaXJlY3Qoc3RydWN0IGZpbGUgKmluLCBsb2ZmX3QgKnBwb3MsIHN0cnVjdCBmaWxlICpv dXQsCiAgbG9mZl90ICpvcG9zLCBzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwoKCmV4 dGVybiB2b2lkCmZpbGVfcmFfc3RhdGVfaW5pdChzdHJ1Y3QgZmlsZV9yYV9zdGF0ZSAqcmEsIHN0 cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKZXh0ZXJuIGxvZmZfdCBub29wX2xsc2Vlayhz dHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CmV4dGVybiBsb2Zm X3Qgbm9fbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNl KTsKZXh0ZXJuIGxvZmZfdCB2ZnNfc2V0cG9zKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zm c2V0LCBsb2ZmX3QgbWF4c2l6ZSk7CmV4dGVybiBsb2ZmX3QgZ2VuZXJpY19maWxlX2xsc2Vlayhz dHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSk7CmV4dGVybiBsb2Zm X3QgZ2VuZXJpY19maWxlX2xsc2Vla19zaXplKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zm c2V0LAogIGludCB3aGVuY2UsIGxvZmZfdCBtYXhzaXplLCBsb2ZmX3QgZW9mKTsKZXh0ZXJuIGxv ZmZfdCBmaXhlZF9zaXplX2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwK ICBpbnQgd2hlbmNlLCBsb2ZmX3Qgc2l6ZSk7CmV4dGVybiBsb2ZmX3Qgbm9fc2Vla19lbmRfbGxz ZWVrX3NpemUoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQsIGxvZmZfdCk7CmV4dGVybiBsb2Zm X3Qgbm9fc2Vla19lbmRfbGxzZWVrKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgaW50KTsKZXh0ZXJu IGludCBnZW5lcmljX2ZpbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKiBpbm9kZSwgc3RydWN0IGZpbGUg KiBmaWxwKTsKZXh0ZXJuIGludCBub25zZWVrYWJsZV9vcGVuKHN0cnVjdCBpbm9kZSAqIGlub2Rl LCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwpleHRlcm4gaW50IHN0cmVhbV9vcGVuKHN0cnVjdCBpbm9k ZSAqIGlub2RlLCBzdHJ1Y3QgZmlsZSAqIGZpbHApOwoKCnR5cGVkZWYgdm9pZCAoZGlvX3N1Ym1p dF90KShzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICAgICBsb2ZmX3Qg ZmlsZV9vZmZzZXQpOwoKZW51bSB7CgogRElPX0xPQ0tJTkcgPSAweDAxLAoKCiBESU9fU0tJUF9I T0xFUyA9IDB4MDIsCn07Cgp2b2lkIGRpb19lbmRfaW8oc3RydWN0IGJpbyAqYmlvKTsKCnNzaXpl X3QgX19ibG9ja2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW5vZGUg Kmlub2RlLAogICAgICAgIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBpb3ZfaXRl ciAqaXRlciwKICAgICAgICBnZXRfYmxvY2tfdCBnZXRfYmxvY2ssCiAgICAgICAgZGlvX2lvZG9u ZV90IGVuZF9pbywgZGlvX3N1Ym1pdF90IHN1Ym1pdF9pbywKICAgICAgICBpbnQgZmxhZ3MpOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3NpemVfdCBibG9ja2Rldl9kaXJlY3RfSU8oc3RydWN0IGtpb2NiICppb2NiLAogICAgICBzdHJ1 Y3QgaW5vZGUgKmlub2RlLAogICAgICBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsCiAgICAgIGdldF9i bG9ja190IGdldF9ibG9jaykKewogcmV0dXJuIF9fYmxvY2tkZXZfZGlyZWN0X0lPKGlvY2IsIGlu b2RlLCBpbm9kZS0+aV9zYi0+c19iZGV2LCBpdGVyLAogICBnZXRfYmxvY2ssICgodm9pZCAqKTAp LCAoKHZvaWQgKikwKSwgRElPX0xPQ0tJTkcgfCBESU9fU0tJUF9IT0xFUyk7Cn0KCgp2b2lkIGlu b2RlX2Rpb193YWl0KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwojIDMyMDggIi4vaW5jbHVkZS9saW51 eC9mcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGlub2RlX2Rpb19iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBhdG9t aWNfaW5jKCZpbm9kZS0+aV9kaW9fY291bnQpOwp9CiMgMzIyMCAiLi9pbmNsdWRlL2xpbnV4L2Zz LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgaW5vZGVfZGlvX2VuZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBpZiAoYXRvbWlj X2RlY19hbmRfdGVzdCgmaW5vZGUtPmlfZGlvX2NvdW50KSkKICB3YWtlX3VwX2JpdCgmaW5vZGUt Pmlfc3RhdGUsIDkpOwp9CgoKCgp2b2lkIGRpb193YXJuX3N0YWxlX3BhZ2VjYWNoZShzdHJ1Y3Qg ZmlsZSAqZmlscCk7CgpleHRlcm4gdm9pZCBpbm9kZV9zZXRfZmxhZ3Moc3RydWN0IGlub2RlICpp bm9kZSwgdW5zaWduZWQgaW50IGZsYWdzLAogICAgICAgdW5zaWduZWQgaW50IG1hc2spOwoKZXh0 ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZ2VuZXJpY19yb19mb3BzOwoKCgpleHRl cm4gaW50IHJlYWRsaW5rX2NvcHkoY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBp bnQgcGFnZV9yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKZXh0ZXJuIGNv bnN0IGNoYXIgKnBhZ2VfZ2V0X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwK ICAgICBzdHJ1Y3QgZGVsYXllZF9jYWxsICopOwpleHRlcm4gdm9pZCBwYWdlX3B1dF9saW5rKHZv aWQgKik7CmV4dGVybiBpbnQgX19wYWdlX3N5bWxpbmsoc3RydWN0IGlub2RlICppbm9kZSwgY29u c3QgY2hhciAqc3ltbmFtZSwgaW50IGxlbiwKICBpbnQgbm9mcyk7CmV4dGVybiBpbnQgcGFnZV9z eW1saW5rKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnN5bW5hbWUsIGludCBsZW4p OwpleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgcGFnZV9zeW1saW5rX2lub2Rl X29wZXJhdGlvbnM7CmV4dGVybiB2b2lkIGtmcmVlX2xpbmsodm9pZCAqKTsKZXh0ZXJuIHZvaWQg Z2VuZXJpY19maWxsYXR0cihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGtzdGF0ICopOwpleHRlcm4g aW50IHZmc19nZXRhdHRyX25vc2VjKGNvbnN0IHN0cnVjdCBwYXRoICosIHN0cnVjdCBrc3RhdCAq LCB1MzIsIHVuc2lnbmVkIGludCk7CmV4dGVybiBpbnQgdmZzX2dldGF0dHIoY29uc3Qgc3RydWN0 IHBhdGggKiwgc3RydWN0IGtzdGF0ICosIHUzMiwgdW5zaWduZWQgaW50KTsKdm9pZCBfX2lub2Rl X2FkZF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpOwp2b2lkIGlub2Rl X2FkZF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpOwp2b2lkIF9faW5v ZGVfc3ViX2J5dGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBieXRlcyk7CnZvaWQgaW5v ZGVfc3ViX2J5dGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBieXRlcyk7CnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGxvZmZfdCBf X2lub2RlX2dldF9ieXRlcyhzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiByZXR1cm4gKCgobG9mZl90 KWlub2RlLT5pX2Jsb2NrcykgPDwgOSkgKyBpbm9kZS0+aV9ieXRlczsKfQpsb2ZmX3QgaW5vZGVf Z2V0X2J5dGVzKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwp2b2lkIGlub2RlX3NldF9ieXRlcyhzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3QgYnl0ZXMpOwpjb25zdCBjaGFyICpzaW1wbGVfZ2V0X2xp bmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiwKICAgICAgIHN0cnVjdCBkZWxheWVk X2NhbGwgKik7CmV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBzaW1wbGVfc3lt bGlua19pbm9kZV9vcGVyYXRpb25zOwoKZXh0ZXJuIGludCBpdGVyYXRlX2RpcihzdHJ1Y3QgZmls ZSAqLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKik7CgpleHRlcm4gaW50IHZmc19zdGF0eChpbnQsIGNv bnN0IGNoYXIgKiwgaW50LCBzdHJ1Y3Qga3N0YXQgKiwgdTMyKTsKZXh0ZXJuIGludCB2ZnNfc3Rh dHhfZmQodW5zaWduZWQgaW50LCBzdHJ1Y3Qga3N0YXQgKiwgdTMyLCB1bnNpZ25lZCBpbnQpOwoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IHZmc19zdGF0KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3Qga3N0YXQgKnN0YXQpCnsK IHJldHVybiB2ZnNfc3RhdHgoLTEwMCwgZmlsZW5hbWUsIDB4ODAwLAogICAgc3RhdCwgMHgwMDAw MDdmZlUpOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGludCB2ZnNfbHN0YXQoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGtzdGF0ICpz dGF0KQp7CiByZXR1cm4gdmZzX3N0YXR4KC0xMDAsIG5hbWUsIDB4MTAwIHwgMHg4MDAsCiAgICBz dGF0LCAweDAwMDAwN2ZmVSk7Cn0Kc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHZmc19mc3RhdGF0KGludCBkZmQsIGNvbnN0IGNoYXIg KmZpbGVuYW1lLAogICAgICAgICBzdHJ1Y3Qga3N0YXQgKnN0YXQsIGludCBmbGFncykKewogcmV0 dXJuIHZmc19zdGF0eChkZmQsIGZpbGVuYW1lLCBmbGFncyB8IDB4ODAwLAogICAgc3RhdCwgMHgw MDAwMDdmZlUpOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGludCB2ZnNfZnN0YXQoaW50IGZkLCBzdHJ1Y3Qga3N0YXQgKnN0YXQpCnsK IHJldHVybiB2ZnNfc3RhdHhfZmQoZmQsIHN0YXQsIDB4MDAwMDA3ZmZVLCAwKTsKfQoKCmV4dGVy biBjb25zdCBjaGFyICp2ZnNfZ2V0X2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVsYXll ZF9jYWxsICopOwpleHRlcm4gaW50IHZmc19yZWFkbGluayhzdHJ1Y3QgZGVudHJ5ICosIGNoYXIg KiwgaW50KTsKCmV4dGVybiBpbnQgX19nZW5lcmljX2Jsb2NrX2ZpZW1hcChzdHJ1Y3QgaW5vZGUg Kmlub2RlLAogICAgICBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICpmaWVpbmZvLAogICAgICBs b2ZmX3Qgc3RhcnQsIGxvZmZfdCBsZW4sCiAgICAgIGdldF9ibG9ja190ICpnZXRfYmxvY2spOwpl eHRlcm4gaW50IGdlbmVyaWNfYmxvY2tfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAgICBz dHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICpmaWVpbmZvLCB1NjQgc3RhcnQsCiAgICB1NjQgbGVu LCBnZXRfYmxvY2tfdCAqZ2V0X2Jsb2NrKTsKCmV4dGVybiBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlw ZSAqZ2V0X2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzKTsKZXh0ZXJuIHZv aWQgcHV0X2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzKTsKZXh0ZXJuIHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlICpnZXRfZnNfdHlwZShjb25zdCBjaGFyICpuYW1lKTsKZXh0 ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyKHN0cnVjdCBibG9ja19kZXZpY2UgKik7 CmV4dGVybiBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKmdldF9zdXBlcl90aGF3ZWQoc3RydWN0IGJsb2Nr X2RldmljZSAqKTsKZXh0ZXJuIHN0cnVjdCBzdXBlcl9ibG9jayAqZ2V0X3N1cGVyX2V4Y2x1c2l2 ZV90aGF3ZWQoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7CmV4dGVybiBzdHJ1Y3Qgc3VwZXJf YmxvY2sgKmdldF9hY3RpdmVfc3VwZXIoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldik7CmV4dGVy biB2b2lkIGRyb3Bfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CmV4dGVybiB2b2lkIGRy b3Bfc3VwZXJfZXhjbHVzaXZlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpleHRlcm4gdm9pZCBp dGVyYXRlX3N1cGVycyh2b2lkICgqKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKiwgdm9pZCAqKSwgdm9p ZCAqKTsKZXh0ZXJuIHZvaWQgaXRlcmF0ZV9zdXBlcnNfdHlwZShzdHJ1Y3QgZmlsZV9zeXN0ZW1f dHlwZSAqLAogICAgICAgICAgIHZvaWQgKCopKHN0cnVjdCBzdXBlcl9ibG9jayAqLCB2b2lkICop LCB2b2lkICopOwoKZXh0ZXJuIGludCBkY2FjaGVfZGlyX29wZW4oc3RydWN0IGlub2RlICosIHN0 cnVjdCBmaWxlICopOwpleHRlcm4gaW50IGRjYWNoZV9kaXJfY2xvc2Uoc3RydWN0IGlub2RlICos IHN0cnVjdCBmaWxlICopOwpleHRlcm4gbG9mZl90IGRjYWNoZV9kaXJfbHNlZWsoc3RydWN0IGZp bGUgKiwgbG9mZl90LCBpbnQpOwpleHRlcm4gaW50IGRjYWNoZV9yZWFkZGlyKHN0cnVjdCBmaWxl ICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKZXh0ZXJuIGludCBzaW1wbGVfc2V0YXR0cihzdHJ1 Y3QgZGVudHJ5ICosIHN0cnVjdCBpYXR0ciAqKTsKZXh0ZXJuIGludCBzaW1wbGVfZ2V0YXR0cihj b25zdCBzdHJ1Y3QgcGF0aCAqLCBzdHJ1Y3Qga3N0YXQgKiwgdTMyLCB1bnNpZ25lZCBpbnQpOwpl eHRlcm4gaW50IHNpbXBsZV9zdGF0ZnMoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRmcyAq KTsKZXh0ZXJuIGludCBzaW1wbGVfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSk7CmV4dGVybiBpbnQgc2ltcGxlX2xpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg aW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCBzaW1wbGVfdW5saW5rKHN0cnVj dCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOwpleHRlcm4gaW50IHNpbXBsZV9ybWRpcihzdHJ1 Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKZXh0ZXJuIGludCBzaW1wbGVfcmVuYW1lKHN0 cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCiAgICBzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0 IGRlbnRyeSAqLCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBzaW1wbGVfcmVjdXJzaXZlX3Jl bW92YWwoc3RydWN0IGRlbnRyeSAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk ICgqY2FsbGJhY2spKHN0cnVjdCBkZW50cnkgKikpOwpleHRlcm4gaW50IG5vb3BfZnN5bmMoc3Ry dWN0IGZpbGUgKiwgbG9mZl90LCBsb2ZmX3QsIGludCk7CmV4dGVybiBpbnQgbm9vcF9zZXRfcGFn ZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqcGFnZSk7CmV4dGVybiB2b2lkIG5vb3BfaW52YWxpZGF0ZXBh Z2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvZmZzZXQsCiAgdW5zaWduZWQgaW50 IGxlbmd0aCk7CmV4dGVybiBzc2l6ZV90IG5vb3BfZGlyZWN0X0lPKHN0cnVjdCBraW9jYiAqaW9j Yiwgc3RydWN0IGlvdl9pdGVyICppdGVyKTsKZXh0ZXJuIGludCBzaW1wbGVfZW1wdHkoc3RydWN0 IGRlbnRyeSAqKTsKZXh0ZXJuIGludCBzaW1wbGVfcmVhZHBhZ2Uoc3RydWN0IGZpbGUgKmZpbGUs IHN0cnVjdCBwYWdlICpwYWdlKTsKZXh0ZXJuIGludCBzaW1wbGVfd3JpdGVfYmVnaW4oc3RydWN0 IGZpbGUgKmZpbGUsIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAogICBsb2ZmX3QgcG9z LCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGZsYWdzLAogICBzdHJ1Y3QgcGFnZSAqKnBhZ2VwLCB2 b2lkICoqZnNkYXRhKTsKZXh0ZXJuIGludCBzaW1wbGVfd3JpdGVfZW5kKHN0cnVjdCBmaWxlICpm aWxlLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKICAgbG9mZl90IHBvcywgdW5zaWdu ZWQgbGVuLCB1bnNpZ25lZCBjb3BpZWQsCiAgIHN0cnVjdCBwYWdlICpwYWdlLCB2b2lkICpmc2Rh dGEpOwpleHRlcm4gaW50IGFsd2F5c19kZWxldGVfZGVudHJ5KGNvbnN0IHN0cnVjdCBkZW50cnkg Kik7CmV4dGVybiBzdHJ1Y3QgaW5vZGUgKmFsbG9jX2Fub25faW5vZGUoc3RydWN0IHN1cGVyX2Js b2NrICopOwpleHRlcm4gaW50IHNpbXBsZV9ub3NldGxlYXNlKHN0cnVjdCBmaWxlICosIGxvbmcs IHN0cnVjdCBmaWxlX2xvY2sgKiosIHZvaWQgKiopOwpleHRlcm4gY29uc3Qgc3RydWN0IGRlbnRy eV9vcGVyYXRpb25zIHNpbXBsZV9kZW50cnlfb3BlcmF0aW9uczsKCmV4dGVybiBzdHJ1Y3QgZGVu dHJ5ICpzaW1wbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVuc2ln bmVkIGludCBmbGFncyk7CmV4dGVybiBzc2l6ZV90IGdlbmVyaWNfcmVhZF9kaXIoc3RydWN0IGZp bGUgKiwgY2hhciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgc2ltcGxlX2Rpcl9vcGVyYXRpb25zOwpleHRlcm4gY29uc3Qgc3RydWN0IGlu b2RlX29wZXJhdGlvbnMgc2ltcGxlX2Rpcl9pbm9kZV9vcGVyYXRpb25zOwpleHRlcm4gdm9pZCBt YWtlX2VtcHR5X2Rpcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKZXh0ZXJuIGJvb2wgaXNf ZW1wdHlfZGlyX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpzdHJ1Y3QgdHJlZV9kZXNjciB7 IGNvbnN0IGNoYXIgKm5hbWU7IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKm9wczsgaW50 IG1vZGU7IH07CnN0cnVjdCBkZW50cnkgKmRfYWxsb2NfbmFtZShzdHJ1Y3QgZGVudHJ5ICosIGNv bnN0IGNoYXIgKik7CmV4dGVybiBpbnQgc2ltcGxlX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Js b2NrICosIHVuc2lnbmVkIGxvbmcsCiAgICAgICAgY29uc3Qgc3RydWN0IHRyZWVfZGVzY3IgKik7 CmV4dGVybiBpbnQgc2ltcGxlX3Bpbl9mcyhzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqLCBzdHJ1 Y3QgdmZzbW91bnQgKiptb3VudCwgaW50ICpjb3VudCk7CmV4dGVybiB2b2lkIHNpbXBsZV9yZWxl YXNlX2ZzKHN0cnVjdCB2ZnNtb3VudCAqKm1vdW50LCBpbnQgKmNvdW50KTsKCmV4dGVybiBzc2l6 ZV90IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHZvaWQgKnRvLCBzaXplX3QgY291bnQsCiAgIGxv ZmZfdCAqcHBvcywgY29uc3Qgdm9pZCAqZnJvbSwgc2l6ZV90IGF2YWlsYWJsZSk7CmV4dGVybiBz c2l6ZV90IHNpbXBsZV93cml0ZV90b19idWZmZXIodm9pZCAqdG8sIHNpemVfdCBhdmFpbGFibGUs IGxvZmZfdCAqcHBvcywKICBjb25zdCB2b2lkICpmcm9tLCBzaXplX3QgY291bnQpOwoKZXh0ZXJu IGludCBfX2dlbmVyaWNfZmlsZV9mc3luYyhzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGxvZmZfdCwg aW50KTsKZXh0ZXJuIGludCBnZW5lcmljX2ZpbGVfZnN5bmMoc3RydWN0IGZpbGUgKiwgbG9mZl90 LCBsb2ZmX3QsIGludCk7CgpleHRlcm4gaW50IGdlbmVyaWNfY2hlY2tfYWRkcmVzc2FibGUodW5z aWduZWQsIHU2NCk7CgoKZXh0ZXJuIGludCBidWZmZXJfbWlncmF0ZV9wYWdlKHN0cnVjdCBhZGRy ZXNzX3NwYWNlICosCiAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAqLAogICAgZW51bSBt aWdyYXRlX21vZGUpOwpleHRlcm4gaW50IGJ1ZmZlcl9taWdyYXRlX3BhZ2Vfbm9yZWZzKHN0cnVj dCBhZGRyZXNzX3NwYWNlICosCiAgICBzdHJ1Y3QgcGFnZSAqLCBzdHJ1Y3QgcGFnZSAqLAogICAg ZW51bSBtaWdyYXRlX21vZGUpOwoKCgoKCmV4dGVybiBpbnQgc2V0YXR0cl9wcmVwYXJlKHN0cnVj dCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICopOwpleHRlcm4gaW50IGlub2RlX25ld3NpemVfb2so Y29uc3Qgc3RydWN0IGlub2RlICosIGxvZmZfdCBvZmZzZXQpOwpleHRlcm4gdm9pZCBzZXRhdHRy X2NvcHkoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IGlhdHRyICphdHRyKTsKCmV4 dGVybiBpbnQgZmlsZV91cGRhdGVfdGltZShzdHJ1Y3QgZmlsZSAqZmlsZSk7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGlvX2lz X2RpcmVjdChzdHJ1Y3QgZmlsZSAqZmlscCkKewogcmV0dXJuIChmaWxwLT5mX2ZsYWdzICYgMDAw NDAwMDApIHx8ICgoZmlscC0+Zl9tYXBwaW5nLT5ob3N0KS0+aV9mbGFncyAmIDgxOTIpOwp9Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBi b29sIHZtYV9pc19kYXgoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCnsKIHJldHVybiB2bWEt PnZtX2ZpbGUgJiYgKCh2bWEtPnZtX2ZpbGUtPmZfbWFwcGluZy0+aG9zdCktPmlfZmxhZ3MgJiA4 MTkyKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCB2bWFfaXNfZnNkYXgoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCnsK IHN0cnVjdCBpbm9kZSAqaW5vZGU7CgogaWYgKCF2bWEtPnZtX2ZpbGUpCiAgcmV0dXJuIGZhbHNl OwogaWYgKCF2bWFfaXNfZGF4KHZtYSkpCiAgcmV0dXJuIGZhbHNlOwogaW5vZGUgPSBmaWxlX2lu b2RlKHZtYS0+dm1fZmlsZSk7CiBpZiAoKCgoaW5vZGUtPmlfbW9kZSkgJiAwMDE3MDAwMCkgPT0g MDAyMDAwMCkpCiAgcmV0dXJuIGZhbHNlOwogcmV0dXJuIHRydWU7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBpb2NiX2ZsYWdz KHN0cnVjdCBmaWxlICpmaWxlKQp7CiBpbnQgcmVzID0gMDsKIGlmIChmaWxlLT5mX2ZsYWdzICYg MDAwMDIwMDApCiAgcmVzIHw9ICgxIDw8IDEpOwogaWYgKGlvX2lzX2RpcmVjdChmaWxlKSkKICBy ZXMgfD0gKDEgPDwgMik7CiBpZiAoKGZpbGUtPmZfZmxhZ3MgJiAwMDAxMDAwMCkgfHwgKCgoZmls ZS0+Zl9tYXBwaW5nLT5ob3N0KS0+aV9zYi0+c19mbGFncyAmICgxNikpIHx8ICgoZmlsZS0+Zl9t YXBwaW5nLT5ob3N0KS0+aV9mbGFncyAmIDEpKSkKICByZXMgfD0gKDEgPDwgNCk7CiBpZiAoZmls ZS0+Zl9mbGFncyAmIDA0MDAwMDAwKQogIHJlcyB8PSAoMSA8PCA1KTsKIHJldHVybiByZXM7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGludCBraW9jYl9zZXRfcndfZmxhZ3Moc3RydWN0IGtpb2NiICpraSwgcndmX3QgZmxhZ3MpCnsK IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKGZsYWdzICYgfigoKCBfX2tlcm5lbF9yd2ZfdCkweDAw MDAwMDAxKSB8ICgoIF9fa2VybmVsX3J3Zl90KTB4MDAwMDAwMDIpIHwgKCggX19rZXJuZWxfcndm X3QpMHgwMDAwMDAwNCkgfCAoKCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAwMDA4KSB8ICgoIF9fa2Vy bmVsX3J3Zl90KTB4MDAwMDAwMTApKSksIDApKQogIHJldHVybiAtOTU7CgogaWYgKGZsYWdzICYg KCggX19rZXJuZWxfcndmX3QpMHgwMDAwMDAwOCkpIHsKICBpZiAoIShraS0+a2lfZmlscC0+Zl9t b2RlICYgKCggZm1vZGVfdCkweDgwMDAwMDApKSkKICAgcmV0dXJuIC05NTsKICBraS0+a2lfZmxh Z3MgfD0gKDEgPDwgNyk7CiB9CiBpZiAoZmxhZ3MgJiAoKCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAw MDAxKSkKICBraS0+a2lfZmxhZ3MgfD0gKDEgPDwgMyk7CiBpZiAoZmxhZ3MgJiAoKCBfX2tlcm5l bF9yd2ZfdCkweDAwMDAwMDAyKSkKICBraS0+a2lfZmxhZ3MgfD0gKDEgPDwgNCk7CiBpZiAoZmxh Z3MgJiAoKCBfX2tlcm5lbF9yd2ZfdCkweDAwMDAwMDA0KSkKICBraS0+a2lfZmxhZ3MgfD0gKCgx IDw8IDQpIHwgKDEgPDwgNSkpOwogaWYgKGZsYWdzICYgKCggX19rZXJuZWxfcndmX3QpMHgwMDAw MDAxMCkpCiAga2ktPmtpX2ZsYWdzIHw9ICgxIDw8IDEpOwogcmV0dXJuIDA7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IHBh cmVudF9pbm8oc3RydWN0IGRlbnRyeSAqZGVudHJ5KQp7CiBpbm9fdCByZXM7CgoKCgoKIHNwaW5f bG9jaygmZGVudHJ5LT5kX2xvY2tyZWYubG9jayk7CiByZXMgPSBkZW50cnktPmRfcGFyZW50LT5k X2lub2RlLT5pX2lubzsKIHNwaW5fdW5sb2NrKCZkZW50cnktPmRfbG9ja3JlZi5sb2NrKTsKIHJl dHVybiByZXM7Cn0KCgoKCgoKCnN0cnVjdCBzaW1wbGVfdHJhbnNhY3Rpb25fYXJncmVzcCB7CiBz c2l6ZV90IHNpemU7CiBjaGFyIGRhdGFbMF07Cn07CgoKCmNoYXIgKnNpbXBsZV90cmFuc2FjdGlv bl9nZXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZiwKICAgIHNpemVfdCBzaXpl KTsKc3NpemVfdCBzaW1wbGVfdHJhbnNhY3Rpb25fcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hh ciAqYnVmLAogICAgc2l6ZV90IHNpemUsIGxvZmZfdCAqcG9zKTsKaW50IHNpbXBsZV90cmFuc2Fj dGlvbl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTsKCnZv aWQgc2ltcGxlX3RyYW5zYWN0aW9uX3NldChzdHJ1Y3QgZmlsZSAqZmlsZSwgc2l6ZV90IG4pOwoj IDM1MTUgIi4vaW5jbHVkZS9saW51eC9mcy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHBy aW50ZiwgMSwgMikpKQp2b2lkIF9fc2ltcGxlX2F0dHJfY2hlY2tfZm9ybWF0KGNvbnN0IGNoYXIg KmZtdCwgLi4uKQp7Cgp9CgppbnQgc2ltcGxlX2F0dHJfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKICAgICAgIGludCAoKmdldCkodm9pZCAqLCB1NjQgKiksIGlu dCAoKnNldCkodm9pZCAqLCB1NjQpLAogICAgICAgY29uc3QgY2hhciAqZm10KTsKaW50IHNpbXBs ZV9hdHRyX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpOwpz c2l6ZV90IHNpbXBsZV9hdHRyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgKmJ1ZiwKICAg IHNpemVfdCBsZW4sIGxvZmZfdCAqcHBvcyk7CnNzaXplX3Qgc2ltcGxlX2F0dHJfd3JpdGUoc3Ry dWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmJ1ZiwKICAgICBzaXplX3QgbGVuLCBsb2ZmX3Qg KnBwb3MpOwoKc3RydWN0IGN0bF90YWJsZTsKaW50IHByb2NfbnJfZmlsZXMoc3RydWN0IGN0bF90 YWJsZSAqdGFibGUsIGludCB3cml0ZSwKICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBs b2ZmX3QgKnBwb3MpOwppbnQgcHJvY19ucl9kZW50cnkoc3RydWN0IGN0bF90YWJsZSAqdGFibGUs IGludCB3cml0ZSwKICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLCBsb2ZmX3QgKnBwb3Mp OwppbnQgcHJvY19ucl9pbm9kZXMoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSwK ICAgICB2b2lkICpidWZmZXIsIHNpemVfdCAqbGVucCwgbG9mZl90ICpwcG9zKTsKaW50IF9fYXR0 cmlidXRlX18oKF9fc2VjdGlvbl9fKCIuaW5pdC50ZXh0IikpKSBfX2F0dHJpYnV0ZV9fKChfX2Nv bGRfXykpIGdldF9maWxlc3lzdGVtX2xpc3QoY2hhciAqYnVmKTsKIyAzNTQ2ICIuL2luY2x1ZGUv bGludXgvZnMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBpc19zeGlkKHVtb2RlX3QgbW9kZSkKewogcmV0dXJuIChtb2RlICYg MDAwNDAwMCkgfHwgKChtb2RlICYgMDAwMjAwMCkgJiYgKG1vZGUgJiAwMDAxMCkpOwp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg Y2hlY2tfc3RpY2t5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBp ZiAoIShkaXItPmlfbW9kZSAmIDAwMDEwMDApKQogIHJldHVybiAwOwoKIHJldHVybiBfX2NoZWNr X3N0aWNreShkaXIsIGlub2RlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBpbm9kZV9oYXNfbm9feGF0dHIoc3RydWN0IGlu b2RlICppbm9kZSkKewogaWYgKCFpc19zeGlkKGlub2RlLT5pX21vZGUpICYmIChpbm9kZS0+aV9z Yi0+c19mbGFncyAmICgxPDwyOCkpKQogIGlub2RlLT5pX2ZsYWdzIHw9IDQwOTY7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg aXNfcm9vdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiByZXR1cm4gaW5vZGUgPT0gaW5v ZGUtPmlfc2ItPnNfcm9vdC0+ZF9pbm9kZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkaXJfZW1pdChzdHJ1Y3QgZGlyX2Nv bnRleHQgKmN0eCwKICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lbGVuLAogICAgICAg dTY0IGlubywgdW5zaWduZWQgdHlwZSkKewogcmV0dXJuIGN0eC0+YWN0b3IoY3R4LCBuYW1lLCBu YW1lbGVuLCBjdHgtPnBvcywgaW5vLCB0eXBlKSA9PSAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGlyX2VtaXRfZG90KHN0 cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCkKewogcmV0dXJuIGN0eC0+ YWN0b3IoY3R4LCAiLiIsIDEsIGN0eC0+cG9zLAogICAgIGZpbGUtPmZfcGF0aC5kZW50cnktPmRf aW5vZGUtPmlfaW5vLCA0KSA9PSAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGlyX2VtaXRfZG90ZG90KHN0cnVjdCBmaWxl ICpmaWxlLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCkKewogcmV0dXJuIGN0eC0+YWN0b3IoY3R4 LCAiLi4iLCAyLCBjdHgtPnBvcywKICAgICBwYXJlbnRfaW5vKGZpbGUtPmZfcGF0aC5kZW50cnkp LCA0KSA9PSAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgZGlyX2VtaXRfZG90cyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0 IGRpcl9jb250ZXh0ICpjdHgpCnsKIGlmIChjdHgtPnBvcyA9PSAwKSB7CiAgaWYgKCFkaXJfZW1p dF9kb3QoZmlsZSwgY3R4KSkKICAgcmV0dXJuIGZhbHNlOwogIGN0eC0+cG9zID0gMTsKIH0KIGlm IChjdHgtPnBvcyA9PSAxKSB7CiAgaWYgKCFkaXJfZW1pdF9kb3Rkb3QoZmlsZSwgY3R4KSkKICAg cmV0dXJuIGZhbHNlOwogIGN0eC0+cG9zID0gMjsKIH0KIHJldHVybiB0cnVlOwp9CnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGly X3JlbGF4KHN0cnVjdCBpbm9kZSAqaW5vZGUpCnsKIGlub2RlX3VubG9jayhpbm9kZSk7CiBpbm9k ZV9sb2NrKGlub2RlKTsKIHJldHVybiAhKChpbm9kZSktPmlfZmxhZ3MgJiAxNik7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZGlyX3JlbGF4X3NoYXJlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKQp7CiBpbm9kZV91bmxvY2tfc2hh cmVkKGlub2RlKTsKIGlub2RlX2xvY2tfc2hhcmVkKGlub2RlKTsKIHJldHVybiAhKChpbm9kZSkt PmlfZmxhZ3MgJiAxNik7Cn0KCmV4dGVybiBib29sIHBhdGhfbm9leGVjKGNvbnN0IHN0cnVjdCBw YXRoICpwYXRoKTsKZXh0ZXJuIHZvaWQgaW5vZGVfbm9oaWdobWVtKHN0cnVjdCBpbm9kZSAqaW5v ZGUpOwoKCmV4dGVybiBpbnQgdmZzX2ZhZHZpc2Uoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBv ZmZzZXQsIGxvZmZfdCBsZW4sCiAgICAgICAgIGludCBhZHZpY2UpOwpleHRlcm4gaW50IGdlbmVy aWNfZmFkdmlzZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbiwK ICAgICAgaW50IGFkdmljZSk7CgoKZXh0ZXJuIHN0cnVjdCBzb2NrICppb191cmluZ19nZXRfc29j a2V0KHN0cnVjdCBmaWxlICpmaWxlKTsKCgoKCgoKCmludCB2ZnNfaW9jX3NldGZsYWdzX3ByZXBh cmUoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgaW50IG9sZGZsYWdzLAogICAgICAgIHVu c2lnbmVkIGludCBmbGFncyk7CgppbnQgdmZzX2lvY19mc3NldHhhdHRyX2NoZWNrKHN0cnVjdCBp bm9kZSAqaW5vZGUsIGNvbnN0IHN0cnVjdCBmc3hhdHRyICpvbGRfZmEsCiAgICAgICAgc3RydWN0 IGZzeGF0dHIgKmZhKTsKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgc2ltcGxlX2ZpbGxfZnN4YXR0cihzdHJ1Y3QgZnN4YXR0ciAq ZmEsIF9fdTMyIHhmbGFncykKewogbWVtc2V0KGZhLCAwLCBzaXplb2YoKmZhKSk7CiBmYS0+ZnN4 X3hmbGFncyA9IHhmbGFnczsKfQoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgaW5vZGVfZHJhaW5fd3JpdGVzKHN0cnVjdCBp bm9kZSAqaW5vZGUpCnsKIGlub2RlX2Rpb193YWl0KGlub2RlKTsKIHJldHVybiBmaWxlbWFwX3dy aXRlX2FuZF93YWl0KGlub2RlLT5pX21hcHBpbmcpOwp9CiMgMTIgIi4vaW5jbHVkZS9saW51eC9z ZXFfZmlsZS5oIiAyCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIgMQojIDEzICIuL2luY2x1 ZGUvbGludXgvY3JlZC5oIgojIDEgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIgMQojIDE3ICIuL2lu Y2x1ZGUvbGludXgva2V5LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIiAxCiMgMzAg Ii4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIKIyAxICIuL2luY2x1ZGUvdWFwaS9saW51eC9zeXNj dGwuaCIgMQojIDM1ICIuL2luY2x1ZGUvdWFwaS9saW51eC9zeXNjdGwuaCIKc3RydWN0IF9fc3lz Y3RsX2FyZ3MgewogaW50ICpuYW1lOwogaW50IG5sZW47CiB2b2lkICpvbGR2YWw7CiBzaXplX3Qg Km9sZGxlbnA7CiB2b2lkICpuZXd2YWw7CiBzaXplX3QgbmV3bGVuOwogdW5zaWduZWQgbG9uZyBf X3VudXNlZFs0XTsKfTsKCgoKCgplbnVtCnsKIENUTF9LRVJOPTEsCiBDVExfVk09MiwKIENUTF9O RVQ9MywKIENUTF9QUk9DPTQsCiBDVExfRlM9NSwKIENUTF9ERUJVRz02LAogQ1RMX0RFVj03LAog Q1RMX0JVUz04LAogQ1RMX0FCST05LAogQ1RMX0NQVT0xMCwKIENUTF9BUkxBTj0yNTQsCiBDVExf UzM5MERCRj01Njc3LAogQ1RMX1NVTlJQQz03MjQ5LAogQ1RMX1BNPTk4OTksCiBDVExfRlJWPTk4 OTgsCn07CgoKZW51bQp7CiBDVExfQlVTX0lTQT0xCn07CgoKZW51bQp7CiBJTk9USUZZX01BWF9V U0VSX0lOU1RBTkNFUz0xLAogSU5PVElGWV9NQVhfVVNFUl9XQVRDSEVTPTIsCiBJTk9USUZZX01B WF9RVUVVRURfRVZFTlRTPTMKfTsKCgplbnVtCnsKIEtFUk5fT1NUWVBFPTEsCiBLRVJOX09TUkVM RUFTRT0yLAogS0VSTl9PU1JFVj0zLAogS0VSTl9WRVJTSU9OPTQsCiBLRVJOX1NFQ1VSRU1BU0s9 NSwKIEtFUk5fUFJPRj02LAogS0VSTl9OT0RFTkFNRT03LAogS0VSTl9ET01BSU5OQU1FPTgsCgog S0VSTl9QQU5JQz0xNSwKIEtFUk5fUkVBTFJPT1RERVY9MTYsCgogS0VSTl9TUEFSQ19SRUJPT1Q9 MjEsCiBLRVJOX0NUTEFMVERFTD0yMiwKIEtFUk5fUFJJTlRLPTIzLAogS0VSTl9OQU1FVFJBTlM9 MjQsCiBLRVJOX1BQQ19IVEFCUkVDTEFJTT0yNSwKIEtFUk5fUFBDX1pFUk9QQUdFRD0yNiwKIEtF Uk5fUFBDX1BPV0VSU0FWRV9OQVA9MjcsCiBLRVJOX01PRFBST0JFPTI4LAogS0VSTl9TR19CSUdf QlVGRj0yOSwKIEtFUk5fQUNDVD0zMCwKIEtFUk5fUFBDX0wyQ1I9MzEsCgogS0VSTl9SVFNJR05S PTMyLAogS0VSTl9SVFNJR01BWD0zMywKCiBLRVJOX1NITU1BWD0zNCwKIEtFUk5fTVNHTUFYPTM1 LAogS0VSTl9NU0dNTkI9MzYsCiBLRVJOX01TR1BPT0w9MzcsCiBLRVJOX1NZU1JRPTM4LAogS0VS Tl9NQVhfVEhSRUFEUz0zOSwKICBLRVJOX1JBTkRPTT00MCwKICBLRVJOX1NITUFMTD00MSwKICBL RVJOX01TR01OST00MiwKICBLRVJOX1NFTT00MywKICBLRVJOX1NQQVJDX1NUT1BfQT00NCwKICBL RVJOX1NITU1OST00NSwKIEtFUk5fT1ZFUkZMT1dVSUQ9NDYsCiBLRVJOX09WRVJGTE9XR0lEPTQ3 LAogS0VSTl9TSE1QQVRIPTQ4LAogS0VSTl9IT1RQTFVHPTQ5LAogS0VSTl9JRUVFX0VNVUxBVElP Tl9XQVJOSU5HUz01MCwKIEtFUk5fUzM5MF9VU0VSX0RFQlVHX0xPR0dJTkc9NTEsCiBLRVJOX0NP UkVfVVNFU19QSUQ9NTIsCiBLRVJOX1RBSU5URUQ9NTMsCiBLRVJOX0NBRFBJRD01NCwKIEtFUk5f UElETUFYPTU1LAogICBLRVJOX0NPUkVfUEFUVEVSTj01NiwKIEtFUk5fUEFOSUNfT05fT09QUz01 NywKIEtFUk5fSFBQQV9QV1JTVz01OCwKIEtFUk5fSFBQQV9VTkFMSUdORUQ9NTksCiBLRVJOX1BS SU5US19SQVRFTElNSVQ9NjAsCiBLRVJOX1BSSU5US19SQVRFTElNSVRfQlVSU1Q9NjEsCiBLRVJO X1BUWT02MiwKIEtFUk5fTkdST1VQU19NQVg9NjMsCiBLRVJOX1NQQVJDX1NDT05TX1BXUk9GRj02 NCwKIEtFUk5fSFpfVElNRVI9NjUsCiBLRVJOX1VOS05PV05fTk1JX1BBTklDPTY2LAogS0VSTl9C T09UTE9BREVSX1RZUEU9NjcsCiBLRVJOX1JBTkRPTUlaRT02OCwKIEtFUk5fU0VUVUlEX0RVTVBB QkxFPTY5LAogS0VSTl9TUElOX1JFVFJZPTcwLAogS0VSTl9BQ1BJX1ZJREVPX0ZMQUdTPTcxLAog S0VSTl9JQTY0X1VOQUxJR05FRD03MiwKIEtFUk5fQ09NUEFUX0xPRz03MywKIEtFUk5fTUFYX0xP Q0tfREVQVEg9NzQsCiBLRVJOX05NSV9XQVRDSERPRz03NSwKIEtFUk5fUEFOSUNfT05fTk1JPTc2 LAogS0VSTl9QQU5JQ19PTl9XQVJOPTc3LAogS0VSTl9QQU5JQ19QUklOVD03OCwKfTsKCgoKCmVu dW0KewogVk1fVU5VU0VEMT0xLAogVk1fVU5VU0VEMj0yLAogVk1fVU5VU0VEMz0zLAogVk1fVU5V U0VEND00LAogVk1fT1ZFUkNPTU1JVF9NRU1PUlk9NSwKIFZNX1VOVVNFRDU9NiwKIFZNX1VOVVNF RDc9NywKIFZNX1VOVVNFRDg9OCwKIFZNX1VOVVNFRDk9OSwKIFZNX1BBR0VfQ0xVU1RFUj0xMCwK IFZNX0RJUlRZX0JBQ0tHUk9VTkQ9MTEsCiBWTV9ESVJUWV9SQVRJTz0xMiwKIFZNX0RJUlRZX1dC X0NTPTEzLAogVk1fRElSVFlfRVhQSVJFX0NTPTE0LAogVk1fTlJfUERGTFVTSF9USFJFQURTPTE1 LAogVk1fT1ZFUkNPTU1JVF9SQVRJTz0xNiwKIFZNX1BBR0VCVUY9MTcsCiBWTV9IVUdFVExCX1BB R0VTPTE4LAogVk1fU1dBUFBJTkVTUz0xOSwKIFZNX0xPV01FTV9SRVNFUlZFX1JBVElPPTIwLAog Vk1fTUlOX0ZSRUVfS0JZVEVTPTIxLAogVk1fTUFYX01BUF9DT1VOVD0yMiwKIFZNX0xBUFRPUF9N T0RFPTIzLAogVk1fQkxPQ0tfRFVNUD0yNCwKIFZNX0hVR0VUTEJfR1JPVVA9MjUsCiBWTV9WRlNf Q0FDSEVfUFJFU1NVUkU9MjYsCiBWTV9MRUdBQ1lfVkFfTEFZT1VUPTI3LAogVk1fU1dBUF9UT0tF Tl9USU1FT1VUPTI4LAogVk1fRFJPUF9QQUdFQ0FDSEU9MjksCiBWTV9QRVJDUFVfUEFHRUxJU1Rf RlJBQ1RJT049MzAsCiBWTV9aT05FX1JFQ0xBSU1fTU9ERT0zMSwKIFZNX01JTl9VTk1BUFBFRD0z MiwKIFZNX1BBTklDX09OX09PTT0zMywKIFZNX1ZEU09fRU5BQkxFRD0zNCwKIFZNX01JTl9TTEFC PTM1LAp9OwoKCgplbnVtCnsKIE5FVF9DT1JFPTEsCiBORVRfRVRIRVI9MiwKIE5FVF84MDI9MywK IE5FVF9VTklYPTQsCiBORVRfSVBWND01LAogTkVUX0lQWD02LAogTkVUX0FUQUxLPTcsCiBORVRf TkVUUk9NPTgsCiBORVRfQVgyNT05LAogTkVUX0JSSURHRT0xMCwKIE5FVF9ST1NFPTExLAogTkVU X0lQVjY9MTIsCiBORVRfWDI1PTEzLAogTkVUX1RSPTE0LAogTkVUX0RFQ05FVD0xNSwKIE5FVF9F Q09ORVQ9MTYsCiBORVRfU0NUUD0xNywKIE5FVF9MTEM9MTgsCiBORVRfTkVURklMVEVSPTE5LAog TkVUX0RDQ1A9MjAsCiBORVRfSVJEQT00MTIsCn07CgoKZW51bQp7CiBSQU5ET01fUE9PTFNJWkU9 MSwKIFJBTkRPTV9FTlRST1BZX0NPVU5UPTIsCiBSQU5ET01fUkVBRF9USFJFU0g9MywKIFJBTkRP TV9XUklURV9USFJFU0g9NCwKIFJBTkRPTV9CT09UX0lEPTUsCiBSQU5ET01fVVVJRD02Cn07CgoK ZW51bQp7CiBQVFlfTUFYPTEsCiBQVFlfTlI9Mgp9OwoKCmVudW0KewogQlVTX0lTQV9NRU1fQkFT RT0xLAogQlVTX0lTQV9QT1JUX0JBU0U9MiwKIEJVU19JU0FfUE9SVF9TSElGVD0zCn07CgoKZW51 bQp7CiBORVRfQ09SRV9XTUVNX01BWD0xLAogTkVUX0NPUkVfUk1FTV9NQVg9MiwKIE5FVF9DT1JF X1dNRU1fREVGQVVMVD0zLAogTkVUX0NPUkVfUk1FTV9ERUZBVUxUPTQsCgogTkVUX0NPUkVfTUFY X0JBQ0tMT0c9NiwKIE5FVF9DT1JFX0ZBU1RST1VURT03LAogTkVUX0NPUkVfTVNHX0NPU1Q9OCwK IE5FVF9DT1JFX01TR19CVVJTVD05LAogTkVUX0NPUkVfT1BUTUVNX01BWD0xMCwKIE5FVF9DT1JF X0hPVF9MSVNUX0xFTkdUSD0xMSwKIE5FVF9DT1JFX0RJVkVSVF9WRVJTSU9OPTEyLAogTkVUX0NP UkVfTk9fQ09OR19USFJFU0g9MTMsCiBORVRfQ09SRV9OT19DT05HPTE0LAogTkVUX0NPUkVfTE9f Q09ORz0xNSwKIE5FVF9DT1JFX01PRF9DT05HPTE2LAogTkVUX0NPUkVfREVWX1dFSUdIVD0xNywK IE5FVF9DT1JFX1NPTUFYQ09OTj0xOCwKIE5FVF9DT1JFX0JVREdFVD0xOSwKIE5FVF9DT1JFX0FF VkVOVF9FVElNRT0yMCwKIE5FVF9DT1JFX0FFVkVOVF9SU0VRVEg9MjEsCiBORVRfQ09SRV9XQVJO SU5HUz0yMiwKfTsKCgoKCgoKCmVudW0KewogTkVUX1VOSVhfREVTVFJPWV9ERUxBWT0xLAogTkVU X1VOSVhfREVMRVRFX0RFTEFZPTIsCiBORVRfVU5JWF9NQVhfREdSQU1fUUxFTj0zLAp9OwoKCmVu dW0KewogTkVUX05GX0NPTk5UUkFDS19NQVg9MSwKIE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVP VVRfU1lOX1NFTlQ9MiwKIE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfU1lOX1JFQ1Y9MywK IE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfRVNUQUJMSVNIRUQ9NCwKIE5FVF9ORl9DT05O VFJBQ0tfVENQX1RJTUVPVVRfRklOX1dBSVQ9NSwKIE5FVF9ORl9DT05OVFJBQ0tfVENQX1RJTUVP VVRfQ0xPU0VfV0FJVD02LAogTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9MQVNUX0FDSz03 LAogTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9USU1FX1dBSVQ9OCwKIE5FVF9ORl9DT05O VFJBQ0tfVENQX1RJTUVPVVRfQ0xPU0U9OSwKIE5FVF9ORl9DT05OVFJBQ0tfVURQX1RJTUVPVVQ9 MTAsCiBORVRfTkZfQ09OTlRSQUNLX1VEUF9USU1FT1VUX1NUUkVBTT0xMSwKIE5FVF9ORl9DT05O VFJBQ0tfSUNNUF9USU1FT1VUPTEyLAogTkVUX05GX0NPTk5UUkFDS19HRU5FUklDX1RJTUVPVVQ9 MTMsCiBORVRfTkZfQ09OTlRSQUNLX0JVQ0tFVFM9MTQsCiBORVRfTkZfQ09OTlRSQUNLX0xPR19J TlZBTElEPTE1LAogTkVUX05GX0NPTk5UUkFDS19UQ1BfVElNRU9VVF9NQVhfUkVUUkFOUz0xNiwK IE5FVF9ORl9DT05OVFJBQ0tfVENQX0xPT1NFPTE3LAogTkVUX05GX0NPTk5UUkFDS19UQ1BfQkVf TElCRVJBTD0xOCwKIE5FVF9ORl9DT05OVFJBQ0tfVENQX01BWF9SRVRSQU5TPTE5LAogTkVUX05G X0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfQ0xPU0VEPTIwLAogTkVUX05GX0NPTk5UUkFDS19TQ1RQ X1RJTUVPVVRfQ09PS0lFX1dBSVQ9MjEsCiBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9D T09LSUVfRUNIT0VEPTIyLAogTkVUX05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfRVNUQUJMSVNI RUQ9MjMsCiBORVRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9TSFVURE9XTl9TRU5UPTI0LAog TkVUX05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfU0hVVERPV05fUkVDRD0yNSwKIE5FVF9ORl9D T05OVFJBQ0tfU0NUUF9USU1FT1VUX1NIVVRET1dOX0FDS19TRU5UPTI2LAogTkVUX05GX0NPTk5U UkFDS19DT1VOVD0yNywKIE5FVF9ORl9DT05OVFJBQ0tfSUNNUFY2X1RJTUVPVVQ9MjgsCiBORVRf TkZfQ09OTlRSQUNLX0ZSQUc2X1RJTUVPVVQ9MjksCiBORVRfTkZfQ09OTlRSQUNLX0ZSQUc2X0xP V19USFJFU0g9MzAsCiBORVRfTkZfQ09OTlRSQUNLX0ZSQUc2X0hJR0hfVEhSRVNIPTMxLAogTkVU X05GX0NPTk5UUkFDS19DSEVDS1NVTT0zMiwKfTsKCgplbnVtCnsKCiBORVRfSVBWNF9GT1JXQVJE PTgsCiBORVRfSVBWNF9EWU5BRERSPTksCgogTkVUX0lQVjRfQ09ORj0xNiwKIE5FVF9JUFY0X05F SUdIPTE3LAogTkVUX0lQVjRfUk9VVEU9MTgsCiBORVRfSVBWNF9GSUJfSEFTSD0xOSwKIE5FVF9J UFY0X05FVEZJTFRFUj0yMCwKCiBORVRfSVBWNF9UQ1BfVElNRVNUQU1QUz0zMywKIE5FVF9JUFY0 X1RDUF9XSU5ET1dfU0NBTElORz0zNCwKIE5FVF9JUFY0X1RDUF9TQUNLPTM1LAogTkVUX0lQVjRf VENQX1JFVFJBTlNfQ09MTEFQU0U9MzYsCiBORVRfSVBWNF9ERUZBVUxUX1RUTD0zNywKIE5FVF9J UFY0X0FVVE9DT05GSUc9MzgsCiBORVRfSVBWNF9OT19QTVRVX0RJU0M9MzksCiBORVRfSVBWNF9U Q1BfU1lOX1JFVFJJRVM9NDAsCiBORVRfSVBWNF9JUEZSQUdfSElHSF9USFJFU0g9NDEsCiBORVRf SVBWNF9JUEZSQUdfTE9XX1RIUkVTSD00MiwKIE5FVF9JUFY0X0lQRlJBR19USU1FPTQzLAogTkVU X0lQVjRfVENQX01BWF9LQV9QUk9CRVM9NDQsCiBORVRfSVBWNF9UQ1BfS0VFUEFMSVZFX1RJTUU9 NDUsCiBORVRfSVBWNF9UQ1BfS0VFUEFMSVZFX1BST0JFUz00NiwKIE5FVF9JUFY0X1RDUF9SRVRS SUVTMT00NywKIE5FVF9JUFY0X1RDUF9SRVRSSUVTMj00OCwKIE5FVF9JUFY0X1RDUF9GSU5fVElN RU9VVD00OSwKIE5FVF9JUFY0X0lQX01BU1FfREVCVUc9NTAsCiBORVRfVENQX1NZTkNPT0tJRVM9 NTEsCiBORVRfVENQX1NURFVSRz01MiwKIE5FVF9UQ1BfUkZDMTMzNz01MywKIE5FVF9UQ1BfU1lO X1RBSUxEUk9QPTU0LAogTkVUX1RDUF9NQVhfU1lOX0JBQ0tMT0c9NTUsCiBORVRfSVBWNF9MT0NB TF9QT1JUX1JBTkdFPTU2LAogTkVUX0lQVjRfSUNNUF9FQ0hPX0lHTk9SRV9BTEw9NTcsCiBORVRf SVBWNF9JQ01QX0VDSE9fSUdOT1JFX0JST0FEQ0FTVFM9NTgsCiBORVRfSVBWNF9JQ01QX1NPVVJD RVFVRU5DSF9SQVRFPTU5LAogTkVUX0lQVjRfSUNNUF9ERVNUVU5SRUFDSF9SQVRFPTYwLAogTkVU X0lQVjRfSUNNUF9USU1FRVhDRUVEX1JBVEU9NjEsCiBORVRfSVBWNF9JQ01QX1BBUkFNUFJPQl9S QVRFPTYyLAogTkVUX0lQVjRfSUNNUF9FQ0hPUkVQTFlfUkFURT02MywKIE5FVF9JUFY0X0lDTVBf SUdOT1JFX0JPR1VTX0VSUk9SX1JFU1BPTlNFUz02NCwKIE5FVF9JUFY0X0lHTVBfTUFYX01FTUJF UlNISVBTPTY1LAogTkVUX1RDUF9UV19SRUNZQ0xFPTY2LAogTkVUX0lQVjRfQUxXQVlTX0RFRlJB Rz02NywKIE5FVF9JUFY0X1RDUF9LRUVQQUxJVkVfSU5UVkw9NjgsCiBORVRfSVBWNF9JTkVUX1BF RVJfVEhSRVNIT0xEPTY5LAogTkVUX0lQVjRfSU5FVF9QRUVSX01JTlRUTD03MCwKIE5FVF9JUFY0 X0lORVRfUEVFUl9NQVhUVEw9NzEsCiBORVRfSVBWNF9JTkVUX1BFRVJfR0NfTUlOVElNRT03MiwK IE5FVF9JUFY0X0lORVRfUEVFUl9HQ19NQVhUSU1FPTczLAogTkVUX1RDUF9PUlBIQU5fUkVUUklF Uz03NCwKIE5FVF9UQ1BfQUJPUlRfT05fT1ZFUkZMT1c9NzUsCiBORVRfVENQX1NZTkFDS19SRVRS SUVTPTc2LAogTkVUX1RDUF9NQVhfT1JQSEFOUz03NywKIE5FVF9UQ1BfTUFYX1RXX0JVQ0tFVFM9 NzgsCiBORVRfVENQX0ZBQ0s9NzksCiBORVRfVENQX1JFT1JERVJJTkc9ODAsCiBORVRfVENQX0VD Tj04MSwKIE5FVF9UQ1BfRFNBQ0s9ODIsCiBORVRfVENQX01FTT04MywKIE5FVF9UQ1BfV01FTT04 NCwKIE5FVF9UQ1BfUk1FTT04NSwKIE5FVF9UQ1BfQVBQX1dJTj04NiwKIE5FVF9UQ1BfQURWX1dJ Tl9TQ0FMRT04NywKIE5FVF9JUFY0X05PTkxPQ0FMX0JJTkQ9ODgsCiBORVRfSVBWNF9JQ01QX1JB VEVMSU1JVD04OSwKIE5FVF9JUFY0X0lDTVBfUkFURU1BU0s9OTAsCiBORVRfVENQX1RXX1JFVVNF PTkxLAogTkVUX1RDUF9GUlRPPTkyLAogTkVUX1RDUF9MT1dfTEFURU5DWT05MywKIE5FVF9JUFY0 X0lQRlJBR19TRUNSRVRfSU5URVJWQUw9OTQsCiBORVRfSVBWNF9JR01QX01BWF9NU0Y9OTYsCiBO RVRfVENQX05PX01FVFJJQ1NfU0FWRT05NywKIE5FVF9UQ1BfREVGQVVMVF9XSU5fU0NBTEU9MTA1 LAogTkVUX1RDUF9NT0RFUkFURV9SQ1ZCVUY9MTA2LAogTkVUX1RDUF9UU09fV0lOX0RJVklTT1I9 MTA3LAogTkVUX1RDUF9CSUNfQkVUQT0xMDgsCiBORVRfSVBWNF9JQ01QX0VSUk9SU19VU0VfSU5C T1VORF9JRkFERFI9MTA5LAogTkVUX1RDUF9DT05HX0NPTlRST0w9MTEwLAogTkVUX1RDUF9BQkM9 MTExLAogTkVUX0lQVjRfSVBGUkFHX01BWF9ESVNUPTExMiwKICBORVRfVENQX01UVV9QUk9CSU5H PTExMywKIE5FVF9UQ1BfQkFTRV9NU1M9MTE0LAogTkVUX0lQVjRfVENQX1dPUktBUk9VTkRfU0lH TkVEX1dJTkRPV1M9MTE1LAogTkVUX1RDUF9ETUFfQ09QWUJSRUFLPTExNiwKIE5FVF9UQ1BfU0xP V19TVEFSVF9BRlRFUl9JRExFPTExNywKIE5FVF9DSVBTT1Y0X0NBQ0hFX0VOQUJMRT0xMTgsCiBO RVRfQ0lQU09WNF9DQUNIRV9CVUNLRVRfU0laRT0xMTksCiBORVRfQ0lQU09WNF9SQk1fT1BURk1U PTEyMCwKIE5FVF9DSVBTT1Y0X1JCTV9TVFJJQ1RWQUxJRD0xMjEsCiBORVRfVENQX0FWQUlMX0NP TkdfQ09OVFJPTD0xMjIsCiBORVRfVENQX0FMTE9XRURfQ09OR19DT05UUk9MPTEyMywKIE5FVF9U Q1BfTUFYX1NTVEhSRVNIPTEyNCwKIE5FVF9UQ1BfRlJUT19SRVNQT05TRT0xMjUsCn07CgplbnVt IHsKIE5FVF9JUFY0X1JPVVRFX0ZMVVNIPTEsCiBORVRfSVBWNF9ST1VURV9NSU5fREVMQVk9MiwK IE5FVF9JUFY0X1JPVVRFX01BWF9ERUxBWT0zLAogTkVUX0lQVjRfUk9VVEVfR0NfVEhSRVNIPTQs CiBORVRfSVBWNF9ST1VURV9NQVhfU0laRT01LAogTkVUX0lQVjRfUk9VVEVfR0NfTUlOX0lOVEVS VkFMPTYsCiBORVRfSVBWNF9ST1VURV9HQ19USU1FT1VUPTcsCiBORVRfSVBWNF9ST1VURV9HQ19J TlRFUlZBTD04LAogTkVUX0lQVjRfUk9VVEVfUkVESVJFQ1RfTE9BRD05LAogTkVUX0lQVjRfUk9V VEVfUkVESVJFQ1RfTlVNQkVSPTEwLAogTkVUX0lQVjRfUk9VVEVfUkVESVJFQ1RfU0lMRU5DRT0x MSwKIE5FVF9JUFY0X1JPVVRFX0VSUk9SX0NPU1Q9MTIsCiBORVRfSVBWNF9ST1VURV9FUlJPUl9C VVJTVD0xMywKIE5FVF9JUFY0X1JPVVRFX0dDX0VMQVNUSUNJVFk9MTQsCiBORVRfSVBWNF9ST1VU RV9NVFVfRVhQSVJFUz0xNSwKIE5FVF9JUFY0X1JPVVRFX01JTl9QTVRVPTE2LAogTkVUX0lQVjRf Uk9VVEVfTUlOX0FEVk1TUz0xNywKIE5FVF9JUFY0X1JPVVRFX1NFQ1JFVF9JTlRFUlZBTD0xOCwK IE5FVF9JUFY0X1JPVVRFX0dDX01JTl9JTlRFUlZBTF9NUz0xOSwKfTsKCmVudW0KewogTkVUX1BS T1RPX0NPTkZfQUxMPS0yLAogTkVUX1BST1RPX0NPTkZfREVGQVVMVD0tMwoKCn07CgplbnVtCnsK IE5FVF9JUFY0X0NPTkZfRk9SV0FSRElORz0xLAogTkVUX0lQVjRfQ09ORl9NQ19GT1JXQVJESU5H PTIsCiBORVRfSVBWNF9DT05GX1BST1hZX0FSUD0zLAogTkVUX0lQVjRfQ09ORl9BQ0NFUFRfUkVE SVJFQ1RTPTQsCiBORVRfSVBWNF9DT05GX1NFQ1VSRV9SRURJUkVDVFM9NSwKIE5FVF9JUFY0X0NP TkZfU0VORF9SRURJUkVDVFM9NiwKIE5FVF9JUFY0X0NPTkZfU0hBUkVEX01FRElBPTcsCiBORVRf SVBWNF9DT05GX1JQX0ZJTFRFUj04LAogTkVUX0lQVjRfQ09ORl9BQ0NFUFRfU09VUkNFX1JPVVRF PTksCiBORVRfSVBWNF9DT05GX0JPT1RQX1JFTEFZPTEwLAogTkVUX0lQVjRfQ09ORl9MT0dfTUFS VElBTlM9MTEsCiBORVRfSVBWNF9DT05GX1RBRz0xMiwKIE5FVF9JUFY0X0NPTkZfQVJQRklMVEVS PTEzLAogTkVUX0lQVjRfQ09ORl9NRURJVU1fSUQ9MTQsCiBORVRfSVBWNF9DT05GX05PWEZSTT0x NSwKIE5FVF9JUFY0X0NPTkZfTk9QT0xJQ1k9MTYsCiBORVRfSVBWNF9DT05GX0ZPUkNFX0lHTVBf VkVSU0lPTj0xNywKIE5FVF9JUFY0X0NPTkZfQVJQX0FOTk9VTkNFPTE4LAogTkVUX0lQVjRfQ09O Rl9BUlBfSUdOT1JFPTE5LAogTkVUX0lQVjRfQ09ORl9QUk9NT1RFX1NFQ09OREFSSUVTPTIwLAog TkVUX0lQVjRfQ09ORl9BUlBfQUNDRVBUPTIxLAogTkVUX0lQVjRfQ09ORl9BUlBfTk9USUZZPTIy LAp9OwoKCmVudW0KewogTkVUX0lQVjRfTkZfQ09OTlRSQUNLX01BWD0xLAogTkVUX0lQVjRfTkZf Q09OTlRSQUNLX1RDUF9USU1FT1VUX1NZTl9TRU5UPTIsCiBORVRfSVBWNF9ORl9DT05OVFJBQ0tf VENQX1RJTUVPVVRfU1lOX1JFQ1Y9MywKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19UQ1BfVElNRU9V VF9FU1RBQkxJU0hFRD00LAogTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1RDUF9USU1FT1VUX0ZJTl9X QUlUPTUsCiBORVRfSVBWNF9ORl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfQ0xPU0VfV0FJVD02LAog TkVUX0lQVjRfTkZfQ09OTlRSQUNLX1RDUF9USU1FT1VUX0xBU1RfQUNLPTcsCiBORVRfSVBWNF9O Rl9DT05OVFJBQ0tfVENQX1RJTUVPVVRfVElNRV9XQUlUPTgsCiBORVRfSVBWNF9ORl9DT05OVFJB Q0tfVENQX1RJTUVPVVRfQ0xPU0U9OSwKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19VRFBfVElNRU9V VD0xMCwKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19VRFBfVElNRU9VVF9TVFJFQU09MTEsCiBORVRf SVBWNF9ORl9DT05OVFJBQ0tfSUNNUF9USU1FT1VUPTEyLAogTkVUX0lQVjRfTkZfQ09OTlRSQUNL X0dFTkVSSUNfVElNRU9VVD0xMywKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19CVUNLRVRTPTE0LAog TkVUX0lQVjRfTkZfQ09OTlRSQUNLX0xPR19JTlZBTElEPTE1LAogTkVUX0lQVjRfTkZfQ09OTlRS QUNLX1RDUF9USU1FT1VUX01BWF9SRVRSQU5TPTE2LAogTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1RD UF9MT09TRT0xNywKIE5FVF9JUFY0X05GX0NPTk5UUkFDS19UQ1BfQkVfTElCRVJBTD0xOCwKIE5F VF9JUFY0X05GX0NPTk5UUkFDS19UQ1BfTUFYX1JFVFJBTlM9MTksCiAgTkVUX0lQVjRfTkZfQ09O TlRSQUNLX1NDVFBfVElNRU9VVF9DTE9TRUQ9MjAsCiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1ND VFBfVElNRU9VVF9DT09LSUVfV0FJVD0yMSwKICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9U SU1FT1VUX0NPT0tJRV9FQ0hPRUQ9MjIsCiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElN RU9VVF9FU1RBQkxJU0hFRD0yMywKICBORVRfSVBWNF9ORl9DT05OVFJBQ0tfU0NUUF9USU1FT1VU X1NIVVRET1dOX1NFTlQ9MjQsCiAgTkVUX0lQVjRfTkZfQ09OTlRSQUNLX1NDVFBfVElNRU9VVF9T SFVURE9XTl9SRUNEPTI1LAogIE5FVF9JUFY0X05GX0NPTk5UUkFDS19TQ1RQX1RJTUVPVVRfU0hV VERPV05fQUNLX1NFTlQ9MjYsCiBORVRfSVBWNF9ORl9DT05OVFJBQ0tfQ09VTlQ9MjcsCiBORVRf SVBWNF9ORl9DT05OVFJBQ0tfQ0hFQ0tTVU09MjgsCn07CgoKZW51bSB7CiBORVRfSVBWNl9DT05G PTE2LAogTkVUX0lQVjZfTkVJR0g9MTcsCiBORVRfSVBWNl9ST1VURT0xOCwKIE5FVF9JUFY2X0lD TVA9MTksCiBORVRfSVBWNl9CSU5EVjZPTkxZPTIwLAogTkVUX0lQVjZfSVA2RlJBR19ISUdIX1RI UkVTSD0yMSwKIE5FVF9JUFY2X0lQNkZSQUdfTE9XX1RIUkVTSD0yMiwKIE5FVF9JUFY2X0lQNkZS QUdfVElNRT0yMywKIE5FVF9JUFY2X0lQNkZSQUdfU0VDUkVUX0lOVEVSVkFMPTI0LAogTkVUX0lQ VjZfTUxEX01BWF9NU0Y9MjUsCn07CgplbnVtIHsKIE5FVF9JUFY2X1JPVVRFX0ZMVVNIPTEsCiBO RVRfSVBWNl9ST1VURV9HQ19USFJFU0g9MiwKIE5FVF9JUFY2X1JPVVRFX01BWF9TSVpFPTMsCiBO RVRfSVBWNl9ST1VURV9HQ19NSU5fSU5URVJWQUw9NCwKIE5FVF9JUFY2X1JPVVRFX0dDX1RJTUVP VVQ9NSwKIE5FVF9JUFY2X1JPVVRFX0dDX0lOVEVSVkFMPTYsCiBORVRfSVBWNl9ST1VURV9HQ19F TEFTVElDSVRZPTcsCiBORVRfSVBWNl9ST1VURV9NVFVfRVhQSVJFUz04LAogTkVUX0lQVjZfUk9V VEVfTUlOX0FEVk1TUz05LAogTkVUX0lQVjZfUk9VVEVfR0NfTUlOX0lOVEVSVkFMX01TPTEwCn07 CgplbnVtIHsKIE5FVF9JUFY2X0ZPUldBUkRJTkc9MSwKIE5FVF9JUFY2X0hPUF9MSU1JVD0yLAog TkVUX0lQVjZfTVRVPTMsCiBORVRfSVBWNl9BQ0NFUFRfUkE9NCwKIE5FVF9JUFY2X0FDQ0VQVF9S RURJUkVDVFM9NSwKIE5FVF9JUFY2X0FVVE9DT05GPTYsCiBORVRfSVBWNl9EQURfVFJBTlNNSVRT PTcsCiBORVRfSVBWNl9SVFJfU09MSUNJVFM9OCwKIE5FVF9JUFY2X1JUUl9TT0xJQ0lUX0lOVEVS VkFMPTksCiBORVRfSVBWNl9SVFJfU09MSUNJVF9ERUxBWT0xMCwKIE5FVF9JUFY2X1VTRV9URU1Q QUREUj0xMSwKIE5FVF9JUFY2X1RFTVBfVkFMSURfTEZUPTEyLAogTkVUX0lQVjZfVEVNUF9QUkVG RVJFRF9MRlQ9MTMsCiBORVRfSVBWNl9SRUdFTl9NQVhfUkVUUlk9MTQsCiBORVRfSVBWNl9NQVhf REVTWU5DX0ZBQ1RPUj0xNSwKIE5FVF9JUFY2X01BWF9BRERSRVNTRVM9MTYsCiBORVRfSVBWNl9G T1JDRV9NTERfVkVSU0lPTj0xNywKIE5FVF9JUFY2X0FDQ0VQVF9SQV9ERUZSVFI9MTgsCiBORVRf SVBWNl9BQ0NFUFRfUkFfUElORk89MTksCiBORVRfSVBWNl9BQ0NFUFRfUkFfUlRSX1BSRUY9MjAs CiBORVRfSVBWNl9SVFJfUFJPQkVfSU5URVJWQUw9MjEsCiBORVRfSVBWNl9BQ0NFUFRfUkFfUlRf SU5GT19NQVhfUExFTj0yMiwKIE5FVF9JUFY2X1BST1hZX05EUD0yMywKIE5FVF9JUFY2X0FDQ0VQ VF9TT1VSQ0VfUk9VVEU9MjUsCiBORVRfSVBWNl9BQ0NFUFRfUkFfRlJPTV9MT0NBTD0yNiwKIE5F VF9JUFY2X0FDQ0VQVF9SQV9SVF9JTkZPX01JTl9QTEVOPTI3LAogX19ORVRfSVBWNl9NQVgKfTsK CgplbnVtIHsKIE5FVF9JUFY2X0lDTVBfUkFURUxJTUlUID0gMSwKIE5FVF9JUFY2X0lDTVBfRUNI T19JR05PUkVfQUxMID0gMgp9OwoKCmVudW0gewogTkVUX05FSUdIX01DQVNUX1NPTElDSVQ9MSwK IE5FVF9ORUlHSF9VQ0FTVF9TT0xJQ0lUPTIsCiBORVRfTkVJR0hfQVBQX1NPTElDSVQ9MywKIE5F VF9ORUlHSF9SRVRSQU5TX1RJTUU9NCwKIE5FVF9ORUlHSF9SRUFDSEFCTEVfVElNRT01LAogTkVU X05FSUdIX0RFTEFZX1BST0JFX1RJTUU9NiwKIE5FVF9ORUlHSF9HQ19TVEFMRV9USU1FPTcsCiBO RVRfTkVJR0hfVU5SRVNfUUxFTj04LAogTkVUX05FSUdIX1BST1hZX1FMRU49OSwKIE5FVF9ORUlH SF9BTllDQVNUX0RFTEFZPTEwLAogTkVUX05FSUdIX1BST1hZX0RFTEFZPTExLAogTkVUX05FSUdI X0xPQ0tUSU1FPTEyLAogTkVUX05FSUdIX0dDX0lOVEVSVkFMPTEzLAogTkVUX05FSUdIX0dDX1RI UkVTSDE9MTQsCiBORVRfTkVJR0hfR0NfVEhSRVNIMj0xNSwKIE5FVF9ORUlHSF9HQ19USFJFU0gz PTE2LAogTkVUX05FSUdIX1JFVFJBTlNfVElNRV9NUz0xNywKIE5FVF9ORUlHSF9SRUFDSEFCTEVf VElNRV9NUz0xOCwKfTsKCgplbnVtIHsKIE5FVF9EQ0NQX0RFRkFVTFQ9MSwKfTsKCgplbnVtIHsK IE5FVF9JUFhfUFBST1BfQlJPQURDQVNUSU5HPTEsCiBORVRfSVBYX0ZPUldBUkRJTkc9Mgp9OwoK CmVudW0gewogTkVUX0xMQzI9MSwKIE5FVF9MTENfU1RBVElPTj0yLAp9OwoKCmVudW0gewogTkVU X0xMQzJfVElNRU9VVD0xLAp9OwoKCmVudW0gewogTkVUX0xMQ19TVEFUSU9OX0FDS19USU1FT1VU PTEsCn07CgoKZW51bSB7CiBORVRfTExDMl9BQ0tfVElNRU9VVD0xLAogTkVUX0xMQzJfUF9USU1F T1VUPTIsCiBORVRfTExDMl9SRUpfVElNRU9VVD0zLAogTkVUX0xMQzJfQlVTWV9USU1FT1VUPTQs Cn07CgoKZW51bSB7CiBORVRfQVRBTEtfQUFSUF9FWFBJUllfVElNRT0xLAogTkVUX0FUQUxLX0FB UlBfVElDS19USU1FPTIsCiBORVRfQVRBTEtfQUFSUF9SRVRSQU5TTUlUX0xJTUlUPTMsCiBORVRf QVRBTEtfQUFSUF9SRVNPTFZFX1RJTUU9NAp9OwoKCgplbnVtIHsKIE5FVF9ORVRST01fREVGQVVM VF9QQVRIX1FVQUxJVFk9MSwKIE5FVF9ORVRST01fT0JTT0xFU0NFTkNFX0NPVU5UX0lOSVRJQUxJ U0VSPTIsCiBORVRfTkVUUk9NX05FVFdPUktfVFRMX0lOSVRJQUxJU0VSPTMsCiBORVRfTkVUUk9N X1RSQU5TUE9SVF9USU1FT1VUPTQsCiBORVRfTkVUUk9NX1RSQU5TUE9SVF9NQVhJTVVNX1RSSUVT PTUsCiBORVRfTkVUUk9NX1RSQU5TUE9SVF9BQ0tOT1dMRURHRV9ERUxBWT02LAogTkVUX05FVFJP TV9UUkFOU1BPUlRfQlVTWV9ERUxBWT03LAogTkVUX05FVFJPTV9UUkFOU1BPUlRfUkVRVUVTVEVE X1dJTkRPV19TSVpFPTgsCiBORVRfTkVUUk9NX1RSQU5TUE9SVF9OT19BQ1RJVklUWV9USU1FT1VU PTksCiBORVRfTkVUUk9NX1JPVVRJTkdfQ09OVFJPTD0xMCwKIE5FVF9ORVRST01fTElOS19GQUlM U19DT1VOVD0xMSwKIE5FVF9ORVRST01fUkVTRVQ9MTIKfTsKCgplbnVtIHsKIE5FVF9BWDI1X0lQ X0RFRkFVTFRfTU9ERT0xLAogTkVUX0FYMjVfREVGQVVMVF9NT0RFPTIsCiBORVRfQVgyNV9CQUNL T0ZGX1RZUEU9MywKIE5FVF9BWDI1X0NPTk5FQ1RfTU9ERT00LAogTkVUX0FYMjVfU1RBTkRBUkRf V0lORE9XPTUsCiBORVRfQVgyNV9FWFRFTkRFRF9XSU5ET1c9NiwKIE5FVF9BWDI1X1QxX1RJTUVP VVQ9NywKIE5FVF9BWDI1X1QyX1RJTUVPVVQ9OCwKIE5FVF9BWDI1X1QzX1RJTUVPVVQ9OSwKIE5F VF9BWDI1X0lETEVfVElNRU9VVD0xMCwKIE5FVF9BWDI1X04yPTExLAogTkVUX0FYMjVfUEFDTEVO PTEyLAogTkVUX0FYMjVfUFJPVE9DT0w9MTMsCiBORVRfQVgyNV9EQU1BX1NMQVZFX1RJTUVPVVQ9 MTQKfTsKCgplbnVtIHsKIE5FVF9ST1NFX1JFU1RBUlRfUkVRVUVTVF9USU1FT1VUPTEsCiBORVRf Uk9TRV9DQUxMX1JFUVVFU1RfVElNRU9VVD0yLAogTkVUX1JPU0VfUkVTRVRfUkVRVUVTVF9USU1F T1VUPTMsCiBORVRfUk9TRV9DTEVBUl9SRVFVRVNUX1RJTUVPVVQ9NCwKIE5FVF9ST1NFX0FDS19I T0xEX0JBQ0tfVElNRU9VVD01LAogTkVUX1JPU0VfUk9VVElOR19DT05UUk9MPTYsCiBORVRfUk9T RV9MSU5LX0ZBSUxfVElNRU9VVD03LAogTkVUX1JPU0VfTUFYX1ZDUz04LAogTkVUX1JPU0VfV0lO RE9XX1NJWkU9OSwKIE5FVF9ST1NFX05PX0FDVElWSVRZX1RJTUVPVVQ9MTAKfTsKCgplbnVtIHsK IE5FVF9YMjVfUkVTVEFSVF9SRVFVRVNUX1RJTUVPVVQ9MSwKIE5FVF9YMjVfQ0FMTF9SRVFVRVNU X1RJTUVPVVQ9MiwKIE5FVF9YMjVfUkVTRVRfUkVRVUVTVF9USU1FT1VUPTMsCiBORVRfWDI1X0NM RUFSX1JFUVVFU1RfVElNRU9VVD00LAogTkVUX1gyNV9BQ0tfSE9MRF9CQUNLX1RJTUVPVVQ9NSwK IE5FVF9YMjVfRk9SV0FSRD02Cn07CgoKZW51bQp7CiBORVRfVFJfUklGX1RJTUVPVVQ9MQp9OwoK CmVudW0gewogTkVUX0RFQ05FVF9OT0RFX1RZUEUgPSAxLAogTkVUX0RFQ05FVF9OT0RFX0FERFJF U1MgPSAyLAogTkVUX0RFQ05FVF9OT0RFX05BTUUgPSAzLAogTkVUX0RFQ05FVF9ERUZBVUxUX0RF VklDRSA9IDQsCiBORVRfREVDTkVUX1RJTUVfV0FJVCA9IDUsCiBORVRfREVDTkVUX0ROX0NPVU5U ID0gNiwKIE5FVF9ERUNORVRfRElfQ09VTlQgPSA3LAogTkVUX0RFQ05FVF9EUl9DT1VOVCA9IDgs CiBORVRfREVDTkVUX0RTVF9HQ19JTlRFUlZBTCA9IDksCiBORVRfREVDTkVUX0NPTkYgPSAxMCwK IE5FVF9ERUNORVRfTk9fRkNfTUFYX0NXTkQgPSAxMSwKIE5FVF9ERUNORVRfTUVNID0gMTIsCiBO RVRfREVDTkVUX1JNRU0gPSAxMywKIE5FVF9ERUNORVRfV01FTSA9IDE0LAogTkVUX0RFQ05FVF9E RUJVR19MRVZFTCA9IDI1NQp9OwoKCmVudW0gewogTkVUX0RFQ05FVF9DT05GX0xPT1BCQUNLID0g LTIsCiBORVRfREVDTkVUX0NPTkZfRERDTVAgPSAtMywKIE5FVF9ERUNORVRfQ09ORl9QUFAgPSAt NCwKIE5FVF9ERUNORVRfQ09ORl9YMjUgPSAtNSwKIE5FVF9ERUNORVRfQ09ORl9HUkUgPSAtNiwK IE5FVF9ERUNORVRfQ09ORl9FVEhFUiA9IC03CgoKfTsKCgplbnVtIHsKIE5FVF9ERUNORVRfQ09O Rl9ERVZfUFJJT1JJVFkgPSAxLAogTkVUX0RFQ05FVF9DT05GX0RFVl9UMSA9IDIsCiBORVRfREVD TkVUX0NPTkZfREVWX1QyID0gMywKIE5FVF9ERUNORVRfQ09ORl9ERVZfVDMgPSA0LAogTkVUX0RF Q05FVF9DT05GX0RFVl9GT1JXQVJESU5HID0gNSwKIE5FVF9ERUNORVRfQ09ORl9ERVZfQkxLU0la RSA9IDYsCiBORVRfREVDTkVUX0NPTkZfREVWX1NUQVRFID0gNwp9OwoKCmVudW0gewogTkVUX1ND VFBfUlRPX0lOSVRJQUwgPSAxLAogTkVUX1NDVFBfUlRPX01JTiA9IDIsCiBORVRfU0NUUF9SVE9f TUFYID0gMywKIE5FVF9TQ1RQX1JUT19BTFBIQSA9IDQsCiBORVRfU0NUUF9SVE9fQkVUQSA9IDUs CiBORVRfU0NUUF9WQUxJRF9DT09LSUVfTElGRSA9IDYsCiBORVRfU0NUUF9BU1NPQ0lBVElPTl9N QVhfUkVUUkFOUyA9IDcsCiBORVRfU0NUUF9QQVRIX01BWF9SRVRSQU5TID0gOCwKIE5FVF9TQ1RQ X01BWF9JTklUX1JFVFJBTlNNSVRTID0gOSwKIE5FVF9TQ1RQX0hCX0lOVEVSVkFMID0gMTAsCiBO RVRfU0NUUF9QUkVTRVJWRV9FTkFCTEUgPSAxMSwKIE5FVF9TQ1RQX01BWF9CVVJTVCA9IDEyLAog TkVUX1NDVFBfQURESVBfRU5BQkxFID0gMTMsCiBORVRfU0NUUF9QUlNDVFBfRU5BQkxFID0gMTQs CiBORVRfU0NUUF9TTkRCVUZfUE9MSUNZID0gMTUsCiBORVRfU0NUUF9TQUNLX1RJTUVPVVQgPSAx NiwKIE5FVF9TQ1RQX1JDVkJVRl9QT0xJQ1kgPSAxNywKfTsKCgplbnVtIHsKIE5FVF9CUklER0Vf TkZfQ0FMTF9BUlBUQUJMRVMgPSAxLAogTkVUX0JSSURHRV9ORl9DQUxMX0lQVEFCTEVTID0gMiwK IE5FVF9CUklER0VfTkZfQ0FMTF9JUDZUQUJMRVMgPSAzLAogTkVUX0JSSURHRV9ORl9GSUxURVJf VkxBTl9UQUdHRUQgPSA0LAogTkVUX0JSSURHRV9ORl9GSUxURVJfUFBQT0VfVEFHR0VEID0gNSwK fTsKCgoKZW51bQp7CiBGU19OUklOT0RFPTEsCiBGU19TVEFUSU5PREU9MiwKIEZTX01BWElOT0RF PTMsCiBGU19OUkRRVU9UPTQsCiBGU19NQVhEUVVPVD01LAogRlNfTlJGSUxFPTYsCiBGU19NQVhG SUxFPTcsCiBGU19ERU5UUlk9OCwKIEZTX05SU1VQRVI9OSwKIEZTX01BWFNVUEVSPTEwLAogRlNf T1ZFUkZMT1dVSUQ9MTEsCiBGU19PVkVSRkxPV0dJRD0xMiwKIEZTX0xFQVNFUz0xMywKIEZTX0RJ Ul9OT1RJRlk9MTQsCiBGU19MRUFTRV9USU1FPTE1LAogRlNfRFFTVEFUUz0xNiwKIEZTX1hGUz0x NywKIEZTX0FJT19OUj0xOCwKIEZTX0FJT19NQVhfTlI9MTksCiBGU19JTk9USUZZPTIwLAogRlNf T0NGUzI9OTg4LAp9OwoKCmVudW0gewogRlNfRFFfTE9PS1VQUyA9IDEsCiBGU19EUV9EUk9QUyA9 IDIsCiBGU19EUV9SRUFEUyA9IDMsCiBGU19EUV9XUklURVMgPSA0LAogRlNfRFFfQ0FDSEVfSElU UyA9IDUsCiBGU19EUV9BTExPQ0FURUQgPSA2LAogRlNfRFFfRlJFRSA9IDcsCiBGU19EUV9TWU5D UyA9IDgsCiBGU19EUV9XQVJOSU5HUyA9IDksCn07CgoKCgplbnVtIHsKIERFVl9DRFJPTT0xLAog REVWX0hXTU9OPTIsCiBERVZfUEFSUE9SVD0zLAogREVWX1JBSUQ9NCwKIERFVl9NQUNfSElEPTUs CiBERVZfU0NTST02LAogREVWX0lQTUk9NywKfTsKCgplbnVtIHsKIERFVl9DRFJPTV9JTkZPPTEs CiBERVZfQ0RST01fQVVUT0NMT1NFPTIsCiBERVZfQ0RST01fQVVUT0VKRUNUPTMsCiBERVZfQ0RS T01fREVCVUc9NCwKIERFVl9DRFJPTV9MT0NLPTUsCiBERVZfQ0RST01fQ0hFQ0tfTUVESUE9Ngp9 OwoKCmVudW0gewogREVWX1BBUlBPUlRfREVGQVVMVD0tMwp9OwoKCmVudW0gewogREVWX1JBSURf U1BFRURfTElNSVRfTUlOPTEsCiBERVZfUkFJRF9TUEVFRF9MSU1JVF9NQVg9Mgp9OwoKCmVudW0g ewogREVWX1BBUlBPUlRfREVGQVVMVF9USU1FU0xJQ0U9MSwKIERFVl9QQVJQT1JUX0RFRkFVTFRf U1BJTlRJTUU9Mgp9OwoKCmVudW0gewogREVWX1BBUlBPUlRfU1BJTlRJTUU9MSwKIERFVl9QQVJQ T1JUX0JBU0VfQUREUj0yLAogREVWX1BBUlBPUlRfSVJRPTMsCiBERVZfUEFSUE9SVF9ETUE9NCwK IERFVl9QQVJQT1JUX01PREVTPTUsCiBERVZfUEFSUE9SVF9ERVZJQ0VTPTYsCiBERVZfUEFSUE9S VF9BVVRPUFJPQkU9MTYKfTsKCgplbnVtIHsKIERFVl9QQVJQT1JUX0RFVklDRVNfQUNUSVZFPS0z LAp9OwoKCmVudW0gewogREVWX1BBUlBPUlRfREVWSUNFX1RJTUVTTElDRT0xLAp9OwoKCmVudW0g ewogREVWX01BQ19ISURfS0VZQk9BUkRfU0VORFNfTElOVVhfS0VZQ09ERVM9MSwKIERFVl9NQUNf SElEX0tFWUJPQVJEX0xPQ0tfS0VZQ09ERVM9MiwKIERFVl9NQUNfSElEX01PVVNFX0JVVFRPTl9F TVVMQVRJT049MywKIERFVl9NQUNfSElEX01PVVNFX0JVVFRPTjJfS0VZQ09ERT00LAogREVWX01B Q19ISURfTU9VU0VfQlVUVE9OM19LRVlDT0RFPTUsCiBERVZfTUFDX0hJRF9BREJfTU9VU0VfU0VO RFNfS0VZQ09ERVM9Ngp9OwoKCmVudW0gewogREVWX1NDU0lfTE9HR0lOR19MRVZFTD0xLAp9OwoK CmVudW0gewogREVWX0lQTUlfUE9XRVJPRkZfUE9XRVJDWUNMRT0xLAp9OwoKCmVudW0KewogQUJJ X0RFRkhBTkRMRVJfQ09GRj0xLAogQUJJX0RFRkhBTkRMRVJfRUxGPTIsCiBBQklfREVGSEFORExF Ul9MQ0FMTDc9MywKIEFCSV9ERUZIQU5ETEVSX0xJQkNTTz00LAogQUJJX1RSQUNFPTUsCiBBQklf RkFLRV9VVFNOQU1FPTYsCn07CiMgMzEgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIgMgoKCnN0 cnVjdCBjb21wbGV0aW9uOwpzdHJ1Y3QgY3RsX3RhYmxlOwpzdHJ1Y3QgbnNwcm94eTsKc3RydWN0 IGN0bF90YWJsZV9yb290OwpzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlcjsKc3RydWN0IGN0bF9kaXI7 CgoKCgoKCmV4dGVybiBjb25zdCBpbnQgc3lzY3RsX3ZhbHNbXTsKCnR5cGVkZWYgaW50IHByb2Nf aGFuZGxlciAoc3RydWN0IGN0bF90YWJsZSAqY3RsLCBpbnQgd3JpdGUsCiAgICAgdm9pZCAqYnVm ZmVyLCBzaXplX3QgKmxlbnAsIGxvZmZfdCAqcHBvcyk7CgpleHRlcm4gaW50IHByb2NfZG9zdHJp bmcoc3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCiAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3Qg Kik7CmV4dGVybiBpbnQgcHJvY19kb2ludHZlYyhzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKICAg IHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBwcm9jX2RvdWludHZlYyhz dHJ1Y3QgY3RsX3RhYmxlICosIGludCwKICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsK ZXh0ZXJuIGludCBwcm9jX2RvaW50dmVjX21pbm1heChzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwK ICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBwcm9jX2RvdWludHZl Y19taW5tYXgoc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSwKICAgICB2b2lkICpi dWZmZXIsIHNpemVfdCAqbGVucCwKICAgICBsb2ZmX3QgKnBwb3MpOwpleHRlcm4gaW50IHByb2Nf ZG9pbnR2ZWNfamlmZmllcyhzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKICAgICB2b2lkICosIHNp emVfdCAqLCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcHJvY19kb2ludHZlY191c2VyaHpfamlmZmll cyhzdHJ1Y3QgY3RsX3RhYmxlICosIGludCwKICAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3Qg Kik7CmV4dGVybiBpbnQgcHJvY19kb2ludHZlY19tc19qaWZmaWVzKHN0cnVjdCBjdGxfdGFibGUg KiwgaW50LAogICAgICAgIHZvaWQgKiwgc2l6ZV90ICosIGxvZmZfdCAqKTsKZXh0ZXJuIGludCBw cm9jX2RvdWxvbmd2ZWNfbWlubWF4KHN0cnVjdCBjdGxfdGFibGUgKiwgaW50LAogICAgICB2b2lk ICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcHJvY19kb3Vsb25ndmVjX21zX2pp ZmZpZXNfbWlubWF4KHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQsCiAgICAgICAgICB2b2lk ICosIHNpemVfdCAqLCBsb2ZmX3QgKik7CmV4dGVybiBpbnQgcHJvY19kb19sYXJnZV9iaXRtYXAo c3RydWN0IGN0bF90YWJsZSAqLCBpbnQsCiAgICB2b2lkICosIHNpemVfdCAqLCBsb2ZmX3QgKik7 CmV4dGVybiBpbnQgcHJvY19kb19zdGF0aWNfa2V5KHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBp bnQgd3JpdGUsCiAgICAgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wLAogICAgICAgICBs b2ZmX3QgKnBwb3MpOwojIDEwNSAiLi9pbmNsdWRlL2xpbnV4L3N5c2N0bC5oIgpzdHJ1Y3QgY3Rs X3RhYmxlX3BvbGwgewogYXRvbWljX3QgZXZlbnQ7CiB3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0Owp9 OwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCAqcHJvY19zeXNfcG9sbF9ldmVudChzdHJ1Y3QgY3RsX3RhYmxlX3BvbGwgKnBvbGwp CnsKIHJldHVybiAodm9pZCAqKSh1bnNpZ25lZCBsb25nKWF0b21pY19yZWFkKCZwb2xsLT5ldmVu dCk7Cn0KIyAxMjMgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIKc3RydWN0IGN0bF90YWJsZSB7 CiBjb25zdCBjaGFyICpwcm9jbmFtZTsKIHZvaWQgKmRhdGE7CiBpbnQgbWF4bGVuOwogdW1vZGVf dCBtb2RlOwogc3RydWN0IGN0bF90YWJsZSAqY2hpbGQ7CiBwcm9jX2hhbmRsZXIgKnByb2NfaGFu ZGxlcjsKIHN0cnVjdCBjdGxfdGFibGVfcG9sbCAqcG9sbDsKIHZvaWQgKmV4dHJhMTsKIHZvaWQg KmV4dHJhMjsKfSBfX2F0dHJpYnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpzdHJ1Y3Qg Y3RsX25vZGUgewogc3RydWN0IHJiX25vZGUgbm9kZTsKIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVy ICpoZWFkZXI7Cn07CgoKCnN0cnVjdCBjdGxfdGFibGVfaGVhZGVyIHsKIHVuaW9uIHsKICBzdHJ1 Y3QgewogICBzdHJ1Y3QgY3RsX3RhYmxlICpjdGxfdGFibGU7CiAgIGludCB1c2VkOwogICBpbnQg Y291bnQ7CiAgIGludCBucmVnOwogIH07CiAgc3RydWN0IGNhbGxiYWNrX2hlYWQgcmN1OwogfTsK IHN0cnVjdCBjb21wbGV0aW9uICp1bnJlZ2lzdGVyaW5nOwogc3RydWN0IGN0bF90YWJsZSAqY3Rs X3RhYmxlX2FyZzsKIHN0cnVjdCBjdGxfdGFibGVfcm9vdCAqcm9vdDsKIHN0cnVjdCBjdGxfdGFi bGVfc2V0ICpzZXQ7CiBzdHJ1Y3QgY3RsX2RpciAqcGFyZW50Owogc3RydWN0IGN0bF9ub2RlICpu b2RlOwogc3RydWN0IGhsaXN0X2hlYWQgaW5vZGVzOwp9OwoKc3RydWN0IGN0bF9kaXIgewoKIHN0 cnVjdCBjdGxfdGFibGVfaGVhZGVyIGhlYWRlcjsKIHN0cnVjdCByYl9yb290IHJvb3Q7Cn07Cgpz dHJ1Y3QgY3RsX3RhYmxlX3NldCB7CiBpbnQgKCppc19zZWVuKShzdHJ1Y3QgY3RsX3RhYmxlX3Nl dCAqKTsKIHN0cnVjdCBjdGxfZGlyIGRpcjsKfTsKCnN0cnVjdCBjdGxfdGFibGVfcm9vdCB7CiBz dHJ1Y3QgY3RsX3RhYmxlX3NldCBkZWZhdWx0X3NldDsKIHN0cnVjdCBjdGxfdGFibGVfc2V0ICoo Kmxvb2t1cCkoc3RydWN0IGN0bF90YWJsZV9yb290ICpyb290KTsKIHZvaWQgKCpzZXRfb3duZXJz aGlwKShzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqaGVhZCwKICAgICAgICAgc3RydWN0IGN0bF90 YWJsZSAqdGFibGUsCiAgICAgICAgIGt1aWRfdCAqdWlkLCBrZ2lkX3QgKmdpZCk7CiBpbnQgKCpw ZXJtaXNzaW9ucykoc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKmhlYWQsIHN0cnVjdCBjdGxfdGFi bGUgKnRhYmxlKTsKfTsKCgpzdHJ1Y3QgY3RsX3BhdGggewogY29uc3QgY2hhciAqcHJvY25hbWU7 Cn07CgoKCnZvaWQgcHJvY19zeXNfcG9sbF9ub3RpZnkoc3RydWN0IGN0bF90YWJsZV9wb2xsICpw b2xsKTsKCmV4dGVybiB2b2lkIHNldHVwX3N5c2N0bF9zZXQoc3RydWN0IGN0bF90YWJsZV9zZXQg KnAsCiBzdHJ1Y3QgY3RsX3RhYmxlX3Jvb3QgKnJvb3QsCiBpbnQgKCppc19zZWVuKShzdHJ1Y3Qg Y3RsX3RhYmxlX3NldCAqKSk7CmV4dGVybiB2b2lkIHJldGlyZV9zeXNjdGxfc2V0KHN0cnVjdCBj dGxfdGFibGVfc2V0ICpzZXQpOwoKc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKl9fcmVnaXN0ZXJf c3lzY3RsX3RhYmxlKAogc3RydWN0IGN0bF90YWJsZV9zZXQgKnNldCwKIGNvbnN0IGNoYXIgKnBh dGgsIHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlKTsKc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKl9f cmVnaXN0ZXJfc3lzY3RsX3BhdGhzKAogc3RydWN0IGN0bF90YWJsZV9zZXQgKnNldCwKIGNvbnN0 IHN0cnVjdCBjdGxfcGF0aCAqcGF0aCwgc3RydWN0IGN0bF90YWJsZSAqdGFibGUpOwpzdHJ1Y3Qg Y3RsX3RhYmxlX2hlYWRlciAqcmVnaXN0ZXJfc3lzY3RsKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVj dCBjdGxfdGFibGUgKnRhYmxlKTsKc3RydWN0IGN0bF90YWJsZV9oZWFkZXIgKnJlZ2lzdGVyX3N5 c2N0bF90YWJsZShzdHJ1Y3QgY3RsX3RhYmxlICogdGFibGUpOwpzdHJ1Y3QgY3RsX3RhYmxlX2hl YWRlciAqcmVnaXN0ZXJfc3lzY3RsX3BhdGhzKGNvbnN0IHN0cnVjdCBjdGxfcGF0aCAqcGF0aCwK ICAgICAgc3RydWN0IGN0bF90YWJsZSAqdGFibGUpOwoKdm9pZCB1bnJlZ2lzdGVyX3N5c2N0bF90 YWJsZShzdHJ1Y3QgY3RsX3RhYmxlX2hlYWRlciAqIHRhYmxlKTsKCmV4dGVybiBpbnQgc3lzY3Rs X2luaXQodm9pZCk7CgpleHRlcm4gc3RydWN0IGN0bF90YWJsZSBzeXNjdGxfbW91bnRfcG9pbnRb XTsKIyAyNDEgIi4vaW5jbHVkZS9saW51eC9zeXNjdGwuaCIKaW50IHN5c2N0bF9tYXhfdGhyZWFk cyhzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaW50IHdyaXRlLAogICAgICAgICB2b2lkICpidWZm ZXIsIHNpemVfdCAqbGVucCwgbG9mZl90ICpwcG9zKTsKIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2tl eS5oIiAyCgoKIyAxICIuL2luY2x1ZGUvbGludXgvYXNzb2NfYXJyYXkuaCIgMQojIDIyICIuL2lu Y2x1ZGUvbGludXgvYXNzb2NfYXJyYXkuaCIKc3RydWN0IGFzc29jX2FycmF5IHsKIHN0cnVjdCBh c3NvY19hcnJheV9wdHIgKnJvb3Q7CiB1bnNpZ25lZCBsb25nIG5yX2xlYXZlc19vbl90cmVlOwp9 OwoKCgoKc3RydWN0IGFzc29jX2FycmF5X29wcyB7CgogdW5zaWduZWQgbG9uZyAoKmdldF9rZXlf Y2h1bmspKGNvbnN0IHZvaWQgKmluZGV4X2tleSwgaW50IGxldmVsKTsKCgogdW5zaWduZWQgbG9u ZyAoKmdldF9vYmplY3Rfa2V5X2NodW5rKShjb25zdCB2b2lkICpvYmplY3QsIGludCBsZXZlbCk7 CgoKIGJvb2wgKCpjb21wYXJlX29iamVjdCkoY29uc3Qgdm9pZCAqb2JqZWN0LCBjb25zdCB2b2lk ICppbmRleF9rZXkpOwoKCgoKIGludCAoKmRpZmZfb2JqZWN0cykoY29uc3Qgdm9pZCAqb2JqZWN0 LCBjb25zdCB2b2lkICppbmRleF9rZXkpOwoKCiB2b2lkICgqZnJlZV9vYmplY3QpKHZvaWQgKm9i amVjdCk7Cn07CgoKCgpzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdDsKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgYXNzb2NfYXJyYXlf aW5pdChzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5KQp7CiBhcnJheS0+cm9vdCA9ICgodm9pZCAq KTApOwogYXJyYXktPm5yX2xlYXZlc19vbl90cmVlID0gMDsKfQoKZXh0ZXJuIGludCBhc3NvY19h cnJheV9pdGVyYXRlKGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheSAqYXJyYXksCiAgICAgICAgICBp bnQgKCppdGVyYXRvcikoY29uc3Qgdm9pZCAqb2JqZWN0LAogICAgICAgICAgICB2b2lkICppdGVy YXRvcl9kYXRhKSwKICAgICAgICAgIHZvaWQgKml0ZXJhdG9yX2RhdGEpOwpleHRlcm4gdm9pZCAq YXNzb2NfYXJyYXlfZmluZChjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAogICAgICAg ICBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMsCiAgICAgICAgIGNvbnN0IHZvaWQg KmluZGV4X2tleSk7CmV4dGVybiB2b2lkIGFzc29jX2FycmF5X2Rlc3Ryb3koc3RydWN0IGFzc29j X2FycmF5ICphcnJheSwKICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcyk7CmV4 dGVybiBzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqYXNzb2NfYXJyYXlfaW5zZXJ0KHN0cnVjdCBh c3NvY19hcnJheSAqYXJyYXksCiAgICAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMg Km9wcywKICAgICAgICAgY29uc3Qgdm9pZCAqaW5kZXhfa2V5LAogICAgICAgICB2b2lkICpvYmpl Y3QpOwpleHRlcm4gdm9pZCBhc3NvY19hcnJheV9pbnNlcnRfc2V0X29iamVjdChzdHJ1Y3QgYXNz b2NfYXJyYXlfZWRpdCAqZWRpdCwKICAgICAgIHZvaWQgKm9iamVjdCk7CmV4dGVybiBzdHJ1Y3Qg YXNzb2NfYXJyYXlfZWRpdCAqYXNzb2NfYXJyYXlfZGVsZXRlKHN0cnVjdCBhc3NvY19hcnJheSAq YXJyYXksCiAgICAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcywKICAgICAg ICAgY29uc3Qgdm9pZCAqaW5kZXhfa2V5KTsKZXh0ZXJuIHN0cnVjdCBhc3NvY19hcnJheV9lZGl0 ICphc3NvY19hcnJheV9jbGVhcihzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAogICAgICAgIGNv bnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcyk7CmV4dGVybiB2b2lkIGFzc29jX2FycmF5 X2FwcGx5X2VkaXQoc3RydWN0IGFzc29jX2FycmF5X2VkaXQgKmVkaXQpOwpleHRlcm4gdm9pZCBh c3NvY19hcnJheV9jYW5jZWxfZWRpdChzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqZWRpdCk7CmV4 dGVybiBpbnQgYXNzb2NfYXJyYXlfZ2Moc3RydWN0IGFzc29jX2FycmF5ICphcnJheSwKICAgICBj b25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMsCiAgICAgYm9vbCAoKml0ZXJhdG9yKSh2 b2lkICpvYmplY3QsIHZvaWQgKml0ZXJhdG9yX2RhdGEpLAogICAgIHZvaWQgKml0ZXJhdG9yX2Rh dGEpOwojIDIxICIuL2luY2x1ZGUvbGludXgva2V5LmgiIDIKCgoKCgoKCnR5cGVkZWYgaW50MzJf dCBrZXlfc2VyaWFsX3Q7CgoKdHlwZWRlZiB1aW50MzJfdCBrZXlfcGVybV90OwoKc3RydWN0IGtl eTsKc3RydWN0IG5ldDsKIyA3NCAiLi9pbmNsdWRlL2xpbnV4L2tleS5oIgpzdHJ1Y3Qgc2VxX2Zp bGU7CnN0cnVjdCB1c2VyX3N0cnVjdDsKc3RydWN0IHNpZ25hbF9zdHJ1Y3Q7CnN0cnVjdCBjcmVk OwoKc3RydWN0IGtleV90eXBlOwpzdHJ1Y3Qga2V5X293bmVyOwpzdHJ1Y3Qga2V5X3RhZzsKc3Ry dWN0IGtleXJpbmdfbGlzdDsKc3RydWN0IGtleXJpbmdfbmFtZTsKCnN0cnVjdCBrZXlfdGFnIHsK IHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKIHJlZmNvdW50X3QgdXNhZ2U7CiBib29sIHJlbW92 ZWQ7Cn07CgpzdHJ1Y3Qga2V5cmluZ19pbmRleF9rZXkgewoKIHVuc2lnbmVkIGxvbmcgaGFzaDsK IHVuaW9uIHsKICBzdHJ1Y3QgewoKICAgdTE2IGRlc2NfbGVuOwogICBjaGFyIGRlc2Nbc2l6ZW9m KGxvbmcpIC0gMl07CgoKCgogIH07CiAgdW5zaWduZWQgbG9uZyB4OwogfTsKIHN0cnVjdCBrZXlf dHlwZSAqdHlwZTsKIHN0cnVjdCBrZXlfdGFnICpkb21haW5fdGFnOwogY29uc3QgY2hhciAqZGVz Y3JpcHRpb247Cn07Cgp1bmlvbiBrZXlfcGF5bG9hZCB7CiB2b2lkICpyY3VfZGF0YTA7CiB2b2lk ICpkYXRhWzRdOwp9OwojIDEzMCAiLi9pbmNsdWRlL2xpbnV4L2tleS5oIgp0eXBlZGVmIHN0cnVj dCBfX2tleV9yZWZlcmVuY2Vfd2l0aF9hdHRyaWJ1dGVzICprZXlfcmVmX3Q7CgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBrZXlfcmVmX3Qg bWFrZV9rZXlfcmVmKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwKICAgICAgICAgYm9vbCBwb3NzZXNz aW9uKQp7CiByZXR1cm4gKGtleV9yZWZfdCkgKCh1bnNpZ25lZCBsb25nKSBrZXkgfCBwb3NzZXNz aW9uKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGtleSAqa2V5X3JlZl90b19wdHIoY29uc3Qga2V5X3JlZl90IGtleV9y ZWYpCnsKIHJldHVybiAoc3RydWN0IGtleSAqKSAoKHVuc2lnbmVkIGxvbmcpIGtleV9yZWYgJiB+ MVVMKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgYm9vbCBpc19rZXlfcG9zc2Vzc2VkKGNvbnN0IGtleV9yZWZfdCBrZXlfcmVmKQp7 CiByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIGtleV9yZWYgJiAxVUw7Cn0KCnR5cGVkZWYgaW50ICgq a2V5X3Jlc3RyaWN0X2xpbmtfZnVuY190KShzdHJ1Y3Qga2V5ICpkZXN0X2tleXJpbmcsCiAgICAg Y29uc3Qgc3RydWN0IGtleV90eXBlICp0eXBlLAogICAgIGNvbnN0IHVuaW9uIGtleV9wYXlsb2Fk ICpwYXlsb2FkLAogICAgIHN0cnVjdCBrZXkgKnJlc3RyaWN0aW9uX2tleSk7CgpzdHJ1Y3Qga2V5 X3Jlc3RyaWN0aW9uIHsKIGtleV9yZXN0cmljdF9saW5rX2Z1bmNfdCBjaGVjazsKIHN0cnVjdCBr ZXkgKmtleTsKIHN0cnVjdCBrZXlfdHlwZSAqa2V5dHlwZTsKfTsKCmVudW0ga2V5X3N0YXRlIHsK IEtFWV9JU19VTklOU1RBTlRJQVRFRCwKIEtFWV9JU19QT1NJVElWRSwKfTsKIyAxNzIgIi4vaW5j bHVkZS9saW51eC9rZXkuaCIKc3RydWN0IGtleSB7CiByZWZjb3VudF90IHVzYWdlOwoga2V5X3Nl cmlhbF90IHNlcmlhbDsKIHVuaW9uIHsKICBzdHJ1Y3QgbGlzdF9oZWFkIGdyYXZleWFyZF9saW5r OwogIHN0cnVjdCByYl9ub2RlIHNlcmlhbF9ub2RlOwogfTsKIHN0cnVjdCByd19zZW1hcGhvcmUg c2VtOwogc3RydWN0IGtleV91c2VyICp1c2VyOwogdm9pZCAqc2VjdXJpdHk7CiB1bmlvbiB7CiAg dGltZTY0X3QgZXhwaXJ5OwogIHRpbWU2NF90IHJldm9rZWRfYXQ7CiB9OwogdGltZTY0X3QgbGFz dF91c2VkX2F0Owoga3VpZF90IHVpZDsKIGtnaWRfdCBnaWQ7CiBrZXlfcGVybV90IHBlcm07CiB1 bnNpZ25lZCBzaG9ydCBxdW90YWxlbjsKIHVuc2lnbmVkIHNob3J0IGRhdGFsZW47CgoKCiBzaG9y dCBzdGF0ZTsKCgoKCgoKIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiMgMjE5ICIuL2luY2x1ZGUvbGlu dXgva2V5LmgiCiB1bmlvbiB7CiAgc3RydWN0IGtleXJpbmdfaW5kZXhfa2V5IGluZGV4X2tleTsK ICBzdHJ1Y3QgewogICB1bnNpZ25lZCBsb25nIGhhc2g7CiAgIHVuc2lnbmVkIGxvbmcgbGVuX2Rl c2M7CiAgIHN0cnVjdCBrZXlfdHlwZSAqdHlwZTsKICAgc3RydWN0IGtleV90YWcgKmRvbWFpbl90 YWc7CiAgIGNoYXIgKmRlc2NyaXB0aW9uOwogIH07CiB9OwoKCgoKCiB1bmlvbiB7CiAgdW5pb24g a2V5X3BheWxvYWQgcGF5bG9hZDsKICBzdHJ1Y3QgewoKICAgc3RydWN0IGxpc3RfaGVhZCBuYW1l X2xpbms7CiAgIHN0cnVjdCBhc3NvY19hcnJheSBrZXlzOwogIH07CiB9OwojIDI1NCAiLi9pbmNs dWRlL2xpbnV4L2tleS5oIgogc3RydWN0IGtleV9yZXN0cmljdGlvbiAqcmVzdHJpY3RfbGluazsK fTsKCmV4dGVybiBzdHJ1Y3Qga2V5ICprZXlfYWxsb2Moc3RydWN0IGtleV90eXBlICp0eXBlLAog ICAgICAgIGNvbnN0IGNoYXIgKmRlc2MsCiAgICAgICAga3VpZF90IHVpZCwga2dpZF90IGdpZCwK ICAgICAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCwKICAgICAgICBrZXlfcGVybV90IHBlcm0s CiAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywKICAgICAgICBzdHJ1Y3Qga2V5X3Jlc3RyaWN0 aW9uICpyZXN0cmljdF9saW5rKTsKIyAyNzMgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIKZXh0ZXJu IHZvaWQga2V5X3Jldm9rZShzdHJ1Y3Qga2V5ICprZXkpOwpleHRlcm4gdm9pZCBrZXlfaW52YWxp ZGF0ZShzdHJ1Y3Qga2V5ICprZXkpOwpleHRlcm4gdm9pZCBrZXlfcHV0KHN0cnVjdCBrZXkgKmtl eSk7CmV4dGVybiBib29sIGtleV9wdXRfdGFnKHN0cnVjdCBrZXlfdGFnICp0YWcpOwpleHRlcm4g dm9pZCBrZXlfcmVtb3ZlX2RvbWFpbihzdHJ1Y3Qga2V5X3RhZyAqZG9tYWluX3RhZyk7CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3Qga2V5ICpfX2tleV9nZXQoc3RydWN0IGtleSAqa2V5KQp7CiByZWZjb3VudF9pbmMoJmtleS0+ dXNhZ2UpOwogcmV0dXJuIGtleTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtleSAqa2V5X2dldChzdHJ1Y3Qga2V5ICpr ZXkpCnsKIHJldHVybiBrZXkgPyBfX2tleV9nZXQoa2V5KSA6IGtleTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBrZXlfcmVm X3B1dChrZXlfcmVmX3Qga2V5X3JlZikKewoga2V5X3B1dChrZXlfcmVmX3RvX3B0cihrZXlfcmVm KSk7Cn0KCmV4dGVybiBzdHJ1Y3Qga2V5ICpyZXF1ZXN0X2tleV90YWcoc3RydWN0IGtleV90eXBl ICp0eXBlLAogICAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sCiAgICAgICBzdHJ1Y3Qga2V5 X3RhZyAqZG9tYWluX3RhZywKICAgICAgIGNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbyk7CgpleHRl cm4gc3RydWN0IGtleSAqcmVxdWVzdF9rZXlfcmN1KHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKICAg ICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAogICAgICAgc3RydWN0IGtleV90YWcgKmRvbWFp bl90YWcpOwoKZXh0ZXJuIHN0cnVjdCBrZXkgKnJlcXVlc3Rfa2V5X3dpdGhfYXV4ZGF0YShzdHJ1 Y3Qga2V5X3R5cGUgKnR5cGUsCiAgICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAogICAg ICAgICBzdHJ1Y3Qga2V5X3RhZyAqZG9tYWluX3RhZywKICAgICAgICAgY29uc3Qgdm9pZCAqY2Fs bG91dF9pbmZvLAogICAgICAgICBzaXplX3QgY2FsbG91dF9sZW4sCiAgICAgICAgIHZvaWQgKmF1 eCk7CiMgMzE5ICIuL2luY2x1ZGUvbGludXgva2V5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrZXkgKnJlcXVlc3Rfa2V5 KHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKICAgICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9u LAogICAgICAgICAgY29uc3QgY2hhciAqY2FsbG91dF9pbmZvKQp7CiByZXR1cm4gcmVxdWVzdF9r ZXlfdGFnKHR5cGUsIGRlc2NyaXB0aW9uLCAoKHZvaWQgKikwKSwgY2FsbG91dF9pbmZvKTsKfQoj IDM1OCAiLi9pbmNsdWRlL2xpbnV4L2tleS5oIgpleHRlcm4gaW50IHdhaXRfZm9yX2tleV9jb25z dHJ1Y3Rpb24oc3RydWN0IGtleSAqa2V5LCBib29sIGludHIpOwoKZXh0ZXJuIGludCBrZXlfdmFs aWRhdGUoY29uc3Qgc3RydWN0IGtleSAqa2V5KTsKCmV4dGVybiBrZXlfcmVmX3Qga2V5X2NyZWF0 ZV9vcl91cGRhdGUoa2V5X3JlZl90IGtleXJpbmcsCiAgICAgICAgICBjb25zdCBjaGFyICp0eXBl LAogICAgICAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sCiAgICAgICAgICBjb25zdCB2b2lk ICpwYXlsb2FkLAogICAgICAgICAgc2l6ZV90IHBsZW4sCiAgICAgICAgICBrZXlfcGVybV90IHBl cm0sCiAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKCmV4dGVybiBpbnQga2V5X3VwZGF0 ZShrZXlfcmVmX3Qga2V5LAogICAgICAgIGNvbnN0IHZvaWQgKnBheWxvYWQsCiAgICAgICAgc2l6 ZV90IHBsZW4pOwoKZXh0ZXJuIGludCBrZXlfbGluayhzdHJ1Y3Qga2V5ICprZXlyaW5nLAogICAg ICBzdHJ1Y3Qga2V5ICprZXkpOwoKZXh0ZXJuIGludCBrZXlfbW92ZShzdHJ1Y3Qga2V5ICprZXks CiAgICAgIHN0cnVjdCBrZXkgKmZyb21fa2V5cmluZywKICAgICAgc3RydWN0IGtleSAqdG9fa2V5 cmluZywKICAgICAgdW5zaWduZWQgaW50IGZsYWdzKTsKCmV4dGVybiBpbnQga2V5X3VubGluayhz dHJ1Y3Qga2V5ICprZXlyaW5nLAogICAgICAgIHN0cnVjdCBrZXkgKmtleSk7CgpleHRlcm4gc3Ry dWN0IGtleSAqa2V5cmluZ19hbGxvYyhjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwga3VpZF90IHVp ZCwga2dpZF90IGdpZCwKICAgICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCwKICAgICBrZXlfcGVy bV90IHBlcm0sCiAgICAgdW5zaWduZWQgbG9uZyBmbGFncywKICAgICBzdHJ1Y3Qga2V5X3Jlc3Ry aWN0aW9uICpyZXN0cmljdF9saW5rLAogICAgIHN0cnVjdCBrZXkgKmRlc3QpOwoKZXh0ZXJuIGlu dCByZXN0cmljdF9saW5rX3JlamVjdChzdHJ1Y3Qga2V5ICprZXlyaW5nLAogICAgY29uc3Qgc3Ry dWN0IGtleV90eXBlICp0eXBlLAogICAgY29uc3QgdW5pb24ga2V5X3BheWxvYWQgKnBheWxvYWQs CiAgICBzdHJ1Y3Qga2V5ICpyZXN0cmljdGlvbl9rZXkpOwoKZXh0ZXJuIGludCBrZXlyaW5nX2Ns ZWFyKHN0cnVjdCBrZXkgKmtleXJpbmcpOwoKZXh0ZXJuIGtleV9yZWZfdCBrZXlyaW5nX3NlYXJj aChrZXlfcmVmX3Qga2V5cmluZywKICAgIHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKICAgIGNvbnN0 IGNoYXIgKmRlc2NyaXB0aW9uLAogICAgYm9vbCByZWN1cnNlKTsKCmV4dGVybiBpbnQga2V5cmlu Z19hZGRfa2V5KHN0cnVjdCBrZXkgKmtleXJpbmcsCiAgICAgIHN0cnVjdCBrZXkgKmtleSk7Cgpl eHRlcm4gaW50IGtleXJpbmdfcmVzdHJpY3Qoa2V5X3JlZl90IGtleXJpbmcsIGNvbnN0IGNoYXIg KnR5cGUsCiAgICAgICBjb25zdCBjaGFyICpyZXN0cmljdGlvbik7CgpleHRlcm4gc3RydWN0IGtl eSAqa2V5X2xvb2t1cChrZXlfc2VyaWFsX3QgaWQpOwoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkga2V5X3NlcmlhbF90IGtleV9zZXJpYWwo Y29uc3Qgc3RydWN0IGtleSAqa2V5KQp7CiByZXR1cm4ga2V5ID8ga2V5LT5zZXJpYWwgOiAwOwp9 CgpleHRlcm4gdm9pZCBrZXlfc2V0X3RpbWVvdXQoc3RydWN0IGtleSAqLCB1bnNpZ25lZCk7Cgpl eHRlcm4ga2V5X3JlZl90IGxvb2t1cF91c2VyX2tleShrZXlfc2VyaWFsX3QgaWQsIHVuc2lnbmVk IGxvbmcgZmxhZ3MsCiAgICAga2V5X3Blcm1fdCBwZXJtKTsKZXh0ZXJuIHZvaWQga2V5X2ZyZWVf dXNlcl9ucyhzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKik7CiMgNDM0ICIuL2luY2x1ZGUvbGludXgv a2V5LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHNob3J0IGtleV9yZWFkX3N0YXRlKGNvbnN0IHN0cnVjdCBrZXkgKmtleSkKewoKIHJl dHVybiAoeyB0eXBlb2YoKiZrZXktPnN0YXRlKSBfX19wMSA9ICh7IHVuaW9uIHsgdHlwZW9mKCom a2V5LT5zdGF0ZSkgX192YWw7IGNoYXIgX19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNl X3NpemUoJigqJmtleS0+c3RhdGUpLCBfX3UuX19jLCBzaXplb2YoKiZrZXktPnN0YXRlKSk7IGVs c2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKiZrZXktPnN0YXRlKSwgX191Ll9fYywgc2l6 ZW9mKComa2V5LT5zdGF0ZSkpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyBkbyB7 IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzQzNyh2b2lkKSBfX2F0dHJpYnV0ZV9f KChfX2Vycm9yX18oIk5lZWQgbmF0aXZlIHdvcmQgc2l6ZWQgc3RvcmVzL2xvYWRzIGZvciBhdG9t aWNpdHkuIikpKTsgaWYgKCEoKHNpemVvZigqJmtleS0+c3RhdGUpID09IHNpemVvZihjaGFyKSB8 fCBzaXplb2YoKiZrZXktPnN0YXRlKSA9PSBzaXplb2Yoc2hvcnQpIHx8IHNpemVvZigqJmtleS0+ c3RhdGUpID09IHNpemVvZihpbnQpIHx8IHNpemVvZigqJmtleS0+c3RhdGUpID09IHNpemVvZihs b25nKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF80MzcoKTsgfSB3aGlsZSAoMCk7IF9fYXNtX18g X192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7IF9fX3AxOyB9KTsKfQojIDQ0NyAiLi9pbmNs dWRlL2xpbnV4L2tleS5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGtleV9pc19wb3NpdGl2ZShjb25zdCBzdHJ1Y3Qga2V5ICpr ZXkpCnsKIHJldHVybiBrZXlfcmVhZF9zdGF0ZShrZXkpID09IEtFWV9JU19QT1NJVElWRTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg Ym9vbCBrZXlfaXNfbmVnYXRpdmUoY29uc3Qgc3RydWN0IGtleSAqa2V5KQp7CiByZXR1cm4ga2V5 X3JlYWRfc3RhdGUoa2V5KSA8IDA7Cn0KIyA0NzAgIi4vaW5jbHVkZS9saW51eC9rZXkuaCIKZXh0 ZXJuIHN0cnVjdCBjdGxfdGFibGUga2V5X3N5c2N0bHNbXTsKCgoKCmV4dGVybiBpbnQgaW5zdGFs bF90aHJlYWRfa2V5cmluZ190b19jcmVkKHN0cnVjdCBjcmVkICpjcmVkKTsKZXh0ZXJuIHZvaWQg a2V5X2ZzdWlkX2NoYW5nZWQoc3RydWN0IGNyZWQgKm5ld19jcmVkKTsKZXh0ZXJuIHZvaWQga2V5 X2ZzZ2lkX2NoYW5nZWQoc3RydWN0IGNyZWQgKm5ld19jcmVkKTsKZXh0ZXJuIHZvaWQga2V5X2lu aXQodm9pZCk7CiMgMTQgIi4vaW5jbHVkZS9saW51eC9jcmVkLmgiIDIKCgoKIyAxICIuL2luY2x1 ZGUvbGludXgvc2NoZWQvdXNlci5oIiAxCgoKCgoKCgojIDEgIi4vaW5jbHVkZS9saW51eC9yYXRl bGltaXQuaCIgMQojIDE1ICIuL2luY2x1ZGUvbGludXgvcmF0ZWxpbWl0LmgiCnN0cnVjdCByYXRl bGltaXRfc3RhdGUgewogcmF3X3NwaW5sb2NrX3QgbG9jazsKCiBpbnQgaW50ZXJ2YWw7CiBpbnQg YnVyc3Q7CiBpbnQgcHJpbnRlZDsKIGludCBtaXNzZWQ7CiB1bnNpZ25lZCBsb25nIGJlZ2luOwog dW5zaWduZWQgbG9uZyBmbGFnczsKfTsKIyA0MCAiLi9pbmNsdWRlL2xpbnV4L3JhdGVsaW1pdC5o IgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSB2b2lkIHJhdGVsaW1pdF9zdGF0ZV9pbml0KHN0cnVjdCByYXRlbGltaXRfc3RhdGUgKnJzLAog ICAgIGludCBpbnRlcnZhbCwgaW50IGJ1cnN0KQp7CiBtZW1zZXQocnMsIDAsIHNpemVvZigqcnMp KTsKCiBkbyB7ICooJnJzLT5sb2NrKSA9IChyYXdfc3BpbmxvY2tfdCkgeyAucmF3X2xvY2sgPSB7 IHsgLnZhbCA9IHsgKDApIH0gfSB9LCB9OyB9IHdoaWxlICgwKTsKIHJzLT5pbnRlcnZhbCA9IGlu dGVydmFsOwogcnMtPmJ1cnN0ID0gYnVyc3Q7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgcmF0ZWxpbWl0X2RlZmF1bHRfaW5p dChzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlICpycykKewogcmV0dXJuIHJhdGVsaW1pdF9zdGF0ZV9p bml0KHJzLCAoNSAqIDI1MCksCiAgICAgMTApOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHJhdGVsaW1pdF9zdGF0ZV9leGl0 KHN0cnVjdCByYXRlbGltaXRfc3RhdGUgKnJzKQp7CiBpZiAoIShycy0+ZmxhZ3MgJiAoKCgoMVVM KSkpIDw8ICgwKSkpKQogIHJldHVybjsKCiBpZiAocnMtPm1pc3NlZCkgewogIHByaW50aygiXDAw MSIgIjQiICIlczogJWQgb3V0cHV0IGxpbmVzIHN1cHByZXNzZWQgZHVlIHRvIHJhdGVsaW1pdGlu Z1xuIiwgZ2V0X2N1cnJlbnQoKS0+Y29tbSwgcnMtPm1pc3NlZCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7CiAgcnMtPm1pc3NlZCA9IDA7CiB9Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKcmF0ZWxpbWl0X3NldF9m bGFncyhzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlICpycywgdW5zaWduZWQgbG9uZyBmbGFncykKewog cnMtPmZsYWdzID0gZmxhZ3M7Cn0KCmV4dGVybiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIHByaW50 a19yYXRlbGltaXRfc3RhdGU7CgpleHRlcm4gaW50IF9fX3JhdGVsaW1pdChzdHJ1Y3QgcmF0ZWxp bWl0X3N0YXRlICpycywgY29uc3QgY2hhciAqZnVuYyk7CiMgOSAiLi9pbmNsdWRlL2xpbnV4L3Nj aGVkL3VzZXIuaCIgMgoKCgoKc3RydWN0IHVzZXJfc3RydWN0IHsKIHJlZmNvdW50X3QgX19jb3Vu dDsKIGF0b21pY190IHByb2Nlc3NlczsKIGF0b21pY190IHNpZ3BlbmRpbmc7CgogYXRvbWljX3Qg ZmFub3RpZnlfbGlzdGVuZXJzOwoKCiBhdG9taWNfbG9uZ190IGVwb2xsX3dhdGNoZXM7CgoKCiB1 bnNpZ25lZCBsb25nIG1xX2J5dGVzOwoKIHVuc2lnbmVkIGxvbmcgbG9ja2VkX3NobTsKIHVuc2ln bmVkIGxvbmcgdW5peF9pbmZsaWdodDsKIGF0b21pY19sb25nX3QgcGlwZV9idWZzOwoKCiBzdHJ1 Y3QgaGxpc3Rfbm9kZSB1aWRoYXNoX25vZGU7CiBrdWlkX3QgdWlkOwoKCgogYXRvbWljX2xvbmdf dCBsb2NrZWRfdm07CgoKCiBzdHJ1Y3QgcmF0ZWxpbWl0X3N0YXRlIHJhdGVsaW1pdDsKfTsKCmV4 dGVybiBpbnQgdWlkc19zeXNmc19pbml0KHZvaWQpOwoKZXh0ZXJuIHN0cnVjdCB1c2VyX3N0cnVj dCAqZmluZF91c2VyKGt1aWRfdCk7CgpleHRlcm4gc3RydWN0IHVzZXJfc3RydWN0IHJvb3RfdXNl cjsKCgoKCmV4dGVybiBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKiBhbGxvY191aWQoa3VpZF90KTsKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3Ry dWN0IHVzZXJfc3RydWN0ICpnZXRfdWlkKHN0cnVjdCB1c2VyX3N0cnVjdCAqdSkKewogcmVmY291 bnRfaW5jKCZ1LT5fX2NvdW50KTsKIHJldHVybiB1Owp9CmV4dGVybiB2b2lkIGZyZWVfdWlkKHN0 cnVjdCB1c2VyX3N0cnVjdCAqKTsKIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIgMgoKc3Ry dWN0IGNyZWQ7CnN0cnVjdCBpbm9kZTsKCgoKCnN0cnVjdCBncm91cF9pbmZvIHsKIGF0b21pY190 IHVzYWdlOwogaW50IG5ncm91cHM7CiBrZ2lkX3QgZ2lkWzBdOwp9IF9fYXR0cmlidXRlX18oKF9f ZGVzaWduYXRlZF9pbml0X18pKTsKIyA0MCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGdyb3VwX2luZm8gKmdldF9ncm91cF9pbmZvKHN0cnVjdCBncm91cF9pbmZvICpnaSkKewogYXRv bWljX2luYygmZ2ktPnVzYWdlKTsKIHJldHVybiBnaTsKfQojIDU2ICIuL2luY2x1ZGUvbGludXgv Y3JlZC5oIgpleHRlcm4gc3RydWN0IGdyb3VwX2luZm8gaW5pdF9ncm91cHM7CgpleHRlcm4gc3Ry dWN0IGdyb3VwX2luZm8gKmdyb3Vwc19hbGxvYyhpbnQpOwpleHRlcm4gdm9pZCBncm91cHNfZnJl ZShzdHJ1Y3QgZ3JvdXBfaW5mbyAqKTsKCmV4dGVybiBpbnQgaW5fZ3JvdXBfcChrZ2lkX3QpOwpl eHRlcm4gaW50IGluX2Vncm91cF9wKGtnaWRfdCk7CmV4dGVybiBpbnQgZ3JvdXBzX3NlYXJjaChj b25zdCBzdHJ1Y3QgZ3JvdXBfaW5mbyAqLCBrZ2lkX3QpOwoKZXh0ZXJuIGludCBzZXRfY3VycmVu dF9ncm91cHMoc3RydWN0IGdyb3VwX2luZm8gKik7CmV4dGVybiB2b2lkIHNldF9ncm91cHMoc3Ry dWN0IGNyZWQgKiwgc3RydWN0IGdyb3VwX2luZm8gKik7CmV4dGVybiBib29sIG1heV9zZXRncm91 cHModm9pZCk7CmV4dGVybiB2b2lkIGdyb3Vwc19zb3J0KHN0cnVjdCBncm91cF9pbmZvICopOwoj IDExMSAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RydWN0IGNyZWQgewogYXRvbWljX3QgdXNh Z2U7CgoKCgoKCgoga3VpZF90IHVpZDsKIGtnaWRfdCBnaWQ7CiBrdWlkX3Qgc3VpZDsKIGtnaWRf dCBzZ2lkOwoga3VpZF90IGV1aWQ7CiBrZ2lkX3QgZWdpZDsKIGt1aWRfdCBmc3VpZDsKIGtnaWRf dCBmc2dpZDsKIHVuc2lnbmVkIHNlY3VyZWJpdHM7CiBrZXJuZWxfY2FwX3QgY2FwX2luaGVyaXRh YmxlOwoga2VybmVsX2NhcF90IGNhcF9wZXJtaXR0ZWQ7CiBrZXJuZWxfY2FwX3QgY2FwX2VmZmVj dGl2ZTsKIGtlcm5lbF9jYXBfdCBjYXBfYnNldDsKIGtlcm5lbF9jYXBfdCBjYXBfYW1iaWVudDsK CiB1bnNpZ25lZCBjaGFyIGppdF9rZXlyaW5nOwoKIHN0cnVjdCBrZXkgKnNlc3Npb25fa2V5cmlu ZzsKIHN0cnVjdCBrZXkgKnByb2Nlc3Nfa2V5cmluZzsKIHN0cnVjdCBrZXkgKnRocmVhZF9rZXly aW5nOwogc3RydWN0IGtleSAqcmVxdWVzdF9rZXlfYXV0aDsKCgogdm9pZCAqc2VjdXJpdHk7Cgog c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyOwogc3RydWN0IHVzZXJfbmFtZXNwYWNlICp1c2VyX25z Owogc3RydWN0IGdyb3VwX2luZm8gKmdyb3VwX2luZm87CgogdW5pb24gewogIGludCBub25fcmN1 OwogIHN0cnVjdCBjYWxsYmFja19oZWFkIHJjdTsKIH07Cn0gX19hdHRyaWJ1dGVfXygoX19kZXNp Z25hdGVkX2luaXRfXykpOwoKZXh0ZXJuIHZvaWQgX19wdXRfY3JlZChzdHJ1Y3QgY3JlZCAqKTsK ZXh0ZXJuIHZvaWQgZXhpdF9jcmVkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQg Y29weV9jcmVkcyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZyk7CmV4dGVybiBj b25zdCBzdHJ1Y3QgY3JlZCAqZ2V0X3Rhc2tfY3JlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4 dGVybiBzdHJ1Y3QgY3JlZCAqY3JlZF9hbGxvY19ibGFuayh2b2lkKTsKZXh0ZXJuIHN0cnVjdCBj cmVkICpwcmVwYXJlX2NyZWRzKHZvaWQpOwpleHRlcm4gc3RydWN0IGNyZWQgKnByZXBhcmVfZXhl Y19jcmVkcyh2b2lkKTsKZXh0ZXJuIGludCBjb21taXRfY3JlZHMoc3RydWN0IGNyZWQgKik7CmV4 dGVybiB2b2lkIGFib3J0X2NyZWRzKHN0cnVjdCBjcmVkICopOwpleHRlcm4gY29uc3Qgc3RydWN0 IGNyZWQgKm92ZXJyaWRlX2NyZWRzKGNvbnN0IHN0cnVjdCBjcmVkICopOwpleHRlcm4gdm9pZCBy ZXZlcnRfY3JlZHMoY29uc3Qgc3RydWN0IGNyZWQgKik7CmV4dGVybiBzdHJ1Y3QgY3JlZCAqcHJl cGFyZV9rZXJuZWxfY3JlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKik7CmV4dGVybiBpbnQgY2hhbmdl X2NyZWF0ZV9maWxlc19hcyhzdHJ1Y3QgY3JlZCAqLCBzdHJ1Y3QgaW5vZGUgKik7CmV4dGVybiBp bnQgc2V0X3NlY3VyaXR5X292ZXJyaWRlKHN0cnVjdCBjcmVkICosIHUzMik7CmV4dGVybiBpbnQg c2V0X3NlY3VyaXR5X292ZXJyaWRlX2Zyb21fY3R4KHN0cnVjdCBjcmVkICosIGNvbnN0IGNoYXIg Kik7CmV4dGVybiBpbnQgc2V0X2NyZWF0ZV9maWxlc19hcyhzdHJ1Y3QgY3JlZCAqLCBzdHJ1Y3Qg aW5vZGUgKik7CmV4dGVybiBpbnQgY3JlZF9mc2NtcChjb25zdCBzdHJ1Y3QgY3JlZCAqLCBjb25z dCBzdHJ1Y3QgY3JlZCAqKTsKZXh0ZXJuIHZvaWQgX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18o Ii5pbml0LnRleHQiKSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkgY3JlZF9pbml0KHZvaWQp OwojIDIwMyAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCB2YWxpZGF0ZV9jcmVkcyhjb25z dCBzdHJ1Y3QgY3JlZCAqY3JlZCkKewp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgdmFsaWRhdGVfY3JlZHNfZm9yX2RvX2V4aXQo c3RydWN0IHRhc2tfc3RydWN0ICp0c2spCnsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHZhbGlkYXRlX3Byb2Nlc3NfY3JlZHMo dm9pZCkKewp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgYm9vbCBjYXBfYW1iaWVudF9pbnZhcmlhbnRfb2soY29uc3Qgc3RydWN0IGNy ZWQgKmNyZWQpCnsKIHJldHVybiBjYXBfaXNzdWJzZXQoY3JlZC0+Y2FwX2FtYmllbnQsCiAgICAg ICBjYXBfaW50ZXJzZWN0KGNyZWQtPmNhcF9wZXJtaXR0ZWQsCiAgICAgICBjcmVkLT5jYXBfaW5o ZXJpdGFibGUpKTsKfQojIDIyOCAiLi9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGNyZWQg KmdldF9uZXdfY3JlZChzdHJ1Y3QgY3JlZCAqY3JlZCkKewogYXRvbWljX2luYygmY3JlZC0+dXNh Z2UpOwogcmV0dXJuIGNyZWQ7Cn0KIyAyNDcgIi4vaW5jbHVkZS9saW51eC9jcmVkLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGNvbnN0 IHN0cnVjdCBjcmVkICpnZXRfY3JlZChjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCkKewogc3RydWN0 IGNyZWQgKm5vbmNvbnN0X2NyZWQgPSAoc3RydWN0IGNyZWQgKikgY3JlZDsKIGlmICghY3JlZCkK ICByZXR1cm4gY3JlZDsKIHZhbGlkYXRlX2NyZWRzKGNyZWQpOwogbm9uY29uc3RfY3JlZC0+bm9u X3JjdSA9IDA7CiByZXR1cm4gZ2V0X25ld19jcmVkKG5vbmNvbnN0X2NyZWQpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBz dHJ1Y3QgY3JlZCAqZ2V0X2NyZWRfcmN1KGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKQp7CiBzdHJ1 Y3QgY3JlZCAqbm9uY29uc3RfY3JlZCA9IChzdHJ1Y3QgY3JlZCAqKSBjcmVkOwogaWYgKCFjcmVk KQogIHJldHVybiAoKHZvaWQgKikwKTsKIGlmICghYXRvbWljX2luY19ub3RfemVybygmbm9uY29u c3RfY3JlZC0+dXNhZ2UpKQogIHJldHVybiAoKHZvaWQgKikwKTsKIHZhbGlkYXRlX2NyZWRzKGNy ZWQpOwogbm9uY29uc3RfY3JlZC0+bm9uX3JjdSA9IDA7CiByZXR1cm4gY3JlZDsKfQojIDI4MCAi Li9pbmNsdWRlL2xpbnV4L2NyZWQuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwdXRfY3JlZChjb25zdCBzdHJ1Y3QgY3JlZCAq X2NyZWQpCnsKIHN0cnVjdCBjcmVkICpjcmVkID0gKHN0cnVjdCBjcmVkICopIF9jcmVkOwoKIGlm IChjcmVkKSB7CiAgdmFsaWRhdGVfY3JlZHMoY3JlZCk7CiAgaWYgKGF0b21pY19kZWNfYW5kX3Rl c3QoJihjcmVkKS0+dXNhZ2UpKQogICBfX3B1dF9jcmVkKGNyZWQpOwogfQp9CiMgMzkwICIuL2lu Y2x1ZGUvbGludXgvY3JlZC5oIgpleHRlcm4gc3RydWN0IHVzZXJfbmFtZXNwYWNlIGluaXRfdXNl cl9uczsKIyAxMyAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiIDIKCnN0cnVjdCBzZXFfb3Bl cmF0aW9uczsKCnN0cnVjdCBzZXFfZmlsZSB7CiBjaGFyICpidWY7CiBzaXplX3Qgc2l6ZTsKIHNp emVfdCBmcm9tOwogc2l6ZV90IGNvdW50Owogc2l6ZV90IHBhZF91bnRpbDsKIGxvZmZfdCBpbmRl eDsKIGxvZmZfdCByZWFkX3BvczsKIHU2NCB2ZXJzaW9uOwogc3RydWN0IG11dGV4IGxvY2s7CiBj b25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgKm9wOwogaW50IHBvbGxfZXZlbnQ7CiBjb25zdCBz dHJ1Y3QgZmlsZSAqZmlsZTsKIHZvaWQgKnByaXZhdGU7Cn07CgpzdHJ1Y3Qgc2VxX29wZXJhdGlv bnMgewogdm9pZCAqICgqc3RhcnQpIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGxvZmZfdCAqcG9zKTsK IHZvaWQgKCpzdG9wKSAoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp2KTsKIHZvaWQgKiAoKm5l eHQpIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYsIGxvZmZfdCAqcG9zKTsKIGludCAoKnNo b3cpIChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnYpOwp9OwojIDUxICIuL2luY2x1ZGUvbGlu dXgvc2VxX2ZpbGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBzZXFfaGFzX292ZXJmbG93ZWQoc3RydWN0IHNlcV9maWxlICpt KQp7CiByZXR1cm4gbS0+Y291bnQgPT0gbS0+c2l6ZTsKfQojIDY0ICIuL2luY2x1ZGUvbGludXgv c2VxX2ZpbGUuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc2l6ZV90IHNlcV9nZXRfYnVmKHN0cnVjdCBzZXFfZmlsZSAqbSwgY2hhciAq KmJ1ZnApCnsKIGRvIHsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEobS0+Y291bnQgPiBtLT5zaXpl KSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBm LCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAi LmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5s b25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEi ICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZs YWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImluY2x1ZGUv bGludXgvc2VxX2ZpbGUuaCIpLCAiaSIgKDY2KSwgImkiICgwKSwgImkiIChzaXplb2Yoc3RydWN0 IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7IGRvIHsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC51bnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0g LlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDMzKSk7IH0pOyBhc20gdm9sYXRpbGUo IiIpOyBfX2J1aWx0aW5fdW5yZWFjaGFibGUoKTsgfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOyB9 IHdoaWxlICgwKTsKIGlmIChtLT5jb3VudCA8IG0tPnNpemUpCiAgKmJ1ZnAgPSBtLT5idWYgKyBt LT5jb3VudDsKIGVsc2UKICAqYnVmcCA9ICgodm9pZCAqKTApOwoKIHJldHVybiBtLT5zaXplIC0g bS0+Y291bnQ7Cn0KIyA4NCAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2VxX2Nv bW1pdChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGludCBudW0pCnsKIGlmIChudW0gPCAwKSB7CiAgbS0+ Y291bnQgPSBtLT5zaXplOwogfSBlbHNlIHsKICBkbyB7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KG0tPmNvdW50ICsgbnVtID4gbS0+c2l6ZSksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZv bGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVn X3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50 cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29y ZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNl Y3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiKSwgImkiICg4OSksICJp IiAoMCksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyBkbyB7 ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQudW5yZWFj aGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImki ICgzNCkpOyB9KTsgYXNtIHZvbGF0aWxlKCIiKTsgX19idWlsdGluX3VucmVhY2hhYmxlKCk7IH0g d2hpbGUgKDApOyB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7CiAgbS0+Y291bnQgKz0gbnVtOwog fQp9CiMgMTAyICIuL2luY2x1ZGUvbGludXgvc2VxX2ZpbGUuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzZXFfc2V0d2lkdGgo c3RydWN0IHNlcV9maWxlICptLCBzaXplX3Qgc2l6ZSkKewogbS0+cGFkX3VudGlsID0gbS0+Y291 bnQgKyBzaXplOwp9CnZvaWQgc2VxX3BhZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNoYXIgYyk7Cgpj aGFyICptYW5nbGVfcGF0aChjaGFyICpzLCBjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICplc2Mp OwppbnQgc2VxX29wZW4oc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IHNlcV9vcGVyYXRpb25z ICopOwpzc2l6ZV90IHNlcV9yZWFkKHN0cnVjdCBmaWxlICosIGNoYXIgKiwgc2l6ZV90LCBsb2Zm X3QgKik7CmxvZmZfdCBzZXFfbHNlZWsoc3RydWN0IGZpbGUgKiwgbG9mZl90LCBpbnQpOwppbnQg c2VxX3JlbGVhc2Uoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwppbnQgc2VxX3dyaXRl KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKCl9f YXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAwKSkpCnZvaWQgc2VxX3ZwcmludGYo c3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXJncyk7Cl9fYXR0 cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCnZvaWQgc2VxX3ByaW50ZihzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKdm9pZCBzZXFfcHV0YyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIGNoYXIgYyk7CnZvaWQgc2VxX3B1dHMoc3RydWN0IHNlcV9maWxlICpt LCBjb25zdCBjaGFyICpzKTsKdm9pZCBzZXFfcHV0X2RlY2ltYWxfdWxsX3dpZHRoKHN0cnVjdCBz ZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqZGVsaW1pdGVyLAogICAgICAgICAgdW5zaWduZWQgbG9u ZyBsb25nIG51bSwgdW5zaWduZWQgaW50IHdpZHRoKTsKdm9pZCBzZXFfcHV0X2RlY2ltYWxfdWxs KHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqZGVsaW1pdGVyLAogICAgdW5zaWduZWQg bG9uZyBsb25nIG51bSk7CnZvaWQgc2VxX3B1dF9kZWNpbWFsX2xsKHN0cnVjdCBzZXFfZmlsZSAq bSwgY29uc3QgY2hhciAqZGVsaW1pdGVyLCBsb25nIGxvbmcgbnVtKTsKdm9pZCBzZXFfcHV0X2hl eF9sbChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKmRlbGltaXRlciwKICAgICAgdW5z aWduZWQgbG9uZyBsb25nIHYsIHVuc2lnbmVkIGludCB3aWR0aCk7Cgp2b2lkIHNlcV9lc2NhcGUo c3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplc2MpOwp2b2lk IHNlcV9lc2NhcGVfbWVtX2FzY2lpKHN0cnVjdCBzZXFfZmlsZSAqbSwgY29uc3QgY2hhciAqc3Jj LCBzaXplX3QgaXN6KTsKCnZvaWQgc2VxX2hleF9kdW1wKHN0cnVjdCBzZXFfZmlsZSAqbSwgY29u c3QgY2hhciAqcHJlZml4X3N0ciwgaW50IHByZWZpeF90eXBlLAogICAgaW50IHJvd3NpemUsIGlu dCBncm91cHNpemUsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwKICAgIGJvb2wgYXNjaWkp OwoKaW50IHNlcV9wYXRoKHN0cnVjdCBzZXFfZmlsZSAqLCBjb25zdCBzdHJ1Y3QgcGF0aCAqLCBj b25zdCBjaGFyICopOwppbnQgc2VxX2ZpbGVfcGF0aChzdHJ1Y3Qgc2VxX2ZpbGUgKiwgc3RydWN0 IGZpbGUgKiwgY29uc3QgY2hhciAqKTsKaW50IHNlcV9kZW50cnkoc3RydWN0IHNlcV9maWxlICos IHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqKTsKaW50IHNlcV9wYXRoX3Jvb3Qoc3RydWN0 IHNlcV9maWxlICptLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwKICAgIGNvbnN0IHN0cnVjdCBw YXRoICpyb290LCBjb25zdCBjaGFyICplc2MpOwoKaW50IHNpbmdsZV9vcGVuKHN0cnVjdCBmaWxl ICosIGludCAoKikoc3RydWN0IHNlcV9maWxlICosIHZvaWQgKiksIHZvaWQgKik7CmludCBzaW5n bGVfb3Blbl9zaXplKHN0cnVjdCBmaWxlICosIGludCAoKikoc3RydWN0IHNlcV9maWxlICosIHZv aWQgKiksIHZvaWQgKiwgc2l6ZV90KTsKaW50IHNpbmdsZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAq LCBzdHJ1Y3QgZmlsZSAqKTsKdm9pZCAqX19zZXFfb3Blbl9wcml2YXRlKHN0cnVjdCBmaWxlICos IGNvbnN0IHN0cnVjdCBzZXFfb3BlcmF0aW9ucyAqLCBpbnQpOwppbnQgc2VxX29wZW5fcHJpdmF0 ZShzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgKiwgaW50KTsKaW50 IHNlcV9yZWxlYXNlX3ByaXZhdGUoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOwojIDE3 NiAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCB1c2VyX25hbWVzcGFjZSAqc2Vx X3VzZXJfbnMoc3RydWN0IHNlcV9maWxlICpzZXEpCnsKCiByZXR1cm4gc2VxLT5maWxlLT5mX2Ny ZWQtPnVzZXJfbnM7CgoKCgp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHNlcV9zaG93X29wdGlvbihzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICBjb25zdCBjaGFyICp2YWx1ZSkKewog c2VxX3B1dGMobSwgJywnKTsKIHNlcV9lc2NhcGUobSwgbmFtZSwgIiw9IFx0XG5cXCIpOwogaWYg KHZhbHVlKSB7CiAgc2VxX3B1dGMobSwgJz0nKTsKICBzZXFfZXNjYXBlKG0sIHZhbHVlLCAiLCBc dFxuXFwiKTsKIH0KfQojIDIyNiAiLi9pbmNsdWRlL2xpbnV4L3NlcV9maWxlLmgiCmV4dGVybiBz dHJ1Y3QgbGlzdF9oZWFkICpzZXFfbGlzdF9zdGFydChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAog IGxvZmZfdCBwb3MpOwpleHRlcm4gc3RydWN0IGxpc3RfaGVhZCAqc2VxX2xpc3Rfc3RhcnRfaGVh ZChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAogIGxvZmZfdCBwb3MpOwpleHRlcm4gc3RydWN0IGxp c3RfaGVhZCAqc2VxX2xpc3RfbmV4dCh2b2lkICp2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAog IGxvZmZfdCAqcHBvcyk7CgoKCgoKZXh0ZXJuIHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3Rf c3RhcnQoc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQsCiAgICAgICBsb2ZmX3QgcG9zKTsKZXh0ZXJu IHN0cnVjdCBobGlzdF9ub2RlICpzZXFfaGxpc3Rfc3RhcnRfaGVhZChzdHJ1Y3QgaGxpc3RfaGVh ZCAqaGVhZCwKICAgICAgICAgICAgbG9mZl90IHBvcyk7CmV4dGVybiBzdHJ1Y3QgaGxpc3Rfbm9k ZSAqc2VxX2hsaXN0X25leHQodm9pZCAqdiwgc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQsCiAgICAg IGxvZmZfdCAqcHBvcyk7CgpleHRlcm4gc3RydWN0IGhsaXN0X25vZGUgKnNlcV9obGlzdF9zdGFy dF9yY3Uoc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQsCiAgICAgICAgICAgbG9mZl90IHBvcyk7CmV4 dGVybiBzdHJ1Y3QgaGxpc3Rfbm9kZSAqc2VxX2hsaXN0X3N0YXJ0X2hlYWRfcmN1KHN0cnVjdCBo bGlzdF9oZWFkICpoZWFkLAogICAgICAgICBsb2ZmX3QgcG9zKTsKZXh0ZXJuIHN0cnVjdCBobGlz dF9ub2RlICpzZXFfaGxpc3RfbmV4dF9yY3Uodm9pZCAqdiwKICAgICAgICAgc3RydWN0IGhsaXN0 X2hlYWQgKmhlYWQsCiAgICAgICAgIGxvZmZfdCAqcHBvcyk7CgoKZXh0ZXJuIHN0cnVjdCBobGlz dF9ub2RlICpzZXFfaGxpc3Rfc3RhcnRfcGVyY3B1KHN0cnVjdCBobGlzdF9oZWFkICpoZWFkLCBp bnQgKmNwdSwgbG9mZl90IHBvcyk7CgpleHRlcm4gc3RydWN0IGhsaXN0X25vZGUgKnNlcV9obGlz dF9uZXh0X3BlcmNwdSh2b2lkICp2LCBzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCwgaW50ICpjcHUs IGxvZmZfdCAqcG9zKTsKCnZvaWQgc2VxX2ZpbGVfaW5pdCh2b2lkKTsKIyAzMiAiLi9pbmNsdWRl L2RybS9kcm1fcHJpbnQuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMQojIDE1 ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L2Rldl9wcmlu dGsuaCIgMQojIDIyICIuL2luY2x1ZGUvbGludXgvZGV2X3ByaW50ay5oIgpzdHJ1Y3QgZGV2aWNl OwoKCgpfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgMCkpKSBfX2F0dHJpYnV0 ZV9fKChfX2NvbGRfXykpCmludCBkZXZfdnByaW50a19lbWl0KGludCBsZXZlbCwgY29uc3Qgc3Ry dWN0IGRldmljZSAqZGV2LAogICAgICAgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwpf X2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKSBfX2F0dHJpYnV0ZV9fKChf X2NvbGRfXykpCmludCBkZXZfcHJpbnRrX2VtaXQoaW50IGxldmVsLCBjb25zdCBzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKCl9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18ocHJpbnRmLCAzLCA0KSkpIF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkKdm9pZCBkZXZfcHJp bnRrKGNvbnN0IGNoYXIgKmxldmVsLCBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgY29uc3Qg Y2hhciAqZm10LCAuLi4pOwpfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykp KSBfX2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpCnZvaWQgX2Rldl9lbWVyZyhjb25zdCBzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKX19hdHRyaWJ1dGVfXygoX19mb3Jt YXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQp2b2lkIF9kZXZf YWxlcnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cl9f YXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpIF9fYXR0cmlidXRlX18oKF9f Y29sZF9fKSkKdm9pZCBfZGV2X2NyaXQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBj aGFyICpmbXQsIC4uLik7Cl9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkp IF9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkKdm9pZCBfZGV2X2Vycihjb25zdCBzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKX19hdHRyaWJ1dGVfXygoX19mb3JtYXRf XyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xkX18pKQp2b2lkIF9kZXZfd2Fy bihjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKX19hdHRy aWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygoX19jb2xk X18pKQp2b2lkIF9kZXZfbm90aWNlKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hh ciAqZm10LCAuLi4pOwpfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBf X2F0dHJpYnV0ZV9fKChfX2NvbGRfXykpCnZvaWQgX2Rldl9pbmZvKGNvbnN0IHN0cnVjdCBkZXZp Y2UgKmRldiwgY29uc3QgY2hhciAqZm10LCAuLi4pOwojIDE2ICIuL2luY2x1ZGUvbGludXgvZGV2 aWNlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvaW9wb3J0LmgiIDEKIyAyMCAiLi9pbmNsdWRl L2xpbnV4L2lvcG9ydC5oIgpzdHJ1Y3QgcmVzb3VyY2UgewogcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0 OwogcmVzb3VyY2Vfc2l6ZV90IGVuZDsKIGNvbnN0IGNoYXIgKm5hbWU7CiB1bnNpZ25lZCBsb25n IGZsYWdzOwogdW5zaWduZWQgbG9uZyBkZXNjOwogc3RydWN0IHJlc291cmNlICpwYXJlbnQsICpz aWJsaW5nLCAqY2hpbGQ7Cn07CiMgMTI4ICIuL2luY2x1ZGUvbGludXgvaW9wb3J0LmgiCmVudW0g ewogSU9SRVNfREVTQ19OT05FID0gMCwKIElPUkVTX0RFU0NfQ1JBU0hfS0VSTkVMID0gMSwKIElP UkVTX0RFU0NfQUNQSV9UQUJMRVMgPSAyLAogSU9SRVNfREVTQ19BQ1BJX05WX1NUT1JBR0UgPSAz LAogSU9SRVNfREVTQ19QRVJTSVNURU5UX01FTU9SWSA9IDQsCiBJT1JFU19ERVNDX1BFUlNJU1RF TlRfTUVNT1JZX0xFR0FDWSA9IDUsCiBJT1JFU19ERVNDX0RFVklDRV9QUklWQVRFX01FTU9SWSA9 IDYsCiBJT1JFU19ERVNDX1JFU0VSVkVEID0gNywKIElPUkVTX0RFU0NfU09GVF9SRVNFUlZFRCA9 IDgsCn07CgoKCgplbnVtIHsKIElPUkVTX01BUF9TWVNURU1fUkFNID0gKCgoKDFVTCkpKSA8PCAo MCkpLAogSU9SRVNfTUFQX0VOQ1JZUFRFRCA9ICgoKCgxVUwpKSkgPDwgKDEpKSwKfTsKIyAxNzkg Ii4vaW5jbHVkZS9saW51eC9pb3BvcnQuaCIKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSBpb3BvcnRf cmVzb3VyY2U7CmV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgaW9tZW1fcmVzb3VyY2U7CgpleHRlcm4g c3RydWN0IHJlc291cmNlICpyZXF1ZXN0X3Jlc291cmNlX2NvbmZsaWN0KHN0cnVjdCByZXNvdXJj ZSAqcm9vdCwgc3RydWN0IHJlc291cmNlICpuZXcpOwpleHRlcm4gaW50IHJlcXVlc3RfcmVzb3Vy Y2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CmV4dGVybiBp bnQgcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7CnZvaWQgcmVsZWFzZV9j aGlsZF9yZXNvdXJjZXMoc3RydWN0IHJlc291cmNlICpuZXcpOwpleHRlcm4gdm9pZCByZXNlcnZl X3JlZ2lvbl93aXRoX3NwbGl0KHN0cnVjdCByZXNvdXJjZSAqcm9vdCwKICAgICAgICByZXNvdXJj ZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBlbmQsCiAgICAgICAgY29uc3QgY2hhciAq bmFtZSk7CmV4dGVybiBzdHJ1Y3QgcmVzb3VyY2UgKmluc2VydF9yZXNvdXJjZV9jb25mbGljdChz dHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgc3RydWN0IHJlc291cmNlICpuZXcpOwpleHRlcm4gaW50 IGluc2VydF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwgc3RydWN0IHJlc291cmNl ICpuZXcpOwpleHRlcm4gdm9pZCBpbnNlcnRfcmVzb3VyY2VfZXhwYW5kX3RvX2ZpdChzdHJ1Y3Qg cmVzb3VyY2UgKnJvb3QsIHN0cnVjdCByZXNvdXJjZSAqbmV3KTsKZXh0ZXJuIGludCByZW1vdmVf cmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpvbGQpOwpleHRlcm4gdm9pZCBhcmNoX3JlbW92ZV9y ZXNlcnZhdGlvbnMoc3RydWN0IHJlc291cmNlICphdmFpbCk7CmV4dGVybiBpbnQgYWxsb2NhdGVf cmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyb290LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ldywKICAg ICAgICByZXNvdXJjZV9zaXplX3Qgc2l6ZSwgcmVzb3VyY2Vfc2l6ZV90IG1pbiwKICAgICAgICBy ZXNvdXJjZV9zaXplX3QgbWF4LCByZXNvdXJjZV9zaXplX3QgYWxpZ24sCiAgICAgICAgcmVzb3Vy Y2Vfc2l6ZV90ICgqYWxpZ25mKSh2b2lkICosCiAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVz b3VyY2UgKiwKICAgICAgICAgICAgIHJlc291cmNlX3NpemVfdCwKICAgICAgICAgICAgIHJlc291 cmNlX3NpemVfdCksCiAgICAgICAgdm9pZCAqYWxpZ25mX2RhdGEpOwpzdHJ1Y3QgcmVzb3VyY2Ug Kmxvb2t1cF9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJvb3QsIHJlc291cmNlX3NpemVfdCBz dGFydCk7CmludCBhZGp1c3RfcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyZXMsIHJlc291cmNl X3NpemVfdCBzdGFydCwKICAgICAgcmVzb3VyY2Vfc2l6ZV90IHNpemUpOwpyZXNvdXJjZV9zaXpl X3QgcmVzb3VyY2VfYWxpZ25tZW50KHN0cnVjdCByZXNvdXJjZSAqcmVzKTsKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgcmVzb3VyY2Vfc2l6 ZV90IHJlc291cmNlX3NpemUoY29uc3Qgc3RydWN0IHJlc291cmNlICpyZXMpCnsKIHJldHVybiBy ZXMtPmVuZCAtIHJlcy0+c3RhcnQgKyAxOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VfdHlwZShj b25zdCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcykKewogcmV0dXJuIHJlcy0+ZmxhZ3MgJiAweDAwMDAx ZjAwOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VfZXh0X3R5cGUoY29uc3Qgc3RydWN0IHJlc291 cmNlICpyZXMpCnsKIHJldHVybiByZXMtPmZsYWdzICYgMHgwMTAwMDAwMDsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCByZXNv dXJjZV9jb250YWlucyhzdHJ1Y3QgcmVzb3VyY2UgKnIxLCBzdHJ1Y3QgcmVzb3VyY2UgKnIyKQp7 CiBpZiAocmVzb3VyY2VfdHlwZShyMSkgIT0gcmVzb3VyY2VfdHlwZShyMikpCiAgcmV0dXJuIGZh bHNlOwogaWYgKHIxLT5mbGFncyAmIDB4MjAwMDAwMDAgfHwgcjItPmZsYWdzICYgMHgyMDAwMDAw MCkKICByZXR1cm4gZmFsc2U7CiByZXR1cm4gcjEtPnN0YXJ0IDw9IHIyLT5zdGFydCAmJiByMS0+ ZW5kID49IHIyLT5lbmQ7Cn0KIyAyMzggIi4vaW5jbHVkZS9saW51eC9pb3BvcnQuaCIKZXh0ZXJu IHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVzdF9yZWdpb24oc3RydWN0IHJlc291cmNlICosCiAg ICAgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAogICAgIHJlc291cmNlX3NpemVfdCBuLAogICAgIGNv bnN0IGNoYXIgKm5hbWUsIGludCBmbGFncyk7CgoKCgoKZXh0ZXJuIHZvaWQgX19yZWxlYXNlX3Jl Z2lvbihzdHJ1Y3QgcmVzb3VyY2UgKiwgcmVzb3VyY2Vfc2l6ZV90LAogICAgcmVzb3VyY2Vfc2l6 ZV90KTsKCmV4dGVybiBpbnQgcmVsZWFzZV9tZW1fcmVnaW9uX2FkanVzdGFibGUoc3RydWN0IHJl c291cmNlICosIHJlc291cmNlX3NpemVfdCwKICAgIHJlc291cmNlX3NpemVfdCk7CgoKCnN0cnVj dCBkZXZpY2U7CgpleHRlcm4gaW50IGRldm1fcmVxdWVzdF9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCByZXNvdXJjZSAqcm9vdCwKICAgICBzdHJ1Y3QgcmVzb3VyY2UgKm5ldyk7 CmV4dGVybiB2b2lkIGRldm1fcmVsZWFzZV9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCByZXNvdXJjZSAqbmV3KTsKCgoKCgoKZXh0ZXJuIHN0cnVjdCByZXNvdXJjZSAqIF9fZGV2 bV9yZXF1ZXN0X3JlZ2lvbihzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICBzdHJ1Y3QgcmVzb3VyY2Ug KnBhcmVudCwgcmVzb3VyY2Vfc2l6ZV90IHN0YXJ0LAogICAgcmVzb3VyY2Vfc2l6ZV90IG4sIGNv bnN0IGNoYXIgKm5hbWUpOwoKCgoKCgpleHRlcm4gdm9pZCBfX2Rldm1fcmVsZWFzZV9yZWdpb24o c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVudCwKICAgICAgcmVzb3Vy Y2Vfc2l6ZV90IHN0YXJ0LCByZXNvdXJjZV9zaXplX3Qgbik7CmV4dGVybiBpbnQgaW9tZW1fbWFw X3Nhbml0eV9jaGVjayhyZXNvdXJjZV9zaXplX3QgYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKTsK ZXh0ZXJuIGJvb2wgaW9tZW1faXNfZXhjbHVzaXZlKHU2NCBhZGRyKTsKCmV4dGVybiBpbnQKd2Fs a19zeXN0ZW1fcmFtX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25n IG5yX3BhZ2VzLAogIHZvaWQgKmFyZywgaW50ICgqZnVuYykodW5zaWduZWQgbG9uZywgdW5zaWdu ZWQgbG9uZywgdm9pZCAqKSk7CmV4dGVybiBpbnQKd2Fsa19tZW1fcmVzKHU2NCBzdGFydCwgdTY0 IGVuZCwgdm9pZCAqYXJnLAogICAgICBpbnQgKCpmdW5jKShzdHJ1Y3QgcmVzb3VyY2UgKiwgdm9p ZCAqKSk7CmV4dGVybiBpbnQKd2Fsa19zeXN0ZW1fcmFtX3Jlcyh1NjQgc3RhcnQsIHU2NCBlbmQs IHZvaWQgKmFyZywKICAgICAgaW50ICgqZnVuYykoc3RydWN0IHJlc291cmNlICosIHZvaWQgKikp OwpleHRlcm4gaW50CndhbGtfaW9tZW1fcmVzX2Rlc2ModW5zaWduZWQgbG9uZyBkZXNjLCB1bnNp Z25lZCBsb25nIGZsYWdzLCB1NjQgc3RhcnQsIHU2NCBlbmQsCiAgICAgIHZvaWQgKmFyZywgaW50 ICgqZnVuYykoc3RydWN0IHJlc291cmNlICosIHZvaWQgKikpOwoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgcmVzb3VyY2Vfb3Zl cmxhcHMoc3RydWN0IHJlc291cmNlICpyMSwgc3RydWN0IHJlc291cmNlICpyMikKewogICAgICAg cmV0dXJuIChyMS0+c3RhcnQgPD0gcjItPmVuZCAmJiByMS0+ZW5kID49IHIyLT5zdGFydCk7Cn0K CnN0cnVjdCByZXNvdXJjZSAqZGV2bV9yZXF1ZXN0X2ZyZWVfbWVtX3JlZ2lvbihzdHJ1Y3QgZGV2 aWNlICpkZXYsCiAgc3RydWN0IHJlc291cmNlICpiYXNlLCB1bnNpZ25lZCBsb25nIHNpemUpOwpz dHJ1Y3QgcmVzb3VyY2UgKnJlcXVlc3RfZnJlZV9tZW1fcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAq YmFzZSwKICB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpOwojIDE3ICIuL2lu Y2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgva29iamVjdC5oIiAx CiMgMjAgIi4vaW5jbHVkZS9saW51eC9rb2JqZWN0LmgiCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3N5 c2ZzLmgiIDEKIyAxNiAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgiCiMgMSAiLi9pbmNsdWRlL2xp bnV4L2tlcm5mcy5oIiAxCiMgMTMgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKIyAxICIuL2lu Y2x1ZGUvbGludXgvaWRyLmgiIDEKIyAxOSAiLi9pbmNsdWRlL2xpbnV4L2lkci5oIgpzdHJ1Y3Qg aWRyIHsKIHN0cnVjdCB4YXJyYXkgaWRyX3J0OwogdW5zaWduZWQgaW50IGlkcl9iYXNlOwogdW5z aWduZWQgaW50IGlkcl9uZXh0Owp9OwojIDY2ICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHVuc2ln bmVkIGludCBpZHJfZ2V0X2N1cnNvcihjb25zdCBzdHJ1Y3QgaWRyICppZHIpCnsKIHJldHVybiAo eyB1bmlvbiB7IHR5cGVvZihpZHItPmlkcl9uZXh0KSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191 OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKGlkci0+aWRyX25leHQpLCBfX3UuX19jLCBzaXpl b2YoaWRyLT5pZHJfbmV4dCkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKGlkci0+ aWRyX25leHQpLCBfX3UuX19jLCBzaXplb2YoaWRyLT5pZHJfbmV4dCkpOyBkbyB7IH0gd2hpbGUg KDApOyBfX3UuX192YWw7IH0pOwp9CiMgNzkgIi4vaW5jbHVkZS9saW51eC9pZHIuaCIKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBp ZHJfc2V0X2N1cnNvcihzdHJ1Y3QgaWRyICppZHIsIHVuc2lnbmVkIGludCB2YWwpCnsKICh7IHVu aW9uIHsgdHlwZW9mKGlkci0+aWRyX25leHQpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3UgPSB7 IC5fX3ZhbCA9ICggdHlwZW9mKGlkci0+aWRyX25leHQpKSAodmFsKSB9OyBfX3dyaXRlX29uY2Vf c2l6ZSgmKGlkci0+aWRyX25leHQpLCBfX3UuX19jLCBzaXplb2YoaWRyLT5pZHJfbmV4dCkpOyBf X3UuX192YWw7IH0pOwp9CiMgMTEyICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCnZvaWQgaWRyX3By ZWxvYWQoZ2ZwX3QgZ2ZwX21hc2spOwoKaW50IGlkcl9hbGxvYyhzdHJ1Y3QgaWRyICosIHZvaWQg KnB0ciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBnZnBfdCk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSkgaWRyX2FsbG9jX3UzMihzdHJ1Y3QgaWRyICosIHZvaWQgKnB0 ciwgdTMyICppZCwKICAgIHVuc2lnbmVkIGxvbmcgbWF4LCBnZnBfdCk7CmludCBpZHJfYWxsb2Nf Y3ljbGljKHN0cnVjdCBpZHIgKiwgdm9pZCAqcHRyLCBpbnQgc3RhcnQsIGludCBlbmQsIGdmcF90 KTsKdm9pZCAqaWRyX3JlbW92ZShzdHJ1Y3QgaWRyICosIHVuc2lnbmVkIGxvbmcgaWQpOwp2b2lk ICppZHJfZmluZChjb25zdCBzdHJ1Y3QgaWRyICosIHVuc2lnbmVkIGxvbmcgaWQpOwppbnQgaWRy X2Zvcl9lYWNoKGNvbnN0IHN0cnVjdCBpZHIgKiwKICAgaW50ICgqZm4pKGludCBpZCwgdm9pZCAq cCwgdm9pZCAqZGF0YSksIHZvaWQgKmRhdGEpOwp2b2lkICppZHJfZ2V0X25leHQoc3RydWN0IGlk ciAqLCBpbnQgKm5leHRpZCk7CnZvaWQgKmlkcl9nZXRfbmV4dF91bChzdHJ1Y3QgaWRyICosIHVu c2lnbmVkIGxvbmcgKm5leHRpZCk7CnZvaWQgKmlkcl9yZXBsYWNlKHN0cnVjdCBpZHIgKiwgdm9p ZCAqLCB1bnNpZ25lZCBsb25nIGlkKTsKdm9pZCBpZHJfZGVzdHJveShzdHJ1Y3QgaWRyICopOwoj IDEzNSAiLi9pbmNsdWRlL2xpbnV4L2lkci5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlkcl9pbml0X2Jhc2Uoc3RydWN0IGlk ciAqaWRyLCBpbnQgYmFzZSkKewogeGFfaW5pdF9mbGFncygmaWRyLT5pZHJfcnQsICgoKCBnZnBf dCk0KSB8ICggZ2ZwX3QpICgxIDw8ICgoKDIzICsgMCkpICsgMCkpKSk7CiBpZHItPmlkcl9iYXNl ID0gYmFzZTsKIGlkci0+aWRyX25leHQgPSAwOwp9CiMgMTQ5ICIuL2luY2x1ZGUvbGludXgvaWRy LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHZvaWQgaWRyX2luaXQoc3RydWN0IGlkciAqaWRyKQp7CiBpZHJfaW5pdF9iYXNlKGlkciwg MCk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIGJvb2wgaWRyX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBpZHIgKmlkcikKewog cmV0dXJuIHJhZGl4X3RyZWVfZW1wdHkoJmlkci0+aWRyX3J0KSAmJgogIHJhZGl4X3RyZWVfdGFn Z2VkKCZpZHItPmlkcl9ydCwgMCk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgaWRyX3ByZWxvYWRfZW5kKHZvaWQp CnsKIF9fYXNtX18gX192b2xhdGlsZV9fKCIiOiA6IDoibWVtb3J5Iik7Cn0KIyAyNDAgIi4vaW5j bHVkZS9saW51eC9pZHIuaCIKc3RydWN0IGlkYV9iaXRtYXAgewogdW5zaWduZWQgbG9uZyBiaXRt YXBbKDEyOCAvIHNpemVvZihsb25nKSldOwp9OwoKc3RydWN0IGlkYSB7CiBzdHJ1Y3QgeGFycmF5 IHhhOwp9OwojIDI1NSAiLi9pbmNsdWRlL2xpbnV4L2lkci5oIgppbnQgaWRhX2FsbG9jX3Jhbmdl KHN0cnVjdCBpZGEgKiwgdW5zaWduZWQgaW50IG1pbiwgdW5zaWduZWQgaW50IG1heCwgZ2ZwX3Qp Owp2b2lkIGlkYV9mcmVlKHN0cnVjdCBpZGEgKiwgdW5zaWduZWQgaW50IGlkKTsKdm9pZCBpZGFf ZGVzdHJveShzdHJ1Y3QgaWRhICppZGEpOwojIDI3MCAiLi9pbmNsdWRlL2xpbnV4L2lkci5oIgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgaWRhX2FsbG9jKHN0cnVjdCBpZGEgKmlkYSwgZ2ZwX3QgZ2ZwKQp7CiByZXR1cm4gaWRhX2Fs bG9jX3JhbmdlKGlkYSwgMCwgfjAsIGdmcCk7Cn0KIyAyODcgIi4vaW5jbHVkZS9saW51eC9pZHIu aCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IGlkYV9hbGxvY19taW4oc3RydWN0IGlkYSAqaWRhLCB1bnNpZ25lZCBpbnQgbWluLCBn ZnBfdCBnZnApCnsKIHJldHVybiBpZGFfYWxsb2NfcmFuZ2UoaWRhLCBtaW4sIH4wLCBnZnApOwp9 CiMgMzA0ICIuL2luY2x1ZGUvbGludXgvaWRyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBpZGFfYWxsb2NfbWF4KHN0cnVjdCBp ZGEgKmlkYSwgdW5zaWduZWQgaW50IG1heCwgZ2ZwX3QgZ2ZwKQp7CiByZXR1cm4gaWRhX2FsbG9j X3JhbmdlKGlkYSwgMCwgbWF4LCBnZnApOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGlkYV9pbml0KHN0cnVjdCBpZGEgKmlk YSkKewogeGFfaW5pdF9mbGFncygmaWRhLT54YSwgKCgoIGdmcF90KVhBX0xPQ0tfSVJRKSB8ICgo KCBnZnBfdCk0VSkgfCAoKCBnZnBfdCkoKDFVIDw8ICgyMyArIDApKSA8PCAoIHVuc2lnbmVkKSgo KCB4YV9tYXJrX3QpMFUpKSkpKSkpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBpZGFfaXNfZW1wdHkoY29uc3Qgc3Ry dWN0IGlkYSAqaWRhKQp7CiByZXR1cm4geGFfZW1wdHkoJmlkYS0+eGEpOwp9CiMgMTQgIi4vaW5j bHVkZS9saW51eC9rZXJuZnMuaCIgMgoKCgoKCgpzdHJ1Y3QgZmlsZTsKc3RydWN0IGRlbnRyeTsK c3RydWN0IGlhdHRyOwpzdHJ1Y3Qgc2VxX2ZpbGU7CnN0cnVjdCB2bV9hcmVhX3N0cnVjdDsKc3Ry dWN0IHN1cGVyX2Jsb2NrOwpzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZTsKc3RydWN0IHBvbGxfdGFi bGVfc3RydWN0OwpzdHJ1Y3QgZnNfY29udGV4dDsKCnN0cnVjdCBrZXJuZnNfZnNfY29udGV4dDsK c3RydWN0IGtlcm5mc19vcGVuX25vZGU7CnN0cnVjdCBrZXJuZnNfaWF0dHJzOwoKZW51bSBrZXJu ZnNfbm9kZV90eXBlIHsKIEtFUk5GU19ESVIgPSAweDAwMDEsCiBLRVJORlNfRklMRSA9IDB4MDAw MiwKIEtFUk5GU19MSU5LID0gMHgwMDA0LAp9OwoKCgoKZW51bSBrZXJuZnNfbm9kZV9mbGFnIHsK IEtFUk5GU19BQ1RJVkFURUQgPSAweDAwMTAsCiBLRVJORlNfTlMgPSAweDAwMjAsCiBLRVJORlNf SEFTX1NFUV9TSE9XID0gMHgwMDQwLAogS0VSTkZTX0hBU19NTUFQID0gMHgwMDgwLAogS0VSTkZT X0xPQ0tERVAgPSAweDAxMDAsCiBLRVJORlNfU1VJQ0lEQUwgPSAweDA0MDAsCiBLRVJORlNfU1VJ Q0lERUQgPSAweDA4MDAsCiBLRVJORlNfRU1QVFlfRElSID0gMHgxMDAwLAogS0VSTkZTX0hBU19S RUxFQVNFID0gMHgyMDAwLAp9OwoKCmVudW0ga2VybmZzX3Jvb3RfZmxhZyB7CgoKCgoKCiBLRVJO RlNfUk9PVF9DUkVBVEVfREVBQ1RJVkFURUQgPSAweDAwMDEsCiMgNzQgIi4vaW5jbHVkZS9saW51 eC9rZXJuZnMuaCIKIEtFUk5GU19ST09UX0VYVFJBX09QRU5fUEVSTV9DSEVDSyA9IDB4MDAwMiwK CgoKCgogS0VSTkZTX1JPT1RfU1VQUE9SVF9FWFBPUlRPUCA9IDB4MDAwNCwKfTsKCgpzdHJ1Y3Qg a2VybmZzX2VsZW1fZGlyIHsKIHVuc2lnbmVkIGxvbmcgc3ViZGlyczsKCiBzdHJ1Y3QgcmJfcm9v dCBjaGlsZHJlbjsKCgoKCgogc3RydWN0IGtlcm5mc19yb290ICpyb290Owp9OwoKc3RydWN0IGtl cm5mc19lbGVtX3N5bWxpbmsgewogc3RydWN0IGtlcm5mc19ub2RlICp0YXJnZXRfa247Cn07Cgpz dHJ1Y3Qga2VybmZzX2VsZW1fYXR0ciB7CiBjb25zdCBzdHJ1Y3Qga2VybmZzX29wcyAqb3BzOwog c3RydWN0IGtlcm5mc19vcGVuX25vZGUgKm9wZW47CiBsb2ZmX3Qgc2l6ZTsKIHN0cnVjdCBrZXJu ZnNfbm9kZSAqbm90aWZ5X25leHQ7Cn07CiMgMTE2ICIuL2luY2x1ZGUvbGludXgva2VybmZzLmgi CnN0cnVjdCBrZXJuZnNfbm9kZSB7CiBhdG9taWNfdCBjb3VudDsKIGF0b21pY190IGFjdGl2ZTsK IyAxMjggIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKIHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFy ZW50OwogY29uc3QgY2hhciAqbmFtZTsKCiBzdHJ1Y3QgcmJfbm9kZSByYjsKCiBjb25zdCB2b2lk ICpuczsKIHVuc2lnbmVkIGludCBoYXNoOwogdW5pb24gewogIHN0cnVjdCBrZXJuZnNfZWxlbV9k aXIgZGlyOwogIHN0cnVjdCBrZXJuZnNfZWxlbV9zeW1saW5rIHN5bWxpbms7CiAgc3RydWN0IGtl cm5mc19lbGVtX2F0dHIgYXR0cjsKIH07Cgogdm9pZCAqcHJpdjsKCgoKCgogdTY0IGlkOwoKIHVu c2lnbmVkIHNob3J0IGZsYWdzOwogdW1vZGVfdCBtb2RlOwogc3RydWN0IGtlcm5mc19pYXR0cnMg KmlhdHRyOwp9OwojIDE2MSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5mcy5oIgpzdHJ1Y3Qga2VybmZz X3N5c2NhbGxfb3BzIHsKIGludCAoKnNob3dfb3B0aW9ucykoc3RydWN0IHNlcV9maWxlICpzZiwg c3RydWN0IGtlcm5mc19yb290ICpyb290KTsKCiBpbnQgKCpta2Rpcikoc3RydWN0IGtlcm5mc19u b2RlICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICB1bW9kZV90IG1vZGUpOwogaW50 ICgqcm1kaXIpKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pOwogaW50ICgqcmVuYW1lKShzdHJ1Y3Qg a2VybmZzX25vZGUgKmtuLCBzdHJ1Y3Qga2VybmZzX25vZGUgKm5ld19wYXJlbnQsCiAgICAgICAg Y29uc3QgY2hhciAqbmV3X25hbWUpOwogaW50ICgqc2hvd19wYXRoKShzdHJ1Y3Qgc2VxX2ZpbGUg KnNmLCBzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLAogICAgc3RydWN0IGtlcm5mc19yb290ICpyb290 KTsKfTsKCnN0cnVjdCBrZXJuZnNfcm9vdCB7Cgogc3RydWN0IGtlcm5mc19ub2RlICprbjsKIHVu c2lnbmVkIGludCBmbGFnczsKCgogc3RydWN0IGlkciBpbm9faWRyOwogdTMyIGxhc3RfaWRfbG93 Yml0czsKIHUzMiBpZF9oaWdoYml0czsKIHN0cnVjdCBrZXJuZnNfc3lzY2FsbF9vcHMgKnN5c2Nh bGxfb3BzOwoKCiBzdHJ1Y3QgbGlzdF9oZWFkIHN1cGVyczsKCiB3YWl0X3F1ZXVlX2hlYWRfdCBk ZWFjdGl2YXRlX3dhaXRxOwp9OwoKc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgewoKIHN0cnVjdCBr ZXJuZnNfbm9kZSAqa247CiBzdHJ1Y3QgZmlsZSAqZmlsZTsKIHN0cnVjdCBzZXFfZmlsZSAqc2Vx X2ZpbGU7CiB2b2lkICpwcml2OwoKCiBzdHJ1Y3QgbXV0ZXggbXV0ZXg7CiBzdHJ1Y3QgbXV0ZXgg cHJlYWxsb2NfbXV0ZXg7CiBpbnQgZXZlbnQ7CiBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiBjaGFy ICpwcmVhbGxvY19idWY7Cgogc2l6ZV90IGF0b21pY193cml0ZV9sZW47CiBib29sIG1tYXBwZWQ6 MTsKIGJvb2wgcmVsZWFzZWQ6MTsKIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAq dm1fb3BzOwp9OwoKc3RydWN0IGtlcm5mc19vcHMgewoKCgoKIGludCAoKm9wZW4pKHN0cnVjdCBr ZXJuZnNfb3Blbl9maWxlICpvZik7CiB2b2lkICgqcmVsZWFzZSkoc3RydWN0IGtlcm5mc19vcGVu X2ZpbGUgKm9mKTsKIyAyMjkgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKIGludCAoKnNlcV9z aG93KShzdHJ1Y3Qgc2VxX2ZpbGUgKnNmLCB2b2lkICp2KTsKCiB2b2lkICooKnNlcV9zdGFydCko c3RydWN0IHNlcV9maWxlICpzZiwgbG9mZl90ICpwcG9zKTsKIHZvaWQgKigqc2VxX25leHQpKHN0 cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYsIGxvZmZfdCAqcHBvcyk7CiB2b2lkICgqc2VxX3N0 b3ApKHN0cnVjdCBzZXFfZmlsZSAqc2YsIHZvaWQgKnYpOwoKIHNzaXplX3QgKCpyZWFkKShzdHJ1 Y3Qga2VybmZzX29wZW5fZmlsZSAqb2YsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ5dGVzLAogICBsb2Zm X3Qgb2ZmKTsKIyAyNDUgIi4vaW5jbHVkZS9saW51eC9rZXJuZnMuaCIKIHNpemVfdCBhdG9taWNf d3JpdGVfbGVuOwoKCgoKCgogYm9vbCBwcmVhbGxvYzsKIHNzaXplX3QgKCp3cml0ZSkoc3RydWN0 IGtlcm5mc19vcGVuX2ZpbGUgKm9mLCBjaGFyICpidWYsIHNpemVfdCBieXRlcywKICAgIGxvZmZf dCBvZmYpOwoKIF9fcG9sbF90ICgqcG9sbCkoc3RydWN0IGtlcm5mc19vcGVuX2ZpbGUgKm9mLAog ICAgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICpwdCk7CgogaW50ICgqbW1hcCkoc3RydWN0IGtl cm5mc19vcGVuX2ZpbGUgKm9mLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7CgoKCgp9OwoK CgoKc3RydWN0IGtlcm5mc19mc19jb250ZXh0IHsKIHN0cnVjdCBrZXJuZnNfcm9vdCAqcm9vdDsK IHZvaWQgKm5zX3RhZzsKIHVuc2lnbmVkIGxvbmcgbWFnaWM7CgoKIGJvb2wgbmV3X3NiX2NyZWF0 ZWQ7Cn07CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIGVudW0ga2VybmZzX25vZGVfdHlwZSBrZXJuZnNfdHlwZShzdHJ1Y3Qga2VybmZz X25vZGUgKmtuKQp7CiByZXR1cm4ga24tPmZsYWdzICYgMHgwMDBmOwp9CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbm9fdCBrZXJuZnNf aWRfaW5vKHU2NCBpZCkKewoKIGlmIChzaXplb2YoaW5vX3QpID49IHNpemVvZih1NjQpKQogIHJl dHVybiBpZDsKIGVsc2UKICByZXR1cm4gKHUzMilpZDsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdTMyIGtlcm5mc19pZF9nZW4odTY0 IGlkKQp7CgogaWYgKHNpemVvZihpbm9fdCkgPj0gc2l6ZW9mKHU2NCkpCiAgcmV0dXJuIDE7CiBl bHNlCiAgcmV0dXJuIGlkID4+IDMyOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbm9fdCBrZXJuZnNfaW5vKHN0cnVjdCBrZXJuZnNf bm9kZSAqa24pCnsKIHJldHVybiBrZXJuZnNfaWRfaW5vKGtuLT5pZCk7Cn0KCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGlub190IGtlcm5m c19nZW4oc3RydWN0IGtlcm5mc19ub2RlICprbikKewogcmV0dXJuIGtlcm5mc19pZF9nZW4oa24t PmlkKTsKfQojIDMyMSAiLi9pbmNsdWRlL2xpbnV4L2tlcm5mcy5oIgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGtlcm5mc19lbmFi bGVfbnMoc3RydWN0IGtlcm5mc19ub2RlICprbikKewogKHsgaW50IF9fcmV0X3dhcm5fb24gPSAh IShrZXJuZnNfdHlwZShrbikgIT0gS0VSTkZTX0RJUik7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpc dCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3 XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2Fk ZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4i ICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQj IGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDog ImkiICgiaW5jbHVkZS9saW51eC9rZXJuZnMuaCIpLCAiaSIgKDMyMyksICJpIiAoKDEgPDwgMCl8 KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkp OyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICgzNSkpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApOyB9KTsKICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgoeyB1 bmlvbiB7IHR5cGVvZigoJmtuLT5kaXIuY2hpbGRyZW4pLT5yYl9ub2RlKSBfX3ZhbDsgY2hhciBf X2NbMV07IH0gX191OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCgma24tPmRpci5jaGlsZHJl biktPnJiX25vZGUpLCBfX3UuX19jLCBzaXplb2YoKCZrbi0+ZGlyLmNoaWxkcmVuKS0+cmJfbm9k ZSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCgma24tPmRpci5jaGlsZHJlbikt PnJiX25vZGUpLCBfX3UuX19jLCBzaXplb2YoKCZrbi0+ZGlyLmNoaWxkcmVuKS0+cmJfbm9kZSkp OyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pID09ICgodm9pZCAqKTApKSk7IGlmIChf X2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lu bGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlv biBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQj IGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMg YnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIg Ilx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIg Ii5wb3BzZWN0aW9uIiA6IDogImkiICgiaW5jbHVkZS9saW51eC9rZXJuZnMuaCIpLCAiaSIgKDMy NCksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihz dHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5c blx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzNikpOyB9KTsgfSB3aGlsZSAoMCk7IF9f YnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKIGtuLT5mbGFncyB8PSBL RVJORlNfTlM7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wga2VybmZzX25zX2VuYWJsZWQoc3RydWN0IGtlcm5mc19u b2RlICprbikKewogcmV0dXJuIGtuLT5mbGFncyAmIEtFUk5GU19OUzsKfQoKaW50IGtlcm5mc19u YW1lKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7Cmlu dCBrZXJuZnNfcGF0aF9mcm9tX25vZGUoc3RydWN0IGtlcm5mc19ub2RlICpyb290X2tuLCBzdHJ1 Y3Qga2VybmZzX25vZGUgKmtuLAogICAgIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7CnZvaWQg cHJfY29udF9rZXJuZnNfbmFtZShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKdm9pZCBwcl9jb250 X2tlcm5mc19wYXRoKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pOwpzdHJ1Y3Qga2VybmZzX25vZGUg Kmtlcm5mc19nZXRfcGFyZW50KHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pOwpzdHJ1Y3Qga2VybmZz X25vZGUgKmtlcm5mc19maW5kX2FuZF9nZXRfbnMoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQs CiAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqbnMpOwpzdHJ1Y3Qga2VybmZz X25vZGUgKmtlcm5mc193YWxrX2FuZF9nZXRfbnMoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQs CiAgICAgICAgY29uc3QgY2hhciAqcGF0aCwgY29uc3Qgdm9pZCAqbnMpOwp2b2lkIGtlcm5mc19n ZXQoc3RydWN0IGtlcm5mc19ub2RlICprbik7CnZvaWQga2VybmZzX3B1dChzdHJ1Y3Qga2VybmZz X25vZGUgKmtuKTsKCnN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZzX25vZGVfZnJvbV9kZW50cnko c3RydWN0IGRlbnRyeSAqZGVudHJ5KTsKc3RydWN0IGtlcm5mc19yb290ICprZXJuZnNfcm9vdF9m cm9tX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwpzdHJ1Y3QgaW5vZGUgKmtlcm5mc19nZXRf aW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGtlcm5mc19ub2RlICprbik7Cgpz dHJ1Y3QgZGVudHJ5ICprZXJuZnNfbm9kZV9kZW50cnkoc3RydWN0IGtlcm5mc19ub2RlICprbiwK ICAgICAgc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CnN0cnVjdCBrZXJuZnNfcm9vdCAqa2VybmZz X2NyZWF0ZV9yb290KHN0cnVjdCBrZXJuZnNfc3lzY2FsbF9vcHMgKnNjb3BzLAogICAgICAgICAg IHVuc2lnbmVkIGludCBmbGFncywgdm9pZCAqcHJpdik7CnZvaWQga2VybmZzX2Rlc3Ryb3lfcm9v dChzdHJ1Y3Qga2VybmZzX3Jvb3QgKnJvb3QpOwoKc3RydWN0IGtlcm5mc19ub2RlICprZXJuZnNf Y3JlYXRlX2Rpcl9ucyhzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudCwKICAgICAgY29uc3QgY2hh ciAqbmFtZSwgdW1vZGVfdCBtb2RlLAogICAgICBrdWlkX3QgdWlkLCBrZ2lkX3QgZ2lkLAogICAg ICB2b2lkICpwcml2LCBjb25zdCB2b2lkICpucyk7CnN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZz X2NyZWF0ZV9lbXB0eV9kaXIoc3RydWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCiAgICAgICAgIGNv bnN0IGNoYXIgKm5hbWUpOwpzdHJ1Y3Qga2VybmZzX25vZGUgKl9fa2VybmZzX2NyZWF0ZV9maWxl KHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50LAogICAgICBjb25zdCBjaGFyICpuYW1lLCB1bW9k ZV90IG1vZGUsCiAgICAgIGt1aWRfdCB1aWQsIGtnaWRfdCBnaWQsCiAgICAgIGxvZmZfdCBzaXpl LAogICAgICBjb25zdCBzdHJ1Y3Qga2VybmZzX29wcyAqb3BzLAogICAgICB2b2lkICpwcml2LCBj b25zdCB2b2lkICpucywKICAgICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpOwpzdHJ1Y3Qg a2VybmZzX25vZGUgKmtlcm5mc19jcmVhdGVfbGluayhzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVu dCwKICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgIHN0cnVjdCBrZXJuZnNf bm9kZSAqdGFyZ2V0KTsKdm9pZCBrZXJuZnNfYWN0aXZhdGUoc3RydWN0IGtlcm5mc19ub2RlICpr bik7CnZvaWQga2VybmZzX3JlbW92ZShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKdm9pZCBrZXJu ZnNfYnJlYWtfYWN0aXZlX3Byb3RlY3Rpb24oc3RydWN0IGtlcm5mc19ub2RlICprbik7CnZvaWQg a2VybmZzX3VuYnJlYWtfYWN0aXZlX3Byb3RlY3Rpb24oc3RydWN0IGtlcm5mc19ub2RlICprbik7 CmJvb2wga2VybmZzX3JlbW92ZV9zZWxmKHN0cnVjdCBrZXJuZnNfbm9kZSAqa24pOwppbnQga2Vy bmZzX3JlbW92ZV9ieV9uYW1lX25zKHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50LCBjb25zdCBj aGFyICpuYW1lLAogICAgICAgIGNvbnN0IHZvaWQgKm5zKTsKaW50IGtlcm5mc19yZW5hbWVfbnMo c3RydWN0IGtlcm5mc19ub2RlICprbiwgc3RydWN0IGtlcm5mc19ub2RlICpuZXdfcGFyZW50LAog ICAgICAgY29uc3QgY2hhciAqbmV3X25hbWUsIGNvbnN0IHZvaWQgKm5ld19ucyk7CmludCBrZXJu ZnNfc2V0YXR0cihzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLCBjb25zdCBzdHJ1Y3QgaWF0dHIgKmlh dHRyKTsKX19wb2xsX3Qga2VybmZzX2dlbmVyaWNfcG9sbChzdHJ1Y3Qga2VybmZzX29wZW5fZmls ZSAqb2YsCiAgICAgICAgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICpwdCk7CnZvaWQga2VybmZz X25vdGlmeShzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKTsKCmludCBrZXJuZnNfeGF0dHJfZ2V0KHN0 cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICB2b2lkICp2YWx1 ZSwgc2l6ZV90IHNpemUpOwppbnQga2VybmZzX3hhdHRyX3NldChzdHJ1Y3Qga2VybmZzX25vZGUg KmtuLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCBz aXplLCBpbnQgZmxhZ3MpOwoKY29uc3Qgdm9pZCAqa2VybmZzX3N1cGVyX25zKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IpOwppbnQga2VybmZzX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYyk7 CnZvaWQga2VybmZzX2ZyZWVfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpOwp2b2lk IGtlcm5mc19raWxsX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOwoKdm9pZCBrZXJuZnNfaW5p dCh2b2lkKTsKCnN0cnVjdCBrZXJuZnNfbm9kZSAqa2VybmZzX2ZpbmRfYW5kX2dldF9ub2RlX2J5 X2lkKHN0cnVjdCBrZXJuZnNfcm9vdCAqcm9vdCwKICAgICAgICAgdTY0IGlkKTsKIyA1MzMgIi4v aW5jbHVkZS9saW51eC9rZXJuZnMuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2du dV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChu b19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGtlcm5mc19wYXRoKHN0cnVjdCBrZXJuZnNfbm9k ZSAqa24sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbikKewogcmV0dXJuIGtlcm5mc19wYXRoX2Zy b21fbm9kZShrbiwgKCh2b2lkICopMCksIGJ1ZiwgYnVmbGVuKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGtlcm5mc19u b2RlICoKa2VybmZzX2ZpbmRfYW5kX2dldChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuLCBjb25zdCBj aGFyICpuYW1lKQp7CiByZXR1cm4ga2VybmZzX2ZpbmRfYW5kX2dldF9ucyhrbiwgbmFtZSwgKCh2 b2lkICopMCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUgKgprZXJuZnNfd2Fsa19hbmRfZ2V0KHN0 cnVjdCBrZXJuZnNfbm9kZSAqa24sIGNvbnN0IGNoYXIgKnBhdGgpCnsKIHJldHVybiBrZXJuZnNf d2Fsa19hbmRfZ2V0X25zKGtuLCBwYXRoLCAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrZXJuZnNf bm9kZSAqCmtlcm5mc19jcmVhdGVfZGlyKHN0cnVjdCBrZXJuZnNfbm9kZSAqcGFyZW50LCBjb25z dCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCiAgICB2b2lkICpwcml2KQp7CiByZXR1cm4ga2Vy bmZzX2NyZWF0ZV9kaXJfbnMocGFyZW50LCBuYW1lLCBtb2RlLAogICAgICAgIChrdWlkX3QpeyAw IH0sIChrZ2lkX3QpeyAwIH0sCiAgICAgICAgcHJpdiwgKCh2b2lkICopMCkpOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qg a2VybmZzX25vZGUgKgprZXJuZnNfY3JlYXRlX2ZpbGVfbnMoc3RydWN0IGtlcm5mc19ub2RlICpw YXJlbnQsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgdW1vZGVfdCBtb2RlLCBrdWlkX3QgdWlk LCBrZ2lkX3QgZ2lkLAogICAgICAgIGxvZmZfdCBzaXplLCBjb25zdCBzdHJ1Y3Qga2VybmZzX29w cyAqb3BzLAogICAgICAgIHZvaWQgKnByaXYsIGNvbnN0IHZvaWQgKm5zKQp7CiBzdHJ1Y3QgbG9j a19jbGFzc19rZXkgKmtleSA9ICgodm9pZCAqKTApOwoKCgoKIHJldHVybiBfX2tlcm5mc19jcmVh dGVfZmlsZShwYXJlbnQsIG5hbWUsIG1vZGUsIHVpZCwgZ2lkLAogICAgICAgIHNpemUsIG9wcywg cHJpdiwgbnMsIGtleSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrZXJuZnNfbm9kZSAqCmtlcm5mc19jcmVhdGVfZmls ZShzdHJ1Y3Qga2VybmZzX25vZGUgKnBhcmVudCwgY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBt b2RlLAogICAgIGxvZmZfdCBzaXplLCBjb25zdCBzdHJ1Y3Qga2VybmZzX29wcyAqb3BzLCB2b2lk ICpwcml2KQp7CiByZXR1cm4ga2VybmZzX2NyZWF0ZV9maWxlX25zKHBhcmVudCwgbmFtZSwgbW9k ZSwKICAgICAgICAgKGt1aWRfdCl7IDAgfSwgKGtnaWRfdCl7IDAgfSwKICAgICAgICAgc2l6ZSwg b3BzLCBwcml2LCAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBrZXJuZnNfcmVtb3ZlX2J5X25hbWUoc3Ry dWN0IGtlcm5mc19ub2RlICpwYXJlbnQsCiAgICAgY29uc3QgY2hhciAqbmFtZSkKewogcmV0dXJu IGtlcm5mc19yZW1vdmVfYnlfbmFtZV9ucyhwYXJlbnQsIG5hbWUsICgodm9pZCAqKTApKTsKfQoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg aW50IGtlcm5mc19yZW5hbWUoc3RydWN0IGtlcm5mc19ub2RlICprbiwKICAgIHN0cnVjdCBrZXJu ZnNfbm9kZSAqbmV3X3BhcmVudCwKICAgIGNvbnN0IGNoYXIgKm5ld19uYW1lKQp7CiByZXR1cm4g a2VybmZzX3JlbmFtZV9ucyhrbiwgbmV3X3BhcmVudCwgbmV3X25hbWUsICgodm9pZCAqKTApKTsK fQojIDE3ICIuL2luY2x1ZGUvbGludXgvc3lzZnMuaCIgMgoKCgoKIyAxICIuL2luY2x1ZGUvbGlu dXgva29iamVjdF9ucy5oIiAxCiMgMTkgIi4vaW5jbHVkZS9saW51eC9rb2JqZWN0X25zLmgiCnN0 cnVjdCBzb2NrOwpzdHJ1Y3Qga29iamVjdDsKCgoKCgplbnVtIGtvYmpfbnNfdHlwZSB7CiBLT0JK X05TX1RZUEVfTk9ORSA9IDAsCiBLT0JKX05TX1RZUEVfTkVULAogS09CSl9OU19UWVBFUwp9Owoj IDM5ICIuL2luY2x1ZGUvbGludXgva29iamVjdF9ucy5oIgpzdHJ1Y3Qga29ial9uc190eXBlX29w ZXJhdGlvbnMgewogZW51bSBrb2JqX25zX3R5cGUgdHlwZTsKIGJvb2wgKCpjdXJyZW50X21heV9t b3VudCkodm9pZCk7CiB2b2lkICooKmdyYWJfY3VycmVudF9ucykodm9pZCk7CiBjb25zdCB2b2lk ICooKm5ldGxpbmtfbnMpKHN0cnVjdCBzb2NrICpzayk7CiBjb25zdCB2b2lkICooKmluaXRpYWxf bnMpKHZvaWQpOwogdm9pZCAoKmRyb3BfbnMpKHZvaWQgKik7Cn07CgppbnQga29ial9uc190eXBl X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBrb2JqX25zX3R5cGVfb3BlcmF0aW9ucyAqb3BzKTsKaW50 IGtvYmpfbnNfdHlwZV9yZWdpc3RlcmVkKGVudW0ga29ial9uc190eXBlIHR5cGUpOwpjb25zdCBz dHJ1Y3Qga29ial9uc190eXBlX29wZXJhdGlvbnMgKmtvYmpfY2hpbGRfbnNfb3BzKHN0cnVjdCBr b2JqZWN0ICpwYXJlbnQpOwpjb25zdCBzdHJ1Y3Qga29ial9uc190eXBlX29wZXJhdGlvbnMgKmtv YmpfbnNfb3BzKHN0cnVjdCBrb2JqZWN0ICprb2JqKTsKCmJvb2wga29ial9uc19jdXJyZW50X21h eV9tb3VudChlbnVtIGtvYmpfbnNfdHlwZSB0eXBlKTsKdm9pZCAqa29ial9uc19ncmFiX2N1cnJl bnQoZW51bSBrb2JqX25zX3R5cGUgdHlwZSk7CmNvbnN0IHZvaWQgKmtvYmpfbnNfbmV0bGluayhl bnVtIGtvYmpfbnNfdHlwZSB0eXBlLCBzdHJ1Y3Qgc29jayAqc2spOwpjb25zdCB2b2lkICprb2Jq X25zX2luaXRpYWwoZW51bSBrb2JqX25zX3R5cGUgdHlwZSk7CnZvaWQga29ial9uc19kcm9wKGVu dW0ga29ial9uc190eXBlIHR5cGUsIHZvaWQgKm5zKTsKIyAyMiAiLi9pbmNsdWRlL2xpbnV4L3N5 c2ZzLmgiIDIKCgoKc3RydWN0IGtvYmplY3Q7CnN0cnVjdCBtb2R1bGU7CnN0cnVjdCBiaW5fYXR0 cmlidXRlOwplbnVtIGtvYmpfbnNfdHlwZTsKCnN0cnVjdCBhdHRyaWJ1dGUgewogY29uc3QgY2hh ciAqbmFtZTsKIHVtb2RlX3QgbW9kZTsKCgoKCgp9OwojIDg0ICIuL2luY2x1ZGUvbGludXgvc3lz ZnMuaCIKc3RydWN0IGF0dHJpYnV0ZV9ncm91cCB7CiBjb25zdCBjaGFyICpuYW1lOwogdW1vZGVf dCAoKmlzX3Zpc2libGUpKHN0cnVjdCBrb2JqZWN0ICosCiAgICAgICAgICAgc3RydWN0IGF0dHJp YnV0ZSAqLCBpbnQpOwogdW1vZGVfdCAoKmlzX2Jpbl92aXNpYmxlKShzdHJ1Y3Qga29iamVjdCAq LAogICAgICAgIHN0cnVjdCBiaW5fYXR0cmlidXRlICosIGludCk7CiBzdHJ1Y3QgYXR0cmlidXRl ICoqYXR0cnM7CiBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqKmJpbl9hdHRyczsKfTsKIyAxNTggIi4v aW5jbHVkZS9saW51eC9zeXNmcy5oIgpzdHJ1Y3QgZmlsZTsKc3RydWN0IHZtX2FyZWFfc3RydWN0 OwoKc3RydWN0IGJpbl9hdHRyaWJ1dGUgewogc3RydWN0IGF0dHJpYnV0ZSBhdHRyOwogc2l6ZV90 IHNpemU7CiB2b2lkICpwcml2YXRlOwogc3NpemVfdCAoKnJlYWQpKHN0cnVjdCBmaWxlICosIHN0 cnVjdCBrb2JqZWN0ICosIHN0cnVjdCBiaW5fYXR0cmlidXRlICosCiAgIGNoYXIgKiwgbG9mZl90 LCBzaXplX3QpOwogc3NpemVfdCAoKndyaXRlKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qga29iamVj dCAqLCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqLAogICAgY2hhciAqLCBsb2ZmX3QsIHNpemVfdCk7 CiBpbnQgKCptbWFwKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1Y3QgYmlu X2F0dHJpYnV0ZSAqYXR0ciwKICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwp9Owoj IDIyMyAiLi9pbmNsdWRlL2xpbnV4L3N5c2ZzLmgiCnN0cnVjdCBzeXNmc19vcHMgewogc3NpemVf dCAoKnNob3cpKHN0cnVjdCBrb2JqZWN0ICosIHN0cnVjdCBhdHRyaWJ1dGUgKiwgY2hhciAqKTsK IHNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGtvYmplY3QgKiwgc3RydWN0IGF0dHJpYnV0ZSAqLCBj b25zdCBjaGFyICosIHNpemVfdCk7Cn07CgoKCmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2Rpcl9ucyhzdHJ1Y3Qga29iamVjdCAqa29iaiwg Y29uc3Qgdm9pZCAqbnMpOwp2b2lkIHN5c2ZzX3JlbW92ZV9kaXIoc3RydWN0IGtvYmplY3QgKmtv YmopOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIHN5c2ZzX3Jl bmFtZV9kaXJfbnMoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5ld19uYW1lLAog ICAgICAgICBjb25zdCB2b2lkICpuZXdfbnMpOwppbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIHN5c2ZzX21vdmVfZGlyX25zKHN0cnVjdCBrb2JqZWN0ICprb2JqLAog ICAgICAgc3RydWN0IGtvYmplY3QgKm5ld19wYXJlbnRfa29iaiwKICAgICAgIGNvbnN0IHZvaWQg Km5ld19ucyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lz ZnNfY3JlYXRlX21vdW50X3BvaW50KHN0cnVjdCBrb2JqZWN0ICpwYXJlbnRfa29iaiwKICAgICAg IGNvbnN0IGNoYXIgKm5hbWUpOwp2b2lkIHN5c2ZzX3JlbW92ZV9tb3VudF9wb2ludChzdHJ1Y3Qg a29iamVjdCAqcGFyZW50X2tvYmosCiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwoKaW50IF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19jcmVhdGVfZmlsZV9u cyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsCiAgICAgICAgICBjb25zdCB2b2lkICpucyk7CmludCBfX2F0dHJpYnV0ZV9fKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2ZpbGVzKHN0cnVjdCBrb2JqZWN0ICpr b2JqLAogICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0ICphdHRyKTsKaW50IF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19jaG1vZF9maWxlKHN0 cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCB1 bW9kZV90IG1vZGUpOwpzdHJ1Y3Qga2VybmZzX25vZGUgKnN5c2ZzX2JyZWFrX2FjdGl2ZV9wcm90 ZWN0aW9uKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHIpOwp2b2lkIHN5c2ZzX3VuYnJlYWtfYWN0aXZlX3Byb3RlY3Rpb24oc3RydWN0IGtl cm5mc19ub2RlICprbik7CnZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGVfbnMoc3RydWN0IGtvYmplY3Qg KmtvYmosIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCiAgICAgY29uc3Qgdm9pZCAqbnMp Owpib29sIHN5c2ZzX3JlbW92ZV9maWxlX3NlbGYoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0 IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpOwp2b2lkIHN5c2ZzX3JlbW92ZV9maWxlcyhzdHJ1Y3Qg a29iamVjdCAqa29iaiwgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0ICphdHRyKTsKCmlu dCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2Jp bl9maWxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICAgICAgIGNvbnN0IHN0cnVjdCBiaW5f YXR0cmlidXRlICphdHRyKTsKdm9pZCBzeXNmc19yZW1vdmVfYmluX2ZpbGUoc3RydWN0IGtvYmpl Y3QgKmtvYmosCiAgICAgIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlICphdHRyKTsKCmludCBf X2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgc3lzZnNfY3JlYXRlX2xpbmso c3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqZWN0ICp0YXJnZXQsCiAgICAgICBjb25z dCBjaGFyICpuYW1lKTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KSBzeXNmc19jcmVhdGVfbGlua19ub3dhcm4oc3RydWN0IGtvYmplY3QgKmtvYmosCiAgICAgICBz dHJ1Y3Qga29iamVjdCAqdGFyZ2V0LAogICAgICAgY29uc3QgY2hhciAqbmFtZSk7CnZvaWQgc3lz ZnNfcmVtb3ZlX2xpbmsoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5hbWUpOwoK aW50IHN5c2ZzX3JlbmFtZV9saW5rX25zKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29i amVjdCAqdGFyZ2V0LAogICAgY29uc3QgY2hhciAqb2xkX25hbWUsIGNvbnN0IGNoYXIgKm5ld19u YW1lLAogICAgY29uc3Qgdm9pZCAqbmV3X25zKTsKCnZvaWQgc3lzZnNfZGVsZXRlX2xpbmsoc3Ry dWN0IGtvYmplY3QgKmRpciwgc3RydWN0IGtvYmplY3QgKnRhcmcsCiAgIGNvbnN0IGNoYXIgKm5h bWUpOwoKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19j cmVhdGVfZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgICAgICAgY29uc3Qgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cCAqZ3JwKTsKaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKSBzeXNmc19jcmVhdGVfZ3JvdXBzKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICAg ICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3JvdXBzKTsKaW50IF9fYXR0cmlidXRl X18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc191cGRhdGVfZ3JvdXBzKHN0cnVjdCBr b2JqZWN0ICprb2JqLAogICAgICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3Jv dXBzKTsKaW50IHN5c2ZzX3VwZGF0ZV9ncm91cChzdHJ1Y3Qga29iamVjdCAqa29iaiwKICAgICAg ICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKdm9pZCBzeXNmc19yZW1vdmVf Z3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv dXAgKmdycCk7CnZvaWQgc3lzZnNfcmVtb3ZlX2dyb3VwcyhzdHJ1Y3Qga29iamVjdCAqa29iaiwK ICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOwppbnQgc3lzZnNfYWRk X2ZpbGVfdG9fZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgIGNvbnN0IHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmdyb3VwKTsKdm9pZCBzeXNmc19yZW1vdmVfZmlsZV9m cm9tX2dyb3VwKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyLCBjb25zdCBjaGFyICpncm91cCk7CmludCBzeXNmc19tZXJnZV9ncm91cChzdHJ1Y3Qg a29iamVjdCAqa29iaiwKICAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3Jw KTsKdm9pZCBzeXNmc191bm1lcmdlX2dyb3VwKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogICAgICAg ICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpncnApOwppbnQgc3lzZnNfYWRkX2xpbmtf dG9fZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKmdyb3VwX25hbWUsCiAg ICAgICBzdHJ1Y3Qga29iamVjdCAqdGFyZ2V0LCBjb25zdCBjaGFyICpsaW5rX25hbWUpOwp2b2lk IHN5c2ZzX3JlbW92ZV9saW5rX2Zyb21fZ3JvdXAoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0 IGNoYXIgKmdyb3VwX25hbWUsCiAgICAgIGNvbnN0IGNoYXIgKmxpbmtfbmFtZSk7CmludCBfX2Nv bXBhdF9vbmx5X3N5c2ZzX2xpbmtfZW50cnlfdG9fa29iaihzdHJ1Y3Qga29iamVjdCAqa29iaiwK ICAgICAgICAgIHN0cnVjdCBrb2JqZWN0ICp0YXJnZXRfa29iaiwKICAgICAgICAgIGNvbnN0IGNo YXIgKnRhcmdldF9uYW1lKTsKCnZvaWQgc3lzZnNfbm90aWZ5KHN0cnVjdCBrb2JqZWN0ICprb2Jq LCBjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKmF0dHIpOwoKaW50IF9fYXR0cmlidXRlX18o KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19pbml0KHZvaWQpOwoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBzeXNmc19l bmFibGVfbnMoc3RydWN0IGtlcm5mc19ub2RlICprbikKewogcmV0dXJuIGtlcm5mc19lbmFibGVf bnMoa24pOwp9CiMgNTI3ICIuL2luY2x1ZGUvbGludXgvc3lzZnMuaCIKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmlidXRl X18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzeXNmc19jcmVhdGVfZmlsZShzdHJ1Y3Qga29i amVjdCAqa29iaiwKICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCnsKIHJldHVy biBzeXNmc19jcmVhdGVfZmlsZV9ucyhrb2JqLCBhdHRyLCAoKHZvaWQgKikwKSk7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQg c3lzZnNfcmVtb3ZlX2ZpbGUoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgICAgICAgIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCnsKIHN5c2ZzX3JlbW92ZV9maWxlX25zKGtvYmosIGF0dHIs ICgodm9pZCAqKTApKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHN5c2ZzX3JlbmFtZV9saW5rKHN0cnVjdCBrb2JqZWN0ICpr b2JqLCBzdHJ1Y3Qga29iamVjdCAqdGFyZ2V0LAogICAgICAgIGNvbnN0IGNoYXIgKm9sZF9uYW1l LCBjb25zdCBjaGFyICpuZXdfbmFtZSkKewogcmV0dXJuIHN5c2ZzX3JlbmFtZV9saW5rX25zKGtv YmosIHRhcmdldCwgb2xkX25hbWUsIG5ld19uYW1lLCAoKHZvaWQgKikwKSk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc3lz ZnNfbm90aWZ5X2RpcmVudChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKQp7CiBrZXJuZnNfbm90aWZ5 KGtuKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGtlcm5mc19ub2RlICpzeXNmc19nZXRfZGlyZW50KHN0cnVjdCBrZXJu ZnNfbm9kZSAqcGFyZW50LAogICAgICAgICBjb25zdCBjaGFyICpuYW1lKQp7CiByZXR1cm4ga2Vy bmZzX2ZpbmRfYW5kX2dldChwYXJlbnQsIG5hbWUpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga2VybmZzX25vZGUgKnN5 c2ZzX2dldChzdHJ1Y3Qga2VybmZzX25vZGUgKmtuKQp7CiBrZXJuZnNfZ2V0KGtuKTsKIHJldHVy biBrbjsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCBzeXNmc19wdXQoc3RydWN0IGtlcm5mc19ub2RlICprbikKewoga2VybmZz X3B1dChrbik7Cn0KIyAyMSAiLi9pbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIgMgojIDQxICIuL2lu Y2x1ZGUvbGludXgva29iamVjdC5oIgpleHRlcm4gdTY0IHVldmVudF9zZXFudW07CiMgNTMgIi4v aW5jbHVkZS9saW51eC9rb2JqZWN0LmgiCmVudW0ga29iamVjdF9hY3Rpb24gewogS09CSl9BREQs CiBLT0JKX1JFTU9WRSwKIEtPQkpfQ0hBTkdFLAogS09CSl9NT1ZFLAogS09CSl9PTkxJTkUsCiBL T0JKX09GRkxJTkUsCiBLT0JKX0JJTkQsCiBLT0JKX1VOQklORCwKIEtPQkpfTUFYCn07CgpzdHJ1 Y3Qga29iamVjdCB7CiBjb25zdCBjaGFyICpuYW1lOwogc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsK IHN0cnVjdCBrb2JqZWN0ICpwYXJlbnQ7CiBzdHJ1Y3Qga3NldCAqa3NldDsKIHN0cnVjdCBrb2Jq X3R5cGUgKmt0eXBlOwogc3RydWN0IGtlcm5mc19ub2RlICpzZDsKIHN0cnVjdCBrcmVmIGtyZWY7 CgoKCiB1bnNpZ25lZCBpbnQgc3RhdGVfaW5pdGlhbGl6ZWQ6MTsKIHVuc2lnbmVkIGludCBzdGF0 ZV9pbl9zeXNmczoxOwogdW5zaWduZWQgaW50IHN0YXRlX2FkZF91ZXZlbnRfc2VudDoxOwogdW5z aWduZWQgaW50IHN0YXRlX3JlbW92ZV91ZXZlbnRfc2VudDoxOwogdW5zaWduZWQgaW50IHVldmVu dF9zdXBwcmVzczoxOwp9OwoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRm LCAyLCAzKSkpCmludCBrb2JqZWN0X3NldF9uYW1lKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBjb25z dCBjaGFyICpuYW1lLCAuLi4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu dGYsIDIsIDApKSkKaW50IGtvYmplY3Rfc2V0X25hbWVfdmFyZ3Moc3RydWN0IGtvYmplY3QgKmtv YmosIGNvbnN0IGNoYXIgKmZtdCwKICAgICAgdmFfbGlzdCB2YXJncyk7CgpzdGF0aWMgaW5saW5l IF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRf XykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBjb25zdCBjaGFyICpr b2JqZWN0X25hbWUoY29uc3Qgc3RydWN0IGtvYmplY3QgKmtvYmopCnsKIHJldHVybiBrb2JqLT5u YW1lOwp9CgpleHRlcm4gdm9pZCBrb2JqZWN0X2luaXQoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0 cnVjdCBrb2JqX3R5cGUgKmt0eXBlKTsKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o cHJpbnRmLCAzLCA0KSkpIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKQpp bnQga29iamVjdF9hZGQoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqZWN0ICpwYXJl bnQsCiAgY29uc3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3Jt YXRfXyhwcmludGYsIDQsIDUpKSkgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRf XykpCmludCBrb2JqZWN0X2luaXRfYW5kX2FkZChzdHJ1Y3Qga29iamVjdCAqa29iaiwKICAgIHN0 cnVjdCBrb2JqX3R5cGUgKmt0eXBlLCBzdHJ1Y3Qga29iamVjdCAqcGFyZW50LAogICAgY29uc3Qg Y2hhciAqZm10LCAuLi4pOwoKZXh0ZXJuIHZvaWQga29iamVjdF9kZWwoc3RydWN0IGtvYmplY3Qg KmtvYmopOwoKZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICogX19hdHRyaWJ1dGVfXygoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpIGtvYmplY3RfY3JlYXRlKHZvaWQpOwpleHRlcm4gc3RydWN0IGtvYmpl Y3QgKiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga29iamVjdF9jcmVh dGVfYW5kX2FkZChjb25zdCBjaGFyICpuYW1lLAogICAgICBzdHJ1Y3Qga29iamVjdCAqcGFyZW50 KTsKCmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtv YmplY3RfcmVuYW1lKHN0cnVjdCBrb2JqZWN0ICosIGNvbnN0IGNoYXIgKm5ld19uYW1lKTsKZXh0 ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkga29iamVjdF9t b3ZlKHN0cnVjdCBrb2JqZWN0ICosIHN0cnVjdCBrb2JqZWN0ICopOwoKZXh0ZXJuIHN0cnVjdCBr b2JqZWN0ICprb2JqZWN0X2dldChzdHJ1Y3Qga29iamVjdCAqa29iaik7CmV4dGVybiBzdHJ1Y3Qg a29iamVjdCAqIF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBrb2JqZWN0 X2dldF91bmxlc3NfemVybygKICAgICAgc3RydWN0IGtvYmplY3QgKmtvYmopOwpleHRlcm4gdm9p ZCBrb2JqZWN0X3B1dChzdHJ1Y3Qga29iamVjdCAqa29iaik7CgpleHRlcm4gY29uc3Qgdm9pZCAq a29iamVjdF9uYW1lc3BhY2Uoc3RydWN0IGtvYmplY3QgKmtvYmopOwpleHRlcm4gdm9pZCBrb2Jq ZWN0X2dldF9vd25lcnNoaXAoc3RydWN0IGtvYmplY3QgKmtvYmosCiAgICAgIGt1aWRfdCAqdWlk LCBrZ2lkX3QgKmdpZCk7CmV4dGVybiBjaGFyICprb2JqZWN0X2dldF9wYXRoKHN0cnVjdCBrb2Jq ZWN0ICprb2JqLCBnZnBfdCBmbGFnKTsKIyAxMzIgIi4vaW5jbHVkZS9saW51eC9rb2JqZWN0Lmgi CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wga29iamVjdF9oYXNfY2hpbGRyZW4oc3RydWN0IGtvYmplY3QgKmtvYmopCnsKICh7IGlu dCBfX3JldF93YXJuX29uID0gISEoa3JlZl9yZWFkKCZrb2JqLT5rcmVmKSA9PSAwKTsgaWYgKF9f YnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5s aW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9u IF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMg YnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBi dWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAi XHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAi LnBvcHNlY3Rpb24iIDogOiAiaSIgKCJpbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIpLCAiaSIgKDEz NCksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihz dHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5c dCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5c blx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzNykpOyB9KTsgfSB3aGlsZSAoMCk7IF9f YnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsKCiByZXR1cm4ga29iai0+ c2QgJiYga29iai0+c2QtPmRpci5zdWJkaXJzOwp9CgpzdHJ1Y3Qga29ial90eXBlIHsKIHZvaWQg KCpyZWxlYXNlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7CiBjb25zdCBzdHJ1Y3Qgc3lzZnNfb3Bz ICpzeXNmc19vcHM7CiBzdHJ1Y3QgYXR0cmlidXRlICoqZGVmYXVsdF9hdHRyczsKIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipkZWZhdWx0X2dyb3VwczsKIGNvbnN0IHN0cnVjdCBrb2Jq X25zX3R5cGVfb3BlcmF0aW9ucyAqKCpjaGlsZF9uc190eXBlKShzdHJ1Y3Qga29iamVjdCAqa29i aik7CiBjb25zdCB2b2lkICooKm5hbWVzcGFjZSkoc3RydWN0IGtvYmplY3QgKmtvYmopOwogdm9p ZCAoKmdldF9vd25lcnNoaXApKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBrdWlkX3QgKnVpZCwga2dp ZF90ICpnaWQpOwp9OwoKc3RydWN0IGtvYmpfdWV2ZW50X2VudiB7CiBjaGFyICphcmd2WzNdOwog Y2hhciAqZW52cFszMl07CiBpbnQgZW52cF9pZHg7CiBjaGFyIGJ1ZlsyMDQ4XTsKIGludCBidWZs ZW47Cn07CgpzdHJ1Y3Qga3NldF91ZXZlbnRfb3BzIHsKIGludCAoKiBjb25zdCBmaWx0ZXIpKHN0 cnVjdCBrc2V0ICprc2V0LCBzdHJ1Y3Qga29iamVjdCAqa29iaik7CiBjb25zdCBjaGFyICooKiBj b25zdCBuYW1lKShzdHJ1Y3Qga3NldCAqa3NldCwgc3RydWN0IGtvYmplY3QgKmtvYmopOwogaW50 ICgqIGNvbnN0IHVldmVudCkoc3RydWN0IGtzZXQgKmtzZXQsIHN0cnVjdCBrb2JqZWN0ICprb2Jq LAogICAgICAgIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudik7Cn07CgpzdHJ1Y3Qga29ial9h dHRyaWJ1dGUgewogc3RydWN0IGF0dHJpYnV0ZSBhdHRyOwogc3NpemVfdCAoKnNob3cpKHN0cnVj dCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCiAgIGNoYXIgKmJ1 Zik7CiBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9h dHRyaWJ1dGUgKmF0dHIsCiAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCk7Cn07Cgpl eHRlcm4gY29uc3Qgc3RydWN0IHN5c2ZzX29wcyBrb2JqX3N5c2ZzX29wczsKCnN0cnVjdCBzb2Nr OwojIDE5MyAiLi9pbmNsdWRlL2xpbnV4L2tvYmplY3QuaCIKc3RydWN0IGtzZXQgewogc3RydWN0 IGxpc3RfaGVhZCBsaXN0Owogc3BpbmxvY2tfdCBsaXN0X2xvY2s7CiBzdHJ1Y3Qga29iamVjdCBr b2JqOwogY29uc3Qgc3RydWN0IGtzZXRfdWV2ZW50X29wcyAqdWV2ZW50X29wczsKfSBfX2F0dHJp YnV0ZV9fKChfX2Rlc2lnbmF0ZWRfaW5pdF9fKSk7CgpleHRlcm4gdm9pZCBrc2V0X2luaXQoc3Ry dWN0IGtzZXQgKmtzZXQpOwpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKSBrc2V0X3JlZ2lzdGVyKHN0cnVjdCBrc2V0ICprc2V0KTsKZXh0ZXJuIHZvaWQg a3NldF91bnJlZ2lzdGVyKHN0cnVjdCBrc2V0ICprc2V0KTsKZXh0ZXJuIHN0cnVjdCBrc2V0ICog X19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGtzZXRfY3JlYXRlX2FuZF9h ZGQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgY29uc3Qgc3RydWN0IGtzZXRfdWV2ZW50X29wcyAq dSwKICAgICAgc3RydWN0IGtvYmplY3QgKnBhcmVudF9rb2JqKTsKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrc2V0ICp0b19r c2V0KHN0cnVjdCBrb2JqZWN0ICprb2JqKQp7CiByZXR1cm4ga29iaiA/ICh7IHZvaWQgKl9fbXB0 ciA9ICh2b2lkICopKGtvYmopOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNzZXJ0 XzIwOSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNtYXRj aCBpbiBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21wYXRp YmxlX3AodHlwZW9mKCooa29iaikpLCB0eXBlb2YoKChzdHJ1Y3Qga3NldCAqKTApLT5rb2JqKSkg JiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooa29iaikpLCB0eXBlb2Yo dm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzIwOSgpOyB9IHdoaWxlICgwKTsgKChzdHJ1 Y3Qga3NldCAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGtzZXQsIGtvYmop KSk7IH0pIDogKCh2b2lkICopMCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBrc2V0ICprc2V0X2dldChzdHJ1Y3Qga3Nl dCAqaykKewogcmV0dXJuIGsgPyB0b19rc2V0KGtvYmplY3RfZ2V0KCZrLT5rb2JqKSkgOiAoKHZv aWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgdm9pZCBrc2V0X3B1dChzdHJ1Y3Qga3NldCAqaykKewoga29iamVjdF9wdXQo JmstPmtvYmopOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBzdHJ1Y3Qga29ial90eXBlICpnZXRfa3R5cGUoc3RydWN0IGtvYmplY3Qg KmtvYmopCnsKIHJldHVybiBrb2JqLT5rdHlwZTsKfQoKZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICpr c2V0X2ZpbmRfb2JqKHN0cnVjdCBrc2V0ICosIGNvbnN0IGNoYXIgKik7CgoKZXh0ZXJuIHN0cnVj dCBrb2JqZWN0ICprZXJuZWxfa29iajsKCmV4dGVybiBzdHJ1Y3Qga29iamVjdCAqbW1fa29iajsK CmV4dGVybiBzdHJ1Y3Qga29iamVjdCAqaHlwZXJ2aXNvcl9rb2JqOwoKZXh0ZXJuIHN0cnVjdCBr b2JqZWN0ICpwb3dlcl9rb2JqOwoKZXh0ZXJuIHN0cnVjdCBrb2JqZWN0ICpmaXJtd2FyZV9rb2Jq OwoKaW50IGtvYmplY3RfdWV2ZW50KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBlbnVtIGtvYmplY3Rf YWN0aW9uIGFjdGlvbik7CmludCBrb2JqZWN0X3VldmVudF9lbnYoc3RydWN0IGtvYmplY3QgKmtv YmosIGVudW0ga29iamVjdF9hY3Rpb24gYWN0aW9uLAogICBjaGFyICplbnZwW10pOwppbnQga29i amVjdF9zeW50aF91ZXZlbnQoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKmJ1Ziwg c2l6ZV90IGNvdW50KTsKCl9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkp CmludCBhZGRfdWV2ZW50X3ZhcihzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYsIGNvbnN0IGNo YXIgKmZvcm1hdCwgLi4uKTsKIyAxOCAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIiAyCiMgMSAi Li9pbmNsdWRlL2xpbnV4L2tsaXN0LmgiIDEKIyAxNyAiLi9pbmNsdWRlL2xpbnV4L2tsaXN0Lmgi CnN0cnVjdCBrbGlzdF9ub2RlOwpzdHJ1Y3Qga2xpc3Qgewogc3BpbmxvY2tfdCBrX2xvY2s7CiBz dHJ1Y3QgbGlzdF9oZWFkIGtfbGlzdDsKIHZvaWQgKCpnZXQpKHN0cnVjdCBrbGlzdF9ub2RlICop Owogdm9pZCAoKnB1dCkoc3RydWN0IGtsaXN0X25vZGUgKik7Cn0gX19hdHRyaWJ1dGVfXyAoKGFs aWduZWQgKHNpemVvZih2b2lkICopKSkpOwojIDM0ICIuL2luY2x1ZGUvbGludXgva2xpc3QuaCIK ZXh0ZXJuIHZvaWQga2xpc3RfaW5pdChzdHJ1Y3Qga2xpc3QgKmssIHZvaWQgKCpnZXQpKHN0cnVj dCBrbGlzdF9ub2RlICopLAogICAgICAgICB2b2lkICgqcHV0KShzdHJ1Y3Qga2xpc3Rfbm9kZSAq KSk7CgpzdHJ1Y3Qga2xpc3Rfbm9kZSB7CiB2b2lkICpuX2tsaXN0Owogc3RydWN0IGxpc3RfaGVh ZCBuX25vZGU7CiBzdHJ1Y3Qga3JlZiBuX3JlZjsKfTsKCmV4dGVybiB2b2lkIGtsaXN0X2FkZF90 YWlsKHN0cnVjdCBrbGlzdF9ub2RlICpuLCBzdHJ1Y3Qga2xpc3QgKmspOwpleHRlcm4gdm9pZCBr bGlzdF9hZGRfaGVhZChzdHJ1Y3Qga2xpc3Rfbm9kZSAqbiwgc3RydWN0IGtsaXN0ICprKTsKZXh0 ZXJuIHZvaWQga2xpc3RfYWRkX2JlaGluZChzdHJ1Y3Qga2xpc3Rfbm9kZSAqbiwgc3RydWN0IGts aXN0X25vZGUgKnBvcyk7CmV4dGVybiB2b2lkIGtsaXN0X2FkZF9iZWZvcmUoc3RydWN0IGtsaXN0 X25vZGUgKm4sIHN0cnVjdCBrbGlzdF9ub2RlICpwb3MpOwoKZXh0ZXJuIHZvaWQga2xpc3RfZGVs KHN0cnVjdCBrbGlzdF9ub2RlICpuKTsKZXh0ZXJuIHZvaWQga2xpc3RfcmVtb3ZlKHN0cnVjdCBr bGlzdF9ub2RlICpuKTsKCmV4dGVybiBpbnQga2xpc3Rfbm9kZV9hdHRhY2hlZChzdHJ1Y3Qga2xp c3Rfbm9kZSAqbik7CgoKc3RydWN0IGtsaXN0X2l0ZXIgewogc3RydWN0IGtsaXN0ICppX2tsaXN0 Owogc3RydWN0IGtsaXN0X25vZGUgKmlfY3VyOwp9OwoKCmV4dGVybiB2b2lkIGtsaXN0X2l0ZXJf aW5pdChzdHJ1Y3Qga2xpc3QgKmssIHN0cnVjdCBrbGlzdF9pdGVyICppKTsKZXh0ZXJuIHZvaWQg a2xpc3RfaXRlcl9pbml0X25vZGUoc3RydWN0IGtsaXN0ICprLCBzdHJ1Y3Qga2xpc3RfaXRlciAq aSwKICAgICBzdHJ1Y3Qga2xpc3Rfbm9kZSAqbik7CmV4dGVybiB2b2lkIGtsaXN0X2l0ZXJfZXhp dChzdHJ1Y3Qga2xpc3RfaXRlciAqaSk7CmV4dGVybiBzdHJ1Y3Qga2xpc3Rfbm9kZSAqa2xpc3Rf cHJldihzdHJ1Y3Qga2xpc3RfaXRlciAqaSk7CmV4dGVybiBzdHJ1Y3Qga2xpc3Rfbm9kZSAqa2xp c3RfbmV4dChzdHJ1Y3Qga2xpc3RfaXRlciAqaSk7CiMgMTkgIi4vaW5jbHVkZS9saW51eC9kZXZp Y2UuaCIgMgoKCgoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3BtLmgiIDEKIyAyMiAiLi9pbmNsdWRl L2xpbnV4L3BtLmgiCmV4dGVybiB2b2lkICgqcG1fcG93ZXJfb2ZmKSh2b2lkKTsKZXh0ZXJuIHZv aWQgKCpwbV9wb3dlcl9vZmZfcHJlcGFyZSkodm9pZCk7CgpzdHJ1Y3QgZGV2aWNlOwoKZXh0ZXJu IHZvaWQgcG1fdnRfc3dpdGNoX3JlcXVpcmVkKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCByZXF1 aXJlZCk7CmV4dGVybiB2b2lkIHBtX3Z0X3N3aXRjaF91bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2Ug KmRldik7CiMgNDIgIi4vaW5jbHVkZS9saW51eC9wbS5oIgpzdHJ1Y3QgZGV2aWNlOwoKCmV4dGVy biBjb25zdCBjaGFyIHBvd2VyX2dyb3VwX25hbWVbXTsKCgoKCnR5cGVkZWYgc3RydWN0IHBtX21l c3NhZ2UgewogaW50IGV2ZW50Owp9IHBtX21lc3NhZ2VfdDsKIyAyNzggIi4vaW5jbHVkZS9saW51 eC9wbS5oIgpzdHJ1Y3QgZGV2X3BtX29wcyB7CiBpbnQgKCpwcmVwYXJlKShzdHJ1Y3QgZGV2aWNl ICpkZXYpOwogdm9pZCAoKmNvbXBsZXRlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqc3Vz cGVuZCkoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCAoKnJlc3VtZSkoc3RydWN0IGRldmljZSAq ZGV2KTsKIGludCAoKmZyZWV6ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCAoKnRoYXcpKHN0 cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpwb3dlcm9mZikoc3RydWN0IGRldmljZSAqZGV2KTsK IGludCAoKnJlc3RvcmUpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpzdXNwZW5kX2xhdGUp KHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpyZXN1bWVfZWFybHkpKHN0cnVjdCBkZXZpY2Ug KmRldik7CiBpbnQgKCpmcmVlemVfbGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCAoKnRo YXdfZWFybHkpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpwb3dlcm9mZl9sYXRlKShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqcmVzdG9yZV9lYXJseSkoc3RydWN0IGRldmljZSAqZGV2 KTsKIGludCAoKnN1c3BlbmRfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpyZXN1 bWVfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpmcmVlemVfbm9pcnEpKHN0cnVj dCBkZXZpY2UgKmRldik7CiBpbnQgKCp0aGF3X25vaXJxKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwog aW50ICgqcG93ZXJvZmZfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpyZXN0b3Jl X25vaXJxKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqcnVudGltZV9zdXNwZW5kKShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqcnVudGltZV9yZXN1bWUpKHN0cnVjdCBkZXZpY2UgKmRl dik7CiBpbnQgKCpydW50aW1lX2lkbGUpKHN0cnVjdCBkZXZpY2UgKmRldik7Cn07CiMgNDk2ICIu L2luY2x1ZGUvbGludXgvcG0uaCIKZW51bSBycG1fc3RhdHVzIHsKIFJQTV9BQ1RJVkUgPSAwLAog UlBNX1JFU1VNSU5HLAogUlBNX1NVU1BFTkRFRCwKIFJQTV9TVVNQRU5ESU5HLAp9OwojIDUxOCAi Li9pbmNsdWRlL2xpbnV4L3BtLmgiCmVudW0gcnBtX3JlcXVlc3QgewogUlBNX1JFUV9OT05FID0g MCwKIFJQTV9SRVFfSURMRSwKIFJQTV9SRVFfU1VTUEVORCwKIFJQTV9SRVFfQVVUT1NVU1BFTkQs CiBSUE1fUkVRX1JFU1VNRSwKfTsKCnN0cnVjdCB3YWtldXBfc291cmNlOwpzdHJ1Y3Qgd2FrZV9p cnE7CnN0cnVjdCBwbV9kb21haW5fZGF0YTsKCnN0cnVjdCBwbV9zdWJzeXNfZGF0YSB7CiBzcGlu bG9ja190IGxvY2s7CiB1bnNpZ25lZCBpbnQgcmVmY291bnQ7Cgogc3RydWN0IGxpc3RfaGVhZCBj bG9ja19saXN0OwoKCgoKfTsKIyA1NzMgIi4vaW5jbHVkZS9saW51eC9wbS5oIgpzdHJ1Y3QgZGV2 X3BtX2luZm8gewogcG1fbWVzc2FnZV90IHBvd2VyX3N0YXRlOwogdW5zaWduZWQgaW50IGNhbl93 YWtldXA6MTsKIHVuc2lnbmVkIGludCBhc3luY19zdXNwZW5kOjE7CiBib29sIGluX2RwbV9saXN0 OjE7CiBib29sIGlzX3ByZXBhcmVkOjE7CiBib29sIGlzX3N1c3BlbmRlZDoxOwogYm9vbCBpc19u b2lycV9zdXNwZW5kZWQ6MTsKIGJvb2wgaXNfbGF0ZV9zdXNwZW5kZWQ6MTsKIGJvb2wgbm9fcG06 MTsKIGJvb2wgZWFybHlfaW5pdDoxOwogYm9vbCBkaXJlY3RfY29tcGxldGU6MTsKIHUzMiBkcml2 ZXJfZmxhZ3M7CiBzcGlubG9ja190IGxvY2s7Cgogc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsKIHN0 cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247CiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd2FrZXVw OwogYm9vbCB3YWtldXBfcGF0aDoxOwogYm9vbCBzeXNjb3JlOjE7CiBib29sIG5vX3BtX2NhbGxi YWNrczoxOwogdW5zaWduZWQgaW50IG11c3RfcmVzdW1lOjE7CiB1bnNpZ25lZCBpbnQgbWF5X3Nr aXBfcmVzdW1lOjE7CgoKCgogc3RydWN0IGhydGltZXIgc3VzcGVuZF90aW1lcjsKIHVuc2lnbmVk IGxvbmcgdGltZXJfZXhwaXJlczsKIHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwogd2FpdF9xdWV1 ZV9oZWFkX3Qgd2FpdF9xdWV1ZTsKIHN0cnVjdCB3YWtlX2lycSAqd2FrZWlycTsKIGF0b21pY190 IHVzYWdlX2NvdW50OwogYXRvbWljX3QgY2hpbGRfY291bnQ7CiB1bnNpZ25lZCBpbnQgZGlzYWJs ZV9kZXB0aDozOwogdW5zaWduZWQgaW50IGlkbGVfbm90aWZpY2F0aW9uOjE7CiB1bnNpZ25lZCBp bnQgcmVxdWVzdF9wZW5kaW5nOjE7CiB1bnNpZ25lZCBpbnQgZGVmZXJyZWRfcmVzdW1lOjE7CiB1 bnNpZ25lZCBpbnQgcnVudGltZV9hdXRvOjE7CiBib29sIGlnbm9yZV9jaGlsZHJlbjoxOwogdW5z aWduZWQgaW50IG5vX2NhbGxiYWNrczoxOwogdW5zaWduZWQgaW50IGlycV9zYWZlOjE7CiB1bnNp Z25lZCBpbnQgdXNlX2F1dG9zdXNwZW5kOjE7CiB1bnNpZ25lZCBpbnQgdGltZXJfYXV0b3N1c3Bl bmRzOjE7CiB1bnNpZ25lZCBpbnQgbWVtYWxsb2Nfbm9pbzoxOwogdW5zaWduZWQgaW50IGxpbmtz X2NvdW50OwogZW51bSBycG1fcmVxdWVzdCByZXF1ZXN0OwogZW51bSBycG1fc3RhdHVzIHJ1bnRp bWVfc3RhdHVzOwogaW50IHJ1bnRpbWVfZXJyb3I7CiBpbnQgYXV0b3N1c3BlbmRfZGVsYXk7CiB1 NjQgbGFzdF9idXN5OwogdTY0IGFjdGl2ZV90aW1lOwogdTY0IHN1c3BlbmRlZF90aW1lOwogdTY0 IGFjY291bnRpbmdfdGltZXN0YW1wOwoKIHN0cnVjdCBwbV9zdWJzeXNfZGF0YSAqc3Vic3lzX2Rh dGE7CiB2b2lkICgqc2V0X2xhdGVuY3lfdG9sZXJhbmNlKShzdHJ1Y3QgZGV2aWNlICosIHMzMik7 CiBzdHJ1Y3QgZGV2X3BtX3FvcyAqcW9zOwp9OwoKZXh0ZXJuIGludCBkZXZfcG1fZ2V0X3N1YnN5 c19kYXRhKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGRldl9wbV9wdXRfc3Vic3lz X2RhdGEoc3RydWN0IGRldmljZSAqZGV2KTsKIyA2NTAgIi4vaW5jbHVkZS9saW51eC9wbS5oIgpz dHJ1Y3QgZGV2X3BtX2RvbWFpbiB7CiBzdHJ1Y3QgZGV2X3BtX29wcyBvcHM7CiBpbnQgKCpzdGFy dCkoc3RydWN0IGRldmljZSAqZGV2KTsKIHZvaWQgKCpkZXRhY2gpKHN0cnVjdCBkZXZpY2UgKmRl diwgYm9vbCBwb3dlcl9vZmYpOwogaW50ICgqYWN0aXZhdGUpKHN0cnVjdCBkZXZpY2UgKmRldik7 CiB2b2lkICgqc3luYykoc3RydWN0IGRldmljZSAqZGV2KTsKIHZvaWQgKCpkaXNtaXNzKShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwp9OwojIDcxNCAiLi9pbmNsdWRlL2xpbnV4L3BtLmgiCmV4dGVybiB2 b2lkIGRldmljZV9wbV9sb2NrKHZvaWQpOwpleHRlcm4gdm9pZCBkcG1fcmVzdW1lX3N0YXJ0KHBt X21lc3NhZ2VfdCBzdGF0ZSk7CmV4dGVybiB2b2lkIGRwbV9yZXN1bWVfZW5kKHBtX21lc3NhZ2Vf dCBzdGF0ZSk7CmV4dGVybiB2b2lkIGRwbV9yZXN1bWVfbm9pcnEocG1fbWVzc2FnZV90IHN0YXRl KTsKZXh0ZXJuIHZvaWQgZHBtX3Jlc3VtZV9lYXJseShwbV9tZXNzYWdlX3Qgc3RhdGUpOwpleHRl cm4gdm9pZCBkcG1fcmVzdW1lKHBtX21lc3NhZ2VfdCBzdGF0ZSk7CmV4dGVybiB2b2lkIGRwbV9j b21wbGV0ZShwbV9tZXNzYWdlX3Qgc3RhdGUpOwoKZXh0ZXJuIHZvaWQgZGV2aWNlX3BtX3VubG9j ayh2b2lkKTsKZXh0ZXJuIGludCBkcG1fc3VzcGVuZF9lbmQocG1fbWVzc2FnZV90IHN0YXRlKTsK ZXh0ZXJuIGludCBkcG1fc3VzcGVuZF9zdGFydChwbV9tZXNzYWdlX3Qgc3RhdGUpOwpleHRlcm4g aW50IGRwbV9zdXNwZW5kX25vaXJxKHBtX21lc3NhZ2VfdCBzdGF0ZSk7CmV4dGVybiBpbnQgZHBt X3N1c3BlbmRfbGF0ZShwbV9tZXNzYWdlX3Qgc3RhdGUpOwpleHRlcm4gaW50IGRwbV9zdXNwZW5k KHBtX21lc3NhZ2VfdCBzdGF0ZSk7CmV4dGVybiBpbnQgZHBtX3ByZXBhcmUocG1fbWVzc2FnZV90 IHN0YXRlKTsKCmV4dGVybiB2b2lkIF9fc3VzcGVuZF9yZXBvcnRfcmVzdWx0KGNvbnN0IGNoYXIg KmZ1bmN0aW9uLCB2b2lkICpmbiwgaW50IHJldCk7CgoKCgoKCmV4dGVybiBpbnQgZGV2aWNlX3Bt X3dhaXRfZm9yX2RldihzdHJ1Y3QgZGV2aWNlICpzdWIsIHN0cnVjdCBkZXZpY2UgKmRldik7CmV4 dGVybiB2b2lkIGRwbV9mb3JfZWFjaF9kZXYodm9pZCAqZGF0YSwgdm9pZCAoKmZuKShzdHJ1Y3Qg ZGV2aWNlICosIHZvaWQgKikpOwoKZXh0ZXJuIGludCBwbV9nZW5lcmljX3ByZXBhcmUoc3RydWN0 IGRldmljZSAqZGV2KTsKZXh0ZXJuIGludCBwbV9nZW5lcmljX3N1c3BlbmRfbGF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfc3VzcGVuZF9ub2lycShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNl ICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfcmVzdW1lX2Vhcmx5KHN0cnVjdCBkZXZpY2Ug KmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN1bWVfbm9pcnEoc3RydWN0IGRldmljZSAq ZGV2KTsKZXh0ZXJuIGludCBwbV9nZW5lcmljX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpl eHRlcm4gaW50IHBtX2dlbmVyaWNfZnJlZXplX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4 dGVybiBpbnQgcG1fZ2VuZXJpY19mcmVlemVfbGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRl cm4gaW50IHBtX2dlbmVyaWNfZnJlZXplKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQg cG1fZ2VuZXJpY190aGF3X25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1f Z2VuZXJpY190aGF3X2Vhcmx5KHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2Vu ZXJpY190aGF3KHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN0 b3JlX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN0 b3JlX2Vhcmx5KHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19yZXN0 b3JlKHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiBpbnQgcG1fZ2VuZXJpY19wb3dlcm9mZl9u b2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfcG93ZXJvZmZf bGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IHBtX2dlbmVyaWNfcG93ZXJvZmYo c3RydWN0IGRldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgcG1fZ2VuZXJpY19jb21wbGV0ZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwoKZXh0ZXJuIGJvb2wgZGV2X3BtX21heV9za2lwX3Jlc3VtZShzdHJ1 Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gYm9vbCBkZXZfcG1fc21hcnRfc3VzcGVuZF9hbmRfc3Vz cGVuZGVkKHN0cnVjdCBkZXZpY2UgKmRldik7CiMgODA4ICIuL2luY2x1ZGUvbGludXgvcG0uaCIK ZW51bSBkcG1fb3JkZXIgewogRFBNX09SREVSX05PTkUsCiBEUE1fT1JERVJfREVWX0FGVEVSX1BB UkVOVCwKIERQTV9PUkRFUl9QQVJFTlRfQkVGT1JFX0RFViwKIERQTV9PUkRFUl9ERVZfTEFTVCwK fTsKIyAyNSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIiAyCgoKCgojIDEgIi4vaW5jbHVkZS9s aW51eC9kZXZpY2UvYnVzLmgiIDEKIyAyMSAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9idXMuaCIK c3RydWN0IGRldmljZV9kcml2ZXI7CnN0cnVjdCBmd25vZGVfaGFuZGxlOwojIDgyICIuL2luY2x1 ZGUvbGludXgvZGV2aWNlL2J1cy5oIgpzdHJ1Y3QgYnVzX3R5cGUgewogY29uc3QgY2hhciAqbmFt ZTsKIGNvbnN0IGNoYXIgKmRldl9uYW1lOwogc3RydWN0IGRldmljZSAqZGV2X3Jvb3Q7CiBjb25z dCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqYnVzX2dyb3VwczsKIGNvbnN0IHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXAgKipkZXZfZ3JvdXBzOwogY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq KmRydl9ncm91cHM7CgogaW50ICgqbWF0Y2gpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl dmljZV9kcml2ZXIgKmRydik7CiBpbnQgKCp1ZXZlbnQpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3Ry dWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KTsKIGludCAoKnByb2JlKShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwogdm9pZCAoKnN5bmNfc3RhdGUpKHN0cnVjdCBkZXZpY2UgKmRldik7CiBpbnQgKCpyZW1v dmUpKHN0cnVjdCBkZXZpY2UgKmRldik7CiB2b2lkICgqc2h1dGRvd24pKHN0cnVjdCBkZXZpY2Ug KmRldik7CgogaW50ICgqb25saW5lKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogaW50ICgqb2ZmbGlu ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKCiBpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSk7CiBpbnQgKCpyZXN1bWUpKHN0cnVjdCBkZXZpY2UgKmRl dik7CgogaW50ICgqbnVtX3ZmKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoKIGludCAoKmRtYV9jb25m aWd1cmUpKHN0cnVjdCBkZXZpY2UgKmRldik7CgogY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBt OwoKIGNvbnN0IHN0cnVjdCBpb21tdV9vcHMgKmlvbW11X29wczsKCiBzdHJ1Y3Qgc3Vic3lzX3By aXZhdGUgKnA7CiBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbG9ja19rZXk7CgogYm9vbCBuZWVkX3Bh cmVudF9sb2NrOwp9OwoKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSkgYnVzX3JlZ2lzdGVyKHN0cnVjdCBidXNfdHlwZSAqYnVzKTsKCmV4dGVybiB2b2lk IGJ1c191bnJlZ2lzdGVyKHN0cnVjdCBidXNfdHlwZSAqYnVzKTsKCmV4dGVybiBpbnQgX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGJ1c19yZXNjYW5fZGV2aWNlcyhzdHJ1 Y3QgYnVzX3R5cGUgKmJ1cyk7CgpzdHJ1Y3QgYnVzX2F0dHJpYnV0ZSB7CiBzdHJ1Y3QgYXR0cmli dXRlIGF0dHI7CiBzc2l6ZV90ICgqc2hvdykoc3RydWN0IGJ1c190eXBlICpidXMsIGNoYXIgKmJ1 Zik7CiBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpi dWYsIHNpemVfdCBjb3VudCk7Cn07CiMgMTM2ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2J1cy5o IgpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBidXNf Y3JlYXRlX2ZpbGUoc3RydWN0IGJ1c190eXBlICosCiAgICAgc3RydWN0IGJ1c19hdHRyaWJ1dGUg Kik7CmV4dGVybiB2b2lkIGJ1c19yZW1vdmVfZmlsZShzdHJ1Y3QgYnVzX3R5cGUgKiwgc3RydWN0 IGJ1c19hdHRyaWJ1dGUgKik7CgoKaW50IGRldmljZV9tYXRjaF9uYW1lKHN0cnVjdCBkZXZpY2Ug KmRldiwgY29uc3Qgdm9pZCAqbmFtZSk7CmludCBkZXZpY2VfbWF0Y2hfb2Zfbm9kZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKm5wKTsKaW50IGRldmljZV9tYXRjaF9md25vZGUoc3Ry dWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpmd25vZGUpOwppbnQgZGV2aWNlX21hdGNoX2Rl dnQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpwZGV2dCk7CmludCBkZXZpY2VfbWF0 Y2hfYWNwaV9kZXYoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICphZGV2KTsKaW50IGRl dmljZV9tYXRjaF9hbnkoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICp1bnVzZWQpOwoK CnN0cnVjdCBzdWJzeXNfZGV2X2l0ZXIgewogc3RydWN0IGtsaXN0X2l0ZXIga2k7CiBjb25zdCBz dHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGU7Cn07CnZvaWQgc3Vic3lzX2Rldl9pdGVyX2luaXQoc3Ry dWN0IHN1YnN5c19kZXZfaXRlciAqaXRlciwKICAgIHN0cnVjdCBidXNfdHlwZSAqc3Vic3lzLAog ICAgc3RydWN0IGRldmljZSAqc3RhcnQsCiAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5 cGUpOwpzdHJ1Y3QgZGV2aWNlICpzdWJzeXNfZGV2X2l0ZXJfbmV4dChzdHJ1Y3Qgc3Vic3lzX2Rl dl9pdGVyICppdGVyKTsKdm9pZCBzdWJzeXNfZGV2X2l0ZXJfZXhpdChzdHJ1Y3Qgc3Vic3lzX2Rl dl9pdGVyICppdGVyKTsKCmludCBidXNfZm9yX2VhY2hfZGV2KHN0cnVjdCBidXNfdHlwZSAqYnVz LCBzdHJ1Y3QgZGV2aWNlICpzdGFydCwgdm9pZCAqZGF0YSwKICAgICAgIGludCAoKmZuKShzdHJ1 Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpKTsKc3RydWN0IGRldmljZSAqYnVzX2ZpbmRfZGV2 aWNlKHN0cnVjdCBidXNfdHlwZSAqYnVzLCBzdHJ1Y3QgZGV2aWNlICpzdGFydCwKICAgICAgICAg IGNvbnN0IHZvaWQgKmRhdGEsCiAgICAgICAgICBpbnQgKCptYXRjaCkoc3RydWN0IGRldmljZSAq ZGV2LCBjb25zdCB2b2lkICpkYXRhKSk7CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICpidXNfZmluZF9k ZXZpY2VfYnlfbmFtZShzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywKICAgICAgICAgICBzdHJ1Y3QgZGV2 aWNlICpzdGFydCwKICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQp7CiByZXR1cm4gYnVzX2Zp bmRfZGV2aWNlKGJ1cywgc3RhcnQsIG5hbWUsIGRldmljZV9tYXRjaF9uYW1lKTsKfQoKCgoKCgoK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGRldmljZSAqCmJ1c19maW5kX2RldmljZV9ieV9vZl9ub2RlKHN0cnVjdCBidXNfdHlw ZSAqYnVzLCBjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQp7CiByZXR1cm4gYnVzX2ZpbmRf ZGV2aWNlKGJ1cywgKCh2b2lkICopMCksIG5wLCBkZXZpY2VfbWF0Y2hfb2Zfbm9kZSk7Cn0KCgoK CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBkZXZpY2UgKgpidXNfZmluZF9kZXZpY2VfYnlfZndub2RlKHN0cnVjdCBidXNf dHlwZSAqYnVzLCBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKQp7CiByZXR1cm4g YnVzX2ZpbmRfZGV2aWNlKGJ1cywgKCh2b2lkICopMCksIGZ3bm9kZSwgZGV2aWNlX21hdGNoX2Z3 bm9kZSk7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZpY2UgKmJ1c19maW5kX2RldmljZV9ieV9kZXZ0KHN0 cnVjdCBidXNfdHlwZSAqYnVzLAogICAgICAgICAgIGRldl90IGRldnQpCnsKIHJldHVybiBidXNf ZmluZF9kZXZpY2UoYnVzLCAoKHZvaWQgKikwKSwgJmRldnQsIGRldmljZV9tYXRjaF9kZXZ0KTsK fQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGRldmljZSAqCmJ1c19maW5kX25leHRfZGV2aWNlKHN0cnVjdCBidXNf dHlwZSAqYnVzLHN0cnVjdCBkZXZpY2UgKmN1cikKewogcmV0dXJuIGJ1c19maW5kX2RldmljZShi dXMsIGN1ciwgKCh2b2lkICopMCksIGRldmljZV9tYXRjaF9hbnkpOwp9CgoKc3RydWN0IGFjcGlf ZGV2aWNlOwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqCmJ1c19maW5kX2RldmljZV9ieV9hY3BpX2Rl dihzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQp7 CiByZXR1cm4gYnVzX2ZpbmRfZGV2aWNlKGJ1cywgKCh2b2lkICopMCksIGFkZXYsIGRldmljZV9t YXRjaF9hY3BpX2Rldik7Cn0KIyAyNDkgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvYnVzLmgiCnN0 cnVjdCBkZXZpY2UgKnN1YnN5c19maW5kX2RldmljZV9ieV9pZChzdHJ1Y3QgYnVzX3R5cGUgKmJ1 cywgdW5zaWduZWQgaW50IGlkLAogICAgIHN0cnVjdCBkZXZpY2UgKmhpbnQpOwppbnQgYnVzX2Zv cl9lYWNoX2RydihzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgc3RydWN0IGRldmljZV9kcml2ZXIgKnN0 YXJ0LAogICAgICAgdm9pZCAqZGF0YSwgaW50ICgqZm4pKHN0cnVjdCBkZXZpY2VfZHJpdmVyICos IHZvaWQgKikpOwp2b2lkIGJ1c19zb3J0X2JyZWFkdGhmaXJzdChzdHJ1Y3QgYnVzX3R5cGUgKmJ1 cywKICAgICAgaW50ICgqY29tcGFyZSkoY29uc3Qgc3RydWN0IGRldmljZSAqYSwKICAgICAgIGNv bnN0IHN0cnVjdCBkZXZpY2UgKmIpKTsKCgoKCgoKc3RydWN0IG5vdGlmaWVyX2Jsb2NrOwoKZXh0 ZXJuIGludCBidXNfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IGJ1c190eXBlICpidXMsCiAgICAg c3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CmV4dGVybiBpbnQgYnVzX3VucmVnaXN0ZXJfbm90 aWZpZXIoc3RydWN0IGJ1c190eXBlICpidXMsCiAgICAgICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sg Km5iKTsKIyAyODUgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvYnVzLmgiCmV4dGVybiBzdHJ1Y3Qg a3NldCAqYnVzX2dldF9rc2V0KHN0cnVjdCBidXNfdHlwZSAqYnVzKTsKZXh0ZXJuIHN0cnVjdCBr bGlzdCAqYnVzX2dldF9kZXZpY2Vfa2xpc3Qoc3RydWN0IGJ1c190eXBlICpidXMpOwojIDMwICIu L2luY2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKIyAxICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2Ns YXNzLmgiIDEKIyAyMiAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9jbGFzcy5oIgpzdHJ1Y3QgZGV2 aWNlOwpzdHJ1Y3QgZndub2RlX2hhbmRsZTsKIyA1NCAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9j bGFzcy5oIgpzdHJ1Y3QgY2xhc3MgewogY29uc3QgY2hhciAqbmFtZTsKIHN0cnVjdCBtb2R1bGUg Km93bmVyOwoKIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipjbGFzc19ncm91cHM7CiBj b25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZGV2X2dyb3VwczsKIHN0cnVjdCBrb2JqZWN0 ICpkZXZfa29iajsKCiBpbnQgKCpkZXZfdWV2ZW50KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBrb2JqX3VldmVudF9lbnYgKmVudik7CiBjaGFyICooKmRldm5vZGUpKHN0cnVjdCBkZXZpY2Ug KmRldiwgdW1vZGVfdCAqbW9kZSk7Cgogdm9pZCAoKmNsYXNzX3JlbGVhc2UpKHN0cnVjdCBjbGFz cyAqY2xhc3MpOwogdm9pZCAoKmRldl9yZWxlYXNlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoKIGlu dCAoKnNodXRkb3duX3ByZSkoc3RydWN0IGRldmljZSAqZGV2KTsKCiBjb25zdCBzdHJ1Y3Qga29i al9uc190eXBlX29wZXJhdGlvbnMgKm5zX3R5cGU7CiBjb25zdCB2b2lkICooKm5hbWVzcGFjZSko c3RydWN0IGRldmljZSAqZGV2KTsKCiB2b2lkICgqZ2V0X293bmVyc2hpcCkoc3RydWN0IGRldmlj ZSAqZGV2LCBrdWlkX3QgKnVpZCwga2dpZF90ICpnaWQpOwoKIGNvbnN0IHN0cnVjdCBkZXZfcG1f b3BzICpwbTsKCiBzdHJ1Y3Qgc3Vic3lzX3ByaXZhdGUgKnA7Cn07CgpzdHJ1Y3QgY2xhc3NfZGV2 X2l0ZXIgewogc3RydWN0IGtsaXN0X2l0ZXIga2k7CiBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUg KnR5cGU7Cn07CgpleHRlcm4gc3RydWN0IGtvYmplY3QgKnN5c2ZzX2Rldl9ibG9ja19rb2JqOwpl eHRlcm4gc3RydWN0IGtvYmplY3QgKnN5c2ZzX2Rldl9jaGFyX2tvYmo7CmV4dGVybiBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9fY2xhc3NfcmVnaXN0ZXIoc3Ry dWN0IGNsYXNzICpjbGFzcywKICAgICAgc3RydWN0IGxvY2tfY2xhc3Nfa2V5ICprZXkpOwpleHRl cm4gdm9pZCBjbGFzc191bnJlZ2lzdGVyKHN0cnVjdCBjbGFzcyAqY2xhc3MpOwojIDk5ICIuL2lu Y2x1ZGUvbGludXgvZGV2aWNlL2NsYXNzLmgiCnN0cnVjdCBjbGFzc19jb21wYXQ7CnN0cnVjdCBj bGFzc19jb21wYXQgKmNsYXNzX2NvbXBhdF9yZWdpc3Rlcihjb25zdCBjaGFyICpuYW1lKTsKdm9p ZCBjbGFzc19jb21wYXRfdW5yZWdpc3RlcihzdHJ1Y3QgY2xhc3NfY29tcGF0ICpjbHMpOwppbnQg Y2xhc3NfY29tcGF0X2NyZWF0ZV9saW5rKHN0cnVjdCBjbGFzc19jb21wYXQgKmNscywgc3RydWN0 IGRldmljZSAqZGV2LAogICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldmljZV9saW5rKTsKdm9pZCBj bGFzc19jb21wYXRfcmVtb3ZlX2xpbmsoc3RydWN0IGNsYXNzX2NvbXBhdCAqY2xzLCBzdHJ1Y3Qg ZGV2aWNlICpkZXYsCiAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldmljZV9saW5rKTsKCmV4dGVy biB2b2lkIGNsYXNzX2Rldl9pdGVyX2luaXQoc3RydWN0IGNsYXNzX2Rldl9pdGVyICppdGVyLAog ICAgc3RydWN0IGNsYXNzICpjbGFzcywKICAgIHN0cnVjdCBkZXZpY2UgKnN0YXJ0LAogICAgY29u c3Qgc3RydWN0IGRldmljZV90eXBlICp0eXBlKTsKZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKmNsYXNz X2Rldl9pdGVyX25leHQoc3RydWN0IGNsYXNzX2Rldl9pdGVyICppdGVyKTsKZXh0ZXJuIHZvaWQg Y2xhc3NfZGV2X2l0ZXJfZXhpdChzdHJ1Y3QgY2xhc3NfZGV2X2l0ZXIgKml0ZXIpOwoKZXh0ZXJu IGludCBjbGFzc19mb3JfZWFjaF9kZXZpY2Uoc3RydWN0IGNsYXNzICpjbGFzcywgc3RydWN0IGRl dmljZSAqc3RhcnQsCiAgICAgdm9pZCAqZGF0YSwKICAgICBpbnQgKCpmbikoc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhKSk7CmV4dGVybiBzdHJ1Y3QgZGV2aWNlICpjbGFzc19maW5kX2Rl dmljZShzdHJ1Y3QgY2xhc3MgKmNsYXNzLAogICAgIHN0cnVjdCBkZXZpY2UgKnN0YXJ0LCBjb25z dCB2b2lkICpkYXRhLAogICAgIGludCAoKm1hdGNoKShzdHJ1Y3QgZGV2aWNlICosIGNvbnN0IHZv aWQgKikpOwoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRldmljZSAqY2xhc3NfZmluZF9kZXZpY2VfYnlfbmFtZShz dHJ1Y3QgY2xhc3MgKmNsYXNzLAogICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKewogcmV0 dXJuIGNsYXNzX2ZpbmRfZGV2aWNlKGNsYXNzLCAoKHZvaWQgKikwKSwgbmFtZSwgZGV2aWNlX21h dGNoX25hbWUpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKY2xhc3NfZmluZF9kZXZpY2VfYnlf b2Zfbm9kZShzdHJ1Y3QgY2xhc3MgKmNsYXNzLCBjb25zdCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5w KQp7CiByZXR1cm4gY2xhc3NfZmluZF9kZXZpY2UoY2xhc3MsICgodm9pZCAqKTApLCBucCwgZGV2 aWNlX21hdGNoX29mX25vZGUpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKY2xhc3NfZmluZF9k ZXZpY2VfYnlfZndub2RlKHN0cnVjdCBjbGFzcyAqY2xhc3MsCiAgICAgICBjb25zdCBzdHJ1Y3Qg Zndub2RlX2hhbmRsZSAqZndub2RlKQp7CiByZXR1cm4gY2xhc3NfZmluZF9kZXZpY2UoY2xhc3Ms ICgodm9pZCAqKTApLCBmd25vZGUsIGRldmljZV9tYXRjaF9md25vZGUpOwp9CgoKCgoKCgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1 Y3QgZGV2aWNlICpjbGFzc19maW5kX2RldmljZV9ieV9kZXZ0KHN0cnVjdCBjbGFzcyAqY2xhc3Ms CiAgICAgICAgICAgICBkZXZfdCBkZXZ0KQp7CiByZXR1cm4gY2xhc3NfZmluZF9kZXZpY2UoY2xh c3MsICgodm9pZCAqKTApLCAmZGV2dCwgZGV2aWNlX21hdGNoX2RldnQpOwp9CgoKc3RydWN0IGFj cGlfZGV2aWNlOwoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKY2xhc3NfZmluZF9kZXZpY2VfYnlfYWNw aV9kZXYoc3RydWN0IGNsYXNzICpjbGFzcywgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2 KQp7CiByZXR1cm4gY2xhc3NfZmluZF9kZXZpY2UoY2xhc3MsICgodm9pZCAqKTApLCBhZGV2LCBk ZXZpY2VfbWF0Y2hfYWNwaV9kZXYpOwp9CiMgMTkxICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2Ns YXNzLmgiCnN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgewogc3RydWN0IGF0dHJpYnV0ZSBhdHRyOwog c3NpemVfdCAoKnNob3cpKHN0cnVjdCBjbGFzcyAqY2xhc3MsIHN0cnVjdCBjbGFzc19hdHRyaWJ1 dGUgKmF0dHIsCiAgIGNoYXIgKmJ1Zik7CiBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBjbGFzcyAq Y2xhc3MsIHN0cnVjdCBjbGFzc19hdHRyaWJ1dGUgKmF0dHIsCiAgIGNvbnN0IGNoYXIgKmJ1Ziwg c2l6ZV90IGNvdW50KTsKfTsKIyAyMDYgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvY2xhc3MuaCIK ZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgY2xhc3Nf Y3JlYXRlX2ZpbGVfbnMoc3RydWN0IGNsYXNzICpjbGFzcywKICAgICAgICAgIGNvbnN0IHN0cnVj dCBjbGFzc19hdHRyaWJ1dGUgKmF0dHIsCiAgICAgICAgICBjb25zdCB2b2lkICpucyk7CmV4dGVy biB2b2lkIGNsYXNzX3JlbW92ZV9maWxlX25zKHN0cnVjdCBjbGFzcyAqY2xhc3MsCiAgICAgY29u c3Qgc3RydWN0IGNsYXNzX2F0dHJpYnV0ZSAqYXR0ciwKICAgICBjb25zdCB2b2lkICpucyk7Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBp bnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGNsYXNzX2NyZWF0ZV9m aWxlKHN0cnVjdCBjbGFzcyAqY2xhc3MsCiAgICAgY29uc3Qgc3RydWN0IGNsYXNzX2F0dHJpYnV0 ZSAqYXR0cikKewogcmV0dXJuIGNsYXNzX2NyZWF0ZV9maWxlX25zKGNsYXNzLCBhdHRyLCAoKHZv aWQgKikwKSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgY2xhc3NfcmVtb3ZlX2ZpbGUoc3RydWN0IGNsYXNzICpjbGFzcywK ICAgICAgICAgY29uc3Qgc3RydWN0IGNsYXNzX2F0dHJpYnV0ZSAqYXR0cikKewogcmV0dXJuIGNs YXNzX3JlbW92ZV9maWxlX25zKGNsYXNzLCBhdHRyLCAoKHZvaWQgKikwKSk7Cn0KCgpzdHJ1Y3Qg Y2xhc3NfYXR0cmlidXRlX3N0cmluZyB7CiBzdHJ1Y3QgY2xhc3NfYXR0cmlidXRlIGF0dHI7CiBj aGFyICpzdHI7Cn07CiMgMjM4ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2NsYXNzLmgiCmV4dGVy biBzc2l6ZV90IHNob3dfY2xhc3NfYXR0cl9zdHJpbmcoc3RydWN0IGNsYXNzICpjbGFzcywgc3Ry dWN0IGNsYXNzX2F0dHJpYnV0ZSAqYXR0ciwKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAq YnVmKTsKCnN0cnVjdCBjbGFzc19pbnRlcmZhY2Ugewogc3RydWN0IGxpc3RfaGVhZCBub2RlOwog c3RydWN0IGNsYXNzICpjbGFzczsKCiBpbnQgKCphZGRfZGV2KSAoc3RydWN0IGRldmljZSAqLCBz dHJ1Y3QgY2xhc3NfaW50ZXJmYWNlICopOwogdm9pZCAoKnJlbW92ZV9kZXYpIChzdHJ1Y3QgZGV2 aWNlICosIHN0cnVjdCBjbGFzc19pbnRlcmZhY2UgKik7Cn07CgpleHRlcm4gaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBjbGFzc19pbnRlcmZhY2VfcmVnaXN0ZXIo c3RydWN0IGNsYXNzX2ludGVyZmFjZSAqKTsKZXh0ZXJuIHZvaWQgY2xhc3NfaW50ZXJmYWNlX3Vu cmVnaXN0ZXIoc3RydWN0IGNsYXNzX2ludGVyZmFjZSAqKTsKCmV4dGVybiBzdHJ1Y3QgY2xhc3Mg KiBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgX19jbGFzc19jcmVhdGUo c3RydWN0IG1vZHVsZSAqb3duZXIsCiAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBz dHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7CmV4dGVybiB2b2lkIGNsYXNzX2Rlc3Ryb3koc3Ry dWN0IGNsYXNzICpjbHMpOwojIDMxICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiIDIKIyAxICIu L2luY2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oIiAxCiMgNDQgIi4vaW5jbHVkZS9saW51eC9k ZXZpY2UvZHJpdmVyLmgiCmVudW0gcHJvYmVfdHlwZSB7CiBQUk9CRV9ERUZBVUxUX1NUUkFURUdZ LAogUFJPQkVfUFJFRkVSX0FTWU5DSFJPTk9VUywKIFBST0JFX0ZPUkNFX1NZTkNIUk9OT1VTLAp9 OwojIDk1ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oIgpzdHJ1Y3QgZGV2aWNlX2Ry aXZlciB7CiBjb25zdCBjaGFyICpuYW1lOwogc3RydWN0IGJ1c190eXBlICpidXM7Cgogc3RydWN0 IG1vZHVsZSAqb3duZXI7CiBjb25zdCBjaGFyICptb2RfbmFtZTsKCiBib29sIHN1cHByZXNzX2Jp bmRfYXR0cnM7CiBlbnVtIHByb2JlX3R5cGUgcHJvYmVfdHlwZTsKCiBjb25zdCBzdHJ1Y3Qgb2Zf ZGV2aWNlX2lkICpvZl9tYXRjaF90YWJsZTsKIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAq YWNwaV9tYXRjaF90YWJsZTsKCiBpbnQgKCpwcm9iZSkgKHN0cnVjdCBkZXZpY2UgKmRldik7CiB2 b2lkICgqc3luY19zdGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCAoKnJlbW92ZSkgKHN0 cnVjdCBkZXZpY2UgKmRldik7CiB2b2lkICgqc2h1dGRvd24pIChzdHJ1Y3QgZGV2aWNlICpkZXYp OwogaW50ICgqc3VzcGVuZCkgKHN0cnVjdCBkZXZpY2UgKmRldiwgcG1fbWVzc2FnZV90IHN0YXRl KTsKIGludCAoKnJlc3VtZSkgKHN0cnVjdCBkZXZpY2UgKmRldik7CiBjb25zdCBzdHJ1Y3QgYXR0 cmlidXRlX2dyb3VwICoqZ3JvdXBzOwogY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmRl dl9ncm91cHM7CgogY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBtOwogdm9pZCAoKmNvcmVkdW1w KSAoc3RydWN0IGRldmljZSAqZGV2KTsKCiBzdHJ1Y3QgZHJpdmVyX3ByaXZhdGUgKnA7Cn07CgoK ZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZHJpdmVy X3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpOwpleHRlcm4gdm9pZCBkcml2ZXJf dW5yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KTsKCmV4dGVybiBzdHJ1Y3QgZGV2 aWNlX2RyaXZlciAqZHJpdmVyX2ZpbmQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgc3RydWN0IGJ1 c190eXBlICpidXMpOwpleHRlcm4gaW50IGRyaXZlcl9wcm9iZV9kb25lKHZvaWQpOwpleHRlcm4g dm9pZCB3YWl0X2Zvcl9kZXZpY2VfcHJvYmUodm9pZCk7CgoKCnN0cnVjdCBkcml2ZXJfYXR0cmli dXRlIHsKIHN0cnVjdCBhdHRyaWJ1dGUgYXR0cjsKIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2 aWNlX2RyaXZlciAqZHJpdmVyLCBjaGFyICpidWYpOwogc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3Qg ZGV2aWNlX2RyaXZlciAqZHJpdmVyLCBjb25zdCBjaGFyICpidWYsCiAgICBzaXplX3QgY291bnQp Owp9OwojIDE0OCAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS9kcml2ZXIuaCIKZXh0ZXJuIGludCBf X2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZHJpdmVyX2NyZWF0ZV9maWxl KHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcml2ZXIsCiAgICAgY29uc3Qgc3RydWN0IGRyaXZlcl9h dHRyaWJ1dGUgKmF0dHIpOwpleHRlcm4gdm9pZCBkcml2ZXJfcmVtb3ZlX2ZpbGUoc3RydWN0IGRl dmljZV9kcml2ZXIgKmRyaXZlciwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcml2ZXJfYXR0cmli dXRlICphdHRyKTsKCmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1 bHRfXykpIGRyaXZlcl9mb3JfZWFjaF9kZXZpY2Uoc3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwK ICAgICAgICAgICAgc3RydWN0IGRldmljZSAqc3RhcnQsCiAgICAgICAgICAgIHZvaWQgKmRhdGEs CiAgICAgICAgICAgIGludCAoKmZuKShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICAgICAgdm9pZCAq KSk7CnN0cnVjdCBkZXZpY2UgKmRyaXZlcl9maW5kX2RldmljZShzdHJ1Y3QgZGV2aWNlX2RyaXZl ciAqZHJ2LAogICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFydCwgY29uc3Qgdm9pZCAqZGF0YSwKICAg ICAgaW50ICgqbWF0Y2gpKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgdm9pZCAqZGF0YSkpOwoK CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRfZGV2aWNlX2J5X25hbWUoc3RydWN0IGRl dmljZV9kcml2ZXIgKmRydiwKICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCnsKIHJldHVybiBkcml2 ZXJfZmluZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwgbmFtZSwgZGV2aWNlX21hdGNoX25hbWUp Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKZHJpdmVyX2ZpbmRfZGV2aWNlX2J5X29mX25vZGUo c3RydWN0IGRldmljZV9kcml2ZXIgKmRydiwKICAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9u b2RlICpucCkKewogcmV0dXJuIGRyaXZlcl9maW5kX2RldmljZShkcnYsICgodm9pZCAqKTApLCBu cCwgZGV2aWNlX21hdGNoX29mX25vZGUpOwp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZGV2aWNlICoKZHJpdmVy X2ZpbmRfZGV2aWNlX2J5X2Z3bm9kZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2LAogICAgICAg IGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpCnsKIHJldHVybiBkcml2ZXJfZmlu ZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwgZndub2RlLCBkZXZpY2VfbWF0Y2hfZndub2RlKTsK fQoKCgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRfZGV2aWNlX2J5X2RldnQoc3RydWN0 IGRldmljZV9kcml2ZXIgKmRydiwKICAgICAgIGRldl90IGRldnQpCnsKIHJldHVybiBkcml2ZXJf ZmluZF9kZXZpY2UoZHJ2LCAoKHZvaWQgKikwKSwgJmRldnQsIGRldmljZV9tYXRjaF9kZXZ0KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGRldmljZSAqZHJpdmVyX2ZpbmRfbmV4dF9kZXZpY2Uoc3RydWN0IGRldmljZV9k cml2ZXIgKmRydiwKICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpzdGFydCkKewogcmV0dXJuIGRy aXZlcl9maW5kX2RldmljZShkcnYsIHN0YXJ0LCAoKHZvaWQgKikwKSwgZGV2aWNlX21hdGNoX2Fu eSk7Cn0KIyAyMjUgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UvZHJpdmVyLmgiCnN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkZXZp Y2UgKgpkcml2ZXJfZmluZF9kZXZpY2VfYnlfYWNwaV9kZXYoc3RydWN0IGRldmljZV9kcml2ZXIg KmRydiwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWRldikKewogcmV0dXJu IGRyaXZlcl9maW5kX2RldmljZShkcnYsICgodm9pZCAqKTApLCBhZGV2LCBkZXZpY2VfbWF0Y2hf YWNwaV9kZXYpOwp9CiMgMjM5ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlL2RyaXZlci5oIgp2b2lk IGRyaXZlcl9kZWZlcnJlZF9wcm9iZV9hZGQoc3RydWN0IGRldmljZSAqZGV2KTsKaW50IGRyaXZl cl9kZWZlcnJlZF9wcm9iZV9jaGVja19zdGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwppbnQgZHJp dmVyX2RlZmVycmVkX3Byb2JlX2NoZWNrX3N0YXRlX2NvbnRpbnVlKHN0cnVjdCBkZXZpY2UgKmRl dik7CnZvaWQgZHJpdmVyX2luaXQodm9pZCk7CiMgMzIgIi4vaW5jbHVkZS9saW51eC9kZXZpY2Uu aCIgMgojIDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZGV2aWNlLmgiIDEKCgoKCnN0cnVjdCBk ZXZfYXJjaGRhdGEgewoKIHZvaWQgKmlvbW11OwoKfTsKCnN0cnVjdCBwZGV2X2FyY2hkYXRhIHsK fTsKIyAzMyAiLi9pbmNsdWRlL2xpbnV4L2RldmljZS5oIiAyCgpzdHJ1Y3QgZGV2aWNlOwpzdHJ1 Y3QgZGV2aWNlX3ByaXZhdGU7CnN0cnVjdCBkZXZpY2VfZHJpdmVyOwpzdHJ1Y3QgZHJpdmVyX3By aXZhdGU7CnN0cnVjdCBtb2R1bGU7CnN0cnVjdCBjbGFzczsKc3RydWN0IHN1YnN5c19wcml2YXRl OwpzdHJ1Y3QgZGV2aWNlX25vZGU7CnN0cnVjdCBmd25vZGVfaGFuZGxlOwpzdHJ1Y3QgaW9tbXVf b3BzOwpzdHJ1Y3QgaW9tbXVfZ3JvdXA7CnN0cnVjdCBpb21tdV9md3NwZWM7CnN0cnVjdCBkZXZf cGluX2luZm87CnN0cnVjdCBpb21tdV9wYXJhbTsKIyA2MiAiLi9pbmNsdWRlL2xpbnV4L2Rldmlj ZS5oIgpzdHJ1Y3Qgc3Vic3lzX2ludGVyZmFjZSB7CiBjb25zdCBjaGFyICpuYW1lOwogc3RydWN0 IGJ1c190eXBlICpzdWJzeXM7CiBzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7CiBpbnQgKCphZGRfZGV2 KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzdWJzeXNfaW50ZXJmYWNlICpzaWYpOwogdm9p ZCAoKnJlbW92ZV9kZXYpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHN1YnN5c19pbnRlcmZh Y2UgKnNpZik7Cn07CgppbnQgc3Vic3lzX2ludGVyZmFjZV9yZWdpc3RlcihzdHJ1Y3Qgc3Vic3lz X2ludGVyZmFjZSAqc2lmKTsKdm9pZCBzdWJzeXNfaW50ZXJmYWNlX3VucmVnaXN0ZXIoc3RydWN0 IHN1YnN5c19pbnRlcmZhY2UgKnNpZik7CgppbnQgc3Vic3lzX3N5c3RlbV9yZWdpc3RlcihzdHJ1 Y3QgYnVzX3R5cGUgKnN1YnN5cywKICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq Kmdyb3Vwcyk7CmludCBzdWJzeXNfdmlydHVhbF9yZWdpc3RlcihzdHJ1Y3QgYnVzX3R5cGUgKnN1 YnN5cywKICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOwojIDg3 ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCnN0cnVjdCBkZXZpY2VfdHlwZSB7CiBjb25zdCBj aGFyICpuYW1lOwogY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3VwczsKIGludCAo KnVldmVudCkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYp OwogY2hhciAqKCpkZXZub2RlKShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVtb2RlX3QgKm1vZGUsCiAg ICBrdWlkX3QgKnVpZCwga2dpZF90ICpnaWQpOwogdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBkZXZp Y2UgKmRldik7CgogY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgKnBtOwp9OwoKCnN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIHsKIHN0cnVjdCBhdHRyaWJ1dGUgYXR0cjsKIHNzaXplX3QgKCpzaG93KShz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAogICBjaGFy ICpidWYpOwogc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAogICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpOwp9 OwoKc3RydWN0IGRldl9leHRfYXR0cmlidXRlIHsKIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGF0 dHI7CiB2b2lkICp2YXI7Cn07Cgpzc2l6ZV90IGRldmljZV9zaG93X3Vsb25nKHN0cnVjdCBkZXZp Y2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAgICAgY2hhciAqYnVmKTsK c3NpemVfdCBkZXZpY2Vfc3RvcmVfdWxvbmcoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwKICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQp Owpzc2l6ZV90IGRldmljZV9zaG93X2ludChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAogICBjaGFyICpidWYpOwpzc2l6ZV90IGRldmljZV9zdG9yZV9p bnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKICAg IGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKc3NpemVfdCBkZXZpY2Vfc2hvd19ib29s KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAgIGNo YXIgKmJ1Zik7CnNzaXplX3QgZGV2aWNlX3N0b3JlX2Jvb2woc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90 IGNvdW50KTsKIyAxNDkgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKZXh0ZXJuIGludCBkZXZp Y2VfY3JlYXRlX2ZpbGUoc3RydWN0IGRldmljZSAqZGV2aWNlLAogICAgICAgICBjb25zdCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZW50cnkpOwpleHRlcm4gdm9pZCBkZXZpY2VfcmVtb3ZlX2Zp bGUoc3RydWN0IGRldmljZSAqZGV2LAogICAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIpOwpleHRlcm4gYm9vbCBkZXZpY2VfcmVtb3ZlX2ZpbGVfc2VsZihzdHJ1Y3Qg ZGV2aWNlICpkZXYsCiAgICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIp OwpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZp Y2VfY3JlYXRlX2Jpbl9maWxlKHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICBjb25zdCBzdHJ1Y3Qg YmluX2F0dHJpYnV0ZSAqYXR0cik7CmV4dGVybiB2b2lkIGRldmljZV9yZW1vdmVfYmluX2ZpbGUo c3RydWN0IGRldmljZSAqZGV2LAogICAgICAgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgKmF0 dHIpOwoKCnR5cGVkZWYgdm9pZCAoKmRyX3JlbGVhc2VfdCkoc3RydWN0IGRldmljZSAqZGV2LCB2 b2lkICpyZXMpOwp0eXBlZGVmIGludCAoKmRyX21hdGNoX3QpKHN0cnVjdCBkZXZpY2UgKmRldiwg dm9pZCAqcmVzLCB2b2lkICptYXRjaF9kYXRhKTsKIyAxNzIgIi4vaW5jbHVkZS9saW51eC9kZXZp Y2UuaCIKZXh0ZXJuIHZvaWQgKmRldnJlc19hbGxvY19ub2RlKGRyX3JlbGVhc2VfdCByZWxlYXNl LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwLAogICAgICAgICAgaW50IG5pZCkgX19hdHRyaWJ1dGVf XygoX19tYWxsb2NfXykpOwpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSB2b2lkICpkZXZyZXNfYWxsb2MoZHJfcmVsZWFzZV90IHJlbGVhc2Us IHNpemVfdCBzaXplLCBnZnBfdCBnZnApCnsKIHJldHVybiBkZXZyZXNfYWxsb2Nfbm9kZShyZWxl YXNlLCBzaXplLCBnZnAsICgtMSkpOwp9CgoKZXh0ZXJuIHZvaWQgZGV2cmVzX2Zvcl9lYWNoX3Jl cyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGRyX3JlbGVhc2VfdCByZWxlYXNlLAogICAgZHJfbWF0Y2hf dCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSwKICAgIHZvaWQgKCpmbikoc3RydWN0IGRldmljZSAq LCB2b2lkICosIHZvaWQgKiksCiAgICB2b2lkICpkYXRhKTsKZXh0ZXJuIHZvaWQgZGV2cmVzX2Zy ZWUodm9pZCAqcmVzKTsKZXh0ZXJuIHZvaWQgZGV2cmVzX2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHZvaWQgKnJlcyk7CmV4dGVybiB2b2lkICpkZXZyZXNfZmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IGRyX3JlbGVhc2VfdCByZWxlYXNlLAogICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hf ZGF0YSk7CmV4dGVybiB2b2lkICpkZXZyZXNfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAq bmV3X3JlcywKICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7CmV4dGVybiB2 b2lkICpkZXZyZXNfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVh c2UsCiAgICAgIGRyX21hdGNoX3QgbWF0Y2gsIHZvaWQgKm1hdGNoX2RhdGEpOwpleHRlcm4gaW50 IGRldnJlc19kZXN0cm95KHN0cnVjdCBkZXZpY2UgKmRldiwgZHJfcmVsZWFzZV90IHJlbGVhc2Us CiAgICAgZHJfbWF0Y2hfdCBtYXRjaCwgdm9pZCAqbWF0Y2hfZGF0YSk7CmV4dGVybiBpbnQgZGV2 cmVzX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2LCBkcl9yZWxlYXNlX3QgcmVsZWFzZSwKICAg ICBkcl9tYXRjaF90IG1hdGNoLCB2b2lkICptYXRjaF9kYXRhKTsKCgpleHRlcm4gdm9pZCAqIF9f YXR0cmlidXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZyZXNfb3Blbl9ncm91cChz dHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmlkLAogICAgICAgICAgZ2ZwX3QgZ2ZwKTsKZXh0ZXJu IHZvaWQgZGV2cmVzX2Nsb3NlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqaWQpOwpl eHRlcm4gdm9pZCBkZXZyZXNfcmVtb3ZlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAq aWQpOwpleHRlcm4gaW50IGRldnJlc19yZWxlYXNlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwg dm9pZCAqaWQpOwoKCmV4dGVybiB2b2lkICpkZXZtX2ttYWxsb2Moc3RydWN0IGRldmljZSAqZGV2 LCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CmV4 dGVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgMCkpKQpjaGFyICpkZXZt X2t2YXNwcmludGYoc3RydWN0IGRldmljZSAqZGV2LCBnZnBfdCBnZnAsIGNvbnN0IGNoYXIgKmZt dCwKICAgICAgICB2YV9saXN0IGFwKSBfX2F0dHJpYnV0ZV9fKChfX21hbGxvY19fKSk7CmV4dGVy biBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkpKQpjaGFyICpkZXZtX2th c3ByaW50ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIGdmcF90IGdmcCwgY29uc3QgY2hhciAqZm10LCAu Li4pIF9fYXR0cmlidXRlX18oKF9fbWFsbG9jX18pKTsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCAqZGV2bV9remFsbG9jKHN0cnVj dCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGdmcF90IGdmcCkKewogcmV0dXJuIGRldm1fa21h bGxvYyhkZXYsIHNpemUsIGdmcCB8ICgoIGdmcF90KTB4MTAwdSkpOwp9CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgKmRldm1fa21h bGxvY19hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICAgICAgICAgc2l6ZV90IG4sIHNpemVf dCBzaXplLCBnZnBfdCBmbGFncykKewogc2l6ZV90IGJ5dGVzOwoKIGlmIChfX2J1aWx0aW5fZXhw ZWN0KCEhKCh7IHR5cGVvZihuKSBfX2EgPSAobik7IHR5cGVvZihzaXplKSBfX2IgPSAoc2l6ZSk7 IHR5cGVvZigmYnl0ZXMpIF9fZCA9ICgmYnl0ZXMpOyAodm9pZCkgKCZfX2EgPT0gJl9fYik7ICh2 b2lkKSAoJl9fYSA9PSBfX2QpOyBfX2J1aWx0aW5fbXVsX292ZXJmbG93KF9fYSwgX19iLCBfX2Qp OyB9KSksIDApKQogIHJldHVybiAoKHZvaWQgKikwKTsKCiByZXR1cm4gZGV2bV9rbWFsbG9jKGRl diwgYnl0ZXMsIGZsYWdzKTsKfQpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkICpkZXZtX2tjYWxsb2Moc3RydWN0IGRldmljZSAqZGV2 LAogICAgIHNpemVfdCBuLCBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MpCnsKIHJldHVybiBkZXZt X2ttYWxsb2NfYXJyYXkoZGV2LCBuLCBzaXplLCBmbGFncyB8ICgoIGdmcF90KTB4MTAwdSkpOwp9 CmV4dGVybiB2b2lkIGRldm1fa2ZyZWUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpw KTsKZXh0ZXJuIGNoYXIgKmRldm1fa3N0cmR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNo YXIgKnMsIGdmcF90IGdmcCkgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpOwpleHRlcm4gY29u c3QgY2hhciAqZGV2bV9rc3RyZHVwX2NvbnN0KHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICAgICAg IGNvbnN0IGNoYXIgKnMsIGdmcF90IGdmcCk7CmV4dGVybiB2b2lkICpkZXZtX2ttZW1kdXAoc3Ry dWN0IGRldmljZSAqZGV2LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBsZW4sCiAgICAgZ2ZwX3Qg Z2ZwKTsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGRldm1fZ2V0X2ZyZWVfcGFnZXMoc3RydWN0IGRl dmljZSAqZGV2LAogICAgICBnZnBfdCBnZnBfbWFzaywgdW5zaWduZWQgaW50IG9yZGVyKTsKZXh0 ZXJuIHZvaWQgZGV2bV9mcmVlX3BhZ2VzKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgbG9u ZyBhZGRyKTsKCnZvaWQgKmRldm1faW9yZW1hcF9yZXNvdXJjZShzdHJ1Y3QgZGV2aWNlICpkZXYs CiAgICAgICAgY29uc3Qgc3RydWN0IHJlc291cmNlICpyZXMpOwp2b2lkICpkZXZtX2lvcmVtYXBf cmVzb3VyY2Vfd2Moc3RydWN0IGRldmljZSAqZGV2LAogICAgICAgICAgIGNvbnN0IHN0cnVjdCBy ZXNvdXJjZSAqcmVzKTsKCnZvaWQgKmRldm1fb2ZfaW9tYXAoc3RydWN0IGRldmljZSAqZGV2LAog ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpub2RlLCBpbnQgaW5kZXgsCiAgICAgICByZXNvdXJj ZV9zaXplX3QgKnNpemUpOwoKCmludCBkZXZtX2FkZF9hY3Rpb24oc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkICgqYWN0aW9uKSh2b2lkICopLCB2b2lkICpkYXRhKTsKdm9pZCBkZXZtX3JlbW92ZV9h Y3Rpb24oc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICgqYWN0aW9uKSh2b2lkICopLCB2b2lkICpk YXRhKTsKdm9pZCBkZXZtX3JlbGVhc2VfYWN0aW9uKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAo KmFjdGlvbikodm9pZCAqKSwgdm9pZCAqZGF0YSk7CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZGV2bV9hZGRfYWN0aW9uX29yX3Jl c2V0KHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICAgICB2b2lkICgqYWN0aW9uKSh2b2lkICopLCB2 b2lkICpkYXRhKQp7CiBpbnQgcmV0OwoKIHJldCA9IGRldm1fYWRkX2FjdGlvbihkZXYsIGFjdGlv biwgZGF0YSk7CiBpZiAocmV0KQogIGFjdGlvbihkYXRhKTsKCiByZXR1cm4gcmV0Owp9CiMgMjgy ICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCnZvaWQgKl9fZGV2bV9hbGxvY19wZXJjcHUoc3Ry dWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwKICAgICAgIHNpemVfdCBhbGlnbik7CnZvaWQg ZGV2bV9mcmVlX3BlcmNwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnBkYXRhKTsKCnN0cnVj dCBkZXZpY2VfZG1hX3BhcmFtZXRlcnMgewoKCgoKIHVuc2lnbmVkIGludCBtYXhfc2VnbWVudF9z aXplOwogdW5zaWduZWQgbG9uZyBzZWdtZW50X2JvdW5kYXJ5X21hc2s7Cn07CiMgMzA2ICIuL2lu Y2x1ZGUvbGludXgvZGV2aWNlLmgiCnN0cnVjdCBkZXZpY2VfY29ubmVjdGlvbiB7CiBzdHJ1Y3Qg Zndub2RlX2hhbmRsZSAqZndub2RlOwogY29uc3QgY2hhciAqZW5kcG9pbnRbMl07CiBjb25zdCBj aGFyICppZDsKIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKfTsKCnR5cGVkZWYgdm9pZCAqKCpkZXZj b25fbWF0Y2hfZm5fdCkoc3RydWN0IGRldmljZV9jb25uZWN0aW9uICpjb24sIGludCBlcCwKICAg ICAgIHZvaWQgKmRhdGEpOwoKdm9pZCAqZndub2RlX2Nvbm5lY3Rpb25fZmluZF9tYXRjaChzdHJ1 Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLAogICAgICAgY29uc3QgY2hhciAqY29uX2lkLCB2b2lk ICpkYXRhLAogICAgICAgZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gpOwp2b2lkICpkZXZpY2VfY29u bmVjdGlvbl9maW5kX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqY29uX2lk LAogICAgICAgdm9pZCAqZGF0YSwgZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gpOwoKc3RydWN0IGRl dmljZSAqZGV2aWNlX2Nvbm5lY3Rpb25fZmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNo YXIgKmNvbl9pZCk7Cgp2b2lkIGRldmljZV9jb25uZWN0aW9uX2FkZChzdHJ1Y3QgZGV2aWNlX2Nv bm5lY3Rpb24gKmNvbik7CnZvaWQgZGV2aWNlX2Nvbm5lY3Rpb25fcmVtb3ZlKHN0cnVjdCBkZXZp Y2VfY29ubmVjdGlvbiAqY29uKTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV9jb25uZWN0aW9uc19hZGQoc3Ry dWN0IGRldmljZV9jb25uZWN0aW9uICpjb25zKQp7CiBzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rpb24g KmM7CgogZm9yIChjID0gY29uczsgYy0+ZW5kcG9pbnRbMF07IGMrKykKICBkZXZpY2VfY29ubmVj dGlvbl9hZGQoYyk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV9jb25uZWN0aW9uc19yZW1vdmUoc3RydWN0 IGRldmljZV9jb25uZWN0aW9uICpjb25zKQp7CiBzdHJ1Y3QgZGV2aWNlX2Nvbm5lY3Rpb24gKmM7 CgogZm9yIChjID0gY29uczsgYy0+ZW5kcG9pbnRbMF07IGMrKykKICBkZXZpY2VfY29ubmVjdGlv bl9yZW1vdmUoYyk7Cn0KIyAzNjAgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKZW51bSBkZXZp Y2VfbGlua19zdGF0ZSB7CiBETF9TVEFURV9OT05FID0gLTEsCiBETF9TVEFURV9ET1JNQU5UID0g MCwKIERMX1NUQVRFX0FWQUlMQUJMRSwKIERMX1NUQVRFX0NPTlNVTUVSX1BST0JFLAogRExfU1RB VEVfQUNUSVZFLAogRExfU1RBVEVfU1VQUExJRVJfVU5CSU5ELAp9OwojIDQwMyAiLi9pbmNsdWRl L2xpbnV4L2RldmljZS5oIgpzdHJ1Y3QgZGV2aWNlX2xpbmsgewogc3RydWN0IGRldmljZSAqc3Vw cGxpZXI7CiBzdHJ1Y3QgbGlzdF9oZWFkIHNfbm9kZTsKIHN0cnVjdCBkZXZpY2UgKmNvbnN1bWVy Owogc3RydWN0IGxpc3RfaGVhZCBjX25vZGU7CiBlbnVtIGRldmljZV9saW5rX3N0YXRlIHN0YXR1 czsKIHUzMiBmbGFnczsKIHJlZmNvdW50X3QgcnBtX2FjdGl2ZTsKIHN0cnVjdCBrcmVmIGtyZWY7 Cgogc3RydWN0IGNhbGxiYWNrX2hlYWQgY2FsbGJhY2tfaGVhZDsKCiBib29sIHN1cHBsaWVyX3By ZWFjdGl2YXRlZDsKfTsKIyA0MjUgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKZW51bSBkbF9k ZXZfc3RhdGUgewogRExfREVWX05PX0RSSVZFUiA9IDAsCiBETF9ERVZfUFJPQklORywKIERMX0RF Vl9EUklWRVJfQk9VTkQsCiBETF9ERVZfVU5CSU5ESU5HLAp9OwojIDQ0MiAiLi9pbmNsdWRlL2xp bnV4L2RldmljZS5oIgpzdHJ1Y3QgZGV2X2xpbmtzX2luZm8gewogc3RydWN0IGxpc3RfaGVhZCBz dXBwbGllcnM7CiBzdHJ1Y3QgbGlzdF9oZWFkIGNvbnN1bWVyczsKIHN0cnVjdCBsaXN0X2hlYWQg bmVlZHNfc3VwcGxpZXJzOwogc3RydWN0IGxpc3RfaGVhZCBkZWZlcl9zeW5jOwogYm9vbCBuZWVk X2Zvcl9wcm9iZTsKIGVudW0gZGxfZGV2X3N0YXRlIHN0YXR1czsKfTsKIyA1MzcgIi4vaW5jbHVk ZS9saW51eC9kZXZpY2UuaCIKc3RydWN0IGRldmljZSB7CiBzdHJ1Y3Qga29iamVjdCBrb2JqOwog c3RydWN0IGRldmljZSAqcGFyZW50OwoKIHN0cnVjdCBkZXZpY2VfcHJpdmF0ZSAqcDsKCiBjb25z dCBjaGFyICppbml0X25hbWU7CiBjb25zdCBzdHJ1Y3QgZGV2aWNlX3R5cGUgKnR5cGU7Cgogc3Ry dWN0IGJ1c190eXBlICpidXM7CiBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyOwoKIHZvaWQg KnBsYXRmb3JtX2RhdGE7Cgogdm9pZCAqZHJpdmVyX2RhdGE7CgoKCgogc3RydWN0IG11dGV4IG11 dGV4OwoKCgogc3RydWN0IGRldl9saW5rc19pbmZvIGxpbmtzOwogc3RydWN0IGRldl9wbV9pbmZv IHBvd2VyOwogc3RydWN0IGRldl9wbV9kb21haW4gKnBtX2RvbWFpbjsKCgogc3RydWN0IGlycV9k b21haW4gKm1zaV9kb21haW47CgoKIHN0cnVjdCBkZXZfcGluX2luZm8gKnBpbnM7CgoKIHN0cnVj dCBsaXN0X2hlYWQgbXNpX2xpc3Q7CgoKIGNvbnN0IHN0cnVjdCBkbWFfbWFwX29wcyAqZG1hX29w czsKIHU2NCAqZG1hX21hc2s7CiB1NjQgY29oZXJlbnRfZG1hX21hc2s7CgoKCgogdTY0IGJ1c19k bWFfbGltaXQ7CiB1bnNpZ25lZCBsb25nIGRtYV9wZm5fb2Zmc2V0OwoKIHN0cnVjdCBkZXZpY2Vf ZG1hX3BhcmFtZXRlcnMgKmRtYV9wYXJtczsKCiBzdHJ1Y3QgbGlzdF9oZWFkIGRtYV9wb29sczsK IyA1OTcgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIKIHN0cnVjdCBkZXZfYXJjaGRhdGEgYXJj aGRhdGE7Cgogc3RydWN0IGRldmljZV9ub2RlICpvZl9ub2RlOwogc3RydWN0IGZ3bm9kZV9oYW5k bGUgKmZ3bm9kZTsKCgoKCiBkZXZfdCBkZXZ0OwogdTMyIGlkOwoKIHNwaW5sb2NrX3QgZGV2cmVz X2xvY2s7CiBzdHJ1Y3QgbGlzdF9oZWFkIGRldnJlc19oZWFkOwoKIHN0cnVjdCBjbGFzcyAqY2xh c3M7CiBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3JvdXBzOwoKIHZvaWQgKCpyZWxl YXNlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogc3RydWN0IGlvbW11X2dyb3VwICppb21tdV9ncm91 cDsKIHN0cnVjdCBpb21tdV9md3NwZWMgKmlvbW11X2Z3c3BlYzsKIHN0cnVjdCBpb21tdV9wYXJh bSAqaW9tbXVfcGFyYW07CgogYm9vbCBvZmZsaW5lX2Rpc2FibGVkOjE7CiBib29sIG9mZmxpbmU6 MTsKIGJvb2wgb2Zfbm9kZV9yZXVzZWQ6MTsKIGJvb2wgc3RhdGVfc3luY2VkOjE7CgoKCgoKfTsK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IHN0cnVjdCBkZXZpY2UgKmtvYmpfdG9fZGV2KHN0cnVjdCBrb2JqZWN0ICprb2JqKQp7CiByZXR1 cm4gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikoa29iaik7IGRvIHsgZXh0ZXJuIHZvaWQgX19j b21waWxldGltZV9hc3NlcnRfNjMyKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9p bnRlciB0eXBlIG1pc21hdGNoIGluIGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWls dGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKihrb2JqKSksIHR5cGVvZigoKHN0cnVjdCBk ZXZpY2UgKikwKS0+a29iaikpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv ZigqKGtvYmopKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF82MzIoKTsg fSB3aGlsZSAoMCk7ICgoc3RydWN0IGRldmljZSAqKShfX21wdHIgLSBfX2J1aWx0aW5fb2Zmc2V0 b2Yoc3RydWN0IGRldmljZSwga29iaikpKTsgfSk7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfaW9tbXVf bWFwcGVkKHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJuIChkZXYtPmlvbW11X2dyb3VwICE9 ICgodm9pZCAqKTApKTsKfQoKCiMgMSAiLi9pbmNsdWRlL2xpbnV4L3BtX3dha2V1cC5oIiAxCiMg MTggIi4vaW5jbHVkZS9saW51eC9wbV93YWtldXAuaCIKc3RydWN0IHdha2VfaXJxOwojIDQzICIu L2luY2x1ZGUvbGludXgvcG1fd2FrZXVwLmgiCnN0cnVjdCB3YWtldXBfc291cmNlIHsKIGNvbnN0 IGNoYXIgKm5hbWU7CiBpbnQgaWQ7CiBzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5Owogc3BpbmxvY2tf dCBsb2NrOwogc3RydWN0IHdha2VfaXJxICp3YWtlaXJxOwogc3RydWN0IHRpbWVyX2xpc3QgdGlt ZXI7CiB1bnNpZ25lZCBsb25nIHRpbWVyX2V4cGlyZXM7CiBrdGltZV90IHRvdGFsX3RpbWU7CiBr dGltZV90IG1heF90aW1lOwoga3RpbWVfdCBsYXN0X3RpbWU7CiBrdGltZV90IHN0YXJ0X3ByZXZl bnRfdGltZTsKIGt0aW1lX3QgcHJldmVudF9zbGVlcF90aW1lOwogdW5zaWduZWQgbG9uZyBldmVu dF9jb3VudDsKIHVuc2lnbmVkIGxvbmcgYWN0aXZlX2NvdW50OwogdW5zaWduZWQgbG9uZyByZWxh eF9jb3VudDsKIHVuc2lnbmVkIGxvbmcgZXhwaXJlX2NvdW50OwogdW5zaWduZWQgbG9uZyB3YWtl dXBfY291bnQ7CiBzdHJ1Y3QgZGV2aWNlICpkZXY7CiBib29sIGFjdGl2ZToxOwogYm9vbCBhdXRv c2xlZXBfZW5hYmxlZDoxOwp9OwojIDc3ICIuL2luY2x1ZGUvbGludXgvcG1fd2FrZXVwLmgiCnN0 YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9f KChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJv b2wgZGV2aWNlX2Nhbl93YWtldXAoc3RydWN0IGRldmljZSAqZGV2KQp7CiByZXR1cm4gZGV2LT5w b3dlci5jYW5fd2FrZXVwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRldmljZV9tYXlfd2FrZXVwKHN0cnVjdCBkZXZpY2Ug KmRldikKewogcmV0dXJuIGRldi0+cG93ZXIuY2FuX3dha2V1cCAmJiAhIWRldi0+cG93ZXIud2Fr ZXVwOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSB2b2lkIGRldmljZV9zZXRfd2FrZXVwX3BhdGgoc3RydWN0IGRldmljZSAqZGV2KQp7 CiBkZXYtPnBvd2VyLndha2V1cF9wYXRoID0gdHJ1ZTsKfQoKCmV4dGVybiBzdHJ1Y3Qgd2FrZXVw X3NvdXJjZSAqd2FrZXVwX3NvdXJjZV9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiB2 b2lkIHdha2V1cF9zb3VyY2VfZGVzdHJveShzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MpOwpleHRl cm4gdm9pZCB3YWtldXBfc291cmNlX2FkZChzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MpOwpleHRl cm4gdm9pZCB3YWtldXBfc291cmNlX3JlbW92ZShzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MpOwpl eHRlcm4gc3RydWN0IHdha2V1cF9zb3VyY2UgKndha2V1cF9zb3VyY2VfcmVnaXN0ZXIoc3RydWN0 IGRldmljZSAqZGV2LAogICAgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CmV4dGVybiB2b2lkIHdh a2V1cF9zb3VyY2VfdW5yZWdpc3RlcihzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MpOwpleHRlcm4g aW50IHdha2V1cF9zb3VyY2VzX3JlYWRfbG9jayh2b2lkKTsKZXh0ZXJuIHZvaWQgd2FrZXVwX3Nv dXJjZXNfcmVhZF91bmxvY2soaW50IGlkeCk7CmV4dGVybiBzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAq d2FrZXVwX3NvdXJjZXNfd2Fsa19zdGFydCh2b2lkKTsKZXh0ZXJuIHN0cnVjdCB3YWtldXBfc291 cmNlICp3YWtldXBfc291cmNlc193YWxrX25leHQoc3RydWN0IHdha2V1cF9zb3VyY2UgKndzKTsK ZXh0ZXJuIGludCBkZXZpY2Vfd2FrZXVwX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRl cm4gaW50IGRldmljZV93YWtldXBfZGlzYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4g dm9pZCBkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKHN0cnVjdCBkZXZpY2UgKmRldiwgYm9vbCBj YXBhYmxlKTsKZXh0ZXJuIGludCBkZXZpY2VfaW5pdF93YWtldXAoc3RydWN0IGRldmljZSAqZGV2 LCBib29sIHZhbCk7CmV4dGVybiBpbnQgZGV2aWNlX3NldF93YWtldXBfZW5hYmxlKHN0cnVjdCBk ZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpOwpleHRlcm4gdm9pZCBfX3BtX3N0YXlfYXdha2Uoc3Ry dWN0IHdha2V1cF9zb3VyY2UgKndzKTsKZXh0ZXJuIHZvaWQgcG1fc3RheV9hd2FrZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOwpleHRlcm4gdm9pZCBfX3BtX3JlbGF4KHN0cnVjdCB3YWtldXBfc291cmNl ICp3cyk7CmV4dGVybiB2b2lkIHBtX3JlbGF4KHN0cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiB2 b2lkIHBtX3dha2V1cF93c19ldmVudChzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSAqd3MsIHVuc2lnbmVk IGludCBtc2VjLCBib29sIGhhcmQpOwpleHRlcm4gdm9pZCBwbV93YWtldXBfZGV2X2V2ZW50KHN0 cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG1zZWMsIGJvb2wgaGFyZCk7CiMgMTk1ICIu L2luY2x1ZGUvbGludXgvcG1fd2FrZXVwLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgX19wbV93YWtldXBfZXZlbnQoc3RydWN0 IHdha2V1cF9zb3VyY2UgKndzLCB1bnNpZ25lZCBpbnQgbXNlYykKewogcmV0dXJuIHBtX3dha2V1 cF93c19ldmVudCh3cywgbXNlYywgZmFsc2UpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIHBtX3dha2V1cF9ldmVudChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBtc2VjKQp7CiByZXR1cm4gcG1fd2FrZXVwX2Rl dl9ldmVudChkZXYsIG1zZWMsIGZhbHNlKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBwbV93YWtldXBfaGFyZF9ldmVudChz dHJ1Y3QgZGV2aWNlICpkZXYpCnsKIHJldHVybiBwbV93YWtldXBfZGV2X2V2ZW50KGRldiwgMCwg dHJ1ZSk7Cn0KIyA2NDcgIi4vaW5jbHVkZS9saW51eC9kZXZpY2UuaCIgMgoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgY29uc3QgY2hhciAq ZGV2X25hbWUoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQp7CgogaWYgKGRldi0+aW5pdF9uYW1l KQogIHJldHVybiBkZXYtPmluaXRfbmFtZTsKCiByZXR1cm4ga29iamVjdF9uYW1lKCZkZXYtPmtv YmopOwp9CgpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkK aW50IGRldl9zZXRfbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsIC4u Lik7CiMgNjcwICIuL2luY2x1ZGUvbGludXgvZGV2aWNlLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkZXZfdG9fbm9kZShzdHJ1 Y3QgZGV2aWNlICpkZXYpCnsKIHJldHVybiAoLTEpOwp9CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgc2V0X2Rldl9ub2RlKHN0cnVj dCBkZXZpY2UgKmRldiwgaW50IG5vZGUpCnsKfQoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBpcnFfZG9tYWluICpkZXZfZ2V0 X21zaV9kb21haW4oY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQp7CgogcmV0dXJuIGRldi0+bXNp X2RvbWFpbjsKCgoKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZfc2V0X21zaV9kb21haW4oc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgaXJxX2RvbWFpbiAqZCkKewoKIGRldi0+bXNpX2RvbWFpbiA9IGQ7Cgp9CgpzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lk ICpkZXZfZ2V0X2RydmRhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQp7CiByZXR1cm4gZGV2 LT5kcml2ZXJfZGF0YTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZfc2V0X2RydmRhdGEoc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkICpkYXRhKQp7CiBkZXYtPmRyaXZlcl9kYXRhID0gZGF0YTsKfQoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IHBtX3N1 YnN5c19kYXRhICpkZXZfdG9fcHNkKHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJuIGRldiA/ IGRldi0+cG93ZXIuc3Vic3lzX2RhdGEgOiAoKHZvaWQgKikwKTsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdW5zaWduZWQgaW50IGRl dl9nZXRfdWV2ZW50X3N1cHByZXNzKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJu IGRldi0+a29iai51ZXZlbnRfc3VwcHJlc3M7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGV2X3NldF91ZXZlbnRfc3VwcHJl c3Moc3RydWN0IGRldmljZSAqZGV2LCBpbnQgdmFsKQp7CiBkZXYtPmtvYmoudWV2ZW50X3N1cHBy ZXNzID0gdmFsOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBpbnQgZGV2aWNlX2lzX3JlZ2lzdGVyZWQoc3RydWN0IGRldmljZSAqZGV2 KQp7CiByZXR1cm4gZGV2LT5rb2JqLnN0YXRlX2luX3N5c2ZzOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV9lbmFi bGVfYXN5bmNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIGlmICghZGV2LT5wb3dlci5p c19wcmVwYXJlZCkKICBkZXYtPnBvd2VyLmFzeW5jX3N1c3BlbmQgPSB0cnVlOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRl dmljZV9kaXNhYmxlX2FzeW5jX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQp7CiBpZiAoIWRl di0+cG93ZXIuaXNfcHJlcGFyZWQpCiAgZGV2LT5wb3dlci5hc3luY19zdXNwZW5kID0gZmFsc2U7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGJvb2wgZGV2aWNlX2FzeW5jX3N1c3BlbmRfZW5hYmxlZChzdHJ1Y3QgZGV2aWNlICpkZXYp CnsKIHJldHVybiAhIWRldi0+cG93ZXIuYXN5bmNfc3VzcGVuZDsKfQoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkZXZpY2VfcG1f bm90X3JlcXVpcmVkKHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJuIGRldi0+cG93ZXIubm9f cG07Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHZvaWQgZGV2aWNlX3NldF9wbV9ub3RfcmVxdWlyZWQoc3RydWN0IGRldmljZSAqZGV2 KQp7CiBkZXYtPnBvd2VyLm5vX3BtID0gdHJ1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0 ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJp YnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZfcG1fc3lzY29yZV9kZXZp Y2Uoc3RydWN0IGRldmljZSAqZGV2LCBib29sIHZhbCkKewoKIGRldi0+cG93ZXIuc3lzY29yZSA9 IHZhbDsKCn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHZvaWQgZGV2X3BtX3NldF9kcml2ZXJfZmxhZ3Moc3RydWN0IGRldmljZSAqZGV2 LCB1MzIgZmxhZ3MpCnsKIGRldi0+cG93ZXIuZHJpdmVyX2ZsYWdzID0gZmxhZ3M7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wg ZGV2X3BtX3Rlc3RfZHJpdmVyX2ZsYWdzKHN0cnVjdCBkZXZpY2UgKmRldiwgdTMyIGZsYWdzKQp7 CiByZXR1cm4gISEoZGV2LT5wb3dlci5kcml2ZXJfZmxhZ3MgJiBmbGFncyk7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGV2 aWNlX2xvY2soc3RydWN0IGRldmljZSAqZGV2KQp7CiBtdXRleF9sb2NrKCZkZXYtPm11dGV4KTsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgaW50IGRldmljZV9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRldmljZSAqZGV2KQp7CiBy ZXR1cm4gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPm11dGV4KTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IGRldmlj ZV90cnlsb2NrKHN0cnVjdCBkZXZpY2UgKmRldikKewogcmV0dXJuIG11dGV4X3RyeWxvY2soJmRl di0+bXV0ZXgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV91bmxvY2soc3RydWN0IGRldmljZSAqZGV2KQp7CiBt dXRleF91bmxvY2soJmRldi0+bXV0ZXgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGRldmljZV9sb2NrX2Fzc2VydChzdHJ1 Y3QgZGV2aWNlICpkZXYpCnsKIGRvIHsgKHZvaWQpKCZkZXYtPm11dGV4KTsgfSB3aGlsZSAoMCk7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBkZXZpY2Vfbm9kZSAqZGV2X29mX25vZGUoc3RydWN0IGRldmljZSAqZGV2KQp7 CiBpZiAoITAgfHwgIWRldikKICByZXR1cm4gKCh2b2lkICopMCk7CiByZXR1cm4gZGV2LT5vZl9u b2RlOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBib29sIGRldl9oYXNfc3luY19zdGF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIGlm ICghZGV2KQogIHJldHVybiBmYWxzZTsKIGlmIChkZXYtPmRyaXZlciAmJiBkZXYtPmRyaXZlci0+ c3luY19zdGF0ZSkKICByZXR1cm4gdHJ1ZTsKIGlmIChkZXYtPmJ1cyAmJiBkZXYtPmJ1cy0+c3lu Y19zdGF0ZSkKICByZXR1cm4gdHJ1ZTsKIHJldHVybiBmYWxzZTsKfQoKCgoKZXh0ZXJuIGludCBf X2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZGV2aWNlX3JlZ2lzdGVyKHN0 cnVjdCBkZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGRldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBk ZXZpY2UgKmRldik7CmV4dGVybiB2b2lkIGRldmljZV9pbml0aWFsaXplKHN0cnVjdCBkZXZpY2Ug KmRldik7CmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykp IGRldmljZV9hZGQoc3RydWN0IGRldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgZGV2aWNlX2RlbChz dHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gaW50IGRldmljZV9mb3JfZWFjaF9jaGlsZChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAgICAgICBpbnQgKCpmbikoc3RydWN0IGRldmlj ZSAqZGV2LCB2b2lkICpkYXRhKSk7CmV4dGVybiBpbnQgZGV2aWNlX2Zvcl9lYWNoX2NoaWxkX3Jl dmVyc2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLAogICAgICAgaW50ICgqZm4pKHN0 cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkpOwpleHRlcm4gc3RydWN0IGRldmljZSAqZGV2 aWNlX2ZpbmRfY2hpbGQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhLAogICAgaW50ICgq bWF0Y2gpKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkpOwpleHRlcm4gc3RydWN0IGRl dmljZSAqZGV2aWNlX2ZpbmRfY2hpbGRfYnlfbmFtZShzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsCiAg ICAgIGNvbnN0IGNoYXIgKm5hbWUpOwpleHRlcm4gaW50IGRldmljZV9yZW5hbWUoc3RydWN0IGRl dmljZSAqZGV2LCBjb25zdCBjaGFyICpuZXdfbmFtZSk7CmV4dGVybiBpbnQgZGV2aWNlX21vdmUo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpuZXdfcGFyZW50LAogICAgICAgICBl bnVtIGRwbV9vcmRlciBkcG1fb3JkZXIpOwpleHRlcm4gY29uc3QgY2hhciAqZGV2aWNlX2dldF9k ZXZub2RlKHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICAgICAgIHVtb2RlX3QgKm1vZGUsIGt1aWRf dCAqdWlkLCBrZ2lkX3QgKmdpZCwKICAgICAgICAgIGNvbnN0IGNoYXIgKip0bXApOwoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBk ZXZpY2Vfc3VwcG9ydHNfb2ZmbGluZShzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIHJldHVybiBkZXYt PmJ1cyAmJiBkZXYtPmJ1cy0+b2ZmbGluZSAmJiBkZXYtPmJ1cy0+b25saW5lOwp9CgpleHRlcm4g dm9pZCBsb2NrX2RldmljZV9ob3RwbHVnKHZvaWQpOwpleHRlcm4gdm9pZCB1bmxvY2tfZGV2aWNl X2hvdHBsdWcodm9pZCk7CmV4dGVybiBpbnQgbG9ja19kZXZpY2VfaG90cGx1Z19zeXNmcyh2b2lk KTsKZXh0ZXJuIGludCBkZXZpY2Vfb2ZmbGluZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4g aW50IGRldmljZV9vbmxpbmUoc3RydWN0IGRldmljZSAqZGV2KTsKZXh0ZXJuIHZvaWQgc2V0X3By aW1hcnlfZndub2RlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3 bm9kZSk7CmV4dGVybiB2b2lkIHNldF9zZWNvbmRhcnlfZndub2RlKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSk7CnZvaWQgZGV2aWNlX3NldF9vZl9ub2Rl X2Zyb21fZGV2KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZSAqZGV2Mik7 CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24p KSBpbnQgZGV2X251bV92ZihzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIGlmIChkZXYtPmJ1cyAmJiBk ZXYtPmJ1cy0+bnVtX3ZmKQogIHJldHVybiBkZXYtPmJ1cy0+bnVtX3ZmKGRldik7CiByZXR1cm4g MDsKfQoKCgoKZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKl9fcm9vdF9kZXZpY2VfcmVnaXN0ZXIoY29u c3QgY2hhciAqbmFtZSwKICAgICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTsKCgoKCgpleHRl cm4gdm9pZCByb290X2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKnJvb3QpOwoKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCAqZGV2X2dldF9wbGF0ZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpCnsKIHJldHVybiBk ZXYtPnBsYXRmb3JtX2RhdGE7Cn0KCgoKCgpleHRlcm4gaW50IF9fYXR0cmlidXRlX18oKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKSBkZXZpY2VfYmluZF9kcml2ZXIoc3RydWN0IGRldmljZSAqZGV2 KTsKZXh0ZXJuIHZvaWQgZGV2aWNlX3JlbGVhc2VfZHJpdmVyKHN0cnVjdCBkZXZpY2UgKmRldik7 CmV4dGVybiBpbnQgX19hdHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldmlj ZV9hdHRhY2goc3RydWN0IGRldmljZSAqZGV2KTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkgZHJpdmVyX2F0dGFjaChzdHJ1Y3QgZGV2aWNlX2RyaXZl ciAqZHJ2KTsKZXh0ZXJuIHZvaWQgZGV2aWNlX2luaXRpYWxfcHJvYmUoc3RydWN0IGRldmljZSAq ZGV2KTsKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSkg ZGV2aWNlX3JlcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KTsKCmV4dGVybiBib29sIGRldmljZV9p c19ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOwoKCgoKZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9f Zm9ybWF0X18ocHJpbnRmLCA1LCAwKSkpCnN0cnVjdCBkZXZpY2UgKmRldmljZV9jcmVhdGVfdmFy Z3Moc3RydWN0IGNsYXNzICpjbHMsIHN0cnVjdCBkZXZpY2UgKnBhcmVudCwKICAgICAgIGRldl90 IGRldnQsIHZvaWQgKmRydmRhdGEsCiAgICAgICBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgdmFy Z3MpOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDUsIDYpKSkKc3Ry dWN0IGRldmljZSAqZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgY2xhc3MgKmNscywgc3RydWN0IGRldmlj ZSAqcGFyZW50LAogICAgICAgIGRldl90IGRldnQsIHZvaWQgKmRydmRhdGEsCiAgICAgICAgY29u c3QgY2hhciAqZm10LCAuLi4pOwpleHRlcm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmlu dGYsIDYsIDcpKSkKc3RydWN0IGRldmljZSAqZGV2aWNlX2NyZWF0ZV93aXRoX2dyb3VwcyhzdHJ1 Y3QgY2xhc3MgKmNscywKICAgICAgICBzdHJ1Y3QgZGV2aWNlICpwYXJlbnQsIGRldl90IGRldnQs IHZvaWQgKmRydmRhdGEsCiAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdy b3VwcywKICAgICAgICBjb25zdCBjaGFyICpmbXQsIC4uLik7CmV4dGVybiB2b2lkIGRldmljZV9k ZXN0cm95KHN0cnVjdCBjbGFzcyAqY2xzLCBkZXZfdCBkZXZ0KTsKCmV4dGVybiBpbnQgX19hdHRy aWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldmljZV9hZGRfZ3JvdXBzKHN0cnVj dCBkZXZpY2UgKmRldiwKICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3JvdXBz KTsKZXh0ZXJuIHZvaWQgZGV2aWNlX3JlbW92ZV9ncm91cHMoc3RydWN0IGRldmljZSAqZGV2LAog ICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOwoKc3RhdGljIGlubGlu ZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2Vk X18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IF9fYXR0cmli dXRlX18oKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBkZXZpY2VfYWRkX2dyb3VwKHN0cnVjdCBk ZXZpY2UgKmRldiwKICAgICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpncnApCnsKIGNv bnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmdyb3Vwc1tdID0geyBncnAsICgodm9pZCAqKTAp IH07CgogcmV0dXJuIGRldmljZV9hZGRfZ3JvdXBzKGRldiwgZ3JvdXBzKTsKfQoKc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBkZXZp Y2VfcmVtb3ZlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldiwKICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlX2dyb3VwICpncnApCnsKIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg Kmdyb3Vwc1tdID0geyBncnAsICgodm9pZCAqKTApIH07CgogcmV0dXJuIGRldmljZV9yZW1vdmVf Z3JvdXBzKGRldiwgZ3JvdXBzKTsKfQoKZXh0ZXJuIGludCBfX2F0dHJpYnV0ZV9fKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgZGV2bV9kZXZpY2VfYWRkX2dyb3VwcyhzdHJ1Y3QgZGV2aWNlICpk ZXYsCiAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CmV4dGVybiB2 b2lkIGRldm1fZGV2aWNlX3JlbW92ZV9ncm91cHMoc3RydWN0IGRldmljZSAqZGV2LAogICAgICAg ICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3Vwcyk7CmV4dGVybiBpbnQgX19h dHRyaWJ1dGVfXygoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGRldm1fZGV2aWNlX2FkZF9ncm91 cChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAq Z3JwKTsKZXh0ZXJuIHZvaWQgZGV2bV9kZXZpY2VfcmVtb3ZlX2dyb3VwKHN0cnVjdCBkZXZpY2Ug KmRldiwKICAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKCgoKCgoK CmV4dGVybiBpbnQgKCpwbGF0Zm9ybV9ub3RpZnkpKHN0cnVjdCBkZXZpY2UgKmRldik7CgpleHRl cm4gaW50ICgqcGxhdGZvcm1fbm90aWZ5X3JlbW92ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKCgoK CgoKZXh0ZXJuIHN0cnVjdCBkZXZpY2UgKmdldF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KTsK ZXh0ZXJuIHZvaWQgcHV0X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwpleHRlcm4gYm9vbCBr aWxsX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpOwoKCmV4dGVybiBpbnQgZGV2dG1wZnNfbW91 bnQodm9pZCk7CgoKCgoKZXh0ZXJuIHZvaWQgZGV2aWNlX3NodXRkb3duKHZvaWQpOwoKCmV4dGVy biBjb25zdCBjaGFyICpkZXZfZHJpdmVyX3N0cmluZyhjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYp OwoKCnN0cnVjdCBkZXZpY2VfbGluayAqZGV2aWNlX2xpbmtfYWRkKHN0cnVjdCBkZXZpY2UgKmNv bnN1bWVyLAogICAgICAgIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyLCB1MzIgZmxhZ3MpOwp2b2lk IGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspOwp2b2lkIGRldmljZV9s aW5rX3JlbW92ZSh2b2lkICpjb25zdW1lciwgc3RydWN0IGRldmljZSAqc3VwcGxpZXIpOwp2b2lk IGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3BhdXNlKHZvaWQpOwp2b2lkIGRldmlj ZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3Jlc3VtZSh2b2lkKTsKIyAzMyAiLi9pbmNsdWRl L2RybS9kcm1fcHJpbnQuaCIgMgojIDEgIi4vaW5jbHVkZS9saW51eC9kZWJ1Z2ZzLmgiIDEKIyAy MSAiLi9pbmNsdWRlL2xpbnV4L2RlYnVnZnMuaCIKc3RydWN0IGRldmljZTsKc3RydWN0IGZpbGVf b3BlcmF0aW9uczsKCnN0cnVjdCBkZWJ1Z2ZzX2Jsb2Jfd3JhcHBlciB7CiB2b2lkICpkYXRhOwog dW5zaWduZWQgbG9uZyBzaXplOwp9OwoKc3RydWN0IGRlYnVnZnNfcmVnMzIgewogY2hhciAqbmFt ZTsKIHVuc2lnbmVkIGxvbmcgb2Zmc2V0Owp9OwoKc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIgewog Y29uc3Qgc3RydWN0IGRlYnVnZnNfcmVnMzIgKnJlZ3M7CiBpbnQgbnJlZ3M7CiB2b2lkICpiYXNl Owp9OwoKZXh0ZXJuIHN0cnVjdCBkZW50cnkgKmFyY2hfZGVidWdmc19kaXI7CiMgNTcgIi4vaW5j bHVkZS9saW51eC9kZWJ1Z2ZzLmgiCnR5cGVkZWYgc3RydWN0IHZmc21vdW50ICooKmRlYnVnZnNf YXV0b21vdW50X3QpKHN0cnVjdCBkZW50cnkgKiwgdm9pZCAqKTsKCgoKc3RydWN0IGRlbnRyeSAq ZGVidWdmc19sb29rdXAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50KTsK CnN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2ZpbGUoY29uc3QgY2hhciAqbmFtZSwgdW1v ZGVfdCBtb2RlLAogICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB2b2lkICpkYXRhLAogICAg ICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcyk7CnN0cnVjdCBkZW50cnkgKmRl YnVnZnNfY3JlYXRlX2ZpbGVfdW5zYWZlKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwK ICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdm9pZCAqZGF0YSwKICAgICAgIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMpOwoKc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVh dGVfZmlsZV9zaXplKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICBzdHJ1Y3Qg ZGVudHJ5ICpwYXJlbnQsIHZvaWQgKmRhdGEsCiAgICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyAqZm9wcywKICAgICBsb2ZmX3QgZmlsZV9zaXplKTsKCnN0cnVjdCBkZW50cnkgKmRlYnVn ZnNfY3JlYXRlX2Rpcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQpOwoK c3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfc3ltbGluayhjb25zdCBjaGFyICpuYW1lLCBz dHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAgICAgICAgICBjb25zdCBjaGFyICpkZXN0KTsKCnN0cnVj dCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2F1dG9tb3VudChjb25zdCBjaGFyICpuYW1lLAogICAg IHN0cnVjdCBkZW50cnkgKnBhcmVudCwKICAgICBkZWJ1Z2ZzX2F1dG9tb3VudF90IGYsCiAgICAg dm9pZCAqZGF0YSk7Cgp2b2lkIGRlYnVnZnNfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7 CgoKY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZGVidWdmc19yZWFsX2ZvcHMoY29uc3Qg c3RydWN0IGZpbGUgKmZpbHApOwoKaW50IGRlYnVnZnNfZmlsZV9nZXQoc3RydWN0IGRlbnRyeSAq ZGVudHJ5KTsKdm9pZCBkZWJ1Z2ZzX2ZpbGVfcHV0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7Cgpz c2l6ZV90IGRlYnVnZnNfYXR0cl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyICpidWYsCiAg IHNpemVfdCBsZW4sIGxvZmZfdCAqcHBvcyk7CnNzaXplX3QgZGVidWdmc19hdHRyX3dyaXRlKHN0 cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyICpidWYsCiAgIHNpemVfdCBsZW4sIGxvZmZfdCAq cHBvcyk7CgpzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3JlbmFtZShzdHJ1Y3QgZGVudHJ5ICpvbGRf ZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAogICAgICAgICAgICAgICAgc3RydWN0IGRl bnRyeSAqbmV3X2RpciwgY29uc3QgY2hhciAqbmV3X25hbWUpOwoKdm9pZCBkZWJ1Z2ZzX2NyZWF0 ZV91OChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsIHN0cnVjdCBkZW50cnkgKnBhcmVu dCwKICAgICAgICAgdTggKnZhbHVlKTsKdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV91MTYoY29uc3QgY2hh ciAqbmFtZSwgdW1vZGVfdCBtb2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAgIHUxNiAqdmFs dWUpOwpzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV91MzIoY29uc3QgY2hhciAqbmFtZSwg dW1vZGVfdCBtb2RlLAogICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHUzMiAqdmFsdWUpOwp2 b2lkIGRlYnVnZnNfY3JlYXRlX3U2NChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsIHN0 cnVjdCBkZW50cnkgKnBhcmVudCwKICAgdTY0ICp2YWx1ZSk7CnN0cnVjdCBkZW50cnkgKmRlYnVn ZnNfY3JlYXRlX3Vsb25nKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICAgICBz dHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHVuc2lnbmVkIGxvbmcgKnZhbHVlKTsKdm9pZCBkZWJ1Z2Zz X2NyZWF0ZV94OChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsIHN0cnVjdCBkZW50cnkg KnBhcmVudCwKICAgICAgICAgdTggKnZhbHVlKTsKdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV94MTYoY29u c3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAgIHUx NiAqdmFsdWUpOwp2b2lkIGRlYnVnZnNfY3JlYXRlX3gzMihjb25zdCBjaGFyICpuYW1lLCB1bW9k ZV90IG1vZGUsIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKICAgdTMyICp2YWx1ZSk7CnZvaWQgZGVi dWdmc19jcmVhdGVfeDY0KGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwgc3RydWN0IGRl bnRyeSAqcGFyZW50LAogICB1NjQgKnZhbHVlKTsKdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV9zaXplX3Qo Y29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAogICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJl bnQsIHNpemVfdCAqdmFsdWUpOwp2b2lkIGRlYnVnZnNfY3JlYXRlX2F0b21pY190KGNvbnN0IGNo YXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGF0 b21pY190ICp2YWx1ZSk7CnN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2Jvb2woY29uc3Qg Y2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAogICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGJv b2wgKnZhbHVlKTsKCnN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2Jsb2IoY29uc3QgY2hh ciAqbmFtZSwgdW1vZGVfdCBtb2RlLAogICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAgICAg IHN0cnVjdCBkZWJ1Z2ZzX2Jsb2Jfd3JhcHBlciAqYmxvYik7Cgp2b2lkIGRlYnVnZnNfY3JlYXRl X3JlZ3NldDMyKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICAgICBzdHJ1Y3Qg ZGVudHJ5ICpwYXJlbnQsCiAgICAgICAgc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIgKnJlZ3NldCk7 Cgp2b2lkIGRlYnVnZnNfcHJpbnRfcmVnczMyKHN0cnVjdCBzZXFfZmlsZSAqcywgY29uc3Qgc3Ry dWN0IGRlYnVnZnNfcmVnMzIgKnJlZ3MsCiAgICAgaW50IG5yZWdzLCB2b2lkICpiYXNlLCBjaGFy ICpwcmVmaXgpOwoKdm9pZCBkZWJ1Z2ZzX2NyZWF0ZV91MzJfYXJyYXkoY29uc3QgY2hhciAqbmFt ZSwgdW1vZGVfdCBtb2RlLAogICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHUzMiAqYXJy YXksIHUzMiBlbGVtZW50cyk7CgpzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV9kZXZtX3Nl cWZpbGUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgIHN0cnVj dCBkZW50cnkgKnBhcmVudCwKICAgICAgICBpbnQgKCpyZWFkX2ZuKShzdHJ1Y3Qgc2VxX2ZpbGUg KnMsCiAgICAgICAgIHZvaWQgKmRhdGEpKTsKCmJvb2wgZGVidWdmc19pbml0aWFsaXplZCh2b2lk KTsKCnNzaXplX3QgZGVidWdmc19yZWFkX2ZpbGVfYm9vbChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hh ciAqdXNlcl9idWYsCiAgICAgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcyk7Cgpzc2l6 ZV90IGRlYnVnZnNfd3JpdGVfZmlsZV9ib29sKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFy ICp1c2VyX2J1ZiwKICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKTsKIyAzNjUgIi4vaW5j bHVkZS9saW51eC9kZWJ1Z2ZzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQgZGVidWdmc19jcmVhdGVfeHVsKGNvbnN0IGNoYXIg Km5hbWUsIHVtb2RlX3QgbW9kZSwKICAgICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgKnZhbHVlKQp7CiBpZiAoc2l6ZW9mKCp2YWx1ZSkgPT0gc2l6 ZW9mKHUzMikpCiAgZGVidWdmc19jcmVhdGVfeDMyKG5hbWUsIG1vZGUsIHBhcmVudCwgKHUzMiAq KXZhbHVlKTsKIGVsc2UKICBkZWJ1Z2ZzX2NyZWF0ZV94NjQobmFtZSwgbW9kZSwgcGFyZW50LCAo dTY0ICopdmFsdWUpOwp9CiMgMzQgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiIDIKCiMgMSAi Li9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIiAxCiMgNDIgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0u aCIKIyAxICIuL2FyY2gveDg2L2luY2x1ZGUvZ2VuZXJhdGVkL3VhcGkvYXNtL2lvY3RsLmgiIDEK IyA0MyAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIiAyCnR5cGVkZWYgdW5zaWduZWQgaW50IGRy bV9oYW5kbGVfdDsKIyA4NCAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgp0eXBlZGVmIHVuc2ln bmVkIGludCBkcm1fY29udGV4dF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBkcm1fZHJhd2FibGVf dDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgZHJtX21hZ2ljX3Q7CiMgOTcgIi4vaW5jbHVkZS91YXBp L2RybS9kcm0uaCIKc3RydWN0IGRybV9jbGlwX3JlY3QgewogdW5zaWduZWQgc2hvcnQgeDE7CiB1 bnNpZ25lZCBzaG9ydCB5MTsKIHVuc2lnbmVkIHNob3J0IHgyOwogdW5zaWduZWQgc2hvcnQgeTI7 Cn07CgoKCgpzdHJ1Y3QgZHJtX2RyYXdhYmxlX2luZm8gewogdW5zaWduZWQgaW50IG51bV9yZWN0 czsKIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpyZWN0czsKfTsKCgoKCnN0cnVjdCBkcm1fdGV4X3Jl Z2lvbiB7CiB1bnNpZ25lZCBjaGFyIG5leHQ7CiB1bnNpZ25lZCBjaGFyIHByZXY7CiB1bnNpZ25l ZCBjaGFyIGluX3VzZTsKIHVuc2lnbmVkIGNoYXIgcGFkZGluZzsKIHVuc2lnbmVkIGludCBhZ2U7 Cn07CiMgMTMwICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCnN0cnVjdCBkcm1faHdfbG9jayB7 CiBfX3ZvbGF0aWxlX18gdW5zaWduZWQgaW50IGxvY2s7CiBjaGFyIHBhZGRpbmdbNjBdOwp9OwoK CgoKCgpzdHJ1Y3QgZHJtX3ZlcnNpb24gewogaW50IHZlcnNpb25fbWFqb3I7CiBpbnQgdmVyc2lv bl9taW5vcjsKIGludCB2ZXJzaW9uX3BhdGNobGV2ZWw7CiBfX2tlcm5lbF9zaXplX3QgbmFtZV9s ZW47CiBjaGFyICpuYW1lOwogX19rZXJuZWxfc2l6ZV90IGRhdGVfbGVuOwogY2hhciAqZGF0ZTsK IF9fa2VybmVsX3NpemVfdCBkZXNjX2xlbjsKIGNoYXIgKmRlc2M7Cn07CgoKCgoKCnN0cnVjdCBk cm1fdW5pcXVlIHsKIF9fa2VybmVsX3NpemVfdCB1bmlxdWVfbGVuOwogY2hhciAqdW5pcXVlOwp9 OwoKc3RydWN0IGRybV9saXN0IHsKIGludCBjb3VudDsKIHN0cnVjdCBkcm1fdmVyc2lvbiAqdmVy c2lvbjsKfTsKCnN0cnVjdCBkcm1fYmxvY2sgewogaW50IHVudXNlZDsKfTsKCgoKCgoKc3RydWN0 IGRybV9jb250cm9sIHsKIGVudW0gewogIERSTV9BRERfQ09NTUFORCwKICBEUk1fUk1fQ09NTUFO RCwKICBEUk1fSU5TVF9IQU5ETEVSLAogIERSTV9VTklOU1RfSEFORExFUgogfSBmdW5jOwogaW50 IGlycTsKfTsKCgoKCmVudW0gZHJtX21hcF90eXBlIHsKIF9EUk1fRlJBTUVfQlVGRkVSID0gMCwK IF9EUk1fUkVHSVNURVJTID0gMSwKIF9EUk1fU0hNID0gMiwKIF9EUk1fQUdQID0gMywKIF9EUk1f U0NBVFRFUl9HQVRIRVIgPSA0LAogX0RSTV9DT05TSVNURU5UID0gNQp9OwoKCgoKZW51bSBkcm1f bWFwX2ZsYWdzIHsKIF9EUk1fUkVTVFJJQ1RFRCA9IDB4MDEsCiBfRFJNX1JFQURfT05MWSA9IDB4 MDIsCiBfRFJNX0xPQ0tFRCA9IDB4MDQsCiBfRFJNX0tFUk5FTCA9IDB4MDgsCiBfRFJNX1dSSVRF X0NPTUJJTklORyA9IDB4MTAsCiBfRFJNX0NPTlRBSU5TX0xPQ0sgPSAweDIwLAogX0RSTV9SRU1P VkFCTEUgPSAweDQwLAogX0RSTV9EUklWRVIgPSAweDgwCn07CgpzdHJ1Y3QgZHJtX2N0eF9wcml2 X21hcCB7CiB1bnNpZ25lZCBpbnQgY3R4X2lkOwogdm9pZCAqaGFuZGxlOwp9OwoKCgoKCgoKc3Ry dWN0IGRybV9tYXAgewogdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiB1bnNpZ25lZCBsb25nIHNpemU7 CiBlbnVtIGRybV9tYXBfdHlwZSB0eXBlOwogZW51bSBkcm1fbWFwX2ZsYWdzIGZsYWdzOwogdm9p ZCAqaGFuZGxlOwoKIGludCBtdHJyOwoKfTsKCgoKCnN0cnVjdCBkcm1fY2xpZW50IHsKIGludCBp ZHg7CiBpbnQgYXV0aDsKIHVuc2lnbmVkIGxvbmcgcGlkOwogdW5zaWduZWQgbG9uZyB1aWQ7CiB1 bnNpZ25lZCBsb25nIG1hZ2ljOwogdW5zaWduZWQgbG9uZyBpb2NzOwp9OwoKZW51bSBkcm1fc3Rh dF90eXBlIHsKIF9EUk1fU1RBVF9MT0NLLAogX0RSTV9TVEFUX09QRU5TLAogX0RSTV9TVEFUX0NM T1NFUywKIF9EUk1fU1RBVF9JT0NUTFMsCiBfRFJNX1NUQVRfTE9DS1MsCiBfRFJNX1NUQVRfVU5M T0NLUywKIF9EUk1fU1RBVF9WQUxVRSwKIF9EUk1fU1RBVF9CWVRFLAogX0RSTV9TVEFUX0NPVU5U LAoKIF9EUk1fU1RBVF9JUlEsCiBfRFJNX1NUQVRfUFJJTUFSWSwKIF9EUk1fU1RBVF9TRUNPTkRB UlksCiBfRFJNX1NUQVRfRE1BLAogX0RSTV9TVEFUX1NQRUNJQUwsCiBfRFJNX1NUQVRfTUlTU0VE Cgp9OwoKCgoKc3RydWN0IGRybV9zdGF0cyB7CiB1bnNpZ25lZCBsb25nIGNvdW50Owogc3RydWN0 IHsKICB1bnNpZ25lZCBsb25nIHZhbHVlOwogIGVudW0gZHJtX3N0YXRfdHlwZSB0eXBlOwogfSBk YXRhWzE1XTsKfTsKCgoKCmVudW0gZHJtX2xvY2tfZmxhZ3MgewogX0RSTV9MT0NLX1JFQURZID0g MHgwMSwKIF9EUk1fTE9DS19RVUlFU0NFTlQgPSAweDAyLAogX0RSTV9MT0NLX0ZMVVNIID0gMHgw NCwKIF9EUk1fTE9DS19GTFVTSF9BTEwgPSAweDA4LAoKCgogX0RSTV9IQUxUX0FMTF9RVUVVRVMg PSAweDEwLAogX0RSTV9IQUxUX0NVUl9RVUVVRVMgPSAweDIwCn07CgoKCgoKCnN0cnVjdCBkcm1f bG9jayB7CiBpbnQgY29udGV4dDsKIGVudW0gZHJtX2xvY2tfZmxhZ3MgZmxhZ3M7Cn07CiMgMzEw ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCmVudW0gZHJtX2RtYV9mbGFncyB7CgogX0RSTV9E TUFfQkxPQ0sgPSAweDAxLAojIDMyMiAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgogX0RSTV9E TUFfV0hJTEVfTE9DS0VEID0gMHgwMiwKIF9EUk1fRE1BX1BSSU9SSVRZID0gMHgwNCwKCgogX0RS TV9ETUFfV0FJVCA9IDB4MTAsCiBfRFJNX0RNQV9TTUFMTEVSX09LID0gMHgyMCwKIF9EUk1fRE1B X0xBUkdFUl9PSyA9IDB4NDAKfTsKCgoKCgoKc3RydWN0IGRybV9idWZfZGVzYyB7CiBpbnQgY291 bnQ7CiBpbnQgc2l6ZTsKIGludCBsb3dfbWFyazsKIGludCBoaWdoX21hcms7CiBlbnVtIHsKICBf RFJNX1BBR0VfQUxJR04gPSAweDAxLAogIF9EUk1fQUdQX0JVRkZFUiA9IDB4MDIsCiAgX0RSTV9T R19CVUZGRVIgPSAweDA0LAogIF9EUk1fRkJfQlVGRkVSID0gMHgwOCwKICBfRFJNX1BDSV9CVUZG RVJfUk8gPSAweDEwCiB9IGZsYWdzOwogdW5zaWduZWQgbG9uZyBhZ3Bfc3RhcnQ7CgoKCn07CgoK CgpzdHJ1Y3QgZHJtX2J1Zl9pbmZvIHsKIGludCBjb3VudDsKIHN0cnVjdCBkcm1fYnVmX2Rlc2Mg Kmxpc3Q7Cn07CgoKCgpzdHJ1Y3QgZHJtX2J1Zl9mcmVlIHsKIGludCBjb3VudDsKIGludCAqbGlz dDsKfTsKCgoKCgoKc3RydWN0IGRybV9idWZfcHViIHsKIGludCBpZHg7CiBpbnQgdG90YWw7CiBp bnQgdXNlZDsKIHZvaWQgKmFkZHJlc3M7Cn07CgoKCgpzdHJ1Y3QgZHJtX2J1Zl9tYXAgewogaW50 IGNvdW50OwoKCgogdm9pZCAqdmlydHVhbDsKCiBzdHJ1Y3QgZHJtX2J1Zl9wdWIgKmxpc3Q7Cn07 CiMgNDAyICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCnN0cnVjdCBkcm1fZG1hIHsKIGludCBj b250ZXh0OwogaW50IHNlbmRfY291bnQ7CiBpbnQgKnNlbmRfaW5kaWNlczsKIGludCAqc2VuZF9z aXplczsKIGVudW0gZHJtX2RtYV9mbGFncyBmbGFnczsKIGludCByZXF1ZXN0X2NvdW50OwogaW50 IHJlcXVlc3Rfc2l6ZTsKIGludCAqcmVxdWVzdF9pbmRpY2VzOwogaW50ICpyZXF1ZXN0X3NpemVz OwogaW50IGdyYW50ZWRfY291bnQ7Cn07CgplbnVtIGRybV9jdHhfZmxhZ3MgewogX0RSTV9DT05U RVhUX1BSRVNFUlZFRCA9IDB4MDEsCiBfRFJNX0NPTlRFWFRfMkRPTkxZID0gMHgwMgp9OwoKCgoK CgpzdHJ1Y3QgZHJtX2N0eCB7CiBkcm1fY29udGV4dF90IGhhbmRsZTsKIGVudW0gZHJtX2N0eF9m bGFncyBmbGFnczsKfTsKCgoKCnN0cnVjdCBkcm1fY3R4X3JlcyB7CiBpbnQgY291bnQ7CiBzdHJ1 Y3QgZHJtX2N0eCAqY29udGV4dHM7Cn07CgoKCgpzdHJ1Y3QgZHJtX2RyYXcgewogZHJtX2RyYXdh YmxlX3QgaGFuZGxlOwp9OwoKCgoKdHlwZWRlZiBlbnVtIHsKIERSTV9EUkFXQUJMRV9DTElQUkVD VFMKfSBkcm1fZHJhd2FibGVfaW5mb190eXBlX3Q7CgpzdHJ1Y3QgZHJtX3VwZGF0ZV9kcmF3IHsK IGRybV9kcmF3YWJsZV90IGhhbmRsZTsKIHVuc2lnbmVkIGludCB0eXBlOwogdW5zaWduZWQgaW50 IG51bTsKIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhOwp9OwoKCgoKc3RydWN0IGRybV9hdXRoIHsK IGRybV9tYWdpY190IG1hZ2ljOwp9OwoKCgoKCgpzdHJ1Y3QgZHJtX2lycV9idXNpZCB7CiBpbnQg aXJxOwogaW50IGJ1c251bTsKIGludCBkZXZudW07CiBpbnQgZnVuY251bTsKfTsKCmVudW0gZHJt X3ZibGFua19zZXFfdHlwZSB7CiBfRFJNX1ZCTEFOS19BQlNPTFVURSA9IDB4MCwKIF9EUk1fVkJM QU5LX1JFTEFUSVZFID0gMHgxLAoKIF9EUk1fVkJMQU5LX0hJR0hfQ1JUQ19NQVNLID0gMHgwMDAw MDAzZSwKIF9EUk1fVkJMQU5LX0VWRU5UID0gMHg0MDAwMDAwLAogX0RSTV9WQkxBTktfRkxJUCA9 IDB4ODAwMDAwMCwKIF9EUk1fVkJMQU5LX05FWFRPTk1JU1MgPSAweDEwMDAwMDAwLAogX0RSTV9W QkxBTktfU0VDT05EQVJZID0gMHgyMDAwMDAwMCwKIF9EUk1fVkJMQU5LX1NJR05BTCA9IDB4NDAw MDAwMDAKfTsKCgoKCgoKc3RydWN0IGRybV93YWl0X3ZibGFua19yZXF1ZXN0IHsKIGVudW0gZHJt X3ZibGFua19zZXFfdHlwZSB0eXBlOwogdW5zaWduZWQgaW50IHNlcXVlbmNlOwogdW5zaWduZWQg bG9uZyBzaWduYWw7Cn07CgpzdHJ1Y3QgZHJtX3dhaXRfdmJsYW5rX3JlcGx5IHsKIGVudW0gZHJt X3ZibGFua19zZXFfdHlwZSB0eXBlOwogdW5zaWduZWQgaW50IHNlcXVlbmNlOwogbG9uZyB0dmFs X3NlYzsKIGxvbmcgdHZhbF91c2VjOwp9OwoKCgoKCgp1bmlvbiBkcm1fd2FpdF92Ymxhbmsgewog c3RydWN0IGRybV93YWl0X3ZibGFua19yZXF1ZXN0IHJlcXVlc3Q7CiBzdHJ1Y3QgZHJtX3dhaXRf dmJsYW5rX3JlcGx5IHJlcGx5Owp9OwojIDUyNiAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgpz dHJ1Y3QgZHJtX21vZGVzZXRfY3RsIHsKIF9fdTMyIGNydGM7CiBfX3UzMiBjbWQ7Cn07CgoKCgoK CnN0cnVjdCBkcm1fYWdwX21vZGUgewogdW5zaWduZWQgbG9uZyBtb2RlOwp9OwoKCgoKCgpzdHJ1 Y3QgZHJtX2FncF9idWZmZXIgewogdW5zaWduZWQgbG9uZyBzaXplOwogdW5zaWduZWQgbG9uZyBo YW5kbGU7CiB1bnNpZ25lZCBsb25nIHR5cGU7CiB1bnNpZ25lZCBsb25nIHBoeXNpY2FsOwp9OwoK CgoKCgpzdHJ1Y3QgZHJtX2FncF9iaW5kaW5nIHsKIHVuc2lnbmVkIGxvbmcgaGFuZGxlOwogdW5z aWduZWQgbG9uZyBvZmZzZXQ7Cn07CiMgNTY5ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgiCnN0 cnVjdCBkcm1fYWdwX2luZm8gewogaW50IGFncF92ZXJzaW9uX21ham9yOwogaW50IGFncF92ZXJz aW9uX21pbm9yOwogdW5zaWduZWQgbG9uZyBtb2RlOwogdW5zaWduZWQgbG9uZyBhcGVydHVyZV9i YXNlOwogdW5zaWduZWQgbG9uZyBhcGVydHVyZV9zaXplOwogdW5zaWduZWQgbG9uZyBtZW1vcnlf YWxsb3dlZDsKIHVuc2lnbmVkIGxvbmcgbWVtb3J5X3VzZWQ7CgoKIHVuc2lnbmVkIHNob3J0IGlk X3ZlbmRvcjsKIHVuc2lnbmVkIHNob3J0IGlkX2RldmljZTsKfTsKCgoKCnN0cnVjdCBkcm1fc2Nh dHRlcl9nYXRoZXIgewogdW5zaWduZWQgbG9uZyBzaXplOwogdW5zaWduZWQgbG9uZyBoYW5kbGU7 Cn07CgoKCgpzdHJ1Y3QgZHJtX3NldF92ZXJzaW9uIHsKIGludCBkcm1fZGlfbWFqb3I7CiBpbnQg ZHJtX2RpX21pbm9yOwogaW50IGRybV9kZF9tYWpvcjsKIGludCBkcm1fZGRfbWlub3I7Cn07CgoK c3RydWN0IGRybV9nZW1fY2xvc2UgewoKIF9fdTMyIGhhbmRsZTsKIF9fdTMyIHBhZDsKfTsKCgpz dHJ1Y3QgZHJtX2dlbV9mbGluayB7CgogX191MzIgaGFuZGxlOwoKCiBfX3UzMiBuYW1lOwp9OwoK CnN0cnVjdCBkcm1fZ2VtX29wZW4gewoKIF9fdTMyIG5hbWU7CgoKIF9fdTMyIGhhbmRsZTsKCgog X191NjQgc2l6ZTsKfTsKIyA2NTYgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIKc3RydWN0IGRy bV9nZXRfY2FwIHsKIF9fdTY0IGNhcGFiaWxpdHk7CiBfX3U2NCB2YWx1ZTsKfTsKIyA3MDIgIi4v aW5jbHVkZS91YXBpL2RybS9kcm0uaCIKc3RydWN0IGRybV9zZXRfY2xpZW50X2NhcCB7CiBfX3U2 NCBjYXBhYmlsaXR5OwogX191NjQgdmFsdWU7Cn07CgoKCnN0cnVjdCBkcm1fcHJpbWVfaGFuZGxl IHsKIF9fdTMyIGhhbmRsZTsKCgogX191MzIgZmxhZ3M7CgoKIF9fczMyIGZkOwp9OwoKc3RydWN0 IGRybV9zeW5jb2JqX2NyZWF0ZSB7CiBfX3UzMiBoYW5kbGU7CgogX191MzIgZmxhZ3M7Cn07Cgpz dHJ1Y3QgZHJtX3N5bmNvYmpfZGVzdHJveSB7CiBfX3UzMiBoYW5kbGU7CiBfX3UzMiBwYWQ7Cn07 CgoKCnN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUgewogX191MzIgaGFuZGxlOwogX191MzIgZmxh Z3M7CgogX19zMzIgZmQ7CiBfX3UzMiBwYWQ7Cn07CgpzdHJ1Y3QgZHJtX3N5bmNvYmpfdHJhbnNm ZXIgewogX191MzIgc3JjX2hhbmRsZTsKIF9fdTMyIGRzdF9oYW5kbGU7CiBfX3U2NCBzcmNfcG9p bnQ7CiBfX3U2NCBkc3RfcG9pbnQ7CiBfX3UzMiBmbGFnczsKIF9fdTMyIHBhZDsKfTsKCgoKCnN0 cnVjdCBkcm1fc3luY29ial93YWl0IHsKIF9fdTY0IGhhbmRsZXM7CgogX19zNjQgdGltZW91dF9u c2VjOwogX191MzIgY291bnRfaGFuZGxlczsKIF9fdTMyIGZsYWdzOwogX191MzIgZmlyc3Rfc2ln bmFsZWQ7CiBfX3UzMiBwYWQ7Cn07CgpzdHJ1Y3QgZHJtX3N5bmNvYmpfdGltZWxpbmVfd2FpdCB7 CiBfX3U2NCBoYW5kbGVzOwoKIF9fdTY0IHBvaW50czsKCiBfX3M2NCB0aW1lb3V0X25zZWM7CiBf X3UzMiBjb3VudF9oYW5kbGVzOwogX191MzIgZmxhZ3M7CiBfX3UzMiBmaXJzdF9zaWduYWxlZDsK IF9fdTMyIHBhZDsKfTsKCgpzdHJ1Y3QgZHJtX3N5bmNvYmpfYXJyYXkgewogX191NjQgaGFuZGxl czsKIF9fdTMyIGNvdW50X2hhbmRsZXM7CiBfX3UzMiBwYWQ7Cn07CgoKc3RydWN0IGRybV9zeW5j b2JqX3RpbWVsaW5lX2FycmF5IHsKIF9fdTY0IGhhbmRsZXM7CiBfX3U2NCBwb2ludHM7CiBfX3Uz MiBjb3VudF9oYW5kbGVzOwogX191MzIgZmxhZ3M7Cn07CgoKCnN0cnVjdCBkcm1fY3J0Y19nZXRf c2VxdWVuY2UgewogX191MzIgY3J0Y19pZDsKIF9fdTMyIGFjdGl2ZTsKIF9fdTY0IHNlcXVlbmNl OwogX19zNjQgc2VxdWVuY2VfbnM7Cn07CiMgODA1ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgi CnN0cnVjdCBkcm1fY3J0Y19xdWV1ZV9zZXF1ZW5jZSB7CiBfX3UzMiBjcnRjX2lkOwogX191MzIg ZmxhZ3M7CiBfX3U2NCBzZXF1ZW5jZTsKIF9fdTY0IHVzZXJfZGF0YTsKfTsKCgoKCgojIDEgIi4v aW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIiAxCiMgMzAgIi4vaW5jbHVkZS91YXBpL2RybS9k cm1fbW9kZS5oIgojIDEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIgMQojIDMxICIuL2luY2x1 ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIgMgojIDIyMSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9t b2RlLmgiCnN0cnVjdCBkcm1fbW9kZV9tb2RlaW5mbyB7CiBfX3UzMiBjbG9jazsKIF9fdTE2IGhk aXNwbGF5OwogX191MTYgaHN5bmNfc3RhcnQ7CiBfX3UxNiBoc3luY19lbmQ7CiBfX3UxNiBodG90 YWw7CiBfX3UxNiBoc2tldzsKIF9fdTE2IHZkaXNwbGF5OwogX191MTYgdnN5bmNfc3RhcnQ7CiBf X3UxNiB2c3luY19lbmQ7CiBfX3UxNiB2dG90YWw7CiBfX3UxNiB2c2NhbjsKCiBfX3UzMiB2cmVm cmVzaDsKCiBfX3UzMiBmbGFnczsKIF9fdTMyIHR5cGU7CiBjaGFyIG5hbWVbMzJdOwp9OwoKc3Ry dWN0IGRybV9tb2RlX2NhcmRfcmVzIHsKIF9fdTY0IGZiX2lkX3B0cjsKIF9fdTY0IGNydGNfaWRf cHRyOwogX191NjQgY29ubmVjdG9yX2lkX3B0cjsKIF9fdTY0IGVuY29kZXJfaWRfcHRyOwogX191 MzIgY291bnRfZmJzOwogX191MzIgY291bnRfY3J0Y3M7CiBfX3UzMiBjb3VudF9jb25uZWN0b3Jz OwogX191MzIgY291bnRfZW5jb2RlcnM7CiBfX3UzMiBtaW5fd2lkdGg7CiBfX3UzMiBtYXhfd2lk dGg7CiBfX3UzMiBtaW5faGVpZ2h0OwogX191MzIgbWF4X2hlaWdodDsKfTsKCnN0cnVjdCBkcm1f bW9kZV9jcnRjIHsKIF9fdTY0IHNldF9jb25uZWN0b3JzX3B0cjsKIF9fdTMyIGNvdW50X2Nvbm5l Y3RvcnM7CgogX191MzIgY3J0Y19pZDsKIF9fdTMyIGZiX2lkOwoKIF9fdTMyIHg7CiBfX3UzMiB5 OwoKIF9fdTMyIGdhbW1hX3NpemU7CiBfX3UzMiBtb2RlX3ZhbGlkOwogc3RydWN0IGRybV9tb2Rl X21vZGVpbmZvIG1vZGU7Cn07CgoKCgoKc3RydWN0IGRybV9tb2RlX3NldF9wbGFuZSB7CiBfX3Uz MiBwbGFuZV9pZDsKIF9fdTMyIGNydGNfaWQ7CiBfX3UzMiBmYl9pZDsKIF9fdTMyIGZsYWdzOwoK CiBfX3MzMiBjcnRjX3g7CiBfX3MzMiBjcnRjX3k7CiBfX3UzMiBjcnRjX3c7CiBfX3UzMiBjcnRj X2g7CgoKIF9fdTMyIHNyY194OwogX191MzIgc3JjX3k7CiBfX3UzMiBzcmNfaDsKIF9fdTMyIHNy Y193Owp9OwoKc3RydWN0IGRybV9tb2RlX2dldF9wbGFuZSB7CiBfX3UzMiBwbGFuZV9pZDsKCiBf X3UzMiBjcnRjX2lkOwogX191MzIgZmJfaWQ7CgogX191MzIgcG9zc2libGVfY3J0Y3M7CiBfX3Uz MiBnYW1tYV9zaXplOwoKIF9fdTMyIGNvdW50X2Zvcm1hdF90eXBlczsKIF9fdTY0IGZvcm1hdF90 eXBlX3B0cjsKfTsKCnN0cnVjdCBkcm1fbW9kZV9nZXRfcGxhbmVfcmVzIHsKIF9fdTY0IHBsYW5l X2lkX3B0cjsKIF9fdTMyIGNvdW50X3BsYW5lczsKfTsKIyAzMjIgIi4vaW5jbHVkZS91YXBpL2Ry bS9kcm1fbW9kZS5oIgpzdHJ1Y3QgZHJtX21vZGVfZ2V0X2VuY29kZXIgewogX191MzIgZW5jb2Rl cl9pZDsKIF9fdTMyIGVuY29kZXJfdHlwZTsKCiBfX3UzMiBjcnRjX2lkOwoKIF9fdTMyIHBvc3Np YmxlX2NydGNzOwogX191MzIgcG9zc2libGVfY2xvbmVzOwp9OwoKCgplbnVtIGRybV9tb2RlX3N1 YmNvbm5lY3RvciB7CiBEUk1fTU9ERV9TVUJDT05ORUNUT1JfQXV0b21hdGljID0gMCwKIERSTV9N T0RFX1NVQkNPTk5FQ1RPUl9Vbmtub3duID0gMCwKIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9EVklE ID0gMywKIERSTV9NT0RFX1NVQkNPTk5FQ1RPUl9EVklBID0gNCwKIERSTV9NT0RFX1NVQkNPTk5F Q1RPUl9Db21wb3NpdGUgPSA1LAogRFJNX01PREVfU1VCQ09OTkVDVE9SX1NWSURFTyA9IDYsCiBE Uk1fTU9ERV9TVUJDT05ORUNUT1JfQ29tcG9uZW50ID0gOCwKIERSTV9NT0RFX1NVQkNPTk5FQ1RP Ul9TQ0FSVCA9IDksCn07CiMgMzY2ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKc3Ry dWN0IGRybV9tb2RlX2dldF9jb25uZWN0b3IgewoKIF9fdTY0IGVuY29kZXJzX3B0cjsKIF9fdTY0 IG1vZGVzX3B0cjsKIF9fdTY0IHByb3BzX3B0cjsKIF9fdTY0IHByb3BfdmFsdWVzX3B0cjsKCiBf X3UzMiBjb3VudF9tb2RlczsKIF9fdTMyIGNvdW50X3Byb3BzOwogX191MzIgY291bnRfZW5jb2Rl cnM7CgogX191MzIgZW5jb2Rlcl9pZDsKIF9fdTMyIGNvbm5lY3Rvcl9pZDsKIF9fdTMyIGNvbm5l Y3Rvcl90eXBlOwogX191MzIgY29ubmVjdG9yX3R5cGVfaWQ7CgogX191MzIgY29ubmVjdGlvbjsK IF9fdTMyIG1tX3dpZHRoOwogX191MzIgbW1faGVpZ2h0OwogX191MzIgc3VicGl4ZWw7CgogX191 MzIgcGFkOwp9OwojIDQxOSAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCnN0cnVjdCBk cm1fbW9kZV9wcm9wZXJ0eV9lbnVtIHsKIF9fdTY0IHZhbHVlOwogY2hhciBuYW1lWzMyXTsKfTsK CnN0cnVjdCBkcm1fbW9kZV9nZXRfcHJvcGVydHkgewogX191NjQgdmFsdWVzX3B0cjsKIF9fdTY0 IGVudW1fYmxvYl9wdHI7CgogX191MzIgcHJvcF9pZDsKIF9fdTMyIGZsYWdzOwogY2hhciBuYW1l WzMyXTsKCiBfX3UzMiBjb3VudF92YWx1ZXM7CgoKIF9fdTMyIGNvdW50X2VudW1fYmxvYnM7Cn07 CgpzdHJ1Y3QgZHJtX21vZGVfY29ubmVjdG9yX3NldF9wcm9wZXJ0eSB7CiBfX3U2NCB2YWx1ZTsK IF9fdTMyIHByb3BfaWQ7CiBfX3UzMiBjb25uZWN0b3JfaWQ7Cn07CiMgNDU0ICIuL2luY2x1ZGUv dWFwaS9kcm0vZHJtX21vZGUuaCIKc3RydWN0IGRybV9tb2RlX29ial9nZXRfcHJvcGVydGllcyB7 CiBfX3U2NCBwcm9wc19wdHI7CiBfX3U2NCBwcm9wX3ZhbHVlc19wdHI7CiBfX3UzMiBjb3VudF9w cm9wczsKIF9fdTMyIG9ial9pZDsKIF9fdTMyIG9ial90eXBlOwp9OwoKc3RydWN0IGRybV9tb2Rl X29ial9zZXRfcHJvcGVydHkgewogX191NjQgdmFsdWU7CiBfX3UzMiBwcm9wX2lkOwogX191MzIg b2JqX2lkOwogX191MzIgb2JqX3R5cGU7Cn07CgpzdHJ1Y3QgZHJtX21vZGVfZ2V0X2Jsb2Igewog X191MzIgYmxvYl9pZDsKIF9fdTMyIGxlbmd0aDsKIF9fdTY0IGRhdGE7Cn07CgpzdHJ1Y3QgZHJt X21vZGVfZmJfY21kIHsKIF9fdTMyIGZiX2lkOwogX191MzIgd2lkdGg7CiBfX3UzMiBoZWlnaHQ7 CiBfX3UzMiBwaXRjaDsKIF9fdTMyIGJwcDsKIF9fdTMyIGRlcHRoOwoKIF9fdTMyIGhhbmRsZTsK fTsKCgoKCnN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIHsKIF9fdTMyIGZiX2lkOwogX191MzIgd2lk dGg7CiBfX3UzMiBoZWlnaHQ7CiBfX3UzMiBwaXhlbF9mb3JtYXQ7CiBfX3UzMiBmbGFnczsKIyA1 MjAgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgogX191MzIgaGFuZGxlc1s0XTsKIF9f dTMyIHBpdGNoZXNbNF07CiBfX3UzMiBvZmZzZXRzWzRdOwogX191NjQgbW9kaWZpZXJbNF07Cn07 CiMgNTU5ICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKc3RydWN0IGRybV9tb2RlX2Zi X2RpcnR5X2NtZCB7CiBfX3UzMiBmYl9pZDsKIF9fdTMyIGZsYWdzOwogX191MzIgY29sb3I7CiBf X3UzMiBudW1fY2xpcHM7CiBfX3U2NCBjbGlwc19wdHI7Cn07CgpzdHJ1Y3QgZHJtX21vZGVfbW9k ZV9jbWQgewogX191MzIgY29ubmVjdG9yX2lkOwogc3RydWN0IGRybV9tb2RlX21vZGVpbmZvIG1v ZGU7Cn07CiMgNTkwICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKc3RydWN0IGRybV9t b2RlX2N1cnNvciB7CiBfX3UzMiBmbGFnczsKIF9fdTMyIGNydGNfaWQ7CiBfX3MzMiB4OwogX19z MzIgeTsKIF9fdTMyIHdpZHRoOwogX191MzIgaGVpZ2h0OwoKIF9fdTMyIGhhbmRsZTsKfTsKCnN0 cnVjdCBkcm1fbW9kZV9jdXJzb3IyIHsKIF9fdTMyIGZsYWdzOwogX191MzIgY3J0Y19pZDsKIF9f czMyIHg7CiBfX3MzMiB5OwogX191MzIgd2lkdGg7CiBfX3UzMiBoZWlnaHQ7CgogX191MzIgaGFu ZGxlOwogX19zMzIgaG90X3g7CiBfX3MzMiBob3RfeTsKfTsKCnN0cnVjdCBkcm1fbW9kZV9jcnRj X2x1dCB7CiBfX3UzMiBjcnRjX2lkOwogX191MzIgZ2FtbWFfc2l6ZTsKCgogX191NjQgcmVkOwog X191NjQgZ3JlZW47CiBfX3U2NCBibHVlOwp9OwoKc3RydWN0IGRybV9jb2xvcl9jdG0gewoKCgoK IF9fdTY0IG1hdHJpeFs5XTsKfTsKCnN0cnVjdCBkcm1fY29sb3JfbHV0IHsKCgoKCiBfX3UxNiBy ZWQ7CiBfX3UxNiBncmVlbjsKIF9fdTE2IGJsdWU7CiBfX3UxNiByZXNlcnZlZDsKfTsKIyA2NTIg Ii4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgpzdHJ1Y3QgaGRyX21ldGFkYXRhX2luZm9m cmFtZSB7CgoKCgogX191OCBlb3RmOwoKCgogX191OCBtZXRhZGF0YV90eXBlOwojIDY3MCAiLi9p bmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCiBzdHJ1Y3QgewogIF9fdTE2IHgsIHk7CiAgfSBk aXNwbGF5X3ByaW1hcmllc1szXTsKIyA2ODEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5o Igogc3RydWN0IHsKICBfX3UxNiB4LCB5OwogIH0gd2hpdGVfcG9pbnQ7CgoKCgoKIF9fdTE2IG1h eF9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFuY2U7CgoKCgoKCiBfX3UxNiBtaW5fZGlzcGxheV9t YXN0ZXJpbmdfbHVtaW5hbmNlOwoKCgoKCiBfX3UxNiBtYXhfY2xsOwoKCgoKCiBfX3UxNiBtYXhf ZmFsbDsKfTsKCgoKCgoKc3RydWN0IGhkcl9vdXRwdXRfbWV0YWRhdGEgewoKCgogX191MzIgbWV0 YWRhdGFfdHlwZTsKCgoKIHVuaW9uIHsKICBzdHJ1Y3QgaGRyX21ldGFkYXRhX2luZm9mcmFtZSBo ZG1pX21ldGFkYXRhX3R5cGUxOwogfTsKfTsKIyA3NjMgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1f bW9kZS5oIgpzdHJ1Y3QgZHJtX21vZGVfY3J0Y19wYWdlX2ZsaXAgewogX191MzIgY3J0Y19pZDsK IF9fdTMyIGZiX2lkOwogX191MzIgZmxhZ3M7CiBfX3UzMiByZXNlcnZlZDsKIF9fdTY0IHVzZXJf ZGF0YTsKfTsKIyA3OTEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgpzdHJ1Y3QgZHJt X21vZGVfY3J0Y19wYWdlX2ZsaXBfdGFyZ2V0IHsKIF9fdTMyIGNydGNfaWQ7CiBfX3UzMiBmYl9p ZDsKIF9fdTMyIGZsYWdzOwogX191MzIgc2VxdWVuY2U7CiBfX3U2NCB1c2VyX2RhdGE7Cn07CgoK c3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iIHsKIF9fdTMyIGhlaWdodDsKIF9fdTMyIHdpZHRo OwogX191MzIgYnBwOwogX191MzIgZmxhZ3M7CgogX191MzIgaGFuZGxlOwogX191MzIgcGl0Y2g7 CiBfX3U2NCBzaXplOwp9OwoKCnN0cnVjdCBkcm1fbW9kZV9tYXBfZHVtYiB7CgogX191MzIgaGFu ZGxlOwogX191MzIgcGFkOwoKCgoKCiBfX3U2NCBvZmZzZXQ7Cn07CgpzdHJ1Y3QgZHJtX21vZGVf ZGVzdHJveV9kdW1iIHsKIF9fdTMyIGhhbmRsZTsKfTsKIyA4NDAgIi4vaW5jbHVkZS91YXBpL2Ry bS9kcm1fbW9kZS5oIgpzdHJ1Y3QgZHJtX21vZGVfYXRvbWljIHsKIF9fdTMyIGZsYWdzOwogX191 MzIgY291bnRfb2JqczsKIF9fdTY0IG9ianNfcHRyOwogX191NjQgY291bnRfcHJvcHNfcHRyOwog X191NjQgcHJvcHNfcHRyOwogX191NjQgcHJvcF92YWx1ZXNfcHRyOwogX191NjQgcmVzZXJ2ZWQ7 CiBfX3U2NCB1c2VyX2RhdGE7Cn07CgpzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmllcl9ibG9iIHsK CgogX191MzIgdmVyc2lvbjsKCgogX191MzIgZmxhZ3M7CgoKIF9fdTMyIGNvdW50X2Zvcm1hdHM7 CgoKIF9fdTMyIGZvcm1hdHNfb2Zmc2V0OwoKCiBfX3UzMiBjb3VudF9tb2RpZmllcnM7CgoKIF9f dTMyIG1vZGlmaWVyc19vZmZzZXQ7CgoKCn07CgpzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmllciB7 CiMgODkzICIuL2luY2x1ZGUvdWFwaS9kcm0vZHJtX21vZGUuaCIKIF9fdTY0IGZvcm1hdHM7CiBf X3UzMiBvZmZzZXQ7CiBfX3UzMiBwYWQ7CgoKIF9fdTY0IG1vZGlmaWVyOwp9OwojIDkwOSAiLi9p bmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCnN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfYmxvYiB7 CgogX191NjQgZGF0YTsKCiBfX3UzMiBsZW5ndGg7CgogX191MzIgYmxvYl9pZDsKfTsKCgoKCgoK c3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfYmxvYiB7CiBfX3UzMiBibG9iX2lkOwp9OwojIDkzNiAi Li9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgiCnN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfbGVh c2UgewoKIF9fdTY0IG9iamVjdF9pZHM7CgogX191MzIgb2JqZWN0X2NvdW50OwoKIF9fdTMyIGZs YWdzOwoKCiBfX3UzMiBsZXNzZWVfaWQ7CgogX191MzIgZmQ7Cn07CiMgOTU3ICIuL2luY2x1ZGUv dWFwaS9kcm0vZHJtX21vZGUuaCIKc3RydWN0IGRybV9tb2RlX2xpc3RfbGVzc2VlcyB7CgoKCgoK CgogX191MzIgY291bnRfbGVzc2VlczsKIF9fdTMyIHBhZDsKCgoKCiBfX3U2NCBsZXNzZWVzX3B0 cjsKfTsKIyA5ODEgIi4vaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIgpzdHJ1Y3QgZHJtX21v ZGVfZ2V0X2xlYXNlIHsKCgoKCgoKCiBfX3UzMiBjb3VudF9vYmplY3RzOwogX191MzIgcGFkOwoK CgoKIF9fdTY0IG9iamVjdHNfcHRyOwp9OwoKCgoKCgpzdHJ1Y3QgZHJtX21vZGVfcmV2b2tlX2xl YXNlIHsKCgogX191MzIgbGVzc2VlX2lkOwp9OwojIDEwMjEgIi4vaW5jbHVkZS91YXBpL2RybS9k cm1fbW9kZS5oIgpzdHJ1Y3QgZHJtX21vZGVfcmVjdCB7CiBfX3MzMiB4MTsKIF9fczMyIHkxOwog X19zMzIgeDI7CiBfX3MzMiB5MjsKfTsKIyA4MTcgIi4vaW5jbHVkZS91YXBpL2RybS9kcm0uaCIg MgojIDk3NCAiLi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIgpzdHJ1Y3QgZHJtX2V2ZW50IHsKIF9f dTMyIHR5cGU7CiBfX3UzMiBsZW5ndGg7Cn07CgoKCgoKc3RydWN0IGRybV9ldmVudF92Ymxhbmsg ewogc3RydWN0IGRybV9ldmVudCBiYXNlOwogX191NjQgdXNlcl9kYXRhOwogX191MzIgdHZfc2Vj OwogX191MzIgdHZfdXNlYzsKIF9fdTMyIHNlcXVlbmNlOwogX191MzIgY3J0Y19pZDsKfTsKCgoK CnN0cnVjdCBkcm1fZXZlbnRfY3J0Y19zZXF1ZW5jZSB7CiBzdHJ1Y3QgZHJtX2V2ZW50IGJhc2U7 CiBfX3U2NCB1c2VyX2RhdGE7CiBfX3M2NCB0aW1lX25zOwogX191NjQgc2VxdWVuY2U7Cn07CiMg MzYgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiIDIKCgpleHRlcm4gdW5zaWduZWQgaW50IF9f ZHJtX2RlYnVnOwojIDc1ICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIgpzdHJ1Y3QgZHJtX3By aW50ZXIgewoKIHZvaWQgKCpwcmludGZuKShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHN0cnVjdCB2 YV9mb3JtYXQgKnZhZik7CiB2b2lkICgqcHV0cykoc3RydWN0IGRybV9wcmludGVyICpwLCBjb25z dCBjaGFyICpzdHIpOwogdm9pZCAqYXJnOwogY29uc3QgY2hhciAqcHJlZml4Owp9OwoKdm9pZCBf X2RybV9wcmludGZuX2NvcmVkdW1wKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgc3RydWN0IHZhX2Zv cm1hdCAqdmFmKTsKdm9pZCBfX2RybV9wdXRzX2NvcmVkdW1wKHN0cnVjdCBkcm1fcHJpbnRlciAq cCwgY29uc3QgY2hhciAqc3RyKTsKdm9pZCBfX2RybV9wcmludGZuX3NlcV9maWxlKHN0cnVjdCBk cm1fcHJpbnRlciAqcCwgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKTsKdm9pZCBfX2RybV9wdXRzX3Nl cV9maWxlKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgY29uc3QgY2hhciAqc3RyKTsKdm9pZCBfX2Ry bV9wcmludGZuX2luZm8oc3RydWN0IGRybV9wcmludGVyICpwLCBzdHJ1Y3QgdmFfZm9ybWF0ICp2 YWYpOwp2b2lkIF9fZHJtX3ByaW50Zm5fZGVidWcoc3RydWN0IGRybV9wcmludGVyICpwLCBzdHJ1 Y3QgdmFfZm9ybWF0ICp2YWYpOwp2b2lkIF9fZHJtX3ByaW50Zm5fZXJyKHN0cnVjdCBkcm1fcHJp bnRlciAqcCwgc3RydWN0IHZhX2Zvcm1hdCAqdmFmKTsKCl9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18ocHJpbnRmLCAyLCAzKSkpCnZvaWQgZHJtX3ByaW50ZihzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAs IGNvbnN0IGNoYXIgKmYsIC4uLik7CnZvaWQgZHJtX3B1dHMoc3RydWN0IGRybV9wcmludGVyICpw LCBjb25zdCBjaGFyICpzdHIpOwp2b2lkIGRybV9wcmludF9yZWdzZXQzMihzdHJ1Y3QgZHJtX3By aW50ZXIgKnAsIHN0cnVjdCBkZWJ1Z2ZzX3JlZ3NldDMyICpyZWdzZXQpOwp2b2lkIGRybV9wcmlu dF9iaXRzKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwKICAgICAg Y29uc3QgY2hhciAqIGNvbnN0IGJpdHNbXSwgdW5zaWduZWQgaW50IG5iaXRzKTsKCl9fYXR0cmli dXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAwKSkpCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHZvaWQKZHJtX3ZwcmludGYo c3RydWN0IGRybV9wcmludGVyICpwLCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgKnZhKQp7CiBz dHJ1Y3QgdmFfZm9ybWF0IHZhZiA9IHsgLmZtdCA9IGZtdCwgLnZhID0gdmEgfTsKCiBwLT5wcmlu dGZuKHAsICZ2YWYpOwp9CiMgMTI4ICIuL2luY2x1ZGUvZHJtL2RybV9wcmludC5oIgpzdHJ1Y3Qg ZHJtX3ByaW50X2l0ZXJhdG9yIHsKIHZvaWQgKmRhdGE7CiBzc2l6ZV90IHN0YXJ0Owogc3NpemVf dCByZW1haW47Cgogc3NpemVfdCBvZmZzZXQ7Cn07CiMgMTcyICIuL2luY2x1ZGUvZHJtL2RybV9w cmludC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19h dHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVu Y3Rpb24pKSBzdHJ1Y3QgZHJtX3ByaW50ZXIKZHJtX2NvcmVkdW1wX3ByaW50ZXIoc3RydWN0IGRy bV9wcmludF9pdGVyYXRvciAqaXRlcikKewogc3RydWN0IGRybV9wcmludGVyIHAgPSB7CiAgLnBy aW50Zm4gPSBfX2RybV9wcmludGZuX2NvcmVkdW1wLAogIC5wdXRzID0gX19kcm1fcHV0c19jb3Jl ZHVtcCwKICAuYXJnID0gaXRlciwKIH07CgoKIGl0ZXItPm9mZnNldCA9IDA7CgogcmV0dXJuIHA7 Cn0KIyAxOTQgIi4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRy aWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19h dHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkcm1fcHJpbnRlciBk cm1fc2VxX2ZpbGVfcHJpbnRlcihzdHJ1Y3Qgc2VxX2ZpbGUgKmYpCnsKIHN0cnVjdCBkcm1fcHJp bnRlciBwID0gewogIC5wcmludGZuID0gX19kcm1fcHJpbnRmbl9zZXFfZmlsZSwKICAucHV0cyA9 IF9fZHJtX3B1dHNfc2VxX2ZpbGUsCiAgLmFyZyA9IGYsCiB9OwogcmV0dXJuIHA7Cn0KIyAyMTEg Ii4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkcm1fcHJpbnRlciBkcm1faW5mb19w cmludGVyKHN0cnVjdCBkZXZpY2UgKmRldikKewogc3RydWN0IGRybV9wcmludGVyIHAgPSB7CiAg LnByaW50Zm4gPSBfX2RybV9wcmludGZuX2luZm8sCiAgLmFyZyA9IGRldiwKIH07CiByZXR1cm4g cDsKfQojIDIyNyAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIKc3RhdGljIGlubGluZSBfX2F0 dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBf X2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRybV9wcmludGVy IGRybV9kZWJ1Z19wcmludGVyKGNvbnN0IGNoYXIgKnByZWZpeCkKewogc3RydWN0IGRybV9wcmlu dGVyIHAgPSB7CiAgLnByaW50Zm4gPSBfX2RybV9wcmludGZuX2RlYnVnLAogIC5wcmVmaXggPSBw cmVmaXgKIH07CiByZXR1cm4gcDsKfQojIDI0MyAiLi9pbmNsdWRlL2RybS9kcm1fcHJpbnQuaCIK c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg c3RydWN0IGRybV9wcmludGVyIGRybV9lcnJfcHJpbnRlcihjb25zdCBjaGFyICpwcmVmaXgpCnsK IHN0cnVjdCBkcm1fcHJpbnRlciBwID0gewogIC5wcmludGZuID0gX19kcm1fcHJpbnRmbl9lcnIs CiAgLnByZWZpeCA9IHByZWZpeAogfTsKIHJldHVybiBwOwp9CiMgMjc3ICIuL2luY2x1ZGUvZHJt L2RybV9wcmludC5oIgplbnVtIGRybV9kZWJ1Z19jYXRlZ29yeSB7CgoKCgogRFJNX1VUX0NPUkUg PSAweDAxLAoKCgoKIERSTV9VVF9EUklWRVIgPSAweDAyLAoKCgogRFJNX1VUX0tNUyA9IDB4MDQs CgoKCiBEUk1fVVRfUFJJTUUgPSAweDA4LAoKCgogRFJNX1VUX0FUT01JQyA9IDB4MTAsCgoKCiBE Uk1fVVRfVkJMID0gMHgyMCwKCgoKIERSTV9VVF9TVEFURSA9IDB4NDAsCgoKCiBEUk1fVVRfTEVB U0UgPSAweDgwLAoKCgogRFJNX1VUX0RQID0gMHgxMDAsCn07CgpzdGF0aWMgaW5saW5lIF9fYXR0 cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9f YXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRybV9kZWJ1Z19lbmFi bGVkKGVudW0gZHJtX2RlYnVnX2NhdGVnb3J5IGNhdGVnb3J5KQp7CiByZXR1cm4gX19idWlsdGlu X2V4cGVjdCghIShfX2RybV9kZWJ1ZyAmIGNhdGVnb3J5KSwgMCk7Cn0KCgoKCgoKCl9fYXR0cmli dXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAzLCA0KSkpCnZvaWQgZHJtX2Rldl9wcmludGsoY29u c3Qgc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpsZXZlbCwKICAgICAgY29uc3QgY2hh ciAqZm9ybWF0LCAuLi4pOwpfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMywgNCkp KQp2b2lkIGRybV9kZXZfZGJnKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBkcm1fZGVi dWdfY2F0ZWdvcnkgY2F0ZWdvcnksCiAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKIyA0ODkg Ii4vaW5jbHVkZS9kcm0vZHJtX3ByaW50LmgiCl9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJp bnRmLCAyLCAzKSkpCnZvaWQgX19kcm1fZGJnKGVudW0gZHJtX2RlYnVnX2NhdGVnb3J5IGNhdGVn b3J5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7Cl9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18o cHJpbnRmLCAxLCAyKSkpCnZvaWQgX19kcm1fZXJyKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsK IyAzOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL29zX3R5cGVz LmgiIDIKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2Nnc19j b21tb24uaCIgMQojIDI3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUv Y2dzX2NvbW1vbi5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVk ZS9hbWRfc2hhcmVkLmgiIDEKIyAyNiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9p bmNsdWRlL2FtZF9zaGFyZWQuaCIKIyAxICIuL2luY2x1ZGUvZHJtL2FtZF9hc2ljX3R5cGUuaCIg MQojIDI4ICIuL2luY2x1ZGUvZHJtL2FtZF9hc2ljX3R5cGUuaCIKZW51bSBhbWRfYXNpY190eXBl IHsKIENISVBfVEFISVRJID0gMCwKIENISVBfUElUQ0FJUk4sCiBDSElQX1ZFUkRFLAogQ0hJUF9P TEFORCwKIENISVBfSEFJTkFOLAogQ0hJUF9CT05BSVJFLAogQ0hJUF9LQVZFUkksCiBDSElQX0tB QklOSSwKIENISVBfSEFXQUlJLAogQ0hJUF9NVUxMSU5TLAogQ0hJUF9UT1BBWiwKIENISVBfVE9O R0EsCiBDSElQX0ZJSkksCiBDSElQX0NBUlJJWk8sCiBDSElQX1NUT05FWSwKIENISVBfUE9MQVJJ UzEwLAogQ0hJUF9QT0xBUklTMTEsCiBDSElQX1BPTEFSSVMxMiwKIENISVBfVkVHQU0sCiBDSElQ X1ZFR0ExMCwKIENISVBfVkVHQTEyLAogQ0hJUF9WRUdBMjAsCiBDSElQX1JBVkVOLAogQ0hJUF9B UkNUVVJVUywKIENISVBfUkVOT0lSLAogQ0hJUF9OQVZJMTAsCiBDSElQX05BVkkxNCwKIENISVBf TkFWSTEyLAogQ0hJUF9MQVNULAp9OwoKZXh0ZXJuIGNvbnN0IGNoYXIgKmFtZGdwdV9hc2ljX25h bWVbXTsKIyAyNyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2FtZF9z aGFyZWQuaCIgMgoKCgoKCgoKZW51bSBhbWRfY2hpcF9mbGFncyB7CiBBTURfQVNJQ19NQVNLID0g MHgwMDAwZmZmZlVMLAogQU1EX0ZMQUdTX01BU0sgPSAweGZmZmYwMDAwVUwsCiBBTURfSVNfTU9C SUxJVFkgPSAweDAwMDEwMDAwVUwsCiBBTURfSVNfQVBVID0gMHgwMDAyMDAwMFVMLAogQU1EX0lT X1BYID0gMHgwMDA0MDAwMFVMLAogQU1EX0VYUF9IV19TVVBQT1JUID0gMHgwMDA4MDAwMFVMLAp9 OwoKZW51bSBhbWRfaXBfYmxvY2tfdHlwZSB7CiBBTURfSVBfQkxPQ0tfVFlQRV9DT01NT04sCiBB TURfSVBfQkxPQ0tfVFlQRV9HTUMsCiBBTURfSVBfQkxPQ0tfVFlQRV9JSCwKIEFNRF9JUF9CTE9D S19UWVBFX1NNQywKIEFNRF9JUF9CTE9DS19UWVBFX1BTUCwKIEFNRF9JUF9CTE9DS19UWVBFX0RD RSwKIEFNRF9JUF9CTE9DS19UWVBFX0dGWCwKIEFNRF9JUF9CTE9DS19UWVBFX1NETUEsCiBBTURf SVBfQkxPQ0tfVFlQRV9VVkQsCiBBTURfSVBfQkxPQ0tfVFlQRV9WQ0UsCiBBTURfSVBfQkxPQ0tf VFlQRV9BQ1AsCiBBTURfSVBfQkxPQ0tfVFlQRV9WQ04sCiBBTURfSVBfQkxPQ0tfVFlQRV9NRVMs CiBBTURfSVBfQkxPQ0tfVFlQRV9KUEVHCn07CgplbnVtIGFtZF9jbG9ja2dhdGluZ19zdGF0ZSB7 CiBBTURfQ0dfU1RBVEVfR0FURSA9IDAsCiBBTURfQ0dfU1RBVEVfVU5HQVRFLAp9OwoKCmVudW0g YW1kX3Bvd2VyZ2F0aW5nX3N0YXRlIHsKIEFNRF9QR19TVEFURV9HQVRFID0gMCwKIEFNRF9QR19T VEFURV9VTkdBVEUsCn07CiMgMTI0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2lu Y2x1ZGUvYW1kX3NoYXJlZC5oIgplbnVtIFBQX0ZFQVRVUkVfTUFTSyB7CiBQUF9TQ0xLX0RQTV9N QVNLID0gMHgxLAogUFBfTUNMS19EUE1fTUFTSyA9IDB4MiwKIFBQX1BDSUVfRFBNX01BU0sgPSAw eDQsCiBQUF9TQ0xLX0RFRVBfU0xFRVBfTUFTSyA9IDB4OCwKIFBQX1BPV0VSX0NPTlRBSU5NRU5U X01BU0sgPSAweDEwLAogUFBfVVZEX0hBTkRTSEFLRV9NQVNLID0gMHgyMCwKIFBQX1NNQ19WT0xU QUdFX0NPTlRST0xfTUFTSyA9IDB4NDAsCiBQUF9WQklfVElNRV9TVVBQT1JUX01BU0sgPSAweDgw LAogUFBfVUxWX01BU0sgPSAweDEwMCwKIFBQX0VOQUJMRV9HRlhfQ0dfVEhSVV9TTVUgPSAweDIw MCwKIFBQX0NMT0NLX1NUUkVUQ0hfTUFTSyA9IDB4NDAwLAogUFBfT0RfRlVaWllfRkFOX0NPTlRS T0xfTUFTSyA9IDB4ODAwLAogUFBfU09DQ0xLX0RQTV9NQVNLID0gMHgxMDAwLAogUFBfRENFRkNM S19EUE1fTUFTSyA9IDB4MjAwMCwKIFBQX09WRVJEUklWRV9NQVNLID0gMHg0MDAwLAogUFBfR0ZY T0ZGX01BU0sgPSAweDgwMDAsCiBQUF9BQ0dfTUFTSyA9IDB4MTAwMDAsCiBQUF9TVFVUVEVSX01P REUgPSAweDIwMDAwLAogUFBfQVZGU19NQVNLID0gMHg0MDAwMCwKfTsKCmVudW0gRENfRkVBVFVS RV9NQVNLIHsKIERDX0ZCQ19NQVNLID0gMHgxLAogRENfTVVMVElfTU9OX1BQX01DTEtfU1dJVENI X01BU0sgPSAweDIsCiBEQ19ESVNBQkxFX0ZSQUNUSU9OQUxfUFdNX01BU0sgPSAweDQsCiBEQ19Q U1JfTUFTSyA9IDB4OCwKfTsKCmVudW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWw7CgoKCnN0cnVjdCBh bWRfaXBfZnVuY3MgewoKIGNoYXIgKm5hbWU7CgoKCgoKCiBpbnQgKCplYXJseV9pbml0KSh2b2lk ICpoYW5kbGUpOwoKIGludCAoKmxhdGVfaW5pdCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpzd19p bml0KSh2b2lkICpoYW5kbGUpOwoKIGludCAoKnN3X2ZpbmkpKHZvaWQgKmhhbmRsZSk7CgogaW50 ICgqaHdfaW5pdCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpod19maW5pKSh2b2lkICpoYW5kbGUp OwoKIHZvaWQgKCpsYXRlX2ZpbmkpKHZvaWQgKmhhbmRsZSk7CgogaW50ICgqc3VzcGVuZCkodm9p ZCAqaGFuZGxlKTsKCiBpbnQgKCpyZXN1bWUpKHZvaWQgKmhhbmRsZSk7CgogYm9vbCAoKmlzX2lk bGUpKHZvaWQgKmhhbmRsZSk7CgogaW50ICgqd2FpdF9mb3JfaWRsZSkodm9pZCAqaGFuZGxlKTsK CiBib29sICgqY2hlY2tfc29mdF9yZXNldCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpwcmVfc29m dF9yZXNldCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpzb2Z0X3Jlc2V0KSh2b2lkICpoYW5kbGUp OwoKIGludCAoKnBvc3Rfc29mdF9yZXNldCkodm9pZCAqaGFuZGxlKTsKCiBpbnQgKCpzZXRfY2xv Y2tnYXRpbmdfc3RhdGUpKHZvaWQgKmhhbmRsZSwKICAgICAgICAgZW51bSBhbWRfY2xvY2tnYXRp bmdfc3RhdGUgc3RhdGUpOwoKIGludCAoKnNldF9wb3dlcmdhdGluZ19zdGF0ZSkodm9pZCAqaGFu ZGxlLAogICAgICAgICBlbnVtIGFtZF9wb3dlcmdhdGluZ19zdGF0ZSBzdGF0ZSk7Cgogdm9pZCAo KmdldF9jbG9ja2dhdGluZ19zdGF0ZSkodm9pZCAqaGFuZGxlLCB1MzIgKmZsYWdzKTsKCiBpbnQg KCplbmFibGVfdW1kX3BzdGF0ZSkodm9pZCAqaGFuZGxlLCBlbnVtIGFtZF9kcG1fZm9yY2VkX2xl dmVsICpsZXZlbCk7Cn07CiMgMjggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5j bHVkZS9jZ3NfY29tbW9uLmgiIDIKCnN0cnVjdCBjZ3NfZGV2aWNlOwoKCgoKZW51bSBjZ3NfaW5k X3JlZyB7CiBDR1NfSU5EX1JFR19fTU1JTywKIENHU19JTkRfUkVHX19QQ0lFLAogQ0dTX0lORF9S RUdfX1NNQywKIENHU19JTkRfUkVHX19VVkRfQ1RYLAogQ0dTX0lORF9SRUdfX0RJRFQsCiBDR1Nf SU5EX1JFR19HQ19DQUMsCiBDR1NfSU5EX1JFR19TRV9DQUMsCiBDR1NfSU5EX1JFR19fQVVESU9f RU5EUFQKfTsKCgoKCmVudW0gY2dzX3Vjb2RlX2lkIHsKIENHU19VQ09ERV9JRF9TTVUgPSAwLAog Q0dTX1VDT0RFX0lEX1NNVV9TSywKIENHU19VQ09ERV9JRF9TRE1BMCwKIENHU19VQ09ERV9JRF9T RE1BMSwKIENHU19VQ09ERV9JRF9DUF9DRSwKIENHU19VQ09ERV9JRF9DUF9QRlAsCiBDR1NfVUNP REVfSURfQ1BfTUUsCiBDR1NfVUNPREVfSURfQ1BfTUVDLAogQ0dTX1VDT0RFX0lEX0NQX01FQ19K VDEsCiBDR1NfVUNPREVfSURfQ1BfTUVDX0pUMiwKIENHU19VQ09ERV9JRF9HTUNPTl9SRU5HLAog Q0dTX1VDT0RFX0lEX1JMQ19HLAogQ0dTX1VDT0RFX0lEX1NUT1JBR0UsCiBDR1NfVUNPREVfSURf TUFYSU1VTSwKfTsKCgoKCnN0cnVjdCBjZ3NfZmlybXdhcmVfaW5mbyB7CiB1aW50MTZfdCB2ZXJz aW9uOwogdWludDE2X3QgZndfdmVyc2lvbjsKIHVpbnQxNl90IGZlYXR1cmVfdmVyc2lvbjsKIHVp bnQzMl90IGltYWdlX3NpemU7CiB1aW50NjRfdCBtY19hZGRyOwoKCiB1aW50MzJfdCB1Y29kZV9z dGFydF9hZGRyZXNzOwoKIHZvaWQgKmtwdHI7CiBib29sIGlzX2tpY2tlcjsKfTsKCnR5cGVkZWYg dW5zaWduZWQgbG9uZyBjZ3NfaGFuZGxlX3Q7CiMgOTEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vaW5jbHVkZS9jZ3NfY29tbW9uLmgiCnR5cGVkZWYgdWludDMyX3QgKCpjZ3NfcmVh ZF9yZWdpc3Rlcl90KShzdHJ1Y3QgY2dzX2RldmljZSAqY2dzX2RldmljZSwgdW5zaWduZWQgb2Zm c2V0KTsKCgoKCgoKCnR5cGVkZWYgdm9pZCAoKmNnc193cml0ZV9yZWdpc3Rlcl90KShzdHJ1Y3Qg Y2dzX2RldmljZSAqY2dzX2RldmljZSwgdW5zaWduZWQgb2Zmc2V0LAogICAgICAgICB1aW50MzJf dCB2YWx1ZSk7CiMgMTA5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUv Y2dzX2NvbW1vbi5oIgp0eXBlZGVmIHVpbnQzMl90ICgqY2dzX3JlYWRfaW5kX3JlZ2lzdGVyX3Qp KHN0cnVjdCBjZ3NfZGV2aWNlICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19pbmRfcmVnIHNwYWNlLAog ICAgICAgICB1bnNpZ25lZCBpbmRleCk7CgoKCgoKCgp0eXBlZGVmIHZvaWQgKCpjZ3Nfd3JpdGVf aW5kX3JlZ2lzdGVyX3QpKHN0cnVjdCBjZ3NfZGV2aWNlICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19p bmRfcmVnIHNwYWNlLAogICAgICB1bnNpZ25lZCBpbmRleCwgdWludDMyX3QgdmFsdWUpOwojIDEz NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2Nnc19jb21tb24uaCIK dHlwZWRlZiBpbnQgKCpjZ3NfZ2V0X2Zpcm13YXJlX2luZm8pKHN0cnVjdCBjZ3NfZGV2aWNlICpj Z3NfZGV2aWNlLAogICAgICAgICBlbnVtIGNnc191Y29kZV9pZCB0eXBlLAogICAgICAgICBzdHJ1 Y3QgY2dzX2Zpcm13YXJlX2luZm8gKmluZm8pOwoKc3RydWN0IGNnc19vcHMgewoKIGNnc19yZWFk X3JlZ2lzdGVyX3QgcmVhZF9yZWdpc3RlcjsKIGNnc193cml0ZV9yZWdpc3Rlcl90IHdyaXRlX3Jl Z2lzdGVyOwogY2dzX3JlYWRfaW5kX3JlZ2lzdGVyX3QgcmVhZF9pbmRfcmVnaXN0ZXI7CiBjZ3Nf d3JpdGVfaW5kX3JlZ2lzdGVyX3Qgd3JpdGVfaW5kX3JlZ2lzdGVyOwoKIGNnc19nZXRfZmlybXdh cmVfaW5mbyBnZXRfZmlybXdhcmVfaW5mbzsKfTsKCnN0cnVjdCBjZ3Nfb3Nfb3BzOwoKc3RydWN0 IGNnc19kZXZpY2UKewogY29uc3Qgc3RydWN0IGNnc19vcHMgKm9wczsKCn07CiMgNDAgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9vc190eXBlcy5oIiAyCiMgNTUg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9vc190eXBlcy5oIgoj IDEgIi4vYXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L2FwaS5oIiAxCiMgMjIgIi4vYXJjaC94ODYv aW5jbHVkZS9hc20vZnB1L2FwaS5oIgpleHRlcm4gdm9pZCBrZXJuZWxfZnB1X2JlZ2luKHZvaWQp OwpleHRlcm4gdm9pZCBrZXJuZWxfZnB1X2VuZCh2b2lkKTsKZXh0ZXJuIGJvb2wgaXJxX2ZwdV91 c2FibGUodm9pZCk7CmV4dGVybiB2b2lkIGZwcmVnc19tYXJrX2FjdGl2YXRlKHZvaWQpOwoKCgoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgdm9pZCBmcHJlZ3NfbG9jayh2b2lkKQp7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6 Im1lbW9yeSIpOwogbG9jYWxfYmhfZGlzYWJsZSgpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmli dXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0 cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB2b2lkIGZwcmVnc191bmxvY2sodm9p ZCkKewogbG9jYWxfYmhfZW5hYmxlKCk7CiBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1l bW9yeSIpOwp9CgoKZXh0ZXJuIHZvaWQgZnByZWdzX2Fzc2VydF9zdGF0ZV9jb25zaXN0ZW50KHZv aWQpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgc3dpdGNoX2ZwdV9yZXR1cm4odm9pZCk7CiMgNjMgIi4v YXJjaC94ODYvaW5jbHVkZS9hc20vZnB1L2FwaS5oIgpleHRlcm4gaW50IGNwdV9oYXNfeGZlYXR1 cmVzKHU2NCB4ZmVhdHVyZXNfbWFzaywgY29uc3QgY2hhciAqKmZlYXR1cmVfbmFtZSk7CiMgNTYg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9vc190eXBlcy5oIiAy CiMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBl cy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1 ZGUvZml4ZWQzMV8zMi5oIiAxCiMgNTcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKc3RydWN0IGZpeGVkMzFfMzIgewogbG9uZyBs b25nIHZhbHVlOwp9OwoKCgoKCgoKc3RhdGljIGNvbnN0IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2Zp eHB0X3plcm8gPSB7IDAgfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0 X2Vwc2lsb24gPSB7IDFMTCB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4 cHRfaGFsZiA9IHsgMHg4MDAwMDAwMExMIH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8z MiBkY19maXhwdF9vbmUgPSB7IDB4MTAwMDAwMDAwTEwgfTsKCnN0YXRpYyBjb25zdCBzdHJ1Y3Qg Zml4ZWQzMV8zMiBkY19maXhwdF9waSA9IHsgMTM0OTMwMzc3MDVMTCB9OwpzdGF0aWMgY29uc3Qg c3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfdHdvX3BpID0geyAyNjk4NjA3NTQwOUxMIH07CnN0 YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9lID0geyAxMTY3NDkzMTU1NUxM IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9sbjIgPSB7IDI5Nzcw NDQ0NzFMTCB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfbG4yX2Rp dl8yID0geyAxNDg4NTIyMjM2TEwgfTsKIyA4NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgpzdHJ1Y3QgZml4ZWQzMV8zMiBkY19m aXhwdF9mcm9tX2ZyYWN0aW9uKGxvbmcgbG9uZyBudW1lcmF0b3IsIGxvbmcgbG9uZyBkZW5vbWlu YXRvcik7CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfZnJvbV9pbnQoaW50IGFyZykK ewogc3RydWN0IGZpeGVkMzFfMzIgcmVzOwoKIHJlcy52YWx1ZSA9IChsb25nIGxvbmcpIGFyZyA8 PCAzMjsKCiByZXR1cm4gcmVzOwp9CiMgMTExICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2Zp eHB0X25lZyhzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpCnsKIHN0cnVjdCBmaXhlZDMxXzMyIHJlczsK CiByZXMudmFsdWUgPSAtYXJnLnZhbHVlOwoKIHJldHVybiByZXM7Cn0KCgoKCgpzdGF0aWMgaW5s aW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVz ZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4 ZWQzMV8zMiBkY19maXhwdF9hYnMoc3RydWN0IGZpeGVkMzFfMzIgYXJnKQp7CiBpZiAoYXJnLnZh bHVlIDwgMCkKICByZXR1cm4gZGNfZml4cHRfbmVnKGFyZyk7CiBlbHNlCiAgcmV0dXJuIGFyZzsK fQojIDE0MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9f KSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1l bnRfZnVuY3Rpb24pKSBib29sIGRjX2ZpeHB0X2x0KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0 cnVjdCBmaXhlZDMxXzMyIGFyZzIpCnsKIHJldHVybiBhcmcxLnZhbHVlIDwgYXJnMi52YWx1ZTsK fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZGNfZml4cHRfbGUoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZp eGVkMzFfMzIgYXJnMikKewogcmV0dXJuIGFyZzEudmFsdWUgPD0gYXJnMi52YWx1ZTsKfQoKCgoK CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgZGNfZml4cHRfZXEoc3RydWN0IGZpeGVkMzFfMzIgYXJnMSwgc3RydWN0IGZpeGVkMzFf MzIgYXJnMikKewogcmV0dXJuIGFyZzEudmFsdWUgPT0gYXJnMi52YWx1ZTsKfQoKCgoKCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVj dCBmaXhlZDMxXzMyIGRjX2ZpeHB0X21pbihzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcxLCBzdHJ1Y3Qg Zml4ZWQzMV8zMiBhcmcyKQp7CiBpZiAoYXJnMS52YWx1ZSA8PSBhcmcyLnZhbHVlKQogIHJldHVy biBhcmcxOwogZWxzZQogIHJldHVybiBhcmcyOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNf Zml4cHRfbWF4KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIp CnsKIGlmIChhcmcxLnZhbHVlIDw9IGFyZzIudmFsdWUpCiAgcmV0dXJuIGFyZzI7CiBlbHNlCiAg cmV0dXJuIGFyZzE7Cn0KCgoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X2NsYW1wKAog c3RydWN0IGZpeGVkMzFfMzIgYXJnLAogc3RydWN0IGZpeGVkMzFfMzIgbWluX3ZhbHVlLAogc3Ry dWN0IGZpeGVkMzFfMzIgbWF4X3ZhbHVlKQp7CiBpZiAoZGNfZml4cHRfbGUoYXJnLCBtaW5fdmFs dWUpKQogIHJldHVybiBtaW5fdmFsdWU7CiBlbHNlIGlmIChkY19maXhwdF9sZShtYXhfdmFsdWUs IGFyZykpCiAgcmV0dXJuIG1heF92YWx1ZTsKIGVsc2UKICByZXR1cm4gYXJnOwp9CiMgMjE2ICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMy LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X3NobChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcs IHVuc2lnbmVkIGNoYXIgc2hpZnQpCnsKICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgoKGFy Zy52YWx1ZSA+PSAwKSAmJiAoYXJnLnZhbHVlIDw9ICgobG9uZyBsb25nKSh+MFVMTCA+PiAxKSkg Pj4gc2hpZnQpKSB8fCAoKGFyZy52YWx1ZSA8IDApICYmIChhcmcudmFsdWUgPj0gfigoKGxvbmcg bG9uZykofjBVTEwgPj4gMSkpID4+IHNoaWZ0KSkpKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEh KF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpc dCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3 XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2Fk ZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4i ICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQj IGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDog ImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVk MzFfMzIuaCIpLCAiaSIgKDIxOCksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChz aXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgi JWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVj MGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJpIiAoMzgpKTsgfSk7IH0gd2hpbGUg KDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKIGFy Zy52YWx1ZSA9IGFyZy52YWx1ZSA8PCBzaGlmdDsKCiByZXR1cm4gYXJnOwp9CgoKCgoKc3RhdGlj IGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0 IGZpeGVkMzFfMzIgZGNfZml4cHRfc2hyKHN0cnVjdCBmaXhlZDMxXzMyIGFyZywgdW5zaWduZWQg Y2hhciBzaGlmdCkKewogYm9vbCBuZWdhdGl2ZSA9IGFyZy52YWx1ZSA8IDA7CgogaWYgKG5lZ2F0 aXZlKQogIGFyZy52YWx1ZSA9IC1hcmcudmFsdWU7CiBhcmcudmFsdWUgPSBhcmcudmFsdWUgPj4g c2hpZnQ7CiBpZiAobmVnYXRpdmUpCiAgYXJnLnZhbHVlID0gLWFyZy52YWx1ZTsKIHJldHVybiBh cmc7Cn0KIyAyNTEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNs dWRlL2ZpeGVkMzFfMzIuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfYWRkKHN0cnVjdCBm aXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIpCnsKIHN0cnVjdCBmaXhlZDMx XzMyIHJlczsKCiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKCEoKChhcmcxLnZhbHVlID49IDAp ICYmICgoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkpIC0gYXJnMS52YWx1ZSA+PSBhcmcyLnZhbHVl KSkgfHwgKChhcmcxLnZhbHVlIDwgMCkgJiYgKCgtKChsb25nIGxvbmcpKH4wVUxMID4+IDEpKSAt IDEpIC0gYXJnMS52YWx1ZSA8PSBhcmcyLnZhbHVlKSkpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3Qo ISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIx Olx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwi YXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdf YWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVc biIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJc dCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDog OiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4 ZWQzMV8zMi5oIiksICJpIiAoMjU1KSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIg KHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxl KCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcg JWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICgzOSkpOyB9KTsgfSB3aGls ZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 CgogcmVzLnZhbHVlID0gYXJnMS52YWx1ZSArIGFyZzIudmFsdWU7CgogcmV0dXJuIHJlczsKfQoK CgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X2FkZF9pbnQoc3RydWN0IGZpeGVkMzFfMzIg YXJnMSwgaW50IGFyZzIpCnsKIHJldHVybiBkY19maXhwdF9hZGQoYXJnMSwgZGNfZml4cHRfZnJv bV9pbnQoYXJnMikpOwp9CgoKCgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfc3ViKHN0cnVj dCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVjdCBmaXhlZDMxXzMyIGFyZzIpCnsKIHN0cnVjdCBmaXhl ZDMxXzMyIHJlczsKCiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKCEoKChhcmcyLnZhbHVlID49 IDApICYmICgoLSgobG9uZyBsb25nKSh+MFVMTCA+PiAxKSkgLSAxKSArIGFyZzIudmFsdWUgPD0g YXJnMS52YWx1ZSkpIHx8ICgoYXJnMi52YWx1ZSA8IDApICYmICgoKGxvbmcgbG9uZykofjBVTEwg Pj4gMSkpICsgYXJnMi52YWx1ZSA+PSBhcmcxLnZhbHVlKSkpKTsgaWYgKF9fYnVpbHRpbl9leHBl Y3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxl KCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxl LFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5Ojpi dWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZp bGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIi ICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24i IDogOiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIiksICJpIiAoMjgwKSwgImkiICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAi aSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0 aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxv bmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICg0MCkpOyB9KTsgfSB3 aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CgogcmVzLnZhbHVlID0gYXJnMS52YWx1ZSAtIGFyZzIudmFsdWU7CgogcmV0dXJuIHJlczsK fQoKCgoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIHN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0X3N1Yl9pbnQoc3RydWN0IGZpeGVkMzFf MzIgYXJnMSwgaW50IGFyZzIpCnsKIHJldHVybiBkY19maXhwdF9zdWIoYXJnMSwgZGNfZml4cHRf ZnJvbV9pbnQoYXJnMikpOwp9CiMgMzA3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCnN0cnVjdCBmaXhlZDMxXzMyIGRjX2ZpeHB0 X211bChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcxLCBzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcyKTsKCgoK CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfbXVsX2ludChzdHJ1Y3QgZml4ZWQzMV8zMiBh cmcxLCBpbnQgYXJnMikKewogcmV0dXJuIGRjX2ZpeHB0X211bChhcmcxLCBkY19maXhwdF9mcm9t X2ludChhcmcyKSk7Cn0KCgoKCgpzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9zcXIoc3RydWN0 IGZpeGVkMzFfMzIgYXJnKTsKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9kaXZfaW50 KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIGxvbmcgbG9uZyBhcmcyKQp7CiByZXR1cm4gZGNfZml4 cHRfZnJvbV9mcmFjdGlvbihhcmcxLnZhbHVlLCBkY19maXhwdF9mcm9tX2ludChhcmcyKS52YWx1 ZSk7Cn0KCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9kaXYoc3RydWN0IGZpeGVkMzFf MzIgYXJnMSwgc3RydWN0IGZpeGVkMzFfMzIgYXJnMikKewogcmV0dXJuIGRjX2ZpeHB0X2Zyb21f ZnJhY3Rpb24oYXJnMS52YWx1ZSwgYXJnMi52YWx1ZSk7Cn0KIyAzNTUgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKc3RydWN0IGZp eGVkMzFfMzIgZGNfZml4cHRfcmVjaXAoc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKIyAzNzAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIu aCIKc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfc2luYyhzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcp OwojIDM4MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUv Zml4ZWQzMV8zMi5oIgpzdHJ1Y3QgZml4ZWQzMV8zMiBkY19maXhwdF9zaW4oc3RydWN0IGZpeGVk MzFfMzIgYXJnKTsKIyAzOTIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKc3RydWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfY29zKHN0 cnVjdCBmaXhlZDMxXzMyIGFyZyk7CiMgNDA2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiCnN0cnVjdCBmaXhlZDMxXzMyIGRjX2Zp eHB0X2V4cChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwojIDQxOCAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgpzdHJ1Y3QgZml4ZWQz MV8zMiBkY19maXhwdF9sb2coc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKIyA0MzIgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIKc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3Ry dWN0IGZpeGVkMzFfMzIgZGNfZml4cHRfcG93KHN0cnVjdCBmaXhlZDMxXzMyIGFyZzEsIHN0cnVj dCBmaXhlZDMxXzMyIGFyZzIpCnsKIHJldHVybiBkY19maXhwdF9leHAoCiAgZGNfZml4cHRfbXVs KAogICBkY19maXhwdF9sb2coYXJnMSksCiAgIGFyZzIpKTsKfQojIDQ0OSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZml4ZWQzMV8zMi5oIgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgZGNf Zml4cHRfZmxvb3Ioc3RydWN0IGZpeGVkMzFfMzIgYXJnKQp7CiB1bnNpZ25lZCBsb25nIGxvbmcg YXJnX3ZhbHVlID0gYXJnLnZhbHVlID4gMCA/IGFyZy52YWx1ZSA6IC1hcmcudmFsdWU7CgogaWYg KGFyZy52YWx1ZSA+PSAwKQogIHJldHVybiAoaW50KShhcmdfdmFsdWUgPj4gMzIpOwogZWxzZQog IHJldHVybiAtKGludCkoYXJnX3ZhbHVlID4+IDMyKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkY19maXhwdF9yb3Vu ZChzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpCnsKIHVuc2lnbmVkIGxvbmcgbG9uZyBhcmdfdmFsdWUg PSBhcmcudmFsdWUgPiAwID8gYXJnLnZhbHVlIDogLWFyZy52YWx1ZTsKCiBjb25zdCBsb25nIGxv bmcgc3VtbWFuZCA9IGRjX2ZpeHB0X2hhbGYudmFsdWU7CgogKHsgaW50IF9fcmV0X3dhcm5fb24g PSAhISghKCgobG9uZyBsb25nKSh+MFVMTCA+PiAxKSkgLSAobG9uZyBsb25nKWFyZ192YWx1ZSA+ PSBzdW1tYW5kKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkg ZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIi ICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAi ICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAi JWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBi dWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIg Ilx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2ZpeGVkMzFfMzIuaCIpLCAiaSIgKDQ2OSks ICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRy eSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rp b24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgOiA6ICJpIiAoNDEpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0 KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CgogYXJnX3ZhbHVlICs9IHN1bW1hbmQ7CgogaWYg KGFyZy52YWx1ZSA+PSAwKQogIHJldHVybiAoaW50KShhcmdfdmFsdWUgPj4gMzIpOwogZWxzZQog IHJldHVybiAtKGludCkoYXJnX3ZhbHVlID4+IDMyKTsKfQoKCgoKCnN0YXRpYyBpbmxpbmUgX19h dHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkg X19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludCBkY19maXhwdF9jZWls KHN0cnVjdCBmaXhlZDMxXzMyIGFyZykKewogdW5zaWduZWQgbG9uZyBsb25nIGFyZ192YWx1ZSA9 IGFyZy52YWx1ZSA+IDAgPyBhcmcudmFsdWUgOiAtYXJnLnZhbHVlOwoKIGNvbnN0IGxvbmcgbG9u ZyBzdW1tYW5kID0gZGNfZml4cHRfb25lLnZhbHVlIC0KICBkY19maXhwdF9lcHNpbG9uLnZhbHVl OwoKICh7IGludCBfX3JldF93YXJuX29uID0gISEoISgoKGxvbmcgbG9uZykofjBVTEwgPj4gMSkp IC0gKGxvbmcgbG9uZylhcmdfdmFsdWUgPj0gc3VtbWFuZCkpOyBpZiAoX19idWlsdGluX2V4cGVj dCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUo IjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUs XCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1 Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6Zmls ZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIg Ilx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIg OiA6ICJpIiAoImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9m aXhlZDMxXzMyLmgiKSwgImkiICg0OTApLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSksICJp IiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRp bGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9u ZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDQyKSk7IH0pOyB9IHdo aWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwoKIGFy Z192YWx1ZSArPSBzdW1tYW5kOwoKIGlmIChhcmcudmFsdWUgPj0gMCkKICByZXR1cm4gKGludCko YXJnX3ZhbHVlID4+IDMyKTsKIGVsc2UKICByZXR1cm4gLShpbnQpKGFyZ192YWx1ZSA+PiAzMik7 Cn0KCgoKCgoKCnVuc2lnbmVkIGludCBkY19maXhwdF91NGQxOShzdHJ1Y3QgZml4ZWQzMV8zMiBh cmcpOwoKdW5zaWduZWQgaW50IGRjX2ZpeHB0X3UzZDE5KHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7 Cgp1bnNpZ25lZCBpbnQgZGNfZml4cHRfdTJkMTkoc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKCnVu c2lnbmVkIGludCBkY19maXhwdF91MGQxOShzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwoKdW5zaWdu ZWQgaW50IGRjX2ZpeHB0X2NsYW1wX3UwZDE0KHN0cnVjdCBmaXhlZDMxXzMyIGFyZyk7Cgp1bnNp Z25lZCBpbnQgZGNfZml4cHRfY2xhbXBfdTBkMTAoc3RydWN0IGZpeGVkMzFfMzIgYXJnKTsKCmlu dCBkY19maXhwdF9zNGQxOShzdHJ1Y3QgZml4ZWQzMV8zMiBhcmcpOwoKc3RhdGljIGlubGluZSBf X2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18p KSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGZpeGVkMzFf MzIgZGNfZml4cHRfdHJ1bmNhdGUoc3RydWN0IGZpeGVkMzFfMzIgYXJnLCB1bnNpZ25lZCBpbnQg ZnJhY19iaXRzKQp7CiBib29sIG5lZ2F0aXZlID0gYXJnLnZhbHVlIDwgMDsKCiBpZiAoZnJhY19i aXRzID49IDMyKSB7CiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhISghKGZyYWNfYml0cyA9PSAz MikpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCkpIGRvIHsgZG8g eyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAweDBiIiAiXG4iICIu cHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxvbmcgIiAiMWIiICIg LSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25nICIgIiVjMCIgIiAt IDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJcdCMgYnVnX2VudHJ5 OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdzXG4iICJcdC5vcmcg MmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9maXhlZDMxXzMyLmgiKSwgImkiICg1MjUpLCAiaSIgKCgx IDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0g d2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNj YXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQi IDogOiAiaSIgKDQzKSk7IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3Jl dF93YXJuX29uKSwgMCk7IH0pOwogIHJldHVybiBhcmc7CiB9CgogaWYgKG5lZ2F0aXZlKQogIGFy Zy52YWx1ZSA9IC1hcmcudmFsdWU7CiBhcmcudmFsdWUgJj0gKH4wTEwpIDw8ICgzMiAtIGZyYWNf Yml0cyk7CiBpZiAobmVnYXRpdmUpCiAgYXJnLnZhbHVlID0gLWFyZy52YWx1ZTsKIHJldHVybiBh cmc7Cn0KIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Rj X3R5cGVzLmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvaXJxX3R5cGVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2lycV90eXBlcy5oIgpzdHJ1Y3QgZGNfY29udGV4dDsKCnR5cGVkZWYgdm9pZCAo KmludGVycnVwdF9oYW5kbGVyKSh2b2lkICopOwoKdHlwZWRlZiB2b2lkICppcnFfaGFuZGxlcl9p ZHg7CgoKCgplbnVtIGRjX2lycV9zb3VyY2UgewoKIERDX0lSUV9TT1VSQ0VfSU5WQUxJRCA9IDAs CgogRENfSVJRX1NPVVJDRV9IUEQxLAogRENfSVJRX1NPVVJDRV9IUEQyLAogRENfSVJRX1NPVVJD RV9IUEQzLAogRENfSVJRX1NPVVJDRV9IUEQ0LAogRENfSVJRX1NPVVJDRV9IUEQ1LAogRENfSVJR X1NPVVJDRV9IUEQ2LAoKIERDX0lSUV9TT1VSQ0VfSFBEMVJYLAogRENfSVJRX1NPVVJDRV9IUEQy UlgsCiBEQ19JUlFfU09VUkNFX0hQRDNSWCwKIERDX0lSUV9TT1VSQ0VfSFBENFJYLAogRENfSVJR X1NPVVJDRV9IUEQ1UlgsCiBEQ19JUlFfU09VUkNFX0hQRDZSWCwKCiBEQ19JUlFfU09VUkNFX0ky Q19EREMxLAogRENfSVJRX1NPVVJDRV9JMkNfRERDMiwKIERDX0lSUV9TT1VSQ0VfSTJDX0REQzMs CiBEQ19JUlFfU09VUkNFX0kyQ19EREM0LAogRENfSVJRX1NPVVJDRV9JMkNfRERDNSwKIERDX0lS UV9TT1VSQ0VfSTJDX0REQzYsCgogRENfSVJRX1NPVVJDRV9EUFNJTksxLAogRENfSVJRX1NPVVJD RV9EUFNJTksyLAogRENfSVJRX1NPVVJDRV9EUFNJTkszLAogRENfSVJRX1NPVVJDRV9EUFNJTks0 LAogRENfSVJRX1NPVVJDRV9EUFNJTks1LAogRENfSVJRX1NPVVJDRV9EUFNJTks2LAoKIERDX0lS UV9TT1VSQ0VfVElNRVIsCgogRENfSVJRX1NPVVJDRV9QRkxJUF9GSVJTVCwKIERDX0lSUV9TT1VS Q0VfUEZMSVAxID0gRENfSVJRX1NPVVJDRV9QRkxJUF9GSVJTVCwKIERDX0lSUV9TT1VSQ0VfUEZM SVAyLAogRENfSVJRX1NPVVJDRV9QRkxJUDMsCiBEQ19JUlFfU09VUkNFX1BGTElQNCwKIERDX0lS UV9TT1VSQ0VfUEZMSVA1LAogRENfSVJRX1NPVVJDRV9QRkxJUDYsCiBEQ19JUlFfU09VUkNFX1BG TElQX1VOREVSTEFZMCwKIERDX0lSUV9TT1VSQ0VfUEZMSVBfTEFTVCA9IERDX0lSUV9TT1VSQ0Vf UEZMSVBfVU5ERVJMQVkwLAoKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDAsCiBEQ19JUlFfU09VUkNF X0dQSU9QQUQxLAogRENfSVJRX1NPVVJDRV9HUElPUEFEMiwKIERDX0lSUV9TT1VSQ0VfR1BJT1BB RDMsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQ0LAogRENfSVJRX1NPVVJDRV9HUElPUEFENSwKIERD X0lSUV9TT1VSQ0VfR1BJT1BBRDYsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQ3LAogRENfSVJRX1NP VVJDRV9HUElPUEFEOCwKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDksCiBEQ19JUlFfU09VUkNFX0dQ SU9QQUQxMCwKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDExLAogRENfSVJRX1NPVVJDRV9HUElPUEFE MTIsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQxMywKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDE0LAog RENfSVJRX1NPVVJDRV9HUElPUEFEMTUsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQxNiwKIERDX0lS UV9TT1VSQ0VfR1BJT1BBRDE3LAogRENfSVJRX1NPVVJDRV9HUElPUEFEMTgsCiBEQ19JUlFfU09V UkNFX0dQSU9QQUQxOSwKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDIwLAogRENfSVJRX1NPVVJDRV9H UElPUEFEMjEsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQyMiwKIERDX0lSUV9TT1VSQ0VfR1BJT1BB RDIzLAogRENfSVJRX1NPVVJDRV9HUElPUEFEMjQsCiBEQ19JUlFfU09VUkNFX0dQSU9QQUQyNSwK IERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI2LAogRENfSVJRX1NPVVJDRV9HUElPUEFEMjcsCiBEQ19J UlFfU09VUkNFX0dQSU9QQUQyOCwKIERDX0lSUV9TT1VSQ0VfR1BJT1BBRDI5LAogRENfSVJRX1NP VVJDRV9HUElPUEFEMzAsCgogRENfSVJRX1NPVVJDRV9EQzFVTkRFUkZMT1csCiBEQ19JUlFfU09V UkNFX0RDMlVOREVSRkxPVywKIERDX0lSUV9TT1VSQ0VfREMzVU5ERVJGTE9XLAogRENfSVJRX1NP VVJDRV9EQzRVTkRFUkZMT1csCiBEQ19JUlFfU09VUkNFX0RDNVVOREVSRkxPVywKIERDX0lSUV9T T1VSQ0VfREM2VU5ERVJGTE9XLAoKIERDX0lSUV9TT1VSQ0VfRE1DVV9TQ1AsCiBEQ19JUlFfU09V UkNFX1ZCSU9TX1NXLAoKIERDX0lSUV9TT1VSQ0VfVlVQREFURTEsCiBEQ19JUlFfU09VUkNFX1ZV UERBVEUyLAogRENfSVJRX1NPVVJDRV9WVVBEQVRFMywKIERDX0lSUV9TT1VSQ0VfVlVQREFURTQs CiBEQ19JUlFfU09VUkNFX1ZVUERBVEU1LAogRENfSVJRX1NPVVJDRV9WVVBEQVRFNiwKCiBEQ19J UlFfU09VUkNFX1ZCTEFOSzEsCiBEQ19JUlFfU09VUkNFX1ZCTEFOSzIsCiBEQ19JUlFfU09VUkNF X1ZCTEFOSzMsCiBEQ19JUlFfU09VUkNFX1ZCTEFOSzQsCiBEQ19JUlFfU09VUkNFX1ZCTEFOSzUs CiBEQ19JUlFfU09VUkNFX1ZCTEFOSzYsCgogRENfSVJRX1NPVVJDRV9EQzFfVkxJTkUwLAogRENf SVJRX1NPVVJDRV9EQzJfVkxJTkUwLAogRENfSVJRX1NPVVJDRV9EQzNfVkxJTkUwLAogRENfSVJR X1NPVVJDRV9EQzRfVkxJTkUwLAogRENfSVJRX1NPVVJDRV9EQzVfVkxJTkUwLAogRENfSVJRX1NP VVJDRV9EQzZfVkxJTkUwLAoKIERDX0lSUV9TT1VSQ0VfREMxX1ZMSU5FMSwKIERDX0lSUV9TT1VS Q0VfREMyX1ZMSU5FMSwKIERDX0lSUV9TT1VSQ0VfREMzX1ZMSU5FMSwKIERDX0lSUV9TT1VSQ0Vf REM0X1ZMSU5FMSwKIERDX0lSUV9TT1VSQ0VfREM1X1ZMSU5FMSwKIERDX0lSUV9TT1VSQ0VfREM2 X1ZMSU5FMSwKCgogREFMX0lSUV9TT1VSQ0VTX05VTUJFUgp9OwoKZW51bSBpcnFfdHlwZQp7CiBJ UlFfVFlQRV9QRkxJUCA9IERDX0lSUV9TT1VSQ0VfUEZMSVAxLAogSVJRX1RZUEVfVlVQREFURSA9 IERDX0lSUV9TT1VSQ0VfVlVQREFURTEsCiBJUlFfVFlQRV9WQkxBTksgPSBEQ19JUlFfU09VUkNF X1ZCTEFOSzEsCn07CiMgMTczICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaXJxX3R5cGVzLmgiCmVudW0gZGNfaW50ZXJydXB0X2NvbnRleHQgewogSU5URVJSVVBU X0xPV19JUlFfQ09OVEVYVCA9IDAsCiBJTlRFUlJVUFRfSElHSF9JUlFfQ09OVEVYVCwKIElOVEVS UlVQVF9DT05URVhUX05VTUJFUgp9OwoKZW51bSBkY19pbnRlcnJ1cHRfcG9ybGFyaXR5IHsKIElO VEVSUlVQVF9QT0xBUklUWV9ERUZBVUxUID0gMCwKIElOVEVSUlVQVF9QT0xBUklUWV9MT1cgPSBJ TlRFUlJVUFRfUE9MQVJJVFlfREVGQVVMVCwKIElOVEVSUlVQVF9QT0xBUklUWV9ISUdILAogSU5U RVJSVVBUX1BPTEFSSVRZX0JPVEgKfTsKCgoKCgoKc3RydWN0IGRjX3RpbWVyX2ludGVycnVwdF9w YXJhbXMgewogdWludDMyX3QgbWljcm9fc2VjX2ludGVydmFsOwogZW51bSBkY19pbnRlcnJ1cHRf Y29udGV4dCBpbnRfY29udGV4dDsKfTsKCnN0cnVjdCBkY19pbnRlcnJ1cHRfcGFyYW1zIHsKCgoK IGVudW0gZGNfaW50ZXJydXB0X3Bvcmxhcml0eSByZXF1ZXN0ZWRfcG9sYXJpdHk7CgoKCgogZW51 bSBkY19pbnRlcnJ1cHRfcG9ybGFyaXR5IGN1cnJlbnRfcG9sYXJpdHk7CiBlbnVtIGRjX2lycV9z b3VyY2UgaXJxX3NvdXJjZTsKIGVudW0gZGNfaW50ZXJydXB0X2NvbnRleHQgaW50X2NvbnRleHQ7 Cn07CiMgMzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190 eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RjX2RwX3R5cGVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RjX2RwX3R5cGVzLmgiCmVudW0gZGNfbGFuZV9jb3VudCB7CiBMQU5FX0NPVU5U X1VOS05PV04gPSAwLAogTEFORV9DT1VOVF9PTkUgPSAxLAogTEFORV9DT1VOVF9UV08gPSAyLAog TEFORV9DT1VOVF9GT1VSID0gNCwKIExBTkVfQ09VTlRfRUlHSFQgPSA4LAogTEFORV9DT1VOVF9E UF9NQVggPSBMQU5FX0NPVU5UX0ZPVVIKfTsKIyA0NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2RwX3R5cGVzLmgiCmVudW0gZGNfbGlua19yYXRlIHsKIExJ TktfUkFURV9VTktOT1dOID0gMCwKIExJTktfUkFURV9MT1cgPSAweDA2LAogTElOS19SQVRFX1JB VEVfMiA9IDB4MDgsCiBMSU5LX1JBVEVfUkFURV8zID0gMHgwOSwKIExJTktfUkFURV9ISUdIID0g MHgwQSwKIExJTktfUkFURV9SQlIyID0gMHgwQywKIExJTktfUkFURV9SQVRFXzYgPSAweDEwLAog TElOS19SQVRFX0hJR0gyID0gMHgxNCwKIExJTktfUkFURV9ISUdIMyA9IDB4MUUKfTsKCmVudW0g ZGNfbGlua19zcHJlYWQgewogTElOS19TUFJFQURfRElTQUJMRUQgPSAweDAwLAoKIExJTktfU1BS RUFEXzA1X0RPV05TUFJFQURfMzBLSFogPSAweDEwLAoKIExJTktfU1BSRUFEXzA1X0RPV05TUFJF QURfMzNLSFogPSAweDExCn07CgplbnVtIGRjX3ZvbHRhZ2Vfc3dpbmcgewogVk9MVEFHRV9TV0lO R19MRVZFTDAgPSAwLAogVk9MVEFHRV9TV0lOR19MRVZFTDEsCiBWT0xUQUdFX1NXSU5HX0xFVkVM MiwKIFZPTFRBR0VfU1dJTkdfTEVWRUwzLAogVk9MVEFHRV9TV0lOR19NQVhfTEVWRUwgPSBWT0xU QUdFX1NXSU5HX0xFVkVMMwp9OwoKZW51bSBkY19wcmVfZW1waGFzaXMgewogUFJFX0VNUEhBU0lT X0RJU0FCTEVEID0gMCwKIFBSRV9FTVBIQVNJU19MRVZFTDEsCiBQUkVfRU1QSEFTSVNfTEVWRUwy LAogUFJFX0VNUEhBU0lTX0xFVkVMMywKIFBSRV9FTVBIQVNJU19NQVhfTEVWRUwgPSBQUkVfRU1Q SEFTSVNfTEVWRUwzCn07CgoKCmVudW0gZGNfcG9zdF9jdXJzb3IyIHsKIFBPU1RfQ1VSU09SMl9E SVNBQkxFRCA9IDAsCiBQT1NUX0NVUlNPUjJfTEVWRUwxLAogUE9TVF9DVVJTT1IyX0xFVkVMMiwK IFBPU1RfQ1VSU09SMl9MRVZFTDMsCiBQT1NUX0NVUlNPUjJfTUFYX0xFVkVMID0gUE9TVF9DVVJT T1IyX0xFVkVMMywKfTsKCmVudW0gZGNfZHBfdHJhaW5pbmdfcGF0dGVybiB7CiBEUF9UUkFJTklO R19QQVRURVJOX1NFUVVFTkNFXzEgPSAwLAogRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVFVRU5DRV8y LAogRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVFVRU5DRV8zLAogRFBfVFJBSU5JTkdfUEFUVEVSTl9T RVFVRU5DRV80LAp9OwoKc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgewogZW51bSBkY19sYW5lX2Nv dW50IGxhbmVfY291bnQ7CiBlbnVtIGRjX2xpbmtfcmF0ZSBsaW5rX3JhdGU7CiBlbnVtIGRjX2xp bmtfc3ByZWFkIGxpbmtfc3ByZWFkOwogYm9vbCB1c2VfbGlua19yYXRlX3NldDsKIHVpbnQ4X3Qg bGlua19yYXRlX3NldDsKfTsKCnN0cnVjdCBkY19sYW5lX3NldHRpbmdzIHsKIGVudW0gZGNfdm9s dGFnZV9zd2luZyBWT0xUQUdFX1NXSU5HOwogZW51bSBkY19wcmVfZW1waGFzaXMgUFJFX0VNUEhB U0lTOwogZW51bSBkY19wb3N0X2N1cnNvcjIgUE9TVF9DVVJTT1IyOwp9OwoKc3RydWN0IGRjX2xp bmtfdHJhaW5pbmdfc2V0dGluZ3Mgewogc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgbGluazsKIHN0 cnVjdCBkY19sYW5lX3NldHRpbmdzIGxhbmVfc2V0dGluZ3NbTEFORV9DT1VOVF9EUF9NQVhdOwp9 OwoKc3RydWN0IGRjX2xpbmtfdHJhaW5pbmdfb3ZlcnJpZGVzIHsKIGVudW0gZGNfdm9sdGFnZV9z d2luZyAqdm9sdGFnZV9zd2luZzsKIGVudW0gZGNfcHJlX2VtcGhhc2lzICpwcmVfZW1waGFzaXM7 CiBlbnVtIGRjX3Bvc3RfY3Vyc29yMiAqcG9zdF9jdXJzb3IyOwoKIHVpbnQxNl90ICpjcl9wYXR0 ZXJuX3RpbWU7CiB1aW50MTZfdCAqZXFfcGF0dGVybl90aW1lOwogZW51bSBkY19kcF90cmFpbmlu Z19wYXR0ZXJuICpwYXR0ZXJuX2Zvcl9lcTsKCiBlbnVtIGRjX2xpbmtfc3ByZWFkICpkb3duc3By ZWFkOwogYm9vbCAqYWx0ZXJuYXRlX3NjcmFtYmxlcl9yZXNldDsKIGJvb2wgKmVuaGFuY2VkX2Zy YW1pbmc7CiBib29sICptc3RfZW5hYmxlOwogYm9vbCAqZmVjX2VuYWJsZTsKfTsKCnVuaW9uIGRw Y2RfcmV2IHsKIHN0cnVjdCB7CiAgdWludDhfdCBNSU5PUjo0OwogIHVpbnQ4X3QgTUFKT1I6NDsK IH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gbWF4X2xhbmVfY291bnQgewogc3RydWN0 IHsKICB1aW50OF90IE1BWF9MQU5FX0NPVU5UOjU7CiAgdWludDhfdCBQT1NUX0xUX0FESl9SRVFf U1VQUE9SVEVEOjE7CiAgdWludDhfdCBUUFMzX1NVUFBPUlRFRDoxOwogIHVpbnQ4X3QgRU5IQU5D RURfRlJBTUVfQ0FQOjE7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIG1heF9kb3du X3NwcmVhZCB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgTUFYX0RPV05fU1BSRUFEOjE7CiAgdWludDhf dCBSRVNFUlZFRDo1OwogIHVpbnQ4X3QgTk9fQVVYX0hBTkRTSEFLRV9MSU5LX1RSQUlOSU5HOjE7 CiAgdWludDhfdCBUUFM0X1NVUFBPUlRFRDoxOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1 bmlvbiBtc3RtX2NhcCB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgTVNUX0NBUDoxOwogIHVpbnQ4X3Qg UkVTRVJWRUQ6NzsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gbGFuZV9jb3VudF9z ZXQgewogc3RydWN0IHsKICB1aW50OF90IExBTkVfQ09VTlRfU0VUOjU7CiAgdWludDhfdCBQT1NU X0xUX0FESl9SRVFfR1JBTlRFRDoxOwogIHVpbnQ4X3QgUkVTRVJWRUQ6MTsKICB1aW50OF90IEVO SEFOQ0VEX0ZSQU1JTkc6MTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gbGFuZV9z dGF0dXMgewogc3RydWN0IHsKICB1aW50OF90IENSX0RPTkVfMDoxOwogIHVpbnQ4X3QgQ0hBTk5F TF9FUV9ET05FXzA6MTsKICB1aW50OF90IFNZTUJPTF9MT0NLRURfMDoxOwogIHVpbnQ4X3QgUkVT RVJWRUQwOjE7CiAgdWludDhfdCBDUl9ET05FXzE6MTsKICB1aW50OF90IENIQU5ORUxfRVFfRE9O RV8xOjE7CiAgdWludDhfdCBTWU1CT0xfTE9DS0VEXzE6MTsKICB1aW50OF90IFJFU0VSVkVEXzE6 MTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gZGV2aWNlX3NlcnZpY2VfaXJxIHsK IHN0cnVjdCB7CiAgdWludDhfdCBSRU1PVEVfQ09OVFJPTF9DTURfUEVORElORzoxOwogIHVpbnQ4 X3QgQVVUT01BVEVEX1RFU1Q6MTsKICB1aW50OF90IENQX0lSUToxOwogIHVpbnQ4X3QgTUNDU19J UlE6MTsKICB1aW50OF90IERPV05fUkVQX01TR19SRFk6MTsKICB1aW50OF90IFVQX1JFUV9NU0df UkRZOjE7CiAgdWludDhfdCBTSU5LX1NQRUNJRklDOjE7CiAgdWludDhfdCByZXNlcnZlZDoxOwog fSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBzaW5rX2NvdW50IHsKIHN0cnVjdCB7CiAg dWludDhfdCBTSU5LX0NPVU5UOjY7CiAgdWludDhfdCBDUFJFQURZOjE7CiAgdWludDhfdCBSRVNF UlZFRDoxOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBsYW5lX2FsaWduX3N0YXR1 c191cGRhdGVkIHsKIHN0cnVjdCB7CiAgdWludDhfdCBJTlRFUkxBTkVfQUxJR05fRE9ORToxOwog IHVpbnQ4X3QgUE9TVF9MVF9BREpfUkVRX0lOX1BST0dSRVNTOjE7CiAgdWludDhfdCBSRVNFUlZF RDo0OwogIHVpbnQ4X3QgRE9XTlNUUkVBTV9QT1JUX1NUQVRVU19DSEFOR0VEOjE7CiAgdWludDhf dCBMSU5LX1NUQVRVU19VUERBVEVEOjE7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9u IGxhbmVfYWRqdXN0IHsKIHN0cnVjdCB7CiAgdWludDhfdCBWT0xUQUdFX1NXSU5HX0xBTkU6MjsK ICB1aW50OF90IFBSRV9FTVBIQVNJU19MQU5FOjI7CiAgdWludDhfdCBSRVNFUlZFRDo0OwogfSBi aXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBkcGNkX3RyYWluaW5nX3BhdHRlcm4gewogc3Ry dWN0IHsKICB1aW50OF90IFRSQUlOSU5HX1BBVFRFUk5fU0VUOjQ7CiAgdWludDhfdCBSRUNPVkVS RURfQ0xPQ0tfT1VUX0VOOjE7CiAgdWludDhfdCBTQ1JBTUJMSU5HX0RJU0FCTEU6MTsKICB1aW50 OF90IFNZTUJPTF9FUlJPUl9DT1VOVF9TRUw6MjsKIH0gdjFfNDsKIHN0cnVjdCB7CiAgdWludDhf dCBUUkFJTklOR19QQVRURVJOX1NFVDoyOwogIHVpbnQ4X3QgTElOS19RVUFMX1BBVFRFUk5fU0VU OjI7CiAgdWludDhfdCBSRVNFUlZFRDo0OwogfSB2MV8zOwogdWludDhfdCByYXc7Cn07CgoKCgp1 bmlvbiBkcGNkX3RyYWluaW5nX2xhbmUgewogc3RydWN0IHsKICB1aW50OF90IFZPTFRBR0VfU1dJ TkdfU0VUOjI7CiAgdWludDhfdCBNQVhfU1dJTkdfUkVBQ0hFRDoxOwogIHVpbnQ4X3QgUFJFX0VN UEhBU0lTX1NFVDoyOwogIHVpbnQ4X3QgTUFYX1BSRV9FTVBIQVNJU19SRUFDSEVEOjE7CiAgdWlu dDhfdCBSRVNFUlZFRDoyOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07CgoKdW5pb24gZHduc3Ry ZWFtX3BvcnRfY2Fwc19ieXRlMCB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgRFdOX1NUUk1fUE9SVFhf VFlQRTozOwogIHVpbnQ4X3QgRFdOX1NUUk1fUE9SVFhfSFBEOjE7CiAgdWludDhfdCBSRVNFUlZF UkQ6NDsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKCmVudW0gZHBjZF9kb3duc3RyZWFtX3Bv cnRfZGV0YWlsZWRfdHlwZSB7CiBET1dOX1NUUkVBTV9ERVRBSUxFRF9EUCA9IDAsCiBET1dOX1NU UkVBTV9ERVRBSUxFRF9WR0EsCiBET1dOX1NUUkVBTV9ERVRBSUxFRF9EVkksCiBET1dOX1NUUkVB TV9ERVRBSUxFRF9IRE1JLAogRE9XTl9TVFJFQU1fREVUQUlMRURfTk9ORERDLAogRE9XTl9TVFJF QU1fREVUQUlMRURfRFBfUExVU19QTFVTCn07Cgp1bmlvbiBkd25zdHJlYW1fcG9ydF9jYXBzX2J5 dGUyIHsKIHN0cnVjdCB7CiAgdWludDhfdCBNQVhfQklUU19QRVJfQ09MT1JfQ09NUE9ORU5UOjI7 CiAgdWludDhfdCBSRVNFUlZFRDo2OwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBk cF9kb3duc3RyZWFtX3BvcnRfcHJlc2VudCB7CiB1aW50OF90IGJ5dGU7CiBzdHJ1Y3QgewogIHVp bnQ4X3QgUE9SVF9QUkVTRU5UOjE7CiAgdWludDhfdCBQT1JUX1RZUEU6MjsKICB1aW50OF90IEZN VF9DT05WRVJTSU9OOjE7CiAgdWludDhfdCBERVRBSUxFRF9DQVBTOjE7CiAgdWludDhfdCBSRVNF UlZFRDozOwogfSBmaWVsZHM7Cn07Cgp1bmlvbiBkd25zdHJlYW1fcG9ydF9jYXBzX2J5dGUzX2R2 aSB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgUkVTRVJWRUQxOjE7CiAgdWludDhfdCBEVUFMX0xJTks6 MTsKICB1aW50OF90IEhJR0hfQ09MT1JfREVQVEg6MTsKICB1aW50OF90IFJFU0VSVkVEMjo1Owog fSBiaXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBkd25zdHJlYW1fcG9ydF9jYXBzX2J5dGUz X2hkbWkgewogc3RydWN0IHsKICB1aW50OF90IEZSQU1FX1NFUV9UT19GUkFNRV9QQUNLOjE7CiAg dWludDhfdCBZQ3JDcjQyMl9QQVNTX1RIUk9VR0g6MTsKICB1aW50OF90IFlDckNyNDIwX1BBU1Nf VEhST1VHSDoxOwogIHVpbnQ4X3QgWUNyQ3I0MjJfQ09OVkVSU0lPTjoxOwogIHVpbnQ4X3QgWUNy Q3I0MjBfQ09OVkVSU0lPTjoxOwogIHVpbnQ4X3QgUkVTRVJWRUQ6MzsKIH0gYml0czsKIHVpbnQ4 X3QgcmF3Owp9OwoKCgp1bmlvbiBkd25zdHJlYW1fcG9ydHhjYXBzIHsKIHN0cnVjdCB7CiAgdW5p b24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlMCBieXRlMDsKICB1bnNpZ25lZCBjaGFyIG1heF9U TURTX2Nsb2NrOwogIHVuaW9uIGR3bnN0cmVhbV9wb3J0X2NhcHNfYnl0ZTIgYnl0ZTI7CgogIHVu aW9uIHsKICAgdW5pb24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlM19kdmkgYnl0ZURWSTsKICAg dW5pb24gZHduc3RyZWFtX3BvcnRfY2Fwc19ieXRlM19oZG1pIGJ5dGVIRE1JOwogIH0gYnl0ZTM7 CiB9IGJ5dGVzOwoKIHVuc2lnbmVkIGNoYXIgcmF3WzRdOwp9OwoKdW5pb24gZG93bnN0cmVhbV9w b3J0IHsKIHN0cnVjdCB7CiAgdW5zaWduZWQgY2hhciBwcmVzZW50OjE7CiAgdW5zaWduZWQgY2hh ciB0eXBlOjI7CiAgdW5zaWduZWQgY2hhciBmb3JtYXRfY29udjoxOwogIHVuc2lnbmVkIGNoYXIg ZGV0YWlsZWRfY2FwczoxOwogIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQ6MzsKIH0gYml0czsKIHVu c2lnbmVkIGNoYXIgcmF3Owp9OwoKCnVuaW9uIHNpbmtfc3RhdHVzIHsKIHN0cnVjdCB7CiAgdWlu dDhfdCBSWF9QT1JUMF9TVEFUVVM6MTsKICB1aW50OF90IFJYX1BPUlQxX1NUQVRVUzoxOwogIHVp bnQ4X3QgUkVTRVJWRUQ6NjsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKCgp1bmlvbiBocGRf aXJxX2RhdGEgewogc3RydWN0IHsKICB1bmlvbiBzaW5rX2NvdW50IHNpbmtfY250OwogIHVuaW9u IGRldmljZV9zZXJ2aWNlX2lycSBkZXZpY2Vfc2VydmljZV9pcnE7CiAgdW5pb24gbGFuZV9zdGF0 dXMgbGFuZTAxX3N0YXR1czsKICB1bmlvbiBsYW5lX3N0YXR1cyBsYW5lMjNfc3RhdHVzOwogIHVu aW9uIGxhbmVfYWxpZ25fc3RhdHVzX3VwZGF0ZWQgbGFuZV9zdGF0dXNfdXBkYXRlZDsKICB1bmlv biBzaW5rX3N0YXR1cyBzaW5rX3N0YXR1czsKIH0gYnl0ZXM7CiB1aW50OF90IHJhd1s2XTsKfTsK CnVuaW9uIGRvd25fc3RyZWFtX3BvcnRfY291bnQgewogc3RydWN0IHsKICB1aW50OF90IERPV05f U1RSX1BPUlRfQ09VTlQ6NDsKICB1aW50OF90IFJFU0VSVkVEOjI7CgoKCgogIHVpbnQ4X3QgSUdO T1JFX01TQV9USU1JTkdfUEFSQU06MTsKCgoKCiAgdWludDhfdCBPVUlfU1VQUE9SVDoxOwogfSBi aXRzOwogdWludDhfdCByYXc7Cn07Cgp1bmlvbiBkb3duX3NwcmVhZF9jdHJsIHsKIHN0cnVjdCB7 CiAgdWludDhfdCBSRVNFUlZFRDE6NDsKCgoKCiAgdWludDhfdCBTUFJFQURfQU1QOjE7CiAgdWlu dDhfdCBSRVNFUlZFRDI6MjsKCgoKICB1aW50OF90IElHTk9SRV9NU0FfVElNSU5HX1BBUkFNOjE7 CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIGRwY2RfZWRwX2NvbmZpZyB7CiBzdHJ1 Y3QgewogIHVpbnQ4X3QgUEFORUxfTU9ERV9FRFA6MTsKICB1aW50OF90IEZSQU1JTkdfQ0hBTkdF X0VOQUJMRToxOwogIHVpbnQ4X3QgUkVTRVJWRUQ6NTsKICB1aW50OF90IFBBTkVMX1NFTEZfVEVT VF9FTkFCTEU6MTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKc3RydWN0IGRwX2RldmljZV92 ZW5kb3JfaWQgewogdWludDhfdCBpZWVlX291aVszXTsKIHVpbnQ4X3QgaWVlZV9kZXZpY2VfaWRb Nl07Cn07CgpzdHJ1Y3QgZHBfc2lua19od19md19yZXZpc2lvbiB7CiB1aW50OF90IGllZWVfaHdf cmV2OwogdWludDhfdCBpZWVlX2Z3X3JldlsyXTsKfTsKCgp1bmlvbiBlZHBfY29uZmlndXJhdGlv bl9jYXAgewogc3RydWN0IHsKICB1aW50OF90IEFMVF9TQ1JBTUJMRVJfUkVTRVQ6MTsKICB1aW50 OF90IEZSQU1JTkdfQ0hBTkdFOjE7CiAgdWludDhfdCBSRVNFUlZFRDoxOwogIHVpbnQ4X3QgRFBD RF9ESVNQTEFZX0NPTlRST0xfQ0FQQUJMRToxOwogIHVpbnQ4X3QgUkVTRVJWRUQyOjQ7CiB9IGJp dHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIGRwcnhfZmVhdHVyZSB7CiBzdHJ1Y3QgewogIHVp bnQ4X3QgR1RDX0NBUDoxOwogIHVpbnQ4X3QgU1NUX1NQTElUX1NEUF9DQVA6MTsKICB1aW50OF90 IEFWX1NZTkNfQ0FQOjE7CiAgdWludDhfdCBWU0NfU0RQX0NPTE9SSU1FVFJZX1NVUFBPUlRFRDox OwogIHVpbnQ4X3QgVlNDX0VYVF9WRVNBX1NEUF9TVVBQT1JURUQ6MTsKICB1aW50OF90IFZTQ19F WFRfVkVTQV9TRFBfQ0hBSU5JTkdfU1VQUE9SVEVEOjE7CiAgdWludDhfdCBWU0NfRVhUX0NFQV9T RFBfU1VQUE9SVEVEOjE7CiAgdWludDhfdCBWU0NfRVhUX0NFQV9TRFBfQ0hBSU5JTkdfU1VQUE9S VEVEOjE7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIHRyYWluaW5nX2F1eF9yZF9p bnRlcnZhbCB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgVFJBSU5JR19BVVhfUkRfSU5URVJWQUw6NzsK ICB1aW50OF90IEVYVF9SRUNFSVZFUl9DQVBfRklFTERfUFJFU0VOVDoxOwogfSBiaXRzOwogdWlu dDhfdCByYXc7Cn07CgoKdW5pb24gdGVzdF9yZXF1ZXN0IHsKIHN0cnVjdCB7CiB1aW50OF90IExJ TktfVFJBSU5JTkcgOjE7CiB1aW50OF90IExJTktfVEVTVF9QQVRUUk4gOjE7CiB1aW50OF90IEVE SURfUkVBRCA6MTsKIHVpbnQ4X3QgUEhZX1RFU1RfUEFUVEVSTiA6MTsKIHVpbnQ4X3QgUkVTRVJW RUQgOjE7CiB1aW50OF90IEFVRElPX1RFU1RfUEFUVEVSTiA6MTsKIHVpbnQ4X3QgVEVTVF9BVURJ T19ESVNBQkxFRF9WSURFTyA6MTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9OwoKdW5pb24gdGVz dF9yZXNwb25zZSB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgQUNLIDoxOwogIHVpbnQ4X3QgTk9fQUNL IDoxOwogIHVpbnQ4X3QgRURJRF9DSEVDS1NVTV9XUklURToxOwogIHVpbnQ4X3QgUkVTRVJWRUQg OjU7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnVuaW9uIHBoeV90ZXN0X3BhdHRlcm4gewog c3RydWN0IHsKCgoKICB1aW50OF90IFBBVFRFUk4gOjM7CgogIHVpbnQ4X3QgUkVTRVJWRUQgOjU7 CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCgp1bmlvbiBjb21wbGlhbmNlX3Rlc3Rfc3RhdGUg ewogc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIFNURVJFT18zRF9SVU5OSU5HIDogMTsKICB1bnNp Z25lZCBjaGFyIFJFU0VSVkVEIDogNzsKIH0gYml0czsKIHVuc2lnbmVkIGNoYXIgcmF3Owp9OwoK dW5pb24gbGlua190ZXN0X3BhdHRlcm4gewogc3RydWN0IHsKCiAgdW5zaWduZWQgY2hhciBQQVRU RVJOIDoyOwogIHVuc2lnbmVkIGNoYXIgUkVTRVJWRUQ6NjsKIH0gYml0czsKIHVuc2lnbmVkIGNo YXIgcmF3Owp9OwoKdW5pb24gdGVzdF9taXNjIHsKIHN0cnVjdCBkcGNkX3Rlc3RfbWlzY19iaXRz IHsKICB1bnNpZ25lZCBjaGFyIFNZTkNfQ0xPQ0sgOjE7CgogIHVuc2lnbmVkIGNoYXIgQ0xSX0ZP Uk1BVCA6MjsKCiAgdW5zaWduZWQgY2hhciBEWU5fUkFOR0UgOjE7CiAgdW5zaWduZWQgY2hhciBZ Q0JDUl9DT0VGUyA6MTsKCiAgdW5zaWduZWQgY2hhciBCUEMgOjM7CiB9IGJpdHM7CiB1bnNpZ25l ZCBjaGFyIHJhdzsKfTsKCnVuaW9uIGF1ZGlvX3Rlc3RfbW9kZSB7CiBzdHJ1Y3QgewogIHVuc2ln bmVkIGNoYXIgc2FtcGxpbmdfcmF0ZSA6NDsKICB1bnNpZ25lZCBjaGFyIGNoYW5uZWxfY291bnQg OjQ7CiB9IGJpdHM7CiB1bnNpZ25lZCBjaGFyIHJhdzsKfTsKCnVuaW9uIGF1ZGlvX3Rlc3RfcGF0 dGVybl9wZXJpb2Qgewogc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIHBhdHRlcm5fcGVyaW9kIDo0 OwogIHVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWQgOjQ7CiB9IGJpdHM7CiB1bnNpZ25lZCBjaGFyIHJh dzsKfTsKCnN0cnVjdCBhdWRpb190ZXN0X3BhdHRlcm5fdHlwZSB7CiB1bnNpZ25lZCBjaGFyIHZh bHVlOwp9OwoKc3RydWN0IGRwX2F1ZGlvX3Rlc3RfZGF0YV9mbGFncyB7CiB1aW50OF90IHRlc3Rf cmVxdWVzdGVkIDoxOwogdWludDhfdCBkaXNhYmxlX3ZpZGVvIDoxOwp9OwoKc3RydWN0IGRwX2F1 ZGlvX3Rlc3RfZGF0YSB7Cgogc3RydWN0IGRwX2F1ZGlvX3Rlc3RfZGF0YV9mbGFncyBmbGFnczsK IHVpbnQ4X3Qgc2FtcGxpbmdfcmF0ZTsKIHVpbnQ4X3QgY2hhbm5lbF9jb3VudDsKIHVpbnQ4X3Qg cGF0dGVybl90eXBlOwogdWludDhfdCBwYXR0ZXJuX3BlcmlvZFs4XTsKfTsKCgp1bmlvbiBkcGNk X2ZlY19jYXBhYmlsaXR5IHsKIHN0cnVjdCB7CiAgdWludDhfdCBGRUNfQ0FQQUJMRToxOwogIHVp bnQ4X3QgVU5DT1JSRUNURURfQkxPQ0tfRVJST1JfQ09VTlRfQ0FQQUJMRToxOwogIHVpbnQ4X3Qg Q09SUkVDVEVEX0JMT0NLX0VSUk9SX0NPVU5UX0NBUEFCTEU6MTsKICB1aW50OF90IEJJVF9FUlJP Ul9DT1VOVF9DQVBBQkxFOjE7CiAgdWludDhfdCBSRVNFUlZFRDo0OwogfSBiaXRzOwogdWludDhf dCByYXc7Cn07CgoKc3RydWN0IGRwY2RfZHNjX3N1cHBvcnQgewogdWludDhfdCBEU0NfU1VQUE9S VCA6MTsKIHVpbnQ4X3QgRFNDX1BBU1NUSFJPVUdIX1NVUFBPUlQgOjE7CiB1aW50OF90IFJFU0VS VkVEIDo2Owp9OwoKc3RydWN0IGRwY2RfZHNjX2FsZ29yaXRobV9yZXZpc2lvbiB7CiB1aW50OF90 IERTQ19WRVJTSU9OX01BSk9SIDo0OwogdWludDhfdCBEU0NfVkVSU0lPTl9NSU5PUiA6NDsKfTsK CnN0cnVjdCBkcGNkX2RzY19yY19idWZmZXJfYmxvY2tfc2l6ZSB7CiB1aW50OF90IFJDX0JMT0NL X0JVRkZFUl9TSVpFIDoyOwogdWludDhfdCBSRVNFUlZFRCA6NjsKfTsKCnN0cnVjdCBkcGNkX2Rz Y19zbGljZV9jYXBhYmlsaXR5MSB7CiB1aW50OF90IE9ORV9TTElDRV9QRVJfRFBfRFNDX1NJTktf REVWSUNFIDoxOwogdWludDhfdCBUV09fU0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7 CiB1aW50OF90IFJFU0VSVkVEIDoxOwogdWludDhfdCBGT1VSX1NMSUNFU19QRVJfRFBfRFNDX1NJ TktfREVWSUNFIDoxOwogdWludDhfdCBTSVhfU0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0Ug OjE7CiB1aW50OF90IEVJR0hUX1NMSUNFU19QRVJfRFBfRFNDX1NJTktfREVWSUNFIDoxOwogdWlu dDhfdCBURU5fU0xJQ0VTX1BFUl9EUF9EU0NfU0lOS19ERVZJQ0UgOjE7CiB1aW50OF90IFRXRUxW RV9TTElDRVNfUEVSX0RQX0RTQ19TSU5LX0RFVklDRSA6MTsKfTsKCnN0cnVjdCBkcGNkX2RzY19s aW5lX2J1ZmZlcl9iaXRfZGVwdGggewogdWludDhfdCBMSU5FX0JVRkZFUl9CSVRfREVQVEggOjQ7 CiB1aW50OF90IFJFU0VSVkVEIDo0Owp9OwoKc3RydWN0IGRwY2RfZHNjX2Jsb2NrX3ByZWRpY3Rp b25fc3VwcG9ydCB7CiB1aW50OF90IEJMT0NLX1BSRURJQ1RJT05fU1VQUE9SVDoxOwogdWludDhf dCBSRVNFUlZFRCA6NzsKfTsKCnN0cnVjdCBkcGNkX21heGltdW1fYml0c19wZXJfcGl4ZWxfc3Vw cG9ydGVkX2J5X3RoZV9kZWNvbXByZXNzb3IgewogdWludDhfdCBNQVhJTVVNX0JJVFNfUEVSX1BJ WEVMX1NVUFBPUlRFRF9CWV9USEVfREVDT01QUkVTU09SX0xPVyA6NzsKIHVpbnQ4X3QgTUFYSU1V TV9CSVRTX1BFUl9QSVhFTF9TVVBQT1JURURfQllfVEhFX0RFQ09NUFJFU1NPUl9ISUdIIDo3Owog dWludDhfdCBSRVNFUlZFRCA6MjsKfTsKCnN0cnVjdCBkcGNkX2RzY19kZWNvZGVyX2NvbG9yX2Zv cm1hdF9jYXBhYmlsaXRpZXMgewogdWludDhfdCBSR0JfU1VQUE9SVCA6MTsKIHVpbnQ4X3QgWV9D Ql9DUl80NDRfU1VQUE9SVCA6MTsKIHVpbnQ4X3QgWV9DQl9DUl9TSU1QTEVfNDIyX1NVUFBPUlQg OjE7CiB1aW50OF90IFlfQ0JfQ1JfTkFUSVZFXzQyMl9TVVBQT1JUIDoxOwogdWludDhfdCBZX0NC X0NSX05BVElWRV80MjBfU1VQUE9SVCA6MTsKIHVpbnQ4X3QgUkVTRVJWRUQgOjM7Cn07CgpzdHJ1 Y3QgZHBjZF9kc2NfZGVjb2Rlcl9jb2xvcl9kZXB0aF9jYXBhYmlsaXRpZXMgewogdWludDhfdCBS RVNFUlZFRDAgOjE7CiB1aW50OF90IEVJR0hUX0JJVFNfUEVSX0NPTE9SX1NVUFBPUlQgOjE7CiB1 aW50OF90IFRFTl9CSVRTX1BFUl9DT0xPUl9TVVBQT1JUIDoxOwogdWludDhfdCBUV0VMVkVfQklU U19QRVJfQ09MT1JfU1VQUE9SVCA6MTsKIHVpbnQ4X3QgUkVTRVJWRUQxIDo0Owp9OwoKc3RydWN0 IGRwY2RfcGVha19kc2NfdGhyb3VnaHB1dF9kc2Nfc2luayB7CiB1aW50OF90IFRIUk9VR0hQVVRf TU9ERV8wOjQ7CiB1aW50OF90IFRIUk9VR0hQVVRfTU9ERV8xOjQ7Cn07CgpzdHJ1Y3QgZHBjZF9k c2Nfc2xpY2VfY2FwYWJpbGl0aWVzXzIgewogdWludDhfdCBTSVhURUVOX1NMSUNFU19QRVJfRFND X1NJTktfREVWSUNFIDoxOwogdWludDhfdCBUV0VOVFlfU0xJQ0VTX1BFUl9EU0NfU0lOS19ERVZJ Q0UgOjE7CiB1aW50OF90IFRXRU5UWUZPVVJfU0xJQ0VTX1BFUl9EU0NfU0lOS19ERVZJQ0UgOjE7 CiB1aW50OF90IFJFU0VSVkVEIDo1Owp9OwoKc3RydWN0IGRwY2RfYml0c19wZXJfcGl4ZWxfaW5j cmVtZW50ewogdWludDhfdCBJTkNSRU1FTlRfT0ZfQklUU19QRVJfUElYRUxfU1VQUE9SVEVEIDoz OwogdWludDhfdCBSRVNFUlZFRCA6NTsKfTsKdW5pb24gZHBjZF9kc2NfYmFzaWNfY2FwYWJpbGl0 aWVzIHsKIHN0cnVjdCB7CiAgc3RydWN0IGRwY2RfZHNjX3N1cHBvcnQgZHNjX3N1cHBvcnQ7CiAg c3RydWN0IGRwY2RfZHNjX2FsZ29yaXRobV9yZXZpc2lvbiBkc2NfYWxnb3JpdGhtX3JldmlzaW9u OwogIHN0cnVjdCBkcGNkX2RzY19yY19idWZmZXJfYmxvY2tfc2l6ZSBkc2NfcmNfYnVmZmVyX2Js b2NrX3NpemU7CiAgdWludDhfdCBkc2NfcmNfYnVmZmVyX3NpemU7CiAgc3RydWN0IGRwY2RfZHNj X3NsaWNlX2NhcGFiaWxpdHkxIGRzY19zbGljZV9jYXBhYmlsaXRpZXNfMTsKICBzdHJ1Y3QgZHBj ZF9kc2NfbGluZV9idWZmZXJfYml0X2RlcHRoIGRzY19saW5lX2J1ZmZlcl9iaXRfZGVwdGg7CiAg c3RydWN0IGRwY2RfZHNjX2Jsb2NrX3ByZWRpY3Rpb25fc3VwcG9ydCBkc2NfYmxvY2tfcHJlZGlj dGlvbl9zdXBwb3J0OwogIHN0cnVjdCBkcGNkX21heGltdW1fYml0c19wZXJfcGl4ZWxfc3VwcG9y dGVkX2J5X3RoZV9kZWNvbXByZXNzb3IgbWF4aW11bV9iaXRzX3Blcl9waXhlbF9zdXBwb3J0ZWRf YnlfdGhlX2RlY29tcHJlc3NvcjsKICBzdHJ1Y3QgZHBjZF9kc2NfZGVjb2Rlcl9jb2xvcl9mb3Jt YXRfY2FwYWJpbGl0aWVzIGRzY19kZWNvZGVyX2NvbG9yX2Zvcm1hdF9jYXBhYmlsaXRpZXM7CiAg c3RydWN0IGRwY2RfZHNjX2RlY29kZXJfY29sb3JfZGVwdGhfY2FwYWJpbGl0aWVzIGRzY19kZWNv ZGVyX2NvbG9yX2RlcHRoX2NhcGFiaWxpdGllczsKICBzdHJ1Y3QgZHBjZF9wZWFrX2RzY190aHJv dWdocHV0X2RzY19zaW5rIHBlYWtfZHNjX3Rocm91Z2hwdXRfZHNjX3Npbms7CiAgdWludDhfdCBk c2NfbWF4aW11bV9zbGljZV93aWR0aDsKICBzdHJ1Y3QgZHBjZF9kc2Nfc2xpY2VfY2FwYWJpbGl0 aWVzXzIgZHNjX3NsaWNlX2NhcGFiaWxpdGllc18yOwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7CiAgc3Ry dWN0IGRwY2RfYml0c19wZXJfcGl4ZWxfaW5jcmVtZW50IGJpdHNfcGVyX3BpeGVsX2luY3JlbWVu dDsKIH0gZmllbGRzOwogdWludDhfdCByYXdbMTZdOwp9OwoKdW5pb24gZHBjZF9kc2NfZXh0X2Nh cGFiaWxpdGllcyB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgQlJBTkNIX09WRVJBTExfVEhST1VHSFBV VF8wOwogIHVpbnQ4X3QgQlJBTkNIX09WRVJBTExfVEhST1VHSFBVVF8xOwogIHVpbnQ4X3QgQlJB TkNIX01BWF9MSU5FX1dJRFRIOwogfSBmaWVsZHM7CiB1aW50OF90IHJhd1szXTsKfTsKCnN0cnVj dCBkcGNkX2RzY19jYXBhYmlsaXRpZXMgewogdW5pb24gZHBjZF9kc2NfYmFzaWNfY2FwYWJpbGl0 aWVzIGRzY19iYXNpY19jYXBzOwogdW5pb24gZHBjZF9kc2NfZXh0X2NhcGFiaWxpdGllcyBkc2Nf ZXh0X2NhcHM7Cn07CiMgMzYgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kY190eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKIyAzNCAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVz LmgiCmVudW0gc2lnbmFsX3R5cGUgewogU0lHTkFMX1RZUEVfTk9ORSA9IDBMLAogU0lHTkFMX1RZ UEVfRFZJX1NJTkdMRV9MSU5LID0gKDEgPDwgMCksCiBTSUdOQUxfVFlQRV9EVklfRFVBTF9MSU5L ID0gKDEgPDwgMSksCiBTSUdOQUxfVFlQRV9IRE1JX1RZUEVfQSA9ICgxIDw8IDIpLAogU0lHTkFM X1RZUEVfTFZEUyA9ICgxIDw8IDMpLAogU0lHTkFMX1RZUEVfUkdCID0gKDEgPDwgNCksCiBTSUdO QUxfVFlQRV9ESVNQTEFZX1BPUlQgPSAoMSA8PCA1KSwKIFNJR05BTF9UWVBFX0RJU1BMQVlfUE9S VF9NU1QgPSAoMSA8PCA2KSwKIFNJR05BTF9UWVBFX0VEUCA9ICgxIDw8IDcpLAogU0lHTkFMX1RZ UEVfVklSVFVBTCA9ICgxIDw8IDkpLAp9OwoKCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygo X19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVf Xygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGNfaXNfaGRtaV90bWRzX3NpZ25hbChl bnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKewogcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVf SERNSV9UWVBFX0EpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2hkbWlfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUg c2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9IRE1JX1RZUEVfQSk7Cn0K CnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0 ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikp IGJvb2wgZGNfaXNfZHBfc3N0X3NpZ25hbChlbnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKewogcmV0 dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfRElTUExBWV9QT1JUIHx8CiAgc2lnbmFsID09IFNJ R05BTF9UWVBFX0VEUCk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5s aW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5z dHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgZGNfaXNfZHBfc2lnbmFsKGVudW0gc2lnbmFsX3R5cGUg c2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9ESVNQTEFZX1BPUlQgfHwK ICBzaWduYWwgPT0gU0lHTkFMX1RZUEVfRURQIHx8CiAgc2lnbmFsID09IFNJR05BTF9UWVBFX0RJ U1BMQVlfUE9SVF9NU1QpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lu bGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2lu c3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2VtYmVkZGVkX3NpZ25hbChlbnVtIHNpZ25h bF90eXBlIHNpZ25hbCkKewogcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfRURQIHx8IHNp Z25hbCA9PSBTSUdOQUxfVFlQRV9MVkRTKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkY19pc19sdmRzX3NpZ25hbChlbnVt IHNpZ25hbF90eXBlIHNpZ25hbCkKewogcmV0dXJuIChzaWduYWwgPT0gU0lHTkFMX1RZUEVfTFZE Uyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZGNfaXNfZHZpX3NpZ25hbChlbnVtIHNpZ25hbF90eXBlIHNpZ25hbCkKewog c3dpdGNoIChzaWduYWwpIHsKIGNhc2UgU0lHTkFMX1RZUEVfRFZJX1NJTkdMRV9MSU5LOgogY2Fz ZSBTSUdOQUxfVFlQRV9EVklfRFVBTF9MSU5LOgogIHJldHVybiB0cnVlOwogYnJlYWs7CiBkZWZh dWx0OgogIHJldHVybiBmYWxzZTsKIH0KfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBkY19pc19kdmlfc2luZ2xlX2xpbmtfc2ln bmFsKGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxf VFlQRV9EVklfU0lOR0xFX0xJTkspOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9f Z251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18o KG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2R1YWxfbGlua19zaWduYWwoZW51 bSBzaWduYWxfdHlwZSBzaWduYWwpCnsKIHJldHVybiAoc2lnbmFsID09IFNJR05BTF9UWVBFX0RW SV9EVUFMX0xJTkspOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGlu ZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3Ry dW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX2F1ZGlvX2NhcGFibGVfc2lnbmFsKGVudW0gc2ln bmFsX3R5cGUgc2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9ESVNQTEFZ X1BPUlQgfHwKICBzaWduYWwgPT0gU0lHTkFMX1RZUEVfRElTUExBWV9QT1JUX01TVCB8fAogIGRj X2lzX2hkbWlfc2lnbmFsKHNpZ25hbCkpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGRjX2lzX3ZpcnR1YWxfc2lnbmFsKGVu dW0gc2lnbmFsX3R5cGUgc2lnbmFsKQp7CiByZXR1cm4gKHNpZ25hbCA9PSBTSUdOQUxfVFlQRV9W SVJUVUFMKTsKfQojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZGNfaHdfdHlwZXMuaCIgMgojIDQ1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZGNfaHdfdHlwZXMuaCIKdW5pb24gbGFyZ2VfaW50ZWdlciB7CiBzdHJ1Y3Qg ewogIHVpbnQzMl90IGxvd19wYXJ0OwogIGludDMyX3QgaGlnaF9wYXJ0OwogfTsKCiBzdHJ1Y3Qg ewogIHVpbnQzMl90IGxvd19wYXJ0OwogIGludDMyX3QgaGlnaF9wYXJ0OwogfSB1OwoKIGludDY0 X3QgcXVhZF9wYXJ0Owp9OwoKCgplbnVtIGRjX3BsYW5lX2FkZHJfdHlwZSB7CiBQTE5fQUREUl9U WVBFX0dSQVBISUNTID0gMCwKIFBMTl9BRERSX1RZUEVfR1JQSF9TVEVSRU8sCiBQTE5fQUREUl9U WVBFX1ZJREVPX1BST0dSRVNTSVZFLAp9OwoKc3RydWN0IGRjX3BsYW5lX2FkZHJlc3MgewogZW51 bSBkY19wbGFuZV9hZGRyX3R5cGUgdHlwZTsKIGJvb2wgdG16X3N1cmZhY2U7CiB1bmlvbiB7CiAg c3RydWN0ewogICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGFkZHI7CiAgIHVuaW9uIGxhcmdlX2ludGVn ZXIgbWV0YV9hZGRyOwogICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGRjY19jb25zdF9jb2xvcjsKICB9 IGdycGg7CgoKICBzdHJ1Y3QgewogICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGxlZnRfYWRkcjsKICAg dW5pb24gbGFyZ2VfaW50ZWdlciBsZWZ0X21ldGFfYWRkcjsKICAgdW5pb24gbGFyZ2VfaW50ZWdl ciBsZWZ0X2RjY19jb25zdF9jb2xvcjsKCiAgIHVuaW9uIGxhcmdlX2ludGVnZXIgcmlnaHRfYWRk cjsKICAgdW5pb24gbGFyZ2VfaW50ZWdlciByaWdodF9tZXRhX2FkZHI7CiAgIHVuaW9uIGxhcmdl X2ludGVnZXIgcmlnaHRfZGNjX2NvbnN0X2NvbG9yOwoKICB9IGdycGhfc3RlcmVvOwoKCiAgc3Ry dWN0IHsKICAgdW5pb24gbGFyZ2VfaW50ZWdlciBsdW1hX2FkZHI7CiAgIHVuaW9uIGxhcmdlX2lu dGVnZXIgbHVtYV9tZXRhX2FkZHI7CiAgIHVuaW9uIGxhcmdlX2ludGVnZXIgbHVtYV9kY2NfY29u c3RfY29sb3I7CgogICB1bmlvbiBsYXJnZV9pbnRlZ2VyIGNocm9tYV9hZGRyOwogICB1bmlvbiBs YXJnZV9pbnRlZ2VyIGNocm9tYV9tZXRhX2FkZHI7CiAgIHVuaW9uIGxhcmdlX2ludGVnZXIgY2hy b21hX2RjY19jb25zdF9jb2xvcjsKICB9IHZpZGVvX3Byb2dyZXNzaXZlOwogfTsKCiB1bmlvbiBs YXJnZV9pbnRlZ2VyIHBhZ2VfdGFibGVfYmFzZTsKCiB1aW50OF90IHZtaWQ7Cn07CgpzdHJ1Y3Qg ZGNfc2l6ZSB7CiBpbnQgd2lkdGg7CiBpbnQgaGVpZ2h0Owp9OwoKc3RydWN0IHJlY3QgewogaW50 IHg7CiBpbnQgeTsKIGludCB3aWR0aDsKIGludCBoZWlnaHQ7Cn07CgpzdHJ1Y3QgcGxhbmVfc2l6 ZSB7CgoKCgogaW50IHN1cmZhY2VfcGl0Y2g7CiBpbnQgY2hyb21hX3BpdGNoOwogc3RydWN0IHJl Y3Qgc3VyZmFjZV9zaXplOwogc3RydWN0IHJlY3QgY2hyb21hX3NpemU7Cn07CgpzdHJ1Y3QgZGNf cGxhbmVfZGNjX3BhcmFtIHsKIGJvb2wgZW5hYmxlOwoKIGludCBtZXRhX3BpdGNoOwogYm9vbCBp bmRlcGVuZGVudF82NGJfYmxrczsKCiBpbnQgbWV0YV9waXRjaF9jOwogYm9vbCBpbmRlcGVuZGVu dF82NGJfYmxrc19jOwp9OwoKCmVudW0gc3VyZmFjZV9waXhlbF9mb3JtYXQgewogU1VSRkFDRV9Q SVhFTF9GT1JNQVRfR1JQSF9CRUdJTiA9IDAsCgogU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9Q QUxFVEFfMjU2X0NPTE9SUyA9CiAgU1VSRkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9CRUdJTiwKCiBT VVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FSR0IxNTU1LAoKIFNVUkZBQ0VfUElYRUxfRk9STUFU X0dSUEhfUkdCNTY1LAoKIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQVJHQjg4ODgsCgogU1VS RkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9BQkdSODg4OCwKCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9H UlBIX0FSR0IyMTAxMDEwLAoKIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQUJHUjIxMDEwMTAs CgoKCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0FCR1IyMTAxMDEwX1hSX0JJQVMsCgogU1VS RkFDRV9QSVhFTF9GT1JNQVRfR1JQSF9BUkdCMTYxNjE2MTYsCgogU1VSRkFDRV9QSVhFTF9GT1JN QVRfR1JQSF9BUkdCMTYxNjE2MTZGLAoKIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQUJHUjE2 MTYxNjE2RiwKCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9HUlBIX1JHQjExMTExMF9GSVgsCiBTVVJG QUNFX1BJWEVMX0ZPUk1BVF9HUlBIX0JHUjEwMTExMV9GSVgsCiBTVVJGQUNFX1BJWEVMX0ZPUk1B VF9HUlBIX1JHQjExMTExMF9GTE9BVCwKIFNVUkZBQ0VfUElYRUxfRk9STUFUX0dSUEhfQkdSMTAx MTExX0ZMT0FULAogU1VSRkFDRV9QSVhFTF9GT1JNQVRfVklERU9fQkVHSU4sCiBTVVJGQUNFX1BJ WEVMX0ZPUk1BVF9WSURFT180MjBfWUNiQ3IgPQogIFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJREVP X0JFR0lOLAogU1VSRkFDRV9QSVhFTF9GT1JNQVRfVklERU9fNDIwX1lDckNiLAogU1VSRkFDRV9Q SVhFTF9GT1JNQVRfVklERU9fNDIwXzEwYnBjX1lDYkNyLAogU1VSRkFDRV9QSVhFTF9GT1JNQVRf VklERU9fNDIwXzEwYnBjX1lDckNiLAogIFNVUkZBQ0VfUElYRUxfRk9STUFUX1NVQlNBTVBMRV9F TkQsCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9WSURFT19BQ3JZQ2IyMTAxMDEwLAogU1VSRkFDRV9Q SVhFTF9GT1JNQVRfVklERU9fQ3JZQ2JBMTAxMDEwMiwKIFNVUkZBQ0VfUElYRUxfRk9STUFUX1ZJ REVPX0FZQ3JDYjg4ODgsCiBTVVJGQUNFX1BJWEVMX0ZPUk1BVF9JTlZBTElECgoKfTsKCgoKCmVu dW0gcGl4ZWxfZm9ybWF0IHsKCiBQSVhFTF9GT1JNQVRfVU5JTklUSUFMSVpFRCwKIFBJWEVMX0ZP Uk1BVF9JTkRFWDgsCiBQSVhFTF9GT1JNQVRfUkdCNTY1LAogUElYRUxfRk9STUFUX0FSR0I4ODg4 LAogUElYRUxfRk9STUFUX0FSR0IyMTAxMDEwLAogUElYRUxfRk9STUFUX0FSR0IyMTAxMDEwX1hS QklBUywKIFBJWEVMX0ZPUk1BVF9GUDE2LAoKIFBJWEVMX0ZPUk1BVF80MjBCUFA4LAogUElYRUxf Rk9STUFUXzQyMEJQUDEwLAoKIFBJWEVMX0ZPUk1BVF9JTlZBTElELAoKIFBJWEVMX0ZPUk1BVF9H UlBIX0JFR0lOID0gUElYRUxfRk9STUFUX0lOREVYOCwKIFBJWEVMX0ZPUk1BVF9HUlBIX0VORCA9 IFBJWEVMX0ZPUk1BVF9GUDE2LAogUElYRUxfRk9STUFUX1ZJREVPX0JFR0lOID0gUElYRUxfRk9S TUFUXzQyMEJQUDgsCiBQSVhFTF9GT1JNQVRfVklERU9fRU5EID0gUElYRUxfRk9STUFUXzQyMEJQ UDEwLAogUElYRUxfRk9STUFUX1VOS05PV04KfTsKCmVudW0gdGlsZV9zcGxpdF92YWx1ZXMgewog RENfRElTUExBWV9NSUNST19USUxJTkcgPSAweDAsCiBEQ19USElOX01JQ1JPX1RJTElORyA9IDB4 MSwKIERDX0RFUFRIX01JQ1JPX1RJTElORyA9IDB4MiwKIERDX1JPVEFURURfTUlDUk9fVElMSU5H ID0gMHgzLAp9OwoKZW51bSB0cmlwbGVCdWZmZXJfZW5hYmxlIHsKIERDX1RSSVBMRUJVRkZFUl9E SVNBQkxFID0gMHgwLAogRENfVFJJUExFQlVGRkVSX0VOQUJMRSA9IDB4MSwKfTsKCgoKCmVudW0g YXJyYXlfbW9kZV92YWx1ZXMgewogRENfQVJSQVlfTElORUFSX0dFTkVSQUwgPSAwLAogRENfQVJS QVlfTElORUFSX0FMTElHTkVELAogRENfQVJSQVlfMURfVElMRURfVEhJTjEsCiBEQ19BUlJBWV8x RF9USUxFRF9USElDSywKIERDX0FSUkFZXzJEX1RJTEVEX1RISU4xLAogRENfQVJSQVlfUFJUX1RJ TEVEX1RISU4xLAogRENfQVJSQVlfUFJUXzJEX1RJTEVEX1RISU4xLAogRENfQVJSQVlfMkRfVElM RURfVEhJQ0ssCiBEQ19BUlJBWV8yRF9USUxFRF9YX1RISUNLLAogRENfQVJSQVlfUFJUX1RJTEVE X1RISUNLLAogRENfQVJSQVlfUFJUXzJEX1RJTEVEX1RISUNLLAogRENfQVJSQVlfUFJUXzNEX1RJ TEVEX1RISU4xLAogRENfQVJSQVlfM0RfVElMRURfVEhJTjEsCiBEQ19BUlJBWV8zRF9USUxFRF9U SElDSywKIERDX0FSUkFZXzNEX1RJTEVEX1hfVEhJQ0ssCiBEQ19BUlJBWV9QUlRfM0RfVElMRURf VEhJQ0ssCn07CgplbnVtIHRpbGVfbW9kZV92YWx1ZXMgewogRENfQUREUl9TVVJGX01JQ1JPX1RJ TElOR19ESVNQTEFZID0gMHgwLAogRENfQUREUl9TVVJGX01JQ1JPX1RJTElOR19OT05fRElTUExB WSA9IDB4MSwKfTsKCmVudW0gc3dpenpsZV9tb2RlX3ZhbHVlcyB7CiBEQ19TV19MSU5FQVIgPSAw LAogRENfU1dfMjU2Ql9TID0gMSwKIERDX1NXXzI1Nl9EID0gMiwKIERDX1NXXzI1Nl9SID0gMywK IERDX1NXXzRLQl9TID0gNSwKIERDX1NXXzRLQl9EID0gNiwKIERDX1NXXzRLQl9SID0gNywKIERD X1NXXzY0S0JfUyA9IDksCiBEQ19TV182NEtCX0QgPSAxMCwKIERDX1NXXzY0S0JfUiA9IDExLAog RENfU1dfVkFSX1MgPSAxMywKIERDX1NXX1ZBUl9EID0gMTQsCiBEQ19TV19WQVJfUiA9IDE1LAog RENfU1dfNjRLQl9TX1QgPSAxNywKIERDX1NXXzY0S0JfRF9UID0gMTgsCiBEQ19TV180S0JfU19Y ID0gMjEsCiBEQ19TV180S0JfRF9YID0gMjIsCiBEQ19TV180S0JfUl9YID0gMjMsCiBEQ19TV182 NEtCX1NfWCA9IDI1LAogRENfU1dfNjRLQl9EX1ggPSAyNiwKIERDX1NXXzY0S0JfUl9YID0gMjcs CiBEQ19TV19WQVJfU19YID0gMjksCiBEQ19TV19WQVJfRF9YID0gMzAsCiBEQ19TV19WQVJfUl9Y ID0gMzEsCiBEQ19TV19NQVggPSAzMiwKIERDX1NXX1VOS05PV04gPSBEQ19TV19NQVgKfTsKCnVu aW9uIGRjX3RpbGluZ19pbmZvIHsKCiBzdHJ1Y3QgewoKCgoKCiAgdW5zaWduZWQgaW50IG51bV9i YW5rczsKCgoKCgogIHVuc2lnbmVkIGludCBiYW5rX3dpZHRoOwogIHVuc2lnbmVkIGludCBiYW5r X3dpZHRoX2M7CgoKCgoKICB1bnNpZ25lZCBpbnQgYmFua19oZWlnaHQ7CiAgdW5zaWduZWQgaW50 IGJhbmtfaGVpZ2h0X2M7CgoKCiAgdW5zaWduZWQgaW50IHRpbGVfYXNwZWN0OwogIHVuc2lnbmVk IGludCB0aWxlX2FzcGVjdF9jOwojIDMxNyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCiAgZW51bSB0aWxlX3NwbGl0X3ZhbHVlcyB0aWxl X3NwbGl0OwogIGVudW0gdGlsZV9zcGxpdF92YWx1ZXMgdGlsZV9zcGxpdF9jOwoKCgoKCgogIGVu dW0gdGlsZV9tb2RlX3ZhbHVlcyB0aWxlX21vZGU7CiAgZW51bSB0aWxlX21vZGVfdmFsdWVzIHRp bGVfbW9kZV9jOwoKCgoKCiAgdW5zaWduZWQgaW50IHBpcGVfY29uZmlnOwojIDM0MSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCiAgZW51 bSBhcnJheV9tb2RlX3ZhbHVlcyBhcnJheV9tb2RlOwogfSBnZng4OwoKIHN0cnVjdCB7CiAgZW51 bSBzd2l6emxlX21vZGVfdmFsdWVzIHN3aXp6bGU7CiAgdW5zaWduZWQgaW50IG51bV9waXBlczsK ICB1bnNpZ25lZCBpbnQgbWF4X2NvbXByZXNzZWRfZnJhZ3M7CiAgdW5zaWduZWQgaW50IHBpcGVf aW50ZXJsZWF2ZTsKCiAgdW5zaWduZWQgaW50IG51bV9iYW5rczsKICB1bnNpZ25lZCBpbnQgbnVt X3NoYWRlcl9lbmdpbmVzOwogIHVuc2lnbmVkIGludCBudW1fcmJfcGVyX3NlOwogIGJvb2wgc2hh ZGVyRW5hYmxlOwoKICBib29sIG1ldGFfbGluZWFyOwogIGJvb2wgcmJfYWxpZ25lZDsKICBib29s IHBpcGVfYWxpZ25lZDsKIH0gZ2Z4OTsKfTsKCgplbnVtIGRjX3JvdGF0aW9uX2FuZ2xlIHsKIFJP VEFUSU9OX0FOR0xFXzAgPSAwLAogUk9UQVRJT05fQU5HTEVfOTAsCiBST1RBVElPTl9BTkdMRV8x ODAsCiBST1RBVElPTl9BTkdMRV8yNzAsCiBST1RBVElPTl9BTkdMRV9DT1VOVAp9OwoKZW51bSBk Y19zY2FuX2RpcmVjdGlvbiB7CiBTQ0FOX0RJUkVDVElPTl9VTktOT1dOID0gMCwKIFNDQU5fRElS RUNUSU9OX0hPUklaT05UQUwgPSAxLAogU0NBTl9ESVJFQ1RJT05fVkVSVElDQUwgPSAyLAp9OwoK c3RydWN0IGRjX2N1cnNvcl9wb3NpdGlvbiB7CiB1aW50MzJfdCB4OwogdWludDMyX3QgeTsKCiB1 aW50MzJfdCB4X2hvdHNwb3Q7CiB1aW50MzJfdCB5X2hvdHNwb3Q7CgoKCgogYm9vbCBlbmFibGU7 Cgp9OwoKc3RydWN0IGRjX2N1cnNvcl9taV9wYXJhbSB7CiB1bnNpZ25lZCBpbnQgcGl4ZWxfY2xr X2toejsKIHVuc2lnbmVkIGludCByZWZfY2xrX2toejsKIHN0cnVjdCByZWN0IHZpZXdwb3J0Owog c3RydWN0IGZpeGVkMzFfMzIgaF9zY2FsZV9yYXRpbzsKIHN0cnVjdCBmaXhlZDMxXzMyIHZfc2Nh bGVfcmF0aW87CiBlbnVtIGRjX3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwogYm9vbCBtaXJyb3I7 Cn07CgoKCmVudW0gewogR0FNTUFfUkdCXzI1Nl9FTlRSSUVTID0gMjU2LAogR0FNTUFfUkdCX0ZM T0FUXzEwMjRfRU5UUklFUyA9IDEwMjQsCiBHQU1NQV9DU19URk1fMURfRU5UUklFUyA9IDQwOTYs CiBHQU1NQV9DVVNUT01fRU5UUklFUyA9IDQwOTYsCiBHQU1NQV9NQVhfRU5UUklFUyA9IDQwOTYK fTsKCmVudW0gZGNfZ2FtbWFfdHlwZSB7CiBHQU1NQV9SR0JfMjU2ID0gMSwKIEdBTU1BX1JHQl9G TE9BVF8xMDI0ID0gMiwKIEdBTU1BX0NTX1RGTV8xRCA9IDMsCiBHQU1NQV9DVVNUT00gPSA0LAp9 OwoKc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gewogdWludDE2X3QgbWF0cml4WzEyXTsKIGJvb2wg ZW5hYmxlX2FkanVzdG1lbnQ7Cn07CgpzdHJ1Y3QgZGNfcmdiX2ZpeGVkIHsKIHN0cnVjdCBmaXhl ZDMxXzMyIHJlZDsKIHN0cnVjdCBmaXhlZDMxXzMyIGdyZWVuOwogc3RydWN0IGZpeGVkMzFfMzIg Ymx1ZTsKfTsKCnN0cnVjdCBkY19nYW1tYSB7CiBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKIGVudW0g ZGNfZ2FtbWFfdHlwZSB0eXBlOwogdW5zaWduZWQgaW50IG51bV9lbnRyaWVzOwoKIHN0cnVjdCBk Y19nYW1tYV9lbnRyaWVzIHsKICBzdHJ1Y3QgZml4ZWQzMV8zMiByZWRbR0FNTUFfTUFYX0VOVFJJ RVNdOwogIHN0cnVjdCBmaXhlZDMxXzMyIGdyZWVuW0dBTU1BX01BWF9FTlRSSUVTXTsKICBzdHJ1 Y3QgZml4ZWQzMV8zMiBibHVlW0dBTU1BX01BWF9FTlRSSUVTXTsKIH0gZW50cmllczsKCgogc3Ry dWN0IGRjX2NvbnRleHQgKmN0eDsKCgoKCiBib29sIGlzX2lkZW50aXR5Owp9OwojIDQ1NiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2h3X3R5cGVzLmgiCmVu dW0gZGNfY3Vyc29yX2NvbG9yX2Zvcm1hdCB7CiBDVVJTT1JfTU9ERV9NT05PLAogQ1VSU09SX01P REVfQ09MT1JfMUJJVF9BTkQsCiBDVVJTT1JfTU9ERV9DT0xPUl9QUkVfTVVMVElQTElFRF9BTFBI QSwKIENVUlNPUl9NT0RFX0NPTE9SX1VOX1BSRV9NVUxUSVBMSUVEX0FMUEhBLAogQ1VSU09SX01P REVfQ09MT1JfNjRCSVRfRlBfUFJFX01VTFRJUExJRUQsCiBDVVJTT1JfTU9ERV9DT0xPUl82NEJJ VF9GUF9VTl9QUkVfTVVMVElQTElFRAp9OwoKCgoKCgoKdW5pb24gZGNfY3Vyc29yX2F0dHJpYnV0 ZV9mbGFncyB7CiBzdHJ1Y3QgewogIHVpbnQzMl90IEVOQUJMRV9NQUdOSUZJQ0FUSU9OOjE7CiAg dWludDMyX3QgSU5WRVJTRV9UUkFOU1BBUkVOVF9DTEFNUElORzoxOwogIHVpbnQzMl90IEhPUkla T05UQUxfTUlSUk9SOjE7CiAgdWludDMyX3QgVkVSVElDQUxfTUlSUk9SOjE7CiAgdWludDMyX3Qg SU5WRVJUX1BJWEVMX0RBVEE6MTsKICB1aW50MzJfdCBaRVJPX0VYUEFOU0lPTjoxOwogIHVpbnQz Ml90IE1JTl9NQVhfSU5WRVJUOjE7CiAgdWludDMyX3QgRU5BQkxFX0NVUlNPUl9ERUdBTU1BOjE7 CiAgdWludDMyX3QgUkVTRVJWRUQ6MjQ7CiB9IGJpdHM7CiB1aW50MzJfdCB2YWx1ZTsKfTsKCnN0 cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyB7CiB1bmlvbiBsYXJnZV9pbnRlZ2VyIGFkZHJlc3M7 CiB1aW50MzJfdCBwaXRjaDsKCgogdWludDMyX3Qgd2lkdGg7CiB1aW50MzJfdCBoZWlnaHQ7Cgog ZW51bSBkY19jdXJzb3JfY29sb3JfZm9ybWF0IGNvbG9yX2Zvcm1hdDsKIHVpbnQzMl90IHNkcl93 aGl0ZV9sZXZlbDsKCgogZW51bSBkY19yb3RhdGlvbl9hbmdsZSByb3RhdGlvbl9hbmdsZTsKCiB1 bmlvbiBkY19jdXJzb3JfYXR0cmlidXRlX2ZsYWdzIGF0dHJpYnV0ZV9mbGFnczsKfTsKCnN0cnVj dCBkcHBfY3Vyc29yX2F0dHJpYnV0ZXMgewogaW50IGJpYXM7CiBpbnQgc2NhbGU7Cn07CgoKCmVu dW0gZGNfY29sb3Jfc3BhY2UgewogQ09MT1JfU1BBQ0VfVU5LTk9XTiwKIENPTE9SX1NQQUNFX1NS R0IsCiBDT0xPUl9TUEFDRV9YUl9SR0IsCiBDT0xPUl9TUEFDRV9TUkdCX0xJTUlURUQsCiBDT0xP Ul9TUEFDRV9NU1JFRl9TQ1JHQiwKIENPTE9SX1NQQUNFX1lDQkNSNjAxLAogQ09MT1JfU1BBQ0Vf WUNCQ1I3MDksCiBDT0xPUl9TUEFDRV9YVl9ZQ0NfNzA5LAogQ09MT1JfU1BBQ0VfWFZfWUNDXzYw MSwKIENPTE9SX1NQQUNFX1lDQkNSNjAxX0xJTUlURUQsCiBDT0xPUl9TUEFDRV9ZQ0JDUjcwOV9M SU1JVEVELAogQ09MT1JfU1BBQ0VfMjAyMF9SR0JfRlVMTFJBTkdFLAogQ09MT1JfU1BBQ0VfMjAy MF9SR0JfTElNSVRFRFJBTkdFLAogQ09MT1JfU1BBQ0VfMjAyMF9ZQ0JDUiwKIENPTE9SX1NQQUNF X0FET0JFUkdCLAogQ09MT1JfU1BBQ0VfRENJUDMsCiBDT0xPUl9TUEFDRV9ESVNQTEFZTkFUSVZF LAogQ09MT1JfU1BBQ0VfRE9MQllWSVNJT04sCiBDT0xPUl9TUEFDRV9BUFBDVFJMLAogQ09MT1Jf U1BBQ0VfQ1VTVE9NUE9JTlRTLAogQ09MT1JfU1BBQ0VfWUNCQ1I3MDlfQkxBQ0ssCn07CgplbnVt IGRjX2RpdGhlcl9vcHRpb24gewogRElUSEVSX09QVElPTl9ERUZBVUxULAogRElUSEVSX09QVElP Tl9ESVNBQkxFLAogRElUSEVSX09QVElPTl9GTTYsCiBESVRIRVJfT1BUSU9OX0ZNOCwKIERJVEhF Ul9PUFRJT05fRk0xMCwKIERJVEhFUl9PUFRJT05fU1BBVElBTDZfRlJBTUVfUkFORE9NLAogRElU SEVSX09QVElPTl9TUEFUSUFMOF9GUkFNRV9SQU5ET00sCiBESVRIRVJfT1BUSU9OX1NQQVRJQUwx MF9GUkFNRV9SQU5ET00sCiBESVRIRVJfT1BUSU9OX1NQQVRJQUw2LAogRElUSEVSX09QVElPTl9T UEFUSUFMOCwKIERJVEhFUl9PUFRJT05fU1BBVElBTDEwLAogRElUSEVSX09QVElPTl9UUlVONiwK IERJVEhFUl9PUFRJT05fVFJVTjgsCiBESVRIRVJfT1BUSU9OX1RSVU4xMCwKIERJVEhFUl9PUFRJ T05fVFJVTjEwX1NQQVRJQUw4LAogRElUSEVSX09QVElPTl9UUlVOMTBfU1BBVElBTDYsCiBESVRI RVJfT1BUSU9OX1RSVU4xMF9GTTgsCiBESVRIRVJfT1BUSU9OX1RSVU4xMF9GTTYsCiBESVRIRVJf T1BUSU9OX1RSVU4xMF9TUEFUSUFMOF9GTTYsCiBESVRIRVJfT1BUSU9OX1NQQVRJQUwxMF9GTTgs CiBESVRIRVJfT1BUSU9OX1NQQVRJQUwxMF9GTTYsCiBESVRIRVJfT1BUSU9OX1RSVU44X1NQQVRJ QUw2LAogRElUSEVSX09QVElPTl9UUlVOOF9GTTYsCiBESVRIRVJfT1BUSU9OX1NQQVRJQUw4X0ZN NiwKIERJVEhFUl9PUFRJT05fTUFYID0gRElUSEVSX09QVElPTl9TUEFUSUFMOF9GTTYsCiBESVRI RVJfT1BUSU9OX0lOVkFMSUQKfTsKCmVudW0gZGNfcXVhbnRpemF0aW9uX3JhbmdlIHsKIFFVQU5U SVpBVElPTl9SQU5HRV9VTktOT1dOLAogUVVBTlRJWkFUSU9OX1JBTkdFX0ZVTEwsCiBRVUFOVEla QVRJT05fUkFOR0VfTElNSVRFRAp9OwoKZW51bSBkY19keW5hbWljX2V4cGFuc2lvbiB7CiBEWU5f RVhQQU5TSU9OX0FVVE8sCiBEWU5fRVhQQU5TSU9OX0RJU0FCTEUKfTsKCgoKCnN0cnVjdCBzY2Fs aW5nX3RhcHMgewogdWludDMyX3Qgdl90YXBzOwogdWludDMyX3QgaF90YXBzOwogdWludDMyX3Qg dl90YXBzX2M7CiB1aW50MzJfdCBoX3RhcHNfYzsKIGJvb2wgaW50ZWdlcl9zY2FsaW5nOwp9OwoK ZW51bSBkY190aW1pbmdfc3RhbmRhcmQgewogRENfVElNSU5HX1NUQU5EQVJEX1VOREVGSU5FRCwK IERDX1RJTUlOR19TVEFOREFSRF9ETVQsCiBEQ19USU1JTkdfU1RBTkRBUkRfR1RGLAogRENfVElN SU5HX1NUQU5EQVJEX0NWVCwKIERDX1RJTUlOR19TVEFOREFSRF9DVlRfUkIsCiBEQ19USU1JTkdf U1RBTkRBUkRfQ0VBNzcwLAogRENfVElNSU5HX1NUQU5EQVJEX0NFQTg2MSwKIERDX1RJTUlOR19T VEFOREFSRF9IRE1JLAogRENfVElNSU5HX1NUQU5EQVJEX1RWX05UU0MsCiBEQ19USU1JTkdfU1RB TkRBUkRfVFZfTlRTQ19KLAogRENfVElNSU5HX1NUQU5EQVJEX1RWX1BBTCwKIERDX1RJTUlOR19T VEFOREFSRF9UVl9QQUxfTSwKIERDX1RJTUlOR19TVEFOREFSRF9UVl9QQUxfQ04sCiBEQ19USU1J TkdfU1RBTkRBUkRfVFZfU0VDQU0sCiBEQ19USU1JTkdfU1RBTkRBUkRfRVhQTElDSVQsCgogRENf VElNSU5HX1NUQU5EQVJEX1VTRVJfT1ZFUlJJREUsCgogRENfVElNSU5HX1NUQU5EQVJEX01BWAp9 OwoKZW51bSBkY19jb2xvcl9kZXB0aCB7CiBDT0xPUl9ERVBUSF9VTkRFRklORUQsCiBDT0xPUl9E RVBUSF82NjYsCiBDT0xPUl9ERVBUSF84ODgsCiBDT0xPUl9ERVBUSF8xMDEwMTAsCiBDT0xPUl9E RVBUSF8xMjEyMTIsCiBDT0xPUl9ERVBUSF8xNDE0MTQsCiBDT0xPUl9ERVBUSF8xNjE2MTYsCiBD T0xPUl9ERVBUSF85OTksCiBDT0xPUl9ERVBUSF8xMTExMTEsCiBDT0xPUl9ERVBUSF9DT1VOVAp9 OwoKZW51bSBkY19waXhlbF9lbmNvZGluZyB7CiBQSVhFTF9FTkNPRElOR19VTkRFRklORUQsCiBQ SVhFTF9FTkNPRElOR19SR0IsCiBQSVhFTF9FTkNPRElOR19ZQ0JDUjQyMiwKIFBJWEVMX0VOQ09E SU5HX1lDQkNSNDQ0LAogUElYRUxfRU5DT0RJTkdfWUNCQ1I0MjAsCiBQSVhFTF9FTkNPRElOR19D T1VOVAp9OwoKZW51bSBkY19hc3BlY3RfcmF0aW8gewogQVNQRUNUX1JBVElPX05PX0RBVEEsCiBB U1BFQ1RfUkFUSU9fNF8zLAogQVNQRUNUX1JBVElPXzE2XzksCiBBU1BFQ1RfUkFUSU9fNjRfMjcs CiBBU1BFQ1RfUkFUSU9fMjU2XzEzNSwKIEFTUEVDVF9SQVRJT19GVVRVUkUKfTsKCmVudW0gc2Nh bm5pbmdfdHlwZSB7CiBTQ0FOTklOR19UWVBFX05PREFUQSA9IDAsCiBTQ0FOTklOR19UWVBFX09W RVJTQ0FOLAogU0NBTk5JTkdfVFlQRV9VTkRFUlNDQU4sCiBTQ0FOTklOR19UWVBFX0ZVVFVSRSwK IFNDQU5OSU5HX1RZUEVfVU5ERUZJTkVECn07CgpzdHJ1Y3QgZGNfY3J0Y190aW1pbmdfZmxhZ3Mg ewogdWludDMyX3QgSU5URVJMQUNFIDoxOwogdWludDMyX3QgSFNZTkNfUE9TSVRJVkVfUE9MQVJJ VFkgOjE7CgogdWludDMyX3QgVlNZTkNfUE9TSVRJVkVfUE9MQVJJVFkgOjE7CgoKIHVpbnQzMl90 IEhPUlpfQ09VTlRfQllfVFdPOjE7CgogdWludDMyX3QgRVhDTFVTSVZFXzNEIDoxOwoKCiB1aW50 MzJfdCBSSUdIVF9FWUVfM0RfUE9MQVJJVFkgOjE7CgogdWludDMyX3QgU1VCX1NBTVBMRV8zRCA6 MTsKCiB1aW50MzJfdCBVU0VfSU5fM0RfVklFV19PTkxZIDoxOwoKIHVpbnQzMl90IFNURVJFT18z RF9QUkVGRVJFTkNFIDoxOwoKIHVpbnQzMl90IFlfT05MWSA6MTsKCiB1aW50MzJfdCBZQ0JDUjQy MCA6MTsKIHVpbnQzMl90IERURF9DT1VOVEVSIDo1OwoKIHVpbnQzMl90IEZPUkNFX0hEUiA6MTsK CgoKIHVpbnQzMl90IExURV8zNDBNQ1NDX1NDUkFNQkxFOjE7CgogdWludDMyX3QgRFNDIDogMTsK fTsKCmVudW0gZGNfdGltaW5nXzNkX2Zvcm1hdCB7CiBUSU1JTkdfM0RfRk9STUFUX05PTkUsCiBU SU1JTkdfM0RfRk9STUFUX0ZSQU1FX0FMVEVSTkFURSwKIFRJTUlOR18zRF9GT1JNQVRfSU5CQU5E X0ZBLAogVElNSU5HXzNEX0ZPUk1BVF9EUF9IRE1JX0lOQkFORF9GQSwKCiBUSU1JTkdfM0RfRk9S TUFUX1NJREVCQU5EX0ZBLAogVElNSU5HXzNEX0ZPUk1BVF9IV19GUkFNRV9QQUNLSU5HLAogVElN SU5HXzNEX0ZPUk1BVF9TV19GUkFNRV9QQUNLSU5HLAogVElNSU5HXzNEX0ZPUk1BVF9ST1dfSU5U RVJMRUFWRSwKIFRJTUlOR18zRF9GT1JNQVRfQ09MVU1OX0lOVEVSTEVBVkUsCiBUSU1JTkdfM0Rf Rk9STUFUX1BJWEVMX0lOVEVSTEVBVkUsCiBUSU1JTkdfM0RfRk9STUFUX1NJREVfQllfU0lERSwK IFRJTUlOR18zRF9GT1JNQVRfVE9QX0FORF9CT1RUT00sCiBUSU1JTkdfM0RfRk9STUFUX1NCU19T V19QQUNLRUQsCgogVElNSU5HXzNEX0ZPUk1BVF9UQl9TV19QQUNLRUQsCgoKIFRJTUlOR18zRF9G T1JNQVRfTUFYLAp9OwoKc3RydWN0IGRjX2RzY19jb25maWcgewogdWludDMyX3QgbnVtX3NsaWNl c19oOwogdWludDMyX3QgbnVtX3NsaWNlc192OwogdWludDMyX3QgYml0c19wZXJfcGl4ZWw7CiBi b29sIGJsb2NrX3ByZWRfZW5hYmxlOwogdWludDMyX3QgbGluZWJ1Zl9kZXB0aDsKIHVpbnQzMl90 IHZlcnNpb25fbWlub3I7CiBib29sIHljYmNyNDIyX3NpbXBsZTsKIGludDMyX3QgcmNfYnVmZmVy X3NpemU7Cn07CnN0cnVjdCBkY19jcnRjX3RpbWluZyB7CiB1aW50MzJfdCBoX3RvdGFsOwogdWlu dDMyX3QgaF9ib3JkZXJfbGVmdDsKIHVpbnQzMl90IGhfYWRkcmVzc2FibGU7CiB1aW50MzJfdCBo X2JvcmRlcl9yaWdodDsKIHVpbnQzMl90IGhfZnJvbnRfcG9yY2g7CiB1aW50MzJfdCBoX3N5bmNf d2lkdGg7CgogdWludDMyX3Qgdl90b3RhbDsKIHVpbnQzMl90IHZfYm9yZGVyX3RvcDsKIHVpbnQz Ml90IHZfYWRkcmVzc2FibGU7CiB1aW50MzJfdCB2X2JvcmRlcl9ib3R0b207CiB1aW50MzJfdCB2 X2Zyb250X3BvcmNoOwogdWludDMyX3Qgdl9zeW5jX3dpZHRoOwoKIHVpbnQzMl90IHBpeF9jbGtf MTAwaHo7CgogdWludDMyX3QgdmljOwogdWludDMyX3QgaGRtaV92aWM7CiBlbnVtIGRjX3RpbWlu Z18zZF9mb3JtYXQgdGltaW5nXzNkX2Zvcm1hdDsKIGVudW0gZGNfY29sb3JfZGVwdGggZGlzcGxh eV9jb2xvcl9kZXB0aDsKIGVudW0gZGNfcGl4ZWxfZW5jb2RpbmcgcGl4ZWxfZW5jb2Rpbmc7CiBl bnVtIGRjX2FzcGVjdF9yYXRpbyBhc3BlY3RfcmF0aW87CiBlbnVtIHNjYW5uaW5nX3R5cGUgc2Nh bl90eXBlOwoKIHN0cnVjdCBkY19jcnRjX3RpbWluZ19mbGFncyBmbGFnczsKIHN0cnVjdCBkY19k c2NfY29uZmlnIGRzY19jZmc7Cn07CgplbnVtIHRyaWdnZXJfZGVsYXkgewogVFJJR0dFUl9ERUxB WV9ORVhUX1BJWEVMID0gMCwKIFRSSUdHRVJfREVMQVlfTkVYVF9MSU5FLAp9OwoKZW51bSBjcnRj X2V2ZW50IHsKIENSVENfRVZFTlRfVlNZTkNfUklTSU5HID0gMCwKIENSVENfRVZFTlRfVlNZTkNf RkFMTElORwp9OwoKc3RydWN0IGNydGNfdHJpZ2dlcl9pbmZvIHsKIGJvb2wgZW5hYmxlZDsKIHN0 cnVjdCBkY19zdHJlYW1fc3RhdGUgKmV2ZW50X3NvdXJjZTsKIGVudW0gY3J0Y19ldmVudCBldmVu dDsKIGVudW0gdHJpZ2dlcl9kZWxheSBkZWxheTsKfTsKCnN0cnVjdCBkY19jcnRjX3RpbWluZ19h ZGp1c3QgewogdWludDMyX3Qgdl90b3RhbF9taW47CiB1aW50MzJfdCB2X3RvdGFsX21heDsKIHVp bnQzMl90IHZfdG90YWxfbWlkOwogdWludDMyX3Qgdl90b3RhbF9taWRfZnJhbWVfbnVtOwp9OwoK CgplbnVtIHZyYW1fdHlwZSB7CiBWSURFT19NRU1PUllfVFlQRV9HRERSNSA9IDIsCiBWSURFT19N RU1PUllfVFlQRV9ERFIzID0gMywKIFZJREVPX01FTU9SWV9UWVBFX0REUjQgPSA0LAogVklERU9f TUVNT1JZX1RZUEVfSEJNID0gNSwKIFZJREVPX01FTU9SWV9UWVBFX0dERFI2ID0gNiwKfTsKCmVu dW0gZHdiX2Nudl9vdXRfYnBjIHsKIERXQl9DTlZfT1VUX0JQQ184QlBDID0gMCwKIERXQl9DTlZf T1VUX0JQQ18xMEJQQyA9IDEsCn07CgplbnVtIGR3Yl9vdXRwdXRfZGVwdGggewogRFdCX09VVFBV VF9QSVhFTF9ERVBUSF84QlBDID0gMCwKIERXQl9PVVRQVVRfUElYRUxfREVQVEhfMTBCUEMgPSAx LAp9OwoKZW51bSBkd2JfY2FwdHVyZV9yYXRlIHsKIGR3Yl9jYXB0dXJlX3JhdGVfMCA9IDAsCiBk d2JfY2FwdHVyZV9yYXRlXzEgPSAxLAogZHdiX2NhcHR1cmVfcmF0ZV8yID0gMiwKIGR3Yl9jYXB0 dXJlX3JhdGVfMyA9IDMsCn07CgplbnVtIGR3Yl9zY2FsZXJfbW9kZSB7CiBkd2Jfc2NhbGVyX21v ZGVfYnlwYXNzNDQ0ID0gMCwKIGR3Yl9zY2FsZXJfbW9kZV9yZ2I0NDQgPSAxLAogZHdiX3NjYWxl cl9tb2RlX3l1djQ0NCA9IDIsCiBkd2Jfc2NhbGVyX21vZGVfeXV2NDIwID0gMwp9OwoKZW51bSBk d2Jfc3Vic2FtcGxlX3Bvc2l0aW9uIHsKIERXQl9JTlRFUlNUSVRJQUxfU1VCU0FNUExJTkcgPSAw LAogRFdCX0NPU0lURURfU1VCU0FNUExJTkcgPSAxCn07CgplbnVtIGR3Yl9zdGVyZW9fZXllX3Nl bGVjdCB7CiBEV0JfU1RFUkVPX0VZRV9MRUZUID0gMSwKIERXQl9TVEVSRU9fRVlFX1JJR0hUID0g MiwKfTsKCmVudW0gZHdiX3N0ZXJlb190eXBlIHsKIERXQl9TVEVSRU9fVFlQRV9GUkFNRV9QQUNL SU5HID0gMCwKIERXQl9TVEVSRU9fVFlQRV9GUkFNRV9TRVFVRU5USUFMID0gMywKfTsKCgoKc3Ry dWN0IG1jaWZfYnVmX3BhcmFtcyB7CiB1bnNpZ25lZCBsb25nIGxvbmcgbHVtYV9hZGRyZXNzWzRd OwogdW5zaWduZWQgbG9uZyBsb25nIGNocm9tYV9hZGRyZXNzWzRdOwogdW5zaWduZWQgaW50IGx1 bWFfcGl0Y2g7CiB1bnNpZ25lZCBpbnQgY2hyb21hX3BpdGNoOwogdW5zaWduZWQgaW50IHdhcm11 cF9waXRjaDsKIHVuc2lnbmVkIGludCBzd2xvY2s7Cn07CgoKCnN0cnVjdCB0Z19jb2xvciB7Cgog dWludDE2X3QgY29sb3Jfcl9jcjsKIHVpbnQxNl90IGNvbG9yX2dfeTsKIHVpbnQxNl90IGNvbG9y X2JfY2I7Cn07CiMgMzcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9kY190eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2luY2x1ZGUvZGFsX3R5cGVzLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX3R5cGVzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKIyAzMCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX3R5cGVz LmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNf dHlwZXMuaCIgMQojIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv aW5jbHVkZS9kYWxfdHlwZXMuaCIgMgoKc3RydWN0IGRhbF9sb2dnZXI7CnN0cnVjdCBkY19iaW9z OwoKZW51bSBkY2VfdmVyc2lvbiB7CiBEQ0VfVkVSU0lPTl9VTktOT1dOID0gKC0xKSwKIERDRV9W RVJTSU9OXzhfMCwKIERDRV9WRVJTSU9OXzhfMSwKIERDRV9WRVJTSU9OXzhfMywKIERDRV9WRVJT SU9OXzEwXzAsCiBEQ0VfVkVSU0lPTl8xMV8wLAogRENFX1ZFUlNJT05fMTFfMiwKIERDRV9WRVJT SU9OXzExXzIyLAogRENFX1ZFUlNJT05fMTJfMCwKIERDRV9WRVJTSU9OXzEyXzEsCiBEQ0VfVkVS U0lPTl9NQVgsCiBEQ05fVkVSU0lPTl8xXzAsCiBEQ05fVkVSU0lPTl8xXzAxLAogRENOX1ZFUlNJ T05fMl8wLAogRENOX1ZFUlNJT05fMl8xLAogRENOX1ZFUlNJT05fTUFYCn07CiMgMzggIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIiAyCiMgMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvZ3JwaF9vYmpl Y3RfZGVmcy5oIiAxCiMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9pbmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9pZC5oIiAxCiMgMzAgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2lk LmgiCmVudW0gb2JqZWN0X3R5cGUgewogT0JKRUNUX1RZUEVfVU5LTk9XTiA9IDAsCgoKIE9CSkVD VF9UWVBFX0dQVSwKIE9CSkVDVF9UWVBFX0VOQ09ERVIsCiBPQkpFQ1RfVFlQRV9DT05ORUNUT1Is CiBPQkpFQ1RfVFlQRV9ST1VURVIsCiBPQkpFQ1RfVFlQRV9HRU5FUklDLAoKCiBPQkpFQ1RfVFlQ RV9BVURJTywKIE9CSkVDVF9UWVBFX0NPTlRST0xMRVIsCiBPQkpFQ1RfVFlQRV9DTE9DS19TT1VS Q0UsCiBPQkpFQ1RfVFlQRV9FTkdJTkUsCgogT0JKRUNUX1RZUEVfQ09VTlQKfTsKCgplbnVtIG9i amVjdF9lbnVtX2lkIHsKIEVOVU1fSURfVU5LTk9XTiA9IDAsCiBFTlVNX0lEXzEsCiBFTlVNX0lE XzIsCiBFTlVNX0lEXzMsCiBFTlVNX0lEXzQsCiBFTlVNX0lEXzUsCiBFTlVNX0lEXzYsCiBFTlVN X0lEXzcsCgogRU5VTV9JRF9DT1VOVAp9OwoKCmVudW0gZ2VuZXJpY19pZCB7CiBHRU5FUklDX0lE X1VOS05PV04gPSAwLAogR0VORVJJQ19JRF9NWE1fT1BNLAogR0VORVJJQ19JRF9HTFNZTkMsCiBH RU5FUklDX0lEX1NURVJFTywKCiBHRU5FUklDX0lEX0NPVU5UCn07CgoKZW51bSBjb250cm9sbGVy X2lkIHsKIENPTlRST0xMRVJfSURfVU5ERUZJTkVEID0gMCwKIENPTlRST0xMRVJfSURfRDAsCiBD T05UUk9MTEVSX0lEX0QxLAogQ09OVFJPTExFUl9JRF9EMiwKIENPTlRST0xMRVJfSURfRDMsCiBD T05UUk9MTEVSX0lEX0Q0LAogQ09OVFJPTExFUl9JRF9ENSwKIENPTlRST0xMRVJfSURfVU5ERVJM QVkwLAogQ09OVFJPTExFUl9JRF9NQVggPSBDT05UUk9MTEVSX0lEX1VOREVSTEFZMAp9OwojIDkz ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29i amVjdF9pZC5oIgplbnVtIGNsb2NrX3NvdXJjZV9pZCB7CiBDTE9DS19TT1VSQ0VfSURfVU5ERUZJ TkVEID0gMCwKIENMT0NLX1NPVVJDRV9JRF9QTEwwLAogQ0xPQ0tfU09VUkNFX0lEX1BMTDEsCiBD TE9DS19TT1VSQ0VfSURfUExMMiwKIENMT0NLX1NPVVJDRV9JRF9FWFRFUk5BTCwKIENMT0NLX1NP VVJDRV9JRF9EQ1BMTCwKIENMT0NLX1NPVVJDRV9JRF9ERlMsCiBDTE9DS19TT1VSQ0VfSURfVkNF LAoKIENMT0NLX1NPVVJDRV9JRF9EUF9EVE8sCgogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEww LAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEwxLAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9Q TEwyLAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEwzLAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BI WV9QTEw0LAogQ0xPQ0tfU09VUkNFX0NPTUJPX1BIWV9QTEw1LAogQ0xPQ0tfU09VUkNFX0NPTUJP X0RJU1BMQVlfUExMMAp9OwoKCmVudW0gZW5jb2Rlcl9pZCB7CiBFTkNPREVSX0lEX1VOS05PV04g PSAwLAoKCiBFTkNPREVSX0lEX0lOVEVSTkFMX0xWRFMsCiBFTkNPREVSX0lEX0lOVEVSTkFMX1RN RFMxLAogRU5DT0RFUl9JRF9JTlRFUk5BTF9UTURTMiwKIEVOQ09ERVJfSURfSU5URVJOQUxfREFD MSwKIEVOQ09ERVJfSURfSU5URVJOQUxfREFDMiwKCgogRU5DT0RFUl9JRF9JTlRFUk5BTF9MVlRN MSwKIEVOQ09ERVJfSURfSU5URVJOQUxfSERNSSwKCgogRU5DT0RFUl9JRF9JTlRFUk5BTF9LTERT Q1BfVE1EUzEsCiBFTkNPREVSX0lEX0lOVEVSTkFMX0tMRFNDUF9EQUMxLAogRU5DT0RFUl9JRF9J TlRFUk5BTF9LTERTQ1BfREFDMiwKCiBFTkNPREVSX0lEX0VYVEVSTkFMX01WUFVfRlBHQSwKIEVO Q09ERVJfSURfSU5URVJOQUxfRERJLAogRU5DT0RFUl9JRF9JTlRFUk5BTF9VTklQSFksCiBFTkNP REVSX0lEX0lOVEVSTkFMX0tMRFNDUF9MVlRNQSwKIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZ MSwKIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMiwKIEVOQ09ERVJfSURfRVhURVJOQUxfTlVU TUVHLAogRU5DT0RFUl9JRF9FWFRFUk5BTF9UUkFWSVMsCgogRU5DT0RFUl9JRF9JTlRFUk5BTF9X SVJFTEVTUywKIEVOQ09ERVJfSURfSU5URVJOQUxfVU5JUEhZMywKIEVOQ09ERVJfSURfSU5URVJO QUxfVklSVFVBTCwKfTsKCgplbnVtIGNvbm5lY3Rvcl9pZCB7CiBDT05ORUNUT1JfSURfVU5LTk9X TiA9IDAsCiBDT05ORUNUT1JfSURfU0lOR0xFX0xJTktfRFZJSSA9IDEsCiBDT05ORUNUT1JfSURf RFVBTF9MSU5LX0RWSUkgPSAyLAogQ09OTkVDVE9SX0lEX1NJTkdMRV9MSU5LX0RWSUQgPSAzLAog Q09OTkVDVE9SX0lEX0RVQUxfTElOS19EVklEID0gNCwKIENPTk5FQ1RPUl9JRF9WR0EgPSA1LAog Q09OTkVDVE9SX0lEX0hETUlfVFlQRV9BID0gMTIsCiBDT05ORUNUT1JfSURfTFZEUyA9IDE0LAog Q09OTkVDVE9SX0lEX1BDSUUgPSAxNiwKIENPTk5FQ1RPUl9JRF9IQVJEQ09ERV9EVkkgPSAxOCwK IENPTk5FQ1RPUl9JRF9ESVNQTEFZX1BPUlQgPSAxOSwKIENPTk5FQ1RPUl9JRF9FRFAgPSAyMCwK IENPTk5FQ1RPUl9JRF9NWE0gPSAyMSwKIENPTk5FQ1RPUl9JRF9XSVJFTEVTUyA9IDIyLAogQ09O TkVDVE9SX0lEX01JUkFDQVNUID0gMjMsCgogQ09OTkVDVE9SX0lEX1ZJUlRVQUwgPSAxMDAKfTsK CgplbnVtIGF1ZGlvX2lkIHsKIEFVRElPX0lEX1VOS05PV04gPSAwLAogQVVESU9fSURfSU5URVJO QUxfQVpBTElBCn07CgoKZW51bSBlbmdpbmVfaWQgewogRU5HSU5FX0lEX0RJR0EsCiBFTkdJTkVf SURfRElHQiwKIEVOR0lORV9JRF9ESUdDLAogRU5HSU5FX0lEX0RJR0QsCiBFTkdJTkVfSURfRElH RSwKIEVOR0lORV9JRF9ESUdGLAogRU5HSU5FX0lEX0RJR0csCiBFTkdJTkVfSURfREFDQSwKIEVO R0lORV9JRF9EQUNCLAogRU5HSU5FX0lEX1ZDRSwKIEVOR0lORV9JRF9WSVJUVUFMLAoKIEVOR0lO RV9JRF9DT1VOVCwKIEVOR0lORV9JRF9VTktOT1dOID0gKC0xTCkKfTsKCmVudW0gdHJhbnNtaXR0 ZXJfY29sb3JfZGVwdGggewogVFJBTlNNSVRURVJfQ09MT1JfREVQVEhfMjQgPSAwLAogVFJBTlNN SVRURVJfQ09MT1JfREVQVEhfMzAsCiBUUkFOU01JVFRFUl9DT0xPUl9ERVBUSF8zNiwKIFRSQU5T TUlUVEVSX0NPTE9SX0RFUFRIXzQ4Cn07CgplbnVtIGRwX2FsdF9tb2RlIHsKIERQX0FsdF9tb2Rl X19Vbmtub3duID0gMCwKIERQX0FsdF9tb2RlX19Db25uZWN0LAogRFBfQWx0X21vZGVfX05vQ29u bmVjdCwKfTsKIyAyMjAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiCnN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgewogdWlu dDMyX3QgaWQ6ODsKIHVpbnQzMl90IGVudW1faWQ6NDsKIHVpbnQzMl90IHR5cGU6NDsKIHVpbnQz Ml90IHJlc2VydmVkOjE2Owp9OwoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGRhbF9ncmFw aGljc19vYmplY3RfaWRfaW5pdCgKIHVpbnQzMl90IGlkLAogZW51bSBvYmplY3RfZW51bV9pZCBl bnVtX2lkLAogZW51bSBvYmplY3RfdHlwZSB0eXBlKQp7CiBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0 X2lkIHJlc3VsdCA9IHsKICBpZCwgZW51bV9pZCwgdHlwZSwgMAogfTsKCiByZXR1cm4gcmVzdWx0 Owp9CgoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0 aW9uKSkgdWludDMyX3QgZGFsX2dyYXBoaWNzX29iamVjdF9pZF90b191aW50KAogc3RydWN0IGdy YXBoaWNzX29iamVjdF9pZCBpZCkKewogcmV0dXJuIGlkLmlkICsgKGlkLmVudW1faWQgPDwgMHg4 KSArIChpZC50eXBlIDw8IDB4Yyk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGVudW0gY29udHJvbGxlcl9pZCBkYWxfZ3JhcGhpY3Nf b2JqZWN0X2lkX2dldF9jb250cm9sbGVyX2lkKAogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBp ZCkKewogaWYgKGlkLnR5cGUgPT0gT0JKRUNUX1RZUEVfQ09OVFJPTExFUikKICByZXR1cm4gKGVu dW0gY29udHJvbGxlcl9pZCkgaWQuaWQ7CiByZXR1cm4gQ09OVFJPTExFUl9JRF9VTkRFRklORUQ7 Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJp YnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlv bikpIGVudW0gY2xvY2tfc291cmNlX2lkIGRhbF9ncmFwaGljc19vYmplY3RfaWRfZ2V0X2Nsb2Nr X3NvdXJjZV9pZCgKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgaWQpCnsKIGlmIChpZC50eXBl ID09IE9CSkVDVF9UWVBFX0NMT0NLX1NPVVJDRSkKICByZXR1cm4gKGVudW0gY2xvY2tfc291cmNl X2lkKSBpZC5pZDsKIHJldHVybiBDTE9DS19TT1VSQ0VfSURfVU5ERUZJTkVEOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIGVu Y29kZXJfaWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9nZXRfZW5jb2Rlcl9pZCgKIHN0cnVjdCBn cmFwaGljc19vYmplY3RfaWQgaWQpCnsKIGlmIChpZC50eXBlID09IE9CSkVDVF9UWVBFX0VOQ09E RVIpCiAgcmV0dXJuIChlbnVtIGVuY29kZXJfaWQpIGlkLmlkOwogcmV0dXJuIEVOQ09ERVJfSURf VU5LTk9XTjsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgZW51bSBjb25uZWN0b3JfaWQgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9nZXRf Y29ubmVjdG9yX2lkKAogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZCkKewogaWYgKGlkLnR5 cGUgPT0gT0JKRUNUX1RZUEVfQ09OTkVDVE9SKQogIHJldHVybiAoZW51bSBjb25uZWN0b3JfaWQp IGlkLmlkOwogcmV0dXJuIENPTk5FQ1RPUl9JRF9VTktOT1dOOwp9CgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIGF1ZGlvX2lkIGRh bF9ncmFwaGljc19vYmplY3RfaWRfZ2V0X2F1ZGlvX2lkKAogc3RydWN0IGdyYXBoaWNzX29iamVj dF9pZCBpZCkKewogaWYgKGlkLnR5cGUgPT0gT0JKRUNUX1RZUEVfQVVESU8pCiAgcmV0dXJuIChl bnVtIGF1ZGlvX2lkKSBpZC5pZDsKIHJldHVybiBBVURJT19JRF9VTktOT1dOOwp9CgpzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBlbnVtIGVu Z2luZV9pZCBkYWxfZ3JhcGhpY3Nfb2JqZWN0X2lkX2dldF9lbmdpbmVfaWQoCiBzdHJ1Y3QgZ3Jh cGhpY3Nfb2JqZWN0X2lkIGlkKQp7CiBpZiAoaWQudHlwZSA9PSBPQkpFQ1RfVFlQRV9FTkdJTkUp CiAgcmV0dXJuIChlbnVtIGVuZ2luZV9pZCkgaWQuaWQ7CiByZXR1cm4gRU5HSU5FX0lEX1VOS05P V047Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgZGFsX2dyYXBoaWNzX29iamVjdF9pZF9lcXVhbCgKIHN0cnVjdCBncmFwaGlj c19vYmplY3RfaWQgaWRfMSwKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgaWRfMikKewogaWYg KChpZF8xLmlkID09IGlkXzIuaWQpICYmIChpZF8xLmVudW1faWQgPT0gaWRfMi5lbnVtX2lkKSAm JgogIChpZF8xLnR5cGUgPT0gaWRfMi50eXBlKSkgewogIHJldHVybiB0cnVlOwogfQogcmV0dXJu IGZhbHNlOwp9CiMgMzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIgMgojIDQ1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9kZWZzLmgiCmVudW0gaHBkX3Nv dXJjZV9pZCB7CiBIUERfU09VUkNFSUQxID0gMCwKIEhQRF9TT1VSQ0VJRDIsCiBIUERfU09VUkNF SUQzLAogSFBEX1NPVVJDRUlENCwKIEhQRF9TT1VSQ0VJRDUsCiBIUERfU09VUkNFSUQ2LAoKIEhQ RF9TT1VSQ0VJRF9DT1VOVCwKIEhQRF9TT1VSQ0VJRF9VTktOT1dOCn07CgoKZW51bSBjaGFubmVs X2lkIHsKIENIQU5ORUxfSURfVU5LTk9XTiA9IDAsCiBDSEFOTkVMX0lEX0REQzEsCiBDSEFOTkVM X0lEX0REQzIsCiBDSEFOTkVMX0lEX0REQzMsCiBDSEFOTkVMX0lEX0REQzQsCiBDSEFOTkVMX0lE X0REQzUsCiBDSEFOTkVMX0lEX0REQzYsCiBDSEFOTkVMX0lEX0REQ19WR0EsCiBDSEFOTkVMX0lE X0kyQ19QQUQsCiBDSEFOTkVMX0lEX0NPVU5UCn07CiMgODEgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIKZW51bSB0cmFu c21pdHRlciB7CiBUUkFOU01JVFRFUl9VTktOT1dOID0gKC0xTCksCiBUUkFOU01JVFRFUl9VTklQ SFlfQSwKIFRSQU5TTUlUVEVSX1VOSVBIWV9CLAogVFJBTlNNSVRURVJfVU5JUEhZX0MsCiBUUkFO U01JVFRFUl9VTklQSFlfRCwKIFRSQU5TTUlUVEVSX1VOSVBIWV9FLAogVFJBTlNNSVRURVJfVU5J UEhZX0YsCiBUUkFOU01JVFRFUl9OVVRNRUdfQ1JULAogVFJBTlNNSVRURVJfVFJBVklTX0NSVCwK IFRSQU5TTUlUVEVSX1RSQVZJU19MQ0QsCiBUUkFOU01JVFRFUl9VTklQSFlfRywKIFRSQU5TTUlU VEVSX0NPVU5UCn07CgoKCmVudW0gc3luY19zb3VyY2UgewogU1lOQ19TT1VSQ0VfTk9ORSA9IDAs CgoKIFNZTkNfU09VUkNFX0NPTlRST0xMRVIwLAogU1lOQ19TT1VSQ0VfQ09OVFJPTExFUjEsCiBT WU5DX1NPVVJDRV9DT05UUk9MTEVSMiwKIFNZTkNfU09VUkNFX0NPTlRST0xMRVIzLAogU1lOQ19T T1VSQ0VfQ09OVFJPTExFUjQsCiBTWU5DX1NPVVJDRV9DT05UUk9MTEVSNSwKCgogU1lOQ19TT1VS Q0VfR1NMX0dST1VQMCwKIFNZTkNfU09VUkNFX0dTTF9HUk9VUDEsCiBTWU5DX1NPVVJDRV9HU0xf R1JPVVAyLAoKCgogU1lOQ19TT1VSQ0VfR1NMX0lPX0ZJUlNULAogU1lOQ19TT1VSQ0VfR1NMX0lP X0dFTkxPQ0tfQ0xPQ0sgPSBTWU5DX1NPVVJDRV9HU0xfSU9fRklSU1QsCiBTWU5DX1NPVVJDRV9H U0xfSU9fR0VOTE9DS19WU1lOQywKIFNZTkNfU09VUkNFX0dTTF9JT19TV0FQTE9DS19BLAogU1lO Q19TT1VSQ0VfR1NMX0lPX1NXQVBMT0NLX0IsCiBTWU5DX1NPVVJDRV9HU0xfSU9fTEFTVCA9IFNZ TkNfU09VUkNFX0dTTF9JT19TV0FQTE9DS19CLAoKCiBTWU5DX1NPVVJDRV9JT19GSVJTVCwKIFNZ TkNfU09VUkNFX0lPX0dFTkVSSUNfQSA9IFNZTkNfU09VUkNFX0lPX0ZJUlNULAogU1lOQ19TT1VS Q0VfSU9fR0VORVJJQ19CLAogU1lOQ19TT1VSQ0VfSU9fR0VORVJJQ19DLAogU1lOQ19TT1VSQ0Vf SU9fR0VORVJJQ19ELAogU1lOQ19TT1VSQ0VfSU9fR0VORVJJQ19FLAogU1lOQ19TT1VSQ0VfSU9f R0VORVJJQ19GLAogU1lOQ19TT1VSQ0VfSU9fSFBEMSwKIFNZTkNfU09VUkNFX0lPX0hQRDIsCiBT WU5DX1NPVVJDRV9JT19IU1lOQ19BLAogU1lOQ19TT1VSQ0VfSU9fVlNZTkNfQSwKIFNZTkNfU09V UkNFX0lPX0hTWU5DX0IsCiBTWU5DX1NPVVJDRV9JT19WU1lOQ19CLAogU1lOQ19TT1VSQ0VfSU9f TEFTVCA9IFNZTkNfU09VUkNFX0lPX1ZTWU5DX0IsCgoKIFNZTkNfU09VUkNFX0RVQUxfR1BVX1BJ Tgp9OwojIDE1MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1 ZGUvZ3JwaF9vYmplY3RfZGVmcy5oIgplbnVtIGNvbm5lY3Rvcl9sYXlvdXRfdHlwZSB7CiBDT05O RUNUT1JfTEFZT1VUX1RZUEVfVU5LTk9XTiwKIENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9EVklfRCwK IENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9EVklfSSwKIENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9WR0Es CiBDT05ORUNUT1JfTEFZT1VUX1RZUEVfSERNSSwKIENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9EUCwK IENPTk5FQ1RPUl9MQVlPVVRfVFlQRV9NSU5JX0RQLAp9OwpzdHJ1Y3QgY29ubmVjdG9yX2xheW91 dF9pbmZvIHsKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yX2lkOwogZW51bSBj b25uZWN0b3JfbGF5b3V0X3R5cGUgY29ubmVjdG9yX3R5cGU7CiB1bnNpZ25lZCBpbnQgbGVuZ3Ro OwogdW5zaWduZWQgaW50IHBvc2l0aW9uOwp9OwoKCnN0cnVjdCBzbG90X2xheW91dF9pbmZvIHsK IHVuc2lnbmVkIGludCBsZW5ndGg7CiB1bnNpZ25lZCBpbnQgd2lkdGg7CiB1bnNpZ25lZCBpbnQg bnVtX29mX2Nvbm5lY3RvcnM7CiBzdHJ1Y3QgY29ubmVjdG9yX2xheW91dF9pbmZvIGNvbm5lY3Rv cnNbKDE2KV07Cn07CgpzdHJ1Y3QgYm9hcmRfbGF5b3V0X2luZm8gewogdW5zaWduZWQgaW50IG51 bV9vZl9zbG90czsKCgogdW5zaWduZWQgaW50IGlzX251bWJlcl9vZl9zbG90c192YWxpZCA6IDE7 CiB1bnNpZ25lZCBpbnQgaXNfc2xvdHNfc2l6ZV92YWxpZCA6IDE7CiB1bnNpZ25lZCBpbnQgaXNf Y29ubmVjdG9yX29mZnNldHNfdmFsaWQgOiAxOwogdW5zaWduZWQgaW50IGlzX2Nvbm5lY3Rvcl9s ZW5ndGhzX3ZhbGlkIDogMTsKCiBzdHJ1Y3Qgc2xvdF9sYXlvdXRfaW5mbyBzbG90c1soNCldOwp9 OwojIDM5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlw ZXMuaCIgMgoKCgoKCgpzdHJ1Y3QgZGNfcGxhbmVfc3RhdGU7CnN0cnVjdCBkY19zdHJlYW1fc3Rh dGU7CnN0cnVjdCBkY19saW5rOwpzdHJ1Y3QgZGNfc2luazsKc3RydWN0IGRhbDsKc3RydWN0IGRj X2RtdWJfc3J2OwoKCgoKZW51bSBkY2VfZW52aXJvbm1lbnQgewogRENFX0VOVl9QUk9EVUNUSU9O X0RSViA9IDAsCgoKCiBEQ0VfRU5WX0ZQR0FfTUFYSU1VUywKCgogRENFX0VOVl9ESUFHLAoKCgoK IERDRV9FTlZfVklSVFVBTF9IVwp9OwojIDc4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCIKc3RydWN0IGh3X2FzaWNfaWQgewogdWludDMyX3Qg Y2hpcF9pZDsKIHVpbnQzMl90IGNoaXBfZmFtaWx5OwogdWludDMyX3QgcGNpX3JldmlzaW9uX2lk OwogdWludDMyX3QgaHdfaW50ZXJuYWxfcmV2OwogdWludDMyX3QgdnJhbV90eXBlOwogdWludDMy X3QgdnJhbV93aWR0aDsKIHVpbnQzMl90IGZlYXR1cmVfZmxhZ3M7CiB1aW50MzJfdCBmYWtlX3Bh dGhzX251bTsKIHZvaWQgKmF0b21iaW9zX2Jhc2VfYWRkcmVzczsKfTsKCnN0cnVjdCBkY19wZXJm X3RyYWNlIHsKIHVuc2lnbmVkIGxvbmcgcmVhZF9jb3VudDsKIHVuc2lnbmVkIGxvbmcgd3JpdGVf Y291bnQ7CiB1bnNpZ25lZCBsb25nIGxhc3RfZW50cnlfcmVhZDsKIHVuc2lnbmVkIGxvbmcgbGFz dF9lbnRyeV93cml0ZTsKfTsKCnN0cnVjdCBkY19jb250ZXh0IHsKIHN0cnVjdCBkYyAqZGM7Cgog dm9pZCAqZHJpdmVyX2NvbnRleHQ7CiBzdHJ1Y3QgZGNfcGVyZl90cmFjZSAqcGVyZl90cmFjZTsK IHZvaWQgKmNnc19kZXZpY2U7CgogZW51bSBkY2VfZW52aXJvbm1lbnQgZGNlX2Vudmlyb25tZW50 Owogc3RydWN0IGh3X2FzaWNfaWQgYXNpY19pZDsKCgoKCiBlbnVtIGRjZV92ZXJzaW9uIGRjZV92 ZXJzaW9uOwogc3RydWN0IGRjX2Jpb3MgKmRjX2Jpb3M7CiBib29sIGNyZWF0ZWRfYmlvczsKIHN0 cnVjdCBncGlvX3NlcnZpY2UgKmdwaW9fc2VydmljZTsKIHVpbnQzMl90IGRjX3NpbmtfaWRfY291 bnQ7CiB1aW50MzJfdCBkY19zdHJlYW1faWRfY291bnQ7CiB1aW50NjRfdCBmYmNfZ3B1X2FkZHI7 CiBzdHJ1Y3QgZGNfZG11Yl9zcnYgKmRtdWJfc3J2OwoKCgoKfTsKIyAxMzEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY190eXBlcy5oIgojIDEgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kY19kZGNfdHlwZXMuaCIgMQojIDI4 ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfZGRjX3R5cGVz LmgiCmVudW0gYXV4X3RyYW5zYWN0aW9uX3R5cGUgewogQVVYX1RSQU5TQUNUSU9OX1RZUEVfRFAs CiBBVVhfVFJBTlNBQ1RJT05fVFlQRV9JMkMKfTsKCgplbnVtIGkyY2F1eF90cmFuc2FjdGlvbl9h Y3Rpb24gewogSTJDQVVYX1RSQU5TQUNUSU9OX0FDVElPTl9JMkNfV1JJVEUgPSAweDAwLAogSTJD QVVYX1RSQU5TQUNUSU9OX0FDVElPTl9JMkNfUkVBRCA9IDB4MTAsCiBJMkNBVVhfVFJBTlNBQ1RJ T05fQUNUSU9OX0kyQ19TVEFUVVNfUkVRVUVTVCA9IDB4MjAsCgogSTJDQVVYX1RSQU5TQUNUSU9O X0FDVElPTl9JMkNfV1JJVEVfTU9UID0gMHg0MCwKIEkyQ0FVWF9UUkFOU0FDVElPTl9BQ1RJT05f STJDX1JFQURfTU9UID0gMHg1MCwKIEkyQ0FVWF9UUkFOU0FDVElPTl9BQ1RJT05fSTJDX1NUQVRV U19SRVFVRVNUX01PVCA9IDB4NjAsCgogSTJDQVVYX1RSQU5TQUNUSU9OX0FDVElPTl9EUF9XUklU RSA9IDB4ODAsCiBJMkNBVVhfVFJBTlNBQ1RJT05fQUNUSU9OX0RQX1JFQUQgPSAweDkwCn07Cgpl bnVtIGF1eF9jaGFubmVsX29wZXJhdGlvbl9yZXN1bHQgewogQVVYX0NIQU5ORUxfT1BFUkFUSU9O X1NVQ0NFRURFRCwKIEFVWF9DSEFOTkVMX09QRVJBVElPTl9GQUlMRURfUkVBU09OX1VOS05PV04s CiBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fRkFJTEVEX0lOVkFMSURfUkVQTFksCiBBVVhfQ0hBTk5F TF9PUEVSQVRJT05fRkFJTEVEX1RJTUVPVVQsCiBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fRkFJTEVE X0hQRF9ESVNDT04sCiBBVVhfQ0hBTk5FTF9PUEVSQVRJT05fRkFJTEVEX0VOR0lORV9BQ1FVSVJF Cn07CgoKc3RydWN0IGF1eF9yZXF1ZXN0X3RyYW5zYWN0aW9uX2RhdGEgewogZW51bSBhdXhfdHJh bnNhY3Rpb25fdHlwZSB0eXBlOwogZW51bSBpMmNhdXhfdHJhbnNhY3Rpb25fYWN0aW9uIGFjdGlv bjsKCiB1aW50MzJfdCBhZGRyZXNzOwoKIHVpbnQ4X3QgZGVsYXk7CiB1aW50MzJfdCBsZW5ndGg7 CiB1aW50OF90ICpkYXRhOwp9OwoKZW51bSBhdXhfdHJhbnNhY3Rpb25fcmVwbHkgewogQVVYX1RS QU5TQUNUSU9OX1JFUExZX0FVWF9BQ0sgPSAweDAwLAogQVVYX1RSQU5TQUNUSU9OX1JFUExZX0FV WF9OQUNLID0gMHgwMSwKIEFVWF9UUkFOU0FDVElPTl9SRVBMWV9BVVhfREVGRVIgPSAweDAyLAog QVVYX1RSQU5TQUNUSU9OX1JFUExZX0kyQ19PVkVSX0FVWF9OQUNLID0gMHgwNCwKIEFVWF9UUkFO U0FDVElPTl9SRVBMWV9JMkNfT1ZFUl9BVVhfREVGRVIgPSAweDA4LAoKIEFVWF9UUkFOU0FDVElP Tl9SRVBMWV9JMkNfQUNLID0gMHgwMCwKIEFVWF9UUkFOU0FDVElPTl9SRVBMWV9JMkNfTkFDSyA9 IDB4MTAsCiBBVVhfVFJBTlNBQ1RJT05fUkVQTFlfSTJDX0RFRkVSID0gMHgyMCwKCiBBVVhfVFJB TlNBQ1RJT05fUkVQTFlfSFBEX0RJU0NPTiA9IDB4NDAsCgogQVVYX1RSQU5TQUNUSU9OX1JFUExZ X0lOVkFMSUQgPSAweEZGCn07CgpzdHJ1Y3QgYXV4X3JlcGx5X3RyYW5zYWN0aW9uX2RhdGEgewog ZW51bSBhdXhfdHJhbnNhY3Rpb25fcmVwbHkgc3RhdHVzOwogdWludDMyX3QgbGVuZ3RoOwogdWlu dDhfdCAqZGF0YTsKfTsKCnN0cnVjdCBpMmNfcGF5bG9hZCB7CiBib29sIHdyaXRlOwogdWludDhf dCBhZGRyZXNzOwogdWludDMyX3QgbGVuZ3RoOwogdWludDhfdCAqZGF0YTsKfTsKCmVudW0gaTJj X2NvbW1hbmRfZW5naW5lIHsKIEkyQ19DT01NQU5EX0VOR0lORV9ERUZBVUxULAogSTJDX0NPTU1B TkRfRU5HSU5FX1NXLAogSTJDX0NPTU1BTkRfRU5HSU5FX0hXCn07CgpzdHJ1Y3QgaTJjX2NvbW1h bmQgewogc3RydWN0IGkyY19wYXlsb2FkICpwYXlsb2FkczsKIHVpbnQ4X3QgbnVtYmVyX29mX3Bh eWxvYWRzOwoKIGVudW0gaTJjX2NvbW1hbmRfZW5naW5lIGVuZ2luZTsKCgoKIHVpbnQzMl90IHNw ZWVkOwp9OwoKc3RydWN0IGdwaW9fZGRjX2h3X2luZm8gewogYm9vbCBod19zdXBwb3J0ZWQ7CiB1 aW50MzJfdCBkZGNfY2hhbm5lbDsKfTsKCnN0cnVjdCBkZGMgewogc3RydWN0IGdwaW8gKnBpbl9k YXRhOwogc3RydWN0IGdwaW8gKnBpbl9jbG9jazsKIHN0cnVjdCBncGlvX2RkY19od19pbmZvIGh3 X2luZm87CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4Owp9OwoKdW5pb24gZGRjX3dhIHsKIHN0cnVj dCB7CiAgdWludDMyX3QgRFBfU0tJUF9QT1dFUl9PRkY6MTsKICB1aW50MzJfdCBEUF9BVVhfUE9X RVJfVVBfV0FfREVMQVk6MTsKIH0gYml0czsKIHVpbnQzMl90IHJhdzsKfTsKCnN0cnVjdCBkZGNf ZmxhZ3MgewogdWludDhfdCBFRElEX1FVRVJZX0RPTkVfT05DRToxOwogdWludDhfdCBJU19JTlRF Uk5BTF9ESVNQTEFZOjE7CiB1aW50OF90IEZPUkNFX1JFQURfUkVQRUFURURfU1RBUlQ6MTsKIHVp bnQ4X3QgRURJRF9TVFJFU1NfUkVBRDoxOwoKfTsKCmVudW0gZGRjX3RyYW5zYWN0aW9uX3R5cGUg ewogRERDX1RSQU5TQUNUSU9OX1RZUEVfTk9ORSA9IDAsCiBERENfVFJBTlNBQ1RJT05fVFlQRV9J MkMsCiBERENfVFJBTlNBQ1RJT05fVFlQRV9JMkNfT1ZFUl9BVVgsCiBERENfVFJBTlNBQ1RJT05f VFlQRV9JMkNfT1ZFUl9BVVhfV0lUSF9ERUZFUiwKIEREQ19UUkFOU0FDVElPTl9UWVBFX0kyQ19P VkVSX0FVWF9SRVRSWV9ERUZFUgp9OwoKZW51bSBkaXNwbGF5X2RvbmdsZV90eXBlIHsKIERJU1BM QVlfRE9OR0xFX05PTkUgPSAwLAoKIERJU1BMQVlfRE9OR0xFX0RQX1ZHQV9DT05WRVJURVIsCiBE SVNQTEFZX0RPTkdMRV9EUF9EVklfQ09OVkVSVEVSLAogRElTUExBWV9ET05HTEVfRFBfSERNSV9D T05WRVJURVIsCgogRElTUExBWV9ET05HTEVfRFBfRFZJX0RPTkdMRSwKIERJU1BMQVlfRE9OR0xF X0RQX0hETUlfRE9OR0xFLAoKIERJU1BMQVlfRE9OR0xFX0RQX0hETUlfTUlTTUFUQ0hFRF9ET05H TEUsCn07CgpzdHJ1Y3QgZGRjX3NlcnZpY2Ugewogc3RydWN0IGRkYyAqZGRjX3BpbjsKIHN0cnVj dCBkZGNfZmxhZ3MgZmxhZ3M7CiB1bmlvbiBkZGNfd2Egd2E7CiBlbnVtIGRkY190cmFuc2FjdGlv bl90eXBlIHRyYW5zYWN0aW9uX3R5cGU7CiBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgZG9uZ2xl X3R5cGU7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4Owogc3RydWN0IGRjX2xpbmsgKmxpbms7Cgog dWludDMyX3QgYWRkcmVzczsKIHVpbnQzMl90IGVkaWRfYnVmX2xlbjsKIHVpbnQ4X3QgZWRpZF9i dWZbMTAyNF07Cn07CiMgMTMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvZGNfdHlwZXMuaCIgMgoKZW51bSB0aWxpbmdfbW9kZSB7CiBUSUxJTkdfTU9ERV9JTlZB TElELAogVElMSU5HX01PREVfTElORUFSLAogVElMSU5HX01PREVfVElMRUQsCiBUSUxJTkdfTU9E RV9DT1VOVAp9OwoKZW51bSB2aWV3XzNkX2Zvcm1hdCB7CiBWSUVXXzNEX0ZPUk1BVF9OT05FID0g MCwKIFZJRVdfM0RfRk9STUFUX0ZSQU1FX1NFUVVFTlRJQUwsCiBWSUVXXzNEX0ZPUk1BVF9TSURF X0JZX1NJREUsCiBWSUVXXzNEX0ZPUk1BVF9UT1BfQU5EX0JPVFRPTSwKIFZJRVdfM0RfRk9STUFU X0NPVU5ULAogVklFV18zRF9GT1JNQVRfRklSU1QgPSBWSUVXXzNEX0ZPUk1BVF9GUkFNRV9TRVFV RU5USUFMCn07CgplbnVtIHBsYW5lX3N0ZXJlb19mb3JtYXQgewogUExBTkVfU1RFUkVPX0ZPUk1B VF9OT05FID0gMCwKIFBMQU5FX1NURVJFT19GT1JNQVRfU0lERV9CWV9TSURFID0gMSwKIFBMQU5F X1NURVJFT19GT1JNQVRfVE9QX0FORF9CT1RUT00gPSAyLAogUExBTkVfU1RFUkVPX0ZPUk1BVF9G UkFNRV9BTFRFUk5BVEUgPSAzLAogUExBTkVfU1RFUkVPX0ZPUk1BVF9ST1dfSU5URVJMRUFWRUQg PSA1LAogUExBTkVfU1RFUkVPX0ZPUk1BVF9DT0xVTU5fSU5URVJMRUFWRUQgPSA2LAogUExBTkVf U1RFUkVPX0ZPUk1BVF9DSEVDS0VSX0JPQVJEID0gNwp9OwoKCgoKCgplbnVtIGRjX2VkaWRfY29u bmVjdG9yX3R5cGUgewogRENfRURJRF9DT05ORUNUT1JfVU5LTk9XTiA9IDAsCiBEQ19FRElEX0NP Tk5FQ1RPUl9BTkFMT0cgPSAxLAogRENfRURJRF9DT05ORUNUT1JfRElHSVRBTCA9IDEwLAogRENf RURJRF9DT05ORUNUT1JfRFZJID0gMTEsCiBEQ19FRElEX0NPTk5FQ1RPUl9IRE1JQSA9IDEyLAog RENfRURJRF9DT05ORUNUT1JfTURESSA9IDE0LAogRENfRURJRF9DT05ORUNUT1JfRElTUExBWVBP UlQgPSAxNQp9OwoKZW51bSBkY19lZGlkX3N0YXR1cyB7CiBFRElEX09LLAogRURJRF9CQURfSU5Q VVQsCiBFRElEX05PX1JFU1BPTlNFLAogRURJRF9CQURfQ0hFQ0tTVU0sCiBFRElEX1RIRV9TQU1F LAp9OwoKZW51bSBhY3RfcmV0dXJuX3N0YXR1cyB7CiBBQ1RfU1VDQ0VTUywKIEFDVF9MSU5LX0xP U1QsCiBBQ1RfRkFJTEVECn07CgoKc3RydWN0IGRjX2NlYV9hdWRpb19tb2RlIHsKIHVpbnQ4X3Qg Zm9ybWF0X2NvZGU7CiB1aW50OF90IGNoYW5uZWxfY291bnQ7CiB1aW50OF90IHNhbXBsZV9yYXRl OwogdW5pb24gewogIHVpbnQ4X3Qgc2FtcGxlX3NpemU7CgogIHVpbnQ4X3QgbWF4X2JpdF9yYXRl OwogIHVpbnQ4X3QgYXVkaW9fY29kZWNfdmVuZG9yX3NwZWNpZmljOwogfTsKfTsKCnN0cnVjdCBk Y19lZGlkIHsKIHVpbnQzMl90IGxlbmd0aDsKIHVpbnQ4X3QgcmF3X2VkaWRbMTAyNF07Cn07CiMg MjE1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMu aCIKdW5pb24gZGlzcGxheV9jb250ZW50X3N1cHBvcnQgewogdW5zaWduZWQgaW50IHJhdzsKIHN0 cnVjdCB7CiAgdW5zaWduZWQgaW50IHZhbGlkX2NvbnRlbnRfdHlwZSA6MTsKICB1bnNpZ25lZCBp bnQgZ2FtZV9jb250ZW50IDoxOwogIHVuc2lnbmVkIGludCBjaW5lbWFfY29udGVudCA6MTsKICB1 bnNpZ25lZCBpbnQgcGhvdG9fY29udGVudCA6MTsKICB1bnNpZ25lZCBpbnQgZ3JhcGhpY3NfY29u dGVudCA6MTsKICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQgOjI3OwogfSBiaXRzOwp9OwoKc3RydWN0 IGRjX3BhbmVsX3BhdGNoIHsKIHVuc2lnbmVkIGludCBkcHBvd2VydXBfZGVsYXk7CiB1bnNpZ25l ZCBpbnQgZXh0cmFfdDEyX21zOwogdW5zaWduZWQgaW50IGV4dHJhX2RlbGF5X2JhY2tsaWdodF9v ZmY7CiB1bnNpZ25lZCBpbnQgZXh0cmFfdDdfbXM7CiB1bnNpZ25lZCBpbnQgbWFuYWdlX3NlY29u ZGFyeV9saW5rOwp9OwoKc3RydWN0IGRjX2VkaWRfY2FwcyB7CgogdWludDE2X3QgbWFudWZhY3R1 cmVyX2lkOwogdWludDE2X3QgcHJvZHVjdF9pZDsKIHVpbnQzMl90IHNlcmlhbF9udW1iZXI7CiB1 aW50OF90IG1hbnVmYWN0dXJlX3dlZWs7CiB1aW50OF90IG1hbnVmYWN0dXJlX3llYXI7CiB1aW50 OF90IGRpc3BsYXlfbmFtZVsyMF07CgoKIHVpbnQ4X3Qgc3BlYWtlcl9mbGFnczsKIHVpbnQzMl90 IGF1ZGlvX21vZGVfY291bnQ7CiBzdHJ1Y3QgZGNfY2VhX2F1ZGlvX21vZGUgYXVkaW9fbW9kZXNb MTZdOwogdWludDMyX3QgYXVkaW9fbGF0ZW5jeTsKIHVpbnQzMl90IHZpZGVvX2xhdGVuY3k7Cgog dW5pb24gZGlzcGxheV9jb250ZW50X3N1cHBvcnQgY29udGVudF9zdXBwb3J0OwoKIHVpbnQ4X3Qg cXNfYml0OwogdWludDhfdCBxeV9iaXQ7CgoKIGJvb2wgbHRlXzM0MG1jc2Nfc2NyYW1ibGU7Cgog Ym9vbCBlZGlkX2hkbWk7CiBib29sIGhkcl9zdXBwb3J0ZWQ7Cgogc3RydWN0IGRjX3BhbmVsX3Bh dGNoIHBhbmVsX3BhdGNoOwp9OwoKc3RydWN0IHZpZXcgewogdWludDMyX3Qgd2lkdGg7CiB1aW50 MzJfdCBoZWlnaHQ7Cn07CgpzdHJ1Y3QgZGNfbW9kZV9mbGFncyB7CgogdWludDMyX3QgSU5URVJM QUNFIDoxOwoKIHVpbnQzMl90IE5BVElWRSA6MTsKCiB1aW50MzJfdCBQUkVGRVJSRUQgOjE7CgoK IHVpbnQzMl90IFJFRFVDRURfQkxBTktJTkcgOjE7CgogdWludDMyX3QgVklERU9fT1BUSU1JWkVE X1JBVEUgOjE7CgogdWludDMyX3QgUEFDS0VEX1BJWEVMX0ZPUk1BVCA6MTsKCiB1aW50MzJfdCBQ UkVGRVJSRURfVklFVyA6MTsKCiB1aW50MzJfdCBUSUxFRF9NT0RFIDoxOwogdWludDMyX3QgRFNF X01PREUgOjE7CgoKCgogdWludDMyX3QgTUlSQUNBU1RfUkVGUkVTSF9ESVZJREVSOwp9OwoKCmVu dW0gZGNfdGltaW5nX3NvdXJjZSB7CiBUSU1JTkdfU09VUkNFX1VOREVGSU5FRCwKCgogVElNSU5H X1NPVVJDRV9VU0VSX0ZPUkNFRCwKIFRJTUlOR19TT1VSQ0VfVVNFUl9PVkVSUklERSwKIFRJTUlO R19TT1VSQ0VfQ1VTVE9NLAogVElNSU5HX1NPVVJDRV9FWFBMSUNJVCwKCgogVElNSU5HX1NPVVJD RV9FRElEX0NFQV9TVkRfM0QsCiBUSU1JTkdfU09VUkNFX0VESURfQ0VBX1NWRF9QUkVGRVJSRUQs CiBUSU1JTkdfU09VUkNFX0VESURfQ0VBX1NWRF80MjAsCiBUSU1JTkdfU09VUkNFX0VESURfREVU QUlMRUQsCiBUSU1JTkdfU09VUkNFX0VESURfRVNUQUJMSVNIRUQsCiBUSU1JTkdfU09VUkNFX0VE SURfU1RBTkRBUkQsCiBUSU1JTkdfU09VUkNFX0VESURfQ0VBX1NWRCwKIFRJTUlOR19TT1VSQ0Vf RURJRF9DVlRfM0JZVEUsCiBUSU1JTkdfU09VUkNFX0VESURfNEJZVEUsCiBUSU1JTkdfU09VUkNF X1ZCSU9TLAogVElNSU5HX1NPVVJDRV9DViwKIFRJTUlOR19TT1VSQ0VfVFYsCiBUSU1JTkdfU09V UkNFX0hETUlfVklDLAoKCiBUSU1JTkdfU09VUkNFX0RFRkFVTFQsCgoKIFRJTUlOR19TT1VSQ0Vf Q1VTVE9NX0JBU0UsCgoKIFRJTUlOR19TT1VSQ0VfUkFOR0VMSU1JVCwKIFRJTUlOR19TT1VSQ0Vf T1NfRk9SQ0VELAogVElNSU5HX1NPVVJDRV9JTVBMSUNJVCwKCgogVElNSU5HX1NPVVJDRV9CQVNJ Q01PREUsCgogVElNSU5HX1NPVVJDRV9DT1VOVAp9OwoKCnN0cnVjdCBzdGVyZW9fM2RfZmVhdHVy ZXMgewogYm9vbCBzdXBwb3J0ZWQgOwogYm9vbCBhbGxUaW1pbmdzIDsKIGJvb2wgY2xvbmVNb2Rl IDsKIGJvb2wgc2NhbGluZyA7CiBib29sIHNpbmdsZUZyYW1lU1dQYWNrZWQ7Cn07CgplbnVtIGRj X3RpbWluZ19zdXBwb3J0X21ldGhvZCB7CiBUSU1JTkdfU1VQUE9SVF9NRVRIT0RfVU5ERUZJTkVE LAogVElNSU5HX1NVUFBPUlRfTUVUSE9EX0VYUExJQ0lULAogVElNSU5HX1NVUFBPUlRfTUVUSE9E X0lNUExJQ0lULAogVElNSU5HX1NVUFBPUlRfTUVUSE9EX05BVElWRQp9OwoKc3RydWN0IGRjX21v ZGVfaW5mbyB7CiB1aW50MzJfdCBwaXhlbF93aWR0aDsKIHVpbnQzMl90IHBpeGVsX2hlaWdodDsK IHVpbnQzMl90IGZpZWxkX3JhdGU7CgoKCiBlbnVtIGRjX3RpbWluZ19zdGFuZGFyZCB0aW1pbmdf c3RhbmRhcmQ7CiBlbnVtIGRjX3RpbWluZ19zb3VyY2UgdGltaW5nX3NvdXJjZTsKIHN0cnVjdCBk Y19tb2RlX2ZsYWdzIGZsYWdzOwp9OwoKZW51bSBkY19wb3dlcl9zdGF0ZSB7CiBEQ19QT1dFUl9T VEFURV9PTiA9IDEsCiBEQ19QT1dFUl9TVEFURV9TVEFOREJZLAogRENfUE9XRVJfU1RBVEVfU1VT UEVORCwKIERDX1BPV0VSX1NUQVRFX09GRgp9OwoKCmVudW0gZGNfdmlkZW9fcG93ZXJfc3RhdGUg ewogRENfVklERU9fUE9XRVJfVU5TUEVDSUZJRUQgPSAwLAogRENfVklERU9fUE9XRVJfT04gPSAx LAogRENfVklERU9fUE9XRVJfU1RBTkRCWSwKIERDX1ZJREVPX1BPV0VSX1NVU1BFTkQsCiBEQ19W SURFT19QT1dFUl9PRkYsCiBEQ19WSURFT19QT1dFUl9ISUJFUk5BVEUsCiBEQ19WSURFT19QT1dF Ul9TSFVURE9XTiwKIERDX1ZJREVPX1BPV0VSX1VMUFMsCiBEQ19WSURFT19QT1dFUl9BRlRFUl9S RVNFVCwKIERDX1ZJREVPX1BPV0VSX01BWElNVU0KfTsKCmVudW0gZGNfYWNwaV9jbV9wb3dlcl9z dGF0ZSB7CiBEQ19BQ1BJX0NNX1BPV0VSX1NUQVRFX0QwID0gMSwKIERDX0FDUElfQ01fUE9XRVJf U1RBVEVfRDEgPSAyLAogRENfQUNQSV9DTV9QT1dFUl9TVEFURV9EMiA9IDQsCiBEQ19BQ1BJX0NN X1BPV0VSX1NUQVRFX0QzID0gOAp9OwoKZW51bSBkY19jb25uZWN0aW9uX3R5cGUgewogZGNfY29u bmVjdGlvbl9ub25lLAogZGNfY29ubmVjdGlvbl9zaW5nbGUsCiBkY19jb25uZWN0aW9uX21zdF9i cmFuY2gsCiBkY19jb25uZWN0aW9uX2FjdGl2ZV9kb25nbGUKfTsKCnN0cnVjdCBkY19jc2NfYWRq dXN0bWVudHMgewogc3RydWN0IGZpeGVkMzFfMzIgY29udHJhc3Q7CiBzdHJ1Y3QgZml4ZWQzMV8z MiBzYXR1cmF0aW9uOwogc3RydWN0IGZpeGVkMzFfMzIgYnJpZ2h0bmVzczsKIHN0cnVjdCBmaXhl ZDMxXzMyIGh1ZTsKfTsKCmVudW0gZHBjZF9kb3duc3RyZWFtX3BvcnRfbWF4X2JwYyB7CiBET1dO X1NUUkVBTV9NQVhfOEJQQyA9IDAsCiBET1dOX1NUUkVBTV9NQVhfMTBCUEMsCiBET1dOX1NUUkVB TV9NQVhfMTJCUEMsCiBET1dOX1NUUkVBTV9NQVhfMTZCUEMKfTsKCgplbnVtIGxpbmtfdHJhaW5p bmdfb2Zmc2V0IHsKIERQUlggPSAwLAogTFRUUFJfUEhZX1JFUEVBVEVSMSA9IDEsCiBMVFRQUl9Q SFlfUkVQRUFURVIyID0gMiwKIExUVFBSX1BIWV9SRVBFQVRFUjMgPSAzLAogTFRUUFJfUEhZX1JF UEVBVEVSNCA9IDQsCiBMVFRQUl9QSFlfUkVQRUFURVI1ID0gNSwKIExUVFBSX1BIWV9SRVBFQVRF UjYgPSA2LAogTFRUUFJfUEhZX1JFUEVBVEVSNyA9IDcsCiBMVFRQUl9QSFlfUkVQRUFURVI4ID0g OAp9OwoKc3RydWN0IGRjX2x0dHByX2NhcHMgewogdW5pb24gZHBjZF9yZXYgcmV2aXNpb247CiB1 aW50OF90IG1vZGU7CiB1aW50OF90IG1heF9sYW5lX2NvdW50OwogdWludDhfdCBtYXhfbGlua19y YXRlOwogdWludDhfdCBwaHlfcmVwZWF0ZXJfY250OwogdWludDhfdCBtYXhfZXh0X3RpbWVvdXQ7 CiB1aW50OF90IGF1eF9yZF9pbnRlcnZhbFs4IC0gMV07Cn07CgpzdHJ1Y3QgZGNfZG9uZ2xlX2Nh cHMgewoKIGVudW0gZGlzcGxheV9kb25nbGVfdHlwZSBkb25nbGVfdHlwZTsKIGJvb2wgZXh0ZW5k ZWRDYXBWYWxpZDsKCgogYm9vbCBpc19kcF9oZG1pX3MzZF9jb252ZXJ0ZXI7CiBib29sIGlzX2Rw X2hkbWlfeWNiY3I0MjJfcGFzc190aHJvdWdoOwogYm9vbCBpc19kcF9oZG1pX3ljYmNyNDIwX3Bh c3NfdGhyb3VnaDsKIGJvb2wgaXNfZHBfaGRtaV95Y2JjcjQyMl9jb252ZXJ0ZXI7CiBib29sIGlz X2RwX2hkbWlfeWNiY3I0MjBfY29udmVydGVyOwogdWludDMyX3QgZHBfaGRtaV9tYXhfYnBjOwog dWludDMyX3QgZHBfaGRtaV9tYXhfcGl4ZWxfY2xrX2luX2toejsKfTsKCmVudW0gc2NhbGluZ190 cmFuc2Zvcm1hdGlvbiB7CiBTQ0FMSU5HX1RSQU5TRk9STUFUSU9OX1VOSU5JVElBTElaRUQsCiBT Q0FMSU5HX1RSQU5TRk9STUFUSU9OX0lERU5USVRZID0gMHgwMDAxLAogU0NBTElOR19UUkFOU0ZP Uk1BVElPTl9DRU5URVJfVElNSU5HID0gMHgwMDAyLAogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9G VUxMX1NDUkVFTl9TQ0FMRSA9IDB4MDAwNCwKIFNDQUxJTkdfVFJBTlNGT1JNQVRJT05fUFJFU0VS VkVfQVNQRUNUX1JBVElPX1NDQUxFID0gMHgwMDA4LAogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9E QUxfREVDSURFID0gMHgwMDEwLAogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9JTlZBTElEID0gMHg4 MDAwMDAwMCwKCgogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9CRUdJTkcgPSBTQ0FMSU5HX1RSQU5T Rk9STUFUSU9OX0lERU5USVRZLAogU0NBTElOR19UUkFOU0ZPUk1BVElPTl9FTkQgPQogIFNDQUxJ TkdfVFJBTlNGT1JNQVRJT05fUFJFU0VSVkVfQVNQRUNUX1JBVElPX1NDQUxFCn07CgplbnVtIGRp c3BsYXlfY29udGVudF90eXBlIHsKIERJU1BMQVlfQ09OVEVOVF9UWVBFX05PX0RBVEEgPSAwLAog RElTUExBWV9DT05URU5UX1RZUEVfR1JBUEhJQ1MgPSAxLAogRElTUExBWV9DT05URU5UX1RZUEVf UEhPVE8gPSAyLAogRElTUExBWV9DT05URU5UX1RZUEVfQ0lORU1BID0gNCwKIERJU1BMQVlfQ09O VEVOVF9UWVBFX0dBTUUgPSA4Cn07CgoKc3RydWN0IGR3Yl9zdGVyZW9fcGFyYW1zIHsKIGJvb2wg c3RlcmVvX2VuYWJsZWQ7CiBlbnVtIGR3Yl9zdGVyZW9fdHlwZSBzdGVyZW9fdHlwZTsKIGJvb2wg c3RlcmVvX3BvbGFyaXR5OwogZW51bSBkd2Jfc3RlcmVvX2V5ZV9zZWxlY3Qgc3RlcmVvX2V5ZV9z ZWxlY3Q7Cn07CgpzdHJ1Y3QgZGNfZHdiX2Nudl9wYXJhbXMgewogdW5zaWduZWQgaW50IHNyY193 aWR0aDsKIHVuc2lnbmVkIGludCBzcmNfaGVpZ2h0OwogdW5zaWduZWQgaW50IGNyb3Bfd2lkdGg7 CiBib29sIGNyb3BfZW47CiB1bnNpZ25lZCBpbnQgY3JvcF9oZWlnaHQ7CiB1bnNpZ25lZCBpbnQg Y3JvcF94OwogdW5zaWduZWQgaW50IGNyb3BfeTsKIGVudW0gZHdiX2Nudl9vdXRfYnBjIGNudl9v dXRfYnBjOwp9OwoKc3RydWN0IGRjX2R3Yl9wYXJhbXMgewogc3RydWN0IGRjX2R3Yl9jbnZfcGFy YW1zIGNudl9wYXJhbXM7CiB1bnNpZ25lZCBpbnQgZGVzdF93aWR0aDsKIHVuc2lnbmVkIGludCBk ZXN0X2hlaWdodDsKIGVudW0gZHdiX3NjYWxlcl9tb2RlIG91dF9mb3JtYXQ7CiBlbnVtIGR3Yl9v dXRwdXRfZGVwdGggb3V0cHV0X2RlcHRoOwogZW51bSBkd2JfY2FwdHVyZV9yYXRlIGNhcHR1cmVf cmF0ZTsKIHN0cnVjdCBzY2FsaW5nX3RhcHMgc2NhbGVyX3RhcHM7CiBlbnVtIGR3Yl9zdWJzYW1w bGVfcG9zaXRpb24gc3Vic2FtcGxlX3Bvc2l0aW9uOwogc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMg Km91dF90cmFuc2Zlcl9mdW5jOwp9OwoKCgp1bmlvbiBhdWRpb19zYW1wbGVfcmF0ZXMgewogc3Ry dWN0IHNhbXBsZV9yYXRlcyB7CiAgdWludDhfdCBSQVRFXzMyOjE7CiAgdWludDhfdCBSQVRFXzQ0 XzE6MTsKICB1aW50OF90IFJBVEVfNDg6MTsKICB1aW50OF90IFJBVEVfODhfMjoxOwogIHVpbnQ4 X3QgUkFURV85NjoxOwogIHVpbnQ4X3QgUkFURV8xNzZfNDoxOwogIHVpbnQ4X3QgUkFURV8xOTI6 MTsKIH0gcmF0ZTsKCiB1aW50OF90IGFsbDsKfTsKCnN0cnVjdCBhdWRpb19zcGVha2VyX2ZsYWdz IHsKIHVpbnQzMl90IEZMX0ZSOjE7CiB1aW50MzJfdCBMRkU6MTsKIHVpbnQzMl90IEZDOjE7CiB1 aW50MzJfdCBSTF9SUjoxOwogdWludDMyX3QgUkM6MTsKIHVpbnQzMl90IEZMQ19GUkM6MTsKIHVp bnQzMl90IFJMQ19SUkM6MTsKIHVpbnQzMl90IFNVUFBPUlRfQUk6MTsKfTsKCnN0cnVjdCBhdWRp b19zcGVha2VyX2luZm8gewogdWludDMyX3QgQUxMU1BFQUtFUlM6NzsKIHVpbnQzMl90IFNVUFBP UlRfQUk6MTsKfTsKCgpzdHJ1Y3QgYXVkaW9faW5mb19mbGFncyB7CgogdW5pb24gewoKICBzdHJ1 Y3QgYXVkaW9fc3BlYWtlcl9mbGFncyBzcGVha2VyX2ZsYWdzOwogIHN0cnVjdCBhdWRpb19zcGVh a2VyX2luZm8gaW5mbzsKCiAgdWludDhfdCBhbGw7CiB9Owp9OwoKZW51bSBhdWRpb19mb3JtYXRf Y29kZSB7CiBBVURJT19GT1JNQVRfQ09ERV9GSVJTVCA9IDEsCiBBVURJT19GT1JNQVRfQ09ERV9M SU5FQVJQQ00gPSBBVURJT19GT1JNQVRfQ09ERV9GSVJTVCwKCiBBVURJT19GT1JNQVRfQ09ERV9B QzMsCgogQVVESU9fRk9STUFUX0NPREVfTVBFRzEsCgogQVVESU9fRk9STUFUX0NPREVfTVAzLAoK IEFVRElPX0ZPUk1BVF9DT0RFX01QRUcyLAogQVVESU9fRk9STUFUX0NPREVfQUFDLAogQVVESU9f Rk9STUFUX0NPREVfRFRTLAogQVVESU9fRk9STUFUX0NPREVfQVRSQUMsCiBBVURJT19GT1JNQVRf Q09ERV8xQklUQVVESU8sCiBBVURJT19GT1JNQVRfQ09ERV9ET0xCWURJR0lUQUxQTFVTLAogQVVE SU9fRk9STUFUX0NPREVfRFRTX0hELAogQVVESU9fRk9STUFUX0NPREVfTUFUX01MUCwKIEFVRElP X0ZPUk1BVF9DT0RFX0RTVCwKIEFVRElPX0ZPUk1BVF9DT0RFX1dNQVBSTywKIEFVRElPX0ZPUk1B VF9DT0RFX0xBU1QsCiBBVURJT19GT1JNQVRfQ09ERV9DT1VOVCA9CiAgQVVESU9fRk9STUFUX0NP REVfTEFTVCAtIEFVRElPX0ZPUk1BVF9DT0RFX0ZJUlNUCn07CgpzdHJ1Y3QgYXVkaW9fbW9kZSB7 CgogZW51bSBhdWRpb19mb3JtYXRfY29kZSBmb3JtYXRfY29kZTsKCiB1aW50OF90IGNoYW5uZWxf Y291bnQ7CgogdW5pb24gYXVkaW9fc2FtcGxlX3JhdGVzIHNhbXBsZV9yYXRlczsKIHVuaW9uIHsK CiAgdWludDhfdCBzYW1wbGVfc2l6ZTsKCiAgdWludDhfdCBtYXhfYml0X3JhdGU7CgogIHVpbnQ4 X3QgdmVuZG9yX3NwZWNpZmljOwogfTsKfTsKCnN0cnVjdCBhdWRpb19pbmZvIHsKIHN0cnVjdCBh dWRpb19pbmZvX2ZsYWdzIGZsYWdzOwogdWludDMyX3QgdmlkZW9fbGF0ZW5jeTsKIHVpbnQzMl90 IGF1ZGlvX2xhdGVuY3k7CiB1aW50MzJfdCBkaXNwbGF5X2luZGV4OwogdWludDhfdCBkaXNwbGF5 X25hbWVbMjBdOwogdWludDMyX3QgbWFudWZhY3R1cmVfaWQ7CiB1aW50MzJfdCBwcm9kdWN0X2lk OwoKIHVpbnQzMl90IHBvcnRfaWRbMl07CiB1aW50MzJfdCBtb2RlX2NvdW50OwoKIHN0cnVjdCBh dWRpb19tb2RlIG1vZGVzWzE2XTsKfTsKc3RydWN0IGF1ZGlvX2NoZWNrIHsKIHVuc2lnbmVkIGlu dCBhdWRpb19wYWNrZXRfdHlwZTsKIHVuc2lnbmVkIGludCBtYXhfYXVkaW9zYW1wbGVfcmF0ZTsK IHVuc2lnbmVkIGludCBhY2F0Owp9OwplbnVtIGRjX2luZm9mcmFtZV90eXBlIHsKIERDX0hETUlf SU5GT0ZSQU1FX1RZUEVfVkVORE9SID0gMHg4MSwKIERDX0hETUlfSU5GT0ZSQU1FX1RZUEVfQVZJ ID0gMHg4MiwKIERDX0hETUlfSU5GT0ZSQU1FX1RZUEVfU1BEID0gMHg4MywKIERDX0hETUlfSU5G T0ZSQU1FX1RZUEVfQVVESU8gPSAweDg0LAogRENfRFBfSU5GT0ZSQU1FX1RZUEVfUFBTID0gMHgx MCwKfTsKCnN0cnVjdCBkY19pbmZvX3BhY2tldCB7CiBib29sIHZhbGlkOwogdWludDhfdCBoYjA7 CiB1aW50OF90IGhiMTsKIHVpbnQ4X3QgaGIyOwogdWludDhfdCBoYjM7CiB1aW50OF90IHNiWzMy XTsKfTsKCnN0cnVjdCBkY19pbmZvX3BhY2tldF8xMjggewogYm9vbCB2YWxpZDsKIHVpbnQ4X3Qg aGIwOwogdWludDhfdCBoYjE7CiB1aW50OF90IGhiMjsKIHVpbnQ4X3QgaGIzOwogdWludDhfdCBz YlsxMjhdOwp9OwoKCgpzdHJ1Y3QgZGNfcGxhbmVfZmxpcF90aW1lIHsKIHVuc2lnbmVkIGludCB0 aW1lX2VsYXBzZWRfaW5fdXNbMTBdOwogdW5zaWduZWQgaW50IGluZGV4OwogdW5zaWduZWQgaW50 IHByZXZfdXBkYXRlX3RpbWVfaW5fdXM7Cn07CgpzdHJ1Y3QgcHNyX2NvbmZpZyB7CiB1bnNpZ25l ZCBjaGFyIHBzcl92ZXJzaW9uOwogdW5zaWduZWQgaW50IHBzcl9yZmJfc2V0dXBfdGltZTsKIGJv b2wgcHNyX2V4aXRfbGlua190cmFpbmluZ19yZXF1aXJlZDsKIGJvb2wgcHNyX2ZyYW1lX2NhcHR1 cmVfaW5kaWNhdGlvbl9yZXE7CiB1bnNpZ25lZCBpbnQgcHNyX3NkcF90cmFuc21pdF9saW5lX251 bV9kZWFkbGluZTsKIGJvb2wgYWxsb3dfc211X29wdGltaXphdGlvbnM7Cn07Cgp1bmlvbiBkbWN1 X3Bzcl9sZXZlbCB7CiBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCBTS0lQX0NSQzoxOwogIHVuc2ln bmVkIGludCBTS0lQX0RQX1ZJRF9TVFJFQU1fRElTQUJMRToxOwogIHVuc2lnbmVkIGludCBTS0lQ X1BIWV9QT1dFUl9ET1dOOjE7CiAgdW5zaWduZWQgaW50IFNLSVBfQVVYX0FDS19DSEVDSzoxOwog IHVuc2lnbmVkIGludCBTS0lQX0NSVENfRElTQUJMRToxOwogIHVuc2lnbmVkIGludCBTS0lQX0FV WF9SRkJfQ0FQVFVSRV9DSEVDSzoxOwogIHVuc2lnbmVkIGludCBTS0lQX1NNVV9OT1RJRklDQVRJ T046MTsKICB1bnNpZ25lZCBpbnQgU0tJUF9BVVRPX1NUQVRFX0FEVkFOQ0U6MTsKICB1bnNpZ25l ZCBpbnQgRElTQUJMRV9QU1JfRU5UUllfQUJPUlQ6MTsKICB1bnNpZ25lZCBpbnQgU0tJUF9TSU5H TEVfT1RHX0RJU0FCTEU6MTsKICB1bnNpZ25lZCBpbnQgUkVTRVJWRUQ6MjI7CiB9IGJpdHM7CiB1 bnNpZ25lZCBpbnQgdTMyYWxsOwp9OwoKZW51bSBwaHlzaWNhbF9waHlfaWQgewogUEhZTERfMCwK IFBIWUxEXzEsCiBQSFlMRF8yLAogUEhZTERfMywKIFBIWUxEXzQsCiBQSFlMRF81LAogUEhZTERf NiwKIFBIWUxEXzcsCiBQSFlMRF84LAogUEhZTERfOSwKIFBIWUxEX0NPVU5ULAogUEhZTERfVU5L Tk9XTiA9ICgtMUwpCn07CgplbnVtIHBoeV90eXBlIHsKIFBIWV9UWVBFX1VOS05PV04gPSAxLAog UEhZX1RZUEVfUENJRV9QSFkgPSAyLAogUEhZX1RZUEVfVU5JUEhZID0gMywKfTsKCnN0cnVjdCBw c3JfY29udGV4dCB7CgogZW51bSBjaGFubmVsX2lkIGNoYW5uZWw7CgogZW51bSB0cmFuc21pdHRl ciB0cmFuc21pdHRlcklkOwoKIGVudW0gZW5naW5lX2lkIGVuZ2luZUlkOwoKIGVudW0gY29udHJv bGxlcl9pZCBjb250cm9sbGVySWQ7CgogZW51bSBwaHlfdHlwZSBwaHlUeXBlOwoKIGVudW0gcGh5 c2ljYWxfcGh5X2lkIHNtdVBoeUlkOwoKCgoKCiB1bnNpZ25lZCBpbnQgY3J0Y1RpbWluZ1ZlcnRp Y2FsVG90YWw7CgoKCiBib29sIHBzclN1cHBvcnRlZERpc3BsYXlDb25maWc7CgogYm9vbCBwc3JF eGl0TGlua1RyYWluaW5nUmVxdWlyZWQ7CgoKCgoKCiBib29sIHBzckZyYW1lQ2FwdHVyZUluZGlj YXRpb25SZXE7CgoKCiB1bnNpZ25lZCBpbnQgc2RwVHJhbnNtaXRMaW5lTnVtRGVhZGxpbmU7CgoK CiB1bnNpZ25lZCBpbnQgdnN5bmNfcmF0ZV9oejsKIHVuc2lnbmVkIGludCBza2lwUHNyV2FpdEZv clBsbExvY2s7CiB1bnNpZ25lZCBpbnQgbnVtYmVyT2ZDb250cm9sbGVyczsKCgoKCiBib29sIHJm Yl91cGRhdGVfYXV0b19lbjsKCiB1bnNpZ25lZCBpbnQgdGltZWh5c3RfZnJhbWVzOwoKIHVuc2ln bmVkIGludCBoeXN0X2xpbmVzOwoKCgogdW5zaWduZWQgaW50IGF1eF9yZXBlYXRzOwoKIHVuaW9u IGRtY3VfcHNyX2xldmVsIHBzcl9sZXZlbDsKCgoKIHVuc2lnbmVkIGludCBmcmFtZV9kZWxheTsK IGJvb2wgYWxsb3dfc211X29wdGltaXphdGlvbnM7Cn07CgpzdHJ1Y3QgY29sb3JzcGFjZV90cmFu c2Zvcm0gewogc3RydWN0IGZpeGVkMzFfMzIgbWF0cml4WzEyXTsKIGJvb2wgZW5hYmxlX3JlbWFw Owp9OwoKZW51bSBpMmNfbW90X21vZGUgewogSTJDX01PVF9VTkRFRiwKIEkyQ19NT1RfVFJVRSwK IEkyQ19NT1RfRkFMU0UKfTsKCnN0cnVjdCBBc2ljU3RhdGVFeCB7CiB1bnNpZ25lZCBpbnQgbWVt b3J5Q2xvY2s7CiB1bnNpZ25lZCBpbnQgZGlzcGxheUNsb2NrOwogdW5zaWduZWQgaW50IGVuZ2lu ZUNsb2NrOwogdW5zaWduZWQgaW50IG1heFN1cHBvcnRlZERwcENsb2NrOwogdW5zaWduZWQgaW50 IGRwcENsb2NrOwogdW5zaWduZWQgaW50IHNvY0Nsb2NrOwogdW5zaWduZWQgaW50IGRjZkNsb2Nr RGVlcFNsZWVwOwogdW5zaWduZWQgaW50IGZDbG9jazsKIHVuc2lnbmVkIGludCBwaHlDbG9jazsK fTsKCgplbnVtIGRjX2Nsb2NrX3R5cGUgewogRENfQ0xPQ0tfVFlQRV9ESVNQQ0xLID0gMCwKIERD X0NMT0NLX1RZUEVfRFBQQ0xLID0gMSwKfTsKCnN0cnVjdCBkY19jbG9ja19jb25maWcgewogdWlu dDMyX3QgbWF4X2Nsb2NrX2toejsKIHVpbnQzMl90IG1pbl9jbG9ja19raHo7CiB1aW50MzJfdCBi d19yZXF1aXJlcXVpcmVkX2Nsb2NrX2toejsKIHVpbnQzMl90IGN1cnJlbnRfY2xvY2tfa2h6Owp9 OwoKCnVuaW9uIGRzY19zbGljZV9jYXBzMSB7CiBzdHJ1Y3QgewogIHVpbnQ4X3QgTlVNX1NMSUNF U18xIDogMTsKICB1aW50OF90IE5VTV9TTElDRVNfMiA6IDE7CiAgdWludDhfdCBSRVNFUlZFRCA6 IDE7CiAgdWludDhfdCBOVU1fU0xJQ0VTXzQgOiAxOwogIHVpbnQ4X3QgTlVNX1NMSUNFU182IDog MTsKICB1aW50OF90IE5VTV9TTElDRVNfOCA6IDE7CiAgdWludDhfdCBOVU1fU0xJQ0VTXzEwIDog MTsKICB1aW50OF90IE5VTV9TTElDRVNfMTIgOiAxOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07 Cgp1bmlvbiBkc2Nfc2xpY2VfY2FwczIgewogc3RydWN0IHsKICB1aW50OF90IE5VTV9TTElDRVNf MTYgOiAxOwogIHVpbnQ4X3QgTlVNX1NMSUNFU18yMCA6IDE7CiAgdWludDhfdCBOVU1fU0xJQ0VT XzI0IDogMTsKICB1aW50OF90IFJFU0VSVkVEIDogNTsKIH0gYml0czsKIHVpbnQ4X3QgcmF3Owp9 OwoKdW5pb24gZHNjX2NvbG9yX2Zvcm1hdHMgewogc3RydWN0IHsKICB1aW50OF90IFJHQiA6IDE7 CiAgdWludDhfdCBZQ0JDUl80NDQgOiAxOwogIHVpbnQ4X3QgWUNCQ1JfU0lNUExFXzQyMiA6IDE7 CiAgdWludDhfdCBZQ0JDUl9OQVRJVkVfNDIyIDogMTsKICB1aW50OF90IFlDQkNSX05BVElWRV80 MjAgOiAxOwogIHVpbnQ4X3QgUkVTRVJWRUQgOiAzOwogfSBiaXRzOwogdWludDhfdCByYXc7Cn07 Cgp1bmlvbiBkc2NfY29sb3JfZGVwdGggewogc3RydWN0IHsKICB1aW50OF90IFJFU0VSVkVEMSA6 IDE7CiAgdWludDhfdCBDT0xPUl9ERVBUSF84X0JQQyA6IDE7CiAgdWludDhfdCBDT0xPUl9ERVBU SF8xMF9CUEMgOiAxOwogIHVpbnQ4X3QgQ09MT1JfREVQVEhfMTJfQlBDIDogMTsKICB1aW50OF90 IFJFU0VSVkVEMiA6IDM7CiB9IGJpdHM7CiB1aW50OF90IHJhdzsKfTsKCnN0cnVjdCBkc2NfZGVj X2RwY2RfY2FwcyB7CiBib29sIGlzX2RzY19zdXBwb3J0ZWQ7CiB1aW50OF90IGRzY192ZXJzaW9u OwogaW50MzJfdCByY19idWZmZXJfc2l6ZTsKIHVuaW9uIGRzY19zbGljZV9jYXBzMSBzbGljZV9j YXBzMTsKIHVuaW9uIGRzY19zbGljZV9jYXBzMiBzbGljZV9jYXBzMjsKIGludDMyX3QgbGJfYml0 X2RlcHRoOwogYm9vbCBpc19ibG9ja19wcmVkX3N1cHBvcnRlZDsKIGludDMyX3QgZWRwX21heF9i aXRzX3Blcl9waXhlbDsKIHVuaW9uIGRzY19jb2xvcl9mb3JtYXRzIGNvbG9yX2Zvcm1hdHM7CiB1 bmlvbiBkc2NfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CiBpbnQzMl90IHRocm91Z2hwdXRfbW9k ZV8wX21wczsKIGludDMyX3QgdGhyb3VnaHB1dF9tb2RlXzFfbXBzOwogaW50MzJfdCBtYXhfc2xp Y2Vfd2lkdGg7CiB1aW50MzJfdCBicHBfaW5jcmVtZW50X2RpdjsKCgogdWludDMyX3QgYnJhbmNo X292ZXJhbGxfdGhyb3VnaHB1dF8wX21wczsKIHVpbnQzMl90IGJyYW5jaF9vdmVyYWxsX3Rocm91 Z2hwdXRfMV9tcHM7CiB1aW50MzJfdCBicmFuY2hfbWF4X2xpbmVfd2lkdGg7Cn07CiMgMzAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvZGNjZy5oIiAy CgpzdHJ1Y3QgZGNjZyB7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwogY29uc3Qgc3RydWN0IGRj Y2dfZnVuY3MgKmZ1bmNzOwoKIGludCByZWZfZHBwY2xrOwp9OwoKc3RydWN0IGRjY2dfZnVuY3Mg ewogdm9pZCAoKnVwZGF0ZV9kcHBfZHRvKShzdHJ1Y3QgZGNjZyAqZGNjZywKICAgaW50IGRwcF9p bnN0LAogICBpbnQgcmVxX2RwcGNsayk7CiB2b2lkICgqZ2V0X2RjY2dfcmVmX2ZyZXEpKHN0cnVj dCBkY2NnICpkY2NnLAogICB1bnNpZ25lZCBpbnQgeHRhbGluX2ZyZXFfaW5LaHosCiAgIHVuc2ln bmVkIGludCAqZGNjZ19yZWZfZnJlcV9pbktoeik7CiB2b2lkICgqZGNjZ19pbml0KShzdHJ1Y3Qg ZGNjZyAqZGNjZyk7Cn07CiMgMjcgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3JfaW50ZXJuYWwuaCIgMQoj IDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Ns a19tZ3JfaW50ZXJuYWwuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIKIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfdHlwZXMuaCIgMQojIDMwICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgoKIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dnZXJfdHlwZXMuaCIgMQoj IDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dn ZXJfdHlwZXMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvb3NfdHlwZXMuaCIgMQojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvaW5jbHVkZS9sb2dnZXJfdHlwZXMuaCIgMgojIDcyICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dnZXJfdHlwZXMuaCIKc3RydWN0IGRhbF9s b2dnZXI7CgpzdHJ1Y3QgZGNfbG9nX2J1ZmZlcl9jdHggewogY2hhciAqYnVmOwogc2l6ZV90IHBv czsKIHNpemVfdCBzaXplOwp9OwoKZW51bSBkY19sb2dfdHlwZSB7CiBMT0dfRVJST1IgPSAwLAog TE9HX1dBUk5JTkcsCiBMT0dfREVCVUcsCiBMT0dfREMsCiBMT0dfRFROLAogTE9HX1NVUkZBQ0Us CiBMT0dfSFdfSE9UUExVRywKIExPR19IV19MSU5LX1RSQUlOSU5HLAogTE9HX0hXX1NFVF9NT0RF LAogTE9HX0hXX1JFU1VNRV9TMywKIExPR19IV19BVURJTywKIExPR19IV19IUERfSVJRLAogTE9H X01TVCwKIExPR19TQ0FMRVIsCiBMT0dfQklPUywKIExPR19CQU5EV0lEVEhfQ0FMQ1MsCiBMT0df QkFORFdJRFRIX1ZBTElEQVRJT04sCiBMT0dfSTJDX0FVWCwKIExPR19TWU5DLAogTE9HX0JBQ0tM SUdIVCwKIExPR19GRUFUVVJFX09WRVJSSURFLAogTE9HX0RFVEVDVElPTl9FRElEX1BBUlNFUiwK IExPR19ERVRFQ1RJT05fRFBfQ0FQUywKIExPR19SRVNPVVJDRSwKIExPR19ETUwsCiBMT0dfRVZF TlRfTU9ERV9TRVQsCiBMT0dfRVZFTlRfREVURUNUSU9OLAogTE9HX0VWRU5UX0xJTktfVFJBSU5J TkcsCiBMT0dfRVZFTlRfTElOS19MT1NTLAogTE9HX0VWRU5UX1VOREVSRkxPVywKIExPR19JRl9U UkFDRSwKIExPR19QRVJGX1RSQUNFLAogTE9HX0RJU1BMQVlTVEFUUywKIExPR19IRE1JX1JFVElN RVJfUkVEUklWRVIsCiBMT0dfRFNDLAogTE9HX0RXQiwKIExPR19HQU1NQV9ERUJVRywKIExPR19N QVhfSFdfUE9JTlRTLAogTE9HX0FMTF9URl9DSEFOTkVMUywKIExPR19TQU1QTEVfMURMVVQsCiBM T0dfU0VDVElPTl9UT1RBTF9DT1VOVAp9OwojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9pbmNsdWRlL2dwaW9fdHlwZXMuaCIgMQojIDQwICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5cGVzLmgiCmVudW0gZ3Bp b19yZXN1bHQgewogR1BJT19SRVNVTFRfT0ssCiBHUElPX1JFU1VMVF9OVUxMX0hBTkRMRSwKIEdQ SU9fUkVTVUxUX0lOVkFMSURfREFUQSwKIEdQSU9fUkVTVUxUX0RFVklDRV9CVVNZLAogR1BJT19S RVNVTFRfT1BFTl9GQUlMRUQsCiBHUElPX1JFU1VMVF9BTFJFQURZX09QRU5FRCwKIEdQSU9fUkVT VUxUX05PTl9TUEVDSUZJQ19FUlJPUgp9OwojIDU4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5cGVzLmgiCmVudW0gZ3Bpb19pZCB7CiBHUElP X0lEX1VOS05PV04gPSAoLTEpLAogR1BJT19JRF9ERENfREFUQSwKIEdQSU9fSURfRERDX0NMT0NL LAogR1BJT19JRF9HRU5FUklDLAogR1BJT19JRF9IUEQsCiBHUElPX0lEX0dQSU9fUEFELAogR1BJ T19JRF9WSVBfUEFELAogR1BJT19JRF9TWU5DLAogR1BJT19JRF9HU0wsCiBHUElPX0lEX0NPVU5U LAogR1BJT19JRF9NSU4gPSBHUElPX0lEX0REQ19EQVRBLAogR1BJT19JRF9NQVggPSBHUElPX0lE X0dTTAp9OwoKCgoKc3RydWN0IGdwaW9fcGluX2luZm8gewogdWludDMyX3Qgb2Zmc2V0OwogdWlu dDMyX3Qgb2Zmc2V0X3k7CiB1aW50MzJfdCBvZmZzZXRfZW47CiB1aW50MzJfdCBvZmZzZXRfbWFz azsKCiB1aW50MzJfdCBtYXNrOwogdWludDMyX3QgbWFza195OwogdWludDMyX3QgbWFza19lbjsK IHVpbnQzMl90IG1hc2tfbWFzazsKfTsKCmVudW0gZ3Bpb19waW5fb3V0cHV0X3N0YXRlIHsKIEdQ SU9fUElOX09VVFBVVF9TVEFURV9BQ1RJVkVfTE9XLAogR1BJT19QSU5fT1VUUFVUX1NUQVRFX0FD VElWRV9ISUdILAogR1BJT19QSU5fT1VUUFVUX1NUQVRFX0RFRkFVTFQgPSBHUElPX1BJTl9PVVRQ VVRfU1RBVEVfQUNUSVZFX0xPVwp9OwoKZW51bSBncGlvX2dlbmVyaWMgewogR1BJT19HRU5FUklD X1VOS05PV04gPSAoLTEpLAogR1BJT19HRU5FUklDX0EsCiBHUElPX0dFTkVSSUNfQiwKIEdQSU9f R0VORVJJQ19DLAogR1BJT19HRU5FUklDX0QsCiBHUElPX0dFTkVSSUNfRSwKIEdQSU9fR0VORVJJ Q19GLAogR1BJT19HRU5FUklDX0csCiBHUElPX0dFTkVSSUNfQ09VTlQsCiBHUElPX0dFTkVSSUNf TUlOID0gR1BJT19HRU5FUklDX0EsCiBHUElPX0dFTkVSSUNfTUFYID0gR1BJT19HRU5FUklDX0IK fTsKCmVudW0gZ3Bpb19ocGQgewogR1BJT19IUERfVU5LTk9XTiA9ICgtMSksCiBHUElPX0hQRF8x LAogR1BJT19IUERfMiwKIEdQSU9fSFBEXzMsCiBHUElPX0hQRF80LAogR1BJT19IUERfNSwKIEdQ SU9fSFBEXzYsCiBHUElPX0hQRF9DT1VOVCwKIEdQSU9fSFBEX01JTiA9IEdQSU9fSFBEXzEsCiBH UElPX0hQRF9NQVggPSBHUElPX0hQRF82Cn07CgplbnVtIGdwaW9fZ3Bpb19wYWQgewogR1BJT19H UElPX1BBRF9VTktOT1dOID0gKC0xKSwKIEdQSU9fR1BJT19QQURfMCwKIEdQSU9fR1BJT19QQURf MSwKIEdQSU9fR1BJT19QQURfMiwKIEdQSU9fR1BJT19QQURfMywKIEdQSU9fR1BJT19QQURfNCwK IEdQSU9fR1BJT19QQURfNSwKIEdQSU9fR1BJT19QQURfNiwKIEdQSU9fR1BJT19QQURfNywKIEdQ SU9fR1BJT19QQURfOCwKIEdQSU9fR1BJT19QQURfOSwKIEdQSU9fR1BJT19QQURfMTAsCiBHUElP X0dQSU9fUEFEXzExLAogR1BJT19HUElPX1BBRF8xMiwKIEdQSU9fR1BJT19QQURfMTMsCiBHUElP X0dQSU9fUEFEXzE0LAogR1BJT19HUElPX1BBRF8xNSwKIEdQSU9fR1BJT19QQURfMTYsCiBHUElP X0dQSU9fUEFEXzE3LAogR1BJT19HUElPX1BBRF8xOCwKIEdQSU9fR1BJT19QQURfMTksCiBHUElP X0dQSU9fUEFEXzIwLAogR1BJT19HUElPX1BBRF8yMSwKIEdQSU9fR1BJT19QQURfMjIsCiBHUElP X0dQSU9fUEFEXzIzLAogR1BJT19HUElPX1BBRF8yNCwKIEdQSU9fR1BJT19QQURfMjUsCiBHUElP X0dQSU9fUEFEXzI2LAogR1BJT19HUElPX1BBRF8yNywKIEdQSU9fR1BJT19QQURfMjgsCiBHUElP X0dQSU9fUEFEXzI5LAogR1BJT19HUElPX1BBRF8zMCwKIEdQSU9fR1BJT19QQURfQ09VTlQsCiBH UElPX0dQSU9fUEFEX01JTiA9IEdQSU9fR1BJT19QQURfMCwKIEdQSU9fR1BJT19QQURfTUFYID0g R1BJT19HUElPX1BBRF8zMAp9OwoKZW51bSBncGlvX3ZpcF9wYWQgewogR1BJT19WSVBfUEFEX1VO S05PV04gPSAoLTEpLAoKCiBHUElPX1ZJUF9QQURfU0NMLAoKCiBHUElPX1ZJUF9QQURfU0RBLAog R1BJT19WSVBfUEFEX1ZIQUQsCiBHUElPX1ZJUF9QQURfVlBIQ1RMLAogR1BJT19WSVBfUEFEX1ZJ UENMSywKIEdQSU9fVklQX1BBRF9WSUQsCiBHUElPX1ZJUF9QQURfVlBDTEswLAogR1BJT19WSVBf UEFEX0RWQUxJRCwKIEdQSU9fVklQX1BBRF9QU1lOQywKIEdQSU9fVklQX1BBRF9DT1VOVCwKIEdQ SU9fVklQX1BBRF9NSU4gPSBHUElPX1ZJUF9QQURfU0NMLAogR1BJT19WSVBfUEFEX01BWCA9IEdQ SU9fVklQX1BBRF9QU1lOQwp9OwoKZW51bSBncGlvX3N5bmMgewogR1BJT19TWU5DX1VOS05PV04g PSAoLTEpLAogR1BJT19TWU5DX0hTWU5DX0EsCiBHUElPX1NZTkNfVlNZTkNfQSwKIEdQSU9fU1lO Q19IU1lOQ19CLAogR1BJT19TWU5DX1ZTWU5DX0IsCiBHUElPX1NZTkNfQ09VTlQsCiBHUElPX1NZ TkNfTUlOID0gR1BJT19TWU5DX0hTWU5DX0EsCiBHUElPX1NZTkNfTUFYID0gR1BJT19TWU5DX1ZT WU5DX0IKfTsKCmVudW0gZ3Bpb19nc2wgewogR1BJT19HU0xfVU5LTk9XTiA9ICgtMSksCiBHUElP X0dTTF9HRU5MT0NLX0NMT0NLLAogR1BJT19HU0xfR0VOTE9DS19WU1lOQywKIEdQSU9fR1NMX1NX QVBMT0NLX0EsCiBHUElPX0dTTF9TV0FQTE9DS19CLAogR1BJT19HU0xfQ09VTlQsCiBHUElPX0dT TF9NSU4gPSBHUElPX0dTTF9HRU5MT0NLX0NMT0NLLAogR1BJT19HU0xfTUFYID0gR1BJT19HU0xf U1dBUExPQ0tfQgp9OwoKCgoKCgplbnVtIGdwaW9fZGRjX2xpbmUgewogR1BJT19ERENfTElORV9V TktOT1dOID0gKC0xKSwKIEdQSU9fRERDX0xJTkVfRERDMSwKIEdQSU9fRERDX0xJTkVfRERDMiwK IEdQSU9fRERDX0xJTkVfRERDMywKIEdQSU9fRERDX0xJTkVfRERDNCwKIEdQSU9fRERDX0xJTkVf RERDNSwKIEdQSU9fRERDX0xJTkVfRERDNiwKIEdQSU9fRERDX0xJTkVfRERDX1ZHQSwKIEdQSU9f RERDX0xJTkVfVklQX1BBRCwKIEdQSU9fRERDX0xJTkVfSTJDX1BBRCA9IEdQSU9fRERDX0xJTkVf VklQX1BBRCwKIEdQSU9fRERDX0xJTkVfQ09VTlQsCiBHUElPX0REQ19MSU5FX01JTiA9IEdQSU9f RERDX0xJTkVfRERDMSwKIEdQSU9fRERDX0xJTkVfTUFYID0gR1BJT19ERENfTElORV9JMkNfUEFE Cn07CgoKCgoKCmVudW0gZ3Bpb19tb2RlIHsKIEdQSU9fTU9ERV9VTktOT1dOID0gKC0xKSwKIEdQ SU9fTU9ERV9JTlBVVCwKIEdQSU9fTU9ERV9PVVRQVVQsCiBHUElPX01PREVfRkFTVF9PVVRQVVQs CiBHUElPX01PREVfSEFSRFdBUkUsCiBHUElPX01PREVfSU5URVJSVVBUCn07CiMgMjQ2ICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5cGVzLmgi CmVudW0gZ3Bpb19zaWduYWxfc291cmNlIHsKIEdQSU9fU0lHTkFMX1NPVVJDRV9VTktOT1dOID0g KC0xKSwKIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNBX1NURVJFT19TWU5DLAogR1BJT19TSUdOQUxf U09VUkNFX1BBU1NfVEhST1VHSF9TVEVSRU9fU1lOQywKIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNC X1NURVJFT19TWU5DLAogR1BJT19TSUdOQUxfU09VUkNFX0RBQ0FfSFNZTkMsCiBHUElPX1NJR05B TF9TT1VSQ0VfREFDQl9IU1lOQywKIEdQSU9fU0lHTkFMX1NPVVJDRV9EQUNBX1ZTWU5DLAogR1BJ T19TSUdOQUxfU09VUkNFX0RBQ0JfVlNZTkMsCn07CgplbnVtIGdwaW9fc3RlcmVvX3NvdXJjZSB7 CiBHUElPX1NURVJFT19TT1VSQ0VfVU5LTk9XTiA9ICgtMSksCiBHUElPX1NURVJFT19TT1VSQ0Vf RDEsCiBHUElPX1NURVJFT19TT1VSQ0VfRDIsCiBHUElPX1NURVJFT19TT1VSQ0VfRDMsCiBHUElP X1NURVJFT19TT1VSQ0VfRDQsCiBHUElPX1NURVJFT19TT1VSQ0VfRDUsCiBHUElPX1NURVJFT19T T1VSQ0VfRDYKfTsKCgoKCgplbnVtIGdwaW9fY29uZmlnX3R5cGUgewogR1BJT19DT05GSUdfVFlQ RV9OT05FLAogR1BJT19DT05GSUdfVFlQRV9EREMsCiBHUElPX0NPTkZJR19UWVBFX0hQRCwKIEdQ SU9fQ09ORklHX1RZUEVfR0VORVJJQ19NVVgsCiBHUElPX0NPTkZJR19UWVBFX0dTTF9NVVgsCiBH UElPX0NPTkZJR19UWVBFX0kyQ19BVVhfRFVBTF9NT0RFCn07CgoKCmVudW0gZ3Bpb19kZGNfY29u ZmlnX3R5cGUgewogR1BJT19ERENfQ09ORklHX1RZUEVfTU9ERV9BVVgsCiBHUElPX0REQ19DT05G SUdfVFlQRV9NT0RFX0kyQywKIEdQSU9fRERDX0NPTkZJR19UWVBFX1BPTExfRk9SX0NPTk5FQ1Qs CiBHUElPX0REQ19DT05GSUdfVFlQRV9QT0xMX0ZPUl9ESVNDT05ORUNULAogR1BJT19ERENfQ09O RklHX1RZUEVfRElTQUJMRV9QT0xMSU5HCn07CgpzdHJ1Y3QgZ3Bpb19kZGNfY29uZmlnIHsKIGVu dW0gZ3Bpb19kZGNfY29uZmlnX3R5cGUgdHlwZTsKIGJvb2wgZGF0YV9lbl9iaXRfcHJlc2VudDsK IGJvb2wgY2xvY2tfZW5fYml0X3ByZXNlbnQ7Cn07CgoKCnN0cnVjdCBncGlvX2hwZF9jb25maWcg ewogdWludDMyX3QgZGVsYXlfb25fY29ubmVjdDsKIHVpbnQzMl90IGRlbGF5X29uX2Rpc2Nvbm5l Y3Q7Cn07CgpzdHJ1Y3QgZ3Bpb19nZW5lcmljX211eF9jb25maWcgewogYm9vbCBlbmFibGVfb3V0 cHV0X2Zyb21fbXV4OwogZW51bSBncGlvX3NpZ25hbF9zb3VyY2UgbXV4X3NlbGVjdDsKIGVudW0g Z3Bpb19zdGVyZW9fc291cmNlIHN0ZXJlb19zZWxlY3Q7Cn07CgplbnVtIGdwaW9fZ3NsX211eF9j b25maWdfdHlwZSB7CiBHUElPX0dTTF9NVVhfQ09ORklHX1RZUEVfRElTQUJMRSwKIEdQSU9fR1NM X01VWF9DT05GSUdfVFlQRV9USU1JTkdfU1lOQywKIEdQSU9fR1NMX01VWF9DT05GSUdfVFlQRV9G TElQX1NZTkMKfTsKCnN0cnVjdCBncGlvX2dzbF9tdXhfY29uZmlnIHsKIGVudW0gZ3Bpb19nc2xf bXV4X2NvbmZpZ190eXBlIHR5cGU7CgoKIHVpbnQzMl90IGdzbF9ncm91cDsKfTsKCnN0cnVjdCBn cGlvX2NvbmZpZ19kYXRhIHsKIGVudW0gZ3Bpb19jb25maWdfdHlwZSB0eXBlOwogdW5pb24gewog IHN0cnVjdCBncGlvX2RkY19jb25maWcgZGRjOwogIHN0cnVjdCBncGlvX2hwZF9jb25maWcgaHBk OwogIHN0cnVjdCBncGlvX2dlbmVyaWNfbXV4X2NvbmZpZyBnZW5lcmljX211eDsKICBzdHJ1Y3Qg Z3Bpb19nc2xfbXV4X2NvbmZpZyBnc2xfbXV4OwogfSBjb25maWc7Cn07CiMgMzMgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCiMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbGlua19zZXJ2aWNlX3R5cGVz LmgiIDEKIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1 ZGUvbGlua19zZXJ2aWNlX3R5cGVzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2luY2x1ZGUvZGFsX3R5cGVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvbGlua19zZXJ2aWNlX3R5cGVzLmgiIDIK IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaXJxX3R5cGVz LmgiIDEKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1 ZGUvbGlua19zZXJ2aWNlX3R5cGVzLmgiIDIKCgpzdHJ1Y3QgZGRjOwpzdHJ1Y3QgaXJxX21hbmFn ZXI7CgplbnVtIHsKIE1BWF9DT05UUk9MTEVSX05VTSA9IDYKfTsKCmVudW0gZHBfcG93ZXJfc3Rh dGUgewogRFBfUE9XRVJfU1RBVEVfRDAgPSAxLAogRFBfUE9XRVJfU1RBVEVfRDMKfTsKCmVudW0g ZWRwX3JldmlzaW9uIHsKCiBFRFBfUkVWSVNJT05fMTEgPSAweDAwLAoKIEVEUF9SRVZJU0lPTl8x MiA9IDB4MDEsCgogRURQX1JFVklTSU9OXzEzID0gMHgwMgp9OwoKZW51bSB7CiBMSU5LX1JBVEVf UkVGX0ZSRVFfSU5fS0haID0gMjcwMDAKfTsKCmVudW0gbGlua190cmFpbmluZ19yZXN1bHQgewog TElOS19UUkFJTklOR19TVUNDRVNTLAogTElOS19UUkFJTklOR19DUl9GQUlMX0xBTkUwLAogTElO S19UUkFJTklOR19DUl9GQUlMX0xBTkUxLAogTElOS19UUkFJTklOR19DUl9GQUlMX0xBTkUyMywK CiBMSU5LX1RSQUlOSU5HX0VRX0ZBSUxfQ1IsCgogTElOS19UUkFJTklOR19FUV9GQUlMX0VRLAog TElOS19UUkFJTklOR19MUUFfRkFJTCwKfTsKCnN0cnVjdCBsaW5rX3RyYWluaW5nX3NldHRpbmdz IHsKIHN0cnVjdCBkY19saW5rX3NldHRpbmdzIGxpbmtfc2V0dGluZ3M7CiBzdHJ1Y3QgZGNfbGFu ZV9zZXR0aW5ncyBsYW5lX3NldHRpbmdzW0xBTkVfQ09VTlRfRFBfTUFYXTsKCiBlbnVtIGRjX3Zv bHRhZ2Vfc3dpbmcgKnZvbHRhZ2Vfc3dpbmc7CiBlbnVtIGRjX3ByZV9lbXBoYXNpcyAqcHJlX2Vt cGhhc2lzOwogZW51bSBkY19wb3N0X2N1cnNvcjIgKnBvc3RfY3Vyc29yMjsKCiB1aW50MTZfdCBj cl9wYXR0ZXJuX3RpbWU7CiB1aW50MTZfdCBlcV9wYXR0ZXJuX3RpbWU7CiBlbnVtIGRjX2RwX3Ry YWluaW5nX3BhdHRlcm4gcGF0dGVybl9mb3JfZXE7CgogYm9vbCBlbmhhbmNlZF9mcmFtaW5nOwog Ym9vbCBhbGxvd19pbnZhbGlkX21zYV90aW1pbmdfcGFyYW07Cn07CgoKCmVudW0gZHBfdGVzdF9w YXR0ZXJuIHsKCgogRFBfVEVTVF9QQVRURVJOX1ZJREVPX01PREUgPSAwLAoKCiBEUF9URVNUX1BB VFRFUk5fUEhZX1BBVFRFUk5fQkVHSU4sCiBEUF9URVNUX1BBVFRFUk5fRDEwMiA9IERQX1RFU1Rf UEFUVEVSTl9QSFlfUEFUVEVSTl9CRUdJTiwKIERQX1RFU1RfUEFUVEVSTl9TWU1CT0xfRVJST1Is CiBEUF9URVNUX1BBVFRFUk5fUFJCUzcsCiBEUF9URVNUX1BBVFRFUk5fODBCSVRfQ1VTVE9NLAog RFBfVEVTVF9QQVRURVJOX0NQMjUyMF8xLAogRFBfVEVTVF9QQVRURVJOX0NQMjUyMF8yLAogRFBf VEVTVF9QQVRURVJOX0hCUjJfQ09NUExJQU5DRV9FWUUgPSBEUF9URVNUX1BBVFRFUk5fQ1AyNTIw XzIsCiBEUF9URVNUX1BBVFRFUk5fQ1AyNTIwXzMsCgoKIERQX1RFU1RfUEFUVEVSTl9UUkFJTklO R19QQVRURVJOMSwKIERQX1RFU1RfUEFUVEVSTl9UUkFJTklOR19QQVRURVJOMiwKIERQX1RFU1Rf UEFUVEVSTl9UUkFJTklOR19QQVRURVJOMywKIERQX1RFU1RfUEFUVEVSTl9UUkFJTklOR19QQVRU RVJONCwKIERQX1RFU1RfUEFUVEVSTl9QSFlfUEFUVEVSTl9FTkQgPSBEUF9URVNUX1BBVFRFUk5f VFJBSU5JTkdfUEFUVEVSTjQsCgoKIERQX1RFU1RfUEFUVEVSTl9DT0xPUl9TUVVBUkVTLAogRFBf VEVTVF9QQVRURVJOX0NPTE9SX1NRVUFSRVNfQ0VBLAogRFBfVEVTVF9QQVRURVJOX1ZFUlRJQ0FM X0JBUlMsCiBEUF9URVNUX1BBVFRFUk5fSE9SSVpPTlRBTF9CQVJTLAogRFBfVEVTVF9QQVRURVJO X0NPTE9SX1JBTVAsCgoKIERQX1RFU1RfUEFUVEVSTl9BVURJT19PUEVSQVRPUl9ERUZJTkVELAog RFBfVEVTVF9QQVRURVJOX0FVRElPX1NBV1RPT1RILAoKIERQX1RFU1RfUEFUVEVSTl9VTlNVUFBP UlRFRAp9OwoKZW51bSBkcF90ZXN0X3BhdHRlcm5fY29sb3Jfc3BhY2UgewogRFBfVEVTVF9QQVRU RVJOX0NPTE9SX1NQQUNFX1JHQiwKIERQX1RFU1RfUEFUVEVSTl9DT0xPUl9TUEFDRV9ZQ0JDUjYw MSwKIERQX1RFU1RfUEFUVEVSTl9DT0xPUl9TUEFDRV9ZQ0JDUjcwOSwKIERQX1RFU1RfUEFUVEVS Tl9DT0xPUl9TUEFDRV9VTkRFRklORUQKfTsKCmVudW0gZHBfcGFuZWxfbW9kZSB7CgogRFBfUEFO RUxfTU9ERV9ERUZBVUxULAoKIERQX1BBTkVMX01PREVfRURQLAoKIERQX1BBTkVMX01PREVfU1BF Q0lBTAp9OwoKCnVuaW9uIGRwY2RfdHJhaW5pbmdfbGFuZV9zZXQgewogc3RydWN0IHsKCiAgdWlu dDhfdCBWT0xUQUdFX1NXSU5HX1NFVDoyOwogIHVpbnQ4X3QgTUFYX1NXSU5HX1JFQUNIRUQ6MTsK ICB1aW50OF90IFBSRV9FTVBIQVNJU19TRVQ6MjsKICB1aW50OF90IE1BWF9QUkVfRU1QSEFTSVNf UkVBQ0hFRDoxOwoKICB1aW50OF90IFBPU1RfQ1VSU09SMl9TRVQ6MjsKIyAxNjEgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xpbmtfc2VydmljZV90eXBl cy5oIgogfSBiaXRzOwoKIHVpbnQ4X3QgcmF3Owp9OwoKCgpzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9h bGxvY2F0aW9uIHsKIHVpbnQ4X3QgdmNwX2lkOwoKCiB1aW50OF90IHNsb3RfY291bnQ7Cn07CgoK c3RydWN0IGRwX21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZSB7CgogaW50IHN0cmVhbV9jb3Vu dDsKCiBzdHJ1Y3QgZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uIHN0cmVhbV9hbGxvY2F0aW9uc1tN QVhfQ09OVFJPTExFUl9OVU1dOwp9OwojIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2N0cmxfZGVmcy5oIiAxCiMgMjkgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2N0 cmxfZGVmcy5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2dycGhfb2JqZWN0X2RlZnMuaCIgMQojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9jdHJsX2RlZnMuaCIgMgojIDQy ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29i amVjdF9jdHJsX2RlZnMuaCIKZW51bSBkaXNwbGF5X291dHB1dF9iaXRfZGVwdGggewogUEFORUxf VU5ERUZJTkUgPSAwLAogUEFORUxfNkJJVF9DT0xPUiA9IDEsCiBQQU5FTF84QklUX0NPTE9SID0g MiwKIFBBTkVMXzEwQklUX0NPTE9SID0gMywKIFBBTkVMXzEyQklUX0NPTE9SID0gNCwKIFBBTkVM XzE2QklUX0NPTE9SID0gNSwKfTsKCgoKZW51bSBkYWxfZGV2aWNlX3R5cGUgewogREVWSUNFX1RZ UEVfVU5LTk9XTiA9IDAsCiBERVZJQ0VfVFlQRV9MQ0QsCiBERVZJQ0VfVFlQRV9DUlQsCiBERVZJ Q0VfVFlQRV9ERlAsCiBERVZJQ0VfVFlQRV9DViwKIERFVklDRV9UWVBFX1RWLAogREVWSUNFX1RZ UEVfQ0YsCiBERVZJQ0VfVFlQRV9XSVJFTEVTUwp9OwoKCnN0cnVjdCBkZXZpY2VfaWQgewogZW51 bSBkYWxfZGV2aWNlX3R5cGUgZGV2aWNlX3R5cGU6MTY7CiB1aW50MzJfdCBlbnVtX2lkOjE2Owog dWludDE2X3QgcmF3X2RldmljZV90YWc7Cn07CgpzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2kyY19p bmZvIHsKIHN0cnVjdCBncGlvX2luZm8gewogIHVpbnQzMl90IGNsa19tYXNrX3JlZ2lzdGVyX2lu ZGV4OwogIHVpbnQzMl90IGNsa19lbl9yZWdpc3Rlcl9pbmRleDsKICB1aW50MzJfdCBjbGtfeV9y ZWdpc3Rlcl9pbmRleDsKICB1aW50MzJfdCBjbGtfYV9yZWdpc3Rlcl9pbmRleDsKICB1aW50MzJf dCBkYXRhX21hc2tfcmVnaXN0ZXJfaW5kZXg7CiAgdWludDMyX3QgZGF0YV9lbl9yZWdpc3Rlcl9p bmRleDsKICB1aW50MzJfdCBkYXRhX3lfcmVnaXN0ZXJfaW5kZXg7CiAgdWludDMyX3QgZGF0YV9h X3JlZ2lzdGVyX2luZGV4OwoKICB1aW50MzJfdCBjbGtfbWFza19zaGlmdDsKICB1aW50MzJfdCBj bGtfZW5fc2hpZnQ7CiAgdWludDMyX3QgY2xrX3lfc2hpZnQ7CiAgdWludDMyX3QgY2xrX2Ffc2hp ZnQ7CiAgdWludDMyX3QgZGF0YV9tYXNrX3NoaWZ0OwogIHVpbnQzMl90IGRhdGFfZW5fc2hpZnQ7 CiAgdWludDMyX3QgZGF0YV95X3NoaWZ0OwogIHVpbnQzMl90IGRhdGFfYV9zaGlmdDsKIH0gZ3Bp b19pbmZvOwoKIGJvb2wgaTJjX2h3X2Fzc2lzdDsKIHVpbnQzMl90IGkyY19saW5lOwogdWludDMy X3QgaTJjX2VuZ2luZV9pZDsKIHVpbnQzMl90IGkyY19zbGF2ZV9hZGRyZXNzOwp9OwoKc3RydWN0 IGdyYXBoaWNzX29iamVjdF9ocGRfaW5mbyB7CiB1aW50OF90IGhwZF9pbnRfZ3Bpb191aWQ7CiB1 aW50OF90IGhwZF9hY3RpdmU7Cn07CgpzdHJ1Y3QgY29ubmVjdG9yX2RldmljZV90YWdfaW5mbyB7 CiB1aW50MzJfdCBhY3BpX2RldmljZTsKIHN0cnVjdCBkZXZpY2VfaWQgZGV2X2lkOwp9OwoKc3Ry dWN0IGRldmljZV90aW1pbmcgewogc3RydWN0IG1pc2NfaW5mbyB7CiAgdWludDMyX3QgSE9SSVpP TlRBTF9DVVRfT0ZGOjE7CgogIHVpbnQzMl90IEhfU1lOQ19QT0xBUklUWToxOwoKICB1aW50MzJf dCBWX1NZTkNfUE9MQVJJVFk6MTsKICB1aW50MzJfdCBWRVJUSUNBTF9DVVRfT0ZGOjE7CiAgdWlu dDMyX3QgSF9SRVBMSUNBVElPTl9CWTI6MTsKICB1aW50MzJfdCBWX1JFUExJQ0FUSU9OX0JZMjox OwogIHVpbnQzMl90IENPTVBPU0lURV9TWU5DOjE7CiAgdWludDMyX3QgSU5URVJMQUNFOjE7CiAg dWludDMyX3QgRE9VQkxFX0NMT0NLOjE7CiAgdWludDMyX3QgUkdCODg4OjE7CiAgdWludDMyX3Qg R1JFWV9MRVZFTDoyOwogIHVpbnQzMl90IFNQQVRJQUw6MTsKICB1aW50MzJfdCBURU1QT1JBTDox OwogIHVpbnQzMl90IEFQSV9FTkFCTEVEOjE7CiB9IG1pc2NfaW5mbzsKCiB1aW50MzJfdCBwaXhl bF9jbGs7CiB1aW50MzJfdCBob3Jpem9udGFsX2FkZHJlc3NhYmxlOwogdWludDMyX3QgaG9yaXpv bnRhbF9ibGFua2luZ190aW1lOwogdWludDMyX3QgdmVydGljYWxfYWRkcmVzc2FibGU7CiB1aW50 MzJfdCB2ZXJ0aWNhbF9ibGFua2luZ190aW1lOwogdWludDMyX3QgaG9yaXpvbnRhbF9zeW5jX29m ZnNldDsKIHVpbnQzMl90IGhvcml6b250YWxfc3luY193aWR0aDsKIHVpbnQzMl90IHZlcnRpY2Fs X3N5bmNfb2Zmc2V0OwogdWludDMyX3QgdmVydGljYWxfc3luY193aWR0aDsKIHVpbnQzMl90IGhv cml6b250YWxfYm9yZGVyOwogdWludDMyX3QgdmVydGljYWxfYm9yZGVyOwp9OwoKc3RydWN0IHN1 cHBvcnRlZF9yZWZyZXNoX3JhdGUgewogdWludDMyX3QgUkVGUkVTSF9SQVRFXzMwSFo6MTsKIHVp bnQzMl90IFJFRlJFU0hfUkFURV80MEhaOjE7CiB1aW50MzJfdCBSRUZSRVNIX1JBVEVfNDhIWjox OwogdWludDMyX3QgUkVGUkVTSF9SQVRFXzUwSFo6MTsKIHVpbnQzMl90IFJFRlJFU0hfUkFURV82 MEhaOjE7Cn07CgpzdHJ1Y3QgZW1iZWRkZWRfcGFuZWxfaW5mbyB7CiBzdHJ1Y3QgZGV2aWNlX3Rp bWluZyBsY2RfdGltaW5nOwogdWludDMyX3Qgc3NfaWQ7CiBzdHJ1Y3Qgc3VwcG9ydGVkX3JlZnJl c2hfcmF0ZSBzdXBwb3J0ZWRfcnI7CiB1aW50MzJfdCBkcnJfZW5hYmxlZDsKIHVpbnQzMl90IG1p bl9kcnJfcmVmcmVzaF9yYXRlOwogYm9vbCByZWFsdGVrX2VEUFRvTFZEUzsKfTsKCnN0cnVjdCBk Y19maXJtd2FyZV9pbmZvIHsKIHN0cnVjdCBwbGxfaW5mbyB7CiAgdWludDMyX3QgY3J5c3RhbF9m cmVxdWVuY3k7CiAgdWludDMyX3QgbWluX2lucHV0X3B4bF9jbGtfcGxsX2ZyZXF1ZW5jeTsKICB1 aW50MzJfdCBtYXhfaW5wdXRfcHhsX2Nsa19wbGxfZnJlcXVlbmN5OwogIHVpbnQzMl90IG1pbl9v dXRwdXRfcHhsX2Nsa19wbGxfZnJlcXVlbmN5OwogIHVpbnQzMl90IG1heF9vdXRwdXRfcHhsX2Ns a19wbGxfZnJlcXVlbmN5OwogfSBwbGxfaW5mbzsKCiBzdHJ1Y3QgZmlybXdhcmVfZmVhdHVyZSB7 CiAgdWludDMyX3QgbWVtb3J5X2Nsa19zc19wZXJjZW50YWdlOwogIHVpbnQzMl90IGVuZ2luZV9j bGtfc3NfcGVyY2VudGFnZTsKIH0gZmVhdHVyZTsKCiB1aW50MzJfdCBkZWZhdWx0X2Rpc3BsYXlf ZW5naW5lX3BsbF9mcmVxdWVuY3k7CiB1aW50MzJfdCBleHRlcm5hbF9jbG9ja19zb3VyY2VfZnJl cXVlbmN5X2Zvcl9kcDsKIHVpbnQzMl90IHNtdV9ncHVfcGxsX291dHB1dF9mcmVxOwogdWludDhf dCBtaW5fYWxsb3dlZF9ibF9sZXZlbDsKIHVpbnQ4X3QgcmVtb3RlX2Rpc3BsYXlfY29uZmlnOwog dWludDMyX3QgZGVmYXVsdF9tZW1vcnlfY2xrOwogdWludDMyX3QgZGVmYXVsdF9lbmdpbmVfY2xr OwogdWludDMyX3QgZHBfcGh5X3JlZl9jbGs7CiB1aW50MzJfdCBpMmNfZW5naW5lX3JlZl9jbGs7 CiBib29sIG9lbV9pMmNfcHJlc2VudDsKIHVpbnQ4X3Qgb2VtX2kyY19vYmpfaWQ7Cgp9OwoKc3Ry dWN0IHN0ZXBfYW5kX2RlbGF5X2luZm8gewogdWludDMyX3Qgc3RlcDsKIHVpbnQzMl90IGRlbGF5 OwogdWludDMyX3QgcmVjb21tZW5kZWRfcmVmX2RpdjsKfTsKCnN0cnVjdCBzcHJlYWRfc3BlY3Ry dW1faW5mbyB7CiBzdHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX3R5cGUgewogIGJvb2wgQ0VOVEVSX01P REU6MTsKICBib29sIEVYVEVSTkFMOjE7CiAgYm9vbCBTVEVQX0FORF9ERUxBWV9JTkZPOjE7CiB9 IHR5cGU7CgoKCiB1aW50MzJfdCBzcHJlYWRfc3BlY3RydW1fcGVyY2VudGFnZTsKIHVpbnQzMl90 IHNwcmVhZF9wZXJjZW50YWdlX2RpdmlkZXI7CiB1aW50MzJfdCBzcHJlYWRfc3BlY3RydW1fcmFu Z2U7CgogdW5pb24gewogIHN0cnVjdCBzdGVwX2FuZF9kZWxheV9pbmZvIHN0ZXBfYW5kX2RlbGF5 X2luZm87CgoKCiAgdWludDMyX3QgdGFyZ2V0X2Nsb2NrX3JhbmdlOwogfTsKCn07CgpzdHJ1Y3Qg Z3JhcGhpY3Nfb2JqZWN0X2VuY29kZXJfY2FwX2luZm8gewogdWludDMyX3QgZHBfaGJyMl9jYXA6 MTsKIHVpbnQzMl90IGRwX2hicjJfdmFsaWRhdGVkOjE7CgoKCiB1aW50MzJfdCByZXNlcnZlZDox NTsKfTsKCnN0cnVjdCBkaW5fY29ubmVjdG9yX2luZm8gewogdWludDMyX3QgZ3Bpb19pZDsKIGJv b2wgZ3Bpb190dl9hY3RpdmVfc3RhdGU7Cn07CgoKZW51bSB7IElOVkFMSURfRERJX0NIQU5ORUxf TUFQUElORyA9IDB4MCB9OwoKCgoKdW5pb24gZGRpX2NoYW5uZWxfbWFwcGluZyB7CiBzdHJ1Y3Qg bWFwcGluZyB7CiAgdWludDhfdCBsYW5lMDoyOwogIHVpbnQ4X3QgbGFuZTE6MjsKICB1aW50OF90 IGxhbmUyOjI7CiAgdWludDhfdCBsYW5lMzoyOwogfSBtYXBwaW5nOwogdWludDhfdCByYXc7Cn07 CgoKCgpzdHJ1Y3QgdHJhbnNtaXR0ZXJfY29uZmlndXJhdGlvbl9pbmZvIHsKCiBlbnVtIHRyYW5z bWl0dGVyIHRyYW5zbWl0dGVyX3BoeV9pZDsKCiB1bmlvbiBkZGlfY2hhbm5lbF9tYXBwaW5nIG91 dHB1dF9jaGFubmVsX21hcHBpbmc7Cn07CgpzdHJ1Y3QgdHJhbnNtaXR0ZXJfY29uZmlndXJhdGlv biB7Cgogc3RydWN0IHRyYW5zbWl0dGVyX2NvbmZpZ3VyYXRpb25faW5mbyBwcmltYXJ5X3RyYW5z bWl0dGVyX2NvbmZpZzsKCiBzdHJ1Y3QgdHJhbnNtaXR0ZXJfY29uZmlndXJhdGlvbl9pbmZvIHNl Y29uZGFyeV90cmFuc21pdHRlcl9jb25maWc7Cn07CiMgMjY5ICIuL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBoX29iamVjdF9jdHJsX2RlZnMuaCIKc3Ry dWN0IGkyY19yZWdfaW5mbyB7CiB1bnNpZ25lZCBjaGFyIGkyY19yZWdfaW5kZXg7CiB1bnNpZ25l ZCBjaGFyIGkyY19yZWdfdmFsOwp9OwoKc3RydWN0IGV4dF9oZG1pX3NldHRpbmdzIHsKIHVuc2ln bmVkIGNoYXIgc2x2X2FkZHI7CiB1bnNpZ25lZCBjaGFyIHJlZ19udW07CiBzdHJ1Y3QgaTJjX3Jl Z19pbmZvIHJlZ19zZXR0aW5nc1s5XTsKIHVuc2lnbmVkIGNoYXIgcmVnX251bV82ZzsKIHN0cnVj dCBpMmNfcmVnX2luZm8gcmVnX3NldHRpbmdzXzZnWzNdOwp9OwoKCgpzdHJ1Y3QgaW50ZWdyYXRl ZF9pbmZvIHsKIHN0cnVjdCBjbG9ja192b2x0YWdlX2NhcHMgewoKCiAgdWludDMyX3Qgdm9sdGFn ZV9pbmRleDsKCiAgdWludDMyX3QgbWF4X3N1cHBvcnRlZF9jbGs7CiB9IGRpc3BfY2xrX3ZvbHRh Z2VbNF07Cgogc3RydWN0IGRpc3BsYXlfY29ubmVjdGlvbl9pbmZvIHsKICBzdHJ1Y3QgZXh0ZXJu YWxfZGlzcGxheV9wYXRoIHsKCiAgIHVpbnQzMl90IGRldmljZV90YWc7CgogICB1aW50MzJfdCBk ZXZpY2VfYWNwaV9lbnVtOwoKCiAgIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgZGV2aWNlX2Nv bm5lY3Rvcl9pZDsKCiAgIHVpbnQ4X3QgZXh0X2F1eF9kZGNfbHV0X2luZGV4OwoKICAgdWludDhf dCBleHRfaHBkX3Bpbl9sdXRfaW5kZXg7CgogICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGV4 dF9lbmNvZGVyX29ial9pZDsKCiAgIHVuaW9uIGRkaV9jaGFubmVsX21hcHBpbmcgY2hhbm5lbF9t YXBwaW5nOwoKICAgdW5zaWduZWQgc2hvcnQgY2FwczsKICB9IHBhdGhbN107CgogIHVpbnQ4X3Qg Z3VfaWRbMTZdOwogIHVpbnQ4X3QgY2hlY2tzdW07CiB9IGV4dF9kaXNwX2Nvbm5faW5mbzsKCiBz dHJ1Y3QgYXZhaWxhYmxlX3NfY2xrX2xpc3QgewoKICB1aW50MzJfdCBzdXBwb3J0ZWRfc19jbGs7 CgogIHVpbnQzMl90IHZvbHRhZ2VfaW5kZXg7CgogIHVpbnQzMl90IHZvbHRhZ2VfaWQ7CiB9IGF2 YWlsX3NfY2xrWzVdOwoKIHVpbnQ4X3QgbWVtb3J5X3R5cGU7CiB1aW50OF90IG1hX2NoYW5uZWxf bnVtYmVyOwogdWludDMyX3QgYm9vdF91cF9lbmdpbmVfY2xvY2s7CiB1aW50MzJfdCBkZW50aXN0 X3Zjb19mcmVxOwogdWludDMyX3QgYm9vdF91cF91bWFfY2xvY2s7CiB1aW50MzJfdCBib290X3Vw X3JlcV9kaXNwbGF5X3ZlY3RvcjsKIHVpbnQzMl90IG90aGVyX2Rpc3BsYXlfbWlzYzsKIHVpbnQz Ml90IGdwdV9jYXBfaW5mbzsKIHVpbnQzMl90IHNiX21taW9fYmFzZV9hZGRyOwogdWludDMyX3Qg c3lzdGVtX2NvbmZpZzsKIHVpbnQzMl90IGNwdV9jYXBfaW5mbzsKIHVpbnQzMl90IG1heF9uYl92 b2x0YWdlOwogdWludDMyX3QgbWluX25iX3ZvbHRhZ2U7CiB1aW50MzJfdCBib290X3VwX25iX3Zv bHRhZ2U7CiB1aW50MzJfdCBleHRfZGlzcF9jb25uX2luZm9fb2Zmc2V0OwogdWludDMyX3QgY3Ny X20zX2FyYl9jbnRsX2RlZmF1bHRbMTBdOwogdWludDMyX3QgY3NyX20zX2FyYl9jbnRsX3V2ZFsx MF07CiB1aW50MzJfdCBjc3JfbTNfYXJiX2NudGxfZnMzZFsxMF07CiB1aW50MzJfdCBnbWNfcmVz dG9yZV9yZXNldF90aW1lOwogdWludDMyX3QgbWluaW11bV9uX2NsazsKIHVpbnQzMl90IGlkbGVf bl9jbGs7CiB1aW50MzJfdCBkZHJfZGxsX3Bvd2VyX3VwX3RpbWU7CiB1aW50MzJfdCBkZHJfcGxs X3Bvd2VyX3VwX3RpbWU7CgogdWludDMyX3QgcGNpZV9jbGtfc3NfdHlwZTsKIHVpbnQzMl90IGx2 ZHNfc3NfcGVyY2VudGFnZTsKIHVpbnQzMl90IGx2ZHNfc3NwcmVhZF9yYXRlX2luXzEwaHo7CiB1 aW50MzJfdCBoZG1pX3NzX3BlcmNlbnRhZ2U7CiB1aW50MzJfdCBoZG1pX3NzcHJlYWRfcmF0ZV9p bl8xMGh6OwogdWludDMyX3QgZHZpX3NzX3BlcmNlbnRhZ2U7CiB1aW50MzJfdCBkdmlfc3NwcmVh ZF9yYXRlX2luXzEwX2h6OwogdWludDMyX3Qgc2Nsa19kcG1fYm9vc3RfbWFyZ2luOwogdWludDMy X3Qgc2Nsa19kcG1fdGhyb3R0bGVfbWFyZ2luOwogdWludDMyX3Qgc2Nsa19kcG1fdGRwX2xpbWl0 X3BnOwogdWludDMyX3Qgc2Nsa19kcG1fdGRwX2xpbWl0X2Jvb3N0OwogdWludDMyX3QgYm9vc3Rf ZW5naW5lX2Nsb2NrOwogdWludDMyX3QgYm9vc3RfdmlkXzJiaXQ7CiB1aW50MzJfdCBlbmFibGVf Ym9vc3Q7CiB1aW50MzJfdCBnbmJfdGRwX2xpbWl0OwoKIHVpbnQzMl90IG1heF9sdmRzX3BjbGtf ZnJlcV9pbl9zaW5nbGVfbGluazsKIHVpbnQzMl90IGx2ZHNfbWlzYzsKIHVpbnQzMl90IGx2ZHNf cHdyX29uX3NlcV9kaWdfb25fdG9fZGVfaW5fNG1zOwogdWludDMyX3QgbHZkc19wd3Jfb25fc2Vx X2RlX3RvX3ZhcnlfYmxfaW5fNG1zOwogdWludDMyX3QgbHZkc19wd3Jfb2ZmX3NlcV92YXJ5X2Js X3RvX2RlX2luNG1zOwogdWludDMyX3QgbHZkc19wd3Jfb2ZmX3NlcV9kZV90b19kaWdfb25faW40 bXM7CiB1aW50MzJfdCBsdmRzX29mZl90b19vbl9kZWxheV9pbl80bXM7CiB1aW50MzJfdCBsdmRz X3B3cl9vbl9zZXFfdmFyeV9ibF90b19ibG9uX2luXzRtczsKIHVpbnQzMl90IGx2ZHNfcHdyX29m Zl9zZXFfYmxvbl90b192YXJ5X2JsX2luXzRtczsKIHVpbnQzMl90IGx2ZHNfcmVzZXJ2ZWQxOwog dWludDMyX3QgbHZkc19iaXRfZGVwdGhfY29udHJvbF92YWw7CgogdW5zaWduZWQgY2hhciBkcDBf ZXh0X2hkbWlfc2x2X2FkZHI7CiB1bnNpZ25lZCBjaGFyIGRwMF9leHRfaGRtaV9yZWdfbnVtOwog c3RydWN0IGkyY19yZWdfaW5mbyBkcDBfZXh0X2hkbWlfcmVnX3NldHRpbmdzWzldOwogdW5zaWdu ZWQgY2hhciBkcDBfZXh0X2hkbWlfNmdfcmVnX251bTsKIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAw X2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5nc1szXTsKIHVuc2lnbmVkIGNoYXIgZHAxX2V4dF9oZG1p X3Nsdl9hZGRyOwogdW5zaWduZWQgY2hhciBkcDFfZXh0X2hkbWlfcmVnX251bTsKIHN0cnVjdCBp MmNfcmVnX2luZm8gZHAxX2V4dF9oZG1pX3JlZ19zZXR0aW5nc1s5XTsKIHVuc2lnbmVkIGNoYXIg ZHAxX2V4dF9oZG1pXzZnX3JlZ19udW07CiBzdHJ1Y3QgaTJjX3JlZ19pbmZvIGRwMV9leHRfaGRt aV82Z19yZWdfc2V0dGluZ3NbM107CiB1bnNpZ25lZCBjaGFyIGRwMl9leHRfaGRtaV9zbHZfYWRk cjsKIHVuc2lnbmVkIGNoYXIgZHAyX2V4dF9oZG1pX3JlZ19udW07CiBzdHJ1Y3QgaTJjX3JlZ19p bmZvIGRwMl9leHRfaGRtaV9yZWdfc2V0dGluZ3NbOV07CiB1bnNpZ25lZCBjaGFyIGRwMl9leHRf aGRtaV82Z19yZWdfbnVtOwogc3RydWN0IGkyY19yZWdfaW5mbyBkcDJfZXh0X2hkbWlfNmdfcmVn X3NldHRpbmdzWzNdOwogdW5zaWduZWQgY2hhciBkcDNfZXh0X2hkbWlfc2x2X2FkZHI7CiB1bnNp Z25lZCBjaGFyIGRwM19leHRfaGRtaV9yZWdfbnVtOwogc3RydWN0IGkyY19yZWdfaW5mbyBkcDNf ZXh0X2hkbWlfcmVnX3NldHRpbmdzWzldOwogdW5zaWduZWQgY2hhciBkcDNfZXh0X2hkbWlfNmdf cmVnX251bTsKIHN0cnVjdCBpMmNfcmVnX2luZm8gZHAzX2V4dF9oZG1pXzZnX3JlZ19zZXR0aW5n c1szXTsKCiB1aW50MzJfdCBkcF9zc19jb250cm9sOwp9OwoKCgoKZW51bSBwb3dlcl9zb3VyY2Ug ewogUE9XRVJfU09VUkNFX0FDID0gMCwKIFBPV0VSX1NPVVJDRV9EQywKIFBPV0VSX1NPVVJDRV9M SU1JVEVEX1BPV0VSLAogUE9XRVJfU09VUkNFX0xJTUlURURfUE9XRVJfMiwKIFBPV0VSX1NPVVJD RV9NQVgKfTsKCnN0cnVjdCBiaW9zX2V2ZW50X2luZm8gewogdWludDMyX3QgdGhlcm1hbF9zdGF0 ZTsKIHVpbnQzMl90IGJhY2tsaWdodF9sZXZlbDsKIGVudW0gcG93ZXJfc291cmNlIHBvd2VyU291 cmNlOwogYm9vbCBoYXNfdGhlcm1hbF9zdGF0ZV9jaGFuZ2VkOwogYm9vbCBoYXNfcG93ZXJfc291 cmNlX2NoYW5nZWQ7CiBib29sIGhhc19mb3JjZWRfbW9kZV9jaGFuZ2VkOwogYm9vbCBmb3JjZWRf bW9kZTsKIGJvb2wgYmFja2xpZ2h0X2NoYW5nZWQ7Cn07CgoKCgoKZW51bSB7CiBERlNfQllQQVNT X0VOQUJMRSA9IDB4MTAKfTsKCmVudW0gewogSU5WQUxJRF9CQUNLTElHSFQgPSAtMQp9OwoKc3Ry dWN0IHBhbmVsX2JhY2tsaWdodF9ib3VuZGFyaWVzIHsKIHVpbnQzMl90IG1pbl9zaWduYWxfbGV2 ZWw7CiB1aW50MzJfdCBtYXhfc2lnbmFsX2xldmVsOwp9OwojIDM1ICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvb3BwLmgiIDEKIyAyOSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9vcHAuaCIKIyAxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2h3X3NoYXJlZC5o IiAxCiMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMv aHcvaHdfc2hhcmVkLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RjX2h3X3R5cGVzLmgiIDEKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9ody9od19zaGFyZWQuaCIgMgojIDQxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2h3X3NoYXJlZC5oIgpzdHJ1Y3Qg Z2FtbWFfY3VydmUgewogdWludDMyX3Qgb2Zmc2V0OwogdWludDMyX3Qgc2VnbWVudHNfbnVtOwp9 OwoKc3RydWN0IGN1cnZlX3BvaW50cyB7CiBzdHJ1Y3QgZml4ZWQzMV8zMiB4Owogc3RydWN0IGZp eGVkMzFfMzIgeTsKIHN0cnVjdCBmaXhlZDMxXzMyIG9mZnNldDsKIHN0cnVjdCBmaXhlZDMxXzMy IHNsb3BlOwoKIHVpbnQzMl90IGN1c3RvbV9mbG9hdF94OwogdWludDMyX3QgY3VzdG9tX2Zsb2F0 X3k7CiB1aW50MzJfdCBjdXN0b21fZmxvYXRfb2Zmc2V0OwogdWludDMyX3QgY3VzdG9tX2Zsb2F0 X3Nsb3BlOwp9OwoKc3RydWN0IGN1cnZlX3BvaW50czMgewogc3RydWN0IGN1cnZlX3BvaW50cyBy ZWQ7CiBzdHJ1Y3QgY3VydmVfcG9pbnRzIGdyZWVuOwogc3RydWN0IGN1cnZlX3BvaW50cyBibHVl Owp9OwoKc3RydWN0IHB3bF9yZXN1bHRfZGF0YSB7CiBzdHJ1Y3QgZml4ZWQzMV8zMiByZWQ7CiBz dHJ1Y3QgZml4ZWQzMV8zMiBncmVlbjsKIHN0cnVjdCBmaXhlZDMxXzMyIGJsdWU7Cgogc3RydWN0 IGZpeGVkMzFfMzIgZGVsdGFfcmVkOwogc3RydWN0IGZpeGVkMzFfMzIgZGVsdGFfZ3JlZW47CiBz dHJ1Y3QgZml4ZWQzMV8zMiBkZWx0YV9ibHVlOwoKIHVpbnQzMl90IHJlZF9yZWc7CiB1aW50MzJf dCBncmVlbl9yZWc7CiB1aW50MzJfdCBibHVlX3JlZzsKCiB1aW50MzJfdCBkZWx0YV9yZWRfcmVn OwogdWludDMyX3QgZGVsdGFfZ3JlZW5fcmVnOwogdWludDMyX3QgZGVsdGFfYmx1ZV9yZWc7Cn07 CgpzdHJ1Y3QgZGNfcmdiIHsKIHVpbnQzMl90IHJlZDsKIHVpbnQzMl90IGdyZWVuOwogdWludDMy X3QgYmx1ZTsKfTsKCnN0cnVjdCB0ZXRyYWhlZHJhbF8xN3gxN3gxNyB7CiBzdHJ1Y3QgZGNfcmdi IGx1dDBbMTIyOV07CiBzdHJ1Y3QgZGNfcmdiIGx1dDFbMTIyOF07CiBzdHJ1Y3QgZGNfcmdiIGx1 dDJbMTIyOF07CiBzdHJ1Y3QgZGNfcmdiIGx1dDNbMTIyOF07Cn07CnN0cnVjdCB0ZXRyYWhlZHJh bF85eDl4OSB7CiBzdHJ1Y3QgZGNfcmdiIGx1dDBbMTgzXTsKIHN0cnVjdCBkY19yZ2IgbHV0MVsx ODJdOwogc3RydWN0IGRjX3JnYiBsdXQyWzE4Ml07CiBzdHJ1Y3QgZGNfcmdiIGx1dDNbMTgyXTsK fTsKCnN0cnVjdCB0ZXRyYWhlZHJhbF9wYXJhbXMgewogdW5pb24gewogIHN0cnVjdCB0ZXRyYWhl ZHJhbF8xN3gxN3gxNyB0ZXRyYWhlZHJhbF8xNzsKICBzdHJ1Y3QgdGV0cmFoZWRyYWxfOXg5eDkg dGV0cmFoZWRyYWxfOTsKIH07CiBib29sIHVzZV90ZXRyYWhlZHJhbF85OwogYm9vbCB1c2VfMTJi aXRzOwoKfTsKCgoKCgoKc3RydWN0IHB3bF9wYXJhbXMgewogc3RydWN0IGdhbW1hX2N1cnZlIGFy cl9jdXJ2ZV9wb2ludHNbMzRdOwogdW5pb24gewogIHN0cnVjdCBjdXJ2ZV9wb2ludHMgYXJyX3Bv aW50c1syXTsKICBzdHJ1Y3QgY3VydmVfcG9pbnRzMyBjb3JuZXJfcG9pbnRzWzJdOwogfTsKIHN0 cnVjdCBwd2xfcmVzdWx0X2RhdGEgcmdiX3Jlc3VsdGVkWzI1NiArIDNdOwogdWludDMyX3QgaHdf cG9pbnRzX251bTsKfTsKCgoKCgoKCmVudW0gbGJfcGl4ZWxfZGVwdGggewoKIExCX1BJWEVMX0RF UFRIXzE4QlBQID0gMSwKIExCX1BJWEVMX0RFUFRIXzI0QlBQID0gMiwKIExCX1BJWEVMX0RFUFRI XzMwQlBQID0gNCwKIExCX1BJWEVMX0RFUFRIXzM2QlBQID0gOAp9OwoKZW51bSBncmFwaGljc19j c2NfYWRqdXN0X3R5cGUgewogR1JBUEhJQ1NfQ1NDX0FESlVTVF9UWVBFX0JZUEFTUyA9IDAsCiBH UkFQSElDU19DU0NfQURKVVNUX1RZUEVfSFcsCiBHUkFQSElDU19DU0NfQURKVVNUX1RZUEVfU1cK fTsKCmVudW0gaXBwX2RlZ2FtbWFfbW9kZSB7CiBJUFBfREVHQU1NQV9NT0RFX0JZUEFTUywKIElQ UF9ERUdBTU1BX01PREVfSFdfc1JHQiwKIElQUF9ERUdBTU1BX01PREVfSFdfeHZZQ0MsCiBJUFBf REVHQU1NQV9NT0RFX1VTRVJfUFdMCn07CgplbnVtIGlwcF9vdXRwdXRfZm9ybWF0IHsKIElQUF9P VVRQVVRfRk9STUFUXzEyX0JJVF9GSVgsCiBJUFBfT1VUUFVUX0ZPUk1BVF8xNl9CSVRfQllQQVNT LAogSVBQX09VVFBVVF9GT1JNQVRfRkxPQVQKfTsKCmVudW0gZXhwYW5zaW9uX21vZGUgewogRVhQ QU5TSU9OX01PREVfRFlOQU1JQywKIEVYUEFOU0lPTl9NT0RFX1pFUk8KfTsKCnN0cnVjdCBkZWZh dWx0X2FkanVzdG1lbnQgewogZW51bSBsYl9waXhlbF9kZXB0aCBsYl9jb2xvcl9kZXB0aDsKIGVu dW0gZGNfY29sb3Jfc3BhY2Ugb3V0X2NvbG9yX3NwYWNlOwogZW51bSBkY19jb2xvcl9zcGFjZSBp bl9jb2xvcl9zcGFjZTsKIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CiBlbnVtIHBp eGVsX2Zvcm1hdCBzdXJmYWNlX3BpeGVsX2Zvcm1hdDsKIGVudW0gZ3JhcGhpY3NfY3NjX2FkanVz dF90eXBlIGNzY19hZGp1c3RfdHlwZTsKIGJvb2wgZm9yY2VfaHdfZGVmYXVsdDsKfTsKCgpzdHJ1 Y3Qgb3V0X2NzY19jb2xvcl9tYXRyaXggewogZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcl9zcGFj ZTsKIHVpbnQxNl90IHJlZ3ZhbFsxMl07Cn07CgplbnVtIGdhbXV0X3JlbWFwX3NlbGVjdCB7CiBH QU1VVF9SRU1BUF9CWVBBU1MgPSAwLAogR0FNVVRfUkVNQVBfQ09FRkYsCiBHQU1VVF9SRU1BUF9D T01BX0NPRUZGLAogR0FNVVRfUkVNQVBfQ09NQl9DT0VGRgp9OwoKZW51bSBvcHBfcmVnYW1tYSB7 CiBPUFBfUkVHQU1NQV9CWVBBU1MgPSAwLAogT1BQX1JFR0FNTUFfU1JHQiwKIE9QUF9SRUdBTU1B X1hWWUNDLAogT1BQX1JFR0FNTUFfVVNFUgp9OwoKZW51bSBvcHRjX2RzY19tb2RlIHsKIE9QVENf RFNDX0RJU0FCTEVEID0gMCwKIE9QVENfRFNDX0VOQUJMRURfNDQ0ID0gMSwKIE9QVENfRFNDX0VO QUJMRURfTkFUSVZFX1NVQlNBTVBMRUQgPSAyCn07CgpzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUg ewogdWludDE2X3Qgc2NhbGVfcmVkOwogdWludDE2X3QgYmlhc19yZWQ7CiB1aW50MTZfdCBzY2Fs ZV9ncmVlbjsKIHVpbnQxNl90IGJpYXNfZ3JlZW47CiB1aW50MTZfdCBzY2FsZV9ibHVlOwogdWlu dDE2X3QgYmlhc19ibHVlOwp9OwoKZW51bSB0ZXN0X3BhdHRlcm5fZHluX3JhbmdlIHsKIFRFU1Rf UEFUVEVSTl9EWU5fUkFOR0VfVkVTQSA9IDAsCiBURVNUX1BBVFRFUk5fRFlOX1JBTkdFX0NFQQp9 OwoKZW51bSB0ZXN0X3BhdHRlcm5fbW9kZSB7CiBURVNUX1BBVFRFUk5fTU9ERV9DT0xPUlNRVUFS RVNfUkdCID0gMCwKIFRFU1RfUEFUVEVSTl9NT0RFX0NPTE9SU1FVQVJFU19ZQ0JDUjYwMSwKIFRF U1RfUEFUVEVSTl9NT0RFX0NPTE9SU1FVQVJFU19ZQ0JDUjcwOSwKIFRFU1RfUEFUVEVSTl9NT0RF X1ZFUlRJQ0FMQkFSUywKIFRFU1RfUEFUVEVSTl9NT0RFX0hPUklaT05UQUxCQVJTLAogVEVTVF9Q QVRURVJOX01PREVfU0lOR0xFUkFNUF9SR0IsCiBURVNUX1BBVFRFUk5fTU9ERV9EVUFMUkFNUF9S R0IsCiBURVNUX1BBVFRFUk5fTU9ERV9YUl9CSUFTX1JHQgp9OwoKZW51bSB0ZXN0X3BhdHRlcm5f Y29sb3JfZm9ybWF0IHsKIFRFU1RfUEFUVEVSTl9DT0xPUl9GT1JNQVRfQlBDXzYgPSAwLAogVEVT VF9QQVRURVJOX0NPTE9SX0ZPUk1BVF9CUENfOCwKIFRFU1RfUEFUVEVSTl9DT0xPUl9GT1JNQVRf QlBDXzEwLAogVEVTVF9QQVRURVJOX0NPTE9SX0ZPUk1BVF9CUENfMTIKfTsKCmVudW0gY29udHJv bGxlcl9kcF90ZXN0X3BhdHRlcm4gewogQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fRDEwMiA9 IDAsCiBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9TWU1CT0xFUlJPUiwKIENPTlRST0xMRVJf RFBfVEVTVF9QQVRURVJOX1BSQlM3LAogQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fQ09MT1JT UVVBUkVTLAogQ09OVFJPTExFUl9EUF9URVNUX1BBVFRFUk5fVkVSVElDQUxCQVJTLAogQ09OVFJP TExFUl9EUF9URVNUX1BBVFRFUk5fSE9SSVpPTlRBTEJBUlMsCiBDT05UUk9MTEVSX0RQX1RFU1Rf UEFUVEVSTl9DT0xPUlJBTVAsCiBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9WSURFT01PREUs CiBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9SRVNFUlZFRF84LAogQ09OVFJPTExFUl9EUF9U RVNUX1BBVFRFUk5fUkVTRVJWRURfOSwKIENPTlRST0xMRVJfRFBfVEVTVF9QQVRURVJOX1JFU0VS VkVEX0EsCiBDT05UUk9MTEVSX0RQX1RFU1RfUEFUVEVSTl9DT0xPUlNRVUFSRVNfQ0VBLAogQ09O VFJPTExFUl9EUF9URVNUX1BBVFRFUk5fU09MSURfQ09MT1IKfTsKCmVudW0gY29udHJvbGxlcl9k cF9jb2xvcl9zcGFjZSB7CiBDT05UUk9MTEVSX0RQX0NPTE9SX1NQQUNFX1JHQiwKIENPTlRST0xM RVJfRFBfQ09MT1JfU1BBQ0VfWUNCQ1I2MDEsCiBDT05UUk9MTEVSX0RQX0NPTE9SX1NQQUNFX1lD QkNSNzA5LAogQ09OVFJPTExFUl9EUF9DT0xPUl9TUEFDRV9VREVGSU5FRAp9OwoKZW51bSBkY19s dXRfbW9kZSB7CiBMVVRfQllQQVNTLAogTFVUX1JBTV9BLAogTFVUX1JBTV9CCn07CiMgMzAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvb3BwLmgiIDIK CiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody90 cmFuc2Zvcm0uaCIgMQojIDM1ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2h3L3RyYW5zZm9ybS5oIgpzdHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJh bXM7CgpzdHJ1Y3QgdHJhbnNmb3JtIHsKIGNvbnN0IHN0cnVjdCB0cmFuc2Zvcm1fZnVuY3MgKmZ1 bmNzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKIGludCBpbnN0Owogc3RydWN0IGRwcF9jYXBz ICpjYXBzOwogc3RydWN0IHB3bF9wYXJhbXMgcmVnYW1tYV9wYXJhbXM7Cn07CgoKZW51bSBjb2xv cmltZXRyeSB7CiBDT0xPUklNRVRSWV9OT19EQVRBID0gMCwKIENPTE9SSU1FVFJZX0lUVTYwMSA9 IDEsCiBDT0xPUklNRVRSWV9JVFU3MDkgPSAyLAogQ09MT1JJTUVUUllfRVhURU5ERUQgPSAzCn07 CgplbnVtIGNvbG9yaW1ldHJ5X2V4dCB7CiBDT0xPUklNRVRSWUVYX1hWWUNDNjAxID0gMCwKIENP TE9SSU1FVFJZRVhfWFZZQ0M3MDkgPSAxLAogQ09MT1JJTUVUUllFWF9TWUNDNjAxID0gMiwKIENP TE9SSU1FVFJZRVhfQURPQkVZQ0M2MDEgPSAzLAogQ09MT1JJTUVUUllFWF9BRE9CRVJHQiA9IDQs CiBDT0xPUklNRVRSWUVYX0JUMjAyMFlDQyA9IDUsCiBDT0xPUklNRVRSWUVYX0JUMjAyMFJHQllD QkNSID0gNiwKIENPTE9SSU1FVFJZRVhfUkVTRVJWRUQgPSA3Cn07CgplbnVtIGFjdGl2ZV9mb3Jt YXRfaW5mbyB7CiBBQ1RJVkVfRk9STUFUX05PX0RBVEEgPSAwLAogQUNUSVZFX0ZPUk1BVF9WQUxJ RCA9IDEKfTsKCgplbnVtIGFjdGl2ZV9mb3JtYXRfYXNwZWN0X3JhdGlvIHsKIEFDVElWRV9GT1JN QVRfQVNQRUNUX1JBVElPX1NBTUVfQVNfUElDVFVSRSA9IDgsCiBBQ1RJVkVfRk9STUFUX0FTUEVD VF9SQVRJT180XzMgPSA5LAogQUNUSVZFX0ZPUk1BVF9BU1BFQ1RfUkFUSU9fMTZfOSA9IDBYQSwK IEFDVElWRV9GT1JNQVRfQVNQRUNUX1JBVElPXzE0XzkgPSAwWEIKfTsKCmVudW0gYmFyX2luZm8g ewogQkFSX0lORk9fTk9UX1ZBTElEID0gMCwKIEJBUl9JTkZPX1ZFUlRJQ0FMX1ZBTElEID0gMSwK IEJBUl9JTkZPX0hPUklaT05UQUxfVkFMSUQgPSAyLAogQkFSX0lORk9fQk9USF9WQUxJRCA9IDMK fTsKCmVudW0gcGljdHVyZV9zY2FsaW5nIHsKIFBJQ1RVUkVfU0NBTElOR19VTklGT1JNID0gMCwK IFBJQ1RVUkVfU0NBTElOR19IT1JJWk9OVEFMID0gMSwKIFBJQ1RVUkVfU0NBTElOR19WRVJUSUNB TCA9IDIsCiBQSUNUVVJFX1NDQUxJTkdfQk9USCA9IDMKfTsKCgplbnVtIHJnYl9xdWFudGl6YXRp b25fcmFuZ2UgewogUkdCX1FVQU5USVpBVElPTl9ERUZBVUxUX1JBTkdFID0gMCwKIFJHQl9RVUFO VElaQVRJT05fTElNSVRFRF9SQU5HRSA9IDEsCiBSR0JfUVVBTlRJWkFUSU9OX0ZVTExfUkFOR0Ug PSAyLAogUkdCX1FVQU5USVpBVElPTl9SRVNFUlZFRCA9IDMKfTsKCgplbnVtIHl5Y19xdWFudGl6 YXRpb25fcmFuZ2UgewogWVlDX1FVQU5USVpBVElPTl9MSU1JVEVEX1JBTkdFID0gMCwKIFlZQ19R VUFOVElaQVRJT05fRlVMTF9SQU5HRSA9IDEsCiBZWUNfUVVBTlRJWkFUSU9OX1JFU0VSVkVEMiA9 IDIsCiBZWUNfUVVBTlRJWkFUSU9OX1JFU0VSVkVEMyA9IDMKfTsKCmVudW0gZ3JhcGhpY3NfZ2Ft dXRfYWRqdXN0X3R5cGUgewogR1JBUEhJQ1NfR0FNVVRfQURKVVNUX1RZUEVfQllQQVNTID0gMCwK IEdSQVBISUNTX0dBTVVUX0FESlVTVF9UWVBFX0hXLAogR1JBUEhJQ1NfR0FNVVRfQURKVVNUX1RZ UEVfU1cKfTsKCmVudW0gbGJfbWVtb3J5X2NvbmZpZyB7CgogTEJfTUVNT1JZX0NPTkZJR18wID0g MCwKCgogTEJfTUVNT1JZX0NPTkZJR18xID0gMSwKCgogTEJfTUVNT1JZX0NPTkZJR18yID0gMiwK CgoKCiBMQl9NRU1PUllfQ09ORklHXzMgPSAzCn07CgpzdHJ1Y3QgeGZtX2dycGhfY3NjX2FkanVz dG1lbnQgewogc3RydWN0IGZpeGVkMzFfMzIgdGVtcGVyYXR1cmVfbWF0cml4WzEyXTsKIGVudW0g Z3JhcGhpY3NfZ2FtdXRfYWRqdXN0X3R5cGUgZ2FtdXRfYWRqdXN0X3R5cGU7Cn07CgpzdHJ1Y3Qg b3ZlcnNjYW5faW5mbyB7CiBpbnQgbGVmdDsKIGludCByaWdodDsKIGludCB0b3A7CiBpbnQgYm90 dG9tOwp9OwoKc3RydWN0IHNjYWxpbmdfcmF0aW9zIHsKIHN0cnVjdCBmaXhlZDMxXzMyIGhvcno7 CiBzdHJ1Y3QgZml4ZWQzMV8zMiB2ZXJ0Owogc3RydWN0IGZpeGVkMzFfMzIgaG9yel9jOwogc3Ry dWN0IGZpeGVkMzFfMzIgdmVydF9jOwp9OwoKc3RydWN0IHNoYXJwbmVzc19hZGogewogaW50IGhv cno7CiBpbnQgdmVydDsKfTsKCnN0cnVjdCBsaW5lX2J1ZmZlcl9wYXJhbXMgewogYm9vbCBhbHBo YV9lbjsKIGJvb2wgcGl4ZWxfZXhwYW5fbW9kZTsKIGJvb2wgaW50ZXJsZWF2ZV9lbjsKIGludCBk eW5hbWljX3BpeGVsX2RlcHRoOwogZW51bSBsYl9waXhlbF9kZXB0aCBkZXB0aDsKfTsKCnN0cnVj dCBzY2xfaW5pdHMgewogc3RydWN0IGZpeGVkMzFfMzIgaDsKIHN0cnVjdCBmaXhlZDMxXzMyIGhf YzsKIHN0cnVjdCBmaXhlZDMxXzMyIHY7CiBzdHJ1Y3QgZml4ZWQzMV8zMiB2X2JvdDsKIHN0cnVj dCBmaXhlZDMxXzMyIHZfYzsKIHN0cnVjdCBmaXhlZDMxXzMyIHZfY19ib3Q7Cn07CgpzdHJ1Y3Qg c2NhbGVyX2RhdGEgewogaW50IGhfYWN0aXZlOwogaW50IHZfYWN0aXZlOwogc3RydWN0IHNjYWxp bmdfdGFwcyB0YXBzOwogc3RydWN0IHJlY3Qgdmlld3BvcnQ7CiBzdHJ1Y3QgcmVjdCB2aWV3cG9y dF9jOwogc3RydWN0IHJlY3QgcmVjb3V0Owogc3RydWN0IHNjYWxpbmdfcmF0aW9zIHJhdGlvczsK IHN0cnVjdCBzY2xfaW5pdHMgaW5pdHM7CiBzdHJ1Y3Qgc2hhcnBuZXNzX2FkaiBzaGFycG5lc3M7 CiBlbnVtIHBpeGVsX2Zvcm1hdCBmb3JtYXQ7CiBzdHJ1Y3QgbGluZV9idWZmZXJfcGFyYW1zIGxi X3BhcmFtczsKfTsKCnN0cnVjdCB0cmFuc2Zvcm1fZnVuY3Mgewogdm9pZCAoKnRyYW5zZm9ybV9y ZXNldCkoc3RydWN0IHRyYW5zZm9ybSAqeGZtKTsKCiB2b2lkICgqdHJhbnNmb3JtX3NldF9zY2Fs ZXIpKHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgY29uc3Qgc3RydWN0IHNjYWxlcl9kYXRhICpz Y2xfZGF0YSk7Cgogdm9pZCAoKnRyYW5zZm9ybV9zZXRfcGl4ZWxfc3RvcmFnZV9kZXB0aCkoCiAg IHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgZW51bSBsYl9waXhlbF9kZXB0aCBkZXB0aCwKICAg Y29uc3Qgc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zICpiaXRfZGVwdGhfcGFyYW1z KTsKCiBib29sICgqdHJhbnNmb3JtX2dldF9vcHRpbWFsX251bWJlcl9vZl90YXBzKSgKICAgc3Ry dWN0IHRyYW5zZm9ybSAqeGZtLAogICBzdHJ1Y3Qgc2NhbGVyX2RhdGEgKnNjbF9kYXRhLAogICBj b25zdCBzdHJ1Y3Qgc2NhbGluZ190YXBzICppbl90YXBzKTsKCiB2b2lkICgqdHJhbnNmb3JtX3Nl dF9nYW11dF9yZW1hcCkoCiAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgY29uc3Qgc3RydWN0 IHhmbV9ncnBoX2NzY19hZGp1c3RtZW50ICphZGp1c3QpOwoKIHZvaWQgKCpvcHBfc2V0X2NzY19k ZWZhdWx0KSgKICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCiAgY29uc3Qgc3RydWN0IGRlZmF1bHRf YWRqdXN0bWVudCAqZGVmYXVsdF9hZGp1c3QpOwoKIHZvaWQgKCpvcHBfc2V0X2NzY19hZGp1c3Rt ZW50KSgKICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCiAgY29uc3Qgc3RydWN0IG91dF9jc2NfY29s b3JfbWF0cml4ICp0YmxfZW50cnkpOwoKIHZvaWQgKCpvcHBfcG93ZXJfb25fcmVnYW1tYV9sdXQp KAogIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICBib29sIHBvd2VyX29uKTsKCiB2b2lkICgqb3Bw X3Byb2dyYW1fcmVnYW1tYV9sdXQpKAogICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm0sCiAgIGNvbnN0 IHN0cnVjdCBwd2xfcmVzdWx0X2RhdGEgKnJnYiwKICAgdWludDMyX3QgbnVtKTsKCiB2b2lkICgq b3BwX2NvbmZpZ3VyZV9yZWdhbW1hX2x1dCkoCiAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAg Ym9vbCBpc19yYW1fYSk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX3JlZ2FtbWFfbHV0Yl9zZXR0aW5n cykoCiAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMg KnBhcmFtcyk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX3JlZ2FtbWFfbHV0YV9zZXR0aW5ncykoCiAg IHN0cnVjdCB0cmFuc2Zvcm0gKnhmbSwKICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFt cyk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX3JlZ2FtbWFfcHdsKSgKICBzdHJ1Y3QgdHJhbnNmb3Jt ICp4Zm0sIGNvbnN0IHN0cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMpOwoKIHZvaWQgKCpvcHBfc2V0 X3JlZ2FtbWFfbW9kZSkoCiAgIHN0cnVjdCB0cmFuc2Zvcm0gKnhmbV9iYXNlLAogICBlbnVtIG9w cF9yZWdhbW1hIG1vZGUpOwoKIHZvaWQgKCppcHBfc2V0X2RlZ2FtbWEpKAogICBzdHJ1Y3QgdHJh bnNmb3JtICp4Zm1fYmFzZSwKICAgZW51bSBpcHBfZGVnYW1tYV9tb2RlIG1vZGUpOwoKIHZvaWQg KCppcHBfcHJvZ3JhbV9pbnB1dF9sdXQpKAogICBzdHJ1Y3QgdHJhbnNmb3JtICp4Zm1fYmFzZSwK ICAgY29uc3Qgc3RydWN0IGRjX2dhbW1hICpnYW1tYSk7Cgogdm9pZCAoKmlwcF9wcm9ncmFtX2Rl Z2FtbWFfcHdsKShzdHJ1Y3QgdHJhbnNmb3JtICp4Zm1fYmFzZSwKICAgICAgICAgIGNvbnN0IHN0 cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMpOwoKIHZvaWQgKCppcHBfc2V0dXApKAogICBzdHJ1Y3Qg dHJhbnNmb3JtICp4Zm1fYmFzZSwKICAgZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQs CiAgIGVudW0gZXhwYW5zaW9uX21vZGUgbW9kZSwKICAgc3RydWN0IGRjX2NzY190cmFuc2Zvcm0g aW5wdXRfY3NjX2NvbG9yX21hdHJpeCwKICAgZW51bSBkY19jb2xvcl9zcGFjZSBpbnB1dF9jb2xv cl9zcGFjZSk7Cgogdm9pZCAoKmlwcF9mdWxsX2J5cGFzcykoc3RydWN0IHRyYW5zZm9ybSAqeGZt X2Jhc2UpOwoKIHZvaWQgKCpzZXRfY3Vyc29yX2F0dHJpYnV0ZXMpKAogICBzdHJ1Y3QgdHJhbnNm b3JtICp4Zm1fYmFzZSwKICAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzICphdHRy KTsKCn07Cgpjb25zdCB1aW50MTZfdCAqZ2V0X2ZpbHRlcl8ydGFwXzE2cCh2b2lkKTsKY29uc3Qg dWludDE2X3QgKmdldF9maWx0ZXJfMnRhcF82NHAodm9pZCk7CmNvbnN0IHVpbnQxNl90ICpnZXRf ZmlsdGVyXzN0YXBfMTZwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsKY29uc3QgdWludDE2X3Qg KmdldF9maWx0ZXJfM3RhcF82NHAoc3RydWN0IGZpeGVkMzFfMzIgcmF0aW8pOwpjb25zdCB1aW50 MTZfdCAqZ2V0X2ZpbHRlcl80dGFwXzE2cChzdHJ1Y3QgZml4ZWQzMV8zMiByYXRpbyk7CmNvbnN0 IHVpbnQxNl90ICpnZXRfZmlsdGVyXzR0YXBfNjRwKHN0cnVjdCBmaXhlZDMxXzMyIHJhdGlvKTsK Y29uc3QgdWludDE2X3QgKmdldF9maWx0ZXJfNXRhcF82NHAoc3RydWN0IGZpeGVkMzFfMzIgcmF0 aW8pOwpjb25zdCB1aW50MTZfdCAqZ2V0X2ZpbHRlcl82dGFwXzY0cChzdHJ1Y3QgZml4ZWQzMV8z MiByYXRpbyk7CmNvbnN0IHVpbnQxNl90ICpnZXRfZmlsdGVyXzd0YXBfNjRwKHN0cnVjdCBmaXhl ZDMxXzMyIHJhdGlvKTsKY29uc3QgdWludDE2X3QgKmdldF9maWx0ZXJfOHRhcF82NHAoc3RydWN0 IGZpeGVkMzFfMzIgcmF0aW8pOwoKCgplbnVtIGRzY2xfZGF0YV9wcm9jZXNzaW5nX2Zvcm1hdCB7 CiBEU0NMX0RBVEFfUFJDRVNTSU5HX0ZJWEVEX0ZPUk1BVCwKIERTQ0xfREFUQV9QUkNFU1NJTkdf RkxPQVRfRk9STUFULAp9OwoKCgoKCgoKc3RydWN0IGRwcF9jYXBzIHsKCiBlbnVtIGRzY2xfZGF0 YV9wcm9jZXNzaW5nX2Zvcm1hdCBkc2NsX2RhdGFfcHJvY19mb3JtYXQ7CgoKCgoKIHZvaWQgKCpk c2NsX2NhbGNfbGJfbnVtX3BhcnRpdGlvbnMpKAogICBjb25zdCBzdHJ1Y3Qgc2NhbGVyX2RhdGEg KnNjbF9kYXRhLAogICBlbnVtIGxiX21lbW9yeV9jb25maWcgbGJfY29uZmlnLAogICBpbnQgKm51 bV9wYXJ0X3ksCiAgIGludCAqbnVtX3BhcnRfYyk7Cn07CiMgMzIgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvb3BwLmgiIDIKIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L21wYy5oIiAxCiMgMzYgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbXBjLmgiCmVu dW0gbXBjX291dHB1dF9jc2NfbW9kZSB7CiBNUENfT1VUUFVUX0NTQ19ESVNBQkxFID0gMCwKIE1Q Q19PVVRQVVRfQ1NDX0NPRUZfQSwKIE1QQ19PVVRQVVRfQ1NDX0NPRUZfQgp9OwoKCmVudW0gbXBj Y19ibGVuZF9tb2RlIHsKIE1QQ0NfQkxFTkRfTU9ERV9CWVBBU1MsCiBNUENDX0JMRU5EX01PREVf VE9QX0xBWUVSX1BBU1NUSFJPVUdILAogTVBDQ19CTEVORF9NT0RFX1RPUF9MQVlFUl9PTkxZLAog TVBDQ19CTEVORF9NT0RFX1RPUF9CT1RfQkxFTkRJTkcKfTsKCmVudW0gbXBjY19hbHBoYV9ibGVu ZF9tb2RlIHsKIE1QQ0NfQUxQSEFfQkxFTkRfTU9ERV9QRVJfUElYRUxfQUxQSEEsCiBNUENDX0FM UEhBX0JMRU5EX01PREVfUEVSX1BJWEVMX0FMUEhBX0NPTUJJTkVEX0dMT0JBTF9HQUlOLAogTVBD Q19BTFBIQV9CTEVORF9NT0RFX0dMT0JBTF9BTFBIQQp9OwoKCgoKc3RydWN0IG1wY2NfYmxuZF9j Zmcgewogc3RydWN0IHRnX2NvbG9yIGJsYWNrX2NvbG9yOwogZW51bSBtcGNjX2FscGhhX2JsZW5k X21vZGUgYWxwaGFfbW9kZTsKIGJvb2wgcHJlX211bHRpcGxpZWRfYWxwaGE7CiBpbnQgZ2xvYmFs X2dhaW47CiBpbnQgZ2xvYmFsX2FscGhhOwogYm9vbCBvdmVybGFwX29ubHk7CgoKIGludCBib3R0 b21fZ2Fpbl9tb2RlOwogaW50IGJhY2tncm91bmRfY29sb3JfYnBjOwogaW50IHRvcF9nYWluOwog aW50IGJvdHRvbV9pbnNpZGVfZ2FpbjsKIGludCBib3R0b21fb3V0c2lkZV9nYWluOwp9OwoKc3Ry dWN0IG1wY2Nfc21fY2ZnIHsKIGJvb2wgZW5hYmxlOwoKIGludCBzbV9tb2RlOwoKIGJvb2wgZnJh bWVfYWx0OwoKIGJvb2wgZmllbGRfYWx0OwoKIGludCBmb3JjZV9uZXh0X2ZyYW1lX3Bvcmxhcml0 eTsKCiBpbnQgZm9yY2VfbmV4dF9maWVsZF9wb2xhcml0eTsKfTsKCnN0cnVjdCBtcGNfZGVub3Jt X2NsYW1wIHsKIGludCBjbGFtcF9tYXhfcl9jcjsKIGludCBjbGFtcF9taW5fcl9jcjsKIGludCBj bGFtcF9tYXhfZ195OwogaW50IGNsYW1wX21pbl9nX3k7CiBpbnQgY2xhbXBfbWF4X2JfY2I7CiBp bnQgY2xhbXBfbWluX2JfY2I7Cn07CgoKCgoKc3RydWN0IG1wY2MgewogaW50IG1wY2NfaWQ7CiBp bnQgZHBwX2lkOwogc3RydWN0IG1wY2MgKm1wY2NfYm90Owogc3RydWN0IG1wY2NfYmxuZF9jZmcg YmxuZF9jZmc7CiBzdHJ1Y3QgbXBjY19zbV9jZmcgc21fY2ZnOwp9OwoKCgoKc3RydWN0IG1wY190 cmVlIHsKIGludCBvcHBfaWQ7CiBzdHJ1Y3QgbXBjYyAqb3BwX2xpc3Q7Cn07CgpzdHJ1Y3QgbXBj IHsKIGNvbnN0IHN0cnVjdCBtcGNfZnVuY3MgKmZ1bmNzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKCiBzdHJ1Y3QgbXBjYyBtcGNjX2FycmF5WzZdOwogc3RydWN0IHB3bF9wYXJhbXMgYmxlbmRl cl9wYXJhbXM7CiBib29sIGNtX2J5cGFzc19tb2RlOwp9OwoKc3RydWN0IG1wY2Nfc3RhdGUgewog dWludDMyX3Qgb3BwX2lkOwogdWludDMyX3QgZHBwX2lkOwogdWludDMyX3QgYm90X21wY2NfaWQ7 CiB1aW50MzJfdCBtb2RlOwogdWludDMyX3QgYWxwaGFfbW9kZTsKIHVpbnQzMl90IHByZV9tdWx0 aXBsaWVkX2FscGhhOwogdWludDMyX3Qgb3ZlcmxhcF9vbmx5OwogdWludDMyX3QgaWRsZTsKIHVp bnQzMl90IGJ1c3k7Cn07CgpzdHJ1Y3QgbXBjX2Z1bmNzIHsKIHZvaWQgKCpyZWFkX21wY2Nfc3Rh dGUpKAogICBzdHJ1Y3QgbXBjICptcGMsCiAgIGludCBtcGNjX2luc3QsCiAgIHN0cnVjdCBtcGNj X3N0YXRlICpzKTsKIyAxNjEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9pbmMvaHcvbXBjLmgiCiBzdHJ1Y3QgbXBjYyogKCppbnNlcnRfcGxhbmUpKAogICBzdHJ1 Y3QgbXBjICptcGMsCiAgIHN0cnVjdCBtcGNfdHJlZSAqdHJlZSwKICAgc3RydWN0IG1wY2NfYmxu ZF9jZmcgKmJsbmRfY2ZnLAogICBzdHJ1Y3QgbXBjY19zbV9jZmcgKnNtX2NmZywKICAgc3RydWN0 IG1wY2MgKmluc2VydF9hYm92ZV9tcGNjLAogICBpbnQgZHBwX2lkLAogICBpbnQgbXBjY19pZCk7 CiMgMTgwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3 L21wYy5oIgogdm9pZCAoKnJlbW92ZV9tcGNjKSgKICAgc3RydWN0IG1wYyAqbXBjLAogICBzdHJ1 Y3QgbXBjX3RyZWUgKnRyZWUsCiAgIHN0cnVjdCBtcGNjICptcGNjKTsKIyAxOTMgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbXBjLmgiCiB2b2lkICgq bXBjX2luaXQpKHN0cnVjdCBtcGMgKm1wYyk7CiB2b2lkICgqbXBjX2luaXRfc2luZ2xlX2luc3Qp KAogICBzdHJ1Y3QgbXBjICptcGMsCiAgIHVuc2lnbmVkIGludCBtcGNjX2lkKTsKIyAyMDggIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbXBjLmgiCiB2 b2lkICgqdXBkYXRlX2JsZW5kaW5nKSgKICBzdHJ1Y3QgbXBjICptcGMsCiAgc3RydWN0IG1wY2Nf YmxuZF9jZmcgKmJsbmRfY2ZnLAogIGludCBtcGNjX2lkKTsKCiBzdHJ1Y3QgbXBjYyogKCpnZXRf bXBjY19mb3JfZHBwKSgKICAgc3RydWN0IG1wY190cmVlICp0cmVlLAogICBpbnQgZHBwX2lkKTsK CiB2b2lkICgqd2FpdF9mb3JfaWRsZSkoc3RydWN0IG1wYyAqbXBjLCBpbnQgaWQpOwoKIHZvaWQg KCphc3NlcnRfbXBjY19pZGxlX2JlZm9yZV9jb25uZWN0KShzdHJ1Y3QgbXBjICptcGMsIGludCBt cGNjX2lkKTsKCiB2b2lkICgqaW5pdF9tcGNjX2xpc3RfZnJvbV9odykoCiAgc3RydWN0IG1wYyAq bXBjLAogIHN0cnVjdCBtcGNfdHJlZSAqdHJlZSk7Cgogdm9pZCAoKnNldF9kZW5vcm0pKHN0cnVj dCBtcGMgKm1wYywKICAgaW50IG9wcF9pZCwKICAgZW51bSBkY19jb2xvcl9kZXB0aCBvdXRwdXRf ZGVwdGgpOwoKIHZvaWQgKCpzZXRfZGVub3JtX2NsYW1wKSgKICAgc3RydWN0IG1wYyAqbXBjLAog ICBpbnQgb3BwX2lkLAogICBzdHJ1Y3QgbXBjX2Rlbm9ybV9jbGFtcCBkZW5vcm1fY2xhbXApOwoK IHZvaWQgKCpzZXRfb3V0cHV0X2NzYykoc3RydWN0IG1wYyAqbXBjLAogICBpbnQgb3BwX2lkLAog ICBjb25zdCB1aW50MTZfdCAqcmVndmFsLAogICBlbnVtIG1wY19vdXRwdXRfY3NjX21vZGUgb2Nz Y19tb2RlKTsKCiB2b2lkICgqc2V0X29jc2NfZGVmYXVsdCkoc3RydWN0IG1wYyAqbXBjLAogICBp bnQgb3BwX2lkLAogICBlbnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yX3NwYWNlLAogICBlbnVtIG1w Y19vdXRwdXRfY3NjX21vZGUgb2NzY19tb2RlKTsKCiB2b2lkICgqc2V0X291dHB1dF9nYW1tYSko CiAgIHN0cnVjdCBtcGMgKm1wYywKICAgaW50IG1wY2NfaWQsCiAgIGNvbnN0IHN0cnVjdCBwd2xf cGFyYW1zICpwYXJhbXMpOwogdm9pZCAoKnBvd2VyX29uX21wY19tZW1fcHdyKSgKICAgc3RydWN0 IG1wYyAqbXBjLAogICBpbnQgbXBjY19pZCwKICAgYm9vbCBwb3dlcl9vbik7Cgp9OwojIDMzICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L29wcC5oIiAy CgpzdHJ1Y3QgZml4ZWQzMV8zMjsKCgplbnVtIGNsYW1waW5nX3JhbmdlIHsKIENMQU1QSU5HX0ZV TExfUkFOR0UgPSAwLAogQ0xBTVBJTkdfTElNSVRFRF9SQU5HRV84QlBDLAogQ0xBTVBJTkdfTElN SVRFRF9SQU5HRV8xMEJQQywKIENMQU1QSU5HX0xJTUlURURfUkFOR0VfMTJCUEMsCgogQ0xBTVBJ TkdfTElNSVRFRF9SQU5HRV9QUk9HUkFNTUFCTEUKfTsKCnN0cnVjdCBjbGFtcGluZ19hbmRfcGl4 ZWxfZW5jb2RpbmdfcGFyYW1zIHsKIGVudW0gZGNfcGl4ZWxfZW5jb2RpbmcgcGl4ZWxfZW5jb2Rp bmc7CiBlbnVtIGNsYW1waW5nX3JhbmdlIGNsYW1waW5nX2xldmVsOwogZW51bSBkY19jb2xvcl9k ZXB0aCBjX2RlcHRoOwp9OwoKc3RydWN0IGJpdF9kZXB0aF9yZWR1Y3Rpb25fcGFyYW1zIHsKIHN0 cnVjdCB7CgoKICB1aW50MzJfdCBUUlVOQ0FURV9FTkFCTEVEOjE7CgogIHVpbnQzMl90IFRSVU5D QVRFX0RFUFRIOjI7CgogIHVpbnQzMl90IFRSVU5DQVRFX01PREU6MTsKCgoKICB1aW50MzJfdCBT UEFUSUFMX0RJVEhFUl9FTkFCTEVEOjE7CgogIHVpbnQzMl90IFNQQVRJQUxfRElUSEVSX0RFUFRI OjI7CgogIHVpbnQzMl90IFNQQVRJQUxfRElUSEVSX01PREU6MjsKCiAgdWludDMyX3QgUkdCX1JB TkRPTToxOwoKICB1aW50MzJfdCBGUkFNRV9SQU5ET006MTsKCiAgdWludDMyX3QgSElHSFBBU1Nf UkFORE9NOjE7CgoKCiAgdWludDMyX3QgRlJBTUVfTU9EVUxBVElPTl9FTkFCTEVEOjE7CgogIHVp bnQzMl90IEZSQU1FX01PRFVMQVRJT05fREVQVEg6MjsKCiAgdWludDMyX3QgVEVNUE9SQUxfTEVW RUw6MTsKICB1aW50MzJfdCBGUkMyNToyOwogIHVpbnQzMl90IEZSQzUwOjI7CiAgdWludDMyX3Qg RlJDNzU6MjsKIH0gZmxhZ3M7CgogdWludDMyX3Qgcl9zZWVkX3ZhbHVlOwogdWludDMyX3QgYl9z ZWVkX3ZhbHVlOwogdWludDMyX3QgZ19zZWVkX3ZhbHVlOwogZW51bSBkY19waXhlbF9lbmNvZGlu ZyBwaXhlbF9lbmNvZGluZzsKfTsKCmVudW0gd2lkZV9nYW11dF9yZWdhbW1hX21vZGUgewoKIFdJ REVfR0FNVVRfUkVHQU1NQV9NT0RFX0dSQVBISUNTX0JZUEFTUywKCiBXSURFX0dBTVVUX1JFR0FN TUFfTU9ERV9HUkFQSElDU19TUkdCMjQsCgogV0lERV9HQU1VVF9SRUdBTU1BX01PREVfR1JBUEhJ Q1NfWFlZQ0MyMiwKCiBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19NQVRSSVhfQSwK CiBXSURFX0dBTVVUX1JFR0FNTUFfTU9ERV9HUkFQSElDU19NQVRSSVhfQiwKCiBXSURFX0dBTVVU X1JFR0FNTUFfTU9ERV9PVkxfQllQQVNTLAoKIFdJREVfR0FNVVRfUkVHQU1NQV9NT0RFX09WTF9T UkdCMjQsCgogV0lERV9HQU1VVF9SRUdBTU1BX01PREVfT1ZMX1hZWUNDMjIsCgogV0lERV9HQU1V VF9SRUdBTU1BX01PREVfT1ZMX01BVFJJWF9BLAoKIFdJREVfR0FNVVRfUkVHQU1NQV9NT0RFX09W TF9NQVRSSVhfQgp9OwoKc3RydWN0IGdhbW1hX3BpeGVsIHsKIHN0cnVjdCBmaXhlZDMxXzMyIHI7 CiBzdHJ1Y3QgZml4ZWQzMV8zMiBnOwogc3RydWN0IGZpeGVkMzFfMzIgYjsKfTsKCmVudW0gY2hh bm5lbF9uYW1lIHsKIENIQU5ORUxfTkFNRV9SRUQsCiBDSEFOTkVMX05BTUVfR1JFRU4sCiBDSEFO TkVMX05BTUVfQkxVRQp9OwoKc3RydWN0IGN1c3RvbV9mbG9hdF9mb3JtYXQgewogdWludDMyX3Qg bWFudGlzc2FfYml0czsKIHVpbnQzMl90IGV4cG9uZW50YV9iaXRzOwogYm9vbCBzaWduOwp9OwoK c3RydWN0IGN1c3RvbV9mbG9hdF92YWx1ZSB7CiB1aW50MzJfdCBtYW50aXNzYTsKIHVpbnQzMl90 IGV4cG9uZW50YTsKIHVpbnQzMl90IHZhbHVlOwogYm9vbCBuZWdhdGl2ZTsKfTsKCnN0cnVjdCBo d194X3BvaW50IHsKIHVpbnQzMl90IGN1c3RvbV9mbG9hdF94Owogc3RydWN0IGZpeGVkMzFfMzIg eDsKIHN0cnVjdCBmaXhlZDMxXzMyIHJlZ2FtbWFfeV9yZWQ7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBy ZWdhbW1hX3lfZ3JlZW47CiBzdHJ1Y3QgZml4ZWQzMV8zMiByZWdhbW1hX3lfYmx1ZTsKCn07Cgpz dHJ1Y3QgcHdsX2Zsb2F0X2RhdGFfZXggewogc3RydWN0IGZpeGVkMzFfMzIgcjsKIHN0cnVjdCBm aXhlZDMxXzMyIGc7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBiOwogc3RydWN0IGZpeGVkMzFfMzIgZGVs dGFfcjsKIHN0cnVjdCBmaXhlZDMxXzMyIGRlbHRhX2c7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBkZWx0 YV9iOwp9OwoKZW51bSBod19wb2ludF9wb3NpdGlvbiB7CgogSFdfUE9JTlRfUE9TSVRJT05fTUlE RExFLAoKIEhXX1BPSU5UX1BPU0lUSU9OX0xFRlQsCgogSFdfUE9JTlRfUE9TSVRJT05fUklHSFQK fTsKCnN0cnVjdCBnYW1tYV9wb2ludCB7CiBpbnQzMl90IGxlZnRfaW5kZXg7CiBpbnQzMl90IHJp Z2h0X2luZGV4OwogZW51bSBod19wb2ludF9wb3NpdGlvbiBwb3M7CiBzdHJ1Y3QgZml4ZWQzMV8z MiBjb2VmZjsKfTsKCnN0cnVjdCBwaXhlbF9nYW1tYV9wb2ludCB7CiBzdHJ1Y3QgZ2FtbWFfcG9p bnQgcjsKIHN0cnVjdCBnYW1tYV9wb2ludCBnOwogc3RydWN0IGdhbW1hX3BvaW50IGI7Cn07Cgpz dHJ1Y3QgZ2FtbWFfY29lZmZpY2llbnRzIHsKIHN0cnVjdCBmaXhlZDMxXzMyIGEwWzNdOwogc3Ry dWN0IGZpeGVkMzFfMzIgYTFbM107CiBzdHJ1Y3QgZml4ZWQzMV8zMiBhMlszXTsKIHN0cnVjdCBm aXhlZDMxXzMyIGEzWzNdOwogc3RydWN0IGZpeGVkMzFfMzIgdXNlcl9nYW1tYVszXTsKIHN0cnVj dCBmaXhlZDMxXzMyIHVzZXJfY29udHJhc3Q7CiBzdHJ1Y3QgZml4ZWQzMV8zMiB1c2VyX2JyaWdo dG5lc3M7Cn07CgpzdHJ1Y3QgcHdsX2Zsb2F0X2RhdGEgewogc3RydWN0IGZpeGVkMzFfMzIgcjsK IHN0cnVjdCBmaXhlZDMxXzMyIGc7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBiOwp9OwoKc3RydWN0IG1w Y190cmVlX2NmZyB7CiBpbnQgbnVtX3BpcGVzOwogaW50IGRwcFs2XTsKIGludCBtcGNjWzZdOwp9 OwoKc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3Igewogc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKIHVpbnQzMl90IGluc3Q7CiBzdHJ1Y3QgcHdsX3BhcmFtcyByZWdhbW1hX3BhcmFtczsKIHN0 cnVjdCBtcGNfdHJlZSBtcGNfdHJlZV9wYXJhbXM7CiBib29sIG1wY2NfZGlzY29ubmVjdF9wZW5k aW5nWzZdOwogY29uc3Qgc3RydWN0IG9wcF9mdW5jcyAqZnVuY3M7CiB1aW50MzJfdCBkeW5fZXhw YW5zaW9uOwp9OwoKZW51bSBmbXRfc3RlcmVvX2FjdGlvbiB7CiBGTVRfU1RFUkVPX0FDVElPTl9F TkFCTEUgPSAwLAogRk1UX1NURVJFT19BQ1RJT05fRElTQUJMRSwKIEZNVF9TVEVSRU9fQUNUSU9O X1VQREFURV9QT0xBUklUWQp9OwoKc3RydWN0IG9wcF9ncnBoX2NzY19hZGp1c3RtZW50IHsKCiBl bnVtIGRjX2NvbG9yX3NwYWNlIGNfc3BhY2U7CiBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2Rl cHRoOwogZW51bSBncmFwaGljc19jc2NfYWRqdXN0X3R5cGUgY3NjX2FkanVzdF90eXBlOwogaW50 MzJfdCBhZGp1c3RfZGl2aWRlcjsKIGludDMyX3QgZ3JwaF9jb250OwogaW50MzJfdCBncnBoX3Nh dDsKIGludDMyX3QgZ3JwaF9icmlnaHQ7CiBpbnQzMl90IGdycGhfaHVlOwp9OwoKCgpzdHJ1Y3Qg aHdfYWRqdXN0bWVudF9yYW5nZSB7CiBpbnQzMl90IGh3X2RlZmF1bHQ7CiBpbnQzMl90IG1pbjsK IGludDMyX3QgbWF4OwogaW50MzJfdCBzdGVwOwogdWludDMyX3QgZGl2aWRlcjsKfTsKCmVudW0g b3ZsX2NzY19hZGp1c3RfaXRlbSB7CiBPVkVSTEFZX0JSSUdIVE5FU1MgPSAwLAogT1ZFUkxBWV9H QU1NQSwKIE9WRVJMQVlfQ09OVFJBU1QsCiBPVkVSTEFZX1NBVFVSQVRJT04sCiBPVkVSTEFZX0hV RSwKIE9WRVJMQVlfQUxQSEEsCiBPVkVSTEFZX0FMUEhBX1BFUl9QSVgsCiBPVkVSTEFZX0NPTE9S X1RFTVBFUkFUVVJFCn07CgplbnVtIG9wcGJ1Zl9kaXNwbGF5X3NlZ21lbnRhdGlvbiB7CiBPUFBC VUZfRElTUExBWV9TRUdNRU5UQVRJT05fMV9TRUdNRU5UID0gMCwKIE9QUEJVRl9ESVNQTEFZX1NF R01FTlRBVElPTl8yX1NFR01FTlQgPSAxLAogT1BQQlVGX0RJU1BMQVlfU0VHTUVOVEFUSU9OXzRf U0VHTUVOVCA9IDIsCiBPUFBCVUZfRElTUExBWV9TRUdNRU5UQVRJT05fNF9TRUdNRU5UX1NQTElU X0xFRlQgPSAzLAogT1BQQlVGX0RJU1BMQVlfU0VHTUVOVEFUSU9OXzRfU0VHTUVOVF9TUExJVF9S SUdIVCA9IDQKfTsKCnN0cnVjdCBvcHBidWZfcGFyYW1zIHsKIHVpbnQzMl90IGFjdGl2ZV93aWR0 aDsKIGVudW0gb3BwYnVmX2Rpc3BsYXlfc2VnbWVudGF0aW9uIG1zb19zZWdtZW50YXRpb247CiB1 aW50MzJfdCBtc29fb3ZlcmxhcF9waXhlbF9udW07CiB1aW50MzJfdCBwaXhlbF9yZXBldGl0aW9u OwogdWludDMyX3QgbnVtX3NlZ21lbnRfcGFkZGVkX3BpeGVsczsKfTsKCnN0cnVjdCBvcHBfZnVu Y3MgewoKCgoKIHZvaWQgKCpvcHBfcHJvZ3JhbV9mbXQpKAogICBzdHJ1Y3Qgb3V0cHV0X3BpeGVs X3Byb2Nlc3NvciAqb3BwLAogICBzdHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMgKmZt dF9iaXRfZGVwdGgsCiAgIHN0cnVjdCBjbGFtcGluZ19hbmRfcGl4ZWxfZW5jb2RpbmdfcGFyYW1z ICpjbGFtcGluZyk7Cgogdm9pZCAoKm9wcF9zZXRfZHluX2V4cGFuc2lvbikoCiAgc3RydWN0IG91 dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKICBlbnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yX3Nw LAogIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZHB0aCwKICBlbnVtIHNpZ25hbF90eXBlIHNp Z25hbCk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX2JpdF9kZXB0aF9yZWR1Y3Rpb24pKAogIHN0cnVj dCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHAsCiAgY29uc3Qgc3RydWN0IGJpdF9kZXB0aF9y ZWR1Y3Rpb25fcGFyYW1zICpwYXJhbXMpOwoKCiB2b2lkICgqb3BwX2dldF91bmRlcmxheV9hZGp1 c3RtZW50X3JhbmdlKSgKICAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKICAg ZW51bSBvdmxfY3NjX2FkanVzdF9pdGVtIG92ZXJsYXlfYWRqdXN0X2l0ZW0sCiAgIHN0cnVjdCBo d19hZGp1c3RtZW50X3JhbmdlICpyYW5nZSk7Cgogdm9pZCAoKm9wcF9kZXN0cm95KShzdHJ1Y3Qg b3V0cHV0X3BpeGVsX3Byb2Nlc3NvciAqKm9wcCk7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX3N0ZXJl bykoCiAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKICBib29sIGVuYWJsZSwK ICBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZyk7Cgogdm9pZCAoKm9wcF9waXBl X2Nsb2NrX2NvbnRyb2wpKAogICBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3Byb2Nlc3NvciAqb3BwLAog ICBib29sIGVuYWJsZSk7Cgogdm9pZCAoKm9wcF9zZXRfZGlzcF9wYXR0ZXJuX2dlbmVyYXRvciko CiAgIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHAsCiAgIGVudW0gY29udHJvbGxl cl9kcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAogICBlbnVtIGNvbnRyb2xsZXJfZHBfY29s b3Jfc3BhY2UgY29sb3Jfc3BhY2UsCiAgIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGgs CiAgIGNvbnN0IHN0cnVjdCB0Z19jb2xvciAqc29saWRfY29sb3IsCiAgIGludCB3aWR0aCwKICAg aW50IGhlaWdodCk7CgogYm9vbCAoKmRwZ19pc19ibGFua2VkKSgKICAgc3RydWN0IG91dHB1dF9w aXhlbF9wcm9jZXNzb3IgKm9wcCk7Cgogdm9pZCAoKm9wcF9kcGdfc2V0X2JsYW5rX2NvbG9yKSgK ICAgc3RydWN0IG91dHB1dF9waXhlbF9wcm9jZXNzb3IgKm9wcCwKICAgY29uc3Qgc3RydWN0IHRn X2NvbG9yICpjb2xvcik7Cgogdm9pZCAoKm9wcF9wcm9ncmFtX2xlZnRfZWRnZV9leHRyYV9waXhl bCkoCiAgIHN0cnVjdCBvdXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHAsCiAgIGJvb2wgY291bnQp OwoKfTsKIyAzNiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Rj LmgiIDIKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2lu Yy9od19zZXF1ZW5jZXIuaCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvaW5jL2h3X3NlcXVlbmNlci5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY2xvY2tfc291cmNlLmgiIDEKIyAzMCAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jbG9ja19zb3VyY2UuaCIK IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncnBo X29iamVjdF9pZC5oIiAxCiMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY2xvY2tfc291cmNlLmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIiAxCiMgMzAgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2Jpb3NfcGFyc2Vy X3R5cGVzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RtX3NlcnZpY2VzLmgiIDEKIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCIgMQojIDMyICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90cmFj ZS5oIgojIDEgIi4vaW5jbHVkZS9saW51eC90cmFjZXBvaW50LmgiIDEKIyAyMyAiLi9pbmNsdWRl L2xpbnV4L3RyYWNlcG9pbnQuaCIKc3RydWN0IG1vZHVsZTsKc3RydWN0IHRyYWNlcG9pbnQ7CnN0 cnVjdCBub3RpZmllcl9ibG9jazsKCnN0cnVjdCB0cmFjZV9ldmFsX21hcCB7CiBjb25zdCBjaGFy ICpzeXN0ZW07CiBjb25zdCBjaGFyICpldmFsX3N0cmluZzsKIHVuc2lnbmVkIGxvbmcgZXZhbF92 YWx1ZTsKfTsKCgoKZXh0ZXJuIHN0cnVjdCBzcmN1X3N0cnVjdCB0cmFjZXBvaW50X3NyY3U7Cgpl eHRlcm4gaW50CnRyYWNlcG9pbnRfcHJvYmVfcmVnaXN0ZXIoc3RydWN0IHRyYWNlcG9pbnQgKnRw LCB2b2lkICpwcm9iZSwgdm9pZCAqZGF0YSk7CmV4dGVybiBpbnQKdHJhY2Vwb2ludF9wcm9iZV9y ZWdpc3Rlcl9wcmlvKHN0cnVjdCB0cmFjZXBvaW50ICp0cCwgdm9pZCAqcHJvYmUsIHZvaWQgKmRh dGEsCiAgICAgICAgICBpbnQgcHJpbyk7CmV4dGVybiBpbnQKdHJhY2Vwb2ludF9wcm9iZV91bnJl Z2lzdGVyKHN0cnVjdCB0cmFjZXBvaW50ICp0cCwgdm9pZCAqcHJvYmUsIHZvaWQgKmRhdGEpOwpl eHRlcm4gdm9pZApmb3JfZWFjaF9rZXJuZWxfdHJhY2Vwb2ludCh2b2lkICgqZmN0KShzdHJ1Y3Qg dHJhY2Vwb2ludCAqdHAsIHZvaWQgKnByaXYpLAogIHZvaWQgKnByaXYpOwoKCnN0cnVjdCB0cF9t b2R1bGUgewogc3RydWN0IGxpc3RfaGVhZCBsaXN0Owogc3RydWN0IG1vZHVsZSAqbW9kOwp9OwoK Ym9vbCB0cmFjZV9tb2R1bGVfaGFzX2JhZF90YWludChzdHJ1Y3QgbW9kdWxlICptb2QpOwpleHRl cm4gaW50IHJlZ2lzdGVyX3RyYWNlcG9pbnRfbW9kdWxlX25vdGlmaWVyKHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmIpOwpleHRlcm4gaW50IHVucmVnaXN0ZXJfdHJhY2Vwb2ludF9tb2R1bGVfbm90 aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CiMgODAgIi4vaW5jbHVkZS9saW51eC90 cmFjZXBvaW50LmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVu dF9mdW5jdGlvbikpIHZvaWQgdHJhY2Vwb2ludF9zeW5jaHJvbml6ZV91bnJlZ2lzdGVyKHZvaWQp CnsKIHN5bmNocm9uaXplX3NyY3UoJnRyYWNlcG9pbnRfc3JjdSk7CiBzeW5jaHJvbml6ZV9yY3Uo KTsKfQoKCgoKCgpleHRlcm4gaW50IHN5c2NhbGxfcmVnZnVuYyh2b2lkKTsKZXh0ZXJuIHZvaWQg c3lzY2FsbF91bnJlZ2Z1bmModm9pZCk7CiMgMTAxICIuL2luY2x1ZGUvbGludXgvdHJhY2Vwb2lu dC5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBzdHJ1Y3QgdHJhY2Vwb2ludCAqdHJhY2Vwb2ludF9wdHJfZGVyZWYodHJhY2Vwb2ludF9w dHJfdCAqcCkKewogcmV0dXJuIG9mZnNldF90b19wdHIocCk7Cn0KIyAzMyAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCIg MgoKZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJlZzsg c3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRl X18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkg dm9pZCB0cmFjZV9hbWRncHVfZGNfcnJlZyh1bnNpZ25lZCBsb25nICpyZWFkX2NvdW50LCB1aW50 MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSB7IGlmIChzdGF0aWNfa2V5X2ZhbHNlKCZfX3RyYWNl cG9pbnRfYW1kZ3B1X2RjX3JyZWcua2V5KSkgZG8geyBzdHJ1Y3QgdHJhY2Vwb2ludF9mdW5jICpp dF9mdW5jX3B0cjsgdm9pZCAqaXRfZnVuYzsgdm9pZCAqX19kYXRhOyBpbnQgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9faWR4ID0gMDsgaWYgKCEoY3B1bWFza190ZXN0X2NwdSgoKHsgdHlw ZW9mKGNwdV9udW1iZXIpIHBzY3JfcmV0X187IGRvIHsgY29uc3Qgdm9pZCAqX192cHBfdmVyaWZ5 ID0gKHR5cGVvZigoJihjcHVfbnVtYmVyKSkgKyAwKSkoKHZvaWQgKikwKTsgKHZvaWQpX192cHBf dmVyaWZ5OyB9IHdoaWxlICgwKTsgc3dpdGNoKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6 IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNp emVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIi Z3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIp KTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsg Y2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIg OiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFz bSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBm b19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNw dV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgMjogcHNjcl9yZXRfXyA9ICh7 IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIp KSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAy OiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xh dGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRf XykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92 IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAo Y3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9f cmV0X187IH0pOyBicmVhazsgY2FzZSA0OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1i ZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20g dm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAo Im1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAi bSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAi IiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251 bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFr OyBjYXNlIDg6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBz d2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIg IjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBj YXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9f YmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFk X3NpemVfY2FsbF9wYXJhbWV0ZXIoKTsgYnJlYWs7IH0gcHNjcl9yZXRfXzsgfSkpLCAoKGNvbnN0 IHN0cnVjdCBjcHVtYXNrICopJl9fY3B1X29ubGluZV9tYXNrKSkpKSByZXR1cm47ICh7IGludCBf X3JldF93YXJuX29uID0gISEoMCAmJiAocHJlZW1wdF9jb3VudCgpICYgKCgoMVVMIDw8ICgxKSkt MSkgPDwgKCgoMCArIDgpICsgOCkgKyA0KSkpKTsgaWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19y ZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNtIF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAi LmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hzZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxu IiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxu IiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0 LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGluZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVn X2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVjM1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIg KCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVf ZG1fdHJhY2UuaCIpLCAiaSIgKDM0KSwgImkiICgoMSA8PCAwKXwoKDEgPDwgMSkgfCAoKDkpIDw8 IDgpKSksICJpIiAoc2l6ZW9mKHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBh c20gdm9sYXRpbGUoIiVjMDpcblx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxu XHQiICIubG9uZyAlYzBiIC0gLlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDQ0KSk7 IH0pOyB9IHdoaWxlICgwKTsgX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7 IH0pOyBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyBpZiAoMCkgeyBfX2lk eCA9IHNyY3VfcmVhZF9sb2NrX25vdHJhY2UoJnRyYWNlcG9pbnRfc3JjdSk7IHJjdV9pcnFfZW50 ZXJfaXJxc29uKCk7IH0gaXRfZnVuY19wdHIgPSAoeyB0eXBlb2YoKCZfX3RyYWNlcG9pbnRfYW1k Z3B1X2RjX3JyZWcpLT5mdW5jcykgX19fX19fX19wMSA9ICh7IHVuaW9uIHsgdHlwZW9mKCgmX190 cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnKS0+ZnVuY3MpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBf X3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3Jy ZWcpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJl ZyktPmZ1bmNzKSk7IGVsc2UgX19yZWFkX29uY2Vfc2l6ZV9ub2NoZWNrKCYoKCZfX3RyYWNlcG9p bnRfYW1kZ3B1X2RjX3JyZWcpLT5mdW5jcyksIF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2lu dF9hbWRncHVfZGNfcnJlZyktPmZ1bmNzKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3ZhbDsg fSk7ICgodHlwZW9mKCooJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJlZyktPmZ1bmNzKSAqKShf X19fX19fX3AxKSk7IH0pOyBpZiAoaXRfZnVuY19wdHIpIHsgZG8geyBpdF9mdW5jID0gKGl0X2Z1 bmNfcHRyKS0+ZnVuYzsgX19kYXRhID0gKGl0X2Z1bmNfcHRyKS0+ZGF0YTsgKCh2b2lkKCopKHZv aWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqcmVhZF9jb3VudCwgdWludDMyX3QgcmVnLCB1aW50 MzJfdCB2YWx1ZSkpKGl0X2Z1bmMpKShfX2RhdGEsIHJlYWRfY291bnQsIHJlZywgdmFsdWUpOyB9 IHdoaWxlICgoKytpdF9mdW5jX3B0ciktPmZ1bmMpOyB9IGlmICgwKSB7IHJjdV9pcnFfZXhpdF9p cnFzb24oKTsgc3JjdV9yZWFkX3VubG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3NyY3UsIF9faWR4 KTsgfSBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsg aWYgKDAgJiYgKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVvZihjcHVfbnVtYmVyKSBwc2NyX3Jl dF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X251bWJl cikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3 aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBwc2NyX3JldF9fID0gKHsgdHlwZW9m KGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2Fz ZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgi bW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsg fSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZv X3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGls ZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykg OiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAi dyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1 X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdz IiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7 IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2Ug NDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAo c2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUl IiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJl cikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAi JSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFr OyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODog YXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVy Y3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSA4OiBwc2NyX3JldF9fID0g KHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJl cikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEi IiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNl IDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9 ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZv bGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3Jl dF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJt b3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBm b19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7 IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqKSZfX2Nw dV9vbmxpbmVfbWFzaykpKSkgeyByY3VfcmVhZF9sb2NrX3NjaGVkX25vdHJhY2UoKTsgKHsgdHlw ZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkgKl9fX19fX19fcDEgPSAo dHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkgKikoeyB1bmlvbiB7 IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLmZ1bmNzKSkgX192YWw7IGNoYXIg X19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigoX190cmFjZXBvaW50X2Ft ZGdwdV9kY19ycmVnLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFjZXBvaW50X2FtZGdw dV9kY19ycmVnLmZ1bmNzKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChfX3Ry YWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSwgX191Ll9fYywgc2l6ZW9mKChfX3RyYWNl cG9pbnRfYW1kZ3B1X2RjX3JyZWcuZnVuY3MpKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3Zh bDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihfX3RyYWNlcG9pbnRfYW1kZ3B1 X2RjX3JyZWcuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3VfcmVhZF91bmxvY2tfc2No ZWRfbm90cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdwdV9kY19ycmVnKHZvaWQg KCpwcm9iZSkodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nICpyZWFkX2NvdW50LCB1aW50MzJf dCByZWcsIHVpbnQzMl90IHZhbHVlKSwgdm9pZCAqZGF0YSkgeyByZXR1cm4gdHJhY2Vwb2ludF9w cm9iZV9yZWdpc3RlcigmX190cmFjZXBvaW50X2FtZGdwdV9kY19ycmVnLCAodm9pZCAqKXByb2Jl LCBkYXRhKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRf ZnVuY3Rpb24pKSBpbnQgcmVnaXN0ZXJfdHJhY2VfcHJpb19hbWRncHVfZGNfcnJlZyh2b2lkICgq cHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqcmVhZF9jb3VudCwgdWludDMyX3Qg cmVnLCB1aW50MzJfdCB2YWx1ZSksIHZvaWQgKmRhdGEsIGludCBwcmlvKSB7IHJldHVybiB0cmFj ZXBvaW50X3Byb2JlX3JlZ2lzdGVyX3ByaW8oJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJlZywg KHZvaWQgKilwcm9iZSwgZGF0YSwgcHJpbyk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHVucmVnaXN0ZXJfdHJhY2VfYW1kZ3B1 X2RjX3JyZWcodm9pZCAoKnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgKnJlYWRf Y291bnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpLCB2b2lkICpkYXRhKSB7IHJldHVy biB0cmFjZXBvaW50X3Byb2JlX3VucmVnaXN0ZXIoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcnJl ZywgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChf X2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9f KChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja190cmFjZV9jYWxsYmFja190eXBl X2FtZGdwdV9kY19ycmVnKHZvaWQgKCpjYikodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nICpy ZWFkX2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbHVlKSkgeyB9IHN0YXRpYyBpbmxp bmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNl ZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdHJhY2Vf YW1kZ3B1X2RjX3JyZWdfZW5hYmxlZCh2b2lkKSB7IHJldHVybiBzdGF0aWNfa2V5X2ZhbHNlKCZf X3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3JyZWcua2V5KTsgfQojIDQ5ICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV90cmFjZS5oIgogOwoK ZXh0ZXJuIHN0cnVjdCB0cmFjZXBvaW50IF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZzsgc3Rh dGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9p ZCB0cmFjZV9hbWRncHVfZGNfd3JlZyh1bnNpZ25lZCBsb25nICp3cml0ZV9jb3VudCwgdWludDMy X3QgcmVnLCB1aW50MzJfdCB2YWx1ZSkgeyBpZiAoc3RhdGljX2tleV9mYWxzZSgmX190cmFjZXBv aW50X2FtZGdwdV9kY193cmVnLmtleSkpIGRvIHsgc3RydWN0IHRyYWNlcG9pbnRfZnVuYyAqaXRf ZnVuY19wdHI7IHZvaWQgKml0X2Z1bmM7IHZvaWQgKl9fZGF0YTsgaW50IF9fYXR0cmlidXRlX18o KF9fdW51c2VkX18pKSBfX2lkeCA9IDA7IGlmICghKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVv ZihjcHVfbnVtYmVyKSBwc2NyX3JldF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9 ICh0eXBlb2YoKCYoY3B1X251bWJlcikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3Zl cmlmeTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBw c2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXpl b2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdz IiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7 IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNh c2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDog Ij1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20g dm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9f cmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVf c2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0 eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkg eyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjog YXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRp bGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIg InEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3Jl dF9fOyB9KTsgYnJlYWs7IGNhc2UgNDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVy KSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZv bGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3Jl dF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJt b3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIl JSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1i ZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVh azsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsg Y2FzZSA4OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dp dGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJi ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVf bnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3Mi IjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsg YnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIx IiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2Fz ZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2Jh ZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9z aXplX2NhbGxfcGFyYW1ldGVyKCk7IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBz dHJ1Y3QgY3B1bWFzayAqKSZfX2NwdV9vbmxpbmVfbWFzaykpKSkgcmV0dXJuOyAoeyBpbnQgX19y ZXRfd2Fybl9vbiA9ICEhKDAgJiYgKHByZWVtcHRfY291bnQoKSAmICgoKDFVTCA8PCAoMSkpLTEp IDw8ICgoKDAgKyA4KSArIDgpICsgNCkpKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0 X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5i eXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIg IjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIg Ilx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53 b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19l bnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgi ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2Rt X3RyYWNlLmgiKSwgImkiICg1MSksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4 KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNt IHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0 IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICg0NSkpOyB9 KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9 KTsgX19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKDApIHsgX19pZHgg PSBzcmN1X3JlYWRfbG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3NyY3UpOyByY3VfaXJxX2VudGVy X2lycXNvbigpOyB9IGl0X2Z1bmNfcHRyID0gKHsgdHlwZW9mKCgmX190cmFjZXBvaW50X2FtZGdw dV9kY193cmVnKS0+ZnVuY3MpIF9fX19fX19fcDEgPSAoeyB1bmlvbiB7IHR5cGVvZigoJl9fdHJh Y2Vwb2ludF9hbWRncHVfZGNfd3JlZyktPmZ1bmNzKSBfX3ZhbDsgY2hhciBfX2NbMV07IH0gX191 OyBpZiAoMSkgX19yZWFkX29uY2Vfc2l6ZSgmKCgmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVn KS0+ZnVuY3MpLCBfX3UuX19jLCBzaXplb2YoKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcp LT5mdW5jcykpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKCgmX190cmFjZXBvaW50 X2FtZGdwdV9kY193cmVnKS0+ZnVuY3MpLCBfX3UuX19jLCBzaXplb2YoKCZfX3RyYWNlcG9pbnRf YW1kZ3B1X2RjX3dyZWcpLT5mdW5jcykpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0p OyAoKHR5cGVvZigqKCZfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcpLT5mdW5jcykgKikoX19f X19fX19wMSkpOyB9KTsgaWYgKGl0X2Z1bmNfcHRyKSB7IGRvIHsgaXRfZnVuYyA9IChpdF9mdW5j X3B0ciktPmZ1bmM7IF9fZGF0YSA9IChpdF9mdW5jX3B0ciktPmRhdGE7ICgodm9pZCgqKSh2b2lk ICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgKndyaXRlX2NvdW50LCB1aW50MzJfdCByZWcsIHVpbnQz Ml90IHZhbHVlKSkoaXRfZnVuYykpKF9fZGF0YSwgd3JpdGVfY291bnQsIHJlZywgdmFsdWUpOyB9 IHdoaWxlICgoKytpdF9mdW5jX3B0ciktPmZ1bmMpOyB9IGlmICgwKSB7IHJjdV9pcnFfZXhpdF9p cnFzb24oKTsgc3JjdV9yZWFkX3VubG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3NyY3UsIF9faWR4 KTsgfSBfX2FzbV9fIF9fdm9sYXRpbGVfXygiIjogOiA6Im1lbW9yeSIpOyB9IHdoaWxlICgwKTsg aWYgKDAgJiYgKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVvZihjcHVfbnVtYmVyKSBwc2NyX3Jl dF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0eXBlb2YoKCYoY3B1X251bWJl cikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3ZlcmlmeTsgfSB3aGlsZSAoMCk7IHN3 aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBwc2NyX3JldF9fID0gKHsgdHlwZW9m KGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2Fz ZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgi bW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJt IiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsg fSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZv X3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGls ZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykg OiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAi dyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1 X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdz IiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7 IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAi MSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRl ZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2Ug NDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAo c2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUl IiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJl cikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAi JSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFr OyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUw IiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODog YXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVy Y3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2FzZSA4OiBwc2NyX3JldF9fID0g KHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJl cikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEi IiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNl IDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9 ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZv bGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3Jl dF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJt b3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBm b19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXplX2NhbGxfcGFyYW1ldGVyKCk7 IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBzdHJ1Y3QgY3B1bWFzayAqKSZfX2Nw dV9vbmxpbmVfbWFzaykpKSkgeyByY3VfcmVhZF9sb2NrX3NjaGVkX25vdHJhY2UoKTsgKHsgdHlw ZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmZ1bmNzKSkgKl9fX19fX19fcDEgPSAo dHlwZW9mKCooX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmZ1bmNzKSkgKikoeyB1bmlvbiB7 IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmZ1bmNzKSkgX192YWw7IGNoYXIg X19jWzFdOyB9IF9fdTsgaWYgKDEpIF9fcmVhZF9vbmNlX3NpemUoJigoX190cmFjZXBvaW50X2Ft ZGdwdV9kY193cmVnLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFjZXBvaW50X2FtZGdw dV9kY193cmVnLmZ1bmNzKSkpOyBlbHNlIF9fcmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChfX3Ry YWNlcG9pbnRfYW1kZ3B1X2RjX3dyZWcuZnVuY3MpKSwgX191Ll9fYywgc2l6ZW9mKChfX3RyYWNl cG9pbnRfYW1kZ3B1X2RjX3dyZWcuZnVuY3MpKSk7IGRvIHsgfSB3aGlsZSAoMCk7IF9fdS5fX3Zh bDsgfSk7IGRvIHsgfSB3aGlsZSAoMCk7IDsgKCh0eXBlb2YoKihfX3RyYWNlcG9pbnRfYW1kZ3B1 X2RjX3dyZWcuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3VfcmVhZF91bmxvY2tfc2No ZWRfbm90cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxp bmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0 cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdwdV9kY193cmVnKHZvaWQg KCpwcm9iZSkodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25nICp3cml0ZV9jb3VudCwgdWludDMy X3QgcmVnLCB1aW50MzJfdCB2YWx1ZSksIHZvaWQgKmRhdGEpIHsgcmV0dXJuIHRyYWNlcG9pbnRf cHJvYmVfcmVnaXN0ZXIoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfd3JlZywgKHZvaWQgKilwcm9i ZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX3ByaW9fYW1kZ3B1X2RjX3dyZWcodm9pZCAo KnByb2JlKSh2b2lkICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgKndyaXRlX2NvdW50LCB1aW50MzJf dCByZWcsIHVpbnQzMl90IHZhbHVlKSwgdm9pZCAqZGF0YSwgaW50IHByaW8pIHsgcmV0dXJuIHRy YWNlcG9pbnRfcHJvYmVfcmVnaXN0ZXJfcHJpbygmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVn LCAodm9pZCAqKXByb2JlLCBkYXRhLCBwcmlvKTsgfSBzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRl X18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmli dXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQgdW5yZWdpc3Rlcl90cmFjZV9hbWRn cHVfZGNfd3JlZyh2b2lkICgqcHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyAqd3Jp dGVfY291bnQsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsdWUpLCB2b2lkICpkYXRhKSB7IHJl dHVybiB0cmFjZXBvaW50X3Byb2JlX3VucmVnaXN0ZXIoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNf d3JlZywgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja190cmFjZV9jYWxsYmFja190 eXBlX2FtZGdwdV9kY193cmVnKHZvaWQgKCpjYikodm9pZCAqX19kYXRhLCB1bnNpZ25lZCBsb25n ICp3cml0ZV9jb3VudCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWx1ZSkpIHsgfSBzdGF0aWMg aW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191 bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIHRy YWNlX2FtZGdwdV9kY193cmVnX2VuYWJsZWQodm9pZCkgeyByZXR1cm4gc3RhdGljX2tleV9mYWxz ZSgmX190cmFjZXBvaW50X2FtZGdwdV9kY193cmVnLmtleSk7IH0KIyA2NiAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fdHJhY2UuaCIK IDsKCgpleHRlcm4gc3RydWN0IHRyYWNlcG9pbnQgX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJm b3JtYW5jZTsgc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9f YXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1 bmN0aW9uKSkgdm9pZCB0cmFjZV9hbWRncHVfZGNfcGVyZm9ybWFuY2UodW5zaWduZWQgbG9uZyBy ZWFkX2NvdW50LCB1bnNpZ25lZCBsb25nIHdyaXRlX2NvdW50LCB1bnNpZ25lZCBsb25nICpsYXN0 X3JlYWQsIHVuc2lnbmVkIGxvbmcgKmxhc3Rfd3JpdGUsIGNvbnN0IGNoYXIgKmZ1bmMsIHVuc2ln bmVkIGludCBsaW5lKSB7IGlmIChzdGF0aWNfa2V5X2ZhbHNlKCZfX3RyYWNlcG9pbnRfYW1kZ3B1 X2RjX3BlcmZvcm1hbmNlLmtleSkpIGRvIHsgc3RydWN0IHRyYWNlcG9pbnRfZnVuYyAqaXRfZnVu Y19wdHI7IHZvaWQgKml0X2Z1bmM7IHZvaWQgKl9fZGF0YTsgaW50IF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSBfX2lkeCA9IDA7IGlmICghKGNwdW1hc2tfdGVzdF9jcHUoKCh7IHR5cGVvZihj cHVfbnVtYmVyKSBwc2NyX3JldF9fOyBkbyB7IGNvbnN0IHZvaWQgKl9fdnBwX3ZlcmlmeSA9ICh0 eXBlb2YoKCYoY3B1X251bWJlcikpICsgMCkpKCh2b2lkICopMCk7ICh2b2lkKV9fdnBwX3Zlcmlm eTsgfSB3aGlsZSAoMCk7IHN3aXRjaChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBwc2Ny X3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNoIChzaXplb2Yo Y3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIiJSUiImdzIiI6 IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJy ZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoiICIlIiAiMSIi LCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2Ug NDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1y IiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4OiBhc20gdm9s YXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0 X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9wZXJjcHVfc2l6 ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDI6IHBzY3JfcmV0X18gPSAoeyB0eXBl b2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVvZihjcHVfbnVtYmVyKSkgeyBj YXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6 ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgMjogYXNt IHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZv X3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA0OiBhc20gdm9sYXRpbGUg KCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDog Im0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2b2xhdGlsZSAoIm1vdiIgInEg IiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9u dW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9zaXplKCk7IH0gcGZvX3JldF9f OyB9KTsgYnJlYWs7IGNhc2UgNDogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVfbnVtYmVyKSBw Zm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogYXNtIHZvbGF0 aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAocGZvX3JldF9f KSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRpbGUgKCJtb3Yi ICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChj cHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImwgIiIlJSIi Z3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIp KTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJncyIiOiIgIiUi ICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsg ZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBicmVhazsgY2Fz ZSA4OiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRfXzsgc3dpdGNo IChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJtb3YiICJiICIi JSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVt YmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIlJSIiZ3MiIjoi ICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJl YWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIgIiUiICIxIiIs JTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSA4 OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIi IChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9w ZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBkZWZhdWx0OiBfX2JhZF9zaXpl X2NhbGxfcGFyYW1ldGVyKCk7IGJyZWFrOyB9IHBzY3JfcmV0X187IH0pKSwgKChjb25zdCBzdHJ1 Y3QgY3B1bWFzayAqKSZfX2NwdV9vbmxpbmVfbWFzaykpKSkgcmV0dXJuOyAoeyBpbnQgX19yZXRf d2Fybl9vbiA9ICEhKDAgJiYgKHByZWVtcHRfY291bnQoKSAmICgoKDFVTCA8PCAoMSkpLTEpIDw8 ICgoKDAgKyA4KSArIDgpICsgNCkpKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dh cm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRl IDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6 XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0 IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3Jk ICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRy eTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3Ry YWNlLmgiKSwgImkiICg2OSksICJpIiAoKDEgPDwgMCl8KCgxIDw8IDEpIHwgKCg5KSA8PCA4KSkp LCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkpOyB9IHdoaWxlICgwKTsgKHsgYXNtIHZv bGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAuZGlzY2FyZC5yZWFjaGFibGVcblx0IiAi LmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25cblx0IiA6IDogImkiICg0NikpOyB9KTsg fSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApOyB9KTsg X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgaWYgKDApIHsgX19pZHggPSBz cmN1X3JlYWRfbG9ja19ub3RyYWNlKCZ0cmFjZXBvaW50X3NyY3UpOyByY3VfaXJxX2VudGVyX2ly cXNvbigpOyB9IGl0X2Z1bmNfcHRyID0gKHsgdHlwZW9mKCgmX190cmFjZXBvaW50X2FtZGdwdV9k Y19wZXJmb3JtYW5jZSktPmZ1bmNzKSBfX19fX19fX3AxID0gKHsgdW5pb24geyB0eXBlb2YoKCZf X3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpIF9fdmFsOyBjaGFyIF9f Y1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYoKCZfX3RyYWNlcG9pbnRfYW1k Z3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpLCBfX3UuX19jLCBzaXplb2YoKCZfX3RyYWNlcG9p bnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpKTsgZWxzZSBfX3JlYWRfb25jZV9zaXpl X25vY2hlY2soJigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2UpLT5mdW5jcyks IF9fdS5fX2MsIHNpemVvZigoJl9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2UpLT5m dW5jcykpOyBkbyB7IH0gd2hpbGUgKDApOyBfX3UuX192YWw7IH0pOyAoKHR5cGVvZigqKCZfX3Ry YWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKS0+ZnVuY3MpICopKF9fX19fX19fcDEpKTsg fSk7IGlmIChpdF9mdW5jX3B0cikgeyBkbyB7IGl0X2Z1bmMgPSAoaXRfZnVuY19wdHIpLT5mdW5j OyBfX2RhdGEgPSAoaXRfZnVuY19wdHIpLT5kYXRhOyAoKHZvaWQoKikodm9pZCAqX19kYXRhLCB1 bnNpZ25lZCBsb25nIHJlYWRfY291bnQsIHVuc2lnbmVkIGxvbmcgd3JpdGVfY291bnQsIHVuc2ln bmVkIGxvbmcgKmxhc3RfcmVhZCwgdW5zaWduZWQgbG9uZyAqbGFzdF93cml0ZSwgY29uc3QgY2hh ciAqZnVuYywgdW5zaWduZWQgaW50IGxpbmUpKShpdF9mdW5jKSkoX19kYXRhLCByZWFkX2NvdW50 LCB3cml0ZV9jb3VudCwgbGFzdF9yZWFkLCBsYXN0X3dyaXRlLCBmdW5jLCBsaW5lKTsgfSB3aGls ZSAoKCsraXRfZnVuY19wdHIpLT5mdW5jKTsgfSBpZiAoMCkgeyByY3VfaXJxX2V4aXRfaXJxc29u KCk7IHNyY3VfcmVhZF91bmxvY2tfbm90cmFjZSgmdHJhY2Vwb2ludF9zcmN1LCBfX2lkeCk7IH0g X19hc21fXyBfX3ZvbGF0aWxlX18oIiI6IDogOiJtZW1vcnkiKTsgfSB3aGlsZSAoMCk7IGlmICgw ICYmIChjcHVtYXNrX3Rlc3RfY3B1KCgoeyB0eXBlb2YoY3B1X251bWJlcikgcHNjcl9yZXRfXzsg ZG8geyBjb25zdCB2b2lkICpfX3ZwcF92ZXJpZnkgPSAodHlwZW9mKCgmKGNwdV9udW1iZXIpKSAr IDApKSgodm9pZCAqKTApOyAodm9pZClfX3ZwcF92ZXJpZnk7IH0gd2hpbGUgKDApOyBzd2l0Y2go c2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTogcHNjcl9yZXRfXyA9ICh7IHR5cGVvZihjcHVf bnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7IGNhc2UgMTog YXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1xIiAo cGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBhc20gdm9sYXRp bGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChwZm9fcmV0X18p IDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGlsZSAoIm1vdiIg ImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNw dV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAicSAiIiUlIiJn cyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikp OyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0X187IH0pOyBi cmVhazsgY2FzZSAyOiBwc2NyX3JldF9fID0gKHsgdHlwZW9mKGNwdV9udW1iZXIpIHBmb19yZXRf Xzsgc3dpdGNoIChzaXplb2YoY3B1X251bWJlcikpIHsgY2FzZSAxOiBhc20gdm9sYXRpbGUgKCJt b3YiICJiICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXEiIChwZm9fcmV0X18pIDogIm0i IChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDI6IGFzbSB2b2xhdGlsZSAoIm1vdiIgIncgIiIl JSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1i ZXIpKTsgYnJlYWs7IGNhc2UgNDogYXNtIHZvbGF0aWxlICgibW92IiAibCAiIiUlIiJncyIiOiIg IiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVh azsgY2FzZSA4OiBhc20gdm9sYXRpbGUgKCJtb3YiICJxICIiJSUiImdzIiI6IiAiJSIgIjEiIiwl MCIgOiAiPXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBkZWZhdWx0 OiBfX2JhZF9wZXJjcHVfc2l6ZSgpOyB9IHBmb19yZXRfXzsgfSk7IGJyZWFrOyBjYXNlIDQ6IHBz Y3JfcmV0X18gPSAoeyB0eXBlb2YoY3B1X251bWJlcikgcGZvX3JldF9fOyBzd2l0Y2ggKHNpemVv ZihjcHVfbnVtYmVyKSkgeyBjYXNlIDE6IGFzbSB2b2xhdGlsZSAoIm1vdiIgImIgIiIlJSIiZ3Mi IjoiICIlIiAiMSIiLCUwIiA6ICI9cSIgKHBmb19yZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsg YnJlYWs7IGNhc2UgMjogYXNtIHZvbGF0aWxlICgibW92IiAidyAiIiUlIiJncyIiOiIgIiUiICIx IiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2Fz ZSA0OiBhc20gdm9sYXRpbGUgKCJtb3YiICJsICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAi PXIiIChwZm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDg6IGFzbSB2 b2xhdGlsZSAoIm1vdiIgInEgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19y ZXRfXykgOiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGRlZmF1bHQ6IF9fYmFkX3BlcmNwdV9z aXplKCk7IH0gcGZvX3JldF9fOyB9KTsgYnJlYWs7IGNhc2UgODogcHNjcl9yZXRfXyA9ICh7IHR5 cGVvZihjcHVfbnVtYmVyKSBwZm9fcmV0X187IHN3aXRjaCAoc2l6ZW9mKGNwdV9udW1iZXIpKSB7 IGNhc2UgMTogYXNtIHZvbGF0aWxlICgibW92IiAiYiAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAi IDogIj1xIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1X251bWJlcikpOyBicmVhazsgY2FzZSAyOiBh c20gdm9sYXRpbGUgKCJtb3YiICJ3ICIiJSUiImdzIiI6IiAiJSIgIjEiIiwlMCIgOiAiPXIiIChw Zm9fcmV0X18pIDogIm0iIChjcHVfbnVtYmVyKSk7IGJyZWFrOyBjYXNlIDQ6IGFzbSB2b2xhdGls ZSAoIm1vdiIgImwgIiIlJSIiZ3MiIjoiICIlIiAiMSIiLCUwIiA6ICI9ciIgKHBmb19yZXRfXykg OiAibSIgKGNwdV9udW1iZXIpKTsgYnJlYWs7IGNhc2UgODogYXNtIHZvbGF0aWxlICgibW92IiAi cSAiIiUlIiJncyIiOiIgIiUiICIxIiIsJTAiIDogIj1yIiAocGZvX3JldF9fKSA6ICJtIiAoY3B1 X251bWJlcikpOyBicmVhazsgZGVmYXVsdDogX19iYWRfcGVyY3B1X3NpemUoKTsgfSBwZm9fcmV0 X187IH0pOyBicmVhazsgZGVmYXVsdDogX19iYWRfc2l6ZV9jYWxsX3BhcmFtZXRlcigpOyBicmVh azsgfSBwc2NyX3JldF9fOyB9KSksICgoY29uc3Qgc3RydWN0IGNwdW1hc2sgKikmX19jcHVfb25s aW5lX21hc2spKSkpIHsgcmN1X3JlYWRfbG9ja19zY2hlZF9ub3RyYWNlKCk7ICh7IHR5cGVvZigq KF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2UuZnVuY3MpKSAqX19fX19fX19wMSA9 ICh0eXBlb2YoKihfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLmZ1bmNzKSkgKiko eyB1bmlvbiB7IHR5cGVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZS5mdW5j cykpIF9fdmFsOyBjaGFyIF9fY1sxXTsgfSBfX3U7IGlmICgxKSBfX3JlYWRfb25jZV9zaXplKCYo KF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFuY2UuZnVuY3MpKSwgX191Ll9fYywgc2l6 ZW9mKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1hbmNlLmZ1bmNzKSkpOyBlbHNlIF9f cmVhZF9vbmNlX3NpemVfbm9jaGVjaygmKChfX3RyYWNlcG9pbnRfYW1kZ3B1X2RjX3BlcmZvcm1h bmNlLmZ1bmNzKSksIF9fdS5fX2MsIHNpemVvZigoX190cmFjZXBvaW50X2FtZGdwdV9kY19wZXJm b3JtYW5jZS5mdW5jcykpKTsgZG8geyB9IHdoaWxlICgwKTsgX191Ll9fdmFsOyB9KTsgZG8geyB9 IHdoaWxlICgwKTsgOyAoKHR5cGVvZigqKF9fdHJhY2Vwb2ludF9hbWRncHVfZGNfcGVyZm9ybWFu Y2UuZnVuY3MpKSAqKShfX19fX19fX3AxKSk7IH0pOyByY3VfcmVhZF91bmxvY2tfc2NoZWRfbm90 cmFjZSgpOyB9IH0gc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykp IF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50 X2Z1bmN0aW9uKSkgaW50IHJlZ2lzdGVyX3RyYWNlX2FtZGdwdV9kY19wZXJmb3JtYW5jZSh2b2lk ICgqcHJvYmUpKHZvaWQgKl9fZGF0YSwgdW5zaWduZWQgbG9uZyByZWFkX2NvdW50LCB1bnNpZ25l ZCBsb25nIHdyaXRlX2NvdW50LCB1bnNpZ25lZCBsb25nICpsYXN0X3JlYWQsIHVuc2lnbmVkIGxv bmcgKmxhc3Rfd3JpdGUsIGNvbnN0IGNoYXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSwgdm9p ZCAqZGF0YSkgeyByZXR1cm4gdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3RlcigmX190cmFjZXBvaW50 X2FtZGdwdV9kY19wZXJmb3JtYW5jZSwgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlu bGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51 c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgaW50IHJlZ2lz dGVyX3RyYWNlX3ByaW9fYW1kZ3B1X2RjX3BlcmZvcm1hbmNlKHZvaWQgKCpwcm9iZSkodm9pZCAq X19kYXRhLCB1bnNpZ25lZCBsb25nIHJlYWRfY291bnQsIHVuc2lnbmVkIGxvbmcgd3JpdGVfY291 bnQsIHVuc2lnbmVkIGxvbmcgKmxhc3RfcmVhZCwgdW5zaWduZWQgbG9uZyAqbGFzdF93cml0ZSwg Y29uc3QgY2hhciAqZnVuYywgdW5zaWduZWQgaW50IGxpbmUpLCB2b2lkICpkYXRhLCBpbnQgcHJp bykgeyByZXR1cm4gdHJhY2Vwb2ludF9wcm9iZV9yZWdpc3Rlcl9wcmlvKCZfX3RyYWNlcG9pbnRf YW1kZ3B1X2RjX3BlcmZvcm1hbmNlLCAodm9pZCAqKXByb2JlLCBkYXRhLCBwcmlvKTsgfSBzdGF0 aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygo X191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBpbnQg dW5yZWdpc3Rlcl90cmFjZV9hbWRncHVfZGNfcGVyZm9ybWFuY2Uodm9pZCAoKnByb2JlKSh2b2lk ICpfX2RhdGEsIHVuc2lnbmVkIGxvbmcgcmVhZF9jb3VudCwgdW5zaWduZWQgbG9uZyB3cml0ZV9j b3VudCwgdW5zaWduZWQgbG9uZyAqbGFzdF9yZWFkLCB1bnNpZ25lZCBsb25nICpsYXN0X3dyaXRl LCBjb25zdCBjaGFyICpmdW5jLCB1bnNpZ25lZCBpbnQgbGluZSksIHZvaWQgKmRhdGEpIHsgcmV0 dXJuIHRyYWNlcG9pbnRfcHJvYmVfdW5yZWdpc3RlcigmX190cmFjZXBvaW50X2FtZGdwdV9kY19w ZXJmb3JtYW5jZSwgKHZvaWQgKilwcm9iZSwgZGF0YSk7IH0gc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgdm9pZCBjaGVja190cmFjZV9jYWxs YmFja190eXBlX2FtZGdwdV9kY19wZXJmb3JtYW5jZSh2b2lkICgqY2IpKHZvaWQgKl9fZGF0YSwg dW5zaWduZWQgbG9uZyByZWFkX2NvdW50LCB1bnNpZ25lZCBsb25nIHdyaXRlX2NvdW50LCB1bnNp Z25lZCBsb25nICpsYXN0X3JlYWQsIHVuc2lnbmVkIGxvbmcgKmxhc3Rfd3JpdGUsIGNvbnN0IGNo YXIgKmZ1bmMsIHVuc2lnbmVkIGludCBsaW5lKSkgeyB9IHN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgdHJhY2VfYW1kZ3B1X2RjX3Bl cmZvcm1hbmNlX2VuYWJsZWQodm9pZCkgeyByZXR1cm4gc3RhdGljX2tleV9mYWxzZSgmX190cmFj ZXBvaW50X2FtZGdwdV9kY19wZXJmb3JtYW5jZS5rZXkpOyB9CiMgOTggIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3RyYWNlLmgiCiA7 CgoKCgoKIyAxICIuL2luY2x1ZGUvdHJhY2UvZGVmaW5lX3RyYWNlLmgiIDEKIyAxMDUgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX3Ry YWNlLmgiIDIKIyAzNSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RtX3NlcnZpY2VzLmgiIDIKCgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kbV9zZXJ2aWNlc190eXBlcy5oIiAxCiMgMzIgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlc190eXBlcy5oIgpzdHJ1Y3QgcHBf c211X2Z1bmNzOwoKc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlIHsKIGludCBtaW5fa2h6OwogaW50 IG1heF9raHo7Cn07CgplbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSB7CiBETV9QUF9DTE9DS1NfU1RB VEVfSU5WQUxJRCwKIERNX1BQX0NMT0NLU19TVEFURV9VTFRSQV9MT1csCiBETV9QUF9DTE9DS1Nf U1RBVEVfTE9XLAogRE1fUFBfQ0xPQ0tTX1NUQVRFX05PTUlOQUwsCiBETV9QUF9DTE9DS1NfU1RB VEVfUEVSRk9STUFOQ0UsCgoKIERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfSU5WQUxJRCA9 IERNX1BQX0NMT0NLU19TVEFURV9JTlZBTElELAogRE1fUFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZF TF8wLAogRE1fUFBfQ0xPQ0tTX0RQTV9TVEFURV9MRVZFTF8xLAogRE1fUFBfQ0xPQ0tTX0RQTV9T VEFURV9MRVZFTF8yLAoKIERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfMywKIERNX1BQX0NM T0NLU19EUE1fU1RBVEVfTEVWRUxfNCwKIERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfNSwK IERNX1BQX0NMT0NLU19EUE1fU1RBVEVfTEVWRUxfNiwKIERNX1BQX0NMT0NLU19EUE1fU1RBVEVf TEVWRUxfNywKCiBETV9QUF9DTE9DS1NfTUFYX1NUQVRFUwp9OwoKc3RydWN0IGRtX3BwX2dwdV9j bG9ja19yYW5nZSB7CiBlbnVtIGRtX3BwX2Nsb2Nrc19zdGF0ZSBjbG9ja19zdGF0ZTsKIHN0cnVj dCBkbV9wcF9jbG9ja19yYW5nZSBzY2xrOwogc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlIG1jbGs7 CiBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2UgZWNsazsKIHN0cnVjdCBkbV9wcF9jbG9ja19yYW5n ZSBkY2xrOwp9OwoKZW51bSBkbV9wcF9jbG9ja190eXBlIHsKIERNX1BQX0NMT0NLX1RZUEVfRElT UExBWV9DTEsgPSAxLAogRE1fUFBfQ0xPQ0tfVFlQRV9FTkdJTkVfQ0xLLAogRE1fUFBfQ0xPQ0tf VFlQRV9NRU1PUllfQ0xLLAogRE1fUFBfQ0xPQ0tfVFlQRV9EQ0ZDTEssCiBETV9QUF9DTE9DS19U WVBFX0RDRUZDTEssCiBETV9QUF9DTE9DS19UWVBFX1NPQ0NMSywKIERNX1BQX0NMT0NLX1RZUEVf UElYRUxDTEssCiBETV9QUF9DTE9DS19UWVBFX0RJU1BMQVlQSFlDTEssCiBETV9QUF9DTE9DS19U WVBFX0RQUENMSywKIERNX1BQX0NMT0NLX1RZUEVfRkNMSywKfTsKIyA5NyAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzX3R5cGVzLmgiCnN0cnVj dCBkbV9wcF9jbG9ja19sZXZlbHMgewogdWludDMyX3QgbnVtX2xldmVsczsKIHVpbnQzMl90IGNs b2Nrc19pbl9raHpbMTZdOwp9OwoKc3RydWN0IGRtX3BwX2Nsb2NrX3dpdGhfbGF0ZW5jeSB7CiB1 aW50MzJfdCBjbG9ja3NfaW5fa2h6OwogdWludDMyX3QgbGF0ZW5jeV9pbl91czsKfTsKCnN0cnVj dCBkbV9wcF9jbG9ja19sZXZlbHNfd2l0aF9sYXRlbmN5IHsKIHVpbnQzMl90IG51bV9sZXZlbHM7 CiBzdHJ1Y3QgZG1fcHBfY2xvY2tfd2l0aF9sYXRlbmN5IGRhdGFbMTZdOwp9OwoKc3RydWN0IGRt X3BwX2Nsb2NrX3dpdGhfdm9sdGFnZSB7CiB1aW50MzJfdCBjbG9ja3NfaW5fa2h6OwogdWludDMy X3Qgdm9sdGFnZV9pbl9tdjsKfTsKCnN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHNfd2l0aF92b2x0 YWdlIHsKIHVpbnQzMl90IG51bV9sZXZlbHM7CiBzdHJ1Y3QgZG1fcHBfY2xvY2tfd2l0aF92b2x0 YWdlIGRhdGFbMTZdOwp9OwoKc3RydWN0IGRtX3BwX3NpbmdsZV9kaXNwX2NvbmZpZyB7CiBlbnVt IHNpZ25hbF90eXBlIHNpZ25hbDsKIHVpbnQ4X3QgdHJhbnNtaXR0ZXI7CiB1aW50OF90IGRkaV9j aGFubmVsX21hcHBpbmc7CiB1aW50OF90IHBpcGVfaWR4OwogdWludDMyX3Qgc3JjX2hlaWdodDsK IHVpbnQzMl90IHNyY193aWR0aDsKIHVpbnQzMl90IHZfcmVmcmVzaDsKIHVpbnQzMl90IHN5bV9j bG9jazsKIHN0cnVjdCBkY19saW5rX3NldHRpbmdzIGxpbmtfc2V0dGluZ3M7Cn07CgoKCmVudW0g ZG1fcHBfd21fc2V0X2lkIHsKIFdNX1NFVF9BID0gMCwKIFdNX1NFVF9CLAogV01fU0VUX0MsCiBX TV9TRVRfRCwKIFdNX1NFVF9JTlZBTElEID0gMHhmZmZmLAp9OwoKc3RydWN0IGRtX3BwX2Nsb2Nr X3JhbmdlX2Zvcl93bV9zZXQgewogZW51bSBkbV9wcF93bV9zZXRfaWQgd21fc2V0X2lkOwogdWlu dDMyX3Qgd21fbWluX2VuZ19jbGtfaW5fa2h6OwogdWludDMyX3Qgd21fbWF4X2VuZ19jbGtfaW5f a2h6OwogdWludDMyX3Qgd21fbWluX21lbV9jbGtfaW5fa2h6OwogdWludDMyX3Qgd21fbWF4X21l bV9jbGtfaW5fa2h6Owp9OwoKc3RydWN0IGRtX3BwX3dtX3NldHNfd2l0aF9jbG9ja19yYW5nZXMg ewogdWludDMyX3QgbnVtX3dtX3NldHM7CiBzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2VfZm9yX3dt X3NldCB3bV9jbGtfcmFuZ2VzWzRdOwp9OwoKc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlX2Zvcl9k bWlmX3dtX3NldF9zb2MxNSB7CiBlbnVtIGRtX3BwX3dtX3NldF9pZCB3bV9zZXRfaWQ7CiB1aW50 MzJfdCB3bV9taW5fZGNmY2xrX2Nsa19pbl9raHo7CiB1aW50MzJfdCB3bV9tYXhfZGNmY2xrX2Ns a19pbl9raHo7CiB1aW50MzJfdCB3bV9taW5fbWVtX2Nsa19pbl9raHo7CiB1aW50MzJfdCB3bV9t YXhfbWVtX2Nsa19pbl9raHo7Cn07CgpzdHJ1Y3QgZG1fcHBfY2xvY2tfcmFuZ2VfZm9yX21jaWZf d21fc2V0X3NvYzE1IHsKIGVudW0gZG1fcHBfd21fc2V0X2lkIHdtX3NldF9pZDsKIHVpbnQzMl90 IHdtX21pbl9zb2NjbGtfY2xrX2luX2toejsKIHVpbnQzMl90IHdtX21heF9zb2NjbGtfY2xrX2lu X2toejsKIHVpbnQzMl90IHdtX21pbl9tZW1fY2xrX2luX2toejsKIHVpbnQzMl90IHdtX21heF9t ZW1fY2xrX2luX2toejsKfTsKCnN0cnVjdCBkbV9wcF93bV9zZXRzX3dpdGhfY2xvY2tfcmFuZ2Vz X3NvYzE1IHsKIHVpbnQzMl90IG51bV93bV9kbWlmX3NldHM7CiB1aW50MzJfdCBudW1fd21fbWNp Zl9zZXRzOwogc3RydWN0IGRtX3BwX2Nsb2NrX3JhbmdlX2Zvcl9kbWlmX3dtX3NldF9zb2MxNQog IHdtX2RtaWZfY2xvY2tzX3Jhbmdlc1s0XTsKIHN0cnVjdCBkbV9wcF9jbG9ja19yYW5nZV9mb3Jf bWNpZl93bV9zZXRfc29jMTUKICB3bV9tY2lmX2Nsb2Nrc19yYW5nZXNbNF07Cn07CgoKCnN0cnVj dCBkbV9wcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb24gewogYm9vbCBuYl9wc3RhdGVfc3dpdGNoX2Rp c2FibGU7CiBib29sIGNwdV9jYzZfZGlzYWJsZTsKIGJvb2wgY3B1X3BzdGF0ZV9kaXNhYmxlOwog dWludDMyX3QgY3B1X3BzdGF0ZV9zZXBhcmF0aW9uX3RpbWU7CgogdWludDMyX3QgbWluX21lbW9y eV9jbG9ja19raHo7CiB1aW50MzJfdCBtaW5fZW5naW5lX2Nsb2NrX2toejsKIHVpbnQzMl90IG1p bl9lbmdpbmVfY2xvY2tfZGVlcF9zbGVlcF9raHo7CgogdWludDMyX3QgYXZhaWxfbWNsa19zd2l0 Y2hfdGltZV91czsKIHVpbnQzMl90IGF2YWlsX21jbGtfc3dpdGNoX3RpbWVfaW5fZGlzcF9hY3Rp dmVfdXM7CiB1aW50MzJfdCBtaW5fZGNmY2xvY2tfa2h6OwogdWludDMyX3QgbWluX2RjZmNfZGVl cF9zbGVlcF9jbG9ja19raHo7CgogdWludDMyX3QgZGlzcF9jbGtfa2h6OwoKIGJvb2wgYWxsX2Rp c3BsYXlzX2luX3N5bmM7CgogdWludDhfdCBkaXNwbGF5X2NvdW50Owogc3RydWN0IGRtX3BwX3Np bmdsZV9kaXNwX2NvbmZpZyBkaXNwX2NvbmZpZ3NbNl07CgoKCiB1aW50OF90IGNydGNfaW5kZXg7 CgogdWludDMyX3QgbGluZV90aW1lX2luX3VzOwp9OwoKc3RydWN0IGRtX2JsX2RhdGFfcG9pbnQg ewoKICB1aW50OF90IGx1bWluYW5jZTsKCgoKICB1aW50OF90IHNpZ25hbF9sZXZlbDsKfTsKCgoK c3RydWN0IGRtX2FjcGlfYXRpZl9iYWNrbGlnaHRfY2FwcyB7CiB1aW50MTZfdCBzaXplOwogdWlu dDE2X3QgZmxhZ3M7CiB1aW50OF90IGVycm9yX2NvZGU7CiB1aW50OF90IGFjX2xldmVsX3BlcmNl bnRhZ2U7CiB1aW50OF90IGRjX2xldmVsX3BlcmNlbnRhZ2U7CiB1aW50OF90IG1pbl9pbnB1dF9z aWduYWw7CiB1aW50OF90IG1heF9pbnB1dF9zaWduYWw7CiB1aW50OF90IG51bV9kYXRhX3BvaW50 czsKIHN0cnVjdCBkbV9ibF9kYXRhX3BvaW50IGRhdGFfcG9pbnRzWzk5XTsKfTsKCmVudW0gZG1f YWNwaV9kaXNwbGF5X3R5cGUgewogQWNwaURpc3BsYXlUeXBlX0xDRDEgPSAwLAogQWNwaURpc3Bs YXlUeXBlX0NSVDEgPSAxLAogQWNwaURpc3BsYXlUeXBlX0RGUDEgPSAzLAogQWNwaURpc3BsYXlU eXBlX0NSVDIgPSA0LAogQWNwaURpc3BsYXlUeXBlX0xDRDIgPSA1LAogQWNwaURpc3BsYXlUeXBl X0RGUDIgPSA3LAogQWNwaURpc3BsYXlUeXBlX0RGUDMgPSA5LAogQWNwaURpc3BsYXlUeXBlX0RG UDQgPSAxMCwKIEFjcGlEaXNwbGF5VHlwZV9ERlA1ID0gMTEsCiBBY3BpRGlzcGxheVR5cGVfREZQ NiA9IDEyCn07CgpzdHJ1Y3QgZG1fcHBfcG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3QgewogZW51 bSBkbV9wcF9jbG9ja3Nfc3RhdGUgcG93ZXJfbGV2ZWw7Cn07CgpzdHJ1Y3QgZG1fcHBfY2xvY2tf Zm9yX3ZvbHRhZ2VfcmVxIHsKIGVudW0gZG1fcHBfY2xvY2tfdHlwZSBjbGtfdHlwZTsKIHVpbnQz Ml90IGNsb2Nrc19pbl9raHo7Cn07CgpzdHJ1Y3QgZG1fcHBfc3RhdGljX2Nsb2NrX2luZm8gewog dWludDMyX3QgbWF4X3NjbGtfa2h6OwogdWludDMyX3QgbWF4X21jbGtfa2h6OwoKCiBlbnVtIGRt X3BwX2Nsb2Nrc19zdGF0ZSBtYXhfY2xvY2tzX3N0YXRlOwp9OwoKc3RydWN0IGR0bl9taW5fY2xr X2luZm8gewogdWludDMyX3QgZGlzcF9jbGtfa2h6OwogdWludDMyX3QgbWluX2VuZ2luZV9jbG9j a19raHo7CiB1aW50MzJfdCBtaW5fbWVtb3J5X2Nsb2NrX2toejsKfTsKIyAzOCAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiIDIKIyAxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9sb2dnZXJfaW50 ZXJmYWNlLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2luY2x1ZGUvbG9nZ2VyX2ludGVyZmFjZS5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xvZ2dlcl90eXBlcy5oIiAxCiMgMzAgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xvZ2dlcl9pbnRlcmZhY2Uu aCIgMgoKc3RydWN0IGRjX2NvbnRleHQ7CnN0cnVjdCBkY19saW5rOwpzdHJ1Y3QgZGNfc3VyZmFj ZV91cGRhdGU7CnN0cnVjdCByZXNvdXJjZV9jb250ZXh0OwpzdHJ1Y3QgZGNfc3RhdGU7CgoKCgoK Cgp2b2lkIGRjX2Nvbm5fbG9nX2hleF9saW51eChjb25zdCB1aW50OF90ICpoZXhfZGF0YSwgaW50 IGhleF9kYXRhX2NvdW50KTsKCnZvaWQgcHJlX3N1cmZhY2VfdHJhY2UoCiAgc3RydWN0IGRjICpk YywKICBjb25zdCBzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUgKmNvbnN0ICpwbGFuZV9zdGF0ZXMsCiAg aW50IHN1cmZhY2VfY291bnQpOwoKdm9pZCB1cGRhdGVfc3VyZmFjZV90cmFjZSgKICBzdHJ1Y3Qg ZGMgKmRjLAogIGNvbnN0IHN0cnVjdCBkY19zdXJmYWNlX3VwZGF0ZSAqdXBkYXRlcywKICBpbnQg c3VyZmFjZV9jb3VudCk7Cgp2b2lkIHBvc3Rfc3VyZmFjZV90cmFjZShzdHJ1Y3QgZGMgKmRjKTsK CnZvaWQgY29udGV4dF90aW1pbmdfdHJhY2UoCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgcmVz b3VyY2VfY29udGV4dCAqcmVzX2N0eCk7Cgp2b2lkIGNvbnRleHRfY2xvY2tfdHJhY2UoCiAgc3Ry dWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwojIDM5ICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIgMgoKCgoKc3Ry dWN0IGRtdWJfc3J2OwpzdHJ1Y3QgZGNfZG11Yl9zcnY7CgppcnFfaGFuZGxlcl9pZHggZG1fcmVn aXN0ZXJfaW50ZXJydXB0KAogc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIHN0cnVjdCBkY19pbnRl cnJ1cHRfcGFyYW1zICppbnRfcGFyYW1zLAogaW50ZXJydXB0X2hhbmRsZXIgaWgsCiB2b2lkICpo YW5kbGVyX2FyZ3MpOwoKCgoKCgoKdWludDMyX3QgZG1fcmVhZF9yZWdfZnVuYygKIGNvbnN0IHN0 cnVjdCBkY19jb250ZXh0ICpjdHgsCiB1aW50MzJfdCBhZGRyZXNzLAogY29uc3QgY2hhciAqZnVu Y19uYW1lKTsKIyA3MyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2RtX3NlcnZpY2VzLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1 bWVudF9mdW5jdGlvbikpIHZvaWQgZG1fd3JpdGVfcmVnX2Z1bmMoCiBjb25zdCBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4LAogdWludDMyX3QgYWRkcmVzcywKIHVpbnQzMl90IHZhbHVlLAogY29uc3Qg Y2hhciAqZnVuY19uYW1lKQp7CgoKCgoKCiAoKChzdHJ1Y3QgY2dzX2RldmljZSAqKWN0eC0+Y2dz X2RldmljZSktPm9wcy0+d3JpdGVfcmVnaXN0ZXIoY3R4LT5jZ3NfZGV2aWNlLCBhZGRyZXNzLHZh bHVlKSk7CiB0cmFjZV9hbWRncHVfZGNfd3JlZygmY3R4LT5wZXJmX3RyYWNlLT53cml0ZV9jb3Vu dCwgYWRkcmVzcywgdmFsdWUpOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251 X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5v X2luc3RydW1lbnRfZnVuY3Rpb24pKSB1aW50MzJfdCBkbV9yZWFkX2luZGV4X3JlZygKIGNvbnN0 IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBlbnVtIGNnc19pbmRfcmVnIGFkZHJfc3BhY2UsCiB1 aW50MzJfdCBpbmRleCkKewogcmV0dXJuICgoKHN0cnVjdCBjZ3NfZGV2aWNlICopY3R4LT5jZ3Nf ZGV2aWNlKS0+b3BzLT5yZWFkX2luZF9yZWdpc3RlcihjdHgtPmNnc19kZXZpY2UsIGFkZHJfc3Bh Y2UsaW5kZXgpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgdm9pZCBkbV93cml0ZV9pbmRleF9yZWcoCiBjb25zdCBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4LAogZW51bSBjZ3NfaW5kX3JlZyBhZGRyX3NwYWNlLAogdWludDMyX3QgaW5k ZXgsCiB1aW50MzJfdCB2YWx1ZSkKewogKCgoc3RydWN0IGNnc19kZXZpY2UgKiljdHgtPmNnc19k ZXZpY2UpLT5vcHMtPndyaXRlX2luZF9yZWdpc3RlcihjdHgtPmNnc19kZXZpY2UsIGFkZHJfc3Bh Y2UsaW5kZXgsdmFsdWUpKTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9p bmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19p bnN0cnVtZW50X2Z1bmN0aW9uKSkgdWludDMyX3QgZ2V0X3JlZ19maWVsZF92YWx1ZV9leCgKIHVp bnQzMl90IHJlZ192YWx1ZSwKIHVpbnQzMl90IG1hc2ssCiB1aW50OF90IHNoaWZ0KQp7CiByZXR1 cm4gKG1hc2sgJiByZWdfdmFsdWUpID4+IHNoaWZ0Owp9CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9f YXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykp IF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSB1aW50MzJfdCBzZXRfcmVn X2ZpZWxkX3ZhbHVlX2V4KAogdWludDMyX3QgcmVnX3ZhbHVlLAogdWludDMyX3QgdmFsdWUsCiB1 aW50MzJfdCBtYXNrLAogdWludDhfdCBzaGlmdCkKewogKHsgaW50IF9fcmV0X3dhcm5fb24gPSAh ISghKG1hc2sgIT0gMCkpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwg MCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBmLCAw eDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAiLmxv bmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5sb25n ICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEiICJc dCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZsYWdz XG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIpLCAiaSIgKDEyNiks ICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRy eSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rp b24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0 aW9uXG5cdCIgOiA6ICJpIiAoNDcpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0 KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CiByZXR1cm4gKHJlZ192YWx1ZSAmIH5tYXNrKSB8 IChtYXNrICYgKHZhbHVlIDw8IHNoaWZ0KSk7Cn0KIyAxMzcgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIgp1aW50MzJfdCBnZW5lcmljX3Jl Z19zZXRfZXgoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKICB1aW50MzJfdCBhZGRyLCB1 aW50MzJfdCByZWdfdmFsLCBpbnQgbiwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEs IHVpbnQzMl90IGZpZWxkX3ZhbHVlMSwgLi4uKTsKCnVpbnQzMl90IGdlbmVyaWNfcmVnX3VwZGF0 ZV9leChjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIHVpbnQzMl90IGFkZHIsIGludCBu LAogIHVpbnQ4X3Qgc2hpZnQxLCB1aW50MzJfdCBtYXNrMSwgdWludDMyX3QgZmllbGRfdmFsdWUx LCAuLi4pOwoKc3RydWN0IGRjX2RtdWJfc3J2ICpkY19kbXViX3Nydl9jcmVhdGUoc3RydWN0IGRj ICpkYywgc3RydWN0IGRtdWJfc3J2ICpkbXViKTsKdm9pZCBkY19kbXViX3Nydl9kZXN0cm95KHN0 cnVjdCBkY19kbXViX3NydiAqKmRtdWJfc3J2KTsKCnZvaWQgcmVnX3NlcXVlbmNlX3N0YXJ0X2dh dGhlcihjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKdm9pZCByZWdfc2VxdWVuY2Vfc3Rh cnRfZXhlY3V0ZShjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKdm9pZCByZWdfc2VxdWVu Y2Vfd2FpdF9kb25lKGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgpOwojIDE1OSAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiCnZvaWQg Z2VuZXJpY19yZWdfd2FpdChjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogdWludDMyX3Qg YWRkciwgdWludDMyX3QgbWFzaywgdWludDMyX3Qgc2hpZnQsIHVpbnQzMl90IGNvbmRpdGlvbl92 YWx1ZSwKIHVuc2lnbmVkIGludCBkZWxheV9iZXR3ZWVuX3BvbGxfdXMsIHVuc2lnbmVkIGludCB0 aW1lX291dF9udW1fdHJpZXMsCiBjb25zdCBjaGFyICpmdW5jX25hbWUsIGludCBsaW5lKTsKCnVu c2lnbmVkIGludCBzbnByaW50Zl9jb3VudChjaGFyICpwQnVmLCB1bnNpZ25lZCBpbnQgYnVmU2l6 ZSwgY2hhciAqZm10LCAuLi4pOwojIDIwOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RtX3NlcnZpY2VzLmgiCmJvb2wgZG1fcHBfZ2V0X2Nsb2NrX2xldmVsc19i eV90eXBlKAogY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIGVudW0gZG1fcHBfY2xvY2tf dHlwZSBjbGtfdHlwZSwKIHN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHMgKmNsa19sZXZlbF9pbmZv KTsKCmJvb2wgZG1fcHBfZ2V0X2Nsb2NrX2xldmVsc19ieV90eXBlX3dpdGhfbGF0ZW5jeSgKIGNv bnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBlbnVtIGRtX3BwX2Nsb2NrX3R5cGUgY2xrX3R5 cGUsCiBzdHJ1Y3QgZG1fcHBfY2xvY2tfbGV2ZWxzX3dpdGhfbGF0ZW5jeSAqY2xrX2xldmVsX2lu Zm8pOwoKYm9vbCBkbV9wcF9nZXRfY2xvY2tfbGV2ZWxzX2J5X3R5cGVfd2l0aF92b2x0YWdlKAog Y29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIGVudW0gZG1fcHBfY2xvY2tfdHlwZSBjbGtf dHlwZSwKIHN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHNfd2l0aF92b2x0YWdlICpjbGtfbGV2ZWxf aW5mbyk7Cgpib29sIGRtX3BwX25vdGlmeV93bV9jbG9ja19jaGFuZ2VzKAogY29uc3Qgc3RydWN0 IGRjX2NvbnRleHQgKmN0eCwKIHN0cnVjdCBkbV9wcF93bV9zZXRzX3dpdGhfY2xvY2tfcmFuZ2Vz ICp3bV93aXRoX2Nsb2NrX3Jhbmdlcyk7Cgp2b2lkIGRtX3BwX2dldF9mdW5jcyhzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4LAogIHN0cnVjdCBwcF9zbXVfZnVuY3MgKmZ1bmNzKTsKIyAyNDEgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIgpib29s IGRtX3BwX2FwcGx5X2Rpc3BsYXlfcmVxdWlyZW1lbnRzKAogY29uc3Qgc3RydWN0IGRjX2NvbnRl eHQgKmN0eCwKIGNvbnN0IHN0cnVjdCBkbV9wcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb24gKnBwX2Rp c3BsYXlfY2ZnKTsKCmJvb2wgZG1fcHBfYXBwbHlfcG93ZXJfbGV2ZWxfY2hhbmdlX3JlcXVlc3Qo CiBjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogc3RydWN0IGRtX3BwX3Bvd2VyX2xldmVs X2NoYW5nZV9yZXF1ZXN0ICpsZXZlbF9jaGFuZ2VfcmVxKTsKCmJvb2wgZG1fcHBfYXBwbHlfY2xv Y2tfZm9yX3ZvbHRhZ2VfcmVxdWVzdCgKIGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBz dHJ1Y3QgZG1fcHBfY2xvY2tfZm9yX3ZvbHRhZ2VfcmVxICpjbG9ja19mb3Jfdm9sdGFnZV9yZXEp OwoKYm9vbCBkbV9wcF9nZXRfc3RhdGljX2Nsb2NrcygKIGNvbnN0IHN0cnVjdCBkY19jb250ZXh0 ICpjdHgsCiBzdHJ1Y3QgZG1fcHBfc3RhdGljX2Nsb2NrX2luZm8gKnN0YXRpY19jbGtfaW5mbyk7 CgoKCnN0cnVjdCBwZXJzaXN0ZW50X2RhdGFfZmxhZyB7CiBib29sIHNhdmVfcGVyX2xpbms7CiBi b29sIHNhdmVfcGVyX2VkaWQ7Cn07CiMgMjkxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZG1fc2VydmljZXMuaCIKYm9vbCBkbV93cml0ZV9wZXJzaXN0ZW50X2Rh dGEoc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKICBjb25zdCBzdHJ1Y3QgZGNfc2luayAqc2luaywK ICBjb25zdCBjaGFyICptb2R1bGVfbmFtZSwKICBjb25zdCBjaGFyICprZXlfbmFtZSwKICB2b2lk ICpwYXJhbXMsCiAgdW5zaWduZWQgaW50IHNpemUsCiAgc3RydWN0IHBlcnNpc3RlbnRfZGF0YV9m bGFnICpmbGFnKTsKIyAzMjUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9kbV9zZXJ2aWNlcy5oIgpib29sIGRtX3JlYWRfcGVyc2lzdGVudF9kYXRhKHN0cnVjdCBk Y19jb250ZXh0ICpjdHgsCiAgY29uc3Qgc3RydWN0IGRjX3NpbmsgKnNpbmssCiAgY29uc3QgY2hh ciAqbW9kdWxlX25hbWUsCiAgY29uc3QgY2hhciAqa2V5X25hbWUsCiAgdm9pZCAqcGFyYW1zLAog IHVuc2lnbmVkIGludCBzaXplLAogIHN0cnVjdCBwZXJzaXN0ZW50X2RhdGFfZmxhZyAqZmxhZyk7 Cgpib29sIGRtX3F1ZXJ5X2V4dGVuZGVkX2JyaWdodG5lc3NfY2FwcwogKHN0cnVjdCBkY19jb250 ZXh0ICpjdHgsIGVudW0gZG1fYWNwaV9kaXNwbGF5X3R5cGUgZGlzcGxheSwKICAgc3RydWN0IGRt X2FjcGlfYXRpZl9iYWNrbGlnaHRfY2FwcyAqcENhcHMpOwoKYm9vbCBkbV9kbWN1X3NldF9waXBl KHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBjb250cm9sbGVyX2lkKTsKIyAz NDcgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9zZXJ2aWNl cy5oIgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSB1bnNpZ25lZCBsb25nIGxvbmcgZG1fZ2V0X3RpbWVzdGFtcChzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4KQp7CiByZXR1cm4ga3RpbWVfZ2V0X3Jhd19ucygpOwp9Cgp1bnNpZ25lZCBsb25nIGxv bmcgZG1fZ2V0X2VsYXBzZV90aW1lX2luX25zKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAgdW5z aWduZWQgbG9uZyBsb25nIGN1cnJlbnRfdGltZV9zdGFtcCwKICB1bnNpZ25lZCBsb25nIGxvbmcg bGFzdF90aW1lX3N0YW1wKTsKIyAzNzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9kYy9kbV9zZXJ2aWNlcy5oIgp2b2lkIGRtX2R0bl9sb2dfYmVnaW4oc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKIHN0cnVjdCBkY19sb2dfYnVmZmVyX2N0eCAqbG9nX2N0eCk7CnZvaWQg ZG1fZHRuX2xvZ19hcHBlbmRfdihzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogc3RydWN0IGRjX2xv Z19idWZmZXJfY3R4ICpsb2dfY3R4LAogY29uc3QgY2hhciAqbXNnLCAuLi4pOwp2b2lkIGRtX2R0 bl9sb2dfZW5kKHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBzdHJ1Y3QgZGNfbG9nX2J1ZmZlcl9j dHggKmxvZ19jdHgpOwojIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvaW5jbHVkZS9iaW9zX3BhcnNlcl90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvc2lnbmFsX3R5cGVzLmgiIDEKIyAzMiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJf dHlwZXMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9p bmNsdWRlL2dycGhfb2JqZWN0X2N0cmxfZGVmcy5oIiAxCiMgMzMgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2Jpb3NfcGFyc2VyX3R5cGVzLmgiIDIKIyAx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9ncGlvX3R5 cGVzLmgiIDEKIyAzNCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2lu Y2x1ZGUvYmlvc19wYXJzZXJfdHlwZXMuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2xpbmtfc2VydmljZV90eXBlcy5oIiAxCiMgMzUgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2Jpb3NfcGFyc2Vy X3R5cGVzLmgiIDIKCgplbnVtIGFzX3NpZ25hbF90eXBlIHsKIEFTX1NJR05BTF9UWVBFX05PTkUg PSAwTCwKIEFTX1NJR05BTF9UWVBFX0RWSSwKIEFTX1NJR05BTF9UWVBFX0hETUksCiBBU19TSUdO QUxfVFlQRV9MVkRTLAogQVNfU0lHTkFMX1RZUEVfRElTUExBWV9QT1JULAogQVNfU0lHTkFMX1RZ UEVfR1BVX1BMTCwKIEFTX1NJR05BTF9UWVBFX1hHTUksCiBBU19TSUdOQUxfVFlQRV9VTktOT1dO Cn07CgplbnVtIGJwX3Jlc3VsdCB7CiBCUF9SRVNVTFRfT0sgPSAwLAogQlBfUkVTVUxUX0JBRElO UFVULAogQlBfUkVTVUxUX0JBREJJT1NUQUJMRSwKIEJQX1JFU1VMVF9VTlNVUFBPUlRFRCwKIEJQ X1JFU1VMVF9OT1JFQ09SRCwKIEJQX1JFU1VMVF9GQUlMVVJFCn07CgplbnVtIGJwX2VuY29kZXJf Y29udHJvbF9hY3Rpb24gewoKIEVOQ09ERVJfQ09OVFJPTF9ESVNBQkxFID0gMCwKIEVOQ09ERVJf Q09OVFJPTF9FTkFCTEUsCiBFTkNPREVSX0NPTlRST0xfU0VUVVAsCiBFTkNPREVSX0NPTlRST0xf SU5JVAp9OwoKZW51bSBicF90cmFuc21pdHRlcl9jb250cm9sX2FjdGlvbiB7CgogVFJBTlNNSVRU RVJfQ09OVFJPTF9ESVNBQkxFID0gMCwKIFRSQU5TTUlUVEVSX0NPTlRST0xfRU5BQkxFLAogVFJB TlNNSVRURVJfQ09OVFJPTF9CQUNLTElHSFRfT0ZGLAogVFJBTlNNSVRURVJfQ09OVFJPTF9CQUNL TElHSFRfT04sCiBUUkFOU01JVFRFUl9DT05UUk9MX0JBQ0tMSUdIVF9CUklHSFRORVNTLAogVFJB TlNNSVRURVJfQ09OVFJPTF9MQ0RfU0VURl9URVNUX1NUQVJULAogVFJBTlNNSVRURVJfQ09OVFJP TF9MQ0RfU0VMRl9URVNUX1NUT1AsCiBUUkFOU01JVFRFUl9DT05UUk9MX0lOSVQsCiBUUkFOU01J VFRFUl9DT05UUk9MX0RFQUNUSVZBVEUsCiBUUkFOU01JVFRFUl9DT05UUk9MX0FDVElBVkFURSwK IFRSQU5TTUlUVEVSX0NPTlRST0xfU0VUVVAsCiBUUkFOU01JVFRFUl9DT05UUk9MX1NFVF9WT0xU QUdFX0FORF9QUkVFTVBBU0lTLAoKCgogVFJBTlNNSVRURVJfQ09OVFJPTF9QT1dFUl9PTiwKCgoK IFRSQU5TTUlUVEVSX0NPTlRST0xfUE9XRVJfT0ZGCn07CgplbnVtIGJwX2V4dGVybmFsX2VuY29k ZXJfY29udHJvbF9hY3Rpb24gewogRVhURVJOQUxfRU5DT0RFUl9DT05UUk9MX0RJU0FCTEUgPSAw LAogRVhURVJOQUxfRU5DT0RFUl9DT05UUk9MX0VOQUJMRSA9IDEsCiBFWFRFUk5BTF9FTkNPREVS X0NPTlRST0xfSU5JVCA9IDB4NywKIEVYVEVSTkFMX0VOQ09ERVJfQ09OVFJPTF9TRVRVUCA9IDB4 ZiwKIEVYVEVSTkFMX0VOQ09ERVJfQ09OVFJPTF9VTkJMQU5LID0gMHgxMCwKIEVYVEVSTkFMX0VO Q09ERVJfQ09OVFJPTF9CTEFOSyA9IDB4MTEsCn07CgplbnVtIGJwX3BpcGVfY29udHJvbF9hY3Rp b24gewogQVNJQ19QSVBFX0RJU0FCTEUgPSAwLAogQVNJQ19QSVBFX0VOQUJMRSwKIEFTSUNfUElQ RV9JTklUCn07CgpzdHJ1Y3QgYnBfZW5jb2Rlcl9jb250cm9sIHsKIGVudW0gYnBfZW5jb2Rlcl9j b250cm9sX2FjdGlvbiBhY3Rpb247CiBlbnVtIGVuZ2luZV9pZCBlbmdpbmVfaWQ7CiBlbnVtIHRy YW5zbWl0dGVyIHRyYW5zbWl0dGVyOwogZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CiBlbnVtIGRj X2xhbmVfY291bnQgbGFuZXNfbnVtYmVyOwogZW51bSBkY19jb2xvcl9kZXB0aCBjb2xvcl9kZXB0 aDsKIGJvb2wgZW5hYmxlX2RwX2F1ZGlvOwogdWludDMyX3QgcGl4ZWxfY2xvY2s7Cn07CgpzdHJ1 Y3QgYnBfZXh0ZXJuYWxfZW5jb2Rlcl9jb250cm9sIHsKIGVudW0gYnBfZXh0ZXJuYWxfZW5jb2Rl cl9jb250cm9sX2FjdGlvbiBhY3Rpb247CiBlbnVtIGVuZ2luZV9pZCBlbmdpbmVfaWQ7CiBlbnVt IGRjX2xpbmtfcmF0ZSBsaW5rX3JhdGU7CiBlbnVtIGRjX2xhbmVfY291bnQgbGFuZXNfbnVtYmVy OwogZW51bSBzaWduYWxfdHlwZSBzaWduYWw7CiBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2Rl cHRoOwogYm9vbCBjb2hlcmVudDsKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgZW5jb2Rlcl9p ZDsKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yX29ial9pZDsKIHVpbnQzMl90 IHBpeGVsX2Nsb2NrOwp9OwoKc3RydWN0IGJwX2NydGNfc291cmNlX3NlbGVjdCB7CiBlbnVtIGVu Z2luZV9pZCBlbmdpbmVfaWQ7CiBlbnVtIGNvbnRyb2xsZXJfaWQgY29udHJvbGxlcl9pZDsKCiBl bnVtIHNpZ25hbF90eXBlIHNpZ25hbDsKCiBlbnVtIHNpZ25hbF90eXBlIHNpbmtfc2lnbmFsOwog ZW51bSBkaXNwbGF5X291dHB1dF9iaXRfZGVwdGggZGlzcGxheV9vdXRwdXRfYml0X2RlcHRoOwog Ym9vbCBlbmFibGVfZHBfYXVkaW87Cn07CgpzdHJ1Y3QgYnBfdHJhbnNtaXR0ZXJfY29udHJvbCB7 CiBlbnVtIGJwX3RyYW5zbWl0dGVyX2NvbnRyb2xfYWN0aW9uIGFjdGlvbjsKIGVudW0gZW5naW5l X2lkIGVuZ2luZV9pZDsKIGVudW0gdHJhbnNtaXR0ZXIgdHJhbnNtaXR0ZXI7CiBlbnVtIGRjX2xh bmVfY291bnQgbGFuZXNfbnVtYmVyOwogZW51bSBjbG9ja19zb3VyY2VfaWQgcGxsX2lkOwogZW51 bSBzaWduYWxfdHlwZSBzaWduYWw7CiBlbnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRoOwog ZW51bSBocGRfc291cmNlX2lkIGhwZF9zZWw7CiBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGNv bm5lY3Rvcl9vYmpfaWQ7CgoKCiB1aW50MzJfdCBwaXhlbF9jbG9jazsKIHVpbnQzMl90IGxhbmVf c2VsZWN0OwogdWludDMyX3QgbGFuZV9zZXR0aW5nczsKIGJvb2wgY29oZXJlbnQ7CiBib29sIG11 bHRpX3BhdGg7CiBib29sIHNpbmdsZV9wbGxfbW9kZTsKfTsKCnN0cnVjdCBicF9od19jcnRjX3Rp bWluZ19wYXJhbWV0ZXJzIHsKIGVudW0gY29udHJvbGxlcl9pZCBjb250cm9sbGVyX2lkOwoKIHVp bnQzMl90IGhfdG90YWw7CiB1aW50MzJfdCBoX2FkZHJlc3NhYmxlOwogdWludDMyX3QgaF9vdmVy c2Nhbl9sZWZ0OwogdWludDMyX3QgaF9vdmVyc2Nhbl9yaWdodDsKIHVpbnQzMl90IGhfc3luY19z dGFydDsKIHVpbnQzMl90IGhfc3luY193aWR0aDsKCgogdWludDMyX3Qgdl90b3RhbDsKIHVpbnQz Ml90IHZfYWRkcmVzc2FibGU7CiB1aW50MzJfdCB2X292ZXJzY2FuX3RvcDsKIHVpbnQzMl90IHZf b3ZlcnNjYW5fYm90dG9tOwogdWludDMyX3Qgdl9zeW5jX3N0YXJ0OwogdWludDMyX3Qgdl9zeW5j X3dpZHRoOwoKIHN0cnVjdCB0aW1pbmdfZmxhZ3MgewogIHVpbnQzMl90IElOVEVSTEFDRToxOwog IHVpbnQzMl90IFBJWEVMX1JFUEVUSVRJT046NDsKICB1aW50MzJfdCBIU1lOQ19QT1NJVElWRV9Q T0xBUklUWToxOwogIHVpbnQzMl90IFZTWU5DX1BPU0lUSVZFX1BPTEFSSVRZOjE7CiAgdWludDMy X3QgSE9SWl9DT1VOVF9CWV9UV086MTsKIH0gZmxhZ3M7Cn07CgpzdHJ1Y3QgYnBfYWRqdXN0X3Bp eGVsX2Nsb2NrX3BhcmFtZXRlcnMgewoKIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsX3R5cGU7Cgog c3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBlbmNvZGVyX29iamVjdF9pZDsKCgoKIHVpbnQzMl90 IHBpeGVsX2Nsb2NrOwoKIHVpbnQzMl90IGFkanVzdGVkX3BpeGVsX2Nsb2NrOwoKCiB1aW50MzJf dCByZWZlcmVuY2VfZGl2aWRlcjsKCgogdWludDMyX3QgcGl4ZWxfY2xvY2tfcG9zdF9kaXZpZGVy OwoKIGJvb2wgc3NfZW5hYmxlOwp9OwoKc3RydWN0IGJwX3BpeGVsX2Nsb2NrX3BhcmFtZXRlcnMg ewogZW51bSBjb250cm9sbGVyX2lkIGNvbnRyb2xsZXJfaWQ7CiBlbnVtIGNsb2NrX3NvdXJjZV9p ZCBwbGxfaWQ7CgogZW51bSBzaWduYWxfdHlwZSBzaWduYWxfdHlwZTsKCgogdWludDMyX3QgdGFy Z2V0X3BpeGVsX2Nsb2NrXzEwMGh6OwoKIHVpbnQzMl90IHJlZmVyZW5jZV9kaXZpZGVyOwoKIHVp bnQzMl90IGZlZWRiYWNrX2RpdmlkZXI7CgogdWludDMyX3QgZnJhY3Rpb25hbF9mZWVkYmFja19k aXZpZGVyOwoKIHVpbnQzMl90IHBpeGVsX2Nsb2NrX3Bvc3RfZGl2aWRlcjsKIHN0cnVjdCBncmFw aGljc19vYmplY3RfaWQgZW5jb2Rlcl9vYmplY3RfaWQ7CgoKIHVpbnQzMl90IGRmc19ieXBhc3Nf ZGlzcGxheV9jbG9jazsKCiBlbnVtIHRyYW5zbWl0dGVyX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRo OwoKIHN0cnVjdCBwcm9ncmFtX3BpeGVsX2Nsb2NrX2ZsYWdzIHsKICB1aW50MzJfdCBGT1JDRV9Q Uk9HUkFNTUlOR19PRl9QTEw6MTsKCgogIHVpbnQzMl90IFVTRV9FX0NMT0NLX0FTX1NPVVJDRV9G T1JfRF9DTE9DSzoxOwoKICB1aW50MzJfdCBTRVRfRVhURVJOQUxfUkVGX0RJVl9TUkM6MTsKCiAg dWludDMyX3QgU0VUX0RJU1BDTEtfREZTX0JZUEFTUzoxOwoKICB1aW50MzJfdCBQUk9HUkFNX1BI WV9QTExfT05MWToxOwoKICB1aW50MzJfdCBTVVBQT1JUX1lVVl80MjA6MTsKCiAgdWludDMyX3Qg U0VUX1hUQUxJTl9SRUZfU1JDOjE7CgogIHVpbnQzMl90IFNFVF9HRU5MT0NLX1JFRl9ESVZfU1JD OjE7CiB9IGZsYWdzOwp9OwoKZW51bSBicF9kY2VfY2xvY2tfdHlwZSB7CiBEQ0VDTE9DS19UWVBF X0RJU1BMQVlfQ0xPQ0sgPSAwLAogRENFQ0xPQ0tfVFlQRV9EUFJFRkNMSyA9IDEKfTsKCgpzdHJ1 Y3QgYnBfc2V0X2RjZV9jbG9ja19wYXJhbWV0ZXJzIHsKIGVudW0gY2xvY2tfc291cmNlX2lkIHBs bF9pZDsKCiB1aW50MzJfdCB0YXJnZXRfY2xvY2tfZnJlcXVlbmN5OwoKIGVudW0gYnBfZGNlX2Ns b2NrX3R5cGUgY2xvY2tfdHlwZTsKCiBzdHJ1Y3Qgc2V0X2RjZV9jbG9ja19mbGFncyB7CiAgdWlu dDMyX3QgVVNFX0dFTkVSSUNBX0FTX1NPVVJDRV9GT1JfRFBSRUZDTEs6MTsKCiAgdWludDMyX3Qg VVNFX1hUQUxJTl9BU19TT1VSQ0VfRk9SX0RQUkVGQ0xLOjE7CgogIHVpbnQzMl90IFVTRV9QQ0lF X0FTX1NPVVJDRV9GT1JfRFBSRUZDTEs6MTsKCiAgdWludDMyX3QgVVNFX0dFTkxPQ0tfQVNfU09V UkNFX0ZPUl9EUFJFRkNMSzoxOwogfSBmbGFnczsKfTsKCnN0cnVjdCBzcHJlYWRfc3BlY3RydW1f ZmxhZ3MgewoKIHVpbnQzMl90IENFTlRFUl9TUFJFQUQ6MTsKCiB1aW50MzJfdCBFWFRFUk5BTF9T UzoxOwoKIHVpbnQzMl90IERTX1RZUEU6MTsKfTsKCnN0cnVjdCBicF9zcHJlYWRfc3BlY3RydW1f cGFyYW1ldGVycyB7CiBlbnVtIGNsb2NrX3NvdXJjZV9pZCBwbGxfaWQ7CiB1aW50MzJfdCBwZXJj ZW50YWdlOwogdWludDMyX3QgZHNfZnJhY19hbW91bnQ7CgogdW5pb24gewogIHN0cnVjdCB7CiAg IHVpbnQzMl90IHN0ZXA7CiAgIHVpbnQzMl90IGRlbGF5OwogICB1aW50MzJfdCByYW5nZTsKICB9 IHZlcjE7CiAgc3RydWN0IHsKICAgdWludDMyX3QgZmVlZGJhY2tfYW1vdW50OwogICB1aW50MzJf dCBuZnJhY19hbW91bnQ7CiAgIHVpbnQzMl90IGRzX2ZyYWNfc2l6ZTsKICB9IGRzOwogfTsKCiBz dHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX2ZsYWdzIGZsYWdzOwp9OwoKc3RydWN0IGJwX2VuY29kZXJf Y2FwX2luZm8gewogdWludDMyX3QgRFBfSEJSMl9DQVA6MTsKIHVpbnQzMl90IERQX0hCUjJfRU46 MTsKIHVpbnQzMl90IERQX0hCUjNfRU46MTsKIHVpbnQzMl90IEhETUlfNkdCX0VOOjE7CiB1aW50 MzJfdCBEUF9JU19VU0JfQzoxOwogdWludDMyX3QgUkVTRVJWRUQ6Mjc7Cn07CiMgMzIgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY2xvY2tfc291cmNlLmgi IDIKCnN0cnVjdCBjbG9ja19zb3VyY2U7CgpzdHJ1Y3Qgc3ByZWFkX3NwZWN0cnVtX2RhdGEgewog dWludDMyX3QgcGVyY2VudGFnZTsKIHVpbnQzMl90IHBlcmNlbnRhZ2VfZGl2aWRlcjsKIHVpbnQz Ml90IGZyZXFfcmFuZ2Vfa2h6OwogdWludDMyX3QgbW9kdWxhdGlvbl9mcmVxX2h6OwoKIHN0cnVj dCBzcHJlYWRfc3BlY3RydW1fZmxhZ3MgZmxhZ3M7Cn07CgpzdHJ1Y3QgZGVsdGFfc2lnbWFfZGF0 YSB7CiB1aW50MzJfdCBmZWVkYmFja19hbW91bnQ7CiB1aW50MzJfdCBuZnJhY19hbW91bnQ7CiB1 aW50MzJfdCBkc19mcmFjX3NpemU7CiB1aW50MzJfdCBkc19mcmFjX2Ftb3VudDsKfTsKCgoKCgoK c3RydWN0IHBpeGVsX2Nsa19mbGFncyB7CiB1aW50MzJfdCBFTkFCTEVfU1M6MTsKIHVpbnQzMl90 IERJU1BMQVlfQkxBTktFRDoxOwogdWludDMyX3QgUFJPR1JBTV9QSVhFTF9DTE9DSzoxOwogdWlu dDMyX3QgUFJPR1JBTV9JRF9DTE9DSzoxOwogdWludDMyX3QgU1VQUE9SVF9ZQ0JDUjQyMDoxOwp9 OwoKCgoKCnN0cnVjdCBjc2RwX3JlZl9jbGtfZHNfcGFyYW1zIHsKIGJvb2wgaHdfZHNvX25fZHBf cmVmX2NsazsKCiB1aW50MzJfdCBhdmdfZHBfcmVmX2Nsa19raHo7CgogdWludDMyX3Qgc3NfcGVy Y2VudGFnZV9vbl9kcF9yZWZfY2xrOwoKCiB1aW50MzJfdCBzc19wZXJjZW50YWdlX2RpdmlkZXI7 Cgp9OwoKc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgewogdWludDMyX3QgcmVxdWVzdGVkX3BpeF9j bGtfMTAwaHo7CgoKIHVpbnQzMl90IHJlcXVlc3RlZF9zeW1fY2xrOwoKIHVpbnQzMl90IGRwX3Jl Zl9jbGs7Cgogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBlbmNvZGVyX29iamVjdF9pZDsKCiBl bnVtIHNpZ25hbF90eXBlIHNpZ25hbF90eXBlOwoKIGVudW0gY29udHJvbGxlcl9pZCBjb250cm9s bGVyX2lkOwoKIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CiBzdHJ1Y3QgY3NkcF9y ZWZfY2xrX2RzX3BhcmFtcyBkZV9zcHJlYWRfcGFyYW1zOwoKIGVudW0gZGNfcGl4ZWxfZW5jb2Rp bmcgcGl4ZWxfZW5jb2Rpbmc7CiBzdHJ1Y3QgcGl4ZWxfY2xrX2ZsYWdzIGZsYWdzOwp9OwoKCgoK CgpzdHJ1Y3QgcGxsX3NldHRpbmdzIHsKIHVpbnQzMl90IGFjdHVhbF9waXhfY2xrXzEwMGh6Owog dWludDMyX3QgYWRqdXN0ZWRfcGl4X2Nsa18xMDBoejsKIHVpbnQzMl90IGNhbGN1bGF0ZWRfcGl4 X2Nsa18xMDBoejsKIHVpbnQzMl90IHZjb19mcmVxOwogdWludDMyX3QgcmVmZXJlbmNlX2ZyZXE7 CiB1aW50MzJfdCByZWZlcmVuY2VfZGl2aWRlcjsKIHVpbnQzMl90IGZlZWRiYWNrX2RpdmlkZXI7 CiB1aW50MzJfdCBmcmFjdF9mZWVkYmFja19kaXZpZGVyOwogdWludDMyX3QgcGl4X2Nsa19wb3N0 X2RpdmlkZXI7CiB1aW50MzJfdCBzc19wZXJjZW50YWdlOwogYm9vbCB1c2VfZXh0ZXJuYWxfY2xr Owp9OwoKc3RydWN0IGNhbGNfcGxsX2Nsb2NrX3NvdXJjZV9pbml0X2RhdGEgewogc3RydWN0IGRj X2Jpb3MgKmJwOwogdWludDMyX3QgbWluX3BpeF9jbGtfcGxsX3Bvc3RfZGl2aWRlcjsKIHVpbnQz Ml90IG1heF9waXhfY2xrX3BsbF9wb3N0X2RpdmlkZXI7CiB1aW50MzJfdCBtaW5fcGxsX3JlZl9k aXZpZGVyOwogdWludDMyX3QgbWF4X3BsbF9yZWZfZGl2aWRlcjsKIHVpbnQzMl90IG1pbl9vdmVy cmlkZV9pbnB1dF9weGxfY2xrX3BsbF9mcmVxX2toejsKCgogdWludDMyX3QgbWF4X292ZXJyaWRl X2lucHV0X3B4bF9jbGtfcGxsX2ZyZXFfa2h6OwoKCiB1aW50MzJfdCBudW1fZnJhY3RfZmJfZGl2 aWRlcl9kZWNpbWFsX3BvaW50OwoKCiB1aW50MzJfdCBudW1fZnJhY3RfZmJfZGl2aWRlcl9kZWNp bWFsX3BvaW50X3ByZWNpc2lvbjsKCiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoKfTsKCnN0cnVj dCBjYWxjX3BsbF9jbG9ja19zb3VyY2UgewogdWludDMyX3QgcmVmX2ZyZXFfa2h6OwogdWludDMy X3QgbWluX3BpeF9jbG9ja19wbGxfcG9zdF9kaXZpZGVyOwogdWludDMyX3QgbWF4X3BpeF9jbG9j a19wbGxfcG9zdF9kaXZpZGVyOwogdWludDMyX3QgbWluX3BsbF9yZWZfZGl2aWRlcjsKIHVpbnQz Ml90IG1heF9wbGxfcmVmX2RpdmlkZXI7CgogdWludDMyX3QgbWF4X3Zjb19raHo7CiB1aW50MzJf dCBtaW5fdmNvX2toejsKIHVpbnQzMl90IG1pbl9wbGxfaW5wdXRfZnJlcV9raHo7CiB1aW50MzJf dCBtYXhfcGxsX2lucHV0X2ZyZXFfa2h6OwoKIHVpbnQzMl90IGZyYWN0X2ZiX2RpdmlkZXJfZGVj aW1hbF9wb2ludHNfbnVtOwogdWludDMyX3QgZnJhY3RfZmJfZGl2aWRlcl9mYWN0b3I7CiB1aW50 MzJfdCBmcmFjdF9mYl9kaXZpZGVyX3ByZWNpc2lvbjsKIHVpbnQzMl90IGZyYWN0X2ZiX2Rpdmlk ZXJfcHJlY2lzaW9uX2ZhY3RvcjsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7Cn07CgpzdHJ1Y3Qg Y2xvY2tfc291cmNlX2Z1bmNzIHsKIGJvb2wgKCpjc19wb3dlcl9kb3duKSgKICAgc3RydWN0IGNs b2NrX3NvdXJjZSAqKTsKIGJvb2wgKCpwcm9ncmFtX3BpeF9jbGspKHN0cnVjdCBjbG9ja19zb3Vy Y2UgKiwKICAgc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgKiwgc3RydWN0IHBsbF9zZXR0aW5ncyAq KTsKIHVpbnQzMl90ICgqZ2V0X3BpeF9jbGtfZGl2aWRlcnMpKAogICBzdHJ1Y3QgY2xvY2tfc291 cmNlICosCiAgIHN0cnVjdCBwaXhlbF9jbGtfcGFyYW1zICosCiAgIHN0cnVjdCBwbGxfc2V0dGlu Z3MgKik7CiBib29sICgqZ2V0X3BpeGVsX2Nsa19mcmVxdWVuY3lfMTAwaHopKAogICBjb25zdCBz dHJ1Y3QgY2xvY2tfc291cmNlICpjbG9ja19zb3VyY2UsCiAgIHVuc2lnbmVkIGludCBpbnN0LAog ICB1bnNpZ25lZCBpbnQgKnBpeGVsX2Nsa19raHopOwp9OwoKc3RydWN0IGNsb2NrX3NvdXJjZSB7 CiBjb25zdCBzdHJ1Y3QgY2xvY2tfc291cmNlX2Z1bmNzICpmdW5jczsKIHN0cnVjdCBkY19jb250 ZXh0ICpjdHg7CiBlbnVtIGNsb2NrX3NvdXJjZV9pZCBpZDsKIGJvb2wgZHBfY2xrX3NyYzsKfTsK IyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9od19z ZXF1ZW5jZXIuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9pbmMvaHcvdGltaW5nX2dlbmVyYXRvci5oIiAxCiMgMzEgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvdGltaW5nX2dlbmVyYXRvci5oIgpzdHJ1 Y3QgZGNfYmlvczsKCgpzdHJ1Y3QgY3J0Y19wb3NpdGlvbiB7CiBpbnQzMl90IHZlcnRpY2FsX2Nv dW50OwogaW50MzJfdCBob3Jpem9udGFsX2NvdW50OwogaW50MzJfdCBub21pbmFsX3Zjb3VudDsK fTsKCnN0cnVjdCBkY3BfZ3NsX3BhcmFtcyB7CiBpbnQgZ3NsX2dyb3VwOwogaW50IGdzbF9tYXN0 ZXI7Cn07CgpzdHJ1Y3QgZ3NsX3BhcmFtcyB7CiBpbnQgZ3NsMF9lbjsKIGludCBnc2wxX2VuOwog aW50IGdzbDJfZW47CiBpbnQgZ3NsX21hc3Rlcl9lbjsKIGludCBnc2xfbWFzdGVyX21vZGU7CiBp bnQgbWFzdGVyX3VwZGF0ZV9sb2NrX2dzbF9lbjsKIGludCBnc2xfd2luZG93X3N0YXJ0X3g7CiBp bnQgZ3NsX3dpbmRvd19lbmRfeDsKIGludCBnc2xfd2luZG93X3N0YXJ0X3k7CiBpbnQgZ3NsX3dp bmRvd19lbmRfeTsKfTsKCgpzdHJ1Y3QgZHJyX3BhcmFtcyB7CiB1aW50MzJfdCB2ZXJ0aWNhbF90 b3RhbF9taW47CiB1aW50MzJfdCB2ZXJ0aWNhbF90b3RhbF9tYXg7CiB1aW50MzJfdCB2ZXJ0aWNh bF90b3RhbF9taWQ7CiB1aW50MzJfdCB2ZXJ0aWNhbF90b3RhbF9taWRfZnJhbWVfbnVtOwogYm9v bCBpbW1lZGlhdGVfZmxpcDsKfTsKCgoKCmVudW0gY3J0Y19zdGF0ZSB7CiBDUlRDX1NUQVRFX1ZC TEFOSyA9IDAsCiBDUlRDX1NUQVRFX1ZBQ1RJVkUKfTsKCnN0cnVjdCB2dXBkYXRlX2tlZXBvdXRf cGFyYW1zIHsKIGludCBzdGFydF9vZmZzZXQ7CiBpbnQgZW5kX29mZnNldDsKIGludCBlbmFibGU7 Cn07CgpzdHJ1Y3QgY3J0Y19zdGVyZW9fZmxhZ3MgewogdWludDhfdCBQUk9HUkFNX1NURVJFTyA6 IDE7CiB1aW50OF90IFBST0dSQU1fUE9MQVJJVFkgOiAxOwogdWludDhfdCBSSUdIVF9FWUVfUE9M QVJJVFkgOiAxOwogdWludDhfdCBGUkFNRV9QQUNLRUQgOiAxOwogdWludDhfdCBESVNBQkxFX1NU RVJFT19EUF9TWU5DIDogMTsKfTsKCmVudW0gY3JjX3NlbGVjdGlvbiB7CgogVU5JT05fV0lORE9X X0FfQiA9IDAsCiBVTklPTl9XSU5ET1dfQV9OT1RfQiwKIFVOSU9OX1dJTkRPV19OT1RfQV9CLAog VU5JT05fV0lORE9XX05PVF9BX05PVF9CLAogSU5URVJTRUNUX1dJTkRPV19BX0IsCiBJTlRFUlNF Q1RfV0lORE9XX0FfTk9UX0IsCiBJTlRFUlNFQ1RfV0lORE9XX05PVF9BX0IsCiBJTlRFUlNFQ1Rf V0lORE9XX05PVF9BX05PVF9CLAp9OwoKZW51bSBoX3RpbWluZ19kaXZfbW9kZSB7CiBIX1RJTUlO R19OT19ESVYsCiBIX1RJTUlOR19ESVZfQlkyLAp9OwoKc3RydWN0IGNyY19wYXJhbXMgewoKIHVp bnQxNl90IHdpbmRvd2FfeF9zdGFydDsKIHVpbnQxNl90IHdpbmRvd2FfeF9lbmQ7CiB1aW50MTZf dCB3aW5kb3dhX3lfc3RhcnQ7CiB1aW50MTZfdCB3aW5kb3dhX3lfZW5kOwoKIHVpbnQxNl90IHdp bmRvd2JfeF9zdGFydDsKIHVpbnQxNl90IHdpbmRvd2JfeF9lbmQ7CiB1aW50MTZfdCB3aW5kb3di X3lfc3RhcnQ7CiB1aW50MTZfdCB3aW5kb3diX3lfZW5kOwoKIGVudW0gY3JjX3NlbGVjdGlvbiBz ZWxlY3Rpb247CgogYm9vbCBjb250aW51b3VzX21vZGU7CiBib29sIGVuYWJsZTsKfTsKCnN0cnVj dCB0aW1pbmdfZ2VuZXJhdG9yIHsKIGNvbnN0IHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yX2Z1bmNz ICpmdW5jczsKIHN0cnVjdCBkY19iaW9zICpicDsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CiBp bnQgaW5zdDsKfTsKCnN0cnVjdCBkY19jcnRjX3RpbWluZzsKCnN0cnVjdCBkcnJfcGFyYW1zOwoK CnN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yX2Z1bmNzIHsKIGJvb2wgKCp2YWxpZGF0ZV90aW1pbmcp KHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICAgICAgIGNvbnN0IHN0cnVjdCBkY19jcnRj X3RpbWluZyAqdGltaW5nKTsKIHZvaWQgKCpwcm9ncmFtX3RpbWluZykoc3RydWN0IHRpbWluZ19n ZW5lcmF0b3IgKnRnLAogICAgICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcs CiAgICAgICBpbnQgdnJlYWR5X29mZnNldCwKICAgICAgIGludCB2c3RhcnR1cF9zdGFydCwKICAg ICAgIGludCB2dXBkYXRlX29mZnNldCwKICAgICAgIGludCB2dXBkYXRlX3dpZHRoLAogICAgICAg Y29uc3QgZW51bSBzaWduYWxfdHlwZSBzaWduYWwsCiAgICAgICBib29sIHVzZV92YmlvcwogKTsK IHZvaWQgKCpzZXR1cF92ZXJ0aWNhbF9pbnRlcnJ1cHQwKSgKICAgc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKm9wdGMsCiAgIHVpbnQzMl90IHN0YXJ0X2xpbmUsCiAgIHVpbnQzMl90IGVuZF9saW5l KTsKIHZvaWQgKCpzZXR1cF92ZXJ0aWNhbF9pbnRlcnJ1cHQxKSgKICAgc3RydWN0IHRpbWluZ19n ZW5lcmF0b3IgKm9wdGMsCiAgIHVpbnQzMl90IHN0YXJ0X2xpbmUpOwogdm9pZCAoKnNldHVwX3Zl cnRpY2FsX2ludGVycnVwdDIpKAogICBzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKICAg dWludDMyX3Qgc3RhcnRfbGluZSk7CgogYm9vbCAoKmVuYWJsZV9jcnRjKShzdHJ1Y3QgdGltaW5n X2dlbmVyYXRvciAqdGcpOwogYm9vbCAoKmRpc2FibGVfY3J0Yykoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnKTsKIGJvb2wgKCppc19jb3VudGVyX21vdmluZykoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnKTsKIHZvaWQgKCpnZXRfcG9zaXRpb24pKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9y ICp0ZywKICAgIHN0cnVjdCBjcnRjX3Bvc2l0aW9uICpwb3NpdGlvbik7CgogdWludDMyX3QgKCpn ZXRfZnJhbWVfY291bnQpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7CiB2b2lkICgqZ2V0 X3NjYW5vdXRwb3MpKAogIHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICB1aW50MzJfdCAq dl9ibGFua19zdGFydCwKICB1aW50MzJfdCAqdl9ibGFua19lbmQsCiAgdWludDMyX3QgKmhfcG9z aXRpb24sCiAgdWludDMyX3QgKnZfcG9zaXRpb24pOwogYm9vbCAoKmdldF9vdGdfYWN0aXZlX3Np emUpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICpvcHRjLAogICB1aW50MzJfdCAqb3RnX2FjdGl2 ZV93aWR0aCwKICAgdWludDMyX3QgKm90Z19hY3RpdmVfaGVpZ2h0KTsKIGJvb2wgKCppc19tYXRj aGluZ190aW1pbmcpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICAgY29uc3Qgc3RydWN0 IGRjX2NydGNfdGltaW5nICpvdGdfdGltaW5nKTsKIHZvaWQgKCpzZXRfZWFybHlfY29udHJvbCko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAogICAgICAgICAgdWludDMyX3QgZWFybHlfY250 bCk7CiB2b2lkICgqd2FpdF9mb3Jfc3RhdGUpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywK ICAgICAgIGVudW0gY3J0Y19zdGF0ZSBzdGF0ZSk7CiB2b2lkICgqc2V0X2JsYW5rKShzdHJ1Y3Qg dGltaW5nX2dlbmVyYXRvciAqdGcsCiAgICAgYm9vbCBlbmFibGVfYmxhbmtpbmcpOwogYm9vbCAo KmlzX2JsYW5rZWQpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7CiB2b2lkICgqc2V0X292 ZXJzY2FuX2JsYW5rX2NvbG9yKSAoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCBjb25zdCBz dHJ1Y3QgdGdfY29sb3IgKmNvbG9yKTsKIHZvaWQgKCpzZXRfYmxhbmtfY29sb3IpKHN0cnVjdCB0 aW1pbmdfZ2VuZXJhdG9yICp0ZywgY29uc3Qgc3RydWN0IHRnX2NvbG9yICpjb2xvcik7CiB2b2lk ICgqc2V0X2NvbG9ycykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAogICAgICBjb25zdCBz dHJ1Y3QgdGdfY29sb3IgKmJsYW5rX2NvbG9yLAogICAgICBjb25zdCBzdHJ1Y3QgdGdfY29sb3Ig Km92ZXJzY2FuX2NvbG9yKTsKCiB2b2lkICgqZGlzYWJsZV92Z2EpKHN0cnVjdCB0aW1pbmdfZ2Vu ZXJhdG9yICp0Zyk7CiBib29sICgqZGlkX3RyaWdnZXJlZF9yZXNldF9vY2N1cikoc3RydWN0IHRp bWluZ19nZW5lcmF0b3IgKnRnKTsKIHZvaWQgKCpzZXR1cF9nbG9iYWxfc3dhcF9sb2NrKShzdHJ1 Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCiAgICAgICBjb25zdCBzdHJ1Y3QgZGNwX2dzbF9wYXJh bXMgKmdzbF9wYXJhbXMpOwogdm9pZCAoKnVubG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3Ig KnRnKTsKIHZvaWQgKCpsb2NrKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcpOwogdm9pZCAo KmxvY2tfZG91YmxlYnVmZmVyX2Rpc2FibGUpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7 CiB2b2lkICgqbG9ja19kb3VibGVidWZmZXJfZW5hYmxlKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRv ciAqdGcpOwogdm9pZCgqdHJpcGxlYnVmZmVyX3VubG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0 b3IgKnRnKTsKIHZvaWQoKnRyaXBsZWJ1ZmZlcl9sb2NrKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRv ciAqdGcpOwogdm9pZCAoKmVuYWJsZV9yZXNldF90cmlnZ2VyKShzdHJ1Y3QgdGltaW5nX2dlbmVy YXRvciAqdGcsCiAgICAgICAgIGludCBzb3VyY2VfdGdfaW5zdCk7CiB2b2lkICgqZW5hYmxlX2Ny dGNfcmVzZXQpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICAgICAgaW50IHNvdXJjZV90 Z19pbnN0LAogICAgICBzdHJ1Y3QgY3J0Y190cmlnZ2VyX2luZm8gKmNydGNfdHApOwogdm9pZCAo KmRpc2FibGVfcmVzZXRfdHJpZ2dlcikoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKIHZv aWQgKCp0ZWFyX2Rvd25fZ2xvYmFsX3N3YXBfbG9jaykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3Ig KnRnKTsKIHZvaWQgKCplbmFibGVfYWR2YW5jZWRfcmVxdWVzdCkoc3RydWN0IHRpbWluZ19nZW5l cmF0b3IgKnRnLAogICAgIGJvb2wgZW5hYmxlLCBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcg KnRpbWluZyk7CiB2b2lkICgqc2V0X2Rycikoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCBj b25zdCBzdHJ1Y3QgZHJyX3BhcmFtcyAqcGFyYW1zKTsKIHZvaWQgKCpzZXRfc3RhdGljX3NjcmVl bl9jb250cm9sKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCiAgICAgIHVpbnQzMl90IGV2 ZW50X3RyaWdnZXJzLAogICAgICB1aW50MzJfdCBudW1fZnJhbWVzKTsKIHZvaWQgKCpzZXRfdGVz dF9wYXR0ZXJuKSgKICBzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqdGcsCiAgZW51bSBjb250cm9s bGVyX2RwX3Rlc3RfcGF0dGVybiB0ZXN0X3BhdHRlcm4sCiAgZW51bSBkY19jb2xvcl9kZXB0aCBj b2xvcl9kZXB0aCk7CgogYm9vbCAoKmFybV92ZXJ0X2ludHIpKHN0cnVjdCB0aW1pbmdfZ2VuZXJh dG9yICp0ZywgdWludDhfdCB3aWR0aCk7Cgogdm9pZCAoKnByb2dyYW1fZ2xvYmFsX3N5bmMpKHN0 cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywKICAgaW50IHZyZWFkeV9vZmZzZXQsCiAgIGludCB2 c3RhcnR1cF9zdGFydCwKICAgaW50IHZ1cGRhdGVfb2Zmc2V0LAogICBpbnQgdnVwZGF0ZV93aWR0 aCk7CiB2b2lkICgqZW5hYmxlX29wdGNfY2xvY2spKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0 ZywgYm9vbCBlbmFibGUpOwogdm9pZCAoKnByb2dyYW1fc3RlcmVvKShzdHJ1Y3QgdGltaW5nX2dl bmVyYXRvciAqdGcsCiAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICp0aW1pbmcsIHN0cnVj dCBjcnRjX3N0ZXJlb19mbGFncyAqZmxhZ3MpOwogYm9vbCAoKmlzX3N0ZXJlb19sZWZ0X2V5ZSko c3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKCiB2b2lkICgqc2V0X2JsYW5rX2RhdGFfZG91 YmxlX2J1ZmZlcikoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLCBib29sIGVuYWJsZSk7Cgog dm9pZCAoKnRnX2luaXQpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0Zyk7CiBib29sICgqaXNf dGdfZW5hYmxlZCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKIGJvb2wgKCppc19vcHRj X3VuZGVyZmxvd19vY2N1cnJlZCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKIHZvaWQg KCpjbGVhcl9vcHRjX3VuZGVyZmxvdykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnKTsKCiB2 b2lkICgqc2V0X2R3Yl9zb3VyY2UpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICpvcHRjLAogIHVp bnQzMl90IGR3Yl9waXBlX2luc3QpOwoKIHZvaWQgKCpnZXRfb3B0Y19zb3VyY2UpKHN0cnVjdCB0 aW1pbmdfZ2VuZXJhdG9yICpvcHRjLAogICB1aW50MzJfdCAqbnVtX29mX2lucHV0X3NlZ21lbnRz LAogICB1aW50MzJfdCAqc2VnMF9zcmNfc2VsLAogICB1aW50MzJfdCAqc2VnMV9zcmNfc2VsKTsK CgoKCgogYm9vbCAoKmNvbmZpZ3VyZV9jcmMpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICp0ZywK ICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcmNfcGFyYW1zICpwYXJhbXMpOwoKCgoKCiBib29sICgq Z2V0X2NyYykoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKnRnLAogICB1aW50MzJfdCAqcl9jciwg dWludDMyX3QgKmdfeSwgdWludDMyX3QgKmJfY2IpOwoKIHZvaWQgKCpwcm9ncmFtX21hbnVhbF90 cmlnZ2VyKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0Yyk7CiB2b2lkICgqc2V0dXBfbWFu dWFsX3RyaWdnZXIpKHN0cnVjdCB0aW1pbmdfZ2VuZXJhdG9yICpvcHRjKTsKIGJvb2wgKCpnZXRf aHdfdGltaW5nKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKICAgc3RydWN0IGRjX2Ny dGNfdGltaW5nICpod19jcnRjX3RpbWluZyk7Cgogdm9pZCAoKnNldF92dGdfcGFyYW1zKShzdHJ1 Y3QgdGltaW5nX2dlbmVyYXRvciAqb3B0YywKICAgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5n ICpkY19jcnRjX3RpbWluZyk7Cgogdm9pZCAoKnNldF9kc2NfY29uZmlnKShzdHJ1Y3QgdGltaW5n X2dlbmVyYXRvciAqb3B0YywKICAgICAgICAgIGVudW0gb3B0Y19kc2NfbW9kZSBkc2NfbW9kZSwK ICAgICAgICAgIHVpbnQzMl90IGRzY19ieXRlc19wZXJfcGl4ZWwsCiAgICAgICAgICB1aW50MzJf dCBkc2Nfc2xpY2Vfd2lkdGgpOwogdm9pZCAoKnNldF9vZG1fYnlwYXNzKShzdHJ1Y3QgdGltaW5n X2dlbmVyYXRvciAqb3B0YywgY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5nICpkY19jcnRjX3Rp bWluZyk7CiB2b2lkICgqc2V0X29kbV9jb21iaW5lKShzdHJ1Y3QgdGltaW5nX2dlbmVyYXRvciAq b3B0YywgaW50ICpvcHBfaWQsIGludCBvcHBfY250LAogICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcg KnRpbWluZyk7CiB2b2lkICgqc2V0X2dzbCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMs IGNvbnN0IHN0cnVjdCBnc2xfcGFyYW1zICpwYXJhbXMpOwogdm9pZCAoKnNldF9nc2xfc291cmNl X3NlbGVjdCkoc3RydWN0IHRpbWluZ19nZW5lcmF0b3IgKm9wdGMsCiAgIGludCBncm91cF9pZHgs CiAgIHVpbnQzMl90IGdzbF9yZWFkeV9zaWduYWwpOwp9OwojIDMxICIuL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3X3NlcXVlbmNlci5oIiAyCgojIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbGlua19lbmNv ZGVyLmgiIDEKIyAzNyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2luYy9ody9saW5rX2VuY29kZXIuaCIKc3RydWN0IGRjX2NvbnRleHQ7CnN0cnVjdCBlbmNvZGVy X3NldF9kcF9waHlfcGF0dGVybl9wYXJhbTsKc3RydWN0IGxpbmtfbXN0X3N0cmVhbV9hbGxvY2F0 aW9uX3RhYmxlOwpzdHJ1Y3QgZGNfbGlua19zZXR0aW5nczsKc3RydWN0IGxpbmtfdHJhaW5pbmdf c2V0dGluZ3M7CnN0cnVjdCBwaXBlX2N0eDsKCnN0cnVjdCBlbmNvZGVyX2luaXRfZGF0YSB7CiBl bnVtIGNoYW5uZWxfaWQgY2hhbm5lbDsKIHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgY29ubmVj dG9yOwogZW51bSBocGRfc291cmNlX2lkIGhwZF9zb3VyY2U7Cgogc3RydWN0IGdyYXBoaWNzX29i amVjdF9pZCBlbmNvZGVyOwogc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKIGVudW0gdHJhbnNtaXR0 ZXIgdHJhbnNtaXR0ZXI7Cn07CgpzdHJ1Y3QgZW5jb2Rlcl9mZWF0dXJlX3N1cHBvcnQgewogdW5p b24gewogIHN0cnVjdCB7CiAgIHVpbnQzMl90IElTX0hCUjJfQ0FQQUJMRToxOwogICB1aW50MzJf dCBJU19IQlIzX0NBUEFCTEU6MTsKICAgdWludDMyX3QgSVNfVFBTM19DQVBBQkxFOjE7CiAgIHVp bnQzMl90IElTX1RQUzRfQ0FQQUJMRToxOwogICB1aW50MzJfdCBIRE1JXzZHQl9FTjoxOwogICB1 aW50MzJfdCBEUF9JU19VU0JfQzoxOwogIH0gYml0czsKICB1aW50MzJfdCByYXc7CiB9IGZsYWdz OwoKIGVudW0gZGNfY29sb3JfZGVwdGggbWF4X2hkbWlfZGVlcF9jb2xvcjsKIHVuc2lnbmVkIGlu dCBtYXhfaGRtaV9waXhlbF9jbG9jazsKIGJvb2wgaGRtaV95Y2JjcjQyMF9zdXBwb3J0ZWQ7CiBi b29sIGRwX3ljYmNyNDIwX3N1cHBvcnRlZDsKfTsKCnVuaW9uIGRwY2RfcHNyX2NvbmZpZ3VyYXRp b24gewogc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIEVOQUJMRSA6IDE7CiAgdW5zaWduZWQgY2hh ciBUUkFOU01JVFRFUl9BQ1RJVkVfSU5fUFNSIDogMTsKICB1bnNpZ25lZCBjaGFyIENSQ19WRVJJ RklDQVRJT04gOiAxOwogIHVuc2lnbmVkIGNoYXIgRlJBTUVfQ0FQVFVSRV9JTkRJQ0FUSU9OIDog MTsKCiAgdW5zaWduZWQgY2hhciBMSU5FX0NBUFRVUkVfSU5ESUNBVElPTiA6IDE7CgogIHVuc2ln bmVkIGNoYXIgSVJRX0hQRF9XSVRIX0NSQ19FUlJPUiA6IDE7CiAgdW5zaWduZWQgY2hhciBSRVNF UlZFRCA6IDI7CiB9IGJpdHM7CiB1bnNpZ25lZCBjaGFyIHJhdzsKfTsKCnVuaW9uIHBzcl9lcnJv cl9zdGF0dXMgewogc3RydWN0IHsKICB1bnNpZ25lZCBjaGFyIExJTktfQ1JDX0VSUk9SIDoxOwog IHVuc2lnbmVkIGNoYXIgUkZCX1NUT1JBR0VfRVJST1IgOjE7CiAgdW5zaWduZWQgY2hhciBSRVNF UlZFRCA6NjsKIH0gYml0czsKIHVuc2lnbmVkIGNoYXIgcmF3Owp9OwoKdW5pb24gcHNyX3Npbmtf cHNyX3N0YXR1cyB7CiBzdHJ1Y3QgewogdW5zaWduZWQgY2hhciBTSU5LX1NFTEZfUkVGUkVTSF9T VEFUVVMgOjM7CiB1bnNpZ25lZCBjaGFyIFJFU0VSVkVEIDo1OwogfSBiaXRzOwogdW5zaWduZWQg Y2hhciByYXc7Cn07CgpzdHJ1Y3QgbGlua19lbmNvZGVyIHsKIGNvbnN0IHN0cnVjdCBsaW5rX2Vu Y29kZXJfZnVuY3MgKmZ1bmNzOwogaW50MzJfdCBhdXhfY2hhbm5lbF9vZmZzZXQ7CiBzdHJ1Y3Qg ZGNfY29udGV4dCAqY3R4Owogc3RydWN0IGdyYXBoaWNzX29iamVjdF9pZCBpZDsKIHN0cnVjdCBn cmFwaGljc19vYmplY3RfaWQgY29ubmVjdG9yOwogdWludDMyX3Qgb3V0cHV0X3NpZ25hbHM7CiBl bnVtIGVuZ2luZV9pZCBwcmVmZXJyZWRfZW5naW5lOwogc3RydWN0IGVuY29kZXJfZmVhdHVyZV9z dXBwb3J0IGZlYXR1cmVzOwogZW51bSB0cmFuc21pdHRlciB0cmFuc21pdHRlcjsKIGVudW0gaHBk X3NvdXJjZV9pZCBocGRfc291cmNlOwogYm9vbCB1c2JjX2NvbWJvX3BoeTsKfTsKCnN0cnVjdCBs aW5rX2VuY19zdGF0ZSB7CgogIHVpbnQzMl90IGRwaHlfZmVjX2VuOwogIHVpbnQzMl90IGRwaHlf ZmVjX3JlYWR5X3NoYWRvdzsKICB1aW50MzJfdCBkcGh5X2ZlY19hY3RpdmVfc3RhdHVzOwogIHVp bnQzMl90IGRwX2xpbmtfdHJhaW5pbmdfY29tcGxldGU7Cgp9OwoKc3RydWN0IGxpbmtfZW5jb2Rl cl9mdW5jcyB7CiB2b2lkICgqcmVhZF9zdGF0ZSkoCiAgIHN0cnVjdCBsaW5rX2VuY29kZXIgKmVu Yywgc3RydWN0IGxpbmtfZW5jX3N0YXRlICpzKTsKIGJvb2wgKCp2YWxpZGF0ZV9vdXRwdXRfd2l0 aF9zdHJlYW0pKAogIHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywgY29uc3Qgc3RydWN0IGRjX3N0 cmVhbV9zdGF0ZSAqc3RyZWFtKTsKIHZvaWQgKCpod19pbml0KShzdHJ1Y3QgbGlua19lbmNvZGVy ICplbmMpOwogdm9pZCAoKnNldHVwKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCiAgZW51bSBz aWduYWxfdHlwZSBzaWduYWwpOwogdm9pZCAoKmVuYWJsZV90bWRzX291dHB1dCkoc3RydWN0IGxp bmtfZW5jb2RlciAqZW5jLAogIGVudW0gY2xvY2tfc291cmNlX2lkIGNsb2NrX3NvdXJjZSwKICBl bnVtIGRjX2NvbG9yX2RlcHRoIGNvbG9yX2RlcHRoLAogIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFs LAogIHVpbnQzMl90IHBpeGVsX2Nsb2NrKTsKIHZvaWQgKCplbmFibGVfZHBfb3V0cHV0KShzdHJ1 Y3QgbGlua19lbmNvZGVyICplbmMsCiAgY29uc3Qgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmxp bmtfc2V0dGluZ3MsCiAgZW51bSBjbG9ja19zb3VyY2VfaWQgY2xvY2tfc291cmNlKTsKIHZvaWQg KCplbmFibGVfZHBfbXN0X291dHB1dCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAogIGNvbnN0 IHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5rX3NldHRpbmdzLAogIGVudW0gY2xvY2tfc291 cmNlX2lkIGNsb2NrX3NvdXJjZSk7CiB2b2lkICgqZW5hYmxlX2x2ZHNfb3V0cHV0KShzdHJ1Y3Qg bGlua19lbmNvZGVyICplbmMsCiAgZW51bSBjbG9ja19zb3VyY2VfaWQgY2xvY2tfc291cmNlLAog IHVpbnQzMl90IHBpeGVsX2Nsb2NrKTsKIHZvaWQgKCpkaXNhYmxlX291dHB1dCkoc3RydWN0IGxp bmtfZW5jb2RlciAqbGlua19lbmMsCiAgZW51bSBzaWduYWxfdHlwZSBzaWduYWwpOwogdm9pZCAo KmRwX3NldF9sYW5lX3NldHRpbmdzKShzdHJ1Y3QgbGlua19lbmNvZGVyICplbmMsCiAgY29uc3Qg c3RydWN0IGxpbmtfdHJhaW5pbmdfc2V0dGluZ3MgKmxpbmtfc2V0dGluZ3MpOwogdm9pZCAoKmRw X3NldF9waHlfcGF0dGVybikoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jLAogIGNvbnN0IHN0cnVj dCBlbmNvZGVyX3NldF9kcF9waHlfcGF0dGVybl9wYXJhbSAqcGFyYSk7CiB2b2lkICgqdXBkYXRl X21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZSkoCiAgc3RydWN0IGxpbmtfZW5jb2RlciAqZW5j LAogIGNvbnN0IHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZSAqdGFibGUp Owogdm9pZCAoKnBzcl9wcm9ncmFtX2RwX2RwaHlfZmFzdF90cmFpbmluZykoc3RydWN0IGxpbmtf ZW5jb2RlciAqZW5jLAogICBib29sIGV4aXRfbGlua190cmFpbmluZ19yZXF1aXJlZCk7CiB2b2lk ICgqcHNyX3Byb2dyYW1fc2Vjb25kYXJ5X3BhY2tldCkoc3RydWN0IGxpbmtfZW5jb2RlciAqZW5j LAogICAgdW5zaWduZWQgaW50IHNkcF90cmFuc21pdF9saW5lX251bV9kZWFkbGluZSk7CiB2b2lk ICgqY29ubmVjdF9kaWdfYmVfdG9fZmUpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywKICBlbnVt IGVuZ2luZV9pZCBlbmdpbmUsCiAgYm9vbCBjb25uZWN0KTsKIHZvaWQgKCplbmFibGVfaHBkKShz dHJ1Y3QgbGlua19lbmNvZGVyICplbmMpOwogdm9pZCAoKmRpc2FibGVfaHBkKShzdHJ1Y3QgbGlu a19lbmNvZGVyICplbmMpOwogYm9vbCAoKmlzX2RpZ19lbmFibGVkKShzdHJ1Y3QgbGlua19lbmNv ZGVyICplbmMpOwogdW5zaWduZWQgaW50ICgqZ2V0X2RpZ19mcm9udGVuZCkoc3RydWN0IGxpbmtf ZW5jb2RlciAqZW5jKTsKIHZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgbGlua19lbmNvZGVyICoqZW5j KTsKCiB2b2lkICgqZmVjX3NldF9lbmFibGUpKHN0cnVjdCBsaW5rX2VuY29kZXIgKmVuYywKICBi b29sIGVuYWJsZSk7Cgogdm9pZCAoKmZlY19zZXRfcmVhZHkpKHN0cnVjdCBsaW5rX2VuY29kZXIg KmVuYywKICBib29sIHJlYWR5KTsKCiBib29sICgqZmVjX2lzX2FjdGl2ZSkoc3RydWN0IGxpbmtf ZW5jb2RlciAqZW5jKTsKIGJvb2wgKCppc19pbl9hbHRfbW9kZSkgKHN0cnVjdCBsaW5rX2VuY29k ZXIgKmVuYyk7Cgogdm9pZCAoKmdldF9tYXhfbGlua19jYXApKHN0cnVjdCBsaW5rX2VuY29kZXIg KmVuYywKICBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5ncyk7CgogZW51bSBz aWduYWxfdHlwZSAoKmdldF9kaWdfbW9kZSkoCiAgc3RydWN0IGxpbmtfZW5jb2RlciAqZW5jKTsK fTsKIyAzMyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9o d19zZXF1ZW5jZXIuaCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY29yZV9zdGF0dXMuaCIgMQojIDI5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfc3RhdHVzLmgiCmVudW0gZGNfc3RhdHVzIHsK IERDX09LID0gMSwKCiBEQ19OT19DT05UUk9MTEVSX1JFU09VUkNFID0gMiwKIERDX05PX1NUUkVB TV9FTkNfUkVTT1VSQ0UgPSAzLAogRENfTk9fQ0xPQ0tfU09VUkNFX1JFU09VUkNFID0gNCwKIERD X0ZBSUxfQ09OVFJPTExFUl9WQUxJREFURSA9IDUsCiBEQ19GQUlMX0VOQ19WQUxJREFURSA9IDYs CiBEQ19GQUlMX0FUVEFDSF9TVVJGQUNFUyA9IDcsCiBEQ19GQUlMX0RFVEFDSF9TVVJGQUNFUyA9 IDgsCiBEQ19GQUlMX1NVUkZBQ0VfVkFMSURBVEUgPSA5LAogRENfTk9fRFBfTElOS19CQU5EV0lE VEggPSAxMCwKIERDX0VYQ0VFRF9ET05HTEVfQ0FQID0gMTEsCiBEQ19TVVJGQUNFX1BJWEVMX0ZP Uk1BVF9VTlNVUFBPUlRFRCA9IDEyLAogRENfRkFJTF9CQU5EV0lEVEhfVkFMSURBVEUgPSAxMywK IERDX0ZBSUxfU0NBTElORyA9IDE0LAogRENfRkFJTF9EUF9MSU5LX1RSQUlOSU5HID0gMTUsCiBE Q19GQUlMX0RTQ19WQUxJREFURSA9IDE2LAogRENfTk9fRFNDX1JFU09VUkNFID0gMTcsCiBEQ19G QUlMX1VOU1VQUE9SVEVEXzEgPSAxOCwKIERDX0ZBSUxfQ0xLX0VYQ0VFRF9NQVggPSAyMSwKIERD X0ZBSUxfQ0xLX0JFTE9XX01JTiA9IDIyLAogRENfRkFJTF9DTEtfQkVMT1dfQ0ZHX1JFUVVJUkVE ID0gMjMsCgogRENfRVJST1JfVU5FWFBFQ1RFRCA9IC0xCn07CiMgMzQgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHdfc2VxdWVuY2VyLmgiIDIKCmVudW0g dmxpbmVfc2VsZWN0IHsKIFZMSU5FMCwKIFZMSU5FMQp9OwoKc3RydWN0IHBpcGVfY3R4OwpzdHJ1 Y3QgZGNfc3RhdGU7CnN0cnVjdCBkY19zdHJlYW1fc3RhdHVzOwpzdHJ1Y3QgZGNfd3JpdGViYWNr X2luZm87CnN0cnVjdCBkY2h1Yl9pbml0X2RhdGE7CnN0cnVjdCBkY19zdGF0aWNfc2NyZWVuX3Bh cmFtczsKc3RydWN0IHJlc291cmNlX3Bvb2w7CnN0cnVjdCBkY19waHlfYWRkcl9zcGFjZV9jb25m aWc7CnN0cnVjdCBkY192aXJ0dWFsX2FkZHJfc3BhY2VfY29uZmlnOwpzdHJ1Y3QgZHBwOwpzdHJ1 Y3QgZGNlX2h3c2VxOwoKc3RydWN0IGh3X3NlcXVlbmNlcl9mdW5jcyB7Cgogdm9pZCAoKmVkcF9w b3dlcl9jb250cm9sKShzdHJ1Y3QgZGNfbGluayAqbGluaywgYm9vbCBlbmFibGUpOwogdm9pZCAo KmVkcF93YWl0X2Zvcl9ocGRfcmVhZHkpKHN0cnVjdCBkY19saW5rICpsaW5rLCBib29sIHBvd2Vy X3VwKTsKCgogdm9pZCAoKmluaXRfaHcpKHN0cnVjdCBkYyAqZGMpOwogdm9pZCAoKmVuYWJsZV9h Y2NlbGVyYXRlZF9tb2RlKShzdHJ1Y3QgZGMgKmRjLAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRl eHQpOwogZW51bSBkY19zdGF0dXMgKCphcHBseV9jdHhfdG9faHcpKHN0cnVjdCBkYyAqZGMsCiAg IHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CiB2b2lkICgqZGlzYWJsZV9wbGFuZSkoc3RydWN0 IGRjICpkYywgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CiB2b2lkICgqYXBwbHlfY3R4X2Zv cl9zdXJmYWNlKShzdHJ1Y3QgZGMgKmRjLAogICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRl ICpzdHJlYW0sCiAgIGludCBudW1fcGxhbmVzLCBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwog dm9pZCAoKnByb2dyYW1fZnJvbnRfZW5kX2Zvcl9jdHgpKHN0cnVjdCBkYyAqZGMsCiAgIHN0cnVj dCBkY19zdGF0ZSAqY29udGV4dCk7CiB2b2lkICgqdXBkYXRlX3BsYW5lX2FkZHIpKGNvbnN0IHN0 cnVjdCBkYyAqZGMsCiAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwogdm9pZCAoKnVwZGF0 ZV9kY2h1Yikoc3RydWN0IGRjZV9od3NlcSAqaHdzLAogICBzdHJ1Y3QgZGNodWJfaW5pdF9kYXRh ICpkaF9kYXRhKTsKIHZvaWQgKCp3YWl0X2Zvcl9tcGNjX2Rpc2Nvbm5lY3QpKHN0cnVjdCBkYyAq ZGMsCiAgIHN0cnVjdCByZXNvdXJjZV9wb29sICpyZXNfcG9vbCwKICAgc3RydWN0IHBpcGVfY3R4 ICpwaXBlX2N0eCk7CiB2b2lkICgqcHJvZ3JhbV90cmlwbGVidWZmZXIpKGNvbnN0IHN0cnVjdCBk YyAqZGMsCiAgc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwgYm9vbCBlbmFibGVUcmlwbGVCdWZm ZXIpOwogdm9pZCAoKnVwZGF0ZV9wZW5kaW5nX3N0YXR1cykoc3RydWN0IHBpcGVfY3R4ICpwaXBl X2N0eCk7CgoKIHZvaWQgKCpwaXBlX2NvbnRyb2xfbG9ja19nbG9iYWwpKHN0cnVjdCBkYyAqZGMs CiAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZSwgYm9vbCBsb2NrKTsKIHZvaWQgKCpwaXBlX2NvbnRy b2xfbG9jaykoc3RydWN0IGRjICpkYywKICAgc3RydWN0IHBpcGVfY3R4ICpwaXBlLCBib29sIGxv Y2spOwogdm9pZCAoKnNldF9mbGlwX2NvbnRyb2xfZ3NsKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVf Y3R4LAogICBib29sIGZsaXBfaW1tZWRpYXRlKTsKCgogdm9pZCAoKmdldF9wb3NpdGlvbikoc3Ry dWN0IHBpcGVfY3R4ICoqcGlwZV9jdHgsIGludCBudW1fcGlwZXMsCiAgIHN0cnVjdCBjcnRjX3Bv c2l0aW9uICpwb3NpdGlvbik7CiBpbnQgKCpnZXRfdnVwZGF0ZV9vZmZzZXRfZnJvbV92c3luYyko c3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CiB2b2lkICgqZW5hYmxlX3Blcl9mcmFtZV9jcnRj X3Bvc2l0aW9uX3Jlc2V0KShzdHJ1Y3QgZGMgKmRjLAogICBpbnQgZ3JvdXBfc2l6ZSwgc3RydWN0 IHBpcGVfY3R4ICpncm91cGVkX3BpcGVzW10pOwogdm9pZCAoKmVuYWJsZV90aW1pbmdfc3luY2hy b25pemF0aW9uKShzdHJ1Y3QgZGMgKmRjLAogICBpbnQgZ3JvdXBfaW5kZXgsIGludCBncm91cF9z aXplLAogICBzdHJ1Y3QgcGlwZV9jdHggKmdyb3VwZWRfcGlwZXNbXSk7CiB2b2lkICgqc2V0dXBf cGVyaW9kaWNfaW50ZXJydXB0KShzdHJ1Y3QgZGMgKmRjLAogICBzdHJ1Y3QgcGlwZV9jdHggKnBp cGVfY3R4LAogICBlbnVtIHZsaW5lX3NlbGVjdCB2bGluZSk7CiB2b2lkICgqc2V0X2Rycikoc3Ry dWN0IHBpcGVfY3R4ICoqcGlwZV9jdHgsIGludCBudW1fcGlwZXMsCiAgIHVuc2lnbmVkIGludCB2 bWluLCB1bnNpZ25lZCBpbnQgdm1heCwKICAgdW5zaWduZWQgaW50IHZtaWQsIHVuc2lnbmVkIGlu dCB2bWlkX2ZyYW1lX251bWJlcik7CiB2b2lkICgqc2V0X3N0YXRpY19zY3JlZW5fY29udHJvbCko c3RydWN0IHBpcGVfY3R4ICoqcGlwZV9jdHgsCiAgIGludCBudW1fcGlwZXMsCiAgIGNvbnN0IHN0 cnVjdCBkY19zdGF0aWNfc2NyZWVuX3BhcmFtcyAqZXZlbnRzKTsKCgogdm9pZCAoKmVuYWJsZV9z dHJlYW0pKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwogdm9pZCAoKmRpc2FibGVfc3RyZWFt KShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsKIHZvaWQgKCpibGFua19zdHJlYW0pKHN0cnVj dCBwaXBlX2N0eCAqcGlwZV9jdHgpOwogdm9pZCAoKnVuYmxhbmtfc3RyZWFtKShzdHJ1Y3QgcGlw ZV9jdHggKnBpcGVfY3R4LAogICBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyAqbGlua19zZXR0aW5n cyk7CgoKIHZvaWQgKCpwcmVwYXJlX2JhbmR3aWR0aCkoc3RydWN0IGRjICpkYywgc3RydWN0IGRj X3N0YXRlICpjb250ZXh0KTsKIGJvb2wgKCp1cGRhdGVfYmFuZHdpZHRoKShzdHJ1Y3QgZGMgKmRj LCBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwogdm9pZCAoKm9wdGltaXplX2JhbmR3aWR0aCko c3RydWN0IGRjICpkYywgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKCgogdm9pZCAoKnNldF9h dm11dGUpKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgsIGJvb2wgZW5hYmxlKTsKIHZvaWQgKCpz ZW5kX2ltbWVkaWF0ZV9zZHBfbWVzc2FnZSkoCiAgIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgs CiAgIGNvbnN0IHVpbnQ4X3QgKmN1c3RvbV9zZHBfbWVzc2FnZSwKICAgdW5zaWduZWQgaW50IHNk cF9tZXNzYWdlX3NpemUpOwogdm9pZCAoKnVwZGF0ZV9pbmZvX2ZyYW1lKShzdHJ1Y3QgcGlwZV9j dHggKnBpcGVfY3R4KTsKIHZvaWQgKCpzZXRfZG1kYXRhX2F0dHJpYnV0ZXMpKHN0cnVjdCBwaXBl X2N0eCAqcGlwZSk7CiB2b2lkICgqcHJvZ3JhbV9kbWRhdGFfZW5naW5lKShzdHJ1Y3QgcGlwZV9j dHggKnBpcGVfY3R4KTsKIGJvb2wgKCpkbWRhdGFfc3RhdHVzX2RvbmUpKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpOwoKCiB2b2lkICgqc2V0X2N1cnNvcl9wb3NpdGlvbikoc3RydWN0IHBpcGVf Y3R4ICpwaXBlKTsKIHZvaWQgKCpzZXRfY3Vyc29yX2F0dHJpYnV0ZSkoc3RydWN0IHBpcGVfY3R4 ICpwaXBlKTsKIHZvaWQgKCpzZXRfY3Vyc29yX3Nkcl93aGl0ZV9sZXZlbCkoc3RydWN0IHBpcGVf Y3R4ICpwaXBlKTsKCgogdm9pZCAoKnByb2dyYW1fZ2FtdXRfcmVtYXApKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpOwogdm9pZCAoKnByb2dyYW1fb3V0cHV0X2NzYykoc3RydWN0IGRjICpkYywg c3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCwKICAgZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcnNw YWNlLAogICB1aW50MTZfdCAqbWF0cml4LCBpbnQgb3BwX2lkKTsKCgogaW50ICgqaW5pdF9zeXNf Y3R4KShzdHJ1Y3QgZGNlX2h3c2VxICpod3MsCiAgIHN0cnVjdCBkYyAqZGMsCiAgIHN0cnVjdCBk Y19waHlfYWRkcl9zcGFjZV9jb25maWcgKnBhX2NvbmZpZyk7CiB2b2lkICgqaW5pdF92bV9jdHgp KHN0cnVjdCBkY2VfaHdzZXEgKmh3cywKICAgc3RydWN0IGRjICpkYywKICAgc3RydWN0IGRjX3Zp cnR1YWxfYWRkcl9zcGFjZV9jb25maWcgKnZhX2NvbmZpZywKICAgaW50IHZtaWQpOwoKCiB2b2lk ICgqdXBkYXRlX3dyaXRlYmFjaykoc3RydWN0IGRjICpkYywKICAgc3RydWN0IGRjX3dyaXRlYmFj a19pbmZvICp3Yl9pbmZvLAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwogdm9pZCAoKmVu YWJsZV93cml0ZWJhY2spKHN0cnVjdCBkYyAqZGMsCiAgIHN0cnVjdCBkY193cml0ZWJhY2tfaW5m byAqd2JfaW5mbywKICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0KTsKIHZvaWQgKCpkaXNhYmxl X3dyaXRlYmFjaykoc3RydWN0IGRjICpkYywKICAgdW5zaWduZWQgaW50IGR3Yl9waXBlX2luc3Qp OwoKIGJvb2wgKCptbWh1YmJ1Yl93YXJtdXApKHN0cnVjdCBkYyAqZGMsCiAgIHVuc2lnbmVkIGlu dCBudW1fZHdiLAogICBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gKndiX2luZm8pOwoKCiBlbnVt IGRjX3N0YXR1cyAoKnNldF9jbG9jaykoc3RydWN0IGRjICpkYywKICAgZW51bSBkY19jbG9ja190 eXBlIGNsb2NrX3R5cGUsCiAgIHVpbnQzMl90IGNsa19raHosIHVpbnQzMl90IHN0ZXBwaW5nKTsK IHZvaWQgKCpnZXRfY2xvY2spKHN0cnVjdCBkYyAqZGMsIGVudW0gZGNfY2xvY2tfdHlwZSBjbG9j a190eXBlLAogICBzdHJ1Y3QgZGNfY2xvY2tfY29uZmlnICpjbG9ja19jZmcpOwogdm9pZCAoKm9w dGltaXplX3B3cl9zdGF0ZSkoY29uc3Qgc3RydWN0IGRjICpkYywKICAgc3RydWN0IGRjX3N0YXRl ICpjb250ZXh0KTsKIHZvaWQgKCpleGl0X29wdGltaXplZF9wd3Jfc3RhdGUpKGNvbnN0IHN0cnVj dCBkYyAqZGMsCiAgIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CgoKIHZvaWQgKCplbmFibGVf YXVkaW9fc3RyZWFtKShzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4KTsKIHZvaWQgKCpkaXNhYmxl X2F1ZGlvX3N0cmVhbSkoc3RydWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CgoKIHZvaWQgKCpzZXR1 cF9zdGVyZW8pKHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgsIHN0cnVjdCBkYyAqZGMpOwoKCiB2 b2lkICgqbG9nX2h3X3N0YXRlKShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfbG9nX2J1ZmZlcl9j dHggKmxvZ19jdHgpOwogdm9pZCAoKmdldF9od19zdGF0ZSkoc3RydWN0IGRjICpkYywgY2hhciAq cEJ1ZiwKICAgdW5zaWduZWQgaW50IGJ1ZlNpemUsIHVuc2lnbmVkIGludCBtYXNrKTsKIHZvaWQg KCpjbGVhcl9zdGF0dXNfYml0cykoc3RydWN0IGRjICpkYywgdW5zaWduZWQgaW50IG1hc2spOwoK Cn07Cgp2b2lkIGNvbG9yX3NwYWNlX3RvX2JsYWNrX2NvbG9yKAogY29uc3Qgc3RydWN0IGRjICpk YywKIGVudW0gZGNfY29sb3Jfc3BhY2UgY29sb3JzcGFjZSwKIHN0cnVjdCB0Z19jb2xvciAqYmxh Y2tfY29sb3IpOwoKYm9vbCBod3NzX3dhaXRfZm9yX2JsYW5rX2NvbXBsZXRlKAogIHN0cnVjdCB0 aW1pbmdfZ2VuZXJhdG9yICp0Zyk7Cgpjb25zdCB1aW50MTZfdCAqZmluZF9jb2xvcl9tYXRyaXgo CiAgZW51bSBkY19jb2xvcl9zcGFjZSBjb2xvcl9zcGFjZSwKICB1aW50MzJfdCAqYXJyYXlfc2l6 ZSk7CiMgMzggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5o IiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9j b21wcmVzc29yLmgiIDEKIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2luYy9jb21wcmVzc29yLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJfaW50ZXJmYWNlLmgiIDEKIyAyOSAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2luY2x1ZGUvYmlvc19wYXJzZXJf aW50ZXJmYWNlLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RjX2Jpb3NfdHlwZXMuaCIgMQojIDQxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZGNfYmlvc190eXBlcy5oIgpzdHJ1Y3QgZGNfdmJpb3NfZnVuY3Mgewog dWludDhfdCAoKmdldF9jb25uZWN0b3JzX251bWJlcikoc3RydWN0IGRjX2Jpb3MgKmJpb3MpOwoK IHN0cnVjdCBncmFwaGljc19vYmplY3RfaWQgKCpnZXRfY29ubmVjdG9yX2lkKSgKICBzdHJ1Y3Qg ZGNfYmlvcyAqYmlvcywKICB1aW50OF90IGNvbm5lY3Rvcl9pbmRleCk7CiBlbnVtIGJwX3Jlc3Vs dCAoKmdldF9zcmNfb2JqKSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBzdHJ1Y3QgZ3JhcGhp Y3Nfb2JqZWN0X2lkIG9iamVjdF9pZCwgdWludDMyX3QgaW5kZXgsCiAgc3RydWN0IGdyYXBoaWNz X29iamVjdF9pZCAqc3JjX29iamVjdF9pZCk7CiBlbnVtIGJwX3Jlc3VsdCAoKmdldF9pMmNfaW5m bykoCiAgc3RydWN0IGRjX2Jpb3MgKmRjYiwKICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGlk LAogIHN0cnVjdCBncmFwaGljc19vYmplY3RfaTJjX2luZm8gKmluZm8pOwogZW51bSBicF9yZXN1 bHQgKCpnZXRfaHBkX2luZm8pKAogIHN0cnVjdCBkY19iaW9zICpiaW9zLAogIHN0cnVjdCBncmFw aGljc19vYmplY3RfaWQgaWQsCiAgc3RydWN0IGdyYXBoaWNzX29iamVjdF9ocGRfaW5mbyAqaW5m byk7CiBlbnVtIGJwX3Jlc3VsdCAoKmdldF9kZXZpY2VfdGFnKSgKICBzdHJ1Y3QgZGNfYmlvcyAq YmlvcywKICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lkIGNvbm5lY3Rvcl9vYmplY3RfaWQsCiAg dWludDMyX3QgZGV2aWNlX3RhZ19pbmRleCwKICBzdHJ1Y3QgY29ubmVjdG9yX2RldmljZV90YWdf aW5mbyAqaW5mbyk7CiBlbnVtIGJwX3Jlc3VsdCAoKmdldF9zcHJlYWRfc3BlY3RydW1faW5mbyko CiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgZW51bSBhc19zaWduYWxfdHlwZSBzaWduYWwsCiAg dWludDMyX3QgaW5kZXgsCiAgc3RydWN0IHNwcmVhZF9zcGVjdHJ1bV9pbmZvICpzc19pbmZvKTsK IHVpbnQzMl90ICgqZ2V0X3NzX2VudHJ5X251bWJlcikoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3Ms CiAgZW51bSBhc19zaWduYWxfdHlwZSBzaWduYWwpOwogZW51bSBicF9yZXN1bHQgKCpnZXRfZW1i ZWRkZWRfcGFuZWxfaW5mbykoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgc3RydWN0IGVtYmVk ZGVkX3BhbmVsX2luZm8gKmluZm8pOwogZW51bSBicF9yZXN1bHQgKCpnZXRfZ3Bpb19waW5faW5m bykoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgdWludDMyX3QgZ3Bpb19pZCwKICBzdHJ1Y3Qg Z3Bpb19waW5faW5mbyAqaW5mbyk7CiBlbnVtIGJwX3Jlc3VsdCAoKmdldF9lbmNvZGVyX2NhcF9p bmZvKSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBzdHJ1Y3QgZ3JhcGhpY3Nfb2JqZWN0X2lk IG9iamVjdF9pZCwKICBzdHJ1Y3QgYnBfZW5jb2Rlcl9jYXBfaW5mbyAqaW5mbyk7CgogYm9vbCAo KmlzX2FjY2VsZXJhdGVkX21vZGUpKAogIHN0cnVjdCBkY19iaW9zICpiaW9zKTsKIHZvaWQgKCpz ZXRfc2NyYXRjaF9jcml0aWNhbF9zdGF0ZSkoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgYm9v bCBzdGF0ZSk7CiBib29sICgqaXNfZGV2aWNlX2lkX3N1cHBvcnRlZCkoCiAgc3RydWN0IGRjX2Jp b3MgKmJpb3MsCiAgc3RydWN0IGRldmljZV9pZCBpZCk7CgoKCiBlbnVtIGJwX3Jlc3VsdCAoKmVu Y29kZXJfY29udHJvbCkoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAgc3RydWN0IGJwX2VuY29k ZXJfY29udHJvbCAqY250bCk7CiBlbnVtIGJwX3Jlc3VsdCAoKnRyYW5zbWl0dGVyX2NvbnRyb2wp KAogIHN0cnVjdCBkY19iaW9zICpiaW9zLAogIHN0cnVjdCBicF90cmFuc21pdHRlcl9jb250cm9s ICpjbnRsKTsKIGVudW0gYnBfcmVzdWx0ICgqZW5hYmxlX2NydGMpKAogIHN0cnVjdCBkY19iaW9z ICpiaW9zLAogIGVudW0gY29udHJvbGxlcl9pZCBpZCwKICBib29sIGVuYWJsZSk7CiBlbnVtIGJw X3Jlc3VsdCAoKmFkanVzdF9waXhlbF9jbG9jaykoCiAgc3RydWN0IGRjX2Jpb3MgKmJpb3MsCiAg c3RydWN0IGJwX2FkanVzdF9waXhlbF9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwogZW51 bSBicF9yZXN1bHQgKCpzZXRfcGl4ZWxfY2xvY2spKAogIHN0cnVjdCBkY19iaW9zICpiaW9zLAog IHN0cnVjdCBicF9waXhlbF9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwogZW51bSBicF9y ZXN1bHQgKCpzZXRfZGNlX2Nsb2NrKSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBzdHJ1Y3Qg YnBfc2V0X2RjZV9jbG9ja19wYXJhbWV0ZXJzICpicF9wYXJhbXMpOwogZW51bSBicF9yZXN1bHQg KCplbmFibGVfc3ByZWFkX3NwZWN0cnVtX29uX3BwbGwpKAogIHN0cnVjdCBkY19iaW9zICpiaW9z LAogIHN0cnVjdCBicF9zcHJlYWRfc3BlY3RydW1fcGFyYW1ldGVycyAqYnBfcGFyYW1zLAogIGJv b2wgZW5hYmxlKTsKIGVudW0gYnBfcmVzdWx0ICgqcHJvZ3JhbV9jcnRjX3RpbWluZykoCiAgc3Ry dWN0IGRjX2Jpb3MgKmJpb3MsCiAgc3RydWN0IGJwX2h3X2NydGNfdGltaW5nX3BhcmFtZXRlcnMg KmJwX3BhcmFtcyk7CiBlbnVtIGJwX3Jlc3VsdCAoKnByb2dyYW1fZGlzcGxheV9lbmdpbmVfcGxs KSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBzdHJ1Y3QgYnBfcGl4ZWxfY2xvY2tfcGFyYW1l dGVycyAqYnBfcGFyYW1zKTsKIGVudW0gYnBfcmVzdWx0ICgqZW5hYmxlX2Rpc3BfcG93ZXJfZ2F0 aW5nKSgKICBzdHJ1Y3QgZGNfYmlvcyAqYmlvcywKICBlbnVtIGNvbnRyb2xsZXJfaWQgY29udHJv bGxlcl9pZCwKICBlbnVtIGJwX3BpcGVfY29udHJvbF9hY3Rpb24gYWN0aW9uKTsKCiB2b2lkICgq Ymlvc19wYXJzZXJfZGVzdHJveSkoc3RydWN0IGRjX2Jpb3MgKipkY2IpOwoKIGVudW0gYnBfcmVz dWx0ICgqZ2V0X2JvYXJkX2xheW91dF9pbmZvKSgKICBzdHJ1Y3QgZGNfYmlvcyAqZGNiLAogIHN0 cnVjdCBib2FyZF9sYXlvdXRfaW5mbyAqYm9hcmRfbGF5b3V0X2luZm8pOwp9OwoKc3RydWN0IGJp b3NfcmVnaXN0ZXJzIHsKIHVpbnQzMl90IEJJT1NfU0NSQVRDSF8zOwogdWludDMyX3QgQklPU19T Q1JBVENIXzY7Cn07CgpzdHJ1Y3QgZGNfYmlvcyB7CiBjb25zdCBzdHJ1Y3QgZGNfdmJpb3NfZnVu Y3MgKmZ1bmNzOwoKIHVpbnQ4X3QgKmJpb3M7CiB1aW50MzJfdCBiaW9zX3NpemU7CgogdWludDhf dCAqYmlvc19sb2NhbF9pbWFnZTsKCiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwogY29uc3Qgc3Ry dWN0IGJpb3NfcmVnaXN0ZXJzICpyZWdzOwogc3RydWN0IGludGVncmF0ZWRfaW5mbyAqaW50ZWdy YXRlZF9pbmZvOwogc3RydWN0IGRjX2Zpcm13YXJlX2luZm8gZndfaW5mbzsKIGJvb2wgZndfaW5m b192YWxpZDsKfTsKIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2luY2x1ZGUvYmlvc19wYXJzZXJfaW50ZXJmYWNlLmgiIDIKCnN0cnVjdCBiaW9zX3BhcnNlcjsK CnN0cnVjdCBicF9pbml0X2RhdGEgewogc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKIHVpbnQ4X3Qg KmJpb3M7Cn07CgpzdHJ1Y3QgZGNfYmlvcyAqZGFsX2Jpb3NfcGFyc2VyX2NyZWF0ZSgKIHN0cnVj dCBicF9pbml0X2RhdGEgKmluaXQsCiBlbnVtIGRjZV92ZXJzaW9uIGRjZV92ZXJzaW9uKTsKCnZv aWQgZGFsX2Jpb3NfcGFyc2VyX2Rlc3Ryb3koc3RydWN0IGRjX2Jpb3MgKipkY2IpOwojIDMxICIu L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvbXByZXNzb3Iu aCIgMgoKZW51bSBmYmNfY29tcHJlc3NfcmF0aW8gewogRkJDX0NPTVBSRVNTX1JBVElPX0lOVkFM SUQgPSAwLAogRkJDX0NPTVBSRVNTX1JBVElPXzFUTzEgPSAxLAogRkJDX0NPTVBSRVNTX1JBVElP XzJUTzEgPSAyLAogRkJDX0NPTVBSRVNTX1JBVElPXzRUTzEgPSA0LAogRkJDX0NPTVBSRVNTX1JB VElPXzhUTzEgPSA4LAp9OwoKdW5pb24gZmJjX3BoeXNpY2FsX2FkZHJlc3Mgewogc3RydWN0IHsK ICB1aW50MzJfdCBsb3dfcGFydDsKICBpbnQzMl90IGhpZ2hfcGFydDsKIH0gYWRkcjsKIHVpbnQ2 NF90IHF1YWRfcGFydDsKfTsKCnN0cnVjdCBjb21wcl9hZGRyX2FuZF9waXRjaF9wYXJhbXMgewoK IHVpbnQzMl90IGluc3Q7CiB1aW50MzJfdCBzb3VyY2Vfdmlld193aWR0aDsKIHVpbnQzMl90IHNv dXJjZV92aWV3X2hlaWdodDsKfTsKCmVudW0gZmJjX2h3X21heF9yZXNvbHV0aW9uX3N1cHBvcnRl ZCB7CiBGQkNfTUFYX1ggPSAzODQwLAogRkJDX01BWF9ZID0gMjQwMCwKIEZCQ19NQVhfWF9TRyA9 IDE5MjAsCiBGQkNfTUFYX1lfU0cgPSAxMDgwLAp9OwoKc3RydWN0IGNvbXByZXNzb3I7CgpzdHJ1 Y3QgY29tcHJlc3Nvcl9mdW5jcyB7Cgogdm9pZCAoKnBvd2VyX3VwX2ZiYykoc3RydWN0IGNvbXBy ZXNzb3IgKmNwKTsKIHZvaWQgKCplbmFibGVfZmJjKShzdHJ1Y3QgY29tcHJlc3NvciAqY3AsCiAg c3RydWN0IGNvbXByX2FkZHJfYW5kX3BpdGNoX3BhcmFtcyAqcGFyYW1zKTsKIHZvaWQgKCpkaXNh YmxlX2ZiYykoc3RydWN0IGNvbXByZXNzb3IgKmNwKTsKIHZvaWQgKCpzZXRfZmJjX2ludmFsaWRh dGlvbl90cmlnZ2Vycykoc3RydWN0IGNvbXByZXNzb3IgKmNwLAogIHVpbnQzMl90IGZiY190cmln Z2VyKTsKIHZvaWQgKCpzdXJmYWNlX2FkZHJlc3NfYW5kX3BpdGNoKSgKICBzdHJ1Y3QgY29tcHJl c3NvciAqY3AsCiAgc3RydWN0IGNvbXByX2FkZHJfYW5kX3BpdGNoX3BhcmFtcyAqcGFyYW1zKTsK IGJvb2wgKCppc19mYmNfZW5hYmxlZF9pbl9odykoc3RydWN0IGNvbXByZXNzb3IgKmNwLAogIHVp bnQzMl90ICpmYmNfbWFwcGVkX2NydGNfaWQpOwp9OwpzdHJ1Y3QgY29tcHJlc3NvciB7CiBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4OwoKIHVpbnQzMl90IGF0dGFjaGVkX2luc3Q7CiBib29sIGlzX2Vu YWJsZWQ7CiBjb25zdCBzdHJ1Y3QgY29tcHJlc3Nvcl9mdW5jcyAqZnVuY3M7CiB1bmlvbiB7CiAg dWludDMyX3QgcmF3OwogIHN0cnVjdCB7CiAgIHVpbnQzMl90IEZCQ19TVVBQT1JUOjE7CiAgIHVp bnQzMl90IEZCX1BPT0w6MTsKICAgdWludDMyX3QgRFlOQU1JQ19BTExPQzoxOwogICB1aW50MzJf dCBMUFRfU1VQUE9SVDoxOwogICB1aW50MzJfdCBMUFRfTUNfQ09ORklHOjE7CiAgIHVpbnQzMl90 IERVTU1ZX0JBQ0tFTkQ6MTsKICAgdWludDMyX3QgQ0xLX0dBVElOR19ESVNBQkxFRDoxOwoKICB9 IGJpdHM7CiB9IG9wdGlvbnM7CgogdW5pb24gZmJjX3BoeXNpY2FsX2FkZHJlc3MgY29tcHJfc3Vy ZmFjZV9hZGRyZXNzOwoKIHVpbnQzMl90IGVtYmVkZGVkX3BhbmVsX2hfc2l6ZTsKIHVpbnQzMl90 IGVtYmVkZGVkX3BhbmVsX3Zfc2l6ZTsKIHVpbnQzMl90IG1lbW9yeV9idXNfd2lkdGg7CiB1aW50 MzJfdCBiYW5rc19udW07CiB1aW50MzJfdCByYXdfc2l6ZTsKIHVpbnQzMl90IGNoYW5uZWxfaW50 ZXJsZWF2ZV9zaXplOwogdWludDMyX3QgZHJhbV9jaGFubmVsc19udW07CgogdWludDMyX3QgYWxs b2NhdGVkX3NpemU7CiB1aW50MzJfdCBwcmVmZXJyZWRfcmVxdWVzdGVkX3NpemU7CiB1aW50MzJf dCBscHRfY2hhbm5lbHNfbnVtOwogZW51bSBmYmNfY29tcHJlc3NfcmF0aW8gbWluX2NvbXByZXNz X3JhdGlvOwp9OwoKc3RydWN0IGZiY19pbnB1dF9pbmZvIHsKIGJvb2wgZHluYW1pY19mYmNfYnVm ZmVyX2FsbG9jOwogdW5zaWduZWQgaW50IHNvdXJjZV92aWV3X3dpZHRoOwogdW5zaWduZWQgaW50 IHNvdXJjZV92aWV3X2hlaWdodDsKIHVuc2lnbmVkIGludCBudW1fb2ZfYWN0aXZlX3RhcmdldHM7 Cn07CgoKc3RydWN0IGZiY19yZXF1ZXN0ZWRfY29tcHJlc3NlZF9zaXplIHsKIHVuc2lnbmVkIGlu dCBwcmVmZXJyZWRfc2l6ZTsKIHVuc2lnbmVkIGludCBwcmVmZXJyZWRfc2l6ZV9hbGlnbm1lbnQ7 CiB1bnNpZ25lZCBpbnQgbWluX3NpemU7CiB1bnNpZ25lZCBpbnQgbWluX3NpemVfYWxpZ25tZW50 OwogdW5pb24gewogIHN0cnVjdCB7CgogICB1bnNpZ25lZCBpbnQgcHJlZmVycmVkX211c3RfYmVf ZnJhbWVidWZmZXJfcG9vbCA6IDE7CgogICB1bnNpZ25lZCBpbnQgbWluX211c3RfYmVfZnJhbWVi dWZmZXJfcG9vbCA6IDE7CiAgfSBiaXRzOwogIHVuc2lnbmVkIGludCBmbGFnczsKIH07Cn07CiMg MzkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kYy5oIiAyCiMg MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9kbWN1 LmgiIDEKIyAyOCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2lu Yy9ody9kbWN1LmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RtX3NlcnZpY2VzX3R5cGVzLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9kbWN1LmgiIDIKCgoKCgoKZW51bSBkbWN1X3N0YXRl IHsKIERNQ1VfVU5MT0FERUQgPSAwLAogRE1DVV9MT0FERURfVU5JTklUSUFMSVpFRCA9IDEsCiBE TUNVX1JVTk5JTkcgPSAyLAp9OwoKc3RydWN0IGRtY3VfdmVyc2lvbiB7CiB1bnNpZ25lZCBpbnQg aW50ZXJmYWNlX3ZlcnNpb247CiB1bnNpZ25lZCBpbnQgYWJtX3ZlcnNpb247CiB1bnNpZ25lZCBp bnQgcHNyX3ZlcnNpb247CiB1bnNpZ25lZCBpbnQgYnVpbGRfdmVyc2lvbjsKfTsKCnN0cnVjdCBk bWN1IHsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CiBjb25zdCBzdHJ1Y3QgZG1jdV9mdW5jcyAq ZnVuY3M7CgogZW51bSBkbWN1X3N0YXRlIGRtY3Vfc3RhdGU7CiBzdHJ1Y3QgZG1jdV92ZXJzaW9u IGRtY3VfdmVyc2lvbjsKIHVuc2lnbmVkIGludCBjYWNoZWRfd2FpdF9sb29wX251bWJlcjsKIHVp bnQzMl90IHBzcF92ZXJzaW9uOwogYm9vbCBhdXRvX2xvYWRfZG1jdTsKfTsKCnN0cnVjdCBkbWN1 X2Z1bmNzIHsKIGJvb2wgKCpkbWN1X2luaXQpKHN0cnVjdCBkbWN1ICpkbWN1KTsKIGJvb2wgKCps b2FkX2lyYW0pKHN0cnVjdCBkbWN1ICpkbWN1LAogICB1bnNpZ25lZCBpbnQgc3RhcnRfb2Zmc2V0 LAogICBjb25zdCBjaGFyICpzcmMsCiAgIHVuc2lnbmVkIGludCBieXRlcyk7CiB2b2lkICgqc2V0 X3Bzcl9lbmFibGUpKHN0cnVjdCBkbWN1ICpkbWN1LCBib29sIGVuYWJsZSwgYm9vbCB3YWl0KTsK IGJvb2wgKCpzZXR1cF9wc3IpKHN0cnVjdCBkbWN1ICpkbWN1LAogICBzdHJ1Y3QgZGNfbGluayAq bGluaywKICAgc3RydWN0IHBzcl9jb250ZXh0ICpwc3JfY29udGV4dCk7CiB2b2lkICgqZ2V0X3Bz cl9zdGF0ZSkoc3RydWN0IGRtY3UgKmRtY3UsIHVpbnQzMl90ICpwc3Jfc3RhdGUpOwogdm9pZCAo KnNldF9wc3Jfd2FpdF9sb29wKShzdHJ1Y3QgZG1jdSAqZG1jdSwKICAgdW5zaWduZWQgaW50IHdh aXRfbG9vcF9udW1iZXIpOwogdm9pZCAoKmdldF9wc3Jfd2FpdF9sb29wKShzdHJ1Y3QgZG1jdSAq ZG1jdSwKICAgdW5zaWduZWQgaW50ICpwc3Jfd2FpdF9sb29wX251bWJlcik7CiBib29sICgqaXNf ZG1jdV9pbml0aWFsaXplZCkoc3RydWN0IGRtY3UgKmRtY3UpOwogYm9vbCAoKmxvY2tfcGh5KShz dHJ1Y3QgZG1jdSAqZG1jdSk7CiBib29sICgqdW5sb2NrX3BoeSkoc3RydWN0IGRtY3UgKmRtY3Up Owp9OwojIDQwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMu aCIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwv ZGlzcGxheV9tb2RlX2xpYi5oIiAxCiMgMjkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX2xpYi5oIgojIDEgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9kZWZzLmgiIDEKIyAz MCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kbWxfY29t bW9uX2RlZnMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvZG1sL2RjX2ZlYXR1cmVzLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2RtbC9kbWxfY29tbW9uX2RlZnMuaCIgMgojIDEgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX3N0cnVjdHMu aCIgMQojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1s L2Rpc3BsYXlfbW9kZV9zdHJ1Y3RzLmgiCnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX3ZvbHRhZ2Vf c2NhbGluZ19zdCB2b2x0YWdlX3NjYWxpbmdfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX3Nv Y19ib3VuZGluZ19ib3hfc3Qgc29jX2JvdW5kaW5nX2JveF9zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zj c19kcGlfaXBfcGFyYW1zX3N0IGlwX3BhcmFtc19zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlf ZGlzcGxheV9waXBlX3NvdXJjZV9wYXJhbXNfc3QgZGlzcGxheV9waXBlX3NvdXJjZV9wYXJhbXNf c3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfb3V0cHV0X3BhcmFtc19zdCBkaXNw bGF5X291dHB1dF9wYXJhbXNfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX3NjYWxlcl9yYXRp b19kZXB0aF9zdCBzY2FsZXJfcmF0aW9fZGVwdGhfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBp X3NjYWxlcl90YXBzX3N0IHNjYWxlcl90YXBzX3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9k aXNwbGF5X3BpcGVfZGVzdF9wYXJhbXNfc3QgZGlzcGxheV9waXBlX2Rlc3RfcGFyYW1zX3N0Owp0 eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3BpcGVfcGFyYW1zX3N0IGRpc3BsYXlfcGlw ZV9wYXJhbXNfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfY2xvY2tzX2FuZF9j Zmdfc3QgZGlzcGxheV9jbG9ja3NfYW5kX2NmZ19zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlf ZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3Q7CnR5 cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9ycV9taXNjX3BhcmFtc19zdCBkaXNw bGF5X2RhdGFfcnFfbWlzY19wYXJhbXNfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3Bs YXlfZGF0YV9ycV9zaXppbmdfcGFyYW1zX3N0IGRpc3BsYXlfZGF0YV9ycV9zaXppbmdfcGFyYW1z X3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RhdGFfcnFfZGxnX3BhcmFtc19z dCBkaXNwbGF5X2RhdGFfcnFfZGxnX3BhcmFtc19zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlf ZGlzcGxheV9ycV9kbGdfcGFyYW1zX3N0IGRpc3BsYXlfcnFfZGxnX3BhcmFtc19zdDsKdHlwZWRl ZiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9zaXppbmdfcGFyYW1zX3N0IGRpc3BsYXlfcnFf c2l6aW5nX3BhcmFtc19zdDsKdHlwZWRlZiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9taXNj X3BhcmFtc19zdCBkaXNwbGF5X3JxX21pc2NfcGFyYW1zX3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNz X2RwaV9kaXNwbGF5X3JxX3BhcmFtc19zdCBkaXNwbGF5X3JxX3BhcmFtc19zdDsKdHlwZWRlZiBz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kbGdfcmVnc19zdCBkaXNwbGF5X2RsZ19yZWdzX3N0Owp0 eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0IGRpc3BsYXlfdHR1X3Jl Z3Nfc3Q7CnR5cGVkZWYgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZGF0YV9ycV9yZWdzX3N0IGRp c3BsYXlfZGF0YV9ycV9yZWdzX3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3Jx X3JlZ3Nfc3QgZGlzcGxheV9ycV9yZWdzX3N0Owp0eXBlZGVmIHN0cnVjdCBfdmNzX2RwaV9kaXNw bGF5X2RsZ19zeXNfcGFyYW1zX3N0IGRpc3BsYXlfZGxnX3N5c19wYXJhbXNfc3Q7CnR5cGVkZWYg c3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfYXJiX3BhcmFtc19zdCBkaXNwbGF5X2FyYl9wYXJhbXNf c3Q7CgpzdHJ1Y3QgX3Zjc19kcGlfdm9sdGFnZV9zY2FsaW5nX3N0IHsKIGludCBzdGF0ZTsKIGRv dWJsZSBkc2NjbGtfbWh6OwogZG91YmxlIGRjZmNsa19taHo7CiBkb3VibGUgc29jY2xrX21oejsK IGRvdWJsZSBwaHljbGtfZDE4X21oejsKIGRvdWJsZSBkcmFtX3NwZWVkX210czsKIGRvdWJsZSBm YWJyaWNjbGtfbWh6OwogZG91YmxlIGRpc3BjbGtfbWh6OwogZG91YmxlIHBoeWNsa19taHo7CiBk b3VibGUgZHBwY2xrX21oejsKIGRvdWJsZSBkdGJjbGtfbWh6Owp9OwoKc3RydWN0IF92Y3NfZHBp X3NvY19ib3VuZGluZ19ib3hfc3QgewogZG91YmxlIHNyX2V4aXRfdGltZV91czsKIGRvdWJsZSBz cl9lbnRlcl9wbHVzX2V4aXRfdGltZV91czsKIGRvdWJsZSB1cmdlbnRfbGF0ZW5jeV91czsKIGRv dWJsZSB1cmdlbnRfbGF0ZW5jeV9waXhlbF9kYXRhX29ubHlfdXM7CiBkb3VibGUgdXJnZW50X2xh dGVuY3lfcGl4ZWxfbWl4ZWRfd2l0aF92bV9kYXRhX3VzOwogZG91YmxlIHVyZ2VudF9sYXRlbmN5 X3ZtX2RhdGFfb25seV91czsKIGRvdWJsZSB3cml0ZWJhY2tfbGF0ZW5jeV91czsKIGRvdWJsZSBp ZGVhbF9kcmFtX2J3X2FmdGVyX3VyZ2VudF9wZXJjZW50OwogZG91YmxlIHBjdF9pZGVhbF9kcmFt X3NkcF9id19hZnRlcl91cmdlbnRfcGl4ZWxfb25seTsKIGRvdWJsZSBwY3RfaWRlYWxfZHJhbV9z ZHBfYndfYWZ0ZXJfdXJnZW50X3BpeGVsX2FuZF92bTsKIGRvdWJsZSBwY3RfaWRlYWxfZHJhbV9z ZHBfYndfYWZ0ZXJfdXJnZW50X3ZtX29ubHk7CiBkb3VibGUgbWF4X2F2Z19zZHBfYndfdXNlX25v cm1hbF9wZXJjZW50OwogZG91YmxlIG1heF9hdmdfZHJhbV9id191c2Vfbm9ybWFsX3BlcmNlbnQ7 CiB1bnNpZ25lZCBpbnQgbWF4X3JlcXVlc3Rfc2l6ZV9ieXRlczsKIGRvdWJsZSBkb3duc3ByZWFk X3BlcmNlbnQ7CiBkb3VibGUgZHJhbV9wYWdlX29wZW5fdGltZV9uczsKIGRvdWJsZSBkcmFtX3J3 X3R1cm5hcm91bmRfdGltZV9uczsKIGRvdWJsZSBkcmFtX3JldHVybl9idWZmZXJfcGVyX2NoYW5u ZWxfYnl0ZXM7CiBkb3VibGUgZHJhbV9jaGFubmVsX3dpZHRoX2J5dGVzOwogZG91YmxlIGZhYnJp Y19kYXRhcGF0aF90b19kY25fZGF0YV9yZXR1cm5fYnl0ZXM7CiBkb3VibGUgZGNuX2Rvd25zcHJl YWRfcGVyY2VudDsKIGRvdWJsZSBkaXNwY2xrX2RwcGNsa192Y29fc3BlZWRfbWh6OwogZG91Ymxl IGRmc192Y29fcGVyaW9kX3BzOwogdW5zaWduZWQgaW50IHVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0 dXJuX3Blcl9jaGFubmVsX3BpeGVsX29ubHlfYnl0ZXM7CiB1bnNpZ25lZCBpbnQgdXJnZW50X291 dF9vZl9vcmRlcl9yZXR1cm5fcGVyX2NoYW5uZWxfcGl4ZWxfYW5kX3ZtX2J5dGVzOwogdW5zaWdu ZWQgaW50IHVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsX3ZtX29ubHlfYnl0 ZXM7CiB1bnNpZ25lZCBpbnQgcm91bmRfdHJpcF9waW5nX2xhdGVuY3lfZGNmY2xrX2N5Y2xlczsK IHVuc2lnbmVkIGludCB1cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbF9ieXRl czsKIHVuc2lnbmVkIGludCBjaGFubmVsX2ludGVybGVhdmVfYnl0ZXM7CiB1bnNpZ25lZCBpbnQg bnVtX2JhbmtzOwogdW5zaWduZWQgaW50IG51bV9jaGFuczsKIHVuc2lnbmVkIGludCB2bW1fcGFn ZV9zaXplX2J5dGVzOwogdW5zaWduZWQgaW50IGhvc3R2bV9taW5fcGFnZV9zaXplX2J5dGVzOwog dW5zaWduZWQgaW50IGdwdXZtX21pbl9wYWdlX3NpemVfYnl0ZXM7CiBkb3VibGUgZHJhbV9jbG9j a19jaGFuZ2VfbGF0ZW5jeV91czsKIGRvdWJsZSBkdW1teV9wc3RhdGVfbGF0ZW5jeV91czsKIGRv dWJsZSB3cml0ZWJhY2tfZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5jeV91czsKIHVuc2lnbmVkIGlu dCByZXR1cm5fYnVzX3dpZHRoX2J5dGVzOwogdW5zaWduZWQgaW50IHZvbHRhZ2Vfb3ZlcnJpZGU7 CiBkb3VibGUgeGZjX2J1c190cmFuc3BvcnRfdGltZV91czsKIGRvdWJsZSB4ZmNfeGJ1Zl9sYXRl bmN5X3RvbGVyYW5jZV91czsKIGludCB1c2VfdXJnZW50X2J1cnN0X2J3OwogdW5zaWduZWQgaW50 IG51bV9zdGF0ZXM7CiBzdHJ1Y3QgX3Zjc19kcGlfdm9sdGFnZV9zY2FsaW5nX3N0IGNsb2NrX2xp bWl0c1s4XTsKIGJvb2wgZG9fdXJnZW50X2xhdGVuY3lfYWRqdXN0bWVudDsKIGRvdWJsZSB1cmdl bnRfbGF0ZW5jeV9hZGp1c3RtZW50X2ZhYnJpY19jbG9ja19jb21wb25lbnRfdXM7CiBkb3VibGUg dXJnZW50X2xhdGVuY3lfYWRqdXN0bWVudF9mYWJyaWNfY2xvY2tfcmVmZXJlbmNlX21oejsKIGJv b2wgZGlzYWJsZV9kcmFtX2Nsb2NrX2NoYW5nZV92YWN0aXZlX3N1cHBvcnQ7Cn07CgpzdHJ1Y3Qg X3Zjc19kcGlfaXBfcGFyYW1zX3N0IHsKIGJvb2wgZ3B1dm1fZW5hYmxlOwogYm9vbCBob3N0dm1f ZW5hYmxlOwogdW5zaWduZWQgaW50IGdwdXZtX21heF9wYWdlX3RhYmxlX2xldmVsczsKIHVuc2ln bmVkIGludCBob3N0dm1fbWF4X3BhZ2VfdGFibGVfbGV2ZWxzOwogdW5zaWduZWQgaW50IGhvc3R2 bV9jYWNoZWRfcGFnZV90YWJsZV9sZXZlbHM7CiB1bnNpZ25lZCBpbnQgcHRlX2dyb3VwX3NpemVf Ynl0ZXM7CiB1bnNpZ25lZCBpbnQgbWF4X2ludGVyX2Rjbl90aWxlX3JlcGVhdGVyczsKIHVuc2ln bmVkIGludCBudW1fZHNjOwogdW5zaWduZWQgaW50IG9kbV9jYXBhYmxlOwogdW5zaWduZWQgaW50 IHJvYl9idWZmZXJfc2l6ZV9rYnl0ZXM7CiB1bnNpZ25lZCBpbnQgZGV0X2J1ZmZlcl9zaXplX2ti eXRlczsKIHVuc2lnbmVkIGludCBkcHRlX2J1ZmZlcl9zaXplX2luX3B0ZV9yZXFzX2x1bWE7CiB1 bnNpZ25lZCBpbnQgZHB0ZV9idWZmZXJfc2l6ZV9pbl9wdGVfcmVxc19jaHJvbWE7CiB1bnNpZ25l ZCBpbnQgcGRlX3Byb2NfYnVmZmVyX3NpemVfNjRrX3JlcXM7CiB1bnNpZ25lZCBpbnQgZHBwX291 dHB1dF9idWZmZXJfcGl4ZWxzOwogdW5zaWduZWQgaW50IG9wcF9vdXRwdXRfYnVmZmVyX2xpbmVz OwogdW5zaWduZWQgaW50IHBpeGVsX2NodW5rX3NpemVfa2J5dGVzOwogdW5zaWduZWQgY2hhciBw dGVfZW5hYmxlOwogdW5zaWduZWQgaW50IHB0ZV9jaHVua19zaXplX2tieXRlczsKIHVuc2lnbmVk IGludCBtZXRhX2NodW5rX3NpemVfa2J5dGVzOwogdW5zaWduZWQgaW50IHdyaXRlYmFja19jaHVu a19zaXplX2tieXRlczsKIHVuc2lnbmVkIGludCBsaW5lX2J1ZmZlcl9zaXplX2JpdHM7CiB1bnNp Z25lZCBpbnQgbWF4X2xpbmVfYnVmZmVyX2xpbmVzOwogdW5zaWduZWQgaW50IHdyaXRlYmFja19s dW1hX2J1ZmZlcl9zaXplX2tieXRlczsKIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfY2hyb21hX2J1 ZmZlcl9zaXplX2tieXRlczsKIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfY2hyb21hX2xpbmVfYnVm ZmVyX3dpZHRoX3BpeGVsczsKCiB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX2ludGVyZmFjZV9idWZm ZXJfc2l6ZV9rYnl0ZXM7CiB1bnNpZ25lZCBpbnQgd3JpdGViYWNrX2xpbmVfYnVmZmVyX2J1ZmZl cl9zaXplOwoKIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfMTBicGM0MjBfc3VwcG9ydGVkOwogZG91 YmxlIHdyaXRlYmFja19tYXhfaHNjbF9yYXRpbzsKIGRvdWJsZSB3cml0ZWJhY2tfbWF4X3ZzY2xf cmF0aW87CiBkb3VibGUgd3JpdGViYWNrX21pbl9oc2NsX3JhdGlvOwogZG91YmxlIHdyaXRlYmFj a19taW5fdnNjbF9yYXRpbzsKIHVuc2lnbmVkIGludCB3cml0ZWJhY2tfbWF4X2hzY2xfdGFwczsK IHVuc2lnbmVkIGludCB3cml0ZWJhY2tfbWF4X3ZzY2xfdGFwczsKIHVuc2lnbmVkIGludCB3cml0 ZWJhY2tfbGluZV9idWZmZXJfbHVtYV9idWZmZXJfc2l6ZTsKIHVuc2lnbmVkIGludCB3cml0ZWJh Y2tfbGluZV9idWZmZXJfY2hyb21hX2J1ZmZlcl9zaXplOwoKIHVuc2lnbmVkIGludCBtYXhfcGFn ZV90YWJsZV9sZXZlbHM7CiB1bnNpZ25lZCBpbnQgbWF4X251bV9kcHA7CiB1bnNpZ25lZCBpbnQg bWF4X251bV9vdGc7CiB1bnNpZ25lZCBpbnQgY3Vyc29yX2NodW5rX3NpemU7CiB1bnNpZ25lZCBp bnQgY3Vyc29yX2J1ZmZlcl9zaXplOwogdW5zaWduZWQgaW50IG1heF9udW1fd2I7CiB1bnNpZ25l ZCBpbnQgbWF4X2RjaHViX3BzY2xfYndfcGl4X3Blcl9jbGs7CiB1bnNpZ25lZCBpbnQgbWF4X3Bz Y2xfbGJfYndfcGl4X3Blcl9jbGs7CiB1bnNpZ25lZCBpbnQgbWF4X2xiX3ZzY2xfYndfcGl4X3Bl cl9jbGs7CiB1bnNpZ25lZCBpbnQgbWF4X3ZzY2xfaHNjbF9id19waXhfcGVyX2NsazsKIGRvdWJs ZSBtYXhfaHNjbF9yYXRpbzsKIGRvdWJsZSBtYXhfdnNjbF9yYXRpbzsKIHVuc2lnbmVkIGludCBo c2NsX211bHRzOwogdW5zaWduZWQgaW50IHZzY2xfbXVsdHM7CiB1bnNpZ25lZCBpbnQgbWF4X2hz Y2xfdGFwczsKIHVuc2lnbmVkIGludCBtYXhfdnNjbF90YXBzOwogdW5zaWduZWQgaW50IHhmY19z dXBwb3J0ZWQ7CiB1bnNpZ25lZCBpbnQgcHRvaV9zdXBwb3J0ZWQ7CiB1bnNpZ25lZCBpbnQgZ2Z4 N19jb21wYXRfdGlsaW5nX3N1cHBvcnRlZDsKCiBib29sIG9kbV9jb21iaW5lXzR0bzFfc3VwcG9y dGVkOwogYm9vbCBkeW5hbWljX21ldGFkYXRhX3ZtX2VuYWJsZWQ7CiB1bnNpZ25lZCBpbnQgbWF4 X251bV9oZG1pX2ZybF9vdXRwdXRzOwoKIHVuc2lnbmVkIGludCB4ZmNfZmlsbF9jb25zdGFudF9i eXRlczsKIGRvdWJsZSBkaXNwY2xrX3JhbXBfbWFyZ2luX3BlcmNlbnQ7CiBkb3VibGUgeGZjX2Zp bGxfYndfb3ZlcmhlYWRfcGVyY2VudDsKIGRvdWJsZSB1bmRlcnNjYW5fZmFjdG9yOwogdW5zaWdu ZWQgaW50IG1pbl92YmxhbmtfbGluZXM7CiB1bnNpZ25lZCBpbnQgZHBwY2xrX2RlbGF5X3N1YnRv dGFsOwogdW5zaWduZWQgaW50IGRpc3BjbGtfZGVsYXlfc3VidG90YWw7CiB1bnNpZ25lZCBpbnQg ZGNmY2xrX2NzdGF0ZV9sYXRlbmN5OwogdW5zaWduZWQgaW50IGRwcGNsa19kZWxheV9zY2w7CiB1 bnNpZ25lZCBpbnQgZHBwY2xrX2RlbGF5X3NjbF9sYl9vbmx5OwogdW5zaWduZWQgaW50IGRwcGNs a19kZWxheV9jbnZjX2Zvcm1hdHRlcjsKIHVuc2lnbmVkIGludCBkcHBjbGtfZGVsYXlfY252Y19j dXJzb3I7CiB1bnNpZ25lZCBpbnQgaXNfbGluZV9idWZmZXJfYnBwX2ZpeGVkOwogdW5zaWduZWQg aW50IGxpbmVfYnVmZmVyX2ZpeGVkX2JwcDsKIHVuc2lnbmVkIGludCBkY2Nfc3VwcG9ydGVkOwoK IHVuc2lnbmVkIGludCBJc0xpbmVCdWZmZXJCcHBGaXhlZDsKIHVuc2lnbmVkIGludCBMaW5lQnVm ZmVyRml4ZWRCcHA7CiB1bnNpZ25lZCBpbnQgY2FuX3ZzdGFydHVwX2xpbmVzX2V4Y2VlZF92c3lu Y19wbHVzX2JhY2tfcG9yY2hfbGluZXNfbWludXNfb25lOwogdW5zaWduZWQgaW50IGJ1Z19mb3Jj aW5nX0xDX3JlcV9zYW1lX3NpemVfZml4ZWQ7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV94 ZmNfcGFyYW1zX3N0IHsKIGRvdWJsZSB4ZmNfdHNsdl92cmVhZHlfb2Zmc2V0X3VzOwogZG91Ymxl IHhmY190c2x2X3Z1cGRhdGVfd2lkdGhfdXM7CiBkb3VibGUgeGZjX3RzbHZfdnVwZGF0ZV9vZmZz ZXRfdXM7CiBpbnQgeGZjX3Nsdl9jaHVua19zaXplX2J5dGVzOwp9OwoKc3RydWN0IF92Y3NfZHBp X2Rpc3BsYXlfcGlwZV9zb3VyY2VfcGFyYW1zX3N0IHsKIGludCBzb3VyY2VfZm9ybWF0OwogdW5z aWduZWQgY2hhciBkY2M7CiB1bnNpZ25lZCBpbnQgZGNjX3JhdGU7CiB1bnNpZ25lZCBpbnQgZGNj X3JhdGVfY2hyb21hOwogdW5zaWduZWQgY2hhciBkY2NfdXNlX2dsb2JhbDsKIHVuc2lnbmVkIGNo YXIgdm07CiBib29sIGdwdXZtOwogYm9vbCBob3N0dm07CiBib29sIGdwdXZtX2xldmVsc19mb3Jj ZV9lbjsKIHVuc2lnbmVkIGludCBncHV2bV9sZXZlbHNfZm9yY2U7CiBib29sIGhvc3R2bV9sZXZl bHNfZm9yY2VfZW47CiB1bnNpZ25lZCBpbnQgaG9zdHZtX2xldmVsc19mb3JjZTsKIGludCBzb3Vy Y2Vfc2NhbjsKIGludCBzd19tb2RlOwogaW50IG1hY3JvX3RpbGVfc2l6ZTsKIHVuc2lnbmVkIGlu dCBzdXJmYWNlX3dpZHRoX3k7CiB1bnNpZ25lZCBpbnQgc3VyZmFjZV9oZWlnaHRfeTsKIHVuc2ln bmVkIGludCBzdXJmYWNlX3dpZHRoX2M7CiB1bnNpZ25lZCBpbnQgc3VyZmFjZV9oZWlnaHRfYzsK IHVuc2lnbmVkIGludCB2aWV3cG9ydF93aWR0aDsKIHVuc2lnbmVkIGludCB2aWV3cG9ydF9oZWln aHQ7CiB1bnNpZ25lZCBpbnQgdmlld3BvcnRfeV95OwogdW5zaWduZWQgaW50IHZpZXdwb3J0X3lf YzsKIHVuc2lnbmVkIGludCB2aWV3cG9ydF93aWR0aF9jOwogdW5zaWduZWQgaW50IHZpZXdwb3J0 X2hlaWdodF9jOwogdW5zaWduZWQgaW50IGRhdGFfcGl0Y2g7CiB1bnNpZ25lZCBpbnQgZGF0YV9w aXRjaF9jOwogdW5zaWduZWQgaW50IG1ldGFfcGl0Y2g7CiB1bnNpZ25lZCBpbnQgbWV0YV9waXRj aF9jOwogdW5zaWduZWQgaW50IGN1cjBfc3JjX3dpZHRoOwogaW50IGN1cjBfYnBwOwogdW5zaWdu ZWQgaW50IGN1cjFfc3JjX3dpZHRoOwogaW50IGN1cjFfYnBwOwogaW50IG51bV9jdXJzb3JzOwog dW5zaWduZWQgY2hhciBpc19oc3BsaXQ7CiB1bnNpZ25lZCBjaGFyIGR5bmFtaWNfbWV0YWRhdGFf ZW5hYmxlOwogdW5zaWduZWQgaW50IGR5bmFtaWNfbWV0YWRhdGFfbGluZXNfYmVmb3JlX2FjdGl2 ZTsKIHVuc2lnbmVkIGludCBkeW5hbWljX21ldGFkYXRhX3htaXRfYnl0ZXM7CiB1bnNpZ25lZCBp bnQgaHNwbGl0X2dycDsKIHVuc2lnbmVkIGNoYXIgeGZjX2VuYWJsZTsKIHVuc2lnbmVkIGNoYXIg eGZjX3NsYXZlOwogdW5zaWduZWQgY2hhciBpbW1lZGlhdGVfZmxpcDsKIHN0cnVjdCBfdmNzX2Rw aV9kaXNwbGF5X3hmY19wYXJhbXNfc3QgeGZjX3BhcmFtczsKCiB1bnNpZ25lZCBjaGFyIHZfdG90 YWxfbWluOwogdW5zaWduZWQgY2hhciB2X3RvdGFsX21heDsKfTsKc3RydWN0IHdyaXRlYmFja19z dCB7CiBpbnQgd2Jfc3JjX2hlaWdodDsKIGludCB3Yl9zcmNfd2lkdGg7CiBpbnQgd2JfZHN0X3dp ZHRoOwogaW50IHdiX2RzdF9oZWlnaHQ7CiBpbnQgd2JfcGl4ZWxfZm9ybWF0OwogaW50IHdiX2h0 YXBzX2x1bWE7CiBpbnQgd2JfdnRhcHNfbHVtYTsKIGludCB3Yl9odGFwc19jaHJvbWE7CiBpbnQg d2JfdnRhcHNfY2hyb21hOwogZG91YmxlIHdiX2hyYXRpbzsKIGRvdWJsZSB3Yl92cmF0aW87Cn07 CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9vdXRwdXRfcGFyYW1zX3N0IHsKIGludCBkcF9sYW5l czsKIGRvdWJsZSBvdXRwdXRfYnBwOwogaW50IGRzY19lbmFibGU7CiBpbnQgd2JfZW5hYmxlOwog aW50IG51bV9hY3RpdmVfd2I7CiBpbnQgb3V0cHV0X2JwYzsKIGludCBvdXRwdXRfdHlwZTsKIGlu dCBvdXRwdXRfZm9ybWF0OwogaW50IGRzY19zbGljZXM7CiBpbnQgbWF4X2F1ZGlvX3NhbXBsZV9y YXRlOwogc3RydWN0IHdyaXRlYmFja19zdCB3YjsKfTsKCnN0cnVjdCBfdmNzX2RwaV9zY2FsZXJf cmF0aW9fZGVwdGhfc3QgewogZG91YmxlIGhzY2xfcmF0aW87CiBkb3VibGUgdnNjbF9yYXRpbzsK IGRvdWJsZSBoc2NsX3JhdGlvX2M7CiBkb3VibGUgdnNjbF9yYXRpb19jOwogZG91YmxlIHZpbml0 OwogZG91YmxlIHZpbml0X2M7CiBkb3VibGUgdmluaXRfYm90OwogZG91YmxlIHZpbml0X2JvdF9j OwogaW50IGxiX2RlcHRoOwogaW50IHNjbF9lbmFibGU7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfc2Nh bGVyX3RhcHNfc3QgewogdW5zaWduZWQgaW50IGh0YXBzOwogdW5zaWduZWQgaW50IHZ0YXBzOwog dW5zaWduZWQgaW50IGh0YXBzX2M7CiB1bnNpZ25lZCBpbnQgdnRhcHNfYzsKfTsKCnN0cnVjdCBf dmNzX2RwaV9kaXNwbGF5X3BpcGVfZGVzdF9wYXJhbXNfc3QgewogdW5zaWduZWQgaW50IHJlY291 dF93aWR0aDsKIHVuc2lnbmVkIGludCByZWNvdXRfaGVpZ2h0OwogdW5zaWduZWQgaW50IGZ1bGxf cmVjb3V0X3dpZHRoOwogdW5zaWduZWQgaW50IGZ1bGxfcmVjb3V0X2hlaWdodDsKIHVuc2lnbmVk IGludCBoYmxhbmtfc3RhcnQ7CiB1bnNpZ25lZCBpbnQgaGJsYW5rX2VuZDsKIHVuc2lnbmVkIGlu dCB2Ymxhbmtfc3RhcnQ7CiB1bnNpZ25lZCBpbnQgdmJsYW5rX2VuZDsKIHVuc2lnbmVkIGludCBo dG90YWw7CiB1bnNpZ25lZCBpbnQgdnRvdGFsOwogdW5zaWduZWQgaW50IHZhY3RpdmU7CiB1bnNp Z25lZCBpbnQgaGFjdGl2ZTsKIHVuc2lnbmVkIGludCB2c3RhcnR1cF9zdGFydDsKIHVuc2lnbmVk IGludCB2dXBkYXRlX29mZnNldDsKIHVuc2lnbmVkIGludCB2dXBkYXRlX3dpZHRoOwogdW5zaWdu ZWQgaW50IHZyZWFkeV9vZmZzZXQ7CiB1bnNpZ25lZCBjaGFyIGludGVybGFjZWQ7CiB1bnNpZ25l ZCBjaGFyIGVtYmVkZGVkOwogZG91YmxlIHBpeGVsX3JhdGVfbWh6OwogdW5zaWduZWQgY2hhciBz eW5jaHJvbml6ZWRfdmJsYW5rX2FsbF9wbGFuZXM7CiB1bnNpZ25lZCBjaGFyIG90Z19pbnN0Owog dW5zaWduZWQgaW50IG9kbV9jb21iaW5lOwogdW5zaWduZWQgY2hhciB1c2VfbWF4aW11bV92c3Rh cnR1cDsKIHVuc2lnbmVkIGludCB2dG90YWxfbWF4OwogdW5zaWduZWQgaW50IHZ0b3RhbF9taW47 Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9waXBlX3BhcmFtc19zdCB7CiBkaXNwbGF5X3Bp cGVfc291cmNlX3BhcmFtc19zdCBzcmM7CiBkaXNwbGF5X3BpcGVfZGVzdF9wYXJhbXNfc3QgZGVz dDsKIHNjYWxlcl9yYXRpb19kZXB0aF9zdCBzY2FsZV9yYXRpb19kZXB0aDsKIHNjYWxlcl90YXBz X3N0IHNjYWxlX3RhcHM7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9jbG9ja3NfYW5kX2Nm Z19zdCB7CiBpbnQgdm9sdGFnZTsKIGRvdWJsZSBkcHBjbGtfbWh6OwogZG91YmxlIHJlZmNsa19t aHo7CiBkb3VibGUgZGlzcGNsa19taHo7CiBkb3VibGUgZGNmY2xrX21oejsKIGRvdWJsZSBzb2Nj bGtfbWh6Owp9OwoKc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0IHsK IGRpc3BsYXlfcGlwZV9wYXJhbXNfc3QgcGlwZTsKIGRpc3BsYXlfb3V0cHV0X3BhcmFtc19zdCBk b3V0OwogZGlzcGxheV9jbG9ja3NfYW5kX2NmZ19zdCBjbGtzX2NmZzsKfTsKCnN0cnVjdCBfdmNz X2RwaV9kaXNwbGF5X2RhdGFfcnFfbWlzY19wYXJhbXNfc3QgewogdW5zaWduZWQgaW50IGZ1bGxf c3dhdGhfYnl0ZXM7CiB1bnNpZ25lZCBpbnQgc3RvcmVkX3N3YXRoX2J5dGVzOwogdW5zaWduZWQg aW50IGJsazI1Nl9oZWlnaHQ7CiB1bnNpZ25lZCBpbnQgYmxrMjU2X3dpZHRoOwogdW5zaWduZWQg aW50IHJlcV9oZWlnaHQ7CiB1bnNpZ25lZCBpbnQgcmVxX3dpZHRoOwp9OwoKc3RydWN0IF92Y3Nf ZHBpX2Rpc3BsYXlfZGF0YV9ycV9zaXppbmdfcGFyYW1zX3N0IHsKIHVuc2lnbmVkIGludCBjaHVu a19ieXRlczsKIHVuc2lnbmVkIGludCBtaW5fY2h1bmtfYnl0ZXM7CiB1bnNpZ25lZCBpbnQgbWV0 YV9jaHVua19ieXRlczsKIHVuc2lnbmVkIGludCBtaW5fbWV0YV9jaHVua19ieXRlczsKIHVuc2ln bmVkIGludCBtcHRlX2dyb3VwX2J5dGVzOwogdW5zaWduZWQgaW50IGRwdGVfZ3JvdXBfYnl0ZXM7 Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kYXRhX3JxX2RsZ19wYXJhbXNfc3QgewogdW5z aWduZWQgaW50IHN3YXRoX3dpZHRoX3ViOwogdW5zaWduZWQgaW50IHN3YXRoX2hlaWdodDsKIHVu c2lnbmVkIGludCByZXFfcGVyX3N3YXRoX3ViOwogdW5zaWduZWQgaW50IG1ldGFfcHRlX2J5dGVz X3Blcl9mcmFtZV91YjsKIHVuc2lnbmVkIGludCBkcHRlX3JlcV9wZXJfcm93X3ViOwogdW5zaWdu ZWQgaW50IGRwdGVfZ3JvdXBzX3Blcl9yb3dfdWI7CiB1bnNpZ25lZCBpbnQgZHB0ZV9yb3dfaGVp Z2h0OwogdW5zaWduZWQgaW50IGRwdGVfYnl0ZXNfcGVyX3Jvd191YjsKIHVuc2lnbmVkIGludCBt ZXRhX2NodW5rc19wZXJfcm93X3ViOwogdW5zaWduZWQgaW50IG1ldGFfcmVxX3Blcl9yb3dfdWI7 CiB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfaGVpZ2h0OwogdW5zaWduZWQgaW50IG1ldGFfYnl0ZXNf cGVyX3Jvd191YjsKfTsKCnN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3JxX2RsZ19wYXJhbXNfc3Qg ewogZGlzcGxheV9kYXRhX3JxX2RsZ19wYXJhbXNfc3QgcnFfbDsKIGRpc3BsYXlfZGF0YV9ycV9k bGdfcGFyYW1zX3N0IHJxX2M7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9zaXppbmdf cGFyYW1zX3N0IHsKIGRpc3BsYXlfZGF0YV9ycV9zaXppbmdfcGFyYW1zX3N0IHJxX2w7CiBkaXNw bGF5X2RhdGFfcnFfc2l6aW5nX3BhcmFtc19zdCBycV9jOwp9OwoKc3RydWN0IF92Y3NfZHBpX2Rp c3BsYXlfcnFfbWlzY19wYXJhbXNfc3QgewogZGlzcGxheV9kYXRhX3JxX21pc2NfcGFyYW1zX3N0 IHJxX2w7CiBkaXNwbGF5X2RhdGFfcnFfbWlzY19wYXJhbXNfc3QgcnFfYzsKfTsKCnN0cnVjdCBf dmNzX2RwaV9kaXNwbGF5X3JxX3BhcmFtc19zdCB7CiB1bnNpZ25lZCBjaGFyIHl1djQyMDsKIHVu c2lnbmVkIGNoYXIgeXV2NDIwXzEwYnBjOwogdW5zaWduZWQgY2hhciByZ2JlX2FscGhhOwogZGlz cGxheV9ycV9taXNjX3BhcmFtc19zdCBtaXNjOwogZGlzcGxheV9ycV9zaXppbmdfcGFyYW1zX3N0 IHNpemluZzsKIGRpc3BsYXlfcnFfZGxnX3BhcmFtc19zdCBkbGc7Cn07CgpzdHJ1Y3QgX3Zjc19k cGlfZGlzcGxheV9kbGdfcmVnc19zdCB7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX2hfYmxhbmtfZW5k OwogdW5zaWduZWQgaW50IGRsZ192YmxhbmtfZW5kOwogdW5zaWduZWQgaW50IG1pbl9kc3RfeV9u ZXh0X3N0YXJ0OwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfaHRvdGFsOwogdW5zaWduZWQgaW50 IHJlZmN5Y194X2FmdGVyX3NjYWxlcjsKIHVuc2lnbmVkIGludCBkc3RfeV9hZnRlcl9zY2FsZXI7 CiB1bnNpZ25lZCBpbnQgZHN0X3lfcHJlZmV0Y2g7CiB1bnNpZ25lZCBpbnQgZHN0X3lfcGVyX3Zt X3ZibGFuazsKIHVuc2lnbmVkIGludCBkc3RfeV9wZXJfcm93X3ZibGFuazsKIHVuc2lnbmVkIGlu dCBkc3RfeV9wZXJfdm1fZmxpcDsKIHVuc2lnbmVkIGludCBkc3RfeV9wZXJfcm93X2ZsaXA7CiB1 bnNpZ25lZCBpbnQgcmVmX2ZyZXFfdG9fcGl4X2ZyZXE7CiB1bnNpZ25lZCBpbnQgdnJhdGlvX3By ZWZldGNoOwogdW5zaWduZWQgaW50IHZyYXRpb19wcmVmZXRjaF9jOwogdW5zaWduZWQgaW50IHJl ZmN5Y19wZXJfcHRlX2dyb3VwX3ZibGFua19sOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcHRl X2dyb3VwX3ZibGFua19jOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfbWV0YV9jaHVua192Ymxh bmtfbDsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX21ldGFfY2h1bmtfdmJsYW5rX2M7CiB1bnNp Z25lZCBpbnQgcmVmY3ljX3Blcl9wdGVfZ3JvdXBfZmxpcF9sOwogdW5zaWduZWQgaW50IHJlZmN5 Y19wZXJfcHRlX2dyb3VwX2ZsaXBfYzsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX21ldGFfY2h1 bmtfZmxpcF9sOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfbWV0YV9jaHVua19mbGlwX2M7CiB1 bnNpZ25lZCBpbnQgZHN0X3lfcGVyX3B0ZV9yb3dfbm9tX2w7CiB1bnNpZ25lZCBpbnQgZHN0X3lf cGVyX3B0ZV9yb3dfbm9tX2M7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9wdGVfZ3JvdXBfbm9t X2w7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9wdGVfZ3JvdXBfbm9tX2M7CiB1bnNpZ25lZCBp bnQgZHN0X3lfcGVyX21ldGFfcm93X25vbV9sOwogdW5zaWduZWQgaW50IGRzdF95X3Blcl9tZXRh X3Jvd19ub21fYzsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX21ldGFfY2h1bmtfbm9tX2w7CiB1 bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9tZXRhX2NodW5rX25vbV9jOwogdW5zaWduZWQgaW50IHJl ZmN5Y19wZXJfbGluZV9kZWxpdmVyeV9wcmVfbDsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX2xp bmVfZGVsaXZlcnlfcHJlX2M7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9saW5lX2RlbGl2ZXJ5 X2w7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9saW5lX2RlbGl2ZXJ5X2M7CiB1bnNpZ25lZCBp bnQgY2h1bmtfaGRsX2FkanVzdF9jdXIwOwogdW5zaWduZWQgaW50IGNodW5rX2hkbF9hZGp1c3Rf Y3VyMTsKIHVuc2lnbmVkIGludCB2cmVhZHlfYWZ0ZXJfdmNvdW50MDsKIHVuc2lnbmVkIGludCBk c3RfeV9vZmZzZXRfY3VyMDsKIHVuc2lnbmVkIGludCBkc3RfeV9vZmZzZXRfY3VyMTsKIHVuc2ln bmVkIGludCB4ZmNfcmVnX3RyYW5zZmVyX2RlbGF5OwogdW5zaWduZWQgaW50IHhmY19yZWdfcHJl Y2hhcmdlX2RlbGF5OwogdW5zaWduZWQgaW50IHhmY19yZWdfcmVtb3RlX3N1cmZhY2VfZmxpcF9s YXRlbmN5OwogdW5zaWduZWQgaW50IHhmY19yZWdfcHJlZmV0Y2hfbWFyZ2luOwogdW5zaWduZWQg aW50IGRzdF95X2RlbHRhX2RycV9saW1pdDsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3ZtX2dy b3VwX3ZibGFuazsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3ZtX2dyb3VwX2ZsaXA7CiB1bnNp Z25lZCBpbnQgcmVmY3ljX3Blcl92bV9yZXFfdmJsYW5rOwogdW5zaWduZWQgaW50IHJlZmN5Y19w ZXJfdm1fcmVxX2ZsaXA7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl92bV9kbWRhdGE7Cn07Cgpz dHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV90dHVfcmVnc19zdCB7CiB1bnNpZ25lZCBpbnQgcW9zX2xl dmVsX2xvd193bTsKIHVuc2lnbmVkIGludCBxb3NfbGV2ZWxfaGlnaF93bTsKIHVuc2lnbmVkIGlu dCBtaW5fdHR1X3ZibGFuazsKIHVuc2lnbmVkIGludCBxb3NfbGV2ZWxfZmxpcDsKIHVuc2lnbmVk IGludCByZWZjeWNfcGVyX3JlcV9kZWxpdmVyeV9sOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJf cmVxX2RlbGl2ZXJ5X2M7CiB1bnNpZ25lZCBpbnQgcmVmY3ljX3Blcl9yZXFfZGVsaXZlcnlfY3Vy MDsKIHVuc2lnbmVkIGludCByZWZjeWNfcGVyX3JlcV9kZWxpdmVyeV9jdXIxOwogdW5zaWduZWQg aW50IHJlZmN5Y19wZXJfcmVxX2RlbGl2ZXJ5X3ByZV9sOwogdW5zaWduZWQgaW50IHJlZmN5Y19w ZXJfcmVxX2RlbGl2ZXJ5X3ByZV9jOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcmVxX2RlbGl2 ZXJ5X3ByZV9jdXIwOwogdW5zaWduZWQgaW50IHJlZmN5Y19wZXJfcmVxX2RlbGl2ZXJ5X3ByZV9j dXIxOwogdW5zaWduZWQgaW50IHFvc19sZXZlbF9maXhlZF9sOwogdW5zaWduZWQgaW50IHFvc19s ZXZlbF9maXhlZF9jOwogdW5zaWduZWQgaW50IHFvc19sZXZlbF9maXhlZF9jdXIwOwogdW5zaWdu ZWQgaW50IHFvc19sZXZlbF9maXhlZF9jdXIxOwogdW5zaWduZWQgaW50IHFvc19yYW1wX2Rpc2Fi bGVfbDsKIHVuc2lnbmVkIGludCBxb3NfcmFtcF9kaXNhYmxlX2M7CiB1bnNpZ25lZCBpbnQgcW9z X3JhbXBfZGlzYWJsZV9jdXIwOwogdW5zaWduZWQgaW50IHFvc19yYW1wX2Rpc2FibGVfY3VyMTsK fTsKCnN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RhdGFfcnFfcmVnc19zdCB7CiB1bnNpZ25lZCBp bnQgY2h1bmtfc2l6ZTsKIHVuc2lnbmVkIGludCBtaW5fY2h1bmtfc2l6ZTsKIHVuc2lnbmVkIGlu dCBtZXRhX2NodW5rX3NpemU7CiB1bnNpZ25lZCBpbnQgbWluX21ldGFfY2h1bmtfc2l6ZTsKIHVu c2lnbmVkIGludCBkcHRlX2dyb3VwX3NpemU7CiB1bnNpZ25lZCBpbnQgbXB0ZV9ncm91cF9zaXpl OwogdW5zaWduZWQgaW50IHN3YXRoX2hlaWdodDsKIHVuc2lnbmVkIGludCBwdGVfcm93X2hlaWdo dF9saW5lYXI7Cn07CgpzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9yZWdzX3N0IHsKIGRpc3Bs YXlfZGF0YV9ycV9yZWdzX3N0IHJxX3JlZ3NfbDsKIGRpc3BsYXlfZGF0YV9ycV9yZWdzX3N0IHJx X3JlZ3NfYzsKIHVuc2lnbmVkIGludCBkcnFfZXhwYW5zaW9uX21vZGU7CiB1bnNpZ25lZCBpbnQg cHJxX2V4cGFuc2lvbl9tb2RlOwogdW5zaWduZWQgaW50IG1ycV9leHBhbnNpb25fbW9kZTsKIHVu c2lnbmVkIGludCBjcnFfZXhwYW5zaW9uX21vZGU7CiB1bnNpZ25lZCBpbnQgcGxhbmUxX2Jhc2Vf YWRkcmVzczsKfTsKCnN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19zeXNfcGFyYW1zX3N0IHsK IGRvdWJsZSB0X21jbGtfd21fdXM7CiBkb3VibGUgdF91cmdfd21fdXM7CiBkb3VibGUgdF9zcl93 bV91czsKIGRvdWJsZSB0X2V4dHJhX3VzOwogZG91YmxlIG1lbV90cmlwX3VzOwogZG91YmxlIHRf c3J4X2RlbGF5X3VzOwogZG91YmxlIGRlZXBzbGVlcF9kY2ZjbGtfbWh6OwogZG91YmxlIHRvdGFs X2ZsaXBfYnc7CiB1bnNpZ25lZCBpbnQgdG90YWxfZmxpcF9ieXRlczsKfTsKCnN0cnVjdCBfdmNz X2RwaV9kaXNwbGF5X2FyYl9wYXJhbXNfc3QgewogaW50IG1heF9yZXFfb3V0c3RhbmRpbmc7CiBp bnQgbWluX3JlcV9vdXRzdGFuZGluZzsKIGludCBzYXRfbGV2ZWxfdXM7Cn07CiMgMzIgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9kZWZz LmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1s L2Rpc3BsYXlfbW9kZV9lbnVtcy5oIiAxCiMgMjggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9kbWwvZGlzcGxheV9tb2RlX2VudW1zLmgiCmVudW0gb3V0cHV0X2Vu Y29kZXJfY2xhc3MgewogZG1fZHAgPSAwLCBkbV9oZG1pID0gMSwgZG1fd2IgPSAyLCBkbV9lZHAK fTsKZW51bSBvdXRwdXRfZm9ybWF0X2NsYXNzIHsKIGRtXzQ0NCA9IDAsIGRtXzQyMCA9IDEsIGRt X240MjIsIGRtX3M0MjIKfTsKZW51bSBzb3VyY2VfZm9ybWF0X2NsYXNzIHsKIGRtXzQ0NF8xNiA9 IDAsCiBkbV80NDRfMzIgPSAxLAogZG1fNDQ0XzY0ID0gMiwKIGRtXzQyMF84ID0gMywKIGRtXzQy MF8xMCA9IDQsCiBkbV80MjBfMTIgPSA1LAogZG1fNDIyXzggPSA2LAogZG1fNDIyXzEwID0gNywK IGRtXzQ0NF84ID0gOCwKIGRtX21vbm9fOCA9IGRtXzQ0NF84LAogZG1fbW9ub18xNiA9IGRtXzQ0 NF8xNiwKIGRtX3JnYmUgPSA5LAogZG1fcmdiZV9hbHBoYSA9IDEwLAp9OwplbnVtIG91dHB1dF9i cGNfY2xhc3MgewogZG1fb3V0XzYgPSAwLCBkbV9vdXRfOCA9IDEsIGRtX291dF8xMCA9IDIsIGRt X291dF8xMiA9IDMsIGRtX291dF8xNiA9IDQKfTsKZW51bSBzY2FuX2RpcmVjdGlvbl9jbGFzcyB7 CiBkbV9ob3J6ID0gMCwgZG1fdmVydCA9IDEKfTsKZW51bSBkbV9zd2l6emxlX21vZGUgewogZG1f c3dfbGluZWFyID0gMCwKIGRtX3N3XzI1NmJfcyA9IDEsCiBkbV9zd18yNTZiX2QgPSAyLAogZG1f c3dfU1BBUkVfMCA9IDMsCiBkbV9zd19TUEFSRV8xID0gNCwKIGRtX3N3XzRrYl9zID0gNSwKIGRt X3N3XzRrYl9kID0gNiwKIGRtX3N3X1NQQVJFXzIgPSA3LAogZG1fc3dfU1BBUkVfMyA9IDgsCiBk bV9zd182NGtiX3MgPSA5LAogZG1fc3dfNjRrYl9kID0gMTAsCiBkbV9zd19TUEFSRV80ID0gMTEs CiBkbV9zd19TUEFSRV81ID0gMTIsCiBkbV9zd192YXJfcyA9IDEzLAogZG1fc3dfdmFyX2QgPSAx NCwKIGRtX3N3X1NQQVJFXzYgPSAxNSwKIGRtX3N3X1NQQVJFXzcgPSAxNiwKIGRtX3N3XzY0a2Jf c190ID0gMTcsCiBkbV9zd182NGtiX2RfdCA9IDE4LAogZG1fc3dfU1BBUkVfMTAgPSAxOSwKIGRt X3N3X1NQQVJFXzExID0gMjAsCiBkbV9zd180a2Jfc194ID0gMjEsCiBkbV9zd180a2JfZF94ID0g MjIsCiBkbV9zd19TUEFSRV8xMiA9IDIzLAogZG1fc3dfU1BBUkVfMTMgPSAyNCwKIGRtX3N3XzY0 a2Jfc194ID0gMjUsCiBkbV9zd182NGtiX2RfeCA9IDI2LAogZG1fc3dfU1BBUkVfMTQgPSAyNywK IGRtX3N3X1NQQVJFXzE1ID0gMjgsCiBkbV9zd192YXJfc194ID0gMjksCiBkbV9zd192YXJfZF94 ID0gMzAsCiBkbV9zd182NGtiX3JfeCwKIGRtX3N3X2dmeDdfMmRfdGhpbl9sX3ZwLAogZG1fc3df Z2Z4N18yZF90aGluX2dsLAp9OwplbnVtIGxiX2RlcHRoIHsKIGRtX2xiXzEwID0gMCwgZG1fbGJf OCA9IDEsIGRtX2xiXzYgPSAyLCBkbV9sYl8xMiA9IDMsIGRtX2xiXzE2ID0gNCwKIGRtX2xiXzE5 ID0gNQp9OwplbnVtIHZvbHRhZ2Vfc3RhdGUgewogZG1fdm1pbiA9IDAsIGRtX3ZtaWQgPSAxLCBk bV92bm9tID0gMiwgZG1fdm1heCA9IDMKfTsKZW51bSBzb3VyY2VfbWFjcm9fdGlsZV9zaXplIHsK IGRtXzRrX3RpbGUgPSAwLCBkbV82NGtfdGlsZSA9IDEsIGRtXzI1NmtfdGlsZSA9IDIKfTsKZW51 bSBjdXJzb3JfYnBwIHsKIGRtX2N1cl8yYml0ID0gMCwgZG1fY3VyXzMyYml0ID0gMSwgZG1fY3Vy XzY0Yml0ID0gMgp9OwplbnVtIGNsb2NrX2NoYW5nZV9zdXBwb3J0IHsKIGRtX2RyYW1fY2xvY2tf Y2hhbmdlX3VuaW5pdGlhbGl6ZWQgPSAwLAogZG1fZHJhbV9jbG9ja19jaGFuZ2VfdmFjdGl2ZSwK IGRtX2RyYW1fY2xvY2tfY2hhbmdlX3ZibGFuaywKIGRtX2RyYW1fY2xvY2tfY2hhbmdlX3Vuc3Vw cG9ydGVkCn07CgplbnVtIG91dHB1dF9zdGFuZGFyZCB7CiBkbV9zdGRfdW5pbml0aWFsaXplZCA9 IDAsIGRtX3N0ZF9jdnRyMiwgZG1fc3RkX2N2dAp9OwoKZW51bSBtcGNfY29tYmluZV9hZmZpbml0 eSB7CiBkbV9tcGNfYWx3YXlzX3doZW5fcG9zc2libGUsCiBkbV9tcGNfcmVkdWNlX3ZvbHRhZ2Us CiBkbV9tcGNfcmVkdWNlX3ZvbHRhZ2VfYW5kX2Nsb2NrcywKIGRtX21wY19uZXZlcgp9OwoKZW51 bSBSZXF1ZXN0VHlwZSB7CiBSRVFfMjU2Qnl0ZXMsIFJFUV8xMjhCeXRlc05vbkNvbnRpZ3VvdXMs IFJFUV8xMjhCeXRlc0NvbnRpZ3VvdXMsIFJFUV9OQQp9OwoKZW51bSBzZWxmX3JlZnJlc2hfYWZm aW5pdHkgewogZG1fdHJ5X3RvX2FsbG93X3NlbGZfcmVmcmVzaF9hbmRfbWNsa19zd2l0Y2gsCiBk bV9hbGxvd19zZWxmX3JlZnJlc2hfYW5kX21jbGtfc3dpdGNoLAogZG1fYWxsb3dfc2VsZl9yZWZy ZXNoLAogZG1fbmVpdGhlcl9zZWxmX3JlZnJlc2hfbm9yX21jbGtfc3dpdGNoCn07CgplbnVtIGRt X3ZhbGlkYXRpb25fc3RhdHVzIHsKIERNTF9WQUxJREFUSU9OX09LLAogRE1MX0ZBSUxfU0NBTEVf UkFUSU9fVEFQLAogRE1MX0ZBSUxfU09VUkNFX1BJWEVMX0ZPUk1BVCwKIERNTF9GQUlMX1ZJRVdQ T1JUX1NJWkUsCiBETUxfRkFJTF9UT1RBTF9WX0FDVElWRV9CVywKIERNTF9GQUlMX0RJT19TVVBQ T1JULAogRE1MX0ZBSUxfTk9UX0VOT1VHSF9EU0MsCiBETUxfRkFJTF9EU0NfQ0xLX1JFUVVJUkVE LAogRE1MX0ZBSUxfRFNDX1ZBTElEQVRJT05fRkFJTFVSRSwKIERNTF9GQUlMX1VSR0VOVF9MQVRF TkNZLAogRE1MX0ZBSUxfUkVPUkRFUklOR19CVUZGRVIsCiBETUxfRkFJTF9ESVNQQ0xLX0RQUENM SywKIERNTF9GQUlMX1RPVEFMX0FWQUlMQUJMRV9QSVBFUywKIERNTF9GQUlMX05VTV9PVEcsCiBE TUxfRkFJTF9XUklURUJBQ0tfTU9ERSwKIERNTF9GQUlMX1dSSVRFQkFDS19MQVRFTkNZLAogRE1M X0ZBSUxfV1JJVEVCQUNLX1NDQUxFX1JBVElPX1RBUCwKIERNTF9GQUlMX0NVUlNPUl9TVVBQT1JU LAogRE1MX0ZBSUxfUElUQ0hfU1VQUE9SVCwKIERNTF9GQUlMX1BURV9CVUZGRVJfU0laRSwKIERN TF9GQUlMX0hPU1RfVk1fSU1NRURJQVRFX0ZMSVAsCiBETUxfRkFJTF9EU0NfSU5QVVRfQlBDLAog RE1MX0ZBSUxfUFJFRkVUQ0hfU1VQUE9SVCwKIERNTF9GQUlMX1ZfUkFUSU9fUFJFRkVUQ0gsCn07 CgplbnVtIHdyaXRlYmFja19jb25maWcgewogZG1fbm9ybWFsLAogZG1fd2hvbGVfYnVmZmVyX2Zv cl9zaW5nbGVfc3RyZWFtX25vX2ludGVybGVhdmUsCiBkbV93aG9sZV9idWZmZXJfZm9yX3Npbmds ZV9zdHJlYW1faW50ZXJsZWF2ZSwKfTsKCmVudW0gb2RtX2NvbWJpbmVfbW9kZSB7CiBkbV9vZG1f Y29tYmluZV9tb2RlX2Rpc2FibGVkLAogZG1fb2RtX2NvbWJpbmVfbW9kZV8ydG8xLAogZG1fb2Rt X2NvbWJpbmVfbW9kZV80dG8xLAp9OwoKZW51bSBvZG1fY29tYmluZV9wb2xpY3kgewogZG1fb2Rt X2NvbWJpbmVfcG9saWN5X2RhbCwKIGRtX29kbV9jb21iaW5lX3BvbGljeV9ub25lLAogZG1fb2Rt X2NvbWJpbmVfcG9saWN5XzJ0bzEsCiBkbV9vZG1fY29tYmluZV9wb2xpY3lfNHRvMSwKfTsKCmVu dW0gaW1tZWRpYXRlX2ZsaXBfcmVxdWlyZW1lbnQgewogZG1faW1tZWRpYXRlX2ZsaXBfbm90X3Jl cXVpcmVkLAogZG1faW1tZWRpYXRlX2ZsaXBfcmVxdWlyZWQsCn07CiMgMzMgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwvZG1sX2NvbW1vbl9kZWZzLmgiIDIK Cgpkb3VibGUgZG1sX3JvdW5kKGRvdWJsZSBhKTsKIyAzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtbC9kaXNwbGF5X21vZGVfbGliLmgiIDIKIyAxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1sL2Rpc3BsYXlfbW9kZV92 YmEuaCIgMQojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv ZG1sL2Rpc3BsYXlfbW9kZV92YmEuaCIKc3RydWN0IGRpc3BsYXlfbW9kZV9saWI7Cgp2b2lkIE1v ZGVTdXBwb3J0QW5kU3lzdGVtQ29uZmlndXJhdGlvbihzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAq bW9kZV9saWIpOwoKCgpkb3VibGUgZ2V0X2Nsa19kY2ZfZGVlcHNsZWVwKHN0cnVjdCBkaXNwbGF5 X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBp cGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91YmxlIGdldF93bV91cmdlbnQoc3RydWN0 IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFt c19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X3dtX21lbW9y eV90cmlwKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9l MmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91Ymxl IGdldF93bV93cml0ZWJhY2tfdXJnZW50KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xp YiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQg bnVtX3BpcGVzKTsKZG91YmxlIGdldF93bV9zdHV0dGVyX2V4aXQoc3RydWN0IGRpc3BsYXlfbW9k ZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMs IHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X3dtX3N0dXR0ZXJfZW50ZXJfZXhp dChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3Bp cGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRf d21fZHJhbV9jbG9ja19jaGFuZ2Uoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBj b25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1f cGlwZXMpOwpkb3VibGUgZ2V0X3dtX3dyaXRlYmFja19kcmFtX2Nsb2NrX2NoYW5nZShzdHJ1Y3Qg ZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1z X3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfd21feGZjX3Vu ZGVyZmxvdyhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlf ZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJs ZSBnZXRfc3R1dHRlcl9lZmZpY2llbmN5X25vX3ZibGFuayhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xp YiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5z aWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfc3R1dHRlcl9lZmZpY2llbmN5KHN0cnVj dCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJh bXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91YmxlIGdldF91cmdlbnRf bGF0ZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlf ZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJs ZSBnZXRfdXJnZW50X2V4dHJhX2xhdGVuY3koc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVf bGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGlu dCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X25vbnVyZ2VudF9sYXRlbmN5KHN0cnVjdCBkaXNwbGF5 X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBp cGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91YmxlIGdldF9kcmFtX2Nsb2NrX2NoYW5n ZV9sYXRlbmN5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxh eV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91 YmxlIGdldF9kaXNwY2xrX2NhbGN1bGF0ZWQoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVf bGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGlu dCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X3RvdGFsX2RhdGFfcmVhZF9idyhzdHJ1Y3QgZGlzcGxh eV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpw aXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfcmV0dXJuX2J3KHN0cnVj dCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJh bXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVzKTsKZG91YmxlIGdldF90Y2FsYyhz dHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVf cGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfZnJh Y3Rpb25fb2ZfdXJnZW50X2JhbmR3aWR0aChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9s aWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50 IG51bV9waXBlcyk7CmRvdWJsZSBnZXRfZnJhY3Rpb25fb2ZfdXJnZW50X2JhbmR3aWR0aF9pbW1f ZmxpcChzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJl X3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CgoKCmRvdWJs ZSBnZXRfZHNjX2RlbGF5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwgY29uc3Qg ZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVtX3BpcGVz LCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CmRvdWJsZSBnZXRfZHBwY2xrX2NhbGN1bGF0ZWQo c3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBl X3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGludCB3 aGljaF9waXBlKTsKZG91YmxlIGdldF9kc2NjbGtfY2FsY3VsYXRlZChzdHJ1Y3QgZGlzcGxheV9t b2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBl cywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3Vi bGUgZ2V0X21pbl90dHVfdmJsYW5rKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwg Y29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQgbnVt X3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CmRvdWJsZSBnZXRfdnJhdGlvX3ByZWZl dGNoX2woc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2Uy ZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVk IGludCB3aGljaF9waXBlKTsKZG91YmxlIGdldF92cmF0aW9fcHJlZmV0Y2hfYyhzdHJ1Y3QgZGlz cGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0 ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUp Owpkb3VibGUgZ2V0X2RzdF94X2FmdGVyX3NjYWxlcihzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAq bW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWdu ZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3VibGUgZ2V0X2Rz dF95X2FmdGVyX3NjYWxlcihzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0 IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBl cywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3VibGUgZ2V0X2RzdF95X3Blcl92bV92Ymxh bmsoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9w aXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGlu dCB3aGljaF9waXBlKTsKZG91YmxlIGdldF9kc3RfeV9wZXJfcm93X3ZibGFuayhzdHJ1Y3QgZGlz cGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0 ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUp Owpkb3VibGUgZ2V0X2RzdF95X3ByZWZldGNoKHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2Rl X2xpYiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBp bnQgbnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CmRvdWJsZSBnZXRfZHN0X3lf cGVyX3ZtX2ZsaXAoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNw bGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVu c2lnbmVkIGludCB3aGljaF9waXBlKTsKZG91YmxlIGdldF9kc3RfeV9wZXJfcm93X2ZsaXAoc3Ry dWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3Bh cmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGludCB3aGlj aF9waXBlKTsKZG91YmxlIGdldF94ZmNfdHJhbnNmZXJfZGVsYXkoc3RydWN0IGRpc3BsYXlfbW9k ZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMs IHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGludCB3aGljaF9waXBlKTsKZG91Ymxl IGdldF94ZmNfcHJlY2hhcmdlX2RlbGF5KHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xp YiwgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLCB1bnNpZ25lZCBpbnQg bnVtX3BpcGVzLCB1bnNpZ25lZCBpbnQgd2hpY2hfcGlwZSk7CmRvdWJsZSBnZXRfeGZjX3JlbW90 ZV9zdXJmYWNlX2ZsaXBfbGF0ZW5jeShzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIs IGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51 bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3VibGUgZ2V0X3hmY19wcmVmZXRj aF9tYXJnaW4oc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliLCBjb25zdCBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVkIGludCBudW1fcGlwZXMsIHVuc2ln bmVkIGludCB3aGljaF9waXBlKTsKZG91YmxlIGdldF9yZWZjeWNfcGVyX3ZtX2dyb3VwX3ZibGFu ayhzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3Bp cGVfcGFyYW1zX3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50 IHdoaWNoX3BpcGUpOwpkb3VibGUgZ2V0X3JlZmN5Y19wZXJfdm1fZ3JvdXBfZmxpcChzdHJ1Y3Qg ZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1z X3N0ICpwaXBlcywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3Bp cGUpOwpkb3VibGUgZ2V0X3JlZmN5Y19wZXJfdm1fcmVxX3ZibGFuayhzdHJ1Y3QgZGlzcGxheV9t b2RlX2xpYiAqbW9kZV9saWIsIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBl cywgdW5zaWduZWQgaW50IG51bV9waXBlcywgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwpkb3Vi bGUgZ2V0X3JlZmN5Y19wZXJfdm1fcmVxX2ZsaXAoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1v ZGVfbGliLCBjb25zdCBkaXNwbGF5X2UyZV9waXBlX3BhcmFtc19zdCAqcGlwZXMsIHVuc2lnbmVk IGludCBudW1fcGlwZXMsIHVuc2lnbmVkIGludCB3aGljaF9waXBlKTsKCnVuc2lnbmVkIGludCBn ZXRfdnN0YXJ0dXBfY2FsY3VsYXRlZCgKICBzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9s aWIsCiAgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAogIHVuc2lnbmVk IGludCBudW1fcGlwZXMsCiAgdW5zaWduZWQgaW50IHdoaWNoX3BpcGUpOwoKZG91YmxlIGdldF90 b3RhbF9pbW1lZGlhdGVfZmxpcF9ieXRlcygKICBzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9k ZV9saWIsCiAgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzLAogIHVuc2ln bmVkIGludCBudW1fcGlwZXMpOwpkb3VibGUgZ2V0X3RvdGFsX2ltbWVkaWF0ZV9mbGlwX2J3KAog IHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKICBjb25zdCBkaXNwbGF5X2UyZV9w aXBlX3BhcmFtc19zdCAqcGlwZXMsCiAgdW5zaWduZWQgaW50IG51bV9waXBlcyk7CmRvdWJsZSBn ZXRfdG90YWxfcHJlZmV0Y2hfYncoCiAgc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGli LAogIGNvbnN0IGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0ICpwaXBlcywKICB1bnNpZ25lZCBp bnQgbnVtX3BpcGVzKTsKdW5zaWduZWQgaW50IGRtbF9nZXRfdm9sdGFnZV9sZXZlbCgKICBzdHJ1 Y3QgZGlzcGxheV9tb2RlX2xpYiAqbW9kZV9saWIsCiAgY29uc3QgZGlzcGxheV9lMmVfcGlwZV9w YXJhbXNfc3QgKnBpcGVzLAogIHVuc2lnbmVkIGludCBudW1fcGlwZXMpOwoKdm9pZCBQaXhlbENs b2NrQWRqdXN0bWVudEZvclByb2dyZXNzaXZlVG9JbnRlcmxhY2VVbml0KHN0cnVjdCBkaXNwbGF5 X21vZGVfbGliICptb2RlX2xpYik7Cgpib29sIENhbGN1bGF0ZTI1NkJCbG9ja1NpemVzKAogIGVu dW0gc291cmNlX2Zvcm1hdF9jbGFzcyBTb3VyY2VQaXhlbEZvcm1hdCwKICBlbnVtIGRtX3N3aXp6 bGVfbW9kZSBTdXJmYWNlVGlsaW5nLAogIHVuc2lnbmVkIGludCBCeXRlUGVyUGl4ZWxZLAogIHVu c2lnbmVkIGludCBCeXRlUGVyUGl4ZWxDLAogIHVuc2lnbmVkIGludCAqQmxvY2tIZWlnaHQyNTZC eXRlc1ksCiAgdW5zaWduZWQgaW50ICpCbG9ja0hlaWdodDI1NkJ5dGVzQywKICB1bnNpZ25lZCBp bnQgKkJsb2NrV2lkdGgyNTZCeXRlc1ksCiAgdW5zaWduZWQgaW50ICpCbG9ja1dpZHRoMjU2Qnl0 ZXNDKTsKCnN0cnVjdCB2YmFfdmFyc19zdCB7CiBpcF9wYXJhbXNfc3QgaXA7CiBzb2NfYm91bmRp bmdfYm94X3N0IHNvYzsKCiBpbnQgbWF4TXBjQ29tYjsKIGJvb2wgVXNlTWF4aW11bVZTdGFydHVw OwoKIGRvdWJsZSBXcml0ZWJhY2tESVNQQ0xLOwogZG91YmxlIERQUENMS1VzaW5nU2luZ2xlRFBQ THVtYTsKIGRvdWJsZSBEUFBDTEtVc2luZ1NpbmdsZURQUENocm9tYTsKIGRvdWJsZSBESVNQQ0xL V2l0aFJhbXBpbmc7CiBkb3VibGUgRElTUENMS1dpdGhvdXRSYW1waW5nOwogZG91YmxlIEdsb2Jh bERQUENMSzsKIGRvdWJsZSBESVNQQ0xLV2l0aFJhbXBpbmdSb3VuZGVkVG9ERlNHcmFudWxhcml0 eTsKIGRvdWJsZSBESVNQQ0xLV2l0aG91dFJhbXBpbmdSb3VuZGVkVG9ERlNHcmFudWxhcml0eTsK IGRvdWJsZSBNYXhEaXNwY2xrUm91bmRlZFRvREZTR3JhbnVsYXJpdHk7CiBib29sIERDQ0VuYWJs ZWRBbnlQbGFuZTsKIGRvdWJsZSBSZXR1cm5CYW5kd2lkdGhUb0RDTjsKIHVuc2lnbmVkIGludCBU b3RhbEFjdGl2ZURQUDsKIHVuc2lnbmVkIGludCBUb3RhbERDQ0FjdGl2ZURQUDsKIGRvdWJsZSBV cmdlbnRSb3VuZFRyaXBBbmRPdXRPZk9yZGVyTGF0ZW5jeTsKIGRvdWJsZSBTdHV0dGVyUGVyaW9k OwogZG91YmxlIEZyYW1lVGltZUZvck1pbkZ1bGxERVRCdWZmZXJpbmdUaW1lOwogZG91YmxlIEF2 ZXJhZ2VSZWFkQmFuZHdpZHRoOwogZG91YmxlIFRvdGFsUm93UmVhZEJhbmR3aWR0aDsKIGRvdWJs ZSBQYXJ0T2ZCdXJzdFRoYXRGaXRzSW5ST0I7CiBkb3VibGUgU3R1dHRlckJ1cnN0VGltZTsKIHVu c2lnbmVkIGludCBOZXh0UHJlZmV0Y2hNb2RlOwogZG91YmxlIE5leHRNYXhWU3RhcnR1cDsKIGRv dWJsZSBWQmxhbmtUaW1lOwogZG91YmxlIFNtYWxsZXN0VkJsYW5rOwogZG91YmxlIERDRkNMS0Rl ZXBTbGVlcFBlclBsYW5lWzhdOwogZG91YmxlIEVmZmVjdGl2ZURFVFBsdXNMQkxpbmVzTHVtYTsK IGRvdWJsZSBFZmZlY3RpdmVERVRQbHVzTEJMaW5lc0Nocm9tYTsKIGRvdWJsZSBVcmdlbnRMYXRl bmN5U3VwcG9ydFVzTHVtYTsKIGRvdWJsZSBVcmdlbnRMYXRlbmN5U3VwcG9ydFVzQ2hyb21hOwog dW5zaWduZWQgaW50IERTQ0Zvcm1hdEZhY3RvcjsKCiBib29sIER1bW15UFN0YXRlQ2hlY2s7CiBi b29sIERSQU1DbG9ja0NoYW5nZVN1cHBvcnRzVkFjdGl2ZTsKIGJvb2wgUHJlZmV0Y2hNb2RlU3Vw cG9ydGVkOwogYm9vbCBQcmVmZXRjaEFuZEltbWVkaWF0ZUZsaXBTdXBwb3J0ZWQ7CiBlbnVtIHNl bGZfcmVmcmVzaF9hZmZpbml0eSBBbGxvd0RSQU1TZWxmUmVmcmVzaE9yRFJBTUNsb2NrQ2hhbmdl SW5WYmxhbms7CiBkb3VibGUgWEZDUmVtb3RlU3VyZmFjZUZsaXBEZWxheTsKIGRvdWJsZSBUSW5p dFhGaWxsOwogZG91YmxlIFRzbHZDaGs7CiBkb3VibGUgU3JjQWN0aXZlRHJhaW5SYXRlOwogYm9v bCBJbW1lZGlhdGVGbGlwU3VwcG9ydGVkOwogZW51bSBtcGNfY29tYmluZV9hZmZpbml0eSBXaGVu VG9Eb01QQ0NvbWJpbmU7CgogYm9vbCBQcmVmZXRjaEVSUk9SOwoKIHVuc2lnbmVkIGludCBWU3Rh cnR1cExpbmVzOwogdW5zaWduZWQgaW50IEFjdGl2ZURQUHM7CiB1bnNpZ25lZCBpbnQgTEJMYXRl bmN5SGlkaW5nU291cmNlTGluZXNZOwogdW5zaWduZWQgaW50IExCTGF0ZW5jeUhpZGluZ1NvdXJj ZUxpbmVzQzsKIGRvdWJsZSBBY3RpdmVEUkFNQ2xvY2tDaGFuZ2VMYXRlbmN5TWFyZ2luWzhdOwog ZG91YmxlIE1pbkFjdGl2ZURSQU1DbG9ja0NoYW5nZU1hcmdpbjsKIGRvdWJsZSBJbml0RmlsbExl dmVsOwogZG91YmxlIEZpbmFsRmlsbE1hcmdpbjsKIGRvdWJsZSBGaW5hbEZpbGxMZXZlbDsKIGRv dWJsZSBSZW1haW5pbmdGaWxsTGV2ZWw7CiBkb3VibGUgVEZpbmFseEZpbGw7CgoKCgogZG91Ymxl IFNSRXhpdFRpbWU7CiBkb3VibGUgU1JFbnRlclBsdXNFeGl0VGltZTsKIGRvdWJsZSBVcmdlbnRM YXRlbmN5UGl4ZWxEYXRhT25seTsKIGRvdWJsZSBVcmdlbnRMYXRlbmN5UGl4ZWxNaXhlZFdpdGhW TURhdGE7CiBkb3VibGUgVXJnZW50TGF0ZW5jeVZNRGF0YU9ubHk7CiBkb3VibGUgVXJnZW50TGF0 ZW5jeTsKIGRvdWJsZSBXcml0ZWJhY2tMYXRlbmN5OwogZG91YmxlIFBlcmNlbnRPZklkZWFsRFJB TUZhYnJpY0FuZFNEUFBvcnRCV1JlY2VpdmVkQWZ0ZXJVcmdMYXRlbmN5UGl4ZWxEYXRhT25seTsK IGRvdWJsZSBQZXJjZW50T2ZJZGVhbERSQU1GYWJyaWNBbmRTRFBQb3J0QldSZWNlaXZlZEFmdGVy VXJnTGF0ZW5jeVBpeGVsTWl4ZWRXaXRoVk1EYXRhOwogZG91YmxlIFBlcmNlbnRPZklkZWFsRFJB TUZhYnJpY0FuZFNEUFBvcnRCV1JlY2VpdmVkQWZ0ZXJVcmdMYXRlbmN5Vk1EYXRhT25seTsKIGRv dWJsZSBNYXhBdmVyYWdlUGVyY2VudE9mSWRlYWxTRFBQb3J0QldEaXNwbGF5Q2FuVXNlSW5Ob3Jt YWxTeXN0ZW1PcGVyYXRpb247CiBkb3VibGUgTWF4QXZlcmFnZVBlcmNlbnRPZklkZWFsRFJBTUJX RGlzcGxheUNhblVzZUluTm9ybWFsU3lzdGVtT3BlcmF0aW9uOwogZG91YmxlIE51bWJlck9mQ2hh bm5lbHM7CiBkb3VibGUgRFJBTUNoYW5uZWxXaWR0aDsKIGRvdWJsZSBGYWJyaWNEYXRhcGF0aFRv RENORGF0YVJldHVybjsKIGRvdWJsZSBSZXR1cm5CdXNXaWR0aDsKIGRvdWJsZSBEb3duc3ByZWFk aW5nOwogZG91YmxlIERJU1BDTEtEUFBDTEtEU0NDTEtEb3duU3ByZWFkaW5nOwogZG91YmxlIERJ U1BDTEtEUFBDTEtWQ09TcGVlZDsKIGRvdWJsZSBSb3VuZFRyaXBQaW5nTGF0ZW5jeUN5Y2xlczsK IGRvdWJsZSBVcmdlbnRPdXRPZk9yZGVyUmV0dXJuUGVyQ2hhbm5lbDsKIGRvdWJsZSBVcmdlbnRP dXRPZk9yZGVyUmV0dXJuUGVyQ2hhbm5lbFBpeGVsRGF0YU9ubHk7CiBkb3VibGUgVXJnZW50T3V0 T2ZPcmRlclJldHVyblBlckNoYW5uZWxQaXhlbE1peGVkV2l0aFZNRGF0YTsKIGRvdWJsZSBVcmdl bnRPdXRPZk9yZGVyUmV0dXJuUGVyQ2hhbm5lbFZNRGF0YU9ubHk7CiB1bnNpZ25lZCBpbnQgVk1N UGFnZVNpemU7CiBkb3VibGUgRFJBTUNsb2NrQ2hhbmdlTGF0ZW5jeTsKIGRvdWJsZSBYRkNCdXNU cmFuc3BvcnRUaW1lOwogYm9vbCBVc2VVcmdlbnRCdXJzdEJhbmR3aWR0aDsKIGRvdWJsZSBYRkNY QlVGTGF0ZW5jeVRvbGVyYW5jZTsKCgoKCiB1bnNpZ25lZCBpbnQgUk9CQnVmZmVyU2l6ZUluS0J5 dGU7CiBkb3VibGUgREVUQnVmZmVyU2l6ZUluS0J5dGU7CiBkb3VibGUgREVUQnVmZmVyU2l6ZUlu VGltZTsKIHVuc2lnbmVkIGludCBEUFBPdXRwdXRCdWZmZXJQaXhlbHM7CiB1bnNpZ25lZCBpbnQg T1BQT3V0cHV0QnVmZmVyTGluZXM7CiB1bnNpZ25lZCBpbnQgUGl4ZWxDaHVua1NpemVJbktCeXRl OwogZG91YmxlIFJldHVybkJXOwogYm9vbCBHUFVWTUVuYWJsZTsKIGJvb2wgSG9zdFZNRW5hYmxl OwogdW5zaWduZWQgaW50IEdQVVZNTWF4UGFnZVRhYmxlTGV2ZWxzOwogdW5zaWduZWQgaW50IEhv c3RWTU1heFBhZ2VUYWJsZUxldmVsczsKIHVuc2lnbmVkIGludCBIb3N0Vk1DYWNoZWRQYWdlVGFi bGVMZXZlbHM7CiB1bnNpZ25lZCBpbnQgT3ZlcnJpZGVHUFVWTVBhZ2VUYWJsZUxldmVsczsKIHVu c2lnbmVkIGludCBPdmVycmlkZUhvc3RWTVBhZ2VUYWJsZUxldmVsczsKIHVuc2lnbmVkIGludCBN ZXRhQ2h1bmtTaXplOwogZG91YmxlIE1pblBpeGVsQ2h1bmtTaXplQnl0ZXM7CiBkb3VibGUgTWlu TWV0YUNodW5rU2l6ZUJ5dGVzOwogdW5zaWduZWQgaW50IFdyaXRlYmFja0NodW5rU2l6ZTsKIGJv b2wgT0RNQ2FwYWJpbGl0eTsKIHVuc2lnbmVkIGludCBOdW1iZXJPZkRTQzsKIHVuc2lnbmVkIGlu dCBMaW5lQnVmZmVyU2l6ZTsKIHVuc2lnbmVkIGludCBNYXhMaW5lQnVmZmVyTGluZXM7CiB1bnNp Z25lZCBpbnQgV3JpdGViYWNrSW50ZXJmYWNlTHVtYUJ1ZmZlclNpemU7CiB1bnNpZ25lZCBpbnQg V3JpdGViYWNrSW50ZXJmYWNlQ2hyb21hQnVmZmVyU2l6ZTsKIHVuc2lnbmVkIGludCBXcml0ZWJh Y2tDaHJvbWFMaW5lQnVmZmVyV2lkdGg7CiBlbnVtIHdyaXRlYmFja19jb25maWcgV3JpdGViYWNr Q29uZmlndXJhdGlvbjsKIGRvdWJsZSBNYXhEQ0hVQlRvUFNDTFRocm91Z2hwdXQ7CiBkb3VibGUg TWF4UFNDTFRvTEJUaHJvdWdocHV0OwogdW5zaWduZWQgaW50IFBURUJ1ZmZlclNpemVJblJlcXVl c3RzTHVtYTsKIHVuc2lnbmVkIGludCBQVEVCdWZmZXJTaXplSW5SZXF1ZXN0c0Nocm9tYTsKIGRv dWJsZSBESVNQQ0xLUmFtcGluZ01hcmdpbjsKIHVuc2lnbmVkIGludCBNYXhJbnRlckRDTlRpbGVS ZXBlYXRlcnM7CiBib29sIFhGQ1N1cHBvcnRlZDsKIGRvdWJsZSBYRkNTbHZDaHVua1NpemU7CiBk b3VibGUgWEZDRmlsbEJXT3ZlcmhlYWQ7CiBkb3VibGUgWEZDRmlsbENvbnN0YW50OwogZG91Ymxl IFhGQ1RTbHZWdXBkYXRlT2Zmc2V0OwogZG91YmxlIFhGQ1RTbHZWdXBkYXRlV2lkdGg7CiBkb3Vi bGUgWEZDVFNsdlZyZWFkeU9mZnNldDsKIGRvdWJsZSBEUFBDTEtEZWxheVN1YnRvdGFsOwogZG91 YmxlIERQUENMS0RlbGF5U0NMOwogZG91YmxlIERQUENMS0RlbGF5U0NMTEJPbmx5OwogZG91Ymxl IERQUENMS0RlbGF5Q05WQ0Zvcm1hdGVyOwogZG91YmxlIERQUENMS0RlbGF5Q05WQ0N1cnNvcjsK IGRvdWJsZSBESVNQQ0xLRGVsYXlTdWJ0b3RhbDsKIGJvb2wgUHJvZ3Jlc3NpdmVUb0ludGVybGFj ZVVuaXRJbk9QUDsKCiBpbnQgVm9sdGFnZUxldmVsOwogZG91YmxlIEZhYnJpY0Nsb2NrOwogZG91 YmxlIERSQU1TcGVlZDsKIGRvdWJsZSBESVNQQ0xLOwogZG91YmxlIFNPQ0NMSzsKIGRvdWJsZSBE Q0ZDTEs7CgogdW5zaWduZWQgaW50IE51bWJlck9mQWN0aXZlUGxhbmVzOwogdW5zaWduZWQgaW50 IE51bWJlck9mRFNDU2xpY2VzWzhdOwogdW5zaWduZWQgaW50IFZpZXdwb3J0V2lkdGhbOF07CiB1 bnNpZ25lZCBpbnQgVmlld3BvcnRIZWlnaHRbOF07CiB1bnNpZ25lZCBpbnQgVmlld3BvcnRZU3Rh cnRZWzhdOwogdW5zaWduZWQgaW50IFZpZXdwb3J0WVN0YXJ0Q1s4XTsKIHVuc2lnbmVkIGludCBQ aXRjaFlbOF07CiB1bnNpZ25lZCBpbnQgUGl0Y2hDWzhdOwogZG91YmxlIEhSYXRpb1s4XTsKIGRv dWJsZSBWUmF0aW9bOF07CiB1bnNpZ25lZCBpbnQgaHRhcHNbOF07CiB1bnNpZ25lZCBpbnQgdnRh cHNbOF07CiB1bnNpZ25lZCBpbnQgSFRBUHNDaHJvbWFbOF07CiB1bnNpZ25lZCBpbnQgVlRBUHND aHJvbWFbOF07CiB1bnNpZ25lZCBpbnQgSFRvdGFsWzhdOwogdW5zaWduZWQgaW50IFZUb3RhbFs4 XTsKIHVuc2lnbmVkIGludCBWVG90YWxfTWF4WzhdOwogdW5zaWduZWQgaW50IFZUb3RhbF9NaW5b OF07CiBpbnQgRFBQUGVyUGxhbmVbOF07CiBkb3VibGUgUGl4ZWxDbG9ja1s4XTsKIGRvdWJsZSBQ aXhlbENsb2NrQmFja0VuZFs4XTsKIGJvb2wgRENDRW5hYmxlWzhdOwogYm9vbCBGRUNFbmFibGVb OF07CiB1bnNpZ25lZCBpbnQgRENDTWV0YVBpdGNoWVs4XTsKIHVuc2lnbmVkIGludCBEQ0NNZXRh UGl0Y2hDWzhdOwogZW51bSBzY2FuX2RpcmVjdGlvbl9jbGFzcyBTb3VyY2VTY2FuWzhdOwogZW51 bSBzb3VyY2VfZm9ybWF0X2NsYXNzIFNvdXJjZVBpeGVsRm9ybWF0WzhdOwogYm9vbCBXcml0ZWJh Y2tFbmFibGVbOF07CiB1bnNpZ25lZCBpbnQgQWN0aXZlV3JpdGViYWNrc1BlclBsYW5lWzhdOwog ZG91YmxlIFdyaXRlYmFja0Rlc3RpbmF0aW9uV2lkdGhbOF07CiBkb3VibGUgV3JpdGViYWNrRGVz dGluYXRpb25IZWlnaHRbOF07CiBkb3VibGUgV3JpdGViYWNrU291cmNlSGVpZ2h0WzhdOwogZW51 bSBzb3VyY2VfZm9ybWF0X2NsYXNzIFdyaXRlYmFja1BpeGVsRm9ybWF0WzhdOwogdW5zaWduZWQg aW50IFdyaXRlYmFja0x1bWFIVGFwc1s4XTsKIHVuc2lnbmVkIGludCBXcml0ZWJhY2tMdW1hVlRh cHNbOF07CiB1bnNpZ25lZCBpbnQgV3JpdGViYWNrQ2hyb21hSFRhcHNbOF07CiB1bnNpZ25lZCBp bnQgV3JpdGViYWNrQ2hyb21hVlRhcHNbOF07CiBkb3VibGUgV3JpdGViYWNrSFJhdGlvWzhdOwog ZG91YmxlIFdyaXRlYmFja1ZSYXRpb1s4XTsKIHVuc2lnbmVkIGludCBIQWN0aXZlWzhdOwogdW5z aWduZWQgaW50IFZBY3RpdmVbOF07CiBib29sIEludGVybGFjZVs4XTsKIGVudW0gZG1fc3dpenps ZV9tb2RlIFN1cmZhY2VUaWxpbmdbOF07CiB1bnNpZ25lZCBpbnQgU2NhbGVyUmVjb3V0V2lkdGhb OF07CiBib29sIER5bmFtaWNNZXRhZGF0YUVuYWJsZVs4XTsKIGludCBEeW5hbWljTWV0YWRhdGFM aW5lc0JlZm9yZUFjdGl2ZVJlcXVpcmVkWzhdOwogdW5zaWduZWQgaW50IER5bmFtaWNNZXRhZGF0 YVRyYW5zbWl0dGVkQnl0ZXNbOF07CiBkb3VibGUgRENDUmF0ZVs4XTsKIGRvdWJsZSBBdmVyYWdl RENDQ29tcHJlc3Npb25SYXRlOwogZW51bSBvZG1fY29tYmluZV9tb2RlIE9ETUNvbWJpbmVFbmFi bGVkWzhdOwogZG91YmxlIE91dHB1dEJwcFs4XTsKIGJvb2wgRFNDRW5hYmxlZFs4XTsKIHVuc2ln bmVkIGludCBEU0NJbnB1dEJpdFBlckNvbXBvbmVudFs4XTsKIGVudW0gb3V0cHV0X2Zvcm1hdF9j bGFzcyBPdXRwdXRGb3JtYXRbOF07CiBlbnVtIG91dHB1dF9lbmNvZGVyX2NsYXNzIE91dHB1dFs4 XTsKIHVuc2lnbmVkIGludCBCbGVuZGluZ0FuZFRpbWluZ1s4XTsKIGJvb2wgU3luY2hyb25pemVk VkJsYW5rOwogdW5zaWduZWQgaW50IE51bWJlck9mQ3Vyc29yc1s4XTsKIHVuc2lnbmVkIGludCBD dXJzb3JXaWR0aFs4XVsyXTsKIHVuc2lnbmVkIGludCBDdXJzb3JCUFBbOF1bMl07CiBib29sIFhG Q0VuYWJsZWRbOF07CiBib29sIFNjYWxlckVuYWJsZWRbOF07CgoKIGJvb2wgSW1tZWRpYXRlRmxp cFN1cHBvcnQ7CiBkb3VibGUgREVUQnVmZmVyU2l6ZVlbOF07CiBkb3VibGUgREVUQnVmZmVyU2l6 ZUNbOF07CiB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRZWzhdOwogdW5zaWduZWQgaW50IFN3YXRo SGVpZ2h0Q1s4XTsKIHVuc2lnbmVkIGludCBMQkJpdFBlclBpeGVsWzhdOwogZG91YmxlIExhc3RQ aXhlbE9mTGluZUV4dHJhV2F0ZXJtYXJrOwogZG91YmxlIFRvdGFsRGF0YVJlYWRCYW5kd2lkdGg7 CiB1bnNpZ25lZCBpbnQgVG90YWxBY3RpdmVXcml0ZWJhY2s7CiB1bnNpZ25lZCBpbnQgRWZmZWN0 aXZlTEJMYXRlbmN5SGlkaW5nU291cmNlTGluZXNMdW1hOwogdW5zaWduZWQgaW50IEVmZmVjdGl2 ZUxCTGF0ZW5jeUhpZGluZ1NvdXJjZUxpbmVzQ2hyb21hOwogZG91YmxlIEJhbmR3aWR0aEF2YWls YWJsZUZvckltbWVkaWF0ZUZsaXA7CiB1bnNpZ25lZCBpbnQgUHJlZmV0Y2hNb2RlWzcgKyAxXVsy XTsKIHVuc2lnbmVkIGludCBQcmVmZXRjaE1vZGVQZXJTdGF0ZVs3ICsgMV1bMl07CiB1bnNpZ25l ZCBpbnQgTWluUHJlZmV0Y2hNb2RlOwogdW5zaWduZWQgaW50IE1heFByZWZldGNoTW9kZTsKIGJv b2wgQW55TGluZXNGb3JWTU9yUm93VG9vTGFyZ2U7CiBkb3VibGUgTWF4VlN0YXJ0dXA7CiBib29s IElnbm9yZVZpZXdwb3J0UG9zaXRpb25pbmc7CiBib29sIEVycm9yUmVzdWx0WzhdOwoKCgogZG91 YmxlIERDRkNMS0RlZXBTbGVlcDsKIGRvdWJsZSBVcmdlbnRXYXRlcm1hcms7CiBkb3VibGUgVXJn ZW50RXh0cmFMYXRlbmN5OwogZG91YmxlIFdyaXRlYmFja1VyZ2VudFdhdGVybWFyazsKIGRvdWJs ZSBTdHV0dGVyRXhpdFdhdGVybWFyazsKIGRvdWJsZSBTdHV0dGVyRW50ZXJQbHVzRXhpdFdhdGVy bWFyazsKIGRvdWJsZSBEUkFNQ2xvY2tDaGFuZ2VXYXRlcm1hcms7CiBkb3VibGUgV3JpdGViYWNr RFJBTUNsb2NrQ2hhbmdlV2F0ZXJtYXJrOwogZG91YmxlIFN0dXR0ZXJFZmZpY2llbmN5OwogZG91 YmxlIFN0dXR0ZXJFZmZpY2llbmN5Tm90SW5jbHVkaW5nVkJsYW5rOwogZG91YmxlIE5vblVyZ2Vu dExhdGVuY3lUb2xlcmFuY2U7CiBkb3VibGUgTWluQWN0aXZlRFJBTUNsb2NrQ2hhbmdlTGF0ZW5j eVN1cHBvcnRlZDsKCgoKCiBkb3VibGUgRElTUENMS19jYWxjdWxhdGVkOwogZG91YmxlIERQUENM S19jYWxjdWxhdGVkWzhdOwoKIHVuc2lnbmVkIGludCBWVXBkYXRlT2Zmc2V0UGl4WzhdOwogZG91 YmxlIFZVcGRhdGVXaWR0aFBpeFs4XTsKIGRvdWJsZSBWUmVhZHlPZmZzZXRQaXhbOF07CgogdW5z aWduZWQgaW50IFRvdEltbWVkaWF0ZUZsaXBCeXRlczsKIGRvdWJsZSBUQ2FsYzsKCiBkaXNwbGF5 X2UyZV9waXBlX3BhcmFtc19zdCBjYWNoZV9waXBlc1s4XTsKIHVuc2lnbmVkIGludCBjYWNoZV9u dW1fcGlwZXM7CiB1bnNpZ25lZCBpbnQgcGlwZV9wbGFuZVs4XTsKCgoKIGJvb2wgRW1iZWRkZWRQ YW5lbFs4XTsKIGJvb2wgU3VwcG9ydEdGWDdDb21wYXRpYmxlVGlsaW5nSW4zMmJwcEFuZDY0YnBw OwogZG91YmxlIE1heEhTQ0xSYXRpbzsKIGRvdWJsZSBNYXhWU0NMUmF0aW87CiB1bnNpZ25lZCBp bnQgTWF4TnVtV3JpdGViYWNrOwogYm9vbCBXcml0ZWJhY2tMdW1hQW5kQ2hyb21hU2NhbGluZ1N1 cHBvcnRlZDsKIGJvb2wgQ3Vyc29yNjRCcHBTdXBwb3J0OwogZG91YmxlIERDRkNMS1BlclN0YXRl WzcgKyAxXTsKIGRvdWJsZSBEQ0ZDTEtTdGF0ZVs3ICsgMV1bMl07CiBkb3VibGUgRmFicmljQ2xv Y2tQZXJTdGF0ZVs3ICsgMV07CiBkb3VibGUgU09DQ0xLUGVyU3RhdGVbNyArIDFdOwogZG91Ymxl IFBIWUNMS1BlclN0YXRlWzcgKyAxXTsKIGRvdWJsZSBEVEJDTEtQZXJTdGF0ZVs3ICsgMV07CiBk b3VibGUgTWF4RHBwY2xrWzcgKyAxXTsKIGRvdWJsZSBNYXhEU0NDTEtbNyArIDFdOwogZG91Ymxl IERSQU1TcGVlZFBlclN0YXRlWzcgKyAxXTsKIGRvdWJsZSBNYXhEaXNwY2xrWzcgKyAxXTsKIGlu dCBWb2x0YWdlT3ZlcnJpZGVMZXZlbDsKCgogYm9vbCBTY2FsZVJhdGlvQW5kVGFwc1N1cHBvcnQ7 CiBib29sIFNvdXJjZUZvcm1hdFBpeGVsQW5kU2NhblN1cHBvcnQ7CiBkb3VibGUgVG90YWxCYW5k d2lkdGhDb25zdW1lZEdCeXRlUGVyU2Vjb25kOwogYm9vbCBEQ0NFbmFibGVkSW5BbnlQbGFuZTsK IGJvb2wgV3JpdGViYWNrTGF0ZW5jeVN1cHBvcnQ7CiBib29sIFdyaXRlYmFja01vZGVTdXBwb3J0 OwogYm9vbCBXcml0ZWJhY2sxMGJwYzQyMFN1cHBvcnRlZDsKIGJvb2wgQmFuZHdpZHRoU3VwcG9y dFs3ICsgMV07CiB1bnNpZ25lZCBpbnQgVG90YWxOdW1iZXJPZkFjdGl2ZVdyaXRlYmFjazsKIGRv dWJsZSBDcml0aWNhbFBvaW50OwogZG91YmxlIFJldHVybkJXVG9EQ05QZXJTdGF0ZTsKIGJvb2wg SXNFcnJvclJlc3VsdFs3ICsgMV1bMl1bOF07CiBib29sIHByZWZldGNoX3ZtX2J3X3ZhbGlkOwog Ym9vbCBwcmVmZXRjaF9yb3dfYndfdmFsaWQ7CiBib29sIE51bWJlck9mT1RHU3VwcG9ydDsKIGJv b2wgTm9uc3VwcG9ydGVkRFNDSW5wdXRCUEM7CiBib29sIFdyaXRlYmFja1NjYWxlUmF0aW9BbmRU YXBzU3VwcG9ydDsKIGJvb2wgQ3Vyc29yU3VwcG9ydDsKIGJvb2wgUGl0Y2hTdXBwb3J0OwogZW51 bSBkbV92YWxpZGF0aW9uX3N0YXR1cyBWYWxpZGF0aW9uU3RhdHVzWzcgKyAxXTsKCiBkb3VibGUg V3JpdGViYWNrTGluZUJ1ZmZlckx1bWFCdWZmZXJTaXplOwogZG91YmxlIFdyaXRlYmFja0xpbmVC dWZmZXJDaHJvbWFCdWZmZXJTaXplOwogZG91YmxlIFdyaXRlYmFja01pbkhTQ0xSYXRpbzsKIGRv dWJsZSBXcml0ZWJhY2tNaW5WU0NMUmF0aW87CiBkb3VibGUgV3JpdGViYWNrTWF4SFNDTFJhdGlv OwogZG91YmxlIFdyaXRlYmFja01heFZTQ0xSYXRpbzsKIGRvdWJsZSBXcml0ZWJhY2tNYXhIU0NM VGFwczsKIGRvdWJsZSBXcml0ZWJhY2tNYXhWU0NMVGFwczsKIHVuc2lnbmVkIGludCBNYXhOdW1E UFA7CiB1bnNpZ25lZCBpbnQgTWF4TnVtT1RHOwogZG91YmxlIEN1cnNvckJ1ZmZlclNpemU7CiBk b3VibGUgQ3Vyc29yQ2h1bmtTaXplOwogdW5zaWduZWQgaW50IE1vZGU7CiBkb3VibGUgT3V0cHV0 TGlua0RQTGFuZXNbOF07CiBkb3VibGUgRm9yY2VkT3V0cHV0TGlua0JQUFs4XTsKIGRvdWJsZSBJ bW1lZGlhdGVGbGlwQldbOF07CiBkb3VibGUgTWF4TWF4VlN0YXJ0dXBbNyArIDFdWzJdOwoKIGRv dWJsZSBXcml0ZWJhY2tMdW1hVkV4dHJhOwogZG91YmxlIFdyaXRlYmFja0Nocm9tYVZFeHRyYTsK IGRvdWJsZSBXcml0ZWJhY2tSZXF1aXJlZERJU1BDTEs7CiBkb3VibGUgTWF4aW11bVN3YXRoV2lk dGhTdXBwb3J0OwogZG91YmxlIE1heGltdW1Td2F0aFdpZHRoSW5ERVRCdWZmZXI7CiBkb3VibGUg TWF4aW11bVN3YXRoV2lkdGhJbkxpbmVCdWZmZXI7CiBkb3VibGUgTWF4RGlzcGNsa1JvdW5kZWRE b3duVG9ERlNHcmFudWxhcml0eTsKIGRvdWJsZSBNYXhEcHBjbGtSb3VuZGVkRG93blRvREZTR3Jh bnVsYXJpdHk7CiBkb3VibGUgUGxhbmVSZXF1aXJlZERJU1BDTEtXaXRob3V0T0RNQ29tYmluZTsK IGRvdWJsZSBQbGFuZVJlcXVpcmVkRElTUENMS1dpdGhPRE1Db21iaW5lOwogZG91YmxlIFBsYW5l UmVxdWlyZWRESVNQQ0xLOwogZG91YmxlIFRvdGFsTnVtYmVyT2ZBY3RpdmVPVEc7CiBkb3VibGUg RkVDT3ZlcmhlYWQ7CiBkb3VibGUgRWZmZWN0aXZlRkVDT3ZlcmhlYWQ7CiBkb3VibGUgT3V0YnBw OwogdW5zaWduZWQgaW50IE91dGJwcERTQzsKIGRvdWJsZSBUb3RhbERTQ1VuaXRzUmVxdWlyZWQ7 CiBkb3VibGUgYnBwOwogdW5zaWduZWQgaW50IHNsaWNlczsKIGRvdWJsZSBTd2F0aFdpZHRoR3Jh bnVsYXJpdHlZOwogZG91YmxlIFJvdW5kZWRVcE1heFN3YXRoU2l6ZUJ5dGVzWTsKIGRvdWJsZSBT d2F0aFdpZHRoR3JhbnVsYXJpdHlDOwogZG91YmxlIFJvdW5kZWRVcE1heFN3YXRoU2l6ZUJ5dGVz QzsKIGRvdWJsZSBFZmZlY3RpdmVERVRMQkxpbmVzTHVtYTsKIGRvdWJsZSBFZmZlY3RpdmVERVRM QkxpbmVzQ2hyb21hOwogZG91YmxlIFByb2plY3RlZERDRkNMS0RlZXBTbGVlcFs3ICsgMV1bMl07 CiBkb3VibGUgUERFQW5kTWV0YVBURUJ5dGVzUGVyRnJhbWVZOwogZG91YmxlIFBERUFuZE1ldGFQ VEVCeXRlc1BlckZyYW1lQzsKIHVuc2lnbmVkIGludCBNZXRhUm93Qnl0ZXNZOwogdW5zaWduZWQg aW50IE1ldGFSb3dCeXRlc0M7CiB1bnNpZ25lZCBpbnQgRFBURUJ5dGVzUGVyUm93QzsKIHVuc2ln bmVkIGludCBEUFRFQnl0ZXNQZXJSb3dZOwogZG91YmxlIEV4dHJhTGF0ZW5jeTsKIGRvdWJsZSBU aW1lQ2FsYzsKIGRvdWJsZSBUV2FpdDsKIGRvdWJsZSBNYXhpbXVtUmVhZEJhbmR3aWR0aFdpdGhQ cmVmZXRjaDsKIGRvdWJsZSBNYXhpbXVtUmVhZEJhbmR3aWR0aFdpdGhvdXRQcmVmZXRjaDsKIGRv dWJsZSB0b3RhbF9kY25fcmVhZF9id193aXRoX2ZsaXA7CiBkb3VibGUgdG90YWxfZGNuX3JlYWRf Yndfd2l0aF9mbGlwX25vX3VyZ2VudF9idXJzdDsKIGRvdWJsZSBGcmFjdGlvbk9mVXJnZW50QmFu ZHdpZHRoOwogZG91YmxlIEZyYWN0aW9uT2ZVcmdlbnRCYW5kd2lkdGhJbW1lZGlhdGVGbGlwOwoK CiBkb3VibGUgSWRlYWxTRFBQb3J0QmFuZHdpZHRoUGVyU3RhdGVbNyArIDFdWzJdOwogdW5zaWdu ZWQgaW50IE5vT2ZEUFBbNyArIDFdWzJdWzhdOwogaW50IE5vT2ZEUFBUaGlzU3RhdGVbOF07CiBl bnVtIG9kbV9jb21iaW5lX21vZGUgT0RNQ29tYmluZUVuYWJsZVBlclN0YXRlWzcgKyAxXVs4XTsK IGRvdWJsZSBTd2F0aFdpZHRoWVRoaXNTdGF0ZVs4XTsKIHVuc2lnbmVkIGludCBTd2F0aEhlaWdo dENQZXJTdGF0ZVs3ICsgMV1bMl1bOF07CiB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRZVGhpc1N0 YXRlWzhdOwogdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0Q1RoaXNTdGF0ZVs4XTsKIGRvdWJsZSBW UmF0aW9QcmVZWzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBWUmF0aW9QcmVDWzcgKyAxXVsyXVs4XTsK IGRvdWJsZSBSZXF1aXJlZFByZWZldGNoUGl4ZWxEYXRhQldMdW1hWzcgKyAxXVsyXVs4XTsKIGRv dWJsZSBSZXF1aXJlZFByZWZldGNoUGl4ZWxEYXRhQldDaHJvbWFbNyArIDFdWzJdWzhdOwogZG91 YmxlIFJlcXVpcmVkRFBQQ0xLWzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBSZXF1aXJlZERQUENMS1Ro aXNTdGF0ZVs4XTsKIGJvb2wgUFRFQnVmZmVyU2l6ZU5vdEV4Y2VlZGVkWVs3ICsgMV1bMl1bOF07 CiBib29sIFBURUJ1ZmZlclNpemVOb3RFeGNlZWRlZENbNyArIDFdWzJdWzhdOwogYm9vbCBCYW5k d2lkdGhXaXRob3V0UHJlZmV0Y2hTdXBwb3J0ZWRbNyArIDFdWzJdOwogYm9vbCBQcmVmZXRjaFN1 cHBvcnRlZFs3ICsgMV1bMl07CiBib29sIFZSYXRpb0luUHJlZmV0Y2hTdXBwb3J0ZWRbNyArIDFd WzJdOwogZG91YmxlIFJlcXVpcmVkRElTUENMS1s3ICsgMV1bMl07CiBib29sIERJU1BDTEtfRFBQ Q0xLX1N1cHBvcnRbNyArIDFdWzJdOwogYm9vbCBUb3RhbEF2YWlsYWJsZVBpcGVzU3VwcG9ydFs3 ICsgMV1bMl07CiB1bnNpZ25lZCBpbnQgVG90YWxOdW1iZXJPZkFjdGl2ZURQUFs3ICsgMV1bMl07 CiB1bnNpZ25lZCBpbnQgVG90YWxOdW1iZXJPZkRDQ0FjdGl2ZURQUFs3ICsgMV1bMl07CiBib29s IE1vZGVTdXBwb3J0WzcgKyAxXVsyXTsKIGRvdWJsZSBSZXR1cm5CV1BlclN0YXRlWzcgKyAxXVsy XTsKIGJvb2wgRElPU3VwcG9ydFs3ICsgMV07CiBib29sIE5vdEVub3VnaERTQ1VuaXRzWzcgKyAx XTsKIGJvb2wgRFNDQ0xLUmVxdWlyZWRNb3JlVGhhblN1cHBvcnRlZFs3ICsgMV07CiBib29sIERU QkNMS1JlcXVpcmVkTW9yZVRoYW5TdXBwb3J0ZWRbNyArIDFdOwogZG91YmxlIFVyZ2VudFJvdW5k VHJpcEFuZE91dE9mT3JkZXJMYXRlbmN5UGVyU3RhdGVbNyArIDFdOwogYm9vbCBST0JTdXBwb3J0 WzcgKyAxXVsyXTsKIGJvb2wgUFRFQnVmZmVyU2l6ZU5vdEV4Y2VlZGVkWzcgKyAxXVsyXTsKIGJv b2wgVG90YWxWZXJ0aWNhbEFjdGl2ZUJhbmR3aWR0aFN1cHBvcnRbNyArIDFdWzJdOwogZG91Ymxl IE1heFRvdGFsVmVydGljYWxBY3RpdmVBdmFpbGFibGVCYW5kd2lkdGhbNyArIDFdWzJdOwogZG91 YmxlIFByZWZldGNoQldbOF07CiBkb3VibGUgUERFQW5kTWV0YVBURUJ5dGVzUGVyRnJhbWVbNyAr IDFdWzJdWzhdOwogZG91YmxlIE1ldGFSb3dCeXRlc1s3ICsgMV1bMl1bOF07CiBkb3VibGUgRFBU RUJ5dGVzUGVyUm93WzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBQcmVmZXRjaExpbmVzWVs3ICsgMV1b Ml1bOF07CiBkb3VibGUgUHJlZmV0Y2hMaW5lc0NbNyArIDFdWzJdWzhdOwogdW5zaWduZWQgaW50 IE1heE51bVN3WVs4XTsKIHVuc2lnbmVkIGludCBNYXhOdW1Td0NbOF07CiBkb3VibGUgUHJlZmls bFlbOF07CiBkb3VibGUgUHJlZmlsbENbOF07CiBkb3VibGUgTGluZVRpbWVzRm9yUHJlZmV0Y2hb OF07CiBkb3VibGUgTGluZXNGb3JNZXRhUFRFWzhdOwogZG91YmxlIExpbmVzRm9yTWV0YUFuZERQ VEVSb3dbOF07CiBkb3VibGUgTWluRFBQQ0xLVXNpbmdTaW5nbGVEUFBbOF07CiBkb3VibGUgU3dh dGhXaWR0aFlTaW5nbGVEUFBbOF07CiBkb3VibGUgQnl0ZVBlclBpeGVsSW5ERVRZWzhdOwogZG91 YmxlIEJ5dGVQZXJQaXhlbEluREVUQ1s4XTsKIGJvb2wgUmVxdWlyZXNEU0NbNyArIDFdWzhdOwog dW5zaWduZWQgaW50IE51bWJlck9mRFNDU2xpY2VbNyArIDFdWzhdOwogZG91YmxlIFJlcXVpcmVz RkVDWzcgKyAxXVs4XTsKIGRvdWJsZSBPdXRwdXRCcHBQZXJTdGF0ZVs3ICsgMV1bOF07CiBkb3Vi bGUgRFNDRGVsYXlQZXJTdGF0ZVs3ICsgMV1bOF07CiBib29sIFZpZXdwb3J0U2l6ZVN1cHBvcnRb NyArIDFdWzJdOwogdW5zaWduZWQgaW50IFJlYWQyNTZCbG9ja0hlaWdodFlbOF07CiB1bnNpZ25l ZCBpbnQgUmVhZDI1NkJsb2NrV2lkdGhZWzhdOwogdW5zaWduZWQgaW50IFJlYWQyNTZCbG9ja0hl aWdodENbOF07CiB1bnNpZ25lZCBpbnQgUmVhZDI1NkJsb2NrV2lkdGhDWzhdOwogZG91YmxlIE1h eFN3YXRoSGVpZ2h0WVs4XTsKIGRvdWJsZSBNYXhTd2F0aEhlaWdodENbOF07CiBkb3VibGUgTWlu U3dhdGhIZWlnaHRZWzhdOwogZG91YmxlIE1pblN3YXRoSGVpZ2h0Q1s4XTsKIGRvdWJsZSBSZWFk QmFuZHdpZHRoTHVtYVs4XTsKIGRvdWJsZSBSZWFkQmFuZHdpZHRoQ2hyb21hWzhdOwogZG91Ymxl IFJlYWRCYW5kd2lkdGhbOF07CiBkb3VibGUgV3JpdGVCYW5kd2lkdGhbOF07CiBkb3VibGUgUFND TF9GQUNUT1JbOF07CiBkb3VibGUgUFNDTF9GQUNUT1JfQ0hST01BWzhdOwogZG91YmxlIE1heGlt dW1WU3RhcnR1cFs3ICsgMV1bMl1bOF07CiB1bnNpZ25lZCBpbnQgTWFjcm9UaWxlV2lkdGhZWzhd OwogdW5zaWduZWQgaW50IE1hY3JvVGlsZVdpZHRoQ1s4XTsKIGRvdWJsZSBBbGlnbmVkRENDTWV0 YVBpdGNoWzhdOwogZG91YmxlIEFsaWduZWRZUGl0Y2hbOF07CiBkb3VibGUgQWxpZ25lZENQaXRj aFs4XTsKIGRvdWJsZSBNYXhpbXVtU3dhdGhXaWR0aFs4XTsKIGRvdWJsZSBjdXJzb3JfYndbOF07 CiBkb3VibGUgY3Vyc29yX2J3X3ByZVs4XTsKIGRvdWJsZSBUbm9fYndbOF07CiBkb3VibGUgcHJl ZmV0Y2hfdm1yb3dfYndbOF07CiBkb3VibGUgRGVzdGluYXRpb25MaW5lc1RvUmVxdWVzdFZNSW5J bW1lZGlhdGVGbGlwWzhdOwogZG91YmxlIERlc3RpbmF0aW9uTGluZXNUb1JlcXVlc3RSb3dJbklt bWVkaWF0ZUZsaXBbOF07CiBkb3VibGUgZmluYWxfZmxpcF9id1s4XTsKIGJvb2wgSW1tZWRpYXRl RmxpcFN1cHBvcnRlZEZvclN0YXRlWzcgKyAxXVsyXTsKIGRvdWJsZSBXcml0ZWJhY2tEZWxheVs3 ICsgMV1bOF07CiB1bnNpZ25lZCBpbnQgdm1fZ3JvdXBfYnl0ZXNbOF07CiB1bnNpZ25lZCBpbnQg ZHB0ZV9ncm91cF9ieXRlc1s4XTsKIHVuc2lnbmVkIGludCBkcHRlX3Jvd19oZWlnaHRbOF07CiB1 bnNpZ25lZCBpbnQgbWV0YV9yZXFfaGVpZ2h0WzhdOwogdW5zaWduZWQgaW50IG1ldGFfcmVxX3dp ZHRoWzhdOwogdW5zaWduZWQgaW50IG1ldGFfcm93X2hlaWdodFs4XTsKIHVuc2lnbmVkIGludCBt ZXRhX3Jvd193aWR0aFs4XTsKIHVuc2lnbmVkIGludCBkcHRlX3Jvd19oZWlnaHRfY2hyb21hWzhd OwogdW5zaWduZWQgaW50IG1ldGFfcmVxX2hlaWdodF9jaHJvbWFbOF07CiB1bnNpZ25lZCBpbnQg bWV0YV9yZXFfd2lkdGhfY2hyb21hWzhdOwogdW5zaWduZWQgaW50IG1ldGFfcm93X2hlaWdodF9j aHJvbWFbOF07CiB1bnNpZ25lZCBpbnQgbWV0YV9yb3dfd2lkdGhfY2hyb21hWzhdOwogYm9vbCBJ bW1lZGlhdGVGbGlwU3VwcG9ydGVkRm9yUGlwZVs4XTsKIGRvdWJsZSBtZXRhX3Jvd19id1s4XTsK IGRvdWJsZSBkcHRlX3Jvd19id1s4XTsKIGRvdWJsZSBEaXNwbGF5UGlwZUxpbmVEZWxpdmVyeVRp bWVMdW1hWzhdOwogZG91YmxlIERpc3BsYXlQaXBlTGluZURlbGl2ZXJ5VGltZUNocm9tYVs4XTsK IGRvdWJsZSBEaXNwbGF5UGlwZVJlcXVlc3REZWxpdmVyeVRpbWVMdW1hWzhdOwogZG91YmxlIERp c3BsYXlQaXBlUmVxdWVzdERlbGl2ZXJ5VGltZUNocm9tYVs4XTsKIGVudW0gY2xvY2tfY2hhbmdl X3N1cHBvcnQgRFJBTUNsb2NrQ2hhbmdlU3VwcG9ydFs3ICsgMV1bMl07CiBkb3VibGUgVXJnZW50 QnVyc3RGYWN0b3JDdXJzb3JbOF07CiBkb3VibGUgVXJnZW50QnVyc3RGYWN0b3JDdXJzb3JQcmVb OF07CiBkb3VibGUgVXJnZW50QnVyc3RGYWN0b3JMdW1hWzhdOwogZG91YmxlIFVyZ2VudEJ1cnN0 RmFjdG9yTHVtYVByZVs4XTsKIGRvdWJsZSBVcmdlbnRCdXJzdEZhY3RvckNocm9tYVs4XTsKIGRv dWJsZSBVcmdlbnRCdXJzdEZhY3RvckNocm9tYVByZVs4XTsKCgogYm9vbCBNUENDb21iaW5lWzcg KyAxXVsyXVs4XTsKIGRvdWJsZSBTd2F0aFdpZHRoQ1NpbmdsZURQUFs4XTsKIGRvdWJsZSBNYXhp bXVtU3dhdGhXaWR0aEluTGluZUJ1ZmZlckx1bWE7CiBkb3VibGUgTWF4aW11bVN3YXRoV2lkdGhJ bkxpbmVCdWZmZXJDaHJvbWE7CiBkb3VibGUgTWF4aW11bVN3YXRoV2lkdGhMdW1hWzhdOwogZG91 YmxlIE1heGltdW1Td2F0aFdpZHRoQ2hyb21hWzhdOwogZW51bSBvZG1fY29tYmluZV9tb2RlIG9k bV9jb21iaW5lX2R1bW15WzhdOwogZG91YmxlIGR1bW15MVs4XTsKIGRvdWJsZSBkdW1teTJbOF07 CiBkb3VibGUgZHVtbXkzWzhdOwogZG91YmxlIGR1bW15NFs4XTsKIGRvdWJsZSBkdW1teTU7CiBk b3VibGUgZHVtbXk2OwogZG91YmxlIGR1bW15N1s4XTsKIGRvdWJsZSBkdW1teThbOF07CiB1bnNp Z25lZCBpbnQgZHVtbXlpbnRlZ2VyMW1zWzhdOwogZG91YmxlIGR1bW15aW50ZWdlcjJtc1s4XTsK IHVuc2lnbmVkIGludCBkdW1teWludGVnZXIzWzhdOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdl cjRbOF07CiB1bnNpZ25lZCBpbnQgZHVtbXlpbnRlZ2VyNTsKIHVuc2lnbmVkIGludCBkdW1teWlu dGVnZXI2OwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjc7CiB1bnNpZ25lZCBpbnQgZHVtbXlp bnRlZ2VyODsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXI5OwogdW5zaWduZWQgaW50IGR1bW15 aW50ZWdlcjEwOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjExOwogdW5zaWduZWQgaW50IGR1 bW15aW50ZWdlcjEyOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcmFycjFbOF07CiB1bnNpZ25l ZCBpbnQgZHVtbXlpbnRlZ2VyYXJyMls4XTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXJhcnIz WzhdOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcmFycjRbOF07CiBib29sIGR1bW15c2luZ2xl c3RyaW5nOwogYm9vbCBTaW5nbGVEUFBWaWV3cG9ydFNpemVTdXBwb3J0UGVyUGxhbmVbOF07CiBk b3VibGUgUGxhbmVSZXF1aXJlZERJU1BDTEtXaXRoT0RNQ29tYmluZTJUbzE7CiBkb3VibGUgUGxh bmVSZXF1aXJlZERJU1BDTEtXaXRoT0RNQ29tYmluZTRUbzE7CiB1bnNpZ25lZCBpbnQgVG90YWxO dW1iZXJPZlNpbmdsZURQUFBsYW5lc1s3ICsgMV1bMl07CiBib29sIExpbmtEU0NFbmFibGU7CiBi b29sIE9ETUNvbWJpbmU0VG8xU3VwcG9ydENoZWNrT0tbNyArIDFdOwogZW51bSBvZG1fY29tYmlu ZV9tb2RlIE9ETUNvbWJpbmVFbmFibGVUaGlzU3RhdGVbOF07CiBkb3VibGUgU3dhdGhXaWR0aENU aGlzU3RhdGVbOF07CiBib29sIFZpZXdwb3J0U2l6ZVN1cHBvcnRQZXJQbGFuZVs4XTsKIGRvdWJs ZSBBbGlnbmVkRENDTWV0YVBpdGNoWVs4XTsKIGRvdWJsZSBBbGlnbmVkRENDTWV0YVBpdGNoQ1s4 XTsKCiB1bnNpZ25lZCBpbnQgTm90RW5vdWdoVXJnZW50TGF0ZW5jeUhpZGluZzsKIHVuc2lnbmVk IGludCBOb3RFbm91Z2hVcmdlbnRMYXRlbmN5SGlkaW5nUHJlOwogaW50IFBURUJ1ZmZlclNpemVJ blJlcXVlc3RzRm9yTHVtYTsKIGludCBQVEVCdWZmZXJTaXplSW5SZXF1ZXN0c0ZvckNocm9tYTsK CgogaW50IGRwdGVfZ3JvdXBfYnl0ZXNfY2hyb21hOwogdW5zaWduZWQgaW50IHZtX2dyb3VwX2J5 dGVzX2Nocm9tYTsKIGRvdWJsZSBkc3RfeF9hZnRlcl9zY2FsZXI7CiBkb3VibGUgZHN0X3lfYWZ0 ZXJfc2NhbGVyOwogdW5zaWduZWQgaW50IFZTdGFydHVwUmVxdWlyZWRXaGVuTm90RW5vdWdoVGlt ZUZvckR5bmFtaWNNZXRhZGF0YTsKCgogZG91YmxlIFByZWZldGNoQmFuZHdpZHRoWzhdOwogZG91 YmxlIFZJbml0UHJlRmlsbFlbOF07CiBkb3VibGUgVkluaXRQcmVGaWxsQ1s4XTsKIHVuc2lnbmVk IGludCBNYXhOdW1Td2F0aFlbOF07CiB1bnNpZ25lZCBpbnQgTWF4TnVtU3dhdGhDWzhdOwogdW5z aWduZWQgaW50IFZTdGFydHVwWzhdOwogZG91YmxlIERTVFlBZnRlclNjYWxlcls4XTsKIGRvdWJs ZSBEU1RYQWZ0ZXJTY2FsZXJbOF07CiBib29sIEFsbG93RFJBTUNsb2NrQ2hhbmdlRHVyaW5nVkJs YW5rWzhdOwogYm9vbCBBbGxvd0RSQU1TZWxmUmVmcmVzaER1cmluZ1ZCbGFua1s4XTsKIGRvdWJs ZSBWUmF0aW9QcmVmZXRjaFlbOF07CiBkb3VibGUgVlJhdGlvUHJlZmV0Y2hDWzhdOwogZG91Ymxl IERlc3RpbmF0aW9uTGluZXNGb3JQcmVmZXRjaFs4XTsKIGRvdWJsZSBEZXN0aW5hdGlvbkxpbmVz VG9SZXF1ZXN0Vk1JblZCbGFua1s4XTsKIGRvdWJsZSBEZXN0aW5hdGlvbkxpbmVzVG9SZXF1ZXN0 Um93SW5WQmxhbmtbOF07CiBkb3VibGUgTWluVFRVVkJsYW5rWzhdOwogZG91YmxlIEJ5dGVQZXJQ aXhlbERFVFlbOF07CiBkb3VibGUgQnl0ZVBlclBpeGVsREVUQ1s4XTsKIGRvdWJsZSBTd2F0aFdp ZHRoWVs4XTsKIGRvdWJsZSBTd2F0aFdpZHRoU2luZ2xlRFBQWVs4XTsKIGRvdWJsZSBDdXJzb3JS ZXF1ZXN0RGVsaXZlcnlUaW1lWzhdOwogZG91YmxlIEN1cnNvclJlcXVlc3REZWxpdmVyeVRpbWVQ cmVmZXRjaFs4XTsKIGRvdWJsZSBSZWFkQmFuZHdpZHRoUGxhbmVMdW1hWzhdOwogZG91YmxlIFJl YWRCYW5kd2lkdGhQbGFuZUNocm9tYVs4XTsKIGRvdWJsZSBEaXNwbGF5UGlwZUxpbmVEZWxpdmVy eVRpbWVMdW1hUHJlZmV0Y2hbOF07CiBkb3VibGUgRGlzcGxheVBpcGVMaW5lRGVsaXZlcnlUaW1l Q2hyb21hUHJlZmV0Y2hbOF07CiBkb3VibGUgRGlzcGxheVBpcGVSZXF1ZXN0RGVsaXZlcnlUaW1l THVtYVByZWZldGNoWzhdOwogZG91YmxlIERpc3BsYXlQaXBlUmVxdWVzdERlbGl2ZXJ5VGltZUNo cm9tYVByZWZldGNoWzhdOwogZG91YmxlIFBpeGVsUFRFQnl0ZXNQZXJSb3dbOF07CiBkb3VibGUg UERFQW5kTWV0YVBURUJ5dGVzRnJhbWVbOF07CiBkb3VibGUgTWV0YVJvd0J5dGVbOF07CiBkb3Vi bGUgUHJlZmV0Y2hTb3VyY2VMaW5lc1lbOF07CiBkb3VibGUgUmVxdWlyZWRQcmVmZXRjaFBpeERh dGFCV0x1bWFbOF07CiBkb3VibGUgUmVxdWlyZWRQcmVmZXRjaFBpeERhdGFCV0Nocm9tYVs4XTsK IGRvdWJsZSBQcmVmZXRjaFNvdXJjZUxpbmVzQ1s4XTsKIGRvdWJsZSBQU0NMX1RIUk9VR0hQVVRf TFVNQVs4XTsKIGRvdWJsZSBQU0NMX1RIUk9VR0hQVVRfQ0hST01BWzhdOwogZG91YmxlIERTQ0NM S19jYWxjdWxhdGVkWzhdOwogdW5zaWduZWQgaW50IERTQ0RlbGF5WzhdOwogdW5zaWduZWQgaW50 IE1heFZTdGFydHVwTGluZXNbOF07CiBkb3VibGUgRFBQQ0xLVXNpbmdTaW5nbGVEUFBbOF07CiBk b3VibGUgRFBQQ0xLWzhdOwogdW5zaWduZWQgaW50IERDQ1lNYXhVbmNvbXByZXNzZWRCbG9ja1s4 XTsKIHVuc2lnbmVkIGludCBEQ0NZTWF4Q29tcHJlc3NlZEJsb2NrWzhdOwogdW5zaWduZWQgaW50 IERDQ1lJbmRlcGVuZGVudDY0Qnl0ZUJsb2NrWzhdOwogZG91YmxlIE1heGltdW1EQ0NDb21wcmVz c2lvbllTdXJmYWNlWzhdOwogdW5zaWduZWQgaW50IEJsb2NrSGVpZ2h0MjU2Qnl0ZXNZWzhdOwog dW5zaWduZWQgaW50IEJsb2NrSGVpZ2h0MjU2Qnl0ZXNDWzhdOwogdW5zaWduZWQgaW50IEJsb2Nr V2lkdGgyNTZCeXRlc1lbOF07CiB1bnNpZ25lZCBpbnQgQmxvY2tXaWR0aDI1NkJ5dGVzQ1s4XTsK IGRvdWJsZSBYRkNTbGF2ZVZVcGRhdGVPZmZzZXRbOF07CiBkb3VibGUgWEZDU2xhdmVWdXBkYXRl V2lkdGhbOF07CiBkb3VibGUgWEZDU2xhdmVWUmVhZHlPZmZzZXRbOF07CiBkb3VibGUgWEZDVHJh bnNmZXJEZWxheVs4XTsKIGRvdWJsZSBYRkNQcmVjaGFyZ2VEZWxheVs4XTsKIGRvdWJsZSBYRkNS ZW1vdGVTdXJmYWNlRmxpcExhdGVuY3lbOF07CiBkb3VibGUgWEZDUHJlZmV0Y2hNYXJnaW5bOF07 CiB1bnNpZ25lZCBpbnQgZHB0ZV9yb3dfd2lkdGhfbHVtYV91Yls4XTsKIHVuc2lnbmVkIGludCBk cHRlX3Jvd193aWR0aF9jaHJvbWFfdWJbOF07CiBkb3VibGUgRnVsbERFVEJ1ZmZlcmluZ1RpbWVZ WzhdOwogZG91YmxlIEZ1bGxERVRCdWZmZXJpbmdUaW1lQ1s4XTsKIGRvdWJsZSBEU1RfWV9QRVJf UFRFX1JPV19OT01fTFs4XTsKIGRvdWJsZSBEU1RfWV9QRVJfUFRFX1JPV19OT01fQ1s4XTsKIGRv dWJsZSBEU1RfWV9QRVJfTUVUQV9ST1dfTk9NX0xbOF07CiBkb3VibGUgVGltZVBlck1ldGFDaHVu a05vbWluYWxbOF07CiBkb3VibGUgVGltZVBlck1ldGFDaHVua1ZCbGFua1s4XTsKIGRvdWJsZSBU aW1lUGVyTWV0YUNodW5rRmxpcFs4XTsKIHVuc2lnbmVkIGludCBzd2F0aF93aWR0aF9sdW1hX3Vi WzhdOwogdW5zaWduZWQgaW50IHN3YXRoX3dpZHRoX2Nocm9tYV91Yls4XTsKIHVuc2lnbmVkIGlu dCBQaXhlbFBURVJlcVdpZHRoWVs4XTsKIHVuc2lnbmVkIGludCBQaXhlbFBURVJlcUhlaWdodFlb OF07CiB1bnNpZ25lZCBpbnQgUFRFUmVxdWVzdFNpemVZWzhdOwogdW5zaWduZWQgaW50IFBpeGVs UFRFUmVxV2lkdGhDWzhdOwogdW5zaWduZWQgaW50IFBpeGVsUFRFUmVxSGVpZ2h0Q1s4XTsKIHVu c2lnbmVkIGludCBQVEVSZXF1ZXN0U2l6ZUNbOF07CiBkb3VibGUgdGltZV9wZXJfcHRlX2dyb3Vw X25vbV9sdW1hWzhdOwogZG91YmxlIHRpbWVfcGVyX3B0ZV9ncm91cF9ub21fY2hyb21hWzhdOwog ZG91YmxlIHRpbWVfcGVyX3B0ZV9ncm91cF92YmxhbmtfbHVtYVs4XTsKIGRvdWJsZSB0aW1lX3Bl cl9wdGVfZ3JvdXBfdmJsYW5rX2Nocm9tYVs4XTsKIGRvdWJsZSB0aW1lX3Blcl9wdGVfZ3JvdXBf ZmxpcF9sdW1hWzhdOwogZG91YmxlIHRpbWVfcGVyX3B0ZV9ncm91cF9mbGlwX2Nocm9tYVs4XTsK IGRvdWJsZSBUaW1lUGVyVk1Hcm91cFZCbGFua1s4XTsKIGRvdWJsZSBUaW1lUGVyVk1Hcm91cEZs aXBbOF07CiBkb3VibGUgVGltZVBlclZNUmVxdWVzdFZCbGFua1s4XTsKIGRvdWJsZSBUaW1lUGVy Vk1SZXF1ZXN0RmxpcFs4XTsKIHVuc2lnbmVkIGludCBkcGRlMF9ieXRlc19wZXJfZnJhbWVfdWJf bFs4XTsKIHVuc2lnbmVkIGludCBtZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVfdWJfbFs4XTsKIHVu c2lnbmVkIGludCBkcGRlMF9ieXRlc19wZXJfZnJhbWVfdWJfY1s4XTsKIHVuc2lnbmVkIGludCBt ZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVfdWJfY1s4XTsKIGRvdWJsZSBMaW5lc1RvRmluaXNoU3dh dGhUcmFuc2ZlclN0dXR0ZXJDcml0aWNhbFBsYW5lOwogdW5zaWduZWQgaW50IEJ5dGVQZXJQaXhl bFlDcml0aWNhbFBsYW5lOwogZG91YmxlIFN3YXRoV2lkdGhZQ3JpdGljYWxQbGFuZTsKIGRvdWJs ZSBMaW5lc0luREVUWVs4XTsKIGRvdWJsZSBMaW5lc0luREVUWVJvdW5kZWREb3duVG9Td2F0aFs4 XTsKCiBkb3VibGUgU3dhdGhXaWR0aFNpbmdsZURQUENbOF07CiBkb3VibGUgU3dhdGhXaWR0aENb OF07CiB1bnNpZ25lZCBpbnQgQnl0ZVBlclBpeGVsWVs4XTsKIHVuc2lnbmVkIGludCBCeXRlUGVy UGl4ZWxDWzhdOwogdW5zaWduZWQgaW50IGR1bW15aW50ZWdlcjE7CiB1bnNpZ25lZCBpbnQgZHVt bXlpbnRlZ2VyMjsKIGRvdWJsZSBGaW5hbERSQU1DbG9ja0NoYW5nZUxhdGVuY3k7CiBkb3VibGUg VGRtZGxfdm1bOF07CiBkb3VibGUgVGRtZGxbOF07CiB1bnNpZ25lZCBpbnQgVGhpc1ZTdGFydHVw OwogYm9vbCBXcml0ZWJhY2tBbGxvd0RSQU1DbG9ja0NoYW5nZUVuZFBvc2l0aW9uWzhdOwogZG91 YmxlIERTVF9ZX1BFUl9NRVRBX1JPV19OT01fQ1s4XTsKIGRvdWJsZSBUaW1lUGVyQ2hyb21hTWV0 YUNodW5rTm9taW5hbFs4XTsKIGRvdWJsZSBUaW1lUGVyQ2hyb21hTWV0YUNodW5rVkJsYW5rWzhd OwogZG91YmxlIFRpbWVQZXJDaHJvbWFNZXRhQ2h1bmtGbGlwWzhdOwogdW5zaWduZWQgaW50IERD Q0NNYXhVbmNvbXByZXNzZWRCbG9ja1s4XTsKIHVuc2lnbmVkIGludCBEQ0NDTWF4Q29tcHJlc3Nl ZEJsb2NrWzhdOwogdW5zaWduZWQgaW50IERDQ0NJbmRlcGVuZGVudDY0Qnl0ZUJsb2NrWzhdOwog ZG91YmxlIFZTdGFydHVwTWFyZ2luOwogYm9vbCBOb3RFbm91Z2hUaW1lRm9yRHluYW1pY01ldGFk YXRhOwoKCiB1bnNpZ25lZCBpbnQgTWF4aW11bU1heFZTdGFydHVwTGluZXM7CiBkb3VibGUgRmFi cmljQW5kRFJBTUJhbmR3aWR0aDsKIGRvdWJsZSBMaW5lc0luREVUTHVtYTsKIGRvdWJsZSBMaW5l c0luREVUQ2hyb21hOwogdW5zaWduZWQgaW50IEltbWVkaWF0ZUZsaXBCeXRlc1s4XTsKIHVuc2ln bmVkIGludCBMaW5lc0luREVUQ1s4XTsKIHVuc2lnbmVkIGludCBMaW5lc0luREVUQ1JvdW5kZWRE b3duVG9Td2F0aFs4XTsKIGRvdWJsZSBVcmdlbnRMYXRlbmN5U3VwcG9ydFVzUGVyU3RhdGVbNyAr IDFdWzJdWzhdOwogZG91YmxlIFVyZ2VudExhdGVuY3lTdXBwb3J0VXNbOF07CiBkb3VibGUgRmFi cmljQW5kRFJBTUJhbmR3aWR0aFBlclN0YXRlWzcgKyAxXTsKIGJvb2wgVXJnZW50TGF0ZW5jeVN1 cHBvcnRbNyArIDFdWzJdOwogdW5zaWduZWQgaW50IFN3YXRoV2lkdGhZUGVyU3RhdGVbNyArIDFd WzJdWzhdOwogdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0WVBlclN0YXRlWzcgKyAxXVsyXVs4XTsK IGRvdWJsZSBxdWFsX3Jvd19id1s4XTsKIGRvdWJsZSBwcmVmZXRjaF9yb3dfYndbOF07CiBkb3Vi bGUgcHJlZmV0Y2hfdm1fYndbOF07CgogZG91YmxlIFBURUdyb3VwU2l6ZTsKIHVuc2lnbmVkIGlu dCBQREVQcm9jZXNzaW5nQnVmSW42NEtCUmVxczsKCiBkb3VibGUgTWF4VG90YWxWQWN0aXZlUkRC YW5kd2lkdGg7CiBib29sIERvVXJnZW50TGF0ZW5jeUFkanVzdG1lbnQ7CiBkb3VibGUgVXJnZW50 TGF0ZW5jeUFkanVzdG1lbnRGYWJyaWNDbG9ja0NvbXBvbmVudDsKIGRvdWJsZSBVcmdlbnRMYXRl bmN5QWRqdXN0bWVudEZhYnJpY0Nsb2NrUmVmZXJlbmNlOwogZG91YmxlIE1pblVyZ2VudExhdGVu Y3lTdXBwb3J0VXM7CiBkb3VibGUgTWluRnVsbERFVEJ1ZmZlcmluZ1RpbWU7CiBkb3VibGUgQXZl cmFnZVJlYWRCYW5kd2lkdGhHQnl0ZVBlclNlY29uZDsKIGJvb2wgRmlyc3RNYWluUGxhbmU7Cgog dW5zaWduZWQgaW50IFZpZXdwb3J0V2lkdGhDaHJvbWFbOF07CiB1bnNpZ25lZCBpbnQgVmlld3Bv cnRIZWlnaHRDaHJvbWFbOF07CiBkb3VibGUgSFJhdGlvQ2hyb21hWzhdOwogZG91YmxlIFZSYXRp b0Nocm9tYVs4XTsKIGludCBXcml0ZWJhY2tTb3VyY2VXaWR0aFs4XTsKCiBib29sIE1vZGVJc1N1 cHBvcnRlZDsKIGJvb2wgT0RNQ29tYmluZTRUbzFTdXBwb3J0ZWQ7CgogdW5zaWduZWQgaW50IFN1 cmZhY2VXaWR0aFlbOF07CiB1bnNpZ25lZCBpbnQgU3VyZmFjZVdpZHRoQ1s4XTsKIHVuc2lnbmVk IGludCBTdXJmYWNlSGVpZ2h0WVs4XTsKIHVuc2lnbmVkIGludCBTdXJmYWNlSGVpZ2h0Q1s4XTsK IHVuc2lnbmVkIGludCBXcml0ZWJhY2tIVGFwc1s4XTsKIHVuc2lnbmVkIGludCBXcml0ZWJhY2tW VGFwc1s4XTsKIGJvb2wgRFNDRW5hYmxlWzhdOwoKIGRvdWJsZSBEUkFNQ2xvY2tDaGFuZ2VMYXRl bmN5T3ZlcnJpZGU7CgogZG91YmxlIEdQVVZNTWluUGFnZVNpemU7CiBkb3VibGUgSG9zdFZNTWlu UGFnZVNpemU7CgogYm9vbCBNUENDb21iaW5lRW5hYmxlWzhdOwogdW5zaWduZWQgaW50IEhvc3RW TU1heE5vbkNhY2hlZFBhZ2VUYWJsZUxldmVsczsKIGJvb2wgRHluYW1pY01ldGFkYXRhVk1FbmFi bGVkOwogZG91YmxlIFdyaXRlYmFja0ludGVyZmFjZUJ1ZmZlclNpemU7CiBkb3VibGUgV3JpdGVi YWNrTGluZUJ1ZmZlclNpemU7CgogZG91YmxlIERDQ1JhdGVMdW1hWzhdOwogZG91YmxlIERDQ1Jh dGVDaHJvbWFbOF07CgogZG91YmxlIFBIWUNMS0QxOFBlclN0YXRlWzcgKyAxXTsKIGludCBNaW5W b2x0YWdlTGV2ZWw7CiBpbnQgTWF4Vm9sdGFnZUxldmVsOwoKIGJvb2wgV3JpdGViYWNrU3VwcG9y dEludGVybGVhdmVBbmRVc2luZ1dob2xlQnVmZmVyRm9yQVNpbmdsZVN0cmVhbTsKIGJvb2wgTnVt YmVyT2ZIRE1JRlJMU3VwcG9ydDsKIHVuc2lnbmVkIGludCBNYXhOdW1IRE1JRlJMT3V0cHV0czsK IGludCBBdWRpb1NhbXBsZVJhdGVbOF07CiBpbnQgQXVkaW9TYW1wbGVMYXlvdXRbOF07CgogaW50 IFBlcmNlbnRNYXJnaW5PdmVyTWluaW11bVJlcXVpcmVkRENGQ0xLOwogYm9vbCBEeW5hbWljTWV0 YWRhdGFTdXBwb3J0ZWRbNyArIDFdWzJdOwogZW51bSBpbW1lZGlhdGVfZmxpcF9yZXF1aXJlbWVu dCBJbW1lZGlhdGVGbGlwUmVxdWlyZW1lbnQ7CiBkb3VibGUgREVUQnVmZmVyU2l6ZVlUaGlzU3Rh dGVbOF07CiBkb3VibGUgREVUQnVmZmVyU2l6ZUNUaGlzU3RhdGVbOF07CiBib29sIE5vVXJnZW50 TGF0ZW5jeUhpZGluZ1s4XTsKIGJvb2wgTm9VcmdlbnRMYXRlbmN5SGlkaW5nUHJlWzhdOwogaW50 IHN3YXRoX3dpZHRoX2x1bWFfdWJfdGhpc19zdGF0ZVs4XTsKIGludCBzd2F0aF93aWR0aF9jaHJv bWFfdWJfdGhpc19zdGF0ZVs4XTsKIGRvdWJsZSBVcmdMYXRlbmN5WzcgKyAxXTsKIGRvdWJsZSBW QWN0aXZlQ3Vyc29yQmFuZHdpZHRoWzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBWQWN0aXZlUGl4ZWxC YW5kd2lkdGhbNyArIDFdWzJdWzhdOwogYm9vbCBOb1RpbWVGb3JQcmVmZXRjaFs3ICsgMV1bMl1b OF07CiBib29sIE5vVGltZUZvckR5bmFtaWNNZXRhZGF0YVs3ICsgMV1bMl1bOF07CiBkb3VibGUg ZHB0ZV9yb3dfYmFuZHdpZHRoWzcgKyAxXVsyXVs4XTsKIGRvdWJsZSBtZXRhX3Jvd19iYW5kd2lk dGhbNyArIDFdWzJdWzhdOwogZG91YmxlIERFVEJ1ZmZlclNpemVZQWxsU3RhdGVzWzcgKyAxXVsy XVs4XTsKIGRvdWJsZSBERVRCdWZmZXJTaXplQ0FsbFN0YXRlc1s3ICsgMV1bMl1bOF07CiBpbnQg c3dhdGhfd2lkdGhfbHVtYV91Yl9hbGxfc3RhdGVzWzcgKyAxXVsyXVs4XTsKIGludCBzd2F0aF93 aWR0aF9jaHJvbWFfdWJfYWxsX3N0YXRlc1s3ICsgMV1bMl1bOF07CiBib29sIE5vdFVyZ2VudExh dGVuY3lIaWRpbmdbNyArIDFdWzJdOwogdW5zaWduZWQgaW50IFN3YXRoSGVpZ2h0WUFsbFN0YXRl c1s3ICsgMV1bMl1bOF07CiB1bnNpZ25lZCBpbnQgU3dhdGhIZWlnaHRDQWxsU3RhdGVzWzcgKyAx XVsyXVs4XTsKIHVuc2lnbmVkIGludCBTd2F0aFdpZHRoWUFsbFN0YXRlc1s3ICsgMV1bMl1bOF07 CiB1bnNpZ25lZCBpbnQgU3dhdGhXaWR0aENBbGxTdGF0ZXNbNyArIDFdWzJdWzhdOwogZG91Ymxl IFRvdGFsRFBURVJvd0JhbmR3aWR0aFs3ICsgMV1bMl07CiBkb3VibGUgVG90YWxNZXRhUm93QmFu ZHdpZHRoWzcgKyAxXVsyXTsKIGRvdWJsZSBUb3RhbFZBY3RpdmVDdXJzb3JCYW5kd2lkdGhbNyAr IDFdWzJdOwogZG91YmxlIFRvdGFsVkFjdGl2ZVBpeGVsQmFuZHdpZHRoWzcgKyAxXVsyXTsKIGJv b2wgVXNlTWluaW11bVJlcXVpcmVkRENGQ0xLOwogZG91YmxlIFdyaXRlYmFja0RlbGF5VGltZVs4 XTsKIHVuc2lnbmVkIGludCBEQ0NZSW5kZXBlbmRlbnRCbG9ja1s4XTsKIHVuc2lnbmVkIGludCBE Q0NDSW5kZXBlbmRlbnRCbG9ja1s4XTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxNTsKIHVu c2lnbmVkIGludCBkdW1teWludGVnZXIxNjsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxNzsK IHVuc2lnbmVkIGludCBkdW1teWludGVnZXIxODsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIx OTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyMDsKIHVuc2lnbmVkIGludCBkdW1teWludGVn ZXIyMTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyMjsKIHVuc2lnbmVkIGludCBkdW1teWlu dGVnZXIyMzsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyNDsKIHVuc2lnbmVkIGludCBkdW1t eWludGVnZXIyNTsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyNjsKIHVuc2lnbmVkIGludCBk dW1teWludGVnZXIyNzsKIHVuc2lnbmVkIGludCBkdW1teWludGVnZXIyODsKIHVuc2lnbmVkIGlu dCBkdW1teWludGVnZXIyOTsKIGJvb2wgZHVtbXlzdHJpbmdbOF07CiBkb3VibGUgQlBQOwogZW51 bSBvZG1fY29tYmluZV9wb2xpY3kgT0RNQ29tYmluZVBvbGljeTsKfTsKCmJvb2wgQ2FsY3VsYXRl TWluQW5kTWF4UHJlZmV0Y2hNb2RlKAogIGVudW0gc2VsZl9yZWZyZXNoX2FmZmluaXR5IEFsbG93 RFJBTVNlbGZSZWZyZXNoT3JEUkFNQ2xvY2tDaGFuZ2VJblZibGFuaywKICB1bnNpZ25lZCBpbnQg Kk1pblByZWZldGNoTW9kZSwKICB1bnNpZ25lZCBpbnQgKk1heFByZWZldGNoTW9kZSk7Cgpkb3Vi bGUgQ2FsY3VsYXRlV3JpdGVCYWNrRElTUENMSygKICBlbnVtIHNvdXJjZV9mb3JtYXRfY2xhc3Mg V3JpdGViYWNrUGl4ZWxGb3JtYXQsCiAgZG91YmxlIFBpeGVsQ2xvY2ssCiAgZG91YmxlIFdyaXRl YmFja0hSYXRpbywKICBkb3VibGUgV3JpdGViYWNrVlJhdGlvLAogIHVuc2lnbmVkIGludCBXcml0 ZWJhY2tMdW1hSFRhcHMsCiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0x1bWFWVGFwcywKICB1bnNp Z25lZCBpbnQgV3JpdGViYWNrQ2hyb21hSFRhcHMsCiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0No cm9tYVZUYXBzLAogIGRvdWJsZSBXcml0ZWJhY2tEZXN0aW5hdGlvbldpZHRoLAogIHVuc2lnbmVk IGludCBIVG90YWwsCiAgdW5zaWduZWQgaW50IFdyaXRlYmFja0Nocm9tYUxpbmVCdWZmZXJXaWR0 aCk7CiMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbWwv ZGlzcGxheV9tb2RlX2xpYi5oIiAyCgplbnVtIGRtbF9wcm9qZWN0IHsKIERNTF9QUk9KRUNUX1VO REVGSU5FRCwKIERNTF9QUk9KRUNUX1JBVkVOMSwKIERNTF9QUk9KRUNUX05BVkkxMCwKIERNTF9Q Uk9KRUNUX05BVkkxMHYyLAogRE1MX1BST0pFQ1RfRENOMjEsCn07CgpzdHJ1Y3QgZGlzcGxheV9t b2RlX2xpYjsKCnN0cnVjdCBkbWxfZnVuY3Mgewogdm9pZCAoKnJxX2RsZ19nZXRfZGxnX3JlZyko CiAgIHN0cnVjdCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKICAgZGlzcGxheV9kbGdfcmVn c19zdCAqZGxnX3JlZ3MsCiAgIGRpc3BsYXlfdHR1X3JlZ3Nfc3QgKnR0dV9yZWdzLAogICBkaXNw bGF5X2UyZV9waXBlX3BhcmFtc19zdCAqZTJlX3BpcGVfcGFyYW0sCiAgIGNvbnN0IHVuc2lnbmVk IGludCBudW1fcGlwZXMsCiAgIGNvbnN0IHVuc2lnbmVkIGludCBwaXBlX2lkeCwKICAgY29uc3Qg Ym9vbCBjc3RhdGVfZW4sCiAgIGNvbnN0IGJvb2wgcHN0YXRlX2VuLAogICBjb25zdCBib29sIHZt X2VuLAogICBjb25zdCBib29sIGlnbm9yZV92aWV3cG9ydF9wb3MsCiAgIGNvbnN0IGJvb2wgaW1t ZWRpYXRlX2ZsaXBfc3VwcG9ydCk7CiB2b2lkICgqcnFfZGxnX2dldF9ycV9yZWcpKAogIHN0cnVj dCBkaXNwbGF5X21vZGVfbGliICptb2RlX2xpYiwKICBkaXNwbGF5X3JxX3JlZ3Nfc3QgKnJxX3Jl Z3MsCiAgY29uc3QgZGlzcGxheV9waXBlX3BhcmFtc19zdCBwaXBlX3BhcmFtKTsKIHZvaWQgKCpy ZWNhbGN1bGF0ZSkoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliKTsKIHZvaWQgKCp2 YWxpZGF0ZSkoc3RydWN0IGRpc3BsYXlfbW9kZV9saWIgKm1vZGVfbGliKTsKfTsKCnN0cnVjdCBk aXNwbGF5X21vZGVfbGliIHsKIHN0cnVjdCBfdmNzX2RwaV9pcF9wYXJhbXNfc3QgaXA7CiBzdHJ1 Y3QgX3Zjc19kcGlfc29jX2JvdW5kaW5nX2JveF9zdCBzb2M7CiBlbnVtIGRtbF9wcm9qZWN0IHBy b2plY3Q7CiBzdHJ1Y3QgdmJhX3ZhcnNfc3QgdmJhOwogc3RydWN0IGRhbF9sb2dnZXIgKmxvZ2dl cjsKIHN0cnVjdCBkbWxfZnVuY3MgZnVuY3M7Cn07Cgp2b2lkIGRtbF9pbml0X2luc3RhbmNlKHN0 cnVjdCBkaXNwbGF5X21vZGVfbGliICpsaWIsCiAgY29uc3Qgc3RydWN0IF92Y3NfZHBpX3NvY19i b3VuZGluZ19ib3hfc3QgKnNvY19iYiwKICBjb25zdCBzdHJ1Y3QgX3Zjc19kcGlfaXBfcGFyYW1z X3N0ICppcF9wYXJhbXMsCiAgZW51bSBkbWxfcHJvamVjdCBwcm9qZWN0KTsKCmNvbnN0IGNoYXIg KmRtbF9nZXRfc3RhdHVzX21lc3NhZ2UoZW51bSBkbV92YWxpZGF0aW9uX3N0YXR1cyBzdGF0dXMp OwojIDQxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIg MgojIDUyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIK c3RydWN0IGRjX3ZlcnNpb25zIHsKIGNvbnN0IGNoYXIgKmRjX3ZlcjsKIHN0cnVjdCBkbWN1X3Zl cnNpb24gZG1jdV92ZXJzaW9uOwp9OwoKZW51bSBkcF9wcm90b2NvbF92ZXJzaW9uIHsKIERQX1ZF UlNJT05fMV80LAp9OwoKZW51bSBkY19wbGFuZV90eXBlIHsKIERDX1BMQU5FX1RZUEVfSU5WQUxJ RCwKIERDX1BMQU5FX1RZUEVfRENFX1JHQiwKIERDX1BMQU5FX1RZUEVfRENFX1VOREVSTEFZLAog RENfUExBTkVfVFlQRV9EQ05fVU5JVkVSU0FMLAp9OwoKc3RydWN0IGRjX3BsYW5lX2NhcCB7CiBl bnVtIGRjX3BsYW5lX3R5cGUgdHlwZTsKIHVpbnQzMl90IGJsZW5kc193aXRoX2Fib3ZlIDogMTsK IHVpbnQzMl90IGJsZW5kc193aXRoX2JlbG93IDogMTsKIHVpbnQzMl90IHBlcl9waXhlbF9hbHBo YSA6IDE7CiBzdHJ1Y3QgewogIHVpbnQzMl90IGFyZ2I4ODg4IDogMTsKICB1aW50MzJfdCBudjEy IDogMTsKICB1aW50MzJfdCBmcDE2IDogMTsKICB1aW50MzJfdCBwMDEwIDogMTsKICB1aW50MzJf dCBheXV2IDogMTsKIH0gcGl4ZWxfZm9ybWF0X3N1cHBvcnQ7CgoKCiBzdHJ1Y3QgewogIHVpbnQz Ml90IGFyZ2I4ODg4OwogIHVpbnQzMl90IG52MTI7CiAgdWludDMyX3QgZnAxNjsKIH0gbWF4X3Vw c2NhbGVfZmFjdG9yOwoKCgogc3RydWN0IHsKICB1aW50MzJfdCBhcmdiODg4ODsKICB1aW50MzJf dCBudjEyOwogIHVpbnQzMl90IGZwMTY7CiB9IG1heF9kb3duc2NhbGVfZmFjdG9yOwp9OwoKc3Ry dWN0IGRjX2NhcHMgewogdWludDMyX3QgbWF4X3N0cmVhbXM7CiB1aW50MzJfdCBtYXhfbGlua3M7 CiB1aW50MzJfdCBtYXhfYXVkaW9zOwogdWludDMyX3QgbWF4X3NsYXZlX3BsYW5lczsKIHVpbnQz Ml90IG1heF9wbGFuZXM7CiB1aW50MzJfdCBtYXhfZG93bnNjYWxlX3JhdGlvOwogdWludDMyX3Qg aTJjX3NwZWVkX2luX2toejsKIHVpbnQzMl90IGRtZGF0YV9hbGxvY19zaXplOwogdW5zaWduZWQg aW50IG1heF9jdXJzb3Jfc2l6ZTsKIHVuc2lnbmVkIGludCBtYXhfdmlkZW9fd2lkdGg7CiBpbnQg bGluZWFyX3BpdGNoX2FsaWdubWVudDsKIGJvb2wgZGNjX2NvbnN0X2NvbG9yOwogYm9vbCBkeW5h bWljX2F1ZGlvOwogYm9vbCBpc19hcHU7CiBib29sIGR1YWxfbGlua19kdmk7CiBib29sIHBvc3Rf YmxlbmRfY29sb3JfcHJvY2Vzc2luZzsKIGJvb2wgZm9yY2VfZHBfdHBzNF9mb3JfY3AyNTIwOwog Ym9vbCBkaXNhYmxlX2RwX2Nsa19zaGFyZTsKIGJvb2wgcHNwX3NldHVwX3BhbmVsX21vZGU7CiBi b29sIGV4dGVuZGVkX2F1eF90aW1lb3V0X3N1cHBvcnQ7CiBib29sIGRtY3ViX3N1cHBvcnQ7CiBi b29sIGh3XzNkX2x1dDsKIGVudW0gZHBfcHJvdG9jb2xfdmVyc2lvbiBtYXhfZHBfcHJvdG9jb2xf dmVyc2lvbjsKIHN0cnVjdCBkY19wbGFuZV9jYXAgcGxhbmVzWzZdOwp9OwoKc3RydWN0IGRjX2J1 Z193YSB7CiBib29sIG5vX2Nvbm5lY3RfcGh5X2NvbmZpZzsKIGJvb2wgZGVkY24yMF8zMDVfd2E7 CiBib29sIHNraXBfY2xvY2tfdXBkYXRlOwp9OwoKc3RydWN0IGRjX2RjY19zdXJmYWNlX3BhcmFt IHsKIHN0cnVjdCBkY19zaXplIHN1cmZhY2Vfc2l6ZTsKIGVudW0gc3VyZmFjZV9waXhlbF9mb3Jt YXQgZm9ybWF0OwogZW51bSBzd2l6emxlX21vZGVfdmFsdWVzIHN3aXp6bGVfbW9kZTsKIGVudW0g ZGNfc2Nhbl9kaXJlY3Rpb24gc2NhbjsKfTsKCnN0cnVjdCBkY19kY2Nfc2V0dGluZyB7CiB1bnNp Z25lZCBpbnQgbWF4X2NvbXByZXNzZWRfYmxrX3NpemU7CiB1bnNpZ25lZCBpbnQgbWF4X3VuY29t cHJlc3NlZF9ibGtfc2l6ZTsKIGJvb2wgaW5kZXBlbmRlbnRfNjRiX2Jsa3M7Cn07CgpzdHJ1Y3Qg ZGNfc3VyZmFjZV9kY2NfY2FwIHsKIHVuaW9uIHsKICBzdHJ1Y3QgewogICBzdHJ1Y3QgZGNfZGNj X3NldHRpbmcgcmdiOwogIH0gZ3JwaDsKCiAgc3RydWN0IHsKICAgc3RydWN0IGRjX2RjY19zZXR0 aW5nIGx1bWE7CiAgIHN0cnVjdCBkY19kY2Nfc2V0dGluZyBjaHJvbWE7CiAgfSB2aWRlbzsKIH07 CgogYm9vbCBjYXBhYmxlOwogYm9vbCBjb25zdF9jb2xvcl9zdXBwb3J0Owp9OwoKc3RydWN0IGRj X3N0YXRpY19zY3JlZW5fcGFyYW1zIHsKIHN0cnVjdCB7CiAgYm9vbCBmb3JjZV90cmlnZ2VyOwog IGJvb2wgY3Vyc29yX3VwZGF0ZTsKICBib29sIHN1cmZhY2VfdXBkYXRlOwogIGJvb2wgb3Zlcmxh eV91cGRhdGU7CiB9IHRyaWdnZXJzOwogdW5zaWduZWQgaW50IG51bV9mcmFtZXM7Cn07CiMgMTk3 ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIKZW51bSBz dXJmYWNlX3VwZGF0ZV90eXBlIHsKIFVQREFURV9UWVBFX0ZBU1QsCiBVUERBVEVfVFlQRV9NRUQs CiBVUERBVEVfVFlQRV9GVUxMLAp9OwoKCnN0cnVjdCBkYzsKc3RydWN0IGRjX3BsYW5lX3N0YXRl OwpzdHJ1Y3QgZGNfc3RhdGU7CgoKc3RydWN0IGRjX2NhcF9mdW5jcyB7CiBib29sICgqZ2V0X2Rj Y19jb21wcmVzc2lvbl9jYXApKGNvbnN0IHN0cnVjdCBkYyAqZGMsCiAgIGNvbnN0IHN0cnVjdCBk Y19kY2Nfc3VyZmFjZV9wYXJhbSAqaW5wdXQsCiAgIHN0cnVjdCBkY19zdXJmYWNlX2RjY19jYXAg Km91dHB1dCk7Cn07CgpzdHJ1Y3QgbGlua190cmFpbmluZ19zZXR0aW5nczsKCgoKc3RydWN0IGRj X2NvbmZpZyB7CiBib29sIGdwdV92bV9zdXBwb3J0OwogYm9vbCBkaXNhYmxlX2Rpc3BfcGxsX3No YXJpbmc7CiBib29sIGZiY19zdXBwb3J0OwogYm9vbCBvcHRpbWl6ZV9lZHBfbGlua19yYXRlOwog Ym9vbCBkaXNhYmxlX2ZyYWN0aW9uYWxfcHdtOwogYm9vbCBhbGxvd19zZWFtbGVzc19ib290X29w dGltaXphdGlvbjsKIGJvb2wgcG93ZXJfZG93bl9kaXNwbGF5X29uX2Jvb3Q7CiBib29sIGVkcF9u b3RfY29ubmVjdGVkOwogYm9vbCBmb3JjZV9lbnVtX2VkcDsKIGJvb2wgZm9yY2VkX2Nsb2NrczsK IGJvb2wgZGlzYWJsZV9leHRlbmRlZF90aW1lb3V0X3N1cHBvcnQ7CiBib29sIG11bHRpX21vbl9w cF9tY2xrX3N3aXRjaDsKfTsKCmVudW0gdmlzdWFsX2NvbmZpcm0gewogVklTVUFMX0NPTkZJUk1f RElTQUJMRSA9IDAsCiBWSVNVQUxfQ09ORklSTV9TVVJGQUNFID0gMSwKIFZJU1VBTF9DT05GSVJN X0hEUiA9IDIsCiBWSVNVQUxfQ09ORklSTV9NUENUUkVFID0gNCwKfTsKCmVudW0gZGNjX29wdGlv biB7CiBEQ0NfRU5BQkxFID0gMCwKIERDQ19ESVNBQkxFID0gMSwKIERDQ19IQUxGX1JFUV9ESVNB TEJFID0gMiwKfTsKCmVudW0gcGlwZV9zcGxpdF9wb2xpY3kgewogTVBDX1NQTElUX0RZTkFNSUMg PSAwLAogTVBDX1NQTElUX0FWT0lEID0gMSwKIE1QQ19TUExJVF9BVk9JRF9NVUxUX0RJU1AgPSAy LAp9OwoKZW51bSB3bV9yZXBvcnRfbW9kZSB7CiBXTV9SRVBPUlRfREVGQVVMVCA9IDAsCiBXTV9S RVBPUlRfT1ZFUlJJREUgPSAxLAp9OwplbnVtIGR0bV9wc3RhdGV7CiBkdG1fbGV2ZWxfcDAgPSAw LAogZHRtX2xldmVsX3AxLAogZHRtX2xldmVsX3AyLAogZHRtX2xldmVsX3AzLAogZHRtX2xldmVs X3A0LAp9OwoKZW51bSBkY25fcHdyX3N0YXRlIHsKIERDTl9QV1JfU1RBVEVfVU5LTk9XTiA9IC0x LAogRENOX1BXUl9TVEFURV9NSVNTSU9OX01PREUgPSAwLAogRENOX1BXUl9TVEFURV9MT1dfUE9X RVIgPSAzLAp9OwoKCgoKCnN0cnVjdCBkY19jbG9ja3MgewogaW50IGRpc3BjbGtfa2h6OwogaW50 IGRwcGNsa19raHo7CiBpbnQgZGNmY2xrX2toejsKIGludCBzb2NjbGtfa2h6OwogaW50IGRjZmNs a19kZWVwX3NsZWVwX2toejsKIGludCBmY2xrX2toejsKIGludCBwaHljbGtfa2h6OwogaW50IGRy YW1jbGtfa2h6OwogYm9vbCBwX3N0YXRlX2NoYW5nZV9zdXBwb3J0OwogZW51bSBkY25fcHdyX3N0 YXRlIHB3cl9zdGF0ZTsKCgoKCiBib29sIHByZXZfcF9zdGF0ZV9jaGFuZ2Vfc3VwcG9ydDsKIGVu dW0gZHRtX3BzdGF0ZSBkdG1fbGV2ZWw7CiBpbnQgbWF4X3N1cHBvcnRlZF9kcHBjbGtfa2h6Owog aW50IG1heF9zdXBwb3J0ZWRfZGlzcGNsa19raHo7CiBpbnQgYndfZHBwY2xrX2toejsKIGludCBi d19kaXNwY2xrX2toejsKfTsKCnN0cnVjdCBkY19id192YWxpZGF0aW9uX3Byb2ZpbGUgewogYm9v bCBlbmFibGU7CgogdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsX3RpY2tzOwogdW5zaWduZWQgbG9u ZyBsb25nIHZvbHRhZ2VfbGV2ZWxfdGlja3M7CiB1bnNpZ25lZCBsb25nIGxvbmcgd2F0ZXJtYXJr X3RpY2tzOwogdW5zaWduZWQgbG9uZyBsb25nIHJxX2RsZ190aWNrczsKCiB1bnNpZ25lZCBsb25n IGxvbmcgdG90YWxfY291bnQ7CiB1bnNpZ25lZCBsb25nIGxvbmcgc2tpcF9mYXN0X2NvdW50Owog dW5zaWduZWQgbG9uZyBsb25nIHNraXBfcGFzc19jb3VudDsKIHVuc2lnbmVkIGxvbmcgbG9uZyBz a2lwX2ZhaWxfY291bnQ7Cn07CiMgMzQ5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZGMuaCIKc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgewogZW51bSB2aXN1YWxf Y29uZmlybSB2aXN1YWxfY29uZmlybTsKIGJvb2wgc2FuaXR5X2NoZWNrczsKIGJvb2wgbWF4X2Rp c3BfY2xrOwogYm9vbCBzdXJmYWNlX3RyYWNlOwogYm9vbCB0aW1pbmdfdHJhY2U7CiBib29sIGNs b2NrX3RyYWNlOwogYm9vbCB2YWxpZGF0aW9uX3RyYWNlOwogYm9vbCBiYW5kd2lkdGhfY2FsY3Nf dHJhY2U7CiBpbnQgbWF4X2Rvd25zY2FsZV9zcmNfd2lkdGg7CgoKIGJvb2wgZGlzYWJsZV9zdHV0 dGVyOwogYm9vbCB1c2VfbWF4X2xiOwogZW51bSBkY2Nfb3B0aW9uIGRpc2FibGVfZGNjOwogZW51 bSBwaXBlX3NwbGl0X3BvbGljeSBwaXBlX3NwbGl0X3BvbGljeTsKIGJvb2wgZm9yY2Vfc2luZ2xl X2Rpc3BfcGlwZV9zcGxpdDsKIGJvb2wgdm9sdGFnZV9hbGlnbl9mY2xrOwoKIGJvb2wgZGlzYWJs ZV9kZnNfYnlwYXNzOwogYm9vbCBkaXNhYmxlX2RwcF9wb3dlcl9nYXRlOwogYm9vbCBkaXNhYmxl X2h1YnBfcG93ZXJfZ2F0ZTsKIGJvb2wgZGlzYWJsZV9kc2NfcG93ZXJfZ2F0ZTsKIGludCBkc2Nf bWluX3NsaWNlX2hlaWdodF9vdmVycmlkZTsKIGludCBkc2NfYnBwX2luY3JlbWVudF9kaXY7CiBi b29sIG5hdGl2ZTQyMl9zdXBwb3J0OwogYm9vbCBkaXNhYmxlX3BwbGliX3dtX3JhbmdlOwogZW51 bSB3bV9yZXBvcnRfbW9kZSBwcGxpYl93bV9yZXBvcnRfbW9kZTsKIHVuc2lnbmVkIGludCBtaW5f ZGlzcF9jbGtfa2h6OwogdW5zaWduZWQgaW50IG1pbl9kcHBfY2xrX2toejsKIGludCBzcl9leGl0 X3RpbWVfZHBtMF9uczsKIGludCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZV9kcG0wX25zOwogaW50 IHNyX2V4aXRfdGltZV9uczsKIGludCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZV9uczsKIGludCB1 cmdlbnRfbGF0ZW5jeV9uczsKIHVpbnQzMl90IHVuZGVyZmxvd19hc3NlcnRfZGVsYXlfdXM7CiBp bnQgcGVyY2VudF9vZl9pZGVhbF9kcmFtYnc7CiBpbnQgZHJhbV9jbG9ja19jaGFuZ2VfbGF0ZW5j eV9uczsKIGJvb2wgb3B0aW1pemVkX3dhdGVybWFyazsKIGludCBhbHdheXNfc2NhbGU7CiBib29s IGRpc2FibGVfcHBsaWJfY2xvY2tfcmVxdWVzdDsKIGJvb2wgZGlzYWJsZV9jbG9ja19nYXRlOwog Ym9vbCBkaXNhYmxlX2RtY3U7CiBib29sIGRpc2FibGVfcHNyOwogYm9vbCBmb3JjZV9hYm1fZW5h YmxlOwogYm9vbCBkaXNhYmxlX3N0ZXJlb19zdXBwb3J0OwogYm9vbCB2c3Jfc3VwcG9ydDsKIGJv b2wgcGVyZm9ybWFuY2VfdHJhY2U7CiBib29sIGF6X2VuZHBvaW50X211dGVfb25seTsKIGJvb2wg YWx3YXlzX3VzZV9yZWdhbW1hOwogYm9vbCBwMDEwX21wb19zdXBwb3J0OwogYm9vbCByZWNvdmVy eV9lbmFibGVkOwogYm9vbCBhdm9pZF92Ymlvc19leGVjX3RhYmxlOwogYm9vbCBzY2xfcmVzZXRf bGVuZ3RoMTA7CiBib29sIGhkbWkyMF9kaXNhYmxlOwogYm9vbCBza2lwX2RldGVjdGlvbl9saW5r X3RyYWluaW5nOwogYm9vbCByZW1vdmVfZGlzY29ubmVjdF9lZHA7CiB1bnNpZ25lZCBpbnQgZm9y Y2Vfb2RtX2NvbWJpbmU7CiB1bnNpZ25lZCBpbnQgZm9yY2VfZmNsa19raHo7CiBib29sIGRpc2Fi bGVfdHJpX2J1ZjsKIGJvb2wgZG11Yl9vZmZsb2FkX2VuYWJsZWQ7CiBib29sIGRtY3ViX2VtdWxh dGlvbjsKIGJvb2wgZG11Yl9jb21tYW5kX3RhYmxlOwogc3RydWN0IGRjX2J3X3ZhbGlkYXRpb25f cHJvZmlsZSBid192YWxfcHJvZmlsZTsKIGJvb2wgZGlzYWJsZV9mZWM7CiBib29sIGRpc2FibGVf NDhtaHpfcHdyZHduOwoKCgogdW5zaWduZWQgaW50IGZvcmNlX21pbl9kY2ZjbGtfbWh6OwogYm9v bCBkaXNhYmxlX3RpbWluZ19zeW5jOwogYm9vbCBjbV9pbl9ieXBhc3M7CiBpbnQgZm9yY2VfY2xv Y2tfbW9kZTsKCiBib29sIG52MTJfaWZsaXBfdm1fd2E7CiBib29sIGRpc2FibGVfZHJhbV9jbG9j a19jaGFuZ2VfdmFjdGl2ZV9zdXBwb3J0OwogYm9vbCB2YWxpZGF0ZV9kbWxfb3V0cHV0OwogYm9v bCBlbmFibGVfZG1jdWJfc3VyZmFjZV9mbGlwOwogYm9vbCB1c2JjX2NvbWJvX3BoeV9yZXNldF93 YTsKIGJvb2wgZGlzYWJsZV9kc2M7Cn07CgpzdHJ1Y3QgZGNfZGVidWdfZGF0YSB7CiB1aW50MzJf dCBsdEZhaWxDb3VudDsKIHVpbnQzMl90IGkyY0Vycm9yQ291bnQ7CiB1aW50MzJfdCBhdXhFcnJv ckNvdW50Owp9OwoKc3RydWN0IGRjX3BoeV9hZGRyX3NwYWNlX2NvbmZpZyB7CiBzdHJ1Y3Qgewog IHVpbnQ2NF90IHN0YXJ0X2FkZHI7CiAgdWludDY0X3QgZW5kX2FkZHI7CiAgdWludDY0X3QgZmJf dG9wOwogIHVpbnQ2NF90IGZiX29mZnNldDsKICB1aW50NjRfdCBmYl9iYXNlOwogIHVpbnQ2NF90 IGFncF90b3A7CiAgdWludDY0X3QgYWdwX2JvdDsKICB1aW50NjRfdCBhZ3BfYmFzZTsKIH0gc3lz dGVtX2FwZXJ0dXJlOwoKIHN0cnVjdCB7CiAgdWludDY0X3QgcGFnZV90YWJsZV9zdGFydF9hZGRy OwogIHVpbnQ2NF90IHBhZ2VfdGFibGVfZW5kX2FkZHI7CiAgdWludDY0X3QgcGFnZV90YWJsZV9i YXNlX2FkZHI7CiB9IGdhcnRfY29uZmlnOwoKIGJvb2wgdmFsaWQ7CiB1aW50NjRfdCBwYWdlX3Rh YmxlX2RlZmF1bHRfcGFnZV9hZGRyOwp9OwoKc3RydWN0IGRjX3ZpcnR1YWxfYWRkcl9zcGFjZV9j b25maWcgewogdWludDY0X3QgcGFnZV90YWJsZV9iYXNlX2FkZHI7CiB1aW50NjRfdCBwYWdlX3Rh YmxlX3N0YXJ0X2FkZHI7CiB1aW50NjRfdCBwYWdlX3RhYmxlX2VuZF9hZGRyOwogdWludDMyX3Qg cGFnZV90YWJsZV9ibG9ja19zaXplX2luX2J5dGVzOwogdWludDhfdCBwYWdlX3RhYmxlX2RlcHRo Owp9OwoKc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgewogaW50IHNyX2V4aXRfdGlt ZV9uczsKIGludCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZV9uczsKIGludCB1cmdlbnRfbGF0ZW5j eV9uczsKIGludCBwZXJjZW50X29mX2lkZWFsX2RyYW1idzsKIGludCBkcmFtX2Nsb2NrX2NoYW5n ZV9sYXRlbmN5X25zOwoKCgoKIGludCBtaW5fZGNmY2xrX21oejsKfTsKCnN0cnVjdCBkY19zdGF0 ZTsKc3RydWN0IHJlc291cmNlX3Bvb2w7CnN0cnVjdCBkY2VfaHdzZXE7CnN0cnVjdCBncHVfaW5m b19zb2NfYm91bmRpbmdfYm94X3YxXzA7CnN0cnVjdCBkYyB7CiBzdHJ1Y3QgZGNfdmVyc2lvbnMg dmVyc2lvbnM7CiBzdHJ1Y3QgZGNfY2FwcyBjYXBzOwogc3RydWN0IGRjX2NhcF9mdW5jcyBjYXBf ZnVuY3M7CiBzdHJ1Y3QgZGNfY29uZmlnIGNvbmZpZzsKIHN0cnVjdCBkY19kZWJ1Z19vcHRpb25z IGRlYnVnOwogc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgYmJfb3ZlcnJpZGVzOwog c3RydWN0IGRjX2J1Z193YSB3b3JrX2Fyb3VuZHM7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4Owog c3RydWN0IGRjX3BoeV9hZGRyX3NwYWNlX2NvbmZpZyB2bV9wYV9jb25maWc7CgogdWludDhfdCBs aW5rX2NvdW50Owogc3RydWN0IGRjX2xpbmsgKmxpbmtzWzYgKiAyXTsKCiBzdHJ1Y3QgZGNfc3Rh dGUgKmN1cnJlbnRfc3RhdGU7CiBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcmVzX3Bvb2w7Cgogc3Ry dWN0IGNsa19tZ3IgKmNsa19tZ3I7CgoKIHN0cnVjdCBkbV9wcF9jbG9ja19sZXZlbHMgc2Nsa19s dmxzOwoKCiBzdHJ1Y3QgYndfY2FsY3NfZGNlaXAgKmJ3X2RjZWlwOwogc3RydWN0IGJ3X2NhbGNz X3ZiaW9zICpid192YmlvczsKCiBzdHJ1Y3QgZGNuX3NvY19ib3VuZGluZ19ib3ggKmRjbl9zb2M7 CiBzdHJ1Y3QgZGNuX2lwX3BhcmFtcyAqZGNuX2lwOwogc3RydWN0IGRpc3BsYXlfbW9kZV9saWIg ZG1sOwoKCgogc3RydWN0IGh3X3NlcXVlbmNlcl9mdW5jcyBod3NzOwogc3RydWN0IGRjZV9od3Nl cSAqaHdzZXE7CgoKIGJvb2wgb3B0aW1pemVkX3JlcXVpcmVkOwoKCiBpbnQgb3B0aW1pemVfc2Vh bWxlc3NfYm9vdF9zdHJlYW1zOwoKCiBzdHJ1Y3QgY29tcHJlc3NvciAqZmJjX2NvbXByZXNzb3I7 Cgogc3RydWN0IGRjX2RlYnVnX2RhdGEgZGVidWdfZGF0YTsKCiBjb25zdCBjaGFyICpidWlsZF9p ZDsKIHN0cnVjdCB2bV9oZWxwZXIgKnZtX2hlbHBlcjsKIGNvbnN0IHN0cnVjdCBncHVfaW5mb19z b2NfYm91bmRpbmdfYm94X3YxXzAgKnNvY19ib3VuZGluZ19ib3g7Cn07CgplbnVtIGZyYW1lX2J1 ZmZlcl9tb2RlIHsKIEZSQU1FX0JVRkZFUl9NT0RFX0xPQ0FMX09OTFkgPSAwLAogRlJBTUVfQlVG RkVSX01PREVfWkZCX09OTFksCiBGUkFNRV9CVUZGRVJfTU9ERV9NSVhFRF9aRkJfQU5EX0xPQ0FM LAp9IDsKCnN0cnVjdCBkY2h1Yl9pbml0X2RhdGEgewogaW50NjRfdCB6ZmJfcGh5c19hZGRyX2Jh c2U7CiBpbnQ2NF90IHpmYl9tY19iYXNlX2FkZHI7CiB1aW50NjRfdCB6ZmJfc2l6ZV9pbl9ieXRl OwogZW51bSBmcmFtZV9idWZmZXJfbW9kZSBmYl9tb2RlOwogYm9vbCBkY2h1Yl9pbml0aWFsemll ZDsKIGJvb2wgZGNodWJfaW5mb192YWxpZDsKfTsKCnN0cnVjdCBkY19pbml0X2RhdGEgewogc3Ry dWN0IGh3X2FzaWNfaWQgYXNpY19pZDsKIHZvaWQgKmRyaXZlcjsKIHN0cnVjdCBjZ3NfZGV2aWNl ICpjZ3NfZGV2aWNlOwogc3RydWN0IGRjX2JvdW5kaW5nX2JveF9vdmVycmlkZXMgYmJfb3ZlcnJp ZGVzOwoKIGludCBudW1fdmlydHVhbF9saW5rczsKCgoKCiBzdHJ1Y3QgZGNfYmlvcyAqdmJpb3Nf b3ZlcnJpZGU7CiBlbnVtIGRjZV9lbnZpcm9ubWVudCBkY2VfZW52aXJvbm1lbnQ7Cgogc3RydWN0 IGRtdWJfb2ZmbG9hZF9mdW5jcyAqZG11Yl9pZjsKIHN0cnVjdCBkY19yZWdfaGVscGVyX3N0YXRl ICpkbXViX29mZmxvYWQ7Cgogc3RydWN0IGRjX2NvbmZpZyBmbGFnczsKIHVpbnQzMl90IGxvZ19t YXNrOwoKCgoKIGNvbnN0IHN0cnVjdCBncHVfaW5mb19zb2NfYm91bmRpbmdfYm94X3YxXzAgKnNv Y19ib3VuZGluZ19ib3g7Cn07CgpzdHJ1Y3QgZGNfY2FsbGJhY2tfaW5pdCB7CgoKCiB1aW50OF90 IHJlc2VydmVkOwoKfTsKCnN0cnVjdCBkYyAqZGNfY3JlYXRlKGNvbnN0IHN0cnVjdCBkY19pbml0 X2RhdGEgKmluaXRfcGFyYW1zKTsKdm9pZCBkY19oYXJkd2FyZV9pbml0KHN0cnVjdCBkYyAqZGMp OwoKaW50IGRjX2dldF92bWlkX3VzZV92ZWN0b3Ioc3RydWN0IGRjICpkYyk7CnZvaWQgZGNfc2V0 dXBfdm1fY29udGV4dChzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfdmlydHVhbF9hZGRyX3NwYWNl X2NvbmZpZyAqdmFfY29uZmlnLCBpbnQgdm1pZCk7CgppbnQgZGNfc2V0dXBfc3lzdGVtX2NvbnRl eHQoc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3BoeV9hZGRyX3NwYWNlX2NvbmZpZyAqcGFfY29u ZmlnKTsKdm9pZCBkY19pbml0X2NhbGxiYWNrcyhzdHJ1Y3QgZGMgKmRjLAogIGNvbnN0IHN0cnVj dCBkY19jYWxsYmFja19pbml0ICppbml0X3BhcmFtcyk7CnZvaWQgZGNfZGVpbml0X2NhbGxiYWNr cyhzdHJ1Y3QgZGMgKmRjKTsKdm9pZCBkY19kZXN0cm95KHN0cnVjdCBkYyAqKmRjKTsKCgoKCgpl bnVtIHsKIFRSQU5TRkVSX0ZVTkNfUE9JTlRTID0gMTAyNQp9OwoKc3RydWN0IGRjX2hkcl9zdGF0 aWNfbWV0YWRhdGEgewoKIHVuc2lnbmVkIGludCBjaHJvbWF0aWNpdHlfZ3JlZW5feDsKIHVuc2ln bmVkIGludCBjaHJvbWF0aWNpdHlfZ3JlZW5feTsKIHVuc2lnbmVkIGludCBjaHJvbWF0aWNpdHlf Ymx1ZV94OwogdW5zaWduZWQgaW50IGNocm9tYXRpY2l0eV9ibHVlX3k7CiB1bnNpZ25lZCBpbnQg Y2hyb21hdGljaXR5X3JlZF94OwogdW5zaWduZWQgaW50IGNocm9tYXRpY2l0eV9yZWRfeTsKIHVu c2lnbmVkIGludCBjaHJvbWF0aWNpdHlfd2hpdGVfcG9pbnRfeDsKIHVuc2lnbmVkIGludCBjaHJv bWF0aWNpdHlfd2hpdGVfcG9pbnRfeTsKCiB1aW50MzJfdCBtaW5fbHVtaW5hbmNlOwogdWludDMy X3QgbWF4X2x1bWluYW5jZTsKIHVpbnQzMl90IG1heGltdW1fY29udGVudF9saWdodF9sZXZlbDsK IHVpbnQzMl90IG1heGltdW1fZnJhbWVfYXZlcmFnZV9saWdodF9sZXZlbDsKfTsKCmVudW0gZGNf dHJhbnNmZXJfZnVuY190eXBlIHsKIFRGX1RZUEVfUFJFREVGSU5FRCwKIFRGX1RZUEVfRElTVFJJ QlVURURfUE9JTlRTLAogVEZfVFlQRV9CWVBBU1MsCiBURl9UWVBFX0hXUFdMCn07CgpzdHJ1Y3Qg ZGNfdHJhbnNmZXJfZnVuY19kaXN0cmlidXRlZF9wb2ludHMgewogc3RydWN0IGZpeGVkMzFfMzIg cmVkW1RSQU5TRkVSX0ZVTkNfUE9JTlRTXTsKIHN0cnVjdCBmaXhlZDMxXzMyIGdyZWVuW1RSQU5T RkVSX0ZVTkNfUE9JTlRTXTsKIHN0cnVjdCBmaXhlZDMxXzMyIGJsdWVbVFJBTlNGRVJfRlVOQ19Q T0lOVFNdOwoKIHVpbnQxNl90IGVuZF9leHBvbmVudDsKIHVpbnQxNl90IHhfcG9pbnRfYXRfeTFf cmVkOwogdWludDE2X3QgeF9wb2ludF9hdF95MV9ncmVlbjsKIHVpbnQxNl90IHhfcG9pbnRfYXRf eTFfYmx1ZTsKfTsKCmVudW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHsKIFRSQU5TRkVS X0ZVTkNUSU9OX1NSR0IsCiBUUkFOU0ZFUl9GVU5DVElPTl9CVDcwOSwKIFRSQU5TRkVSX0ZVTkNU SU9OX1BRLAogVFJBTlNGRVJfRlVOQ1RJT05fTElORUFSLAogVFJBTlNGRVJfRlVOQ1RJT05fVU5J VFksCiBUUkFOU0ZFUl9GVU5DVElPTl9ITEcsCiBUUkFOU0ZFUl9GVU5DVElPTl9ITEcxMiwKIFRS QU5TRkVSX0ZVTkNUSU9OX0dBTU1BMjIsCiBUUkFOU0ZFUl9GVU5DVElPTl9HQU1NQTI0LAogVFJB TlNGRVJfRlVOQ1RJT05fR0FNTUEyNgp9OwoKCnN0cnVjdCBkY190cmFuc2Zlcl9mdW5jIHsKIHN0 cnVjdCBrcmVmIHJlZmNvdW50OwogZW51bSBkY190cmFuc2Zlcl9mdW5jX3R5cGUgdHlwZTsKIGVu dW0gZGNfdHJhbnNmZXJfZnVuY19wcmVkZWZpbmVkIHRmOwoKIHVpbnQzMl90IHNkcl9yZWZfd2hp dGVfbGV2ZWw7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwogdW5pb24gewogIHN0cnVjdCBwd2xf cGFyYW1zIHB3bDsKICBzdHJ1Y3QgZGNfdHJhbnNmZXJfZnVuY19kaXN0cmlidXRlZF9wb2ludHMg dGZfcHRzOwogfTsKfTsKCgp1bmlvbiBkY18zZGx1dF9zdGF0ZSB7CiBzdHJ1Y3QgewogIHVpbnQz Ml90IGluaXRpYWxpemVkOjE7CiAgdWludDMyX3Qgcm11X2lkeF92YWxpZDoxOwogIHVpbnQzMl90 IHJtdV9tdXhfbnVtOjM7CiAgdWludDMyX3QgbXBjX3JtdTBfbXV4OjQ7CiAgdWludDMyX3QgbXBj X3JtdTFfbXV4OjQ7CiAgdWludDMyX3QgbXBjX3JtdTJfbXV4OjQ7CiAgdWludDMyX3QgcmVzZXJ2 ZWQ6MTU7CiB9IGJpdHM7CiB1aW50MzJfdCByYXc7Cn07CgoKc3RydWN0IGRjXzNkbHV0IHsKIHN0 cnVjdCBrcmVmIHJlZmNvdW50Owogc3RydWN0IHRldHJhaGVkcmFsX3BhcmFtcyBsdXRfM2Q7CiBz dHJ1Y3QgZml4ZWQzMV8zMiBoZHJfbXVsdGlwbGllcjsKIGJvb2wgaW5pdGlhbGl6ZWQ7CiB1bmlv biBkY18zZGx1dF9zdGF0ZSBzdGF0ZTsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7Cn07CgoKCgoK c3RydWN0IGRjX3BsYW5lX3N0YXR1cyB7CiBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyByZXF1ZXN0 ZWRfYWRkcmVzczsKIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIGN1cnJlbnRfYWRkcmVzczsKIGJv b2wgaXNfZmxpcF9wZW5kaW5nOwogYm9vbCBpc19yaWdodF9leWU7Cn07Cgp1bmlvbiBzdXJmYWNl X3VwZGF0ZV9mbGFncyB7Cgogc3RydWN0IHsKICB1aW50MzJfdCBhZGRyX3VwZGF0ZToxOwoKICB1 aW50MzJfdCBkY2NfY2hhbmdlOjE7CiAgdWludDMyX3QgY29sb3Jfc3BhY2VfY2hhbmdlOjE7CiAg dWludDMyX3QgaG9yaXpvbnRhbF9taXJyb3JfY2hhbmdlOjE7CiAgdWludDMyX3QgcGVyX3BpeGVs X2FscGhhX2NoYW5nZToxOwogIHVpbnQzMl90IGdsb2JhbF9hbHBoYV9jaGFuZ2U6MTsKICB1aW50 MzJfdCBoZHJfbXVsdDoxOwogIHVpbnQzMl90IHJvdGF0aW9uX2NoYW5nZToxOwogIHVpbnQzMl90 IHN3aXp6bGVfY2hhbmdlOjE7CiAgdWludDMyX3Qgc2NhbGluZ19jaGFuZ2U6MTsKICB1aW50MzJf dCBwb3NpdGlvbl9jaGFuZ2U6MTsKICB1aW50MzJfdCBpbl90cmFuc2Zlcl9mdW5jX2NoYW5nZTox OwogIHVpbnQzMl90IGlucHV0X2NzY19jaGFuZ2U6MTsKICB1aW50MzJfdCBjb2VmZl9yZWR1Y3Rp b25fY2hhbmdlOjE7CiAgdWludDMyX3Qgb3V0cHV0X3RmX2NoYW5nZToxOwogIHVpbnQzMl90IHBp eGVsX2Zvcm1hdF9jaGFuZ2U6MTsKICB1aW50MzJfdCBwbGFuZV9zaXplX2NoYW5nZToxOwoKCiAg dWludDMyX3QgbmV3X3BsYW5lOjE7CiAgdWludDMyX3QgYnBwX2NoYW5nZToxOwogIHVpbnQzMl90 IGdhbW1hX2NoYW5nZToxOwogIHVpbnQzMl90IGJhbmR3aWR0aF9jaGFuZ2U6MTsKICB1aW50MzJf dCBjbG9ja19jaGFuZ2U6MTsKICB1aW50MzJfdCBzdGVyZW9fZm9ybWF0X2NoYW5nZToxOwogIHVp bnQzMl90IGZ1bGxfdXBkYXRlOjE7CiB9IGJpdHM7CgogdWludDMyX3QgcmF3Owp9OwoKc3RydWN0 IGRjX3BsYW5lX3N0YXRlIHsKIHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzIGFkZHJlc3M7CiBzdHJ1 Y3QgZGNfcGxhbmVfZmxpcF90aW1lIHRpbWU7CiBib29sIHRyaXBsZWJ1ZmZlcl9mbGlwczsKIHN0 cnVjdCBzY2FsaW5nX3RhcHMgc2NhbGluZ19xdWFsaXR5Owogc3RydWN0IHJlY3Qgc3JjX3JlY3Q7 CiBzdHJ1Y3QgcmVjdCBkc3RfcmVjdDsKIHN0cnVjdCByZWN0IGNsaXBfcmVjdDsKCiBzdHJ1Y3Qg cGxhbmVfc2l6ZSBwbGFuZV9zaXplOwogdW5pb24gZGNfdGlsaW5nX2luZm8gdGlsaW5nX2luZm87 Cgogc3RydWN0IGRjX3BsYW5lX2RjY19wYXJhbSBkY2M7Cgogc3RydWN0IGRjX2dhbW1hICpnYW1t YV9jb3JyZWN0aW9uOwogc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMgKmluX3RyYW5zZmVyX2Z1bmM7 CiBzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUgKmJpYXNfYW5kX3NjYWxlOwogc3RydWN0IGRjX2Nz Y190cmFuc2Zvcm0gaW5wdXRfY3NjX2NvbG9yX21hdHJpeDsKIHN0cnVjdCBmaXhlZDMxXzMyIGNv ZWZmX3JlZHVjdGlvbl9mYWN0b3I7CiBzdHJ1Y3QgZml4ZWQzMV8zMiBoZHJfbXVsdDsKCgogc3Ry dWN0IGRjX2hkcl9zdGF0aWNfbWV0YWRhdGEgaGRyX3N0YXRpY19jdHg7CgogZW51bSBkY19jb2xv cl9zcGFjZSBjb2xvcl9zcGFjZTsKCiBzdHJ1Y3QgZGNfM2RsdXQgKmx1dDNkX2Z1bmM7CiBzdHJ1 Y3QgZGNfdHJhbnNmZXJfZnVuYyAqaW5fc2hhcGVyX2Z1bmM7CiBzdHJ1Y3QgZGNfdHJhbnNmZXJf ZnVuYyAqYmxlbmRfdGY7CgogZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQ7CiBlbnVt IGRjX3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwogZW51bSBwbGFuZV9zdGVyZW9fZm9ybWF0IHN0 ZXJlb19mb3JtYXQ7CgogYm9vbCBpc190aWxpbmdfcm90YXRlZDsKIGJvb2wgcGVyX3BpeGVsX2Fs cGhhOwogYm9vbCBnbG9iYWxfYWxwaGE7CiBpbnQgZ2xvYmFsX2FscGhhX3ZhbHVlOwogYm9vbCB2 aXNpYmxlOwogYm9vbCBmbGlwX2ltbWVkaWF0ZTsKIGJvb2wgaG9yaXpvbnRhbF9taXJyb3I7CiBp bnQgbGF5ZXJfaW5kZXg7CgogdW5pb24gc3VyZmFjZV91cGRhdGVfZmxhZ3MgdXBkYXRlX2ZsYWdz OwoKIHN0cnVjdCBkY19wbGFuZV9zdGF0dXMgc3RhdHVzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKCgogYm9vbCBmb3JjZV9mdWxsX3VwZGF0ZTsKCgogZW51bSBkY19pcnFfc291cmNlIGlycV9z b3VyY2U7CiBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKfTsKCnN0cnVjdCBkY19wbGFuZV9pbmZvIHsK IHN0cnVjdCBwbGFuZV9zaXplIHBsYW5lX3NpemU7CiB1bmlvbiBkY190aWxpbmdfaW5mbyB0aWxp bmdfaW5mbzsKIHN0cnVjdCBkY19wbGFuZV9kY2NfcGFyYW0gZGNjOwogZW51bSBzdXJmYWNlX3Bp eGVsX2Zvcm1hdCBmb3JtYXQ7CiBlbnVtIGRjX3JvdGF0aW9uX2FuZ2xlIHJvdGF0aW9uOwogZW51 bSBwbGFuZV9zdGVyZW9fZm9ybWF0IHN0ZXJlb19mb3JtYXQ7CiBlbnVtIGRjX2NvbG9yX3NwYWNl IGNvbG9yX3NwYWNlOwogYm9vbCBob3Jpem9udGFsX21pcnJvcjsKIGJvb2wgdmlzaWJsZTsKIGJv b2wgcGVyX3BpeGVsX2FscGhhOwogYm9vbCBnbG9iYWxfYWxwaGE7CiBpbnQgZ2xvYmFsX2FscGhh X3ZhbHVlOwogYm9vbCBpbnB1dF9jc2NfZW5hYmxlZDsKIGludCBsYXllcl9pbmRleDsKfTsKCnN0 cnVjdCBkY19zY2FsaW5nX2luZm8gewogc3RydWN0IHJlY3Qgc3JjX3JlY3Q7CiBzdHJ1Y3QgcmVj dCBkc3RfcmVjdDsKIHN0cnVjdCByZWN0IGNsaXBfcmVjdDsKIHN0cnVjdCBzY2FsaW5nX3RhcHMg c2NhbGluZ19xdWFsaXR5Owp9OwoKc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlIHsKIHN0cnVjdCBk Y19wbGFuZV9zdGF0ZSAqc3VyZmFjZTsKCgogY29uc3Qgc3RydWN0IGRjX2ZsaXBfYWRkcnMgKmZs aXBfYWRkcjsKIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9pbmZvICpwbGFuZV9pbmZvOwogY29uc3Qg c3RydWN0IGRjX3NjYWxpbmdfaW5mbyAqc2NhbGluZ19pbmZvOwogc3RydWN0IGZpeGVkMzFfMzIg aGRyX211bHQ7CgoKCiBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdhbW1hOwogY29uc3Qgc3RydWN0 IGRjX3RyYW5zZmVyX2Z1bmMgKmluX3RyYW5zZmVyX2Z1bmM7CgogY29uc3Qgc3RydWN0IGRjX2Nz Y190cmFuc2Zvcm0gKmlucHV0X2NzY19jb2xvcl9tYXRyaXg7CiBjb25zdCBzdHJ1Y3QgZml4ZWQz MV8zMiAqY29lZmZfcmVkdWN0aW9uX2ZhY3RvcjsKIGNvbnN0IHN0cnVjdCBkY190cmFuc2Zlcl9m dW5jICpmdW5jX3NoYXBlcjsKIGNvbnN0IHN0cnVjdCBkY18zZGx1dCAqbHV0M2RfZnVuYzsKIGNv bnN0IHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICpibGVuZF90ZjsKfTsKCgoKCnN0cnVjdCBkY19w bGFuZV9zdGF0ZSAqZGNfY3JlYXRlX3BsYW5lX3N0YXRlKHN0cnVjdCBkYyAqZGMpOwpjb25zdCBz dHJ1Y3QgZGNfcGxhbmVfc3RhdHVzICpkY19wbGFuZV9nZXRfc3RhdHVzKAogIGNvbnN0IHN0cnVj dCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpOwoKdm9pZCBkY19wbGFuZV9zdGF0ZV9yZXRh aW4oc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7CnZvaWQgZGNfcGxhbmVfc3Rh dGVfcmVsZWFzZShzdHJ1Y3QgZGNfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKCnZvaWQgZGNf Z2FtbWFfcmV0YWluKHN0cnVjdCBkY19nYW1tYSAqZGNfZ2FtbWEpOwp2b2lkIGRjX2dhbW1hX3Jl bGVhc2Uoc3RydWN0IGRjX2dhbW1hICoqZGNfZ2FtbWEpOwpzdHJ1Y3QgZGNfZ2FtbWEgKmRjX2Ny ZWF0ZV9nYW1tYSh2b2lkKTsKCnZvaWQgZGNfdHJhbnNmZXJfZnVuY19yZXRhaW4oc3RydWN0IGRj X3RyYW5zZmVyX2Z1bmMgKmRjX3RmKTsKdm9pZCBkY190cmFuc2Zlcl9mdW5jX3JlbGVhc2Uoc3Ry dWN0IGRjX3RyYW5zZmVyX2Z1bmMgKmRjX3RmKTsKc3RydWN0IGRjX3RyYW5zZmVyX2Z1bmMgKmRj X2NyZWF0ZV90cmFuc2Zlcl9mdW5jKHZvaWQpOwoKc3RydWN0IGRjXzNkbHV0ICpkY19jcmVhdGVf M2RsdXRfZnVuYyh2b2lkKTsKdm9pZCBkY18zZGx1dF9mdW5jX3JlbGVhc2Uoc3RydWN0IGRjXzNk bHV0ICpsdXQpOwp2b2lkIGRjXzNkbHV0X2Z1bmNfcmV0YWluKHN0cnVjdCBkY18zZGx1dCAqbHV0 KTsKCgoKCgpzdHJ1Y3QgZGNfZmxpcF9hZGRycyB7CiBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBh ZGRyZXNzOwogdW5zaWduZWQgaW50IGZsaXBfdGltZXN0YW1wX2luX3VzOwogYm9vbCBmbGlwX2lt bWVkaWF0ZTsKCn07Cgpib29sIGRjX3Bvc3RfdXBkYXRlX3N1cmZhY2VzX3RvX3N0cmVhbSgKICBz dHJ1Y3QgZGMgKmRjKTsKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNw bGF5L2RjL2RjX3N0cmVhbS5oIiAxCiMgMzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9kY19zdHJlYW0uaCIKc3RydWN0IHRpbWluZ19zeW5jX2luZm8gewogaW50 IGdyb3VwX2lkOwogaW50IGdyb3VwX3NpemU7CiBib29sIG1hc3RlcjsKfTsKCnN0cnVjdCBkY19z dHJlYW1fc3RhdHVzIHsKIGludCBwcmltYXJ5X290Z19pbnN0OwogaW50IHN0cmVhbV9lbmNfaW5z dDsKIGludCBwbGFuZV9jb3VudDsKIGludCBhdWRpb19pbnN0Owogc3RydWN0IHRpbWluZ19zeW5j X2luZm8gdGltaW5nX3N5bmNfaW5mbzsKIHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGVzWzRdOwp9OwoKCnN0cnVjdCBmcmVlc3luY19jb250ZXh0IHsKIGJvb2wgZHVtbXk7Cn07Cgpl bnVtIGh1YnBfZG1kYXRhX21vZGUgewogRE1EQVRBX1NXX01PREUsCiBETURBVEFfSFdfTU9ERQp9 OwoKc3RydWN0IGRjX2RtZGF0YV9hdHRyaWJ1dGVzIHsKCgoKIGVudW0gaHVicF9kbWRhdGFfbW9k ZSBkbWRhdGFfbW9kZTsKCiBib29sIGRtZGF0YV9yZXBlYXQ7CgogdWludDMyX3QgZG1kYXRhX3Np emU7CgogYm9vbCBkbWRhdGFfdXBkYXRlZDsKCiB1bmlvbiBsYXJnZV9pbnRlZ2VyIGFkZHJlc3M7 CgogYm9vbCBkbWRhdGFfcW9zX21vZGU7CgogdWludDMyX3QgZG1kYXRhX3Fvc19sZXZlbDsKCgoK IHVpbnQzMl90IGRtZGF0YV9kbF9kZWx0YTsKCiB1aW50MzJfdCAqZG1kYXRhX3N3X2RhdGE7Cn07 CgpzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gewogYm9vbCB3Yl9lbmFibGVkOwogaW50IGR3Yl9w aXBlX2luc3Q7CiBzdHJ1Y3QgZGNfZHdiX3BhcmFtcyBkd2JfcGFyYW1zOwogc3RydWN0IG1jaWZf YnVmX3BhcmFtcyBtY2lmX2J1Zl9wYXJhbXM7Cn07CgpzdHJ1Y3QgZGNfd3JpdGViYWNrX3VwZGF0 ZSB7CiB1bnNpZ25lZCBpbnQgbnVtX3diX2luZm87CiBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8g d3JpdGViYWNrX2luZm9bMV07Cn07CgplbnVtIHZlcnRpY2FsX2ludGVycnVwdF9yZWZfcG9pbnQg ewogU1RBUlRfVl9VUERBVEUgPSAwLAogU1RBUlRfVl9TWU5DLAogSU5WQUxJRF9QT0lOVAoKCgoK fTsKCnN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1cHRfY29uZmlnIHsKIGVudW0gdmVydGljYWxfaW50 ZXJydXB0X3JlZl9wb2ludCByZWZfcG9pbnQ7CiBpbnQgbGluZXNfb2Zmc2V0Owp9OwoKdW5pb24g c3RyZWFtX3VwZGF0ZV9mbGFncyB7CiBzdHJ1Y3QgewogIHVpbnQzMl90IHNjYWxpbmc6MTsKICB1 aW50MzJfdCBvdXRfdGY6MTsKICB1aW50MzJfdCBvdXRfY3NjOjE7CiAgdWludDMyX3QgYWJtX2xl dmVsOjE7CiAgdWludDMyX3QgZHBtc19vZmY6MTsKICB1aW50MzJfdCBnYW11dF9yZW1hcDoxOwog IHVpbnQzMl90IHdiX3VwZGF0ZToxOwogfSBiaXRzOwoKIHVpbnQzMl90IHJhdzsKfTsKCnN0cnVj dCBkY19zdHJlYW1fc3RhdGUgewoKCiBzdHJ1Y3QgZGNfc2luayAqc2luazsKCiBzdHJ1Y3QgZGNf bGluayAqbGluazsKIHN0cnVjdCBkY19wYW5lbF9wYXRjaCBzaW5rX3BhdGNoZXM7CiB1bmlvbiBk aXNwbGF5X2NvbnRlbnRfc3VwcG9ydCBjb250ZW50X3N1cHBvcnQ7CiBzdHJ1Y3QgZGNfY3J0Y190 aW1pbmcgdGltaW5nOwogc3RydWN0IGRjX2NydGNfdGltaW5nX2FkanVzdCBhZGp1c3Q7CiBzdHJ1 Y3QgZGNfaW5mb19wYWNrZXQgdnJyX2luZm9wYWNrZXQ7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQg dnNjX2luZm9wYWNrZXQ7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgdnNwX2luZm9wYWNrZXQ7Cgog c3RydWN0IHJlY3Qgc3JjOwogc3RydWN0IHJlY3QgZHN0OwoKCiBzdHJ1Y3QgZnJlZXN5bmNfY29u dGV4dCBmcmVlc3luY19jdHg7Cgogc3RydWN0IGF1ZGlvX2luZm8gYXVkaW9faW5mbzsKCiBzdHJ1 Y3QgZGNfaW5mb19wYWNrZXQgaGRyX3N0YXRpY19tZXRhZGF0YTsKIHVuaW9uIGxhcmdlX2ludGVn ZXIgZG1kYXRhX2FkZHJlc3M7CiBib29sIHVzZV9keW5hbWljX21ldGE7Cgogc3RydWN0IGRjX3Ry YW5zZmVyX2Z1bmMgKm91dF90cmFuc2Zlcl9mdW5jOwogc3RydWN0IGNvbG9yc3BhY2VfdHJhbnNm b3JtIGdhbXV0X3JlbWFwX21hdHJpeDsKIHN0cnVjdCBkY19jc2NfdHJhbnNmb3JtIGNzY19jb2xv cl9tYXRyaXg7CgogZW51bSBkY19jb2xvcl9zcGFjZSBvdXRwdXRfY29sb3Jfc3BhY2U7CiBlbnVt IGRjX2RpdGhlcl9vcHRpb24gZGl0aGVyX29wdGlvbjsKCiBlbnVtIHZpZXdfM2RfZm9ybWF0IHZp ZXdfZm9ybWF0OwoKIGJvb2wgdXNlX3ZzY19zZHBfZm9yX2NvbG9yaW1ldHJ5OwogYm9vbCBpZ25v cmVfbXNhX3RpbWluZ19wYXJhbTsKIGJvb2wgY29udmVydGVyX2Rpc2FibGVfYXVkaW87CiB1aW50 OF90IHFzX2JpdDsKIHVpbnQ4X3QgcXlfYml0OwoKCgoKIHVuc2lnbmVkIGNoYXIgcHNyX3ZlcnNp b247CgoKCiB1bnNpZ25lZCBpbnQgYWJtX2xldmVsOwoKIHN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1 cHRfY29uZmlnIHBlcmlvZGljX2ludGVycnVwdDA7CiBzdHJ1Y3QgcGVyaW9kaWNfaW50ZXJydXB0 X2NvbmZpZyBwZXJpb2RpY19pbnRlcnJ1cHQxOwoKCiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwoK CiBzdHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMgYml0X2RlcHRoX3BhcmFtczsKIHN0 cnVjdCBjbGFtcGluZ19hbmRfcGl4ZWxfZW5jb2RpbmdfcGFyYW1zIGNsYW1waW5nOwoKIGludCBw aHlfcGl4X2NsazsKIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsOwogYm9vbCBkcG1zX29mZjsKCiB2 b2lkICpkbV9zdHJlYW1fY29udGV4dDsKCiBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgY3Vy c29yX2F0dHJpYnV0ZXM7CiBzdHJ1Y3QgZGNfY3Vyc29yX3Bvc2l0aW9uIGN1cnNvcl9wb3NpdGlv bjsKIHVpbnQzMl90IHNkcl93aGl0ZV9sZXZlbDsKCgogc3RydWN0IGtyZWYgcmVmY291bnQ7Cgog c3RydWN0IGNydGNfdHJpZ2dlcl9pbmZvIHRyaWdnZXJlZF9jcnRjX3Jlc2V0OwoKCiB1bnNpZ25l ZCBpbnQgbnVtX3diX2luZm87CiBzdHJ1Y3QgZGNfd3JpdGViYWNrX2luZm8gd3JpdGViYWNrX2lu Zm9bMV07CgogYm9vbCBtb2RlX2NoYW5nZWQgOiAxOwoKCgoKCgogc3RydWN0IHsKCgogIHVpbnQ4 X3Qgb3RnX29mZnNldDsKIH0gb3V0OwoKIGJvb2wgYXBwbHlfZWRwX2Zhc3RfYm9vdF9vcHRpbWl6 YXRpb247CiBib29sIGFwcGx5X3NlYW1sZXNzX2Jvb3Rfb3B0aW1pemF0aW9uOwoKIHVpbnQzMl90 IHN0cmVhbV9pZDsKIGJvb2wgaXNfZHNjX2VuYWJsZWQ7CiB1bmlvbiBzdHJlYW1fdXBkYXRlX2Zs YWdzIHVwZGF0ZV9mbGFnczsKfTsKCgoKc3RydWN0IGRjX3N0cmVhbV91cGRhdGUgewogc3RydWN0 IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtOwoKIHN0cnVjdCByZWN0IHNyYzsKIHN0cnVjdCByZWN0 IGRzdDsKIHN0cnVjdCBkY190cmFuc2Zlcl9mdW5jICpvdXRfdHJhbnNmZXJfZnVuYzsKIHN0cnVj dCBkY19pbmZvX3BhY2tldCAqaGRyX3N0YXRpY19tZXRhZGF0YTsKIHVuc2lnbmVkIGludCAqYWJt X2xldmVsOwoKIHN0cnVjdCBwZXJpb2RpY19pbnRlcnJ1cHRfY29uZmlnICpwZXJpb2RpY19pbnRl cnJ1cHQwOwogc3RydWN0IHBlcmlvZGljX2ludGVycnVwdF9jb25maWcgKnBlcmlvZGljX2ludGVy cnVwdDE7Cgogc3RydWN0IGRjX2luZm9fcGFja2V0ICp2cnJfaW5mb3BhY2tldDsKIHN0cnVjdCBk Y19pbmZvX3BhY2tldCAqdnNjX2luZm9wYWNrZXQ7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgKnZz cF9pbmZvcGFja2V0OwoKIGJvb2wgKmRwbXNfb2ZmOwogYm9vbCBpbnRlZ2VyX3NjYWxpbmdfdXBk YXRlOwoKIHN0cnVjdCBjb2xvcnNwYWNlX3RyYW5zZm9ybSAqZ2FtdXRfcmVtYXA7CiBlbnVtIGRj X2NvbG9yX3NwYWNlICpvdXRwdXRfY29sb3Jfc3BhY2U7CiBlbnVtIGRjX2RpdGhlcl9vcHRpb24g KmRpdGhlcl9vcHRpb247Cgogc3RydWN0IGRjX2NzY190cmFuc2Zvcm0gKm91dHB1dF9jc2NfdHJh bnNmb3JtOwoKIHN0cnVjdCBkY193cml0ZWJhY2tfdXBkYXRlICp3Yl91cGRhdGU7CiBzdHJ1Y3Qg ZGNfZHNjX2NvbmZpZyAqZHNjX2NvbmZpZzsKfTsKCmJvb2wgZGNfaXNfc3RyZWFtX3VuY2hhbmdl ZCgKIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKm9sZF9zdHJlYW0sIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSk7CmJvb2wgZGNfaXNfc3RyZWFtX3NjYWxpbmdfdW5jaGFuZ2VkKAogc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqb2xkX3N0cmVhbSwgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAq c3RyZWFtKTsKIyAyNzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9kY19zdHJlYW0uaCIKdm9pZCBkY19jb21taXRfdXBkYXRlc19mb3Jfc3RyZWFtKHN0cnVjdCBk YyAqZGMsCiAgc3RydWN0IGRjX3N1cmZhY2VfdXBkYXRlICpzcmZfdXBkYXRlcywKICBpbnQgc3Vy ZmFjZV9jb3VudCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0IGRj X3N0cmVhbV91cGRhdGUgKnN0cmVhbV91cGRhdGUsCiAgc3RydWN0IGRjX3N0YXRlICpzdGF0ZSk7 CgoKCnZvaWQgZGNfc3RyZWFtX2xvZyhjb25zdCBzdHJ1Y3QgZGMgKmRjLCBjb25zdCBzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoKdWludDhfdCBkY19nZXRfY3VycmVudF9zdHJlYW1f Y291bnQoc3RydWN0IGRjICpkYyk7CnN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX2dldF9zdHJl YW1fYXRfaW5kZXgoc3RydWN0IGRjICpkYywgdWludDhfdCBpKTsKCgoKCnVpbnQzMl90IGRjX3N0 cmVhbV9nZXRfdmJsYW5rX2NvdW50ZXIoY29uc3Qgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3Ry ZWFtKTsKCgoKCmJvb2wgZGNfc3RyZWFtX3NlbmRfZHBfc2RwKGNvbnN0IHN0cnVjdCBkY19zdHJl YW1fc3RhdGUgKnN0cmVhbSwKICBjb25zdCB1aW50OF90ICpjdXN0b21fc2RwX21lc3NhZ2UsCiAg dW5zaWduZWQgaW50IHNkcF9tZXNzYWdlX3NpemUpOwoKCgoKCmJvb2wgZGNfc3RyZWFtX2dldF9z Y2Fub3V0cG9zKGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKICAgICAgdWlu dDMyX3QgKnZfYmxhbmtfc3RhcnQsCiAgICAgIHVpbnQzMl90ICp2X2JsYW5rX2VuZCwKICAgICAg dWludDMyX3QgKmhfcG9zaXRpb24sCiAgICAgIHVpbnQzMl90ICp2X3Bvc2l0aW9uKTsKCmVudW0g ZGNfc3RhdHVzIGRjX2FkZF9zdHJlYW1fdG9fY3R4KAogICBzdHJ1Y3QgZGMgKmRjLAogIHN0cnVj dCBkY19zdGF0ZSAqbmV3X2N0eCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoK ZW51bSBkY19zdGF0dXMgZGNfcmVtb3ZlX3N0cmVhbV9mcm9tX2N0eCgKICBzdHJ1Y3QgZGMgKmRj LAogICBzdHJ1Y3QgZGNfc3RhdGUgKm5ld19jdHgsCiAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUg KnN0cmVhbSk7CgoKYm9vbCBkY19hZGRfcGxhbmVfdG9fY29udGV4dCgKICBjb25zdCBzdHJ1Y3Qg ZGMgKmRjLAogIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKICBzdHJ1Y3QgZGNfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlLAogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7Cgpib29s IGRjX3JlbW92ZV9wbGFuZV9mcm9tX2NvbnRleHQoCiAgY29uc3Qgc3RydWN0IGRjICpkYywKICBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0IGRjX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwoKYm9vbCBkY19yZW1fYWxs X3BsYW5lc19mb3Jfc3RyZWFtKAogIGNvbnN0IHN0cnVjdCBkYyAqZGMsCiAgc3RydWN0IGRjX3N0 cmVhbV9zdGF0ZSAqc3RyZWFtLAogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7Cgpib29sIGRj X2FkZF9hbGxfcGxhbmVzX2Zvcl9zdHJlYW0oCiAgY29uc3Qgc3RydWN0IGRjICpkYywKICBzdHJ1 Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0IGRjX3BsYW5lX3N0YXRlICogY29u c3QgKnBsYW5lX3N0YXRlcywKICBpbnQgcGxhbmVfY291bnQsCiAgc3RydWN0IGRjX3N0YXRlICpj b250ZXh0KTsKCmJvb2wgZGNfc3RyZWFtX2FkZF93cml0ZWJhY2soc3RydWN0IGRjICpkYywKICBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0IGRjX3dyaXRlYmFja19pbmZv ICp3Yl9pbmZvKTsKCmJvb2wgZGNfc3RyZWFtX3JlbW92ZV93cml0ZWJhY2soc3RydWN0IGRjICpk YywKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgdWludDMyX3QgZHdiX3BpcGVf aW5zdCk7Cgpib29sIGRjX3N0cmVhbV93YXJtdXBfd3JpdGViYWNrKHN0cnVjdCBkYyAqZGMsCiAg aW50IG51bV9kd2IsCiAgc3RydWN0IGRjX3dyaXRlYmFja19pbmZvICp3Yl9pbmZvKTsKCmJvb2wg ZGNfc3RyZWFtX2RtZGF0YV9zdGF0dXNfZG9uZShzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXRlICpzdHJlYW0pOwoKYm9vbCBkY19zdHJlYW1fc2V0X2R5bmFtaWNfbWV0YWRhdGEo c3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgc3RydWN0 IGRjX2RtZGF0YV9hdHRyaWJ1dGVzICpkbWRhdGFfYXR0cik7CgplbnVtIGRjX3N0YXR1cyBkY192 YWxpZGF0ZV9zdHJlYW0oc3RydWN0IGRjICpkYywgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3Ry ZWFtKTsKIyAzNzYgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9k Y19zdHJlYW0uaCIKYm9vbCBkY19lbmFibGVfc3RlcmVvKAogc3RydWN0IGRjICpkYywKIHN0cnVj dCBkY19zdGF0ZSAqY29udGV4dCwKIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbXNbXSwK IHVpbnQ4X3Qgc3RyZWFtX2NvdW50KTsKCgplbnVtIHN1cmZhY2VfdXBkYXRlX3R5cGUgZGNfY2hl Y2tfdXBkYXRlX3N1cmZhY2VzX2Zvcl9zdHJlYW0oCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3Qg ZGNfc3VyZmFjZV91cGRhdGUgKnVwZGF0ZXMsCiAgaW50IHN1cmZhY2VfY291bnQsCiAgc3RydWN0 IGRjX3N0cmVhbV91cGRhdGUgKnN0cmVhbV91cGRhdGUsCiAgY29uc3Qgc3RydWN0IGRjX3N0cmVh bV9zdGF0dXMgKnN0cmVhbV9zdGF0dXMpOwoKCgoKc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqZGNf Y3JlYXRlX3N0cmVhbV9mb3Jfc2luayhzdHJ1Y3QgZGNfc2luayAqZGNfc2luayk7CgpzdHJ1Y3Qg ZGNfc3RyZWFtX3N0YXRlICpkY19jb3B5X3N0cmVhbShjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpzdHJlYW0pOwoKdm9pZCB1cGRhdGVfc3RyZWFtX3NpZ25hbChzdHJ1Y3QgZGNfc3RyZWFt X3N0YXRlICpzdHJlYW0sIHN0cnVjdCBkY19zaW5rICpzaW5rKTsKCnZvaWQgZGNfc3RyZWFtX3Jl dGFpbihzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0pOwp2b2lkIGRjX3N0cmVhbV9y ZWxlYXNlKHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKmRjX3N0cmVhbSk7CgpzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXR1cyAqZGNfc3RyZWFtX2dldF9zdGF0dXNfZnJvbV9zdGF0ZSgKIHN0cnVjdCBkY19z dGF0ZSAqc3RhdGUsCiBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwpzdHJ1Y3QgZGNf c3RyZWFtX3N0YXR1cyAqZGNfc3RyZWFtX2dldF9zdGF0dXMoCiBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpkY19zdHJlYW0pOwoKCgoKCmJvb2wgZGNfc3RyZWFtX3NldF9jdXJzb3JfYXR0cmlidXRl cygKIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKIGNvbnN0IHN0cnVjdCBkY19jdXJz b3JfYXR0cmlidXRlcyAqYXR0cmlidXRlcyk7Cgpib29sIGRjX3N0cmVhbV9zZXRfY3Vyc29yX3Bv c2l0aW9uKAogc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAogY29uc3Qgc3RydWN0IGRj X2N1cnNvcl9wb3NpdGlvbiAqcG9zaXRpb24pOwoKCmJvb2wgZGNfc3RyZWFtX2FkanVzdF92bWlu X3ZtYXgoc3RydWN0IGRjICpkYywKICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwK ICAgIHN0cnVjdCBkY19jcnRjX3RpbWluZ19hZGp1c3QgKmFkanVzdCk7Cgpib29sIGRjX3N0cmVh bV9nZXRfY3J0Y19wb3NpdGlvbihzdHJ1Y3QgZGMgKmRjLAogICAgIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKipzdHJlYW0sCiAgICAgaW50IG51bV9zdHJlYW1zLAogICAgIHVuc2lnbmVkIGludCAq dl9wb3MsCiAgICAgdW5zaWduZWQgaW50ICpub21fdl9wb3MpOwoKYm9vbCBkY19zdHJlYW1fY29u ZmlndXJlX2NyYyhzdHJ1Y3QgZGMgKmRjLAogICAgICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUg KnN0cmVhbSwKICAgICAgICBib29sIGVuYWJsZSwKICAgICAgICBib29sIGNvbnRpbnVvdXMpOwoK Ym9vbCBkY19zdHJlYW1fZ2V0X2NyYyhzdHJ1Y3QgZGMgKmRjLAogICAgICAgICBzdHJ1Y3QgZGNf c3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgICAgICAgIHVpbnQzMl90ICpyX2NyLAogICAgICAgICB1 aW50MzJfdCAqZ195LAogICAgICAgICB1aW50MzJfdCAqYl9jYik7Cgp2b2lkIGRjX3N0cmVhbV9z ZXRfc3RhdGljX3NjcmVlbl9wYXJhbXMoc3RydWN0IGRjICpkYywKICAgICBzdHJ1Y3QgZGNfc3Ry ZWFtX3N0YXRlICoqc3RyZWFtLAogICAgIGludCBudW1fc3RyZWFtcywKICAgICBjb25zdCBzdHJ1 Y3QgZGNfc3RhdGljX3NjcmVlbl9wYXJhbXMgKnBhcmFtcyk7Cgp2b2lkIGRjX3N0cmVhbV9zZXRf ZHluX2V4cGFuc2lvbihzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJl YW0sCiAgZW51bSBkY19keW5hbWljX2V4cGFuc2lvbiBvcHRpb24pOwoKdm9pZCBkY19zdHJlYW1f c2V0X2RpdGhlcl9vcHRpb24oc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAogICAgIGVu dW0gZGNfZGl0aGVyX29wdGlvbiBvcHRpb24pOwoKYm9vbCBkY19zdHJlYW1fc2V0X2dhbXV0X3Jl bWFwKHN0cnVjdCBkYyAqZGMsCiAgICAgICAgICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRl ICpzdHJlYW0pOwoKYm9vbCBkY19zdHJlYW1fcHJvZ3JhbV9jc2NfbWF0cml4KHN0cnVjdCBkYyAq ZGMsCiAgICAgIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7Cgpib29sIGRjX3N0cmVh bV9nZXRfY3J0Y19wb3NpdGlvbihzdHJ1Y3QgZGMgKmRjLAogICAgIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKipzdHJlYW0sCiAgICAgaW50IG51bV9zdHJlYW1zLAogICAgIHVuc2lnbmVkIGludCAq dl9wb3MsCiAgICAgdW5zaWduZWQgaW50ICpub21fdl9wb3MpOwojIDg3NCAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDIKCgoKCnN0cnVjdCBkY192YWxp ZGF0aW9uX3NldCB7CiBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW07CiBzdHJ1Y3QgZGNf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlc1szXTsKIHVpbnQ4X3QgcGxhbmVfY291bnQ7Cn07Cgpi b29sIGRjX3ZhbGlkYXRlX3NlYW1sZXNzX2Jvb3RfdGltaW5nKGNvbnN0IHN0cnVjdCBkYyAqZGMs CiAgICBjb25zdCBzdHJ1Y3QgZGNfc2luayAqc2luaywKICAgIHN0cnVjdCBkY19jcnRjX3RpbWlu ZyAqY3J0Y190aW1pbmcpOwoKZW51bSBkY19zdGF0dXMgZGNfdmFsaWRhdGVfcGxhbmUoc3RydWN0 IGRjICpkYywgY29uc3Qgc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cgp2b2lk IGdldF9jbG9ja19yZXF1aXJlbWVudHNfZm9yX3N0YXRlKHN0cnVjdCBkY19zdGF0ZSAqc3RhdGUs IHN0cnVjdCBBc2ljU3RhdGVFeCAqaW5mbyk7Cgpib29sIGRjX3NldF9nZW5lcmljX2dwaW9fZm9y X3N0ZXJlbyhib29sIGVuYWJsZSwKICBzdHJ1Y3QgZ3Bpb19zZXJ2aWNlICpncGlvX3NlcnZpY2Up OwoKCgoKCmVudW0gZGNfc3RhdHVzIGRjX3ZhbGlkYXRlX2dsb2JhbF9zdGF0ZSgKICBzdHJ1Y3Qg ZGMgKmRjLAogIHN0cnVjdCBkY19zdGF0ZSAqbmV3X2N0eCwKICBib29sIGZhc3RfdmFsaWRhdGUp OwoKCnZvaWQgZGNfcmVzb3VyY2Vfc3RhdGVfY29uc3RydWN0KAogIGNvbnN0IHN0cnVjdCBkYyAq ZGMsCiAgc3RydWN0IGRjX3N0YXRlICpkc3RfY3R4KTsKCnZvaWQgZGNfcmVzb3VyY2Vfc3RhdGVf Y29weV9jb25zdHJ1Y3QoCiAgY29uc3Qgc3RydWN0IGRjX3N0YXRlICpzcmNfY3R4LAogIHN0cnVj dCBkY19zdGF0ZSAqZHN0X2N0eCk7Cgp2b2lkIGRjX3Jlc291cmNlX3N0YXRlX2NvcHlfY29uc3Ry dWN0X2N1cnJlbnQoCiAgY29uc3Qgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmRz dF9jdHgpOwoKdm9pZCBkY19yZXNvdXJjZV9zdGF0ZV9kZXN0cnVjdChzdHJ1Y3QgZGNfc3RhdGUg KmNvbnRleHQpOwoKYm9vbCBkY19yZXNvdXJjZV9pc19kc2NfZW5jb2Rpbmdfc3VwcG9ydGVkKGNv bnN0IHN0cnVjdCBkYyAqZGMpOwojIDkzMCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2RjLmgiCmJvb2wgZGNfY29tbWl0X3N0YXRlKHN0cnVjdCBkYyAqZGMsIHN0 cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7CgoKc3RydWN0IGRjX3N0YXRlICpkY19jcmVhdGVfc3Rh dGUoc3RydWN0IGRjICpkYyk7CnN0cnVjdCBkY19zdGF0ZSAqZGNfY29weV9zdGF0ZShzdHJ1Y3Qg ZGNfc3RhdGUgKnNyY19jdHgpOwp2b2lkIGRjX3JldGFpbl9zdGF0ZShzdHJ1Y3QgZGNfc3RhdGUg KmNvbnRleHQpOwp2b2lkIGRjX3JlbGVhc2Vfc3RhdGUoc3RydWN0IGRjX3N0YXRlICpjb250ZXh0 KTsKCgoKCgpzdHJ1Y3QgZHBjZF9jYXBzIHsKIHVuaW9uIGRwY2RfcmV2IGRwY2RfcmV2OwogdW5p b24gbWF4X2xhbmVfY291bnQgbWF4X2xuX2NvdW50OwogdW5pb24gbWF4X2Rvd25fc3ByZWFkIG1h eF9kb3duX3NwcmVhZDsKIHVuaW9uIGRwcnhfZmVhdHVyZSBkcHJ4X2ZlYXR1cmU7CgoKIHVpbnQ4 X3QgZWRwX3N1cHBvcnRlZF9saW5rX3JhdGVzX2NvdW50OwogZW51bSBkY19saW5rX3JhdGUgZWRw X3N1cHBvcnRlZF9saW5rX3JhdGVzWzhdOwoKCiBlbnVtIGRpc3BsYXlfZG9uZ2xlX3R5cGUgZG9u Z2xlX3R5cGU7CgogYm9vbCBpc19icmFuY2hfZGV2OwoKIHVuaW9uIHNpbmtfY291bnQgc2lua19j b3VudDsKCgogc3RydWN0IGRjX2RvbmdsZV9jYXBzIGRvbmdsZV9jYXBzOwoKIHVpbnQzMl90IHNp bmtfZGV2X2lkOwogaW50OF90IHNpbmtfZGV2X2lkX3N0cls2XTsKIGludDhfdCBzaW5rX2h3X3Jl dmlzaW9uOwogaW50OF90IHNpbmtfZndfcmV2aXNpb25bMl07CgogdWludDMyX3QgYnJhbmNoX2Rl dl9pZDsKIGludDhfdCBicmFuY2hfZGV2X25hbWVbNl07CiBpbnQ4X3QgYnJhbmNoX2h3X3Jldmlz aW9uOwogaW50OF90IGJyYW5jaF9md19yZXZpc2lvblsyXTsKCiBib29sIGFsbG93X2ludmFsaWRf TVNBX3RpbWluZ19wYXJhbTsKIGJvb2wgcGFuZWxfbW9kZV9lZHA7CiBib29sIGRwY2RfZGlzcGxh eV9jb250cm9sX2NhcGFibGU7CiBib29sIGV4dF9yZWNlaXZlcl9jYXBfZmllbGRfcHJlc2VudDsK IHVuaW9uIGRwY2RfZmVjX2NhcGFiaWxpdHkgZmVjX2NhcDsKIHN0cnVjdCBkcGNkX2RzY19jYXBh YmlsaXRpZXMgZHNjX2NhcHM7CiBzdHJ1Y3QgZGNfbHR0cHJfY2FwcyBsdHRwcl9jYXBzOwoKfTsK CiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2xpbmsu aCIgMQojIDMyICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNf bGluay5oIgplbnVtIGRjX2xpbmtfZmVjX3N0YXRlIHsKIGRjX2xpbmtfZmVjX25vdF9yZWFkeSwK IGRjX2xpbmtfZmVjX3JlYWR5LAogZGNfbGlua19mZWNfZW5hYmxlZAp9OwpzdHJ1Y3QgZGNfbGlu a19zdGF0dXMgewogYm9vbCBsaW5rX2FjdGl2ZTsKIHN0cnVjdCBkcGNkX2NhcHMgKmRwY2RfY2Fw czsKfTsKCgpzdHJ1Y3QgbGlua19tc3Rfc3RyZWFtX2FsbG9jYXRpb24gewoKIGNvbnN0IHN0cnVj dCBzdHJlYW1fZW5jb2RlciAqc3RyZWFtX2VuYzsKCiB1aW50OF90IHZjcF9pZDsKCiB1aW50OF90 IHNsb3RfY291bnQ7Cn07CgoKc3RydWN0IGxpbmtfbXN0X3N0cmVhbV9hbGxvY2F0aW9uX3RhYmxl IHsKCiBpbnQgc3RyZWFtX2NvdW50OwoKIHN0cnVjdCBsaW5rX21zdF9zdHJlYW1fYWxsb2NhdGlv biBzdHJlYW1fYWxsb2NhdGlvbnNbTUFYX0NPTlRST0xMRVJfTlVNXTsKfTsKCnN0cnVjdCB0aW1l X3N0YW1wIHsKIHVpbnQ2NF90IGVkcF9wb3dlcm9mZjsKIHVpbnQ2NF90IGVkcF9wb3dlcm9uOwp9 OwoKc3RydWN0IGxpbmtfdHJhY2Ugewogc3RydWN0IHRpbWVfc3RhbXAgdGltZV9zdGFtcDsKfTsK CgoKCnN0cnVjdCBkY19saW5rIHsKIHN0cnVjdCBkY19zaW5rICpyZW1vdGVfc2lua3NbNF07CiB1 bnNpZ25lZCBpbnQgc2lua19jb3VudDsKIHN0cnVjdCBkY19zaW5rICpsb2NhbF9zaW5rOwogdW5z aWduZWQgaW50IGxpbmtfaW5kZXg7CiBlbnVtIGRjX2Nvbm5lY3Rpb25fdHlwZSB0eXBlOwogZW51 bSBzaWduYWxfdHlwZSBjb25uZWN0b3Jfc2lnbmFsOwogZW51bSBkY19pcnFfc291cmNlIGlycV9z b3VyY2VfaHBkOwogZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2VfaHBkX3J4OwogYm9vbCBp c19ocGRfZmlsdGVyX2Rpc2FibGVkOwogYm9vbCBkcF9zc19vZmY7CiBib29sIGxpbmtfc3RhdGVf dmFsaWQ7CiBib29sIGF1eF9hY2Nlc3NfZGlzYWJsZWQ7CiBib29sIHN5bmNfbHRfaW5fcHJvZ3Jl c3M7CiBib29sIGlzX2x0dHByX21vZGVfdHJhbnNwYXJlbnQ7CgoKCgogc3RydWN0IGRjX2xpbmtf c2V0dGluZ3MgcmVwb3J0ZWRfbGlua19jYXA7CiBzdHJ1Y3QgZGNfbGlua19zZXR0aW5ncyB2ZXJp ZmllZF9saW5rX2NhcDsKIHN0cnVjdCBkY19saW5rX3NldHRpbmdzIGN1cl9saW5rX3NldHRpbmdz Owogc3RydWN0IGRjX2xhbmVfc2V0dGluZ3MgY3VyX2xhbmVfc2V0dGluZzsKIHN0cnVjdCBkY19s aW5rX3NldHRpbmdzIHByZWZlcnJlZF9saW5rX3NldHRpbmc7CiBzdHJ1Y3QgZGNfbGlua190cmFp bmluZ19vdmVycmlkZXMgcHJlZmVycmVkX3RyYWluaW5nX3NldHRpbmdzOwogc3RydWN0IGRwX2F1 ZGlvX3Rlc3RfZGF0YSBhdWRpb190ZXN0X2RhdGE7CgogdWludDhfdCBkZGNfaHdfaW5zdDsKCiB1 aW50OF90IGhwZF9zcmM7CgogdWludDhfdCBsaW5rX2VuY19od19pbnN0OwoKIGJvb2wgdGVzdF9w YXR0ZXJuX2VuYWJsZWQ7CiB1bmlvbiBjb21wbGlhbmNlX3Rlc3Rfc3RhdGUgY29tcGxpYW5jZV90 ZXN0X3N0YXRlOwoKIHZvaWQgKnByaXY7Cgogc3RydWN0IGRkY19zZXJ2aWNlICpkZGM7CgogYm9v bCBhdXhfbW9kZTsKCgoKIGNvbnN0IHN0cnVjdCBkYyAqZGM7Cgogc3RydWN0IGRjX2NvbnRleHQg KmN0eDsKCiBzdHJ1Y3QgbGlua19lbmNvZGVyICpsaW5rX2VuYzsKIHN0cnVjdCBncmFwaGljc19v YmplY3RfaWQgbGlua19pZDsKIHVuaW9uIGRkaV9jaGFubmVsX21hcHBpbmcgZGRpX2NoYW5uZWxf bWFwcGluZzsKIHN0cnVjdCBjb25uZWN0b3JfZGV2aWNlX3RhZ19pbmZvIGRldmljZV90YWc7CiBz dHJ1Y3QgZHBjZF9jYXBzIGRwY2RfY2FwczsKIHVpbnQzMl90IGRvbmdsZV9tYXhfcGl4X2NsazsK IHVuc2lnbmVkIHNob3J0IGNoaXBfY2FwczsKIHVuc2lnbmVkIGludCBkcGNkX3NpbmtfY291bnQ7 CiBlbnVtIGVkcF9yZXZpc2lvbiBlZHBfcmV2aXNpb247CiBib29sIHBzcl9mZWF0dXJlX2VuYWJs ZWQ7CiBib29sIHBzcl9hbGxvd19hY3RpdmU7CgoKIHN0cnVjdCBsaW5rX2ZsYWdzIHsKICBib29s IGRwX2tlZXBfcmVjZWl2ZXJfcG93ZXJlZDsKICBib29sIGRwX3NraXBfRElEMjsKICBib29sIGRw X3NraXBfcmVzZXRfc2VnbWVudDsKIH0gd2FfZmxhZ3M7CiBzdHJ1Y3QgbGlua19tc3Rfc3RyZWFt X2FsbG9jYXRpb25fdGFibGUgbXN0X3N0cmVhbV9hbGxvY190YWJsZTsKCiBzdHJ1Y3QgZGNfbGlu a19zdGF0dXMgbGlua19zdGF0dXM7Cgogc3RydWN0IGxpbmtfdHJhY2UgbGlua190cmFjZTsKIHN0 cnVjdCBncGlvICpocGRfZ3BpbzsKIGVudW0gZGNfbGlua19mZWNfc3RhdGUgZmVjX3N0YXRlOwp9 OwoKY29uc3Qgc3RydWN0IGRjX2xpbmtfc3RhdHVzICpkY19saW5rX2dldF9zdGF0dXMoY29uc3Qg c3RydWN0IGRjX2xpbmsgKmRjX2xpbmspOwojIDE1NiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2xpbmsuaCIKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9f KChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0 ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgc3RydWN0IGRjX2xpbmsgKmRjX2dldF9saW5r X2F0X2luZGV4KHN0cnVjdCBkYyAqZGMsIHVpbnQzMl90IGxpbmtfaW5kZXgpCnsKIHJldHVybiBk Yy0+bGlua3NbbGlua19pbmRleF07Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBkY19saW5rICpnZXRfZWRwX2xpbmsoY29u c3Qgc3RydWN0IGRjICpkYykKewogaW50IGk7CgoKIGZvciAoaSA9IDA7IGkgPCBkYy0+bGlua19j b3VudDsgaSsrKSB7CiAgaWYgKGRjLT5saW5rc1tpXS0+Y29ubmVjdG9yX3NpZ25hbCA9PSBTSUdO QUxfVFlQRV9FRFApCiAgIHJldHVybiBkYy0+bGlua3NbaV07CiB9CiByZXR1cm4gKCh2b2lkICop MCk7Cn0KCgoKCgpib29sIGRjX2xpbmtfc2V0X2JhY2tsaWdodF9sZXZlbChjb25zdCBzdHJ1Y3Qg ZGNfbGluayAqZGNfbGluaywKICB1aW50MzJfdCBiYWNrbGlnaHRfcHdtX3UxNl8xNiwKICB1aW50 MzJfdCBmcmFtZV9yYW1wKTsKCmludCBkY19saW5rX2dldF9iYWNrbGlnaHRfbGV2ZWwoY29uc3Qg c3RydWN0IGRjX2xpbmsgKmRjX2xpbmspOwoKYm9vbCBkY19saW5rX3NldF9hYm1fZGlzYWJsZShj b25zdCBzdHJ1Y3QgZGNfbGluayAqZGNfbGluayk7Cgpib29sIGRjX2xpbmtfc2V0X3Bzcl9hbGxv d19hY3RpdmUoc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssIGJvb2wgZW5hYmxlLCBib29sIHdhaXQp OwoKYm9vbCBkY19saW5rX2dldF9wc3Jfc3RhdGUoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmRjX2xp bmssIHVpbnQzMl90ICpwc3Jfc3RhdGUpOwoKYm9vbCBkY19saW5rX3NldHVwX3BzcihzdHJ1Y3Qg ZGNfbGluayAqZGNfbGluaywKICBjb25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0s IHN0cnVjdCBwc3JfY29uZmlnICpwc3JfY29uZmlnLAogIHN0cnVjdCBwc3JfY29udGV4dCAqcHNy X2NvbnRleHQpOwoKCgoKCgoKZW51bSBkY19kZXRlY3RfcmVhc29uIHsKIERFVEVDVF9SRUFTT05f Qk9PVCwKIERFVEVDVF9SRUFTT05fSFBELAogREVURUNUX1JFQVNPTl9IUERSWCwKfTsKCmJvb2wg ZGNfbGlua19kZXRlY3Qoc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssIGVudW0gZGNfZGV0ZWN0X3Jl YXNvbiByZWFzb24pOwpib29sIGRjX2xpbmtfZ2V0X2hwZF9zdGF0ZShzdHJ1Y3QgZGNfbGluayAq ZGNfbGluayk7CmVudW0gZGNfc3RhdHVzIGRjX2xpbmtfYWxsb2NhdGVfbXN0X3BheWxvYWQoc3Ry dWN0IHBpcGVfY3R4ICpwaXBlX2N0eCk7CmVudW0gZGNfc3RhdHVzIGRjX2xpbmtfcmVhbGxvY2F0 ZV9tc3RfcGF5bG9hZChzdHJ1Y3QgZGNfbGluayAqbGluayk7CgoKCgoKCgpib29sIGRjX2xpbmtf aGFuZGxlX2hwZF9yeF9pcnEoc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssCiAgdW5pb24gaHBkX2ly cV9kYXRhICpocGRfaXJxX2RwY2RfZGF0YSwgYm9vbCAqb3V0X2xpbmtfbG9zcyk7CgpzdHJ1Y3Qg ZGNfc2lua19pbml0X2RhdGE7CgpzdHJ1Y3QgZGNfc2luayAqZGNfbGlua19hZGRfcmVtb3RlX3Np bmsoCiAgc3RydWN0IGRjX2xpbmsgKmRjX2xpbmssCiAgY29uc3QgdWludDhfdCAqZWRpZCwKICBp bnQgbGVuLAogIHN0cnVjdCBkY19zaW5rX2luaXRfZGF0YSAqaW5pdF9kYXRhKTsKCnZvaWQgZGNf bGlua19yZW1vdmVfcmVtb3RlX3NpbmsoCiBzdHJ1Y3QgZGNfbGluayAqbGluaywKIHN0cnVjdCBk Y19zaW5rICpzaW5rKTsKCgoKdm9pZCBkY19saW5rX2RwX3NldF9kcml2ZV9zZXR0aW5ncygKIHN0 cnVjdCBkY19saW5rICpsaW5rLAogc3RydWN0IGxpbmtfdHJhaW5pbmdfc2V0dGluZ3MgKmx0X3Nl dHRpbmdzKTsKCmJvb2wgZGNfbGlua19kcF9wZXJmb3JtX2xpbmtfdHJhaW5pbmdfc2tpcF9hdXgo CiBzdHJ1Y3QgZGNfbGluayAqbGluaywKIGNvbnN0IHN0cnVjdCBkY19saW5rX3NldHRpbmdzICps aW5rX3NldHRpbmcpOwoKZW51bSBsaW5rX3RyYWluaW5nX3Jlc3VsdCBkY19saW5rX2RwX3BlcmZv cm1fbGlua190cmFpbmluZygKIHN0cnVjdCBkY19saW5rICpsaW5rLAogY29uc3Qgc3RydWN0IGRj X2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZywKIGJvb2wgc2tpcF92aWRlb19wYXR0ZXJuKTsK CmJvb2wgZGNfbGlua19kcF9zeW5jX2x0X2JlZ2luKHN0cnVjdCBkY19saW5rICpsaW5rKTsKCmVu dW0gbGlua190cmFpbmluZ19yZXN1bHQgZGNfbGlua19kcF9zeW5jX2x0X2F0dGVtcHQoCiBzdHJ1 Y3QgZGNfbGluayAqbGluaywKIHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5rX3NldHRpbmcs CiBzdHJ1Y3QgZGNfbGlua190cmFpbmluZ19vdmVycmlkZXMgKmx0X3NldHRpbmdzKTsKCmJvb2wg ZGNfbGlua19kcF9zeW5jX2x0X2VuZChzdHJ1Y3QgZGNfbGluayAqbGluaywgYm9vbCBsaW5rX2Rv d24pOwoKdm9pZCBkY19saW5rX2RwX2VuYWJsZV9ocGQoY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxp bmspOwoKdm9pZCBkY19saW5rX2RwX2Rpc2FibGVfaHBkKGNvbnN0IHN0cnVjdCBkY19saW5rICps aW5rKTsKCmJvb2wgZGNfbGlua19kcF9zZXRfdGVzdF9wYXR0ZXJuKAogc3RydWN0IGRjX2xpbmsg KmxpbmssCiBlbnVtIGRwX3Rlc3RfcGF0dGVybiB0ZXN0X3BhdHRlcm4sCiBlbnVtIGRwX3Rlc3Rf cGF0dGVybl9jb2xvcl9zcGFjZSB0ZXN0X3BhdHRlcm5fY29sb3Jfc3BhY2UsCiBjb25zdCBzdHJ1 Y3QgbGlua190cmFpbmluZ19zZXR0aW5ncyAqcF9saW5rX3NldHRpbmdzLAogY29uc3QgdW5zaWdu ZWQgY2hhciAqcF9jdXN0b21fcGF0dGVybiwKIHVuc2lnbmVkIGludCBjdXN0X3BhdHRlcm5fc2l6 ZSk7Cgp2b2lkIGRjX2xpbmtfZW5hYmxlX2hwZF9maWx0ZXIoc3RydWN0IGRjX2xpbmsgKmxpbmss IGJvb2wgZW5hYmxlKTsKCmJvb2wgZGNfbGlua19pc19kcF9zaW5rX3ByZXNlbnQoc3RydWN0IGRj X2xpbmsgKmxpbmspOwoKYm9vbCBkY19saW5rX2RldGVjdF9zaW5rKHN0cnVjdCBkY19saW5rICps aW5rLCBlbnVtIGRjX2Nvbm5lY3Rpb25fdHlwZSAqdHlwZSk7CgoKCgp2b2lkIGRjX2xpbmtfc2V0 X2RyaXZlX3NldHRpbmdzKHN0cnVjdCBkYyAqZGMsCiAgICBzdHJ1Y3QgbGlua190cmFpbmluZ19z ZXR0aW5ncyAqbHRfc2V0dGluZ3MsCiAgICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CnZv aWQgZGNfbGlua19wZXJmb3JtX2xpbmtfdHJhaW5pbmcoc3RydWN0IGRjICpkYywKICAgICAgIHN0 cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5rX3NldHRpbmcsCiAgICAgICBib29sIHNraXBfdmlk ZW9fcGF0dGVybik7CnZvaWQgZGNfbGlua19zZXRfcHJlZmVycmVkX2xpbmtfc2V0dGluZ3Moc3Ry dWN0IGRjICpkYywKICAgICAgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmxpbmtfc2V0dGluZywK ICAgICAgc3RydWN0IGRjX2xpbmsgKmxpbmspOwp2b2lkIGRjX2xpbmtfc2V0X3ByZWZlcnJlZF90 cmFpbmluZ19zZXR0aW5ncyhzdHJ1Y3QgZGMgKmRjLAogICAgIHN0cnVjdCBkY19saW5rX3NldHRp bmdzICpsaW5rX3NldHRpbmcsCiAgICAgc3RydWN0IGRjX2xpbmtfdHJhaW5pbmdfb3ZlcnJpZGVz ICpsdF9vdmVycmlkZXMsCiAgICAgc3RydWN0IGRjX2xpbmsgKmxpbmssCiAgICAgYm9vbCBza2lw X2ltbWVkaWF0ZV9yZXRyYWluKTsKdm9pZCBkY19saW5rX2VuYWJsZV9ocGQoY29uc3Qgc3RydWN0 IGRjX2xpbmsgKmxpbmspOwp2b2lkIGRjX2xpbmtfZGlzYWJsZV9ocGQoY29uc3Qgc3RydWN0IGRj X2xpbmsgKmxpbmspOwp2b2lkIGRjX2xpbmtfc2V0X3Rlc3RfcGF0dGVybihzdHJ1Y3QgZGNfbGlu ayAqbGluaywKICAgZW51bSBkcF90ZXN0X3BhdHRlcm4gdGVzdF9wYXR0ZXJuLAogICBlbnVtIGRw X3Rlc3RfcGF0dGVybl9jb2xvcl9zcGFjZSB0ZXN0X3BhdHRlcm5fY29sb3Jfc3BhY2UsCiAgIGNv bnN0IHN0cnVjdCBsaW5rX3RyYWluaW5nX3NldHRpbmdzICpwX2xpbmtfc2V0dGluZ3MsCiAgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKnBfY3VzdG9tX3BhdHRlcm4sCiAgIHVuc2lnbmVkIGludCBjdXN0 X3BhdHRlcm5fc2l6ZSk7CnVpbnQzMl90IGRjX2xpbmtfYmFuZHdpZHRoX2ticHMoCiBjb25zdCBz dHJ1Y3QgZGNfbGluayAqbGluaywKIGNvbnN0IHN0cnVjdCBkY19saW5rX3NldHRpbmdzICpsaW5r X3NldHRpbmcpOwoKY29uc3Qgc3RydWN0IGRjX2xpbmtfc2V0dGluZ3MgKmRjX2xpbmtfZ2V0X2xp bmtfY2FwKAogIGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsKCnZvaWQgZGNfbGlua19vdmVy d3JpdGVfZXh0ZW5kZWRfcmVjZWl2ZXJfY2FwKAogIHN0cnVjdCBkY19saW5rICpsaW5rKTsKCmJv b2wgZGNfc3VibWl0X2kyYygKICBzdHJ1Y3QgZGMgKmRjLAogIHVpbnQzMl90IGxpbmtfaW5kZXgs CiAgc3RydWN0IGkyY19jb21tYW5kICpjbWQpOwoKYm9vbCBkY19zdWJtaXRfaTJjX29lbSgKICBz dHJ1Y3QgZGMgKmRjLAogIHN0cnVjdCBpMmNfY29tbWFuZCAqY21kKTsKCnVpbnQzMl90IGRjX2Jh bmR3aWR0aF9pbl9rYnBzX2Zyb21fdGltaW5nKAogY29uc3Qgc3RydWN0IGRjX2NydGNfdGltaW5n ICp0aW1pbmcpOwojIDk4MyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2RjLmgiIDIKCgoKCgpzdHJ1Y3QgZGNfY29udGFpbmVyX2lkIHsKCiB1bnNpZ25lZCBjaGFy IGd1aWRbMTZdOwoKIHVuc2lnbmVkIGludCBwb3J0SWRbMl07CgogdW5zaWduZWQgc2hvcnQgbWFu dWZhY3R1cmVyTmFtZTsKCiB1bnNpZ25lZCBzaG9ydCBwcm9kdWN0Q29kZTsKfTsKCgpzdHJ1Y3Qg ZGNfc2lua19kc2NfY2FwcyB7CgoKIGJvb2wgaXNfdmlydHVhbF9kcGNkX2RzYzsKIHN0cnVjdCBk c2NfZGVjX2RwY2RfY2FwcyBkc2NfZGVjX2NhcHM7Cn07CgoKCgpzdHJ1Y3QgZGNfc2luayB7CiBl bnVtIHNpZ25hbF90eXBlIHNpbmtfc2lnbmFsOwogc3RydWN0IGRjX2VkaWQgZGNfZWRpZDsKIHN0 cnVjdCBkY19lZGlkX2NhcHMgZWRpZF9jYXBzOwogc3RydWN0IGRjX2NvbnRhaW5lcl9pZCAqZGNf Y29udGFpbmVyX2lkOwogdWludDMyX3QgZG9uZ2xlX21heF9waXhfY2xrOwogdm9pZCAqcHJpdjsK IHN0cnVjdCBzdGVyZW9fM2RfZmVhdHVyZXMgZmVhdHVyZXNfM2RbVElNSU5HXzNEX0ZPUk1BVF9N QVhdOwogYm9vbCBjb252ZXJ0ZXJfZGlzYWJsZV9hdWRpbzsKCiBzdHJ1Y3QgZGNfc2lua19kc2Nf Y2FwcyBzaW5rX2RzY19jYXBzOwoKCiBzdHJ1Y3QgZGNfbGluayAqbGluazsKIHN0cnVjdCBkY19j b250ZXh0ICpjdHg7CgogdWludDMyX3Qgc2lua19pZDsKCgoKCgogc3RydWN0IGtyZWYgcmVmY291 bnQ7Cn07Cgp2b2lkIGRjX3NpbmtfcmV0YWluKHN0cnVjdCBkY19zaW5rICpzaW5rKTsKdm9pZCBk Y19zaW5rX3JlbGVhc2Uoc3RydWN0IGRjX3NpbmsgKnNpbmspOwoKc3RydWN0IGRjX3NpbmtfaW5p dF9kYXRhIHsKIGVudW0gc2lnbmFsX3R5cGUgc2lua19zaWduYWw7CiBzdHJ1Y3QgZGNfbGluayAq bGluazsKIHVpbnQzMl90IGRvbmdsZV9tYXhfcGl4X2NsazsKIGJvb2wgY29udmVydGVyX2Rpc2Fi bGVfYXVkaW87Cn07CgpzdHJ1Y3QgZGNfc2luayAqZGNfc2lua19jcmVhdGUoY29uc3Qgc3RydWN0 IGRjX3NpbmtfaW5pdF9kYXRhICppbml0X3BhcmFtcyk7CgoKc3RydWN0IGRjX2N1cnNvciB7CiBz dHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyBhZGRyZXNzOwogc3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1 dGVzIGF0dHJpYnV0ZXM7Cn07CgoKCgoKZW51bSBkY19pcnFfc291cmNlIGRjX2ludGVycnVwdF90 b19pcnFfc291cmNlKAogIHN0cnVjdCBkYyAqZGMsCiAgdWludDMyX3Qgc3JjX2lkLAogIHVpbnQz Ml90IGV4dF9pZCk7CmJvb2wgZGNfaW50ZXJydXB0X3NldChzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRj X2lycV9zb3VyY2Ugc3JjLCBib29sIGVuYWJsZSk7CnZvaWQgZGNfaW50ZXJydXB0X2FjayhzdHJ1 Y3QgZGMgKmRjLCBlbnVtIGRjX2lycV9zb3VyY2Ugc3JjKTsKZW51bSBkY19pcnFfc291cmNlIGRj X2dldF9ocGRfaXJxX3NvdXJjZV9hdF9pbmRleCgKICBzdHJ1Y3QgZGMgKmRjLCB1aW50MzJfdCBs aW5rX2luZGV4KTsKCgoKCgp2b2lkIGRjX3NldF9wb3dlcl9zdGF0ZSgKICBzdHJ1Y3QgZGMgKmRj LAogIGVudW0gZGNfYWNwaV9jbV9wb3dlcl9zdGF0ZSBwb3dlcl9zdGF0ZSk7CnZvaWQgZGNfcmVz dW1lKHN0cnVjdCBkYyAqZGMpOwp1bnNpZ25lZCBpbnQgZGNfZ2V0X2N1cnJlbnRfYmFja2xpZ2h0 X3B3bShzdHJ1Y3QgZGMgKmRjKTsKdW5zaWduZWQgaW50IGRjX2dldF90YXJnZXRfYmFja2xpZ2h0 X3B3bShzdHJ1Y3QgZGMgKmRjKTsKCmJvb2wgZGNfaXNfZG1jdV9pbml0aWFsaXplZChzdHJ1Y3Qg ZGMgKmRjKTsKYm9vbCBkY19pc19od19pbml0aWFsaXplZChzdHJ1Y3QgZGMgKmRjKTsKCmVudW0g ZGNfc3RhdHVzIGRjX3NldF9jbG9jayhzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRjX2Nsb2NrX3R5cGUg Y2xvY2tfdHlwZSwgdWludDMyX3QgY2xrX2toeiwgdWludDMyX3Qgc3RlcHBpbmcpOwp2b2lkIGRj X2dldF9jbG9jayhzdHJ1Y3QgZGMgKmRjLCBlbnVtIGRjX2Nsb2NrX3R5cGUgY2xvY2tfdHlwZSwg c3RydWN0IGRjX2Nsb2NrX2NvbmZpZyAqY2xvY2tfY2ZnKTsKCgoKIyAxICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGNfZHNjLmgiIDEKIyAzNCAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjX2RzYy5oIgpzdHJ1Y3QgZGNfZHNj X2J3X3JhbmdlIHsKIHVpbnQzMl90IG1pbl9rYnBzOwogdWludDMyX3QgbWluX3RhcmdldF9icHBf eDE2OwogdWludDMyX3QgbWF4X2ticHM7CiB1aW50MzJfdCBtYXhfdGFyZ2V0X2JwcF94MTY7CiB1 aW50MzJfdCBzdHJlYW1fa2JwczsKfTsKCnN0cnVjdCBkaXNwbGF5X3N0cmVhbV9jb21wcmVzc29y IHsKIGNvbnN0IHN0cnVjdCBkc2NfZnVuY3MgKmZ1bmNzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0 eDsKIGludCBpbnN0Owp9OwoKc3RydWN0IGRjX2RzY19wb2xpY3kgewogYm9vbCB1c2VfbWluX3Ns aWNlc19oOwogaW50IG1heF9zbGljZXNfaDsKIGludCBtaW5fc2xpY2VfaGVpZ2h0OwogdWludDMy X3QgbWF4X3RhcmdldF9icHA7CiB1aW50MzJfdCBtaW5fdGFyZ2V0X2JwcDsKfTsKCmJvb2wgZGNf ZHNjX3BhcnNlX2RzY19kcGNkKGNvbnN0IHN0cnVjdCBkYyAqZGMsCiAgY29uc3QgdWludDhfdCAq ZHBjZF9kc2NfYmFzaWNfZGF0YSwKICBjb25zdCB1aW50OF90ICpkcGNkX2RzY19leHRfZGF0YSwK ICBzdHJ1Y3QgZHNjX2RlY19kcGNkX2NhcHMgKmRzY19zaW5rX2NhcHMpOwoKYm9vbCBkY19kc2Nf Y29tcHV0ZV9iYW5kd2lkdGhfcmFuZ2UoCiAgY29uc3Qgc3RydWN0IGRpc3BsYXlfc3RyZWFtX2Nv bXByZXNzb3IgKmRzYywKICBjb25zdCB1aW50MzJfdCBkc2NfbWluX3NsaWNlX2hlaWdodF9vdmVy cmlkZSwKICBjb25zdCB1aW50MzJfdCBtaW5fYnBwLAogIGNvbnN0IHVpbnQzMl90IG1heF9icHAs CiAgY29uc3Qgc3RydWN0IGRzY19kZWNfZHBjZF9jYXBzICpkc2Nfc2lua19jYXBzLAogIGNvbnN0 IHN0cnVjdCBkY19jcnRjX3RpbWluZyAqdGltaW5nLAogIHN0cnVjdCBkY19kc2NfYndfcmFuZ2Ug KnJhbmdlKTsKCmJvb2wgZGNfZHNjX2NvbXB1dGVfY29uZmlnKAogIGNvbnN0IHN0cnVjdCBkaXNw bGF5X3N0cmVhbV9jb21wcmVzc29yICpkc2MsCiAgY29uc3Qgc3RydWN0IGRzY19kZWNfZHBjZF9j YXBzICpkc2Nfc2lua19jYXBzLAogIGNvbnN0IHVpbnQzMl90IGRzY19taW5fc2xpY2VfaGVpZ2h0 X292ZXJyaWRlLAogIHVpbnQzMl90IHRhcmdldF9iYW5kd2lkdGhfa2JwcywKICBjb25zdCBzdHJ1 Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZywKICBzdHJ1Y3QgZGNfZHNjX2NvbmZpZyAqZHNjX2Nm Zyk7Cgp2b2lkIGRjX2RzY19nZXRfcG9saWN5X2Zvcl90aW1pbmcoY29uc3Qgc3RydWN0IGRjX2Ny dGNfdGltaW5nICp0aW1pbmcsCiAgc3RydWN0IGRjX2RzY19wb2xpY3kgKnBvbGljeSk7Cgp2b2lk IGRjX2RzY19wb2xpY3lfc2V0X21heF90YXJnZXRfYnBwX2xpbWl0KHVpbnQzMl90IGxpbWl0KTsK IyAxMDg2ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZGMuaCIg MgojIDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3 L2Nsa19tZ3IuaCIgMgojIDUxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2h3L2Nsa19tZ3IuaCIKc3RydWN0IGNsa19saW1pdF90YWJsZV9lbnRyeSB7CiB1 bnNpZ25lZCBpbnQgdm9sdGFnZTsKIHVuc2lnbmVkIGludCBkY2ZjbGtfbWh6OwogdW5zaWduZWQg aW50IGZjbGtfbWh6OwogdW5zaWduZWQgaW50IG1lbWNsa19taHo7CiB1bnNpZ25lZCBpbnQgc29j Y2xrX21oejsKfTsKCgpzdHJ1Y3QgY2xrX2xpbWl0X3RhYmxlIHsKIHN0cnVjdCBjbGtfbGltaXRf dGFibGVfZW50cnkgZW50cmllc1s4XTsKIHVuc2lnbmVkIGludCBudW1fZW50cmllczsKfTsKCnN0 cnVjdCB3bV9yYW5nZV90YWJsZV9lbnRyeSB7CiB1bnNpZ25lZCBpbnQgd21faW5zdDsKIHVuc2ln bmVkIGludCB3bV90eXBlOwogZG91YmxlIHBzdGF0ZV9sYXRlbmN5X3VzOwogZG91YmxlIHNyX2V4 aXRfdGltZV91czsKIGRvdWJsZSBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91czsKIGJvb2wgdmFs aWQ7Cn07CgoKc3RydWN0IGNsa19sb2dfaW5mbyB7CiBib29sIGVuYWJsZWQ7CiBjaGFyICpwQnVm OwogdW5zaWduZWQgaW50IGJ1ZlNpemU7CiB1bnNpZ25lZCBpbnQgKnN1bV9jaGFyc19wcmludGVk Owp9OwoKc3RydWN0IGNsa19zdGF0ZV9yZWdpc3RlcnNfYW5kX2J5cGFzcyB7CiB1aW50MzJfdCBk Y2ZjbGs7CiB1aW50MzJfdCBkY2ZfZGVlcF9zbGVlcF9kaXZpZGVyOwogdWludDMyX3QgZGNmX2Rl ZXBfc2xlZXBfYWxsb3c7CiB1aW50MzJfdCBkcHJlZmNsazsKIHVpbnQzMl90IGRpc3BjbGs7CiB1 aW50MzJfdCBkcHBjbGs7CgogdWludDMyX3QgZHBwY2xrX2J5cGFzczsKIHVpbnQzMl90IGRjZmNs a19ieXBhc3M7CiB1aW50MzJfdCBkcHJlZmNsa19ieXBhc3M7CiB1aW50MzJfdCBkaXNwY2xrX2J5 cGFzczsKfTsKCnN0cnVjdCBydjFfY2xrX2ludGVybmFsIHsKIHVpbnQzMl90IENMSzBfQ0xLOF9D VVJSRU5UX0NOVDsKIHVpbnQzMl90IENMSzBfQ0xLOF9EU19DTlRMOwogdWludDMyX3QgQ0xLMF9D TEs4X0FMTE9XX0RTOwogdWludDMyX3QgQ0xLMF9DTEsxMF9DVVJSRU5UX0NOVDsKIHVpbnQzMl90 IENMSzBfQ0xLMTFfQ1VSUkVOVF9DTlQ7CgogdWludDMyX3QgQ0xLMF9DTEs4X0JZUEFTU19DTlRM OwogdWludDMyX3QgQ0xLMF9DTEsxMF9CWVBBU1NfQ05UTDsKIHVpbnQzMl90IENMSzBfQ0xLMTFf QllQQVNTX0NOVEw7Cn07CgpzdHJ1Y3Qgcm5fY2xrX2ludGVybmFsIHsKIHVpbnQzMl90IENMSzFf Q0xLMF9DVVJSRU5UX0NOVDsKIHVpbnQzMl90IENMSzFfQ0xLMV9DVVJSRU5UX0NOVDsKIHVpbnQz Ml90IENMSzFfQ0xLMl9DVVJSRU5UX0NOVDsKIHVpbnQzMl90IENMSzFfQ0xLM19DVVJSRU5UX0NO VDsKIHVpbnQzMl90IENMSzFfQ0xLM19EU19DTlRMOwogdWludDMyX3QgQ0xLMV9DTEszX0FMTE9X X0RTOwoKIHVpbnQzMl90IENMSzFfQ0xLMF9CWVBBU1NfQ05UTDsKIHVpbnQzMl90IENMSzFfQ0xL MV9CWVBBU1NfQ05UTDsKIHVpbnQzMl90IENMSzFfQ0xLMl9CWVBBU1NfQ05UTDsKIHVpbnQzMl90 IENMSzFfQ0xLM19CWVBBU1NfQ05UTDsKCn07CgoKc3RydWN0IGNsa19zdGF0ZV9yZWdpc3RlcnMg ewogIHVpbnQzMl90IENMSzBfQ0xLOF9DVVJSRU5UX0NOVDsKICB1aW50MzJfdCBDTEswX0NMSzhf RFNfQ05UTDsKICB1aW50MzJfdCBDTEswX0NMSzhfQUxMT1dfRFM7CiAgdWludDMyX3QgQ0xLMF9D TEsxMF9DVVJSRU5UX0NOVDsKICB1aW50MzJfdCBDTEswX0NMSzExX0NVUlJFTlRfQ05UOwp9OwoK CnN0cnVjdCBjbGtfYnlwYXNzIHsKIHVpbnQzMl90IGRjZmNsa19ieXBhc3M7CiB1aW50MzJfdCBk aXNwY2xrX3B5cGFzczsKIHVpbnQzMl90IGRwcmVmY2xrX2J5cGFzczsKfTsKCgoKCgoKc3RydWN0 IHdtX3RhYmxlIHsKIHN0cnVjdCB3bV9yYW5nZV90YWJsZV9lbnRyeSBlbnRyaWVzWzRdOwp9OwoK c3RydWN0IGNsa19id19wYXJhbXMgewogdW5zaWduZWQgaW50IHZyYW1fdHlwZTsKIHVuc2lnbmVk IGludCBudW1fY2hhbm5lbHM7CiBzdHJ1Y3QgY2xrX2xpbWl0X3RhYmxlIGNsa190YWJsZTsKIHN0 cnVjdCB3bV90YWJsZSB3bV90YWJsZTsKfTsKCgpzdHJ1Y3QgY2xrX3N0YXRlcyB7CiB1aW50MzJf dCBkcHJlZmNsa19raHo7Cn07CgpzdHJ1Y3QgY2xrX21ncl9mdW5jcyB7CgoKCgoKCgogdm9pZCAo KnVwZGF0ZV9jbG9ja3MpKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLAogICBzdHJ1Y3QgZGNfc3Rh dGUgKmNvbnRleHQsCiAgIGJvb2wgc2FmZV90b19sb3dlcik7CgogaW50ICgqZ2V0X2RwX3JlZl9j bGtfZnJlcXVlbmN5KShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7Cgogdm9pZCAoKmluaXRfY2xv Y2tzKShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7Cgogdm9pZCAoKmVuYWJsZV9wbWVfd2EpIChz dHJ1Y3QgY2xrX21nciAqY2xrX21ncik7CiB2b2lkICgqZ2V0X2Nsb2NrKShzdHJ1Y3QgY2xrX21n ciAqY2xrX21nciwKICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAogICBlbnVtIGRjX2Nsb2Nr X3R5cGUgY2xvY2tfdHlwZSwKICAgc3RydWN0IGRjX2Nsb2NrX2NvbmZpZyAqY2xvY2tfY2ZnKTsK CiBib29sICgqYXJlX2Nsb2NrX3N0YXRlc19lcXVhbCkgKHN0cnVjdCBkY19jbG9ja3MgKmEsCiAg IHN0cnVjdCBkY19jbG9ja3MgKmIpOwogdm9pZCAoKm5vdGlmeV93bV9yYW5nZXMpKHN0cnVjdCBj bGtfbWdyICpjbGtfbWdyKTsKfTsKCnN0cnVjdCBjbGtfbWdyIHsKIHN0cnVjdCBkY19jb250ZXh0 ICpjdHg7CiBzdHJ1Y3QgY2xrX21ncl9mdW5jcyAqZnVuY3M7CiBzdHJ1Y3QgZGNfY2xvY2tzIGNs a3M7CiBib29sIHBzcl9hbGxvd19hY3RpdmVfY2FjaGU7CiBpbnQgZHByZWZjbGtfa2h6OwogaW50 IGRlbnRpc3RfdmNvX2ZyZXFfa2h6Owogc3RydWN0IGNsa19zdGF0ZV9yZWdpc3RlcnNfYW5kX2J5 cGFzcyBib290X3NuYXBzaG90Owogc3RydWN0IGNsa19id19wYXJhbXMgKmJ3X3BhcmFtczsKfTsK CgpzdHJ1Y3QgZGNjZzsKCnN0cnVjdCBjbGtfbWdyICpkY19jbGtfbWdyX2NyZWF0ZShzdHJ1Y3Qg ZGNfY29udGV4dCAqY3R4LCBzdHJ1Y3QgcHBfc211X2Z1bmNzICpwcF9zbXUsIHN0cnVjdCBkY2Nn ICpkY2NnKTsKCnZvaWQgZGNfZGVzdHJveV9jbGtfbWdyKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdy KTsKCnZvaWQgY2xrX21ncl9leGl0X29wdGltaXplZF9wd3Jfc3RhdGUoY29uc3Qgc3RydWN0IGRj ICpkYywgc3RydWN0IGNsa19tZ3IgKmNsa19tZ3IpOwoKdm9pZCBjbGtfbWdyX29wdGltaXplX3B3 cl9zdGF0ZShjb25zdCBzdHJ1Y3QgZGMgKmRjLCBzdHJ1Y3QgY2xrX21nciAqY2xrX21ncik7CiMg MzAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvY2xr X21ncl9pbnRlcm5hbC5oIiAyCgoKCgoKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9yZXNvdXJjZS5oIiAxCiMgMjggIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvcmVzb3VyY2UuaCIKIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMQojIDMw ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlw ZXMuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5j L2RjZV9jYWxjcy5oIiAxCiMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvZGNlX2NhbGNzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9id19maXhlZC5oIiAxCiMgMzIgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvYndfZml4ZWQuaCIKc3RydWN0IGJ3X2ZpeGVk IHsKIGludDY0X3QgdmFsdWU7Cn07CgoKCgoKCgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBzdHJ1Y3QgYndfZml4ZWQgYndfbWluMihjb25z dCBzdHJ1Y3QgYndfZml4ZWQgYXJnMSwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBid19maXhlZCBh cmcyKQp7CiByZXR1cm4gKGFyZzEudmFsdWUgPD0gYXJnMi52YWx1ZSkgPyBhcmcxIDogYXJnMjsK fQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGJ3X2ZpeGVkIGJ3X21heDIoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsCiAg ICAgICAgICBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKewogcmV0dXJuIChhcmcyLnZhbHVl IDw9IGFyZzEudmFsdWUpID8gYXJnMSA6IGFyZzI7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1 dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRy aWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19taW4z KHN0cnVjdCBid19maXhlZCB2MSwKICAgICAgICAgIHN0cnVjdCBid19maXhlZCB2MiwKICAgICAg ICAgIHN0cnVjdCBid19maXhlZCB2MykKewogcmV0dXJuIGJ3X21pbjIoYndfbWluMih2MSwgdjIp LCB2Myk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBf X2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9m dW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19tYXgzKHN0cnVjdCBid19maXhlZCB2MSwKICAg ICAgICAgIHN0cnVjdCBid19maXhlZCB2MiwKICAgICAgICAgIHN0cnVjdCBid19maXhlZCB2MykK ewogcmV0dXJuIGJ3X21heDIoYndfbWF4Mih2MSwgdjIpLCB2Myk7Cn0KCnN0cnVjdCBid19maXhl ZCBid19pbnRfdG9fZml4ZWRfbm9uY29uc3QoaW50NjRfdCB2YWx1ZSk7CnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhl ZCBid19pbnRfdG9fZml4ZWQoaW50NjRfdCB2YWx1ZSkKewogaWYgKF9fYnVpbHRpbl9jb25zdGFu dF9wKHZhbHVlKSkgewogIHN0cnVjdCBid19maXhlZCByZXM7CiAgZG8geyBleHRlcm4gdm9pZCBf X2NvbXBpbGV0aW1lX2Fzc2VydF83Myh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oIkJV SUxEX0JVR19PTiBmYWlsZWQ6ICIgInZhbHVlID4gQldfRklYRURfTUFYX0kzMiB8fCB2YWx1ZSA8 IEJXX0ZJWEVEX01JTl9JMzIiKSkpOyBpZiAoISghKHZhbHVlID4gKGludDY0X3QpKCgxVUxMIDw8 ICg2MyAtIDI0KSkgLSAxKSB8fCB2YWx1ZSA8IChpbnQ2NF90KSgtKDFMTCA8PCAoNjMgLSAyNCkp KSkpKSBfX2NvbXBpbGV0aW1lX2Fzc2VydF83MygpOyB9IHdoaWxlICgwKTsKICByZXMudmFsdWUg PSB2YWx1ZSA8PCAyNDsKICByZXR1cm4gcmVzOwogfSBlbHNlCiAgcmV0dXJuIGJ3X2ludF90b19m aXhlZF9ub25jb25zdCh2YWx1ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19n bnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygo bm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGludDMyX3QgYndfZml4ZWRfdG9faW50KHN0cnVjdCBi d19maXhlZCB2YWx1ZSkKewogcmV0dXJuICgodmFsdWUudmFsdWUpID4+IDI0KTsKfQoKc3RydWN0 IGJ3X2ZpeGVkIGJ3X2ZyY190b19maXhlZChpbnQ2NF90IG51bSwgaW50NjRfdCBkZW51bSk7Cgpz dGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVf XygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBz dHJ1Y3QgYndfZml4ZWQgZml4ZWQzMV8zMl90b19id19maXhlZChpbnQ2NF90IHJhdykKewogc3Ry dWN0IGJ3X2ZpeGVkIHJlc3VsdCA9IHsgMCB9OwoKIGlmIChyYXcgPCAwKSB7CiAgcmF3ID0gLXJh dzsKICByZXN1bHQudmFsdWUgPSAtKHJhdyA+PiAoMzIgLSAyNCkpOwogfSBlbHNlIHsKICByZXN1 bHQudmFsdWUgPSByYXcgPj4gKDMyIC0gMjQpOwogfQoKIHJldHVybiByZXN1bHQ7Cn0KCnN0YXRp YyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChf X3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVj dCBid19maXhlZCBid19hZGQoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsCiAgICAgICAgIGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQp7CiBzdHJ1Y3QgYndfZml4ZWQgcmVzOwoKIHJlcy52 YWx1ZSA9IGFyZzEudmFsdWUgKyBhcmcyLnZhbHVlOwoKIHJldHVybiByZXM7Cn0KCnN0YXRpYyBp bmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3Vu dXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBi d19maXhlZCBid19zdWIoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBi d19maXhlZCBhcmcyKQp7CiBzdHJ1Y3QgYndfZml4ZWQgcmVzOwoKIHJlcy52YWx1ZSA9IGFyZzEu dmFsdWUgLSBhcmcyLnZhbHVlOwoKIHJldHVybiByZXM7Cn0KCnN0cnVjdCBid19maXhlZCBid19t dWwoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcy KTsKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmli dXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9u KSkgc3RydWN0IGJ3X2ZpeGVkIGJ3X2Rpdihjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMSwgY29u c3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzIpCnsKIHJldHVybiBid19mcmNfdG9fZml4ZWQoYXJnMS52 YWx1ZSwgYXJnMi52YWx1ZSk7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIHN0cnVjdCBid19maXhlZCBid19tb2QoY29uc3Qgc3RydWN0 IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQp7CiBzdHJ1Y3QgYndf Zml4ZWQgcmVzOwogZGl2NjRfdTY0X3JlbShhcmcxLnZhbHVlLCBhcmcyLnZhbHVlLCAodWludDY0 X3QgKikmcmVzLnZhbHVlKTsKIHJldHVybiByZXM7Cn0KCnN0cnVjdCBid19maXhlZCBid19mbG9v cjIoY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZywgY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIHNpZ25p ZmljYW5jZSk7CnN0cnVjdCBid19maXhlZCBid19jZWlsMihjb25zdCBzdHJ1Y3QgYndfZml4ZWQg YXJnLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgc2lnbmlmaWNhbmNlKTsKCnN0YXRpYyBpbmxpbmUg X19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9f KSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYndfZXF1KGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKewog cmV0dXJuIGFyZzEudmFsdWUgPT0gYXJnMi52YWx1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJp YnV0ZV9fKChfX2dudV9pbmxpbmVfXykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0 dHJpYnV0ZV9fKChub19pbnN0cnVtZW50X2Z1bmN0aW9uKSkgYm9vbCBid19uZXEoY29uc3Qgc3Ry dWN0IGJ3X2ZpeGVkIGFyZzEsIGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQp7CiByZXR1cm4g YXJnMS52YWx1ZSAhPSBhcmcyLnZhbHVlOwp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18o KF9fZ251X2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRl X18oKG5vX2luc3RydW1lbnRfZnVuY3Rpb24pKSBib29sIGJ3X2xlcShjb25zdCBzdHJ1Y3QgYndf Zml4ZWQgYXJnMSwgY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzIpCnsKIHJldHVybiBhcmcxLnZh bHVlIDw9IGFyZzIudmFsdWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9f aW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgYndfbWVxKGNvbnN0IHN0cnVjdCBid19maXhlZCBh cmcxLCBjb25zdCBzdHJ1Y3QgYndfZml4ZWQgYXJnMikKewogcmV0dXJuIGFyZzEudmFsdWUgPj0g YXJnMi52YWx1ZTsKfQoKc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVf XykpIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKSBfX2F0dHJpYnV0ZV9fKChub19pbnN0cnVt ZW50X2Z1bmN0aW9uKSkgYm9vbCBid19sdG4oY29uc3Qgc3RydWN0IGJ3X2ZpeGVkIGFyZzEsIGNv bnN0IHN0cnVjdCBid19maXhlZCBhcmcyKQp7CiByZXR1cm4gYXJnMS52YWx1ZSA8IGFyZzIudmFs dWU7Cn0KCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18pKSBfX2F0 dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1dGVfXygobm9faW5zdHJ1bWVudF9mdW5j dGlvbikpIGJvb2wgYndfbXRuKGNvbnN0IHN0cnVjdCBid19maXhlZCBhcmcxLCBjb25zdCBzdHJ1 Y3QgYndfZml4ZWQgYXJnMikKewogcmV0dXJuIGFyZzEudmFsdWUgPiBhcmcyLnZhbHVlOwp9CiMg MzQgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvZGNlX2Nh bGNzLmgiIDIKCnN0cnVjdCBwaXBlX2N0eDsKc3RydWN0IGRjOwpzdHJ1Y3QgZGNfc3RhdGU7CnN0 cnVjdCBkY2VfYndfb3V0cHV0OwoKZW51bSBid19jYWxjc192ZXJzaW9uIHsKIEJXX0NBTENTX1ZF UlNJT05fSU5WQUxJRCwKIEJXX0NBTENTX1ZFUlNJT05fQ0FSUklaTywKIEJXX0NBTENTX1ZFUlNJ T05fUE9MQVJJUzEwLAogQldfQ0FMQ1NfVkVSU0lPTl9QT0xBUklTMTEsCiBCV19DQUxDU19WRVJT SU9OX1BPTEFSSVMxMiwKIEJXX0NBTENTX1ZFUlNJT05fVkVHQU0sCiBCV19DQUxDU19WRVJTSU9O X1NUT05FWSwKIEJXX0NBTENTX1ZFUlNJT05fVkVHQTEwCn07CiMgNTggIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvZGNlX2NhbGNzLmgiCmVudW0gYndfZGVm aW5lcyB7CgogYndfZGVmX25vID0gMCwKIGJ3X2RlZl9ub25lID0gMCwKIGJ3X2RlZl95ZXMgPSAx LAogYndfZGVmX29rID0gMSwKIGJ3X2RlZl9oaWdoID0gMiwKIGJ3X2RlZl9taWQgPSAxLAogYndf ZGVmX2xvdyA9IDAsCgoKIGJ3X2RlZnNfc3RhcnQgPSAyNTUsCiBid19kZWZfdW5kZXJsYXk0MjIs CiBid19kZWZfdW5kZXJsYXk0MjBfbHVtYSwKIGJ3X2RlZl91bmRlcmxheTQyMF9jaHJvbWEsCiBi d19kZWZfdW5kZXJsYXk0NDQsCiBid19kZWZfZ3JhcGhpY3MsCiBid19kZWZfZGlzcGxheV93cml0 ZV9iYWNrNDIwX2x1bWEsCiBid19kZWZfZGlzcGxheV93cml0ZV9iYWNrNDIwX2Nocm9tYSwKIGJ3 X2RlZl9wb3J0cmFpdCwKIGJ3X2RlZl9oc3JfbXRuXzQsCiBid19kZWZfaHNyX210bl9oX3RhcHMs CiBid19kZWZfY2VpbGluZ19faF90YXBzX2Rpdl80X19fbWVxX2hzciwKIGJ3X2RlZl9pbnZhbGlk X2xpbmVhcl9vcl9zdGVyZW9fbW9kZSwKIGJ3X2RlZl9pbnZhbGlkX3JvdGF0aW9uX29yX2JwcF9v cl9zdGVyZW8sCiBid19kZWZfdnNyX210bl92X3RhcHMsCiBid19kZWZfdnNyX210bl80LAogYndf ZGVmX2F1dG8sCiBid19kZWZfbWFudWFsLAogYndfZGVmX2V4Y2VlZGVkX2FsbG93ZWRfbWF4aW11 bV9zY2xrLAogYndfZGVmX2V4Y2VlZGVkX2FsbG93ZWRfcGFnZV9jbG9zZV9vcGVuLAogYndfZGVm X2V4Y2VlZGVkX2FsbG93ZWRfb3V0c3RhbmRpbmdfcHRlX3JlcV9xdWV1ZV9zaXplLAogYndfZGVm X2V4Y2VlZGVkX2FsbG93ZWRfbWF4aW11bV9idywKIGJ3X2RlZl9sYW5kc2NhcGUsCgoKIGJ3X2Rl Zl9hbnlfbGluZXMsCgoKIGJ3X2RlZl91bmRlcmxheV9vbmx5LAogYndfZGVmX2JsZW5kZWQsCiBi d19kZWZfYmxlbmQsCgoKIGJ3X2RlZl9tb25vLAogYndfZGVmX3NpZGVfYnlfc2lkZSwKIGJ3X2Rl Zl90b3BfYm90dG9tLAoKCiBid19kZWZfNDIwLAogYndfZGVmXzQyMiwKIGJ3X2RlZl80NDQsCgoK IGJ3X2RlZl9saW5lYXIsCiBid19kZWZfdGlsZWQsCiBid19kZWZfYXJyYXlfbGluZWFyX2dlbmVy YWwsCiBid19kZWZfYXJyYXlfbGluZWFyX2FsaWduZWQsCiBid19kZWZfcm90YXRlZF9taWNyb190 aWxpbmcsCiBid19kZWZfZGlzcGxheV9taWNyb190aWxpbmcsCgoKIGJ3X2RlZl9nZGRyNSwKIGJ3 X2RlZl9oYm0sCgoKIGJ3X2RlZl9oaWdoX25vX25icF9zdGF0ZV9jaGFuZ2UsCiBid19kZWZfMF83 MiwKIGJ3X2RlZl8wXzgsCiBid19kZWZfMF85LAoKIGJ3X2RlZl9ub3RvayA9IC0xLAogYndfZGVm X25hID0gLTEKfTsKCnN0cnVjdCBid19jYWxjc19kY2VpcCB7CiBlbnVtIGJ3X2NhbGNzX3ZlcnNp b24gdmVyc2lvbjsKIHVpbnQzMl90IHBlcmNlbnRfb2ZfaWRlYWxfcG9ydF9id19yZWNlaXZlZF9h ZnRlcl91cmdlbnRfbGF0ZW5jeTsKIHVpbnQzMl90IG1heF9hdmVyYWdlX3BlcmNlbnRfb2ZfaWRl YWxfcG9ydF9id19kaXNwbGF5X2Nhbl91c2VfaW5fbm9ybWFsX3N5c3RlbV9vcGVyYXRpb247CiB1 aW50MzJfdCBtYXhfYXZlcmFnZV9wZXJjZW50X29mX2lkZWFsX2RyYW1id19kaXNwbGF5X2Nhbl91 c2VfaW5fbm9ybWFsX3N5c3RlbV9vcGVyYXRpb247CiBib29sIGxhcmdlX2N1cnNvcjsKIHVpbnQz Ml90IGN1cnNvcl9tYXhfb3V0c3RhbmRpbmdfZ3JvdXBfbnVtOwogYm9vbCBkbWlmX3BpcGVfZW5f ZmJjX2NodW5rX3RyYWNrZXI7CiBzdHJ1Y3QgYndfZml4ZWQgZG1pZl9yZXF1ZXN0X2J1ZmZlcl9z aXplOwogdWludDMyX3QgbGluZXNfaW50ZXJsZWF2ZWRfaW50b19sYjsKIHVpbnQzMl90IGxvd19w b3dlcl90aWxpbmdfbW9kZTsKIHVpbnQzMl90IGNodW5rX3dpZHRoOwogdWludDMyX3QgbnVtYmVy X29mX2dyYXBoaWNzX3BpcGVzOwogdWludDMyX3QgbnVtYmVyX29mX3VuZGVybGF5X3BpcGVzOwog Ym9vbCBkaXNwbGF5X3dyaXRlX2JhY2tfc3VwcG9ydGVkOwogYm9vbCBhcmdiX2NvbXByZXNzaW9u X3N1cHBvcnQ7CiBzdHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXlfdnNjYWxlcl9lZmZpY2llbmN5Nl9i aXRfcGVyX2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV92c2NhbGVyX2VmZmlj aWVuY3k4X2JpdF9wZXJfY29tcG9uZW50Owogc3RydWN0IGJ3X2ZpeGVkIHVuZGVybGF5X3ZzY2Fs ZXJfZWZmaWNpZW5jeTEwX2JpdF9wZXJfY29tcG9uZW50Owogc3RydWN0IGJ3X2ZpeGVkIHVuZGVy bGF5X3ZzY2FsZXJfZWZmaWNpZW5jeTEyX2JpdF9wZXJfY29tcG9uZW50Owogc3RydWN0IGJ3X2Zp eGVkIGdyYXBoaWNzX3ZzY2FsZXJfZWZmaWNpZW5jeTZfYml0X3Blcl9jb21wb25lbnQ7CiBzdHJ1 Y3QgYndfZml4ZWQgZ3JhcGhpY3NfdnNjYWxlcl9lZmZpY2llbmN5OF9iaXRfcGVyX2NvbXBvbmVu dDsKIHN0cnVjdCBid19maXhlZCBncmFwaGljc192c2NhbGVyX2VmZmljaWVuY3kxMF9iaXRfcGVy X2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCBncmFwaGljc192c2NhbGVyX2VmZmljaWVuY3kx Ml9iaXRfcGVyX2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCBhbHBoYV92c2NhbGVyX2VmZmlj aWVuY3k7CiB1aW50MzJfdCBtYXhfZG1pZl9idWZmZXJfYWxsb2NhdGVkOwogdWludDMyX3QgZ3Jh cGhpY3NfZG1pZl9zaXplOwogdWludDMyX3QgdW5kZXJsYXlfbHVtYV9kbWlmX3NpemU7CiB1aW50 MzJfdCB1bmRlcmxheV9jaHJvbWFfZG1pZl9zaXplOwogYm9vbCBwcmVfZG93bnNjYWxlcl9lbmFi bGVkOwogYm9vbCB1bmRlcmxheV9kb3duc2NhbGVfcHJlZmV0Y2hfZW5hYmxlZDsKIHN0cnVjdCBi d19maXhlZCBsYl93cml0ZV9waXhlbHNfcGVyX2Rpc3BjbGs7CiBzdHJ1Y3QgYndfZml4ZWQgbGJf c2l6ZV9wZXJfY29tcG9uZW50NDQ0OwogYm9vbCBncmFwaGljc19sYl9ub2Rvd25zY2FsaW5nX211 bHRpX2xpbmVfcHJlZmV0Y2hpbmc7CiBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9hbmRfZHJhbV9j bG9ja19zdGF0ZV9jaGFuZ2VfZ2F0ZWRfYmVmb3JlX2N1cnNvcjsKIHN0cnVjdCBid19maXhlZCB1 bmRlcmxheTQyMF9sdW1hX2xiX3NpemVfcGVyX2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCB1 bmRlcmxheTQyMF9jaHJvbWFfbGJfc2l6ZV9wZXJfY29tcG9uZW50Owogc3RydWN0IGJ3X2ZpeGVk IHVuZGVybGF5NDIyX2xiX3NpemVfcGVyX2NvbXBvbmVudDsKIHN0cnVjdCBid19maXhlZCBjdXJz b3JfY2h1bmtfd2lkdGg7CiBzdHJ1Y3QgYndfZml4ZWQgY3Vyc29yX2RjcF9idWZmZXJfbGluZXM7 CiBzdHJ1Y3QgYndfZml4ZWQgdW5kZXJsYXlfbWF4aW11bV93aWR0aF9lZmZpY2llbnRfZm9yX3Rp bGluZzsKIHN0cnVjdCBid19maXhlZCB1bmRlcmxheV9tYXhpbXVtX2hlaWdodF9lZmZpY2llbnRf Zm9yX3RpbGluZzsKIHN0cnVjdCBid19maXhlZCBwZWFrX3B0ZV9yZXF1ZXN0X3RvX2V2aWN0aW9u X3JhdGlvX2xpbWl0aW5nX211bHRpcGxlX2Rpc3BsYXlzX29yX3NpbmdsZV9yb3RhdGVkX2Rpc3Bs YXk7CiBzdHJ1Y3QgYndfZml4ZWQgcGVha19wdGVfcmVxdWVzdF90b19ldmljdGlvbl9yYXRpb19s aW1pdGluZ19zaW5nbGVfZGlzcGxheV9ub19yb3RhdGlvbjsKIHN0cnVjdCBid19maXhlZCBtaW5p bXVtX291dHN0YW5kaW5nX3B0ZV9yZXF1ZXN0X2xpbWl0Owogc3RydWN0IGJ3X2ZpeGVkIG1heGlt dW1fdG90YWxfb3V0c3RhbmRpbmdfcHRlX3JlcXVlc3RzX2FsbG93ZWRfYnlfc2F3OwogYm9vbCBs aW1pdF9leGNlc3NpdmVfb3V0c3RhbmRpbmdfZG1pZl9yZXF1ZXN0czsKIHN0cnVjdCBid19maXhl ZCBsaW5lYXJfbW9kZV9saW5lX3JlcXVlc3RfYWx0ZXJuYXRpb25fc2xpY2U7CiB1aW50MzJfdCBz Y2F0dGVyX2dhdGhlcl9saW5lc19vZl9wdGVfcHJlZmV0Y2hpbmdfaW5fbGluZWFyX21vZGU7CiB1 aW50MzJfdCBkaXNwbGF5X3dyaXRlX2JhY2s0MjBfbHVtYV9tY2lmd3JfYnVmZmVyX3NpemU7CiB1 aW50MzJfdCBkaXNwbGF5X3dyaXRlX2JhY2s0MjBfY2hyb21hX21jaWZ3cl9idWZmZXJfc2l6ZTsK IHN0cnVjdCBid19maXhlZCByZXF1ZXN0X2VmZmljaWVuY3k7CiBzdHJ1Y3QgYndfZml4ZWQgZGlz cGNsa19wZXJfcmVxdWVzdDsKIHN0cnVjdCBid19maXhlZCBkaXNwY2xrX3JhbXBpbmdfZmFjdG9y Owogc3RydWN0IGJ3X2ZpeGVkIGRpc3BsYXlfcGlwZV90aHJvdWdocHV0X2ZhY3RvcjsKIHVpbnQz Ml90IHNjYXR0ZXJfZ2F0aGVyX3B0ZV9yZXF1ZXN0X3Jvd3NfaW5fdGlsaW5nX21vZGU7CiBzdHJ1 Y3QgYndfZml4ZWQgbWNpZndyX2FsbF9zdXJmYWNlc19idXJzdF90aW1lOwp9OwoKc3RydWN0IGJ3 X2NhbGNzX3ZiaW9zIHsKIGVudW0gYndfZGVmaW5lcyBtZW1vcnlfdHlwZTsKIHVpbnQzMl90IGRy YW1fY2hhbm5lbF93aWR0aF9pbl9iaXRzOwogdWludDMyX3QgbnVtYmVyX29mX2RyYW1fY2hhbm5l bHM7CiB1aW50MzJfdCBudW1iZXJfb2ZfZHJhbV9iYW5rczsKIHN0cnVjdCBid19maXhlZCBsb3df eWNsazsKIHN0cnVjdCBid19maXhlZCBtaWRfeWNsazsKIHN0cnVjdCBid19maXhlZCBoaWdoX3lj bGs7CiBzdHJ1Y3QgYndfZml4ZWQgbG93X3NjbGs7CiBzdHJ1Y3QgYndfZml4ZWQgbWlkMV9zY2xr Owogc3RydWN0IGJ3X2ZpeGVkIG1pZDJfc2NsazsKIHN0cnVjdCBid19maXhlZCBtaWQzX3NjbGs7 CiBzdHJ1Y3QgYndfZml4ZWQgbWlkNF9zY2xrOwogc3RydWN0IGJ3X2ZpeGVkIG1pZDVfc2NsazsK IHN0cnVjdCBid19maXhlZCBtaWQ2X3NjbGs7CiBzdHJ1Y3QgYndfZml4ZWQgaGlnaF9zY2xrOwog c3RydWN0IGJ3X2ZpeGVkIGxvd192b2x0YWdlX21heF9kaXNwY2xrOwogc3RydWN0IGJ3X2ZpeGVk IG1pZF92b2x0YWdlX21heF9kaXNwY2xrOwogc3RydWN0IGJ3X2ZpeGVkIGhpZ2hfdm9sdGFnZV9t YXhfZGlzcGNsazsKIHN0cnVjdCBid19maXhlZCBsb3dfdm9sdGFnZV9tYXhfcGh5Y2xrOwogc3Ry dWN0IGJ3X2ZpeGVkIG1pZF92b2x0YWdlX21heF9waHljbGs7CiBzdHJ1Y3QgYndfZml4ZWQgaGln aF92b2x0YWdlX21heF9waHljbGs7CiBzdHJ1Y3QgYndfZml4ZWQgZGF0YV9yZXR1cm5fYnVzX3dp ZHRoOwogc3RydWN0IGJ3X2ZpeGVkIHRyYzsKIHN0cnVjdCBid19maXhlZCBkbWlmbWNfdXJnZW50 X2xhdGVuY3k7CiBzdHJ1Y3QgYndfZml4ZWQgc3R1dHRlcl9zZWxmX3JlZnJlc2hfZXhpdF9sYXRl bmN5Owogc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfc2VsZl9yZWZyZXNoX2VudHJ5X2xhdGVuY3k7 CiBzdHJ1Y3QgYndfZml4ZWQgbmJwX3N0YXRlX2NoYW5nZV9sYXRlbmN5Owogc3RydWN0IGJ3X2Zp eGVkIG1jaWZ3cm1jX3VyZ2VudF9sYXRlbmN5OwogYm9vbCBzY2F0dGVyX2dhdGhlcl9lbmFibGU7 CiBzdHJ1Y3QgYndfZml4ZWQgZG93bl9zcHJlYWRfcGVyY2VudGFnZTsKIHVpbnQzMl90IGN1cnNv cl93aWR0aDsKIHVpbnQzMl90IGF2ZXJhZ2VfY29tcHJlc3Npb25fcmF0ZTsKIHVpbnQzMl90IG51 bWJlcl9vZl9yZXF1ZXN0X3Nsb3RzX2dtY19yZXNlcnZlc19mb3JfZG1pZl9wZXJfY2hhbm5lbDsK IHN0cnVjdCBid19maXhlZCBibGFja291dF9kdXJhdGlvbjsKIHN0cnVjdCBid19maXhlZCBtYXhp bXVtX2JsYWNrb3V0X3JlY292ZXJ5X3RpbWU7Cn07CgoKCgoKCgpzdHJ1Y3QgYndfY2FsY3NfZGF0 YSB7CgogYm9vbCBkaXNwbGF5X3N5bmNocm9uaXphdGlvbl9lbmFibGVkOwogdWludDMyX3QgbnVt YmVyX29mX2Rpc3BsYXlzOwogZW51bSBid19kZWZpbmVzIHVuZGVybGF5X3N1cmZhY2VfdHlwZTsK IGVudW0gYndfZGVmaW5lcyBwYW5uaW5nX2FuZF9iZXplbF9hZGp1c3RtZW50OwogZW51bSBid19k ZWZpbmVzIGdyYXBoaWNzX3RpbGluZ19tb2RlOwogdWludDMyX3QgZ3JhcGhpY3NfbGJfYnBjOwog dWludDMyX3QgdW5kZXJsYXlfbGJfYnBjOwogZW51bSBid19kZWZpbmVzIHVuZGVybGF5X3RpbGlu Z19tb2RlOwogZW51bSBid19kZWZpbmVzIGQwX3VuZGVybGF5X21vZGU7CiBib29sIGQxX2Rpc3Bs YXlfd3JpdGVfYmFja19kd2JfZW5hYmxlOwogZW51bSBid19kZWZpbmVzIGQxX3VuZGVybGF5X21v ZGU7CgogYm9vbCBpbmNyZWFzZV92b2x0YWdlX3RvX3N1cHBvcnRfbWNsa19zd2l0Y2g7CiBib29s IGNwdXBfc3RhdGVfY2hhbmdlX2VuYWJsZTsKIGJvb2wgY3B1Y19zdGF0ZV9jaGFuZ2VfZW5hYmxl OwogYm9vbCBuYnBfc3RhdGVfY2hhbmdlX2VuYWJsZTsKIGJvb2wgc3R1dHRlcl9tb2RlX2VuYWJs ZTsKIHVpbnQzMl90IHlfY2xrX2xldmVsOwogdWludDMyX3Qgc2Nsa19sZXZlbDsKIHVpbnQzMl90 IG51bWJlcl9vZl91bmRlcmxheV9zdXJmYWNlczsKIHVpbnQzMl90IG51bWJlcl9vZl9kcmFtX3dy Y2hhbm5lbHM7CiB1aW50MzJfdCBjaHVua19yZXF1ZXN0X2RlbGF5OwogdWludDMyX3QgbnVtYmVy X29mX2RyYW1fY2hhbm5lbHM7CiBlbnVtIGJ3X2RlZmluZXMgdW5kZXJsYXlfbWljcm9fdGlsZV9t b2RlOwogZW51bSBid19kZWZpbmVzIGdyYXBoaWNzX21pY3JvX3RpbGVfbW9kZTsKIHN0cnVjdCBi d19maXhlZCBtYXhfcGh5Y2xrOwogc3RydWN0IGJ3X2ZpeGVkIGRyYW1fZWZmaWNpZW5jeTsKIHN0 cnVjdCBid19maXhlZCBzcmNfd2lkdGhfYWZ0ZXJfc3VyZmFjZV90eXBlOwogc3RydWN0IGJ3X2Zp eGVkIHNyY19oZWlnaHRfYWZ0ZXJfc3VyZmFjZV90eXBlOwogc3RydWN0IGJ3X2ZpeGVkIGhzcl9h ZnRlcl9zdXJmYWNlX3R5cGU7CiBzdHJ1Y3QgYndfZml4ZWQgdnNyX2FmdGVyX3N1cmZhY2VfdHlw ZTsKIHN0cnVjdCBid19maXhlZCBzcmNfd2lkdGhfYWZ0ZXJfcm90YXRpb247CiBzdHJ1Y3QgYndf Zml4ZWQgc3JjX2hlaWdodF9hZnRlcl9yb3RhdGlvbjsKIHN0cnVjdCBid19maXhlZCBoc3JfYWZ0 ZXJfcm90YXRpb247CiBzdHJ1Y3QgYndfZml4ZWQgdnNyX2FmdGVyX3JvdGF0aW9uOwogc3RydWN0 IGJ3X2ZpeGVkIHNvdXJjZV9oZWlnaHRfcGl4ZWxzOwogc3RydWN0IGJ3X2ZpeGVkIGhzcl9hZnRl cl9zdGVyZW87CiBzdHJ1Y3QgYndfZml4ZWQgdnNyX2FmdGVyX3N0ZXJlbzsKIHN0cnVjdCBid19m aXhlZCBzb3VyY2Vfd2lkdGhfaW5fbGI7CiBzdHJ1Y3QgYndfZml4ZWQgbGJfbGluZV9waXRjaDsK IHN0cnVjdCBid19maXhlZCB1bmRlcmxheV9tYXhpbXVtX3NvdXJjZV9lZmZpY2llbnRfZm9yX3Rp bGluZzsKIHN0cnVjdCBid19maXhlZCBudW1fbGluZXNfYXRfZnJhbWVfc3RhcnQ7CiBzdHJ1Y3Qg YndfZml4ZWQgbWluX2RtaWZfc2l6ZV9pbl90aW1lOwogc3RydWN0IGJ3X2ZpeGVkIG1pbl9tY2lm d3Jfc2l6ZV9pbl90aW1lOwogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX3JlcXVlc3RzX2Zvcl9kbWlm X3NpemU7CiBzdHJ1Y3QgYndfZml4ZWQgcGVha19wdGVfcmVxdWVzdF90b19ldmljdGlvbl9yYXRp b19saW1pdGluZzsKIHN0cnVjdCBid19maXhlZCB1c2VmdWxfcHRlX3Blcl9wdGVfcmVxdWVzdDsK IHN0cnVjdCBid19maXhlZCBzY2F0dGVyX2dhdGhlcl9wdGVfcmVxdWVzdF9yb3dzOwogc3RydWN0 IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0aGVyX3Jvd19oZWlnaHQ7CiBzdHJ1Y3QgYndfZml4ZWQgc2Nh dHRlcl9nYXRoZXJfcHRlX3JlcXVlc3RzX2luX3ZibGFuazsKIHN0cnVjdCBid19maXhlZCBpbmVm ZmljaWVudF9saW5lYXJfcGl0Y2hfaW5fYnl0ZXM7CiBzdHJ1Y3QgYndfZml4ZWQgY3Vyc29yX3Rv dGFsX2RhdGE7CiBzdHJ1Y3QgYndfZml4ZWQgY3Vyc29yX3RvdGFsX3JlcXVlc3RfZ3JvdXBzOwog c3RydWN0IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0aGVyX3RvdGFsX3B0ZV9yZXF1ZXN0czsKIHN0cnVj dCBid19maXhlZCBzY2F0dGVyX2dhdGhlcl90b3RhbF9wdGVfcmVxdWVzdF9ncm91cHM7CiBzdHJ1 Y3QgYndfZml4ZWQgdGlsZV93aWR0aF9pbl9waXhlbHM7CiBzdHJ1Y3QgYndfZml4ZWQgZG1pZl90 b3RhbF9udW1iZXJfb2ZfZGF0YV9yZXF1ZXN0X3BhZ2VfY2xvc2Vfb3BlbjsKIHN0cnVjdCBid19m aXhlZCBtY2lmd3JfdG90YWxfbnVtYmVyX29mX2RhdGFfcmVxdWVzdF9wYWdlX2Nsb3NlX29wZW47 CiBzdHJ1Y3QgYndfZml4ZWQgYnl0ZXNfcGVyX3BhZ2VfY2xvc2Vfb3BlbjsKIHN0cnVjdCBid19m aXhlZCBtY2lmd3JfdG90YWxfcGFnZV9jbG9zZV9vcGVuX3RpbWU7CiBzdHJ1Y3QgYndfZml4ZWQg dG90YWxfcmVxdWVzdHNfZm9yX2FkanVzdGVkX2RtaWZfc2l6ZTsKIHN0cnVjdCBid19maXhlZCB0 b3RhbF9kbWlmbWNfdXJnZW50X3RyaXBzOwogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2RtaWZtY191 cmdlbnRfbGF0ZW5jeTsKIHN0cnVjdCBid19maXhlZCB0b3RhbF9kaXNwbGF5X3JlYWRzX3JlcXVp cmVkX2RhdGE7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGxheV9yZWFkc19yZXF1aXJlZF9k cmFtX2FjY2Vzc19kYXRhOwogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BsYXlfd3JpdGVzX3Jl cXVpcmVkX2RhdGE7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGxheV93cml0ZXNfcmVxdWly ZWRfZHJhbV9hY2Nlc3NfZGF0YTsKIHN0cnVjdCBid19maXhlZCBkaXNwbGF5X3JlYWRzX3JlcXVp cmVkX2RhdGE7CiBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV9yZWFkc19yZXF1aXJlZF9kcmFtX2Fj Y2Vzc19kYXRhOwogc3RydWN0IGJ3X2ZpeGVkIGRtaWZfdG90YWxfcGFnZV9jbG9zZV9vcGVuX3Rp bWU7CiBzdHJ1Y3QgYndfZml4ZWQgbWluX2N1cnNvcl9tZW1vcnlfaW50ZXJmYWNlX2J1ZmZlcl9z aXplX2luX3RpbWU7CiBzdHJ1Y3QgYndfZml4ZWQgbWluX3JlYWRfYnVmZmVyX3NpemVfaW5fdGlt ZTsKIHN0cnVjdCBid19maXhlZCBkaXNwbGF5X3JlYWRzX3RpbWVfZm9yX2RhdGFfdHJhbnNmZXI7 CiBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV93cml0ZXNfdGltZV9mb3JfZGF0YV90cmFuc2ZlcjsK IHN0cnVjdCBid19maXhlZCBkbWlmX3JlcXVpcmVkX2RyYW1fYmFuZHdpZHRoOwogc3RydWN0IGJ3 X2ZpeGVkIG1jaWZ3cl9yZXF1aXJlZF9kcmFtX2JhbmR3aWR0aDsKIHN0cnVjdCBid19maXhlZCBy ZXF1aXJlZF9kbWlmbWNfdXJnZW50X2xhdGVuY3lfZm9yX3BhZ2VfY2xvc2Vfb3BlbjsKIHN0cnVj dCBid19maXhlZCByZXF1aXJlZF9tY2lmbWN3cl91cmdlbnRfbGF0ZW5jeTsKIHN0cnVjdCBid19m aXhlZCByZXF1aXJlZF9kcmFtX2JhbmR3aWR0aF9nYnl0ZV9wZXJfc2Vjb25kOwogc3RydWN0IGJ3 X2ZpeGVkIGRyYW1fYmFuZHdpZHRoOwogc3RydWN0IGJ3X2ZpeGVkIGRtaWZfcmVxdWlyZWRfc2Ns azsKIHN0cnVjdCBid19maXhlZCBtY2lmd3JfcmVxdWlyZWRfc2NsazsKIHN0cnVjdCBid19maXhl ZCByZXF1aXJlZF9zY2xrOwogc3RydWN0IGJ3X2ZpeGVkIGRvd25zcHJlYWRfZmFjdG9yOwogc3Ry dWN0IGJ3X2ZpeGVkIHZfc2NhbGVyX2VmZmljaWVuY3k7CiBzdHJ1Y3QgYndfZml4ZWQgc2NhbGVy X2xpbWl0c19mYWN0b3I7CiBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV9waXBlX3BpeGVsX3Rocm91 Z2hwdXQ7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGNsa19yZXF1aXJlZF93aXRoX3JhbXBp bmc7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGNsa19yZXF1aXJlZF93aXRob3V0X3JhbXBp bmc7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfcmVhZF9yZXF1ZXN0X2JhbmR3aWR0aDsKIHN0cnVj dCBid19maXhlZCB0b3RhbF93cml0ZV9yZXF1ZXN0X2JhbmR3aWR0aDsKIHN0cnVjdCBid19maXhl ZCBkaXNwY2xrX3JlcXVpcmVkX2Zvcl90b3RhbF9yZWFkX3JlcXVlc3RfYmFuZHdpZHRoOwogc3Ry dWN0IGJ3X2ZpeGVkIHRvdGFsX2Rpc3BjbGtfcmVxdWlyZWRfd2l0aF9yYW1waW5nX3dpdGhfcmVx dWVzdF9iYW5kd2lkdGg7CiBzdHJ1Y3QgYndfZml4ZWQgdG90YWxfZGlzcGNsa19yZXF1aXJlZF93 aXRob3V0X3JhbXBpbmdfd2l0aF9yZXF1ZXN0X2JhbmR3aWR0aDsKIHN0cnVjdCBid19maXhlZCBk aXNwY2xrOwogc3RydWN0IGJ3X2ZpeGVkIGJsYWNrb3V0X3JlY292ZXJ5X3RpbWU7CiBzdHJ1Y3Qg YndfZml4ZWQgbWluX3BpeGVsc19wZXJfZGF0YV9maWZvX2VudHJ5Owogc3RydWN0IGJ3X2ZpeGVk IHNjbGtfZGVlcF9zbGVlcDsKIHN0cnVjdCBid19maXhlZCBjaHVua19yZXF1ZXN0X3RpbWU7CiBz dHJ1Y3QgYndfZml4ZWQgY3Vyc29yX3JlcXVlc3RfdGltZTsKIHN0cnVjdCBid19maXhlZCBsaW5l X3NvdXJjZV9waXhlbHNfdHJhbnNmZXJfdGltZTsKIHN0cnVjdCBid19maXhlZCBkbWlmZHJhbV9h Y2Nlc3NfZWZmaWNpZW5jeTsKIHN0cnVjdCBid19maXhlZCBtY2lmd3JkcmFtX2FjY2Vzc19lZmZp Y2llbmN5Owogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2F2ZXJhZ2VfYmFuZHdpZHRoX25vX2NvbXBy ZXNzaW9uOwogc3RydWN0IGJ3X2ZpeGVkIHRvdGFsX2F2ZXJhZ2VfYmFuZHdpZHRoOwogc3RydWN0 IGJ3X2ZpeGVkIHRvdGFsX3N0dXR0ZXJfY3ljbGVfZHVyYXRpb247CiBzdHJ1Y3QgYndfZml4ZWQg c3R1dHRlcl9idXJzdF90aW1lOwogc3RydWN0IGJ3X2ZpeGVkIHRpbWVfaW5fc2VsZl9yZWZyZXNo Owogc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfZWZmaWNpZW5jeTsKIHN0cnVjdCBid19maXhlZCB3 b3JzdF9udW1iZXJfb2ZfdHJpcHNfdG9fbWVtb3J5Owogc3RydWN0IGJ3X2ZpeGVkIGltbWVkaWF0 ZV9mbGlwX3RpbWU7CiBzdHJ1Y3QgYndfZml4ZWQgbGF0ZW5jeV9mb3Jfbm9uX2RtaWZfY2xpZW50 czsKIHN0cnVjdCBid19maXhlZCBsYXRlbmN5X2Zvcl9ub25fbWNpZndyX2NsaWVudHM7CiBzdHJ1 Y3QgYndfZml4ZWQgZG1pZm1jX3VyZ2VudF9sYXRlbmN5X3N1cHBvcnRlZF9pbl9oaWdoX3NjbGtf YW5kX3ljbGs7CiBzdHJ1Y3QgYndfZml4ZWQgbmJwX3N0YXRlX2RyYW1fc3BlZWRfY2hhbmdlX21h cmdpbjsKIHN0cnVjdCBid19maXhlZCBkaXNwbGF5X3JlYWRzX3RpbWVfZm9yX2RhdGFfdHJhbnNm ZXJfYW5kX3VyZ2VudF9sYXRlbmN5Owogc3RydWN0IGJ3X2ZpeGVkIGRyYW1fc3BlZWRfY2hhbmdl X21hcmdpbjsKIHN0cnVjdCBid19maXhlZCBtaW5fdmJsYW5rX2RyYW1fc3BlZWRfY2hhbmdlX21h cmdpbjsKIHN0cnVjdCBid19maXhlZCBtaW5fc3R1dHRlcl9yZWZyZXNoX2R1cmF0aW9uOwogdWlu dDMyX3QgdG90YWxfc3R1dHRlcl9kbWlmX2J1ZmZlcl9zaXplOwogdWludDMyX3QgdG90YWxfYnl0 ZXNfcmVxdWVzdGVkOwogdWludDMyX3QgbWluX3N0dXR0ZXJfZG1pZl9idWZmZXJfc2l6ZTsKIHVp bnQzMl90IG51bV9zdHV0dGVyX2J1cnN0czsKIHN0cnVjdCBid19maXhlZCB2X2JsYW5rX25icF9z dGF0ZV9kcmFtX3NwZWVkX2NoYW5nZV9sYXRlbmN5X3N1cHBvcnRlZDsKIHN0cnVjdCBid19maXhl ZCBuYnBfc3RhdGVfZHJhbV9zcGVlZF9jaGFuZ2VfbGF0ZW5jeV9zdXBwb3J0ZWQ7CiBib29sIGZi Y19lblsxMl07CiBib29sIGxwdF9lblsxMl07CiBib29sIGRpc3BsYXlzX21hdGNoX2ZsYWdbMTJd OwogYm9vbCB1c2VfYWxwaGFbMTJdOwogYm9vbCBvcnRob2dvbmFsX3JvdGF0aW9uWzEyXTsKIGJv b2wgZW5hYmxlWzEyXTsKIGJvb2wgYWNjZXNzX29uZV9jaGFubmVsX29ubHlbMTJdOwogYm9vbCBz Y2F0dGVyX2dhdGhlcl9lbmFibGVfZm9yX3BpcGVbMTJdOwogYm9vbCBpbnRlcmxhY2VfbW9kZVsx Ml07CiBib29sIGRpc3BsYXlfcHN0YXRlX2NoYW5nZV9lbmFibGVbMTJdOwogYm9vbCBsaW5lX2J1 ZmZlcl9wcmVmZXRjaFsxMl07CiB1aW50MzJfdCBieXRlc19wZXJfcGl4ZWxbMTJdOwogdWludDMy X3QgbWF4X2NodW5rc19ub25fZmJjX21vZGVbMTJdOwogdWludDMyX3QgbGJfYnBjWzEyXTsKIHVp bnQzMl90IG91dHB1dF9icHBoZG1pWzEyXTsKIHVpbnQzMl90IG91dHB1dF9icHBkcDRfbGFuZV9o YnJbMTJdOwogdWludDMyX3Qgb3V0cHV0X2JwcGRwNF9sYW5lX2hicjJbMTJdOwogdWludDMyX3Qg b3V0cHV0X2JwcGRwNF9sYW5lX2hicjNbMTJdOwogZW51bSBid19kZWZpbmVzIHN0ZXJlb19tb2Rl WzEyXTsKIHN0cnVjdCBid19maXhlZCBkbWlmX2J1ZmZlcl90cmFuc2Zlcl90aW1lWzEyXTsKIHN0 cnVjdCBid19maXhlZCBkaXNwbGF5c193aXRoX3NhbWVfbW9kZVsxMl07CiBzdHJ1Y3QgYndfZml4 ZWQgc3R1dHRlcl9kbWlmX2J1ZmZlcl9zaXplWzEyXTsKIHN0cnVjdCBid19maXhlZCBzdHV0dGVy X3JlZnJlc2hfZHVyYXRpb25bMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfZXhpdF93YXRl cm1hcmtbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfZW50cnlfd2F0ZXJtYXJrWzEyXTsK IHN0cnVjdCBid19maXhlZCBoX3RvdGFsWzEyXTsKIHN0cnVjdCBid19maXhlZCB2X3RvdGFsWzEy XTsKIHN0cnVjdCBid19maXhlZCBwaXhlbF9yYXRlWzEyXTsKIHN0cnVjdCBid19maXhlZCBzcmNf d2lkdGhbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHBpdGNoX2luX3BpeGVsc1sxMl07CiBzdHJ1Y3Qg YndfZml4ZWQgcGl0Y2hfaW5fcGl4ZWxzX2FmdGVyX3N1cmZhY2VfdHlwZVsxMl07CiBzdHJ1Y3Qg YndfZml4ZWQgc3JjX2hlaWdodFsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgc2NhbGVfcmF0aW9bMTJd Owogc3RydWN0IGJ3X2ZpeGVkIGhfdGFwc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgdl90YXBzWzEy XTsKIHN0cnVjdCBid19maXhlZCBoX3NjYWxlX3JhdGlvWzEyXTsKIHN0cnVjdCBid19maXhlZCB2 X3NjYWxlX3JhdGlvWzEyXTsKIHN0cnVjdCBid19maXhlZCByb3RhdGlvbl9hbmdsZVsxMl07CiBz dHJ1Y3QgYndfZml4ZWQgY29tcHJlc3Npb25fcmF0ZVsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgaHNy WzEyXTsKIHN0cnVjdCBid19maXhlZCB2c3JbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHNvdXJjZV93 aWR0aF9yb3VuZGVkX3VwX3RvX2NodW5rc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgc291cmNlX3dp ZHRoX3BpeGVsc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgc291cmNlX2hlaWdodF9yb3VuZGVkX3Vw X3RvX2NodW5rc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgZGlzcGxheV9iYW5kd2lkdGhbMTJdOwog c3RydWN0IGJ3X2ZpeGVkIHJlcXVlc3RfYmFuZHdpZHRoWzEyXTsKIHN0cnVjdCBid19maXhlZCBi eXRlc19wZXJfcmVxdWVzdFsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgdXNlZnVsX2J5dGVzX3Blcl9y ZXF1ZXN0WzEyXTsKIHN0cnVjdCBid19maXhlZCBsaW5lc19pbnRlcmxlYXZlZF9pbl9tZW1fYWNj ZXNzWzEyXTsKIHN0cnVjdCBid19maXhlZCBsYXRlbmN5X2hpZGluZ19saW5lc1sxMl07CiBzdHJ1 Y3QgYndfZml4ZWQgbGJfcGFydGl0aW9uc1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgbGJfcGFydGl0 aW9uc19tYXhbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfd2l0aF9yYW1w aW5nWzEyXTsKIHN0cnVjdCBid19maXhlZCBkaXNwY2xrX3JlcXVpcmVkX3dpdGhvdXRfcmFtcGlu Z1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgZGF0YV9idWZmZXJfc2l6ZVsxMl07CiBzdHJ1Y3QgYndf Zml4ZWQgb3V0c3RhbmRpbmdfY2h1bmtfcmVxdWVzdF9saW1pdFsxMl07CiBzdHJ1Y3QgYndfZml4 ZWQgdXJnZW50X3dhdGVybWFya1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgbmJwX3N0YXRlX2NoYW5n ZV93YXRlcm1hcmtbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHZfZmlsdGVyX2luaXRbMTJdOwogc3Ry dWN0IGJ3X2ZpeGVkIHN0dXR0ZXJfY3ljbGVfZHVyYXRpb25bMTJdOwogc3RydWN0IGJ3X2ZpeGVk IGF2ZXJhZ2VfYmFuZHdpZHRoWzEyXTsKIHN0cnVjdCBid19maXhlZCBhdmVyYWdlX2JhbmR3aWR0 aF9ub19jb21wcmVzc2lvblsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgc2NhdHRlcl9nYXRoZXJfcHRl X3JlcXVlc3RfbGltaXRbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIGxiX3NpemVfcGVyX2NvbXBvbmVu dFsxMl07CiBzdHJ1Y3QgYndfZml4ZWQgbWVtb3J5X2NodW5rX3NpemVfaW5fYnl0ZXNbMTJdOwog c3RydWN0IGJ3X2ZpeGVkIHBpcGVfY2h1bmtfc2l6ZV9pbl9ieXRlc1sxMl07CiBzdHJ1Y3QgYndf Zml4ZWQgbnVtYmVyX29mX3RyaXBzX3RvX21lbW9yeV9mb3JfZ2V0dGluZ19hcHRlX3Jvd1sxMl07 CiBzdHJ1Y3QgYndfZml4ZWQgYWRqdXN0ZWRfZGF0YV9idWZmZXJfc2l6ZVsxMl07CiBzdHJ1Y3Qg YndfZml4ZWQgYWRqdXN0ZWRfZGF0YV9idWZmZXJfc2l6ZV9pbl9tZW1vcnlbMTJdOwogc3RydWN0 IGJ3X2ZpeGVkIHBpeGVsc19wZXJfZGF0YV9maWZvX2VudHJ5WzEyXTsKIHN0cnVjdCBid19maXhl ZCBzY2F0dGVyX2dhdGhlcl9wdGVfcmVxdWVzdHNfaW5fcm93WzEyXTsKIHN0cnVjdCBid19maXhl ZCBwdGVfcmVxdWVzdF9wZXJfY2h1bmtbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0 aGVyX3BhZ2Vfd2lkdGhbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIHNjYXR0ZXJfZ2F0aGVyX3BhZ2Vf aGVpZ2h0WzEyXTsKIHN0cnVjdCBid19maXhlZCBsYl9saW5lc19pbl9wZXJfbGluZV9vdXRfaW5f YmVnaW5uaW5nX29mX2ZyYW1lWzEyXTsKIHN0cnVjdCBid19maXhlZCBsYl9saW5lc19pbl9wZXJf bGluZV9vdXRfaW5fbWlkZGxlX29mX2ZyYW1lWzEyXTsKIHN0cnVjdCBid19maXhlZCBjdXJzb3Jf d2lkdGhfcGl4ZWxzWzEyXTsKIHN0cnVjdCBid19maXhlZCBtaW5pbXVtX2xhdGVuY3lfaGlkaW5n WzEyXTsKIHN0cnVjdCBid19maXhlZCBtYXhpbXVtX2xhdGVuY3lfaGlkaW5nWzEyXTsKIHN0cnVj dCBid19maXhlZCBtaW5pbXVtX2xhdGVuY3lfaGlkaW5nX3dpdGhfY3Vyc29yWzEyXTsKIHN0cnVj dCBid19maXhlZCBtYXhpbXVtX2xhdGVuY3lfaGlkaW5nX3dpdGhfY3Vyc29yWzEyXTsKIHN0cnVj dCBid19maXhlZCBzcmNfcGl4ZWxzX2Zvcl9maXJzdF9vdXRwdXRfcGl4ZWxbMTJdOwogc3RydWN0 IGJ3X2ZpeGVkIHNyY19waXhlbHNfZm9yX2xhc3Rfb3V0cHV0X3BpeGVsWzEyXTsKIHN0cnVjdCBi d19maXhlZCBzcmNfZGF0YV9mb3JfZmlyc3Rfb3V0cHV0X3BpeGVsWzEyXTsKIHN0cnVjdCBid19m aXhlZCBzcmNfZGF0YV9mb3JfbGFzdF9vdXRwdXRfcGl4ZWxbMTJdOwogc3RydWN0IGJ3X2ZpeGVk IGFjdGl2ZV90aW1lWzEyXTsKIHN0cnVjdCBid19maXhlZCBob3Jpem9udGFsX2JsYW5rX2FuZF9j aHVua19ncmFudWxhcml0eV9mYWN0b3JbMTJdOwogc3RydWN0IGJ3X2ZpeGVkIGN1cnNvcl9sYXRl bmN5X2hpZGluZ1sxMl07CiBzdHJ1Y3QgYndfZml4ZWQgdl9ibGFua19kcmFtX3NwZWVkX2NoYW5n ZV9tYXJnaW5bMTJdOwogdWludDMyX3QgbnVtX2Rpc3BsYXlzX3dpdGhfbWFyZ2luWzNdWzhdOwog c3RydWN0IGJ3X2ZpeGVkIGRtaWZfYnVyc3RfdGltZVszXVs4XTsKIHN0cnVjdCBid19maXhlZCBt Y2lmd3JfYnVyc3RfdGltZVszXVs4XTsKIHN0cnVjdCBid19maXhlZCBsaW5lX3NvdXJjZV90cmFu c2Zlcl90aW1lWzEyXVszXVs4XTsKIHN0cnVjdCBid19maXhlZCBkcmFtX3NwZWVkX2NoYW5nZV9s aW5lX3NvdXJjZV90cmFuc2Zlcl90aW1lWzEyXVszXVs4XTsKIHN0cnVjdCBid19maXhlZCBtaW5f ZHJhbV9zcGVlZF9jaGFuZ2VfbWFyZ2luWzNdWzhdOwogc3RydWN0IGJ3X2ZpeGVkIGRpc3BjbGtf cmVxdWlyZWRfZm9yX2RyYW1fc3BlZWRfY2hhbmdlWzNdWzhdOwogc3RydWN0IGJ3X2ZpeGVkIGRp c3BjbGtfcmVxdWlyZWRfZm9yX2RyYW1fc3BlZWRfY2hhbmdlX3BpcGVbM11bOF07CiBzdHJ1Y3Qg YndfZml4ZWQgYmxhY2tvdXRfZHVyYXRpb25fbWFyZ2luWzNdWzhdOwogc3RydWN0IGJ3X2ZpeGVk IGRpc3BjbGtfcmVxdWlyZWRfZm9yX2JsYWNrb3V0X2R1cmF0aW9uWzNdWzhdOwogc3RydWN0IGJ3 X2ZpeGVkIGRpc3BjbGtfcmVxdWlyZWRfZm9yX2JsYWNrb3V0X3JlY292ZXJ5WzNdWzhdOwogc3Ry dWN0IGJ3X2ZpeGVkIGRtaWZfcmVxdWlyZWRfc2Nsa19mb3JfdXJnZW50X2xhdGVuY3lbNl07Cn07 CgoKCgp2b2lkIGJ3X2NhbGNzX2luaXQoCiBzdHJ1Y3QgYndfY2FsY3NfZGNlaXAgKmJ3X2RjZWlw LAogc3RydWN0IGJ3X2NhbGNzX3ZiaW9zICpid192YmlvcywKIHN0cnVjdCBod19hc2ljX2lkIGFz aWNfaWQpOwoKCgoKCgoKYm9vbCBid19jYWxjcygKIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiBj b25zdCBzdHJ1Y3QgYndfY2FsY3NfZGNlaXAgKmRjZWlwLAogY29uc3Qgc3RydWN0IGJ3X2NhbGNz X3ZiaW9zICp2YmlvcywKIGNvbnN0IHN0cnVjdCBwaXBlX2N0eCAqcGlwZSwKIGludCBwaXBlX2Nv dW50LAogc3RydWN0IGRjZV9id19vdXRwdXQgKmNhbGNzX291dHB1dCk7CiMgMzEgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMg MSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9kY25fY2Fs Y3MuaCIgMQojIDM0ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMv aW5jL2Rjbl9jYWxjcy5oIgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvLi4vZG1sL2Rpc3BsYXlfbW9kZV9saWIuaCIgMQojIDM1ICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Rjbl9jYWxjcy5oIiAyCgoKc3Ry dWN0IGRjOwpzdHJ1Y3QgZGNfc3RhdGU7CiMgNTEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvZGNuX2NhbGNzLmgiCmVudW0gZGNuX2J3X2RlZnMgewogZGNu X2J3X3ZfbWluMHA2NSwKIGRjbl9id192X21pZDBwNzIsCiBkY25fYndfdl9ub20wcDgsCiBkY25f Yndfdl9tYXgwcDksCiBkY25fYndfdl9tYXgwcDkxLAogZGNuX2J3X25vX3N1cHBvcnQgPSA1LAog ZGNuX2J3X3llcywKIGRjbl9id19ob3IsCiBkY25fYndfdmVydCwKIGRjbl9id19vdmVycmlkZSwK IGRjbl9id19yZ2Jfc3ViXzY0LAogZGNuX2J3X3JnYl9zdWJfMzIsCiBkY25fYndfcmdiX3N1Yl8x NiwKIGRjbl9id19ubywKIGRjbl9id19zd19saW5lYXIsCiBkY25fYndfc3dfNF9rYl9kLAogZGNu X2J3X3N3XzRfa2JfZF94LAogZGNuX2J3X3N3XzY0X2tiX2QsCiBkY25fYndfc3dfNjRfa2JfZF90 LAogZGNuX2J3X3N3XzY0X2tiX2RfeCwKIGRjbl9id19zd192YXJfZCwKIGRjbl9id19zd192YXJf ZF94LAogZGNuX2J3X3l1djQyMF9zdWJfOCwKIGRjbl9id19zd180X2tiX3MsCiBkY25fYndfc3df NF9rYl9zX3gsCiBkY25fYndfc3dfNjRfa2JfcywKIGRjbl9id19zd182NF9rYl9zX3QsCiBkY25f Yndfc3dfNjRfa2Jfc194LAogZGNuX2J3X3dyaXRlYmFjaywKIGRjbl9id180NDQsCiBkY25fYndf ZHAsCiBkY25fYndfNDIwLAogZGNuX2J3X2hkbWksCiBkY25fYndfc3dfdmFyX3MsCiBkY25fYndf c3dfdmFyX3NfeCwKIGRjbl9id195dXY0MjBfc3ViXzEwLAogZGNuX2J3X3N1cHBvcnRlZF9pbl92 X2FjdGl2ZSwKIGRjbl9id19zdXBwb3J0ZWRfaW5fdl9ibGFuaywKIGRjbl9id19ub3Rfc3VwcG9y dGVkLAogZGNuX2J3X25hLAogZGNuX2J3X2VuY29kZXJfOGJwYywKIGRjbl9id19lbmNvZGVyXzEw YnBjLAogZGNuX2J3X2VuY29kZXJfMTJicGMsCiBkY25fYndfZW5jb2Rlcl8xNmJwYywKfTsKCgoK CgpzdHJ1Y3QgZGNuX2J3X2ludGVybmFsX3ZhcnMgewogZmxvYXQgdm9sdGFnZVs1ICsgMV07CiBm bG9hdCBtYXhfZGlzcGNsa1s1ICsgMV07CiBmbG9hdCBtYXhfZHBwY2xrWzUgKyAxXTsKIGZsb2F0 IGRjZmNsa19wZXJfc3RhdGVbNSArIDFdOwogZmxvYXQgcGh5Y2xrX3Blcl9zdGF0ZVs1ICsgMV07 CiBmbG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdpZHRoX3Blcl9zdGF0ZVs1ICsgMV07CiBmbG9h dCBzcl9leGl0X3RpbWU7CiBmbG9hdCBzcl9lbnRlcl9wbHVzX2V4aXRfdGltZTsKIGZsb2F0IGRy YW1fY2xvY2tfY2hhbmdlX2xhdGVuY3k7CiBmbG9hdCB1cmdlbnRfbGF0ZW5jeTsKIGZsb2F0IHdy aXRlX2JhY2tfbGF0ZW5jeTsKIGZsb2F0IHBlcmNlbnRfb2ZfaWRlYWxfZHJhbWJ3X3JlY2VpdmVk X2FmdGVyX3VyZ19sYXRlbmN5OwogZmxvYXQgZGNmY2xrdl9tYXgwcDk7CiBmbG9hdCBkY2ZjbGt2 X25vbTBwODsKIGZsb2F0IGRjZmNsa3ZfbWlkMHA3MjsKIGZsb2F0IGRjZmNsa3ZfbWluMHA2NTsK IGZsb2F0IG1heF9kaXNwY2xrX3ZtYXgwcDk7CiBmbG9hdCBtYXhfZHBwY2xrX3ZtYXgwcDk7CiBm bG9hdCBtYXhfZGlzcGNsa192bm9tMHA4OwogZmxvYXQgbWF4X2RwcGNsa192bm9tMHA4OwogZmxv YXQgbWF4X2Rpc3BjbGtfdm1pZDBwNzI7CiBmbG9hdCBtYXhfZHBwY2xrX3ZtaWQwcDcyOwogZmxv YXQgbWF4X2Rpc3BjbGtfdm1pbjBwNjU7CiBmbG9hdCBtYXhfZHBwY2xrX3ZtaW4wcDY1OwogZmxv YXQgc29jY2xrOwogZmxvYXQgZmFicmljX2FuZF9kcmFtX2JhbmR3aWR0aF92bWF4MHA5OwogZmxv YXQgZmFicmljX2FuZF9kcmFtX2JhbmR3aWR0aF92bm9tMHA4OwogZmxvYXQgZmFicmljX2FuZF9k cmFtX2JhbmR3aWR0aF92bWlkMHA3MjsKIGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhf dm1pbjBwNjU7CiBmbG9hdCByb3VuZF90cmlwX3BpbmdfbGF0ZW5jeV9jeWNsZXM7CiBmbG9hdCB1 cmdlbnRfb3V0X29mX29yZGVyX3JldHVybl9wZXJfY2hhbm5lbDsKIGZsb2F0IG51bWJlcl9vZl9j aGFubmVsczsKIGZsb2F0IHZtbV9wYWdlX3NpemU7CiBmbG9hdCByZXR1cm5fYnVzX3dpZHRoOwog ZmxvYXQgcm9iX2J1ZmZlcl9zaXplX2luX2tieXRlOwogZmxvYXQgZGV0X2J1ZmZlcl9zaXplX2lu X2tieXRlOwogZmxvYXQgZHBwX291dHB1dF9idWZmZXJfcGl4ZWxzOwogZmxvYXQgb3BwX291dHB1 dF9idWZmZXJfbGluZXM7CiBmbG9hdCBwaXhlbF9jaHVua19zaXplX2luX2tieXRlOwogZmxvYXQg cHRlX2NodW5rX3NpemU7CiBmbG9hdCBtZXRhX2NodW5rX3NpemU7CiBmbG9hdCB3cml0ZWJhY2tf Y2h1bmtfc2l6ZTsKIGVudW0gZGNuX2J3X2RlZnMgb2RtX2NhcGFiaWxpdHk7CiBlbnVtIGRjbl9i d19kZWZzIGRzY19jYXBhYmlsaXR5OwogZmxvYXQgbGluZV9idWZmZXJfc2l6ZTsKIGVudW0gZGNu X2J3X2RlZnMgaXNfbGluZV9idWZmZXJfYnBwX2ZpeGVkOwogZmxvYXQgbGluZV9idWZmZXJfZml4 ZWRfYnBwOwogZmxvYXQgbWF4X2xpbmVfYnVmZmVyX2xpbmVzOwogZmxvYXQgd3JpdGViYWNrX2x1 bWFfYnVmZmVyX3NpemU7CiBmbG9hdCB3cml0ZWJhY2tfY2hyb21hX2J1ZmZlcl9zaXplOwogZmxv YXQgbWF4X251bV9kcHA7CiBmbG9hdCBtYXhfbnVtX3dyaXRlYmFjazsKIGZsb2F0IG1heF9kY2h1 Yl90b3BzY2xfdGhyb3VnaHB1dDsKIGZsb2F0IG1heF9wc2NsX3RvbGJfdGhyb3VnaHB1dDsKIGZs b2F0IG1heF9sYl90b3ZzY2xfdGhyb3VnaHB1dDsKIGZsb2F0IG1heF92c2NsX3RvaHNjbF90aHJv dWdocHV0OwogZmxvYXQgbWF4X2hzY2xfcmF0aW87CiBmbG9hdCBtYXhfdnNjbF9yYXRpbzsKIGZs b2F0IG1heF9oc2NsX3RhcHM7CiBmbG9hdCBtYXhfdnNjbF90YXBzOwogZmxvYXQgdW5kZXJfc2Nh bl9mYWN0b3I7CiBmbG9hdCBwaHljbGt2X21heDBwOTsKIGZsb2F0IHBoeWNsa3Zfbm9tMHA4Owog ZmxvYXQgcGh5Y2xrdl9taWQwcDcyOwogZmxvYXQgcGh5Y2xrdl9taW4wcDY1OwogZmxvYXQgcHRl X2J1ZmZlcl9zaXplX2luX3JlcXVlc3RzOwogZmxvYXQgZGlzcGNsa19yYW1waW5nX21hcmdpbjsK IGZsb2F0IGRvd25zcHJlYWRpbmc7CiBmbG9hdCBtYXhfaW50ZXJfZGNuX3RpbGVfcmVwZWF0ZXJz OwogZW51bSBkY25fYndfZGVmcyBjYW5fdnN0YXJ0dXBfbGluZXNfZXhjZWVkX3ZzeW5jX3BsdXNf YmFja19wb3JjaF9saW5lc19taW51c19vbmU7CiBlbnVtIGRjbl9id19kZWZzIGJ1Z19mb3JjaW5n X2x1bWFfYW5kX2Nocm9tYV9yZXF1ZXN0X3RvX3NhbWVfc2l6ZV9maXhlZDsKIGludCBtb2RlOwog ZmxvYXQgdmlld3BvcnRfd2lkdGhbNSArIDFdOwogZmxvYXQgaHRvdGFsWzUgKyAxXTsKIGZsb2F0 IHZ0b3RhbFs1ICsgMV07CiBmbG9hdCB2X3N5bmNfcGx1c19iYWNrX3BvcmNoWzUgKyAxXTsKIGZs b2F0IHZhY3RpdmVbNSArIDFdOwogZmxvYXQgcGl4ZWxfY2xvY2tbNSArIDFdOwogZmxvYXQgdmll d3BvcnRfaGVpZ2h0WzUgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgZGNjX2VuYWJsZVs1ICsgMV07 CiBmbG9hdCBkY2NfcmF0ZVs1ICsgMV07CiBlbnVtIGRjbl9id19kZWZzIHNvdXJjZV9zY2FuWzUg KyAxXTsKIGZsb2F0IGxiX2JpdF9wZXJfcGl4ZWxbNSArIDFdOwogZW51bSBkY25fYndfZGVmcyBz b3VyY2VfcGl4ZWxfZm9ybWF0WzUgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgc291cmNlX3N1cmZh Y2VfbW9kZVs1ICsgMV07CiBlbnVtIGRjbl9id19kZWZzIG91dHB1dF9mb3JtYXRbNSArIDFdOwog ZW51bSBkY25fYndfZGVmcyBvdXRwdXRfZGVlcF9jb2xvcls1ICsgMV07CiBlbnVtIGRjbl9id19k ZWZzIG91dHB1dFs1ICsgMV07CiBmbG9hdCBzY2FsZXJfcmVjX291dF93aWR0aFs1ICsgMV07CiBm bG9hdCBzY2FsZXJfcmVjb3V0X2hlaWdodFs1ICsgMV07CiBmbG9hdCB1bmRlcnNjYW5fb3V0cHV0 WzUgKyAxXTsKIGZsb2F0IGludGVybGFjZV9vdXRwdXRbNSArIDFdOwogZmxvYXQgb3ZlcnJpZGVf aHRhX3BzWzUgKyAxXTsKIGZsb2F0IG92ZXJyaWRlX3Z0YV9wc1s1ICsgMV07CiBmbG9hdCBvdmVy cmlkZV9odGFfcHNjaHJvbWFbNSArIDFdOwogZmxvYXQgb3ZlcnJpZGVfdnRhX3BzY2hyb21hWzUg KyAxXTsKIGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXNbNSArIDFdOwogZmxvYXQgaF9y YXRpb1s1ICsgMV07CiBmbG9hdCB2X3JhdGlvWzUgKyAxXTsKIGZsb2F0IGh0YXBzWzUgKyAxXTsK IGZsb2F0IHZ0YXBzWzUgKyAxXTsKIGZsb2F0IGh0YV9wc2Nocm9tYVs1ICsgMV07CiBmbG9hdCB2 dGFfcHNjaHJvbWFbNSArIDFdOwogZW51bSBkY25fYndfZGVmcyBwdGVfZW5hYmxlOwogZW51bSBk Y25fYndfZGVmcyBzeW5jaHJvbml6ZWRfdmJsYW5rOwogZW51bSBkY25fYndfZGVmcyB0YV9wc2Nh bGN1bGF0aW9uOwogaW50IHZvbHRhZ2Vfb3ZlcnJpZGVfbGV2ZWw7CiBpbnQgbnVtYmVyX29mX2Fj dGl2ZV9wbGFuZXM7CiBpbnQgdm9sdGFnZV9sZXZlbDsKIGVudW0gZGNuX2J3X2RlZnMgaW1tZWRp YXRlX2ZsaXBfc3VwcG9ydGVkOwogZmxvYXQgZGNmY2xrOwogZmxvYXQgbWF4X3BoeWNsazsKIGZs b2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGg7CiBmbG9hdCBkcHBfcGVyX3BsYW5lX3Blcl9y YXRpb1sxICsgMV1bNSArIDFdOwogZW51bSBkY25fYndfZGVmcyBkaXNwY2xrX2RwcGNsa19zdXBw b3J0X3Blcl9yYXRpb1sxICsgMV07CiBmbG9hdCByZXF1aXJlZF9kaXNwY2xrX3Blcl9yYXRpb1sx ICsgMV07CiBlbnVtIGRjbl9id19kZWZzIGVycm9yX21lc3NhZ2VbMSArIDFdOwogaW50IGRpc3Bj bGtfZHBwY2xrX3JhdGlvOwogZmxvYXQgZHBwX3Blcl9wbGFuZVs1ICsgMV07CiBmbG9hdCBkZXRf YnVmZmVyX3NpemVfeVs1ICsgMV07CiBmbG9hdCBkZXRfYnVmZmVyX3NpemVfY1s1ICsgMV07CiBm bG9hdCBzd2F0aF9oZWlnaHRfeVs1ICsgMV07CiBmbG9hdCBzd2F0aF9oZWlnaHRfY1s1ICsgMV07 CiBlbnVtIGRjbl9id19kZWZzIGZpbmFsX2Vycm9yX21lc3NhZ2U7CiBmbG9hdCBmcmVxdWVuY3k7 CiBmbG9hdCBoZWFkZXJfbGluZTsKIGZsb2F0IGhlYWRlcjsKIGVudW0gZGNuX2J3X2RlZnMgdm9s dGFnZV9vdmVycmlkZTsKIGVudW0gZGNuX2J3X2RlZnMgYWxsb3dfZGlmZmVyZW50X2hyYXRpb192 cmF0aW87CiBmbG9hdCBhY2NlcHRhYmxlX3F1YWxpdHlfaHRhX3BzOwogZmxvYXQgYWNjZXB0YWJs ZV9xdWFsaXR5X3Z0YV9wczsKIGZsb2F0IG5vX29mX2RwcFs1ICsgMV1bMSArIDFdWzUgKyAxXTsK IGZsb2F0IHN3YXRoX3dpZHRoX3lwZXJfc3RhdGVbNSArIDFdWzEgKyAxXVs1ICsgMV07CiBmbG9h dCBzd2F0aF9oZWlnaHRfeXBlcl9zdGF0ZVs1ICsgMV1bMSArIDFdWzUgKyAxXTsKIGZsb2F0IHN3 YXRoX2hlaWdodF9jcGVyX3N0YXRlWzUgKyAxXVsxICsgMV1bNSArIDFdOwogZmxvYXQgdXJnZW50 X2xhdGVuY3lfc3VwcG9ydF91c19wZXJfc3RhdGVbNSArIDFdWzEgKyAxXVs1ICsgMV07CiBmbG9h dCB2X3JhdGlvX3ByZV95d2l0aF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdWzUgKyAxXTsK IGZsb2F0IHZfcmF0aW9fcHJlX2N3aXRoX2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSAr IDFdOwogZmxvYXQgcmVxdWlyZWRfcHJlZmV0Y2hfcGl4ZWxfZGF0YV9id193aXRoX2ltbWVkaWF0 ZV9mbGlwWzUgKyAxXVsxICsgMV1bNSArIDFdOwogZmxvYXQgdl9yYXRpb19wcmVfeXdpdGhvdXRf aW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXVs1ICsgMV07CiBmbG9hdCB2X3JhdGlvX3ByZV9j d2l0aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdWzUgKyAxXTsKIGZsb2F0IHJlcXVp cmVkX3ByZWZldGNoX3BpeGVsX2RhdGFfYndfd2l0aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1b MSArIDFdWzUgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgcHJlZmV0Y2hfc3VwcG9ydGVkX3dpdGhf aW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgcHJlZmV0Y2hf c3VwcG9ydGVkX3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXBbNSArIDFdWzEgKyAxXTsKIGVudW0gZGNu X2J3X2RlZnMgdl9yYXRpb19pbl9wcmVmZXRjaF9zdXBwb3J0ZWRfd2l0aF9pbW1lZGlhdGVfZmxp cFs1ICsgMV1bMSArIDFdOwogZW51bSBkY25fYndfZGVmcyB2X3JhdGlvX2luX3ByZWZldGNoX3N1 cHBvcnRlZF93aXRob3V0X2ltbWVkaWF0ZV9mbGlwWzUgKyAxXVsxICsgMV07CiBmbG9hdCByZXF1 aXJlZF9kaXNwY2xrWzUgKyAxXVsxICsgMV07CiBlbnVtIGRjbl9id19kZWZzIGRpc3BjbGtfZHBw Y2xrX3N1cHBvcnRbNSArIDFdWzEgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgdG90YWxfYXZhaWxh YmxlX3BpcGVzX3N1cHBvcnRbNSArIDFdWzEgKyAxXTsKIGZsb2F0IHRvdGFsX251bWJlcl9vZl9h Y3RpdmVfZHBwWzUgKyAxXVsxICsgMV07CiBmbG9hdCB0b3RhbF9udW1iZXJfb2ZfZGNjX2FjdGl2 ZV9kcHBbNSArIDFdWzEgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgdXJnZW50X2xhdGVuY3lfc3Vw cG9ydFs1ICsgMV1bMSArIDFdOwogZW51bSBkY25fYndfZGVmcyBtb2RlX3N1cHBvcnRfd2l0aF9p bW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwogZW51bSBkY25fYndfZGVmcyBtb2RlX3N1cHBv cnRfd2l0aG91dF9pbW1lZGlhdGVfZmxpcFs1ICsgMV1bMSArIDFdOwogZmxvYXQgcmV0dXJuX2J3 X3Blcl9zdGF0ZVs1ICsgMV07CiBlbnVtIGRjbl9id19kZWZzIGRpb19zdXBwb3J0WzUgKyAxXTsK IGZsb2F0IHVyZ2VudF9yb3VuZF90cmlwX2FuZF9vdXRfb2Zfb3JkZXJfbGF0ZW5jeV9wZXJfc3Rh dGVbNSArIDFdOwogZW51bSBkY25fYndfZGVmcyByb2Jfc3VwcG9ydFs1ICsgMV07CiBlbnVtIGRj bl9id19kZWZzIGJhbmR3aWR0aF9zdXBwb3J0WzUgKyAxXTsKIGZsb2F0IHByZWZldGNoX2J3WzUg KyAxXTsKIGZsb2F0IG1ldGFfcHRlX2J5dGVzX3Blcl9mcmFtZVs1ICsgMV07CiBmbG9hdCBtZXRh X3Jvd19ieXRlc1s1ICsgMV07CiBmbG9hdCBkcHRlX2J5dGVzX3Blcl9yb3dbNSArIDFdOwogZmxv YXQgcHJlZmV0Y2hfbGluZXNfeVs1ICsgMV07CiBmbG9hdCBwcmVmZXRjaF9saW5lc19jWzUgKyAx XTsKIGZsb2F0IG1heF9udW1fc3dfeVs1ICsgMV07CiBmbG9hdCBtYXhfbnVtX3N3X2NbNSArIDFd OwogZmxvYXQgbGluZV90aW1lc19mb3JfcHJlZmV0Y2hbNSArIDFdOwogZmxvYXQgbGluZXNfZm9y X21ldGFfcHRlX3dpdGhfaW1tZWRpYXRlX2ZsaXBbNSArIDFdOwogZmxvYXQgbGluZXNfZm9yX21l dGFfcHRlX3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXBbNSArIDFdOwogZmxvYXQgbGluZXNfZm9yX21l dGFfYW5kX2RwdGVfcm93X3dpdGhfaW1tZWRpYXRlX2ZsaXBbNSArIDFdOwogZmxvYXQgbGluZXNf Zm9yX21ldGFfYW5kX2RwdGVfcm93X3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXBbNSArIDFdOwogZmxv YXQgbWluX2RwcGNsa191c2luZ19zaW5nbGVfZHBwWzUgKyAxXTsKIGZsb2F0IHN3YXRoX3dpZHRo X3lzaW5nbGVfZHBwWzUgKyAxXTsKIGZsb2F0IGJ5dGVfcGVyX3BpeGVsX2luX2RldHlbNSArIDFd OwogZmxvYXQgYnl0ZV9wZXJfcGl4ZWxfaW5fZGV0Y1s1ICsgMV07CiBmbG9hdCBudW1iZXJfb2Zf ZHBwX3JlcXVpcmVkX2Zvcl9kZXRfYW5kX2xiX3NpemVbNSArIDFdOwogZmxvYXQgcmVxdWlyZWRf cGh5Y2xrWzUgKyAxXTsKIGZsb2F0IHJlYWQyNTZfYmxvY2tfaGVpZ2h0X3lbNSArIDFdOwogZmxv YXQgcmVhZDI1Nl9ibG9ja193aWR0aF95WzUgKyAxXTsKIGZsb2F0IHJlYWQyNTZfYmxvY2tfaGVp Z2h0X2NbNSArIDFdOwogZmxvYXQgcmVhZDI1Nl9ibG9ja193aWR0aF9jWzUgKyAxXTsKIGZsb2F0 IG1heF9zd2F0aF9oZWlnaHRfeVs1ICsgMV07CiBmbG9hdCBtYXhfc3dhdGhfaGVpZ2h0X2NbNSAr IDFdOwogZmxvYXQgbWluX3N3YXRoX2hlaWdodF95WzUgKyAxXTsKIGZsb2F0IG1pbl9zd2F0aF9o ZWlnaHRfY1s1ICsgMV07CiBmbG9hdCByZWFkX2JhbmR3aWR0aFs1ICsgMV07CiBmbG9hdCB3cml0 ZV9iYW5kd2lkdGhbNSArIDFdOwogZmxvYXQgcHNjbF9mYWN0b3JbNSArIDFdOwogZmxvYXQgcHNj bF9mYWN0b3JfY2hyb21hWzUgKyAxXTsKIGVudW0gZGNuX2J3X2RlZnMgc2NhbGVfcmF0aW9fc3Vw cG9ydDsKIGVudW0gZGNuX2J3X2RlZnMgc291cmNlX2Zvcm1hdF9waXhlbF9hbmRfc2Nhbl9zdXBw b3J0OwogZmxvYXQgdG90YWxfcmVhZF9iYW5kd2lkdGhfY29uc3VtZWRfZ2J5dGVfcGVyX3NlY29u ZDsKIGZsb2F0IHRvdGFsX3dyaXRlX2JhbmR3aWR0aF9jb25zdW1lZF9nYnl0ZV9wZXJfc2Vjb25k OwogZmxvYXQgdG90YWxfYmFuZHdpZHRoX2NvbnN1bWVkX2dieXRlX3Blcl9zZWNvbmQ7CiBlbnVt IGRjbl9id19kZWZzIGRjY19lbmFibGVkX2luX2FueV9wbGFuZTsKIGZsb2F0IHJldHVybl9id190 b2Rjbl9wZXJfc3RhdGU7CiBmbG9hdCBjcml0aWNhbF9wb2ludDsKIGVudW0gZGNuX2J3X2RlZnMg d3JpdGViYWNrX2xhdGVuY3lfc3VwcG9ydDsKIGZsb2F0IHJlcXVpcmVkX291dHB1dF9idzsKIGZs b2F0IHRvdGFsX251bWJlcl9vZl9hY3RpdmVfd3JpdGViYWNrOwogZW51bSBkY25fYndfZGVmcyB0 b3RhbF9hdmFpbGFibGVfd3JpdGViYWNrX3N1cHBvcnQ7CiBmbG9hdCBtYXhpbXVtX3N3YXRoX3dp ZHRoOwogZmxvYXQgbnVtYmVyX29mX2RwcF9yZXF1aXJlZF9mb3JfZGV0X3NpemU7CiBmbG9hdCBu dW1iZXJfb2ZfZHBwX3JlcXVpcmVkX2Zvcl9sYl9zaXplOwogZmxvYXQgbWluX2Rpc3BjbGtfdXNp bmdfc2luZ2xlX2RwcDsKIGZsb2F0IG1pbl9kaXNwY2xrX3VzaW5nX2R1YWxfZHBwOwogZW51bSBk Y25fYndfZGVmcyB2aWV3cG9ydF9zaXplX3N1cHBvcnQ7CiBmbG9hdCBzd2F0aF93aWR0aF9ncmFu dWxhcml0eV95OwogZmxvYXQgcm91bmRlZF91cF9tYXhfc3dhdGhfc2l6ZV9ieXRlc195OwogZmxv YXQgc3dhdGhfd2lkdGhfZ3JhbnVsYXJpdHlfYzsKIGZsb2F0IHJvdW5kZWRfdXBfbWF4X3N3YXRo X3NpemVfYnl0ZXNfYzsKIGZsb2F0IGxpbmVzX2luX2RldF9sdW1hOwogZmxvYXQgbGluZXNfaW5f ZGV0X2Nocm9tYTsKIGZsb2F0IGVmZmVjdGl2ZV9sYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGlu ZXNfbHVtYTsKIGZsb2F0IGVmZmVjdGl2ZV9sYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGluZXNf Y2hyb21hOwogZmxvYXQgZWZmZWN0aXZlX2RldGxiX2xpbmVzX2x1bWE7CiBmbG9hdCBlZmZlY3Rp dmVfZGV0bGJfbGluZXNfY2hyb21hOwogZmxvYXQgcHJvamVjdGVkX2RjZmNsa19kZWVwX3NsZWVw OwogZmxvYXQgbWV0YV9yZXFfaGVpZ2h0X3k7CiBmbG9hdCBtZXRhX3JlcV93aWR0aF95OwogZmxv YXQgbWV0YV9zdXJmYWNlX3dpZHRoX3k7CiBmbG9hdCBtZXRhX3N1cmZhY2VfaGVpZ2h0X3k7CiBm bG9hdCBtZXRhX3B0ZV9ieXRlc19wZXJfZnJhbWVfeTsKIGZsb2F0IG1ldGFfcm93X2J5dGVzX3k7 CiBmbG9hdCBtYWNyb190aWxlX2Jsb2NrX3NpemVfYnl0ZXNfeTsKIGZsb2F0IG1hY3JvX3RpbGVf YmxvY2tfaGVpZ2h0X3k7CiBmbG9hdCBkYXRhX3B0ZV9yZXFfaGVpZ2h0X3k7CiBmbG9hdCBkYXRh X3B0ZV9yZXFfd2lkdGhfeTsKIGZsb2F0IGRwdGVfYnl0ZXNfcGVyX3Jvd195OwogZmxvYXQgbWV0 YV9yZXFfaGVpZ2h0X2M7CiBmbG9hdCBtZXRhX3JlcV93aWR0aF9jOwogZmxvYXQgbWV0YV9zdXJm YWNlX3dpZHRoX2M7CiBmbG9hdCBtZXRhX3N1cmZhY2VfaGVpZ2h0X2M7CiBmbG9hdCBtZXRhX3B0 ZV9ieXRlc19wZXJfZnJhbWVfYzsKIGZsb2F0IG1ldGFfcm93X2J5dGVzX2M7CiBmbG9hdCBtYWNy b190aWxlX2Jsb2NrX3NpemVfYnl0ZXNfYzsKIGZsb2F0IG1hY3JvX3RpbGVfYmxvY2tfaGVpZ2h0 X2M7CiBmbG9hdCBtYWNyb190aWxlX2Jsb2NrX3dpZHRoX2M7CiBmbG9hdCBkYXRhX3B0ZV9yZXFf aGVpZ2h0X2M7CiBmbG9hdCBkYXRhX3B0ZV9yZXFfd2lkdGhfYzsKIGZsb2F0IGRwdGVfYnl0ZXNf cGVyX3Jvd19jOwogZmxvYXQgdl9pbml0X3k7CiBmbG9hdCBtYXhfcGFydGlhbF9zd195OwogZmxv YXQgdl9pbml0X2M7CiBmbG9hdCBtYXhfcGFydGlhbF9zd19jOwogZmxvYXQgZHN0X3hfYWZ0ZXJf c2NhbGVyOwogZmxvYXQgZHN0X3lfYWZ0ZXJfc2NhbGVyOwogZmxvYXQgdGltZV9jYWxjOwogZmxv YXQgdl91cGRhdGVfb2Zmc2V0WzUgKyAxXVsyXTsKIGZsb2F0IHRvdGFsX3JlcGVhdGVyX2RlbGF5 OwogZmxvYXQgdl91cGRhdGVfd2lkdGhbNSArIDFdWzJdOwogZmxvYXQgdl9yZWFkeV9vZmZzZXRb NSArIDFdWzJdOwogZmxvYXQgdGltZV9zZXR1cDsKIGZsb2F0IGV4dHJhX2xhdGVuY3k7CiBmbG9h dCBtYXhpbXVtX3ZzdGFydHVwOwogZmxvYXQgYndfYXZhaWxhYmxlX2Zvcl9pbW1lZGlhdGVfZmxp cDsKIGZsb2F0IHRvdGFsX2ltbWVkaWF0ZV9mbGlwX2J5dGVzWzUgKyAxXTsKIGZsb2F0IHRpbWVf Zm9yX21ldGFfcHRlX3dpdGhfaW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCB0aW1lX2Zvcl9tZXRhX3B0 ZV93aXRob3V0X2ltbWVkaWF0ZV9mbGlwOwogZmxvYXQgdGltZV9mb3JfbWV0YV9hbmRfZHB0ZV9y b3dfd2l0aF9pbW1lZGlhdGVfZmxpcDsKIGZsb2F0IHRpbWVfZm9yX21ldGFfYW5kX2RwdGVfcm93 X3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCBsaW5lX3RpbWVzX3RvX3JlcXVlc3RfcHJl ZmV0Y2hfcGl4ZWxfZGF0YV93aXRoX2ltbWVkaWF0ZV9mbGlwOwogZmxvYXQgbGluZV90aW1lc190 b19yZXF1ZXN0X3ByZWZldGNoX3BpeGVsX2RhdGFfd2l0aG91dF9pbW1lZGlhdGVfZmxpcDsKIGZs b2F0IG1heGltdW1fcmVhZF9iYW5kd2lkdGhfd2l0aF9wcmVmZXRjaF93aXRoX2ltbWVkaWF0ZV9m bGlwOwogZmxvYXQgbWF4aW11bV9yZWFkX2JhbmR3aWR0aF93aXRoX3ByZWZldGNoX3dpdGhvdXRf aW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCB2b2x0YWdlX2xldmVsX3dpdGhfaW1tZWRpYXRlX2ZsaXA7 CiBmbG9hdCB2b2x0YWdlX2xldmVsX3dpdGhvdXRfaW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCB0b3Rh bF9udW1iZXJfb2ZfYWN0aXZlX2RwcF9wZXJfcmF0aW9bMSArIDFdOwogZmxvYXQgYnl0ZV9wZXJf cGl4X2RldHk7CiBmbG9hdCBieXRlX3Blcl9waXhfZGV0YzsKIGZsb2F0IHJlYWQyNTZfYnl0ZXNf YmxvY2tfaGVpZ2h0X3k7CiBmbG9hdCByZWFkMjU2X2J5dGVzX2Jsb2NrX3dpZHRoX3k7CiBmbG9h dCByZWFkMjU2X2J5dGVzX2Jsb2NrX2hlaWdodF9jOwogZmxvYXQgcmVhZDI1Nl9ieXRlc19ibG9j a193aWR0aF9jOwogZmxvYXQgbWF4aW11bV9zd2F0aF9oZWlnaHRfeTsKIGZsb2F0IG1heGltdW1f c3dhdGhfaGVpZ2h0X2M7CiBmbG9hdCBtaW5pbXVtX3N3YXRoX2hlaWdodF95OwogZmxvYXQgbWlu aW11bV9zd2F0aF9oZWlnaHRfYzsKIGZsb2F0IHN3YXRoX3dpZHRoOwogZmxvYXQgcHJlZmV0Y2hf YmFuZHdpZHRoWzUgKyAxXTsKIGZsb2F0IHZfaW5pdF9wcmVfZmlsbF95WzUgKyAxXTsKIGZsb2F0 IHZfaW5pdF9wcmVfZmlsbF9jWzUgKyAxXTsKIGZsb2F0IG1heF9udW1fc3dhdGhfeVs1ICsgMV07 CiBmbG9hdCBtYXhfbnVtX3N3YXRoX2NbNSArIDFdOwogZmxvYXQgcHJlZmlsbF95WzUgKyAxXTsK IGZsb2F0IHByZWZpbGxfY1s1ICsgMV07CiBmbG9hdCB2X3N0YXJ0dXBbNSArIDFdOwogZW51bSBk Y25fYndfZGVmcyBhbGxvd19kcmFtX2Nsb2NrX2NoYW5nZV9kdXJpbmdfdmJsYW5rWzUgKyAxXTsK IGZsb2F0IGFsbG93X2RyYW1fc2VsZl9yZWZyZXNoX2R1cmluZ192YmxhbmtbNSArIDFdOwogZmxv YXQgdl9yYXRpb19wcmVmZXRjaF95WzUgKyAxXTsKIGZsb2F0IHZfcmF0aW9fcHJlZmV0Y2hfY1s1 ICsgMV07CiBmbG9hdCBkZXN0aW5hdGlvbl9saW5lc19mb3JfcHJlZmV0Y2hbNSArIDFdOwogZmxv YXQgZGVzdGluYXRpb25fbGluZXNfdG9fcmVxdWVzdF92bV9pbnZfYmxhbmtbNSArIDFdOwogZmxv YXQgZGVzdGluYXRpb25fbGluZXNfdG9fcmVxdWVzdF9yb3dfaW5fdmJsYW5rWzUgKyAxXTsKIGZs b2F0IG1pbl90dHV2X2JsYW5rWzUgKyAxXTsKIGZsb2F0IGJ5dGVfcGVyX3BpeGVsX2RldHlbNSAr IDFdOwogZmxvYXQgYnl0ZV9wZXJfcGl4ZWxfZGV0Y1s1ICsgMV07CiBmbG9hdCBzd2F0aF93aWR0 aF95WzUgKyAxXTsKIGZsb2F0IGxpbmVzX2luX2RldHlbNSArIDFdOwogZmxvYXQgbGluZXNfaW5f ZGV0eV9yb3VuZGVkX2Rvd25fdG9fc3dhdGhbNSArIDFdOwogZmxvYXQgbGluZXNfaW5fZGV0Y1s1 ICsgMV07CiBmbG9hdCBsaW5lc19pbl9kZXRjX3JvdW5kZWRfZG93bl90b19zd2F0aFs1ICsgMV07 CiBmbG9hdCBmdWxsX2RldF9idWZmZXJpbmdfdGltZV95WzUgKyAxXTsKIGZsb2F0IGZ1bGxfZGV0 X2J1ZmZlcmluZ190aW1lX2NbNSArIDFdOwogZmxvYXQgYWN0aXZlX2RyYW1fY2xvY2tfY2hhbmdl X2xhdGVuY3lfbWFyZ2luWzUgKyAxXTsKIGZsb2F0IHZfYmxhbmtfZHJhbV9jbG9ja19jaGFuZ2Vf bGF0ZW5jeV9tYXJnaW5bNSArIDFdOwogZmxvYXQgZGNmY2xrX2RlZXBfc2xlZXBfcGVyX3BsYW5l WzUgKyAxXTsKIGZsb2F0IHJlYWRfYmFuZHdpZHRoX3BsYW5lX2x1bWFbNSArIDFdOwogZmxvYXQg cmVhZF9iYW5kd2lkdGhfcGxhbmVfY2hyb21hWzUgKyAxXTsKIGZsb2F0IGRpc3BsYXlfcGlwZV9s aW5lX2RlbGl2ZXJ5X3RpbWVfbHVtYVs1ICsgMV07CiBmbG9hdCBkaXNwbGF5X3BpcGVfbGluZV9k ZWxpdmVyeV90aW1lX2Nocm9tYVs1ICsgMV07CiBmbG9hdCBkaXNwbGF5X3BpcGVfbGluZV9kZWxp dmVyeV90aW1lX2x1bWFfcHJlZmV0Y2hbNSArIDFdOwogZmxvYXQgZGlzcGxheV9waXBlX2xpbmVf ZGVsaXZlcnlfdGltZV9jaHJvbWFfcHJlZmV0Y2hbNSArIDFdOwogZmxvYXQgcGl4ZWxfcHRlX2J5 dGVzX3Blcl9yb3dbNSArIDFdOwogZmxvYXQgbWV0YV9wdGVfYnl0ZXNfZnJhbWVbNSArIDFdOwog ZmxvYXQgbWV0YV9yb3dfYnl0ZVs1ICsgMV07CiBmbG9hdCBwcmVmZXRjaF9zb3VyY2VfbGluZXNf eVs1ICsgMV07CiBmbG9hdCBwcmVmZXRjaF9zb3VyY2VfbGluZXNfY1s1ICsgMV07CiBmbG9hdCBw c2NsX3Rocm91Z2hwdXRbNSArIDFdOwogZmxvYXQgcHNjbF90aHJvdWdocHV0X2Nocm9tYVs1ICsg MV07CiBmbG9hdCBvdXRwdXRfYnBwaGRtaVs1ICsgMV07CiBmbG9hdCBvdXRwdXRfYnBwZHA0X2xh bmVfaGJyWzUgKyAxXTsKIGZsb2F0IG91dHB1dF9icHBkcDRfbGFuZV9oYnIyWzUgKyAxXTsKIGZs b2F0IG91dHB1dF9icHBkcDRfbGFuZV9oYnIzWzUgKyAxXTsKIGZsb2F0IG1heF92c3RhcnR1cF9s aW5lc1s1ICsgMV07CiBmbG9hdCBkaXNwY2xrX3dpdGhfcmFtcGluZzsKIGZsb2F0IGRpc3BjbGtf d2l0aG91dF9yYW1waW5nOwogZmxvYXQgZHBwY2xrX3VzaW5nX3NpbmdsZV9kcHBfbHVtYTsKIGZs b2F0IGRwcGNsa191c2luZ19zaW5nbGVfZHBwOwogZmxvYXQgZHBwY2xrX3VzaW5nX3NpbmdsZV9k cHBfY2hyb21hOwogZW51bSBkY25fYndfZGVmcyBvZG1fY2FwYWJsZTsKIGZsb2F0IGRpc3BjbGs7 CiBmbG9hdCBkcHBjbGs7CiBmbG9hdCByZXR1cm5fYmFuZHdpZHRoX3RvX2RjbjsKIGVudW0gZGNu X2J3X2RlZnMgZGNjX2VuYWJsZWRfYW55X3BsYW5lOwogZmxvYXQgcmV0dXJuX2J3OwogZmxvYXQg Y3JpdGljYWxfY29tcHJlc3Npb247CiBmbG9hdCB0b3RhbF9kYXRhX3JlYWRfYmFuZHdpZHRoOwog ZmxvYXQgdG90YWxfYWN0aXZlX2RwcDsKIGZsb2F0IHRvdGFsX2RjY19hY3RpdmVfZHBwOwogZmxv YXQgdXJnZW50X3JvdW5kX3RyaXBfYW5kX291dF9vZl9vcmRlcl9sYXRlbmN5OwogZmxvYXQgbGFz dF9waXhlbF9vZl9saW5lX2V4dHJhX3dhdGVybWFyazsKIGZsb2F0IGRhdGFfZmFicmljX2xpbmVf ZGVsaXZlcnlfdGltZV9sdW1hOwogZmxvYXQgZGF0YV9mYWJyaWNfbGluZV9kZWxpdmVyeV90aW1l X2Nocm9tYTsKIGZsb2F0IHVyZ2VudF9leHRyYV9sYXRlbmN5OwogZmxvYXQgdXJnZW50X3dhdGVy bWFyazsKIGZsb2F0IHB0ZW1ldGFfdXJnZW50X3dhdGVybWFyazsKIGZsb2F0IGRyYW1fY2xvY2tf Y2hhbmdlX3dhdGVybWFyazsKIGZsb2F0IHRvdGFsX2FjdGl2ZV93cml0ZWJhY2s7CiBmbG9hdCB3 cml0ZWJhY2tfZHJhbV9jbG9ja19jaGFuZ2Vfd2F0ZXJtYXJrOwogZmxvYXQgbWluX2Z1bGxfZGV0 X2J1ZmZlcmluZ190aW1lOwogZmxvYXQgZnJhbWVfdGltZV9mb3JfbWluX2Z1bGxfZGV0X2J1ZmZl cmluZ190aW1lOwogZmxvYXQgYXZlcmFnZV9yZWFkX2JhbmR3aWR0aF9nYnl0ZV9wZXJfc2Vjb25k OwogZmxvYXQgcGFydF9vZl9idXJzdF90aGF0X2ZpdHNfaW5fcm9iOwogZmxvYXQgc3R1dHRlcl9i dXJzdF90aW1lOwogZmxvYXQgc3R1dHRlcl9lZmZpY2llbmN5X25vdF9pbmNsdWRpbmdfdmJsYW5r OwogZmxvYXQgc21hbGxlc3RfdmJsYW5rOwogZmxvYXQgdl9ibGFua190aW1lOwogZmxvYXQgc3R1 dHRlcl9lZmZpY2llbmN5OwogZmxvYXQgZGNmX2Nsa19kZWVwX3NsZWVwOwogZmxvYXQgc3R1dHRl cl9leGl0X3dhdGVybWFyazsKIGZsb2F0IHN0dXR0ZXJfZW50ZXJfcGx1c19leGl0X3dhdGVybWFy azsKIGZsb2F0IGVmZmVjdGl2ZV9kZXRfcGx1c19sYl9saW5lc19sdW1hOwogZmxvYXQgdXJnZW50 X2xhdGVuY3lfc3VwcG9ydF91c19sdW1hOwogZmxvYXQgZWZmZWN0aXZlX2RldF9wbHVzX2xiX2xp bmVzX2Nocm9tYTsKIGZsb2F0IHVyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXNfY2hyb21hOwogZmxv YXQgbWluX3VyZ2VudF9sYXRlbmN5X3N1cHBvcnRfdXM7CiBmbG9hdCBub25fdXJnZW50X2xhdGVu Y3lfdG9sZXJhbmNlOwogZmxvYXQgYmxvY2tfaGVpZ2h0MjU2X2J5dGVzX3k7CiBmbG9hdCBibG9j a19oZWlnaHQyNTZfYnl0ZXNfYzsKIGZsb2F0IG1ldGFfcmVxdWVzdF93aWR0aF95OwogZmxvYXQg bWV0YV9zdXJmX3dpZHRoX3k7CiBmbG9hdCBtZXRhX3N1cmZfaGVpZ2h0X3k7CiBmbG9hdCBtZXRh X3B0ZV9ieXRlc19mcmFtZV95OwogZmxvYXQgbWV0YV9yb3dfYnl0ZV95OwogZmxvYXQgbWFjcm9f dGlsZV9zaXplX2J5dGVfeTsKIGZsb2F0IG1hY3JvX3RpbGVfaGVpZ2h0X3k7CiBmbG9hdCBwaXhl bF9wdGVfcmVxX2hlaWdodF95OwogZmxvYXQgcGl4ZWxfcHRlX3JlcV93aWR0aF95OwogZmxvYXQg cGl4ZWxfcHRlX2J5dGVzX3Blcl9yb3dfeTsKIGZsb2F0IG1ldGFfcmVxdWVzdF93aWR0aF9jOwog ZmxvYXQgbWV0YV9zdXJmX3dpZHRoX2M7CiBmbG9hdCBtZXRhX3N1cmZfaGVpZ2h0X2M7CiBmbG9h dCBtZXRhX3B0ZV9ieXRlc19mcmFtZV9jOwogZmxvYXQgbWV0YV9yb3dfYnl0ZV9jOwogZmxvYXQg bWFjcm9fdGlsZV9zaXplX2J5dGVzX2M7CiBmbG9hdCBtYWNyb190aWxlX2hlaWdodF9jOwogZmxv YXQgcGl4ZWxfcHRlX3JlcV9oZWlnaHRfYzsKIGZsb2F0IHBpeGVsX3B0ZV9yZXFfd2lkdGhfYzsK IGZsb2F0IHBpeGVsX3B0ZV9ieXRlc19wZXJfcm93X2M7CiBmbG9hdCBtYXhfcGFydGlhbF9zd2F0 aF95OwogZmxvYXQgbWF4X3BhcnRpYWxfc3dhdGhfYzsKIGZsb2F0IHRfY2FsYzsKIGZsb2F0IG5l eHRfcHJlZmV0Y2hfbW9kZTsKIGZsb2F0IHZfc3RhcnR1cF9saW5lczsKIGVudW0gZGNuX2J3X2Rl ZnMgcGxhbmVzX3dpdGhfcm9vbV90b19pbmNyZWFzZV92c3RhcnR1cF9wcmVmZXRjaF9id19sZXNz X3RoYW5fYWN0aXZlX2J3OwogZW51bSBkY25fYndfZGVmcyBwbGFuZXNfd2l0aF9yb29tX3RvX2lu Y3JlYXNlX3ZzdGFydHVwX3ZyYXRpb19wcmVmZXRjaF9tb3JlX3RoYW40OwogZW51bSBkY25fYndf ZGVmcyBwbGFuZXNfd2l0aF9yb29tX3RvX2luY3JlYXNlX3ZzdGFydHVwX2Rlc3RpbmF0aW9uX2xp bmVfdGltZXNfZm9yX3ByZWZldGNoX2xlc3NfdGhhbjI7CiBlbnVtIGRjbl9id19kZWZzIHZfcmF0 aW9fcHJlZmV0Y2hfbW9yZV90aGFuNDsKIGVudW0gZGNuX2J3X2RlZnMgZGVzdGluYXRpb25fbGlu ZV90aW1lc19mb3JfcHJlZmV0Y2hfbGVzc190aGFuMjsKIGZsb2F0IHByZWZldGNoX21vZGU7CiBm bG9hdCBkc3R4X2FmdGVyX3NjYWxlcjsKIGZsb2F0IGRzdHlfYWZ0ZXJfc2NhbGVyOwogZmxvYXQg dl91cGRhdGVfb2Zmc2V0X3BpeFs1ICsgMV07CiBmbG9hdCB0b3RhbF9yZXBlYXRlcl9kZWxheV90 aW1lOwogZmxvYXQgdl91cGRhdGVfd2lkdGhfcGl4WzUgKyAxXTsKIGZsb2F0IHZfcmVhZHlfb2Zm c2V0X3BpeFs1ICsgMV07CiBmbG9hdCB0X3NldHVwOwogZmxvYXQgdF93YWl0OwogZmxvYXQgYmFu ZHdpZHRoX2F2YWlsYWJsZV9mb3JfaW1tZWRpYXRlX2ZsaXA7CiBmbG9hdCB0b3RfaW1tZWRpYXRl X2ZsaXBfYnl0ZXM7CiBmbG9hdCBtYXhfcmRfYmFuZHdpZHRoOwogZmxvYXQgdGltZV9mb3JfZmV0 Y2hpbmdfbWV0YV9wdGU7CiBmbG9hdCB0aW1lX2Zvcl9mZXRjaGluZ19yb3dfaW5fdmJsYW5rOwog ZmxvYXQgbGluZXNfdG9fcmVxdWVzdF9wcmVmZXRjaF9waXhlbF9kYXRhOwogZmxvYXQgcmVxdWly ZWRfcHJlZmV0Y2hfcGl4X2RhdGFfYnc7CiBlbnVtIGRjbl9id19kZWZzIHByZWZldGNoX21vZGVf c3VwcG9ydGVkOwogZmxvYXQgYWN0aXZlX2RwX3BzOwogZmxvYXQgbGJfbGF0ZW5jeV9oaWRpbmdf c291cmNlX2xpbmVzX3k7CiBmbG9hdCBsYl9sYXRlbmN5X2hpZGluZ19zb3VyY2VfbGluZXNfYzsK IGZsb2F0IGVmZmVjdGl2ZV9sYl9sYXRlbmN5X2hpZGluZ195OwogZmxvYXQgZWZmZWN0aXZlX2xi X2xhdGVuY3lfaGlkaW5nX2M7CiBmbG9hdCBkcHBfb3V0cHV0X2J1ZmZlcl9saW5lc195OwogZmxv YXQgZHBwX291dHB1dF9idWZmZXJfbGluZXNfYzsKIGZsb2F0IGRwcG9wcF9idWZmZXJpbmdfeTsK IGZsb2F0IG1heF9kZXRfYnVmZmVyaW5nX3RpbWVfeTsKIGZsb2F0IGFjdGl2ZV9kcmFtX2Nsb2Nr X2NoYW5nZV9sYXRlbmN5X21hcmdpbl95OwogZmxvYXQgZHBwb3BwX2J1ZmZlcmluZ19jOwogZmxv YXQgbWF4X2RldF9idWZmZXJpbmdfdGltZV9jOwogZmxvYXQgYWN0aXZlX2RyYW1fY2xvY2tfY2hh bmdlX2xhdGVuY3lfbWFyZ2luX2M7CiBmbG9hdCB3cml0ZWJhY2tfZHJhbV9jbG9ja19jaGFuZ2Vf bGF0ZW5jeV9tYXJnaW47CiBmbG9hdCBtaW5fYWN0aXZlX2RyYW1fY2xvY2tfY2hhbmdlX21hcmdp bjsKIGZsb2F0IHZfYmxhbmtfb2ZfbWluX2FjdGl2ZV9kcmFtX2Nsb2NrX2NoYW5nZV9tYXJnaW47 CiBmbG9hdCBzZWNvbmRfbWluX2FjdGl2ZV9kcmFtX2Nsb2NrX2NoYW5nZV9tYXJnaW47CiBmbG9h dCBtaW5fdmJsYW5rX2RyYW1fY2xvY2tfY2hhbmdlX21hcmdpbjsKIGZsb2F0IGRyYW1fY2xvY2tf Y2hhbmdlX21hcmdpbjsKIGZsb2F0IGRyYW1fY2xvY2tfY2hhbmdlX3N1cHBvcnQ7CiBmbG9hdCB3 cl9iYW5kd2lkdGg7CiBmbG9hdCBtYXhfdXNlZF9idzsKfTsKCnN0cnVjdCBkY25fc29jX2JvdW5k aW5nX2JveCB7CiBmbG9hdCBzcl9leGl0X3RpbWU7CiBmbG9hdCBzcl9lbnRlcl9wbHVzX2V4aXRf dGltZTsKIGZsb2F0IHVyZ2VudF9sYXRlbmN5OwogZmxvYXQgd3JpdGVfYmFja19sYXRlbmN5Owog ZmxvYXQgcGVyY2VudF9vZl9pZGVhbF9kcmFtYndfcmVjZWl2ZWRfYWZ0ZXJfdXJnX2xhdGVuY3k7 CiBpbnQgbWF4X3JlcXVlc3Rfc2l6ZTsKIGZsb2F0IGRjZmNsa3ZfbWF4MHA5OwogZmxvYXQgZGNm Y2xrdl9ub20wcDg7CiBmbG9hdCBkY2ZjbGt2X21pZDBwNzI7CiBmbG9hdCBkY2ZjbGt2X21pbjBw NjU7CiBmbG9hdCBtYXhfZGlzcGNsa192bWF4MHA5OwogZmxvYXQgbWF4X2Rpc3BjbGtfdm1pZDBw NzI7CiBmbG9hdCBtYXhfZGlzcGNsa192bm9tMHA4OwogZmxvYXQgbWF4X2Rpc3BjbGtfdm1pbjBw NjU7CiBmbG9hdCBtYXhfZHBwY2xrX3ZtYXgwcDk7CiBmbG9hdCBtYXhfZHBwY2xrX3Zub20wcDg7 CiBmbG9hdCBtYXhfZHBwY2xrX3ZtaWQwcDcyOwogZmxvYXQgbWF4X2RwcGNsa192bWluMHA2NTsK IGZsb2F0IHNvY2NsazsKIGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhfdm1heDBwOTsK IGZsb2F0IGZhYnJpY19hbmRfZHJhbV9iYW5kd2lkdGhfdm5vbTBwODsKIGZsb2F0IGZhYnJpY19h bmRfZHJhbV9iYW5kd2lkdGhfdm1pZDBwNzI7CiBmbG9hdCBmYWJyaWNfYW5kX2RyYW1fYmFuZHdp ZHRoX3ZtaW4wcDY1OwogZmxvYXQgcGh5Y2xrdl9tYXgwcDk7CiBmbG9hdCBwaHljbGt2X25vbTBw ODsKIGZsb2F0IHBoeWNsa3ZfbWlkMHA3MjsKIGZsb2F0IHBoeWNsa3ZfbWluMHA2NTsKIGZsb2F0 IGRvd25zcHJlYWRpbmc7CiBpbnQgcm91bmRfdHJpcF9waW5nX2xhdGVuY3lfY3ljbGVzOwogaW50 IHVyZ2VudF9vdXRfb2Zfb3JkZXJfcmV0dXJuX3Blcl9jaGFubmVsOwogaW50IG51bWJlcl9vZl9j aGFubmVsczsKIGludCB2bW1fcGFnZV9zaXplOwogZmxvYXQgZHJhbV9jbG9ja19jaGFuZ2VfbGF0 ZW5jeTsKIGludCByZXR1cm5fYnVzX3dpZHRoOwogZmxvYXQgcGVyY2VudF9kaXNwX2J3X2xpbWl0 Owp9OwpleHRlcm4gY29uc3Qgc3RydWN0IGRjbl9zb2NfYm91bmRpbmdfYm94IGRjbjEwX3NvY19k ZWZhdWx0czsKCnN0cnVjdCBkY25faXBfcGFyYW1zIHsKIGZsb2F0IHJvYl9idWZmZXJfc2l6ZV9p bl9rYnl0ZTsKIGZsb2F0IGRldF9idWZmZXJfc2l6ZV9pbl9rYnl0ZTsKIGZsb2F0IGRwcF9vdXRw dXRfYnVmZmVyX3BpeGVsczsKIGZsb2F0IG9wcF9vdXRwdXRfYnVmZmVyX2xpbmVzOwogZmxvYXQg cGl4ZWxfY2h1bmtfc2l6ZV9pbl9rYnl0ZTsKIGVudW0gZGNuX2J3X2RlZnMgcHRlX2VuYWJsZTsK IGludCBwdGVfY2h1bmtfc2l6ZTsKIGludCBtZXRhX2NodW5rX3NpemU7CiBpbnQgd3JpdGViYWNr X2NodW5rX3NpemU7CiBlbnVtIGRjbl9id19kZWZzIG9kbV9jYXBhYmlsaXR5OwogZW51bSBkY25f YndfZGVmcyBkc2NfY2FwYWJpbGl0eTsKIGludCBsaW5lX2J1ZmZlcl9zaXplOwogaW50IG1heF9s aW5lX2J1ZmZlcl9saW5lczsKIGVudW0gZGNuX2J3X2RlZnMgaXNfbGluZV9idWZmZXJfYnBwX2Zp eGVkOwogaW50IGxpbmVfYnVmZmVyX2ZpeGVkX2JwcDsKIGludCB3cml0ZWJhY2tfbHVtYV9idWZm ZXJfc2l6ZTsKIGludCB3cml0ZWJhY2tfY2hyb21hX2J1ZmZlcl9zaXplOwogaW50IG1heF9udW1f ZHBwOwogaW50IG1heF9udW1fd3JpdGViYWNrOwogaW50IG1heF9kY2h1Yl90b3BzY2xfdGhyb3Vn aHB1dDsKIGludCBtYXhfcHNjbF90b2xiX3Rocm91Z2hwdXQ7CiBpbnQgbWF4X2xiX3RvdnNjbF90 aHJvdWdocHV0OwogaW50IG1heF92c2NsX3RvaHNjbF90aHJvdWdocHV0OwogZmxvYXQgbWF4X2hz Y2xfcmF0aW87CiBmbG9hdCBtYXhfdnNjbF9yYXRpbzsKIGludCBtYXhfaHNjbF90YXBzOwogaW50 IG1heF92c2NsX3RhcHM7CiBpbnQgcHRlX2J1ZmZlcl9zaXplX2luX3JlcXVlc3RzOwogZmxvYXQg ZGlzcGNsa19yYW1waW5nX21hcmdpbjsKIGZsb2F0IHVuZGVyX3NjYW5fZmFjdG9yOwogaW50IG1h eF9pbnRlcl9kY25fdGlsZV9yZXBlYXRlcnM7CiBlbnVtIGRjbl9id19kZWZzIGNhbl92c3RhcnR1 cF9saW5lc19leGNlZWRfdnN5bmNfcGx1c19iYWNrX3BvcmNoX2xpbmVzX21pbnVzX29uZTsKIGVu dW0gZGNuX2J3X2RlZnMgYnVnX2ZvcmNpbmdfbHVtYV9hbmRfY2hyb21hX3JlcXVlc3RfdG9fc2Ft ZV9zaXplX2ZpeGVkOwogaW50IGRjZmNsa19jc3RhdGVfbGF0ZW5jeTsKfTsKZXh0ZXJuIGNvbnN0 IHN0cnVjdCBkY25faXBfcGFyYW1zIGRjbjEwX2lwX2RlZmF1bHRzOwoKYm9vbCBkY25fdmFsaWRh dGVfYmFuZHdpZHRoKAogIHN0cnVjdCBkYyAqZGMsCiAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0 LAogIGJvb2wgZmFzdF92YWxpZGF0ZSk7Cgp1bnNpZ25lZCBpbnQgZGNuX2ZpbmRfZGNmY2xrX3N1 aXRzX2FsbCgKIGNvbnN0IHN0cnVjdCBkYyAqZGMsCiBzdHJ1Y3QgZGNfY2xvY2tzICpjbG9ja3Mp OwoKdm9pZCBkY25fYndfdXBkYXRlX2Zyb21fcHBsaWIoc3RydWN0IGRjICpkYyk7CnZvaWQgZGNu X2J3X25vdGlmeV9wcGxpYl9vZl93bV9yYW5nZXMoc3RydWN0IGRjICpkYyk7CnZvaWQgZGNuX2J3 X3N5bmNfY2FsY3NfYW5kX2RtbChzdHJ1Y3QgZGMgKmRjKTsKCmVudW0gc291cmNlX21hY3JvX3Rp bGVfc2l6ZSBzd2l6emxlX21vZGVfdG9fbWFjcm9fdGlsZV9zaXplKGVudW0gc3dpenpsZV9tb2Rl X3ZhbHVlcyBzd19tb2RlKTsKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVkZS9kZGNfc2VydmljZV90eXBlcy5oIiAxCiMgMzcgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2RkY19zZXJ2aWNl X3R5cGVzLmgiCmVudW0gZGRjX3Jlc3VsdCB7CiBERENfUkVTVUxUX1VOS05PV04gPSAwLAogRERD X1JFU1VMVF9TVUNFU1NGVUxMLAogRERDX1JFU1VMVF9GQUlMRURfQ0hBTk5FTF9CVVNZLAogRERD X1JFU1VMVF9GQUlMRURfVElNRU9VVCwKIEREQ19SRVNVTFRfRkFJTEVEX1BST1RPQ09MX0VSUk9S LAogRERDX1JFU1VMVF9GQUlMRURfTkFDSywKIEREQ19SRVNVTFRfRkFJTEVEX0lOQ09NUExFVEUs CiBERENfUkVTVUxUX0ZBSUxFRF9PUEVSQVRJT04sCiBERENfUkVTVUxUX0ZBSUxFRF9JTlZBTElE X09QRVJBVElPTiwKIEREQ19SRVNVTFRfRkFJTEVEX0JVRkZFUl9PVkVSRkxPVywKIEREQ19SRVNV TFRfRkFJTEVEX0hQRF9ESVNDT04KfTsKCmVudW0gZGRjX3NlcnZpY2VfdHlwZSB7CiBERENfU0VS VklDRV9UWVBFX0NPTk5FQ1RPUiwKIEREQ19TRVJWSUNFX1RZUEVfRElTUExBWV9QT1JUX01TVCwK fTsKCgoKCnN0cnVjdCBkaXNwbGF5X3NpbmtfY2FwYWJpbGl0eSB7CgogZW51bSBkaXNwbGF5X2Rv bmdsZV90eXBlIGRvbmdsZV90eXBlOwoKCgoKCiB1aW50MzJfdCBkb3duc3RybV9zaW5rX2NvdW50 OwoKCiBib29sIGRvd25zdHJtX3NpbmtfY291bnRfdmFsaWQ7CgoKIHVpbnQzMl90IGFkZGl0aW9u YWxfYXVkaW9fZGVsYXk7CgogdWludDMyX3QgYXVkaW9fbGF0ZW5jeTsKCiB1aW50MzJfdCB2aWRl b19sYXRlbmN5X2ludGVybGFjZTsKCiB1aW50MzJfdCB2aWRlb19sYXRlbmN5X3Byb2dyZXNzaXZl OwoKIHVpbnQzMl90IG1heF9oZG1pX3BpeGVsX2Nsb2NrOwoKIGVudW0gZGNfY29sb3JfZGVwdGgg bWF4X2hkbWlfZGVlcF9jb2xvcjsKCgoKCgogYm9vbCBzc19zdXBwb3J0ZWQ7CgogdWludDMyX3Qg ZHBfbGlua19sYW5lX2NvdW50OwogdWludDMyX3QgZHBfbGlua19yYXRlOwogdWludDMyX3QgZHBf bGlua19zcGVhZDsKCgoKIGJvb2wgaXNfZHBfaGRtaV9zM2RfY29udmVydGVyOwoKCiBib29sIGlz X2VkcF9zaW5rX2NhcF92YWxpZDsKCiBlbnVtIGRkY190cmFuc2FjdGlvbl90eXBlIHRyYW5zYWN0 aW9uX3R5cGU7CiBlbnVtIHNpZ25hbF90eXBlIHNpZ25hbDsKfTsKCnN0cnVjdCBhdl9zeW5jX2Rh dGEgewogdWludDhfdCBhdl9ncmFudWxhcml0eTsKIHVpbnQ4X3QgYXVkX2RlY19sYXQxOwogdWlu dDhfdCBhdWRfZGVjX2xhdDI7CiB1aW50OF90IGF1ZF9wcF9sYXQxOwogdWludDhfdCBhdWRfcHBf bGF0MjsKIHVpbnQ4X3QgdmlkX2ludGVyX2xhdDsKIHVpbnQ4X3QgdmlkX3Byb2dfbGF0OwogdWlu dDhfdCBhdWRfZGVsX2luczE7CiB1aW50OF90IGF1ZF9kZWxfaW5zMjsKIHVpbnQ4X3QgYXVkX2Rl bF9pbnMzOwp9OwoKCnN0YXRpYyBjb25zdCB1aW50OF90IERQX1ZHQV9MVkRTX0NPTlZFUlRFUl9J RF8yW10gPSAic2l2YXJUIjsKCnN0YXRpYyBjb25zdCB1aW50OF90IERQX1ZHQV9MVkRTX0NPTlZF UlRFUl9JRF8zW10gPSAiZG5vbWxBIjsKCnN0YXRpYyBjb25zdCB1aW50OF90IERQX0RWSV9DT05W RVJURVJfSURfNFtdID0gIm0yRFZJYSI7CiMgMzMgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCgojIDEgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvbWVtX2lucHV0LmgiIDEKIyAzMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tZW1faW5w dXQuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvZG1s L2Rpc3BsYXlfbW9kZV9zdHJ1Y3RzLmgiIDEKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tZW1faW5wdXQuaCIgMgoKc3RydWN0IGRjaHViX2lu aXRfZGF0YTsKc3RydWN0IGNzdGF0ZV9wc3RhdGVfd2F0ZXJtYXJrc19zdCB7CiB1aW50MzJfdCBj c3RhdGVfZXhpdF9uczsKIHVpbnQzMl90IGNzdGF0ZV9lbnRlcl9wbHVzX2V4aXRfbnM7CiB1aW50 MzJfdCBwc3RhdGVfY2hhbmdlX25zOwp9OwoKc3RydWN0IGRjbl93YXRlcm1hcmtzIHsKIHVpbnQz Ml90IHB0ZV9tZXRhX3VyZ2VudF9uczsKIHVpbnQzMl90IHVyZ2VudF9uczsKIHVpbnQzMl90IGZy YWNfdXJnX2J3X25vbTsKIHVpbnQzMl90IGZyYWNfdXJnX2J3X2ZsaXA7CiBpbnQzMl90IHVyZ2Vu dF9sYXRlbmN5X25zOwogc3RydWN0IGNzdGF0ZV9wc3RhdGVfd2F0ZXJtYXJrc19zdCBjc3RhdGVf cHN0YXRlOwp9OwoKc3RydWN0IGRjbl93YXRlcm1hcmtfc2V0IHsKIHN0cnVjdCBkY25fd2F0ZXJt YXJrcyBhOwogc3RydWN0IGRjbl93YXRlcm1hcmtzIGI7CiBzdHJ1Y3QgZGNuX3dhdGVybWFya3Mg YzsKIHN0cnVjdCBkY25fd2F0ZXJtYXJrcyBkOwp9OwoKc3RydWN0IGRjZV93YXRlcm1hcmtzIHsK IGludCBhX21hcms7CiBpbnQgYl9tYXJrOwogaW50IGNfbWFyazsKIGludCBkX21hcms7Cn07Cgpz dHJ1Y3Qgc3R1dHRlcl9tb2RlcyB7CiBib29sIGVuaGFuY2VkOwogYm9vbCBxdWFkX2RtaWZfYnVm ZmVyOwogYm9vbCB3YXRlcm1hcmtfbmJfcHN0YXRlOwp9OwoKc3RydWN0IG1lbV9pbnB1dCB7CiBj b25zdCBzdHJ1Y3QgbWVtX2lucHV0X2Z1bmNzICpmdW5jczsKIHN0cnVjdCBkY19jb250ZXh0ICpj dHg7CiBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyByZXF1ZXN0X2FkZHJlc3M7CiBzdHJ1Y3QgZGNf cGxhbmVfYWRkcmVzcyBjdXJyZW50X2FkZHJlc3M7CiBpbnQgaW5zdDsKIHN0cnVjdCBzdHV0dGVy X21vZGVzIHN0dXR0ZXJfbW9kZTsKfTsKCnN0cnVjdCB2bV9zeXN0ZW1fYXBlcnR1cmVfcGFyYW0g ewogdW5pb24gbGFyZ2VfaW50ZWdlciBzeXNfZGVmYXVsdDsKIHVuaW9uIGxhcmdlX2ludGVnZXIg c3lzX2xvdzsKIHVuaW9uIGxhcmdlX2ludGVnZXIgc3lzX2hpZ2g7Cn07CgpzdHJ1Y3Qgdm1fY29u dGV4dDBfcGFyYW0gewogdW5pb24gbGFyZ2VfaW50ZWdlciBwdGVfYmFzZTsKIHVuaW9uIGxhcmdl X2ludGVnZXIgcHRlX3N0YXJ0OwogdW5pb24gbGFyZ2VfaW50ZWdlciBwdGVfZW5kOwogdW5pb24g bGFyZ2VfaW50ZWdlciBmYXVsdF9kZWZhdWx0Owp9OwoKc3RydWN0IG1lbV9pbnB1dF9mdW5jcyB7 CiB2b2lkICgqbWVtX2lucHV0X3NldHVwKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0 LAogICBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9kbGdfcmVnc19zdCAqZGxnX3JlZ3MsCiAgIHN0 cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0ICp0dHVfcmVncywKICAgc3RydWN0IF92 Y3NfZHBpX2Rpc3BsYXlfcnFfcmVnc19zdCAqcnFfcmVncywKICAgc3RydWN0IF92Y3NfZHBpX2Rp c3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCAqcGlwZV9kZXN0KTsKCiB2b2lkICgqZGNjX2NvbnRy b2wpKHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwgYm9vbCBlbmFibGUsCiAgIGJvb2wgaW5k ZXBlbmRlbnRfNjRiX2Jsa3MpOwogdm9pZCAoKm1lbV9wcm9ncmFtX3ZpZXdwb3J0KSgKICAgc3Ry dWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogICBjb25zdCBzdHJ1Y3QgcmVjdCAqdmlld3BvcnQs CiAgIGNvbnN0IHN0cnVjdCByZWN0ICp2aWV3cG9ydF9jKTsKCiB2b2lkICgqbWVtX2lucHV0X3By b2dyYW1fZGlzcGxheV9tYXJrcykoCiAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogIHN0 cnVjdCBkY2Vfd2F0ZXJtYXJrcyBuYnAsCiAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXIs CiAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXJfZW50ZXIsCiAgc3RydWN0IGRjZV93YXRl cm1hcmtzIHVyZ2VudCwKICB1aW50MzJfdCB0b3RhbF9kZXN0X2xpbmVfdGltZV9ucyk7Cgogdm9p ZCAoKm1lbV9pbnB1dF9wcm9ncmFtX2Nocm9tYV9kaXNwbGF5X21hcmtzKSgKICAgc3RydWN0IG1l bV9pbnB1dCAqbWVtX2lucHV0LAogICBzdHJ1Y3QgZGNlX3dhdGVybWFya3MgbmJwLAogICBzdHJ1 Y3QgZGNlX3dhdGVybWFya3Mgc3R1dHRlciwKICAgc3RydWN0IGRjZV93YXRlcm1hcmtzIHVyZ2Vu dCwKICAgdWludDMyX3QgdG90YWxfZGVzdF9saW5lX3RpbWVfbnMpOwoKIHZvaWQgKCphbGxvY2F0 ZV9tZW1faW5wdXQpKAogIHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwKICB1aW50MzJfdCBo X3RvdGFsLAogIHVpbnQzMl90IHZfdG90YWwsCiAgdWludDMyX3QgcGl4X2Nsa19raHosCiAgdWlu dDMyX3QgdG90YWxfc3RyZWFtc19udW0pOwoKIHZvaWQgKCpmcmVlX21lbV9pbnB1dCkoCiAgc3Ry dWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogIHVpbnQzMl90IHBhdGhzX251bSk7CgogYm9vbCAo Km1lbV9pbnB1dF9wcm9ncmFtX3N1cmZhY2VfZmxpcF9hbmRfYWRkcikoCiAgc3RydWN0IG1lbV9p bnB1dCAqbWVtX2lucHV0LAogIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzICphZGRyZXNz LAogIGJvb2wgZmxpcF9pbW1lZGlhdGUpOwoKIHZvaWQgKCptZW1faW5wdXRfcHJvZ3JhbV9wdGVf dm0pKAogIHN0cnVjdCBtZW1faW5wdXQgKm1lbV9pbnB1dCwKICBlbnVtIHN1cmZhY2VfcGl4ZWxf Zm9ybWF0IGZvcm1hdCwKICB1bmlvbiBkY190aWxpbmdfaW5mbyAqdGlsaW5nX2luZm8sCiAgZW51 bSBkY19yb3RhdGlvbl9hbmdsZSByb3RhdGlvbik7Cgogdm9pZCAoKm1lbV9pbnB1dF9zZXRfdm1f c3lzdGVtX2FwZXJ0dXJlX3NldHRpbmdzKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0 LAogICBzdHJ1Y3Qgdm1fc3lzdGVtX2FwZXJ0dXJlX3BhcmFtICphcHQpOwoKIHZvaWQgKCptZW1f aW5wdXRfc2V0X3ZtX2NvbnRleHQwX3NldHRpbmdzKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVt X2lucHV0LAogICBjb25zdCBzdHJ1Y3Qgdm1fY29udGV4dDBfcGFyYW0gKnZtMCk7Cgogdm9pZCAo Km1lbV9pbnB1dF9wcm9ncmFtX3N1cmZhY2VfY29uZmlnKSgKICBzdHJ1Y3QgbWVtX2lucHV0ICpt ZW1faW5wdXQsCiAgZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQsCiAgdW5pb24gZGNf dGlsaW5nX2luZm8gKnRpbGluZ19pbmZvLAogIHN0cnVjdCBwbGFuZV9zaXplICpwbGFuZV9zaXpl LAogIGVudW0gZGNfcm90YXRpb25fYW5nbGUgcm90YXRpb24sCiAgc3RydWN0IGRjX3BsYW5lX2Rj Y19wYXJhbSAqZGNjLAogIGJvb2wgaG9yaXpvbnRhbF9taXJyb3IpOwoKIGJvb2wgKCptZW1faW5w dXRfaXNfZmxpcF9wZW5kaW5nKShzdHJ1Y3QgbWVtX2lucHV0ICptZW1faW5wdXQpOwoKIHZvaWQg KCptZW1faW5wdXRfdXBkYXRlX2RjaHViKShzdHJ1Y3QgbWVtX2lucHV0ICptZW1faW5wdXQsCiAg ICBzdHJ1Y3QgZGNodWJfaW5pdF9kYXRhICpkaF9kYXRhKTsKCiB2b2lkICgqc2V0X2JsYW5rKShz dHJ1Y3QgbWVtX2lucHV0ICptaSwgYm9vbCBibGFuayk7CiB2b2lkICgqc2V0X2h1YnBfYmxhbmtf ZW4pKHN0cnVjdCBtZW1faW5wdXQgKm1pLCBib29sIGJsYW5rKTsKCiB2b2lkICgqc2V0X2N1cnNv cl9hdHRyaWJ1dGVzKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogICBjb25zdCBz dHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgKmF0dHIpOwoKIHZvaWQgKCpzZXRfY3Vyc29yX3Bv c2l0aW9uKSgKICAgc3RydWN0IG1lbV9pbnB1dCAqbWVtX2lucHV0LAogICBjb25zdCBzdHJ1Y3Qg ZGNfY3Vyc29yX3Bvc2l0aW9uICpwb3MsCiAgIGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfbWlfcGFy YW0gKnBhcmFtKTsKCn07CiMgMzUgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9odWJwLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9odWJwLmgiCiMgMSAiLi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tZW1faW5wdXQuaCIgMQoj IDMwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2h1 YnAuaCIgMgoKCgoKZW51bSBjdXJzb3JfcGl0Y2ggewogQ1VSU09SX1BJVENIXzY0X1BJWEVMUyA9 IDAsCiBDVVJTT1JfUElUQ0hfMTI4X1BJWEVMUywKIENVUlNPUl9QSVRDSF8yNTZfUElYRUxTCn07 CgplbnVtIGN1cnNvcl9saW5lc19wZXJfY2h1bmsgewogQ1VSU09SX0xJTkVfUEVSX0NIVU5LXzEg PSAwLAogQ1VSU09SX0xJTkVfUEVSX0NIVU5LXzIgPSAxLAogQ1VSU09SX0xJTkVfUEVSX0NIVU5L XzQsCiBDVVJTT1JfTElORV9QRVJfQ0hVTktfOCwKIENVUlNPUl9MSU5FX1BFUl9DSFVOS18xNgp9 OwoKZW51bSBodWJwX2luZF9ibG9ja19zaXplIHsKIGh1YnBfaW5kX2Jsb2NrX3VuY29uc3RyYWlu ZWQgPSAwLAogaHVicF9pbmRfYmxvY2tfNjRiLAp9OwoKc3RydWN0IGh1YnAgewogY29uc3Qgc3Ry dWN0IGh1YnBfZnVuY3MgKmZ1bmNzOwogc3RydWN0IGRjX2NvbnRleHQgKmN0eDsKIHN0cnVjdCBk Y19wbGFuZV9hZGRyZXNzIHJlcXVlc3RfYWRkcmVzczsKIGludCBpbnN0OwoKCiBpbnQgb3BwX2lk OwogaW50IG1wY2NfaWQ7CiBzdHJ1Y3QgZGNfY3Vyc29yX2F0dHJpYnV0ZXMgY3Vyc19hdHRyOwog Ym9vbCBwb3dlcl9nYXRlZDsKfTsKCnN0cnVjdCBzdXJmYWNlX2ZsaXBfcmVnaXN0ZXJzIHsKIHVp bnQzMl90IERDU1VSRl9TVVJGQUNFX0NPTlRST0w7CiB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9N RVRBX1NVUkZBQ0VfQUREUkVTU19ISUdIOwogdWludDMyX3QgRENTVVJGX1BSSU1BUllfTUVUQV9T VVJGQUNFX0FERFJFU1M7CiB1aW50MzJfdCBEQ1NVUkZfUFJJTUFSWV9TVVJGQUNFX0FERFJFU1Nf SElHSDsKIHVpbnQzMl90IERDU1VSRl9QUklNQVJZX1NVUkZBQ0VfQUREUkVTUzsKIHVpbnQzMl90 IERDU1VSRl9QUklNQVJZX01FVEFfU1VSRkFDRV9BRERSRVNTX0hJR0hfQzsKIHVpbnQzMl90IERD U1VSRl9QUklNQVJZX01FVEFfU1VSRkFDRV9BRERSRVNTX0M7CiB1aW50MzJfdCBEQ1NVUkZfUFJJ TUFSWV9TVVJGQUNFX0FERFJFU1NfSElHSF9DOwogdWludDMyX3QgRENTVVJGX1BSSU1BUllfU1VS RkFDRV9BRERSRVNTX0M7CiB1aW50MzJfdCBEQ1NVUkZfU0VDT05EQVJZX01FVEFfU1VSRkFDRV9B RERSRVNTX0hJR0g7CiB1aW50MzJfdCBEQ1NVUkZfU0VDT05EQVJZX01FVEFfU1VSRkFDRV9BRERS RVNTOwogdWludDMyX3QgRENTVVJGX1NFQ09OREFSWV9TVVJGQUNFX0FERFJFU1NfSElHSDsKIHVp bnQzMl90IERDU1VSRl9TRUNPTkRBUllfU1VSRkFDRV9BRERSRVNTOwogYm9vbCB0bXpfc3VyZmFj ZTsKIGJvb2wgaW1tZWRpYXRlOwogdWludDhfdCB2bWlkOwogYm9vbCBncnBoX3N0ZXJlbzsKfTsK CnN0cnVjdCBodWJwX2Z1bmNzIHsKIHZvaWQgKCpodWJwX3NldHVwKSgKICAgc3RydWN0IGh1YnAg Kmh1YnAsCiAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdzX3N0ICpkbGdfcmVncywK ICAgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfdHR1X3JlZ3Nfc3QgKnR0dV9yZWdzLAogICBzdHJ1 Y3QgX3Zjc19kcGlfZGlzcGxheV9ycV9yZWdzX3N0ICpycV9yZWdzLAogICBzdHJ1Y3QgX3Zjc19k cGlfZGlzcGxheV9waXBlX2Rlc3RfcGFyYW1zX3N0ICpwaXBlX2Rlc3QpOwoKIHZvaWQgKCpodWJw X3NldHVwX2ludGVyZGVwZW5kZW50KSgKICAgc3RydWN0IGh1YnAgKmh1YnAsCiAgIHN0cnVjdCBf dmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdzX3N0ICpkbGdfcmVncywKICAgc3RydWN0IF92Y3NfZHBp X2Rpc3BsYXlfdHR1X3JlZ3Nfc3QgKnR0dV9yZWdzKTsKCiB2b2lkICgqZGNjX2NvbnRyb2wpKHN0 cnVjdCBodWJwICpodWJwLCBib29sIGVuYWJsZSwKICAgZW51bSBodWJwX2luZF9ibG9ja19zaXpl IGJsa19zaXplKTsKCiB2b2lkICgqbWVtX3Byb2dyYW1fdmlld3BvcnQpKAogICBzdHJ1Y3QgaHVi cCAqaHVicCwKICAgY29uc3Qgc3RydWN0IHJlY3QgKnZpZXdwb3J0LAogICBjb25zdCBzdHJ1Y3Qg cmVjdCAqdmlld3BvcnRfYyk7Cgogdm9pZCAoKmFwcGx5X1BMQVRfNTQxODZfd2EpKHN0cnVjdCBo dWJwICpodWJwLAogICBjb25zdCBzdHJ1Y3QgZGNfcGxhbmVfYWRkcmVzcyAqYWRkcmVzcyk7Cgog Ym9vbCAoKmh1YnBfcHJvZ3JhbV9zdXJmYWNlX2ZsaXBfYW5kX2FkZHIpKAogIHN0cnVjdCBodWJw ICpodWJwLAogIGNvbnN0IHN0cnVjdCBkY19wbGFuZV9hZGRyZXNzICphZGRyZXNzLAogIGJvb2wg ZmxpcF9pbW1lZGlhdGUpOwoKIHZvaWQgKCpodWJwX3Byb2dyYW1fcHRlX3ZtKSgKICBzdHJ1Y3Qg aHVicCAqaHVicCwKICBlbnVtIHN1cmZhY2VfcGl4ZWxfZm9ybWF0IGZvcm1hdCwKICB1bmlvbiBk Y190aWxpbmdfaW5mbyAqdGlsaW5nX2luZm8sCiAgZW51bSBkY19yb3RhdGlvbl9hbmdsZSByb3Rh dGlvbik7Cgogdm9pZCAoKmh1YnBfc2V0X3ZtX3N5c3RlbV9hcGVydHVyZV9zZXR0aW5ncykoCiAg IHN0cnVjdCBodWJwICpodWJwLAogICBzdHJ1Y3Qgdm1fc3lzdGVtX2FwZXJ0dXJlX3BhcmFtICph cHQpOwoKIHZvaWQgKCpodWJwX3NldF92bV9jb250ZXh0MF9zZXR0aW5ncykoCiAgIHN0cnVjdCBo dWJwICpodWJwLAogICBjb25zdCBzdHJ1Y3Qgdm1fY29udGV4dDBfcGFyYW0gKnZtMCk7Cgogdm9p ZCAoKmh1YnBfcHJvZ3JhbV9zdXJmYWNlX2NvbmZpZykoCiAgc3RydWN0IGh1YnAgKmh1YnAsCiAg ZW51bSBzdXJmYWNlX3BpeGVsX2Zvcm1hdCBmb3JtYXQsCiAgdW5pb24gZGNfdGlsaW5nX2luZm8g KnRpbGluZ19pbmZvLAogIHN0cnVjdCBwbGFuZV9zaXplICpwbGFuZV9zaXplLAogIGVudW0gZGNf cm90YXRpb25fYW5nbGUgcm90YXRpb24sCiAgc3RydWN0IGRjX3BsYW5lX2RjY19wYXJhbSAqZGNj LAogIGJvb2wgaG9yaXpvbnRhbF9taXJyb3IsCiAgdW5zaWduZWQgaW50IGNvbXBhX2xldmVsKTsK CiBib29sICgqaHVicF9pc19mbGlwX3BlbmRpbmcpKHN0cnVjdCBodWJwICpodWJwKTsKCiB2b2lk ICgqc2V0X2JsYW5rKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9vbCBibGFuayk7CiB2b2lkICgqc2V0 X2h1YnBfYmxhbmtfZW4pKHN0cnVjdCBodWJwICpodWJwLCBib29sIGJsYW5rKTsKCiB2b2lkICgq c2V0X2N1cnNvcl9hdHRyaWJ1dGVzKSgKICAgc3RydWN0IGh1YnAgKmh1YnAsCiAgIGNvbnN0IHN0 cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyAqYXR0cik7Cgogdm9pZCAoKnNldF9jdXJzb3JfcG9z aXRpb24pKAogICBzdHJ1Y3QgaHVicCAqaHVicCwKICAgY29uc3Qgc3RydWN0IGRjX2N1cnNvcl9w b3NpdGlvbiAqcG9zLAogICBjb25zdCBzdHJ1Y3QgZGNfY3Vyc29yX21pX3BhcmFtICpwYXJhbSk7 Cgogdm9pZCAoKmh1YnBfZGlzY29ubmVjdCkoc3RydWN0IGh1YnAgKmh1YnApOwoKIHZvaWQgKCpo dWJwX2Nsa19jbnRsKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9vbCBlbmFibGUpOwogdm9pZCAoKmh1 YnBfdnRnX3NlbCkoc3RydWN0IGh1YnAgKmh1YnAsIHVpbnQzMl90IG90Z19pbnN0KTsKIHZvaWQg KCpodWJwX3JlYWRfc3RhdGUpKHN0cnVjdCBodWJwICpodWJwKTsKIHZvaWQgKCpodWJwX2NsZWFy X3VuZGVyZmxvdykoc3RydWN0IGh1YnAgKmh1YnApOwogdm9pZCAoKmh1YnBfZGlzYWJsZV9jb250 cm9sKShzdHJ1Y3QgaHVicCAqaHVicCwgYm9vbCBkaXNhYmxlX2h1YnApOwogdW5zaWduZWQgaW50 ICgqaHVicF9nZXRfdW5kZXJmbG93X3N0YXR1cykoc3RydWN0IGh1YnAgKmh1YnApOwogdm9pZCAo Kmh1YnBfaW5pdCkoc3RydWN0IGh1YnAgKmh1YnApOwoKIHZvaWQgKCpkbWRhdGFfc2V0X2F0dHJp YnV0ZXMpKAogICBzdHJ1Y3QgaHVicCAqaHVicCwKICAgY29uc3Qgc3RydWN0IGRjX2RtZGF0YV9h dHRyaWJ1dGVzICphdHRyKTsKCiB2b2lkICgqZG1kYXRhX2xvYWQpKAogICBzdHJ1Y3QgaHVicCAq aHVicCwKICAgdWludDMyX3QgZG1kYXRhX3N3X3NpemUsCiAgIGNvbnN0IHVpbnQzMl90ICpkbWRh dGFfc3dfZGF0YSk7CiBib29sICgqZG1kYXRhX3N0YXR1c19kb25lKShzdHJ1Y3QgaHVicCAqaHVi cCk7CiB2b2lkICgqaHVicF9lbmFibGVfdHJpcGxlQnVmZmVyKSgKICBzdHJ1Y3QgaHVicCAqaHVi cCwKICBib29sIGVuYWJsZSk7CgogYm9vbCAoKmh1YnBfaXNfdHJpcGxlYnVmZmVyX2VuYWJsZWQp KAogIHN0cnVjdCBodWJwICpodWJwKTsKCiB2b2lkICgqaHVicF9zZXRfZmxpcF9jb250cm9sX3N1 cmZhY2VfZ3NsKSgKICBzdHJ1Y3QgaHVicCAqaHVicCwKICBib29sIGVuYWJsZSk7Cgogdm9pZCAo KnZhbGlkYXRlX2RtbF9vdXRwdXQpKAogICBzdHJ1Y3QgaHVicCAqaHVicCwKICAgc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKICAgc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcnFfcmVnc19zdCAqZG1s X3JxX3JlZ3MsCiAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X2RsZ19yZWdzX3N0ICpkbWxfZGxn X2F0dHIsCiAgIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0ICpkbWxfdHR1X2F0 dHIpOwoKfTsKIyAzNiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2luYy9jb3JlX3R5cGVzLmgiIDIKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2luYy9ody9tcGMuaCIgMQojIDM4ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoKIyAxICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2R3Yi5oIiAxCiMgMzUgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvZHdiLmgiCnN0 cnVjdCBtY2lmX3diOwoKZW51bSBkY2VfdmVyc2lvbjsKCmVudW0gZHdiX3N3X3ZlcnNpb24gewog ZHdiX3Zlcl8xXzAgPSAxLAogZHdiX3Zlcl8yXzAgPSAyLAp9OwoKZW51bSBkd2Jfc291cmNlIHsK IGR3Yl9zcmNfc2NsID0gMCwKIGR3Yl9zcmNfYmxuZCwKIGR3Yl9zcmNfZm10LAogZHdiX3NyY19v dGcwID0gMHgxMDAsCiBkd2Jfc3JjX290ZzEsCiBkd2Jfc3JjX290ZzIsCiBkd2Jfc3JjX290ZzMs Cn07CgoKZW51bSBkd2JfcGlwZSB7CiBkd2JfcGlwZTAgPSAwLAoKIGR3Yl9waXBlMSwKCiBkd2Jf cGlwZV9tYXhfbnVtLAp9OwoKZW51bSBkd2JfZnJhbWVfY2FwdHVyZV9lbmFibGUgewogRFdCX0ZS QU1FX0NBUFRVUkVfRElTQUJMRSA9IDAsCiBEV0JfRlJBTUVfQ0FQVFVSRV9FTkFCTEUgPSAxLAp9 OwoKZW51bSB3YnNjbF9jb2VmX2ZpbHRlcl90eXBlX3NlbCB7CiBXQlNDTF9DT0VGX0xVTUFfVkVS VF9GSUxURVIgPSAwLAogV0JTQ0xfQ09FRl9DSFJPTUFfVkVSVF9GSUxURVIgPSAxLAogV0JTQ0xf Q09FRl9MVU1BX0hPUlpfRklMVEVSID0gMiwKIFdCU0NMX0NPRUZfQ0hST01BX0hPUlpfRklMVEVS ID0gMwp9OwoKCnN0cnVjdCBkd2Jfd2FybXVwX3BhcmFtcyB7CiBib29sIHdhcm11cF9lbjsKIGJv b2wgd2FybXVwX21vZGU7CiBib29sIHdhcm11cF9kZXB0aDsKIGludCB3YXJtdXBfZGF0YTsKIGlu dCB3YXJtdXBfd2lkdGg7CiBpbnQgd2FybXVwX2hlaWdodDsKfTsKCnN0cnVjdCBkd2JfY2FwcyB7 CiBlbnVtIGRjZV92ZXJzaW9uIGh3X3ZlcnNpb247CiBlbnVtIGR3Yl9zd192ZXJzaW9uIHN3X3Zl cnNpb247CiB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRbNl07CiB1bnNpZ25lZCBpbnQgYWRhcHRlcl9p ZDsKIHVuc2lnbmVkIGludCBudW1fcGlwZXM7CiBzdHJ1Y3QgewogIHVuc2lnbmVkIGludCBzdXBw b3J0X2R3YiA6MTsKICB1bnNpZ25lZCBpbnQgc3VwcG9ydF9vZ2FtIDoxOwogIHVuc2lnbmVkIGlu dCBzdXBwb3J0X3dic2NsIDoxOwogIHVuc2lnbmVkIGludCBzdXBwb3J0X29jc2MgOjE7CiAgdW5z aWduZWQgaW50IHN1cHBvcnRfc3RlcmVvIDoxOwogfSBjYXBzOwogdW5zaWduZWQgaW50IHJlc2Vy dmVkMls5XTsKfTsKCnN0cnVjdCBkd2JjIHsKIGNvbnN0IHN0cnVjdCBkd2JjX2Z1bmNzICpmdW5j czsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CiBpbnQgaW5zdDsKIHN0cnVjdCBtY2lmX3diICpt Y2lmOwogYm9vbCBzdGF0dXM7CiBpbnQgaW5wdXRTcmNTZWxlY3Q7CiBib29sIGR3Yl9vdXRwdXRf YmxhY2s7CiBlbnVtIGRjX3RyYW5zZmVyX2Z1bmNfcHJlZGVmaW5lZCB0ZjsKIGVudW0gZGNfY29s b3Jfc3BhY2Ugb3V0cHV0X2NvbG9yX3NwYWNlOwogYm9vbCBkd2JfaXNfZWZjX3RyYW5zaXRpb247 CiBib29sIGR3Yl9pc19kcmM7CiBpbnQgd2Jfc3JjX3BsYW5lX2luc3Q7CiBib29sIHVwZGF0ZV9w cml2YWN5bWFzazsKIHVpbnQzMl90IG1hc2tfaWQ7CiAgICAgICAgaW50IG90Z19pbnN0OwogICAg ICAgIGJvb2wgbXZjX2NmZzsKfTsKCnN0cnVjdCBkd2JjX2Z1bmNzIHsKIGJvb2wgKCpnZXRfY2Fw cykoCiAgc3RydWN0IGR3YmMgKmR3YmMsCiAgc3RydWN0IGR3Yl9jYXBzICpjYXBzKTsKCiBib29s ICgqZW5hYmxlKSgKICBzdHJ1Y3QgZHdiYyAqZHdiYywKICBzdHJ1Y3QgZGNfZHdiX3BhcmFtcyAq cGFyYW1zKTsKCiBib29sICgqZGlzYWJsZSkoc3RydWN0IGR3YmMgKmR3YmMpOwoKIGJvb2wgKCp1 cGRhdGUpKAogIHN0cnVjdCBkd2JjICpkd2JjLAogIHN0cnVjdCBkY19kd2JfcGFyYW1zICpwYXJh bXMpOwoKIGJvb2wgKCppc19lbmFibGVkKSgKICBzdHJ1Y3QgZHdiYyAqZHdiYyk7Cgogdm9pZCAo KnNldF9zdGVyZW8pKAogIHN0cnVjdCBkd2JjICpkd2JjLAogIHN0cnVjdCBkd2Jfc3RlcmVvX3Bh cmFtcyAqc3RlcmVvX3BhcmFtcyk7Cgogdm9pZCAoKnNldF9uZXdfY29udGVudCkoCiAgc3RydWN0 IGR3YmMgKmR3YmMsCiAgYm9vbCBpc19uZXdfY29udGVudCk7CgoKIHZvaWQgKCpzZXRfd2FybXVw KSgKICBzdHJ1Y3QgZHdiYyAqZHdiYywKICBzdHJ1Y3QgZHdiX3dhcm11cF9wYXJhbXMgKndhcm11 cF9wYXJhbXMpOwoKCiBib29sICgqZ2V0X2R3Yl9zdGF0dXMpKAogIHN0cnVjdCBkd2JjICpkd2Jj KTsKIHZvaWQgKCpkd2Jfc2V0X3NjYWxlcikoCiAgc3RydWN0IGR3YmMgKmR3YmMsCiAgc3RydWN0 IGRjX2R3Yl9wYXJhbXMgKnBhcmFtcyk7Cn07CiMgNDAgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tY2lmX3diLmgiIDEKIyAzMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9tY2lmX3di LmgiCmVudW0gbW1odWJidWJfd2JpZl9tb2RlIHsKIFBBQ0tFRF80NDQgPSAwLAogUEFDS0VEXzQ0 NF9GUDE2ID0gMSwKIFBMQU5BUl80MjBfOEJQQyA9IDIsCiBQTEFOQVJfNDIwXzEwQlBDID0gMwp9 OwoKc3RydWN0IG1jaWZfYXJiX3BhcmFtcyB7CgogdW5zaWduZWQgaW50IHRpbWVfcGVyX3BpeGVs OwogdW5zaWduZWQgaW50IGNsaV93YXRlcm1hcmtbNF07CiB1bnNpZ25lZCBpbnQgcHN0YXRlX3dh dGVybWFya1s0XTsKIHVuc2lnbmVkIGludCBhcmJpdHJhdGlvbl9zbGljZTsKIHVuc2lnbmVkIGlu dCBzbGljZV9saW5lczsKIHVuc2lnbmVkIGludCBtYXhfc2NhbGVkX3RpbWU7Cn07CgpzdHJ1Y3Qg bWNpZl9pcnFfcGFyYW1zIHsKIHVuc2lnbmVkIGludCBzd19pbnRfZW47CiB1bnNpZ25lZCBpbnQg c3dfc2xpY2VfaW50X2VuOwogdW5zaWduZWQgaW50IHN3X292ZXJydW5faW50X2VuOwogdW5zaWdu ZWQgaW50IHZjZV9pbnRfZW47CiB1bnNpZ25lZCBpbnQgdmNlX3NsaWNlX2ludF9lbjsKfTsKCgoK c3RydWN0IG1jaWZfd2JfZnJhbWVfZHVtcF9pbmZvIHsKIHVuc2lnbmVkIGludCBzaXplOwogdW5z aWduZWQgaW50IHdpZHRoOwogdW5zaWduZWQgaW50IGhlaWdodDsKIHVuc2lnbmVkIGludCBsdW1h X3BpdGNoOwogdW5zaWduZWQgaW50IGNocm9tYV9waXRjaDsKIGVudW0gZHdiX3NjYWxlcl9tb2Rl IGZvcm1hdDsKfTsKCnN0cnVjdCBtY2lmX3diIHsKIGNvbnN0IHN0cnVjdCBtY2lmX3diX2Z1bmNz ICpmdW5jczsKIHN0cnVjdCBkY19jb250ZXh0ICpjdHg7CiBpbnQgaW5zdDsKfTsKCnN0cnVjdCBt Y2lmX3diX2Z1bmNzIHsKCiB2b2lkICgqZW5hYmxlX21jaWYpKHN0cnVjdCBtY2lmX3diICptY2lm X3diKTsKCiB2b2lkICgqZGlzYWJsZV9tY2lmKShzdHJ1Y3QgbWNpZl93YiAqbWNpZl93Yik7Cgog dm9pZCAoKmNvbmZpZ19tY2lmX2J1ZikoCiAgc3RydWN0IG1jaWZfd2IgKm1jaWZfd2IsCiAgc3Ry dWN0IG1jaWZfYnVmX3BhcmFtcyAqcGFyYW1zLAogIHVuc2lnbmVkIGludCBkZXN0X2hlaWdodCk7 CgogIHZvaWQgKCpjb25maWdfbWNpZl9hcmIpKAogIHN0cnVjdCBtY2lmX3diICptY2lmX3diLAog IHN0cnVjdCBtY2lmX2FyYl9wYXJhbXMgKnBhcmFtcyk7CgogIHZvaWQgKCpjb25maWdfbWNpZl9p cnEpKAogIHN0cnVjdCBtY2lmX3diICptY2lmX3diLAogIHN0cnVjdCBtY2lmX2lycV9wYXJhbXMg KnBhcmFtcyk7Cgogdm9pZCAoKmR1bXBfZnJhbWUpKAogIHN0cnVjdCBtY2lmX3diICptY2lmX3di LAogIHN0cnVjdCBtY2lmX2J1Zl9wYXJhbXMgKm1jaWZfcGFyYW1zLAogIGVudW0gZHdiX3NjYWxl cl9tb2RlIG91dF9mb3JtYXQsCiAgdW5zaWduZWQgaW50IGRlc3Rfd2lkdGgsCiAgdW5zaWduZWQg aW50IGRlc3RfaGVpZ2h0LAogIHN0cnVjdCBtY2lmX3diX2ZyYW1lX2R1bXBfaW5mbyAqZHVtcF9p bmZvLAogIHVuc2lnbmVkIGNoYXIgKmx1bWFfYnVmZmVyLAogIHVuc2lnbmVkIGNoYXIgKmNocm9t YV9idWZmZXIsCiAgdW5zaWduZWQgY2hhciAqZGVzdF9sdW1hX2J1ZmZlciwKICB1bnNpZ25lZCBj aGFyICpkZXN0X2Nocm9tYV9idWZmZXIpOwp9OwojIDQxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgoKCgp2b2lkIGVuYWJsZV9z dXJmYWNlX2ZsaXBfcmVwb3J0aW5nKHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUs CiAgdWludDMyX3QgY29udHJvbGxlcl9pZCk7CgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9pbmNsdWRlL2dycGhfb2JqZWN0X2lkLmgiIDEKIyA0OCAiLi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9jb3JlX3R5cGVzLmgiIDIK IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2xp bmtfZW5jb2Rlci5oIiAxCiMgNDkgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9zdHJlYW1fZW5jb2Rlci5oIiAxCiMgMzEgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvc3RyZWFtX2VuY29k ZXIuaCIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvaW5jbHVk ZS9hdWRpb190eXBlcy5oIiAxCiMgMzYgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9pbmNsdWRlL2F1ZGlvX3R5cGVzLmgiCnN0cnVjdCBhdWRpb19jcnRjX2luZm8gewog dWludDMyX3QgaF90b3RhbDsKIHVpbnQzMl90IGhfYWN0aXZlOwogdWludDMyX3Qgdl9hY3RpdmU7 CiB1aW50MzJfdCBwaXhlbF9yZXBldGl0aW9uOwogdWludDMyX3QgcmVxdWVzdGVkX3BpeGVsX2Ns b2NrXzEwMEh6OwogdWludDMyX3QgY2FsY3VsYXRlZF9waXhlbF9jbG9ja18xMDBIejsKIHVpbnQz Ml90IHJlZnJlc2hfcmF0ZTsKIGVudW0gZGNfY29sb3JfZGVwdGggY29sb3JfZGVwdGg7CiBib29s IGludGVybGFjZWQ7Cn07CnN0cnVjdCBhemFsaWFfY2xvY2tfaW5mbyB7CiB1aW50MzJfdCBwaXhl bF9jbG9ja19pbl8xMGtoejsKIHVpbnQzMl90IGF1ZGlvX2R0b19waGFzZTsKIHVpbnQzMl90IGF1 ZGlvX2R0b19tb2R1bGU7CiB1aW50MzJfdCBhdWRpb19kdG9fd2FsbF9jbG9ja19yYXRpbzsKfTsK CmVudW0gYXVkaW9fZHRvX3NvdXJjZSB7CiBEVE9fU09VUkNFX1VOS05PV04gPSAwLAogRFRPX1NP VVJDRV9JRDAsCiBEVE9fU09VUkNFX0lEMSwKIERUT19TT1VSQ0VfSUQyLAogRFRPX1NPVVJDRV9J RDMsCiBEVE9fU09VUkNFX0lENCwKIERUT19TT1VSQ0VfSUQ1Cn07CgoKCnN0cnVjdCBhdWRpb19w bGxfaW5mbyB7CiB1aW50MzJfdCBkcF9kdG9fc291cmNlX2Nsb2NrX2luX2toejsKIHVpbnQzMl90 IGZlZWRfYmFja19kaXZpZGVyOwogZW51bSBhdWRpb19kdG9fc291cmNlIGR0b19zb3VyY2U7CiBi b29sIHNzX2VuYWJsZWQ7CiB1aW50MzJfdCBzc19wZXJjZW50YWdlOwogdWludDMyX3Qgc3NfcGVy Y2VudGFnZV9kaXZpZGVyOwp9OwoKc3RydWN0IGF1ZGlvX2NoYW5uZWxfYXNzb2NpYXRlX2luZm8g ewogdW5pb24gewogIHN0cnVjdCB7CiAgIHVpbnQzMl90IEFMTF9DSEFOTkVMX0ZMOjQ7CiAgIHVp bnQzMl90IEFMTF9DSEFOTkVMX0ZSOjQ7CiAgIHVpbnQzMl90IEFMTF9DSEFOTkVMX0ZDOjQ7CiAg IHVpbnQzMl90IEFMTF9DSEFOTkVMX1N1Yjo0OwogICB1aW50MzJfdCBBTExfQ0hBTk5FTF9TTDo0 OwogICB1aW50MzJfdCBBTExfQ0hBTk5FTF9TUjo0OwogICB1aW50MzJfdCBBTExfQ0hBTk5FTF9C TDo0OwogICB1aW50MzJfdCBBTExfQ0hBTk5FTF9CUjo0OwogIH0gYml0czsKICB1aW50MzJfdCB1 MzJhbGw7CiB9Owp9OwoKc3RydWN0IGF1ZGlvX291dHB1dCB7CgogZW51bSBlbmdpbmVfaWQgZW5n aW5lX2lkOwoKIGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsOwoKIHN0cnVjdCBhdWRpb19jcnRjX2lu Zm8gY3J0Y19pbmZvOwoKIHN0cnVjdCBhdWRpb19wbGxfaW5mbyBwbGxfaW5mbzsKfTsKCmVudW0g YXVkaW9fcGF5bG9hZCB7CiBDSEFOTkVMX1NQTElUX01BUFBJTkdDSEFORyA9IDB4OSwKfTsKIyAz MiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9zdHJl YW1fZW5jb2Rlci5oIiAyCgoKc3RydWN0IGRjX2Jpb3M7CnN0cnVjdCBkY19jb250ZXh0OwpzdHJ1 Y3QgZGNfY3J0Y190aW1pbmc7CgplbnVtIGRwX3BpeGVsX2VuY29kaW5nX3R5cGUgewogRFBfUElY RUxfRU5DT0RJTkdfVFlQRV9SR0I0NDQgPSAweDAwMDAwMDAwLAogRFBfUElYRUxfRU5DT0RJTkdf VFlQRV9ZQ0JDUjQyMiA9IDB4MDAwMDAwMDEsCiBEUF9QSVhFTF9FTkNPRElOR19UWVBFX1lDQkNS NDQ0ID0gMHgwMDAwMDAwMiwKIERQX1BJWEVMX0VOQ09ESU5HX1RZUEVfUkdCX1dJREVfR0FNVVQg PSAweDAwMDAwMDAzLAogRFBfUElYRUxfRU5DT0RJTkdfVFlQRV9ZX09OTFkgPSAweDAwMDAwMDA0 LAogRFBfUElYRUxfRU5DT0RJTkdfVFlQRV9ZQ0JDUjQyMCA9IDB4MDAwMDAwMDUKfTsKCmVudW0g ZHBfY29tcG9uZW50X2RlcHRoIHsKIERQX0NPTVBPTkVOVF9QSVhFTF9ERVBUSF82QlBDID0gMHgw MDAwMDAwMCwKIERQX0NPTVBPTkVOVF9QSVhFTF9ERVBUSF84QlBDID0gMHgwMDAwMDAwMSwKIERQ X0NPTVBPTkVOVF9QSVhFTF9ERVBUSF8xMEJQQyA9IDB4MDAwMDAwMDIsCiBEUF9DT01QT05FTlRf UElYRUxfREVQVEhfMTJCUEMgPSAweDAwMDAwMDAzLAogRFBfQ09NUE9ORU5UX1BJWEVMX0RFUFRI XzE2QlBDID0gMHgwMDAwMDAwNAp9OwoKc3RydWN0IGF1ZGlvX2Nsb2NrX2luZm8gewoKIHVpbnQz Ml90IHBpeGVsX2Nsb2NrX2luXzEwa2h6OwoKIHVpbnQzMl90IG5fMzJraHo7CgogdWludDMyX3Qg Y3RzXzMya2h6OwogdWludDMyX3Qgbl80NGtoejsKIHVpbnQzMl90IGN0c180NGtoejsKIHVpbnQz Ml90IG5fNDhraHo7CiB1aW50MzJfdCBjdHNfNDhraHo7Cn07CgplbnVtIGR5bmFtaWNfbWV0YWRh dGFfbW9kZSB7CiBkbWRhdGFfZHAsCiBkbWRhdGFfaGRtaSwKIGRtZGF0YV9kb2xieV92aXNpb24K fTsKCnN0cnVjdCBlbmNvZGVyX2luZm9fZnJhbWUgewoKIHN0cnVjdCBkY19pbmZvX3BhY2tldCBh dmk7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQgZ2FtdXQ7CiBzdHJ1Y3QgZGNfaW5mb19wYWNrZXQg dmVuZG9yOwogc3RydWN0IGRjX2luZm9fcGFja2V0IGhmdnNpZjsKCiBzdHJ1Y3QgZGNfaW5mb19w YWNrZXQgc3BkOwoKIHN0cnVjdCBkY19pbmZvX3BhY2tldCB2c2M7Cgogc3RydWN0IGRjX2luZm9f cGFja2V0IGhkcnNtZDsKfTsKCnN0cnVjdCBlbmNvZGVyX3VuYmxhbmtfcGFyYW0gewogc3RydWN0 IGRjX2xpbmtfc2V0dGluZ3MgbGlua19zZXR0aW5nczsKIHN0cnVjdCBkY19jcnRjX3RpbWluZyB0 aW1pbmc7CiBpbnQgb3BwX2NudDsKfTsKCnN0cnVjdCBlbmNvZGVyX3NldF9kcF9waHlfcGF0dGVy bl9wYXJhbSB7CiBlbnVtIGRwX3Rlc3RfcGF0dGVybiBkcF9waHlfcGF0dGVybjsKIGNvbnN0IHVp bnQ4X3QgKmN1c3RvbV9wYXR0ZXJuOwogdWludDMyX3QgY3VzdG9tX3BhdHRlcm5fc2l6ZTsKIGVu dW0gZHBfcGFuZWxfbW9kZSBkcF9wYW5lbF9tb2RlOwp9OwoKc3RydWN0IHN0cmVhbV9lbmNvZGVy IHsKIGNvbnN0IHN0cnVjdCBzdHJlYW1fZW5jb2Rlcl9mdW5jcyAqZnVuY3M7CiBzdHJ1Y3QgZGNf Y29udGV4dCAqY3R4Owogc3RydWN0IGRjX2Jpb3MgKmJwOwogZW51bSBlbmdpbmVfaWQgaWQ7Cn07 CgpzdHJ1Y3QgZW5jX3N0YXRlIHsKIHVpbnQzMl90IGRzY19tb2RlOwogdWludDMyX3QgZHNjX3Ns aWNlX3dpZHRoOwogdWludDMyX3Qgc2VjX2dzcF9wcHNfbGluZV9udW07CiB1aW50MzJfdCB2Ymlk Nl9saW5lX3JlZmVyZW5jZTsKIHVpbnQzMl90IHZiaWQ2X2xpbmVfbnVtOwogdWludDMyX3Qgc2Vj X2dzcF9wcHNfZW5hYmxlOwogdWludDMyX3Qgc2VjX3N0cmVhbV9lbmFibGU7Cn07CgpzdHJ1Y3Qg c3RyZWFtX2VuY29kZXJfZnVuY3Mgewogdm9pZCAoKmRwX3NldF9zdHJlYW1fYXR0cmlidXRlKSgK ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKmNy dGNfdGltaW5nLAogIGVudW0gZGNfY29sb3Jfc3BhY2Ugb3V0cHV0X2NvbG9yX3NwYWNlLAogIGJv b2wgdXNlX3ZzY19zZHBfZm9yX2NvbG9yaW1ldHJ5LAogIHVpbnQzMl90IGVuYWJsZV9zZHBfc3Bs aXR0aW5nKTsKCiB2b2lkICgqaGRtaV9zZXRfc3RyZWFtX2F0dHJpYnV0ZSkoCiAgc3RydWN0IHN0 cmVhbV9lbmNvZGVyICplbmMsCiAgc3RydWN0IGRjX2NydGNfdGltaW5nICpjcnRjX3RpbWluZywK ICBpbnQgYWN0dWFsX3BpeF9jbGtfa2h6LAogIGJvb2wgZW5hYmxlX2F1ZGlvKTsKCiB2b2lkICgq ZHZpX3NldF9zdHJlYW1fYXR0cmlidXRlKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywK ICBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKmNydGNfdGltaW5nLAogIGJvb2wgaXNfZHVhbF9saW5r KTsKCiB2b2lkICgqbHZkc19zZXRfc3RyZWFtX2F0dHJpYnV0ZSkoCiAgc3RydWN0IHN0cmVhbV9l bmNvZGVyICplbmMsCiAgc3RydWN0IGRjX2NydGNfdGltaW5nICpjcnRjX3RpbWluZyk7Cgogdm9p ZCAoKnNldF9tc3RfYmFuZHdpZHRoKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKICBz dHJ1Y3QgZml4ZWQzMV8zMiBhdmdfdGltZV9zbG90c19wZXJfbXRwKTsKCiB2b2lkICgqdXBkYXRl X2hkbWlfaW5mb19wYWNrZXRzKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywKICBjb25z dCBzdHJ1Y3QgZW5jb2Rlcl9pbmZvX2ZyYW1lICppbmZvX2ZyYW1lKTsKCiB2b2lkICgqc3RvcF9o ZG1pX2luZm9fcGFja2V0cykoCiAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMpOwoKIHZvaWQg KCp1cGRhdGVfZHBfaW5mb19wYWNrZXRzKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywK ICBjb25zdCBzdHJ1Y3QgZW5jb2Rlcl9pbmZvX2ZyYW1lICppbmZvX2ZyYW1lKTsKCiB2b2lkICgq c2VuZF9pbW1lZGlhdGVfc2RwX21lc3NhZ2UpKAogICAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICpl bmMsCiAgICBjb25zdCB1aW50OF90ICpjdXN0b21fc2RwX21lc3NhZ2UsCiAgICB1bnNpZ25lZCBp bnQgc2RwX21lc3NhZ2Vfc2l6ZSk7Cgogdm9pZCAoKnN0b3BfZHBfaW5mb19wYWNrZXRzKSgKICBz dHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYyk7Cgogdm9pZCAoKmRwX2JsYW5rKSgKICBzdHJ1Y3Qg c3RyZWFtX2VuY29kZXIgKmVuYyk7Cgogdm9pZCAoKmRwX3VuYmxhbmspKAogIHN0cnVjdCBzdHJl YW1fZW5jb2RlciAqZW5jLAogIGNvbnN0IHN0cnVjdCBlbmNvZGVyX3VuYmxhbmtfcGFyYW0gKnBh cmFtKTsKCiB2b2lkICgqYXVkaW9fbXV0ZV9jb250cm9sKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29k ZXIgKmVuYywgYm9vbCBtdXRlKTsKCiB2b2lkICgqZHBfYXVkaW9fc2V0dXApKAogIHN0cnVjdCBz dHJlYW1fZW5jb2RlciAqZW5jLAogIHVuc2lnbmVkIGludCBhel9pbnN0LAogIHN0cnVjdCBhdWRp b19pbmZvICppbmZvKTsKCiB2b2lkICgqZHBfYXVkaW9fZW5hYmxlKSAoCiAgIHN0cnVjdCBzdHJl YW1fZW5jb2RlciAqZW5jKTsKCiB2b2lkICgqZHBfYXVkaW9fZGlzYWJsZSkgKAogICBzdHJ1Y3Qg c3RyZWFtX2VuY29kZXIgKmVuYyk7Cgogdm9pZCAoKmhkbWlfYXVkaW9fc2V0dXApKAogIHN0cnVj dCBzdHJlYW1fZW5jb2RlciAqZW5jLAogIHVuc2lnbmVkIGludCBhel9pbnN0LAogIHN0cnVjdCBh dWRpb19pbmZvICppbmZvLAogIHN0cnVjdCBhdWRpb19jcnRjX2luZm8gKmF1ZGlvX2NydGNfaW5m byk7Cgogdm9pZCAoKmhkbWlfYXVkaW9fZGlzYWJsZSkgKAogICBzdHJ1Y3Qgc3RyZWFtX2VuY29k ZXIgKmVuYyk7Cgogdm9pZCAoKnNldHVwX3N0ZXJlb19zeW5jKSAoCiAgIHN0cnVjdCBzdHJlYW1f ZW5jb2RlciAqZW5jLAogICBpbnQgdGdfaW5zdCwKICAgYm9vbCBlbmFibGUpOwoKIHZvaWQgKCpz ZXRfYXZtdXRlKSgKICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYywgYm9vbCBlbmFibGUpOwoK IHZvaWQgKCpkaWdfY29ubmVjdF90b19vdGcpKAogIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5j LAogIGludCB0Z19pbnN0KTsKCiB2b2lkICgqaGRtaV9yZXNldF9zdHJlYW1fYXR0cmlidXRlKSgK ICBzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIgKmVuYyk7CgogdW5zaWduZWQgaW50ICgqZGlnX3NvdXJj ZV9vdGcpKAogIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jKTsKCiBib29sICgqZHBfZ2V0X3Bp eGVsX2Zvcm1hdCkoCiAgc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCiAgZW51bSBkY19waXhl bF9lbmNvZGluZyAqZW5jb2RpbmcsCiAgZW51bSBkY19jb2xvcl9kZXB0aCAqZGVwdGgpOwoKIHZv aWQgKCplbmNfcmVhZF9zdGF0ZSkoc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsIHN0cnVjdCBl bmNfc3RhdGUgKnMpOwoKIHZvaWQgKCpkcF9zZXRfZHNjX2NvbmZpZykoCiAgIHN0cnVjdCBzdHJl YW1fZW5jb2RlciAqZW5jLAogICBlbnVtIG9wdGNfZHNjX21vZGUgZHNjX21vZGUsCiAgIHVpbnQz Ml90IGRzY19ieXRlc19wZXJfcGl4ZWwsCiAgIHVpbnQzMl90IGRzY19zbGljZV93aWR0aCk7Cgog dm9pZCAoKmRwX3NldF9kc2NfcHBzX2luZm9fcGFja2V0KShzdHJ1Y3Qgc3RyZWFtX2VuY29kZXIg KmVuYywKICAgIGJvb2wgZW5hYmxlLAogICAgdWludDhfdCAqZHNjX3BhY2tlZF9wcHMpOwoKIHZv aWQgKCpzZXRfZHluYW1pY19tZXRhZGF0YSkoc3RydWN0IHN0cmVhbV9lbmNvZGVyICplbmMsCiAg IGJvb2wgZW5hYmxlLAogICB1aW50MzJfdCBodWJwX3JlcXVlc3Rvcl9pZCwKICAgZW51bSBkeW5h bWljX21ldGFkYXRhX21vZGUgZG1kYXRhX21vZGUpOwoKIHZvaWQgKCpkcF9zZXRfb2RtX2NvbWJp bmUpKAogIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqZW5jLAogIGJvb2wgb2RtX2NvbWJpbmUpOwp9 OwojIDUwICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2Nv cmVfdHlwZXMuaCIgMgoKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3Bs YXkvZGMvaW5jL2h3L2F1ZGlvLmgiIDEKIyAzMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2luYy9ody9hdWRpby5oIgpzdHJ1Y3QgYXVkaW87CgpzdHJ1Y3QgYXVk aW9fZnVuY3MgewoKIGJvb2wgKCplbmRwb2ludF92YWxpZCkoc3RydWN0IGF1ZGlvICphdWRpbyk7 Cgogdm9pZCAoKmh3X2luaXQpKHN0cnVjdCBhdWRpbyAqYXVkaW8pOwoKIHZvaWQgKCphel9lbmFi bGUpKHN0cnVjdCBhdWRpbyAqYXVkaW8pOwoKIHZvaWQgKCphel9kaXNhYmxlKShzdHJ1Y3QgYXVk aW8gKmF1ZGlvKTsKCiB2b2lkICgqYXpfY29uZmlndXJlKShzdHJ1Y3QgYXVkaW8gKmF1ZGlvLAog IGVudW0gc2lnbmFsX3R5cGUgc2lnbmFsLAogIGNvbnN0IHN0cnVjdCBhdWRpb19jcnRjX2luZm8g KmNydGNfaW5mbywKICBjb25zdCBzdHJ1Y3QgYXVkaW9faW5mbyAqYXVkaW9faW5mbyk7Cgogdm9p ZCAoKndhbGxfZHRvX3NldHVwKShzdHJ1Y3QgYXVkaW8gKmF1ZGlvLAogIGVudW0gc2lnbmFsX3R5 cGUgc2lnbmFsLAogIGNvbnN0IHN0cnVjdCBhdWRpb19jcnRjX2luZm8gKmNydGNfaW5mbywKICBj b25zdCBzdHJ1Y3QgYXVkaW9fcGxsX2luZm8gKnBsbF9pbmZvKTsKCiB2b2lkICgqZGVzdHJveSko c3RydWN0IGF1ZGlvICoqYXVkaW8pOwp9OwoKc3RydWN0IGF1ZGlvIHsKIGNvbnN0IHN0cnVjdCBh dWRpb19mdW5jcyAqZnVuY3M7CiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4OwogdW5zaWduZWQgaW50 IGluc3Q7CiBib29sIGVuYWJsZWQ7Cn07CiMgNTIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX3BwX3NtdS5oIiAxCiMgMzMgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9wcF9zbXUuaCIKdHlwZWRlZiBi b29sIEJPT0xFQU47CgplbnVtIHBwX3NtdV92ZXIgewoKCgoKCgogUFBfU01VX1VOU1VQUE9SVEVE LAogUFBfU01VX1ZFUl9SViwKIFBQX1NNVV9WRVJfTlYsCiBQUF9TTVVfVkVSX1JOLAoKIFBQX1NN VV9WRVJfTUFYCn07CgpzdHJ1Y3QgcHBfc211IHsKIGVudW0gcHBfc211X3ZlciB2ZXI7CiBjb25z dCB2b2lkICpwcDsKCgoKCgoKIGNvbnN0IHZvaWQgKmRtOwp9OwoKZW51bSBwcF9zbXVfc3RhdHVz IHsKIFBQX1NNVV9SRVNVTFRfVU5ERUZJTkVEID0gMCwKIFBQX1NNVV9SRVNVTFRfT0sgPSAxLAog UFBfU01VX1JFU1VMVF9GQUlMLAogUFBfU01VX1JFU1VMVF9VTlNVUFBPUlRFRAp9OwoKCgoKZW51 bSB3bV90eXBlIHsKIFdNX1RZUEVfUFNUQVRFX0NIRyA9IDAsCiBXTV9UWVBFX1JFVFJBSU5JTkcg PSAxLAp9OwoKCnN0cnVjdCBwcF9zbXVfd21fc2V0X3JhbmdlIHsKIHVpbnQxNl90IG1pbl9maWxs X2Nsa19taHo7CiB1aW50MTZfdCBtYXhfZmlsbF9jbGtfbWh6OwogdWludDE2X3QgbWluX2RyYWlu X2Nsa19taHo7CiB1aW50MTZfdCBtYXhfZHJhaW5fY2xrX21oejsKCiB1aW50OF90IHdtX2luc3Q7 CiB1aW50OF90IHdtX3R5cGU7Cn07CgoKCnN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vfc2V0cyB7CiB1 bnNpZ25lZCBpbnQgbnVtX3JlYWRlcl93bV9zZXRzOwogc3RydWN0IHBwX3NtdV93bV9zZXRfcmFu Z2UgcmVhZGVyX3dtX3NldHNbNF07CgogdW5zaWduZWQgaW50IG51bV93cml0ZXJfd21fc2V0czsK IHN0cnVjdCBwcF9zbXVfd21fc2V0X3JhbmdlIHdyaXRlcl93bV9zZXRzWzRdOwp9OwoKc3RydWN0 IHBwX3NtdV9mdW5jc19ydiB7CiBzdHJ1Y3QgcHBfc211IHBwX3NtdTsKCgoKCgogdm9pZCAoKnNl dF9kaXNwbGF5X2NvdW50KShzdHJ1Y3QgcHBfc211ICpwcCwgaW50IGNvdW50KTsKIyAxMTQgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9wcF9zbXUuaCIKIHZv aWQgKCpzZXRfd21fcmFuZ2VzKShzdHJ1Y3QgcHBfc211ICpwcCwKICAgc3RydWN0IHBwX3NtdV93 bV9yYW5nZV9zZXRzICpyYW5nZXMpOwoKCgoKIHZvaWQgKCpzZXRfaGFyZF9taW5fZGNmY2xrX2J5 X2ZyZXEpKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgbWh6KTsKCgoKCgogdm9pZCAoKnNldF9taW5f ZGVlcF9zbGVlcF9kY2ZjbGspKHN0cnVjdCBwcF9zbXUgKnBwLCBpbnQgbWh6KTsKCgoKCiB2b2lk ICgqc2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcSkoc3RydWN0IHBwX3NtdSAqcHAsIGludCBtaHop OwoKCgoKIHZvaWQgKCpzZXRfaGFyZF9taW5fc29jY2xrX2J5X2ZyZXEpKHN0cnVjdCBwcF9zbXUg KnBwLCBpbnQgbWh6KTsKCgogdm9pZCAoKnNldF9wbWVfd2FfZW5hYmxlKShzdHJ1Y3QgcHBfc211 ICpwcCk7Cn07CgoKCgplbnVtIHBwX3NtdV9udl9jbG9ja19pZCB7CiBQUF9TTVVfTlZfRElTUENM SywKIFBQX1NNVV9OVl9QSFlDTEssCiBQUF9TTVVfTlZfUElYRUxDTEsKfTsKCgoKCnN0cnVjdCBw cF9zbXVfbnZfY2xvY2tfdGFibGUgewoKIHVuc2lnbmVkIGludCBkaXNwbGF5Q2xvY2tJbktoejsK IHVuc2lnbmVkIGludCBkcHBDbG9ja0luS2h6OwogdW5zaWduZWQgaW50IHBoeUNsb2NrSW5LaHo7 CiB1bnNpZ25lZCBpbnQgcGl4ZWxDbG9ja0luS2h6OwogdW5zaWduZWQgaW50IGRzY0Nsb2NrSW5L aHo7CgoKIHVuc2lnbmVkIGludCBmYWJyaWNDbG9ja0luS2h6OwogdW5zaWduZWQgaW50IHNvY0Ns b2NrSW5LaHo7CiB1bnNpZ25lZCBpbnQgZGNmQ2xvY2tJbktoejsKIHVuc2lnbmVkIGludCB1Q2xv Y2tJbktoejsKfTsKCnN0cnVjdCBwcF9zbXVfZnVuY3NfbnYgewogc3RydWN0IHBwX3NtdSBwcF9z bXU7CgoKCgogZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X2Rpc3BsYXlfY291bnQpKHN0cnVjdCBw cF9zbXUgKnBwLCBpbnQgY291bnQpOwoKCgoKIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF9oYXJk X21pbl9kY2ZjbGtfYnlfZnJlcSkoc3RydWN0IHBwX3NtdSAqcHAsIGludCBNaHopOwoKCgoKCiBl bnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfbWluX2RlZXBfc2xlZXBfZGNmY2xrKShzdHJ1Y3QgcHBf c211ICpwcCwgaW50IE1oeik7CgoKCgogZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X2hhcmRfbWlu X3VjbGtfYnlfZnJlcSkoc3RydWN0IHBwX3NtdSAqcHAsIGludCBNaHopOwoKCgoKIGVudW0gcHBf c211X3N0YXR1cyAoKnNldF9oYXJkX21pbl9zb2NjbGtfYnlfZnJlcSkoc3RydWN0IHBwX3NtdSAq cHAsIGludCBNaHopOwoKCiBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfcG1lX3dhX2VuYWJsZSko c3RydWN0IHBwX3NtdSAqcHApOwoKCgoKIGVudW0gcHBfc211X3N0YXR1cyAoKnNldF92b2x0YWdl X2J5X2ZyZXEpKHN0cnVjdCBwcF9zbXUgKnBwLAogICBlbnVtIHBwX3NtdV9udl9jbG9ja19pZCBj bG9ja19pZCwgaW50IE1oeik7CiMgMjE5ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4u L2Rpc3BsYXkvZGMvZG1fcHBfc211LmgiCiBlbnVtIHBwX3NtdV9zdGF0dXMgKCpzZXRfd21fcmFu Z2VzKShzdHJ1Y3QgcHBfc211ICpwcCwKICAgc3RydWN0IHBwX3NtdV93bV9yYW5nZV9zZXRzICpy YW5nZXMpOwoKCgoKIGVudW0gcHBfc211X3N0YXR1cyAoKmdldF9tYXhpbXVtX3N1c3RhaW5hYmxl X2Nsb2Nrcykoc3RydWN0IHBwX3NtdSAqcHAsCiAgIHN0cnVjdCBwcF9zbXVfbnZfY2xvY2tfdGFi bGUgKm1heF9jbG9ja3MpOwoKCgogZW51bSBwcF9zbXVfc3RhdHVzICgqZ2V0X3VjbGtfZHBtX3N0 YXRlcykoc3RydWN0IHBwX3NtdSAqcHAsCiAgIHVuc2lnbmVkIGludCAqY2xvY2tfdmFsdWVzX2lu X2toeiwgdW5zaWduZWQgaW50ICpudW1fc3RhdGVzKTsKIyAyNDIgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9wcF9zbXUuaCIKIGVudW0gcHBfc211X3N0YXR1 cyAoKnNldF9wc3RhdGVfaGFuZHNoYWtlX3N1cHBvcnQpKHN0cnVjdCBwcF9zbXUgKnBwLAogICBC T09MRUFOIHBzdGF0ZV9oYW5kc2hha2Vfc3VwcG9ydGVkKTsKfTsKCgoKCgoKc3RydWN0IGRwbV9j bG9jayB7CiAgdWludDMyX3QgRnJlcTsKICB1aW50MzJfdCBWb2w7Cn07CgoKCnN0cnVjdCBkcG1f Y2xvY2tzIHsKIHN0cnVjdCBkcG1fY2xvY2sgRGNmQ2xvY2tzWzhdOwogc3RydWN0IGRwbV9jbG9j ayBTb2NDbG9ja3NbOF07CiBzdHJ1Y3QgZHBtX2Nsb2NrIEZDbG9ja3NbNF07CiBzdHJ1Y3QgZHBt X2Nsb2NrIE1lbUNsb2Nrc1s0XTsKfTsKCgpzdHJ1Y3QgcHBfc211X2Z1bmNzX3JuIHsKIHN0cnVj dCBwcF9zbXUgcHBfc211OwojIDI3NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2RtX3BwX3NtdS5oIgogZW51bSBwcF9zbXVfc3RhdHVzICgqc2V0X3dtX3Jhbmdl cykoc3RydWN0IHBwX3NtdSAqcHAsCiAgIHN0cnVjdCBwcF9zbXVfd21fcmFuZ2Vfc2V0cyAqcmFu Z2VzKTsKCiBlbnVtIHBwX3NtdV9zdGF0dXMgKCpnZXRfZHBtX2Nsb2NrX3RhYmxlKSAoc3RydWN0 IHBwX3NtdSAqcHAsCiAgIHN0cnVjdCBkcG1fY2xvY2tzICpjbG9ja190YWJsZSk7Cn07CgpzdHJ1 Y3QgcHBfc211X2Z1bmNzIHsKIHN0cnVjdCBwcF9zbXUgY3R4OwogdW5pb24gewogIHN0cnVjdCBw cF9zbXVfZnVuY3NfcnYgcnZfZnVuY3M7CiAgc3RydWN0IHBwX3NtdV9mdW5jc19udiBudl9mdW5j czsKICBzdHJ1Y3QgcHBfc211X2Z1bmNzX3JuIHJuX2Z1bmNzOwoKIH07Cn07CiMgNTMgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAy CgoKCgoKc3RydWN0IGxpbmtfaW5pdF9kYXRhIHsKIGNvbnN0IHN0cnVjdCBkYyAqZGM7CiBzdHJ1 Y3QgZGNfY29udGV4dCAqY3R4OwogdWludDMyX3QgY29ubmVjdG9yX2luZGV4OwogdWludDMyX3Qg bGlua19pbmRleDsKCn07CgpzdHJ1Y3QgZGNfbGluayAqbGlua19jcmVhdGUoY29uc3Qgc3RydWN0 IGxpbmtfaW5pdF9kYXRhICppbml0X3BhcmFtcyk7CnZvaWQgbGlua19kZXN0cm95KHN0cnVjdCBk Y19saW5rICoqbGluayk7CgplbnVtIGRjX3N0YXR1cyBkY19saW5rX3ZhbGlkYXRlX21vZGVfdGlt aW5nKAogIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKICBzdHJ1Y3QgZGNf bGluayAqbGluaywKICBjb25zdCBzdHJ1Y3QgZGNfY3J0Y190aW1pbmcgKnRpbWluZyk7Cgp2b2lk IGNvcmVfbGlua19yZXN1bWUoc3RydWN0IGRjX2xpbmsgKmxpbmspOwoKdm9pZCBjb3JlX2xpbmtf ZW5hYmxlX3N0cmVhbSgKICBzdHJ1Y3QgZGNfc3RhdGUgKnN0YXRlLAogIHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgpOwoKdm9pZCBjb3JlX2xpbmtfZGlzYWJsZV9zdHJlYW0oc3RydWN0IHBpcGVf Y3R4ICpwaXBlX2N0eCk7Cgp2b2lkIGNvcmVfbGlua19zZXRfYXZtdXRlKHN0cnVjdCBwaXBlX2N0 eCAqcGlwZV9jdHgsIGJvb2wgZW5hYmxlKTsKCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody90cmFuc2Zvcm0uaCIgMQojIDg1ICIuL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIgMgojIDEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvZHBwLmgi IDEKIyAzMiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9o dy9kcHAuaCIKc3RydWN0IGRwcCB7CiBjb25zdCBzdHJ1Y3QgZHBwX2Z1bmNzICpmdW5jczsKIHN0 cnVjdCBkY19jb250ZXh0ICpjdHg7CiBpbnQgaW5zdDsKIHN0cnVjdCBkcHBfY2FwcyAqY2FwczsK IHN0cnVjdCBwd2xfcGFyYW1zIHJlZ2FtbWFfcGFyYW1zOwogc3RydWN0IHB3bF9wYXJhbXMgZGVn YW1tYV9wYXJhbXM7CiBzdHJ1Y3QgZHBwX2N1cnNvcl9hdHRyaWJ1dGVzIGN1cl9hdHRyOwoKIHN0 cnVjdCBwd2xfcGFyYW1zIHNoYXBlcl9wYXJhbXM7CiBib29sIGNtX2J5cGFzc19tb2RlOwp9OwoK c3RydWN0IGRwcF9pbnB1dF9jc2NfbWF0cml4IHsKIGVudW0gZGNfY29sb3Jfc3BhY2UgY29sb3Jf c3BhY2U7CiB1aW50MTZfdCByZWd2YWxbMTJdOwp9OwoKc3RhdGljIGNvbnN0IHN0cnVjdCBkcHBf aW5wdXRfY3NjX21hdHJpeCBkcHBfaW5wdXRfY3NjX21hdHJpeFtdID0gewoge0NPTE9SX1NQQUNF X1NSR0IsCiAgezB4MjAwMCwgMCwgMCwgMCwgMCwgMHgyMDAwLCAwLCAwLCAwLCAwLCAweDIwMDAs IDB9IH0sCiB7Q09MT1JfU1BBQ0VfU1JHQl9MSU1JVEVELAogIHsweDIwMDAsIDAsIDAsIDAsIDAs IDB4MjAwMCwgMCwgMCwgMCwgMCwgMHgyMDAwLCAwfSB9LAoge0NPTE9SX1NQQUNFX1lDQkNSNjAx LAogIHsweDJjZGQsIDB4MjAwMCwgMCwgMHhlOTkxLCAweGU5MjYsIDB4MjAwMCwgMHhmNGZkLCAw eDEwZWYsCiAgICAgIDAsIDB4MjAwMCwgMHgzOGI0LCAweGUzYTZ9IH0sCiB7Q09MT1JfU1BBQ0Vf WUNCQ1I2MDFfTElNSVRFRCwKICB7MHgzMzUzLCAweDI1NjgsIDAsIDB4ZTQwMCwgMHhlNWRjLCAw eDI1NjgsIDB4ZjM2NywgMHgxMTA4LAogICAgICAwLCAweDI1NjgsIDB4NDBkZSwgMHhkZDNhfSB9 LAoge0NPTE9SX1NQQUNFX1lDQkNSNzA5LAogIHsweDMyNjUsIDB4MjAwMCwgMCwgMHhlNmNlLCAw eGYxMDUsIDB4MjAwMCwgMHhmYTAxLCAweGE3ZCwgMCwKICAgICAgMHgyMDAwLCAweDNiNjEsIDB4 ZTI0Zn0gfSwKCiB7Q09MT1JfU1BBQ0VfWUNCQ1I3MDlfTElNSVRFRCwKICB7MHgzOWE2LCAweDI1 NjgsIDAsIDB4ZTBkNiwgMHhlZWRkLCAweDI1NjgsIDB4ZjkyNSwgMHg5YTgsIDAsCiAgICAgIDB4 MjU2OCwgMHg0M2VlLCAweGRiYjJ9IH0KfTsKCnN0cnVjdCBkcHBfZ3JwaF9jc2NfYWRqdXN0bWVu dCB7CiBzdHJ1Y3QgZml4ZWQzMV8zMiB0ZW1wZXJhdHVyZV9tYXRyaXhbMTJdOwogZW51bSBncmFw aGljc19nYW11dF9hZGp1c3RfdHlwZSBnYW11dF9hZGp1c3RfdHlwZTsKfTsKCnN0cnVjdCBjbnZf Y29sb3Jfa2V5ZXJfcGFyYW1zIHsKIGludCBjb2xvcl9rZXllcl9lbjsKIGludCBjb2xvcl9rZXll cl9tb2RlOwogaW50IGNvbG9yX2tleWVyX2FscGhhX2xvdzsKIGludCBjb2xvcl9rZXllcl9hbHBo YV9oaWdoOwogaW50IGNvbG9yX2tleWVyX3JlZF9sb3c7CiBpbnQgY29sb3Jfa2V5ZXJfcmVkX2hp Z2g7CiBpbnQgY29sb3Jfa2V5ZXJfZ3JlZW5fbG93OwogaW50IGNvbG9yX2tleWVyX2dyZWVuX2hp Z2g7CiBpbnQgY29sb3Jfa2V5ZXJfYmx1ZV9sb3c7CiBpbnQgY29sb3Jfa2V5ZXJfYmx1ZV9oaWdo Owp9OwoKCgoKCgoKc3RydWN0IGNudl9hbHBoYV8yYml0X2x1dCB7CiBpbnQgbHV0MDsKIGludCBs dXQxOwogaW50IGx1dDI7CiBpbnQgbHV0MzsKfTsKCnN0cnVjdCBkY25fZHBwX3N0YXRlIHsKIHVp bnQzMl90IGlzX2VuYWJsZWQ7CiB1aW50MzJfdCBpZ2FtX2x1dF9tb2RlOwogdWludDMyX3QgaWdh bV9pbnB1dF9mb3JtYXQ7CiB1aW50MzJfdCBkZ2FtX2x1dF9tb2RlOwogdWludDMyX3QgcmdhbV9s dXRfbW9kZTsKIHVpbnQzMl90IGdhbXV0X3JlbWFwX21vZGU7CiB1aW50MzJfdCBnYW11dF9yZW1h cF9jMTFfYzEyOwogdWludDMyX3QgZ2FtdXRfcmVtYXBfYzEzX2MxNDsKIHVpbnQzMl90IGdhbXV0 X3JlbWFwX2MyMV9jMjI7CiB1aW50MzJfdCBnYW11dF9yZW1hcF9jMjNfYzI0OwogdWludDMyX3Qg Z2FtdXRfcmVtYXBfYzMxX2MzMjsKIHVpbnQzMl90IGdhbXV0X3JlbWFwX2MzM19jMzQ7Cn07Cgpz dHJ1Y3QgQ01fYmlhc19wYXJhbXMgewogdWludDMyX3QgY21fYmlhc19jcl9yOwogdWludDMyX3Qg Y21fYmlhc195X2c7CiB1aW50MzJfdCBjbV9iaWFzX2NiX2I7CiB1aW50MzJfdCBjbV9iaWFzX2Zv cm1hdDsKfTsKCnN0cnVjdCBkcHBfZnVuY3MgewoKIHZvaWQgKCpkcHBfcHJvZ3JhbV9jbV9kZWFs cGhhKShzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKICB1aW50MzJfdCBlbmFibGUsIHVpbnQzMl90IGFk ZGl0aXZlX2JsZW5kaW5nKTsKCiB2b2lkICgqZHBwX3Byb2dyYW1fY21fYmlhcykoCiAgc3RydWN0 IGRwcCAqZHBwX2Jhc2UsCiAgc3RydWN0IENNX2JpYXNfcGFyYW1zICpiaWFzX3BhcmFtcyk7Cgog dm9pZCAoKmRwcF9yZWFkX3N0YXRlKShzdHJ1Y3QgZHBwICpkcHAsIHN0cnVjdCBkY25fZHBwX3N0 YXRlICpzKTsKCiB2b2lkICgqZHBwX3Jlc2V0KShzdHJ1Y3QgZHBwICpkcHApOwoKIHZvaWQgKCpk cHBfc2V0X3NjYWxlcikoc3RydWN0IGRwcCAqZHBwLAogICBjb25zdCBzdHJ1Y3Qgc2NhbGVyX2Rh dGEgKnNjbF9kYXRhKTsKCiB2b2lkICgqZHBwX3NldF9waXhlbF9zdG9yYWdlX2RlcHRoKSgKICAg c3RydWN0IGRwcCAqZHBwLAogICBlbnVtIGxiX3BpeGVsX2RlcHRoIGRlcHRoLAogICBjb25zdCBz dHJ1Y3QgYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMgKmJpdF9kZXB0aF9wYXJhbXMpOwoKIGJv b2wgKCpkcHBfZ2V0X29wdGltYWxfbnVtYmVyX29mX3RhcHMpKAogICBzdHJ1Y3QgZHBwICpkcHAs CiAgIHN0cnVjdCBzY2FsZXJfZGF0YSAqc2NsX2RhdGEsCiAgIGNvbnN0IHN0cnVjdCBzY2FsaW5n X3RhcHMgKmluX3RhcHMpOwoKIHZvaWQgKCpkcHBfc2V0X2dhbXV0X3JlbWFwKSgKICAgc3RydWN0 IGRwcCAqZHBwLAogICBjb25zdCBzdHJ1Y3QgZHBwX2dycGhfY3NjX2FkanVzdG1lbnQgKmFkanVz dCk7Cgogdm9pZCAoKmRwcF9zZXRfY3NjX2RlZmF1bHQpKAogIHN0cnVjdCBkcHAgKmRwcCwKICBl bnVtIGRjX2NvbG9yX3NwYWNlIGNvbG9yc3BhY2UpOwoKIHZvaWQgKCpkcHBfc2V0X2NzY19hZGp1 c3RtZW50KSgKICBzdHJ1Y3QgZHBwICpkcHAsCiAgY29uc3QgdWludDE2X3QgKnJlZ3ZhbCk7Cgog dm9pZCAoKmRwcF9wb3dlcl9vbl9yZWdhbW1hX2x1dCkoCiAgc3RydWN0IGRwcCAqZHBwLAogIGJv b2wgcG93ZXJfb24pOwoKIHZvaWQgKCpkcHBfcHJvZ3JhbV9yZWdhbW1hX2x1dCkoCiAgIHN0cnVj dCBkcHAgKmRwcCwKICAgY29uc3Qgc3RydWN0IHB3bF9yZXN1bHRfZGF0YSAqcmdiLAogICB1aW50 MzJfdCBudW0pOwoKIHZvaWQgKCpkcHBfY29uZmlndXJlX3JlZ2FtbWFfbHV0KSgKICAgc3RydWN0 IGRwcCAqZHBwLAogICBib29sIGlzX3JhbV9hKTsKCiB2b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1t YV9sdXRiX3NldHRpbmdzKSgKICAgc3RydWN0IGRwcCAqZHBwLAogICBjb25zdCBzdHJ1Y3QgcHds X3BhcmFtcyAqcGFyYW1zKTsKCiB2b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1tYV9sdXRhX3NldHRp bmdzKSgKICAgc3RydWN0IGRwcCAqZHBwLAogICBjb25zdCBzdHJ1Y3QgcHdsX3BhcmFtcyAqcGFy YW1zKTsKCiB2b2lkICgqZHBwX3Byb2dyYW1fcmVnYW1tYV9wd2wpKAogIHN0cnVjdCBkcHAgKmRw cCwKICBjb25zdCBzdHJ1Y3QgcHdsX3BhcmFtcyAqcGFyYW1zLAogIGVudW0gb3BwX3JlZ2FtbWEg bW9kZSk7Cgogdm9pZCAoKmRwcF9wcm9ncmFtX2JpYXNfYW5kX3NjYWxlKSgKICAgc3RydWN0IGRw cCAqZHBwLAogICBzdHJ1Y3QgZGNfYmlhc19hbmRfc2NhbGUgKnBhcmFtcyk7Cgogdm9pZCAoKmRw cF9zZXRfZGVnYW1tYSkoCiAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAogICBlbnVtIGlwcF9kZWdh bW1hX21vZGUgbW9kZSk7Cgogdm9pZCAoKmRwcF9wcm9ncmFtX2lucHV0X2x1dCkoCiAgIHN0cnVj dCBkcHAgKmRwcF9iYXNlLAogICBjb25zdCBzdHJ1Y3QgZGNfZ2FtbWEgKmdhbW1hKTsKCiB2b2lk ICgqZHBwX3Byb2dyYW1fZGVnYW1tYV9wd2wpKHN0cnVjdCBkcHAgKmRwcF9iYXNlLAogICAgICAg ICAgY29uc3Qgc3RydWN0IHB3bF9wYXJhbXMgKnBhcmFtcyk7Cgogdm9pZCAoKmRwcF9zZXR1cCko CiAgIHN0cnVjdCBkcHAgKmRwcF9iYXNlLAogICBlbnVtIHN1cmZhY2VfcGl4ZWxfZm9ybWF0IGZv cm1hdCwKICAgZW51bSBleHBhbnNpb25fbW9kZSBtb2RlLAogICBzdHJ1Y3QgZGNfY3NjX3RyYW5z Zm9ybSBpbnB1dF9jc2NfY29sb3JfbWF0cml4LAogICBlbnVtIGRjX2NvbG9yX3NwYWNlIGlucHV0 X2NvbG9yX3NwYWNlLAogICBzdHJ1Y3QgY252X2FscGhhXzJiaXRfbHV0ICphbHBoYV8yYml0X2x1 dCk7Cgogdm9pZCAoKmRwcF9mdWxsX2J5cGFzcykoc3RydWN0IGRwcCAqZHBwX2Jhc2UpOwoKIHZv aWQgKCpzZXRfY3Vyc29yX2F0dHJpYnV0ZXMpKAogICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKICAg c3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzICpjdXJzb3JfYXR0cmlidXRlcyk7Cgogdm9pZCAo KnNldF9jdXJzb3JfcG9zaXRpb24pKAogICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKICAgY29uc3Qg c3RydWN0IGRjX2N1cnNvcl9wb3NpdGlvbiAqcG9zLAogICBjb25zdCBzdHJ1Y3QgZGNfY3Vyc29y X21pX3BhcmFtICpwYXJhbSwKICAgdWludDMyX3Qgd2lkdGgsCiAgIHVpbnQzMl90IGhlaWdodAog ICApOwoKIHZvaWQgKCpkcHBfc2V0X2hkcl9tdWx0aXBsaWVyKSgKICAgc3RydWN0IGRwcCAqZHBw X2Jhc2UsCiAgIHVpbnQzMl90IG11bHRpcGxpZXIpOwoKIHZvaWQgKCpzZXRfb3B0aW9uYWxfY3Vy c29yX2F0dHJpYnV0ZXMpKAogICBzdHJ1Y3QgZHBwICpkcHBfYmFzZSwKICAgc3RydWN0IGRwcF9j dXJzb3JfYXR0cmlidXRlcyAqYXR0cik7Cgogdm9pZCAoKmRwcF9kcHBjbGtfY29udHJvbCkoCiAg IHN0cnVjdCBkcHAgKmRwcF9iYXNlLAogICBib29sIGRwcGNsa19kaXYsCiAgIGJvb2wgZW5hYmxl KTsKCiBib29sICgqZHBwX3Byb2dyYW1fYmxuZF9sdXQpKAogICBzdHJ1Y3QgZHBwICpkcHAsCiAg IGNvbnN0IHN0cnVjdCBwd2xfcGFyYW1zICpwYXJhbXMpOwogYm9vbCAoKmRwcF9wcm9ncmFtX3No YXBlcl9sdXQpKAogICBzdHJ1Y3QgZHBwICpkcHAsCiAgIGNvbnN0IHN0cnVjdCBwd2xfcGFyYW1z ICpwYXJhbXMpOwogYm9vbCAoKmRwcF9wcm9ncmFtXzNkbHV0KSgKICAgc3RydWN0IGRwcCAqZHBw LAogICBzdHJ1Y3QgdGV0cmFoZWRyYWxfcGFyYW1zICpwYXJhbXMpOwogdm9pZCAoKmRwcF9jbnZf c2V0X2FscGhhX2tleWVyKSgKICAgc3RydWN0IGRwcCAqZHBwX2Jhc2UsCiAgIHN0cnVjdCBjbnZf Y29sb3Jfa2V5ZXJfcGFyYW1zICpjb2xvcl9rZXllcik7Cn07CiMgODYgIi4vZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5oIiAyCgpzdHJ1Y3Qg cmVzb3VyY2VfcG9vbDsKc3RydWN0IGRjX3N0YXRlOwpzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dDsK c3RydWN0IGNsa19id19wYXJhbXM7CgpzdHJ1Y3QgcmVzb3VyY2VfZnVuY3Mgewogdm9pZCAoKmRl c3Ryb3kpKHN0cnVjdCByZXNvdXJjZV9wb29sICoqcG9vbCk7CiB2b2lkICgqbGlua19pbml0KShz dHJ1Y3QgZGNfbGluayAqbGluayk7CiBzdHJ1Y3QgbGlua19lbmNvZGVyICooKmxpbmtfZW5jX2Ny ZWF0ZSkoCiAgIGNvbnN0IHN0cnVjdCBlbmNvZGVyX2luaXRfZGF0YSAqaW5pdCk7CiBib29sICgq dmFsaWRhdGVfYmFuZHdpZHRoKSgKICAgICBzdHJ1Y3QgZGMgKmRjLAogICAgIHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCwKICAgICBib29sIGZhc3RfdmFsaWRhdGUpOwoKIGludCAoKnBvcHVsYXRl X2RtbF9waXBlcykoCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQs CiAgZGlzcGxheV9lMmVfcGlwZV9wYXJhbXNfc3QgKnBpcGVzKTsKCiBlbnVtIGRjX3N0YXR1cyAo KnZhbGlkYXRlX2dsb2JhbCkoCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNv bnRleHQpOwoKIHN0cnVjdCBwaXBlX2N0eCAqKCphY3F1aXJlX2lkbGVfcGlwZV9mb3JfbGF5ZXIp KAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9w b29sICpwb29sLAogICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwoKIGVudW0gZGNf c3RhdHVzICgqdmFsaWRhdGVfcGxhbmUpKGNvbnN0IHN0cnVjdCBkY19wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUsIHN0cnVjdCBkY19jYXBzICpjYXBzKTsKCiBlbnVtIGRjX3N0YXR1cyAoKmFkZF9z dHJlYW1fdG9fY3R4KSgKICAgc3RydWN0IGRjICpkYywKICAgc3RydWN0IGRjX3N0YXRlICpuZXdf Y3R4LAogICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0pOwoKIGVudW0gZGNfc3Rh dHVzICgqcmVtb3ZlX3N0cmVhbV9mcm9tX2N0eCkoCiAgICBzdHJ1Y3QgZGMgKmRjLAogICAgc3Ry dWN0IGRjX3N0YXRlICpuZXdfY3R4LAogICAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFt KTsKIGVudW0gZGNfc3RhdHVzICgqZ2V0X2RlZmF1bHRfc3dpenpsZV9tb2RlKSgKICAgc3RydWN0 IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cgogc3RydWN0IHN0cmVhbV9lbmNvZGVyICoo KmZpbmRfZmlyc3RfZnJlZV9tYXRjaF9zdHJlYW1fZW5jX2Zvcl9saW5rKSgKICAgc3RydWN0IHJl c291cmNlX2NvbnRleHQgKnJlc19jdHgsCiAgIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpw b29sLAogICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0pOwogdm9pZCAoKnBvcHVsYXRl X2RtbF93cml0ZWJhY2tfZnJvbV9jb250ZXh0KSgKICAgc3RydWN0IGRjICpkYywKICAgc3RydWN0 IHJlc291cmNlX2NvbnRleHQgKnJlc19jdHgsCiAgIGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1zX3N0 ICpwaXBlcyk7Cgogdm9pZCAoKnNldF9tY2lmX2FyYl9wYXJhbXMpKAogICBzdHJ1Y3QgZGMgKmRj LAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAgIGRpc3BsYXlfZTJlX3BpcGVfcGFyYW1z X3N0ICpwaXBlcywKICAgaW50IHBpcGVfY250KTsKIHZvaWQgKCp1cGRhdGVfYndfYm91bmRpbmdf Ym94KSgKICAgc3RydWN0IGRjICpkYywKICAgc3RydWN0IGNsa19id19wYXJhbXMgKmJ3X3BhcmFt cyk7Cgp9OwoKc3RydWN0IGF1ZGlvX3N1cHBvcnR7CiBib29sIGRwX2F1ZGlvOwogYm9vbCBoZG1p X2F1ZGlvX29uX2RvbmdsZTsKIGJvb2wgaGRtaV9hdWRpb19uYXRpdmU7Cn07CgoKCnN0cnVjdCBy ZXNvdXJjZV9wb29sIHsKIHN0cnVjdCBtZW1faW5wdXQgKm1pc1s2XTsKIHN0cnVjdCBodWJwICpo dWJwc1s2XTsKIHN0cnVjdCBpbnB1dF9waXhlbF9wcm9jZXNzb3IgKmlwcHNbNl07CiBzdHJ1Y3Qg dHJhbnNmb3JtICp0cmFuc2Zvcm1zWzZdOwogc3RydWN0IGRwcCAqZHBwc1s2XTsKIHN0cnVjdCBv dXRwdXRfcGl4ZWxfcHJvY2Vzc29yICpvcHBzWzZdOwogc3RydWN0IHRpbWluZ19nZW5lcmF0b3Ig KnRpbWluZ19nZW5lcmF0b3JzWzZdOwogc3RydWN0IHN0cmVhbV9lbmNvZGVyICpzdHJlYW1fZW5j WzYgKiAyXTsKIHN0cnVjdCBodWJidWIgKmh1YmJ1YjsKIHN0cnVjdCBtcGMgKm1wYzsKIHN0cnVj dCBwcF9zbXVfZnVuY3MgKnBwX3NtdTsKIHN0cnVjdCBkY2VfYXV4ICplbmdpbmVzWzZdOwogc3Ry dWN0IGRjZV9pMmNfaHcgKmh3X2kyY3NbNl07CiBzdHJ1Y3QgZGNlX2kyY19zdyAqc3dfaTJjc1s2 XTsKIGJvb2wgaTJjX2h3X2J1ZmZlcl9pbl91c2U7Cgogc3RydWN0IGR3YmMgKmR3YmNbMV07CiBz dHJ1Y3QgbWNpZl93YiAqbWNpZl93YlsxXTsKIHN0cnVjdCB7CiAgdW5zaWduZWQgaW50IGdzbF8w OjE7CiAgdW5zaWduZWQgaW50IGdzbF8xOjE7CiAgdW5zaWduZWQgaW50IGdzbF8yOjE7CiB9IGdz bF9ncm91cHM7Cgogc3RydWN0IGRpc3BsYXlfc3RyZWFtX2NvbXByZXNzb3IgKmRzY3NbNl07Cgog dW5zaWduZWQgaW50IHBpcGVfY291bnQ7CiB1bnNpZ25lZCBpbnQgdW5kZXJsYXlfcGlwZV9pbmRl eDsKIHVuc2lnbmVkIGludCBzdHJlYW1fZW5jX2NvdW50OwoKIHN0cnVjdCB7CiAgdW5zaWduZWQg aW50IHh0YWxpbl9jbG9ja19pbktoejsKICB1bnNpZ25lZCBpbnQgZGNjZ19yZWZfY2xvY2tfaW5L aHo7CiAgdW5zaWduZWQgaW50IGRjaHViX3JlZl9jbG9ja19pbktoejsKIH0gcmVmX2Nsb2NrczsK IHVuc2lnbmVkIGludCB0aW1pbmdfZ2VuZXJhdG9yX2NvdW50OwogdW5zaWduZWQgaW50IG1wY2Nf Y291bnQ7CgogdW5zaWduZWQgaW50IHdyaXRlYmFja19waXBlX2NvdW50OwoKCgogc3RydWN0IGNs b2NrX3NvdXJjZSAqZHBfY2xvY2tfc291cmNlOwoKIHN0cnVjdCBjbG9ja19zb3VyY2UgKmNsb2Nr X3NvdXJjZXNbN107CiB1bnNpZ25lZCBpbnQgY2xrX3NyY19jb3VudDsKCiBzdHJ1Y3QgYXVkaW8g KmF1ZGlvc1s3XTsKIHVuc2lnbmVkIGludCBhdWRpb19jb3VudDsKIHN0cnVjdCBhdWRpb19zdXBw b3J0IGF1ZGlvX3N1cHBvcnQ7Cgogc3RydWN0IGRjY2cgKmRjY2c7CiBzdHJ1Y3QgaXJxX3NlcnZp Y2UgKmlycXM7Cgogc3RydWN0IGFibSAqYWJtOwogc3RydWN0IGRtY3UgKmRtY3U7CiBzdHJ1Y3Qg ZG11Yl9wc3IgKnBzcjsKCiBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfZnVuY3MgKmZ1bmNzOwogY29u c3Qgc3RydWN0IHJlc291cmNlX2NhcHMgKnJlc19jYXA7Cgogc3RydWN0IGRkY19zZXJ2aWNlICpv ZW1fZGV2aWNlOwp9OwoKc3RydWN0IGRjbl9mZV9iYW5kd2lkdGggewogaW50IGRwcGNsa19raHo7 Cgp9OwoKc3RydWN0IHN0cmVhbV9yZXNvdXJjZSB7CiBzdHJ1Y3Qgb3V0cHV0X3BpeGVsX3Byb2Nl c3NvciAqb3BwOwogc3RydWN0IGRpc3BsYXlfc3RyZWFtX2NvbXByZXNzb3IgKmRzYzsKIHN0cnVj dCB0aW1pbmdfZ2VuZXJhdG9yICp0ZzsKIHN0cnVjdCBzdHJlYW1fZW5jb2RlciAqc3RyZWFtX2Vu YzsKIHN0cnVjdCBhdWRpbyAqYXVkaW87Cgogc3RydWN0IHBpeGVsX2Nsa19wYXJhbXMgcGl4X2Ns a19wYXJhbXM7CiBzdHJ1Y3QgZW5jb2Rlcl9pbmZvX2ZyYW1lIGVuY29kZXJfaW5mb19mcmFtZTsK CiBzdHJ1Y3QgYWJtICphYm07CgoKCiB1aW50OF90IGdzbF9ncm91cDsKfTsKCnN0cnVjdCBwbGFu ZV9yZXNvdXJjZSB7CiBzdHJ1Y3Qgc2NhbGVyX2RhdGEgc2NsX2RhdGE7CiBzdHJ1Y3QgaHVicCAq aHVicDsKIHN0cnVjdCBtZW1faW5wdXQgKm1pOwogc3RydWN0IGlucHV0X3BpeGVsX3Byb2Nlc3Nv ciAqaXBwOwogc3RydWN0IHRyYW5zZm9ybSAqeGZtOwogc3RydWN0IGRwcCAqZHBwOwogdWludDhf dCBtcGNjX2luc3Q7Cgogc3RydWN0IGRjbl9mZV9iYW5kd2lkdGggYnc7Cn07Cgp1bmlvbiBwaXBl X3VwZGF0ZV9mbGFncyB7CiBzdHJ1Y3QgewogIHVpbnQzMl90IGVuYWJsZSA6IDE7CiAgdWludDMy X3QgZGlzYWJsZSA6IDE7CiAgdWludDMyX3Qgb2RtIDogMTsKICB1aW50MzJfdCBnbG9iYWxfc3lu YyA6IDE7CiAgdWludDMyX3Qgb3BwX2NoYW5nZWQgOiAxOwogIHVpbnQzMl90IHRnX2NoYW5nZWQg OiAxOwogIHVpbnQzMl90IG1wY2MgOiAxOwogIHVpbnQzMl90IGRwcGNsayA6IDE7CiAgdWludDMy X3QgaHVicF9pbnRlcmRlcGVuZGVudCA6IDE7CiAgdWludDMyX3QgaHVicF9ycV9kbGdfdHR1IDog MTsKICB1aW50MzJfdCBnYW11dF9yZW1hcCA6IDE7CiAgdWludDMyX3Qgc2NhbGVyIDogMTsKICB1 aW50MzJfdCB2aWV3cG9ydCA6IDE7CiB9IGJpdHM7CiB1aW50MzJfdCByYXc7Cn07CgpzdHJ1Y3Qg cGlwZV9jdHggewogc3RydWN0IGRjX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKIHN0cnVjdCBk Y19zdHJlYW1fc3RhdGUgKnN0cmVhbTsKCiBzdHJ1Y3QgcGxhbmVfcmVzb3VyY2UgcGxhbmVfcmVz Owogc3RydWN0IHN0cmVhbV9yZXNvdXJjZSBzdHJlYW1fcmVzOwoKIHN0cnVjdCBjbG9ja19zb3Vy Y2UgKmNsb2NrX3NvdXJjZTsKCiBzdHJ1Y3QgcGxsX3NldHRpbmdzIHBsbF9zZXR0aW5nczsKCiB1 aW50OF90IHBpcGVfaWR4OwoKIHN0cnVjdCBwaXBlX2N0eCAqdG9wX3BpcGU7CiBzdHJ1Y3QgcGlw ZV9jdHggKmJvdHRvbV9waXBlOwogc3RydWN0IHBpcGVfY3R4ICpuZXh0X29kbV9waXBlOwogc3Ry dWN0IHBpcGVfY3R4ICpwcmV2X29kbV9waXBlOwoKCiBzdHJ1Y3QgX3Zjc19kcGlfZGlzcGxheV9k bGdfcmVnc19zdCBkbGdfcmVnczsKIHN0cnVjdCBfdmNzX2RwaV9kaXNwbGF5X3R0dV9yZWdzX3N0 IHR0dV9yZWdzOwogc3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcnFfcmVnc19zdCBycV9yZWdzOwog c3RydWN0IF92Y3NfZHBpX2Rpc3BsYXlfcGlwZV9kZXN0X3BhcmFtc19zdCBwaXBlX2RsZ19wYXJh bTsKCiB1bmlvbiBwaXBlX3VwZGF0ZV9mbGFncyB1cGRhdGVfZmxhZ3M7CiBzdHJ1Y3QgZHdiYyAq ZHdiYzsKIHN0cnVjdCBtY2lmX3diICptY2lmX3diOwp9OwoKc3RydWN0IHJlc291cmNlX2NvbnRl eHQgewogc3RydWN0IHBpcGVfY3R4IHBpcGVfY3R4WzZdOwogYm9vbCBpc19zdHJlYW1fZW5jX2Fj cXVpcmVkWzYgKiAyXTsKIGJvb2wgaXNfYXVkaW9fYWNxdWlyZWRbNl07CiB1aW50OF90IGNsb2Nr X3NvdXJjZV9yZWZfY291bnRbN107CiB1aW50OF90IGRwX2Nsb2NrX3NvdXJjZV9yZWZfY291bnQ7 CiBib29sIGlzX2RzY19hY3F1aXJlZFs2XTsKfTsKCnN0cnVjdCBkY2VfYndfb3V0cHV0IHsKIGJv b2wgY3B1Y19zdGF0ZV9jaGFuZ2VfZW5hYmxlOwogYm9vbCBjcHVwX3N0YXRlX2NoYW5nZV9lbmFi bGU7CiBib29sIHN0dXR0ZXJfbW9kZV9lbmFibGU7CiBib29sIG5icF9zdGF0ZV9jaGFuZ2VfZW5h YmxlOwogYm9vbCBhbGxfZGlzcGxheXNfaW5fc3luYzsKIHN0cnVjdCBkY2Vfd2F0ZXJtYXJrcyB1 cmdlbnRfd21fbnNbNl07CiBzdHJ1Y3QgZGNlX3dhdGVybWFya3Mgc3R1dHRlcl9leGl0X3dtX25z WzZdOwogc3RydWN0IGRjZV93YXRlcm1hcmtzIHN0dXR0ZXJfZW50cnlfd21fbnNbNl07CiBzdHJ1 Y3QgZGNlX3dhdGVybWFya3MgbmJwX3N0YXRlX2NoYW5nZV93bV9uc1s2XTsKIGludCBzY2xrX2to ejsKIGludCBzY2xrX2RlZXBfc2xlZXBfa2h6OwogaW50IHljbGtfa2h6OwogaW50IGRpc3BjbGtf a2h6OwogaW50IGJsYWNrb3V0X3JlY292ZXJ5X3RpbWVfdXM7Cn07CgpzdHJ1Y3QgZGNuX2J3X3dy aXRlYmFjayB7CiBzdHJ1Y3QgbWNpZl9hcmJfcGFyYW1zIG1jaWZfd2JfYXJiWzFdOwp9OwoKc3Ry dWN0IGRjbl9id19vdXRwdXQgewogc3RydWN0IGRjX2Nsb2NrcyBjbGs7CiBzdHJ1Y3QgZGNuX3dh dGVybWFya19zZXQgd2F0ZXJtYXJrczsKIHN0cnVjdCBkY25fYndfd3JpdGViYWNrIGJ3X3dyaXRl YmFjazsKfTsKCnVuaW9uIGJ3X291dHB1dCB7CiBzdHJ1Y3QgZGNuX2J3X291dHB1dCBkY247CiBz dHJ1Y3QgZGNlX2J3X291dHB1dCBkY2U7Cn07CgpzdHJ1Y3QgYndfY29udGV4dCB7CiB1bmlvbiBi d19vdXRwdXQgYnc7CiBzdHJ1Y3QgZGlzcGxheV9tb2RlX2xpYiBkbWw7Cn07CiMgMzYxICIuL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2NvcmVfdHlwZXMuaCIK c3RydWN0IGRjX3N0YXRlIHsKIHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbXNbNl07CiBz dHJ1Y3QgZGNfc3RyZWFtX3N0YXR1cyBzdHJlYW1fc3RhdHVzWzZdOwogdWludDhfdCBzdHJlYW1f Y291bnQ7Cgogc3RydWN0IHJlc291cmNlX2NvbnRleHQgcmVzX2N0eDsKCiBzdHJ1Y3QgYndfY29u dGV4dCBid19jdHg7CgoKIHN0cnVjdCBkbV9wcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb24gcHBfZGlz cGxheV9jZmc7Cgogc3RydWN0IGRjbl9id19pbnRlcm5hbF92YXJzIGRjbl9id192YXJzOwoKCiBz dHJ1Y3QgY2xrX21nciAqY2xrX21ncjsKCiBzdHJ1Y3Qga3JlZiByZWZjb3VudDsKfTsKIyAyOSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9yZXNvdXJjZS5o IiAyCgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9pbmNsdWRl L2RhbF9hc2ljX2lkLmgiIDEKIyAxNjggIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v ZGlzcGxheS9pbmNsdWRlL2RhbF9hc2ljX2lkLmgiCmVudW0gewogTlZfTkFWSTEwX1BfQTAgPSAx LAogTlZfTkFWSTEyX1BfQTAgPSAxMCwKIE5WX05BVkkxNF9NX0EwID0gMjAsCiBOVl9VTktOT1dO ID0gMHhGRgp9OwojIDMxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkv ZGMvaW5jL3Jlc291cmNlLmgiIDIKCgoKCgoKZW51bSBkY2VfdmVyc2lvbiByZXNvdXJjZV9wYXJz ZV9hc2ljX2lkKAogIHN0cnVjdCBod19hc2ljX2lkIGFzaWNfaWQpOwoKc3RydWN0IHJlc291cmNl X2NhcHMgewogaW50IG51bV90aW1pbmdfZ2VuZXJhdG9yOwogaW50IG51bV9vcHA7CiBpbnQgbnVt X3ZpZGVvX3BsYW5lOwogaW50IG51bV9hdWRpbzsKIGludCBudW1fc3RyZWFtX2VuY29kZXI7CiBp bnQgbnVtX3BsbDsKIGludCBudW1fZHdiOwogaW50IG51bV9kZGM7CiBpbnQgbnVtX3ZtaWQ7CiBp bnQgbnVtX2RzYzsKfTsKCnN0cnVjdCByZXNvdXJjZV9zdHJhcHMgewogdWludDMyX3QgaGRtaV9k aXNhYmxlOwogdWludDMyX3QgZGNfcGluc3RyYXBzX2F1ZGlvOwogdWludDMyX3QgYXVkaW9fc3Ry ZWFtX251bWJlcjsKfTsKCnN0cnVjdCByZXNvdXJjZV9jcmVhdGVfZnVuY3Mgewogdm9pZCAoKnJl YWRfZGNlX3N0cmFwcykoCiAgIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHN0cnVjdCByZXNvdXJj ZV9zdHJhcHMgKnN0cmFwcyk7Cgogc3RydWN0IGF1ZGlvICooKmNyZWF0ZV9hdWRpbykoCiAgIHN0 cnVjdCBkY19jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCBpbnN0KTsKCiBzdHJ1Y3Qgc3RyZWFt X2VuY29kZXIgKigqY3JlYXRlX3N0cmVhbV9lbmNvZGVyKSgKICAgZW51bSBlbmdpbmVfaWQgZW5n X2lkLCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4KTsKCiBzdHJ1Y3QgZGNlX2h3c2VxICooKmNyZWF0 ZV9od3NlcSkoCiAgIHN0cnVjdCBkY19jb250ZXh0ICpjdHgpOwp9OwoKYm9vbCByZXNvdXJjZV9j b25zdHJ1Y3QoCiB1bnNpZ25lZCBpbnQgbnVtX3ZpcnR1YWxfbGlua3MsCiBzdHJ1Y3QgZGMgKmRj LAogc3RydWN0IHJlc291cmNlX3Bvb2wgKnBvb2wsCiBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfY3Jl YXRlX2Z1bmNzICpjcmVhdGVfZnVuY3MpOwoKc3RydWN0IHJlc291cmNlX3Bvb2wgKmRjX2NyZWF0 ZV9yZXNvdXJjZV9wb29sKHN0cnVjdCBkYyAqZGMsCiAgICAgICAgICAgY29uc3Qgc3RydWN0IGRj X2luaXRfZGF0YSAqaW5pdF9kYXRhLAogICAgICAgICAgIGVudW0gZGNlX3ZlcnNpb24gZGNfdmVy c2lvbik7Cgp2b2lkIGRjX2Rlc3Ryb3lfcmVzb3VyY2VfcG9vbChzdHJ1Y3QgZGMgKmRjKTsKCmVu dW0gZGNfc3RhdHVzIHJlc291cmNlX21hcF9wb29sX3Jlc291cmNlcygKICBjb25zdCBzdHJ1Y3Qg ZGMgKmRjLAogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlICpzdHJlYW0pOwoKYm9vbCByZXNvdXJjZV9idWlsZF9zY2FsaW5nX3BhcmFtcyhzdHJ1Y3Qg cGlwZV9jdHggKnBpcGVfY3R4KTsKCmVudW0gZGNfc3RhdHVzIHJlc291cmNlX2J1aWxkX3NjYWxp bmdfcGFyYW1zX2Zvcl9jb250ZXh0KAogIGNvbnN0IHN0cnVjdCBkYyAqZGMsCiAgc3RydWN0IGRj X3N0YXRlICpjb250ZXh0KTsKCnZvaWQgcmVzb3VyY2VfYnVpbGRfaW5mb19mcmFtZShzdHJ1Y3Qg cGlwZV9jdHggKnBpcGVfY3R4KTsKCnZvaWQgcmVzb3VyY2VfdW5yZWZlcmVuY2VfY2xvY2tfc291 cmNlKAogIHN0cnVjdCByZXNvdXJjZV9jb250ZXh0ICpyZXNfY3R4LAogIGNvbnN0IHN0cnVjdCBy ZXNvdXJjZV9wb29sICpwb29sLAogIHN0cnVjdCBjbG9ja19zb3VyY2UgKmNsb2NrX3NvdXJjZSk7 Cgp2b2lkIHJlc291cmNlX3JlZmVyZW5jZV9jbG9ja19zb3VyY2UoCiAgc3RydWN0IHJlc291cmNl X2NvbnRleHQgKnJlc19jdHgsCiAgY29uc3Qgc3RydWN0IHJlc291cmNlX3Bvb2wgKnBvb2wsCiAg c3RydWN0IGNsb2NrX3NvdXJjZSAqY2xvY2tfc291cmNlKTsKCmludCByZXNvdXJjZV9nZXRfY2xv Y2tfc291cmNlX3JlZmVyZW5jZSgKICBzdHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwK ICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9vbCwKICBzdHJ1Y3QgY2xvY2tfc291cmNl ICpjbG9ja19zb3VyY2UpOwoKYm9vbCByZXNvdXJjZV9hcmVfc3RyZWFtc190aW1pbmdfc3luY2hy b25pemFibGUoCiAgc3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtMSwKICBzdHJ1Y3QgZGNf c3RyZWFtX3N0YXRlICpzdHJlYW0yKTsKCnN0cnVjdCBjbG9ja19zb3VyY2UgKnJlc291cmNlX2Zp bmRfdXNlZF9jbGtfc3JjX2Zvcl9zaGFyaW5nKAogIHN0cnVjdCByZXNvdXJjZV9jb250ZXh0ICpy ZXNfY3R4LAogIHN0cnVjdCBwaXBlX2N0eCAqcGlwZV9jdHgpOwoKc3RydWN0IGNsb2NrX3NvdXJj ZSAqZGNfcmVzb3VyY2VfZmluZF9maXJzdF9mcmVlX3BsbCgKICBzdHJ1Y3QgcmVzb3VyY2VfY29u dGV4dCAqcmVzX2N0eCwKICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9vbCk7CgpzdHJ1 Y3QgcGlwZV9jdHggKnJlc291cmNlX2dldF9oZWFkX3BpcGVfZm9yX3N0cmVhbSgKICBzdHJ1Y3Qg cmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJl YW0pOwoKYm9vbCByZXNvdXJjZV9hdHRhY2hfc3VyZmFjZXNfdG9fY29udGV4dCgKICBzdHJ1Y3Qg ZGNfcGxhbmVfc3RhdGUgKmNvbnN0ICpwbGFuZV9zdGF0ZSwKICBpbnQgc3VyZmFjZV9jb3VudCwK ICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpkY19zdHJlYW0sCiAgc3RydWN0IGRjX3N0YXRlICpj b250ZXh0LAogIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sKTsKCnN0cnVjdCBwaXBl X2N0eCAqZmluZF9pZGxlX3NlY29uZGFyeV9waXBlKAogIHN0cnVjdCByZXNvdXJjZV9jb250ZXh0 ICpyZXNfY3R4LAogIGNvbnN0IHN0cnVjdCByZXNvdXJjZV9wb29sICpwb29sLAogIGNvbnN0IHN0 cnVjdCBwaXBlX2N0eCAqcHJpbWFyeV9waXBlKTsKCmJvb2wgcmVzb3VyY2VfaXNfc3RyZWFtX3Vu Y2hhbmdlZCgKIHN0cnVjdCBkY19zdGF0ZSAqb2xkX2NvbnRleHQsIHN0cnVjdCBkY19zdHJlYW1f c3RhdGUgKnN0cmVhbSk7Cgpib29sIHJlc291cmNlX3ZhbGlkYXRlX2F0dGFjaF9zdXJmYWNlcygK ICBjb25zdCBzdHJ1Y3QgZGNfdmFsaWRhdGlvbl9zZXQgc2V0W10sCiAgaW50IHNldF9jb3VudCwK ICBjb25zdCBzdHJ1Y3QgZGNfc3RhdGUgKm9sZF9jb250ZXh0LAogIHN0cnVjdCBkY19zdGF0ZSAq Y29udGV4dCwKICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2VfcG9vbCAqcG9vbCk7Cgp2b2lkIHJlc291 cmNlX3ZhbGlkYXRlX2N0eF91cGRhdGVfcG9pbnRlcl9hZnRlcl9jb3B5KAogIGNvbnN0IHN0cnVj dCBkY19zdGF0ZSAqc3JjX2N0eCwKICBzdHJ1Y3QgZGNfc3RhdGUgKmRzdF9jdHgpOwoKZW51bSBk Y19zdGF0dXMgcmVzb3VyY2VfbWFwX2Nsb2NrX3Jlc291cmNlcygKICBjb25zdCBzdHJ1Y3QgZGMg KmRjLAogIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCwKICBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRl ICpzdHJlYW0pOwoKZW51bSBkY19zdGF0dXMgcmVzb3VyY2VfbWFwX3BoeV9jbG9ja19yZXNvdXJj ZXMoCiAgY29uc3Qgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAg c3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtKTsKCmJvb2wgcGlwZV9uZWVkX3JlcHJvZ3Jh bSgKICBzdHJ1Y3QgcGlwZV9jdHggKnBpcGVfY3R4X29sZCwKICBzdHJ1Y3QgcGlwZV9jdHggKnBp cGVfY3R4KTsKCnZvaWQgcmVzb3VyY2VfYnVpbGRfYml0X2RlcHRoX3JlZHVjdGlvbl9wYXJhbXMo c3RydWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAogIHN0cnVjdCBiaXRfZGVwdGhfcmVkdWN0 aW9uX3BhcmFtcyAqZm10X2JpdF9kZXB0aCk7Cgp2b2lkIHVwZGF0ZV9hdWRpb191c2FnZSgKICBz dHJ1Y3QgcmVzb3VyY2VfY29udGV4dCAqcmVzX2N0eCwKICBjb25zdCBzdHJ1Y3QgcmVzb3VyY2Vf cG9vbCAqcG9vbCwKICBzdHJ1Y3QgYXVkaW8gKmF1ZGlvLAogIGJvb2wgYWNxdWlyZWQpOwoKdW5z aWduZWQgaW50IHJlc291cmNlX3BpeGVsX2Zvcm1hdF90b19icHAoZW51bSBzdXJmYWNlX3BpeGVs X2Zvcm1hdCBmb3JtYXQpOwoKdm9pZCBnZXRfYXVkaW9fY2hlY2soc3RydWN0IGF1ZGlvX2luZm8g KmF1ZF9tb2RlcywKIHN0cnVjdCBhdWRpb19jaGVjayAqYXVkX2Noayk7CiMgMzcgIi4vZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvaHcvY2xrX21ncl9pbnRlcm5h bC5oIiAyCgoKCmVudW0gZGVudGlzdF9iYXNlX2RpdmlkZXJfaWQgewogREVOVElTVF9CQVNFX0RJ RF8xID0gMHgwOCwKIERFTlRJU1RfQkFTRV9ESURfMiA9IDB4NDAsCiBERU5USVNUX0JBU0VfRElE XzMgPSAweDYwLAogREVOVElTVF9CQVNFX0RJRF80ID0gMHg3ZSwKIERFTlRJU1RfTUFYX0RJRCA9 IDB4N2YKfTsKCgplbnVtIGRlbnRpc3RfZGl2aWRlcl9yYW5nZSB7CiBERU5USVNUX0RJVklERVJf UkFOR0VfMV9TVEFSVCA9IDgsCiBERU5USVNUX0RJVklERVJfUkFOR0VfMV9TVEVQID0gMSwKIERF TlRJU1RfRElWSURFUl9SQU5HRV8yX1NUQVJUID0gNjQsCiBERU5USVNUX0RJVklERVJfUkFOR0Vf Ml9TVEVQID0gMiwKIERFTlRJU1RfRElWSURFUl9SQU5HRV8zX1NUQVJUID0gMTI4LAogREVOVElT VF9ESVZJREVSX1JBTkdFXzNfU1RFUCA9IDQsCiBERU5USVNUX0RJVklERVJfUkFOR0VfNF9TVEFS VCA9IDI0OCwKIERFTlRJU1RfRElWSURFUl9SQU5HRV80X1NURVAgPSAyNjQsCiBERU5USVNUX0RJ VklERVJfUkFOR0VfU0NBTEVfRkFDVE9SID0gNAp9OwojIDE1MSAiLi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2luYy9ody9jbGtfbWdyX2ludGVybmFsLmgiCnN0cnVj dCBjbGtfbWdyX3NoaWZ0IHsKIHVpbnQ4X3QgRFBSRUZDTEtfU1JDX1NFTDsgdWludDhfdCBERU5U SVNUX0RQUkVGQ0xLX1dESVZJREVSOyB1aW50OF90IERFTlRJU1RfRElTUENMS19XRElWSURFUjsg dWludDhfdCBERU5USVNUX0RJU1BDTEtfQ0hHX0RPTkU7CiB1aW50OF90IERFTlRJU1RfRFBQQ0xL X1dESVZJREVSOyB1aW50OF90IERFTlRJU1RfRFBQQ0xLX0NIR19ET05FOyB1aW50OF90IEZiTXVs dF9pbnQ7IHVpbnQ4X3QgRmJNdWx0X2ZyYWM7CiB1aW50MzJfdCBDT05URU5UOwp9OwoKc3RydWN0 IGNsa19tZ3JfbWFzayB7CiB1aW50MzJfdCBEUFJFRkNMS19TUkNfU0VMOyB1aW50MzJfdCBERU5U SVNUX0RQUkVGQ0xLX1dESVZJREVSOyB1aW50MzJfdCBERU5USVNUX0RJU1BDTEtfV0RJVklERVI7 IHVpbnQzMl90IERFTlRJU1RfRElTUENMS19DSEdfRE9ORTsKIHVpbnQzMl90IERFTlRJU1RfRFBQ Q0xLX1dESVZJREVSOyB1aW50MzJfdCBERU5USVNUX0RQUENMS19DSEdfRE9ORTsgdWludDMyX3Qg RmJNdWx0X2ludDsgdWludDMyX3QgRmJNdWx0X2ZyYWM7CiB1aW50MzJfdCBDT05URU5UOwp9OwoK c3RydWN0IGNsa19tZ3JfcmVnaXN0ZXJzIHsKIHVpbnQzMl90IERQUkVGQ0xLX0NOVEw7CiB1aW50 MzJfdCBERU5USVNUX0RJU1BDTEtfQ05UTDsKCiB1aW50MzJfdCBDTEszX0NMSzJfREZTX0NOVEw7 CiB1aW50MzJfdCBDTEszX0NMS19QTExfUkVROwoKIHVpbnQzMl90IE1QMV9TTU5fQzJQTVNHXzY3 OwogdWludDMyX3QgTVAxX1NNTl9DMlBNU0dfODM7CiB1aW50MzJfdCBNUDFfU01OX0MyUE1TR185 MTsKfTsKCmVudW0gY2xvY2tfdHlwZSB7CiBjbG9ja190eXBlX2Rpc3BjbGsgPSAxLAogY2xvY2tf dHlwZV9kY2ZjbGssCiBjbG9ja190eXBlX3NvY2NsaywKIGNsb2NrX3R5cGVfcGl4ZWxjbGssCiBj bG9ja190eXBlX3BoeWNsaywKIGNsb2NrX3R5cGVfZHBwY2xrLAogY2xvY2tfdHlwZV9mY2xrLAog Y2xvY2tfdHlwZV9kY2Zkc2NsaywKIGNsb2NrX3R5cGVfZHNjY2xrLAogY2xvY2tfdHlwZV91Y2xr LAogY2xvY2tfdHlwZV9kcmFtY2xrLAp9OwoKCnN0cnVjdCBzdGF0ZV9kZXBlbmRlbnRfY2xvY2tz IHsKIGludCBkaXNwbGF5X2Nsa19raHo7CiBpbnQgcGl4ZWxfY2xrX2toejsKfTsKCnN0cnVjdCBj bGtfbWdyX2ludGVybmFsIHsKIHN0cnVjdCBjbGtfbWdyIGJhc2U7CiBpbnQgc211X3ZlcjsKIHN0 cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdTsKIHN0cnVjdCBjbGtfbWdyX2ludGVybmFsX2Z1bmNz ICpmdW5jczsKCiBzdHJ1Y3QgZGNjZyAqZGNjZzsKCgoKCgoKCiBjb25zdCBzdHJ1Y3QgY2xrX21n cl9yZWdpc3RlcnMgKnJlZ3M7CiBjb25zdCBzdHJ1Y3QgY2xrX21ncl9zaGlmdCAqY2xrX21ncl9z aGlmdDsKIGNvbnN0IHN0cnVjdCBjbGtfbWdyX21hc2sgKmNsa19tZ3JfbWFzazsKCiBzdHJ1Y3Qg c3RhdGVfZGVwZW5kZW50X2Nsb2NrcyBtYXhfY2xrc19ieV9zdGF0ZVtETV9QUF9DTE9DS1NfTUFY X1NUQVRFU107CgoKCiBib29sIGRmc19ieXBhc3NfZW5hYmxlZDsKCiBib29sIGRmc19ieXBhc3Nf YWN0aXZlOwoKIHVpbnQzMl90IGRmc19yZWZfZnJlcV9raHo7CgoKCgogaW50IGRmc19ieXBhc3Nf ZGlzcF9jbGs7CgoKCgoKCiBib29sIHNzX29uX2RwcmVmY2xrOwoKCgoKCgoKIGJvb2wgeGdtaV9l bmFibGVkOwojIDI1MiAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2luYy9ody9jbGtfbWdyX2ludGVybmFsLmgiCiBpbnQgZHByZWZjbGtfc3NfcGVyY2VudGFnZTsK CgoKCgoKIGludCBkcHJlZmNsa19zc19kaXZpZGVyOwoKIGVudW0gZG1fcHBfY2xvY2tzX3N0YXRl IG1heF9jbGtzX3N0YXRlOwogZW51bSBkbV9wcF9jbG9ja3Nfc3RhdGUgY3VyX21pbl9jbGtzX3N0 YXRlOwp9OwoKc3RydWN0IGNsa19tZ3JfaW50ZXJuYWxfZnVuY3MgewogaW50ICgqc2V0X2Rpc3Bj bGspKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyLCBpbnQgcmVxdWVzdGVkX2Rpc3Bj bGtfa2h6KTsKIGludCAoKnNldF9kcHJlZmNsaykoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNs a19tZ3IpOwp9OwojIDI3OCAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5 L2RjL2luYy9ody9jbGtfbWdyX2ludGVybmFsLmgiCnN0YXRpYyBpbmxpbmUgX19hdHRyaWJ1dGVf XygoX19nbnVfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkgX19hdHRyaWJ1 dGVfXygobm9faW5zdHJ1bWVudF9mdW5jdGlvbikpIGJvb2wgc2hvdWxkX3NldF9jbG9jayhib29s IHNhZmVfdG9fbG93ZXIsIGludCBjYWxjX2NsaywgaW50IGN1cl9jbGspCnsKIHJldHVybiAoKHNh ZmVfdG9fbG93ZXIgJiYgY2FsY19jbGsgPCBjdXJfY2xrKSB8fCBjYWxjX2NsayA+IGN1cl9jbGsp Owp9CgpzdGF0aWMgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fZ251X2lubGluZV9fKSkgX19hdHRy aWJ1dGVfXygoX191bnVzZWRfXykpIF9fYXR0cmlidXRlX18oKG5vX2luc3RydW1lbnRfZnVuY3Rp b24pKSBib29sIHNob3VsZF91cGRhdGVfcHN0YXRlX3N1cHBvcnQoYm9vbCBzYWZlX3RvX2xvd2Vy LCBib29sIGNhbGNfc3VwcG9ydCwgYm9vbCBjdXJfc3VwcG9ydCkKewogaWYgKGN1cl9zdXBwb3J0 ICE9IGNhbGNfc3VwcG9ydCkgewogIGlmIChjYWxjX3N1cHBvcnQgPT0gdHJ1ZSAmJiBzYWZlX3Rv X2xvd2VyKQogICByZXR1cm4gdHJ1ZTsKICBlbHNlIGlmIChjYWxjX3N1cHBvcnQgPT0gZmFsc2Ug JiYgIXNhZmVfdG9fbG93ZXIpCiAgIHJldHVybiB0cnVlOwogfQoKIHJldHVybiBmYWxzZTsKfQoK aW50IGNsa19tZ3JfaGVscGVyX2dldF9hY3RpdmVfZGlzcGxheV9jbnQoCiAgc3RydWN0IGRjICpk YywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpOwojIDI4ICJkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5jIiAyCgoKIyAx ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24y MC9kY24yMF9jbGtfbWdyLmgiIDEKIyAyOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjAvZGNuMjBfY2xrX21nci5oIgp2b2lkIGRjbjJfdXBk YXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqZGNjZywKICAgc3RydWN0IGRjX3N0YXRlICpjb250 ZXh0LAogICBib29sIHNhZmVfdG9fbG93ZXIpOwoKdm9pZCBkY24yX3VwZGF0ZV9jbG9ja3NfZnBn YShzdHJ1Y3QgY2xrX21nciAqY2xrX21nciwKICAgc3RydWN0IGRjX3N0YXRlICpjb250ZXh0LAog ICBib29sIHNhZmVfdG9fbG93ZXIpOwp2b2lkIGRjbjIwX3VwZGF0ZV9jbG9ja3NfdXBkYXRlX2Rw cF9kdG8oc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsCiAgc3RydWN0IGRjX3N0YXRl ICpjb250ZXh0LCBib29sIHNhZmVfdG9fbG93ZXIpOwoKdm9pZCBkY24yX2luaXRfY2xvY2tzKHN0 cnVjdCBjbGtfbWdyICpjbGtfbWdyKTsKCnZvaWQgZGNuMjBfY2xrX21ncl9jb25zdHJ1Y3Qoc3Ry dWN0IGRjX2NvbnRleHQgKmN0eCwKICBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwK ICBzdHJ1Y3QgcHBfc211X2Z1bmNzICpwcF9zbXUsCiAgc3RydWN0IGRjY2cgKmRjY2cpOwoKdWlu dDMyX3QgZGVudGlzdF9nZXRfZGlkX2Zyb21fZGl2aWRlcihpbnQgZGl2aWRlcik7Cgp2b2lkIGRj bjJfZ2V0X2Nsb2NrKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyLAogIHN0cnVjdCBkY19zdGF0ZSAq Y29udGV4dCwKICAgZW51bSBkY19jbG9ja190eXBlIGNsb2NrX3R5cGUsCiAgIHN0cnVjdCBkY19j bG9ja19jb25maWcgKmNsb2NrX2NmZyk7Cgp2b2lkIGRjbjIwX3VwZGF0ZV9jbG9ja3NfdXBkYXRl X2RlbnRpc3Qoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOwoKdm9pZCBkY24yX3Jl YWRfY2xvY2tzX2Zyb21faHdfZGVudGlzdChzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlKTsK IyAzMSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2Rj bjIxL3JuX2Nsa19tZ3IuYyIgMgojIDEgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdyLmgiIDEKIyAyOSAiZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuaCIK IyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvaW5jL2h3L2Ns a19tZ3IuaCIgMQojIDMwICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2Rj L2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5oIiAyCgoKc3RydWN0IHJuX2Nsa19yZWdpc3RlcnMg ewogdWludDMyX3QgQ0xLMV9DTEswX0NVUlJFTlRfQ05UOwp9OwoKdm9pZCBybl9jbGtfbWdyX2Nv bnN0cnVjdChzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIHN0cnVjdCBjbGtfbWdyX2ludGVybmFs ICpjbGtfbWdyLAogIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSwKICBzdHJ1Y3QgZGNjZyAq ZGNjZyk7CiMgMzIgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xr X21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKCgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjZTEwMC9kY2VfY2xrX21nci5oIiAxCiMgMzMg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjZTEw MC9kY2VfY2xrX21nci5oIgppbnQgZGNlX2FkanVzdF9kcF9yZWZfZnJlcV9mb3Jfc3Moc3RydWN0 IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3JfZGNlLCBpbnQgZHBfcmVmX2Nsa19raHopOwppbnQg ZGNlX2dldF9kcF9yZWZfZnJlcV9raHooc3RydWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSk7CmVu dW0gZG1fcHBfY2xvY2tzX3N0YXRlIGRjZV9nZXRfcmVxdWlyZWRfY2xvY2tzX3N0YXRlKAogc3Ry dWN0IGNsa19tZ3IgKmNsa19tZ3JfYmFzZSwKIHN0cnVjdCBkY19zdGF0ZSAqY29udGV4dCk7Cgp1 aW50MzJfdCBkY2VfZ2V0X21heF9waXhlbF9jbG9ja19mb3JfYWxsX3BhdGhzKHN0cnVjdCBkY19z dGF0ZSAqY29udGV4dCk7CgoKdm9pZCBkY2VfY2xrX21ncl9jb25zdHJ1Y3QoCiAgc3RydWN0IGRj X2NvbnRleHQgKmN0eCwKICBzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21ncl9kY2UpOwoK dm9pZCBkY2VfY2xvY2tfcmVhZF9zc19pbmZvKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpkY2Nn X2RjZSk7CgppbnQgZGNlMTJfZ2V0X2RwX3JlZl9mcmVxX2toeihzdHJ1Y3QgY2xrX21nciAqZGNj Zyk7CgppbnQgZGNlX3NldF9jbG9jaygKIHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UsCiBp bnQgcmVxdWVzdGVkX2Nsa19raHopOwoKCnZvaWQgZGNlX2Nsa19tZ3JfZGVzdHJveShzdHJ1Y3Qg Y2xrX21nciAqKmNsa19tZ3IpOwoKaW50IGRlbnRpc3RfZ2V0X2RpdmlkZXJfZnJvbV9kaWQoaW50 IGRpZCk7CiMgMzUgImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xr X21nci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKIyAxICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21ncl92Ymlvc19zbXUuaCIgMQoj IDI5ICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNu MjEvcm5fY2xrX21ncl92Ymlvc19zbXUuaCIKaW50IHJuX3ZiaW9zX3NtdV9nZXRfc211X3ZlcnNp b24oc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IpOwppbnQgcm5fdmJpb3Nfc211X3Nl dF9kaXNwY2xrKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyLCBpbnQgcmVxdWVzdGVk X2Rpc3BjbGtfa2h6KTsKaW50IHJuX3ZiaW9zX3NtdV9zZXRfZHByZWZjbGsoc3RydWN0IGNsa19t Z3JfaW50ZXJuYWwgKmNsa19tZ3IpOwppbnQgcm5fdmJpb3Nfc211X3NldF9oYXJkX21pbl9kY2Zj bGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGludCByZXF1ZXN0ZWRfZGNmY2xr X2toeik7CmludCBybl92Ymlvc19zbXVfc2V0X21pbl9kZWVwX3NsZWVwX2RjZmNsayhzdHJ1Y3Qg Y2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9taW5fZHNfZGNmY2xrX2to eik7CnZvaWQgcm5fdmJpb3Nfc211X3NldF9waHljbGsoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwg KmNsa19tZ3IsIGludCByZXF1ZXN0ZWRfcGh5Y2xrX2toeik7CmludCBybl92Ymlvc19zbXVfc2V0 X2RwcGNsayhzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciwgaW50IHJlcXVlc3RlZF9k cHBfa2h6KTsKdm9pZCBybl92Ymlvc19zbXVfc2V0X2Rjbl9sb3dfcG93ZXJfc3RhdGUoc3RydWN0 IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IsIGludCBkaXNwbGF5X2NvdW50KTsKdm9pZCBybl92 Ymlvc19zbXVfZW5hYmxlXzQ4bWh6X3RtZHBfcmVmY2xrX3B3cmR3bihzdHJ1Y3QgY2xrX21ncl9p bnRlcm5hbCAqY2xrX21nciwgYm9vbCBlbmFibGUpOwp2b2lkIHJuX3ZiaW9zX3NtdV9lbmFibGVf cG1lX3dhKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtfbWdyKTsKIyAzNiAiZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3Iu YyIgMgojIDEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMv cmVnX2hlbHBlci5oIiAxCiMgMzkxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rp c3BsYXkvZGMvaW5jL3JlZ19oZWxwZXIuaCIKdWludDMyX3QgZ2VuZXJpY19yZWdfZ2V0KGNvbnN0 IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCiAgdWludDhfdCBzaGlmdCwg dWludDMyX3QgbWFzaywgdWludDMyX3QgKmZpZWxkX3ZhbHVlKTsKCnVpbnQzMl90IGdlbmVyaWNf cmVnX2dldDIoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwgdWludDMyX3QgYWRkciwKICB1 aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCiAg dWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRfdmFsdWUyKTsK CnVpbnQzMl90IGdlbmVyaWNfcmVnX2dldDMoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwg dWludDMyX3QgYWRkciwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90 ICpmaWVsZF92YWx1ZTEsCiAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJf dCAqZmllbGRfdmFsdWUyLAogIHVpbnQ4X3Qgc2hpZnQzLCB1aW50MzJfdCBtYXNrMywgdWludDMy X3QgKmZpZWxkX3ZhbHVlMyk7Cgp1aW50MzJfdCBnZW5lcmljX3JlZ19nZXQ0KGNvbnN0IHN0cnVj dCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCiAgdWludDhfdCBzaGlmdDEsIHVpbnQz Ml90IG1hc2sxLCB1aW50MzJfdCAqZmllbGRfdmFsdWUxLAogIHVpbnQ4X3Qgc2hpZnQyLCB1aW50 MzJfdCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKICB1aW50OF90IHNoaWZ0MywgdWlu dDMyX3QgbWFzazMsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTMsCiAgdWludDhfdCBzaGlmdDQsIHVp bnQzMl90IG1hc2s0LCB1aW50MzJfdCAqZmllbGRfdmFsdWU0KTsKCnVpbnQzMl90IGdlbmVyaWNf cmVnX2dldDUoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwgdWludDMyX3QgYWRkciwKICB1 aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCiAg dWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRfdmFsdWUyLAog IHVpbnQ4X3Qgc2hpZnQzLCB1aW50MzJfdCBtYXNrMywgdWludDMyX3QgKmZpZWxkX3ZhbHVlMywK ICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTQs CiAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1hc2s1LCB1aW50MzJfdCAqZmllbGRfdmFsdWU1 KTsKCnVpbnQzMl90IGdlbmVyaWNfcmVnX2dldDYoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0 eCwgdWludDMyX3QgYWRkciwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQz Ml90ICpmaWVsZF92YWx1ZTEsCiAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50 MzJfdCAqZmllbGRfdmFsdWUyLAogIHVpbnQ4X3Qgc2hpZnQzLCB1aW50MzJfdCBtYXNrMywgdWlu dDMyX3QgKmZpZWxkX3ZhbHVlMywKICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVp bnQzMl90ICpmaWVsZF92YWx1ZTQsCiAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1hc2s1LCB1 aW50MzJfdCAqZmllbGRfdmFsdWU1LAogIHVpbnQ4X3Qgc2hpZnQ2LCB1aW50MzJfdCBtYXNrNiwg dWludDMyX3QgKmZpZWxkX3ZhbHVlNik7Cgp1aW50MzJfdCBnZW5lcmljX3JlZ19nZXQ3KGNvbnN0 IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsIHVpbnQzMl90IGFkZHIsCiAgdWludDhfdCBzaGlmdDEs IHVpbnQzMl90IG1hc2sxLCB1aW50MzJfdCAqZmllbGRfdmFsdWUxLAogIHVpbnQ4X3Qgc2hpZnQy LCB1aW50MzJfdCBtYXNrMiwgdWludDMyX3QgKmZpZWxkX3ZhbHVlMiwKICB1aW50OF90IHNoaWZ0 MywgdWludDMyX3QgbWFzazMsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTMsCiAgdWludDhfdCBzaGlm dDQsIHVpbnQzMl90IG1hc2s0LCB1aW50MzJfdCAqZmllbGRfdmFsdWU0LAogIHVpbnQ4X3Qgc2hp ZnQ1LCB1aW50MzJfdCBtYXNrNSwgdWludDMyX3QgKmZpZWxkX3ZhbHVlNSwKICB1aW50OF90IHNo aWZ0NiwgdWludDMyX3QgbWFzazYsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTYsCiAgdWludDhfdCBz aGlmdDcsIHVpbnQzMl90IG1hc2s3LCB1aW50MzJfdCAqZmllbGRfdmFsdWU3KTsKCnVpbnQzMl90 IGdlbmVyaWNfcmVnX2dldDgoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwgdWludDMyX3Qg YWRkciwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFzazEsIHVpbnQzMl90ICpmaWVsZF92 YWx1ZTEsCiAgdWludDhfdCBzaGlmdDIsIHVpbnQzMl90IG1hc2syLCB1aW50MzJfdCAqZmllbGRf dmFsdWUyLAogIHVpbnQ4X3Qgc2hpZnQzLCB1aW50MzJfdCBtYXNrMywgdWludDMyX3QgKmZpZWxk X3ZhbHVlMywKICB1aW50OF90IHNoaWZ0NCwgdWludDMyX3QgbWFzazQsIHVpbnQzMl90ICpmaWVs ZF92YWx1ZTQsCiAgdWludDhfdCBzaGlmdDUsIHVpbnQzMl90IG1hc2s1LCB1aW50MzJfdCAqZmll bGRfdmFsdWU1LAogIHVpbnQ4X3Qgc2hpZnQ2LCB1aW50MzJfdCBtYXNrNiwgdWludDMyX3QgKmZp ZWxkX3ZhbHVlNiwKICB1aW50OF90IHNoaWZ0NywgdWludDMyX3QgbWFzazcsIHVpbnQzMl90ICpm aWVsZF92YWx1ZTcsCiAgdWludDhfdCBzaGlmdDgsIHVpbnQzMl90IG1hc2s4LCB1aW50MzJfdCAq ZmllbGRfdmFsdWU4KTsKIyA0ODEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlz cGxheS9kYy9pbmMvcmVnX2hlbHBlci5oIgp2b2lkIGdlbmVyaWNfd3JpdGVfaW5kaXJlY3RfcmVn KGNvbnN0IHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAgdWludDMyX3QgYWRkcl9pbmRleCwgdWlu dDMyX3QgYWRkcl9kYXRhLAogIHVpbnQzMl90IGluZGV4LCB1aW50MzJfdCBkYXRhKTsKCnVpbnQz Ml90IGdlbmVyaWNfcmVhZF9pbmRpcmVjdF9yZWcoY29uc3Qgc3RydWN0IGRjX2NvbnRleHQgKmN0 eCwKICB1aW50MzJfdCBhZGRyX2luZGV4LCB1aW50MzJfdCBhZGRyX2RhdGEsCiAgdWludDMyX3Qg aW5kZXgpOwoKdWludDMyX3QgZ2VuZXJpY19pbmRpcmVjdF9yZWdfZ2V0KGNvbnN0IHN0cnVjdCBk Y19jb250ZXh0ICpjdHgsCiAgdWludDMyX3QgYWRkcl9pbmRleCwgdWludDMyX3QgYWRkcl9kYXRh LAogIHVpbnQzMl90IGluZGV4LCBpbnQgbiwKICB1aW50OF90IHNoaWZ0MSwgdWludDMyX3QgbWFz azEsIHVpbnQzMl90ICpmaWVsZF92YWx1ZTEsCiAgLi4uKTsKCnVpbnQzMl90IGdlbmVyaWNfaW5k aXJlY3RfcmVnX3VwZGF0ZV9leChjb25zdCBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIHVpbnQz Ml90IGFkZHJfaW5kZXgsIHVpbnQzMl90IGFkZHJfZGF0YSwKICB1aW50MzJfdCBpbmRleCwgdWlu dDMyX3QgcmVnX3ZhbCwgaW50IG4sCiAgdWludDhfdCBzaGlmdDEsIHVpbnQzMl90IG1hc2sxLCB1 aW50MzJfdCBmaWVsZF92YWx1ZTEsCiAgLi4uKTsKIyAzNyAiZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgojIDEgIi4v ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9pbmMvY29yZV90eXBlcy5o IiAxCiMgMzggImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21n ci9kY24yMS9ybl9jbGtfbWdyLmMiIDIKIyAxICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 Ly4uL2Rpc3BsYXkvZGMvZG1faGVscGVycy5oIiAxCiMgMzQgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9kbV9oZWxwZXJzLmgiCiMgMSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RjLmgiIDEKIyAzNSAiLi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2RtX2hlbHBlcnMuaCIgMgoKc3RydWN0IGRwX21z dF9zdHJlYW1fYWxsb2NhdGlvbl90YWJsZTsKCmVudW0gZGNfZWRpZF9zdGF0dXMgZG1faGVscGVy c19wYXJzZV9lZGlkX2NhcHMoCiBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogY29uc3Qgc3RydWN0 IGRjX2VkaWQgKmVkaWQsCiBzdHJ1Y3QgZGNfZWRpZF9jYXBzICplZGlkX2NhcHMpOwoKCgoKCnZv aWQgZG1faGVscGVyc19kcF91cGRhdGVfYnJhbmNoX2luZm8oCiAgc3RydWN0IGRjX2NvbnRleHQg KmN0eCwKICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluayk7CgoKCgpib29sIGRtX2hlbHBlcnNf ZHBfbXN0X3dyaXRlX3BheWxvYWRfYWxsb2NhdGlvbl90YWJsZSgKICBzdHJ1Y3QgZGNfY29udGV4 dCAqY3R4LAogIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSwKICBzdHJ1Y3Qg ZHBfbXN0X3N0cmVhbV9hbGxvY2F0aW9uX3RhYmxlICpwcm9wb3NlZF90YWJsZSwKICBib29sIGVu YWJsZSk7CgoKCgp2b2lkIGRtX2hlbHBlcnNfZHBfbXN0X3BvbGxfcGVuZGluZ19kb3duX3JlcGx5 KAogc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsK CgoKCnZvaWQgZG1faGVscGVyc19kcF9tc3RfY2xlYXJfcGF5bG9hZF9hbGxvY2F0aW9uX3RhYmxl KAogc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKIGNvbnN0IHN0cnVjdCBkY19saW5rICpsaW5rKTsK CgoKCmVudW0gYWN0X3JldHVybl9zdGF0dXMgZG1faGVscGVyc19kcF9tc3RfcG9sbF9mb3JfYWxs b2NhdGlvbl9jaGFuZ2VfdHJpZ2dlcigKICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIGNvbnN0 IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSk7CgoKCmJvb2wgZG1faGVscGVyc19kcF9t c3Rfc2VuZF9wYXlsb2FkX2FsbG9jYXRpb24oCiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKICBj b25zdCBzdHJ1Y3QgZGNfc3RyZWFtX3N0YXRlICpzdHJlYW0sCiAgYm9vbCBlbmFibGUpOwoKYm9v bCBkbV9oZWxwZXJzX2RwX21zdF9zdGFydF90b3BfbWdyKAogIHN0cnVjdCBkY19jb250ZXh0ICpj dHgsCiAgY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmssCiAgYm9vbCBib290KTsKCnZvaWQgZG1f aGVscGVyc19kcF9tc3Rfc3RvcF90b3BfbWdyKAogIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAg Y29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmspOwoKCgpib29sIGRtX2hlbHBlcnNfZHBfcmVhZF9k cGNkKAogIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAgY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxp bmssCiAgdWludDMyX3QgYWRkcmVzcywKICB1aW50OF90ICpkYXRhLAogIHVpbnQzMl90IHNpemUp OwoKCgoKYm9vbCBkbV9oZWxwZXJzX2RwX3dyaXRlX2RwY2QoCiAgc3RydWN0IGRjX2NvbnRleHQg KmN0eCwKICBjb25zdCBzdHJ1Y3QgZGNfbGluayAqbGluaywKICB1aW50MzJfdCBhZGRyZXNzLAog IGNvbnN0IHVpbnQ4X3QgKmRhdGEsCiAgdWludDMyX3Qgc2l6ZSk7Cgpib29sIGRtX2hlbHBlcnNf c3VibWl0X2kyYygKICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIGNvbnN0IHN0cnVjdCBkY19s aW5rICpsaW5rLAogIHN0cnVjdCBpMmNfY29tbWFuZCAqY21kKTsKCmJvb2wgZG1faGVscGVyc19k cF93cml0ZV9kc2NfZW5hYmxlKAogIHN0cnVjdCBkY19jb250ZXh0ICpjdHgsCiAgY29uc3Qgc3Ry dWN0IGRjX3N0cmVhbV9zdGF0ZSAqc3RyZWFtLAogIGJvb2wgZW5hYmxlCik7CmJvb2wgZG1faGVs cGVyc19pc19kcF9zaW5rX3ByZXNlbnQoCiAgc3RydWN0IGRjX2xpbmsgKmxpbmspOwoKZW51bSBk Y19lZGlkX3N0YXR1cyBkbV9oZWxwZXJzX3JlYWRfbG9jYWxfZWRpZCgKICBzdHJ1Y3QgZGNfY29u dGV4dCAqY3R4LAogIHN0cnVjdCBkY19saW5rICpsaW5rLAogIHN0cnVjdCBkY19zaW5rICpzaW5r KTsKCnZvaWQgZG1fc2V0X2Rjbl9jbG9ja3MoCiAgc3RydWN0IGRjX2NvbnRleHQgKmN0eCwKICBz dHJ1Y3QgZGNfY2xvY2tzICpjbGtzKTsKIyAzOSAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgoKIyAxICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiIDEKIyAzOCAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgpl bnVtIGF0b21fYmlvc19oZWFkZXJfdmVyc2lvbl9kZWZ7CiAgQVRPTV9NQUpPUl9WRVJTSU9OID0w eDAwMDMsCiAgQVRPTV9NSU5PUl9WRVJTSU9OID0weDAwMDMsCn07CiMgNTcgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKZW51bSBhdG9tX2Ny dGNfZGVmewogIEFUT01fQ1JUQzEgPTAsCiAgQVRPTV9DUlRDMiA9MSwKICBBVE9NX0NSVEMzID0y LAogIEFUT01fQ1JUQzQgPTMsCiAgQVRPTV9DUlRDNSA9NCwKICBBVE9NX0NSVEM2ID01LAogIEFU T01fQ1JUQ19JTlZBTElEID0weGZmLAp9OwoKZW51bSBhdG9tX3BwbGxfZGVmewogIEFUT01fUFBM TDAgPTIsCiAgQVRPTV9HQ0tfREZTID04LAogIEFUT01fRkNIX0NMSyA9OSwKICBBVE9NX0RQX0RU TyA9MTEsCiAgQVRPTV9DT01CT1BIWV9QTEwwID0yMCwKICBBVE9NX0NPTUJPUEhZX1BMTDEgPTIx LAogIEFUT01fQ09NQk9QSFlfUExMMiA9MjIsCiAgQVRPTV9DT01CT1BIWV9QTEwzID0yMywKICBB VE9NX0NPTUJPUEhZX1BMTDQgPTI0LAogIEFUT01fQ09NQk9QSFlfUExMNSA9MjUsCiAgQVRPTV9Q UExMX0lOVkFMSUQgPTB4ZmYsCn07CgoKZW51bSBhdG9tX2RpZ19kZWZ7CiAgQVNJQ19JTlRfRElH MV9FTkNPREVSX0lEID0weDAzLAogIEFTSUNfSU5UX0RJRzJfRU5DT0RFUl9JRCA9MHgwOSwKICBB U0lDX0lOVF9ESUczX0VOQ09ERVJfSUQgPTB4MGEsCiAgQVNJQ19JTlRfRElHNF9FTkNPREVSX0lE ID0weDBiLAogIEFTSUNfSU5UX0RJRzVfRU5DT0RFUl9JRCA9MHgwYywKICBBU0lDX0lOVF9ESUc2 X0VOQ09ERVJfSUQgPTB4MGQsCiAgQVNJQ19JTlRfRElHN19FTkNPREVSX0lEID0weDBlLAp9OwoK CmVudW0gYXRvbV9lbmNvZGVfbW9kZV9kZWYKewogIEFUT01fRU5DT0RFUl9NT0RFX0RQID0wLAog IEFUT01fRU5DT0RFUl9NT0RFX0RQX1NTVCA9MCwKICBBVE9NX0VOQ09ERVJfTU9ERV9MVkRTID0x LAogIEFUT01fRU5DT0RFUl9NT0RFX0RWSSA9MiwKICBBVE9NX0VOQ09ERVJfTU9ERV9IRE1JID0z LAogIEFUT01fRU5DT0RFUl9NT0RFX0RQX0FVRElPID01LAogIEFUT01fRU5DT0RFUl9NT0RFX0RQ X01TVCA9NSwKICBBVE9NX0VOQ09ERVJfTU9ERV9DUlQgPTE1LAogIEFUT01fRU5DT0RFUl9NT0RF X0RWTyA9MTYsCn07CgplbnVtIGF0b21fZW5jb2Rlcl9yZWZjbGtfc3JjX2RlZnsKICBFTkNPREVS X1JFRkNMS19TUkNfUDFQTEwgPTAsCiAgRU5DT0RFUl9SRUZDTEtfU1JDX1AyUExMID0xLAogIEVO Q09ERVJfUkVGQ0xLX1NSQ19QM1BMTCA9MiwKICBFTkNPREVSX1JFRkNMS19TUkNfRVhUQ0xLID0z LAogIEVOQ09ERVJfUkVGQ0xLX1NSQ19JTlZBTElEID0weGZmLAp9OwoKZW51bSBhdG9tX3NjYWxl cl9kZWZ7CiAgQVRPTV9TQ0FMRVJfRElTQUJMRSA9MCwKICBBVE9NX1NDQUxFUl9DRU5URVIgPTEs CiAgQVRPTV9TQ0FMRVJfRVhQQU5TSU9OID0yLAp9OwoKZW51bSBhdG9tX29wZXJhdGlvbl9kZWZ7 CiAgQVRPTV9ESVNBQkxFID0gMCwKICBBVE9NX0VOQUJMRSA9IDEsCiAgQVRPTV9JTklUID0gNywK ICBBVE9NX0dFVF9TVEFUVVMgPSA4LAp9OwoKZW51bSBhdG9tX2VtYmVkZGVkX2Rpc3BsYXlfb3Bf ZGVmewogIEFUT01fTENEX0JMX09GRiA9IDIsCiAgQVRPTV9MQ0RfQkxfT00gPSAzLAogIEFUT01f TENEX0JMX0JSSUdIVE5FU1NfQ09OVFJPTCA9IDQsCiAgQVRPTV9MQ0RfU0VMRlRFU1RfU1RBUlQg PSA1LAogIEFUT01fTENEX1NFTEZURVNUX1NUT1AgPSA2LAp9OwoKZW51bSBhdG9tX3NwcmVhZF9z cGVjdHJ1bV9tb2RlewogIEFUT01fU1NfQ0VOVEVSX09SX0RPV05fTU9ERV9NQVNLID0gMHgwMSwK ICBBVE9NX1NTX0RPV05fU1BSRUFEX01PREUgPSAweDAwLAogIEFUT01fU1NfQ0VOVFJFX1NQUkVB RF9NT0RFID0gMHgwMSwKICBBVE9NX0lOVF9PUl9FWFRfU1NfTUFTSyA9IDB4MDIsCiAgQVRPTV9J TlRFUk5BTF9TU19NQVNLID0gMHgwMCwKICBBVE9NX0VYVEVSTkFMX1NTX01BU0sgPSAweDAyLAp9 OwoKCmVudW0gYXRvbV9wYW5lbF9iaXRfcGVyX2NvbG9yewogIFBBTkVMX0JQQ19VTkRFRklORSA9 MHgwMCwKICBQQU5FTF82QklUX1BFUl9DT0xPUiA9MHgwMSwKICBQQU5FTF84QklUX1BFUl9DT0xP UiA9MHgwMiwKICBQQU5FTF8xMEJJVF9QRVJfQ09MT1IgPTB4MDMsCiAgUEFORUxfMTJCSVRfUEVS X0NPTE9SID0weDA0LAogIFBBTkVMXzE2QklUX1BFUl9DT0xPUiA9MHgwNSwKfTsKCgplbnVtIGF0 b21fdm9sdGFnZV90eXBlCnsKICBWT0xUQUdFX1RZUEVfVkREQyA9IDEsCiAgVk9MVEFHRV9UWVBF X01WRERDID0gMiwKICBWT0xUQUdFX1RZUEVfTVZERFEgPSAzLAogIFZPTFRBR0VfVFlQRV9WRERD SSA9IDQsCiAgVk9MVEFHRV9UWVBFX1ZEREdGWCA9IDUsCiAgVk9MVEFHRV9UWVBFX1BDQyA9IDYs CiAgVk9MVEFHRV9UWVBFX01WUFAgPSA3LAogIFZPTFRBR0VfVFlQRV9MRUREUE0gPSA4LAogIFZP TFRBR0VfVFlQRV9QQ0NfTVZERCA9IDksCiAgVk9MVEFHRV9UWVBFX1BDSUVfVkREQyA9IDEwLAog IFZPTFRBR0VfVFlQRV9QQ0lFX1ZERFIgPSAxMSwKICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNf MSA9IDB4MTEsCiAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJDXzIgPSAweDEyLAogIFZPTFRBR0Vf VFlQRV9HRU5FUklDX0kyQ18zID0gMHgxMywKICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfNCA9 IDB4MTQsCiAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJDXzUgPSAweDE1LAogIFZPTFRBR0VfVFlQ RV9HRU5FUklDX0kyQ182ID0gMHgxNiwKICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfNyA9IDB4 MTcsCiAgVk9MVEFHRV9UWVBFX0dFTkVSSUNfSTJDXzggPSAweDE4LAogIFZPTFRBR0VfVFlQRV9H RU5FUklDX0kyQ185ID0gMHgxOSwKICBWT0xUQUdFX1RZUEVfR0VORVJJQ19JMkNfMTAgPSAweDFB LAp9OwoKZW51bSBhdG9tX2RncHVfdnJhbV90eXBlIHsKICBBVE9NX0RHUFVfVlJBTV9UWVBFX0dE RFI1ID0gMHg1MCwKICBBVE9NX0RHUFVfVlJBTV9UWVBFX0hCTTIgPSAweDYwLAogIEFUT01fREdQ VV9WUkFNX1RZUEVfR0REUjYgPSAweDcwLAp9OwoKZW51bSBhdG9tX2RwX3ZzX3ByZWVtcGhfZGVm ewogIERQX1ZTX0xFVkVMMF9QUkVFTVBIX0xFVkVMMCA9IDB4MDAsCiAgRFBfVlNfTEVWRUwxX1BS RUVNUEhfTEVWRUwwID0gMHgwMSwKICBEUF9WU19MRVZFTDJfUFJFRU1QSF9MRVZFTDAgPSAweDAy LAogIERQX1ZTX0xFVkVMM19QUkVFTVBIX0xFVkVMMCA9IDB4MDMsCiAgRFBfVlNfTEVWRUwwX1BS RUVNUEhfTEVWRUwxID0gMHgwOCwKICBEUF9WU19MRVZFTDFfUFJFRU1QSF9MRVZFTDEgPSAweDA5 LAogIERQX1ZTX0xFVkVMMl9QUkVFTVBIX0xFVkVMMSA9IDB4MGEsCiAgRFBfVlNfTEVWRUwwX1BS RUVNUEhfTEVWRUwyID0gMHgxMCwKICBEUF9WU19MRVZFTDFfUFJFRU1QSF9MRVZFTDIgPSAweDEx LAogIERQX1ZTX0xFVkVMMF9QUkVFTVBIX0xFVkVMMyA9IDB4MTgsCn07CiMgMjA4ICIuL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiCiNwcmFnbWEg cGFjaygxKQoKZW51bSBhdG9tYmlvc19pbWFnZV9vZmZzZXR7Ck9GRlNFVF9UT19BVE9NX1JPTV9I RUFERVJfUE9JTlRFUiA9MHgwMDAwMDA0OCwKT0ZGU0VUX1RPX0FUT01fUk9NX0lNQUdFX1NJWkUg PTB4MDAwMDAwMDIsCk9GRlNFVF9UT19BVE9NQklPU19BU0lDX0JVU19NRU1fVFlQRSA9MHg5NCwK TUFYU0laRV9PRl9BVE9NQklPU19BU0lDX0JVU19NRU1fVFlQRSA9MjAsCk9GRlNFVF9UT19HRVRf QVRPTUJJT1NfTlVNQkVSX09GX1NUUklOR1MgPTB4MmYsCk9GRlNFVF9UT19HRVRfQVRPTUJJT1Nf U1RSSU5HX1NUQVJUID0weDZlLAp9OwoKCgoKCgoKc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hl YWRlcgp7CiAgdWludDE2X3Qgc3RydWN0dXJlc2l6ZTsKICB1aW50OF90IGZvcm1hdF9yZXZpc2lv bjsKICB1aW50OF90IGNvbnRlbnRfcmV2aXNpb247Cn07CgoKCgpzdHJ1Y3QgYXRvbV9yb21faGVh ZGVyX3YyXzIKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVy OwogIHVpbnQ4X3QgYXRvbV9iaW9zX3N0cmluZ1s0XTsKICB1aW50MTZfdCBiaW9zX3NlZ21lbnRf YWRkcmVzczsKICB1aW50MTZfdCBwcm90ZWN0ZWRtb2Rlb2Zmc2V0OwogIHVpbnQxNl90IGNvbmZp Z2ZpbGVuYW1lb2Zmc2V0OwogIHVpbnQxNl90IGNyY19ibG9ja19vZmZzZXQ7CiAgdWludDE2X3Qg dmJpb3NfYm9vdHVwbWVzc2FnZW9mZnNldDsKICB1aW50MTZfdCBpbnQxMF9vZmZzZXQ7CiAgdWlu dDE2X3QgcGNpYnVzZGV2aW5pdGNvZGU7CiAgdWludDE2X3QgaW9iYXNlYWRkcmVzczsKICB1aW50 MTZfdCBzdWJzeXN0ZW1fdmVuZG9yX2lkOwogIHVpbnQxNl90IHN1YnN5c3RlbV9pZDsKICB1aW50 MTZfdCBwY2lfaW5mb19vZmZzZXQ7CiAgdWludDE2X3QgbWFzdGVyaHdmdW5jdGlvbl9vZmZzZXQ7 CiAgdWludDE2X3QgbWFzdGVyZGF0YXRhYmxlX29mZnNldDsKICB1aW50MTZfdCByZXNlcnZlZDsK ICB1aW50MzJfdCBwc3BkaXJ0YWJsZW9mZnNldDsKfTsKIyAyNjQgIi4vZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0IGF0b21fbWFzdGVy X2xpc3Rfb2ZfY29tbWFuZF9mdW5jdGlvbnNfdjJfMXsKICB1aW50MTZfdCBhc2ljX2luaXQ7CiAg dWludDE2X3QgY21kX2Z1bmN0aW9uMTsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yOwogIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjM7CiAgdWludDE2X3QgZGlneGVuY29kZXJjb250cm9sOwogIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjU7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjsKICB1aW50MTZfdCBj bWRfZnVuY3Rpb243OwogIHVpbnQxNl90IGNtZF9mdW5jdGlvbjg7CiAgdWludDE2X3QgY21kX2Z1 bmN0aW9uOTsKICB1aW50MTZfdCBzZXRlbmdpbmVjbG9jazsKICB1aW50MTZfdCBzZXRtZW1vcnlj bG9jazsKICB1aW50MTZfdCBzZXRwaXhlbGNsb2NrOwogIHVpbnQxNl90IGVuYWJsZWRpc3Bwb3dl cmdhdGluZzsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xNDsKICB1aW50MTZfdCBjbWRfZnVuY3Rp b24xNTsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xNjsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24x NzsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xODsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24xOTsK ICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yMDsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yMTsKICB1 aW50MTZfdCBjbWRfZnVuY3Rpb24yMjsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yMzsKICB1aW50 MTZfdCBjbWRfZnVuY3Rpb24yNDsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yNTsKICB1aW50MTZf dCBjbWRfZnVuY3Rpb24yNjsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yNzsKICB1aW50MTZfdCBj bWRfZnVuY3Rpb24yODsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24yOTsKICB1aW50MTZfdCBjbWRf ZnVuY3Rpb24zMDsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zMTsKICB1aW50MTZfdCBjbWRfZnVu Y3Rpb24zMjsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zMzsKICB1aW50MTZfdCBibGFua2NydGM7 CiAgdWludDE2X3QgZW5hYmxlY3J0YzsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zNjsKICB1aW50 MTZfdCBjbWRfZnVuY3Rpb24zNzsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb24zODsKICB1aW50MTZf dCBjbWRfZnVuY3Rpb24zOTsKICB1aW50MTZfdCBjbWRfZnVuY3Rpb240MDsKICB1aW50MTZfdCBn ZXRzbXVjbG9ja2luZm87CiAgdWludDE2X3Qgc2VsZWN0Y3J0Y19zb3VyY2U7CiAgdWludDE2X3Qg Y21kX2Z1bmN0aW9uNDM7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNDQ7CiAgdWludDE2X3QgY21k X2Z1bmN0aW9uNDU7CiAgdWludDE2X3Qgc2V0ZGNlY2xvY2s7CiAgdWludDE2X3QgZ2V0bWVtb3J5 Y2xvY2s7CiAgdWludDE2X3QgZ2V0ZW5naW5lY2xvY2s7CiAgdWludDE2X3Qgc2V0Y3J0Y191c2lu Z2R0ZHRpbWluZzsKICB1aW50MTZfdCBleHRlcm5hbGVuY29kZXJjb250cm9sOwogIHVpbnQxNl90 IGNtZF9mdW5jdGlvbjUxOwogIHVpbnQxNl90IGNtZF9mdW5jdGlvbjUyOwogIHVpbnQxNl90IGNt ZF9mdW5jdGlvbjUzOwogIHVpbnQxNl90IHByb2Nlc3NpMmNjaGFubmVsdHJhbnNhY3Rpb247CiAg dWludDE2X3QgY21kX2Z1bmN0aW9uNTU7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNTY7CiAgdWlu dDE2X3QgY21kX2Z1bmN0aW9uNTc7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNTg7CiAgdWludDE2 X3QgY21kX2Z1bmN0aW9uNTk7CiAgdWludDE2X3QgY29tcHV0ZWdwdWNsb2NrcGFyYW07CiAgdWlu dDE2X3QgY21kX2Z1bmN0aW9uNjE7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjI7CiAgdWludDE2 X3QgZHluYW1pY21lbW9yeXNldHRpbmdzOwogIHVpbnQxNl90IG1lbW9yeXRyYWluaW5nOwogIHVp bnQxNl90IGNtZF9mdW5jdGlvbjY1OwogIHVpbnQxNl90IGNtZF9mdW5jdGlvbjY2OwogIHVpbnQx Nl90IHNldHZvbHRhZ2U7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNjg7CiAgdWludDE2X3QgcmVh ZGVmdXNldmFsdWU7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzA7CiAgdWludDE2X3QgY21kX2Z1 bmN0aW9uNzE7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzI7CiAgdWludDE2X3QgY21kX2Z1bmN0 aW9uNzM7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9uNzQ7CiAgdWludDE2X3QgY21kX2Z1bmN0aW9u NzU7CiAgdWludDE2X3QgZGlnMXRyYW5zbWl0dGVyY29udHJvbDsKICB1aW50MTZfdCBjbWRfZnVu Y3Rpb243NzsKICB1aW50MTZfdCBwcm9jZXNzYXV4Y2hhbm5lbHRyYW5zYWN0aW9uOwogIHVpbnQx Nl90IGNtZF9mdW5jdGlvbjc5OwogIHVpbnQxNl90IGdldHZvbHRhZ2VpbmZvOwp9OwoKc3RydWN0 IGF0b21fbWFzdGVyX2NvbW1hbmRfZnVuY3Rpb25fdjJfMQp7CiAgc3RydWN0IGF0b21fY29tbW9u X3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgc3RydWN0IGF0b21fbWFzdGVyX2xpc3Rfb2Zf Y29tbWFuZF9mdW5jdGlvbnNfdjJfMSBsaXN0b2ZjbWRmdW5jdGlvbnM7Cn07CgoKCgpzdHJ1Y3Qg YXRvbV9mdW5jdGlvbl9hdHRyaWJ1dGUKewogIHVpbnQxNl90IHdzX2luX2J5dGVzOjg7CiAgdWlu dDE2X3QgcHNfaW5fYnl0ZXM6NzsKICB1aW50MTZfdCB1cGRhdGVkX2J5X3V0aWw6MTsKfTsKCgoK CgoKCnN0cnVjdCBhdG9tX3JvbV9od19mdW5jdGlvbl9oZWFkZXIKewogIHN0cnVjdCBhdG9tX2Nv bW1vbl90YWJsZV9oZWFkZXIgZnVuY19oZWFkZXI7CiAgc3RydWN0IGF0b21fZnVuY3Rpb25fYXR0 cmlidXRlIGZ1bmNfYXR0cmliOwp9OwoKCgoKCgoKc3RydWN0IGF0b21fbWFzdGVyX2xpc3Rfb2Zf ZGF0YV90YWJsZXNfdjJfMXsKICB1aW50MTZfdCB1dGlsaXR5cGlwZWxpbmU7CiAgdWludDE2X3Qg bXVsdGltZWRpYV9pbmZvOwogIHVpbnQxNl90IHNtY19kcG1faW5mbzsKICB1aW50MTZfdCBzd19k YXRhdGFibGUzOwogIHVpbnQxNl90IGZpcm13YXJlaW5mbzsKICB1aW50MTZfdCBzd19kYXRhdGFi bGU1OwogIHVpbnQxNl90IGxjZF9pbmZvOwogIHVpbnQxNl90IHN3X2RhdGF0YWJsZTc7CiAgdWlu dDE2X3Qgc211X2luZm87CiAgdWludDE2X3Qgc3dfZGF0YXRhYmxlOTsKICB1aW50MTZfdCBzd19k YXRhdGFibGUxMDsKICB1aW50MTZfdCB2cmFtX3VzYWdlYnlmaXJtd2FyZTsKICB1aW50MTZfdCBn cGlvX3Bpbl9sdXQ7CiAgdWludDE2X3Qgc3dfZGF0YXRhYmxlMTM7CiAgdWludDE2X3QgZ2Z4X2lu Zm87CiAgdWludDE2X3QgcG93ZXJwbGF5aW5mbzsKICB1aW50MTZfdCBzd19kYXRhdGFibGUxNjsK ICB1aW50MTZfdCBzd19kYXRhdGFibGUxNzsKICB1aW50MTZfdCBzd19kYXRhdGFibGUxODsKICB1 aW50MTZfdCBzd19kYXRhdGFibGUxOTsKICB1aW50MTZfdCBzd19kYXRhdGFibGUyMDsKICB1aW50 MTZfdCBzd19kYXRhdGFibGUyMTsKICB1aW50MTZfdCBkaXNwbGF5b2JqZWN0aW5mbzsKICB1aW50 MTZfdCBpbmRpcmVjdGlvYWNjZXNzOwogIHVpbnQxNl90IHVtY19pbmZvOwogIHVpbnQxNl90IHN3 X2RhdGF0YWJsZTI1OwogIHVpbnQxNl90IHN3X2RhdGF0YWJsZTI2OwogIHVpbnQxNl90IGRjZV9p bmZvOwogIHVpbnQxNl90IHZyYW1faW5mbzsKICB1aW50MTZfdCBzd19kYXRhdGFibGUyOTsKICB1 aW50MTZfdCBpbnRlZ3JhdGVkc3lzdGVtaW5mbzsKICB1aW50MTZfdCBhc2ljX3Byb2ZpbGluZ19p bmZvOwogIHVpbnQxNl90IHZvbHRhZ2VvYmplY3RfaW5mbzsKICB1aW50MTZfdCBzd19kYXRhdGFi bGUzMzsKICB1aW50MTZfdCBzd19kYXRhdGFibGUzNDsKfTsKCgpzdHJ1Y3QgYXRvbV9tYXN0ZXJf ZGF0YV90YWJsZV92Ml8xCnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxl X2hlYWRlcjsKICBzdHJ1Y3QgYXRvbV9tYXN0ZXJfbGlzdF9vZl9kYXRhX3RhYmxlc192Ml8xIGxp c3RPZmRhdGF0YWJsZXM7Cn07CgoKc3RydWN0IGF0b21fZHRkX2Zvcm1hdAp7CiAgdWludDE2X3Qg cGl4Y2xrOwogIHVpbnQxNl90IGhfYWN0aXZlOwogIHVpbnQxNl90IGhfYmxhbmtpbmdfdGltZTsK ICB1aW50MTZfdCB2X2FjdGl2ZTsKICB1aW50MTZfdCB2X2JsYW5raW5nX3RpbWU7CiAgdWludDE2 X3QgaF9zeW5jX29mZnNldDsKICB1aW50MTZfdCBoX3N5bmNfd2lkdGg7CiAgdWludDE2X3Qgdl9z eW5jX29mZnNldDsKICB1aW50MTZfdCB2X3N5bmN3aWR0aDsKICB1aW50MTZfdCByZXNlcnZlZDsK ICB1aW50MTZfdCByZXNlcnZlZDA7CiAgdWludDhfdCBoX2JvcmRlcjsKICB1aW50OF90IHZfYm9y ZGVyOwogIHVpbnQxNl90IG1pc2NpbmZvOwogIHVpbnQ4X3QgYXRvbV9tb2RlX2lkOwogIHVpbnQ4 X3QgcmVmcmVzaHJhdGU7Cn07CgoKZW51bSBhdG9tX2R0ZF9mb3JtYXRfbW9kZW1pc2NpbmZvewog IEFUT01fSFNZTkNfUE9MQVJJVFkgPSAweDAwMDIsCiAgQVRPTV9WU1lOQ19QT0xBUklUWSA9IDB4 MDAwNCwKICBBVE9NX0hfUkVQTElDQVRJT05CWTIgPSAweDAwMTAsCiAgQVRPTV9WX1JFUExJQ0FU SU9OQlkyID0gMHgwMDIwLAogIEFUT01fSU5URVJMQUNFID0gMHgwMDgwLAogIEFUT01fQ09NUE9T SVRFU1lOQyA9IDB4MDA0MCwKfTsKIyA0NzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Li4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0IGF0b21fZmlybXdhcmVfaW5mb192M18x CnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50 MzJfdCBmaXJtd2FyZV9yZXZpc2lvbjsKICB1aW50MzJfdCBib290dXBfc2Nsa19pbjEwa2h6Owog IHVpbnQzMl90IGJvb3R1cF9tY2xrX2luMTBraHo7CiAgdWludDMyX3QgZmlybXdhcmVfY2FwYWJp bGl0eTsKICB1aW50MzJfdCBtYWluX2NhbGxfcGFyc2VyX2VudHJ5OwogIHVpbnQzMl90IGJpb3Nf c2NyYXRjaF9yZWdfc3RhcnRhZGRyOwogIHVpbnQxNl90IGJvb3R1cF92ZGRjX212OwogIHVpbnQx Nl90IGJvb3R1cF92ZGRjaV9tdjsKICB1aW50MTZfdCBib290dXBfbXZkZGNfbXY7CiAgdWludDE2 X3QgYm9vdHVwX3ZkZGdmeF9tdjsKICB1aW50OF90IG1lbV9tb2R1bGVfaWQ7CiAgdWludDhfdCBj b29saW5nc29sdXRpb25faWQ7CiAgdWludDhfdCByZXNlcnZlZDFbMl07CiAgdWludDMyX3QgbWNf YmFzZWFkZHJfaGlnaDsKICB1aW50MzJfdCBtY19iYXNlYWRkcl9sb3c7CiAgdWludDMyX3QgcmVz ZXJ2ZWQyWzZdOwp9OwoKCmVudW0gYXRvbWJpb3NfZmlybXdhcmVfY2FwYWJpbGl0eQp7CiBBVE9N X0ZJUk1XQVJFX0NBUF9GSVJNV0FSRV9QT1NURUQgPSAweDAwMDAwMDAxLAogQVRPTV9GSVJNV0FS RV9DQVBfR1BVX1ZJUlRVQUxJWkFUSU9OID0gMHgwMDAwMDAwMiwKIEFUT01fRklSTVdBUkVfQ0FQ X1dNSV9TVVBQT1JUID0gMHgwMDAwMDA0MCwKIEFUT01fRklSTVdBUkVfQ0FQX0hXRU1VX0VOQUJM RSA9IDB4MDAwMDAwODAsCiBBVE9NX0ZJUk1XQVJFX0NBUF9IV0VNVV9VTUNfQ0ZHID0gMHgwMDAw MDEwMCwKIEFUT01fRklSTVdBUkVfQ0FQX1NSQU1fRUNDID0gMHgwMDAwMDIwMCwKIEFUT01fRklS TVdBUkVfQ0FQX0VOQUJMRV8yU1RBR0VfQklTVF9UUkFJTklORyA9IDB4MDAwMDA0MDAsCn07Cgpl bnVtIGF0b21fY29vbGluZ19zb2x1dGlvbl9pZHsKICBBSVJfQ09PTElORyA9IDB4MDAsCiAgTElR VUlEX0NPT0xJTkcgPSAweDAxCn07CgpzdHJ1Y3QgYXRvbV9maXJtd2FyZV9pbmZvX3YzXzIgewog IHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90 IGZpcm13YXJlX3JldmlzaW9uOwogIHVpbnQzMl90IGJvb3R1cF9zY2xrX2luMTBraHo7CiAgdWlu dDMyX3QgYm9vdHVwX21jbGtfaW4xMGtoejsKICB1aW50MzJfdCBmaXJtd2FyZV9jYXBhYmlsaXR5 OwogIHVpbnQzMl90IG1haW5fY2FsbF9wYXJzZXJfZW50cnk7CiAgdWludDMyX3QgYmlvc19zY3Jh dGNoX3JlZ19zdGFydGFkZHI7CiAgdWludDE2X3QgYm9vdHVwX3ZkZGNfbXY7CiAgdWludDE2X3Qg Ym9vdHVwX3ZkZGNpX212OwogIHVpbnQxNl90IGJvb3R1cF9tdmRkY19tdjsKICB1aW50MTZfdCBi b290dXBfdmRkZ2Z4X212OwogIHVpbnQ4X3QgbWVtX21vZHVsZV9pZDsKICB1aW50OF90IGNvb2xp bmdzb2x1dGlvbl9pZDsKICB1aW50OF90IHJlc2VydmVkMVsyXTsKICB1aW50MzJfdCBtY19iYXNl YWRkcl9oaWdoOwogIHVpbnQzMl90IG1jX2Jhc2VhZGRyX2xvdzsKICB1aW50OF90IGJvYXJkX2ky Y19mZWF0dXJlX2lkOwogIHVpbnQ4X3QgYm9hcmRfaTJjX2ZlYXR1cmVfZ3Bpb19pZDsKICB1aW50 OF90IGJvYXJkX2kyY19mZWF0dXJlX3NsYXZlX2FkZHI7CiAgdWludDhfdCByZXNlcnZlZDM7CiAg dWludDE2X3QgYm9vdHVwX212ZGRxX212OwogIHVpbnQxNl90IGJvb3R1cF9tdnBwX212OwogIHVp bnQzMl90IHpmYnN0YXJ0YWRkcmluMTZtYjsKICB1aW50MzJfdCByZXNlcnZlZDJbM107Cn07Cgpz dHJ1Y3QgYXRvbV9maXJtd2FyZV9pbmZvX3YzXzMKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJs ZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90IGZpcm13YXJlX3JldmlzaW9uOwogIHVp bnQzMl90IGJvb3R1cF9zY2xrX2luMTBraHo7CiAgdWludDMyX3QgYm9vdHVwX21jbGtfaW4xMGto ejsKICB1aW50MzJfdCBmaXJtd2FyZV9jYXBhYmlsaXR5OwogIHVpbnQzMl90IG1haW5fY2FsbF9w YXJzZXJfZW50cnk7CiAgdWludDMyX3QgYmlvc19zY3JhdGNoX3JlZ19zdGFydGFkZHI7CiAgdWlu dDE2X3QgYm9vdHVwX3ZkZGNfbXY7CiAgdWludDE2X3QgYm9vdHVwX3ZkZGNpX212OwogIHVpbnQx Nl90IGJvb3R1cF9tdmRkY19tdjsKICB1aW50MTZfdCBib290dXBfdmRkZ2Z4X212OwogIHVpbnQ4 X3QgbWVtX21vZHVsZV9pZDsKICB1aW50OF90IGNvb2xpbmdzb2x1dGlvbl9pZDsKICB1aW50OF90 IHJlc2VydmVkMVsyXTsKICB1aW50MzJfdCBtY19iYXNlYWRkcl9oaWdoOwogIHVpbnQzMl90IG1j X2Jhc2VhZGRyX2xvdzsKICB1aW50OF90IGJvYXJkX2kyY19mZWF0dXJlX2lkOwogIHVpbnQ4X3Qg Ym9hcmRfaTJjX2ZlYXR1cmVfZ3Bpb19pZDsKICB1aW50OF90IGJvYXJkX2kyY19mZWF0dXJlX3Ns YXZlX2FkZHI7CiAgdWludDhfdCByZXNlcnZlZDM7CiAgdWludDE2X3QgYm9vdHVwX212ZGRxX212 OwogIHVpbnQxNl90IGJvb3R1cF9tdnBwX212OwogIHVpbnQzMl90IHpmYnN0YXJ0YWRkcmluMTZt YjsKICB1aW50MzJfdCBwcGxpYl9wcHRhYmxlX2lkOwogIHVpbnQzMl90IHJlc2VydmVkMlsyXTsK fTsKCgoKCgoKCnN0cnVjdCBsY2RfaW5mb192Ml8xCnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFi bGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICBzdHJ1Y3QgYXRvbV9kdGRfZm9ybWF0IGxjZF90aW1p bmc7CiAgdWludDE2X3QgYmFja2xpZ2h0X3B3bTsKICB1aW50MTZfdCBzcGVjaWFsX2hhbmRsZV9j YXA7CiAgdWludDE2X3QgcGFuZWxfbWlzYzsKICB1aW50MTZfdCBsdmRzX21heF9zbGlua19wY2xr OwogIHVpbnQxNl90IGx2ZHNfc3NfcGVyY2VudGFnZTsKICB1aW50MTZfdCBsdmRzX3NzX3JhdGVf MTBoejsKICB1aW50OF90IHB3cl9vbl9kaWdvbl90b19kZTsKICB1aW50OF90IHB3cl9vbl9kZV90 b192YXJ5X2JsOwogIHVpbnQ4X3QgcHdyX2Rvd25fdmFyeV9ibG9mZl90b19kZTsKICB1aW50OF90 IHB3cl9kb3duX2RlX3RvX2RpZ29mZjsKICB1aW50OF90IHB3cl9vZmZfZGVsYXk7CiAgdWludDhf dCBwd3Jfb25fdmFyeV9ibF90b19ibG9uOwogIHVpbnQ4X3QgcHdyX2Rvd25fYmxvZmZfdG9fdmFy eV9ibG9mZjsKICB1aW50OF90IHBhbmVsX2JwYzsKICB1aW50OF90IGRwY2RfZWRwX2NvbmZpZ19j YXA7CiAgdWludDhfdCBkcGNkX21heF9saW5rX3JhdGU7CiAgdWludDhfdCBkcGNkX21heF9sYW5l X2NvdW50OwogIHVpbnQ4X3QgZHBjZF9tYXhfZG93bnNwcmVhZDsKICB1aW50OF90IG1pbl9hbGxv d2VkX2JsX2xldmVsOwogIHVpbnQ4X3QgbWF4X2FsbG93ZWRfYmxfbGV2ZWw7CiAgdWludDhfdCBi b290dXBfYmxfbGV2ZWw7CiAgdWludDhfdCBkcGx2ZHNyeGlkOwogIHVpbnQzMl90IHJlc2VydmVk MVs4XTsKfTsKCgplbnVtIGF0b21fbGNkX2luZm9fcGFuZWxfbWlzY3sKICBBVE9NX1BBTkVMX01J U0NfRlBESSA9MHgwMDAyLAp9OwoKCmVudW0gYXRvbV9sY2RfaW5mb19kcHRvbHZkc19yeF9pZAp7 CiAgZURQX1RPX0xWRFNfUlhfRElTQUJMRSA9IDB4MDAsCiAgZURQX1RPX0xWRFNfQ09NTU9OX0lE ID0gMHgwMSwKICBlRFBfVE9fTFZEU19SRUFMVEVLX0lEID0gMHgwMiwKfTsKIyA2MjAgIi4vZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0 IGF0b21fZ3Bpb19waW5fYXNzaWdubWVudAp7CiAgdWludDMyX3QgZGF0YV9hX3JlZ19pbmRleDsK ICB1aW50OF90IGdwaW9fYml0c2hpZnQ7CiAgdWludDhfdCBncGlvX21hc2tfYml0c2hpZnQ7CiAg dWludDhfdCBncGlvX2lkOwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7Cn07CgoKZW51bSBhdG9tX2dwaW9f cGluX2Fzc2lnbm1lbnRfZ3Bpb19pZCB7CiAgSTJDX0hXX0xBTkVfTVVYID0weDBmLAogIEkyQ19I V19FTkdJTkVfSURfTUFTSyA9MHg3MCwKICBJMkNfSFdfQ0FQID0weDgwLAoKCgogIFBDSUVfVkRE Q19DT05UUk9MX0dQSU9fUElOSUQgPSA1NiwKCiAgUFBfQUNfRENfU1dJVENIX0dQSU9fUElOSUQg PSA2MCwKCiAgVkREQ19WUkhPVF9HUElPX1BJTklEID0gNjEsCgogIFZERENfUENDX0dQSU9fUElO SUQgPSA2MiwKCiAgRUZVU0VfQ1VUX0VOQUJMRV9HUElPX1BJTklEID0gNjMsCgogIERSQU1fU0VM Rl9SRUZSRVNIX0dQSU9fUElOSUQgPSA2NCwKCiAgVEhFUk1BTF9JTlRfT1VUUFVUX0dQSU9fUElO SUQgPTY1LAp9OwoKCnN0cnVjdCBhdG9tX2dwaW9fcGluX2x1dF92Ml8xCnsKICBzdHJ1Y3QgYXRv bV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKCiAgc3RydWN0IGF0b21fZ3Bpb19w aW5fYXNzaWdubWVudCBncGlvX3Bpbls4XTsKfTsKIyA2NjcgIi4vZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0IHZyYW1fdXNhZ2VieWZp cm13YXJlX3YyXzEKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVh ZGVyOwogIHVpbnQzMl90IHN0YXJ0X2FkZHJlc3NfaW5fa2I7CiAgdWludDE2X3QgdXNlZF9ieV9m aXJtd2FyZV9pbl9rYjsKICB1aW50MTZfdCB1c2VkX2J5X2RyaXZlcl9pbl9rYjsKfTsKIyA2ODIg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIK ZW51bSBhdG9tX29iamVjdF9yZWNvcmRfdHlwZV9pZAp7CiAgQVRPTV9JMkNfUkVDT1JEX1RZUEUg PTEsCiAgQVRPTV9IUERfSU5UX1JFQ09SRF9UWVBFID0yLAogIEFUT01fT0JKRUNUX0dQSU9fQ05U TF9SRUNPUkRfVFlQRSA9OSwKICBBVE9NX0NPTk5FQ1RPUl9IUERQSU5fTFVUX1JFQ09SRF9UWVBF ID0xNiwKICBBVE9NX0NPTk5FQ1RPUl9BVVhERENfTFVUX1JFQ09SRF9UWVBFID0xNywKICBBVE9N X0VOQ09ERVJfQ0FQX1JFQ09SRF9UWVBFPTIwLAogIEFUT01fQlJBQ0tFVF9MQVlPVVRfUkVDT1JE X1RZUEU9MjEsCiAgQVRPTV9DT05ORUNUT1JfRk9SQ0VEX1RNRFNfQ0FQX1JFQ09SRF9UWVBFPTIy LAogIEFUT01fUkVDT1JEX0VORF9UWVBFID0weEZGLAp9OwoKc3RydWN0IGF0b21fY29tbW9uX3Jl Y29yZF9oZWFkZXIKewogIHVpbnQ4X3QgcmVjb3JkX3R5cGU7CiAgdWludDhfdCByZWNvcmRfc2l6 ZTsKfTsKCnN0cnVjdCBhdG9tX2kyY19yZWNvcmQKewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNv cmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CiAgdWludDhfdCBpMmNfaWQ7CiAgdWludDhfdCBpMmNf c2xhdmVfYWRkcjsKfTsKCnN0cnVjdCBhdG9tX2hwZF9pbnRfcmVjb3JkCnsKICBzdHJ1Y3QgYXRv bV9jb21tb25fcmVjb3JkX2hlYWRlciByZWNvcmRfaGVhZGVyOwogIHVpbnQ4X3QgcGluX2lkOwog IHVpbnQ4X3QgcGx1Z2luX3Bpbl9zdGF0ZTsKfTsKCgplbnVtIGF0b21fZW5jb2Rlcl9jYXBzX2Rl Zgp7CiAgQVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSMiA9MHgwMSwKICBBVE9NX0VOQ09ERVJf Q0FQX1JFQ09SRF9NU1RfRU4gPTB4MDEsCiAgQVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSMl9F TiA9MHgwMiwKICBBVE9NX0VOQ09ERVJfQ0FQX1JFQ09SRF9IRE1JNkdicHNfRU4gPTB4MDQsCiAg QVRPTV9FTkNPREVSX0NBUF9SRUNPUkRfSEJSM19FTiA9MHgwOCwKICBBVE9NX0VOQ09ERVJfQ0FQ X1JFQ09SRF9VU0JfQ19UWVBFID0weDEwMCwKfTsKCnN0cnVjdCBhdG9tX2VuY29kZXJfY2Fwc19y ZWNvcmQKewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7 CiAgdWludDMyX3QgZW5jb2RlcmNhcHM7Cn07CgplbnVtIGF0b21fY29ubmVjdG9yX2NhcHNfZGVm CnsKICBBVE9NX0NPTk5FQ1RPUl9DQVBfSU5URVJOQUxfRElTUExBWSA9IDB4MDEsCiAgQVRPTV9D T05ORUNUT1JfQ0FQX0lOVEVSTkFMX0RJU1BMQVlfQkwgPSAweDAyLAp9OwoKc3RydWN0IGF0b21f ZGlzcF9jb25uZWN0b3JfY2Fwc19yZWNvcmQKewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRf aGVhZGVyIHJlY29yZF9oZWFkZXI7CiAgdWludDMyX3QgY29ubmVjdGNhcHM7Cn07CgoKc3RydWN0 IGF0b21fZ3Bpb19waW5fY29udHJvbF9wYWlyCnsKICB1aW50OF90IGdwaW9faWQ7CiAgdWludDhf dCBncGlvX3BpbnN0YXRlOwp9OwoKc3RydWN0IGF0b21fb2JqZWN0X2dwaW9fY250bF9yZWNvcmQK ewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CiAgdWlu dDhfdCBmbGFnOwogIHVpbnQ4X3QgbnVtYmVyX29mX3BpbnM7CiAgc3RydWN0IGF0b21fZ3Bpb19w aW5fY29udHJvbF9wYWlyIGdwaW9bMV07Cn07CgoKZW51bSBhdG9tX2dwaW9fcGluX2NvbnRyb2xf cGluc3RhdGVfZGVmCnsKICBHUElPX1BJTl9UWVBFX0lOUFVUID0gMHgwMCwKICBHUElPX1BJTl9U WVBFX09VVFBVVCA9IDB4MTAsCiAgR1BJT19QSU5fVFlQRV9IV19DT05UUk9MID0gMHgyMCwKCgog IEdQSU9fUElOX09VVFBVVF9TVEFURV9NQVNLID0gMHgwMSwKICBHUElPX1BJTl9PVVRQVVRfU1RB VEVfU0hJRlQgPSAwLAogIEdQSU9fUElOX1NUQVRFX0FDVElWRV9MT1cgPSAweDAsCiAgR1BJT19Q SU5fU1RBVEVfQUNUSVZFX0hJR0ggPSAweDEsCn07CgoKCmVudW0gYXRvbV9nbHN5bmNfcmVjb3Jk X2dwaW9faW5kZXhfZGVmCnsKICBBVE9NX0dQSU9fSU5ERVhfR0xTWU5DX1JFRkNMSyA9IDAsCiAg QVRPTV9HUElPX0lOREVYX0dMU1lOQ19IU1lOQyA9IDEsCiAgQVRPTV9HUElPX0lOREVYX0dMU1lO Q19WU1lOQyA9IDIsCiAgQVRPTV9HUElPX0lOREVYX0dMU1lOQ19TV0FQX1JFUSA9IDMsCiAgQVRP TV9HUElPX0lOREVYX0dMU1lOQ19TV0FQX0dOVCA9IDQsCiAgQVRPTV9HUElPX0lOREVYX0dMU1lO Q19JTlRFUlJVUFQgPSA1LAogIEFUT01fR1BJT19JTkRFWF9HTFNZTkNfVl9SRVNFVCA9IDYsCiAg QVRPTV9HUElPX0lOREVYX0dMU1lOQ19TV0FQX0NOVEwgPSA3LAogIEFUT01fR1BJT19JTkRFWF9H TFNZTkNfU1dBUF9TRUwgPSA4LAogIEFUT01fR1BJT19JTkRFWF9HTFNZTkNfTUFYID0gOSwKfTsK CgpzdHJ1Y3QgYXRvbV9jb25uZWN0b3JfaHBkcGluX2x1dF9yZWNvcmQKewogIHN0cnVjdCBhdG9t X2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7CiAgdWludDhfdCBocGRfcGluX21h cFs4XTsKfTsKCnN0cnVjdCBhdG9tX2Nvbm5lY3Rvcl9hdXhkZGNfbHV0X3JlY29yZAp7CiAgc3Ry dWN0IGF0b21fY29tbW9uX3JlY29yZF9oZWFkZXIgcmVjb3JkX2hlYWRlcjsKICB1aW50OF90IGF1 eF9kZGNfbWFwWzhdOwp9OwoKc3RydWN0IGF0b21fY29ubmVjdG9yX2ZvcmNlZF90bWRzX2NhcF9y ZWNvcmQKewogIHN0cnVjdCBhdG9tX2NvbW1vbl9yZWNvcmRfaGVhZGVyIHJlY29yZF9oZWFkZXI7 CgogIHVpbnQ4X3QgbWF4dG1kc2Nsa3JhdGVfaW4yXzVtaHo7CiAgdWludDhfdCByZXNlcnZlZDsK fTsKCnN0cnVjdCBhdG9tX2Nvbm5lY3Rvcl9sYXlvdXRfaW5mbwp7CiAgdWludDE2X3QgY29ubmVj dG9yb2JqaWQ7CiAgdWludDhfdCBjb25uZWN0b3JfdHlwZTsKICB1aW50OF90IHBvc2l0aW9uOwp9 OwoKCmVudW0gYXRvbV9jb25uZWN0b3JfbGF5b3V0X2luZm9fY29ubmVjdG9yX3R5cGVfZGVmCnsK ICBDT05ORUNUT1JfVFlQRV9EVklfRCA9IDEsCgogIENPTk5FQ1RPUl9UWVBFX0hETUkgPSA0LAog IENPTk5FQ1RPUl9UWVBFX0RJU1BMQVlfUE9SVCA9IDUsCiAgQ09OTkVDVE9SX1RZUEVfTUlOSV9E SVNQTEFZX1BPUlQgPSA2LAp9OwoKc3RydWN0IGF0b21fYnJhY2tldF9sYXlvdXRfcmVjb3JkCnsK ICBzdHJ1Y3QgYXRvbV9jb21tb25fcmVjb3JkX2hlYWRlciByZWNvcmRfaGVhZGVyOwogIHVpbnQ4 X3QgYnJhY2tldGxlbjsKICB1aW50OF90IGJyYWNrZXR3aWR0aDsKICB1aW50OF90IGNvbm5fbnVt OwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7CiAgc3RydWN0IGF0b21fY29ubmVjdG9yX2xheW91dF9pbmZv IGNvbm5faW5mb1sxXTsKfTsKCmVudW0gYXRvbV9kaXNwbGF5X2RldmljZV90YWdfZGVmewogIEFU T01fRElTUExBWV9MQ0QxX1NVUFBPUlQgPSAweDAwMDIsCiAgQVRPTV9ESVNQTEFZX0RGUDFfU1VQ UE9SVCA9IDB4MDAwOCwKICBBVE9NX0RJU1BMQVlfREZQMl9TVVBQT1JUID0gMHgwMDgwLAogIEFU T01fRElTUExBWV9ERlAzX1NVUFBPUlQgPSAweDAyMDAsCiAgQVRPTV9ESVNQTEFZX0RGUDRfU1VQ UE9SVCA9IDB4MDQwMCwKICBBVE9NX0RJU1BMQVlfREZQNV9TVVBQT1JUID0gMHgwODAwLAogIEFU T01fRElTUExBWV9ERlA2X1NVUFBPUlQgPSAweDAwNDAsCiAgQVRPTV9ESVNQTEFZX0RGUHhfU1VQ UE9SVCA9IDB4MGVjOCwKfTsKCnN0cnVjdCBhdG9tX2Rpc3BsYXlfb2JqZWN0X3BhdGhfdjIKewog IHVpbnQxNl90IGRpc3BsYXlfb2JqaWQ7CiAgdWludDE2X3QgZGlzcF9yZWNvcmRvZmZzZXQ7CiAg dWludDE2X3QgZW5jb2Rlcm9iamlkOwogIHVpbnQxNl90IGV4dGVuY29kZXJvYmppZDsKICB1aW50 MTZfdCBlbmNvZGVyX3JlY29yZG9mZnNldDsKICB1aW50MTZfdCBleHRlbmNvZGVyX3JlY29yZG9m ZnNldDsKICB1aW50MTZfdCBkZXZpY2VfdGFnOwogIHVpbnQ4X3QgcHJpb3JpdHlfaWQ7CiAgdWlu dDhfdCByZXNlcnZlZDsKfTsKCnN0cnVjdCBkaXNwbGF5X29iamVjdF9pbmZvX3RhYmxlX3YxXzQK ewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQx Nl90IHN1cHBvcnRlZGRldmljZXM7CiAgdWludDhfdCBudW1iZXJfb2ZfcGF0aDsKICB1aW50OF90 IHJlc2VydmVkOwogIHN0cnVjdCBhdG9tX2Rpc3BsYXlfb2JqZWN0X3BhdGhfdjIgZGlzcGxheV9w YXRoWzhdOwp9OwoKCgoKCgoKc3RydWN0IGF0b21fZGlzcGxheV9jb250cm9sbGVyX2luZm9fdjRf MQp7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgdWlu dDMyX3QgZGlzcGxheV9jYXBzOwogIHVpbnQzMl90IGJvb3R1cF9kaXNwY2xrXzEwa2h6OwogIHVp bnQxNl90IGRjZV9yZWZjbGtfMTBraHo7CiAgdWludDE2X3QgaTJjX2VuZ2luZV9yZWZjbGtfMTBr aHo7CiAgdWludDE2X3QgZHZpX3NzX3BlcmNlbnRhZ2U7CiAgdWludDE2X3QgZHZpX3NzX3JhdGVf MTBoejsKICB1aW50MTZfdCBoZG1pX3NzX3BlcmNlbnRhZ2U7CiAgdWludDE2X3QgaGRtaV9zc19y YXRlXzEwaHo7CiAgdWludDE2X3QgZHBfc3NfcGVyY2VudGFnZTsKICB1aW50MTZfdCBkcF9zc19y YXRlXzEwaHo7CiAgdWludDhfdCBkdmlfc3NfbW9kZTsKICB1aW50OF90IGhkbWlfc3NfbW9kZTsK ICB1aW50OF90IGRwX3NzX21vZGU7CiAgdWludDhfdCBzc19yZXNlcnZlZDsKICB1aW50OF90IGhh cmRjb2RlX21vZGVfbnVtOwogIHVpbnQ4X3QgcmVzZXJ2ZWQxWzNdOwogIHVpbnQxNl90IGRwcGh5 X3JlZmNsa18xMGtoejsKICB1aW50MTZfdCByZXNlcnZlZDI7CiAgdWludDhfdCBkY2VpcF9taW5f dmVyOwogIHVpbnQ4X3QgZGNlaXBfbWF4X3ZlcjsKICB1aW50OF90IG1heF9kaXNwX3BpcGVfbnVt OwogIHVpbnQ4X3QgbWF4X3ZiaW9zX2FjdGl2ZV9kaXNwX3BpcGVfbnVtOwogIHVpbnQ4X3QgbWF4 X3BwbGxfbnVtOwogIHVpbnQ4X3QgbWF4X2Rpc3BfcGh5X251bTsKICB1aW50OF90IG1heF9hdXhf cGFpcnM7CiAgdWludDhfdCByZW1vdGVkaXNwbGF5Y29uZmlnOwogIHVpbnQ4X3QgcmVzZXJ2ZWQz WzhdOwp9OwoKCnN0cnVjdCBhdG9tX2Rpc3BsYXlfY29udHJvbGxlcl9pbmZvX3Y0XzIKewogIHN0 cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90IGRp c3BsYXlfY2FwczsKICB1aW50MzJfdCBib290dXBfZGlzcGNsa18xMGtoejsKICB1aW50MTZfdCBk Y2VfcmVmY2xrXzEwa2h6OwogIHVpbnQxNl90IGkyY19lbmdpbmVfcmVmY2xrXzEwa2h6OwogIHVp bnQxNl90IGR2aV9zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IGR2aV9zc19yYXRlXzEwaHo7CiAg dWludDE2X3QgaGRtaV9zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IGhkbWlfc3NfcmF0ZV8xMGh6 OwogIHVpbnQxNl90IGRwX3NzX3BlcmNlbnRhZ2U7CiAgdWludDE2X3QgZHBfc3NfcmF0ZV8xMGh6 OwogIHVpbnQ4X3QgZHZpX3NzX21vZGU7CiAgdWludDhfdCBoZG1pX3NzX21vZGU7CiAgdWludDhf dCBkcF9zc19tb2RlOwogIHVpbnQ4X3Qgc3NfcmVzZXJ2ZWQ7CiAgdWludDhfdCBkZnBfaGFyZGNv ZGVfbW9kZV9udW07CiAgdWludDhfdCBkZnBfaGFyZGNvZGVfcmVmcmVzaHJhdGU7CiAgdWludDhf dCB2Z2FfaGFyZGNvZGVfbW9kZV9udW07CiAgdWludDhfdCB2Z2FfaGFyZGNvZGVfcmVmcmVzaHJh dGU7CiAgdWludDE2X3QgZHBwaHlfcmVmY2xrXzEwa2h6OwogIHVpbnQxNl90IHJlc2VydmVkMjsK ICB1aW50OF90IGRjbmlwX21pbl92ZXI7CiAgdWludDhfdCBkY25pcF9tYXhfdmVyOwogIHVpbnQ4 X3QgbWF4X2Rpc3BfcGlwZV9udW07CiAgdWludDhfdCBtYXhfdmJpb3NfYWN0aXZlX2Rpc3BfcGlw ZV9udW07CiAgdWludDhfdCBtYXhfcHBsbF9udW07CiAgdWludDhfdCBtYXhfZGlzcF9waHlfbnVt OwogIHVpbnQ4X3QgbWF4X2F1eF9wYWlyczsKICB1aW50OF90IHJlbW90ZWRpc3BsYXljb25maWc7 CiAgdWludDhfdCByZXNlcnZlZDNbOF07Cn07CgoKZW51bSBkY2VfaW5mb19jYXBzX2RlZgp7Cgog IERDRV9JTkZPX0NBUFNfRk9SQ0VfRElTUERFVl9DT05ORUNURUQgPTB4MDIsCgogIERDRV9JTkZP X0NBUFNfRElTQUJMRV9ERlBfRFBfSEJSMiA9MHgwNCwKCiAgRENFX0lORk9fQ0FQU19FTkFCTEVf SU5URVJMQUNfVElNSU5HID0weDA4LAoKfTsKCgoKCgoKc3RydWN0IGF0b21fZXh0X2Rpc3BsYXlf cGF0aAp7CiAgdWludDE2X3QgZGV2aWNlX3RhZzsKICB1aW50MTZfdCBkZXZpY2VfYWNwaV9lbnVt OwogIHVpbnQxNl90IGNvbm5lY3Rvcm9iamlkOwogIHVpbnQ4X3QgYXV4ZGRjbHV0X2luZGV4Owog IHVpbnQ4X3QgaHBkbHV0X2luZGV4OwogIHVpbnQxNl90IGV4dF9lbmNvZGVyX29iamlkOwogIHVp bnQ4X3QgY2hhbm5lbG1hcHBpbmc7CiAgdWludDhfdCBjaHBuaW52ZXJ0OwogIHVpbnQxNl90IGNh cHM7CiAgdWludDE2X3QgcmVzZXJ2ZWQ7Cn07CgoKZW51bSBleHRfZGlzcGxheV9wYXRoX2NhcF9k ZWYKewogIEVYVF9ESVNQTEFZX1BBVEhfQ0FQU19fSEJSMl9ESVNBQkxFID0weDAwMDEsCiAgRVhU X0RJU1BMQVlfUEFUSF9DQVBTX19EUF9GSVhFRF9WU19FTiA9MHgwMDAyLAogIEVYVF9ESVNQTEFZ X1BBVEhfQ0FQU19fRVhUX0NISVBfTUFTSyA9MHgwMDdDLAp9OwoKc3RydWN0IGF0b21fZXh0ZXJu YWxfZGlzcGxheV9jb25uZWN0aW9uX2luZm8KewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9o ZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQ4X3QgZ3VpZFsxNl07CiAgc3RydWN0IGF0b21fZXh0 X2Rpc3BsYXlfcGF0aCBwYXRoWzddOwogIHVpbnQ4X3QgY2hlY2tzdW07CiAgdWludDhfdCBzdGVy ZW9waW5pZDsKICB1aW50OF90IHJlbW90ZWRpc3BsYXljb25maWc7CiAgdWludDhfdCBlZHB0b2x2 ZHNyeGlkOwogIHVpbnQ4X3QgZml4ZHB2b2x0YWdlc3dpbmc7CiAgdWludDhfdCByZXNlcnZlZFsz XTsKfTsKCgoKCgoKCnN0cnVjdCBhdG9tX2NhbWVyYV9kcGh5X3RpbWluZ19wYXJhbQp7CiAgdWlu dDhfdCBwcm9maWxlX2lkOwogIHVpbnQzMl90IHBhcmFtOwp9OwoKc3RydWN0IGF0b21fY2FtZXJh X2RwaHlfZWxlY19wYXJhbQp7CiAgdWludDE2X3QgcGFyYW1bM107Cn07CgpzdHJ1Y3QgYXRvbV9j YW1lcmFfbW9kdWxlX2luZm8KewogIHVpbnQ4X3QgbW9kdWxlX2lkOwogIHVpbnQ4X3QgbW9kdWxl X25hbWVbOF07CiAgc3RydWN0IGF0b21fY2FtZXJhX2RwaHlfdGltaW5nX3BhcmFtIHRpbWluZ3Bh cmFtWzZdOwp9OwoKc3RydWN0IGF0b21fY2FtZXJhX2ZsYXNobGlnaHRfaW5mbwp7CiAgdWludDhf dCBmbGFzaGxpZ2h0X2lkOwogIHVpbnQ4X3QgbmFtZVs4XTsKfTsKCnN0cnVjdCBhdG9tX2NhbWVy YV9kYXRhCnsKICB1aW50MzJfdCB2ZXJzaW9uQ29kZTsKICBzdHJ1Y3QgYXRvbV9jYW1lcmFfbW9k dWxlX2luZm8gY2FtZXJhSW5mb1szXTsKICBzdHJ1Y3QgYXRvbV9jYW1lcmFfZmxhc2hsaWdodF9p bmZvIGZsYXNoSW5mbzsKICBzdHJ1Y3QgYXRvbV9jYW1lcmFfZHBoeV9lbGVjX3BhcmFtIGRwaHlf cGFyYW07CiAgdWludDMyX3QgY3JjX3ZhbDsKfTsKCgpzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2R2 aWhkbWlfdHVuaW5nc2V0CnsKICB1aW50MzJfdCBtYXhfc3ltY2xrX2luMTBraHo7CiAgdWludDhf dCBlbmNvZGVyX21vZGU7CiAgdWludDhfdCBwaHlfc2VsOwogIHVpbnQxNl90IG1hcmdpbmRlZW1w aDsKICB1aW50OF90IGRlZW1waF82ZGJfNDsKICB1aW50OF90IGJvb3N0YWRqOwogIHVpbnQ4X3Qg dHhfZHJpdmVyX2ZpZnR5X29obXM7CiAgdWludDhfdCBkZWVtcGhfc2VsOwp9OwoKc3RydWN0IGF0 b21fMTRubV9kcHBoeV9kcF9zZXR0aW5newogIHVpbnQ4X3QgZHBfdnNfcGVtcGhfbGV2ZWw7CiAg dWludDE2X3QgbWFyZ2luZGVlbXBoOwogIHVpbnQ4X3QgZGVlbXBoXzZkYl80OwogIHVpbnQ4X3Qg Ym9vc3RhZGo7Cn07CgpzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldHsKICB1aW50 OF90IHBoeV9zZWw7CiAgdWludDhfdCB2ZXJzaW9uOwogIHVpbnQxNl90IHRhYmxlX3NpemU7CiAg dWludDE2X3QgcmVzZXJ2ZWQ7CiAgc3RydWN0IGF0b21fMTRubV9kcHBoeV9kcF9zZXR0aW5nIGRw dHVuaW5nWzEwXTsKfTsKCnN0cnVjdCBhdG9tXzE0bm1fZGlnX3RyYW5zbWl0dGVyX2luZm9faGVh ZGVyX3Y0XzB7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7 CiAgdWludDE2X3QgcGNpZV9waHlfdG1kc19oZG1pX21hY3JvX3NldHRpbmdzX29mZnNldDsKICB1 aW50MTZfdCB1bmlwaHlfdnNfZW1waF9sb29rdXBfdGFibGVfb2Zmc2V0OwogIHVpbnQxNl90IHVu aXBoeV94YmFyX3NldHRpbmdzX3RhYmxlX29mZnNldDsKfTsKCnN0cnVjdCBhdG9tXzE0bm1fY29t YnBoeV90bWRzX3ZzX3NldAp7CiAgdWludDhfdCBzeW1fY2xrOwogIHVpbnQ4X3QgZGlnX21vZGU7 CiAgdWludDhfdCBwaHlfc2VsOwogIHVpbnQxNl90IGNvbW1vbl9tYXJfZGVlbXBoX25vbV9fbWFy Z2luX2RlZW1waF92YWw7CiAgdWludDhfdCBjb21tb25fc2VsZGVlbXBoNjBfX2RlZW1waF82ZGJf NF92YWw7CiAgdWludDhfdCBjbWRfYnVzX2dsb2JhbF9mb3JfdHhfbGFuZTBfX2Jvb3N0YWRqX3Zh bCA7CiAgdWludDhfdCBjb21tb25femNhbGNvZGVfY3RybF9fdHhfZHJpdmVyX2ZpZnR5X29obXNf dmFsOwogIHVpbnQ4X3QgbWFyZ2luX2RlZW1waF9sYW5lMF9fZGVlbXBoX3NlbF92YWw7Cn07Cgpz dHJ1Y3QgYXRvbV9pMmNfcmVnX2luZm8gewogIHVpbnQ4X3QgdWNJMmNSZWdJbmRleDsKICB1aW50 OF90IHVjSTJjUmVnVmFsOwp9OwoKc3RydWN0IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3Nl dCB7CiAgdWludDhfdCBIZG1pU2x2QWRkcjsKICB1aW50OF90IEhkbWlSZWdOdW07CiAgdWludDhf dCBIZG1pNkdSZWdOdW07CiAgc3RydWN0IGF0b21faTJjX3JlZ19pbmZvIEhkbWlSZWdTZXR0aW5n WzldOwogIHN0cnVjdCBhdG9tX2kyY19yZWdfaW5mbyBIZG1pNkdoelJlZ1NldHRpbmdbM107Cn07 CgpzdHJ1Y3QgYXRvbV9pbnRlZ3JhdGVkX3N5c3RlbV9pbmZvX3YxXzExCnsKICBzdHJ1Y3QgYXRv bV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50MzJfdCB2Ymlvc19taXNj OwogIHVpbnQzMl90IGdwdWNhcGluZm87CiAgdWludDMyX3Qgc3lzdGVtX2NvbmZpZzsKICB1aW50 MzJfdCBjcHVjYXBpbmZvOwogIHVpbnQxNl90IGdwdWNsa19zc19wZXJjZW50YWdlOwogIHVpbnQx Nl90IGdwdWNsa19zc190eXBlOwogIHVpbnQxNl90IGx2ZHNfc3NfcGVyY2VudGFnZTsKICB1aW50 MTZfdCBsdmRzX3NzX3JhdGVfMTBoejsKICB1aW50MTZfdCBoZG1pX3NzX3BlcmNlbnRhZ2U7CiAg dWludDE2X3QgaGRtaV9zc19yYXRlXzEwaHo7CiAgdWludDE2X3QgZHZpX3NzX3BlcmNlbnRhZ2U7 CiAgdWludDE2X3QgZHZpX3NzX3JhdGVfMTBoejsKICB1aW50MTZfdCBkcHBoeV9vdmVycmlkZTsK ICB1aW50MTZfdCBsdmRzX21pc2M7CiAgdWludDE2X3QgYmFja2xpZ2h0X3B3bV9oejsKICB1aW50 OF90IG1lbW9yeXR5cGU7CiAgdWludDhfdCB1bWFjaGFubmVsbnVtYmVyOwogIHVpbnQ4X3QgcHdy X29uX2RpZ29uX3RvX2RlOwogIHVpbnQ4X3QgcHdyX29uX2RlX3RvX3ZhcnlfYmw7CiAgdWludDhf dCBwd3JfZG93bl92YXJ5X2Jsb2ZmX3RvX2RlOwogIHVpbnQ4X3QgcHdyX2Rvd25fZGVfdG9fZGln b2ZmOwogIHVpbnQ4X3QgcHdyX29mZl9kZWxheTsKICB1aW50OF90IHB3cl9vbl92YXJ5X2JsX3Rv X2Jsb247CiAgdWludDhfdCBwd3JfZG93bl9ibG9mZl90b192YXJ5X2Jsb2ZmOwogIHVpbnQ4X3Qg bWluX2FsbG93ZWRfYmxfbGV2ZWw7CiAgdWludDhfdCBodGNfaHlzdF9saW1pdDsKICB1aW50OF90 IGh0Y190bXBfbGltaXQ7CiAgdWludDhfdCByZXNlcnZlZDE7CiAgdWludDhfdCByZXNlcnZlZDI7 CiAgc3RydWN0IGF0b21fZXh0ZXJuYWxfZGlzcGxheV9jb25uZWN0aW9uX2luZm8gZXh0ZGlzcGNv bm5pbmZvOwogIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHZpaGRtaV90dW5pbmdzZXQgZHZpX3R1 bmluZ3NldDsKICBzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2R2aWhkbWlfdHVuaW5nc2V0IGhkbWlf dHVuaW5nc2V0OwogIHN0cnVjdCBhdG9tXzE0bm1fZHBwaHlfZHZpaGRtaV90dW5pbmdzZXQgaGRt aTZnX3R1bmluZ3NldDsKICBzdHJ1Y3QgYXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldCBkcF90 dW5pbmdzZXQ7CiAgc3RydWN0IGF0b21fMTRubV9kcHBoeV9kcF90dW5pbmdzZXQgZHBfaGJyM190 dW5pbmdzZXQ7CiAgc3RydWN0IGF0b21fY2FtZXJhX2RhdGEgY2FtZXJhX2luZm87CiAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDBfcmV0aW1lcl9zZXQ7CiAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDFfcmV0aW1lcl9zZXQ7CiAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDJfcmV0aW1lcl9zZXQ7CiAgc3RydWN0 IGF0b21faGRtaV9yZXRpbWVyX3JlZHJpdmVyX3NldCBkcDNfcmV0aW1lcl9zZXQ7CiAgc3RydWN0 IGF0b21fMTRubV9kcHBoeV9kcF90dW5pbmdzZXQgZHBfaGJyX3R1bmluZ3NldDsKICBzdHJ1Y3Qg YXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldCBkcF9oYnIyX3R1bmluZ3NldDsKICBzdHJ1Y3Qg YXRvbV8xNG5tX2RwcGh5X2RwX3R1bmluZ3NldCBlZHBfdHVuaW5nc2V0OwogIHVpbnQzMl90IHJl c2VydmVkWzY2XTsKfTsKCgoKZW51bSBhdG9tX3N5c3RlbV92Ymlvc21pc2NfZGVmewogIElOVEVH UkFURURfU1lTVEVNX0lORk9fX0dFVF9FRElEX0NBTExCQUNLX0ZVTkNfU1VQUE9SVCA9IDB4MDEs Cn07CgoKCmVudW0gYXRvbV9zeXN0ZW1fZ3B1Y2FwaW5mX2RlZnsKICBTWVNfSU5GT19HUFVDQVBT X19FTkFCRUxfREZTX0JZUEFTUyA9IDB4MTAsCn07CgoKZW51bSBhdG9tX3N5c2luZm9fZHBwaHlf b3ZlcnJpZGVfZGVmewogIEFUT01fRU5BQkxFX0RWSV9UVU5JTkdTRVQgPSAweDAxLAogIEFUT01f RU5BQkxFX0hETUlfVFVOSU5HU0VUID0gMHgwMiwKICBBVE9NX0VOQUJMRV9IRE1JNkdfVFVOSU5H U0VUID0gMHgwNCwKICBBVE9NX0VOQUJMRV9EUF9UVU5JTkdTRVQgPSAweDA4LAogIEFUT01fRU5B QkxFX0RQX0hCUjNfVFVOSU5HU0VUID0gMHgxMCwKfTsKCgplbnVtIGF0b21fc3lzX2luZm9fbHZk c19taXNjX2RlZgp7CiAgU1lTX0lORk9fTFZEU19NSVNDXzg4OF9GUERJX01PREUgPTB4MDEsCiAg U1lTX0lORk9fTFZEU19NSVNDXzg4OF9CUENfTU9ERSA9MHgwNCwKICBTWVNfSU5GT19MVkRTX01J U0NfT1ZFUlJJREVfRU4gPTB4MDgsCn07CgoKCmVudW0gYXRvbV9kbWlfdDE3X21lbV90eXBlX2Rl ZnsKICBPdGhlck1lbVR5cGUgPSAweDAxLAogIFVua25vd25NZW1UeXBlLAogIERyYW1NZW1UeXBl LAogIEVkcmFtTWVtVHlwZSwKICBWcmFtTWVtVHlwZSwKICBTcmFtTWVtVHlwZSwKICBSYW1NZW1U eXBlLAogIFJvbU1lbVR5cGUsCiAgRmxhc2hNZW1UeXBlLAogIEVlcHJvbU1lbVR5cGUsCiAgRmVw cm9tTWVtVHlwZSwKICBFcHJvbU1lbVR5cGUsCiAgQ2RyYW1NZW1UeXBlLAogIFRocmVlRHJhbU1l bVR5cGUsCiAgU2RyYW1NZW1UeXBlLAogIFNncmFtTWVtVHlwZSwKICBSZHJhbU1lbVR5cGUsCiAg RGRyTWVtVHlwZSwKICBEZHIyTWVtVHlwZSwKICBEZHIyRmJkaW1tTWVtVHlwZSwKICBEZHIzTWVt VHlwZSA9IDB4MTgsCiAgRmJkMk1lbVR5cGUsCiAgRGRyNE1lbVR5cGUsCiAgTHBEZHJNZW1UeXBl LAogIExwRGRyMk1lbVR5cGUsCiAgTHBEZHIzTWVtVHlwZSwKICBMcERkcjRNZW1UeXBlLAp9OwoK CgpzdHJ1Y3QgYXRvbV9mdXNpb25fc3lzdGVtX2luZm9fdjQKewogIHN0cnVjdCBhdG9tX2ludGVn cmF0ZWRfc3lzdGVtX2luZm9fdjFfMTEgc3lzaW5mbzsKICB1aW50MzJfdCBwb3dlcnBsYXlpbmZv WzI1Nl07Cn07CiMgMTIxOSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRl L2F0b21maXJtd2FyZS5oIgpzdHJ1Y3QgYXRvbV9nZnhfaW5mb192Ml8yCnsKICBzdHJ1Y3QgYXRv bV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50OF90IGdmeGlwX21pbl92 ZXI7CiAgdWludDhfdCBnZnhpcF9tYXhfdmVyOwogIHVpbnQ4X3QgbWF4X3NoYWRlcl9lbmdpbmVz OwogIHVpbnQ4X3QgbWF4X3RpbGVfcGlwZXM7CiAgdWludDhfdCBtYXhfY3VfcGVyX3NoOwogIHVp bnQ4X3QgbWF4X3NoX3Blcl9zZTsKICB1aW50OF90IG1heF9iYWNrZW5kc19wZXJfc2U7CiAgdWlu dDhfdCBtYXhfdGV4dHVyZV9jaGFubmVsX2NhY2hlczsKICB1aW50MzJfdCByZWdhZGRyX2NwX2Rt YV9zcmNfYWRkcjsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9zcmNfYWRkcl9oaTsKICB1aW50 MzJfdCByZWdhZGRyX2NwX2RtYV9kc3RfYWRkcjsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9k c3RfYWRkcl9oaTsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9jb21tYW5kOwogIHVpbnQzMl90 IHJlZ2FkZHJfY3Bfc3RhdHVzOwogIHVpbnQzMl90IHJlZ2FkZHJfcmxjX2dwdV9jbG9ja18zMjsK ICB1aW50MzJfdCBybGNfZ3B1X3RpbWVyX3JlZmNsazsKfTsKCnN0cnVjdCBhdG9tX2dmeF9pbmZv X3YyXzMgewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwog IHVpbnQ4X3QgZ2Z4aXBfbWluX3ZlcjsKICB1aW50OF90IGdmeGlwX21heF92ZXI7CiAgdWludDhf dCBtYXhfc2hhZGVyX2VuZ2luZXM7CiAgdWludDhfdCBtYXhfdGlsZV9waXBlczsKICB1aW50OF90 IG1heF9jdV9wZXJfc2g7CiAgdWludDhfdCBtYXhfc2hfcGVyX3NlOwogIHVpbnQ4X3QgbWF4X2Jh Y2tlbmRzX3Blcl9zZTsKICB1aW50OF90IG1heF90ZXh0dXJlX2NoYW5uZWxfY2FjaGVzOwogIHVp bnQzMl90IHJlZ2FkZHJfY3BfZG1hX3NyY19hZGRyOwogIHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1h X3NyY19hZGRyX2hpOwogIHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1hX2RzdF9hZGRyOwogIHVpbnQz Ml90IHJlZ2FkZHJfY3BfZG1hX2RzdF9hZGRyX2hpOwogIHVpbnQzMl90IHJlZ2FkZHJfY3BfZG1h X2NvbW1hbmQ7CiAgdWludDMyX3QgcmVnYWRkcl9jcF9zdGF0dXM7CiAgdWludDMyX3QgcmVnYWRk cl9ybGNfZ3B1X2Nsb2NrXzMyOwogIHVpbnQzMl90IHJsY19ncHVfdGltZXJfcmVmY2xrOwogIHVp bnQ4X3QgYWN0aXZlX2N1X3Blcl9zaDsKICB1aW50OF90IGFjdGl2ZV9yYl9wZXJfc2U7CiAgdWlu dDE2X3QgZ2Nnb2xkZW5vZmZzZXQ7CiAgdWludDMyX3Qgcm0yMV9zcmFtX3ZtaW5fdmFsdWU7Cn07 CgpzdHJ1Y3QgYXRvbV9nZnhfaW5mb192Ml80CnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVf aGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50OF90IGdmeGlwX21pbl92ZXI7CiAgdWludDhfdCBn ZnhpcF9tYXhfdmVyOwogIHVpbnQ4X3QgbWF4X3NoYWRlcl9lbmdpbmVzOwogIHVpbnQ4X3QgcmVz ZXJ2ZWQ7CiAgdWludDhfdCBtYXhfY3VfcGVyX3NoOwogIHVpbnQ4X3QgbWF4X3NoX3Blcl9zZTsK ICB1aW50OF90IG1heF9iYWNrZW5kc19wZXJfc2U7CiAgdWludDhfdCBtYXhfdGV4dHVyZV9jaGFu bmVsX2NhY2hlczsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9zcmNfYWRkcjsKICB1aW50MzJf dCByZWdhZGRyX2NwX2RtYV9zcmNfYWRkcl9oaTsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9k c3RfYWRkcjsKICB1aW50MzJfdCByZWdhZGRyX2NwX2RtYV9kc3RfYWRkcl9oaTsKICB1aW50MzJf dCByZWdhZGRyX2NwX2RtYV9jb21tYW5kOwogIHVpbnQzMl90IHJlZ2FkZHJfY3Bfc3RhdHVzOwog IHVpbnQzMl90IHJlZ2FkZHJfcmxjX2dwdV9jbG9ja18zMjsKICB1aW50MzJfdCBybGNfZ3B1X3Rp bWVyX3JlZmNsazsKICB1aW50OF90IGFjdGl2ZV9jdV9wZXJfc2g7CiAgdWludDhfdCBhY3RpdmVf cmJfcGVyX3NlOwogIHVpbnQxNl90IGdjZ29sZGVub2Zmc2V0OwogIHVpbnQxNl90IGdjX251bV9n cHJzOwogIHVpbnQxNl90IGdjX2dzcHJpbV9idWZmX2RlcHRoOwogIHVpbnQxNl90IGdjX3BhcmFt ZXRlcl9jYWNoZV9kZXB0aDsKICB1aW50MTZfdCBnY193YXZlX3NpemU7CiAgdWludDE2X3QgZ2Nf bWF4X3dhdmVzX3Blcl9zaW1kOwogIHVpbnQxNl90IGdjX2xkc19zaXplOwogIHVpbnQ4X3QgZ2Nf bnVtX21heF9nc190aGRzOwogIHVpbnQ4X3QgZ2NfZ3NfdGFibGVfZGVwdGg7CiAgdWludDhfdCBn Y19kb3VibGVfb2ZmY2hpcF9sZHNfYnVmZmVyOwogIHVpbnQ4X3QgZ2NfbWF4X3NjcmF0Y2hfc2xv dHNfcGVyX2N1OwogIHVpbnQzMl90IHNyYW1fcm1fZnVzZXNfdmFsOwogIHVpbnQzMl90IHNyYW1f Y3VzdG9tX3JtX2Z1c2VzX3ZhbDsKfTsKCgoKCgoKc3RydWN0IGF0b21fc211X2luZm9fdjNfMQp7 CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgdWludDhf dCBzbXVpcF9taW5fdmVyOwogIHVpbnQ4X3Qgc211aXBfbWF4X3ZlcjsKICB1aW50OF90IHNtdV9y c2QxOwogIHVpbnQ4X3QgZ3B1Y2xrX3NzX21vZGU7CiAgdWludDE2X3Qgc2Nsa19zc19wZXJjZW50 YWdlOwogIHVpbnQxNl90IHNjbGtfc3NfcmF0ZV8xMGh6OwogIHVpbnQxNl90IGdwdWNsa19zc19w ZXJjZW50YWdlOwogIHVpbnQxNl90IGdwdWNsa19zc19yYXRlXzEwaHo7CiAgdWludDMyX3QgY29y ZV9yZWZjbGtfMTBraHo7CiAgdWludDhfdCBhY19kY19ncGlvX2JpdDsKICB1aW50OF90IGFjX2Rj X3BvbGFyaXR5OwogIHVpbnQ4X3QgdnIwaG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIwaG90X3Bv bGFyaXR5OwogIHVpbnQ4X3QgdnIxaG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIxaG90X3BvbGFy aXR5OwogIHVpbnQ4X3QgZndfY3RmX2dwaW9fYml0OwogIHVpbnQ4X3QgZndfY3RmX3BvbGFyaXR5 Owp9OwoKc3RydWN0IGF0b21fc211X2luZm9fdjNfMiB7CiAgc3RydWN0IGF0b21fY29tbW9uX3Rh YmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgdWludDhfdCBzbXVpcF9taW5fdmVyOwogIHVpbnQ4 X3Qgc211aXBfbWF4X3ZlcjsKICB1aW50OF90IHNtdV9yc2QxOwogIHVpbnQ4X3QgZ3B1Y2xrX3Nz X21vZGU7CiAgdWludDE2X3Qgc2Nsa19zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IHNjbGtfc3Nf cmF0ZV8xMGh6OwogIHVpbnQxNl90IGdwdWNsa19zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IGdw dWNsa19zc19yYXRlXzEwaHo7CiAgdWludDMyX3QgY29yZV9yZWZjbGtfMTBraHo7CiAgdWludDhf dCBhY19kY19ncGlvX2JpdDsKICB1aW50OF90IGFjX2RjX3BvbGFyaXR5OwogIHVpbnQ4X3QgdnIw aG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIwaG90X3BvbGFyaXR5OwogIHVpbnQ4X3QgdnIxaG90 X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIxaG90X3BvbGFyaXR5OwogIHVpbnQ4X3QgZndfY3RmX2dw aW9fYml0OwogIHVpbnQ4X3QgZndfY3RmX3BvbGFyaXR5OwogIHVpbnQ4X3QgcGNjX2dwaW9fYml0 OwogIHVpbnQ4X3QgcGNjX2dwaW9fcG9sYXJpdHk7CiAgdWludDE2X3Qgc211Z29sZGVub2Zmc2V0 OwogIHVpbnQzMl90IGdwdXBsbF92Y29fZnJlcV8xMGtoejsKICB1aW50MzJfdCBib290dXBfc21u Y2xrXzEwa2h6OwogIHVpbnQzMl90IGJvb3R1cF9zb2NjbGtfMTBraHo7CiAgdWludDMyX3QgYm9v dHVwX21wMGNsa18xMGtoejsKICB1aW50MzJfdCBib290dXBfbXAxY2xrXzEwa2h6OwogIHVpbnQz Ml90IGJvb3R1cF9sY2xrXzEwa2h6OwogIHVpbnQzMl90IGJvb3R1cF9kY2VmY2xrXzEwa2h6Owog IHVpbnQzMl90IGN0Zl90aHJlc2hvbGRfb3ZlcnJpZGVfdmFsdWU7CiAgdWludDMyX3QgcmVzZXJ2 ZWRbNV07Cn07CgpzdHJ1Y3QgYXRvbV9zbXVfaW5mb192M18zIHsKICBzdHJ1Y3QgYXRvbV9jb21t b25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50OF90IHNtdWlwX21pbl92ZXI7CiAg dWludDhfdCBzbXVpcF9tYXhfdmVyOwogIHVpbnQ4X3Qgd2FmbGNsa19zc19tb2RlOwogIHVpbnQ4 X3QgZ3B1Y2xrX3NzX21vZGU7CiAgdWludDE2X3Qgc2Nsa19zc19wZXJjZW50YWdlOwogIHVpbnQx Nl90IHNjbGtfc3NfcmF0ZV8xMGh6OwogIHVpbnQxNl90IGdwdWNsa19zc19wZXJjZW50YWdlOwog IHVpbnQxNl90IGdwdWNsa19zc19yYXRlXzEwaHo7CiAgdWludDMyX3QgY29yZV9yZWZjbGtfMTBr aHo7CiAgdWludDhfdCBhY19kY19ncGlvX2JpdDsKICB1aW50OF90IGFjX2RjX3BvbGFyaXR5Owog IHVpbnQ4X3QgdnIwaG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIwaG90X3BvbGFyaXR5OwogIHVp bnQ4X3QgdnIxaG90X2dwaW9fYml0OwogIHVpbnQ4X3QgdnIxaG90X3BvbGFyaXR5OwogIHVpbnQ4 X3QgZndfY3RmX2dwaW9fYml0OwogIHVpbnQ4X3QgZndfY3RmX3BvbGFyaXR5OwogIHVpbnQ4X3Qg cGNjX2dwaW9fYml0OwogIHVpbnQ4X3QgcGNjX2dwaW9fcG9sYXJpdHk7CiAgdWludDE2X3Qgc211 Z29sZGVub2Zmc2V0OwogIHVpbnQzMl90IGdwdXBsbF92Y29fZnJlcV8xMGtoejsKICB1aW50MzJf dCBib290dXBfc21uY2xrXzEwa2h6OwogIHVpbnQzMl90IGJvb3R1cF9zb2NjbGtfMTBraHo7CiAg dWludDMyX3QgYm9vdHVwX21wMGNsa18xMGtoejsKICB1aW50MzJfdCBib290dXBfbXAxY2xrXzEw a2h6OwogIHVpbnQzMl90IGJvb3R1cF9sY2xrXzEwa2h6OwogIHVpbnQzMl90IGJvb3R1cF9kY2Vm Y2xrXzEwa2h6OwogIHVpbnQzMl90IGN0Zl90aHJlc2hvbGRfb3ZlcnJpZGVfdmFsdWU7CiAgdWlu dDMyX3Qgc3lzcGxsM18wX3Zjb19mcmVxXzEwa2h6OwogIHVpbnQzMl90IHN5c3BsbDNfMV92Y29f ZnJlcV8xMGtoejsKICB1aW50MzJfdCBib290dXBfZmNsa18xMGtoejsKICB1aW50MzJfdCBib290 dXBfd2FmbGNsa18xMGtoejsKICB1aW50MzJfdCBzbXVfaW5mb19jYXBzOwogIHVpbnQxNl90IHdh ZmxjbGtfc3NfcGVyY2VudGFnZTsKICB1aW50MTZfdCBzbXVpbml0b2Zmc2V0OwogIHVpbnQzMl90 IHJlc2VydmVkOwp9OwoKCgoKCgpzdHJ1Y3QgYXRvbV9zbWNfZHBtX2luZm9fdjRfMQp7CiAgc3Ry dWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiAgdWludDhfdCBsaXF1 aWQxX2kyY19hZGRyZXNzOwogIHVpbnQ4X3QgbGlxdWlkMl9pMmNfYWRkcmVzczsKICB1aW50OF90 IHZyX2kyY19hZGRyZXNzOwogIHVpbnQ4X3QgcGx4X2kyY19hZGRyZXNzOwoKICB1aW50OF90IGxp cXVpZF9pMmNfbGluZXNjbDsKICB1aW50OF90IGxpcXVpZF9pMmNfbGluZXNkYTsKICB1aW50OF90 IHZyX2kyY19saW5lc2NsOwogIHVpbnQ4X3QgdnJfaTJjX2xpbmVzZGE7CgogIHVpbnQ4X3QgcGx4 X2kyY19saW5lc2NsOwogIHVpbnQ4X3QgcGx4X2kyY19saW5lc2RhOwogIHVpbnQ4X3QgdnJzZW5z b3JwcmVzZW50OwogIHVpbnQ4X3QgbGlxdWlkc2Vuc29ycHJlc2VudDsKCiAgdWludDE2X3QgbWF4 dm9sdGFnZXN0ZXBnZng7CiAgdWludDE2X3QgbWF4dm9sdGFnZXN0ZXBzb2M7CgogIHVpbnQ4X3Qg dmRkZ2Z4dnJtYXBwaW5nOwogIHVpbnQ4X3QgdmRkc29jdnJtYXBwaW5nOwogIHVpbnQ4X3QgdmRk bWVtMHZybWFwcGluZzsKICB1aW50OF90IHZkZG1lbTF2cm1hcHBpbmc7CgogIHVpbnQ4X3QgZ2Z4 dWx2cGhhc2VzaGVkZGluZ21hc2s7CiAgdWludDhfdCBzb2N1bHZwaGFzZXNoZWRkaW5nbWFzazsK ICB1aW50OF90IHBhZGRpbmc4X3ZbMl07CgogIHVpbnQxNl90IGdmeG1heGN1cnJlbnQ7CiAgdWlu dDhfdCBnZnhvZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWdmeDsKCiAgdWludDE2 X3Qgc29jbWF4Y3VycmVudDsKICB1aW50OF90IHNvY29mZnNldDsKICB1aW50OF90IHBhZGRpbmdf dGVsZW1ldHJ5c29jOwoKICB1aW50MTZfdCBtZW0wbWF4Y3VycmVudDsKICB1aW50OF90IG1lbTBv ZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeW1lbTA7CgogIHVpbnQxNl90IG1lbTFt YXhjdXJyZW50OwogIHVpbnQ4X3QgbWVtMW9mZnNldDsKICB1aW50OF90IHBhZGRpbmdfdGVsZW1l dHJ5bWVtMTsKCiAgdWludDhfdCBhY2RjZ3BpbzsKICB1aW50OF90IGFjZGNwb2xhcml0eTsKICB1 aW50OF90IHZyMGhvdGdwaW87CiAgdWludDhfdCB2cjBob3Rwb2xhcml0eTsKCiAgdWludDhfdCB2 cjFob3RncGlvOwogIHVpbnQ4X3QgdnIxaG90cG9sYXJpdHk7CiAgdWludDhfdCBwYWRkaW5nMTsK ICB1aW50OF90IHBhZGRpbmcyOwoKICB1aW50OF90IGxlZHBpbjA7CiAgdWludDhfdCBsZWRwaW4x OwogIHVpbnQ4X3QgbGVkcGluMjsKICB1aW50OF90IHBhZGRpbmc4XzQ7CgogdWludDhfdCBwbGxn ZnhjbGtzcHJlYWRlbmFibGVkOwogdWludDhfdCBwbGxnZnhjbGtzcHJlYWRwZXJjZW50OwogdWlu dDE2X3QgcGxsZ2Z4Y2xrc3ByZWFkZnJlcTsKCiAgdWludDhfdCB1Y2xrc3ByZWFkZW5hYmxlZDsK ICB1aW50OF90IHVjbGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90IHVjbGtzcHJlYWRmcmVxOwoK ICB1aW50OF90IHNvY2Nsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhfdCBzb2NjbGtzcHJlYWRwZXJj ZW50OwogIHVpbnQxNl90IHNvY2Nsa3NwcmVhZGZyZXE7CgogdWludDhfdCBhY2dnZnhjbGtzcHJl YWRlbmFibGVkOwogdWludDhfdCBhY2dnZnhjbGtzcHJlYWRwZXJjZW50OwogdWludDE2X3QgYWNn Z2Z4Y2xrc3ByZWFkZnJlcTsKCiB1aW50OF90IFZyMl9JMkNfYWRkcmVzczsKIHVpbnQ4X3QgcGFk ZGluZ192cjJbM107CgogdWludDMyX3QgYm9hcmRyZXNlcnZlZFs5XTsKfTsKCgoKCgoKc3RydWN0 IGF0b21fc21jX2RwbV9pbmZvX3Y0XzMKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFk ZXIgdGFibGVfaGVhZGVyOwogIHVpbnQ4X3QgbGlxdWlkMV9pMmNfYWRkcmVzczsKICB1aW50OF90 IGxpcXVpZDJfaTJjX2FkZHJlc3M7CiAgdWludDhfdCB2cl9pMmNfYWRkcmVzczsKICB1aW50OF90 IHBseF9pMmNfYWRkcmVzczsKCiAgdWludDhfdCBsaXF1aWRfaTJjX2xpbmVzY2w7CiAgdWludDhf dCBsaXF1aWRfaTJjX2xpbmVzZGE7CiAgdWludDhfdCB2cl9pMmNfbGluZXNjbDsKICB1aW50OF90 IHZyX2kyY19saW5lc2RhOwoKICB1aW50OF90IHBseF9pMmNfbGluZXNjbDsKICB1aW50OF90IHBs eF9pMmNfbGluZXNkYTsKICB1aW50OF90IHZyc2Vuc29ycHJlc2VudDsKICB1aW50OF90IGxpcXVp ZHNlbnNvcnByZXNlbnQ7CgogIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwZ2Z4OwogIHVpbnQxNl90 IG1heHZvbHRhZ2VzdGVwc29jOwoKICB1aW50OF90IHZkZGdmeHZybWFwcGluZzsKICB1aW50OF90 IHZkZHNvY3ZybWFwcGluZzsKICB1aW50OF90IHZkZG1lbTB2cm1hcHBpbmc7CiAgdWludDhfdCB2 ZGRtZW0xdnJtYXBwaW5nOwoKICB1aW50OF90IGdmeHVsdnBoYXNlc2hlZGRpbmdtYXNrOwogIHVp bnQ4X3Qgc29jdWx2cGhhc2VzaGVkZGluZ21hc2s7CiAgdWludDhfdCBleHRlcm5hbHNlbnNvcnBy ZXNlbnQ7CiAgdWludDhfdCBwYWRkaW5nOF92OwoKICB1aW50MTZfdCBnZnhtYXhjdXJyZW50Owog IHVpbnQ4X3QgZ2Z4b2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnlnZng7CgogIHVp bnQxNl90IHNvY21heGN1cnJlbnQ7CiAgdWludDhfdCBzb2NvZmZzZXQ7CiAgdWludDhfdCBwYWRk aW5nX3RlbGVtZXRyeXNvYzsKCiAgdWludDE2X3QgbWVtMG1heGN1cnJlbnQ7CiAgdWludDhfdCBt ZW0wb2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnltZW0wOwoKICB1aW50MTZfdCBt ZW0xbWF4Y3VycmVudDsKICB1aW50OF90IG1lbTFvZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3Rl bGVtZXRyeW1lbTE7CgogIHVpbnQ4X3QgYWNkY2dwaW87CiAgdWludDhfdCBhY2RjcG9sYXJpdHk7 CiAgdWludDhfdCB2cjBob3RncGlvOwogIHVpbnQ4X3QgdnIwaG90cG9sYXJpdHk7CgogIHVpbnQ4 X3QgdnIxaG90Z3BpbzsKICB1aW50OF90IHZyMWhvdHBvbGFyaXR5OwogIHVpbnQ4X3QgcGFkZGlu ZzE7CiAgdWludDhfdCBwYWRkaW5nMjsKCiAgdWludDhfdCBsZWRwaW4wOwogIHVpbnQ4X3QgbGVk cGluMTsKICB1aW50OF90IGxlZHBpbjI7CiAgdWludDhfdCBwYWRkaW5nOF80OwoKICB1aW50OF90 IHBsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhfdCBwbGxnZnhjbGtzcHJlYWRwZXJjZW50 OwogIHVpbnQxNl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7CgogIHVpbnQ4X3QgdWNsa3NwcmVhZGVu YWJsZWQ7CiAgdWludDhfdCB1Y2xrc3ByZWFkcGVyY2VudDsKICB1aW50MTZfdCB1Y2xrc3ByZWFk ZnJlcTsKCiAgdWludDhfdCBmY2xrc3ByZWFkZW5hYmxlZDsKICB1aW50OF90IGZjbGtzcHJlYWRw ZXJjZW50OwogIHVpbnQxNl90IGZjbGtzcHJlYWRmcmVxOwoKICB1aW50OF90IGZsbGdmeGNsa3Nw cmVhZGVuYWJsZWQ7CiAgdWludDhfdCBmbGxnZnhjbGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90 IGZsbGdmeGNsa3NwcmVhZGZyZXE7CgogIHVpbnQzMl90IGJvYXJkcmVzZXJ2ZWRbMTBdOwp9OwoK c3RydWN0IHNtdWRwbV9pMmNjb250cm9sbGVyY29uZmlnX3QgewogIHVpbnQzMl90IGVuYWJsZWQ7 CiAgdWludDMyX3Qgc2xhdmVhZGRyZXNzOwogIHVpbnQzMl90IGNvbnRyb2xsZXJwb3J0OwogIHVp bnQzMl90IGNvbnRyb2xsZXJuYW1lOwogIHVpbnQzMl90IHRoZXJtYWx0aHJvdHRsZXI7CiAgdWlu dDMyX3QgaTJjcHJvdG9jb2w7CiAgdWludDMyX3QgaTJjc3BlZWQ7Cn07CgpzdHJ1Y3QgYXRvbV9z bWNfZHBtX2luZm9fdjRfNAp7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJs ZV9oZWFkZXI7CiAgdWludDMyX3QgaTJjX3BhZGRpbmdbM107CgogIHVpbnQxNl90IG1heHZvbHRh Z2VzdGVwZ2Z4OwogIHVpbnQxNl90IG1heHZvbHRhZ2VzdGVwc29jOwoKICB1aW50OF90IHZkZGdm eHZybWFwcGluZzsKICB1aW50OF90IHZkZHNvY3ZybWFwcGluZzsKICB1aW50OF90IHZkZG1lbTB2 cm1hcHBpbmc7CiAgdWludDhfdCB2ZGRtZW0xdnJtYXBwaW5nOwoKICB1aW50OF90IGdmeHVsdnBo YXNlc2hlZGRpbmdtYXNrOwogIHVpbnQ4X3Qgc29jdWx2cGhhc2VzaGVkZGluZ21hc2s7CiAgdWlu dDhfdCBleHRlcm5hbHNlbnNvcnByZXNlbnQ7CiAgdWludDhfdCBwYWRkaW5nOF92OwoKICB1aW50 MTZfdCBnZnhtYXhjdXJyZW50OwogIHVpbnQ4X3QgZ2Z4b2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGlu Z190ZWxlbWV0cnlnZng7CgogIHVpbnQxNl90IHNvY21heGN1cnJlbnQ7CiAgdWludDhfdCBzb2Nv ZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeXNvYzsKCiAgdWludDE2X3QgbWVtMG1h eGN1cnJlbnQ7CiAgdWludDhfdCBtZW0wb2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0 cnltZW0wOwoKICB1aW50MTZfdCBtZW0xbWF4Y3VycmVudDsKICB1aW50OF90IG1lbTFvZmZzZXQ7 CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeW1lbTE7CgoKICB1aW50OF90IGFjZGNncGlvOwog IHVpbnQ4X3QgYWNkY3BvbGFyaXR5OwogIHVpbnQ4X3QgdnIwaG90Z3BpbzsKICB1aW50OF90IHZy MGhvdHBvbGFyaXR5OwoKICB1aW50OF90IHZyMWhvdGdwaW87CiAgdWludDhfdCB2cjFob3Rwb2xh cml0eTsKICB1aW50OF90IHBhZGRpbmcxOwogIHVpbnQ4X3QgcGFkZGluZzI7CgoKICB1aW50OF90 IGxlZHBpbjA7CiAgdWludDhfdCBsZWRwaW4xOwogIHVpbnQ4X3QgbGVkcGluMjsKICB1aW50OF90 IHBhZGRpbmc4XzQ7CgoKICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhf dCBwbGxnZnhjbGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90IHBsbGdmeGNsa3NwcmVhZGZyZXE7 CgoKICB1aW50OF90IHVjbGtzcHJlYWRlbmFibGVkOwogIHVpbnQ4X3QgdWNsa3NwcmVhZHBlcmNl bnQ7CiAgdWludDE2X3QgdWNsa3NwcmVhZGZyZXE7CgoKICB1aW50OF90IGZjbGtzcHJlYWRlbmFi bGVkOwogIHVpbnQ4X3QgZmNsa3NwcmVhZHBlcmNlbnQ7CiAgdWludDE2X3QgZmNsa3NwcmVhZGZy ZXE7CgoKICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhfdCBmbGxnZnhj bGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90IGZsbGdmeGNsa3NwcmVhZGZyZXE7CgoKICBzdHJ1 Y3Qgc211ZHBtX2kyY2NvbnRyb2xsZXJjb25maWdfdCBpMmNjb250cm9sbGVyc1s3XTsKCgogIHVp bnQzMl90IGJvYXJkcmVzZXJ2ZWRbMTBdOwp9OwoKZW51bSBzbXVkcG1fdjRfNV9pMmNjb250cm9s bGVybmFtZV9lewogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9WUl9HRlggPSAwLAog ICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9WUl9TT0MsCiAgICBTTUNfVjRfNV9JMkNf Q09OVFJPTExFUl9OQU1FX1ZSX1ZERENJLAogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFN RV9WUl9NVkRELAogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9MSVFVSUQwLAogICAg U01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9MSVFVSUQxLAogICAgU01DX1Y0XzVfSTJDX0NP TlRST0xMRVJfTkFNRV9QTFgsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9OQU1FX1NQQVJF LAogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfTkFNRV9DT1VOVCwKfTsKCmVudW0gc211ZHBt X3Y0XzVfaTJjY29udHJvbGxlcnRocm90dGxlcl9lewogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xM RVJfVEhST1RUTEVSX1RZUEVfTk9ORSA9IDAsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9U SFJPVFRMRVJfVlJfR0ZYLAogICAgU01DX1Y0XzVfSTJDX0NPTlRST0xMRVJfVEhST1RUTEVSX1ZS X1NPQywKICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9UVExFUl9WUl9WRERDSSwKICAg IFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9UVExFUl9WUl9NVkRELAogICAgU01DX1Y0XzVf STJDX0NPTlRST0xMRVJfVEhST1RUTEVSX0xJUVVJRDAsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJP TExFUl9USFJPVFRMRVJfTElRVUlEMSwKICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1RIUk9U VExFUl9QTFgsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9USFJPVFRMRVJfQ09VTlQsCn07 CgplbnVtIHNtdWRwbV92NF81X2kyY2NvbnRyb2xsZXJwcm90b2NvbF9lewogICAgU01DX1Y0XzVf STJDX0NPTlRST0xMRVJfUFJPVE9DT0xfVlJfMCwKICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVS X1BST1RPQ09MX1ZSXzEsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9UT0NPTF9UTVBf MCwKICAgIFNNQ19WNF81X0kyQ19DT05UUk9MTEVSX1BST1RPQ09MX1RNUF8xLAogICAgU01DX1Y0 XzVfSTJDX0NPTlRST0xMRVJfUFJPVE9DT0xfU1BBUkVfMCwKICAgIFNNQ19WNF81X0kyQ19DT05U Uk9MTEVSX1BST1RPQ09MX1NQQVJFXzEsCiAgICBTTUNfVjRfNV9JMkNfQ09OVFJPTExFUl9QUk9U T0NPTF9DT1VOVCwKfTsKCnN0cnVjdCBzbXVkcG1faTJjX2NvbnRyb2xsZXJfY29uZmlnX3YyCnsK ICAgIHVpbnQ4X3QgRW5hYmxlZDsKICAgIHVpbnQ4X3QgU3BlZWQ7CiAgICB1aW50OF90IFBhZGRp bmdbMl07CiAgICB1aW50MzJfdCBTbGF2ZUFkZHJlc3M7CiAgICB1aW50OF90IENvbnRyb2xsZXJQ b3J0OwogICAgdWludDhfdCBDb250cm9sbGVyTmFtZTsKICAgIHVpbnQ4X3QgVGhlcm1hbFRocm90 dGVyOwogICAgdWludDhfdCBJMmNQcm90b2NvbDsKfTsKCnN0cnVjdCBhdG9tX3NtY19kcG1faW5m b192NF81CnsKICBzdHJ1Y3QgYXRvbV9jb21tb25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsK CgogIHN0cnVjdCBzbXVkcG1faTJjX2NvbnRyb2xsZXJfY29uZmlnX3YyIEkyY0NvbnRyb2xsZXJz WzhdOwoKCiAgdWludDE2X3QgTWF4Vm9sdGFnZVN0ZXBHZng7CiAgdWludDE2X3QgTWF4Vm9sdGFn ZVN0ZXBTb2M7CgogIHVpbnQ4X3QgVmRkR2Z4VnJNYXBwaW5nOwogIHVpbnQ4X3QgVmRkU29jVnJN YXBwaW5nOwogIHVpbnQ4X3QgVmRkTWVtMFZyTWFwcGluZzsKICB1aW50OF90IFZkZE1lbTFWck1h cHBpbmc7CgogIHVpbnQ4X3QgR2Z4VWx2UGhhc2VTaGVkZGluZ01hc2s7CiAgdWludDhfdCBTb2NV bHZQaGFzZVNoZWRkaW5nTWFzazsKICB1aW50OF90IEV4dGVybmFsU2Vuc29yUHJlc2VudDsKICB1 aW50OF90IFBhZGRpbmc4X1Y7CgoKICB1aW50MTZfdCBHZnhNYXhDdXJyZW50OwogIHVpbnQ4X3Qg R2Z4T2Zmc2V0OwogIHVpbnQ4X3QgUGFkZGluZ19UZWxlbWV0cnlHZng7CiAgdWludDE2X3QgU29j TWF4Q3VycmVudDsKICB1aW50OF90IFNvY09mZnNldDsKICB1aW50OF90IFBhZGRpbmdfVGVsZW1l dHJ5U29jOwoKICB1aW50MTZfdCBNZW0wTWF4Q3VycmVudDsKICB1aW50OF90IE1lbTBPZmZzZXQ7 CiAgdWludDhfdCBQYWRkaW5nX1RlbGVtZXRyeU1lbTA7CgogIHVpbnQxNl90IE1lbTFNYXhDdXJy ZW50OwogIHVpbnQ4X3QgTWVtMU9mZnNldDsKICB1aW50OF90IFBhZGRpbmdfVGVsZW1ldHJ5TWVt MTsKCgogIHVpbnQ4X3QgQWNEY0dwaW87CiAgdWludDhfdCBBY0RjUG9sYXJpdHk7CiAgdWludDhf dCBWUjBIb3RHcGlvOwogIHVpbnQ4X3QgVlIwSG90UG9sYXJpdHk7CgogIHVpbnQ4X3QgVlIxSG90 R3BpbzsKICB1aW50OF90IFZSMUhvdFBvbGFyaXR5OwogIHVpbnQ4X3QgR3RockdwaW87CiAgdWlu dDhfdCBHdGhyUG9sYXJpdHk7CgoKICB1aW50OF90IExlZFBpbjA7CiAgdWludDhfdCBMZWRQaW4x OwogIHVpbnQ4X3QgTGVkUGluMjsKICB1aW50OF90IHBhZGRpbmc4XzQ7CgoKICB1aW50OF90IFBs bEdmeGNsa1NwcmVhZEVuYWJsZWQ7CiAgdWludDhfdCBQbGxHZnhjbGtTcHJlYWRQZXJjZW50Owog IHVpbnQxNl90IFBsbEdmeGNsa1NwcmVhZEZyZXE7CgoKICB1aW50OF90IERmbGxHZnhjbGtTcHJl YWRFbmFibGVkOwogIHVpbnQ4X3QgRGZsbEdmeGNsa1NwcmVhZFBlcmNlbnQ7CiAgdWludDE2X3Qg RGZsbEdmeGNsa1NwcmVhZEZyZXE7CgoKICB1aW50OF90IFVjbGtTcHJlYWRFbmFibGVkOwogIHVp bnQ4X3QgVWNsa1NwcmVhZFBlcmNlbnQ7CiAgdWludDE2X3QgVWNsa1NwcmVhZEZyZXE7CgoKICB1 aW50OF90IFNvY2xrU3ByZWFkRW5hYmxlZDsKICB1aW50OF90IFNvY2Nsa1NwcmVhZFBlcmNlbnQ7 CiAgdWludDE2X3QgU29jY2xrU3ByZWFkRnJlcTsKCgogIHVpbnQxNl90IFRvdGFsQm9hcmRQb3dl cjsKICB1aW50MTZfdCBCb2FyZFBhZGRpbmc7CgoKICB1aW50MzJfdCBNdmRkUmF0aW87CgogIHVp bnQzMl90IEJvYXJkUmVzZXJ2ZWRbOV07Cgp9OwoKc3RydWN0IGF0b21fc21jX2RwbV9pbmZvX3Y0 XzYKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwoKICB1 aW50MzJfdCBpMmNfcGFkZGluZ1szXTsKCiAgdWludDE2X3QgbWF4dm9sdGFnZXN0ZXBnZng7CiAg dWludDE2X3QgbWF4dm9sdGFnZXN0ZXBzb2M7CgogIHVpbnQ4X3QgdmRkZ2Z4dnJtYXBwaW5nOwog IHVpbnQ4X3QgdmRkc29jdnJtYXBwaW5nOwogIHVpbnQ4X3QgdmRkbWVtdnJtYXBwaW5nOwogIHVp bnQ4X3QgYm9hcmR2cm1hcHBpbmc7CgogIHVpbnQ4X3QgZ2Z4dWx2cGhhc2VzaGVkZGluZ21hc2s7 CiAgdWludDhfdCBleHRlcm5hbHNlbnNvcnByZXNlbnQ7CiAgdWludDhfdCBwYWRkaW5nOF92WzJd OwoKCiAgdWludDE2X3QgZ2Z4bWF4Y3VycmVudDsKICB1aW50OF90IGdmeG9mZnNldDsKICB1aW50 OF90IHBhZGRpbmdfdGVsZW1ldHJ5Z2Z4OwoKICB1aW50MTZfdCBzb2NtYXhjdXJyZW50OwogIHVp bnQ4X3Qgc29jb2Zmc2V0OwogIHVpbnQ4X3QgcGFkZGluZ190ZWxlbWV0cnlzb2M7CgogIHVpbnQx Nl90IG1lbW1heGN1cnJlbnQ7CiAgdWludDhfdCBtZW1vZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5n X3RlbGVtZXRyeW1lbTsKCiAgdWludDE2X3QgYm9hcmRtYXhjdXJyZW50OwogIHVpbnQ4X3QgYm9h cmRvZmZzZXQ7CiAgdWludDhfdCBwYWRkaW5nX3RlbGVtZXRyeWJvYXJkaW5wdXQ7CgoKICB1aW50 OF90IHZyMGhvdGdwaW87CiAgdWludDhfdCB2cjBob3Rwb2xhcml0eTsKICB1aW50OF90IHZyMWhv dGdwaW87CiAgdWludDhfdCB2cjFob3Rwb2xhcml0eTsKCgogIHVpbnQ4X3QgcGxsZ2Z4Y2xrc3By ZWFkZW5hYmxlZDsKICB1aW50OF90IHBsbGdmeGNsa3NwcmVhZHBlcmNlbnQ7CiAgdWludDE2X3Qg cGxsZ2Z4Y2xrc3ByZWFkZnJlcTsKCgogIHVpbnQ4X3QgdWNsa3NwcmVhZGVuYWJsZWQ7CiAgdWlu dDhfdCB1Y2xrc3ByZWFkcGVyY2VudDsKICB1aW50MTZfdCB1Y2xrc3ByZWFkZnJlcTsKCgogIHVp bnQ4X3QgZmNsa3NwcmVhZGVuYWJsZWQ7CiAgdWludDhfdCBmY2xrc3ByZWFkcGVyY2VudDsKICB1 aW50MTZfdCBmY2xrc3ByZWFkZnJlcTsKCgoKICB1aW50OF90IGZsbGdmeGNsa3NwcmVhZGVuYWJs ZWQ7CiAgdWludDhfdCBmbGxnZnhjbGtzcHJlYWRwZXJjZW50OwogIHVpbnQxNl90IGZsbGdmeGNs a3NwcmVhZGZyZXE7CgoKICBzdHJ1Y3Qgc211ZHBtX2kyY19jb250cm9sbGVyX2NvbmZpZ192MiBp MmNjb250cm9sbGVyc1s4XTsKCgogIHVpbnQzMl90IG1lbW9yeWNoYW5uZWxlbmFibGVkOwoKICB1 aW50OF90IGRyYW1iaXR3aWR0aDsKICB1aW50OF90IHBhZGRpbmdtZW1bM107CgoKICB1aW50MTZf dCB0b3RhbGJvYXJkcG93ZXI7CiAgdWludDE2X3QgYm9hcmRwYWRkaW5nOwoKCiAgdWludDhfdCB4 Z21pbGlua3NwZWVkWzRdOwogIHVpbnQ4X3QgeGdtaWxpbmt3aWR0aFs0XTsKCiAgdWludDE2X3Qg eGdtaWZjbGtmcmVxWzRdOwogIHVpbnQxNl90IHhnbWlzb2N2b2x0YWdlWzRdOwoKCiAgdWludDMy X3QgYm9hcmRyZXNlcnZlZFsxMF07Cn07CgoKCgoKCnN0cnVjdCBhdG9tX2FzaWNfcHJvZmlsaW5n X2luZm9fdjRfMQp7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFk ZXI7CiAgdWludDMyX3QgbWF4dmRkYzsKICB1aW50MzJfdCBtaW52ZGRjOwogIHVpbnQzMl90IGF2 ZnNfbWVhbm5zaWdtYV9hY29udGFudDA7CiAgdWludDMyX3QgYXZmc19tZWFubnNpZ21hX2Fjb250 YW50MTsKICB1aW50MzJfdCBhdmZzX21lYW5uc2lnbWFfYWNvbnRhbnQyOwogIHVpbnQxNl90IGF2 ZnNfbWVhbm5zaWdtYV9kY190b2xfc2lnbWE7CiAgdWludDE2X3QgYXZmc19tZWFubnNpZ21hX3Bs YXRmb3JtX21lYW47CiAgdWludDE2X3QgYXZmc19tZWFubnNpZ21hX3BsYXRmb3JtX3NpZ21hOwog IHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3NvZmZfYTA7CiAgdWludDMyX3QgZ2JfdmRyb29w X3RhYmxlX2Nrc29mZl9hMTsKICB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tzb2ZmX2EyOwog IHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMDsKICB1aW50MzJfdCBnYl92ZHJvb3Bf dGFibGVfY2tzb25fYTE7CiAgdWludDMyX3QgZ2JfdmRyb29wX3RhYmxlX2Nrc29uX2EyOwogIHVp bnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29mZl9tMTsKICB1aW50MzJfdCBhdmZzZ2JfZnVz ZV90YWJsZV9ja3NvZmZfbTI7CiAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb2ZmX2I7 CiAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb25fbTE7CiAgdWludDMyX3QgYXZmc2di X2Z1c2VfdGFibGVfY2tzb25fbTI7CiAgdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb25f YjsKICB1aW50MTZfdCBtYXhfdm9sdGFnZV8wXzI1bXY7CiAgdWludDhfdCBlbmFibGVfZ2JfdmRy b29wX3RhYmxlX2Nrc29mZjsKICB1aW50OF90IGVuYWJsZV9nYl92ZHJvb3BfdGFibGVfY2tzb247 CiAgdWludDhfdCBlbmFibGVfZ2JfZnVzZV90YWJsZV9ja3NvZmY7CiAgdWludDhfdCBlbmFibGVf Z2JfZnVzZV90YWJsZV9ja3NvbjsKICB1aW50MTZfdCBwc21fYWdlX2NvbWZhY3RvcjsKICB1aW50 OF90IGVuYWJsZV9hcHBseV9hdmZzX2Nrc29mZl92b2x0YWdlOwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7 CiAgdWludDMyX3QgZGlzcGNsazJnZnhjbGtfYTsKICB1aW50MzJfdCBkaXNwY2xrMmdmeGNsa19i OwogIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2M7CiAgdWludDMyX3QgcGl4Y2xrMmdmeGNsa19h OwogIHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYjsKICB1aW50MzJfdCBwaXhjbGsyZ2Z4Y2xrX2M7 CiAgdWludDMyX3QgZGNlZmNsazJnZnhjbGtfYTsKICB1aW50MzJfdCBkY2VmY2xrMmdmeGNsa19i OwogIHVpbnQzMl90IGRjZWZjbGsyZ2Z4Y2xrX2M7CiAgdWludDMyX3QgcGh5Y2xrMmdmeGNsa19h OwogIHVpbnQzMl90IHBoeWNsazJnZnhjbGtfYjsKICB1aW50MzJfdCBwaHljbGsyZ2Z4Y2xrX2M7 Cn07CgpzdHJ1Y3QgYXRvbV9hc2ljX3Byb2ZpbGluZ19pbmZvX3Y0XzIgewogc3RydWN0IGF0b21f Y29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7CiB1aW50MzJfdCBtYXh2ZGRjOwogdWlu dDMyX3QgbWludmRkYzsKIHVpbnQzMl90IGF2ZnNfbWVhbm5zaWdtYV9hY29udGFudDA7CiB1aW50 MzJfdCBhdmZzX21lYW5uc2lnbWFfYWNvbnRhbnQxOwogdWludDMyX3QgYXZmc19tZWFubnNpZ21h X2Fjb250YW50MjsKIHVpbnQxNl90IGF2ZnNfbWVhbm5zaWdtYV9kY190b2xfc2lnbWE7CiB1aW50 MTZfdCBhdmZzX21lYW5uc2lnbWFfcGxhdGZvcm1fbWVhbjsKIHVpbnQxNl90IGF2ZnNfbWVhbm5z aWdtYV9wbGF0Zm9ybV9zaWdtYTsKIHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3NvZmZfYTA7 CiB1aW50MzJfdCBnYl92ZHJvb3BfdGFibGVfY2tzb2ZmX2ExOwogdWludDMyX3QgZ2JfdmRyb29w X3RhYmxlX2Nrc29mZl9hMjsKIHVpbnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMDsKIHVp bnQzMl90IGdiX3Zkcm9vcF90YWJsZV9ja3Nvbl9hMTsKIHVpbnQzMl90IGdiX3Zkcm9vcF90YWJs ZV9ja3Nvbl9hMjsKIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29mZl9tMTsKIHVpbnQz Ml90IGF2ZnNnYl9mdXNlX3RhYmxlX2Nrc29mZl9tMjsKIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3Rh YmxlX2Nrc29mZl9iOwogdWludDMyX3QgYXZmc2diX2Z1c2VfdGFibGVfY2tzb25fbTE7CiB1aW50 MzJfdCBhdmZzZ2JfZnVzZV90YWJsZV9ja3Nvbl9tMjsKIHVpbnQzMl90IGF2ZnNnYl9mdXNlX3Rh YmxlX2Nrc29uX2I7CiB1aW50MTZfdCBtYXhfdm9sdGFnZV8wXzI1bXY7CiB1aW50OF90IGVuYWJs ZV9nYl92ZHJvb3BfdGFibGVfY2tzb2ZmOwogdWludDhfdCBlbmFibGVfZ2JfdmRyb29wX3RhYmxl X2Nrc29uOwogdWludDhfdCBlbmFibGVfZ2JfZnVzZV90YWJsZV9ja3NvZmY7CiB1aW50OF90IGVu YWJsZV9nYl9mdXNlX3RhYmxlX2Nrc29uOwogdWludDE2X3QgcHNtX2FnZV9jb21mYWN0b3I7CiB1 aW50OF90IGVuYWJsZV9hcHBseV9hdmZzX2Nrc29mZl92b2x0YWdlOwogdWludDhfdCByZXNlcnZl ZDsKIHVpbnQzMl90IGRpc3BjbGsyZ2Z4Y2xrX2E7CiB1aW50MzJfdCBkaXNwY2xrMmdmeGNsa19i OwogdWludDMyX3QgZGlzcGNsazJnZnhjbGtfYzsKIHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYTsK IHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYjsKIHVpbnQzMl90IHBpeGNsazJnZnhjbGtfYzsKIHVp bnQzMl90IGRjZWZjbGsyZ2Z4Y2xrX2E7CiB1aW50MzJfdCBkY2VmY2xrMmdmeGNsa19iOwogdWlu dDMyX3QgZGNlZmNsazJnZnhjbGtfYzsKIHVpbnQzMl90IHBoeWNsazJnZnhjbGtfYTsKIHVpbnQz Ml90IHBoeWNsazJnZnhjbGtfYjsKIHVpbnQzMl90IHBoeWNsazJnZnhjbGtfYzsKIHVpbnQzMl90 IGFjZ19nYl92ZHJvb3BfdGFibGVfYTA7CiB1aW50MzJfdCBhY2dfZ2JfdmRyb29wX3RhYmxlX2Ex OwogdWludDMyX3QgYWNnX2diX3Zkcm9vcF90YWJsZV9hMjsKIHVpbnQzMl90IGFjZ19hdmZzZ2Jf ZnVzZV90YWJsZV9tMTsKIHVpbnQzMl90IGFjZ19hdmZzZ2JfZnVzZV90YWJsZV9tMjsKIHVpbnQz Ml90IGFjZ19hdmZzZ2JfZnVzZV90YWJsZV9iOwogdWludDhfdCBlbmFibGVfYWNnX2diX3Zkcm9v cF90YWJsZTsKIHVpbnQ4X3QgZW5hYmxlX2FjZ19nYl9mdXNlX3RhYmxlOwogdWludDMyX3QgYWNn X2Rpc3BjbGsyZ2Z4Y2xrX2E7CiB1aW50MzJfdCBhY2dfZGlzcGNsazJnZnhjbGtfYjsKIHVpbnQz Ml90IGFjZ19kaXNwY2xrMmdmeGNsa19jOwogdWludDMyX3QgYWNnX3BpeGNsazJnZnhjbGtfYTsK IHVpbnQzMl90IGFjZ19waXhjbGsyZ2Z4Y2xrX2I7CiB1aW50MzJfdCBhY2dfcGl4Y2xrMmdmeGNs a19jOwogdWludDMyX3QgYWNnX2RjZWZjbGsyZ2Z4Y2xrX2E7CiB1aW50MzJfdCBhY2dfZGNlZmNs azJnZnhjbGtfYjsKIHVpbnQzMl90IGFjZ19kY2VmY2xrMmdmeGNsa19jOwogdWludDMyX3QgYWNn X3BoeWNsazJnZnhjbGtfYTsKIHVpbnQzMl90IGFjZ19waHljbGsyZ2Z4Y2xrX2I7CiB1aW50MzJf dCBhY2dfcGh5Y2xrMmdmeGNsa19jOwp9OwoKCgoKCgpzdHJ1Y3QgYXRvbV9tdWx0aW1lZGlhX2lu Zm9fdjJfMQp7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJsZV9oZWFkZXI7 CiAgdWludDhfdCB1dmRpcF9taW5fdmVyOwogIHVpbnQ4X3QgdXZkaXBfbWF4X3ZlcjsKICB1aW50 OF90IHZjZWlwX21pbl92ZXI7CiAgdWludDhfdCB2Y2VpcF9tYXhfdmVyOwogIHVpbnQxNl90IHV2 ZF9lbmNfbWF4X2lucHV0X3dpZHRoX3BpeGVsczsKICB1aW50MTZfdCB1dmRfZW5jX21heF9pbnB1 dF9oZWlnaHRfcGl4ZWxzOwogIHVpbnQxNl90IHZjZV9lbmNfbWF4X2lucHV0X3dpZHRoX3BpeGVs czsKICB1aW50MTZfdCB2Y2VfZW5jX21heF9pbnB1dF9oZWlnaHRfcGl4ZWxzOwogIHVpbnQzMl90 IHV2ZF9lbmNfbWF4X2JhbmR3aWR0aDsKICB1aW50MzJfdCB2Y2VfZW5jX21heF9iYW5kd2lkdGg7 Cn07CgoKCgoKCgpzdHJ1Y3QgYXRvbV91bWNfaW5mb192M18xCnsKICBzdHJ1Y3QgYXRvbV9jb21t b25fdGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50MzJfdCB1Y29kZV92ZXJzaW9uOwog IHVpbnQzMl90IHVjb2RlX3JvbV9zdGFydGFkZHI7CiAgdWludDMyX3QgdWNvZGVfbGVuZ3RoOwog IHVpbnQxNl90IHVtY19yZWdfaW5pdF9vZmZzZXQ7CiAgdWludDE2X3QgY3VzdG9tZXJfdWNvZGVf bmFtZV9vZmZzZXQ7CiAgdWludDE2X3QgbWNsa19zc19wZXJjZW50YWdlOwogIHVpbnQxNl90IG1j bGtfc3NfcmF0ZV8xMGh6OwogIHVpbnQ4X3QgdW1jaXBfbWluX3ZlcjsKICB1aW50OF90IHVtY2lw X21heF92ZXI7CiAgdWludDhfdCB2cmFtX3R5cGU7CiAgdWludDhfdCB1bWNfY29uZmlnOwogIHVp bnQzMl90IG1lbV9yZWZjbGtfMTBraHo7Cn07CgoKZW51bSBhdG9tX3VtY19jb25maWdfZGVmIHsK ICBVTUNfQ09ORklHX19FTkFCTEVfMUtCX0lOVEVSTEVBVkVfTU9ERSA9IDB4MDAwMDAwMDEsCiAg VU1DX0NPTkZJR19fREVGQVVMVF9NRU1fRUNDX0VOQUJMRSA9IDB4MDAwMDAwMDIsCiAgVU1DX0NP TkZJR19fRU5BQkxFX0hCTV9MQU5FX1JFUEFJUiA9IDB4MDAwMDAwMDQsCiAgVU1DX0NPTkZJR19f RU5BQkxFX0JBTktfSEFSVkVTVElORyA9IDB4MDAwMDAwMDgsCiAgVU1DX0NPTkZJR19fRU5BQkxF X1BIWV9SRUlOSVQgPSAweDAwMDAwMDEwLAogIFVNQ19DT05GSUdfX0RJU0FCTEVfVUNPREVfQ0hL U1RBVFVTID0gMHgwMDAwMDAyMCwKfTsKCnN0cnVjdCBhdG9tX3VtY19pbmZvX3YzXzIKewogIHN0 cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90IHVj b2RlX3ZlcnNpb247CiAgdWludDMyX3QgdWNvZGVfcm9tX3N0YXJ0YWRkcjsKICB1aW50MzJfdCB1 Y29kZV9sZW5ndGg7CiAgdWludDE2X3QgdW1jX3JlZ19pbml0X29mZnNldDsKICB1aW50MTZfdCBj dXN0b21lcl91Y29kZV9uYW1lX29mZnNldDsKICB1aW50MTZfdCBtY2xrX3NzX3BlcmNlbnRhZ2U7 CiAgdWludDE2X3QgbWNsa19zc19yYXRlXzEwaHo7CiAgdWludDhfdCB1bWNpcF9taW5fdmVyOwog IHVpbnQ4X3QgdW1jaXBfbWF4X3ZlcjsKICB1aW50OF90IHZyYW1fdHlwZTsKICB1aW50OF90IHVt Y19jb25maWc7CiAgdWludDMyX3QgbWVtX3JlZmNsa18xMGtoejsKICB1aW50MzJfdCBwc3RhdGVf dWNsa18xMGtoels0XTsKICB1aW50MTZfdCB1bWNnb2xkZW5vZmZzZXQ7CiAgdWludDE2X3QgZGVu c2l0eWdvbGRlbm9mZnNldDsKfTsKCnN0cnVjdCBhdG9tX3VtY19pbmZvX3YzXzMKewogIHN0cnVj dCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVfaGVhZGVyOwogIHVpbnQzMl90IHVjb2Rl X3Jlc2VydmVkOwogIHVpbnQzMl90IHVjb2RlX3JvbV9zdGFydGFkZHI7CiAgdWludDMyX3QgdWNv ZGVfbGVuZ3RoOwogIHVpbnQxNl90IHVtY19yZWdfaW5pdF9vZmZzZXQ7CiAgdWludDE2X3QgY3Vz dG9tZXJfdWNvZGVfbmFtZV9vZmZzZXQ7CiAgdWludDE2X3QgbWNsa19zc19wZXJjZW50YWdlOwog IHVpbnQxNl90IG1jbGtfc3NfcmF0ZV8xMGh6OwogIHVpbnQ4X3QgdW1jaXBfbWluX3ZlcjsKICB1 aW50OF90IHVtY2lwX21heF92ZXI7CiAgdWludDhfdCB2cmFtX3R5cGU7CiAgdWludDhfdCB1bWNf Y29uZmlnOwogIHVpbnQzMl90IG1lbV9yZWZjbGtfMTBraHo7CiAgdWludDMyX3QgcHN0YXRlX3Vj bGtfMTBraHpbNF07CiAgdWludDE2X3QgdW1jZ29sZGVub2Zmc2V0OwogIHVpbnQxNl90IGRlbnNp dHlnb2xkZW5vZmZzZXQ7CiAgdWludDMyX3QgcmVzZXJ2ZWRbNF07Cn07CgoKCgoKCnN0cnVjdCBh dG9tX3ZyYW1fbW9kdWxlX3Y5IHsKCiAgdWludDMyX3QgbWVtb3J5X3NpemU7CiAgdWludDMyX3Qg Y2hhbm5lbF9lbmFibGU7CiAgdWludDMyX3QgbWF4X21lbV9jbGs7CiAgdWludDE2X3QgcmVzZXJ2 ZWRbM107CiAgdWludDE2X3QgbWVtX3ZvbHRhZ2U7CiAgdWludDE2X3QgdnJhbV9tb2R1bGVfc2l6 ZTsKICB1aW50OF90IGV4dF9tZW1vcnlfaWQ7CiAgdWludDhfdCBtZW1vcnlfdHlwZTsKICB1aW50 OF90IGNoYW5uZWxfbnVtOwogIHVpbnQ4X3QgY2hhbm5lbF93aWR0aDsKICB1aW50OF90IGRlbnNp dHk7CiAgdWludDhfdCB0dW5uaW5nc2V0X2lkOwogIHVpbnQ4X3QgdmVuZGVyX3Jldl9pZDsKICB1 aW50OF90IHJlZnJlc2hyYXRlOwogIHVpbnQ4X3QgaGJtX3Zlbl9yZXZfaWQ7CiAgdWludDhfdCB2 cmFtX3JzZDI7CiAgY2hhciBkcmFtX3Buc3RyaW5nWzIwXTsKfTsKCnN0cnVjdCBhdG9tX3ZyYW1f aW5mb19oZWFkZXJfdjJfMyB7CiAgc3RydWN0IGF0b21fY29tbW9uX3RhYmxlX2hlYWRlciB0YWJs ZV9oZWFkZXI7CiAgdWludDE2X3QgbWVtX2FkanVzdF90YmxvZmZzZXQ7CiAgdWludDE2X3QgbWVt X2Nsa19wYXRjaF90YmxvZmZzZXQ7CiAgdWludDE2X3QgbWNfYWRqdXN0X3BlcnRpbGVfdGJsb2Zm c2V0OwogIHVpbnQxNl90IG1jX3BoeWluaXRfdGJsb2Zmc2V0OwogIHVpbnQxNl90IGRyYW1fZGF0 YV9yZW1hcF90YmxvZmZzZXQ7CiAgdWludDE2X3QgdG1yc19zZXFfb2Zmc2V0OwogIHVpbnQxNl90 IHBvc3RfdWNvZGVfaW5pdF9vZmZzZXQ7CiAgdWludDE2X3QgdnJhbV9yc2QyOwogIHVpbnQ4X3Qg dnJhbV9tb2R1bGVfbnVtOwogIHVpbnQ4X3QgdW1jaXBfbWluX3ZlcjsKICB1aW50OF90IHVtY2lw X21heF92ZXI7CiAgdWludDhfdCBtY19waHlfdGlsZV9udW07CiAgc3RydWN0IGF0b21fdnJhbV9t b2R1bGVfdjkgdnJhbV9tb2R1bGVbMTZdOwp9OwoKc3RydWN0IGF0b21fdW1jX3JlZ2lzdGVyX2Fk ZHJfaW5mb3sKICB1aW50MzJfdCB1bWNfcmVnaXN0ZXJfYWRkcjoyNDsKICB1aW50MzJfdCB1bWNf cmVnX3R5cGVfaW5kOjE7CiAgdWludDMyX3QgdW1jX3JlZ19yc3ZkOjc7Cn07CgoKZW51bSBhdG9t X3VtY19yZWdpc3Rlcl9hZGRyX2luZm9fZmxhZ3sKICBiM0FUT01fVU1DX1JFR19BRERfSU5GT19J TkRJUkVDVF9BQ0NFU1MgPTB4MDEsCn07Cgp1bmlvbiBhdG9tX3VtY19yZWdpc3Rlcl9hZGRyX2lu Zm9fYWNjZXNzCnsKICBzdHJ1Y3QgYXRvbV91bWNfcmVnaXN0ZXJfYWRkcl9pbmZvIHVtY19yZWdf YWRkcjsKICB1aW50MzJfdCB1MzJ1bWNfcmVnX2FkZHI7Cn07CgpzdHJ1Y3QgYXRvbV91bWNfcmVn X3NldHRpbmdfaWRfY29uZmlnewogIHVpbnQzMl90IG1lbWNsb2NrcmFuZ2U6MjQ7CiAgdWludDMy X3QgbWVtX2Jsa19pZDo4Owp9OwoKdW5pb24gYXRvbV91bWNfcmVnX3NldHRpbmdfaWRfY29uZmln X2FjY2Vzcwp7CiAgc3RydWN0IGF0b21fdW1jX3JlZ19zZXR0aW5nX2lkX2NvbmZpZyB1bWNfaWRf YWNjZXNzOwogIHVpbnQzMl90IHUzMnVtY19pZF9hY2Nlc3M7Cn07CgpzdHJ1Y3QgYXRvbV91bWNf cmVnX3NldHRpbmdfZGF0YV9ibG9ja3sKICB1bmlvbiBhdG9tX3VtY19yZWdfc2V0dGluZ19pZF9j b25maWdfYWNjZXNzIGJsb2NrX2lkOwogIHVpbnQzMl90IHUzMnVtY19yZWdfZGF0YVsxXTsKfTsK CnN0cnVjdCBhdG9tX3VtY19pbml0X3JlZ19ibG9ja3sKICB1aW50MTZfdCB1bWNfcmVnX251bTsK ICB1aW50MTZfdCByZXNlcnZlZDsKICB1bmlvbiBhdG9tX3VtY19yZWdpc3Rlcl9hZGRyX2luZm9f YWNjZXNzIHVtY19yZWdfbGlzdFsxXTsKICBzdHJ1Y3QgYXRvbV91bWNfcmVnX3NldHRpbmdfZGF0 YV9ibG9jayB1bWNfcmVnX3NldHRpbmdfbGlzdFsxXTsKfTsKCnN0cnVjdCBhdG9tX3ZyYW1fbW9k dWxlX3YxMCB7CgogIHVpbnQzMl90IG1lbW9yeV9zaXplOwogIHVpbnQzMl90IGNoYW5uZWxfZW5h YmxlOwogIHVpbnQzMl90IG1heF9tZW1fY2xrOwogIHVpbnQxNl90IHJlc2VydmVkWzNdOwogIHVp bnQxNl90IG1lbV92b2x0YWdlOwogIHVpbnQxNl90IHZyYW1fbW9kdWxlX3NpemU7CiAgdWludDhf dCBleHRfbWVtb3J5X2lkOwogIHVpbnQ4X3QgbWVtb3J5X3R5cGU7CiAgdWludDhfdCBjaGFubmVs X251bTsKICB1aW50OF90IGNoYW5uZWxfd2lkdGg7CiAgdWludDhfdCBkZW5zaXR5OwogIHVpbnQ4 X3QgdHVubmluZ3NldF9pZDsKICB1aW50OF90IHZlbmRlcl9yZXZfaWQ7CiAgdWludDhfdCByZWZy ZXNocmF0ZTsKICB1aW50OF90IHZyYW1fZmxhZ3M7CiAgdWludDhfdCB2cmFtX3JzZDI7CiAgdWlu dDE2X3QgZ2RkcjZfbXIxMDsKICB1aW50MTZfdCBnZGRyNl9tcjE7CiAgdWludDE2X3QgZ2RkcjZf bXIyOwogIHVpbnQxNl90IGdkZHI2X21yNzsKICBjaGFyIGRyYW1fcG5zdHJpbmdbMjBdOwp9OwoK c3RydWN0IGF0b21fdnJhbV9pbmZvX2hlYWRlcl92Ml80IHsKICBzdHJ1Y3QgYXRvbV9jb21tb25f dGFibGVfaGVhZGVyIHRhYmxlX2hlYWRlcjsKICB1aW50MTZfdCBtZW1fYWRqdXN0X3RibG9mZnNl dDsKICB1aW50MTZfdCBtZW1fY2xrX3BhdGNoX3RibG9mZnNldDsKICB1aW50MTZfdCBtY19hZGp1 c3RfcGVydGlsZV90YmxvZmZzZXQ7CiAgdWludDE2X3QgbWNfcGh5aW5pdF90YmxvZmZzZXQ7CiAg dWludDE2X3QgZHJhbV9kYXRhX3JlbWFwX3RibG9mZnNldDsKICB1aW50MTZfdCByZXNlcnZlZDsK ICB1aW50MTZfdCBwb3N0X3Vjb2RlX2luaXRfb2Zmc2V0OwogIHVpbnQxNl90IHZyYW1fcnNkMjsK ICB1aW50OF90IHZyYW1fbW9kdWxlX251bTsKICB1aW50OF90IHVtY2lwX21pbl92ZXI7CiAgdWlu dDhfdCB1bWNpcF9tYXhfdmVyOwogIHVpbnQ4X3QgbWNfcGh5X3RpbGVfbnVtOwogIHN0cnVjdCBh dG9tX3ZyYW1fbW9kdWxlX3YxMCB2cmFtX21vZHVsZVsxNl07Cn07CgoKCgoKCnN0cnVjdCBhdG9t X2kyY19kYXRhX2VudHJ5CnsKICB1aW50MTZfdCBpMmNfcmVnX2luZGV4OwogIHVpbnQxNl90IGky Y19yZWdfZGF0YTsKfTsKCnN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NHsKICB1 aW50OF90IHZvbHRhZ2VfdHlwZTsKICB1aW50OF90IHZvbHRhZ2VfbW9kZTsKICB1aW50MTZfdCBv YmplY3Rfc2l6ZTsKfTsKCgplbnVtIGF0b21fdm9sdGFnZV9vYmplY3RfbW9kZQp7CiAgIFZPTFRB R0VfT0JKX0dQSU9fTFVUID0gMCwKICAgVk9MVEFHRV9PQkpfVlJfSTJDX0lOSVRfU0VRID0gMywK ICAgVk9MVEFHRV9PQkpfUEhBU0VfTFVUID0gNCwKICAgVk9MVEFHRV9PQkpfU1ZJRDIgPSA3LAog ICBWT0xUQUdFX09CSl9FVlYgPSA4LAogICBWT0xUQUdFX09CSl9NRVJHRURfUE9XRVIgPSA5LAp9 OwoKc3RydWN0IGF0b21faTJjX3ZvbHRhZ2Vfb2JqZWN0X3Y0CnsKICAgc3RydWN0IGF0b21fdm9s dGFnZV9vYmplY3RfaGVhZGVyX3Y0IGhlYWRlcjsKICAgdWludDhfdCByZWd1bGF0b3JfaWQ7CiAg IHVpbnQ4X3QgaTJjX2lkOwogICB1aW50OF90IGkyY19zbGF2ZV9hZGRyOwogICB1aW50OF90IGky Y19jb250cm9sX29mZnNldDsKICAgdWludDhfdCBpMmNfZmxhZzsKICAgdWludDhfdCBpMmNfc3Bl ZWQ7CiAgIHVpbnQ4X3QgcmVzZXJ2ZWRbMl07CiAgIHN0cnVjdCBhdG9tX2kyY19kYXRhX2VudHJ5 IGkyY2RhdGFsdXRbMV07Cn07CgoKZW51bSBhdG9tX2kyY192b2x0YWdlX2NvbnRyb2xfZmxhZwp7 CiAgIFZPTFRBR0VfREFUQV9PTkVfQllURSA9IDAsCiAgIFZPTFRBR0VfREFUQV9UV09fQllURSA9 IDEsCn07CgoKc3RydWN0IGF0b21fdm9sdGFnZV9ncGlvX21hcF9sdXQKewogIHVpbnQzMl90IHZv bHRhZ2VfZ3Bpb19yZWdfdmFsOwogIHVpbnQxNl90IHZvbHRhZ2VfbGV2ZWxfbXY7Cn07CgpzdHJ1 Y3QgYXRvbV9ncGlvX3ZvbHRhZ2Vfb2JqZWN0X3Y0CnsKICAgc3RydWN0IGF0b21fdm9sdGFnZV9v YmplY3RfaGVhZGVyX3Y0IGhlYWRlcjsKICAgdWludDhfdCBncGlvX2NvbnRyb2xfaWQ7CiAgIHVp bnQ4X3QgZ3Bpb19lbnRyeV9udW07CiAgIHVpbnQ4X3QgcGhhc2VfZGVsYXlfdXM7CiAgIHVpbnQ4 X3QgcmVzZXJ2ZWQ7CiAgIHVpbnQzMl90IGdwaW9fbWFza192YWw7CiAgIHN0cnVjdCBhdG9tX3Zv bHRhZ2VfZ3Bpb19tYXBfbHV0IHZvbHRhZ2VfZ3Bpb19sdXRbMV07Cn07CgpzdHJ1Y3QgYXRvbV9z dmlkMl92b2x0YWdlX29iamVjdF92NAp7CiAgIHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hl YWRlcl92NCBoZWFkZXI7CiAgIHVpbnQ4X3QgbG9hZGxpbmVfcHNpMTsKICAgdWludDhfdCBwc2kw X2xfdmlkX3RocmVzZDsKICAgdWludDhfdCBwc2kwX2VuYWJsZTsKICAgdWludDhfdCBtYXh2c3Rl cDsKICAgdWludDhfdCB0ZWxlbWV0cnlfb2Zmc2V0OwogICB1aW50OF90IHRlbGVtZXRyeV9nYWlu OwogICB1aW50MTZfdCByZXNlcnZlZDE7Cn07CgpzdHJ1Y3QgYXRvbV9tZXJnZWRfdm9sdGFnZV9v YmplY3RfdjQKewogIHN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0X2hlYWRlcl92NCBoZWFkZXI7 CiAgdWludDhfdCBtZXJnZWRfcG93ZXJyYWlsX3R5cGU7CiAgdWludDhfdCByZXNlcnZlZFszXTsK fTsKCnVuaW9uIGF0b21fdm9sdGFnZV9vYmplY3RfdjR7CiAgc3RydWN0IGF0b21fZ3Bpb192b2x0 YWdlX29iamVjdF92NCBncGlvX3ZvbHRhZ2Vfb2JqOwogIHN0cnVjdCBhdG9tX2kyY192b2x0YWdl X29iamVjdF92NCBpMmNfdm9sdGFnZV9vYmo7CiAgc3RydWN0IGF0b21fc3ZpZDJfdm9sdGFnZV9v YmplY3RfdjQgc3ZpZDJfdm9sdGFnZV9vYmo7CiAgc3RydWN0IGF0b21fbWVyZ2VkX3ZvbHRhZ2Vf b2JqZWN0X3Y0IG1lcmdlZF92b2x0YWdlX29iajsKfTsKCnN0cnVjdCBhdG9tX3ZvbHRhZ2Vfb2Jq ZWN0c19pbmZvX3Y0XzEKewogIHN0cnVjdCBhdG9tX2NvbW1vbl90YWJsZV9oZWFkZXIgdGFibGVf aGVhZGVyOwogIHVuaW9uIGF0b21fdm9sdGFnZV9vYmplY3RfdjQgdm9sdGFnZV9vYmplY3RbMV07 Cn07CiMgMjMyMyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21m aXJtd2FyZS5oIgpzdHJ1Y3QgYXNpY19pbml0X2VuZ2luZV9wYXJhbWV0ZXJzCnsKICB1aW50MzJf dCBzY2xrZnJlcWluMTBraHo6MjQ7CiAgdWludDMyX3QgZW5naW5lZmxhZzo4Owp9OwoKc3RydWN0 IGFzaWNfaW5pdF9tZW1fcGFyYW1ldGVycwp7CiAgdWludDMyX3QgbWNsa2ZyZXFpbjEwa2h6OjI0 OwogIHVpbnQzMl90IG1lbWZsYWc6ODsKfTsKCnN0cnVjdCBhc2ljX2luaXRfcGFyYW1ldGVyc192 Ml8xCnsKICBzdHJ1Y3QgYXNpY19pbml0X2VuZ2luZV9wYXJhbWV0ZXJzIGVuZ2luZXBhcmFtOwog IHN0cnVjdCBhc2ljX2luaXRfbWVtX3BhcmFtZXRlcnMgbWVtcGFyYW07Cn07CgpzdHJ1Y3QgYXNp Y19pbml0X3BzX2FsbG9jYXRpb25fdjJfMQp7CiAgc3RydWN0IGFzaWNfaW5pdF9wYXJhbWV0ZXJz X3YyXzEgcGFyYW07CiAgdWludDMyX3QgcmVzZXJ2ZWRbMTZdOwp9OwoKCmVudW0gYXRvbV9hc2lj X2luaXRfZW5naW5lX2ZsYWcKewogIGIzTk9STUFMX0VOR0lORV9JTklUID0gMCwKICBiM1NSSU9W X1NLSVBfQVNJQ19JTklUID0gMHgwMiwKICBiM1NSSU9WX0xPQURfVUNPREUgPSAweDQwLAp9OwoK ZW51bSBhdG9tX2FzaWNfaW5pdF9tZW1fZmxhZwp7CiAgYjNOT1JNQUxfTUVNX0lOSVQgPSAwLAog IGIzRFJBTV9TRUxGX1JFRlJFU0hfRVhJVCA9MHgyMCwKfTsKCgoKCgoKCnN0cnVjdCBzZXRfZW5n aW5lX2Nsb2NrX3BhcmFtZXRlcnNfdjJfMQp7CiAgdWludDMyX3Qgc2Nsa2ZyZXFpbjEwa2h6OjI0 OwogIHVpbnQzMl90IHNjbGtmbGFnOjg7CiAgdWludDMyX3QgcmVzZXJ2ZWRbMTBdOwp9OwoKc3Ry dWN0IHNldF9lbmdpbmVfY2xvY2tfcHNfYWxsb2NhdGlvbl92Ml8xCnsKICBzdHJ1Y3Qgc2V0X2Vu Z2luZV9jbG9ja19wYXJhbWV0ZXJzX3YyXzEgY2xvY2tpbmZvOwogIHVpbnQzMl90IHJlc2VydmVk WzEwXTsKfTsKCgplbnVtIGF0b21fc2V0X2VuZ2luZV9tZW1fY2xvY2tfZmxhZwp7CiAgYjNOT1JN QUxfQ0hBTkdFX0NMT0NLID0gMCwKICBiM0ZJUlNUX1RJTUVfQ0hBTkdFX0NMT0NLID0gMHgwOCwK ICBiM1NUT1JFX0RQTV9UUkFJTkdJTkcgPSAweDQwLAp9OwoKCgoKCgpzdHJ1Y3QgZ2V0X2VuZ2lu ZV9jbG9ja19wYXJhbWV0ZXIKewogIHVpbnQzMl90IHNjbGtfMTBraHo7CiAgdWludDMyX3QgcmVz ZXJ2ZWQ7Cn07CgoKCgoKCnN0cnVjdCBzZXRfbWVtb3J5X2Nsb2NrX3BhcmFtZXRlcnNfdjJfMQp7 CiAgdWludDMyX3QgbWNsa2ZyZXFpbjEwa2h6OjI0OwogIHVpbnQzMl90IG1jbGtmbGFnOjg7CiAg dWludDMyX3QgcmVzZXJ2ZWRbMTBdOwp9OwoKc3RydWN0IHNldF9tZW1vcnlfY2xvY2tfcHNfYWxs b2NhdGlvbl92Ml8xCnsKICBzdHJ1Y3Qgc2V0X21lbW9yeV9jbG9ja19wYXJhbWV0ZXJzX3YyXzEg Y2xvY2tpbmZvOwogIHVpbnQzMl90IHJlc2VydmVkWzEwXTsKfTsKCgoKCgoKCnN0cnVjdCBnZXRf bWVtb3J5X2Nsb2NrX3BhcmFtZXRlcgp7CiAgdWludDMyX3QgbWNsa18xMGtoejsKICB1aW50MzJf dCByZXNlcnZlZDsKfTsKIyAyNDM3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2lu Y2x1ZGUvYXRvbWZpcm13YXJlLmgiCnN0cnVjdCBzZXRfdm9sdGFnZV9wYXJhbWV0ZXJzX3YxXzQK ewogIHVpbnQ4X3Qgdm9sdGFnZXR5cGU7CiAgdWludDhfdCBjb21tYW5kOwogIHVpbnQxNl90IHZs ZXZlbF9tdjsKfTsKCgplbnVtIGF0b21fc2V0X3ZvbHRhZ2VfY29tbWFuZHsKICBBVE9NX1NFVF9W T0xUQUdFID0gMCwKICBBVE9NX0lOSVRfVk9MVEFHRV9SRUdVTEFUT1IgPSAzLAogIEFUT01fU0VU X1ZPTFRBR0VfUEhBU0UgPSA0LAogIEFUT01fR0VUX0xFQUtBR0VfSUQgPSA4LAp9OwoKc3RydWN0 IHNldF92b2x0YWdlX3BzX2FsbG9jYXRpb25fdjFfNAp7CiAgc3RydWN0IHNldF92b2x0YWdlX3Bh cmFtZXRlcnNfdjFfNCBzZXR2b2x0YWdlcGFyYW07CiAgdWludDMyX3QgcmVzZXJ2ZWRbMTBdOwp9 OwojIDI0NjYgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmly bXdhcmUuaCIKZW51bSBhdG9tX2dwdV9jbG9ja190eXBlCnsKICBDT01QVVRFX0dQVUNMS19JTlBV VF9GTEFHX0RFRkFVTFRfR1BVQ0xLID0weDAwLAogIENPTVBVVEVfR1BVQ0xLX0lOUFVUX0ZMQUdf R0ZYQ0xLID0weDAxLAogIENPTVBVVEVfR1BVQ0xLX0lOUFVUX0ZMQUdfVUNMSyA9MHgwMiwKfTsK CnN0cnVjdCBjb21wdXRlX2dwdV9jbG9ja19pbnB1dF9wYXJhbWV0ZXJfdjFfOAp7CiAgdWludDMy X3QgZ3B1Y2xvY2tfMTBraHo6MjQ7CiAgdWludDMyX3QgZ3B1X2Nsb2NrX3R5cGU6ODsKICB1aW50 MzJfdCByZXNlcnZlZFs1XTsKfTsKCgpzdHJ1Y3QgY29tcHV0ZV9ncHVfY2xvY2tfb3V0cHV0X3Bh cmFtZXRlcl92MV84CnsKICB1aW50MzJfdCBncHVjbG9ja18xMGtoejoyNDsKICB1aW50MzJfdCBk ZnNfZGlkOjg7CiAgdWludDMyX3QgcGxsX2ZiX211bHQ7CiAgdWludDMyX3QgcGxsX3NzX2Zic211 bHQ7CiAgdWludDE2X3QgcGxsX3NzX3NsZXdfZnJhYzsKICB1aW50OF90IHBsbF9zc19lbmFibGU7 CiAgdWludDhfdCByZXNlcnZlZDsKICB1aW50MzJfdCByZXNlcnZlZDFbMl07Cn07CiMgMjUwMSAi Li9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgpz dHJ1Y3QgcmVhZF9lZnVzZV9pbnB1dF9wYXJhbWV0ZXJzX3YzXzEKewogIHVpbnQxNl90IGVmdXNl X3N0YXJ0X2luZGV4OwogIHVpbnQ4X3QgcmVzZXJ2ZWQ7CiAgdWludDhfdCBiaXRzbGVuOwp9OwoK CnVuaW9uIHJlYWRfZWZ1c2VfdmFsdWVfcGFyYW1ldGVyc192M18xCnsKICBzdHJ1Y3QgcmVhZF9l ZnVzZV9pbnB1dF9wYXJhbWV0ZXJzX3YzXzEgZWZ1c2VfaW5mbzsKICB1aW50MzJfdCBlZnVzZXZh bHVlOwp9OwoKCgoKCgoKc3RydWN0IGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX3BhcmFtZXRlcnNf djNfMQp7CiAgdWludDhfdCBzeXNwbGxfaWQ7CiAgdWludDhfdCBjbGtfaWQ7CiAgdWludDhfdCBj b21tYW5kOwogIHVpbnQ4X3QgZGZzZGlkOwp9OwoKZW51bSBhdG9tX2dldF9zbXVfY2xvY2tfaW5m b19jb21tYW5kCnsKICBHRVRfU01VX0NMT0NLX0lORk9fVjNfMV9HRVRfQ0xPQ0tfRlJFUSA9IDAs CiAgR0VUX1NNVV9DTE9DS19JTkZPX1YzXzFfR0VUX1BMTFZDT19GUkVRID0gMSwKICBHRVRfU01V X0NMT0NLX0lORk9fVjNfMV9HRVRfUExMUkVGQ0xLX0ZSRVEgPSAyLAp9OwoKZW51bSBhdG9tX3Nt dTlfc3lzcGxsMF9jbG9ja19pZAp7CiAgU01VOV9TWVNQTEwwX1NNTkNMS19JRCA9IDAsCiAgU01V OV9TWVNQTEwwX1NPQ0NMS19JRCA9IDEsCiAgU01VOV9TWVNQTEwwX01QMENMS19JRCA9IDIsCiAg U01VOV9TWVNQTEwwX01QMUNMS19JRCA9IDMsCiAgU01VOV9TWVNQTEwwX0xDTEtfSUQgPSA0LAog IFNNVTlfU1lTUExMMF9EQ0xLX0lEID0gNSwKICBTTVU5X1NZU1BMTDBfVkNMS19JRCA9IDYsCiAg U01VOV9TWVNQTEwwX0VDTEtfSUQgPSA3LAogIFNNVTlfU1lTUExMMF9EQ0VGQ0xLX0lEID0gOCwK ICBTTVU5X1NZU1BMTDBfRFBSRUZDTEtfSUQgPSAxMCwKICBTTVU5X1NZU1BMTDBfRElTUENMS19J RCA9IDExLAp9OwoKZW51bSBhdG9tX3NtdTExX3N5c3BsbF9pZCB7CiAgU01VMTFfU1lTUExMMF9J RCA9IDAsCiAgU01VMTFfU1lTUExMMV8wX0lEID0gMSwKICBTTVUxMV9TWVNQTEwxXzFfSUQgPSAy LAogIFNNVTExX1NZU1BMTDFfMl9JRCA9IDMsCiAgU01VMTFfU1lTUExMMl9JRCA9IDQsCiAgU01V MTFfU1lTUExMM18wX0lEID0gNSwKICBTTVUxMV9TWVNQTEwzXzFfSUQgPSA2LAp9OwoKZW51bSBh dG9tX3NtdTExX3N5c3BsbDBfY2xvY2tfaWQgewogIFNNVTExX1NZU1BMTDBfRUNMS19JRCA9IDAs CiAgU01VMTFfU1lTUExMMF9TT0NDTEtfSUQgPSAxLAogIFNNVTExX1NZU1BMTDBfTVAwQ0xLX0lE ID0gMiwKICBTTVUxMV9TWVNQTEwwX0RDTEtfSUQgPSAzLAogIFNNVTExX1NZU1BMTDBfVkNMS19J RCA9IDQsCiAgU01VMTFfU1lTUExMMF9EQ0VGQ0xLX0lEID0gNSwKfTsKCmVudW0gYXRvbV9zbXUx MV9zeXNwbGwxXzBfY2xvY2tfaWQgewogIFNNVTExX1NZU1BMTDFfMF9VQ0xLQV9JRCA9IDAsCn07 CgplbnVtIGF0b21fc211MTFfc3lzcGxsMV8xX2Nsb2NrX2lkIHsKICBTTVUxMV9TWVNQTEwxXzBf VUNMS0JfSUQgPSAwLAp9OwoKZW51bSBhdG9tX3NtdTExX3N5c3BsbDFfMl9jbG9ja19pZCB7CiAg U01VMTFfU1lTUExMMV8wX0ZDTEtfSUQgPSAwLAp9OwoKZW51bSBhdG9tX3NtdTExX3N5c3BsbDJf Y2xvY2tfaWQgewogIFNNVTExX1NZU1BMTDJfR0ZYQ0xLX0lEID0gMCwKfTsKCmVudW0gYXRvbV9z bXUxMV9zeXNwbGwzXzBfY2xvY2tfaWQgewogIFNNVTExX1NZU1BMTDNfMF9XQUZDTEtfSUQgPSAw LAogIFNNVTExX1NZU1BMTDNfMF9ESVNQQ0xLX0lEID0gMSwKICBTTVUxMV9TWVNQTEwzXzBfRFBS RUZDTEtfSUQgPSAyLAp9OwoKZW51bSBhdG9tX3NtdTExX3N5c3BsbDNfMV9jbG9ja19pZCB7CiAg U01VMTFfU1lTUExMM18xX01QMUNMS19JRCA9IDAsCiAgU01VMTFfU1lTUExMM18xX1NNTkNMS19J RCA9IDEsCiAgU01VMTFfU1lTUExMM18xX0xDTEtfSUQgPSAyLAp9OwoKc3RydWN0IGF0b21fZ2V0 X3NtdV9jbG9ja19pbmZvX291dHB1dF9wYXJhbWV0ZXJzX3YzXzEKewogIHVuaW9uIHsKICAgIHVp bnQzMl90IHNtdV9jbG9ja19mcmVxX2h6OwogICAgdWludDMyX3Qgc3lzcGxsdmNvZnJlcV8xMGto ejsKICAgIHVpbnQzMl90IHN5c3NwbGxyZWZjbGtfMTBraHo7CiAgfWF0b21fc211X291dHB1dGNs a2ZyZXE7Cn07CiMgMjYxNSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRl L2F0b21maXJtd2FyZS5oIgplbnVtIGF0b21fZHluYW1pY19tZW1vcnlfc2V0dGluZ19jb21tYW5k CnsKICBDT01QVVRFX01FTU9SWV9QTExfUEFSQU0gPSAxLAogIENPTVBVVEVfRU5HSU5FX1BMTF9Q QVJBTSA9IDIsCiAgQURKVVNUX01DX1NFVFRJTkdfUEFSQU0gPSAzLAp9OwoKCnN0cnVjdCBkeW5h bWljX21jbGtfc2V0dGluZ3NfcGFyYW1ldGVyc192Ml8xCnsKICB1aW50MzJfdCBtY2xrXzEwa2h6 OjI0OwogIHVpbnQzMl90IGNvbW1hbmQ6ODsKICB1aW50MzJfdCByZXNlcnZlZDsKfTsKCgpzdHJ1 Y3QgZHluYW1pY19zY2xrX3NldHRpbmdzX3BhcmFtZXRlcnNfdjJfMQp7CiAgdWludDMyX3Qgc2Ns a18xMGtoejoyNDsKICB1aW50MzJfdCBjb21tYW5kOjg7CiAgdWludDMyX3QgbWNsa18xMGtoejsK ICB1aW50MzJfdCByZXNlcnZlZDsKfTsKCnVuaW9uIGR5bmFtaWNfbWVtb3J5X3NldHRpbmdzX3Bh cmFtZXRlcnNfdjJfMQp7CiAgc3RydWN0IGR5bmFtaWNfbWNsa19zZXR0aW5nc19wYXJhbWV0ZXJz X3YyXzEgbWNsa19zZXR0aW5nOwogIHN0cnVjdCBkeW5hbWljX3NjbGtfc2V0dGluZ3NfcGFyYW1l dGVyc192Ml8xIHNjbGtfc2V0dGluZzsKfTsKIyAyNjUzICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1Ly4uL2luY2x1ZGUvYXRvbWZpcm13YXJlLmgiCmVudW0gYXRvbV91bWM2XzBfdWNvZGVf ZnVuY3Rpb25fY2FsbF9lbnVtX2lkCnsKICBVTUM2MF9VQ09ERV9GVU5DX0lEX1JFSU5JVCA9IDAs CiAgVU1DNjBfVUNPREVfRlVOQ19JRF9FTlRFUl9TRUxGUkVGUkVTSCA9IDEsCiAgVU1DNjBfVUNP REVfRlVOQ19JRF9FWElUX1NFTEZSRUZSRVNIID0gMiwKfTsKCgpzdHJ1Y3QgbWVtb3J5X3RyYWlu aW5nX3BhcmFtZXRlcnNfdjJfMQp7CiAgdWludDhfdCB1Y29kZV9mdW5jX2lkOwogIHVpbnQ4X3Qg dWNvZGVfcmVzZXJ2ZWRbM107CiAgdWludDMyX3QgcmVzZXJ2ZWRbNV07Cn07CiMgMjY3NSAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgpzdHJ1 Y3Qgc2V0X3BpeGVsX2Nsb2NrX3BhcmFtZXRlcl92MV83CnsKICAgIHVpbnQzMl90IHBpeGNsa18x MDBoejsKCiAgICB1aW50OF90IHBsbF9pZDsKICAgIHVpbnQ4X3QgZW5jb2Rlcm9iamlkOwoKICAg IHVpbnQ4X3QgZW5jb2Rlcl9tb2RlOwogICAgdWludDhfdCBtaXNjaW5mbzsKICAgIHVpbnQ4X3Qg Y3J0Y19pZDsKICAgIHVpbnQ4X3QgZGVlcF9jb2xvcl9yYXRpbzsKICAgIHVpbnQ4X3QgcmVzZXJ2 ZWQxWzJdOwogICAgdWludDMyX3QgcmVzZXJ2ZWQyOwp9OwoKCmVudW0gYXRvbV9zZXRfcGl4ZWxf Y2xvY2tfdjFfN19taXNjX2luZm8KewogIFBJWEVMX0NMT0NLX1Y3X01JU0NfRk9SQ0VfUFJPR19Q UExMID0gMHgwMSwKICBQSVhFTF9DTE9DS19WN19NSVNDX1BST0dfUEhZUExMID0gMHgwMiwKICBQ SVhFTF9DTE9DS19WN19NSVNDX1lVVjQyMF9NT0RFID0gMHgwNCwKICBQSVhFTF9DTE9DS19WN19N SVNDX0RWSV9EVUFMTElOS19FTiA9IDB4MDgsCiAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19SRUZfRElW X1NSQyA9IDB4MzAsCiAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19SRUZfRElWX1NSQ19YVEFMSU4gPSAw eDAwLAogIFBJWEVMX0NMT0NLX1Y3X01JU0NfUkVGX0RJVl9TUkNfUENJRSA9IDB4MTAsCiAgUElY RUxfQ0xPQ0tfVjdfTUlTQ19SRUZfRElWX1NSQ19HRU5MSyA9IDB4MjAsCiAgUElYRUxfQ0xPQ0tf VjdfTUlTQ19SRUZfRElWX1NSQ19SRUZQQUQgPSAweDMwLAogIFBJWEVMX0NMT0NLX1Y3X01JU0Nf QVRPTUlDX1VQREFURSA9IDB4NDAsCiAgUElYRUxfQ0xPQ0tfVjdfTUlTQ19GT1JDRV9TU19ESVMg PSAweDgwLAp9OwoKCmVudW0gYXRvbV9zZXRfcGl4ZWxfY2xvY2tfdjFfN19kZWVwY29sb3JfcmF0 aW8KewogIFBJWEVMX0NMT0NLX1Y3X0RFRVBDT0xPUl9SQVRJT19ESVMgPSAweDAwLAogIFBJWEVM X0NMT0NLX1Y3X0RFRVBDT0xPUl9SQVRJT181XzQgPSAweDAxLAogIFBJWEVMX0NMT0NLX1Y3X0RF RVBDT0xPUl9SQVRJT18zXzIgPSAweDAyLAogIFBJWEVMX0NMT0NLX1Y3X0RFRVBDT0xPUl9SQVRJ T18yXzEgPSAweDAzLAp9OwojIDI3MjIgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4v aW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKc3RydWN0IHNldF9kY2VfY2xvY2tfcGFyYW1ldGVyc192 Ml8xCnsKICB1aW50MzJfdCBkY2VjbGtfMTBraHo7CiAgdWludDhfdCBkY2VjbGt0eXBlOwogIHVp bnQ4X3QgZGNlY2xrc3JjOwogIHVpbnQ4X3QgZGNlY2xrZmxhZzsKICB1aW50OF90IGNydGNfaWQ7 Cn07CgoKZW51bSBhdG9tX3NldF9kY2VfY2xvY2tfY2xvY2tfdHlwZQp7CiAgRENFX0NMT0NLX1RZ UEVfRElTUENMSyA9IDAsCiAgRENFX0NMT0NLX1RZUEVfRFBSRUZDTEsgPSAxLAogIERDRV9DTE9D S19UWVBFX1BJWEVMQ0xLID0gMiwKfTsKCgplbnVtIGF0b21fc2V0X2RjZV9jbG9ja19kcHJlZmNs a19mbGFnCnsKICBEQ0VfQ0xPQ0tfRkxBR19QTExfUkVGQ0xLX1NSQ19NQVNLID0gMHgwMywKICBE Q0VfQ0xPQ0tfRkxBR19QTExfUkVGQ0xLX1NSQ19HRU5FUklDQSA9IDB4MDAsCiAgRENFX0NMT0NL X0ZMQUdfUExMX1JFRkNMS19TUkNfR0VOTEsgPSAweDAxLAogIERDRV9DTE9DS19GTEFHX1BMTF9S RUZDTEtfU1JDX1BDSUUgPSAweDAyLAogIERDRV9DTE9DS19GTEFHX1BMTF9SRUZDTEtfU1JDX1hU QUxJTiA9IDB4MDMsCn07CgoKZW51bSBhdG9tX3NldF9kY2VfY2xvY2tfcGl4Y2xrX2ZsYWcKewog IERDRV9DTE9DS19GTEFHX1BDTEtfREVFUENPTE9SX1JBVElPX01BU0sgPSAweDAzLAogIERDRV9D TE9DS19GTEFHX1BDTEtfREVFUENPTE9SX1JBVElPX0RJUyA9IDB4MDAsCiAgRENFX0NMT0NLX0ZM QUdfUENMS19ERUVQQ09MT1JfUkFUSU9fNV80ID0gMHgwMSwKICBEQ0VfQ0xPQ0tfRkxBR19QQ0xL X0RFRVBDT0xPUl9SQVRJT18zXzIgPSAweDAyLAogIERDRV9DTE9DS19GTEFHX1BDTEtfREVFUENP TE9SX1JBVElPXzJfMSA9IDB4MDMsCiAgRENFX0NMT0NLX0ZMQUdfUElYQ0xLX1lVVjQyMF9NT0RF ID0gMHgwNCwKfTsKCnN0cnVjdCBzZXRfZGNlX2Nsb2NrX3BzX2FsbG9jYXRpb25fdjJfMQp7CiAg c3RydWN0IHNldF9kY2VfY2xvY2tfcGFyYW1ldGVyc192Ml8xIHBhcmFtOwogIHVpbnQzMl90IHVs UmVzZXJ2ZWRbMl07Cn07CgoKCgoKc3RydWN0IGJsYW5rX2NydGNfcGFyYW1ldGVycwp7CiAgdWlu dDhfdCBjcnRjX2lkOwogIHVpbnQ4X3QgYmxhbmtpbmc7CiAgdWludDE2X3QgcmVzZXJ2ZWQ7CiAg dWludDMyX3QgcmVzZXJ2ZWQxOwp9OwoKZW51bSBhdG9tX2JsYW5rX2NydGNfY29tbWFuZAp7CiAg QVRPTV9CTEFOS0lORyA9IDEsCiAgQVRPTV9CTEFOS0lOR19PRkYgPSAwLAp9OwoKCgoKc3RydWN0 IGVuYWJsZV9jcnRjX3BhcmFtZXRlcnMKewogIHVpbnQ4X3QgY3J0Y19pZDsKICB1aW50OF90IGVu YWJsZTsKICB1aW50OF90IHBhZGRpbmdbMl07Cn07CgoKCgoKc3RydWN0IGVuYWJsZV9kaXNwX3Bv d2VyX2dhdGluZ19wYXJhbWV0ZXJzX3YyXzEKewogIHVpbnQ4X3QgZGlzcF9waXBlX2lkOwogIHVp bnQ4X3QgZW5hYmxlOwogIHVpbnQ4X3QgcGFkZGluZ1syXTsKfTsKCnN0cnVjdCBlbmFibGVfZGlz cF9wb3dlcl9nYXRpbmdfcHNfYWxsb2NhdGlvbgp7CiAgc3RydWN0IGVuYWJsZV9kaXNwX3Bvd2Vy X2dhdGluZ19wYXJhbWV0ZXJzX3YyXzEgcGFyYW07CiAgdWludDMyX3QgdWxSZXNlcnZlZFs0XTsK fTsKCgoKCnN0cnVjdCBzZXRfY3J0Y191c2luZ19kdGRfdGltaW5nX3BhcmFtZXRlcnMKewogIHVp bnQxNl90IGhfc2l6ZTsKICB1aW50MTZfdCBoX2JsYW5raW5nX3RpbWU7CiAgdWludDE2X3Qgdl9z aXplOwogIHVpbnQxNl90IHZfYmxhbmtpbmdfdGltZTsKICB1aW50MTZfdCBoX3N5bmNvZmZzZXQ7 CiAgdWludDE2X3QgaF9zeW5jd2lkdGg7CiAgdWludDE2X3Qgdl9zeW5jb2Zmc2V0OwogIHVpbnQx Nl90IHZfc3luY3dpZHRoOwogIHVpbnQxNl90IG1vZGVtaXNjaW5mbzsKICB1aW50OF90IGhfYm9y ZGVyOwogIHVpbnQ4X3Qgdl9ib3JkZXI7CiAgdWludDhfdCBjcnRjX2lkOwogIHVpbnQ4X3QgZW5j b2Rlcl9tb2RlOwogIHVpbnQ4X3QgcGFkZGluZ1syXTsKfTsKCgoKCgpzdHJ1Y3QgcHJvY2Vzc19p MmNfY2hhbm5lbF90cmFuc2FjdGlvbl9wYXJhbWV0ZXJzCnsKICB1aW50OF90IGkyY3NwZWVkX2to ejsKICB1bmlvbiB7CiAgICB1aW50OF90IHJlZ2luZGV4OwogICAgdWludDhfdCBzdGF0dXM7CiAg fSByZWdpbmRfc3RhdHVzOwogIHVpbnQxNl90IGkyY19kYXRhX291dDsKICB1aW50OF90IGZsYWc7 CiAgdWludDhfdCB0cmFuc19ieXRlczsKICB1aW50OF90IHNsYXZlX2FkZHI7CiAgdWludDhfdCBp MmNfaWQ7Cn07CgoKZW51bSBhdG9tX3Byb2Nlc3NfaTJjX2ZsYWcKewogIEhXX0kyQ19XUklURSA9 IDEsCiAgSFdfSTJDX1JFQUQgPSAwLAogIEkyQ18yQllURV9BRERSID0gMHgwMiwKICBIV19JMkNf U01CVVNfQllURV9XUiA9IDB4MDQsCn07CgoKZW51bSBhdG9tX3Byb2Nlc3NfaTJjX3N0YXR1cwp7 CiAgSFdfQVNTSVNURURfSTJDX1NUQVRVU19GQUlMVVJFID0yLAogIEhXX0FTU0lTVEVEX0kyQ19T VEFUVVNfU1VDQ0VTUyA9MSwKfTsKCgoKCgoKc3RydWN0IHByb2Nlc3NfYXV4X2NoYW5uZWxfdHJh bnNhY3Rpb25fcGFyYW1ldGVyc192MV8yCnsKICB1aW50MTZfdCBhdXhfcmVxdWVzdDsKICB1aW50 MTZfdCBkYXRhb3V0OwogIHVpbnQ4X3QgY2hhbm5lbGlkOwogIHVuaW9uIHsKICAgIHVpbnQ4X3Qg cmVwbHlfc3RhdHVzOwogICAgdWludDhfdCBhdXhfZGVsYXk7CiAgfSBhdXhfc3RhdHVzX2RlbGF5 OwogIHVpbnQ4X3QgZGF0YW91dF9sZW47CiAgdWludDhfdCBocGRfaWQ7Cn07CgoKCgoKCnN0cnVj dCBzZWxlY3RfY3J0Y19zb3VyY2VfcGFyYW1ldGVyc192Ml8zCnsKICB1aW50OF90IGNydGNfaWQ7 CiAgdWludDhfdCBlbmNvZGVyX2lkOwogIHVpbnQ4X3QgZW5jb2RlX21vZGU7CiAgdWludDhfdCBk c3RfYnBjOwp9OwoKCgoKCgoKZW51bSBhdG9tX2RpZ19lbmNvZGVyX2NvbnRyb2xfYWN0aW9uCnsK ICBBVE9NX0VOQ09ERVJfQ01EX0RJU0FCTEVfRElHID0gMCwKICBBVE9NX0VOQ09ERVJfQ01EX0VO QUJMRV9ESUcgPSAxLAogIEFUT01fRU5DT0RFUl9DTURfRFBfTElOS19UUkFJTklOR19TVEFSVCA9 IDB4MDgsCiAgQVRPTV9FTkNPREVSX0NNRF9EUF9MSU5LX1RSQUlOSU5HX1BBVFRFUk4xID0gMHgw OSwKICBBVE9NX0VOQ09ERVJfQ01EX0RQX0xJTktfVFJBSU5JTkdfUEFUVEVSTjIgPSAweDBhLAog IEFUT01fRU5DT0RFUl9DTURfRFBfTElOS19UUkFJTklOR19QQVRURVJOMyA9IDB4MTMsCiAgQVRP TV9FTkNPREVSX0NNRF9EUF9MSU5LX1RSQUlOSU5HX0NPTVBMRVRFID0gMHgwYiwKICBBVE9NX0VO Q09ERVJfQ01EX0RQX1ZJREVPX09GRiA9IDB4MGMsCiAgQVRPTV9FTkNPREVSX0NNRF9EUF9WSURF T19PTiA9IDB4MGQsCiAgQVRPTV9FTkNPREVSX0NNRF9TRVRVUF9QQU5FTF9NT0RFID0gMHgxMCwK ICBBVE9NX0VOQ09ERVJfQ01EX0RQX0xJTktfVFJBSU5JTkdfUEFUVEVSTjQgPSAweDE0LAogIEFU T01fRU5DT0RFUl9DTURfU1RSRUFNX1NFVFVQID0gMHgwRiwKICBBVE9NX0VOQ09ERVJfQ01EX0xJ TktfU0VUVVAgPSAweDExLAogIEFUT01fRU5DT0RFUl9DTURfRU5DT0RFUl9CTEFOSyA9IDB4MTIs Cn07CgoKZW51bSBhdG9tX2RpZ19lbmNvZGVyX2NvbnRyb2xfcGFuZWxtb2RlCnsKICBEUF9QQU5F TF9NT0RFX0RJU0FCTEUgPSAweDAwLAogIERQX1BBTkVMX01PREVfRU5BQkxFX2VEUF9NT0RFID0g MHgwMSwKICBEUF9QQU5FTF9NT0RFX0VOQUJMRV9MVkxJTktfTU9ERSA9IDB4MTEsCn07CgoKZW51 bSBhdG9tX2RpZ19lbmNvZGVyX2NvbnRyb2xfdjVfZGlnaWQKewogIEFUT01fRU5DT0RFUl9DT05G SUdfVjVfRElHMF9FTkNPREVSID0gMHgwMCwKICBBVE9NX0VOQ09ERVJfQ09ORklHX1Y1X0RJRzFf RU5DT0RFUiA9IDB4MDEsCiAgQVRPTV9FTkNPREVSX0NPTkZJR19WNV9ESUcyX0VOQ09ERVIgPSAw eDAyLAogIEFUT01fRU5DT0RFUl9DT05GSUdfVjVfRElHM19FTkNPREVSID0gMHgwMywKICBBVE9N X0VOQ09ERVJfQ09ORklHX1Y1X0RJRzRfRU5DT0RFUiA9IDB4MDQsCiAgQVRPTV9FTkNPREVSX0NP TkZJR19WNV9ESUc1X0VOQ09ERVIgPSAweDA1LAogIEFUT01fRU5DT0RFUl9DT05GSUdfVjVfRElH Nl9FTkNPREVSID0gMHgwNiwKICBBVE9NX0VOQ09ERVJfQ09ORklHX1Y1X0RJRzdfRU5DT0RFUiA9 IDB4MDcsCn07CgpzdHJ1Y3QgZGlnX2VuY29kZXJfc3RyZWFtX3NldHVwX3BhcmFtZXRlcnNfdjFf NQp7CiAgdWludDhfdCBkaWdpZDsKICB1aW50OF90IGFjdGlvbjsKICB1aW50OF90IGRpZ21vZGU7 CiAgdWludDhfdCBsYW5lbnVtOwogIHVpbnQzMl90IHBjbGtfMTBraHo7CiAgdWludDhfdCBiaXRw ZXJjb2xvcjsKICB1aW50OF90IGRwbGlua3JhdGVfMjcwbWh6OwogIHVpbnQ4X3QgcmVzZXJ2ZWRb Ml07Cn07CgpzdHJ1Y3QgZGlnX2VuY29kZXJfbGlua19zZXR1cF9wYXJhbWV0ZXJzX3YxXzUKewog IHVpbnQ4X3QgZGlnaWQ7CiAgdWludDhfdCBhY3Rpb247CiAgdWludDhfdCBkaWdtb2RlOwogIHVp bnQ4X3QgbGFuZW51bTsKICB1aW50OF90IHN5bWNsa18xMGtoejsKICB1aW50OF90IGhwZF9zZWw7 CiAgdWludDhfdCBkaWdmZV9zZWw7CiAgdWludDhfdCByZXNlcnZlZFsyXTsKfTsKCnN0cnVjdCBk cF9wYW5lbF9tb2RlX3NldF9wYXJhbWV0ZXJzX3YxXzUKewogIHVpbnQ4X3QgZGlnaWQ7CiAgdWlu dDhfdCBhY3Rpb247CiAgdWludDhfdCBwYW5lbG1vZGU7CiAgdWludDhfdCByZXNlcnZlZDE7CiAg dWludDMyX3QgcmVzZXJ2ZWQyWzJdOwp9OwoKc3RydWN0IGRpZ19lbmNvZGVyX2dlbmVyaWNfY21k X3BhcmFtZXRlcnNfdjFfNQp7CiAgdWludDhfdCBkaWdpZDsKICB1aW50OF90IGFjdGlvbjsKICB1 aW50OF90IHJlc2VydmVkMVsyXTsKICB1aW50MzJfdCByZXNlcnZlZDJbMl07Cn07Cgp1bmlvbiBk aWdfZW5jb2Rlcl9jb250cm9sX3BhcmFtZXRlcnNfdjFfNQp7CiAgc3RydWN0IGRpZ19lbmNvZGVy X2dlbmVyaWNfY21kX3BhcmFtZXRlcnNfdjFfNSBjbWRfcGFyYW07CiAgc3RydWN0IGRpZ19lbmNv ZGVyX3N0cmVhbV9zZXR1cF9wYXJhbWV0ZXJzX3YxXzUgc3RyZWFtX3BhcmFtOwogIHN0cnVjdCBk aWdfZW5jb2Rlcl9saW5rX3NldHVwX3BhcmFtZXRlcnNfdjFfNSBsaW5rX3BhcmFtOwogIHN0cnVj dCBkcF9wYW5lbF9tb2RlX3NldF9wYXJhbWV0ZXJzX3YxXzUgZHBwYW5lbF9wYXJhbTsKfTsKCgoK CgoKc3RydWN0IGRpZ190cmFuc21pdHRlcl9jb250cm9sX3BhcmFtZXRlcnNfdjFfNgp7CiAgdWlu dDhfdCBwaHlpZDsKICB1aW50OF90IGFjdGlvbjsKICB1bmlvbiB7CiAgICB1aW50OF90IGRpZ21v ZGU7CiAgICB1aW50OF90IGRwbGFuZXNldDsKICB9IG1vZGVfbGFuZXNldDsKICB1aW50OF90IGxh bmVudW07CiAgdWludDMyX3Qgc3ltY2xrXzEwa2h6OwogIHVpbnQ4X3QgaHBkc2VsOwogIHVpbnQ4 X3QgZGlnZmVfc2VsOwogIHVpbnQ4X3QgY29ubm9ial9pZDsKICB1aW50OF90IHJlc2VydmVkOwog IHVpbnQzMl90IHJlc2VydmVkMTsKfTsKCnN0cnVjdCBkaWdfdHJhbnNtaXR0ZXJfY29udHJvbF9w c19hbGxvY2F0aW9uX3YxXzYKewogIHN0cnVjdCBkaWdfdHJhbnNtaXR0ZXJfY29udHJvbF9wYXJh bWV0ZXJzX3YxXzYgcGFyYW07CiAgdWludDMyX3QgcmVzZXJ2ZWRbNF07Cn07CgoKZW51bSBhdG9t X2RpZ190cmFuc21pdHRlcl9jb250cm9sX2FjdGlvbgp7CiAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJ T05fRElTQUJMRSA9IDAsCiAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fRU5BQkxFID0gMSwKICBB VE9NX1RSQU5TTUlUVEVSX0FDVElPTl9MQ0RfQkxPRkYgPSAyLAogIEFUT01fVFJBTlNNSVRURVJf QUNUSU9OX0xDRF9CTE9OID0gMywKICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9CTF9CUklHSFRO RVNTX0NPTlRST0wgPSA0LAogIEFUT01fVFJBTlNNSVRURVJfQUNUSU9OX0xDRF9TRUxGVEVTVF9T VEFSVCA9IDUsCiAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fTENEX1NFTEZURVNUX1NUT1AgPSA2 LAogIEFUT01fVFJBTlNNSVRURVJfQUNUSU9OX0lOSVQgPSA3LAogIEFUT01fVFJBTlNNSVRURVJf QUNUSU9OX0RJU0FCTEVfT1VUUFVUID0gOCwKICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9FTkFC TEVfT1VUUFVUID0gOSwKICBBVE9NX1RSQU5TTUlUVEVSX0FDVElPTl9TRVRVUCA9IDEwLAogIEFU T01fVFJBTlNNSVRURVJfQUNUSU9OX1NFVFVQX1ZTRU1QSCA9IDExLAogIEFUT01fVFJBTlNNSVRU RVJfQUNUSU9OX1BPV0VSX09OID0gMTIsCiAgQVRPTV9UUkFOU01JVFRFUl9BQ1RJT05fUE9XRVJf T0ZGID0gMTMsCn07CgoKZW51bSBhdG9tX2RpZ190cmFuc21pdHRlcl9jb250cm9sX2RpZ2ZlX3Nl bAp7CiAgQVRPTV9UUkFOTVNJVFRFUl9WNl9fRElHQV9TRUwgPSAweDAxLAogIEFUT01fVFJBTk1T SVRURVJfVjZfX0RJR0JfU0VMID0gMHgwMiwKICBBVE9NX1RSQU5NU0lUVEVSX1Y2X19ESUdDX1NF TCA9IDB4MDQsCiAgQVRPTV9UUkFOTVNJVFRFUl9WNl9fRElHRF9TRUwgPSAweDA4LAogIEFUT01f VFJBTk1TSVRURVJfVjZfX0RJR0VfU0VMID0gMHgxMCwKICBBVE9NX1RSQU5NU0lUVEVSX1Y2X19E SUdGX1NFTCA9IDB4MjAsCiAgQVRPTV9UUkFOTVNJVFRFUl9WNl9fRElHR19TRUwgPSAweDQwLAp9 OwoKCgplbnVtIGF0b21fZGlnX3RyYW5zbWl0dGVyX2NvbnRyb2xfaHBkX3NlbAp7CiAgQVRPTV9U UkFOU01JVFRFUl9WNl9OT19IUERfU0VMID0gMHgwMCwKICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQ RDFfU0VMID0gMHgwMSwKICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDJfU0VMID0gMHgwMiwKICBB VE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDNfU0VMID0gMHgwMywKICBBVE9NX1RSQU5TTUlUVEVSX1Y2 X0hQRDRfU0VMID0gMHgwNCwKICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDVfU0VMID0gMHgwNSwK ICBBVE9NX1RSQU5TTUlUVEVSX1Y2X0hQRDZfU0VMID0gMHgwNiwKfTsKCgplbnVtIGF0b21fZGln X3RyYW5zbWl0dGVyX2NvbnRyb2xfZHBsYW5lc2V0CnsKICBEUF9MQU5FX1NFVF9fMERCXzBfNFYg PSAweDAwLAogIERQX0xBTkVfU0VUX18wREJfMF82ViA9IDB4MDEsCiAgRFBfTEFORV9TRVRfXzBE Ql8wXzhWID0gMHgwMiwKICBEUF9MQU5FX1NFVF9fMERCXzFfMlYgPSAweDAzLAogIERQX0xBTkVf U0VUX18zXzVEQl8wXzRWID0gMHgwOCwKICBEUF9MQU5FX1NFVF9fM181REJfMF82ViA9IDB4MDks CiAgRFBfTEFORV9TRVRfXzNfNURCXzBfOFYgPSAweDBhLAogIERQX0xBTkVfU0VUX182REJfMF80 ViA9IDB4MTAsCiAgRFBfTEFORV9TRVRfXzZEQl8wXzZWID0gMHgxMSwKICBEUF9MQU5FX1NFVF9f OV81REJfMF80ViA9IDB4MTgsCn07CgoKCgoKCgpzdHJ1Y3QgZXh0ZXJuYWxfZW5jb2Rlcl9jb250 cm9sX3BhcmFtZXRlcnNfdjJfNAp7CiAgdWludDE2X3QgcGl4ZWxjbG9ja18xMGtoejsKICB1aW50 OF90IGNvbmZpZzsKICB1aW50OF90IGFjdGlvbjsKICB1aW50OF90IGVuY29kZXJtb2RlOwogIHVp bnQ4X3QgbGFuZW51bTsKICB1aW50OF90IGJpdHBlcmNvbG9yOwogIHVpbnQ4X3QgaHBkX2lkOwp9 OwoKCgplbnVtIGV4dGVybmFsX2VuY29kZXJfY29udHJvbF9hY3Rpb25fZGVmCnsKICBFWFRFUk5B TF9FTkNPREVSX0FDVElPTl9WM19ESVNBQkxFX09VVFBVVCA9IDB4MDAsCiAgRVhURVJOQUxfRU5D T0RFUl9BQ1RJT05fVjNfRU5BQkxFX09VVFBVVCA9IDB4MDEsCiAgRVhURVJOQUxfRU5DT0RFUl9B Q1RJT05fVjNfRU5DT0RFUl9JTklUID0gMHgwNywKICBFWFRFUk5BTF9FTkNPREVSX0FDVElPTl9W M19FTkNPREVSX1NFVFVQID0gMHgwZiwKICBFWFRFUk5BTF9FTkNPREVSX0FDVElPTl9WM19FTkNP REVSX0JMQU5LSU5HX09GRiA9IDB4MTAsCiAgRVhURVJOQUxfRU5DT0RFUl9BQ1RJT05fVjNfRU5D T0RFUl9CTEFOS0lORyA9IDB4MTEsCiAgRVhURVJOQUxfRU5DT0RFUl9BQ1RJT05fVjNfREFDTE9B RF9ERVRFQ1RJT04gPSAweDEyLAogIEVYVEVSTkFMX0VOQ09ERVJfQUNUSU9OX1YzX0REQ19TRVRV UCA9IDB4MTQsCn07CgoKZW51bSBleHRlcm5hbF9lbmNvZGVyX2NvbnRyb2xfdjJfNF9jb25maWdf ZGVmCnsKICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFX01BU0sgPSAweDAz LAogIEVYVEVSTkFMX0VOQ09ERVJfQ09ORklHX1YzX0RQTElOS1JBVEVfMV82MkdIWiA9IDB4MDAs CiAgRVhURVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRFBMSU5LUkFURV8yXzcwR0haID0gMHgwMSwK ICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19WM19EUExJTktSQVRFXzVfNDBHSFogPSAweDAyLAog IEVYVEVSTkFMX0VOQ09ERVJfQ09ORklHX1YzX0RQTElOS1JBVEVfM18yNEdIWiA9IDB4MDMsCiAg RVhURVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRU5DT0RFUl9TRUxfTUFLUyA9IDB4NzAsCiAgRVhU RVJOQUxfRU5DT0RFUl9DT05GSUdfVjNfRU5DT0RFUjEgPSAweDAwLAogIEVYVEVSTkFMX0VOQ09E RVJfQ09ORklHX1YzX0VOQ09ERVIyID0gMHgxMCwKICBFWFRFUk5BTF9FTkNPREVSX0NPTkZJR19W M19FTkNPREVSMyA9IDB4MjAsCn07CgpzdHJ1Y3QgZXh0ZXJuYWxfZW5jb2Rlcl9jb250cm9sX3Bz X2FsbG9jYXRpb25fdjJfNAp7CiAgc3RydWN0IGV4dGVybmFsX2VuY29kZXJfY29udHJvbF9wYXJh bWV0ZXJzX3YyXzQgc0V4dEVuY29kZXI7CiAgdWludDMyX3QgcmVzZXJ2ZWRbMl07Cn07CiMgMzEz NyAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5o IgpzdHJ1Y3QgYW1kX2FjcGlfZGVzY3JpcHRpb25faGVhZGVyewogIHVpbnQzMl90IHNpZ25hdHVy ZTsKICB1aW50MzJfdCB0YWJsZUxlbmd0aDsKICB1aW50OF90IHJldmlzaW9uOwogIHVpbnQ4X3Qg Y2hlY2tzdW07CiAgdWludDhfdCBvZW1JZFs2XTsKICB1aW50OF90IG9lbVRhYmxlSWRbOF07CiAg dWludDMyX3Qgb2VtUmV2aXNpb247CiAgdWludDMyX3QgY3JlYXRvcklkOwogIHVpbnQzMl90IGNy ZWF0b3JSZXZpc2lvbjsKfTsKCnN0cnVjdCB1ZWZpX2FjcGlfdmZjdHsKICBzdHJ1Y3QgYW1kX2Fj cGlfZGVzY3JpcHRpb25faGVhZGVyIHNoZWFkZXI7CiAgdWludDhfdCB0YWJsZVVVSURbMTZdOwog IHVpbnQzMl90IHZiaW9zaW1hZ2VvZmZzZXQ7CiAgdWludDMyX3QgbGliMUltYWdlb2Zmc2V0Owog IHVpbnQzMl90IHJlc2VydmVkWzRdOwp9OwoKc3RydWN0IHZmY3RfaW1hZ2VfaGVhZGVyewogIHVp bnQzMl90IHBjaWJ1czsKICB1aW50MzJfdCBwY2lkZXZpY2U7CiAgdWludDMyX3QgcGNpZnVuY3Rp b247CiAgdWludDE2X3QgdmVuZG9yaWQ7CiAgdWludDE2X3QgZGV2aWNlaWQ7CiAgdWludDE2X3Qg c3N2aWQ7CiAgdWludDE2X3Qgc3NpZDsKICB1aW50MzJfdCByZXZpc2lvbjsKICB1aW50MzJfdCBp bWFnZWxlbmd0aDsKfTsKCgpzdHJ1Y3QgZ29wX3ZiaW9zX2NvbnRlbnQgewogIHN0cnVjdCB2ZmN0 X2ltYWdlX2hlYWRlciB2Ymlvc2hlYWRlcjsKICB1aW50OF90IHZiaW9zY29udGVudFsxXTsKfTsK CnN0cnVjdCBnb3BfbGliMV9jb250ZW50IHsKICBzdHJ1Y3QgdmZjdF9pbWFnZV9oZWFkZXIgbGli MWhlYWRlcjsKICB1aW50OF90IGxpYjFjb250ZW50WzFdOwp9OwojIDMxOTAgIi4vZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmUuaCIKZW51bSBzY3JhdGNo X3JlZ2lzdGVyX2RlZnsKICBBVE9NX0RFVklDRV9DT05ORUNUX0lORk9fREVGID0gMCwKICBBVE9N X0JMX0JSSV9MRVZFTF9JTkZPX0RFRiA9IDIsCiAgQVRPTV9BQ1RJVkVfSU5GT19ERUYgPSAzLAog IEFUT01fTENEX0lORk9fREVGID0gNCwKICBBVE9NX0RFVklDRV9SRVFfSU5GT19ERUYgPSA1LAog IEFUT01fQUNDX0NIQU5HRV9JTkZPX0RFRiA9IDYsCiAgQVRPTV9QUkVfT1NfTU9ERV9JTkZPX0RF RiA9IDcsCiAgQVRPTV9QUkVfT1NfQVNTRVJUSU9OX0RFRiA9IDgsCiAgQVRPTV9JTlRFUk5BTF9U SU1FUl9JTkZPX0RFRiA9IDEwLAp9OwoKZW51bSBzY3JhdGNoX2RldmljZV9jb25uZWN0X2luZm9f Yml0X2RlZnsKICBBVE9NX0RJU1BMQVlfTENEMV9DT05ORUNUID0weDAwMDIsCiAgQVRPTV9ESVNQ TEFZX0RGUDFfQ09OTkVDVCA9MHgwMDA4LAogIEFUT01fRElTUExBWV9ERlAyX0NPTk5FQ1QgPTB4 MDA4MCwKICBBVE9NX0RJU1BMQVlfREZQM19DT05ORUNUID0weDAyMDAsCiAgQVRPTV9ESVNQTEFZ X0RGUDRfQ09OTkVDVCA9MHgwNDAwLAogIEFUT01fRElTUExBWV9ERlA1X0NPTk5FQ1QgPTB4MDgw MCwKICBBVE9NX0RJU1BMQVlfREZQNl9DT05ORUNUID0weDAwNDAsCiAgQVRPTV9ESVNQTEFZX0RG UHhfQ09OTkVDVCA9MHgwZWM4LAogIEFUT01fQ09OTkVDVF9JTkZPX0RFVklDRV9NQVNLID0weDBm ZmYsCn07CgplbnVtIHNjcmF0Y2hfYmxfYnJpX2xldmVsX2luZm9fYml0X2RlZnsKICBBVE9NX0NV UlJFTlRfQkxfTEVWRUxfU0hJRlQgPTB4OCwKCiAgQVRPTV9DVVJSRU5UX0JMX0xFVkVMX01BU0sg PTB4MDAwMGZmMDAsCiAgQVRPTV9ERVZJQ0VfRFBNU19TVEFURSA9MHgwMDAxMDAwMCwKCn07Cgpl bnVtIHNjcmF0Y2hfYWN0aXZlX2luZm9fYml0c19kZWZ7CiAgQVRPTV9ESVNQTEFZX0xDRDFfQUNU SVZFID0weDAwMDIsCiAgQVRPTV9ESVNQTEFZX0RGUDFfQUNUSVZFID0weDAwMDgsCiAgQVRPTV9E SVNQTEFZX0RGUDJfQUNUSVZFID0weDAwODAsCiAgQVRPTV9ESVNQTEFZX0RGUDNfQUNUSVZFID0w eDAyMDAsCiAgQVRPTV9ESVNQTEFZX0RGUDRfQUNUSVZFID0weDA0MDAsCiAgQVRPTV9ESVNQTEFZ X0RGUDVfQUNUSVZFID0weDA4MDAsCiAgQVRPTV9ESVNQTEFZX0RGUDZfQUNUSVZFID0weDAwNDAs CiAgQVRPTV9BQ1RJVkVfSU5GT19ERVZJQ0VfTUFTSyA9MHgwZmZmLAp9OwoKZW51bSBzY3JhdGNo X2RldmljZV9yZXFfaW5mb19iaXRzX2RlZnsKICBBVE9NX0RJU1BMQVlfTENEMV9SRVEgPTB4MDAw MiwKICBBVE9NX0RJU1BMQVlfREZQMV9SRVEgPTB4MDAwOCwKICBBVE9NX0RJU1BMQVlfREZQMl9S RVEgPTB4MDA4MCwKICBBVE9NX0RJU1BMQVlfREZQM19SRVEgPTB4MDIwMCwKICBBVE9NX0RJU1BM QVlfREZQNF9SRVEgPTB4MDQwMCwKICBBVE9NX0RJU1BMQVlfREZQNV9SRVEgPTB4MDgwMCwKICBB VE9NX0RJU1BMQVlfREZQNl9SRVEgPTB4MDA0MCwKICBBVE9NX1JFUV9JTkZPX0RFVklDRV9NQVNL ID0weDBmZmYsCn07CgplbnVtIHNjcmF0Y2hfYWNjX2NoYW5nZV9pbmZvX2JpdHNoaWZ0X2RlZnsK ICBBVE9NX0FDQ19DSEFOR0VfQUNDX01PREVfU0hJRlQgPTQsCiAgQVRPTV9BQ0NfQ0hBTkdFX0xJ RF9TVEFUVVNfU0hJRlQgPTYsCn07CgplbnVtIHNjcmF0Y2hfYWNjX2NoYW5nZV9pbmZvX2JpdHNf ZGVmewogIEFUT01fQUNDX0NIQU5HRV9BQ0NfTU9ERSA9MHgwMDAwMDAxMCwKICBBVE9NX0FDQ19D SEFOR0VfTElEX1NUQVRVUyA9MHgwMDAwMDA0MCwKfTsKCmVudW0gc2NyYXRjaF9wcmVfb3NfbW9k ZV9pbmZvX2JpdHNfZGVmewogIEFUT01fUFJFX09TX01PREVfTUFTSyA9MHgwMDAwMDAwMywKICBB VE9NX1BSRV9PU19NT0RFX1ZHQSA9MHgwMDAwMDAwMCwKICBBVE9NX1BSRV9PU19NT0RFX1ZFU0Eg PTB4MDAwMDAwMDEsCiAgQVRPTV9QUkVfT1NfTU9ERV9HT1AgPTB4MDAwMDAwMDIsCiAgQVRPTV9Q UkVfT1NfTU9ERV9QSVhFTF9ERVBUSCA9MHgwMDAwMDAwQywKICBBVE9NX1BSRV9PU19NT0RFX1BJ WEVMX0ZPUk1BVF9NQVNLPTB4MDAwMDAwRjAsCiAgQVRPTV9QUkVfT1NfTU9ERV84QklUX1BBTF9F TiA9MHgwMDAwMDEwMCwKICBBVE9NX0FTSUNfSU5JVF9DT01QTEVURSA9MHgwMDAwMDIwMCwKCiAg QVRPTV9QUkVfT1NfTU9ERV9OVU1CRVJfTUFTSyA9MHhGRkZGMDAwMCwKCn07CiMgMzI3NiAiLi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2F0b21maXJtd2FyZS5oIgojIDEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmlybXdhcmVpZC5o IiAxCiMgMzEgIi4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hdG9tZmly bXdhcmVpZC5oIgplbnVtIGF0b21fbWFzdGVyX2RhdGFfdGFibGVfaWQKewogICAgVkJJT1NfREFU QV9UQkxfSURfX1VUSUxJVFlfUElQRUxJTkUsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fTVVMVElN RURJQV9JTkYsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fRklSTVdBUkVfSU5GLAogICAgVkJJT1Nf REFUQV9UQkxfSURfX0xDRF9JTkYsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fU01VX0lORiwKICAg IFZCSU9TX0RBVEFfVEJMX0lEX19WUkFNX1VTQUdFX0JZX0ZJUk1XQVJFLAogICAgVkJJT1NfREFU QV9UQkxfSURfX0dQSU9fUElOX0xVVCwKICAgIFZCSU9TX0RBVEFfVEJMX0lEX19HRlhfSU5GLAog ICAgVkJJT1NfREFUQV9UQkxfSURfX1BPV0VSX1BMQVlfSU5GLAogICAgVkJJT1NfREFUQV9UQkxf SURfX0RJU1BMQVlfT0JKRUNUX0lORiwKICAgIFZCSU9TX0RBVEFfVEJMX0lEX19JTkRJUkVDVF9J T19BQ0NFU1MsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fVU1DX0lORiwKICAgIFZCSU9TX0RBVEFf VEJMX0lEX19EQ0VfSU5GLAogICAgVkJJT1NfREFUQV9UQkxfSURfX1ZSQU1fSU5GLAogICAgVkJJ T1NfREFUQV9UQkxfSURfX0lOVEVHUkFURURfU1lTX0lORiwKICAgIFZCSU9TX0RBVEFfVEJMX0lE X19BU0lDX1BST0ZJTElOR19JTkYsCiAgICBWQklPU19EQVRBX1RCTF9JRF9fVk9MVEFHRV9PQkpf SU5GLAoKICAgIFZCSU9TX0RBVEFfVEJMX0lEX19VTkRFRklORUQsCn07CgplbnVtIGF0b21fbWFz dGVyX2NvbW1hbmRfdGFibGVfaWQKewogICAgVkJJT1NfQ01EX1RCTF9JRF9fQVNJQ19JTklULAog ICAgVkJJT1NfQ01EX1RCTF9JRF9fRElHWF9FTkNPREVSX0NPTlRST0wsCiAgICBWQklPU19DTURf VEJMX0lEX19TRVRfRU5HSU5FX0NMT0NLLAogICAgVkJJT1NfQ01EX1RCTF9JRF9fU0VUX01FTU9S WV9DTE9DSywKICAgIFZCSU9TX0NNRF9UQkxfSURfX1NFVF9QSVhFTF9DTE9DSywKICAgIFZCSU9T X0NNRF9UQkxfSURfX0VOQUJMRV9ESVNQX1BPV0VSX0dBVElORywKICAgIFZCSU9TX0NNRF9UQkxf SURfX0JMQU5LX0NSVEMsCiAgICBWQklPU19DTURfVEJMX0lEX19FTkFCTEVfQ1JUQywKICAgIFZC SU9TX0NNRF9UQkxfSURfX0dFVF9TTVVfQ0xPQ0tfSU5GTywKICAgIFZCSU9TX0NNRF9UQkxfSURf X1NFTEVDVF9DUlRDX1NPVVJDRSwKICAgIFZCSU9TX0NNRF9UQkxfSURfX1NFVF9EQ0VfQ0xPQ0ss CiAgICBWQklPU19DTURfVEJMX0lEX19HRVRfTUVNT1JZX0NMT0NLLAogICAgVkJJT1NfQ01EX1RC TF9JRF9fR0VUX0VOR0lORV9DTE9DSywKICAgIFZCSU9TX0NNRF9UQkxfSURfX1NFVF9DUlRDX1VT SU5HX0RURF9USU1JTkcsCiAgICBWQklPU19DTURfVEJMX0lEX19FWFRFTkFMX0VOQ09ERVJfQ09O VFJPTCwKICAgIFZCSU9TX0NNRF9UQkxfSURfX1BST0NFU1NfSTJDX0NIQU5ORUxfVFJBTlNBQ1RJ T04sCiAgICBWQklPU19DTURfVEJMX0lEX19DT01QVVRFX0dQVV9DTE9DS19QQVJBTSwKICAgIFZC SU9TX0NNRF9UQkxfSURfX0RZTkFNSUNfTUVNT1JZX1NFVFRJTkdTLAogICAgVkJJT1NfQ01EX1RC TF9JRF9fTUVNT1JZX1RSQUlOSU5HLAogICAgVkJJT1NfQ01EX1RCTF9JRF9fU0VUX1ZPTFRBR0Us CiAgICBWQklPU19DTURfVEJMX0lEX19ESUcxX1RSQU5TTUlUVEVSX0NPTlRST0wsCiAgICBWQklP U19DTURfVEJMX0lEX19QUk9DRVNTX0FVWF9DSEFOTkVMX1RSQU5TQUNUSU9OLAogICAgVkJJT1Nf Q01EX1RCTF9JRF9fR0VUX1ZPTFRBR0VfSU5GLAoKICAgIFZCSU9TX0NNRF9UQkxfSURfX1VOREVG SU5FRCwKfTsKIyAzMjc3ICIuL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUv YXRvbWZpcm13YXJlLmgiIDIKI3ByYWdtYSBwYWNrKCkKIyA0MSAiZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIgMgojIDEg Ii4vZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vaW5jbHVkZS9hc2ljX3JlZy9jbGsvY2xr XzEwXzBfMl9vZmZzZXQuaCIgMQojIDQyICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9k aXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5jIiAyCiMgMSAiLi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS8uLi9pbmNsdWRlL2FzaWNfcmVnL2Nsay9jbGtfMTBfMF8yX3NoX21h c2suaCIgMQojIDQzICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Ns a19tZ3IvZGNuMjEvcm5fY2xrX21nci5jIiAyCiMgMSAiLi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS8uLi9pbmNsdWRlL3Jlbm9pcl9pcF9vZmZzZXQuaCIgMQojIDI4ICIuL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1Ly4uL2luY2x1ZGUvcmVub2lyX2lwX29mZnNldC5oIgpzdHJ1Y3QgSVBf QkFTRV9JTlNUQU5DRQp7CiAgICB1bnNpZ25lZCBpbnQgc2VnbWVudFs1XTsKfTsKCnN0cnVjdCBJ UF9CQVNFCnsKICAgIHN0cnVjdCBJUF9CQVNFX0lOU1RBTkNFIGluc3RhbmNlWzddOwp9OwoKCnN0 YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBBQ1BfQkFTRSA9eyB7IHsgeyAweDAyNDAzODAwLCAw eDAwNDgwMDAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0g fSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBBVEhVQl9CQVNFID17IHsgeyB7IDB4 MDAwMDBDMjAsIDB4MDI0MDhDMDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAs IDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIENMS19CQVNFID17 IHsgeyB7IDB4MDAwMTZDMDAsIDB4MDAwMTZFMDAsIDB4MDAwMTcwMDAsIDB4MDAwMTdFMDAsIDAg fSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAs IDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0 IHN0cnVjdCBJUF9CQVNFIERCR1VfSU8wX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDFFMCwgMHgwMjQw QjQwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9 OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgREZfQkFTRSA9eyB7IHsgeyAweDAwMDA3MDAw LCAweDAyNDBCODAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAw IH0gfSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBESU9fQkFTRSA9eyB7IHsgeyAw eDAyNDA0MDAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAw IH0gfSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBETVVfQkFTRSA9eyB7IHsgeyAw eDAwMDAwMDEyLCAweDAwMDAwMEMwLCAweDAwMDAzNEMwLCAweDAwMDA5MDAwLCAweDAyNDAzQzAw IH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CnN0YXRpYyBjb25z dCBzdHJ1Y3QgSVBfQkFTRSBEUENTX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDAxMiwgMHgwMDAwMDBD MCwgMHgwMDAwMzRDMCwgMHgwMDAwOTAwMCwgMHgwMjQwM0MwMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgRlVT RV9CQVNFID17IHsgeyB7IDB4MDAwMTc0MDAsIDB4MDI0MDE0MDAsIDAsIDAsIDAgfSB9LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAs IDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJ UF9CQVNFIEdDX0JBU0UgPXsgeyB7IHsgMHgwMDAwMjAwMCwgMHgwMDAwQTAwMCwgMHgwMjQwMkMw MCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0 aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgSERBX0JBU0UgPXsgeyB7IHsgMHgwMjQwNDgwMCwgMHgw MDRDMDAwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0g fSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgSERQX0JBU0UgPXsgeyB7IHsgMHgwMDAw MEYyMCwgMHgwMjQwQTQwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgSU9IQzBfQkFTRSA9eyB7 IHsgeyAweDAwMDEwMDAwLCAweDAyNDA2MDAwLCAweDA0RUMwMDAwLCAwLCAwIH0gfSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAw IH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAw LCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBf QkFTRSBJU1BfQkFTRSA9eyB7IHsgeyAweDAwMDE4MDAwLCAweDAyNDBCMDAwLCAwLCAwLCAwIH0g fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAw LCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg eyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CnN0YXRpYyBjb25zdCBz dHJ1Y3QgSVBfQkFTRSBMMklNVTBfQkFTRSA9eyB7IHsgeyAweDAwMDA3REMwLCAweDAyNDA3MDAw LCAweDAwOTAwMDAwLCAweDA0RkMwMDAwLCAweDA1NUMwMDAwIH0gfSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0g fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAw LCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAw LCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsg eyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBNTUhV Ql9CQVNFID17IHsgeyB7IDB4MDAwMUEwMDAsIDB4MDI0MDg4MDAsIDAsIDAsIDAgfSB9LAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAs IDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAs IDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7 IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJ UF9CQVNFIE1QMF9CQVNFID17IHsgeyB7IDB4MDAwMTYwMDAsIDB4MDI0M0ZDMDAsIDB4MDBEQzAw MDAsIDB4MDBFMDAwMDAsIDB4MDBFNDAwMDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIE1QMV9CQVNFID17IHsg eyB7IDB4MDAwMTYwMDAsIDB4MDI0MDA0MDAsIDB4MDBFODAwMDAsIDB4MDBFQzAwMDAsIDB4MDBG MDAwMDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAs IDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGlj IGNvbnN0IHN0cnVjdCBJUF9CQVNFIE5CSUYwX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDAwMCwgMHgw MDAwMDAxNCwgMHgwMDAwMEQyMCwgMHgwMDAxMDQwMCwgMHgwMjQxQjAwMCB9IH0sCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9 IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JB U0UgRENOX0JBU0UgPXsgeyB7IHsgMHgwMDAwMDAxMiwgMHgwMDAwMDBDMCwgMHgwMDAwMzRDMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0 IElQX0JBU0UgT1NTU1lTX0JBU0UgPXsgeyB7IHsgMHgwMDAwMTBBMCwgMHgwMjQwQTAwMCwgMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMg Y29uc3Qgc3RydWN0IElQX0JBU0UgUENJRTBfQkFTRSA9eyB7IHsgeyAweDAyNDExODAwLCAweDA0 NDQwMDAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9 IH07CnN0YXRpYyBjb25zdCBzdHJ1Y3QgSVBfQkFTRSBTRE1BMF9CQVNFID17IHsgeyB7IDB4MDAw MDEyNjAsIDB4MDI0MEE4MDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9CQVNFIFNNVUlPX0JBU0UgPXsg eyB7IHsgMHgwMDAxNjgwMCwgMHgwMDAxNkEwMCwgMHgwMjQwMTAwMCwgMHgwMDQ0MDAwMCwgMCB9 IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwg MCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwg MCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qg c3RydWN0IElQX0JBU0UgVEhNX0JBU0UgPXsgeyB7IHsgMHgwMDAxNjYwMCwgMHgwMjQwMEMwMCwg MCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0 aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgVU1DX0JBU0UgPXsgeyB7IHsgMHgwMDAxNDAwMCwgMHgw MjQyNTgwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7IHsgMHgwMDA1NDAwMCwgMHgwMjQyNUMwMCwgMCwgMCwgMCB9IH0sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0sCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwgMCB9IH0s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwgMCwgMCwg MCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsgMCwgMCwg MCwgMCwgMCB9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHsg MCwgMCwgMCwgMCwgMCB9IH0gfSB9OwpzdGF0aWMgY29uc3Qgc3RydWN0IElQX0JBU0UgVVNCMF9C QVNFID17IHsgeyB7IDB4MDI0MkE4MDAsIDB4MDVCMDAwMDAsIDAsIDAsIDAgfSB9LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9LAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAsIDAsIDAg fSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAsIDAsIDAs IDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB7IDAs IDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyB7IDAsIDAsIDAsIDAsIDAgfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyB7IDAsIDAsIDAsIDAsIDAgfSB9IH0gfTsKc3RhdGljIGNvbnN0IHN0cnVjdCBJUF9C QVNFIFVWRDBfQkFTRSA9eyB7IHsgeyAweDAwMDA3ODAwLCAweDAwMDA3RTAwLCAweDAyNDAzMDAw LCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAw LCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsgeyAwLCAwLCAwLCAwLCAwIH0gfSB9IH07CiMgNDQg ImRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9y bl9jbGtfbWdyLmMiIDIKIyA1NyAiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxh eS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIKaW50IHJuX2dldF9hY3RpdmVfZGlzcGxh eV9jbnRfd2EoCiAgc3RydWN0IGRjICpkYywKICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQpCnsK IGludCBpLCBkaXNwbGF5X2NvdW50OwogYm9vbCB0bWRzX3ByZXNlbnQgPSBmYWxzZTsKCiBkaXNw bGF5X2NvdW50ID0gMDsKIGZvciAoaSA9IDA7IGkgPCBjb250ZXh0LT5zdHJlYW1fY291bnQ7IGkr KykgewogIGNvbnN0IHN0cnVjdCBkY19zdHJlYW1fc3RhdGUgKnN0cmVhbSA9IGNvbnRleHQtPnN0 cmVhbXNbaV07CgogIGlmIChzdHJlYW0tPnNpZ25hbCA9PSBTSUdOQUxfVFlQRV9IRE1JX1RZUEVf QSB8fAogICAgc3RyZWFtLT5zaWduYWwgPT0gU0lHTkFMX1RZUEVfRFZJX1NJTkdMRV9MSU5LIHx8 CiAgICBzdHJlYW0tPnNpZ25hbCA9PSBTSUdOQUxfVFlQRV9EVklfRFVBTF9MSU5LKQogICB0bWRz X3ByZXNlbnQgPSB0cnVlOwogfQoKIGZvciAoaSA9IDA7IGkgPCBkYy0+bGlua19jb3VudDsgaSsr KSB7CiAgY29uc3Qgc3RydWN0IGRjX2xpbmsgKmxpbmsgPSBkYy0+bGlua3NbaV07CiMgODQgImRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9j bGtfbWdyLmMiCiAgaWYgKGxpbmstPmNvbm5lY3Rvcl9zaWduYWwgPT0gU0lHTkFMX1RZUEVfVklS VFVBTCB8fAogICAgbGluay0+bGlua19lbmMtPmZ1bmNzLT5pc19kaWdfZW5hYmxlZChsaW5rLT5s aW5rX2VuYykpCiAgIGRpc3BsYXlfY291bnQrKzsKIH0KCgogaWYgKGRpc3BsYXlfY291bnQgPT0g MCAmJiB0bWRzX3ByZXNlbnQpCiAgZGlzcGxheV9jb3VudCA9IDE7CgogcmV0dXJuIGRpc3BsYXlf Y291bnQ7Cn0KCnZvaWQgcm5fdXBkYXRlX2Nsb2NrcyhzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9i YXNlLAogICBzdHJ1Y3QgZGNfc3RhdGUgKmNvbnRleHQsCiAgIGJvb2wgc2FmZV90b19sb3dlcikK ewogc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IgPSAoeyB2b2lkICpfX21wdHIgPSAo dm9pZCAqKShjbGtfbWdyX2Jhc2UpOyBkbyB7IGV4dGVybiB2b2lkIF9fY29tcGlsZXRpbWVfYXNz ZXJ0XzEwMCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50ZXIgdHlwZSBtaXNt YXRjaCBpbiBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRpbl90eXBlc19jb21w YXRpYmxlX3AodHlwZW9mKCooY2xrX21ncl9iYXNlKSksIHR5cGVvZigoKHN0cnVjdCBjbGtfbWdy X2ludGVybmFsICopMCktPmJhc2UpKSAmJiAhX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0 eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2NvbXBpbGV0aW1lX2Fz c2VydF8xMDAoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKikoX19t cHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsLCBiYXNlKSkp OyB9KTsKIHN0cnVjdCBkY19jbG9ja3MgKm5ld19jbG9ja3MgPSAmY29udGV4dC0+YndfY3R4LmJ3 LmRjbi5jbGs7CiBzdHJ1Y3QgZGMgKmRjID0gY2xrX21ncl9iYXNlLT5jdHgtPmRjOwogaW50IGRp c3BsYXlfY291bnQ7CiBib29sIHVwZGF0ZV9kcHBjbGsgPSBmYWxzZTsKIGJvb2wgdXBkYXRlX2Rp c3BjbGsgPSBmYWxzZTsKIGJvb2wgZHBwX2Nsb2NrX2xvd2VyZWQgPSBmYWxzZTsKCiBzdHJ1Y3Qg ZG1jdSAqZG1jdSA9IGNsa19tZ3JfYmFzZS0+Y3R4LT5kYy0+cmVzX3Bvb2wtPmRtY3U7CgogaWYg KGRjLT53b3JrX2Fyb3VuZHMuc2tpcF9jbG9ja191cGRhdGUpCiAgcmV0dXJuOwoKCgoKCiBpZiAo c2FmZV90b19sb3dlcikgewoKICBpZiAoY2xrX21ncl9iYXNlLT5jbGtzLnB3cl9zdGF0ZSAhPSBE Q05fUFdSX1NUQVRFX0xPV19QT1dFUikgewoKICAgZGlzcGxheV9jb3VudCA9IHJuX2dldF9hY3Rp dmVfZGlzcGxheV9jbnRfd2EoZGMsIGNvbnRleHQpOwoKICAgaWYgKGRpc3BsYXlfY291bnQgPT0g MCkgewogICAgcm5fdmJpb3Nfc211X3NldF9kY25fbG93X3Bvd2VyX3N0YXRlKGNsa19tZ3IsIERD Tl9QV1JfU1RBVEVfTE9XX1BPV0VSKTsKCiAgICBjbGtfbWdyX2Jhc2UtPmNsa3MucHdyX3N0YXRl ID0gRENOX1BXUl9TVEFURV9MT1dfUE9XRVI7CiAgIH0KICB9CiB9IGVsc2UgewoKICBpZiAoY2xr X21ncl9iYXNlLT5jbGtzLnB3cl9zdGF0ZSAhPSBEQ05fUFdSX1NUQVRFX01JU1NJT05fTU9ERSkg ewogICBybl92Ymlvc19zbXVfc2V0X2Rjbl9sb3dfcG93ZXJfc3RhdGUoY2xrX21nciwgRENOX1BX Ul9TVEFURV9NSVNTSU9OX01PREUpOwoKICAgY2xrX21ncl9iYXNlLT5jbGtzLnB3cl9zdGF0ZSA9 IERDTl9QV1JfU1RBVEVfTUlTU0lPTl9NT0RFOwogIH0KIH0KCiBpZiAoc2hvdWxkX3NldF9jbG9j ayhzYWZlX3RvX2xvd2VyLCBuZXdfY2xvY2tzLT5waHljbGtfa2h6LCBjbGtfbWdyX2Jhc2UtPmNs a3MucGh5Y2xrX2toeikpIHsKICBjbGtfbWdyX2Jhc2UtPmNsa3MucGh5Y2xrX2toeiA9IG5ld19j bG9ja3MtPnBoeWNsa19raHo7CiAgcm5fdmJpb3Nfc211X3NldF9waHljbGsoY2xrX21nciwgY2xr X21ncl9iYXNlLT5jbGtzLnBoeWNsa19raHopOwogfQoKIGlmIChzaG91bGRfc2V0X2Nsb2NrKHNh ZmVfdG9fbG93ZXIsIG5ld19jbG9ja3MtPmRjZmNsa19raHosIGNsa19tZ3JfYmFzZS0+Y2xrcy5k Y2ZjbGtfa2h6KSkgewogIGNsa19tZ3JfYmFzZS0+Y2xrcy5kY2ZjbGtfa2h6ID0gbmV3X2Nsb2Nr cy0+ZGNmY2xrX2toejsKICBybl92Ymlvc19zbXVfc2V0X2hhcmRfbWluX2RjZmNsayhjbGtfbWdy LCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2toeik7CiB9CgogaWYgKHNob3VsZF9zZXRfY2xv Y2soc2FmZV90b19sb3dlciwKICAgbmV3X2Nsb2Nrcy0+ZGNmY2xrX2RlZXBfc2xlZXBfa2h6LCBj bGtfbWdyX2Jhc2UtPmNsa3MuZGNmY2xrX2RlZXBfc2xlZXBfa2h6KSkgewogIGNsa19tZ3JfYmFz ZS0+Y2xrcy5kY2ZjbGtfZGVlcF9zbGVlcF9raHogPSBuZXdfY2xvY2tzLT5kY2ZjbGtfZGVlcF9z bGVlcF9raHo7CiAgcm5fdmJpb3Nfc211X3NldF9taW5fZGVlcF9zbGVlcF9kY2ZjbGsoY2xrX21n ciwgY2xrX21ncl9iYXNlLT5jbGtzLmRjZmNsa19kZWVwX3NsZWVwX2toeik7CiB9CgoKIGlmICgh KChkYy0+Y3R4LT5kY2VfZW52aXJvbm1lbnQgPT0gRENFX0VOVl9GUEdBX01BWElNVVMpIHx8IChk Yy0+Y3R4LT5kY2VfZW52aXJvbm1lbnQgPT0gRENFX0VOVl9ESUFHKSkpIHsKICBpZiAobmV3X2Ns b2Nrcy0+ZHBwY2xrX2toeiA8IDEwMDAwMCkKICAgbmV3X2Nsb2Nrcy0+ZHBwY2xrX2toeiA9IDEw MDAwMDsKIH0KCiBpZiAoc2hvdWxkX3NldF9jbG9jayhzYWZlX3RvX2xvd2VyLCBuZXdfY2xvY2tz LT5kcHBjbGtfa2h6LCBjbGtfbWdyLT5iYXNlLmNsa3MuZHBwY2xrX2toeikpIHsKICBpZiAoY2xr X21nci0+YmFzZS5jbGtzLmRwcGNsa19raHogPiBuZXdfY2xvY2tzLT5kcHBjbGtfa2h6KQogICBk cHBfY2xvY2tfbG93ZXJlZCA9IHRydWU7CiAgY2xrX21ncl9iYXNlLT5jbGtzLmRwcGNsa19raHog PSBuZXdfY2xvY2tzLT5kcHBjbGtfa2h6OwogIHVwZGF0ZV9kcHBjbGsgPSB0cnVlOwogfQoKIGlm IChzaG91bGRfc2V0X2Nsb2NrKHNhZmVfdG9fbG93ZXIsIG5ld19jbG9ja3MtPmRpc3BjbGtfa2h6 LCBjbGtfbWdyX2Jhc2UtPmNsa3MuZGlzcGNsa19raHopKSB7CiAgY2xrX21ncl9iYXNlLT5jbGtz LmRpc3BjbGtfa2h6ID0gbmV3X2Nsb2Nrcy0+ZGlzcGNsa19raHo7CiAgcm5fdmJpb3Nfc211X3Nl dF9kaXNwY2xrKGNsa19tZ3IsIGNsa19tZ3JfYmFzZS0+Y2xrcy5kaXNwY2xrX2toeik7CgogIHVw ZGF0ZV9kaXNwY2xrID0gdHJ1ZTsKIH0KCiBpZiAoZHBwX2Nsb2NrX2xvd2VyZWQpIHsKCiAgZGNu MjBfdXBkYXRlX2Nsb2Nrc191cGRhdGVfZHBwX2R0byhjbGtfbWdyLCBjb250ZXh0LCBzYWZlX3Rv X2xvd2VyKTsKICBybl92Ymlvc19zbXVfc2V0X2RwcGNsayhjbGtfbWdyLCBjbGtfbWdyX2Jhc2Ut PmNsa3MuZHBwY2xrX2toeik7CiB9IGVsc2UgewoKICBpZiAodXBkYXRlX2RwcGNsayB8fCB1cGRh dGVfZGlzcGNsaykKICAgcm5fdmJpb3Nfc211X3NldF9kcHBjbGsoY2xrX21nciwgY2xrX21ncl9i YXNlLT5jbGtzLmRwcGNsa19raHopOwoKICBpZiAobmV3X2Nsb2Nrcy0+ZHBwY2xrX2toeiA+PSBk Yy0+Y3VycmVudF9zdGF0ZS0+YndfY3R4LmJ3LmRjbi5jbGsuZHBwY2xrX2toeikKICAgZGNuMjBf dXBkYXRlX2Nsb2Nrc191cGRhdGVfZHBwX2R0byhjbGtfbWdyLCBjb250ZXh0LCBzYWZlX3RvX2xv d2VyKTsKIH0KCiBpZiAodXBkYXRlX2Rpc3BjbGsgJiYKICAgZG1jdSAmJiBkbWN1LT5mdW5jcy0+ aXNfZG1jdV9pbml0aWFsaXplZChkbWN1KSkgewoKICBkbWN1LT5mdW5jcy0+c2V0X3Bzcl93YWl0 X2xvb3AoZG1jdSwKICAgY2xrX21ncl9iYXNlLT5jbGtzLmRpc3BjbGtfa2h6IC8gMTAwMCAvIDcp OwogfQp9CgoKc3RhdGljIGludCBnZXRfdmNvX2ZyZXF1ZW5jeV9mcm9tX3JlZyhzdHJ1Y3QgY2xr X21ncl9pbnRlcm5hbCAqY2xrX21ncikKewoKIHN0cnVjdCBmaXhlZDMxXzMyIHBsbF9yZXE7CiB1 bnNpZ25lZCBpbnQgZmJtdWx0X2ZyYWNfdmFsID0gMDsKIHVuc2lnbmVkIGludCBmYm11bHRfaW50 X3ZhbCA9IDA7CgoKCgoKCgogZ2VuZXJpY19yZWdfZ2V0KGNsa19tZ3ItPmJhc2UuY3R4LCAoQ0xL X0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDAwZiksIDB4MTAsIDB4RkZGRjAwMDBM LCAmZmJtdWx0X2ZyYWNfdmFsKTsKIGdlbmVyaWNfcmVnX2dldChjbGtfbWdyLT5iYXNlLmN0eCwg KENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21lbnRbMV0gKyAweDAwMGYpLCAweDAsIDB4MDAwMDAx RkZMLCAmZmJtdWx0X2ludF92YWwpOwoKIHBsbF9yZXEgPSBkY19maXhwdF9mcm9tX2ludChmYm11 bHRfaW50X3ZhbCk7CgoKCgoKIHBsbF9yZXEudmFsdWUgfD0gZmJtdWx0X2ZyYWNfdmFsIDw8IDE2 OwoKCiBwbGxfcmVxID0gZGNfZml4cHRfbXVsX2ludChwbGxfcmVxLCBjbGtfbWdyLT5kZnNfcmVm X2ZyZXFfa2h6KTsKCgogcmV0dXJuIGRjX2ZpeHB0X2Zsb29yKHBsbF9yZXEpOwp9CgpzdGF0aWMg dm9pZCBybl9kdW1wX2Nsa19yZWdpc3RlcnNfaW50ZXJuYWwoc3RydWN0IHJuX2Nsa19pbnRlcm5h bCAqaW50ZXJuYWwsIHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyX2Jhc2UpCnsKIHN0cnVjdCBjbGtf bWdyX2ludGVybmFsICpjbGtfbWdyID0gKHsgdm9pZCAqX19tcHRyID0gKHZvaWQgKikoY2xrX21n cl9iYXNlKTsgZG8geyBleHRlcm4gdm9pZCBfX2NvbXBpbGV0aW1lX2Fzc2VydF8yMjkodm9pZCkg X19hdHRyaWJ1dGVfXygoX19lcnJvcl9fKCJwb2ludGVyIHR5cGUgbWlzbWF0Y2ggaW4gY29udGFp bmVyX29mKCkiKSkpOyBpZiAoISghKCFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVv ZigqKGNsa19tZ3JfYmFzZSkpLCB0eXBlb2YoKChzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqKTAp LT5iYXNlKSkgJiYgIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooY2xrX21n cl9iYXNlKSksIHR5cGVvZih2b2lkKSkpKSkgX19jb21waWxldGltZV9hc3NlcnRfMjI5KCk7IH0g d2hpbGUgKDApOyAoKHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICopKF9fbXB0ciAtIF9fYnVpbHRp bl9vZmZzZXRvZihzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCwgYmFzZSkpKTsgfSk7CgogaW50ZXJu YWwtPkNMSzFfQ0xLM19DVVJSRU5UX0NOVCA9IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFz ZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50WzFdICsgMHgwMDhkKSwgX19mdW5j X18pOwogaW50ZXJuYWwtPkNMSzFfQ0xLM19CWVBBU1NfQ05UTCA9IGRtX3JlYWRfcmVnX2Z1bmMo Y2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50WzFdICsgMHgw MDY3KSwgX19mdW5jX18pOwoKIGludGVybmFsLT5DTEsxX0NMSzNfRFNfQ05UTCA9IGRtX3JlYWRf cmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50 WzFdICsgMHgwMDYwKSwgX19mdW5jX18pOwogaW50ZXJuYWwtPkNMSzFfQ0xLM19BTExPV19EUyA9 IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0YW5jZVsw XS5zZWdtZW50WzFdICsgMHgwMDYxKSwgX19mdW5jX18pOwoKIGludGVybmFsLT5DTEsxX0NMSzFf Q1VSUkVOVF9DTlQgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3ItPmJhc2UuY3R4LCAoQ0xLX0JB U0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA4YiksIF9fZnVuY19fKTsKIGludGVybmFs LT5DTEsxX0NMSzFfQllQQVNTX0NOVEwgPSBkbV9yZWFkX3JlZ19mdW5jKGNsa19tZ3ItPmJhc2Uu Y3R4LCAoQ0xLX0JBU0UuaW5zdGFuY2VbMF0uc2VnbWVudFsxXSArIDB4MDA1MyksIF9fZnVuY19f KTsKCiBpbnRlcm5hbC0+Q0xLMV9DTEsyX0NVUlJFTlRfQ05UID0gZG1fcmVhZF9yZWdfZnVuYyhj bGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21lbnRbMV0gKyAweDAw OGMpLCBfX2Z1bmNfXyk7CiBpbnRlcm5hbC0+Q0xLMV9DTEsyX0JZUEFTU19DTlRMID0gZG1fcmVh ZF9yZWdfZnVuYyhjbGtfbWdyLT5iYXNlLmN0eCwgKENMS19CQVNFLmluc3RhbmNlWzBdLnNlZ21l bnRbMV0gKyAweDAwNWQpLCBfX2Z1bmNfXyk7CgogaW50ZXJuYWwtPkNMSzFfQ0xLMF9DVVJSRU5U X0NOVCA9IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChDTEtfQkFTRS5pbnN0 YW5jZVswXS5zZWdtZW50WzFdICsgMHgwMDhhKSwgX19mdW5jX18pOwogaW50ZXJuYWwtPkNMSzFf Q0xLMF9CWVBBU1NfQ05UTCA9IGRtX3JlYWRfcmVnX2Z1bmMoY2xrX21nci0+YmFzZS5jdHgsIChD TEtfQkFTRS5pbnN0YW5jZVswXS5zZWdtZW50WzFdICsgMHgwMDQ5KSwgX19mdW5jX18pOwp9CgoK c3RhdGljIHZvaWQgcm5fZHVtcF9jbGtfcmVnaXN0ZXJzKHN0cnVjdCBjbGtfc3RhdGVfcmVnaXN0 ZXJzX2FuZF9ieXBhc3MgKnJlZ3NfYW5kX2J5cGFzcywKICBzdHJ1Y3QgY2xrX21nciAqY2xrX21n cl9iYXNlLCBzdHJ1Y3QgY2xrX2xvZ19pbmZvICpsb2dfaW5mbykKewogc3RydWN0IHJuX2Nsa19p bnRlcm5hbCBpbnRlcm5hbCA9IHswfTsKIGNoYXIgKmJ5cGFzc19jbGtzWzVdID0geyIweDAgREZT IiwgIjB4MSBSRUZDTEsiLCAiMHgyIEVSUk9SIiwgIjB4MyA0MDAgRkNIIiwgIjB4NCA2MDAgRkNI In07CiB1bnNpZ25lZCBpbnQgY2hhcnNfcHJpbnRlZCA9IDA7CiB1bnNpZ25lZCBpbnQgcmVtYWlu aW5nX2J1ZmZlciA9IGxvZ19pbmZvLT5idWZTaXplOwoKIHJuX2R1bXBfY2xrX3JlZ2lzdGVyc19p bnRlcm5hbCgmaW50ZXJuYWwsIGNsa19tZ3JfYmFzZSk7CgogcmVnc19hbmRfYnlwYXNzLT5kY2Zj bGsgPSBpbnRlcm5hbC5DTEsxX0NMSzNfQ1VSUkVOVF9DTlQgLyAxMDsKIHJlZ3NfYW5kX2J5cGFz cy0+ZGNmX2RlZXBfc2xlZXBfZGl2aWRlciA9IGludGVybmFsLkNMSzFfQ0xLM19EU19DTlRMIC8g MTA7CiByZWdzX2FuZF9ieXBhc3MtPmRjZl9kZWVwX3NsZWVwX2FsbG93ID0gaW50ZXJuYWwuQ0xL MV9DTEszX0FMTE9XX0RTOwogcmVnc19hbmRfYnlwYXNzLT5kcHJlZmNsayA9IGludGVybmFsLkNM SzFfQ0xLMl9DVVJSRU5UX0NOVCAvIDEwOwogcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrID0gaW50 ZXJuYWwuQ0xLMV9DTEswX0NVUlJFTlRfQ05UIC8gMTA7CiByZWdzX2FuZF9ieXBhc3MtPmRwcGNs ayA9IGludGVybmFsLkNMSzFfQ0xLMV9DVVJSRU5UX0NOVCAvIDEwOwoKIHJlZ3NfYW5kX2J5cGFz cy0+ZHBwY2xrX2J5cGFzcyA9IGludGVybmFsLkNMSzFfQ0xLMV9CWVBBU1NfQ05UTCAmIDB4MDAw NzsKIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRwcGNsa19ieXBhc3MgPCAwIHx8IHJlZ3NfYW5kX2J5 cGFzcy0+ZHBwY2xrX2J5cGFzcyA+IDQpCiAgcmVnc19hbmRfYnlwYXNzLT5kcHBjbGtfYnlwYXNz ID0gMDsKIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmY2xrX2J5cGFzcyA9IGludGVybmFsLkNMSzFfQ0xL M19CWVBBU1NfQ05UTCAmIDB4MDAwNzsKIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRjZmNsa19ieXBh c3MgPCAwIHx8IHJlZ3NfYW5kX2J5cGFzcy0+ZGNmY2xrX2J5cGFzcyA+IDQpCiAgcmVnc19hbmRf YnlwYXNzLT5kY2ZjbGtfYnlwYXNzID0gMDsKIHJlZ3NfYW5kX2J5cGFzcy0+ZGlzcGNsa19ieXBh c3MgPSBpbnRlcm5hbC5DTEsxX0NMSzBfQllQQVNTX0NOVEwgJiAweDAwMDc7CiBpZiAocmVnc19h bmRfYnlwYXNzLT5kaXNwY2xrX2J5cGFzcyA8IDAgfHwgcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xr X2J5cGFzcyA+IDQpCiAgcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrX2J5cGFzcyA9IDA7CiByZWdz X2FuZF9ieXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA9IGludGVybmFsLkNMSzFfQ0xLMl9CWVBBU1Nf Q05UTCAmIDB4MDAwNzsKIGlmIChyZWdzX2FuZF9ieXBhc3MtPmRwcmVmY2xrX2J5cGFzcyA8IDAg fHwgcmVnc19hbmRfYnlwYXNzLT5kcHJlZmNsa19ieXBhc3MgPiA0KQogIHJlZ3NfYW5kX2J5cGFz cy0+ZHByZWZjbGtfYnlwYXNzID0gMDsKCiBpZiAobG9nX2luZm8tPmVuYWJsZWQpIHsKICBjaGFy c19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZm ZXIsICJjbGtfdHlwZSxjbGtfdmFsdWUsZGVlcHNsZWVwX2NudGwsZGVlcHNsZWVwX2FsbG93LGJ5 cGFzc1xuIik7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwogICpsb2dfaW5m by0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKICBsb2dfaW5mby0+cEJ1ZiAr PSBjaGFyc19wcmludGVkOwoKICBjaGFyc19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2lu Zm8tPnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJkY2ZjbGssJWQsJWQsJWQsJXNcbiIsCiAgIHJl Z3NfYW5kX2J5cGFzcy0+ZGNmY2xrLAogICByZWdzX2FuZF9ieXBhc3MtPmRjZl9kZWVwX3NsZWVw X2RpdmlkZXIsCiAgIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmX2RlZXBfc2xlZXBfYWxsb3csCiAgIGJ5 cGFzc19jbGtzWyhpbnQpIHJlZ3NfYW5kX2J5cGFzcy0+ZGNmY2xrX2J5cGFzc10pOwogIHJlbWFp bmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmlu dGVkICs9IGNoYXJzX3ByaW50ZWQ7CiAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsK CiAgY2hhcnNfcHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5p bmdfYnVmZmVyLCAiZHByZWZjbGssJWQsTi9BLE4vQSwlc1xuIiwKICAgcmVnc19hbmRfYnlwYXNz LT5kcHJlZmNsaywKICAgYnlwYXNzX2Nsa3NbKGludCkgcmVnc19hbmRfYnlwYXNzLT5kcHJlZmNs a19ieXBhc3NdKTsKICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAgKmxvZ19p bmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZvLT5wQnVm ICs9IGNoYXJzX3ByaW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2df aW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgImRpc3BjbGssJWQsTi9BLE4vQSwlc1xuIiwK ICAgcmVnc19hbmRfYnlwYXNzLT5kaXNwY2xrLAogICBieXBhc3NfY2xrc1soaW50KSByZWdzX2Fu ZF9ieXBhc3MtPmRpc3BjbGtfYnlwYXNzXSk7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19w cmludGVkOwogICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsK ICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoKCiAgY2hhcnNfcHJpbnRlZCA9IHNu cHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiU1BMSVRcbiIp OwogIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNfcHJpbnRlZDsKICAqbG9nX2luZm8tPnN1bV9j aGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7CiAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNf cHJpbnRlZDsKCgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1 ZiwgcmVtYWluaW5nX2J1ZmZlciwgInJlZ19uYW1lLHZhbHVlLGNsa190eXBlXG4iKTsKICByZW1h aW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAgKmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJp bnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7 CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1ZiwgcmVtYWlu aW5nX2J1ZmZlciwgIkNMSzFfQ0xLM19DVVJSRU5UX0NOVCwlZCxkY2ZjbGtcbiIsCiAgICBpbnRl cm5hbC5DTEsxX0NMSzNfQ1VSUkVOVF9DTlQpOwogIHJlbWFpbmluZ19idWZmZXIgLT0gY2hhcnNf cHJpbnRlZDsKICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNoYXJzX3ByaW50ZWQ7 CiAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKCiAgY2hhcnNfcHJpbnRlZCA9IHNu cHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVyLCAiQ0xLMV9DTEsz X0RTX0NOVEwsJWQsZGNmX2RlZXBfc2xlZXBfZGl2aWRlclxuIiwKICAgICBpbnRlcm5hbC5DTEsx X0NMSzNfRFNfQ05UTCk7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwogICps b2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKICBsb2dfaW5mby0+ cEJ1ZiArPSBjaGFyc19wcmludGVkOwoKICBjaGFyc19wcmludGVkID0gc25wcmludGZfY291bnQo bG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJDTEsxX0NMSzNfQUxMT1dfRFMsJWQs ZGNmX2RlZXBfc2xlZXBfYWxsb3dcbiIsCiAgICAgaW50ZXJuYWwuQ0xLMV9DTEszX0FMTE9XX0RT KTsKICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAgKmxvZ19pbmZvLT5zdW1f Y2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJz X3ByaW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1 ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLMl9DVVJSRU5UX0NOVCwlZCxkcHJlZmNsa1xu IiwKICAgICBpbnRlcm5hbC5DTEsxX0NMSzJfQ1VSUkVOVF9DTlQpOwogIHJlbWFpbmluZ19idWZm ZXIgLT0gY2hhcnNfcHJpbnRlZDsKICAqbG9nX2luZm8tPnN1bV9jaGFyc19wcmludGVkICs9IGNo YXJzX3ByaW50ZWQ7CiAgbG9nX2luZm8tPnBCdWYgKz0gY2hhcnNfcHJpbnRlZDsKCiAgY2hhcnNf cHJpbnRlZCA9IHNucHJpbnRmX2NvdW50KGxvZ19pbmZvLT5wQnVmLCByZW1haW5pbmdfYnVmZmVy LCAiQ0xLMV9DTEswX0NVUlJFTlRfQ05ULCVkLGRpc3BjbGtcbiIsCiAgICAgaW50ZXJuYWwuQ0xL MV9DTEswX0NVUlJFTlRfQ05UKTsKICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7 CiAgKmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19p bmZvLT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9j b3VudChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLMV9DVVJSRU5U X0NOVCwlZCxkcHBjbGtcbiIsCiAgICAgaW50ZXJuYWwuQ0xLMV9DTEsxX0NVUlJFTlRfQ05UKTsK ICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAgKmxvZ19pbmZvLT5zdW1fY2hh cnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZvLT5wQnVmICs9IGNoYXJzX3By aW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3VudChsb2dfaW5mby0+cEJ1Ziwg cmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLM19CWVBBU1NfQ05UTCwlZCxkY2ZjbGtfYnlwYXNz XG4iLAogICAgIGludGVybmFsLkNMSzFfQ0xLM19CWVBBU1NfQ05UTCk7CiAgcmVtYWluaW5nX2J1 ZmZlciAtPSBjaGFyc19wcmludGVkOwogICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0g Y2hhcnNfcHJpbnRlZDsKICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoKICBjaGFy c19wcmludGVkID0gc25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZm ZXIsICJDTEsxX0NMSzJfQllQQVNTX0NOVEwsJWQsZHByZWZjbGtfYnlwYXNzXG4iLAogICAgIGlu dGVybmFsLkNMSzFfQ0xLMl9CWVBBU1NfQ05UTCk7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFy c19wcmludGVkOwogICpsb2dfaW5mby0+c3VtX2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRl ZDsKICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFyc19wcmludGVkOwoKICBjaGFyc19wcmludGVkID0g c25wcmludGZfY291bnQobG9nX2luZm8tPnBCdWYsIHJlbWFpbmluZ19idWZmZXIsICJDTEsxX0NM SzBfQllQQVNTX0NOVEwsJWQsZGlzcGNsa19ieXBhc3NcbiIsCiAgICAgaW50ZXJuYWwuQ0xLMV9D TEswX0JZUEFTU19DTlRMKTsKICByZW1haW5pbmdfYnVmZmVyIC09IGNoYXJzX3ByaW50ZWQ7CiAg KmxvZ19pbmZvLT5zdW1fY2hhcnNfcHJpbnRlZCArPSBjaGFyc19wcmludGVkOwogIGxvZ19pbmZv LT5wQnVmICs9IGNoYXJzX3ByaW50ZWQ7CgogIGNoYXJzX3ByaW50ZWQgPSBzbnByaW50Zl9jb3Vu dChsb2dfaW5mby0+cEJ1ZiwgcmVtYWluaW5nX2J1ZmZlciwgIkNMSzFfQ0xLMV9CWVBBU1NfQ05U TCwlZCxkcHBjbGtfYnlwYXNzXG4iLAogICAgIGludGVybmFsLkNMSzFfQ0xLMV9CWVBBU1NfQ05U TCk7CiAgcmVtYWluaW5nX2J1ZmZlciAtPSBjaGFyc19wcmludGVkOwogICpsb2dfaW5mby0+c3Vt X2NoYXJzX3ByaW50ZWQgKz0gY2hhcnNfcHJpbnRlZDsKICBsb2dfaW5mby0+cEJ1ZiArPSBjaGFy c19wcmludGVkOwogfQp9CgoKdm9pZCBybl9nZXRfY2xrX3N0YXRlcyhzdHJ1Y3QgY2xrX21nciAq Y2xrX21ncl9iYXNlLCBzdHJ1Y3QgY2xrX3N0YXRlcyAqcykKewogc3RydWN0IGNsa19zdGF0ZV9y ZWdpc3RlcnNfYW5kX2J5cGFzcyBzYiA9IHsgMCB9Owogc3RydWN0IGNsa19sb2dfaW5mbyBsb2df aW5mbyA9IHsgMCB9OwoKIHJuX2R1bXBfY2xrX3JlZ2lzdGVycygmc2IsIGNsa19tZ3JfYmFzZSwg JmxvZ19pbmZvKTsKCiBzLT5kcHJlZmNsa19raHogPSBzYi5kcHJlZmNsayAqIDEwMDA7Cn0KCnZv aWQgcm5fZW5hYmxlX3BtZV93YShzdHJ1Y3QgY2xrX21nciAqY2xrX21ncl9iYXNlKQp7CiBzdHJ1 Y3QgY2xrX21ncl9pbnRlcm5hbCAqY2xrX21nciA9ICh7IHZvaWQgKl9fbXB0ciA9ICh2b2lkICop KGNsa19tZ3JfYmFzZSk7IGRvIHsgZXh0ZXJuIHZvaWQgX19jb21waWxldGltZV9hc3NlcnRfMzk0 KHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXygicG9pbnRlciB0eXBlIG1pc21hdGNoIGlu IGNvbnRhaW5lcl9vZigpIikpKTsgaWYgKCEoISghX19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVf cCh0eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwgdHlwZW9mKCgoc3RydWN0IGNsa19tZ3JfaW50ZXJu YWwgKikwKS0+YmFzZSkpICYmICFfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigq KGNsa19tZ3JfYmFzZSkpLCB0eXBlb2Yodm9pZCkpKSkpIF9fY29tcGlsZXRpbWVfYXNzZXJ0XzM5 NCgpOyB9IHdoaWxlICgwKTsgKChzdHJ1Y3QgY2xrX21ncl9pbnRlcm5hbCAqKShfX21wdHIgLSBf X2J1aWx0aW5fb2Zmc2V0b2Yoc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwsIGJhc2UpKSk7IH0pOwoK IHJuX3ZiaW9zX3NtdV9lbmFibGVfcG1lX3dhKGNsa19tZ3IpOwp9Cgp2b2lkIHJuX2luaXRfY2xv Y2tzKHN0cnVjdCBjbGtfbWdyICpjbGtfbWdyKQp7CiBtZW1zZXQoJihjbGtfbWdyLT5jbGtzKSwg MCwgc2l6ZW9mKHN0cnVjdCBkY19jbG9ja3MpKTsKCiBjbGtfbWdyLT5jbGtzLnBfc3RhdGVfY2hh bmdlX3N1cHBvcnQgPSB0cnVlOwogY2xrX21nci0+Y2xrcy5wcmV2X3Bfc3RhdGVfY2hhbmdlX3N1 cHBvcnQgPSB0cnVlOwogY2xrX21nci0+Y2xrcy5wd3Jfc3RhdGUgPSBEQ05fUFdSX1NUQVRFX1VO S05PV047Cn0KCnZvaWQgYnVpbGRfd2F0ZXJtYXJrX3JhbmdlcyhzdHJ1Y3QgY2xrX2J3X3BhcmFt cyAqYndfcGFyYW1zLCBzdHJ1Y3QgcHBfc211X3dtX3JhbmdlX3NldHMgKnJhbmdlcykKewogaW50 IGksIG51bV92YWxpZF9zZXRzOwoKIG51bV92YWxpZF9zZXRzID0gMDsKCiBmb3IgKGkgPSAwOyBp IDwgNDsgaSsrKSB7CgogIGlmICghYndfcGFyYW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLnZhbGlk KQogICBjb250aW51ZTsKCiAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFsaWRfc2V0c10u d21faW5zdCA9IGJ3X3BhcmFtcy0+d21fdGFibGUuZW50cmllc1tpXS53bV9pbnN0OwogIHJhbmdl cy0+cmVhZGVyX3dtX3NldHNbbnVtX3ZhbGlkX3NldHNdLndtX3R5cGUgPSBid19wYXJhbXMtPndt X3RhYmxlLmVudHJpZXNbaV0ud21fdHlwZTsKCiAgcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1f dmFsaWRfc2V0c10ubWluX2ZpbGxfY2xrX21oeiA9IDB4MDsKICByYW5nZXMtPnJlYWRlcl93bV9z ZXRzW251bV92YWxpZF9zZXRzXS5tYXhfZmlsbF9jbGtfbWh6ID0gMHhGRkZGOwoKCiAgaWYgKHJh bmdlcy0+cmVhZGVyX3dtX3NldHNbbnVtX3ZhbGlkX3NldHNdLndtX3R5cGUgPT0gV01fVFlQRV9Q U1RBVEVfQ0hHKSB7CiAgIGlmIChpID09IDApCiAgICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251 bV92YWxpZF9zZXRzXS5taW5fZHJhaW5fY2xrX21oeiA9IDA7CiAgIGVsc2UgewoKICAgIHJhbmdl cy0+cmVhZGVyX3dtX3NldHNbbnVtX3ZhbGlkX3NldHNdLm1pbl9kcmFpbl9jbGtfbWh6ID0gYndf cGFyYW1zLT5jbGtfdGFibGUuZW50cmllc1tpIC0gMV0uZGNmY2xrX21oeiArIDE7CiAgIH0KICAg cmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tudW1fdmFsaWRfc2V0c10ubWF4X2RyYWluX2Nsa19taHog PSBid19wYXJhbXMtPmNsa190YWJsZS5lbnRyaWVzW2ldLmRjZmNsa19taHo7CgogIH0gZWxzZSB7 CgogICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS5taW5fZmlsbF9jbGtf bWh6ID0gMHgwOwogICByYW5nZXMtPnJlYWRlcl93bV9zZXRzW251bV92YWxpZF9zZXRzXS5tYXhf ZmlsbF9jbGtfbWh6ID0gMHhGRkZGOwoKCiAgIHJhbmdlcy0+cmVhZGVyX3dtX3NldHNbbnVtX3Zh bGlkX3NldHMgLSAxXS5tYXhfZmlsbF9jbGtfbWh6ID0gMHhGRkZGOwogIH0KICBudW1fdmFsaWRf c2V0cysrOwogfQoKICh7IGludCBfX3JldF93YXJuX29uID0gISEoIShudW1fdmFsaWRfc2V0cyAh PSAwKSk7IGlmIChfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBk byB7IGFzbSBfX2lubGluZSB2b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIg Ii5wdXNoc2VjdGlvbiBfX2J1Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIg IiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAi IC0gMmIiICJcdCMgYnVnX2VudHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50 cnk6OmxpbmVcbiIgIlx0LndvcmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9y ZyAyYislYzNcbiIgIi5wb3BzZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvLi4vZGlzcGxheS9kYy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDQ0 NiksICJpIiAoKDEgPDwgMCl8KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19l bnRyeSkpKTsgfSB3aGlsZSAoMCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNl Y3Rpb24gLmRpc2NhcmQucmVhY2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3Bz ZWN0aW9uXG5cdCIgOiA6ICJpIiAoNDgpKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhw ZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKTsgfSk7CiByYW5nZXMtPm51bV9yZWFkZXJfd21fc2V0 cyA9IG51bV92YWxpZF9zZXRzOwoKCiByYW5nZXMtPnJlYWRlcl93bV9zZXRzWzBdLm1pbl9kcmFp bl9jbGtfbWh6ID0gMHgwOwogcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1swXS5taW5fZmlsbF9jbGtf bWh6ID0gMHgwOwogcmFuZ2VzLT5yZWFkZXJfd21fc2V0c1tyYW5nZXMtPm51bV9yZWFkZXJfd21f c2V0cyAtIDFdLm1heF9kcmFpbl9jbGtfbWh6ID0gMHhGRkZGOwogcmFuZ2VzLT5yZWFkZXJfd21f c2V0c1tyYW5nZXMtPm51bV9yZWFkZXJfd21fc2V0cyAtIDFdLm1heF9maWxsX2Nsa19taHogPSAw eEZGRkY7CgoKIHJhbmdlcy0+bnVtX3dyaXRlcl93bV9zZXRzID0gMTsKIHJhbmdlcy0+d3JpdGVy X3dtX3NldHNbMF0ud21faW5zdCA9IDA7CiByYW5nZXMtPndyaXRlcl93bV9zZXRzWzBdLm1pbl9m aWxsX2Nsa19taHogPSAweDA7CiByYW5nZXMtPndyaXRlcl93bV9zZXRzWzBdLm1heF9maWxsX2Ns a19taHogPSAweEZGRkY7CiByYW5nZXMtPndyaXRlcl93bV9zZXRzWzBdLm1pbl9kcmFpbl9jbGtf bWh6ID0gMHgwOwogcmFuZ2VzLT53cml0ZXJfd21fc2V0c1swXS5tYXhfZHJhaW5fY2xrX21oeiA9 IDB4RkZGRjsKCn0KCnN0YXRpYyB2b2lkIHJuX25vdGlmeV93bV9yYW5nZXMoc3RydWN0IGNsa19t Z3IgKmNsa19tZ3JfYmFzZSkKewogc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgKmRlYnVnID0gJmNs a19tZ3JfYmFzZS0+Y3R4LT5kYy0+ZGVidWc7CiBzdHJ1Y3QgcHBfc211X3dtX3JhbmdlX3NldHMg cmFuZ2VzID0gezB9Owogc3RydWN0IGNsa19tZ3JfaW50ZXJuYWwgKmNsa19tZ3IgPSAoeyB2b2lk ICpfX21wdHIgPSAodm9pZCAqKShjbGtfbWdyX2Jhc2UpOyBkbyB7IGV4dGVybiB2b2lkIF9fY29t cGlsZXRpbWVfYXNzZXJ0XzQ2OSh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX2Vycm9yX18oInBvaW50 ZXIgdHlwZSBtaXNtYXRjaCBpbiBjb250YWluZXJfb2YoKSIpKSk7IGlmICghKCEoIV9fYnVpbHRp bl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCooY2xrX21ncl9iYXNlKSksIHR5cGVvZigoKHN0 cnVjdCBjbGtfbWdyX2ludGVybmFsICopMCktPmJhc2UpKSAmJiAhX19idWlsdGluX3R5cGVzX2Nv bXBhdGlibGVfcCh0eXBlb2YoKihjbGtfbWdyX2Jhc2UpKSwgdHlwZW9mKHZvaWQpKSkpKSBfX2Nv bXBpbGV0aW1lX2Fzc2VydF80NjkoKTsgfSB3aGlsZSAoMCk7ICgoc3RydWN0IGNsa19tZ3JfaW50 ZXJuYWwgKikoX19tcHRyIC0gX19idWlsdGluX29mZnNldG9mKHN0cnVjdCBjbGtfbWdyX2ludGVy bmFsLCBiYXNlKSkpOyB9KTsKIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSA9IGNsa19tZ3It PnBwX3NtdTsKCiBpZiAoIWRlYnVnLT5kaXNhYmxlX3BwbGliX3dtX3JhbmdlKSB7CiAgYnVpbGRf d2F0ZXJtYXJrX3JhbmdlcyhjbGtfbWdyX2Jhc2UtPmJ3X3BhcmFtcywgJnJhbmdlcyk7CgoKICBp ZiAocHBfc211ICYmIHBwX3NtdS0+cm5fZnVuY3Muc2V0X3dtX3JhbmdlcykKICAgcHBfc211LT5y bl9mdW5jcy5zZXRfd21fcmFuZ2VzKCZwcF9zbXUtPnJuX2Z1bmNzLnBwX3NtdSwgJnJhbmdlcyk7 CiB9Cgp9CgpzdGF0aWMgYm9vbCBybl9hcmVfY2xvY2tfc3RhdGVzX2VxdWFsKHN0cnVjdCBkY19j bG9ja3MgKmEsCiAgc3RydWN0IGRjX2Nsb2NrcyAqYikKewogaWYgKGEtPmRpc3BjbGtfa2h6ICE9 IGItPmRpc3BjbGtfa2h6KQogIHJldHVybiBmYWxzZTsKIGVsc2UgaWYgKGEtPmRwcGNsa19raHog IT0gYi0+ZHBwY2xrX2toeikKICByZXR1cm4gZmFsc2U7CiBlbHNlIGlmIChhLT5kY2ZjbGtfa2h6 ICE9IGItPmRjZmNsa19raHopCiAgcmV0dXJuIGZhbHNlOwogZWxzZSBpZiAoYS0+ZGNmY2xrX2Rl ZXBfc2xlZXBfa2h6ICE9IGItPmRjZmNsa19kZWVwX3NsZWVwX2toeikKICByZXR1cm4gZmFsc2U7 CgogcmV0dXJuIHRydWU7Cn0KCgpzdGF0aWMgc3RydWN0IGNsa19tZ3JfZnVuY3MgZGNuMjFfZnVu Y3MgPSB7CiAuZ2V0X2RwX3JlZl9jbGtfZnJlcXVlbmN5ID0gZGNlMTJfZ2V0X2RwX3JlZl9mcmVx X2toeiwKIC51cGRhdGVfY2xvY2tzID0gcm5fdXBkYXRlX2Nsb2NrcywKIC5pbml0X2Nsb2NrcyA9 IHJuX2luaXRfY2xvY2tzLAogLmVuYWJsZV9wbWVfd2EgPSBybl9lbmFibGVfcG1lX3dhLAogLmFy ZV9jbG9ja19zdGF0ZXNfZXF1YWwgPSBybl9hcmVfY2xvY2tfc3RhdGVzX2VxdWFsLAogLm5vdGlm eV93bV9yYW5nZXMgPSBybl9ub3RpZnlfd21fcmFuZ2VzCn07CgpzdHJ1Y3QgY2xrX2J3X3BhcmFt cyBybl9id19wYXJhbXMgPSB7CiAudnJhbV90eXBlID0gRGRyNE1lbVR5cGUsCiAubnVtX2NoYW5u ZWxzID0gMSwKIC5jbGtfdGFibGUgPSB7CiAgLmVudHJpZXMgPSB7CiAgIHsKICAgIC52b2x0YWdl ID0gMCwKICAgIC5kY2ZjbGtfbWh6ID0gNDAwLAogICAgLmZjbGtfbWh6ID0gNDAwLAogICAgLm1l bWNsa19taHogPSA4MDAsCiAgICAuc29jY2xrX21oeiA9IDAsCiAgIH0sCiAgIHsKICAgIC52b2x0 YWdlID0gMCwKICAgIC5kY2ZjbGtfbWh6ID0gNDgzLAogICAgLmZjbGtfbWh6ID0gODAwLAogICAg Lm1lbWNsa19taHogPSAxNjAwLAogICAgLnNvY2Nsa19taHogPSAwLAogICB9LAogICB7CiAgICAu dm9sdGFnZSA9IDAsCiAgICAuZGNmY2xrX21oeiA9IDYwMiwKICAgIC5mY2xrX21oeiA9IDEwNjcs CiAgICAubWVtY2xrX21oeiA9IDEwNjcsCiAgICAuc29jY2xrX21oeiA9IDAsCiAgIH0sCiAgIHsK ICAgIC52b2x0YWdlID0gMCwKICAgIC5kY2ZjbGtfbWh6ID0gNzM4LAogICAgLmZjbGtfbWh6ID0g MTMzMywKICAgIC5tZW1jbGtfbWh6ID0gMTYwMCwKICAgIC5zb2NjbGtfbWh6ID0gMCwKICAgfSwK ICB9LAoKICAubnVtX2VudHJpZXMgPSA0LAogfSwKCn07CgpzdHJ1Y3Qgd21fdGFibGUgZGRyNF93 bV90YWJsZSA9IHsKIC5lbnRyaWVzID0gewogIHsKICAgLndtX2luc3QgPSAwLAogICAud21fdHlw ZSA9IFdNX1RZUEVfUFNUQVRFX0NIRywKICAgLnBzdGF0ZV9sYXRlbmN5X3VzID0gMTEuNzIsCiAg IC5zcl9leGl0X3RpbWVfdXMgPSA2LjA5LAogICAuc3JfZW50ZXJfcGx1c19leGl0X3RpbWVfdXMg PSA3LjE0LAogICAudmFsaWQgPSB0cnVlLAogIH0sCiAgewogICAud21faW5zdCA9IDEsCiAgIC53 bV90eXBlID0gV01fVFlQRV9QU1RBVEVfQ0hHLAogICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS43 MiwKICAgLnNyX2V4aXRfdGltZV91cyA9IDEwLjEyLAogICAuc3JfZW50ZXJfcGx1c19leGl0X3Rp bWVfdXMgPSAxMS40OCwKICAgLnZhbGlkID0gdHJ1ZSwKICB9LAogIHsKICAgLndtX2luc3QgPSAy LAogICAud21fdHlwZSA9IFdNX1RZUEVfUFNUQVRFX0NIRywKICAgLnBzdGF0ZV9sYXRlbmN5X3Vz ID0gMTEuNzIsCiAgIC5zcl9leGl0X3RpbWVfdXMgPSAxMC4xMiwKICAgLnNyX2VudGVyX3BsdXNf ZXhpdF90aW1lX3VzID0gMTEuNDgsCiAgIC52YWxpZCA9IHRydWUsCiAgfSwKICB7CiAgIC53bV9p bnN0ID0gMywKICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcsCiAgIC5wc3RhdGVfbGF0 ZW5jeV91cyA9IDExLjcyLAogICAuc3JfZXhpdF90aW1lX3VzID0gMTAuMTIsCiAgIC5zcl9lbnRl cl9wbHVzX2V4aXRfdGltZV91cyA9IDExLjQ4LAogICAudmFsaWQgPSB0cnVlLAogIH0sCiB9Cn07 CgpzdHJ1Y3Qgd21fdGFibGUgbHBkZHI0X3dtX3RhYmxlID0gewogLmVudHJpZXMgPSB7CiAgewog ICAud21faW5zdCA9IDAsCiAgIC53bV90eXBlID0gV01fVFlQRV9QU1RBVEVfQ0hHLAogICAucHN0 YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKICAgLnNyX2V4aXRfdGltZV91cyA9IDUuMzIsCiAg IC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9IDYuMzgsCiAgIC52YWxpZCA9IHRydWUsCiAg fSwKICB7CiAgIC53bV9pbnN0ID0gMSwKICAgLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEcs CiAgIC5wc3RhdGVfbGF0ZW5jeV91cyA9IDExLjY1MzMzLAogICAuc3JfZXhpdF90aW1lX3VzID0g OS44MiwKICAgLnNyX2VudGVyX3BsdXNfZXhpdF90aW1lX3VzID0gMTEuMTk2LAogICAudmFsaWQg PSB0cnVlLAogIH0sCiAgewogICAud21faW5zdCA9IDIsCiAgIC53bV90eXBlID0gV01fVFlQRV9Q U1RBVEVfQ0hHLAogICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKICAgLnNyX2V4aXRf dGltZV91cyA9IDkuODksCiAgIC5zcl9lbnRlcl9wbHVzX2V4aXRfdGltZV91cyA9IDExLjI0LAog ICAudmFsaWQgPSB0cnVlLAogIH0sCiAgewogICAud21faW5zdCA9IDMsCiAgIC53bV90eXBlID0g V01fVFlQRV9QU1RBVEVfQ0hHLAogICAucHN0YXRlX2xhdGVuY3lfdXMgPSAxMS42NTMzMywKICAg LnNyX2V4aXRfdGltZV91cyA9IDkuNzQ4LAogICAuc3JfZW50ZXJfcGx1c19leGl0X3RpbWVfdXMg PSAxMS4xMDIsCiAgIC52YWxpZCA9IHRydWUsCiAgfSwKIH0KfTsKCgpzdGF0aWMgdW5zaWduZWQg aW50IGZpbmRfZGNmY2xrX2Zvcl92b2x0YWdlKHN0cnVjdCBkcG1fY2xvY2tzICpjbG9ja190YWJs ZSwgdW5zaWduZWQgaW50IHZvbHRhZ2UpCnsKIGludCBpOwoKIGZvciAoaSA9IDA7IGkgPCA4OyBp KyspIHsKICBpZiAoY2xvY2tfdGFibGUtPkRjZkNsb2Nrc1tpXS5Wb2wgPT0gdm9sdGFnZSkKICAg cmV0dXJuIGNsb2NrX3RhYmxlLT5EY2ZDbG9ja3NbaV0uRnJlcTsKIH0KCiAoeyBpbnQgX19yZXRf d2Fybl9vbiA9ICEhKCEoMCkpOyBpZiAoX19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29u KSwgMCkpIGRvIHsgZG8geyBhc20gX19pbmxpbmUgdm9sYXRpbGUoIjE6XHQiICIuYnl0ZSAweDBm LCAweDBiIiAiXG4iICIucHVzaHNlY3Rpb24gX19idWdfdGFibGUsXCJhd1wiXG4iICIyOlx0IiAi LmxvbmcgIiAiMWIiICIgLSAyYiIgIlx0IyBidWdfZW50cnk6OmJ1Z19hZGRyXG4iICJcdCIgIi5s b25nICIgIiVjMCIgIiAtIDJiIiAiXHQjIGJ1Z19lbnRyeTo6ZmlsZVxuIiAiXHQud29yZCAlYzEi ICJcdCMgYnVnX2VudHJ5OjpsaW5lXG4iICJcdC53b3JkICVjMiIgIlx0IyBidWdfZW50cnk6OmZs YWdzXG4iICJcdC5vcmcgMmIrJWMzXG4iICIucG9wc2VjdGlvbiIgOiA6ICJpIiAoImRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1Ly4uL2Rpc3BsYXkvZGMvY2xrX21nci9kY24yMS9ybl9jbGtfbWdy LmMiKSwgImkiICg2MzEpLCAiaSIgKCgxIDw8IDApfCgoKDkpIDw8IDgpKSksICJpIiAoc2l6ZW9m KHN0cnVjdCBidWdfZW50cnkpKSk7IH0gd2hpbGUgKDApOyAoeyBhc20gdm9sYXRpbGUoIiVjMDpc blx0IiAiLnB1c2hzZWN0aW9uIC5kaXNjYXJkLnJlYWNoYWJsZVxuXHQiICIubG9uZyAlYzBiIC0g LlxuXHQiICIucG9wc2VjdGlvblxuXHQiIDogOiAiaSIgKDQ5KSk7IH0pOyB9IHdoaWxlICgwKTsg X19idWlsdGluX2V4cGVjdCghIShfX3JldF93YXJuX29uKSwgMCk7IH0pOwogcmV0dXJuIDA7Cn0K CnN0YXRpYyB2b2lkIHJuX2Nsa19tZ3JfaGVscGVyX3BvcHVsYXRlX2J3X3BhcmFtcyhzdHJ1Y3Qg Y2xrX2J3X3BhcmFtcyAqYndfcGFyYW1zLCBzdHJ1Y3QgZHBtX2Nsb2NrcyAqY2xvY2tfdGFibGUs IHN0cnVjdCBpbnRlZ3JhdGVkX2luZm8gKmJpb3NfaW5mbykKewogaW50IGksIGogPSAwOwoKIGog PSAtMTsKCiAoeyBpbnQgX19yZXRfd2Fybl9vbiA9ICEhKCEoNCA8PSA4KSk7IGlmIChfX2J1aWx0 aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5fb24pLCAwKSkgZG8geyBkbyB7IGFzbSBfX2lubGluZSB2 b2xhdGlsZSgiMTpcdCIgIi5ieXRlIDB4MGYsIDB4MGIiICJcbiIgIi5wdXNoc2VjdGlvbiBfX2J1 Z190YWJsZSxcImF3XCJcbiIgIjI6XHQiICIubG9uZyAiICIxYiIgIiAtIDJiIiAiXHQjIGJ1Z19l bnRyeTo6YnVnX2FkZHJcbiIgIlx0IiAiLmxvbmcgIiAiJWMwIiAiIC0gMmIiICJcdCMgYnVnX2Vu dHJ5OjpmaWxlXG4iICJcdC53b3JkICVjMSIgIlx0IyBidWdfZW50cnk6OmxpbmVcbiIgIlx0Lndv cmQgJWMyIiAiXHQjIGJ1Z19lbnRyeTo6ZmxhZ3NcbiIgIlx0Lm9yZyAyYislYzNcbiIgIi5wb3Bz ZWN0aW9uIiA6IDogImkiICgiZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9k Yy9jbGtfbWdyL2RjbjIxL3JuX2Nsa19tZ3IuYyIpLCAiaSIgKDY0MSksICJpIiAoKDEgPDwgMCl8 KCgoOSkgPDwgOCkpKSwgImkiIChzaXplb2Yoc3RydWN0IGJ1Z19lbnRyeSkpKTsgfSB3aGlsZSAo MCk7ICh7IGFzbSB2b2xhdGlsZSgiJWMwOlxuXHQiICIucHVzaHNlY3Rpb24gLmRpc2NhcmQucmVh Y2hhYmxlXG5cdCIgIi5sb25nICVjMGIgLSAuXG5cdCIgIi5wb3BzZWN0aW9uXG5cdCIgOiA6ICJp IiAoNTApKTsgfSk7IH0gd2hpbGUgKDApOyBfX2J1aWx0aW5fZXhwZWN0KCEhKF9fcmV0X3dhcm5f b24pLCAwKTsgfSk7CgoKCiBmb3IgKGkgPSA0IC0gMTsgaSA+PSAwOyBpLS0pIHsKICBpZiAoY2xv Y2tfdGFibGUtPkZDbG9ja3NbaV0uRnJlcSAhPSAwKSB7CiAgIGogPSBpOwogICBicmVhazsKICB9 CiB9CgogaWYgKGogPT0gLTEpIHsKCiAgKHsgaW50IF9fcmV0X3dhcm5fb24gPSAhISghKDApKTsg aWYgKF9fYnVpbHRpbl9leHBlY3QoISEoX19yZXRfd2Fybl9vbiksIDApKSBkbyB7IGRvIHsgYXNt IF9faW5saW5lIHZvbGF0aWxlKCIxOlx0IiAiLmJ5dGUgMHgwZiwgMHgwYiIgIlxuIiAiLnB1c2hz ZWN0aW9uIF9fYnVnX3RhYmxlLFwiYXdcIlxuIiAiMjpcdCIgIi5sb25nICIgIjFiIiAiIC0gMmIi ICJcdCMgYnVnX2VudHJ5OjpidWdfYWRkclxuIiAiXHQiICIubG9uZyAiICIlYzAiICIgLSAyYiIg Ilx0IyBidWdfZW50cnk6OmZpbGVcbiIgIlx0LndvcmQgJWMxIiAiXHQjIGJ1Z19lbnRyeTo6bGlu ZVxuIiAiXHQud29yZCAlYzIiICJcdCMgYnVnX2VudHJ5OjpmbGFnc1xuIiAiXHQub3JnIDJiKyVj M1xuIiAiLnBvcHNlY3Rpb24iIDogOiAiaSIgKCJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8u Li9kaXNwbGF5L2RjL2Nsa19tZ3IvZGNuMjEvcm5fY2xrX21nci5jIiksICJpIiAoNjU0KSwgImki ICgoMSA8PCAwKXwoKCg5KSA8PCA4KSkpLCAiaSIgKHNpemVvZihzdHJ1Y3QgYnVnX2VudHJ5KSkp OyB9IHdoaWxlICgwKTsgKHsgYXNtIHZvbGF0aWxlKCIlYzA6XG5cdCIgIi5wdXNoc2VjdGlvbiAu ZGlzY2FyZC5yZWFjaGFibGVcblx0IiAiLmxvbmcgJWMwYiAtIC5cblx0IiAiLnBvcHNlY3Rpb25c blx0IiA6IDogImkiICg1MSkpOyB9KTsgfSB3aGlsZSAoMCk7IF9fYnVpbHRpbl9leHBlY3QoISEo X19yZXRfd2Fybl9vbiksIDApOyB9KTsKICByZXR1cm47CiB9CgogYndfcGFyYW1zLT5jbGtfdGFi bGUubnVtX2VudHJpZXMgPSBqICsgMTsKCiBmb3IgKGkgPSAwOyBpIDwgYndfcGFyYW1zLT5jbGtf dGFibGUubnVtX2VudHJpZXM7IGkrKywgai0tKSB7CiAgYndfcGFyYW1zLT5jbGtfdGFibGUuZW50 cmllc1tpXS5mY2xrX21oeiA9IGNsb2NrX3RhYmxlLT5GQ2xvY2tzW2pdLkZyZXE7CiAgYndfcGFy YW1zLT5jbGtfdGFibGUuZW50cmllc1tpXS5tZW1jbGtfbWh6ID0gY2xvY2tfdGFibGUtPk1lbUNs b2Nrc1tqXS5GcmVxOwogIGJ3X3BhcmFtcy0+Y2xrX3RhYmxlLmVudHJpZXNbaV0udm9sdGFnZSA9 IGNsb2NrX3RhYmxlLT5GQ2xvY2tzW2pdLlZvbDsKICBid19wYXJhbXMtPmNsa190YWJsZS5lbnRy aWVzW2ldLmRjZmNsa19taHogPSBmaW5kX2RjZmNsa19mb3Jfdm9sdGFnZShjbG9ja190YWJsZSwg Y2xvY2tfdGFibGUtPkZDbG9ja3Nbal0uVm9sKTsKIH0KCiBid19wYXJhbXMtPnZyYW1fdHlwZSA9 IGJpb3NfaW5mby0+bWVtb3J5X3R5cGU7CiBid19wYXJhbXMtPm51bV9jaGFubmVscyA9IGJpb3Nf aW5mby0+bWFfY2hhbm5lbF9udW1iZXI7CgogZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewogIGJ3 X3BhcmFtcy0+d21fdGFibGUuZW50cmllc1tpXS53bV9pbnN0ID0gaTsKCiAgaWYgKGkgPj0gYndf cGFyYW1zLT5jbGtfdGFibGUubnVtX2VudHJpZXMpIHsKICAgYndfcGFyYW1zLT53bV90YWJsZS5l bnRyaWVzW2ldLnZhbGlkID0gZmFsc2U7CiAgIGNvbnRpbnVlOwogIH0KCiAgYndfcGFyYW1zLT53 bV90YWJsZS5lbnRyaWVzW2ldLndtX3R5cGUgPSBXTV9UWVBFX1BTVEFURV9DSEc7CiAgYndfcGFy YW1zLT53bV90YWJsZS5lbnRyaWVzW2ldLnZhbGlkID0gdHJ1ZTsKIH0KCiBpZiAoYndfcGFyYW1z LT52cmFtX3R5cGUgPT0gTHBEZHI0TWVtVHlwZSkgewoKCgogIGJ3X3BhcmFtcy0+d21fdGFibGUu ZW50cmllc1szXS5wc3RhdGVfbGF0ZW5jeV91cyA9IDQuOTc3OwogIGJ3X3BhcmFtcy0+d21fdGFi bGUuZW50cmllc1szXS53bV9pbnN0ID0gMzsKICBid19wYXJhbXMtPndtX3RhYmxlLmVudHJpZXNb M10ud21fdHlwZSA9IFdNX1RZUEVfUkVUUkFJTklORzsKICBid19wYXJhbXMtPndtX3RhYmxlLmVu dHJpZXNbM10udmFsaWQgPSB0cnVlOwogfQoKfQoKdm9pZCBybl9jbGtfbWdyX2NvbnN0cnVjdCgK ICBzdHJ1Y3QgZGNfY29udGV4dCAqY3R4LAogIHN0cnVjdCBjbGtfbWdyX2ludGVybmFsICpjbGtf bWdyLAogIHN0cnVjdCBwcF9zbXVfZnVuY3MgKnBwX3NtdSwKICBzdHJ1Y3QgZGNjZyAqZGNjZykK ewogc3RydWN0IGRjX2RlYnVnX29wdGlvbnMgKmRlYnVnID0gJmN0eC0+ZGMtPmRlYnVnOwogc3Ry dWN0IGRwbV9jbG9ja3MgY2xvY2tfdGFibGUgPSB7IDAgfTsKCiBjbGtfbWdyLT5iYXNlLmN0eCA9 IGN0eDsKIGNsa19tZ3ItPmJhc2UuZnVuY3MgPSAmZGNuMjFfZnVuY3M7CgogY2xrX21nci0+cHBf c211ID0gcHBfc211OwoKIGNsa19tZ3ItPmRjY2cgPSBkY2NnOwogY2xrX21nci0+ZGZzX2J5cGFz c19kaXNwX2NsayA9IDA7CgogY2xrX21nci0+ZHByZWZjbGtfc3NfcGVyY2VudGFnZSA9IDA7CiBj bGtfbWdyLT5kcHJlZmNsa19zc19kaXZpZGVyID0gMTAwMDsKIGNsa19tZ3ItPnNzX29uX2RwcmVm Y2xrID0gZmFsc2U7CiBjbGtfbWdyLT5kZnNfcmVmX2ZyZXFfa2h6ID0gNDgwMDA7CgogY2xrX21n ci0+c211X3ZlciA9IHJuX3ZiaW9zX3NtdV9nZXRfc211X3ZlcnNpb24oY2xrX21ncik7CgogaWYg KChjdHgtPmRjZV9lbnZpcm9ubWVudCA9PSBEQ0VfRU5WX0ZQR0FfTUFYSU1VUykpIHsKICBkY24y MV9mdW5jcy51cGRhdGVfY2xvY2tzID0gZGNuMl91cGRhdGVfY2xvY2tzX2ZwZ2E7CiAgY2xrX21n ci0+YmFzZS5kZW50aXN0X3Zjb19mcmVxX2toeiA9IDM2MDAwMDA7CiB9IGVsc2UgewogIHN0cnVj dCBjbGtfbG9nX2luZm8gbG9nX2luZm8gPSB7MH07CgoKICBjbGtfbWdyLT5iYXNlLmRlbnRpc3Rf dmNvX2ZyZXFfa2h6ID0gZ2V0X3Zjb19mcmVxdWVuY3lfZnJvbV9yZWcoY2xrX21ncik7CgoKICBp ZiAoY2xrX21nci0+YmFzZS5kZW50aXN0X3Zjb19mcmVxX2toeiA9PSAwKQogICBjbGtfbWdyLT5i YXNlLmRlbnRpc3RfdmNvX2ZyZXFfa2h6ID0gMzYwMDAwMDsKCiAgaWYgKGN0eC0+ZGNfYmlvcy0+ aW50ZWdyYXRlZF9pbmZvLT5tZW1vcnlfdHlwZSA9PSBMcERkcjRNZW1UeXBlKSB7CiAgIHJuX2J3 X3BhcmFtcy53bV90YWJsZSA9IGxwZGRyNF93bV90YWJsZTsKICB9IGVsc2UgewogICBybl9id19w YXJhbXMud21fdGFibGUgPSBkZHI0X3dtX3RhYmxlOwogIH0KCiAgcm5fZHVtcF9jbGtfcmVnaXN0 ZXJzKCZjbGtfbWdyLT5iYXNlLmJvb3Rfc25hcHNob3QsICZjbGtfbWdyLT5iYXNlLCAmbG9nX2lu Zm8pOwogfQoKIGNsa19tZ3ItPmJhc2UuZHByZWZjbGtfa2h6ID0gNjAwMDAwOwogZGNlX2Nsb2Nr X3JlYWRfc3NfaW5mbyhjbGtfbWdyKTsKCgogY2xrX21nci0+YmFzZS5id19wYXJhbXMgPSAmcm5f YndfcGFyYW1zOwoKIGlmIChwcF9zbXUgJiYgcHBfc211LT5ybl9mdW5jcy5nZXRfZHBtX2Nsb2Nr X3RhYmxlKSB7CiAgcHBfc211LT5ybl9mdW5jcy5nZXRfZHBtX2Nsb2NrX3RhYmxlKCZwcF9zbXUt PnJuX2Z1bmNzLnBwX3NtdSwgJmNsb2NrX3RhYmxlKTsKICBpZiAoY3R4LT5kY19iaW9zICYmIGN0 eC0+ZGNfYmlvcy0+aW50ZWdyYXRlZF9pbmZvKSB7CiAgIHJuX2Nsa19tZ3JfaGVscGVyX3BvcHVs YXRlX2J3X3BhcmFtcyAoY2xrX21nci0+YmFzZS5id19wYXJhbXMsICZjbG9ja190YWJsZSwgY3R4 LT5kY19iaW9zLT5pbnRlZ3JhdGVkX2luZm8pOwogIH0KIH0KCiBpZiAoIShjdHgtPmRjZV9lbnZp cm9ubWVudCA9PSBEQ0VfRU5WX0ZQR0FfTUFYSU1VUykgJiYgY2xrX21nci0+c211X3ZlciA+PSAw eDAwMzcxNTAwKSB7CgogIHJuX3ZiaW9zX3NtdV9lbmFibGVfNDhtaHpfdG1kcF9yZWZjbGtfcHdy ZHduKGNsa19tZ3IsICFkZWJ1Zy0+ZGlzYWJsZV80OG1oel9wd3Jkd24pOwogfQp9Cg== --===============2530410277144048522==--
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 X-Loop: [email protected] From: "Devuan bug Tracking System" <[email protected]> To: Arthur Marsh <[email protected]> Subject: bug#417: Acknowledgement (gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu) Message-ID: <[email protected]> References: <158497486864.17367.14059265919888444783.reportbug@localhost> X-Devuan-PR-Message: ack 417 X-Devuan-PR-Package: gcc-10 Reply-To: [email protected] Date: Mon, 23 Mar 2020 15:03:04 +0000 Thank you for filing a new bug report with Devuan. You can follow progress on this bug here: 417: https://bugs.devuan.org/cgi/= bugreport.cgi?bug=3D417. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): [email protected] If you wish to submit further information on this problem, please send it to [email protected]. Please do not send mail to [email protected] unless you wish to report a problem with the Bug-tracking system. --=20 417: https://bugs.devuan.org/cgi/bugreport.cgi?bug=3D417 Devuan Bug Tracking System Contact [email protected] with problems
X-Loop: [email protected] Subject: bug#417: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Reply-To: Mark Hindley <[email protected]>, [email protected] Resent-From: Mark Hindley <[email protected]> Resent-To: [email protected] Resent-CC: [email protected] X-Loop: [email protected] Resent-Date: Mon, 23 Mar 2020 17:03:02 +0000 Resent-Message-ID: <[email protected]> Resent-Sender: [email protected] X-Devuan-PR-Message: followup 417 X-Devuan-PR-Package: gcc-10 X-Devuan-PR-Keywords: References: <158497486864.17367.14059265919888444783.reportbug@localhost> Received: via spool by [email protected] id=B417.158498220510647 (code B ref 417); Mon, 23 Mar 2020 17:03:02 +0000 Received: (at 417) by bugs.devuan.org; 23 Mar 2020 16:50:05 +0000 Delivered-To: [email protected] Received: from tupac3.dyne.org [195.169.149.119] by doc.devuan.org with IMAP (fetchmail-6.4.0.beta4) for <debbugs@localhost> (single-drop); Mon, 23 Mar 2020 16:50:05 +0000 (UTC) Received: from mx.hindley.org.uk (mohindley.plus.com [81.174.245.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by vm6.ganeti.dyne.org (Postfix) with ESMTPS id 97E4DF60B28 for <[email protected]>; Mon, 23 Mar 2020 17:38:36 +0100 (CET) Received: from apollo.hindleynet ([192.168.1.3] helo=apollo) by mx.hindley.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <[email protected]>) id 1jGQ5x-0000F3-EA; Mon, 23 Mar 2020 16:38:33 +0000 Received: from mark by apollo with local (Exim 4.84_2) (envelope-from <[email protected]>) id 1jGQ5w-00040M-2L; Mon, 23 Mar 2020 16:38:32 +0000 Date: Mon, 23 Mar 2020 16:38:31 +0000 From: Mark Hindley <[email protected]> To: [email protected] Cc: Arthur Marsh <[email protected]> Message-ID: <[email protected]> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <158497486864.17367.14059265919888444783.reportbug@localhost> User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=0.0 required=5.0 tests=FAKE_REPLY_C,SPF_PASS autolearn=disabled version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on tupac3.dyne.org Control: tags -1 debian On Tue, 24 Mar 2020 01:17:48 +1030 Arthur Marsh <[email protected]> wrote: > Package: gcc-10 > Version: 10-20200321-1 > Severity: normal > Arthur, Thanks for this. However, gcc-10 is not a forked package and Devuan uses the Debian pacakges directly. You would be much better reporting this directly to Debian's BTS so it can be fixed. Thanks Mark
Received: (at 417) by bugs.devuan.org; 23 Mar 2020 16:50:05 +0000 Return-Path: <[email protected]> Delivered-To: [email protected] Received: from tupac3.dyne.org [195.169.149.119] by doc.devuan.org with IMAP (fetchmail-6.4.0.beta4) for <debbugs@localhost> (single-drop); Mon, 23 Mar 2020 16:50:05 +0000 (UTC) Received: from mx.hindley.org.uk (mohindley.plus.com [81.174.245.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by vm6.ganeti.dyne.org (Postfix) with ESMTPS id 97E4DF60B28 for <[email protected]>; Mon, 23 Mar 2020 17:38:36 +0100 (CET) Received: from apollo.hindleynet ([192.168.1.3] helo=apollo) by mx.hindley.org.uk with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <[email protected]>) id 1jGQ5x-0000F3-EA; Mon, 23 Mar 2020 16:38:33 +0000 Received: from mark by apollo with local (Exim 4.84_2) (envelope-from <[email protected]>) id 1jGQ5w-00040M-2L; Mon, 23 Mar 2020 16:38:32 +0000 Date: Mon, 23 Mar 2020 16:38:31 +0000 From: Mark Hindley <[email protected]> To: [email protected] Cc: Arthur Marsh <[email protected]> Subject: Re: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Message-ID: <[email protected]> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <158497486864.17367.14059265919888444783.reportbug@localhost> X-Debbugs-No-Ack: No Thanks User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=0.0 required=5.0 tests=FAKE_REPLY_C,SPF_PASS autolearn=disabled version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on tupac3.dyne.org Control: tags -1 debian On Tue, 24 Mar 2020 01:17:48 +1030 Arthur Marsh <[email protected]> wrote: > Package: gcc-10 > Version: 10-20200321-1 > Severity: normal > Arthur, Thanks for this. However, gcc-10 is not a forked package and Devuan uses the Debian pacakges directly. You would be much better reporting this directly to Debian's BTS so it can be fixed. Thanks Mark
X-Loop: [email protected] Subject: bug#417: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Reply-To: Mark Hindley <[email protected]>, [email protected] Resent-From: Mark Hindley <[email protected]> Resent-To: [email protected] Resent-CC: [email protected] X-Loop: [email protected] Resent-Date: Fri, 03 Feb 2023 11:42:02 +0000 Resent-Message-ID: <[email protected]> Resent-Sender: [email protected] X-Devuan-PR-Message: followup 417 X-Devuan-PR-Package: gcc-10 X-Devuan-PR-Keywords: debian References: <158497486864.17367.14059265919888444783.reportbug@localhost> <[email protected]> <158497486864.17367.14059265919888444783.reportbug@localhost> Received: via spool by [email protected] id=B417.167542449723899 (code B ref 417); Fri, 03 Feb 2023 11:42:02 +0000 Received: (at 417) by bugs.devuan.org; 3 Feb 2023 11:41:37 +0000 Delivered-To: [email protected] Received: from email.devuan.org [2001:41d0:2:d06e::5c4:2612] by doc.devuan.org with IMAP (fetchmail-6.4.16) for <debbugs@localhost> (single-drop); Fri, 03 Feb 2023 11:41:37 +0000 (UTC) Received: from email.devuan.org by email.devuan.org with LMTP id GwmuIsDy3GOAEwAAmSBk0A (envelope-from <[email protected]>) for <[email protected]>; Fri, 03 Feb 2023 11:40:48 +0000 Received: by email.devuan.org (Postfix, from userid 109) id 7D58AA04; Fri, 3 Feb 2023 11:40:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on email.devuan.org X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=RDNS_DYNAMIC,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=193.36.131.86; helo=mx.hindley.org.uk; [email protected]; receiver=<UNKNOWN> Received: from mx.hindley.org.uk (193-36-131-86.cfwn.uk [193.36.131.86]) by email.devuan.org (Postfix) with ESMTPS id 3153D393 for <[email protected]>; Fri, 3 Feb 2023 11:40:47 +0000 (UTC) Received: from apollo.hindleynet ([192.168.1.3] helo=hindley.org.uk) by mx.hindley.org.uk with smtp (Exim 4.84_2) (envelope-from <[email protected]>) id 1pNuQv-0002mz-IW; Fri, 03 Feb 2023 11:40:45 +0000 Received: (nullmailer pid 1665 invoked by uid 1000); Fri, 03 Feb 2023 11:40:45 -0000 Date: Fri, 3 Feb 2023 11:40:45 +0000 From: Mark Hindley <[email protected]> To: [email protected] Cc: Arthur Marsh <[email protected]> Message-ID: <[email protected]> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <[email protected]> Control: tags -1 moreinfo Arthur, Is this still an issue? Mark
Received: (at 417) by bugs.devuan.org; 3 Feb 2023 11:41:37 +0000 Return-Path: <[email protected]> Delivered-To: [email protected] Received: from email.devuan.org [2001:41d0:2:d06e::5c4:2612] by doc.devuan.org with IMAP (fetchmail-6.4.16) for <debbugs@localhost> (single-drop); Fri, 03 Feb 2023 11:41:37 +0000 (UTC) Received: from email.devuan.org by email.devuan.org with LMTP id GwmuIsDy3GOAEwAAmSBk0A (envelope-from <[email protected]>) for <[email protected]>; Fri, 03 Feb 2023 11:40:48 +0000 Received: by email.devuan.org (Postfix, from userid 109) id 7D58AA04; Fri, 3 Feb 2023 11:40:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on email.devuan.org X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=RDNS_DYNAMIC,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=193.36.131.86; helo=mx.hindley.org.uk; [email protected]; receiver=<UNKNOWN> Received: from mx.hindley.org.uk (193-36-131-86.cfwn.uk [193.36.131.86]) by email.devuan.org (Postfix) with ESMTPS id 3153D393 for <[email protected]>; Fri, 3 Feb 2023 11:40:47 +0000 (UTC) Received: from apollo.hindleynet ([192.168.1.3] helo=hindley.org.uk) by mx.hindley.org.uk with smtp (Exim 4.84_2) (envelope-from <[email protected]>) id 1pNuQv-0002mz-IW; Fri, 03 Feb 2023 11:40:45 +0000 Received: (nullmailer pid 1665 invoked by uid 1000); Fri, 03 Feb 2023 11:40:45 -0000 Date: Fri, 3 Feb 2023 11:40:45 +0000 From: Mark Hindley <[email protected]> To: [email protected] Cc: Arthur Marsh <[email protected]> Subject: Re: bug#417: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Message-ID: <[email protected]> References: <158497486864.17367.14059265919888444783.reportbug@localhost> <[email protected]> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <[email protected]> X-Debbugs-No-Ack: No Thanks Control: tags -1 moreinfo Arthur, Is this still an issue? Mark
X-Loop: [email protected] Subject: bug#417: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu Reply-To: Arthur Marsh <[email protected]>, [email protected] Resent-From: Arthur Marsh <[email protected]> Resent-To: [email protected] Resent-CC: [email protected] X-Loop: [email protected] Resent-Date: Fri, 03 Feb 2023 12:20:01 +0000 Resent-Message-ID: <[email protected]> Resent-Sender: [email protected] X-Devuan-PR-Message: followup 417 X-Devuan-PR-Package: gcc-10 X-Devuan-PR-Keywords: moreinfo debian References: <158497486864.17367.14059265919888444783.reportbug@localhost> <[email protected]> <[email protected]> <158497486864.17367.14059265919888444783.reportbug@localhost> Received: via spool by [email protected] id=B417.167542668530516 (code B ref 417); Fri, 03 Feb 2023 12:20:01 +0000 Received: (at 417) by bugs.devuan.org; 3 Feb 2023 12:18:05 +0000 Delivered-To: [email protected] Received: from email.devuan.org [2001:41d0:2:d06e::5c4:2612] by doc.devuan.org with IMAP (fetchmail-6.4.16) for <debbugs@localhost> (single-drop); Fri, 03 Feb 2023 12:18:05 +0000 (UTC) Received: from email.devuan.org by email.devuan.org with LMTP id GiKdEmH73GM2FAAAmSBk0A (envelope-from <[email protected]>) for <[email protected]>; Fri, 03 Feb 2023 12:17:37 +0000 Received: by email.devuan.org (Postfix, from userid 109) id 3BB6EA05; Fri, 3 Feb 2023 12:17:37 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on email.devuan.org X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=150.101.137.141; helo=ipmail03.adl2.internode.on.net; [email protected]; receiver=<UNKNOWN> Received: from ipmail03.adl2.internode.on.net (ipmail03.adl2.internode.on.net [150.101.137.141]) by email.devuan.org (Postfix) with ESMTP id 48E42597 for <[email protected]>; Fri, 3 Feb 2023 12:17:29 +0000 (UTC) IronPort-SDR: qOdi5pG++A+/aMOYMIFzn9I2TeeKGHaFk0uaRoH5IsYpUY2aDq/pW939ai7wx2v4sJOQcHefTB ArcLVAodLiLvHEcpFBDJjNqAD6CQM8hV5S0hzzPnkfW1ynrdyuLuu9J23io+Nfm0r0XaCzA2ZO dSWTtnVjEZERBJxQqgZZSJe31oowPtbNtFaZP33/LY7u5UYuOpSb5ntf5QEy2wziFu9UqDCl34 WOibyVr/2wm2c4OwJP7evSprOEduXyecqcEQmUvPqBBGSYwtRnlr4XtD+VLou3OYChnkLQ9/vf NHmhZOfnlCxULppPiYxClHZi X-SMTP-MATCH: 1 X-IPAS-Result: A2AiBQBG+txjAPg3kwENTR4BAQsSDEAJgUiFC4ROgmKOQJ89DwFVBAEBhQcChScmOQUNAQIEAQEBAQMCAwEBAQEBAQMBAQYBAQEBAQEGBBABOlINEhw2Eh2ECQkFhxQBAQEDI2YLDQsCAiYCAlcGARKCfqpheoEyGmefWYFngRQtgWWLEYQwN4FVRIEVJwwDDYJnPoQiAQEgg1g5gi4EkT2LH4E3doEkDoFGgQsCCQIRc4EZCFM3AxkrHUADC20KPzULC0orGhsHgQYqKBUDBAQDAgYTAyACDSgxFAQpEw0nJmkJAgMiYgMDBCgtCT8HFREmPAdWNQEFAg8fNwYDCQMCH1FyLhETBQMLFSpHBAg2BQYcCSsSAggPEg8GJkMOQjc0EwaBBgsOEQNPgU4EL4FgBlChLl84xGg0B4N3gUwGDJ8VLoNmARKMYoZOA4wJhXqHWo91IKlwgX0zGi5vAYI8TwECAQEBDQECAQGOapYcYjsCBwsBAQMJjCMBAQ IronPort-Data: A9a23:lsvAAKxg6ODFygNQZZR6t+dmwSrEfRIJ4+MujC+fZmUNrF6WrkVTm DFNWGCObKyCNzCncttzaNzj9hkAuMWAyNBmTlNu/iA0RCkV8JDLCdmXf0n9MXjCc5SSRhs5t Z0UZNTMcJFtZ3KN/R3F3prJ9Ckkj/vULlbf5E8oHggrGGeInQ940UoLd9YR29Iu2Z7ja++0k YuaT/f3YTdJ5hYtWo4qw/LbwP9QlKyaVAMw5jTSstgW1LN2vyB94KM3fcldHVOhKmVnNrLSq 9L48V2M1jixEyHBqz+Suu2TnkUiGtY+NOUV45Zcc/DKbhNq/kTe3kunXRYRQR8/ttmHozx+4 NdqqYOpRhkMB7zzvNk4bClmEXBBMZQTrdcrIVDn2SCS536fKSSqm7M2ShgDVWEa0r8xWD0Rs 6FFbmpRPnhvhMrvqF6/YuB2msQ+No/uNZkEullhyy3UF/AhTZ2FRKOM49JEtNs1rpoeQKiOO 5JIMVKDajzOQjAXH2dMAagXkcCJ1ib+SRYChFms8P9fD2/7llcviNABKuH9f9WQRu1Vn0CUo m/XuWPjDVcHN7S3lWPa2nixifSJkS7lRYsUUrqi+ZZXbEa7nypKVEJQCAb9+6Xp4qKjZz5BA 04z5jU3orYXzV2UauTYYC2Goi+7sidJDrK8DNYGBBGxJrv8uljGWzRdH24cNrTKp+dzHmB7j A/Q9z/9LWU04ODEGCP1GqK88GvaBMQDEYMVTQY5Jefvy/DvrYU6jx7CJjqIOPPt1oWd9d3Y+ DeXsCh2rqgIkdQC06SylW0rYg5ARbCQEWbZHi2NAgqYAvpRPeZJnbCA51nB9upnJ42EVFSHt 3Vss5HAs71SV8jRyXLcEbtl8FSVCxCtbmK0bblHQclJythR0yP6FWytyGgleRk2a5dZEdMXS BaP4V8NtPe/w0dGnYctONzpYyjb5bTtEc/5TPmcb9xSb4J3eRPvwc2dTRH44owZq2BxzPFXB HtuWYP1VS5y5VJPnWXtHI/wENYDn0gD+I8kbcmqnk33jubPPCH9pHVsGALmU93VJZis+G39m +uz/ePRo/mGeOGhMCTR76AJKlUGcSoyCZzs8pIFd+ifLxBgH20sTfjXh7UsZ9U9zahSk+7J+ FC7W1NZkQSg3y2cdVvRO30zOqnyWZtfrG4gOXJ+MFut3U8lPdSl4pAAJsk+crQQ/eB+yeJ5E qsecMKaD/UUFTnKomxPbZT0oIF4Wg6sgAaCY3isbDQlJsAyRgrV98XieQfisi4ISCy6qZJm8 bGn0wraR7sFRhhjVZiJMqL0kw3q7HVEwbB8RUrFJNVXaX7AyokyJnyjlOIzLuENNQ7HmGmX2 gOQNhFE9+PDlJBkotDGiJeNo5qtD+YjTFFRGHPW7O3pOCTX8wJPG2ObvDpkoNwFaF7JxQ== IronPort-HdrOrdr: A9a23:Onuodq7YXC0j6My27QPXwN3XdLJyesId70hD6qkXc20xTiX4rb HNoB1173TJYVoqMk3I3OrvBEDiewK+yXcW2+ks1N6ZNWHbUSmTTb2KhrGP/9SPIUDDH6Jmup tdTw== X-IronPort-Anti-Spam-Filtered: true Received: from unknown (HELO [127.0.0.1]) ([1.147.55.248]) by ipmail03.adl2.internode.on.net with ESMTP; 03 Feb 2023 22:47:19 +1030 Date: Fri, 03 Feb 2023 22:47:15 +1030 From: Arthur Marsh <[email protected]> To: Mark Hindley <[email protected]>, [email protected] User-Agent: K-9 Mail for Android In-Reply-To: <[email protected]> Message-ID: <[email protected]> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable No=2E I am currently building kernels with gcc-12=2E Regards, Arthur=2E=20 On 3 February 2023 10:10:45 pm ACDT, Mark Hindley <mark@hindley=2Eorg=2Euk= > wrote: >Control: tags -1 moreinfo > >Arthur, > >Is this still an issue? > >Mark --=20 Sent from my Android device with K-9 Mail=2E Please excuse my brevity=2E
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 X-Loop: [email protected] From: "Devuan bug Tracking System" <[email protected]> To: Arthur Marsh <[email protected]> Subject: bug#417: Info received (bug#417: gcc-10: internal compiler error building kernel 5.6.0-rc7 with amdgpu) Message-ID: <[email protected]> References: <[email protected]> X-Devuan-PR-Message: ack-info 417 X-Devuan-PR-Package: gcc-10 X-Devuan-PR-Keywords: moreinfo debian Reply-To: [email protected] Date: Fri, 03 Feb 2023 12:20:06 +0000 Thank you for the additional information you have supplied regarding this bug report. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. Your message has been sent to the package maintainer(s): [email protected] If you wish to submit further information on this problem, please send it to [email protected]. Please do not send mail to [email protected] unless you wish to report a problem with the Bug-tracking system. --=20 417: https://bugs.devuan.org/cgi/bugreport.cgi?bug=3D417 Devuan Bug Tracking System Contact [email protected] with problems
Devuan BTS -- Powered by Debian bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.
Devuan Bugs Owner <[email protected]>.
Last modified:
Sat, 18 Jan 2025 08:39:01 UTC