From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 0ABBF3858C30 for ; Wed, 17 Jan 2024 09:39:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0ABBF3858C30 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0ABBF3858C30 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:470:142:3::10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705484365; cv=none; b=titdWRBqiSB05X5LOdFbQ56Tab7qPmSO+A23lkJVcfLQNgBPRZlt55gep+KLA3m7CxyPGJRtcbW5UA2nrcyuwtL0eTLmarbPZmTtqbvxWb9iOPq6mGOhFI6fTr+BKUMDRUaZ6DYN5WaT3zD5MPx7/k8T6a05qpAozVN6Ef8r3jc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705484365; c=relaxed/simple; bh=x2oCHQ+S/Yt5dWiMUvzcdpyh1BcKSwQvPRTi1bc75A8=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=I5Esg9roMeEIzFPs6Pk0qNr+DmzyYtHCMRemC0ia0zykxFfc07xqxaNo7eoebj6ZGb7lbHmLvR9cMHba/3Ds2i9ancNcylhdaOGXYo2wnxqwp4zW9zy7MNGs0DDw0OEy+BzbwJAsJW0cUp6DyZVDkda5TmlYjuzk40BnPjXQkkg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rQ2O2-0002Hj-Me for gcc-patches@gcc.gnu.org; Wed, 17 Jan 2024 04:39:15 -0500 Received: from loongson.cn (unknown [10.20.4.107]) by gateway (Coremail) with SMTP id _____8BxnuswoKdl5R0BAA--.5293S3; Wed, 17 Jan 2024 17:38:56 +0800 (CST) Received: from [10.20.4.107] (unknown [10.20.4.107]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Dxfs0toKdlrEAGAA--.30371S3; Wed, 17 Jan 2024 17:38:53 +0800 (CST) Subject: Re: [PATCH v2 2/2] LoongArch: When the code model is extreme, the symbol address is obtained through macro instructions regardless of the value of -mexplicit-relocs. To: Xi Ruoyao , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn References: <20240105034021.30177-1-chenglulu@loongson.cn> <20240105034021.30177-3-chenglulu@loongson.cn> <0fe0f370-a593-d060-d260-0e190986f833@loongson.cn> <4cdfda6960e75ccc6ccea6263ac02e79c9dba572.camel@xry111.site> <74482b5cbfef5a9d07185cd63430b3907fb389d1.camel@xry111.site> <7808ffa81093a41202b1a5c3cf12b76482741b1e.camel@xry111.site> <16929185-d182-c1d9-ba81-c8ce9dbe7eaf@loongson.cn> From: chenglulu Message-ID: Date: Wed, 17 Jan 2024 17:38:53 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------129B177C31D46CE5CB446103" Content-Language: en-US X-CM-TRANSID:AQAAf8Dxfs0toKdlrEAGAA--.30371S3 X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBj93XoW3Xw13XFW8XF17XFW8ArWftFc_yoW7Kry5p3 4xJF4DJrWUXr18Gw1UtF1UJryUJr1UJw1UWryUJF18Jr1DJr1jqr10qa4jgF13Gr4kJr1U Xr15A347ZF1UJrXCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUPYb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_JFI_Gr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AK xVW8Jr0_Cr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21le4C267I2x7xF54xIwI1l57IF6x kI12xvs2x26I8E6xACxx1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v2 6r1j6r18McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64 vIr41lFcxC0VAYjxAxZF0Ex2IqxwCYjI0SjxkI62AI1cAE67vIY487MxAIw28IcxkI7VAK I48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7 xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWUtwCIc40Y0x0EwIxGrwCI42IY6xII jxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWUJVW8JwCI42IY6xAIw2 0EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x02 67AKxVWUJVW8JwCE64xvF2IEb7IF0Fy7YxBIdaVFxhVjvjDU0xZFpf9x07URmhwUUUUU= Received-SPF: pass client-ip=114.242.206.163; envelope-from=chenglulu@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -36 X-Spam_score: -3.7 X-Spam_bar: --- X-Spam_report: (-3.7 / 5.0 requ) BAYES_00=-1.9,NICE_REPLY_A=-1.748,SPF_HELO_NONE=0.001,SPF_PASS=-0.001,T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Status: No, score=-5.2 required=5.0 tests=BAYES_00,BODY_8BITS,KAM_DMARC_STATUS,KAM_LOTSOFHASH,LIKELY_SPAM_BODY,NICE_REPLY_A,SPF_FAIL,SPF_HELO_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------129B177C31D46CE5CB446103 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit 在 2024/1/13 下午9:05, Xi Ruoyao 写道: > 在 2024-01-13星期六的 15:01 +0800,chenglulu写道: >> 在 2024/1/12 下午7:42, Xi Ruoyao 写道: >>> 在 2024-01-12星期五的 09:46 +0800,chenglulu写道: >>> >>>>> I found an issue bootstrapping GCC with -mcmodel=extreme in BOOT_CFLAGS: >>>>> we need a target hook to tell the generic code >>>>> UNSPEC_LA_PCREL_64_PART{1,2} are just a wrapper around symbols, or we'll >>>>> see millions lines of messages like >>>>> >>>>> ../../gcc/gcc/tree.h:4171:1: note: non-delegitimized UNSPEC >>>>> UNSPEC_LA_PCREL_64_PART1 (42) found in variable location >>>> I build GCC with -mcmodel=extreme in BOOT_CFLAGS, but I haven't reproduced the problem you mentioned. >>>> >>>>      $ ../configure --host=loongarch64-linux-gnu --target=loongarch64-linux-gnu --build=loongarch64-linux-gnu \ >>>>          --with-arch=loongarch64 --with-abi=lp64d --enable-tls --enable-languages=c,c++,fortran,lto --enable-plugin \ >>>>          --disable-multilib --disable-host-shared --enable-bootstrap --enable-checking=release >>>>      $ make BOOT_FLAGS="-mcmodel=extreme" >>>> >>>> What did I do wrong?:-( >>> BOOT_CFLAGS, not BOOT_FLAGS :). >>> >> This is so strange. My compilation here stopped due to syntax problems, >> >> and I still haven't reproduced the information you mentioned about >> UNSPEC_LA_PCREL_64_PART1. > I used: > > ../gcc/configure --with-system-zlib --disable-fixincludes \ > --enable-default-ssp --enable-default-pie \ > --disable-werror --disable-multilib \ > --prefix=/home/xry111/gcc-dev > > and then > > make STAGE1_{C,CXX}FLAGS="-O2 -g" -j8 \ > BOOT_{C,CXX}FLAGS="-O2 -g -mcmodel=extreme" &| tee gcc-build.log > > I guess "-g" is needed to reproduce the issue as well as the messages > were produced in dwarf generation. > I have reproduced this problem, and it can be solved by adding a hook. But unfortunately, when using '-mcmodel=extreme -mexplicit-relocs=always' to test spec2006 403.gcc, an error will occur. Others have not been tested yet. I roughly debugged it, and the problem should be this: The problem is that the address of the instruction ‘ldx.d $r12, $r25, $r6’ is wrong. Wrong assembly:    5826         pcalau12i       $r13,%got_pc_hi20(recog_data)  5827         addi.d  $r12,$r0,%got_pc_lo12(recog_data)  5828         lu32i.d $r12,%got64_pc_lo20(recog_data)  5829         lu52i.d $r12,$r12,%got64_pc_hi12(recog_data)  5830         ldx.d   $r12,$r13,$r12  5831         ld.b    $r8,$r12,997  5832         .loc 1 829 18 discriminator 1 view .LVU1527  5833         ble     $r8,$r0,.L476  5834         ld.d    $r6,$r3,16  5835         ld.d    $r9,$r3,88  5836 .LBB189 = .  5837         .loc 1 839 24 view .LVU1528  5838         alsl.d  $r7,$r19,$r19,2  5839         ldx.d   $r12,$r25,$r6  5840         addi.d  $r17,$r3,120  5841 .LBE189 = .  5842         .loc 1 829 18 discriminator 1 view .LVU1529  5843         or      $r13,$r0,$r0  5844         addi.d  $r4,$r12,992 Assembly that works fine using macros: 3040         la.global       $r12,$r13,recog_data 3041         ld.b    $r9,$r12,997 3042         ble     $r9,$r0,.L475 3043         alsl.d  $r5,$r16,$r16,2 3044         la.global       $r15,$r17,recog_data 3045         addi.d  $r4,$r12,992 3046         addi.d  $r18,$r3,48 3047         or      $r13,$r0,$r0 Comparing the assembly, we can see that lines 5844 and 3045 have the same function, but there is a problem with the base address register optimization at line 5844. regrename.c.283r.loop2_init: (insn 6 497 2741 34 (set (reg:DI 180 [ ivtmp.713D.15724 ])         (const_int 0 [0])) "regrename.c":829:18 discrim 1 156 {*movdi_64bit} (nil)) (insn 2741 6 2744 34 (parallel [             (set (reg:DI 1502)                 (unspec:DI [                         (symbol_ref:DI ("recog_data") [flags 0xc0]  )                     ] UNSPEC_LA_PCREL_64_PART1))             (set (reg/f:DI 1479)                 (unspec:DI [                         (symbol_ref:DI ("recog_data") [flags 0xc0]  )                     ] UNSPEC_LA_PCREL_64_PART2))         ]) -1      (expr_list:REG_UNUSED (reg/f:DI 1479) (nil))) (insn 2744 2741 2745 34 (set (reg/f:DI 1503)         (mem:DI (plus:DI (reg/f:DI 1479)                 (reg:DI 1502)) [0  S8 A8])) 156 {*movdi_64bit}      (expr_list:REG_EQUAL (symbol_ref:DI ("recog_data") [flags 0xc0]  ) (nil))) Virtual register 1479 will be used in insn 2744, but register 1479 was assigned the REG_UNUSED attribute in the previous instruction. The attached file is the wrong file. The compilation command is as follows: $ ./gcc/cc1 -fpreprocessed regrename.i -quiet -dp -dumpbase regrename.c -dumpbase-ext .c -mno-relax -mabi=lp64d -march=loongarch64 -mfpu=64 -msimd=lasx -mcmodel=extreme -mtune=loongarch64 -g3 -O2 -Wno-int-conversion -Wno-implicit-int -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -version -o regrename.s -mexplicit-relocs=always -fdump-rtl-all-all --------------129B177C31D46CE5CB446103 Content-Type: text/plain; charset=UTF-8; name="regrename.i" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="regrename.i" IyAwICJyZWdyZW5hbWUuYyIKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9iZW5jaG1hcmsv Y3B1MjAwNi12MS4xL2JlbmNoc3BlYy9DUFUyMDA2LzQwMy5nY2MvYnVpbGQvYnVpbGRfYmFz ZV90cnVuay4wMDAwLy8iCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NURENfXyAxCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NURENfVkVSU0lPTl9fIDIwMTcxMEwKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fU1REQ19VVEZfMTZfXyAxCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1NURENfVVRGXzMyX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19T VERDX0hPU1RFRF9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR05VQ19fIDE0CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dOVUNfTUlOT1JfXyAwCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0dOVUNfUEFUQ0hMRVZFTF9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fVkVSU0lPTl9fICIxNC4wLjEgMjAyNDAxMTUgKGV4cGVyaW1lbnRhbCkiCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0FUT01JQ19SRUxBWEVEIDAKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fQVRPTUlDX1NFUV9DU1QgNQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19BVE9NSUNfQUNRVUlSRSAyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0FUT01JQ19S RUxFQVNFIDMKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fQVRPTUlDX0FDUV9SRUwgNAoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19BVE9NSUNfQ09OU1VNRSAxCiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX09QVElNSVpFX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19GSU5JVEVfTUFUSF9PTkxZX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX0xQNjQg MQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MUDY0X18gMQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19TSVpFT0ZfSU5UX18gNAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19T SVpFT0ZfTE9OR19fIDgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0laRU9GX0xPTkdf TE9OR19fIDgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0laRU9GX1NIT1JUX18gMgoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TSVpFT0ZfRkxPQVRfXyA0CiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX1NJWkVPRl9ET1VCTEVfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX1NJWkVPRl9MT05HX0RPVUJMRV9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX1NJWkVPRl9TSVpFX1RfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0NIQVJf QklUX18gOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19CSUdHRVNUX0FMSUdOTUVOVF9f IDMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXyAx MjM0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX09SREVSX0JJR19FTkRJQU5fXyA0MzIx CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX09SREVSX1BEUF9FTkRJQU5fXyAzNDEyCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0JZVEVfT1JERVJfXyBfX09SREVSX0xJVFRMRV9F TkRJQU5fXwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTE9BVF9XT1JEX09SREVSX18g X19PUkRFUl9MSVRUTEVfRU5ESUFOX18KIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0la RU9GX1BPSU5URVJfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dOVUNfRVhFQ1VU SU9OX0NIQVJTRVRfTkFNRSAiVVRGLTgiCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dO VUNfV0lERV9FWEVDVVRJT05fQ0hBUlNFVF9OQU1FICJVVEYtMzJMRSIKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fU0laRV9UWVBFX18gbG9uZyB1bnNpZ25lZCBpbnQKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gbG9uZyBpbnQKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fV0NIQVJfVFlQRV9fIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19XSU5UX1RZUEVfXyB1bnNpZ25lZCBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fSU5UTUFYX1RZUEVfXyBsb25nIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19V SU5UTUFYX1RZUEVfXyBsb25nIHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19DSEFSMTZfVFlQRV9fIHNob3J0IHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19DSEFSMzJfVFlQRV9fIHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19TSUdfQVRPTUlDX1RZUEVfXyBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fSU5UOF9UWVBFX18gc2lnbmVkIGNoYXIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fSU5UMTZfVFlQRV9fIHNob3J0IGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19J TlQzMl9UWVBFX18gaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVDY0X1RZUEVf XyBsb25nIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UOF9UWVBFX18gdW5z aWduZWQgY2hhcgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UMTZfVFlQRV9fIHNo b3J0IHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UMzJfVFlQ RV9fIHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UNjRfVFlQ RV9fIGxvbmcgdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9M RUFTVDhfVFlQRV9fIHNpZ25lZCBjaGFyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lO VF9MRUFTVDE2X1RZUEVfXyBzaG9ydCBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f SU5UX0xFQVNUMzJfVFlQRV9fIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRf TEVBU1Q2NF9UWVBFX18gbG9uZyBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlO VF9MRUFTVDhfVFlQRV9fIHVuc2lnbmVkIGNoYXIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fVUlOVF9MRUFTVDE2X1RZUEVfXyBzaG9ydCB1bnNpZ25lZCBpbnQKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fVUlOVF9MRUFTVDMyX1RZUEVfXyB1bnNpZ25lZCBpbnQKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVF9MRUFTVDY0X1RZUEVfXyBsb25nIHVuc2lnbmVk IGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfRkFTVDhfVFlQRV9fIHNpZ25l ZCBjaGFyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9GQVNUMTZfVFlQRV9fIGxv bmcgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9GQVNUMzJfVFlQRV9fIGxv bmcgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9GQVNUNjRfVFlQRV9fIGxv bmcgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRfRkFTVDhfVFlQRV9fIHVu c2lnbmVkIGNoYXIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVF9GQVNUMTZfVFlQ RV9fIGxvbmcgdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRf RkFTVDMyX1RZUEVfXyBsb25nIHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19VSU5UX0ZBU1Q2NF9UWVBFX18gbG9uZyB1bnNpZ25lZCBpbnQKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fSU5UUFRSX1RZUEVfXyBsb25nIGludAojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19VSU5UUFRSX1RZUEVfXyBsb25nIHVuc2lnbmVkIGludAojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19HWFhfQUJJX1ZFUlNJT04gMTAxOQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19TQ0hBUl9NQVhfXyAweDdmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1NIUlRfTUFYX18gMHg3ZmZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9NQVhf XyAweDdmZmZmZmZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xPTkdfTUFYX18gMHg3 ZmZmZmZmZmZmZmZmZmZmTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MT05HX0xPTkdf TUFYX18gMHg3ZmZmZmZmZmZmZmZmZmZmTEwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f V0NIQVJfTUFYX18gMHg3ZmZmZmZmZgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19XQ0hB Ul9NSU5fXyAoLV9fV0NIQVJfTUFYX18gLSAxKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19XSU5UX01BWF9fIDB4ZmZmZmZmZmZVCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1dJ TlRfTUlOX18gMFUKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fUFRSRElGRl9NQVhfXyAw eDdmZmZmZmZmZmZmZmZmZmZMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NJWkVfTUFY X18gMHhmZmZmZmZmZmZmZmZmZmZmVUwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0NI QVJfV0lEVEhfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NIUlRfV0lEVEhfXyAx NgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfV0lEVEhfXyAzMgojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19MT05HX1dJRFRIX18gNjQKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fTE9OR19MT05HX1dJRFRIX18gNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f V0NIQVJfV0lEVEhfXyAzMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19XSU5UX1dJRFRI X18gMzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fUFRSRElGRl9XSURUSF9fIDY0CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NJWkVfV0lEVEhfXyA2NAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19JTlRNQVhfTUFYX18gMHg3ZmZmZmZmZmZmZmZmZmZmTAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19JTlRNQVhfQyhjKSBjICMjIEwKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fVUlOVE1BWF9NQVhfXyAweGZmZmZmZmZmZmZmZmZmZmZVTAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UTUFYX0MoYykgYyAjIyBVTAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19JTlRNQVhfV0lEVEhfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19TSUdfQVRPTUlDX01BWF9fIDB4N2ZmZmZmZmYKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fU0lHX0FUT01JQ19NSU5fXyAoLV9fU0lHX0FUT01JQ19NQVhfXyAtIDEpCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX1NJR19BVE9NSUNfV0lEVEhfXyAzMgojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19JTlQ4X01BWF9fIDB4N2YKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fSU5UMTZfTUFYX18gMHg3ZmZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lO VDMyX01BWF9fIDB4N2ZmZmZmZmYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UNjRf TUFYX18gMHg3ZmZmZmZmZmZmZmZmZmZmTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19V SU5UOF9NQVhfXyAweGZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlQxNl9NQVhf XyAweGZmZmYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVDMyX01BWF9fIDB4ZmZm ZmZmZmZVCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlQ2NF9NQVhfXyAweGZmZmZm ZmZmZmZmZmZmZmZVTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfTEVBU1Q4X01B WF9fIDB4N2YKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UOF9DKGMpIGMKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0xFQVNUOF9XSURUSF9fIDgKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fSU5UX0xFQVNUMTZfTUFYX18gMHg3ZmZmCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0lOVDE2X0MoYykgYwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19J TlRfTEVBU1QxNl9XSURUSF9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9M RUFTVDMyX01BWF9fIDB4N2ZmZmZmZmYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5U MzJfQyhjKSBjCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9MRUFTVDMyX1dJRFRI X18gMzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0xFQVNUNjRfTUFYX18gMHg3 ZmZmZmZmZmZmZmZmZmZmTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlQ2NF9DKGMp IGMgIyMgTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfTEVBU1Q2NF9XSURUSF9f IDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRfTEVBU1Q4X01BWF9fIDB4ZmYK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVDhfQyhjKSBjCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX1VJTlRfTEVBU1QxNl9NQVhfXyAweGZmZmYKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fVUlOVDE2X0MoYykgYwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19V SU5UX0xFQVNUMzJfTUFYX18gMHhmZmZmZmZmZlUKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fVUlOVDMyX0MoYykgYyAjIyBVCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRf TEVBU1Q2NF9NQVhfXyAweGZmZmZmZmZmZmZmZmZmZmZVTAojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19VSU5UNjRfQyhjKSBjICMjIFVMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0lOVF9GQVNUOF9NQVhfXyAweDdmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9G QVNUOF9XSURUSF9fIDgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0ZBU1QxNl9N QVhfXyAweDdmZmZmZmZmZmZmZmZmZmZMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lO VF9GQVNUMTZfV0lEVEhfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfRkFT VDMyX01BWF9fIDB4N2ZmZmZmZmZmZmZmZmZmZkwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fSU5UX0ZBU1QzMl9XSURUSF9fIDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lO VF9GQVNUNjRfTUFYX18gMHg3ZmZmZmZmZmZmZmZmZmZmTAojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19JTlRfRkFTVDY0X1dJRFRIX18gNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fVUlOVF9GQVNUOF9NQVhfXyAweGZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJ TlRfRkFTVDE2X01BWF9fIDB4ZmZmZmZmZmZmZmZmZmZmZlVMCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1VJTlRfRkFTVDMyX01BWF9fIDB4ZmZmZmZmZmZmZmZmZmZmZlVMCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRfRkFTVDY0X01BWF9fIDB4ZmZmZmZmZmZmZmZm ZmZmZlVMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVFBUUl9NQVhfXyAweDdmZmZm ZmZmZmZmZmZmZmZMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVFBUUl9XSURUSF9f IDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRQVFJfTUFYX18gMHhmZmZmZmZm ZmZmZmZmZmZmVUwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0lFQ181NTkgMgoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HQ0NfSUVDXzU1OV9DT01QTEVYIDIKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUX0VWQUxfTUVUSE9EX18gMAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19GTFRfRVZBTF9NRVRIT0RfVFNfMTg2NjFfM19fIDAKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fREVDX0VWQUxfTUVUSE9EX18gMgojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19GTFRfUkFESVhfXyAyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZM VF9NQU5UX0RJR19fIDI0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9ESUdfXyA2 CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9NSU5fRVhQX18gKC0xMjUpCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9NSU5fMTBfRVhQX18gKC0zNykKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fRkxUX01BWF9FWFBfXyAxMjgKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fRkxUX01BWF8xMF9FWFBfXyAzOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19GTFRfREVDSU1BTF9ESUdfXyA5CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9N QVhfXyAzLjQwMjgyMzQ2NjM4NTI4ODU5ODExNzA0MTgzNDg0NTE2OTI1ZSszOEYKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUX05PUk1fTUFYX18gMy40MDI4MjM0NjYzODUyODg1 OTgxMTcwNDE4MzQ4NDUxNjkyNWUrMzhGCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZM VF9NSU5fXyAxLjE3NTQ5NDM1MDgyMjI4NzUwNzk2ODczNjUzNzIyMjI0NTY4ZS0zOEYKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUX0VQU0lMT05fXyAxLjE5MjA5Mjg5NTUwNzgx MjUwMDAwMDAwMDAwMDAwMDAwMDAwZS03RgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19G TFRfREVOT1JNX01JTl9fIDEuNDAxMjk4NDY0MzI0ODE3MDcwOTIzNzI5NTgzMjg5OTE2MTNl LTQ1RgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFRfSEFTX0RFTk9STV9fIDEKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUX0hBU19JTkZJTklUWV9fIDEKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fRkxUX0hBU19RVUlFVF9OQU5fXyAxCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0ZQX0ZBU1RfRk1BRiAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0ZMVF9JU19JRUNfNjA1NTlfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9N QU5UX0RJR19fIDUzCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9ESUdfXyAxNQoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19EQkxfTUlOX0VYUF9fICgtMTAyMSkKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fREJMX01JTl8xMF9FWFBfXyAoLTMwNykKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fREJMX01BWF9FWFBfXyAxMDI0CiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0RCTF9NQVhfMTBfRVhQX18gMzA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX0RCTF9ERUNJTUFMX0RJR19fIDE3CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RC TF9NQVhfXyAoKGRvdWJsZSkxLjc5NzY5MzEzNDg2MjMxNTcwODE0NTI3NDIzNzMxNzA0MzU3 ZSszMDhMKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19EQkxfTk9STV9NQVhfXyAoKGRv dWJsZSkxLjc5NzY5MzEzNDg2MjMxNTcwODE0NTI3NDIzNzMxNzA0MzU3ZSszMDhMKQojIDAg IjxidWlsdC1pbj4iCiNkZWZpbmUgX19EQkxfTUlOX18gKChkb3VibGUpMi4yMjUwNzM4NTg1 MDcyMDEzODMwOTAyMzI3MTczMzI0MDQwNmUtMzA4TCkKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fREJMX0VQU0lMT05fXyAoKGRvdWJsZSkyLjIyMDQ0NjA0OTI1MDMxMzA4MDg0NzI2 MzMzNjE4MTY0MDYyZS0xNkwpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9ERU5P Uk1fTUlOX18gKChkb3VibGUpNC45NDA2NTY0NTg0MTI0NjU0NDE3NjU2ODc5Mjg2ODIyMTM3 MmUtMzI0TCkKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fREJMX0hBU19ERU5PUk1fXyAx CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9IQVNfSU5GSU5JVFlfXyAxCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9IQVNfUVVJRVRfTkFOX18gMQojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19GUF9GQVNUX0ZNQSAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX0RCTF9JU19JRUNfNjA1NTlfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xE QkxfTUFOVF9ESUdfXyAxMTMKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTERCTF9ESUdf XyAzMwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX01JTl9FWFBfXyAoLTE2Mzgx KQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX01JTl8xMF9FWFBfXyAoLTQ5MzEp CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xEQkxfTUFYX0VYUF9fIDE2Mzg0CiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0xEQkxfTUFYXzEwX0VYUF9fIDQ5MzIKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fREVDSU1BTF9ESUdfXyAzNgojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19MREJMX0RFQ0lNQUxfRElHX18gMzYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fTERCTF9NQVhfXyAxLjE4OTczMTQ5NTM1NzIzMTc2NTA4NTc1OTMyNjYyODAwNzAyZSs0 OTMyTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX05PUk1fTUFYX18gMS4xODk3 MzE0OTUzNTcyMzE3NjUwODU3NTkzMjY2MjgwMDcwMmUrNDkzMkwKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fTERCTF9NSU5fXyAzLjM2MjEwMzE0MzExMjA5MzUwNjI2MjY3NzgxNzMy MTc1MjYwZS00OTMyTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX0VQU0lMT05f XyAxLjkyNTkyOTk0NDM4NzIzNTg1MzA1NTk3Nzk0MjU4NDkyNzMyZS0zNEwKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fTERCTF9ERU5PUk1fTUlOX18gNi40NzUxNzUxMTk0MzgwMjUx MTA5MjQ0Mzg5NTgyMjc2NDY1NWUtNDk2NkwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f TERCTF9IQVNfREVOT1JNX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX0hB U19JTkZJTklUWV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTERCTF9IQVNfUVVJ RVRfTkFOX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX0lTX0lFQ182MDU1 OV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJfTUFOVF9ESUdfXyAyNAoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMl9ESUdfXyA2CiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0ZMVDMyX01JTl9FWFBfXyAoLTEyNSkKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fRkxUMzJfTUlOXzEwX0VYUF9fICgtMzcpCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0ZMVDMyX01BWF9FWFBfXyAxMjgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f RkxUMzJfTUFYXzEwX0VYUF9fIDM4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMy X0RFQ0lNQUxfRElHX18gOQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMl9NQVhf XyAzLjQwMjgyMzQ2NjM4NTI4ODU5ODExNzA0MTgzNDg0NTE2OTI1ZSszOEYzMgojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMl9OT1JNX01BWF9fIDMuNDAyODIzNDY2Mzg1Mjg4 NTk4MTE3MDQxODM0ODQ1MTY5MjVlKzM4RjMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0ZMVDMyX01JTl9fIDEuMTc1NDk0MzUwODIyMjg3NTA3OTY4NzM2NTM3MjIyMjQ1NjhlLTM4 RjMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyX0VQU0lMT05fXyAxLjE5MjA5 Mjg5NTUwNzgxMjUwMDAwMDAwMDAwMDAwMDAwMDAwZS03RjMyCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0ZMVDMyX0RFTk9STV9NSU5fXyAxLjQwMTI5ODQ2NDMyNDgxNzA3MDkyMzcy OTU4MzI4OTkxNjEzZS00NUYzMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMl9I QVNfREVOT1JNX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMl9IQVNfSU5G SU5JVFlfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyX0hBU19RVUlFVF9O QU5fXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZQX0ZBU1RfRk1BRjMyIDEKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJfSVNfSUVDXzYwNTU5X18gMQojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NF9NQU5UX0RJR19fIDUzCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0ZMVDY0X0RJR19fIDE1CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0ZMVDY0X01JTl9FWFBfXyAoLTEwMjEpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZM VDY0X01JTl8xMF9FWFBfXyAoLTMwNykKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxU NjRfTUFYX0VYUF9fIDEwMjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRfTUFY XzEwX0VYUF9fIDMwOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NF9ERUNJTUFM X0RJR19fIDE3CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0X01BWF9fIDEuNzk3 NjkzMTM0ODYyMzE1NzA4MTQ1Mjc0MjM3MzE3MDQzNTdlKzMwOEY2NAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19GTFQ2NF9OT1JNX01BWF9fIDEuNzk3NjkzMTM0ODYyMzE1NzA4MTQ1 Mjc0MjM3MzE3MDQzNTdlKzMwOEY2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2 NF9NSU5fXyAyLjIyNTA3Mzg1ODUwNzIwMTM4MzA5MDIzMjcxNzMzMjQwNDA2ZS0zMDhGNjQK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRfRVBTSUxPTl9fIDIuMjIwNDQ2MDQ5 MjUwMzEzMDgwODQ3MjYzMzM2MTgxNjQwNjJlLTE2RjY0CiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0ZMVDY0X0RFTk9STV9NSU5fXyA0Ljk0MDY1NjQ1ODQxMjQ2NTQ0MTc2NTY4Nzky ODY4MjIxMzcyZS0zMjRGNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRfSEFT X0RFTk9STV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRfSEFTX0lORklO SVRZX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NF9IQVNfUVVJRVRfTkFO X18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GUF9GQVNUX0ZNQUY2NCAxCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0X0lTX0lFQ182MDU1OV9fIDEKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fRkxUMTI4X01BTlRfRElHX18gMTEzCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0ZMVDEyOF9ESUdfXyAzMwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19GTFQxMjhfTUlOX0VYUF9fICgtMTYzODEpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0ZMVDEyOF9NSU5fMTBfRVhQX18gKC00OTMxKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19GTFQxMjhfTUFYX0VYUF9fIDE2Mzg0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZM VDEyOF9NQVhfMTBfRVhQX18gNDkzMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQx MjhfREVDSU1BTF9ESUdfXyAzNgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQxMjhf TUFYX18gMS4xODk3MzE0OTUzNTcyMzE3NjUwODU3NTkzMjY2MjgwMDcwMmUrNDkzMkYxMjgK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMTI4X05PUk1fTUFYX18gMS4xODk3MzE0 OTUzNTcyMzE3NjUwODU3NTkzMjY2MjgwMDcwMmUrNDkzMkYxMjgKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fRkxUMTI4X01JTl9fIDMuMzYyMTAzMTQzMTEyMDkzNTA2MjYyNjc3ODE3 MzIxNzUyNjBlLTQ5MzJGMTI4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDEyOF9F UFNJTE9OX18gMS45MjU5Mjk5NDQzODcyMzU4NTMwNTU5Nzc5NDI1ODQ5MjczMmUtMzRGMTI4 CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDEyOF9ERU5PUk1fTUlOX18gNi40NzUx NzUxMTk0MzgwMjUxMTA5MjQ0Mzg5NTgyMjc2NDY1NWUtNDk2NkYxMjgKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fRkxUMTI4X0hBU19ERU5PUk1fXyAxCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0ZMVDEyOF9IQVNfSU5GSU5JVFlfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0ZMVDEyOF9IQVNfUVVJRVRfTkFOX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19GTFQxMjhfSVNfSUVDXzYwNTU5X18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19GTFQzMlhfTUFOVF9ESUdfXyA1MwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQz MlhfRElHX18gMTUKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJYX01JTl9FWFBf XyAoLTEwMjEpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9NSU5fMTBfRVhQ X18gKC0zMDcpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9NQVhfRVhQX18g MTAyNAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMlhfTUFYXzEwX0VYUF9fIDMw OAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMlhfREVDSU1BTF9ESUdfXyAxNwoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMlhfTUFYX18gMS43OTc2OTMxMzQ4NjIz MTU3MDgxNDUyNzQyMzczMTcwNDM1N2UrMzA4RjMyeAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19GTFQzMlhfTk9STV9NQVhfXyAxLjc5NzY5MzEzNDg2MjMxNTcwODE0NTI3NDIzNzMx NzA0MzU3ZSszMDhGMzJ4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9NSU5f XyAyLjIyNTA3Mzg1ODUwNzIwMTM4MzA5MDIzMjcxNzMzMjQwNDA2ZS0zMDhGMzJ4CiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9FUFNJTE9OX18gMi4yMjA0NDYwNDkyNTAz MTMwODA4NDcyNjMzMzYxODE2NDA2MmUtMTZGMzJ4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX0ZMVDMyWF9ERU5PUk1fTUlOX18gNC45NDA2NTY0NTg0MTI0NjU0NDE3NjU2ODc5Mjg2 ODIyMTM3MmUtMzI0RjMyeAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMlhfSEFT X0RFTk9STV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJYX0hBU19JTkZJ TklUWV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJYX0hBU19RVUlFVF9O QU5fXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZQX0ZBU1RfRk1BRjMyeCAxCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9JU19JRUNfNjA1NTlfXyAxCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9NQU5UX0RJR19fIDExMwojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19GTFQ2NFhfRElHX18gMzMKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fRkxUNjRYX01JTl9FWFBfXyAoLTE2MzgxKQojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19GTFQ2NFhfTUlOXzEwX0VYUF9fICgtNDkzMSkKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fRkxUNjRYX01BWF9FWFBfXyAxNjM4NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19GTFQ2NFhfTUFYXzEwX0VYUF9fIDQ5MzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f RkxUNjRYX0RFQ0lNQUxfRElHX18gMzYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxU NjRYX01BWF9fIDEuMTg5NzMxNDk1MzU3MjMxNzY1MDg1NzU5MzI2NjI4MDA3MDJlKzQ5MzJG NjR4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9OT1JNX01BWF9fIDEuMTg5 NzMxNDk1MzU3MjMxNzY1MDg1NzU5MzI2NjI4MDA3MDJlKzQ5MzJGNjR4CiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9NSU5fXyAzLjM2MjEwMzE0MzExMjA5MzUwNjI2MjY3 NzgxNzMyMTc1MjYwZS00OTMyRjY0eAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2 NFhfRVBTSUxPTl9fIDEuOTI1OTI5OTQ0Mzg3MjM1ODUzMDU1OTc3OTQyNTg0OTI3MzJlLTM0 RjY0eAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NFhfREVOT1JNX01JTl9fIDYu NDc1MTc1MTE5NDM4MDI1MTEwOTI0NDM4OTU4MjI3NjQ2NTVlLTQ5NjZGNjR4CiMgMCAiPGJ1 aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9IQVNfREVOT1JNX18gMQojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19GTFQ2NFhfSEFTX0lORklOSVRZX18gMQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19GTFQ2NFhfSEFTX1FVSUVUX05BTl9fIDEKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fRkxUNjRYX0lTX0lFQ182MDU1OV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fU0ZSQUNUX0ZCSVRfXyA3CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NGUkFD VF9JQklUX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TRlJBQ1RfTUlOX18gKC0w LjVIUi0wLjVIUikKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0ZSQUNUX01BWF9fIDBY N0ZQLTdIUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TRlJBQ1RfRVBTSUxPTl9fIDB4 MVAtN0hSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VTRlJBQ1RfRkJJVF9fIDgKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVVNGUkFDVF9JQklUX18gMAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19VU0ZSQUNUX01JTl9fIDAuMFVIUgojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19VU0ZSQUNUX01BWF9fIDBYRkZQLThVSFIKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fVVNGUkFDVF9FUFNJTE9OX18gMHgxUC04VUhSCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0ZSQUNUX0ZCSVRfXyAxNQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GUkFD VF9JQklUX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GUkFDVF9NSU5fXyAoLTAu NVItMC41UikKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRlJBQ1RfTUFYX18gMFg3RkZG UC0xNVIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRlJBQ1RfRVBTSUxPTl9fIDB4MVAt MTVSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VGUkFDVF9GQklUX18gMTYKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fVUZSQUNUX0lCSVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1VGUkFDVF9NSU5fXyAwLjBVUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19VRlJBQ1RfTUFYX18gMFhGRkZGUC0xNlVSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1VGUkFDVF9FUFNJTE9OX18gMHgxUC0xNlVSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0xGUkFDVF9GQklUX18gMzEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTEZSQUNUX0lC SVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xGUkFDVF9NSU5fXyAoLTAuNUxS LTAuNUxSKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MRlJBQ1RfTUFYX18gMFg3RkZG RkZGRlAtMzFMUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MRlJBQ1RfRVBTSUxPTl9f IDB4MVAtMzFMUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTEZSQUNUX0ZCSVRfXyAz MgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTEZSQUNUX0lCSVRfXyAwCiMgMCAiPGJ1 aWx0LWluPiIKI2RlZmluZSBfX1VMRlJBQ1RfTUlOX18gMC4wVUxSCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX1VMRlJBQ1RfTUFYX18gMFhGRkZGRkZGRlAtMzJVTFIKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fVUxGUkFDVF9FUFNJTE9OX18gMHgxUC0zMlVMUgojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19MTEZSQUNUX0ZCSVRfXyA2MwojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19MTEZSQUNUX0lCSVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0xMRlJBQ1RfTUlOX18gKC0wLjVMTFItMC41TExSKQojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19MTEZSQUNUX01BWF9fIDBYN0ZGRkZGRkZGRkZGRkZGRlAtNjNMTFIKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fTExGUkFDVF9FUFNJTE9OX18gMHgxUC02M0xMUgojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19VTExGUkFDVF9GQklUX18gNjQKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fVUxMRlJBQ1RfSUJJVF9fIDAKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fVUxMRlJBQ1RfTUlOX18gMC4wVUxMUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19V TExGUkFDVF9NQVhfXyAwWEZGRkZGRkZGRkZGRkZGRkZQLTY0VUxMUgojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19VTExGUkFDVF9FUFNJTE9OX18gMHgxUC02NFVMTFIKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fU0FDQ1VNX0ZCSVRfXyA3CiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX1NBQ0NVTV9JQklUX18gOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TQUND VU1fTUlOX18gKC0wWDFQN0hLLTBYMVA3SEspCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1NBQ0NVTV9NQVhfXyAwWDdGRkZQLTdISwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19T QUNDVU1fRVBTSUxPTl9fIDB4MVAtN0hLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VT QUNDVU1fRkJJVF9fIDgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVVNBQ0NVTV9JQklU X18gOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VU0FDQ1VNX01JTl9fIDAuMFVISwoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VU0FDQ1VNX01BWF9fIDBYRkZGRlAtOFVISwoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VU0FDQ1VNX0VQU0lMT05fXyAweDFQLThVSEsK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fQUNDVU1fRkJJVF9fIDE1CiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX0FDQ1VNX0lCSVRfXyAxNgojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19BQ0NVTV9NSU5fXyAoLTBYMVAxNUstMFgxUDE1SykKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fQUNDVU1fTUFYX18gMFg3RkZGRkZGRlAtMTVLCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0FDQ1VNX0VQU0lMT05fXyAweDFQLTE1SwojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19VQUNDVU1fRkJJVF9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VB Q0NVTV9JQklUX18gMTYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUFDQ1VNX01JTl9f IDAuMFVLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VBQ0NVTV9NQVhfXyAwWEZGRkZG RkZGUC0xNlVLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VBQ0NVTV9FUFNJTE9OX18g MHgxUC0xNlVLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xBQ0NVTV9GQklUX18gMzEK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTEFDQ1VNX0lCSVRfXyAzMgojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19MQUNDVU1fTUlOX18gKC0wWDFQMzFMSy0wWDFQMzFMSykKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTEFDQ1VNX01BWF9fIDBYN0ZGRkZGRkZGRkZGRkZG RlAtMzFMSwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MQUNDVU1fRVBTSUxPTl9fIDB4 MVAtMzFMSwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTEFDQ1VNX0ZCSVRfXyAzMgoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTEFDQ1VNX0lCSVRfXyAzMgojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19VTEFDQ1VNX01JTl9fIDAuMFVMSwojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19VTEFDQ1VNX01BWF9fIDBYRkZGRkZGRkZGRkZGRkZGRlAtMzJVTEsKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUxBQ0NVTV9FUFNJTE9OX18gMHgxUC0zMlVMSwoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MTEFDQ1VNX0ZCSVRfXyA2MwojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19MTEFDQ1VNX0lCSVRfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19MTEFDQ1VNX01JTl9fICgtMFgxUDYzTExLLTBYMVA2M0xMSykKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fTExBQ0NVTV9NQVhfXyAwWDdGRkZGRkZGRkZGRkZGRkZGRkZG RkZGRkZGRkZGRkZGUC02M0xMSwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MTEFDQ1VN X0VQU0lMT05fXyAweDFQLTYzTExLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VMTEFD Q1VNX0ZCSVRfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTExBQ0NVTV9JQklU X18gNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUxMQUNDVU1fTUlOX18gMC4wVUxM SwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTExBQ0NVTV9NQVhfXyAwWEZGRkZGRkZG RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGUC02NFVMTEsKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fVUxMQUNDVU1fRVBTSUxPTl9fIDB4MVAtNjRVTExLCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1FRX0ZCSVRfXyA3CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1FRX0lC SVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0hRX0ZCSVRfXyAxNQojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19IUV9JQklUX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19TUV9GQklUX18gMzEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU1FfSUJJVF9f IDAKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRFFfRkJJVF9fIDYzCiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX0RRX0lCSVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1RRX0ZCSVRfXyAxMjcKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVFFfSUJJVF9fIDAK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVVFRX0ZCSVRfXyA4CiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX1VRUV9JQklUX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19V SFFfRkJJVF9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VIUV9JQklUX18gMAoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VU1FfRkJJVF9fIDMyCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX1VTUV9JQklUX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19V RFFfRkJJVF9fIDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VEUV9JQklUX18gMAoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VVFFfRkJJVF9fIDEyOAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19VVFFfSUJJVF9fIDAKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f SEFfRkJJVF9fIDcKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSEFfSUJJVF9fIDgKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0FfRkJJVF9fIDE1CiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1NBX0lCSVRfXyAxNgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19EQV9G QklUX18gMzEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fREFfSUJJVF9fIDMyCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX1RBX0ZCSVRfXyA2MwojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19UQV9JQklUX18gNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUhBX0ZC SVRfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VIQV9JQklUX18gOAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19VU0FfRkJJVF9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX1VTQV9JQklUX18gMTYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVURBX0ZC SVRfXyAzMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VREFfSUJJVF9fIDMyCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX1VUQV9GQklUX18gNjQKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fVVRBX0lCSVRfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19SRUdJ U1RFUl9QUkVGSVhfXyAkCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VTRVJfTEFCRUxf UFJFRklYX18gCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dOVUNfU1REQ19JTkxJTkVf XyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dDQ19IQVZFX1NZTkNfQ09NUEFSRV9B TkRfU1dBUF8xIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0hBVkVfU1lOQ19D T01QQVJFX0FORF9TV0FQXzIgMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HQ0NfSEFW RV9TWU5DX0NPTVBBUkVfQU5EX1NXQVBfNCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0dDQ19IQVZFX1NZTkNfQ09NUEFSRV9BTkRfU1dBUF84IDEKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fR0NDX0FUT01JQ19CT09MX0xPQ0tfRlJFRSAyCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0dDQ19BVE9NSUNfQ0hBUl9MT0NLX0ZSRUUgMgojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19HQ0NfQVRPTUlDX0NIQVIxNl9UX0xPQ0tfRlJFRSAyCiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX0dDQ19BVE9NSUNfQ0hBUjMyX1RfTE9DS19GUkVFIDIKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0FUT01JQ19XQ0hBUl9UX0xPQ0tfRlJFRSAyCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dDQ19BVE9NSUNfU0hPUlRfTE9DS19GUkVFIDIK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0FUT01JQ19JTlRfTE9DS19GUkVFIDIK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0FUT01JQ19MT05HX0xPQ0tfRlJFRSAy CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dDQ19BVE9NSUNfTExPTkdfTE9DS19GUkVF IDIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0FUT01JQ19URVNUX0FORF9TRVRf VFJVRVZBTCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dDQ19BVE9NSUNfUE9JTlRF Ul9MT0NLX0ZSRUUgMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19IQVZFX1NQRUNVTEFU SU9OX1NBRkVfVkFMVUUgMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HQ0NfSEFWRV9E V0FSRjJfQ0ZJX0FTTSAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1BSQUdNQV9SRURF RklORV9FWFROQU1FIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0laRU9GX0lOVDEy OF9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NJWkVPRl9XQ0hBUl9UX18gNAoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TSVpFT0ZfV0lOVF9UX18gNAojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19TSVpFT0ZfUFRSRElGRl9UX18gOAojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19sb29uZ2FyY2hfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfTE9P TkdBUkNIX0FSQ0hfTE9PTkdBUkNINjQgMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX0xP T05HQVJDSF9BUkNIICJsb29uZ2FyY2g2NCIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9M T09OR0FSQ0hfVFVORV9MT09OR0FSQ0g2NCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf TE9PTkdBUkNIX1RVTkUgImxvb25nYXJjaDY0IgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19MT09OR0FSQ0hfQVJDSF9MT09OR0FSQ0g2NCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX2xvb25nYXJjaF9hcmNoICJsb29uZ2FyY2g2NCIKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fTE9PTkdBUkNIX1RVTkVfTE9PTkdBUkNINjQgMQojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19sb29uZ2FyY2hfdHVuZSAibG9vbmdhcmNoNjQiCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX2xvb25nYXJjaF9ncmxlbiA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19sb29uZ2FyY2g2NCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfQUJJTFA2NCAzCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfTE9PTkdBUkNIX1NJTSBfQUJJTFA2NAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19sb29uZ2FyY2hfbHA2NCAxCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX2xvb25nYXJjaF9kb3VibGVfZmxvYXQgMQojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19sb29uZ2FyY2hfaGFyZF9mbG9hdCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX2xvb25nYXJjaF9mcmxlbiA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19sb29u Z2FyY2hfc2ltZCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX2xvb25nYXJjaF9zeCAx CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX2xvb25nYXJjaF9hc3ggMQojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19sb29uZ2FyY2hfc2ltZF93aWR0aCAyNTYKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fRkxPQVQxMjhfVFlQRV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fYnVpbHRpbl9mYWJzcSBfX2J1aWx0aW5fZmFic2YxMjgKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fYnVpbHRpbl9jb3B5c2lnbnEgX19idWlsdGluX2NvcHlzaWduZjEyOAoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19idWlsdGluX25hbnEgX19idWlsdGluX25hbmYx MjgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fYnVpbHRpbl9uYW5zcSBfX2J1aWx0aW5f bmFuc2YxMjgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fYnVpbHRpbl9pbmZxIF9fYnVp bHRpbl9pbmZmMTI4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX2J1aWx0aW5faHVnZV92 YWxxIF9fYnVpbHRpbl9odWdlX3ZhbGYxMjgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9M T09OR0FSQ0hfU1pJTlQgMzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9MT09OR0FSQ0hf U1pMT05HIDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfTE9PTkdBUkNIX1NaUFRSIDY0 CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfTE9PTkdBUkNIX0ZQU0VUIDMyCiMgMCAiPGJ1 aWx0LWluPiIKI2RlZmluZSBfTE9PTkdBUkNIX1NQRlBTRVQgMzIKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fZ251X2xpbnV4X18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19s aW51eCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX2xpbnV4X18gMQojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgbGludXggMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX191bml4 IDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fdW5peF9fIDEKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIHVuaXggMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19FTEZfXyAxCiMg MCAiPOWRveS7pOihjD4iCiNkZWZpbmUgU1BFQ19DUFUgMQojIDAgIjzlkb3ku6TooYw+Igoj ZGVmaW5lIE5ERUJVRyAxCiMgMCAiPOWRveS7pOihjD4iCiNkZWZpbmUgU1BFQ19DUFVfTFA2 NCAxCiMgMCAiPOWRveS7pOihjD4iCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3Rk Yy1wcmVkZWYuaCIgMSAzIDQKIyAxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkYy1w cmVkZWYuaCIgMyA0CiNkZWZpbmUgX1NURENfUFJFREVGX0ggMQojIDM4ICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9zdGRjLXByZWRlZi5oIiAzIDQKI2RlZmluZSBfX1NURENfSUVDXzU1 OV9fIDEKI2RlZmluZSBfX1NURENfSUVDXzYwNTU5X0JGUF9fIDIwMTQwNEwKIyA0OCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5z dGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkYy1wcmVkZWYuaCIgMyA0CiNkZWZpbmUgX19TVERD X0lFQ181NTlfQ09NUExFWF9fIDEKI2RlZmluZSBfX1NURENfSUVDXzYwNTU5X0NPTVBMRVhf XyAyMDE0MDRMCiMgNjIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgi IDMgNAojZGVmaW5lIF9fU1REQ19JU09fMTA2NDZfXyAyMDE3MDZMCiMgMCAiPOWRveS7pOih jD4iIDIKIyAxICJyZWdyZW5hbWUuYyIKIyAyMSAicmVncmVuYW1lLmMiCiNkZWZpbmUgUkVH X09LX1NUUklDVCAKCiMgMSAiY29uZmlnLmgiIDEKI2RlZmluZSBUQVJHRVRfQ1BVX0RFRkFV TFQgKFRBUkdFVF9DUFVfREVGQVVMVF9hdGhsb25fc3NlKQojIDEgImF1dG8taG9zdC5oIiAx CiMgMTYgImF1dG8taG9zdC5oIgojZGVmaW5lIEdFVEdST1VQU19UIGdpZF90CgoKCgoKI2Rl ZmluZSBIQVZFX0FMTE9DQSAxCgoKI2RlZmluZSBIQVZFX0FMTE9DQV9IIDEKCgojZGVmaW5l IEhBVkVfU1RSSU5HSVpFIDEKIyA2MSAiYXV0by1ob3N0LmgiCiNkZWZpbmUgU1REQ19IRUFE RVJTIDEKIyA3NCAiYXV0by1ob3N0LmgiCiNkZWZpbmUgSEFWRV9HQVNfTUFYX1NLSVBfUDJB TElHTiAxCgoKI2RlZmluZSBIQVZFX0dBU19CQUxJR05fQU5EX1AyQUxJR04gMQoKCiNkZWZp bmUgSEFWRV9HQVNfRklMRFNfRklTVFMgMQoKCgoKCgoKI2RlZmluZSBQUkVGSVhfSU5DTFVE RV9ESVIgIk5PTkUvaW5jbHVkZSIKCgojZGVmaW5lIEhBVkVfX19BUkdaX0NPVU5UIDEKCgoj ZGVmaW5lIEhBVkVfX19BUkdaX05FWFQgMQoKCiNkZWZpbmUgSEFWRV9fX0FSR1pfU1RSSU5H SUZZIDEKCgojZGVmaW5lIEhBVkVfQVRPTEwgMQoKCgoKCiNkZWZpbmUgSEFWRV9DTE9DSyAx CgoKI2RlZmluZSBIQVZFX0RDR0VUVEVYVCAxCgoKI2RlZmluZSBIQVZFX0RVUDIgMQojIDEy NiAiYXV0by1ob3N0LmgiCiNkZWZpbmUgSEFWRV9HRVRDV0QgMQoKCiNkZWZpbmUgSEFWRV9H RVRFR0lEIDEKCgojZGVmaW5lIEhBVkVfR0VURVVJRCAxCgoKI2RlZmluZSBIQVZFX0dFVEdJ RCAxCgoKCgoKI2RlZmluZSBIQVZFX0dFVFJMSU1JVCAxCgoKCgoKI2RlZmluZSBIQVZFX0dF VFVJRCAxCgoKI2RlZmluZSBIQVZFX0tJTEwgMQoKCgoKCiNkZWZpbmUgSEFWRV9NRU1QQ1BZ IDEKCgojZGVmaW5lIEhBVkVfTVVOTUFQIDEKCgojZGVmaW5lIEhBVkVfTkxfTEFOR0lORk8g MQoKCgoKCiNkZWZpbmUgSEFWRV9QVVRFTlYgMQoKCiNkZWZpbmUgSEFWRV9TRVRFTlYgMQoK CiNkZWZpbmUgSEFWRV9TRVRMT0NBTEUgMQoKCiNkZWZpbmUgSEFWRV9TRVRSTElNSVQgMQoK CiNkZWZpbmUgSEFWRV9TVFBDUFkgMQoKCiNkZWZpbmUgSEFWRV9TVFJDQVNFQ01QIDEKCgoj ZGVmaW5lIEhBVkVfU1RSQ0hSIDEKCgojZGVmaW5lIEhBVkVfU1RSRFVQIDEKCgojZGVmaW5l IEhBVkVfU1RSU0lHTkFMIDEKCgojZGVmaW5lIEhBVkVfU1RSVE9VTCAxCgoKI2RlZmluZSBI QVZFX1NZU0NPTkYgMQoKCgoKCiNkZWZpbmUgSEFWRV9UU0VBUkNIIDEKCgojZGVmaW5lIEhB VkVfQVJHWl9IIDEKCgoKCgojZGVmaW5lIEhBVkVfRkNOVExfSCAxCgoKI2RlZmluZSBIQVZF X0xBTkdJTkZPX0ggMQoKCiNkZWZpbmUgSEFWRV9MSU1JVFNfSCAxCgoKI2RlZmluZSBIQVZF X0xPQ0FMRV9IIDEKCgoKI2RlZmluZSBIQVZFX01BTExPQ19IIDEKCgoKI2RlZmluZSBIQVZF X05MX1RZUEVTX0ggMQoKCiNkZWZpbmUgSEFWRV9TVERERUZfSCAxCgoKI2RlZmluZSBIQVZF X1NURExJQl9IIDEKCgojZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQoKCgoKCiNkZWZpbmUgSEFW RV9TWVNfRklMRV9IIDEKIyAyNTQgImF1dG8taG9zdC5oIgojZGVmaW5lIEhBVkVfU1lTX1NU QVRfSCAxCiMgMjYzICJhdXRvLWhvc3QuaCIKI2RlZmluZSBIQVZFX1RJTUVfSCAxCiMgMzA5 ICJhdXRvLWhvc3QuaCIKI2RlZmluZSBIQVZFX1ZPTEFUSUxFIDEKCgojZGVmaW5lIEhBVkVf TE9OR19ET1VCTEUgMQojIDMyMyAiYXV0by1ob3N0LmgiCiNkZWZpbmUgSEFWRV9MT05HX0xP TkcgMQoKI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKIyAzMzggImF1dG8taG9zdC5oIgojZGVm aW5lIFNJWkVPRl9TSE9SVCAyCgoKI2RlZmluZSBTSVpFT0ZfSU5UIDQKCgojZGVmaW5lIFNJ WkVPRl9MT05HX0xPTkcgOAojZGVmaW5lIE1BWF9MT05HX1RZUEVfU0laRSA2NAoKCgojZGVm aW5lIFNJWkVPRl9MT05HIDgKIyAzNjcgImF1dG8taG9zdC5oIgojZGVmaW5lIF9HTlVfU09V UkNFIDEKIyAzOTcgImF1dG8taG9zdC5oIgojZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCgoK I2RlZmluZSBIQVZFX1BSSU5URl9QVFIgMQojIDQxMiAiYXV0by1ob3N0LmgiCiNkZWZpbmUg SEFWRV9JQ09OViAxCgoKI2RlZmluZSBJQ09OVl9DT05TVCAKCgojZGVmaW5lIEhBVkVfREVD TF9HRVRFTlYgMQoKCiNkZWZpbmUgSEFWRV9ERUNMX0FUT0wgMQoKCiNkZWZpbmUgSEFWRV9E RUNMX1NCUksgMQoKCiNkZWZpbmUgSEFWRV9ERUNMX0FCT1JUIDEKCgojZGVmaW5lIEhBVkVf REVDTF9BVE9GIDEKCgojZGVmaW5lIEhBVkVfREVDTF9HRVRDV0QgMQoKCiNkZWZpbmUgSEFW RV9ERUNMX0dFVFdEIDEKIyA0NTQgImF1dG8taG9zdC5oIgojZGVmaW5lIEhBVkVfREVDTF9T VFJTVFIgMQoKCiNkZWZpbmUgSEFWRV9ERUNMX0VSUk5PIDEKCgojZGVmaW5lIEhBVkVfREVD TF9NQUxMT0MgMQoKCiNkZWZpbmUgSEFWRV9ERUNMX1JFQUxMT0MgMQoKCiNkZWZpbmUgSEFW RV9ERUNMX0NBTExPQyAxCgoKI2RlZmluZSBIQVZFX0RFQ0xfRlJFRSAxCgoKI2RlZmluZSBI QVZFX0RFQ0xfQkFTRU5BTUUgMQoKCiNkZWZpbmUgSEFWRV9ERUNMX0dFVE9QVCAxCgoKI2Rl ZmluZSBIQVZFX0RFQ0xfQ0xPQ0sgMQoKCiNkZWZpbmUgSEFWRV9ERUNMX0dFVFJMSU1JVCAx CgoKI2RlZmluZSBIQVZFX0RFQ0xfU0VUUkxJTUlUIDEKIyA0OTYgImF1dG8taG9zdC5oIgoj ZGVmaW5lIEhBVkVfQ0xPQ0tfVCAxCgoKCgoKI2RlZmluZSBIQVZFX0lDT05WIDEKCgojZGVm aW5lIElDT05WX0NPTlNUIAoKCiNkZWZpbmUgSEFWRV9MQU5HSU5GT19DT0RFU0VUIDEKCgoj ZGVmaW5lIEhBVkVfTENfTUVTU0FHRVMgMQoKCgojZGVmaW5lIEVOQUJMRV9OTFMgMQoKCgoK I2RlZmluZSBIQVZFX0dFVFRFWFQgMQojIDUzNSAiYXV0by1ob3N0LmgiCiNkZWZpbmUgSEFW RV9HQVNfU1VCU0VDVElPTl9PUkRFUklORyAxCgoKI2RlZmluZSBIQVZFX0dBU19XRUFLIDEK CgojZGVmaW5lIEhBVkVfR0FTX0hJRERFTiAxCgoKI2RlZmluZSBIQVZFX0FTX0xFQjEyOCAx CgoKCgoKI2RlZmluZSBIQVZFX0dBU19TSEZfTUVSR0UgMQojIDU3MSAiYXV0by1ob3N0Lmgi CiNkZWZpbmUgSEFWRV9BU19HT1RPRkZfSU5fREFUQSAwCgoKCiNkZWZpbmUgSEFWRV9BU19E V0FSRjJfREVCVUdfTElORSAxCgoKI2RlZmluZSBIQVZFX0FTX0dEV0FSRjJfREVCVUdfRkxB RyAxCgoKI2RlZmluZSBIQVZFX0FTX0dTVEFCU19ERUJVR19GTEFHIDEKCgojZGVmaW5lIEhB VkVfTERfRUhfRlJBTUVfSERSIDEKIyAzICJjb25maWcuaCIgMgoKCgoKc3RydWN0IHJ0eF9k ZWY7CnR5cGVkZWYgc3RydWN0IHJ0eF9kZWYgKnJ0eDsKc3RydWN0IHJ0dmVjX2RlZjsKdHlw ZWRlZiBzdHJ1Y3QgcnR2ZWNfZGVmICpydHZlYzsKdW5pb24gdHJlZV9ub2RlOwp0eXBlZGVm IHVuaW9uIHRyZWVfbm9kZSAqdHJlZTsKIyAxICJhbnNpZGVjbC5oIiAxCiMgMTE1ICJhbnNp ZGVjbC5oIgojZGVmaW5lIF9BTlNJREVDTF9IIDEKIyAxMzYgImFuc2lkZWNsLmgiCiNkZWZp bmUgR0NDX1ZFUlNJT04gKF9fR05VQ19fICogMTAwMCArIF9fR05VQ19NSU5PUl9fKQoKCgoK CgoKI2RlZmluZSBBTlNJX1BST1RPVFlQRVMgMQojZGVmaW5lIFBUUiB2b2lkICoKI2RlZmlu ZSBQVFJDT05TVCB2b2lkICpjb25zdAojZGVmaW5lIExPTkdfRE9VQkxFIGxvbmcgZG91Ymxl CgojZGVmaW5lIFBBUkFNUyhBUkdTKSBBUkdTCiNkZWZpbmUgVlBBUkFNUyhBUkdTKSBBUkdT CiNkZWZpbmUgVkFfU1RBUlQoVkFfTElTVCxWQVIpIHZhX3N0YXJ0KFZBX0xJU1QsIFZBUikK CgoKCgojZGVmaW5lIFZBX09QRU4oQVAsVkFSKSB7IHZhX2xpc3QgQVA7IHZhX3N0YXJ0KEFQ LCBWQVIpOyB7IHN0cnVjdCBRZG15CiNkZWZpbmUgVkFfQ0xPU0UoQVApIH0gdmFfZW5kKEFQ KTsgfQojZGVmaW5lIFZBX0ZJWEVEQVJHKEFQLFQsTikgc3RydWN0IFFkbXkKCiN1bmRlZiBj b25zdAojdW5kZWYgdm9sYXRpbGUKI3VuZGVmIHNpZ25lZAojIDIyNSAiYW5zaWRlY2wuaCIK I2RlZmluZSBBVFRSSUJVVEVfTUFMTE9DIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkK IyAyMzQgImFuc2lkZWNsLmgiCiNkZWZpbmUgQVRUUklCVVRFX1VOVVNFRF9MQUJFTCBBVFRS SUJVVEVfVU5VU0VECgoKCgoKCiNkZWZpbmUgQVRUUklCVVRFX1VOVVNFRCBfX2F0dHJpYnV0 ZV9fICgoX191bnVzZWRfXykpCgoKCiNkZWZpbmUgQVRUUklCVVRFX05PUkVUVVJOIF9fYXR0 cmlidXRlX18gKChfX25vcmV0dXJuX18pKQoKCgojZGVmaW5lIEFUVFJJQlVURV9QUklOVEYo bSxuKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgbSwgbikpKQoj ZGVmaW5lIEFUVFJJQlVURV9QUklOVEZfMSBBVFRSSUJVVEVfUFJJTlRGKDEsIDIpCiNkZWZp bmUgQVRUUklCVVRFX1BSSU5URl8yIEFUVFJJQlVURV9QUklOVEYoMiwgMykKI2RlZmluZSBB VFRSSUJVVEVfUFJJTlRGXzMgQVRUUklCVVRFX1BSSU5URigzLCA0KQojZGVmaW5lIEFUVFJJ QlVURV9QUklOVEZfNCBBVFRSSUJVVEVfUFJJTlRGKDQsIDUpCiNkZWZpbmUgQVRUUklCVVRF X1BSSU5URl81IEFUVFJJQlVURV9QUklOVEYoNSwgNikKIyAxNCAiY29uZmlnLmgiIDIKIyAx ICJiaWFyY2g2NC5oIiAxCiMgMjQgImJpYXJjaDY0LmgiCiNkZWZpbmUgVEFSR0VUXzY0QklU X0RFRkFVTFQgCiNkZWZpbmUgVEFSR0VUX0JJX0FSQ0ggCiMgMTUgImNvbmZpZy5oIiAyCiMg MSAiaTM4Ni5oIiAxCiMgNDAgImkzODYuaCIKI2RlZmluZSBIQUxGX1BJQ19QKCkgMAojZGVm aW5lIEhBTEZfUElDX05VTUJFUl9QVFJTIDAKI2RlZmluZSBIQUxGX1BJQ19OVU1CRVJfUkVG UyAwCiNkZWZpbmUgSEFMRl9QSUNfRU5DT0RFKERFQ0wpIAojZGVmaW5lIEhBTEZfUElDX0RF Q0xBUkUoTkFNRSkgCiNkZWZpbmUgSEFMRl9QSUNfSU5JVCgpIGVycm9yICgiaGFsZi1waWMg aW5pdCBjYWxsZWQgb24gc3lzdGVtcyB0aGF0IGRvbid0IHN1cHBvcnQgaXQiKQojZGVmaW5l IEhBTEZfUElDX0FERFJFU1NfUChYKSAwCiNkZWZpbmUgSEFMRl9QSUNfUFRSKFgpIChYKQoj ZGVmaW5lIEhBTEZfUElDX0ZJTklTSChTVFJFQU0pIAoKCgoKc3RydWN0IHByb2Nlc3Nvcl9j b3N0cyB7CiAgY29uc3QgaW50IGFkZDsKICBjb25zdCBpbnQgbGVhOwogIGNvbnN0IGludCBz aGlmdF92YXI7CiAgY29uc3QgaW50IHNoaWZ0X2NvbnN0OwogIGNvbnN0IGludCBtdWx0X2lu aXQ7CiAgY29uc3QgaW50IG11bHRfYml0OwogIGNvbnN0IGludCBkaXZpZGU7CiAgaW50IG1v dnN4OwogIGludCBtb3Z6eDsKICBjb25zdCBpbnQgbGFyZ2VfaW5zbjsKICBjb25zdCBpbnQg bW92ZV9yYXRpbzsKCiAgY29uc3QgaW50IG1vdnpibF9sb2FkOwogIGNvbnN0IGludCBpbnRf bG9hZFszXTsKCgogIGNvbnN0IGludCBpbnRfc3RvcmVbM107CgogIGNvbnN0IGludCBmcF9t b3ZlOwogIGNvbnN0IGludCBmcF9sb2FkWzNdOwoKICBjb25zdCBpbnQgZnBfc3RvcmVbM107 CgogIGNvbnN0IGludCBtbXhfbW92ZTsKICBjb25zdCBpbnQgbW14X2xvYWRbMl07CgogIGNv bnN0IGludCBtbXhfc3RvcmVbMl07CgogIGNvbnN0IGludCBzc2VfbW92ZTsKICBjb25zdCBp bnQgc3NlX2xvYWRbM107CgogIGNvbnN0IGludCBzc2Vfc3RvcmVbM107CgogIGNvbnN0IGlu dCBtbXhzc2VfdG9faW50ZWdlcjsKCiAgY29uc3QgaW50IHByZWZldGNoX2Jsb2NrOwogIGNv bnN0IGludCBzaW11bHRhbmVvdXNfcHJlZmV0Y2hlczsKCn07CgpleHRlcm4gY29uc3Qgc3Ry dWN0IHByb2Nlc3Nvcl9jb3N0cyAqaXg4Nl9jb3N0OwoKCgpleHRlcm4gaW50IHRhcmdldF9m bGFnczsKIyAxMDkgImkzODYuaCIKI2RlZmluZSBNQVNLXzgwMzg3IDB4MDAwMDAwMDEKI2Rl ZmluZSBNQVNLX1JURCAweDAwMDAwMDAyCiNkZWZpbmUgTUFTS19BTElHTl9ET1VCTEUgMHgw MDAwMDAwNAojZGVmaW5lIE1BU0tfU1ZSM19TSExJQiAweDAwMDAwMDA4CiNkZWZpbmUgTUFT S19JRUVFX0ZQIDB4MDAwMDAwMTAKI2RlZmluZSBNQVNLX0ZMT0FUX1JFVFVSTlMgMHgwMDAw MDAyMAojZGVmaW5lIE1BU0tfTk9fRkFOQ1lfTUFUSF8zODcgMHgwMDAwMDA0MAojZGVmaW5l IE1BU0tfT01JVF9MRUFGX0ZSQU1FX1BPSU5URVIgMHgwODAKI2RlZmluZSBNQVNLX1NUQUNL X1BST0JFIDB4MDAwMDAxMDAKI2RlZmluZSBNQVNLX05PX0FMSUdOX1NUUk9QUyAweDAwMDAw MjAwCiNkZWZpbmUgTUFTS19JTkxJTkVfQUxMX1NUUk9QUyAweDAwMDAwNDAwCiNkZWZpbmUg TUFTS19OT19QVVNIX0FSR1MgMHgwMDAwMDgwMAojZGVmaW5lIE1BU0tfQUNDVU1VTEFURV9P VVRHT0lOR19BUkdTIDB4MDAwMDEwMDAKI2RlZmluZSBNQVNLX0FDQ1VNVUxBVEVfT1VUR09J TkdfQVJHU19TRVQgMHgwMDAwMjAwMAojZGVmaW5lIE1BU0tfTU1YIDB4MDAwMDQwMDAKI2Rl ZmluZSBNQVNLX01NWF9TRVQgMHgwMDAwODAwMAojZGVmaW5lIE1BU0tfU1NFIDB4MDAwMTAw MDAKI2RlZmluZSBNQVNLX1NTRV9TRVQgMHgwMDAyMDAwMAojZGVmaW5lIE1BU0tfU1NFMiAw eDAwMDQwMDAwCiNkZWZpbmUgTUFTS19TU0UyX1NFVCAweDAwMDgwMDAwCiNkZWZpbmUgTUFT S18zRE5PVyAweDAwMTAwMDAwCiNkZWZpbmUgTUFTS18zRE5PV19TRVQgMHgwMDIwMDAwMAoj ZGVmaW5lIE1BU0tfM0ROT1dfQSAweDAwNDAwMDAwCiNkZWZpbmUgTUFTS18zRE5PV19BX1NF VCAweDAwODAwMDAwCiNkZWZpbmUgTUFTS18xMjhCSVRfTE9OR19ET1VCTEUgMHgwMTAwMDAw MAojZGVmaW5lIE1BU0tfNjRCSVQgMHgwMjAwMDAwMAoKI2RlZmluZSBNQVNLX05PX1JFRF9a T05FIDB4MDQwMDAwMDAKCgojZGVmaW5lIFRBUkdFVF84MDM4NyAodGFyZ2V0X2ZsYWdzICYg TUFTS184MDM4NykKCgoKCiNkZWZpbmUgVEFSR0VUX1JURCAodGFyZ2V0X2ZsYWdzICYgTUFT S19SVEQpCgoKCgojZGVmaW5lIFRBUkdFVF9BTElHTl9ET1VCTEUgKHRhcmdldF9mbGFncyAm IE1BU0tfQUxJR05fRE9VQkxFKQoKCiNkZWZpbmUgVEFSR0VUX1BVU0hfQVJHUyAoISh0YXJn ZXRfZmxhZ3MgJiBNQVNLX05PX1BVU0hfQVJHUykpCgoKI2RlZmluZSBUQVJHRVRfQUNDVU1V TEFURV9PVVRHT0lOR19BUkdTICh0YXJnZXRfZmxhZ3MgJiBNQVNLX0FDQ1VNVUxBVEVfT1VU R09JTkdfQVJHUykKCgoKCiNkZWZpbmUgVEFSR0VUX1NWUjNfU0hMSUIgKHRhcmdldF9mbGFn cyAmIE1BU0tfU1ZSM19TSExJQikKCgoKCiNkZWZpbmUgVEFSR0VUX0lFRUVfRlAgKHRhcmdl dF9mbGFncyAmIE1BU0tfSUVFRV9GUCkKCgoKCiNkZWZpbmUgVEFSR0VUX0ZMT0FUX1JFVFVS TlNfSU5fODAzODcgKHRhcmdldF9mbGFncyAmIE1BU0tfRkxPQVRfUkVUVVJOUykKCgoKCiNk ZWZpbmUgVEFSR0VUXzEyOEJJVF9MT05HX0RPVUJMRSAodGFyZ2V0X2ZsYWdzICYgTUFTS18x MjhCSVRfTE9OR19ET1VCTEUpCgoKCiNkZWZpbmUgVEFSR0VUX05PX0ZBTkNZX01BVEhfMzg3 ICh0YXJnZXRfZmxhZ3MgJiBNQVNLX05PX0ZBTkNZX01BVEhfMzg3KQoKCiNkZWZpbmUgVEFS R0VUX09NSVRfTEVBRl9GUkFNRV9QT0lOVEVSICh0YXJnZXRfZmxhZ3MgJiBNQVNLX09NSVRf TEVBRl9GUkFNRV9QT0lOVEVSKQoKCgojZGVmaW5lIFRBUkdFVF9ERUJVR19BRERSIChpeDg2 X2RlYnVnX2FkZHJfc3RyaW5nICE9IDApCgoKI2RlZmluZSBUQVJHRVRfREVCVUdfQVJHIChp eDg2X2RlYnVnX2FyZ19zdHJpbmcgIT0gMCkKCgoKI2RlZmluZSBUQVJHRVRfNjRCSVQgKHRh cmdldF9mbGFncyAmIE1BU0tfNjRCSVQpCiMgMjAyICJpMzg2LmgiCiNkZWZpbmUgVEFSR0VU XzM4NiAoaXg4Nl9jcHUgPT0gUFJPQ0VTU09SX0kzODYpCiNkZWZpbmUgVEFSR0VUXzQ4NiAo aXg4Nl9jcHUgPT0gUFJPQ0VTU09SX0k0ODYpCiNkZWZpbmUgVEFSR0VUX1BFTlRJVU0gKGl4 ODZfY3B1ID09IFBST0NFU1NPUl9QRU5USVVNKQojZGVmaW5lIFRBUkdFVF9QRU5USVVNUFJP IChpeDg2X2NwdSA9PSBQUk9DRVNTT1JfUEVOVElVTVBSTykKI2RlZmluZSBUQVJHRVRfSzYg KGl4ODZfY3B1ID09IFBST0NFU1NPUl9LNikKI2RlZmluZSBUQVJHRVRfQVRITE9OIChpeDg2 X2NwdSA9PSBQUk9DRVNTT1JfQVRITE9OKQojZGVmaW5lIFRBUkdFVF9QRU5USVVNNCAoaXg4 Nl9jcHUgPT0gUFJPQ0VTU09SX1BFTlRJVU00KQoKI2RlZmluZSBDUFVNQVNLICgxIDw8IGl4 ODZfY3B1KQpleHRlcm4gY29uc3QgaW50IHg4Nl91c2VfbGVhdmUsIHg4Nl9wdXNoX21lbW9y eSwgeDg2X3plcm9fZXh0ZW5kX3dpdGhfYW5kOwpleHRlcm4gY29uc3QgaW50IHg4Nl91c2Vf Yml0X3Rlc3QsIHg4Nl9jbW92ZSwgeDg2X2RlZXBfYnJhbmNoOwpleHRlcm4gY29uc3QgaW50 IHg4Nl9icmFuY2hfaGludHMsIHg4Nl91bnJvbGxfc3RybGVuOwpleHRlcm4gY29uc3QgaW50 IHg4Nl9kb3VibGVfd2l0aF9hZGQsIHg4Nl9wYXJ0aWFsX3JlZ19zdGFsbCwgeDg2X21vdng7 CmV4dGVybiBjb25zdCBpbnQgeDg2X3VzZV9sb29wLCB4ODZfdXNlX2Zpb3AsIHg4Nl91c2Vf bW92MDsKZXh0ZXJuIGNvbnN0IGludCB4ODZfdXNlX2NsdGQsIHg4Nl9yZWFkX21vZGlmeV93 cml0ZTsKZXh0ZXJuIGNvbnN0IGludCB4ODZfcmVhZF9tb2RpZnksIHg4Nl9zcGxpdF9sb25n X21vdmVzOwpleHRlcm4gY29uc3QgaW50IHg4Nl9wcm9tb3RlX1FJbW9kZSwgeDg2X3Npbmds ZV9zdHJpbmdvcDsKZXh0ZXJuIGNvbnN0IGludCB4ODZfaGltb2RlX21hdGgsIHg4Nl9xaW1v ZGVfbWF0aCwgeDg2X3Byb21vdGVfcWlfcmVnczsKZXh0ZXJuIGNvbnN0IGludCB4ODZfcHJv bW90ZV9oaV9yZWdzLCB4ODZfaW50ZWdlcl9ERm1vZGVfbW92ZXM7CmV4dGVybiBjb25zdCBp bnQgeDg2X2FkZF9lc3BfNCwgeDg2X2FkZF9lc3BfOCwgeDg2X3N1Yl9lc3BfNCwgeDg2X3N1 Yl9lc3BfODsKZXh0ZXJuIGNvbnN0IGludCB4ODZfcGFydGlhbF9yZWdfZGVwZW5kZW5jeSwg eDg2X21lbW9yeV9taXNtYXRjaF9zdGFsbDsKZXh0ZXJuIGNvbnN0IGludCB4ODZfYWNjdW11 bGF0ZV9vdXRnb2luZ19hcmdzLCB4ODZfcHJvbG9ndWVfdXNpbmdfbW92ZTsKZXh0ZXJuIGNv bnN0IGludCB4ODZfZXBpbG9ndWVfdXNpbmdfbW92ZSwgeDg2X2RlY29tcG9zZV9sZWE7CmV4 dGVybiBjb25zdCBpbnQgeDg2X2FyY2hfYWx3YXlzX2ZhbmN5X21hdGhfMzg3OwpleHRlcm4g aW50IHg4Nl9wcmVmZXRjaF9zc2U7CgojZGVmaW5lIFRBUkdFVF9VU0VfTEVBVkUgKHg4Nl91 c2VfbGVhdmUgJiBDUFVNQVNLKQojZGVmaW5lIFRBUkdFVF9QVVNIX01FTU9SWSAoeDg2X3B1 c2hfbWVtb3J5ICYgQ1BVTUFTSykKI2RlZmluZSBUQVJHRVRfWkVST19FWFRFTkRfV0lUSF9B TkQgKHg4Nl96ZXJvX2V4dGVuZF93aXRoX2FuZCAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VU X1VTRV9CSVRfVEVTVCAoeDg2X3VzZV9iaXRfdGVzdCAmIENQVU1BU0spCiNkZWZpbmUgVEFS R0VUX1VOUk9MTF9TVFJMRU4gKHg4Nl91bnJvbGxfc3RybGVuICYgQ1BVTUFTSykKCgojZGVm aW5lIFRBUkdFVF9DTU9WRSAoKHg4Nl9jbW92ZSAmICgxIDw8IGl4ODZfYXJjaCkpIHx8IFRB UkdFVF9TU0UpCiNkZWZpbmUgVEFSR0VUX0RFRVBfQlJBTkNIX1BSRURJQ1RJT04gKHg4Nl9k ZWVwX2JyYW5jaCAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VUX0JSQU5DSF9QUkVESUNUSU9O X0hJTlRTICh4ODZfYnJhbmNoX2hpbnRzICYgQ1BVTUFTSykKI2RlZmluZSBUQVJHRVRfRE9V QkxFX1dJVEhfQUREICh4ODZfZG91YmxlX3dpdGhfYWRkICYgQ1BVTUFTSykKI2RlZmluZSBU QVJHRVRfVVNFX1NBSEYgKCh4ODZfdXNlX3NhaGYgJiBDUFVNQVNLKSAmJiAhVEFSR0VUXzY0 QklUKQojZGVmaW5lIFRBUkdFVF9NT1ZYICh4ODZfbW92eCAmIENQVU1BU0spCiNkZWZpbmUg VEFSR0VUX1BBUlRJQUxfUkVHX1NUQUxMICh4ODZfcGFydGlhbF9yZWdfc3RhbGwgJiBDUFVN QVNLKQojZGVmaW5lIFRBUkdFVF9VU0VfTE9PUCAoeDg2X3VzZV9sb29wICYgQ1BVTUFTSykK I2RlZmluZSBUQVJHRVRfVVNFX0ZJT1AgKHg4Nl91c2VfZmlvcCAmIENQVU1BU0spCiNkZWZp bmUgVEFSR0VUX1VTRV9NT1YwICh4ODZfdXNlX21vdjAgJiBDUFVNQVNLKQojZGVmaW5lIFRB UkdFVF9VU0VfQ0xURCAoeDg2X3VzZV9jbHRkICYgQ1BVTUFTSykKI2RlZmluZSBUQVJHRVRf U1BMSVRfTE9OR19NT1ZFUyAoeDg2X3NwbGl0X2xvbmdfbW92ZXMgJiBDUFVNQVNLKQojZGVm aW5lIFRBUkdFVF9SRUFEX01PRElGWV9XUklURSAoeDg2X3JlYWRfbW9kaWZ5X3dyaXRlICYg Q1BVTUFTSykKI2RlZmluZSBUQVJHRVRfUkVBRF9NT0RJRlkgKHg4Nl9yZWFkX21vZGlmeSAm IENQVU1BU0spCiNkZWZpbmUgVEFSR0VUX1BST01PVEVfUUltb2RlICh4ODZfcHJvbW90ZV9R SW1vZGUgJiBDUFVNQVNLKQojZGVmaW5lIFRBUkdFVF9TSU5HTEVfU1RSSU5HT1AgKHg4Nl9z aW5nbGVfc3RyaW5nb3AgJiBDUFVNQVNLKQojZGVmaW5lIFRBUkdFVF9RSU1PREVfTUFUSCAo eDg2X3FpbW9kZV9tYXRoICYgQ1BVTUFTSykKI2RlZmluZSBUQVJHRVRfSElNT0RFX01BVEgg KHg4Nl9oaW1vZGVfbWF0aCAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VUX1BST01PVEVfUUlf UkVHUyAoeDg2X3Byb21vdGVfcWlfcmVncyAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VUX1BS T01PVEVfSElfUkVHUyAoeDg2X3Byb21vdGVfaGlfcmVncyAmIENQVU1BU0spCiNkZWZpbmUg VEFSR0VUX0FERF9FU1BfNCAoeDg2X2FkZF9lc3BfNCAmIENQVU1BU0spCiNkZWZpbmUgVEFS R0VUX0FERF9FU1BfOCAoeDg2X2FkZF9lc3BfOCAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VU X1NVQl9FU1BfNCAoeDg2X3N1Yl9lc3BfNCAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VUX1NV Ql9FU1BfOCAoeDg2X3N1Yl9lc3BfOCAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VUX0lOVEVH RVJfREZNT0RFX01PVkVTICh4ODZfaW50ZWdlcl9ERm1vZGVfbW92ZXMgJiBDUFVNQVNLKQoj ZGVmaW5lIFRBUkdFVF9QQVJUSUFMX1JFR19ERVBFTkRFTkNZICh4ODZfcGFydGlhbF9yZWdf ZGVwZW5kZW5jeSAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VUX01FTU9SWV9NSVNNQVRDSF9T VEFMTCAoeDg2X21lbW9yeV9taXNtYXRjaF9zdGFsbCAmIENQVU1BU0spCiNkZWZpbmUgVEFS R0VUX1BST0xPR1VFX1VTSU5HX01PVkUgKHg4Nl9wcm9sb2d1ZV91c2luZ19tb3ZlICYgQ1BV TUFTSykKI2RlZmluZSBUQVJHRVRfRVBJTE9HVUVfVVNJTkdfTU9WRSAoeDg2X2VwaWxvZ3Vl X3VzaW5nX21vdmUgJiBDUFVNQVNLKQojZGVmaW5lIFRBUkdFVF9ERUNPTVBPU0VfTEVBICh4 ODZfZGVjb21wb3NlX2xlYSAmIENQVU1BU0spCiNkZWZpbmUgVEFSR0VUX1BSRUZFVENIX1NT RSAoeDg2X3ByZWZldGNoX3NzZSkKCiNkZWZpbmUgVEFSR0VUX1NUQUNLX1BST0JFICh0YXJn ZXRfZmxhZ3MgJiBNQVNLX1NUQUNLX1BST0JFKQoKI2RlZmluZSBUQVJHRVRfQUxJR05fU1RS SU5HT1BTICghKHRhcmdldF9mbGFncyAmIE1BU0tfTk9fQUxJR05fU1RST1BTKSkKI2RlZmlu ZSBUQVJHRVRfSU5MSU5FX0FMTF9TVFJJTkdPUFMgKHRhcmdldF9mbGFncyAmIE1BU0tfSU5M SU5FX0FMTF9TVFJPUFMpCgojZGVmaW5lIEFTU0VNQkxFUl9ESUFMRUNUIChpeDg2X2FzbV9k aWFsZWN0KQoKI2RlZmluZSBUQVJHRVRfU1NFICgodGFyZ2V0X2ZsYWdzICYgKE1BU0tfU1NF IHwgTUFTS19TU0UyKSkgIT0gMCkKI2RlZmluZSBUQVJHRVRfU1NFMiAoKHRhcmdldF9mbGFn cyAmIE1BU0tfU1NFMikgIT0gMCkKI2RlZmluZSBUQVJHRVRfU1NFX01BVEggKChpeDg2X2Zw bWF0aCAmIEZQTUFUSF9TU0UpICE9IDApCiNkZWZpbmUgVEFSR0VUX01JWF9TU0VfSTM4NyAo KGl4ODZfZnBtYXRoICYgRlBNQVRIX1NTRSkgJiYgKGl4ODZfZnBtYXRoICYgRlBNQVRIXzM4 NykpCgojZGVmaW5lIFRBUkdFVF9NTVggKCh0YXJnZXRfZmxhZ3MgJiBNQVNLX01NWCkgIT0g MCkKI2RlZmluZSBUQVJHRVRfM0ROT1cgKCh0YXJnZXRfZmxhZ3MgJiBNQVNLXzNETk9XKSAh PSAwKQojZGVmaW5lIFRBUkdFVF8zRE5PV19BICgodGFyZ2V0X2ZsYWdzICYgTUFTS18zRE5P V19BKSAhPSAwKQoKI2RlZmluZSBUQVJHRVRfUkVEX1pPTkUgKCEodGFyZ2V0X2ZsYWdzICYg TUFTS19OT19SRURfWk9ORSkpCgoKCgoKCiNkZWZpbmUgVEFSR0VUX1NXSVRDSEVTIHsgeyAi ODAzODciLCBNQVNLXzgwMzg3LCBOXygiVXNlIGhhcmR3YXJlIGZwIikgfSwgeyAibm8tODAz ODciLCAtTUFTS184MDM4NywgTl8oIkRvIG5vdCB1c2UgaGFyZHdhcmUgZnAiKSB9LCB7ICJo YXJkLWZsb2F0IiwgTUFTS184MDM4NywgTl8oIlVzZSBoYXJkd2FyZSBmcCIpIH0sIHsgInNv ZnQtZmxvYXQiLCAtTUFTS184MDM4NywgTl8oIkRvIG5vdCB1c2UgaGFyZHdhcmUgZnAiKSB9 LCB7ICJuby1zb2Z0LWZsb2F0IiwgTUFTS184MDM4NywgTl8oIlVzZSBoYXJkd2FyZSBmcCIp IH0sIHsgIjM4NiIsIDAsICIiIH0sIHsgIjQ4NiIsIDAsICIiIH0sIHsgInBlbnRpdW0iLCAw LCAiIiB9LCB7ICJwZW50aXVtcHJvIiwgMCwgIiIgfSwgeyAiaW50ZWwtc3ludGF4IiwgMCwg IiIgfSwgeyAibm8taW50ZWwtc3ludGF4IiwgMCwgIiIgfSwgeyAicnRkIiwgTUFTS19SVEQs IE5fKCJBbHRlcm5hdGUgY2FsbGluZyBjb252ZW50aW9uIikgfSwgeyAibm8tcnRkIiwgLU1B U0tfUlRELCBOXygiVXNlIG5vcm1hbCBjYWxsaW5nIGNvbnZlbnRpb24iKSB9LCB7ICJhbGln bi1kb3VibGUiLCBNQVNLX0FMSUdOX0RPVUJMRSwgTl8oIkFsaWduIHNvbWUgZG91YmxlcyBv biBkd29yZCBib3VuZGFyeSIpIH0sIHsgIm5vLWFsaWduLWRvdWJsZSIsIC1NQVNLX0FMSUdO X0RPVUJMRSwgTl8oIkFsaWduIGRvdWJsZXMgb24gd29yZCBib3VuZGFyeSIpIH0sIHsgInN2 cjMtc2hsaWIiLCBNQVNLX1NWUjNfU0hMSUIsIE5fKCJVbmluaXRpYWxpemVkIGxvY2FscyBp biAuYnNzIikgfSwgeyAibm8tc3ZyMy1zaGxpYiIsIC1NQVNLX1NWUjNfU0hMSUIsIE5fKCJV bmluaXRpYWxpemVkIGxvY2FscyBpbiAuZGF0YSIpIH0sIHsgImllZWUtZnAiLCBNQVNLX0lF RUVfRlAsIE5fKCJVc2UgSUVFRSBtYXRoIGZvciBmcCBjb21wYXJpc29ucyIpIH0sIHsgIm5v LWllZWUtZnAiLCAtTUFTS19JRUVFX0ZQLCBOXygiRG8gbm90IHVzZSBJRUVFIG1hdGggZm9y IGZwIGNvbXBhcmlzb25zIikgfSwgeyAiZnAtcmV0LWluLTM4NyIsIE1BU0tfRkxPQVRfUkVU VVJOUywgTl8oIlJldHVybiB2YWx1ZXMgb2YgZnVuY3Rpb25zIGluIEZQVSByZWdpc3RlcnMi KSB9LCB7ICJuby1mcC1yZXQtaW4tMzg3IiwgLU1BU0tfRkxPQVRfUkVUVVJOUyAsIE5fKCJE byBub3QgcmV0dXJuIHZhbHVlcyBvZiBmdW5jdGlvbnMgaW4gRlBVIHJlZ2lzdGVycyIpfSwg eyAibm8tZmFuY3ktbWF0aC0zODciLCBNQVNLX05PX0ZBTkNZX01BVEhfMzg3LCBOXygiRG8g bm90IGdlbmVyYXRlIHNpbiwgY29zLCBzcXJ0IGZvciBGUFUiKSB9LCB7ICJmYW5jeS1tYXRo LTM4NyIsIC1NQVNLX05PX0ZBTkNZX01BVEhfMzg3LCBOXygiR2VuZXJhdGUgc2luLCBjb3Ms IHNxcnQgZm9yIEZQVSIpfSwgeyAib21pdC1sZWFmLWZyYW1lLXBvaW50ZXIiLCBNQVNLX09N SVRfTEVBRl9GUkFNRV9QT0lOVEVSLCBOXygiT21pdCB0aGUgZnJhbWUgcG9pbnRlciBpbiBs ZWFmIGZ1bmN0aW9ucyIpIH0sIHsgIm5vLW9taXQtbGVhZi1mcmFtZS1wb2ludGVyIiwtTUFT S19PTUlUX0xFQUZfRlJBTUVfUE9JTlRFUiwgIiIgfSwgeyAic3RhY2stYXJnLXByb2JlIiwg TUFTS19TVEFDS19QUk9CRSwgTl8oIkVuYWJsZSBzdGFjayBwcm9iaW5nIikgfSwgeyAibm8t c3RhY2stYXJnLXByb2JlIiwgLU1BU0tfU1RBQ0tfUFJPQkUsICIiIH0sIHsgIndpbmRvd3Mi LCAwLCAwIH0sIHsgImRsbCIsIDAsIDAgfSwgeyAiYWxpZ24tc3RyaW5nb3BzIiwgLU1BU0tf Tk9fQUxJR05fU1RST1BTLCBOXygiQWxpZ24gZGVzdGluYXRpb24gb2YgdGhlIHN0cmluZyBv cGVyYXRpb25zIikgfSwgeyAibm8tYWxpZ24tc3RyaW5nb3BzIiwgTUFTS19OT19BTElHTl9T VFJPUFMsIE5fKCJEbyBub3QgYWxpZ24gZGVzdGluYXRpb24gb2YgdGhlIHN0cmluZyBvcGVy YXRpb25zIikgfSwgeyAiaW5saW5lLWFsbC1zdHJpbmdvcHMiLCBNQVNLX0lOTElORV9BTExf U1RST1BTLCBOXygiSW5saW5lIGFsbCBrbm93biBzdHJpbmcgb3BlcmF0aW9ucyIpIH0sIHsg Im5vLWlubGluZS1hbGwtc3RyaW5nb3BzIiwgLU1BU0tfSU5MSU5FX0FMTF9TVFJPUFMsIE5f KCJEbyBub3QgaW5saW5lIGFsbCBrbm93biBzdHJpbmcgb3BlcmF0aW9ucyIpIH0sIHsgInB1 c2gtYXJncyIsIC1NQVNLX05PX1BVU0hfQVJHUywgTl8oIlVzZSBwdXNoIGluc3RydWN0aW9u cyB0byBzYXZlIG91dGdvaW5nIGFyZ3VtZW50cyIpIH0sIHsgIm5vLXB1c2gtYXJncyIsIE1B U0tfTk9fUFVTSF9BUkdTLCBOXygiRG8gbm90IHVzZSBwdXNoIGluc3RydWN0aW9ucyB0byBz YXZlIG91dGdvaW5nIGFyZ3VtZW50cyIpIH0sIHsgImFjY3VtdWxhdGUtb3V0Z29pbmctYXJn cyIsIChNQVNLX0FDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUyB8IE1BU0tfQUNDVU1VTEFURV9P VVRHT0lOR19BUkdTX1NFVCksIE5fKCJVc2UgcHVzaCBpbnN0cnVjdGlvbnMgdG8gc2F2ZSBv dXRnb2luZyBhcmd1bWVudHMiKSB9LCB7ICJuby1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3Mi LE1BU0tfQUNDVU1VTEFURV9PVVRHT0lOR19BUkdTX1NFVCwgTl8oIkRvIG5vdCB1c2UgcHVz aCBpbnN0cnVjdGlvbnMgdG8gc2F2ZSBvdXRnb2luZyBhcmd1bWVudHMiKSB9LCB7ICJtbXgi LCBNQVNLX01NWCB8IE1BU0tfTU1YX1NFVCwgTl8oIlN1cHBvcnQgTU1YIGJ1aWx0LWluIGZ1 bmN0aW9ucyIpIH0sIHsgIm5vLW1teCIsIC1NQVNLX01NWCwgTl8oIkRvIG5vdCBzdXBwb3J0 IE1NWCBidWlsdC1pbiBmdW5jdGlvbnMiKSB9LCB7ICJuby1tbXgiLCBNQVNLX01NWF9TRVQs ICIiIH0sIHsgIjNkbm93IiwgTUFTS18zRE5PVyB8IE1BU0tfM0ROT1dfU0VULCBOXygiU3Vw cG9ydCAzRE5vdyEgYnVpbHQtaW4gZnVuY3Rpb25zIikgfSwgeyAibm8tM2Rub3ciLCAtTUFT S18zRE5PVywgIiIgfSwgeyAibm8tM2Rub3ciLCBNQVNLXzNETk9XX1NFVCwgTl8oIkRvIG5v dCBzdXBwb3J0IDNETm93ISBidWlsdC1pbiBmdW5jdGlvbnMiKSB9LCB7ICJzc2UiLCBNQVNL X1NTRSB8IE1BU0tfU1NFX1NFVCwgTl8oIlN1cHBvcnQgTU1YIGFuZCBTU0UgYnVpbHQtaW4g ZnVuY3Rpb25zIGFuZCBjb2RlIGdlbmVyYXRpb24iKSB9LCB7ICJuby1zc2UiLCAtTUFTS19T U0UsICIiIH0sIHsgIm5vLXNzZSIsIE1BU0tfU1NFX1NFVCwgTl8oIkRvIG5vdCBzdXBwb3J0 IE1NWCBhbmQgU1NFIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgY29kZSBnZW5lcmF0aW9uIikg fSwgeyAic3NlMiIsIE1BU0tfU1NFMiB8IE1BU0tfU1NFMl9TRVQsIE5fKCJTdXBwb3J0IE1N WCwgU1NFIGFuZCBTU0UyIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgY29kZSBnZW5lcmF0aW9u IikgfSwgeyAibm8tc3NlMiIsIC1NQVNLX1NTRTIsICIiIH0sIHsgIm5vLXNzZTIiLCBNQVNL X1NTRTJfU0VULCBOXygiRG8gbm90IHN1cHBvcnQgTU1YLCBTU0UgYW5kIFNTRTIgYnVpbHQt aW4gZnVuY3Rpb25zIGFuZCBjb2RlIGdlbmVyYXRpb24iKSB9LCB7ICIxMjhiaXQtbG9uZy1k b3VibGUiLCBNQVNLXzEyOEJJVF9MT05HX0RPVUJMRSwgTl8oInNpemVvZihsb25nIGRvdWJs ZSkgaXMgMTYiKSB9LCB7ICI5NmJpdC1sb25nLWRvdWJsZSIsIC1NQVNLXzEyOEJJVF9MT05H X0RPVUJMRSwgTl8oInNpemVvZihsb25nIGRvdWJsZSkgaXMgMTIiKSB9LCB7ICI2NCIsIE1B U0tfNjRCSVQsIE5fKCJHZW5lcmF0ZSA2NGJpdCB4ODYtNjQgY29kZSIpIH0sIHsgIjMyIiwg LU1BU0tfNjRCSVQsIE5fKCJHZW5lcmF0ZSAzMmJpdCBpMzg2IGNvZGUiKSB9LCB7ICJyZWQt em9uZSIsIC1NQVNLX05PX1JFRF9aT05FLCBOXygiVXNlIHJlZC16b25lIGluIHRoZSB4ODYt NjQgY29kZSIpIH0sIHsgIm5vLXJlZC16b25lIiwgTUFTS19OT19SRURfWk9ORSwgTl8oIkRv IG5vdCB1c2UgcmVkLXpvbmUgaW4gdGhlIHg4Ni02NCBjb2RlIikgfSwgU1VCVEFSR0VUX1NX SVRDSEVTIHsgIiIsIFRBUkdFVF9ERUZBVUxULCAwIH19CiMgMzg3ICJpMzg2LmgiCiNkZWZp bmUgVEFSR0VUX0RFRkFVTFQgKE1BU0tfNjRCSVQgfCBUQVJHRVRfU1VCVEFSR0VUX0RFRkFV TFQpCgoKCgoKCgplbnVtIHByb2Nlc3Nvcl90eXBlCnsKICBQUk9DRVNTT1JfSTM4NiwKICBQ Uk9DRVNTT1JfSTQ4NiwKICBQUk9DRVNTT1JfUEVOVElVTSwKICBQUk9DRVNTT1JfUEVOVElV TVBSTywKICBQUk9DRVNTT1JfSzYsCiAgUFJPQ0VTU09SX0FUSExPTiwKICBQUk9DRVNTT1Jf UEVOVElVTTQsCiAgUFJPQ0VTU09SX21heAp9OwplbnVtIGZwbWF0aF91bml0CnsKICBGUE1B VEhfMzg3ID0gMSwKICBGUE1BVEhfU1NFID0gMgp9OwoKZXh0ZXJuIGVudW0gcHJvY2Vzc29y X3R5cGUgaXg4Nl9jcHU7CmV4dGVybiBlbnVtIGZwbWF0aF91bml0IGl4ODZfZnBtYXRoOwoK ZXh0ZXJuIGludCBpeDg2X2FyY2g7CiMgNDI2ICJpMzg2LmgiCiNkZWZpbmUgVEFSR0VUX09Q VElPTlMgeyB7ICJjcHU9IiwgJml4ODZfY3B1X3N0cmluZywgTl8oIlNjaGVkdWxlIGNvZGUg Zm9yIGdpdmVuIENQVSIpfSwgeyAiZnBtYXRoPSIsICZpeDg2X2ZwbWF0aF9zdHJpbmcsIE5f KCJHZW5lcmF0ZSBmbG9hdGluZyBwb2ludCBtYXRoZW1hdGljcyB1c2luZyBnaXZlbiBpbnN0 cnVjdGlvbiBzZXQiKX0sIHsgImFyY2g9IiwgJml4ODZfYXJjaF9zdHJpbmcsIE5fKCJHZW5l cmF0ZSBjb2RlIGZvciBnaXZlbiBDUFUiKX0sIHsgInJlZ3Bhcm09IiwgJml4ODZfcmVncGFy bV9zdHJpbmcsIE5fKCJOdW1iZXIgb2YgcmVnaXN0ZXJzIHVzZWQgdG8gcGFzcyBpbnRlZ2Vy IGFyZ3VtZW50cyIpIH0sIHsgImFsaWduLWxvb3BzPSIsICZpeDg2X2FsaWduX2xvb3BzX3N0 cmluZywgTl8oIkxvb3AgY29kZSBhbGlnbmVkIHRvIHRoaXMgcG93ZXIgb2YgMiIpIH0sIHsg ImFsaWduLWp1bXBzPSIsICZpeDg2X2FsaWduX2p1bXBzX3N0cmluZywgTl8oIkp1bXAgdGFy Z2V0cyBhcmUgYWxpZ25lZCB0byB0aGlzIHBvd2VyIG9mIDIiKSB9LCB7ICJhbGlnbi1mdW5j dGlvbnM9IiwgJml4ODZfYWxpZ25fZnVuY3Nfc3RyaW5nLCBOXygiRnVuY3Rpb24gc3RhcnRz IGFyZSBhbGlnbmVkIHRvIHRoaXMgcG93ZXIgb2YgMiIpIH0sIHsgInByZWZlcnJlZC1zdGFj ay1ib3VuZGFyeT0iLCAmaXg4Nl9wcmVmZXJyZWRfc3RhY2tfYm91bmRhcnlfc3RyaW5nLCBO XygiQXR0ZW1wdCB0byBrZWVwIHN0YWNrIGFsaWduZWQgdG8gdGhpcyBwb3dlciBvZiAyIikg fSwgeyAiYnJhbmNoLWNvc3Q9IiwgJml4ODZfYnJhbmNoX2Nvc3Rfc3RyaW5nLCBOXygiQnJh bmNoZXMgYXJlIHRoaXMgZXhwZW5zaXZlICgxLTUsIGFyYml0cmFyeSB1bml0cykiKSB9LCB7 ICJjbW9kZWw9IiwgJml4ODZfY21vZGVsX3N0cmluZywgTl8oIlVzZSBnaXZlbiB4ODYtNjQg Y29kZSBtb2RlbCIpIH0sIHsgImRlYnVnLWFyZyIsICZpeDg2X2RlYnVnX2FyZ19zdHJpbmcs ICIiIH0sIHsgImRlYnVnLWFkZHIiLCAmaXg4Nl9kZWJ1Z19hZGRyX3N0cmluZywgIiIgfSwg eyAiYXNtPSIsICZpeDg2X2FzbV9zdHJpbmcsIE5fKCJVc2UgZ2l2ZW4gYXNzZW1ibGVyIGRp YWxlY3QiKSB9LCBTVUJUQVJHRVRfT1BUSU9OUyB9CiMgNDY2ICJpMzg2LmgiCiNkZWZpbmUg T1ZFUlJJREVfT1BUSU9OUyBvdmVycmlkZV9vcHRpb25zICgpCgoKI2RlZmluZSBTVUJUQVJH RVRfU1dJVENIRVMgCiNkZWZpbmUgU1VCVEFSR0VUX09QVElPTlMgCgoKI2RlZmluZSBPUFRJ TUlaQVRJT05fT1BUSU9OUyhMRVZFTCxTSVpFKSBvcHRpbWl6YXRpb25fb3B0aW9ucyAoKExF VkVMKSwgKFNJWkUpKQoKCgoKCiNkZWZpbmUgQ0MxX0NQVV9TUEVDICIleyFtY3B1KjogJXtt Mzg2Oi1tY3B1PWkzODYgJW5gLW0zODYnIGlzIGRlcHJlY2F0ZWQuIFVzZSBgLW1hcmNoPWkz ODYnIG9yIGAtbWNwdT1pMzg2JyBpbnN0ZWFkLlxufSAle200ODY6LW1jcHU9aTQ4NiAlbmAt bTQ4NicgaXMgZGVwcmVjYXRlZC4gVXNlIGAtbWFyY2g9aTQ4Nicgb3IgYC1tY3B1PWk0ODYn IGluc3RlYWQuXG59ICV7bXBlbnRpdW06LW1jcHU9cGVudGl1bSAlbmAtbXBlbnRpdW0nIGlz IGRlcHJlY2F0ZWQuIFVzZSBgLW1hcmNoPXBlbnRpdW0nIG9yIGAtbWNwdT1wZW50aXVtJyBp bnN0ZWFkLlxufSAle21wZW50aXVtcHJvOi1tY3B1PXBlbnRpdW1wcm8gJW5gLW1wZW50aXVt cHJvJyBpcyBkZXByZWNhdGVkLiBVc2UgYC1tYXJjaD1wZW50aXVtcHJvJyBvciBgLW1jcHU9 cGVudGl1bXBybycgaW5zdGVhZC5cbn19ICV7bWludGVsLXN5bnRheDotbWFzbT1pbnRlbCAl bmAtbWludGVsLXN5bnRheCcgaXMgZGVwcmVjYXRlZC4gVXNlIGAtbWFzbT1pbnRlbCcgaW5z dGVhZC5cbn0gJXttbm8taW50ZWwtc3ludGF4Oi1tYXNtPWF0dCAlbmAtbW5vLWludGVsLXN5 bnRheCcgaXMgZGVwcmVjYXRlZC4gVXNlIGAtbWFzbT1hdHQnIGluc3RlYWQuXG59IgojIDQ5 NSAiaTM4Ni5oIgojZGVmaW5lIFRBUkdFVF9DUFVfREVGQVVMVF9pMzg2IDAKI2RlZmluZSBU QVJHRVRfQ1BVX0RFRkFVTFRfaTQ4NiAxCiNkZWZpbmUgVEFSR0VUX0NQVV9ERUZBVUxUX3Bl bnRpdW0gMgojZGVmaW5lIFRBUkdFVF9DUFVfREVGQVVMVF9wZW50aXVtX21teCAzCiNkZWZp bmUgVEFSR0VUX0NQVV9ERUZBVUxUX3BlbnRpdW1wcm8gNAojZGVmaW5lIFRBUkdFVF9DUFVf REVGQVVMVF9wZW50aXVtMiA1CiNkZWZpbmUgVEFSR0VUX0NQVV9ERUZBVUxUX3BlbnRpdW0z IDYKI2RlZmluZSBUQVJHRVRfQ1BVX0RFRkFVTFRfcGVudGl1bTQgNwojZGVmaW5lIFRBUkdF VF9DUFVfREVGQVVMVF9rNiA4CiNkZWZpbmUgVEFSR0VUX0NQVV9ERUZBVUxUX2s2XzIgOQoj ZGVmaW5lIFRBUkdFVF9DUFVfREVGQVVMVF9rNl8zIDEwCiNkZWZpbmUgVEFSR0VUX0NQVV9E RUZBVUxUX2F0aGxvbiAxMQojZGVmaW5lIFRBUkdFVF9DUFVfREVGQVVMVF9hdGhsb25fc3Nl IDEyCgojZGVmaW5lIFRBUkdFVF9DUFVfREVGQVVMVF9OQU1FUyB7ImkzODYiLCAiaTQ4NiIs ICJwZW50aXVtIiwgInBlbnRpdW0tbW14IiwgInBlbnRpdW1wcm8iLCAicGVudGl1bTIiLCAi cGVudGl1bTMiLCAicGVudGl1bTQiLCAiazYiLCAiazYtMiIsICJrNi0zIiwgImF0aGxvbiIs ICJhdGhsb24tNCJ9CiMgNTUwICJpMzg2LmgiCiNkZWZpbmUgQ1BQX0NQVV9ERUZBVUxUX1NQ RUMgIi1EX190dW5lX2F0aGxvbl9fIC1EX190dW5lX2F0aGxvbl9zc2VfXyIKCgoKCgoKCiNk ZWZpbmUgTk9fQlVJTFRJTl9TSVpFX1RZUEUgCiNkZWZpbmUgTk9fQlVJTFRJTl9QVFJESUZG X1RZUEUgCgoKCiNkZWZpbmUgQ1BQX0NQVTMyX1NJWkVfVFlQRV9TUEVDICIgLURfX1NJWkVf VFlQRV9fPXVuc2lnbmVkXFwgaW50IC1EX19QVFJESUZGX1RZUEVfXz1pbnQiCgojZGVmaW5l IENQUF9DUFU2NF9TSVpFX1RZUEVfU1BFQyAiIC1EX19TSVpFX1RZUEVfXz11bnNpZ25lZFxc IGxvbmdcXCBpbnQgLURfX1BUUkRJRkZfVFlQRV9fPWxvbmdcXCBpbnQiCgoKCgoKCiNkZWZp bmUgQ1BQX0NQVTMyX1NQRUMgIi1BY3B1PWkzODYgLUFtYWNoaW5lPWkzODYgJXshYW5zaTol eyFzdGQ9Yyo6JXshc3RkPWkqOi1EaTM4Nn19fSAtRF9faTM4NiAtRF9faTM4Nl9fICUoY3Bw X2NwdTMyc2l6ZXQpIgoKCgojZGVmaW5lIENQUF9DUFU2NF9TUEVDICItQWNwdT14ODZfNjQg LUFtYWNoaW5lPXg4Nl82NCAtRF9feDg2XzY0IC1EX194ODZfNjRfXyAlKGNwcF9jcHU2NHNp emV0KSIKCgojZGVmaW5lIENQUF9DUFVDT01NT05fU1BFQyAiJXttYXJjaD1pMzg2OiV7IW1j cHUqOi1EX190dW5lX2kzODZfXyB9fSV7bWFyY2g9aTQ4NjotRF9faTQ4NiAtRF9faTQ4Nl9f ICV7IW1jcHUqOi1EX190dW5lX2k0ODZfXyB9fSV7bWFyY2g9cGVudGl1bXxtYXJjaD1pNTg2 Oi1EX19pNTg2IC1EX19pNTg2X18gLURfX3BlbnRpdW0gLURfX3BlbnRpdW1fXyAgICV7IW1j cHUqOi1EX190dW5lX2k1ODZfXyAtRF9fdHVuZV9wZW50aXVtX18gfX0le21hcmNoPXBlbnRp dW0tbW14Oi1EX19pNTg2IC1EX19pNTg2X18gLURfX3BlbnRpdW0gLURfX3BlbnRpdW1fXyAg IC1EX19wZW50aXVtX19tbXhfXyAgICV7IW1jcHUqOi1EX190dW5lX2k1ODZfXyAtRF9fdHVu ZV9wZW50aXVtX18gLURfX3R1bmVfcGVudGl1bV9tbXhfX319JXttYXJjaD1wZW50aXVtcHJv fG1hcmNoPWk2ODY6LURfX2k2ODYgLURfX2k2ODZfXyAgIC1EX19wZW50aXVtcHJvIC1EX19w ZW50aXVtcHJvX18gICAleyFtY3B1KjotRF9fdHVuZV9pNjg2X18gLURfX3R1bmVfcGVudGl1 bXByb19fIH19JXttYXJjaD1rNjotRF9fazYgLURfX2s2X18gJXshbWNwdSo6LURfX3R1bmVf azZfXyB9fSV7bWFyY2g9azYtMjotRF9fazYgLURfX2s2X18gLURfX2s2XzJfXyAgICV7IW1j cHUqOi1EX190dW5lX2s2X18gLURfX3R1bmVfazZfMl9fIH19JXttYXJjaD1rNi0zOi1EX19r NiAtRF9fazZfXyAtRF9fazZfM19fICAgJXshbWNwdSo6LURfX3R1bmVfazZfXyAtRF9fdHVu ZV9rNl8zX18gfX0le21hcmNoPWF0aGxvbnxtYXJjaD1hdGhsb24tdGJpcmQ6LURfX2F0aGxv biAtRF9fYXRobG9uX18gICAleyFtY3B1KjotRF9fdHVuZV9hdGhsb25fXyB9fSV7bWFyY2g9 YXRobG9uLTR8bWFyY2g9YXRobG9uLXhwfG1hcmNoPWF0aGxvbi1tcDotRF9fYXRobG9uIC1E X19hdGhsb25fXyAgIC1EX19hdGhsb25fc3NlX18gICAleyFtY3B1KjotRF9fdHVuZV9hdGhs b25fXyAtRF9fdHVuZV9hdGhsb25fc3NlX18gfX0le21hcmNoPXBlbnRpdW00Oi1EX19wZW50 aXVtNCAtRF9fcGVudGl1bTRfXyAleyFtY3B1KjotRF9fdHVuZV9wZW50aXVtNF9fIH19JXtt Mzg2fG1jcHU9aTM4NjotRF9fdHVuZV9pMzg2X18gfSV7bTQ4NnxtY3B1PWk0ODY6LURfX3R1 bmVfaTQ4Nl9fIH0le21wZW50aXVtfG1jcHU9cGVudGl1bXxtY3B1PWk1ODZ8bWNwdT1wZW50 aXVtLW1teDotRF9fdHVuZV9pNTg2X18gLURfX3R1bmVfcGVudGl1bV9fIH0le21wZW50aXVt cHJvfG1jcHU9cGVudGl1bXByb3xtY3B1PWk2ODZ8Y3B1PXBlbnRpdW0yfGNwdT1wZW50aXVt MzotRF9fdHVuZV9pNjg2X18gLURfX3R1bmVfcGVudGl1bXByb19fIH0le21jcHU9azZ8bWNw dT1rNi0yfG1jcHU9azYtMzotRF9fdHVuZV9rNl9fIH0le21jcHU9YXRobG9ufG1jcHU9YXRo bG9uLXRiaXJkfG1jcHU9YXRobG9uLTR8bWNwdT1hdGhsb24teHB8bWNwdT1hdGhsb24tbXA6 LURfX3R1bmVfYXRobG9uX18gfSV7bWNwdT1hdGhsb24tNHxtY3B1PWF0aGxvbi14cHxtY3B1 PWF0aGxvbi1tcDotRF9fdHVuZV9hdGhsb25fc3NlX18gfSV7bWNwdT1wZW50aXVtNDotRF9f dHVuZV9wZW50aXVtNF9fIH0le21hcmNoPWF0aGxvbi14cHxtYXJjaD1hdGhsb24tbXB8bWFy Y2g9cGVudGl1bTN8bWFyY2g9cGVudGl1bTQ6LURfX1NTRV9fIH0le21hcmNoPXBlbnRpdW0t bW14fG1hcmNoPWs2fG1hcmNoPWs2LTJ8bWFyY2g9azYtM3xtYXJjaD1hdGhsb258bWFyY2g9 YXRobG9uLXRiaXJkfG1hcmNoPWF0aGxvbi00fG1hcmNoPWF0aGxvbi14cHxtYXJjaD1hdGhs b24tbXB8bWFyY2g9cGVudGl1bTJ8bWFyY2g9cGVudGl1bTN8bWFyY2g9cGVudGl1bTQ6IC1E X19NTVhfXyB9JXttYXJjaD1rNi0yfG1hcmNoPWs2LTN8bWFyY2g9YXRobG9ufG1hcmNoPWF0 aGxvbi10YmlyZHxtYXJjaD1hdGhsb24tNHxtYXJjaD1hdGhsb24teHB8bWFyY2g9YXRobG9u LW1wOiAtRF9fM2ROT1dfXyB9JXttYXJjaD1hdGhsb258bWFyY2g9YXRobG9uLXRiaXJkfG1h cmNoPWF0aGxvbi00fG1hcmNoPWF0aGxvbi14cHxtYXJjaD1hdGhsb24tbXA6IC1EX18zZE5P V19BX18gfSV7bWFyY2g9cGVudGl1bTQ6IC1EX19TU0UyX18gfSV7IW1hcmNoKjoleyFtY3B1 KjoleyFtMzg2OiV7IW00ODY6JXshbXBlbnRpdW0qOiUoY3BwX2NwdV9kZWZhdWx0KX19fX19 IgojIDYyOCAiaTM4Ni5oIgojZGVmaW5lIENQUF9DUFVfU1BFQyAiJXttMzI6JShjcHBfY3B1 MzIpfSV7IW0zMjolKGNwcF9jcHU2NCl9ICUoY3BwX2NwdWNvbW1vbikiCiMgNjQyICJpMzg2 LmgiCiNkZWZpbmUgQ0MxX1NQRUMgIiUoY2MxX2NwdSkgIgojIDY1NiAiaTM4Ni5oIgojZGVm aW5lIFNVQlRBUkdFVF9FWFRSQV9TUEVDUyAKCgojZGVmaW5lIEVYVFJBX1NQRUNTIHsgImNw cF9jcHVfZGVmYXVsdCIsIENQUF9DUFVfREVGQVVMVF9TUEVDIH0sIHsgImNwcF9jcHUiLCBD UFBfQ1BVX1NQRUMgfSwgeyAiY3BwX2NwdTMyIiwgQ1BQX0NQVTMyX1NQRUMgfSwgeyAiY3Bw X2NwdTY0IiwgQ1BQX0NQVTY0X1NQRUMgfSwgeyAiY3BwX2NwdTMyc2l6ZXQiLCBDUFBfQ1BV MzJfU0laRV9UWVBFX1NQRUMgfSwgeyAiY3BwX2NwdTY0c2l6ZXQiLCBDUFBfQ1BVNjRfU0la RV9UWVBFX1NQRUMgfSwgeyAiY3BwX2NwdWNvbW1vbiIsIENQUF9DUFVDT01NT05fU1BFQyB9 LCB7ICJjYzFfY3B1IiwgQ0MxX0NQVV9TUEVDIH0sIFNVQlRBUkdFVF9FWFRSQV9TUEVDUwoj IDY3OCAiaTM4Ni5oIgojZGVmaW5lIExPTkdfRE9VQkxFX1RZUEVfU0laRSAoVEFSR0VUXzEy OEJJVF9MT05HX0RPVUJMRSA/IDEyOCA6IDk2KQojZGVmaW5lIE1BWF9MT05HX0RPVUJMRV9U WVBFX1NJWkUgMTI4CgoKCiNkZWZpbmUgTElCR0NDMl9MT05HX0RPVUJMRV9UWVBFX1NJWkUg OTYKCgoKI2RlZmluZSBJTlRFTF9FWFRFTkRFRF9JRUVFX0ZPUk1BVCAxCgoKI2RlZmluZSBT SE9SVF9UWVBFX1NJWkUgMTYKI2RlZmluZSBJTlRfVFlQRV9TSVpFIDMyCiNkZWZpbmUgRkxP QVRfVFlQRV9TSVpFIDMyCiNkZWZpbmUgTE9OR19UWVBFX1NJWkUgQklUU19QRVJfV09SRAoj ZGVmaW5lIE1BWF9XQ0hBUl9UWVBFX1NJWkUgMzIKI2RlZmluZSBET1VCTEVfVFlQRV9TSVpF IDY0CiNkZWZpbmUgTE9OR19MT05HX1RZUEVfU0laRSA2NAoKCiNkZWZpbmUgTUFYX0JJVFNf UEVSX1dPUkQgNjQKI2RlZmluZSBNQVhfTE9OR19UWVBFX1NJWkUgNjQKIyA3MTQgImkzODYu aCIKI2RlZmluZSBCSVRTX0JJR19FTkRJQU4gMAoKCgojZGVmaW5lIEJZVEVTX0JJR19FTkRJ QU4gMAoKCgoKI2RlZmluZSBXT1JEU19CSUdfRU5ESUFOIDAKCgojZGVmaW5lIEJJVFNfUEVS X1VOSVQgOAoKCgoKCiNkZWZpbmUgQklUU19QRVJfV09SRCAoVEFSR0VUXzY0QklUID8gNjQg OiAzMikKCgojZGVmaW5lIFVOSVRTX1BFUl9XT1JEIChUQVJHRVRfNjRCSVQgPyA4IDogNCkK I2RlZmluZSBNSU5fVU5JVFNfUEVSX1dPUkQgNAoKCgojZGVmaW5lIFBPSU5URVJfU0laRSBC SVRTX1BFUl9XT1JECgoKI2RlZmluZSBQQVJNX0JPVU5EQVJZIEJJVFNfUEVSX1dPUkQKCgoj ZGVmaW5lIFNUQUNLX0JPVU5EQVJZIEJJVFNfUEVSX1dPUkQKCgoKI2RlZmluZSBQUkVGRVJS RURfU1RBQ0tfQk9VTkRBUlkgaXg4Nl9wcmVmZXJyZWRfc3RhY2tfYm91bmRhcnkKCgoKCgoj ZGVmaW5lIEZPUkNFX1BSRUZFUlJFRF9TVEFDS19CT1VOREFSWV9JTl9NQUlOIChpeDg2X3By ZWZlcnJlZF9zdGFja19ib3VuZGFyeSA+IFNUQUNLX0JPVU5EQVJZICYmICFUQVJHRVRfNjRC SVQpCgoKCiNkZWZpbmUgRlVOQ1RJT05fQk9VTkRBUlkgMTYKCgoKI2RlZmluZSBFTVBUWV9G SUVMRF9CT1VOREFSWSBCSVRTX1BFUl9XT1JECiMgNzc0ICJpMzg2LmgiCiNkZWZpbmUgQklH R0VTVF9BTElHTk1FTlQgMTI4CgoKI2RlZmluZSBBTElHTl9NT0RFXzEyOChNT0RFKSAoKE1P REUpID09IFhGbW9kZSB8fCAoTU9ERSkgPT0gVEZtb2RlIHx8ICgoTU9ERSkgPT0gVEltb2Rl KSB8fCAoTU9ERSkgPT0gVjRTRm1vZGUgfHwgKE1PREUpID09IFY0U0ltb2RlKQojIDc5MSAi aTM4Ni5oIgojZGVmaW5lIEFESlVTVF9GSUVMRF9BTElHTihGSUVMRCxDT01QVVRFRCkgeDg2 X2ZpZWxkX2FsaWdubWVudCAoRklFTEQsIENPTVBVVEVEKQojIDgwNyAiaTM4Ni5oIgojZGVm aW5lIENPTlNUQU5UX0FMSUdOTUVOVChFWFAsQUxJR04pIGl4ODZfY29uc3RhbnRfYWxpZ25t ZW50ICgoRVhQKSwgKEFMSUdOKSkKIyA4MjEgImkzODYuaCIKI2RlZmluZSBEQVRBX0FMSUdO TUVOVChUWVBFLEFMSUdOKSBpeDg2X2RhdGFfYWxpZ25tZW50ICgoVFlQRSksIChBTElHTikp CiMgODMzICJpMzg2LmgiCiNkZWZpbmUgTE9DQUxfQUxJR05NRU5UKFRZUEUsQUxJR04pIGl4 ODZfbG9jYWxfYWxpZ25tZW50ICgoVFlQRSksIChBTElHTikpCgoKCgoKI2RlZmluZSBGVU5D VElPTl9BUkdfQk9VTkRBUlkoTU9ERSxUWVBFKSBpeDg2X2Z1bmN0aW9uX2FyZ19ib3VuZGFy eSAoKE1PREUpLCAoVFlQRSkpCgoKCgojZGVmaW5lIFNUUklDVF9BTElHTk1FTlQgMAoKCgoK I2RlZmluZSBQQ0NfQklURklFTERfVFlQRV9NQVRURVJTIDEKCgoKCgoKI2RlZmluZSBTVEFD S19SRUdTIAojZGVmaW5lIElTX1NUQUNLX01PREUoTU9ERSkgKChNT0RFKSA9PSBERm1vZGUg fHwgKE1PREUpID09IFNGbW9kZSB8fCAoTU9ERSkgPT0gWEZtb2RlIHx8IChNT0RFKSA9PSBU Rm1vZGUpCiMgODc3ICJpMzg2LmgiCiNkZWZpbmUgRklSU1RfUFNFVURPX1JFR0lTVEVSIDUz CgoKCgojZGVmaW5lIERXQVJGX0ZSQU1FX1JFR0lTVEVSUyAxNwojIDg5MiAiaTM4Ni5oIgoj ZGVmaW5lIEZJWEVEX1JFR0lTVEVSUyB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDMsIDMsIDMsIDMsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEs IDEsIDEsIDEsIDEsIDEsIDEsIDF9CiMgOTE4ICJpMzg2LmgiCiNkZWZpbmUgQ0FMTF9VU0VE X1JFR0lTVEVSUyB7IDMsIDMsIDMsIDAsIDIsIDIsIDAsIDMsIDMsIDMsIDMsIDMsIDMsIDMs IDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMs IDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDEsIDEsIDEsIDEsIDMsIDMsIDMsIDMsIDMs IDMsIDMsIDN9CiMgOTQxICJpMzg2LmgiCiNkZWZpbmUgUkVHX0FMTE9DX09SREVSIHsgMCwg MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYs IDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAz MCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMs IDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIgfQojIDk1MSAiaTM4Ni5oIgoj ZGVmaW5lIE9SREVSX1JFR1NfRk9SX0xPQ0FMX0FMTE9DIHg4Nl9vcmRlcl9yZWdzX2Zvcl9s b2NhbF9hbGxvYyAoKQoKCgojZGVmaW5lIENPTkRJVElPTkFMX1JFR0lTVEVSX1VTQUdFIGRv IHsgaW50IGk7IGZvciAoaSA9IDA7IGkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykg eyBmaXhlZF9yZWdzW2ldID0gKGZpeGVkX3JlZ3NbaV0gJiAoVEFSR0VUXzY0QklUID8gMiA6 IDEpKSAhPSAwOyBjYWxsX3VzZWRfcmVnc1tpXSA9IChjYWxsX3VzZWRfcmVnc1tpXSAmIChU QVJHRVRfNjRCSVQgPyAyIDogMSkpICE9IDA7IH0gaWYgKFBJQ19PRkZTRVRfVEFCTEVfUkVH TlVNICE9IElOVkFMSURfUkVHTlVNKSB7IGZpeGVkX3JlZ3NbUElDX09GRlNFVF9UQUJMRV9S RUdOVU1dID0gMTsgY2FsbF91c2VkX3JlZ3NbUElDX09GRlNFVF9UQUJMRV9SRUdOVU1dID0g MTsgfSBpZiAoISBUQVJHRVRfTU1YKSB7IGludCBpOyBmb3IgKGkgPSAwOyBpIDwgRklSU1Rf UFNFVURPX1JFR0lTVEVSOyBpKyspIGlmIChURVNUX0hBUkRfUkVHX0JJVCAocmVnX2NsYXNz X2NvbnRlbnRzWyhpbnQpTU1YX1JFR1NdLCBpKSkgZml4ZWRfcmVnc1tpXSA9IGNhbGxfdXNl ZF9yZWdzW2ldID0gMTsgfSBpZiAoISBUQVJHRVRfU1NFKSB7IGludCBpOyBmb3IgKGkgPSAw OyBpIDwgRklSU1RfUFNFVURPX1JFR0lTVEVSOyBpKyspIGlmIChURVNUX0hBUkRfUkVHX0JJ VCAocmVnX2NsYXNzX2NvbnRlbnRzWyhpbnQpU1NFX1JFR1NdLCBpKSkgZml4ZWRfcmVnc1tp XSA9IGNhbGxfdXNlZF9yZWdzW2ldID0gMTsgfSBpZiAoISBUQVJHRVRfODAzODcgJiYgISBU QVJHRVRfRkxPQVRfUkVUVVJOU19JTl84MDM4NykgeyBpbnQgaTsgSEFSRF9SRUdfU0VUIHg7 IENPUFlfSEFSRF9SRUdfU0VUICh4LCByZWdfY2xhc3NfY29udGVudHNbKGludClGTE9BVF9S RUdTXSk7IGZvciAoaSA9IDA7IGkgPCBGSVJTVF9QU0VVRE9fUkVHSVNURVI7IGkrKykgaWYg KFRFU1RfSEFSRF9SRUdfQklUICh4LCBpKSkgZml4ZWRfcmVnc1tpXSA9IGNhbGxfdXNlZF9y ZWdzW2ldID0gMTsgfSB9IHdoaWxlICgwKQojIDEwMDQgImkzODYuaCIKI2RlZmluZSBIQVJE X1JFR05PX05SRUdTKFJFR05PLE1PREUpIChGUF9SRUdOT19QIChSRUdOTykgfHwgU1NFX1JF R05PX1AgKFJFR05PKSB8fCBNTVhfUkVHTk9fUCAoUkVHTk8pID8gKENPTVBMRVhfTU9ERV9Q IChNT0RFKSA/IDIgOiAxKSA6ICgoTU9ERSkgPT0gVEZtb2RlID8gKFRBUkdFVF82NEJJVCA/ IDIgOiAzKSA6IChNT0RFKSA9PSBUQ21vZGUgPyAoVEFSR0VUXzY0QklUID8gNCA6IDYpIDog KChHRVRfTU9ERV9TSVpFIChNT0RFKSArIFVOSVRTX1BFUl9XT1JEIC0gMSkgLyBVTklUU19Q RVJfV09SRCkpKQojIDEwMTMgImkzODYuaCIKI2RlZmluZSBWQUxJRF9TU0VfUkVHX01PREUo TU9ERSkgKChNT0RFKSA9PSBUSW1vZGUgfHwgKE1PREUpID09IFY0U0Ztb2RlIHx8IChNT0RF KSA9PSBWNFNJbW9kZSB8fCAoTU9ERSkgPT0gU0Ztb2RlIHx8IChUQVJHRVRfU1NFMiAmJiAo KE1PREUpID09IERGbW9kZSB8fCBWQUxJRF9NTVhfUkVHX01PREUgKE1PREUpKSkpCgoKCgoj ZGVmaW5lIFZBTElEX01NWF9SRUdfTU9ERV8zRE5PVyhNT0RFKSAoKE1PREUpID09IFYyU0Zt b2RlIHx8IChNT0RFKSA9PSBTRm1vZGUpCgoKI2RlZmluZSBWQUxJRF9NTVhfUkVHX01PREUo TU9ERSkgKChNT0RFKSA9PSBESW1vZGUgfHwgKE1PREUpID09IFY4UUltb2RlIHx8IChNT0RF KSA9PSBWNEhJbW9kZSB8fCAoTU9ERSkgPT0gVjJTSW1vZGUgfHwgKE1PREUpID09IFNJbW9k ZSkKCgoKI2RlZmluZSBWRUNUT1JfTU9ERV9TVVBQT1JURURfUChNT0RFKSAoVkFMSURfU1NF X1JFR19NT0RFIChNT0RFKSAmJiBUQVJHRVRfU1NFID8gMSA6IFZBTElEX01NWF9SRUdfTU9E RSAoTU9ERSkgJiYgVEFSR0VUX01NWCA/IDEgOiBWQUxJRF9NTVhfUkVHX01PREVfM0ROT1cg KE1PREUpICYmIFRBUkdFVF8zRE5PVyA/IDEgOiAwKQoKCgoKI2RlZmluZSBWQUxJRF9GUF9N T0RFX1AoTU9ERSkgKChNT0RFKSA9PSBTRm1vZGUgfHwgKE1PREUpID09IERGbW9kZSB8fCAo TU9ERSkgPT0gVEZtb2RlIHx8ICghVEFSR0VUXzY0QklUICYmIChNT0RFKSA9PSBYRm1vZGUp IHx8IChNT0RFKSA9PSBTQ21vZGUgfHwgKE1PREUpID09IERDbW9kZSB8fCAoTU9ERSkgPT0g VENtb2RlIHx8ICghVEFSR0VUXzY0QklUICYmIChNT0RFKSA9PSBYQ21vZGUpKQoKCgoKCiNk ZWZpbmUgVkFMSURfSU5UX01PREVfUChNT0RFKSAoKE1PREUpID09IFFJbW9kZSB8fCAoTU9E RSkgPT0gSEltb2RlIHx8IChNT0RFKSA9PSBTSW1vZGUgfHwgKE1PREUpID09IERJbW9kZSB8 fCAoTU9ERSkgPT0gQ1FJbW9kZSB8fCAoTU9ERSkgPT0gQ0hJbW9kZSB8fCAoTU9ERSkgPT0g Q1NJbW9kZSB8fCAoTU9ERSkgPT0gQ0RJbW9kZSB8fCAoVEFSR0VUXzY0QklUICYmICgoTU9E RSkgPT0gVEltb2RlIHx8IChNT0RFKSA9PSBDVEltb2RlKSkpCiMgMTA0NSAiaTM4Ni5oIgoj ZGVmaW5lIEhBUkRfUkVHTk9fTU9ERV9PSyhSRUdOTyxNT0RFKSBpeDg2X2hhcmRfcmVnbm9f bW9kZV9vayAoKFJFR05PKSwgKE1PREUpKQoKCgoKCgoKI2RlZmluZSBNT0RFU19USUVBQkxF X1AoTU9ERTEsTU9ERTIpICgoTU9ERTEpID09IChNT0RFMikgfHwgKCgoTU9ERTEpID09IEhJ bW9kZSB8fCAoTU9ERTEpID09IFNJbW9kZSB8fCAoKE1PREUxKSA9PSBRSW1vZGUgJiYgKFRB UkdFVF82NEJJVCB8fCAhVEFSR0VUX1BBUlRJQUxfUkVHX1NUQUxMKSkgfHwgKChNT0RFMSkg PT0gREltb2RlICYmIFRBUkdFVF82NEJJVCkpICYmICgoTU9ERTIpID09IEhJbW9kZSB8fCAo TU9ERTIpID09IFNJbW9kZSB8fCAoKE1PREUxKSA9PSBRSW1vZGUgJiYgKFRBUkdFVF82NEJJ VCB8fCAhVEFSR0VUX1BBUlRJQUxfUkVHX1NUQUxMKSkgfHwgKChNT0RFMikgPT0gREltb2Rl ICYmIFRBUkdFVF82NEJJVCkpKSkKIyAxMDcwICJpMzg2LmgiCiNkZWZpbmUgSEFSRF9SRUdO T19DQUxMRVJfU0FWRV9NT0RFKFJFR05PLE5SRUdTLE1PREUpIChDQ19SRUdOT19QIChSRUdO TykgPyBWT0lEbW9kZSA6IChNT0RFKSA9PSBWT0lEbW9kZSAmJiAoTlJFR1MpICE9IDEgPyBW T0lEbW9kZSA6IChNT0RFKSA9PSBWT0lEbW9kZSA/IGNob29zZV9oYXJkX3JlZ19tb2RlICgo UkVHTk8pLCAoTlJFR1MpKSA6IChNT0RFKSA9PSBISW1vZGUgJiYgIVRBUkdFVF9QQVJUSUFM X1JFR19TVEFMTCA/IFNJbW9kZSA6IChNT0RFKSA9PSBRSW1vZGUgJiYgKFJFR05PKSA+PSA0 ICYmICFUQVJHRVRfNjRCSVQgPyBTSW1vZGUgOiAoTU9ERSkpCiMgMTA4NSAiaTM4Ni5oIgoj ZGVmaW5lIFNUQUNLX1BPSU5URVJfUkVHTlVNIDcKCgojZGVmaW5lIEhBUkRfRlJBTUVfUE9J TlRFUl9SRUdOVU0gNgoKCiNkZWZpbmUgRlJBTUVfUE9JTlRFUl9SRUdOVU0gMjAKCgojZGVm aW5lIEZJUlNUX0ZMT0FUX1JFRyA4CgoKI2RlZmluZSBGSVJTVF9TVEFDS19SRUcgRklSU1Rf RkxPQVRfUkVHCiNkZWZpbmUgTEFTVF9TVEFDS19SRUcgKEZJUlNUX0ZMT0FUX1JFRyArIDcp CgojZGVmaW5lIEZMQUdTX1JFRyAxNwojZGVmaW5lIEZQU1JfUkVHIDE4CiNkZWZpbmUgRElS RkxBR19SRUcgMTkKCiNkZWZpbmUgRklSU1RfU1NFX1JFRyAoRlJBTUVfUE9JTlRFUl9SRUdO VU0gKyAxKQojZGVmaW5lIExBU1RfU1NFX1JFRyAoRklSU1RfU1NFX1JFRyArIDcpCgojZGVm aW5lIEZJUlNUX01NWF9SRUcgKExBU1RfU1NFX1JFRyArIDEpCiNkZWZpbmUgTEFTVF9NTVhf UkVHIChGSVJTVF9NTVhfUkVHICsgNykKCiNkZWZpbmUgRklSU1RfUkVYX0lOVF9SRUcgKExB U1RfTU1YX1JFRyArIDEpCiNkZWZpbmUgTEFTVF9SRVhfSU5UX1JFRyAoRklSU1RfUkVYX0lO VF9SRUcgKyA3KQoKI2RlZmluZSBGSVJTVF9SRVhfU1NFX1JFRyAoTEFTVF9SRVhfSU5UX1JF RyArIDEpCiNkZWZpbmUgTEFTVF9SRVhfU1NFX1JFRyAoRklSU1RfUkVYX1NTRV9SRUcgKyA3 KQoKCgoKCiNkZWZpbmUgRlJBTUVfUE9JTlRFUl9SRVFVSVJFRCBpeDg2X2ZyYW1lX3BvaW50 ZXJfcmVxdWlyZWQgKCkKCgoKCiNkZWZpbmUgU1VCVEFSR0VUX0ZSQU1FX1BPSU5URVJfUkVR VUlSRUQgMAoKCgojZGVmaW5lIFNFVFVQX0ZSQU1FX0FERFJFU1NFUygpIGl4ODZfc2V0dXBf ZnJhbWVfYWRkcmVzc2VzICgpCgoKI2RlZmluZSBBUkdfUE9JTlRFUl9SRUdOVU0gMTYKCgoK CiNkZWZpbmUgU1RBVElDX0NIQUlOX1JFR05VTSAoVEFSR0VUXzY0QklUID8gRklSU1RfUkVY X0lOVF9SRUcgKyAxMCAtIDggOiAyKQoKCgoKCiNkZWZpbmUgUElDX09GRlNFVF9UQUJMRV9S RUdOVU0gKFRBUkdFVF82NEJJVCB8fCAhZmxhZ19waWMgPyBJTlZBTElEX1JFR05VTSA6IDMp CgoKCgoKI2RlZmluZSBTVFJVQ1RfVkFMVUVfSU5DT01JTkcgMAoKCgojZGVmaW5lIFNUUlVD VF9WQUxVRSAwCiMgMTE3MiAiaTM4Ni5oIgojZGVmaW5lIFJFVFVSTl9JTl9NRU1PUlkoVFlQ RSkgaXg4Nl9yZXR1cm5faW5fbWVtb3J5IChUWVBFKQojIDEyMDIgImkzODYuaCIKZW51bSBy ZWdfY2xhc3MKewogIE5PX1JFR1MsCiAgQVJFRywgRFJFRywgQ1JFRywgQlJFRywgU0lSRUcs IERJUkVHLAogIEFEX1JFR1MsCiAgUV9SRUdTLAogIE5PTl9RX1JFR1MsCiAgSU5ERVhfUkVH UywKICBMRUdBQ1lfUkVHUywKICBHRU5FUkFMX1JFR1MsCiAgRlBfVE9QX1JFRywgRlBfU0VD T05EX1JFRywKICBGTE9BVF9SRUdTLAogIFNTRV9SRUdTLAogIE1NWF9SRUdTLAogIEZQX1RP UF9TU0VfUkVHUywKICBGUF9TRUNPTkRfU1NFX1JFR1MsCiAgRkxPQVRfU1NFX1JFR1MsCiAg RkxPQVRfSU5UX1JFR1MsCiAgSU5UX1NTRV9SRUdTLAogIEZMT0FUX0lOVF9TU0VfUkVHUywK ICBBTExfUkVHUywgTElNX1JFR19DTEFTU0VTCn07CgojZGVmaW5lIE5fUkVHX0NMQVNTRVMg KChpbnQpIExJTV9SRUdfQ0xBU1NFUykKCiNkZWZpbmUgSU5URUdFUl9DTEFTU19QKENMQVNT KSByZWdfY2xhc3Nfc3Vic2V0X3AgKChDTEFTUyksIEdFTkVSQUxfUkVHUykKCiNkZWZpbmUg RkxPQVRfQ0xBU1NfUChDTEFTUykgcmVnX2NsYXNzX3N1YnNldF9wICgoQ0xBU1MpLCBGTE9B VF9SRUdTKQoKI2RlZmluZSBTU0VfQ0xBU1NfUChDTEFTUykgcmVnX2NsYXNzX3N1YnNldF9w ICgoQ0xBU1MpLCBTU0VfUkVHUykKCiNkZWZpbmUgTU1YX0NMQVNTX1AoQ0xBU1MpIHJlZ19j bGFzc19zdWJzZXRfcCAoKENMQVNTKSwgTU1YX1JFR1MpCgojZGVmaW5lIE1BWUJFX0lOVEVH RVJfQ0xBU1NfUChDTEFTUykgcmVnX2NsYXNzZXNfaW50ZXJzZWN0X3AgKChDTEFTUyksIEdF TkVSQUxfUkVHUykKCiNkZWZpbmUgTUFZQkVfRkxPQVRfQ0xBU1NfUChDTEFTUykgcmVnX2Ns YXNzZXNfaW50ZXJzZWN0X3AgKChDTEFTUyksIEZMT0FUX1JFR1MpCgojZGVmaW5lIE1BWUJF X1NTRV9DTEFTU19QKENMQVNTKSByZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAoU1NFX1JFR1Ms IChDTEFTUykpCgojZGVmaW5lIE1BWUJFX01NWF9DTEFTU19QKENMQVNTKSByZWdfY2xhc3Nl c19pbnRlcnNlY3RfcCAoTU1YX1JFR1MsIChDTEFTUykpCgoKI2RlZmluZSBRX0NMQVNTX1Ao Q0xBU1MpIHJlZ19jbGFzc19zdWJzZXRfcCAoKENMQVNTKSwgUV9SRUdTKQoKCgoKI2RlZmlu ZSBSRUdfQ0xBU1NfTkFNRVMgeyAiTk9fUkVHUyIsICJBUkVHIiwgIkRSRUciLCAiQ1JFRyIs ICJCUkVHIiwgIlNJUkVHIiwgIkRJUkVHIiwgIkFEX1JFR1MiLCAiUV9SRUdTIiwgIk5PTl9R X1JFR1MiLCAiSU5ERVhfUkVHUyIsICJMRUdBQ1lfUkVHUyIsICJHRU5FUkFMX1JFR1MiLCAi RlBfVE9QX1JFRyIsICJGUF9TRUNPTkRfUkVHIiwgIkZMT0FUX1JFR1MiLCAiU1NFX1JFR1Mi LCAiTU1YX1JFR1MiLCAiRlBfVE9QX1NTRV9SRUdTIiwgIkZQX1NFQ09ORF9TU0VfUkVHUyIs ICJGTE9BVF9TU0VfUkVHUyIsICJGTE9BVF9JTlRfUkVHUyIsICJJTlRfU1NFX1JFR1MiLCAi RkxPQVRfSU5UX1NTRV9SRUdTIiwgIkFMTF9SRUdTIiB9CiMgMTI3NCAiaTM4Ni5oIgojZGVm aW5lIFJFR19DTEFTU19DT05URU5UUyB7IHsgMHgwMCwgMHgwIH0sIHsgMHgwMSwgMHgwIH0s IHsgMHgwMiwgMHgwIH0sIHsgMHgwNCwgMHgwIH0sIHsgMHgwOCwgMHgwIH0sIHsgMHgxMCwg MHgwIH0sIHsgMHgyMCwgMHgwIH0sIHsgMHgwMywgMHgwIH0sIHsgMHgwZiwgMHgwIH0sIHsg MHgxMTAwZjAsIDB4MWZlMCB9LCB7IDB4N2YsIDB4MWZlMCB9LCB7IDB4MTEwMGZmLCAweDAg fSwgeyAweDExMDBmZiwgMHgxZmUwIH0sIHsgMHgxMDAsIDB4MCB9LCB7IDB4MDIwMCwgMHgw IH0sIHsgMHhmZjAwLCAweDAgfSwgeyAweDFmZTAwMDAwLDB4MWZlMDAwIH0sIHsgMHhlMDAw MDAwMCwgMHgxZiB9LCB7IDB4MWZlMDAxMDAsMHgxZmUwMDAgfSwgeyAweDFmZTAwMjAwLDB4 MWZlMDAwIH0sIHsgMHgxZmUwZmYwMCwweDFmZTAwMCB9LCB7IDB4MWZmZmYsIDB4MWZlMCB9 LCB7IDB4MWZlMTAwZmYsMHgxZmZmZTAgfSwgeyAweDFmZTFmZmZmLDB4MWZmZmUwIH0sIHsg MHhmZmZmZmZmZiwweDFmZmZmZiB9IH0KIyAxMzAzICJpMzg2LmgiCiNkZWZpbmUgUkVHTk9f UkVHX0NMQVNTKFJFR05PKSAocmVnY2xhc3NfbWFwW1JFR05PXSkKCgoKCgojZGVmaW5lIFNN QUxMX1JFR0lTVEVSX0NMQVNTRVMgMQoKI2RlZmluZSBRSV9SRUdfUChYKSAoUkVHX1AgKFgp ICYmIFJFR05PIChYKSA8IDQpCgoKI2RlZmluZSBHRU5FUkFMX1JFR05PX1AoTikgKChOKSA8 IDggfHwgUkVYX0lOVF9SRUdOT19QIChOKSkKCgojZGVmaW5lIEdFTkVSQUxfUkVHX1AoWCkg KFJFR19QIChYKSAmJiBHRU5FUkFMX1JFR05PX1AgKFJFR05PIChYKSkpCgoKI2RlZmluZSBB TllfUUlfUkVHX1AoWCkgKFRBUkdFVF82NEJJVCA/IEdFTkVSQUxfUkVHX1AoWCkgOiBRSV9S RUdfUCAoWCkpCgojZGVmaW5lIE5PTl9RSV9SRUdfUChYKSAoUkVHX1AgKFgpICYmIFJFR05P IChYKSA+PSA0ICYmIFJFR05PIChYKSA8IEZJUlNUX1BTRVVET19SRUdJU1RFUikKCgojZGVm aW5lIFJFWF9JTlRfUkVHTk9fUChOKSAoKE4pID49IEZJUlNUX1JFWF9JTlRfUkVHICYmIChO KSA8PSBMQVNUX1JFWF9JTlRfUkVHKQojZGVmaW5lIFJFWF9JTlRfUkVHX1AoWCkgKFJFR19Q IChYKSAmJiBSRVhfSU5UX1JFR05PX1AgKFJFR05PIChYKSkpCgojZGVmaW5lIEZQX1JFR19Q KFgpIChSRUdfUCAoWCkgJiYgRlBfUkVHTk9fUCAoUkVHTk8gKFgpKSkKI2RlZmluZSBGUF9S RUdOT19QKE4pICgoTikgPj0gRklSU1RfU1RBQ0tfUkVHICYmIChOKSA8PSBMQVNUX1NUQUNL X1JFRykKI2RlZmluZSBBTllfRlBfUkVHX1AoWCkgKFJFR19QIChYKSAmJiBBTllfRlBfUkVH Tk9fUCAoUkVHTk8gKFgpKSkKI2RlZmluZSBBTllfRlBfUkVHTk9fUChOKSAoRlBfUkVHTk9f UCAoTikgfHwgU1NFX1JFR05PX1AgKE4pKQoKI2RlZmluZSBTU0VfUkVHTk9fUChOKSAoKChO KSA+PSBGSVJTVF9TU0VfUkVHICYmIChOKSA8PSBMQVNUX1NTRV9SRUcpIHx8ICgoTikgPj0g RklSU1RfUkVYX1NTRV9SRUcgJiYgKE4pIDw9IExBU1RfUkVYX1NTRV9SRUcpKQoKCgojZGVm aW5lIFNTRV9SRUdOTyhOKSAoKE4pIDwgOCA/IEZJUlNUX1NTRV9SRUcgKyAoTikgOiBGSVJT VF9SRVhfU1NFX1JFRyArIChOKSAtIDgpCgojZGVmaW5lIFNTRV9SRUdfUChOKSAoUkVHX1Ag KE4pICYmIFNTRV9SRUdOT19QIChSRUdOTyAoTikpKQoKI2RlZmluZSBTU0VfRkxPQVRfTU9E RV9QKE1PREUpICgoVEFSR0VUX1NTRSAmJiAoTU9ERSkgPT0gU0Ztb2RlKSB8fCAoVEFSR0VU X1NTRTIgJiYgKE1PREUpID09IERGbW9kZSkpCgoKI2RlZmluZSBNTVhfUkVHTk9fUChOKSAo KE4pID49IEZJUlNUX01NWF9SRUcgJiYgKE4pIDw9IExBU1RfTU1YX1JFRykKI2RlZmluZSBN TVhfUkVHX1AoWE9QKSAoUkVHX1AgKFhPUCkgJiYgTU1YX1JFR05PX1AgKFJFR05PIChYT1Ap KSkKCiNkZWZpbmUgU1RBQ0tfUkVHX1AoWE9QKSAoUkVHX1AgKFhPUCkgJiYgUkVHTk8gKFhP UCkgPj0gRklSU1RfU1RBQ0tfUkVHICYmIFJFR05PIChYT1ApIDw9IExBU1RfU1RBQ0tfUkVH KQoKCgoKI2RlZmluZSBOT05fU1RBQ0tfUkVHX1AoWE9QKSAoUkVHX1AgKFhPUCkgJiYgISBT VEFDS19SRUdfUCAoWE9QKSkKCiNkZWZpbmUgU1RBQ0tfVE9QX1AoWE9QKSAoUkVHX1AgKFhP UCkgJiYgUkVHTk8gKFhPUCkgPT0gRklSU1RfU1RBQ0tfUkVHKQoKI2RlZmluZSBDQ19SRUdf UChYKSAoUkVHX1AgKFgpICYmIENDX1JFR05PX1AgKFJFR05PIChYKSkpCiNkZWZpbmUgQ0Nf UkVHTk9fUChYKSAoKFgpID09IEZMQUdTX1JFRyB8fCAoWCkgPT0gRlBTUl9SRUcpCgoKCiNk ZWZpbmUgQ09OVkVSVF9IQVJEX1JFR0lTVEVSX1RPX1NTQV9QKFJFR19OTykgKChSRUdfTk8p ID09IEZMQUdTX1JFRyB8fCAoUkVHX05PKSA9PSBBUkdfUE9JTlRFUl9SRUdOVU0pCgoKCgoj ZGVmaW5lIElOREVYX1JFR19DTEFTUyBJTkRFWF9SRUdTCiNkZWZpbmUgQkFTRV9SRUdfQ0xB U1MgR0VORVJBTF9SRUdTCgoKCiNkZWZpbmUgUkVHX0NMQVNTX0ZST01fTEVUVEVSKEMpICgo QykgPT0gJ3InID8gR0VORVJBTF9SRUdTIDogKEMpID09ICdSJyA/IExFR0FDWV9SRUdTIDog KEMpID09ICdxJyA/IFRBUkdFVF82NEJJVCA/IEdFTkVSQUxfUkVHUyA6IFFfUkVHUyA6IChD KSA9PSAnUScgPyBRX1JFR1MgOiAoQykgPT0gJ2YnID8gKFRBUkdFVF84MDM4NyB8fCBUQVJH RVRfRkxPQVRfUkVUVVJOU19JTl84MDM4NyA/IEZMT0FUX1JFR1MgOiBOT19SRUdTKSA6IChD KSA9PSAndCcgPyAoVEFSR0VUXzgwMzg3IHx8IFRBUkdFVF9GTE9BVF9SRVRVUk5TX0lOXzgw Mzg3ID8gRlBfVE9QX1JFRyA6IE5PX1JFR1MpIDogKEMpID09ICd1JyA/IChUQVJHRVRfODAz ODcgfHwgVEFSR0VUX0ZMT0FUX1JFVFVSTlNfSU5fODAzODcgPyBGUF9TRUNPTkRfUkVHIDog Tk9fUkVHUykgOiAoQykgPT0gJ2EnID8gQVJFRyA6IChDKSA9PSAnYicgPyBCUkVHIDogKEMp ID09ICdjJyA/IENSRUcgOiAoQykgPT0gJ2QnID8gRFJFRyA6IChDKSA9PSAneCcgPyBUQVJH RVRfU1NFID8gU1NFX1JFR1MgOiBOT19SRUdTIDogKEMpID09ICdZJyA/IFRBUkdFVF9TU0Uy PyBTU0VfUkVHUyA6IE5PX1JFR1MgOiAoQykgPT0gJ3knID8gVEFSR0VUX01NWCA/IE1NWF9S RUdTIDogTk9fUkVHUyA6IChDKSA9PSAnQScgPyBBRF9SRUdTIDogKEMpID09ICdEJyA/IERJ UkVHIDogKEMpID09ICdTJyA/IFNJUkVHIDogTk9fUkVHUykKIyAxNDEwICJpMzg2LmgiCiNk ZWZpbmUgQ09OU1RfT0tfRk9SX0xFVFRFUl9QKFZBTFVFLEMpICgoQykgPT0gJ0knID8gKFZB TFVFKSA+PSAwICYmIChWQUxVRSkgPD0gMzEgOiAoQykgPT0gJ0onID8gKFZBTFVFKSA+PSAw ICYmIChWQUxVRSkgPD0gNjMgOiAoQykgPT0gJ0snID8gKFZBTFVFKSA+PSAtMTI4ICYmIChW QUxVRSkgPD0gMTI3IDogKEMpID09ICdMJyA/IChWQUxVRSkgPT0gMHhmZiB8fCAoVkFMVUUp ID09IDB4ZmZmZiA6IChDKSA9PSAnTScgPyAoVkFMVUUpID49IDAgJiYgKFZBTFVFKSA8PSAz IDogKEMpID09ICdOJyA/IChWQUxVRSkgPj0gMCAmJiAoVkFMVUUpIDw9IDI1NSA6IDApCiMg MTQyNCAiaTM4Ni5oIgojZGVmaW5lIENPTlNUX0RPVUJMRV9PS19GT1JfTEVUVEVSX1AoVkFM VUUsQykgKChDKSA9PSAnRycgPyBzdGFuZGFyZF84MDM4N19jb25zdGFudF9wIChWQUxVRSkg OiAoKEMpID09ICdIJyA/IHN0YW5kYXJkX3NzZV9jb25zdGFudF9wIChWQUxVRSkgOiAwKSkK IyAxNDQwICJpMzg2LmgiCiNkZWZpbmUgRVhUUkFfQ09OU1RSQUlOVChWQUxVRSxDKSAoKEMp ID09ICdlJyA/IHg4Nl82NF9zaWduX2V4dGVuZGVkX3ZhbHVlIChWQUxVRSkgOiAoQykgPT0g J1onID8geDg2XzY0X3plcm9fZXh0ZW5kZWRfdmFsdWUgKFZBTFVFKSA6IDApCiMgMTQ0OSAi aTM4Ni5oIgojZGVmaW5lIExJTUlUX1JFTE9BRF9DTEFTUyhNT0RFLENMQVNTKSAoKE1PREUp ID09IFFJbW9kZSAmJiAhVEFSR0VUXzY0QklUICYmICgoQ0xBU1MpID09IEFMTF9SRUdTIHx8 IChDTEFTUykgPT0gR0VORVJBTF9SRUdTIHx8IChDTEFTUykgPT0gTEVHQUNZX1JFR1MgfHwg KENMQVNTKSA9PSBJTkRFWF9SRUdTKSA/IFFfUkVHUyA6IChDTEFTUykpCiMgMTQ2OCAiaTM4 Ni5oIgojZGVmaW5lIFBSRUZFUlJFRF9SRUxPQURfQ0xBU1MoWCxDTEFTUykgaXg4Nl9wcmVm ZXJyZWRfcmVsb2FkX2NsYXNzICgoWCksIChDTEFTUykpCgoKCgojZGVmaW5lIFNFQ09OREFS WV9NRU1PUllfTkVFREVEKENMQVNTMSxDTEFTUzIsTU9ERSkgaXg4Nl9zZWNvbmRhcnlfbWVt b3J5X25lZWRlZCAoKENMQVNTMSksIChDTEFTUzIpLCAoTU9ERSksIDEpCgoKCgoKCiNkZWZp bmUgU0VDT05EQVJZX09VVFBVVF9SRUxPQURfQ0xBU1MoQ0xBU1MsTU9ERSxPVVQpICgoKENM QVNTKSA9PSBHRU5FUkFMX1JFR1MgfHwgKENMQVNTKSA9PSBMRUdBQ1lfUkVHUyB8fCAoQ0xB U1MpID09IElOREVYX1JFR1MpICYmICFUQVJHRVRfNjRCSVQgJiYgKE1PREUpID09IFFJbW9k ZSA/IFFfUkVHUyA6IE5PX1JFR1MpCiMgMTQ5MiAiaTM4Ni5oIgojZGVmaW5lIENMQVNTX01B WF9OUkVHUyhDTEFTUyxNT0RFKSAoIU1BWUJFX0lOVEVHRVJfQ0xBU1NfUCAoQ0xBU1MpID8g KENPTVBMRVhfTU9ERV9QIChNT0RFKSA/IDIgOiAxKSA6ICgoR0VUX01PREVfU0laRSAoKE1P REUpID09IFRGbW9kZSA/IFhGbW9kZSA6IChNT0RFKSkgKyBVTklUU19QRVJfV09SRCAtIDEp IC8gVU5JVFNfUEVSX1dPUkQpKQojIDE1MTQgImkzODYuaCIKI2RlZmluZSBDTEFTU19MSUtF TFlfU1BJTExFRF9QKENMQVNTKSAoKChDTEFTUykgPT0gQVJFRykgfHwgKChDTEFTUykgPT0g RFJFRykgfHwgKChDTEFTUykgPT0gQ1JFRykgfHwgKChDTEFTUykgPT0gQlJFRykgfHwgKChD TEFTUykgPT0gQURfUkVHUykgfHwgKChDTEFTUykgPT0gU0lSRUcpIHx8ICgoQ0xBU1MpID09 IERJUkVHKSkKIyAxNTI5ICJpMzg2LmgiCiNkZWZpbmUgTURfQVNNX0NMT0JCRVJTKENMT0JC RVJTKSBkbyB7IChDTE9CQkVSUykgPSB0cmVlX2NvbnMgKE5VTExfVFJFRSwgYnVpbGRfc3Ry aW5nICg1LCAiZmxhZ3MiKSwgKENMT0JCRVJTKSk7IChDTE9CQkVSUykgPSB0cmVlX2NvbnMg KE5VTExfVFJFRSwgYnVpbGRfc3RyaW5nICg0LCAiZnBzciIpLCAoQ0xPQkJFUlMpKTsgKENM T0JCRVJTKSA9IHRyZWVfY29ucyAoTlVMTF9UUkVFLCBidWlsZF9zdHJpbmcgKDcsICJkaXJm bGFnIiksIChDTE9CQkVSUykpOyB9IHdoaWxlICgwKQojIDE1NDMgImkzODYuaCIKI2RlZmlu ZSBTVEFDS19HUk9XU19ET1dOV0FSRCAKCgoKCgojZGVmaW5lIEZSQU1FX0dST1dTX0RPV05X QVJEIAoKCgoKCiNkZWZpbmUgU1RBUlRJTkdfRlJBTUVfT0ZGU0VUIDAKIyAxNTY2ICJpMzg2 LmgiCiNkZWZpbmUgUFVTSF9ST1VORElORyhCWVRFUykgKFRBUkdFVF82NEJJVCA/ICgoKEJZ VEVTKSArIDcpICYgKC04KSkgOiAoKChCWVRFUykgKyAxKSAmICgtMikpKQojIDE1NzcgImkz ODYuaCIKI2RlZmluZSBBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MgVEFSR0VUX0FDQ1VNVUxB VEVfT1VUR09JTkdfQVJHUwoKCgoKI2RlZmluZSBQVVNIX0FSR1MgKFRBUkdFVF9QVVNIX0FS R1MgJiYgIUFDQ1VNVUxBVEVfT1VUR09JTkdfQVJHUykKCgojZGVmaW5lIEZJUlNUX1BBUk1f T0ZGU0VUKEZOREVDTCkgMAojIDE1OTYgImkzODYuaCIKI2RlZmluZSBSRUdfUEFSTV9TVEFD S19TUEFDRShGTkRFQ0wpIDAKCgoKCgoKI2RlZmluZSBNVVNUX1BBU1NfSU5fU1RBQ0soTU9E RSxUWVBFKSAoKFRZUEUpICE9IDAgJiYgKFRSRUVfQ09ERSAoVFlQRV9TSVpFIChUWVBFKSkg IT0gSU5URUdFUl9DU1QgfHwgVFJFRV9BRERSRVNTQUJMRSAoVFlQRSkgfHwgKChNT0RFKSA9 PSBUSW1vZGUpIHx8ICgoTU9ERSkgPT0gQkxLbW9kZSAmJiAhICgoVFlQRSkgIT0gMCAmJiBU UkVFX0NPREUgKFRZUEVfU0laRSAoVFlQRSkpID09IElOVEVHRVJfQ1NUICYmIDAgPT0gKGlu dF9zaXplX2luX2J5dGVzIChUWVBFKSAlIChQQVJNX0JPVU5EQVJZIC8gQklUU19QRVJfVU5J VCkpKSAmJiAoRlVOQ1RJT05fQVJHX1BBRERJTkcgKE1PREUsIFRZUEUpID09IChCWVRFU19C SUdfRU5ESUFOID8gdXB3YXJkIDogZG93bndhcmQpKSkpKQojIDE2MzMgImkzODYuaCIKI2Rl ZmluZSBSRVRVUk5fUE9QU19BUkdTKEZVTkRFQ0wsRlVOVFlQRSxTSVpFKSBpeDg2X3JldHVy bl9wb3BzX2FyZ3MgKChGVU5ERUNMKSwgKEZVTlRZUEUpLCAoU0laRSkpCgoKCgoKCiNkZWZp bmUgRlVOQ1RJT05fVkFMVUUoVkFMVFlQRSxGVU5DKSBpeDg2X2Z1bmN0aW9uX3ZhbHVlIChW QUxUWVBFKQoKCiNkZWZpbmUgRlVOQ1RJT05fVkFMVUVfUkVHTk9fUChOKSBpeDg2X2Z1bmN0 aW9uX3ZhbHVlX3JlZ25vX3AgKE4pCgoKCgoKI2RlZmluZSBMSUJDQUxMX1ZBTFVFKE1PREUp IGl4ODZfbGliY2FsbF92YWx1ZSAoTU9ERSkKCgoKCgoKI2RlZmluZSBBUFBMWV9SRVNVTFRf U0laRSAoOCsxMDgpCgoKI2RlZmluZSBGVU5DVElPTl9BUkdfUkVHTk9fUChOKSBpeDg2X2Z1 bmN0aW9uX2FyZ19yZWdub19wIChOKQoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgaXg4Nl9hcmdz IHsKICBpbnQgd29yZHM7CiAgaW50IG5yZWdzOwogIGludCByZWdubzsKICBpbnQgc3NlX3dv cmRzOwogIGludCBzc2VfbnJlZ3M7CiAgaW50IHNzZV9yZWdubzsKICBpbnQgbWF5YmVfdmFh cmc7Cn0gQ1VNVUxBVElWRV9BUkdTOwoKCgoKCiNkZWZpbmUgSU5JVF9DVU1VTEFUSVZFX0FS R1MoQ1VNLEZOVFlQRSxMSUJOQU1FLElORElSRUNUKSBpbml0X2N1bXVsYXRpdmVfYXJncyAo JihDVU0pLCAoRk5UWVBFKSwgKExJQk5BTUUpKQoKCgoKCgojZGVmaW5lIEZVTkNUSU9OX0FS R19BRFZBTkNFKENVTSxNT0RFLFRZUEUsTkFNRUQpIGZ1bmN0aW9uX2FyZ19hZHZhbmNlICgm KENVTSksIChNT0RFKSwgKFRZUEUpLCAoTkFNRUQpKQojIDE3MDQgImkzODYuaCIKI2RlZmlu ZSBGVU5DVElPTl9BUkcoQ1VNLE1PREUsVFlQRSxOQU1FRCkgZnVuY3Rpb25fYXJnICgmKENV TSksIChNT0RFKSwgKFRZUEUpLCAoTkFNRUQpKQoKCgoKCgojZGVmaW5lIEZVTkNUSU9OX0FS R19QQVJUSUFMX05SRUdTKENVTSxNT0RFLFRZUEUsTkFNRUQpIDAKCgoKCgoKI2RlZmluZSBG VU5DVElPTl9PS19GT1JfU0lCQ0FMTChERUNMKSAoKERFQ0wpICYmICghIGZsYWdfcGljIHx8 ICEgVFJFRV9QVUJMSUMgKERFQ0wpKSAmJiAoISBUQVJHRVRfRkxPQVRfUkVUVVJOU19JTl84 MDM4NyB8fCAhIEZMT0FUX01PREVfUCAoVFlQRV9NT0RFIChUUkVFX1RZUEUgKFRSRUVfVFlQ RSAoREVDTCkpKSkgfHwgRkxPQVRfTU9ERV9QIChUWVBFX01PREUgKFRSRUVfVFlQRSAoVFJF RV9UWVBFIChjZnVuLT5kZWNsKSkpKSkpCiMgMTczOSAiaTM4Ni5oIgojZGVmaW5lIFNFVFVQ X0lOQ09NSU5HX1ZBUkFSR1MoQ1VNLE1PREUsVFlQRSxQUkVURU5EX1NJWkUsTk9fUlRMKSBp eDg2X3NldHVwX2luY29taW5nX3ZhcmFyZ3MgKCYoQ1VNKSwgKE1PREUpLCAoVFlQRSksICYo UFJFVEVORF9TSVpFKSwgKE5PX1JUTCkpCgoKCgojZGVmaW5lIEJVSUxEX1ZBX0xJU1RfVFlQ RShWQUxJU1QpICgoVkFMSVNUKSA9IGl4ODZfYnVpbGRfdmFfbGlzdCAoKSkKCgoKI2RlZmlu ZSBFWFBBTkRfQlVJTFRJTl9WQV9TVEFSVChTVERBUkcsVkFMSVNULE5FWFRBUkcpIGl4ODZf dmFfc3RhcnQgKChTVERBUkcpLCAoVkFMSVNUKSwgKE5FWFRBUkcpKQoKCgojZGVmaW5lIEVY UEFORF9CVUlMVElOX1ZBX0FSRyhWQUxJU1QsVFlQRSkgaXg4Nl92YV9hcmcgKChWQUxJU1Qp LCAoVFlQRSkpCgoKCgoKI3VuZGVmIEFTTV9GSUxFX0VORAojZGVmaW5lIEFTTV9GSUxFX0VO RChGSUxFKSBpeDg2X2FzbV9maWxlX2VuZCAoRklMRSkKCgoKCiNkZWZpbmUgRlVOQ1RJT05f UFJPRklMRVIoRklMRSxMQUJFTE5PKSBkbyB7IGlmIChmbGFnX3BpYykgeyBmcHJpbnRmICgo RklMRSksICJcdGxlYWxcdCVzUCVkQEdPVE9GRiglJWVieCksJSVlZHhcbiIsIExQUkVGSVgs IChMQUJFTE5PKSk7IGZwcmludGYgKChGSUxFKSwgIlx0Y2FsbFx0Kl9tY291bnRAR09UKCUl ZWJ4KVxuIik7IH0gZWxzZSB7IGZwcmludGYgKChGSUxFKSwgIlx0bW92bFx0JCVzUCVkLCUl ZWR4XG4iLCBMUFJFRklYLCAoTEFCRUxOTykpOyBmcHJpbnRmICgoRklMRSksICJcdGNhbGxc dF9tY291bnRcbiIpOyB9IH0gd2hpbGUgKDApCiMgMTc4NyAiaTM4Ni5oIgojZGVmaW5lIEVY SVRfSUdOT1JFX1NUQUNLIDEKIyAxODAxICJpMzg2LmgiCiNkZWZpbmUgVFJBTVBPTElORV9T SVpFIChUQVJHRVRfNjRCSVQgPyAyMyA6IDEwKQoKCgoKCiNkZWZpbmUgSU5JVElBTElaRV9U UkFNUE9MSU5FKFRSQU1QLEZOQUREUixDWFQpIHg4Nl9pbml0aWFsaXplX3RyYW1wb2xpbmUg KChUUkFNUCksIChGTkFERFIpLCAoQ1hUKSkKIyAxODIzICJpMzg2LmgiCiNkZWZpbmUgRUxJ TUlOQUJMRV9SRUdTIHt7IEFSR19QT0lOVEVSX1JFR05VTSwgU1RBQ0tfUE9JTlRFUl9SRUdO VU19LCB7IEFSR19QT0lOVEVSX1JFR05VTSwgSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTX0s IHsgRlJBTUVfUE9JTlRFUl9SRUdOVU0sIFNUQUNLX1BPSU5URVJfUkVHTlVNfSwgeyBGUkFN RV9QT0lOVEVSX1JFR05VTSwgSEFSRF9GUkFNRV9QT0lOVEVSX1JFR05VTX19CiMgMTgzNCAi aTM4Ni5oIgojZGVmaW5lIENBTl9FTElNSU5BVEUoRlJPTSxUTykgKChUTykgPT0gU1RBQ0tf UE9JTlRFUl9SRUdOVU0gPyAhIGZyYW1lX3BvaW50ZXJfbmVlZGVkIDogMSkKCgoKCgojZGVm aW5lIElOSVRJQUxfRUxJTUlOQVRJT05fT0ZGU0VUKEZST00sVE8sT0ZGU0VUKSAoKE9GRlNF VCkgPSBpeDg2X2luaXRpYWxfZWxpbWluYXRpb25fb2Zmc2V0ICgoRlJPTSksIChUTykpKQoj IDE4NTkgImkzODYuaCIKI2RlZmluZSBSRUdOT19PS19GT1JfSU5ERVhfUChSRUdOTykgKChS RUdOTykgPCBTVEFDS19QT0lOVEVSX1JFR05VTSB8fCAoUkVHTk8gPj0gRklSU1RfUkVYX0lO VF9SRUcgJiYgKFJFR05PKSA8PSBMQVNUX1JFWF9JTlRfUkVHKSB8fCAoKHVuc2lnbmVkKSBy ZWdfcmVudW1iZXJbKFJFR05PKV0gPj0gRklSU1RfUkVYX0lOVF9SRUcgJiYgKHVuc2lnbmVk KSByZWdfcmVudW1iZXJbKFJFR05PKV0gPD0gTEFTVF9SRVhfSU5UX1JFRykgfHwgKHVuc2ln bmVkKSByZWdfcmVudW1iZXJbKFJFR05PKV0gPCBTVEFDS19QT0lOVEVSX1JFR05VTSkKCgoK CgoKCiNkZWZpbmUgUkVHTk9fT0tfRk9SX0JBU0VfUChSRUdOTykgKChSRUdOTykgPD0gU1RB Q0tfUE9JTlRFUl9SRUdOVU0gfHwgKFJFR05PKSA9PSBBUkdfUE9JTlRFUl9SRUdOVU0gfHwg KFJFR05PKSA9PSBGUkFNRV9QT0lOVEVSX1JFR05VTSB8fCAoUkVHTk8gPj0gRklSU1RfUkVY X0lOVF9SRUcgJiYgKFJFR05PKSA8PSBMQVNUX1JFWF9JTlRfUkVHKSB8fCAoKHVuc2lnbmVk KSByZWdfcmVudW1iZXJbKFJFR05PKV0gPj0gRklSU1RfUkVYX0lOVF9SRUcgJiYgKHVuc2ln bmVkKSByZWdfcmVudW1iZXJbKFJFR05PKV0gPD0gTEFTVF9SRVhfSU5UX1JFRykgfHwgKHVu c2lnbmVkKSByZWdfcmVudW1iZXJbKFJFR05PKV0gPD0gU1RBQ0tfUE9JTlRFUl9SRUdOVU0p CiMgMTg3NyAiaTM4Ni5oIgojZGVmaW5lIFJFR05PX09LX0ZPUl9TSVJFR19QKFJFR05PKSAo KFJFR05PKSA9PSA0IHx8IHJlZ19yZW51bWJlclsoUkVHTk8pXSA9PSA0KQoKI2RlZmluZSBS RUdOT19PS19GT1JfRElSRUdfUChSRUdOTykgKChSRUdOTykgPT0gNSB8fCByZWdfcmVudW1i ZXJbKFJFR05PKV0gPT0gNSkKIyAxODk3ICJpMzg2LmgiCiNkZWZpbmUgUkVHX09LX0ZPUl9J TkRFWF9OT05TVFJJQ1RfUChYKSAoUkVHTk8gKFgpIDwgU1RBQ0tfUE9JTlRFUl9SRUdOVU0g fHwgKFJFR05PIChYKSA+PSBGSVJTVF9SRVhfSU5UX1JFRyAmJiBSRUdOTyAoWCkgPD0gTEFT VF9SRVhfSU5UX1JFRykgfHwgUkVHTk8gKFgpID49IEZJUlNUX1BTRVVET19SRUdJU1RFUikK CgoKCgojZGVmaW5lIFJFR19PS19GT1JfQkFTRV9OT05TVFJJQ1RfUChYKSAoUkVHTk8gKFgp IDw9IFNUQUNLX1BPSU5URVJfUkVHTlVNIHx8IFJFR05PIChYKSA9PSBBUkdfUE9JTlRFUl9S RUdOVU0gfHwgUkVHTk8gKFgpID09IEZSQU1FX1BPSU5URVJfUkVHTlVNIHx8IChSRUdOTyAo WCkgPj0gRklSU1RfUkVYX0lOVF9SRUcgJiYgUkVHTk8gKFgpIDw9IExBU1RfUkVYX0lOVF9S RUcpIHx8IFJFR05PIChYKSA+PSBGSVJTVF9QU0VVRE9fUkVHSVNURVIpCiMgMTkxMiAiaTM4 Ni5oIgojZGVmaW5lIFJFR19PS19GT1JfSU5ERVhfU1RSSUNUX1AoWCkgUkVHTk9fT0tfRk9S X0lOREVYX1AgKFJFR05PIChYKSkKI2RlZmluZSBSRUdfT0tfRk9SX0JBU0VfU1RSSUNUX1Ao WCkgUkVHTk9fT0tfRk9SX0JBU0VfUCAoUkVHTk8gKFgpKQoKCgoKCgojZGVmaW5lIFJFR19P S19GT1JfSU5ERVhfUChYKSBSRUdfT0tfRk9SX0lOREVYX1NUUklDVF9QIChYKQojZGVmaW5l IFJFR19PS19GT1JfQkFTRV9QKFgpIFJFR19PS19GT1JfQkFTRV9TVFJJQ1RfUCAoWCkKIyAx OTM1ICJpMzg2LmgiCiNkZWZpbmUgTUFYX1JFR1NfUEVSX0FERFJFU1MgMgoKI2RlZmluZSBD T05TVEFOVF9BRERSRVNTX1AoWCkgKEdFVF9DT0RFIChYKSA9PSBMQUJFTF9SRUYgfHwgR0VU X0NPREUgKFgpID09IFNZTUJPTF9SRUYgfHwgR0VUX0NPREUgKFgpID09IENPTlNUX0lOVCB8 fCBHRVRfQ09ERSAoWCkgPT0gQ09OU1QgfHwgR0VUX0NPREUgKFgpID09IENPTlNUX0RPVUJM RSkKCgoKCgoKCiNkZWZpbmUgTEVHSVRJTUFURV9DT05TVEFOVF9QKFgpIDEKCgojZGVmaW5l IEdPX0lGX0xFR0lUSU1BVEVfQUREUkVTUyhNT0RFLFgsQUREUikgZG8geyBpZiAobGVnaXRp bWF0ZV9hZGRyZXNzX3AgKChNT0RFKSwgKFgpLCAxKSkgZ290byBBRERSOyB9IHdoaWxlICgw KQojIDE5NzIgImkzODYuaCIKI2RlZmluZSBGSU5EX0JBU0VfVEVSTShYKSBpeDg2X2ZpbmRf YmFzZV90ZXJtIChYKQojIDE5OTUgImkzODYuaCIKI2RlZmluZSBMRUdJVElNSVpFX0FERFJF U1MoWCxPTERYLE1PREUsV0lOKSBkbyB7IChYKSA9IGxlZ2l0aW1pemVfYWRkcmVzcyAoKFgp LCAoT0xEWCksIChNT0RFKSk7IGlmIChtZW1vcnlfYWRkcmVzc19wICgoTU9ERSksIChYKSkp IGdvdG8gV0lOOyB9IHdoaWxlICgwKQoKCgoKCgojZGVmaW5lIFJFV1JJVEVfQUREUkVTUyhY KSByZXdyaXRlX2FkZHJlc3MgKFgpCgoKCgoKI2RlZmluZSBMRUdJVElNQVRFX1BJQ19PUEVS QU5EX1AoWCkgKCEgU1lNQk9MSUNfQ09OU1QgKFgpIHx8IGxlZ2l0aW1hdGVfcGljX2FkZHJl c3NfZGlzcF9wIChYKSkKCgoKI2RlZmluZSBTWU1CT0xJQ19DT05TVChYKSAoR0VUX0NPREUg KFgpID09IFNZTUJPTF9SRUYgfHwgR0VUX0NPREUgKFgpID09IExBQkVMX1JFRiB8fCAoR0VU X0NPREUgKFgpID09IENPTlNUICYmIHN5bWJvbGljX3JlZmVyZW5jZV9tZW50aW9uZWRfcCAo WCkpKQojIDIwMjEgImkzODYuaCIKI2RlZmluZSBHT19JRl9NT0RFX0RFUEVOREVOVF9BRERS RVNTKEFERFIsTEFCRUwpIGRvIHsgaWYgKEdFVF9DT0RFIChBRERSKSA9PSBQT1NUX0lOQyB8 fCBHRVRfQ09ERSAoQUREUikgPT0gUE9TVF9ERUMpIGdvdG8gTEFCRUw7IH0gd2hpbGUgKDAp CgoKCgoKCgplbnVtIGl4ODZfYnVpbHRpbnMKewogIElYODZfQlVJTFRJTl9BRERQUywKICBJ WDg2X0JVSUxUSU5fQUREU1MsCiAgSVg4Nl9CVUlMVElOX0RJVlBTLAogIElYODZfQlVJTFRJ Tl9ESVZTUywKICBJWDg2X0JVSUxUSU5fTVVMUFMsCiAgSVg4Nl9CVUlMVElOX01VTFNTLAog IElYODZfQlVJTFRJTl9TVUJQUywKICBJWDg2X0JVSUxUSU5fU1VCU1MsCgogIElYODZfQlVJ TFRJTl9DTVBFUVBTLAogIElYODZfQlVJTFRJTl9DTVBMVFBTLAogIElYODZfQlVJTFRJTl9D TVBMRVBTLAogIElYODZfQlVJTFRJTl9DTVBHVFBTLAogIElYODZfQlVJTFRJTl9DTVBHRVBT LAogIElYODZfQlVJTFRJTl9DTVBORVFQUywKICBJWDg2X0JVSUxUSU5fQ01QTkxUUFMsCiAg SVg4Nl9CVUlMVElOX0NNUE5MRVBTLAogIElYODZfQlVJTFRJTl9DTVBOR1RQUywKICBJWDg2 X0JVSUxUSU5fQ01QTkdFUFMsCiAgSVg4Nl9CVUlMVElOX0NNUE9SRFBTLAogIElYODZfQlVJ TFRJTl9DTVBVTk9SRFBTLAogIElYODZfQlVJTFRJTl9DTVBORVBTLAogIElYODZfQlVJTFRJ Tl9DTVBFUVNTLAogIElYODZfQlVJTFRJTl9DTVBMVFNTLAogIElYODZfQlVJTFRJTl9DTVBM RVNTLAogIElYODZfQlVJTFRJTl9DTVBHVFNTLAogIElYODZfQlVJTFRJTl9DTVBHRVNTLAog IElYODZfQlVJTFRJTl9DTVBORVFTUywKICBJWDg2X0JVSUxUSU5fQ01QTkxUU1MsCiAgSVg4 Nl9CVUlMVElOX0NNUE5MRVNTLAogIElYODZfQlVJTFRJTl9DTVBOR1RTUywKICBJWDg2X0JV SUxUSU5fQ01QTkdFU1MsCiAgSVg4Nl9CVUlMVElOX0NNUE9SRFNTLAogIElYODZfQlVJTFRJ Tl9DTVBVTk9SRFNTLAogIElYODZfQlVJTFRJTl9DTVBORVNTLAoKICBJWDg2X0JVSUxUSU5f Q09NSUVRU1MsCiAgSVg4Nl9CVUlMVElOX0NPTUlMVFNTLAogIElYODZfQlVJTFRJTl9DT01J TEVTUywKICBJWDg2X0JVSUxUSU5fQ09NSUdUU1MsCiAgSVg4Nl9CVUlMVElOX0NPTUlHRVNT LAogIElYODZfQlVJTFRJTl9DT01JTkVRU1MsCiAgSVg4Nl9CVUlMVElOX1VDT01JRVFTUywK ICBJWDg2X0JVSUxUSU5fVUNPTUlMVFNTLAogIElYODZfQlVJTFRJTl9VQ09NSUxFU1MsCiAg SVg4Nl9CVUlMVElOX1VDT01JR1RTUywKICBJWDg2X0JVSUxUSU5fVUNPTUlHRVNTLAogIElY ODZfQlVJTFRJTl9VQ09NSU5FUVNTLAoKICBJWDg2X0JVSUxUSU5fQ1ZUUEkyUFMsCiAgSVg4 Nl9CVUlMVElOX0NWVFBTMlBJLAogIElYODZfQlVJTFRJTl9DVlRTSTJTUywKICBJWDg2X0JV SUxUSU5fQ1ZUU1MyU0ksCiAgSVg4Nl9CVUlMVElOX0NWVFRQUzJQSSwKICBJWDg2X0JVSUxU SU5fQ1ZUVFNTMlNJLAoKICBJWDg2X0JVSUxUSU5fTUFYUFMsCiAgSVg4Nl9CVUlMVElOX01B WFNTLAogIElYODZfQlVJTFRJTl9NSU5QUywKICBJWDg2X0JVSUxUSU5fTUlOU1MsCgogIElY ODZfQlVJTFRJTl9MT0FEQVBTLAogIElYODZfQlVJTFRJTl9MT0FEVVBTLAogIElYODZfQlVJ TFRJTl9TVE9SRUFQUywKICBJWDg2X0JVSUxUSU5fU1RPUkVVUFMsCiAgSVg4Nl9CVUlMVElO X0xPQURTUywKICBJWDg2X0JVSUxUSU5fU1RPUkVTUywKICBJWDg2X0JVSUxUSU5fTU9WU1Ms CgogIElYODZfQlVJTFRJTl9NT1ZITFBTLAogIElYODZfQlVJTFRJTl9NT1ZMSFBTLAogIElY ODZfQlVJTFRJTl9MT0FESFBTLAogIElYODZfQlVJTFRJTl9MT0FETFBTLAogIElYODZfQlVJ TFRJTl9TVE9SRUhQUywKICBJWDg2X0JVSUxUSU5fU1RPUkVMUFMsCgogIElYODZfQlVJTFRJ Tl9NQVNLTU9WUSwKICBJWDg2X0JVSUxUSU5fTU9WTVNLUFMsCiAgSVg4Nl9CVUlMVElOX1BN T1ZNU0tCLAoKICBJWDg2X0JVSUxUSU5fTU9WTlRQUywKICBJWDg2X0JVSUxUSU5fTU9WTlRR LAoKICBJWDg2X0JVSUxUSU5fUEFDS1NTV0IsCiAgSVg4Nl9CVUlMVElOX1BBQ0tTU0RXLAog IElYODZfQlVJTFRJTl9QQUNLVVNXQiwKCiAgSVg4Nl9CVUlMVElOX1BBRERCLAogIElYODZf QlVJTFRJTl9QQUREVywKICBJWDg2X0JVSUxUSU5fUEFEREQsCiAgSVg4Nl9CVUlMVElOX1BB RERTQiwKICBJWDg2X0JVSUxUSU5fUEFERFNXLAogIElYODZfQlVJTFRJTl9QQUREVVNCLAog IElYODZfQlVJTFRJTl9QQUREVVNXLAogIElYODZfQlVJTFRJTl9QU1VCQiwKICBJWDg2X0JV SUxUSU5fUFNVQlcsCiAgSVg4Nl9CVUlMVElOX1BTVUJELAogIElYODZfQlVJTFRJTl9QU1VC U0IsCiAgSVg4Nl9CVUlMVElOX1BTVUJTVywKICBJWDg2X0JVSUxUSU5fUFNVQlVTQiwKICBJ WDg2X0JVSUxUSU5fUFNVQlVTVywKCiAgSVg4Nl9CVUlMVElOX1BBTkQsCiAgSVg4Nl9CVUlM VElOX1BBTkROLAogIElYODZfQlVJTFRJTl9QT1IsCiAgSVg4Nl9CVUlMVElOX1BYT1IsCgog IElYODZfQlVJTFRJTl9QQVZHQiwKICBJWDg2X0JVSUxUSU5fUEFWR1csCgogIElYODZfQlVJ TFRJTl9QQ01QRVFCLAogIElYODZfQlVJTFRJTl9QQ01QRVFXLAogIElYODZfQlVJTFRJTl9Q Q01QRVFELAogIElYODZfQlVJTFRJTl9QQ01QR1RCLAogIElYODZfQlVJTFRJTl9QQ01QR1RX LAogIElYODZfQlVJTFRJTl9QQ01QR1RELAoKICBJWDg2X0JVSUxUSU5fUEVYVFJXLAogIElY ODZfQlVJTFRJTl9QSU5TUlcsCgogIElYODZfQlVJTFRJTl9QTUFERFdELAoKICBJWDg2X0JV SUxUSU5fUE1BWFNXLAogIElYODZfQlVJTFRJTl9QTUFYVUIsCiAgSVg4Nl9CVUlMVElOX1BN SU5TVywKICBJWDg2X0JVSUxUSU5fUE1JTlVCLAoKICBJWDg2X0JVSUxUSU5fUE1VTEhVVywK ICBJWDg2X0JVSUxUSU5fUE1VTEhXLAogIElYODZfQlVJTFRJTl9QTVVMTFcsCgogIElYODZf QlVJTFRJTl9QU0FEQlcsCiAgSVg4Nl9CVUlMVElOX1BTSFVGVywKCiAgSVg4Nl9CVUlMVElO X1BTTExXLAogIElYODZfQlVJTFRJTl9QU0xMRCwKICBJWDg2X0JVSUxUSU5fUFNMTFEsCiAg SVg4Nl9CVUlMVElOX1BTUkFXLAogIElYODZfQlVJTFRJTl9QU1JBRCwKICBJWDg2X0JVSUxU SU5fUFNSTFcsCiAgSVg4Nl9CVUlMVElOX1BTUkxELAogIElYODZfQlVJTFRJTl9QU1JMUSwK ICBJWDg2X0JVSUxUSU5fUFNMTFdJLAogIElYODZfQlVJTFRJTl9QU0xMREksCiAgSVg4Nl9C VUlMVElOX1BTTExRSSwKICBJWDg2X0JVSUxUSU5fUFNSQVdJLAogIElYODZfQlVJTFRJTl9Q U1JBREksCiAgSVg4Nl9CVUlMVElOX1BTUkxXSSwKICBJWDg2X0JVSUxUSU5fUFNSTERJLAog IElYODZfQlVJTFRJTl9QU1JMUUksCgogIElYODZfQlVJTFRJTl9QVU5QQ0tIQlcsCiAgSVg4 Nl9CVUlMVElOX1BVTlBDS0hXRCwKICBJWDg2X0JVSUxUSU5fUFVOUENLSERRLAogIElYODZf QlVJTFRJTl9QVU5QQ0tMQlcsCiAgSVg4Nl9CVUlMVElOX1BVTlBDS0xXRCwKICBJWDg2X0JV SUxUSU5fUFVOUENLTERRLAoKICBJWDg2X0JVSUxUSU5fU0hVRlBTLAoKICBJWDg2X0JVSUxU SU5fUkNQUFMsCiAgSVg4Nl9CVUlMVElOX1JDUFNTLAogIElYODZfQlVJTFRJTl9SU1FSVFBT LAogIElYODZfQlVJTFRJTl9SU1FSVFNTLAogIElYODZfQlVJTFRJTl9TUVJUUFMsCiAgSVg4 Nl9CVUlMVElOX1NRUlRTUywKCiAgSVg4Nl9CVUlMVElOX1VOUENLSFBTLAogIElYODZfQlVJ TFRJTl9VTlBDS0xQUywKCiAgSVg4Nl9CVUlMVElOX0FORFBTLAogIElYODZfQlVJTFRJTl9B TkROUFMsCiAgSVg4Nl9CVUlMVElOX09SUFMsCiAgSVg4Nl9CVUlMVElOX1hPUlBTLAoKICBJ WDg2X0JVSUxUSU5fRU1NUywKICBJWDg2X0JVSUxUSU5fTERNWENTUiwKICBJWDg2X0JVSUxU SU5fU1RNWENTUiwKICBJWDg2X0JVSUxUSU5fU0ZFTkNFLAoKCiAgSVg4Nl9CVUlMVElOX0ZF TU1TLAogIElYODZfQlVJTFRJTl9QQVZHVVNCLAogIElYODZfQlVJTFRJTl9QRjJJRCwKICBJ WDg2X0JVSUxUSU5fUEZBQ0MsCiAgSVg4Nl9CVUlMVElOX1BGQURELAogIElYODZfQlVJTFRJ Tl9QRkNNUEVRLAogIElYODZfQlVJTFRJTl9QRkNNUEdFLAogIElYODZfQlVJTFRJTl9QRkNN UEdULAogIElYODZfQlVJTFRJTl9QRk1BWCwKICBJWDg2X0JVSUxUSU5fUEZNSU4sCiAgSVg4 Nl9CVUlMVElOX1BGTVVMLAogIElYODZfQlVJTFRJTl9QRlJDUCwKICBJWDg2X0JVSUxUSU5f UEZSQ1BJVDEsCiAgSVg4Nl9CVUlMVElOX1BGUkNQSVQyLAogIElYODZfQlVJTFRJTl9QRlJT UUlUMSwKICBJWDg2X0JVSUxUSU5fUEZSU1FSVCwKICBJWDg2X0JVSUxUSU5fUEZTVUIsCiAg SVg4Nl9CVUlMVElOX1BGU1VCUiwKICBJWDg2X0JVSUxUSU5fUEkyRkQsCiAgSVg4Nl9CVUlM VElOX1BNVUxIUlcsCgoKICBJWDg2X0JVSUxUSU5fUEYySVcsCiAgSVg4Nl9CVUlMVElOX1BG TkFDQywKICBJWDg2X0JVSUxUSU5fUEZQTkFDQywKICBJWDg2X0JVSUxUSU5fUEkyRlcsCiAg SVg4Nl9CVUlMVElOX1BTV0FQRFNJLAogIElYODZfQlVJTFRJTl9QU1dBUERTRiwKCiAgSVg4 Nl9CVUlMVElOX1NTRV9aRVJPLAogIElYODZfQlVJTFRJTl9NTVhfWkVSTywKCiAgSVg4Nl9C VUlMVElOX01BWAp9OwojIDIyNTQgImkzODYuaCIKI2RlZmluZSBFTkNPREVfU0VDVElPTl9J TkZPKERFQ0wpIGRvIHsgaWYgKGZsYWdfcGljKSB7IHJ0eCBydGwgPSAoVFJFRV9DT0RFX0NM QVNTIChUUkVFX0NPREUgKERFQ0wpKSAhPSAnZCcgPyBUUkVFX0NTVF9SVEwgKERFQ0wpIDog REVDTF9SVEwgKERFQ0wpKTsgaWYgKEdFVF9DT0RFIChydGwpID09IE1FTSkgeyBpZiAoVEFS R0VUX0RFQlVHX0FERFIgJiYgVFJFRV9DT0RFX0NMQVNTIChUUkVFX0NPREUgKERFQ0wpKSA9 PSAnZCcpIHsgZnByaW50ZiAoc3RkZXJyLCAiRW5jb2RlICVzLCBwdWJsaWMgPSAlZFxuIiwg SURFTlRJRklFUl9QT0lOVEVSIChERUNMX05BTUUgKERFQ0wpKSwgVFJFRV9QVUJMSUMgKERF Q0wpKTsgfSBTWU1CT0xfUkVGX0ZMQUcgKFhFWFAgKHJ0bCwgMCkpID0gKFRSRUVfQ09ERV9D TEFTUyAoVFJFRV9DT0RFIChERUNMKSkgIT0gJ2QnIHx8ICEgVFJFRV9QVUJMSUMgKERFQ0wp KTsgfSB9IH0gd2hpbGUgKDApCiMgMjI4NSAiaTM4Ni5oIgojZGVmaW5lIEZJTkFMSVpFX1BJ QyAoY3VycmVudF9mdW5jdGlvbl91c2VzX3BpY19vZmZzZXRfdGFibGUgfD0gY3VycmVudF9m dW5jdGlvbl9wcm9maWxlKQojIDIyOTQgImkzODYuaCIKI2RlZmluZSBSRUdQQVJNX01BWCAo VEFSR0VUXzY0QklUID8gNiA6IDMpCgojZGVmaW5lIFNTRV9SRUdQQVJNX01BWCAoVEFSR0VU XzY0QklUID8gOCA6IDApCgoKCgojZGVmaW5lIENBU0VfVkVDVE9SX01PREUgKCFUQVJHRVRf NjRCSVQgfHwgZmxhZ19waWMgPyBTSW1vZGUgOiBESW1vZGUpCiMgMjMxMCAiaTM4Ni5oIgoj ZGVmaW5lIERFRkFVTFRfU0lHTkVEX0NIQVIgMQoKCiNkZWZpbmUgUFJFRkVUQ0hfQkxPQ0sg aXg4Nl9jb3N0LT5wcmVmZXRjaF9ibG9jawoKCiNkZWZpbmUgU0lNVUxUQU5FT1VTX1BSRUZF VENIRVMgaXg4Nl9jb3N0LT5zaW11bHRhbmVvdXNfcHJlZmV0Y2hlcwoKCgojZGVmaW5lIE1P VkVfTUFYIDE2CgoKCgojZGVmaW5lIE1PVkVfTUFYX1BJRUNFUyAoVEFSR0VUXzY0QklUID8g OCA6IDQpCiMgMjMzNCAiaTM4Ni5oIgojZGVmaW5lIE1PVkVfUkFUSU8gKG9wdGltaXplX3Np emUgPyAzIDogaXg4Nl9jb3N0LT5tb3ZlX3JhdGlvKQojIDIzNDUgImkzODYuaCIKI2RlZmlu ZSBUUlVMWV9OT09QX1RSVU5DQVRJT04oT1VUUFJFQyxJTlBSRUMpIDEKCgoKCiNkZWZpbmUg U1RPUkVfRkxBR19WQUxVRSAxCgoKCgojZGVmaW5lIFBST01PVEVfUFJPVE9UWVBFUyAoIVRB UkdFVF82NEJJVCkKIyAyMzY1ICJpMzg2LmgiCiNkZWZpbmUgUFJPTU9URV9NT0RFKE1PREUs VU5TSUdORURQLFRZUEUpIGRvIHsgaWYgKCgoTU9ERSkgPT0gSEltb2RlICYmIFRBUkdFVF9Q Uk9NT1RFX0hJX1JFR1MpIHx8ICgoTU9ERSkgPT0gUUltb2RlICYmIFRBUkdFVF9QUk9NT1RF X1FJX1JFR1MpKSAoTU9ERSkgPSBTSW1vZGU7IH0gd2hpbGUgKDApCiMgMjM3NSAiaTM4Ni5o IgojZGVmaW5lIFBtb2RlIChUQVJHRVRfNjRCSVQgPyBESW1vZGUgOiBTSW1vZGUpCgoKCgoj ZGVmaW5lIEZVTkNUSU9OX01PREUgUUltb2RlCiMgMjM5NSAiaTM4Ni5oIgojZGVmaW5lIENP TlNUX0NPU1RTKFJUWCxDT0RFLE9VVEVSX0NPREUpIGNhc2UgQ09OU1RfSU5UOiBjYXNlIENP TlNUOiBjYXNlIExBQkVMX1JFRjogY2FzZSBTWU1CT0xfUkVGOiBpZiAoVEFSR0VUXzY0QklU ICYmICF4ODZfNjRfc2lnbl9leHRlbmRlZF92YWx1ZSAoUlRYKSkgcmV0dXJuIDM7IGlmIChU QVJHRVRfNjRCSVQgJiYgIXg4Nl82NF96ZXJvX2V4dGVuZGVkX3ZhbHVlIChSVFgpKSByZXR1 cm4gMjsgcmV0dXJuIGZsYWdfcGljICYmIFNZTUJPTElDX0NPTlNUIChSVFgpID8gMSA6IDA7 IGNhc2UgQ09OU1RfRE9VQkxFOiB7IGludCBjb2RlOyBpZiAoR0VUX01PREUgKFJUWCkgPT0g Vk9JRG1vZGUpIHJldHVybiAwOyBjb2RlID0gc3RhbmRhcmRfODAzODdfY29uc3RhbnRfcCAo UlRYKTsgcmV0dXJuIGNvZGUgPT0gMSA/IDEgOiBjb2RlID09IDIgPyAyIDogMzsgfQojIDI0 MTkgImkzODYuaCIKI2RlZmluZSBUT1BMRVZFTF9DT1NUU19OX0lOU05TKE4pIGRvIHsgdG90 YWwgPSBDT1NUU19OX0lOU05TIChOKTsgZ290byBlZ3Jlc3NfcnR4X2Nvc3RzOyB9IHdoaWxl ICgwKQojIDI0MzIgImkzODYuaCIKI2RlZmluZSBSVFhfQ09TVFMoWCxDT0RFLE9VVEVSX0NP REUpIGNhc2UgWkVST19FWFRFTkQ6IGlmIChUQVJHRVRfNjRCSVQgJiYgR0VUX01PREUgKFgp ID09IERJbW9kZSAmJiBHRVRfTU9ERSAoWEVYUCAoWCwgMCkpID09IFNJbW9kZSkgeyB0b3Rh bCA9IDE7IGdvdG8gZWdyZXNzX3J0eF9jb3N0czsgfSBlbHNlIFRPUExFVkVMX0NPU1RTX05f SU5TTlMgKFRBUkdFVF9aRVJPX0VYVEVORF9XSVRIX0FORCA/IGl4ODZfY29zdC0+YWRkIDog aXg4Nl9jb3N0LT5tb3Z6eCk7IGJyZWFrOyBjYXNlIFNJR05fRVhURU5EOiBUT1BMRVZFTF9D T1NUU19OX0lOU05TIChpeDg2X2Nvc3QtPm1vdnN4KTsgYnJlYWs7IGNhc2UgQVNISUZUOiBp ZiAoR0VUX0NPREUgKFhFWFAgKFgsIDEpKSA9PSBDT05TVF9JTlQgJiYgKEdFVF9NT0RFIChY RVhQIChYLCAwKSkgIT0gREltb2RlIHx8IFRBUkdFVF82NEJJVCkpIHsgSE9TVF9XSURFX0lO VCB2YWx1ZSA9IElOVFZBTCAoWEVYUCAoWCwgMSkpOyBpZiAodmFsdWUgPT0gMSkgVE9QTEVW RUxfQ09TVFNfTl9JTlNOUyAoaXg4Nl9jb3N0LT5hZGQpOyBpZiAoKHZhbHVlID09IDIgfHwg dmFsdWUgPT0gMykgJiYgIVRBUkdFVF9ERUNPTVBPU0VfTEVBICYmIGl4ODZfY29zdC0+bGVh IDw9IGl4ODZfY29zdC0+c2hpZnRfY29uc3QpIFRPUExFVkVMX0NPU1RTX05fSU5TTlMgKGl4 ODZfY29zdC0+bGVhKTsgfSBjYXNlIFJPVEFURTogY2FzZSBBU0hJRlRSVDogY2FzZSBMU0hJ RlRSVDogY2FzZSBST1RBVEVSVDogaWYgKCFUQVJHRVRfNjRCSVQgJiYgR0VUX01PREUgKFhF WFAgKFgsIDApKSA9PSBESW1vZGUpIHsgaWYgKEdFVF9DT0RFIChYRVhQIChYLCAxKSkgPT0g Q09OU1RfSU5UKSB7IGlmIChJTlRWQUwgKFhFWFAgKFgsIDEpKSA+IDMyKSBUT1BMRVZFTF9D T1NUU19OX0lOU05TKGl4ODZfY29zdC0+c2hpZnRfY29uc3QgKyAyKTsgZWxzZSBUT1BMRVZF TF9DT1NUU19OX0lOU05TKGl4ODZfY29zdC0+c2hpZnRfY29uc3QgKiAyKTsgfSBlbHNlIHsg aWYgKEdFVF9DT0RFIChYRVhQIChYLCAxKSkgPT0gQU5EKSBUT1BMRVZFTF9DT1NUU19OX0lO U05TKGl4ODZfY29zdC0+c2hpZnRfdmFyICogMik7IGVsc2UgVE9QTEVWRUxfQ09TVFNfTl9J TlNOUyhpeDg2X2Nvc3QtPnNoaWZ0X3ZhciAqIDYgKyAyKTsgfSB9IGVsc2UgeyBpZiAoR0VU X0NPREUgKFhFWFAgKFgsIDEpKSA9PSBDT05TVF9JTlQpIFRPUExFVkVMX0NPU1RTX05fSU5T TlMgKGl4ODZfY29zdC0+c2hpZnRfY29uc3QpOyBlbHNlIFRPUExFVkVMX0NPU1RTX05fSU5T TlMgKGl4ODZfY29zdC0+c2hpZnRfdmFyKTsgfSBicmVhazsgY2FzZSBNVUxUOiBpZiAoR0VU X0NPREUgKFhFWFAgKFgsIDEpKSA9PSBDT05TVF9JTlQpIHsgdW5zaWduZWQgSE9TVF9XSURF X0lOVCB2YWx1ZSA9IElOVFZBTCAoWEVYUCAoWCwgMSkpOyBpbnQgbmJpdHMgPSAwOyB3aGls ZSAodmFsdWUgIT0gMCkgeyBuYml0cysrOyB2YWx1ZSA+Pj0gMTsgfSBUT1BMRVZFTF9DT1NU U19OX0lOU05TIChpeDg2X2Nvc3QtPm11bHRfaW5pdCArIG5iaXRzICogaXg4Nl9jb3N0LT5t dWx0X2JpdCk7IH0gZWxzZSBUT1BMRVZFTF9DT1NUU19OX0lOU05TIChpeDg2X2Nvc3QtPm11 bHRfaW5pdCArIDcgKiBpeDg2X2Nvc3QtPm11bHRfYml0KTsgY2FzZSBESVY6IGNhc2UgVURJ VjogY2FzZSBNT0Q6IGNhc2UgVU1PRDogVE9QTEVWRUxfQ09TVFNfTl9JTlNOUyAoaXg4Nl9j b3N0LT5kaXZpZGUpOyBjYXNlIFBMVVM6IGlmICghVEFSR0VUX0RFQ09NUE9TRV9MRUEgJiYg SU5URUdSQUxfTU9ERV9QIChHRVRfTU9ERSAoWCkpICYmIEdFVF9NT0RFX0JJVFNJWkUgKEdF VF9NT0RFIChYKSkgPD0gR0VUX01PREVfQklUU0laRSAoUG1vZGUpKSB7IGlmIChHRVRfQ09E RSAoWEVYUCAoWCwgMCkpID09IFBMVVMgJiYgR0VUX0NPREUgKFhFWFAgKFhFWFAgKFgsIDAp LCAwKSkgPT0gTVVMVCAmJiBHRVRfQ09ERSAoWEVYUCAoWEVYUCAoWEVYUCAoWCwgMCksIDAp LCAxKSkgPT0gQ09OU1RfSU5UICYmIENPTlNUQU5UX1AgKFhFWFAgKFgsIDEpKSkgeyBIT1NU X1dJREVfSU5UIHZhbCA9IElOVFZBTCAoWEVYUCAoWEVYUCAoWEVYUCAoWCwgMCksIDApLCAx KSk7IGlmICh2YWwgPT0gMiB8fCB2YWwgPT0gNCB8fCB2YWwgPT0gOCkgeyByZXR1cm4gKENP U1RTX05fSU5TTlMgKGl4ODZfY29zdC0+bGVhKSArIHJ0eF9jb3N0IChYRVhQIChYRVhQIChY LCAwKSwgMSksIChPVVRFUl9DT0RFKSkgKyBydHhfY29zdCAoWEVYUCAoWEVYUCAoWEVYUCAo WCwgMCksIDApLCAwKSwgKE9VVEVSX0NPREUpKSArIHJ0eF9jb3N0IChYRVhQIChYLCAxKSwg KE9VVEVSX0NPREUpKSk7IH0gfSBlbHNlIGlmIChHRVRfQ09ERSAoWEVYUCAoWCwgMCkpID09 IE1VTFQgJiYgR0VUX0NPREUgKFhFWFAgKFhFWFAgKFgsIDApLCAxKSkgPT0gQ09OU1RfSU5U KSB7IEhPU1RfV0lERV9JTlQgdmFsID0gSU5UVkFMIChYRVhQIChYRVhQIChYLCAwKSwgMSkp OyBpZiAodmFsID09IDIgfHwgdmFsID09IDQgfHwgdmFsID09IDgpIHsgcmV0dXJuIChDT1NU U19OX0lOU05TIChpeDg2X2Nvc3QtPmxlYSkgKyBydHhfY29zdCAoWEVYUCAoWEVYUCAoWCwg MCksIDApLCAoT1VURVJfQ09ERSkpICsgcnR4X2Nvc3QgKFhFWFAgKFgsIDEpLCAoT1VURVJf Q09ERSkpKTsgfSB9IGVsc2UgaWYgKEdFVF9DT0RFIChYRVhQIChYLCAwKSkgPT0gUExVUykg eyByZXR1cm4gKENPU1RTX05fSU5TTlMgKGl4ODZfY29zdC0+bGVhKSArIHJ0eF9jb3N0IChY RVhQIChYRVhQIChYLCAwKSwgMCksIChPVVRFUl9DT0RFKSkgKyBydHhfY29zdCAoWEVYUCAo WEVYUCAoWCwgMCksIDEpLCAoT1VURVJfQ09ERSkpICsgcnR4X2Nvc3QgKFhFWFAgKFgsIDEp LCAoT1VURVJfQ09ERSkpKTsgfSB9IGNhc2UgQU5EOiBjYXNlIElPUjogY2FzZSBYT1I6IGNh c2UgTUlOVVM6IGlmICghVEFSR0VUXzY0QklUICYmIEdFVF9NT0RFIChYKSA9PSBESW1vZGUp IHJldHVybiAoQ09TVFNfTl9JTlNOUyAoaXg4Nl9jb3N0LT5hZGQpICogMiArIChydHhfY29z dCAoWEVYUCAoWCwgMCksIChPVVRFUl9DT0RFKSkgPDwgKEdFVF9NT0RFIChYRVhQIChYLCAw KSkgIT0gREltb2RlKSkgKyAocnR4X2Nvc3QgKFhFWFAgKFgsIDEpLCAoT1VURVJfQ09ERSkp IDw8IChHRVRfTU9ERSAoWEVYUCAoWCwgMSkpICE9IERJbW9kZSkpKTsgY2FzZSBORUc6IGNh c2UgTk9UOiBpZiAoIVRBUkdFVF82NEJJVCAmJiBHRVRfTU9ERSAoWCkgPT0gREltb2RlKSBU T1BMRVZFTF9DT1NUU19OX0lOU05TIChpeDg2X2Nvc3QtPmFkZCAqIDIpOyBUT1BMRVZFTF9D T1NUU19OX0lOU05TIChpeDg2X2Nvc3QtPmFkZCk7IGVncmVzc19ydHhfY29zdHM6IGJyZWFr OwojIDI2MjggImkzODYuaCIKI2RlZmluZSBBRERSRVNTX0NPU1QoUlRYKSBpeDg2X2FkZHJl c3NfY29zdCAoUlRYKQojIDI2NDAgImkzODYuaCIKI2RlZmluZSBSRUdJU1RFUl9NT1ZFX0NP U1QoTU9ERSxDTEFTUzEsQ0xBU1MyKSBpeDg2X3JlZ2lzdGVyX21vdmVfY29zdCAoKE1PREUp LCAoQ0xBU1MxKSwgKENMQVNTMikpCiMgMjY1MSAiaTM4Ni5oIgojZGVmaW5lIE1FTU9SWV9N T1ZFX0NPU1QoTU9ERSxDTEFTUyxJTikgaXg4Nl9tZW1vcnlfbW92ZV9jb3N0ICgoTU9ERSks IChDTEFTUyksIChJTikpCgoKCgoKI2RlZmluZSBCUkFOQ0hfQ09TVCBpeDg2X2JyYW5jaF9j b3N0CiMgMjY3MyAiaTM4Ni5oIgojZGVmaW5lIFNMT1dfQllURV9BQ0NFU1MgMAoKCiNkZWZp bmUgU0xPV19TSE9SVF9BQ0NFU1MgMAojIDI3MDQgImkzODYuaCIKI2RlZmluZSBOT19GVU5D VElPTl9DU0UgCgoKCgoKI2RlZmluZSBOT19SRUNVUlNJVkVfRlVOQ1RJT05fQ1NFIAojIDI3 MzIgImkzODYuaCIKI2RlZmluZSBFWFRSQV9DQ19NT0RFUyBDQyAoQ0NHQ21vZGUsICJDQ0dD IikgQ0MgKENDR09DbW9kZSwgIkNDR09DIikgQ0MgKENDTk9tb2RlLCAiQ0NOTyIpIENDIChD Q1ptb2RlLCAiQ0NaIikgQ0MgKENDRlBtb2RlLCAiQ0NGUCIpIENDIChDQ0ZQVW1vZGUsICJD Q0ZQVSIpCiMgMjc0OSAiaTM4Ni5oIgojZGVmaW5lIFNFTEVDVF9DQ19NT0RFKE9QLFgsWSkg aXg4Nl9jY19tb2RlICgoT1ApLCAoWCksIChZKSkKCgoKCiNkZWZpbmUgUkVWRVJTSUJMRV9D Q19NT0RFKE1PREUpIDEKCgoKI2RlZmluZSBSRVZFUlNFX0NPTkRJVElPTihDT0RFLE1PREUp ICgoTU9ERSkgIT0gQ0NGUG1vZGUgJiYgKE1PREUpICE9IENDRlBVbW9kZSA/IHJldmVyc2Vf Y29uZGl0aW9uIChDT0RFKSA6IHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCAo Q09ERSkpCiMgMjc3NSAiaTM4Ni5oIgojdW5kZWYgSElfUkVHSVNURVJfTkFNRVMKI2RlZmlu ZSBISV9SRUdJU1RFUl9OQU1FUyB7ImF4IiwiZHgiLCJjeCIsImJ4Iiwic2kiLCJkaSIsImJw Iiwic3AiLCAic3QiLCJzdCgxKSIsInN0KDIpIiwic3QoMykiLCJzdCg0KSIsInN0KDUpIiwi c3QoNikiLCJzdCg3KSIsIiIsICJmbGFncyIsImZwc3IiLCAiZGlyZmxhZyIsICJmcmFtZSIs ICJ4bW0wIiwieG1tMSIsInhtbTIiLCJ4bW0zIiwieG1tNCIsInhtbTUiLCJ4bW02IiwieG1t NyIsICJtbTAiLCAibW0xIiwgIm1tMiIsICJtbTMiLCAibW00IiwgIm1tNSIsICJtbTYiLCAi bW03IiAsICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwgInIxMiIsICJyMTMiLCAicjE0Iiwg InIxNSIsICJ4bW04IiwgInhtbTkiLCAieG1tMTAiLCAieG1tMTEiLCAieG1tMTIiLCAieG1t MTMiLCAieG1tMTQiLCAieG1tMTUifQojIDI3ODUgImkzODYuaCIKI2RlZmluZSBSRUdJU1RF Ul9OQU1FUyBISV9SRUdJU1RFUl9OQU1FUwoKCgojZGVmaW5lIEFERElUSU9OQUxfUkVHSVNU RVJfTkFNRVMgeyB7ICJlYXgiLCAwIH0sIHsgImVkeCIsIDEgfSwgeyAiZWN4IiwgMiB9LCB7 ICJlYngiLCAzIH0sIHsgImVzaSIsIDQgfSwgeyAiZWRpIiwgNSB9LCB7ICJlYnAiLCA2IH0s IHsgImVzcCIsIDcgfSwgeyAicmF4IiwgMCB9LCB7ICJyZHgiLCAxIH0sIHsgInJjeCIsIDIg fSwgeyAicmJ4IiwgMyB9LCB7ICJyc2kiLCA0IH0sIHsgInJkaSIsIDUgfSwgeyAicmJwIiwg NiB9LCB7ICJyc3AiLCA3IH0sIHsgImFsIiwgMCB9LCB7ICJkbCIsIDEgfSwgeyAiY2wiLCAy IH0sIHsgImJsIiwgMyB9LCB7ICJhaCIsIDAgfSwgeyAiZGgiLCAxIH0sIHsgImNoIiwgMiB9 LCB7ICJiaCIsIDMgfSwgeyAibW0wIiwgOH0sIHsgIm1tMSIsIDl9LCB7ICJtbTIiLCAxMH0s IHsgIm1tMyIsIDExfSwgeyAibW00IiwgMTJ9LCB7ICJtbTUiLCAxM30sIHsgIm1tNiIsIDE0 fSwgeyAibW03IiwgMTV9IH0KIyAyODA0ICJpMzg2LmgiCiNkZWZpbmUgUUlfUkVHSVNURVJf TkFNRVMgeyJhbCIsICJkbCIsICJjbCIsICJibCIsICJzaWwiLCAiZGlsIiwgImJwbCIsICJz cGwiLH0KCgoKCgojZGVmaW5lIFFJX0hJR0hfUkVHSVNURVJfTkFNRVMgeyJhaCIsICJkaCIs ICJjaCIsICJiaCIsIH0KCgoKCiNkZWZpbmUgREJYX1JFR0lTVEVSX05VTUJFUihOKSAoVEFS R0VUXzY0QklUID8gZGJ4NjRfcmVnaXN0ZXJfbWFwWyhOKV0gOiBkYnhfcmVnaXN0ZXJfbWFw WyhOKV0pCgoKZXh0ZXJuIGludCBjb25zdCBkYnhfcmVnaXN0ZXJfbWFwWzUzXTsKZXh0ZXJu IGludCBjb25zdCBkYng2NF9yZWdpc3Rlcl9tYXBbNTNdOwpleHRlcm4gaW50IGNvbnN0IHN2 cjRfZGJ4X3JlZ2lzdGVyX21hcFs1M107CgoKI2RlZmluZSBJTkNPTUlOR19SRVRVUk5fQURE Ul9SVFggZ2VuX3J0eF9NRU0gKFZPSURtb2RlLCBnZW5fcnR4X1JFRyAoVk9JRG1vZGUsIFNU QUNLX1BPSU5URVJfUkVHTlVNKSkKCgoKI2RlZmluZSBSRVRVUk5fQUREUl9SVFgoQ09VTlQs RlJBTUUpICgoQ09VTlQpID09IDAgPyBnZW5fcnR4X01FTSAoUG1vZGUsIHBsdXNfY29uc3Rh bnQgKGFyZ19wb2ludGVyX3J0eCwgLVVOSVRTX1BFUl9XT1JEKSkgOiBnZW5fcnR4X01FTSAo UG1vZGUsIHBsdXNfY29uc3RhbnQgKEZSQU1FLCBVTklUU19QRVJfV09SRCkpKQoKCgoKCiNk ZWZpbmUgRFdBUkZfRlJBTUVfUkVUVVJOX0NPTFVNTiAoVEFSR0VUXzY0QklUID8gMTYgOiA4 KQoKCiNkZWZpbmUgSU5DT01JTkdfRlJBTUVfU1BfT0ZGU0VUIFVOSVRTX1BFUl9XT1JECgoK I2RlZmluZSBFSF9SRVRVUk5fREFUQV9SRUdOTyhOKSAoKE4pIDwgMiA/IChOKSA6IElOVkFM SURfUkVHTlVNKQojZGVmaW5lIEVIX1JFVFVSTl9TVEFDS0FESl9SVFggZ2VuX3J0eF9SRUcg KFBtb2RlLCAyKQojIDI4NTEgImkzODYuaCIKI2RlZmluZSBBU01fUFJFRkVSUkVEX0VIX0RB VEFfRk9STUFUKENPREUsR0xPQkFMKSAoZmxhZ19waWMgPyAoKEdMT0JBTCkgPyBEV19FSF9Q RV9pbmRpcmVjdCA6IDApIHwgRFdfRUhfUEVfcGNyZWwgfCBEV19FSF9QRV9zZGF0YTQgOiBE V19FSF9QRV9hYnNwdHIpCgoKCgoKCgojZGVmaW5lIEFTTV9PVVRQVVRfTEFCRUwoRklMRSxO QU1FKSAoYXNzZW1ibGVfbmFtZSAoKEZJTEUpLCAoTkFNRSkpLCBmcHV0cyAoIjpcbiIsIChG SUxFKSkpCgoKCgoKCiNkZWZpbmUgQVNNX0ZPUk1BVF9QUklWQVRFX05BTUUoT1VUUFVULE5B TUUsTEFCRUxOTykgKCAoT1VUUFVUKSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuICgoTkFN RSkpICsgMTApLCBzcHJpbnRmICgoT1VUUFVUKSwgIiVzLiVkIiwgKE5BTUUpLCAoTEFCRUxO TykpKQoKCgoKCgojZGVmaW5lIEFTTV9PVVRQVVRfUkVHX1BVU0goRklMRSxSRUdOTykgYXNt X2ZwcmludGYgKChGSUxFKSwgIlx0cHVzaHtsfVx0JSVlJXNcbiIsIHJlZ19uYW1lc1soUkVH Tk8pXSkKCgoKCgojZGVmaW5lIEFTTV9PVVRQVVRfUkVHX1BPUChGSUxFLFJFR05PKSBhc21f ZnByaW50ZiAoKEZJTEUpLCAiXHRwb3B7bH1cdCUlZSVzXG4iLCByZWdfbmFtZXNbKFJFR05P KV0pCgoKCgojZGVmaW5lIEFTTV9PVVRQVVRfQUREUl9WRUNfRUxUKEZJTEUsVkFMVUUpIGl4 ODZfb3V0cHV0X2FkZHJfdmVjX2VsdCAoKEZJTEUpLCAoVkFMVUUpKQoKCgoKI2RlZmluZSBB U01fT1VUUFVUX0FERFJfRElGRl9FTFQoRklMRSxCT0RZLFZBTFVFLFJFTCkgaXg4Nl9vdXRw dXRfYWRkcl9kaWZmX2VsdCAoKEZJTEUpLCAoVkFMVUUpLCAoUkVMKSkKCgoKCgojZGVmaW5l IEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTiAoIVRBUkdFVF82NEJJVCAmJiBmbGFnX3Bp YyAmJiAhSEFWRV9BU19HT1RPRkZfSU5fREFUQSkKCgoKCgojZGVmaW5lIEFTTV9PVVRQVVRf RFdBUkZfQUREUl9DT05TVChGSUxFLFgpIGkzODZfZHdhcmZfb3V0cHV0X2FkZHJfY29uc3Qg KChGSUxFKSwgKFgpKQoKCgoKI2RlZmluZSBBU01fU0lNUExJRllfRFdBUkZfQUREUihYKSBp Mzg2X3NpbXBsaWZ5X2R3YXJmX2FkZHIgKFgpCgoKCgoKI2RlZmluZSBDUlRfQ0FMTF9TVEFU SUNfRlVOQ1RJT04oU0VDVElPTl9PUCxGVU5DKSBhc20gKFNFQ1RJT05fT1AgIlxuXHQiICJj YWxsICIgVVNFUl9MQUJFTF9QUkVGSVggI0ZVTkMgIlxuIiBURVhUX1NFQ1RJT05fQVNNX09Q KTsKIyAyOTIyICJpMzg2LmgiCiNkZWZpbmUgUFJJTlRfT1BFUkFORF9QVU5DVF9WQUxJRF9Q KENPREUpICgoQ09ERSkgPT0gJyonIHx8IChDT0RFKSA9PSAnKycpCiMgMjkzMyAiaTM4Ni5o IgojZGVmaW5lIFBSSU5UX1JFRyhYLENPREUsRklMRSkgcHJpbnRfcmVnICgoWCksIChDT0RF KSwgKEZJTEUpKQoKCiNkZWZpbmUgUFJJTlRfT1BFUkFORChGSUxFLFgsQ09ERSkgcHJpbnRf b3BlcmFuZCAoKEZJTEUpLCAoWCksIChDT0RFKSkKCgojZGVmaW5lIFBSSU5UX09QRVJBTkRf QUREUkVTUyhGSUxFLEFERFIpIHByaW50X29wZXJhbmRfYWRkcmVzcyAoKEZJTEUpLCAoQURE UikpCgoKCgoKCgojZGVmaW5lIERFQlVHX1BSSU5UX1JFRyhYLENPREUsRklMRSkgZG8geyBz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhpX25hbWVbXSA9IEhJX1JFR0lTVEVSX05BTUVT OyBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHFpX25hbWVbXSA9IFFJX1JFR0lTVEVSX05B TUVTOyBmcHJpbnRmICgoRklMRSksICIlZCAiLCBSRUdOTyAoWCkpOyBpZiAoUkVHTk8gKFgp ID09IEZMQUdTX1JFRykgeyBmcHV0cyAoImZsYWdzIiwgKEZJTEUpKTsgYnJlYWs7IH0gaWYg KFJFR05PIChYKSA9PSBESVJGTEFHX1JFRykgeyBmcHV0cyAoImRpcmZsYWciLCAoRklMRSkp OyBicmVhazsgfSBpZiAoUkVHTk8gKFgpID09IEZQU1JfUkVHKSB7IGZwdXRzICgiZnBzciIs IChGSUxFKSk7IGJyZWFrOyB9IGlmIChSRUdOTyAoWCkgPT0gQVJHX1BPSU5URVJfUkVHTlVN KSB7IGZwdXRzICgiYXJncCIsIChGSUxFKSk7IGJyZWFrOyB9IGlmIChSRUdOTyAoWCkgPT0g RlJBTUVfUE9JTlRFUl9SRUdOVU0pIHsgZnB1dHMgKCJmcmFtZSIsIChGSUxFKSk7IGJyZWFr OyB9IGlmIChTVEFDS19UT1BfUCAoWCkpIHsgZnB1dHMgKCJzdCgwKSIsIChGSUxFKSk7IGJy ZWFrOyB9IGlmIChGUF9SRUdfUCAoWCkpIHsgZnB1dHMgKGhpX25hbWVbUkVHTk8oWCldLCAo RklMRSkpOyBicmVhazsgfSBpZiAoUkVYX0lOVF9SRUdfUCAoWCkpIHsgc3dpdGNoIChHRVRf TU9ERV9TSVpFIChHRVRfTU9ERSAoWCkpKSB7IGRlZmF1bHQ6IGNhc2UgODogZnByaW50ZiAo KEZJTEUpLCAiciVpIiwgUkVHTk8gKFgpIC0gRklSU1RfUkVYX0lOVF9SRUcgKyA4KTsgYnJl YWs7IGNhc2UgNDogZnByaW50ZiAoKEZJTEUpLCAiciVpZCIsIFJFR05PIChYKSAtIEZJUlNU X1JFWF9JTlRfUkVHICsgOCk7IGJyZWFrOyBjYXNlIDI6IGZwcmludGYgKChGSUxFKSwgInIl aXciLCBSRUdOTyAoWCkgLSBGSVJTVF9SRVhfSU5UX1JFRyArIDgpOyBicmVhazsgY2FzZSAx OiBmcHJpbnRmICgoRklMRSksICJyJWliIiwgUkVHTk8gKFgpIC0gRklSU1RfUkVYX0lOVF9S RUcgKyA4KTsgYnJlYWs7IH0gYnJlYWs7IH0gc3dpdGNoIChHRVRfTU9ERV9TSVpFIChHRVRf TU9ERSAoWCkpKSB7IGNhc2UgODogZnB1dHMgKCJyIiwgKEZJTEUpKTsgZnB1dHMgKGhpX25h bWVbUkVHTk8gKFgpXSwgKEZJTEUpKTsgYnJlYWs7IGRlZmF1bHQ6IGZwdXRzICgiZSIsIChG SUxFKSk7IGNhc2UgMjogZnB1dHMgKGhpX25hbWVbUkVHTk8gKFgpXSwgKEZJTEUpKTsgYnJl YWs7IGNhc2UgMTogZnB1dHMgKHFpX25hbWVbUkVHTk8gKFgpXSwgKEZJTEUpKTsgYnJlYWs7 IH0gfSB3aGlsZSAoMCkKIyAzMDA5ICJpMzg2LmgiCiNkZWZpbmUgQVNNX09QRVJBTkRfTEVU VEVSICcjJwojZGVmaW5lIFJFVCByZXR1cm4gIiIKI2RlZmluZSBBVF9TUChNT0RFKSAoZ2Vu X3J0eF9NRU0gKChNT0RFKSwgc3RhY2tfcG9pbnRlcl9ydHgpKQoKCgojZGVmaW5lIFBSRURJ Q0FURV9DT0RFUyB7Ing4Nl82NF9pbW1lZGlhdGVfb3BlcmFuZCIsIHtDT05TVF9JTlQsIFNV QlJFRywgUkVHLCBTWU1CT0xfUkVGLCBMQUJFTF9SRUYsIENPTlNUfX0sIHsieDg2XzY0X25v bm1lbW9yeV9vcGVyYW5kIiwge0NPTlNUX0lOVCwgU1VCUkVHLCBSRUcsIFNZTUJPTF9SRUYs IExBQkVMX1JFRiwgQ09OU1R9fSwgeyJ4ODZfNjRfbW92YWJzX29wZXJhbmQiLCB7Q09OU1Rf SU5ULCBTVUJSRUcsIFJFRywgU1lNQk9MX1JFRiwgTEFCRUxfUkVGLCBDT05TVH19LCB7Ing4 Nl82NF9zemV4dF9ub25tZW1vcnlfb3BlcmFuZCIsIHtDT05TVF9JTlQsIFNVQlJFRywgUkVH LCBTWU1CT0xfUkVGLCBMQUJFTF9SRUYsIENPTlNUfX0sIHsieDg2XzY0X2dlbmVyYWxfb3Bl cmFuZCIsIHtDT05TVF9JTlQsIFNVQlJFRywgUkVHLCBNRU0sIFNZTUJPTF9SRUYsIExBQkVM X1JFRiwgQ09OU1R9fSwgeyJ4ODZfNjRfc3pleHRfZ2VuZXJhbF9vcGVyYW5kIiwge0NPTlNU X0lOVCwgU1VCUkVHLCBSRUcsIE1FTSwgU1lNQk9MX1JFRiwgTEFCRUxfUkVGLCBDT05TVH19 LCB7Ing4Nl82NF96ZXh0X2ltbWVkaWF0ZV9vcGVyYW5kIiwge0NPTlNUX0lOVCwgQ09OU1Rf RE9VQkxFLCBDT05TVCwgU1lNQk9MX1JFRiwgTEFCRUxfUkVGfX0sIHsic2hpZnRkaV9vcGVy YW5kIiwge1NVQlJFRywgUkVHLCBNRU19fSwgeyJjb25zdF9pbnRfMV9vcGVyYW5kIiwge0NP TlNUX0lOVH19LCB7ImNvbnN0X2ludF8xXzMxX29wZXJhbmQiLCB7Q09OU1RfSU5UfX0sIHsi c3ltYm9saWNfb3BlcmFuZCIsIHtTWU1CT0xfUkVGLCBMQUJFTF9SRUYsIENPTlNUfX0sIHsi YWxpZ25lZF9vcGVyYW5kIiwge0NPTlNUX0lOVCwgQ09OU1RfRE9VQkxFLCBDT05TVCwgU1lN Qk9MX1JFRiwgTEFCRUxfUkVGLCBTVUJSRUcsIFJFRywgTUVNfX0sIHsicGljX3N5bWJvbGlj X29wZXJhbmQiLCB7Q09OU1R9fSwgeyJjYWxsX2luc25fb3BlcmFuZCIsIHtSRUcsIFNVQlJF RywgTUVNLCBTWU1CT0xfUkVGfX0sIHsiY29uc3RhbnRfY2FsbF9hZGRyZXNzX29wZXJhbmQi LCB7U1lNQk9MX1JFRiwgQ09OU1R9fSwgeyJjb25zdDBfb3BlcmFuZCIsIHtDT05TVF9JTlQs IENPTlNUX0RPVUJMRX19LCB7ImNvbnN0MV9vcGVyYW5kIiwge0NPTlNUX0lOVH19LCB7ImNv bnN0MjQ4X29wZXJhbmQiLCB7Q09OU1RfSU5UfX0sIHsiaW5jZGVjX29wZXJhbmQiLCB7Q09O U1RfSU5UfX0sIHsibW14X3JlZ19vcGVyYW5kIiwge1JFR319LCB7InJlZ19ub19zcF9vcGVy YW5kIiwge1NVQlJFRywgUkVHfX0sIHsiZ2VuZXJhbF9ub19lbGltX29wZXJhbmQiLCB7Q09O U1RfSU5ULCBDT05TVF9ET1VCTEUsIENPTlNULCBTWU1CT0xfUkVGLCBMQUJFTF9SRUYsIFNV QlJFRywgUkVHLCBNRU19fSwgeyJub25tZW1vcnlfbm9fZWxpbV9vcGVyYW5kIiwge0NPTlNU X0lOVCwgUkVHLCBTVUJSRUd9fSwgeyJxX3JlZ3Nfb3BlcmFuZCIsIHtTVUJSRUcsIFJFR319 LCB7Im5vbl9xX3JlZ3Nfb3BlcmFuZCIsIHtTVUJSRUcsIFJFR319LCB7ImZjbW92X2NvbXBh cmlzb25fb3BlcmF0b3IiLCB7RVEsIE5FLCBMVFUsIEdUVSwgTEVVLCBHRVUsIFVOT1JERVJF RCwgT1JERVJFRCwgTFQsIFVOTFQsIEdULCBVTkdULCBMRSwgVU5MRSwgR0UsIFVOR0UsIExU R1QsIFVORVF9fSwgeyJzc2VfY29tcGFyaXNvbl9vcGVyYXRvciIsIHtFUSwgTFQsIExFLCBV Tk9SREVSRUQsIE5FLCBVTkdFLCBVTkdULCBPUkRFUkVELCBVTkVRLCBVTkxULCBVTkxFLCBM VEdULCBHRSwgR1QgfX0sIHsiaXg4Nl9jb21wYXJpc29uX29wZXJhdG9yIiwge0VRLCBORSwg TEUsIExULCBHRSwgR1QsIExFVSwgTFRVLCBHRVUsIEdUVSwgVU5PUkRFUkVELCBPUkRFUkVE LCBVTkxFLCBVTkxULCBVTkdFLCBVTkdULCBMVEdULCBVTkVRIH19LCB7ImNtcF9mcF9leHBh bmRlcl9vcGVyYW5kIiwge0NPTlNUX0RPVUJMRSwgU1VCUkVHLCBSRUcsIE1FTX19LCB7ImV4 dF9yZWdpc3Rlcl9vcGVyYW5kIiwge1NVQlJFRywgUkVHfX0sIHsiYmluYXJ5X2ZwX29wZXJh dG9yIiwge1BMVVMsIE1JTlVTLCBNVUxULCBESVZ9fSwgeyJtdWx0X29wZXJhdG9yIiwge01V TFR9fSwgeyJkaXZfb3BlcmF0b3IiLCB7RElWfX0sIHsiYXJpdGhfb3JfbG9naWNhbF9vcGVy YXRvciIsIHtQTFVTLCBNVUxULCBBTkQsIElPUiwgWE9SLCBTTUlOLCBTTUFYLCBVTUlOLCBV TUFYLCBDT01QQVJFLCBNSU5VUywgRElWLCBNT0QsIFVESVYsIFVNT0QsIEFTSElGVCwgUk9U QVRFLCBBU0hJRlRSVCwgTFNISUZUUlQsIFJPVEFURVJUfX0sIHsicHJvbW90YWJsZV9iaW5h cnlfb3BlcmF0b3IiLCB7UExVUywgTVVMVCwgQU5ELCBJT1IsIFhPUiwgQVNISUZUfX0sIHsi bWVtb3J5X2Rpc3BsYWNlbWVudF9vcGVyYW5kIiwge01FTX19LCB7ImNtcHNpX29wZXJhbmQi LCB7Q09OU1RfSU5ULCBDT05TVF9ET1VCTEUsIENPTlNULCBTWU1CT0xfUkVGLCBMQUJFTF9S RUYsIFNVQlJFRywgUkVHLCBNRU0sIEFORH19LCB7ImxvbmdfbWVtb3J5X29wZXJhbmQiLCB7 TUVNfX0sCiMgMzA3NyAiaTM4Ni5oIgojZGVmaW5lIFNQRUNJQUxfTU9ERV9QUkVESUNBVEVT ICJleHRfcmVnaXN0ZXJfb3BlcmFuZCIsCiMgMzA5MiAiaTM4Ni5oIgplbnVtIGNtb2RlbCB7 CiAgQ01fMzIsCiAgQ01fU01BTEwsCiAgQ01fS0VSTkVMLAogIENNX01FRElVTSwKICBDTV9M QVJHRSwKICBDTV9TTUFMTF9QSUMKfTsKCgojZGVmaW5lIFJFRF9aT05FX1NJWkUgMTI4Cgoj ZGVmaW5lIFJFRF9aT05FX1JFU0VSVkUgOApleHRlcm4gY29uc3QgY2hhciAqaXg4Nl9kZWJ1 Z19hcmdfc3RyaW5nLCAqaXg4Nl9kZWJ1Z19hZGRyX3N0cmluZzsKCmVudW0gYXNtX2RpYWxl Y3QgewogIEFTTV9BVFQsCiAgQVNNX0lOVEVMCn07CmV4dGVybiBjb25zdCBjaGFyICppeDg2 X2FzbV9zdHJpbmc7CmV4dGVybiBlbnVtIGFzbV9kaWFsZWN0IGl4ODZfYXNtX2RpYWxlY3Q7 CgpleHRlcm4gY29uc3QgY2hhciAqaXg4Nl9jbW9kZWxfc3RyaW5nOwpleHRlcm4gZW51bSBj bW9kZWwgaXg4Nl9jbW9kZWw7CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKml4ODZfY3B1X3N0cmlu ZzsKZXh0ZXJuIGNvbnN0IGNoYXIgKml4ODZfYXJjaF9zdHJpbmc7CmV4dGVybiBjb25zdCBj aGFyICppeDg2X2ZwbWF0aF9zdHJpbmc7CmV4dGVybiBjb25zdCBjaGFyICppeDg2X3JlZ3Bh cm1fc3RyaW5nOwpleHRlcm4gY29uc3QgY2hhciAqaXg4Nl9hbGlnbl9sb29wc19zdHJpbmc7 CmV4dGVybiBjb25zdCBjaGFyICppeDg2X2FsaWduX2p1bXBzX3N0cmluZzsKZXh0ZXJuIGNv bnN0IGNoYXIgKml4ODZfYWxpZ25fZnVuY3Nfc3RyaW5nOwpleHRlcm4gY29uc3QgY2hhciAq aXg4Nl9wcmVmZXJyZWRfc3RhY2tfYm91bmRhcnlfc3RyaW5nOwpleHRlcm4gY29uc3QgY2hh ciAqaXg4Nl9icmFuY2hfY29zdF9zdHJpbmc7CmV4dGVybiBpbnQgaXg4Nl9yZWdwYXJtOwpl eHRlcm4gaW50IGl4ODZfcHJlZmVycmVkX3N0YWNrX2JvdW5kYXJ5OwpleHRlcm4gaW50IGl4 ODZfYnJhbmNoX2Nvc3Q7CmV4dGVybiBlbnVtIHJlZ19jbGFzcyBjb25zdCByZWdjbGFzc19t YXBbNTNdOwpleHRlcm4gcnR4IGl4ODZfY29tcGFyZV9vcDA7CmV4dGVybiBydHggaXg4Nl9j b21wYXJlX29wMTsKIyAzMTQ5ICJpMzg2LmgiCmVudW0gZnBfY3dfbW9kZSB7RlBfQ1dfU1RP UkVELCBGUF9DV19VTklOSVRJQUxJWkVELCBGUF9DV19BTll9OwoKCgoKI2RlZmluZSBPUFRJ TUlaRV9NT0RFX1NXSVRDSElORyhFTlRJVFkpIDEKIyAzMTY0ICJpMzg2LmgiCiNkZWZpbmUg TlVNX01PREVTX0ZPUl9NT0RFX1NXSVRDSElORyB7IEZQX0NXX0FOWSB9CgoKCgoKCgojZGVm aW5lIE1PREVfTkVFREVEKEVOVElUWSxJKSAoR0VUX0NPREUgKEkpID09IENBTExfSU5TTiB8 fCAoR0VUX0NPREUgKEkpID09IElOU04gJiYgKGFzbV9ub3BlcmFuZHMgKFBBVFRFUk4gKEkp KSA+PSAwIHx8IEdFVF9DT0RFIChQQVRURVJOIChJKSkgPT0gQVNNX0lOUFVUKSkgPyBGUF9D V19VTklOSVRJQUxJWkVEIDogcmVjb2dfbWVtb2l6ZWQgKEkpIDwgMCB8fCBnZXRfYXR0cl90 eXBlIChJKSAhPSBUWVBFX0ZJU1RQID8gRlBfQ1dfQU5ZIDogRlBfQ1dfU1RPUkVEKQojIDMx ODQgImkzODYuaCIKI2RlZmluZSBNT0RFX1BSSU9SSVRZX1RPX01PREUoRU5USVRZLE4pIChO KQoKCgoKCiNkZWZpbmUgRU1JVF9NT0RFX1NFVChFTlRJVFksTU9ERSxIQVJEX1JFR1NfTElW RSkgKChNT0RFKSA9PSBGUF9DV19TVE9SRUQgPyBlbWl0X2kzODdfY3dfaW5pdGlhbGl6YXRp b24gKGFzc2lnbl8zODZfc3RhY2tfbG9jYWwgKEhJbW9kZSwgMSksIGFzc2lnbl8zODZfc3Rh Y2tfbG9jYWwgKEhJbW9kZSwgMikpLCAwIDogMCkKIyAzMjAyICJpMzg2LmgiCiNkZWZpbmUg SEFSRF9SRUdOT19SRU5BTUVfT0soU1JDLFRBUkdFVCkgKChTUkMpIDwgRklSU1RfU1RBQ0tf UkVHIHx8IChTUkMpID4gTEFTVF9TVEFDS19SRUcpCiMgMTYgImNvbmZpZy5oIiAyCiMgMSAi YXR0LmgiIDEKIyAyMiAiYXR0LmgiCiMgMSAidW5peC5oIiAxCiMgMjUgInVuaXguaCIKI2Rl ZmluZSBERUZBVUxUX0FTU0VNQkxFUl9ESUFMRUNUIDAKCgoKCgojZGVmaW5lIFNISUZUX0RP VUJMRV9PTUlUU19DT1VOVCAxCgoKCgoKI2RlZmluZSBBU01fQ09NTUVOVF9TVEFSVCAiLyIK CgoKCiNkZWZpbmUgQVNNX0FQUF9PTiAiL0FQUFxuIgoKCgoKI2RlZmluZSBBU01fQVBQX09G RiAiL05PX0FQUFxuIgoKCgojZGVmaW5lIFRFWFRfU0VDVElPTl9BU01fT1AgIlx0LnRleHQi CgoKCiNkZWZpbmUgREFUQV9TRUNUSU9OX0FTTV9PUCAiXHQuZGF0YSIKCgoKI2RlZmluZSBC U1NfU0VDVElPTl9BU01fT1AgIlx0LmJzcyIKCgoKCiNkZWZpbmUgQVNNX0dMT0JBTElaRV9M QUJFTChGSUxFLE5BTUUpIChmcHV0cyAoIi5nbG9ibCAiLCBGSUxFKSwgYXNzZW1ibGVfbmFt ZSAoRklMRSwgTkFNRSksIGZwdXRzICgiXG4iLCBGSUxFKSkKCgoKCgojZGVmaW5lIFRBUkdF VF9TVUJUQVJHRVRfREVGQVVMVCAoTUFTS184MDM4NyB8IE1BU0tfSUVFRV9GUCB8IE1BU0tf RkxPQVRfUkVUVVJOUykKCgoKI2RlZmluZSBWQUxVRV9SRUdOTyhNT0RFKSAoR0VUX01PREVf Q0xBU1MgKE1PREUpID09IE1PREVfRkxPQVQgJiYgVEFSR0VUX0ZMT0FUX1JFVFVSTlNfSU5f ODAzODcgPyBGSVJTVF9GTE9BVF9SRUcgOiAoTU9ERSkgPT0gVEltb2RlIHx8IFZFQ1RPUl9N T0RFX1AgKE1PREUpID8gRklSU1RfU1NFX1JFRyA6IDApCgoKCgoKCgojZGVmaW5lIEFTTV9P VVRQVVRfTUlfVEhVTksoRklMRSxUSFVOS19GTkRFQ0wsREVMVEEsRlVOQ1RJT04pIHg4Nl9v dXRwdXRfbWlfdGh1bmsgKEZJTEUsIERFTFRBLCBGVU5DVElPTik7CiMgMjMgImF0dC5oIiAy CgojZGVmaW5lIFRBUkdFVF9WRVJTSU9OIGZwcmludGYgKHN0ZGVyciwgIiAoODAzODYsIEFU VCBzeW50YXgpIik7CgoKCgojZGVmaW5lIExQUkVGSVggIi5MIgoKCgojZGVmaW5lIEFTTV9T SE9SVCAiXHQudmFsdWVcdCIKI2RlZmluZSBBU01fTE9ORyAiXHQubG9uZ1x0IgojZGVmaW5l IEFTTV9RVUFEICJcdC5xdWFkXHQiCgoKCiNkZWZpbmUgQVNNX09VVFBVVF9BU0NJSShGSUxF LFBUUixTSVpFKSBkbyB7IHNpemVfdCBpID0gMCwgbGltaXQgPSAoU0laRSk7IHdoaWxlIChp IDwgbGltaXQpIHsgaWYgKGklMTAgPT0gMCkgeyBpZiAoaSE9MCkgZnByaW50ZiAoKEZJTEUp LCAiXG4iKTsgZnB1dHMgKCJcdC5ieXRlXHQiLCAoRklMRSkpOyB9IGVsc2UgZnByaW50ZiAo KEZJTEUpLCAiLCIpOyBmcHJpbnRmICgoRklMRSksICIweCV4IiwgKChQVFIpW2krK10gJiAw Mzc3KSkgO30gZnByaW50ZiAoKEZJTEUpLCAiXG4iKTsgfSB3aGlsZSAoMCkKIyA1MiAiYXR0 LmgiCiN1bmRlZiBBU01fRklMRV9TVEFSVAojZGVmaW5lIEFTTV9GSUxFX1NUQVJUKEZJTEUp IGRvIHsgb3V0cHV0X2ZpbGVfZGlyZWN0aXZlIChGSUxFLCBtYWluX2lucHV0X2ZpbGVuYW1l KTsgaWYgKGl4ODZfYXNtX2RpYWxlY3QgPT0gQVNNX0lOVEVMKSBmcHV0cyAoIlx0LmludGVs X3N5bnRheFxuIiwgRklMRSk7IH0gd2hpbGUgKDApCgoKCgoKCgojdW5kZWYgQVNNX0ZJTEVf U1RBUlRfMQojZGVmaW5lIEFTTV9GSUxFX1NUQVJUXzEoRklMRSkgZnByaW50ZiAoRklMRSwg Ilx0Lm9wdGltXG4iKQoKCgoKCiNkZWZpbmUgQVNNX09VVFBVVF9BTElHTihGSUxFLExPRykg aWYgKChMT0cpIT0wKSBmcHJpbnRmICgoRklMRSksICJcdC5hbGlnbiAlZFxuIiwgMTw8KExP RykpCgoKCgoKI2RlZmluZSBBU01fT1VUUFVUX1NLSVAoRklMRSxTSVpFKSBmcHJpbnRmICgo RklMRSksICJcdC5zZXQgLiwuKyV1XG4iLCAoU0laRSkpCgoKCgojZGVmaW5lIEFTTV9OT19T S0lQX0lOX1RFWFQgMQoKCgoKI3VuZGVmIExPQ0FMX0xBQkVMX1BSRUZJWAojZGVmaW5lIExP Q0FMX0xBQkVMX1BSRUZJWCAiLiIKCgoKCgoKI3VuZGVmIEFTTV9HRU5FUkFURV9JTlRFUk5B TF9MQUJFTAojZGVmaW5lIEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTChCVUYsUFJFRklY LE5VTUJFUikgc3ByaW50ZiAoKEJVRiksICIlcyVzJWxkIiwgTE9DQUxfTEFCRUxfUFJFRklY LCAoUFJFRklYKSwgKGxvbmcpKE5VTUJFUikpCgoKCgoKI3VuZGVmIEFTTV9PVVRQVVRfSU5U RVJOQUxfTEFCRUwKI2RlZmluZSBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVMKEZJTEUsUFJF RklYLE5VTSkgZnByaW50ZiAoRklMRSwgIiVzJXMlZDpcbiIsIExPQ0FMX0xBQkVMX1BSRUZJ WCwgUFJFRklYLCBOVU0pCgoKCgojdW5kZWYgVVNFUl9MQUJFTF9QUkVGSVgKI2RlZmluZSBV U0VSX0xBQkVMX1BSRUZJWCAiIgojIDE3ICJjb25maWcuaCIgMgojIDEgImRieGVsZi5oIiAx CiMgMjYgImRieGVsZi5oIgojZGVmaW5lIEdDQ19EQlhfRUxGX0ggCgoKCiN1bmRlZiBEQlhf REVCVUdHSU5HX0lORk8KI2RlZmluZSBEQlhfREVCVUdHSU5HX0lORk8gCgoKCgoKCiN1bmRl ZiBEQlhfQkxPQ0tTX0ZVTkNUSU9OX1JFTEFUSVZFCiNkZWZpbmUgREJYX0JMT0NLU19GVU5D VElPTl9SRUxBVElWRSAxCgoKCiN1bmRlZiBEQlhfRlVOQ1RJT05fRklSU1QKI2RlZmluZSBE QlhfRlVOQ1RJT05fRklSU1QgCgoKCiN1bmRlZiBEQlhfVVNFX0JJTkNMCiNkZWZpbmUgREJY X1VTRV9CSU5DTCAKCgoKCiNkZWZpbmUgREJYX0NPTlRJTl9MRU5HVEggMAoKCgoKCiN1bmRl ZiBBU01fT1VUUFVUX1NPVVJDRV9MSU5FCiNkZWZpbmUgQVNNX09VVFBVVF9TT1VSQ0VfTElO RShGSUxFLExJTkUpIGRvIHsgc3RhdGljIGludCBzeW1fbGluZW5vID0gMTsgY2hhciB0ZW1w WzI1Nl07IEFTTV9HRU5FUkFURV9JTlRFUk5BTF9MQUJFTCAodGVtcCwgIkxNIiwgc3ltX2xp bmVubyk7IGZwcmludGYgKEZJTEUsICJcdC5zdGFibiA2OCwwLCVkLCIsIExJTkUpOyBhc3Nl bWJsZV9uYW1lIChGSUxFLCB0ZW1wKTsgcHV0YyAoJy0nLCBGSUxFKTsgYXNzZW1ibGVfbmFt ZSAoRklMRSwgWFNUUiAoWEVYUCAoREVDTF9SVEwgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCks IDApLCAwKSk7IHB1dGMgKCdcbicsIEZJTEUpOyBBU01fT1VUUFVUX0lOVEVSTkFMX0xBQkVM IChGSUxFLCAiTE0iLCBzeW1fbGluZW5vKTsgc3ltX2xpbmVubyArPSAxOyB9IHdoaWxlICgw KQojIDgyICJkYnhlbGYuaCIKI3VuZGVmIERCWF9PVVRQVVRfTUFJTl9TT1VSQ0VfRklMRV9F TkQKI2RlZmluZSBEQlhfT1VUUFVUX01BSU5fU09VUkNFX0ZJTEVfRU5EKEZJTEUsRklMRU5B TUUpIGFzbV9mcHJpbnRmIChGSUxFLCAiXHQudGV4dFxuXHQuc3RhYnMgXCJcIiwlZCwwLDAs JUxMZXRleHRcbiVMTGV0ZXh0OlxuIiwgTl9TTykKIyAxOCAiY29uZmlnLmgiIDIKIyAxICJl bGZvcy5oIiAxCiMgMjcgImVsZm9zLmgiCiNkZWZpbmUgVVNJTkdfRUxGT1NfSCAKCgoKCgoK I3VuZGVmIFVTRVJfTEFCRUxfUFJFRklYCiNkZWZpbmUgVVNFUl9MQUJFTF9QUkVGSVggIiIK CgoKCgoKI2RlZmluZSBNQVhfT0ZJTEVfQUxJR05NRU5UICgzMjc2OCAqIDgpCgoKCgojZGVm aW5lIE5PX0RPTExBUl9JTl9MQUJFTCAKCgoKI2RlZmluZSBQQ0NfQklURklFTERfVFlQRV9N QVRURVJTIDEKCgoKI2RlZmluZSBUQVJHRVRfTUVNX0ZVTkNUSU9OUyAKCgoKI2RlZmluZSBI QU5ETEVfU1lTVl9QUkFHTUEgCgoKCgojZGVmaW5lIERXQVJGX0RFQlVHR0lOR19JTkZPIDEK CgoKCgojZGVmaW5lIERXQVJGMl9ERUJVR0dJTkdfSU5GTyAxCgoKCgoKCgojZGVmaW5lIFBS RUZFUlJFRF9ERUJVR0dJTkdfVFlQRSBEV0FSRjJfREVCVUcKCgoKI2RlZmluZSBPQkpFQ1Rf Rk9STUFUX0VMRiAKCgoKCiNkZWZpbmUgQVNNX09VVFBVVF9JREVOVChGSUxFLE5BTUUpIGZw cmludGYgKEZJTEUsICIlc1wiJXNcIlxuIiwgSURFTlRfQVNNX09QLCBOQU1FKTsKCgojZGVm aW5lIElERU5UX0FTTV9PUCAiXHQuaWRlbnRcdCIKCiN1bmRlZiBTRVRfQVNNX09QCiNkZWZp bmUgU0VUX0FTTV9PUCAiXHQuc2V0XHQiCiMgMTAyICJlbGZvcy5oIgojdW5kZWYgQVNNX0ZJ TEVfU1RBUlQKI2RlZmluZSBBU01fRklMRV9TVEFSVChGSUxFKSBvdXRwdXRfZmlsZV9kaXJl Y3RpdmUgKChGSUxFKSwgbWFpbl9pbnB1dF9maWxlbmFtZSkKCgoKCgojZGVmaW5lIFNLSVBf QVNNX09QICJcdC56ZXJvXHQiCgojdW5kZWYgQVNNX09VVFBVVF9TS0lQCiNkZWZpbmUgQVNN X09VVFBVVF9TS0lQKEZJTEUsU0laRSkgZnByaW50ZiAoRklMRSwgIiVzJXVcbiIsIFNLSVBf QVNNX09QLCAoU0laRSkpCiMgMTIxICJlbGZvcy5oIgojdW5kZWYgQVNNX09VVFBVVF9JTlRF Uk5BTF9MQUJFTAojZGVmaW5lIEFTTV9PVVRQVVRfSU5URVJOQUxfTEFCRUwoRklMRSxQUkVG SVgsTlVNKSBkbyB7IGZwcmludGYgKEZJTEUsICIuJXMldTpcbiIsIFBSRUZJWCwgKHVuc2ln bmVkKSAoTlVNKSk7IH0gd2hpbGUgKDApCiMgMTM3ICJlbGZvcy5oIgojdW5kZWYgQVNNX0dF TkVSQVRFX0lOVEVSTkFMX0xBQkVMCiNkZWZpbmUgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xB QkVMKExBQkVMLFBSRUZJWCxOVU0pIGRvIHsgc3ByaW50ZiAoTEFCRUwsICIqLiVzJXUiLCBQ UkVGSVgsICh1bnNpZ25lZCkgKE5VTSkpOyB9IHdoaWxlICgwKQojIDE1MyAiZWxmb3MuaCIK I3VuZGVmIEFMSUdOX0FTTV9PUAojZGVmaW5lIEFMSUdOX0FTTV9PUCAiXHQuYWxpZ25cdCIK CgojZGVmaW5lIEFTTV9PVVRQVVRfQkVGT1JFX0NBU0VfTEFCRUwoRklMRSxQUkVGSVgsTlVN LFRBQkxFKSBBU01fT1VUUFVUX0FMSUdOICgoRklMRSksIDIpOwoKCgojdW5kZWYgQVNNX09V VFBVVF9DQVNFX0xBQkVMCiNkZWZpbmUgQVNNX09VVFBVVF9DQVNFX0xBQkVMKEZJTEUsUFJF RklYLE5VTSxKVU1QVEFCTEUpIGRvIHsgQVNNX09VVFBVVF9CRUZPUkVfQ0FTRV9MQUJFTCAo RklMRSwgUFJFRklYLCBOVU0sIEpVTVBUQUJMRSkgQVNNX09VVFBVVF9JTlRFUk5BTF9MQUJF TCAoRklMRSwgUFJFRklYLCBOVU0pOyB9IHdoaWxlICgwKQojIDE3NCAiZWxmb3MuaCIKI2Rl ZmluZSBBU01fT1VUUFVUX0VYVEVSTkFMX0xJQkNBTEwoRklMRSxGVU4pIEFTTV9HTE9CQUxJ WkVfTEFCRUwgKEZJTEUsIFhTVFIgKEZVTiwgMCkpCgoKCgoKCgojZGVmaW5lIENPTU1PTl9B U01fT1AgIlx0LmNvbW1cdCIKCiN1bmRlZiBBU01fT1VUUFVUX0FMSUdORURfQ09NTU9OCiNk ZWZpbmUgQVNNX09VVFBVVF9BTElHTkVEX0NPTU1PTihGSUxFLE5BTUUsU0laRSxBTElHTikg ZG8geyBmcHJpbnRmICgoRklMRSksICIlcyIsIENPTU1PTl9BU01fT1ApOyBhc3NlbWJsZV9u YW1lICgoRklMRSksIChOQU1FKSk7IGZwcmludGYgKChGSUxFKSwgIiwldSwldVxuIiwgKFNJ WkUpLCAoQUxJR04pIC8gQklUU19QRVJfVU5JVCk7IH0gd2hpbGUgKDApCiMgMTk5ICJlbGZv cy5oIgojZGVmaW5lIExPQ0FMX0FTTV9PUCAiXHQubG9jYWxcdCIKCiN1bmRlZiBBU01fT1VU UFVUX0FMSUdORURfTE9DQUwKI2RlZmluZSBBU01fT1VUUFVUX0FMSUdORURfTE9DQUwoRklM RSxOQU1FLFNJWkUsQUxJR04pIGRvIHsgZnByaW50ZiAoKEZJTEUpLCAiJXMiLCBMT0NBTF9B U01fT1ApOyBhc3NlbWJsZV9uYW1lICgoRklMRSksIChOQU1FKSk7IGZwcmludGYgKChGSUxF KSwgIlxuIik7IEFTTV9PVVRQVVRfQUxJR05FRF9DT01NT04gKEZJTEUsIE5BTUUsIFNJWkUs IEFMSUdOKTsgfSB3aGlsZSAoMCkKIyAyMTYgImVsZm9zLmgiCiN1bmRlZiBBU0NJSV9EQVRB X0FTTV9PUAojZGVmaW5lIEFTQ0lJX0RBVEFfQVNNX09QICJcdC5hc2NpaVx0IgojIDIyNyAi ZWxmb3MuaCIKI2RlZmluZSBVU0VfQ09OU1RfU0VDVElPTiAxCgojZGVmaW5lIENPTlNUX1NF Q1RJT05fQVNNX09QICJcdC5zZWN0aW9uXHQucm9kYXRhIgoKCgoKCgoKI2RlZmluZSBJTklU X1NFQ1RJT05fQVNNX09QICJcdC5zZWN0aW9uXHQuaW5pdCIKI2RlZmluZSBGSU5JX1NFQ1RJ T05fQVNNX09QICJcdC5zZWN0aW9uXHQuZmluaSIKCgoKI2RlZmluZSBBU01fU0VDVElPTl9T VEFSVF9PUCAiXHQuc3Vic2VjdGlvblx0LTEiCgoKI2RlZmluZSBBU01fT1VUUFVUX1NFQ1RJ T05fU1RBUlQoRklMRSkgZnByaW50ZiAoKEZJTEUpLCAiJXNcbiIsIEFTTV9TRUNUSU9OX1NU QVJUX09QKQojIDI1NSAiZWxmb3MuaCIKI3VuZGVmIEVYVFJBX1NFQ1RJT05TCiNkZWZpbmUg RVhUUkFfU0VDVElPTlMgaW5fY29uc3QKCgoKCgojdW5kZWYgRVhUUkFfU0VDVElPTl9GVU5D VElPTlMKI2RlZmluZSBFWFRSQV9TRUNUSU9OX0ZVTkNUSU9OUyBDT05TVF9TRUNUSU9OX0ZV TkNUSU9OCgoKI2RlZmluZSBSRUFET05MWV9EQVRBX1NFQ1RJT04oKSBjb25zdF9zZWN0aW9u ICgpCgojZGVmaW5lIENPTlNUX1NFQ1RJT05fRlVOQ1RJT04gdm9pZCBjb25zdF9zZWN0aW9u ICgpIHsgaWYgKCFVU0VfQ09OU1RfU0VDVElPTikgdGV4dF9zZWN0aW9uICgpOyBlbHNlIGlm IChpbl9zZWN0aW9uICE9IGluX2NvbnN0KSB7IGZwcmludGYgKGFzbV9vdXRfZmlsZSwgIiVz XG4iLCBDT05TVF9TRUNUSU9OX0FTTV9PUCk7IGluX3NlY3Rpb24gPSBpbl9jb25zdDsgfSB9 CiMgMjgxICJlbGZvcy5oIgojZGVmaW5lIE1BS0VfREVDTF9PTkVfT05MWShERUNMKSAoREVD TF9XRUFLIChERUNMKSA9IDEpCgojZGVmaW5lIFVOSVFVRV9TRUNUSU9OKERFQ0wsUkVMT0Mp IGRvIHsgaW50IGxlbjsgaW50IHNlYzsgY29uc3QgY2hhciAqbmFtZTsgY2hhciAqc3RyaW5n OyBjb25zdCBjaGFyICpwcmVmaXg7IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBwcmVmaXhl c1s0XVsyXSA9IHsgeyAiLnRleHQuIiwgIi5nbnUubGlua29uY2UudC4iIH0sIHsgIi5yb2Rh dGEuIiwgIi5nbnUubGlua29uY2Uuci4iIH0sIHsgIi5kYXRhLiIsICIuZ251LmxpbmtvbmNl LmQuIiB9LCB7ICIuYnNzLiIsICIuZ251LmxpbmtvbmNlLmIuIiB9IH07IGlmIChUUkVFX0NP REUgKERFQ0wpID09IEZVTkNUSU9OX0RFQ0wpIHNlYyA9IDA7IGVsc2UgaWYgKERFQ0xfSU5J VElBTCAoREVDTCkgPT0gMCB8fCBERUNMX0lOSVRJQUwgKERFQ0wpID09IGVycm9yX21hcmtf bm9kZSkgc2VjID0gMzsgZWxzZSBpZiAoREVDTF9SRUFET05MWV9TRUNUSU9OIChERUNMLCBS RUxPQykpIHNlYyA9IDE7IGVsc2Ugc2VjID0gMjsgbmFtZSA9IElERU5USUZJRVJfUE9JTlRF UiAoREVDTF9BU1NFTUJMRVJfTkFNRSAoREVDTCkpOyBTVFJJUF9OQU1FX0VOQ09ESU5HIChu YW1lLCBuYW1lKTsgcHJlZml4ID0gcHJlZml4ZXNbc2VjXVtERUNMX09ORV9PTkxZKERFQ0wp XTsgbGVuID0gc3RybGVuIChuYW1lKSArIHN0cmxlbiAocHJlZml4KTsgc3RyaW5nID0gYWxs b2NhIChsZW4gKyAxKTsgc3ByaW50ZiAoc3RyaW5nLCAiJXMlcyIsIHByZWZpeCwgbmFtZSk7 IERFQ0xfU0VDVElPTl9OQU1FIChERUNMKSA9IGJ1aWxkX3N0cmluZyAobGVuLCBzdHJpbmcp OyB9IHdoaWxlICgwKQojIDMyMyAiZWxmb3MuaCIKI2RlZmluZSBUQVJHRVRfQVNNX05BTUVE X1NFQ1RJT04gZGVmYXVsdF9lbGZfYXNtX25hbWVkX3NlY3Rpb24KIyAzMzMgImVsZm9zLmgi CiN1bmRlZiBTRUxFQ1RfUlRYX1NFQ1RJT04KI2RlZmluZSBTRUxFQ1RfUlRYX1NFQ1RJT04o TU9ERSxSVFgsQUxJR04pIG1lcmdlYWJsZV9jb25zdGFudF9zZWN0aW9uICgoTU9ERSksIChB TElHTiksIDApCiMgMzU4ICJlbGZvcy5oIgojdW5kZWYgU0VMRUNUX1NFQ1RJT04KI2RlZmlu ZSBTRUxFQ1RfU0VDVElPTihERUNMLFJFTE9DLEFMSUdOKSB7IGlmIChUUkVFX0NPREUgKERF Q0wpID09IFNUUklOR19DU1QpIHsgaWYgKCEgZmxhZ193cml0YWJsZV9zdHJpbmdzKSBtZXJn ZWFibGVfc3RyaW5nX3NlY3Rpb24gKChERUNMKSwgKEFMSUdOKSwgMCk7IGVsc2UgZGF0YV9z ZWN0aW9uICgpOyB9IGVsc2UgaWYgKFRSRUVfQ09ERSAoREVDTCkgPT0gVkFSX0RFQ0wpIHsg aWYgKCFUUkVFX1JFQURPTkxZIChERUNMKSB8fCBUUkVFX1NJREVfRUZGRUNUUyAoREVDTCkg fHwgIURFQ0xfSU5JVElBTCAoREVDTCkgfHwgKERFQ0xfSU5JVElBTCAoREVDTCkgIT0gZXJy b3JfbWFya19ub2RlICYmICFUUkVFX0NPTlNUQU5UIChERUNMX0lOSVRJQUwgKERFQ0wpKSkp IHsgaWYgKGZsYWdfcGljICYmICgoUkVMT0MpICYgMikpIG5hbWVkX3NlY3Rpb24gKE5VTExf VFJFRSwgIi5kYXRhLnJlbCIsIFJFTE9DKTsgZWxzZSBpZiAoZmxhZ19waWMgJiYgKFJFTE9D KSkgbmFtZWRfc2VjdGlvbiAoTlVMTF9UUkVFLCAiLmRhdGEucmVsLmxvY2FsIiwgUkVMT0Mp OyBlbHNlIGRhdGFfc2VjdGlvbiAoKTsgfSBlbHNlIGlmIChmbGFnX3BpYyAmJiAoKFJFTE9D KSAmIDIpKSBuYW1lZF9zZWN0aW9uIChOVUxMX1RSRUUsICIuZGF0YS5yZWwucm8iLCBSRUxP Qyk7IGVsc2UgaWYgKGZsYWdfcGljICYmIChSRUxPQykpIG5hbWVkX3NlY3Rpb24gKE5VTExf VFJFRSwgIi5kYXRhLnJlbC5yby5sb2NhbCIsIFJFTE9DKTsgZWxzZSBpZiAoZmxhZ19tZXJn ZV9jb25zdGFudHMgPCAyKSBjb25zdF9zZWN0aW9uICgpOyBlbHNlIGlmIChUUkVFX0NPREUg KERFQ0xfSU5JVElBTCAoREVDTCkpID09IFNUUklOR19DU1QpIG1lcmdlYWJsZV9zdHJpbmdf c2VjdGlvbiAoREVDTF9JTklUSUFMIChERUNMKSwgKEFMSUdOKSwgMCk7IGVsc2UgbWVyZ2Vh YmxlX2NvbnN0YW50X3NlY3Rpb24gKERFQ0xfTU9ERSAoREVDTCksIChBTElHTiksIDApOyB9 IGVsc2UgaWYgKFRSRUVfQ09ERSAoREVDTCkgPT0gQ09OU1RSVUNUT1IpIHsgaWYgKChmbGFn X3BpYyAmJiBSRUxPQykgfHwgVFJFRV9TSURFX0VGRkVDVFMgKERFQ0wpIHx8ICEgVFJFRV9D T05TVEFOVCAoREVDTCkpIGRhdGFfc2VjdGlvbiAoKTsgZWxzZSBjb25zdF9zZWN0aW9uICgp OyB9IGVsc2UgY29uc3Rfc2VjdGlvbiAoKTsgfQojIDQxNyAiZWxmb3MuaCIKI2RlZmluZSBU WVBFX0FTTV9PUCAiXHQudHlwZVx0IgojZGVmaW5lIFNJWkVfQVNNX09QICJcdC5zaXplXHQi CgoKCiNkZWZpbmUgQVNNX1dFQUtFTl9MQUJFTChGSUxFLE5BTUUpIGRvIHsgZnB1dHMgKCJc dC53ZWFrXHQiLCAoRklMRSkpOyBhc3NlbWJsZV9uYW1lICgoRklMRSksIChOQU1FKSk7IGZw dXRjICgnXG4nLCAoRklMRSkpOyB9IHdoaWxlICgwKQojIDQzNyAiZWxmb3MuaCIKI2RlZmlu ZSBUWVBFX09QRVJBTkRfRk1UICJAJXMiCgoKCgoKCiNkZWZpbmUgQVNNX0RFQ0xBUkVfUkVT VUxUKEZJTEUsUkVTVUxUKSAKIyA0NTcgImVsZm9zLmgiCiNkZWZpbmUgQVNNX0RFQ0xBUkVf RlVOQ1RJT05fTkFNRShGSUxFLE5BTUUsREVDTCkgZG8geyBmcHJpbnRmIChGSUxFLCAiJXMi LCBUWVBFX0FTTV9PUCk7IGFzc2VtYmxlX25hbWUgKEZJTEUsIE5BTUUpOyBwdXRjICgnLCcs IEZJTEUpOyBmcHJpbnRmIChGSUxFLCBUWVBFX09QRVJBTkRfRk1ULCAiZnVuY3Rpb24iKTsg cHV0YyAoJ1xuJywgRklMRSk7IEFTTV9ERUNMQVJFX1JFU1VMVCAoRklMRSwgREVDTF9SRVNV TFQgKERFQ0wpKTsgQVNNX09VVFBVVF9MQUJFTChGSUxFLCBOQU1FKTsgfSB3aGlsZSAoMCkK IyA0NzQgImVsZm9zLmgiCiNkZWZpbmUgQVNNX0RFQ0xBUkVfT0JKRUNUX05BTUUoRklMRSxO QU1FLERFQ0wpIGRvIHsgZnByaW50ZiAoRklMRSwgIiVzIiwgVFlQRV9BU01fT1ApOyBhc3Nl bWJsZV9uYW1lIChGSUxFLCBOQU1FKTsgcHV0YyAoJywnLCBGSUxFKTsgZnByaW50ZiAoRklM RSwgVFlQRV9PUEVSQU5EX0ZNVCwgIm9iamVjdCIpOyBwdXRjICgnXG4nLCBGSUxFKTsgc2l6 ZV9kaXJlY3RpdmVfb3V0cHV0ID0gMDsgaWYgKCFmbGFnX2luaGliaXRfc2l6ZV9kaXJlY3Rp dmUgJiYgKERFQ0wpICYmIERFQ0xfU0laRSAoREVDTCkpIHsgc2l6ZV9kaXJlY3RpdmVfb3V0 cHV0ID0gMTsgZnByaW50ZiAoRklMRSwgIiVzIiwgU0laRV9BU01fT1ApOyBhc3NlbWJsZV9u YW1lIChGSUxFLCBOQU1FKTsgcHV0YyAoJywnLCBGSUxFKTsgZnByaW50ZiAoRklMRSwgSE9T VF9XSURFX0lOVF9QUklOVF9ERUMsIGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZUEUgKERF Q0wpKSk7IGZwdXRjICgnXG4nLCBGSUxFKTsgfSBBU01fT1VUUFVUX0xBQkVMIChGSUxFLCBO QU1FKTsgfSB3aGlsZSAoMCkKIyA1MDcgImVsZm9zLmgiCiNkZWZpbmUgQVNNX0ZJTklTSF9E RUNMQVJFX09CSkVDVChGSUxFLERFQ0wsVE9QX0xFVkVMLEFUX0VORCkgZG8geyBjb25zdCBj aGFyICpuYW1lID0gWFNUUiAoWEVYUCAoREVDTF9SVEwgKERFQ0wpLCAwKSwgMCk7IGlmICgh ZmxhZ19pbmhpYml0X3NpemVfZGlyZWN0aXZlICYmIERFQ0xfU0laRSAoREVDTCkgJiYgISBB VF9FTkQgJiYgVE9QX0xFVkVMICYmIERFQ0xfSU5JVElBTCAoREVDTCkgPT0gZXJyb3JfbWFy a19ub2RlICYmICFzaXplX2RpcmVjdGl2ZV9vdXRwdXQpIHsgc2l6ZV9kaXJlY3RpdmVfb3V0 cHV0ID0gMTsgZnByaW50ZiAoRklMRSwgIiVzIiwgU0laRV9BU01fT1ApOyBhc3NlbWJsZV9u YW1lIChGSUxFLCBuYW1lKTsgcHV0YyAoJywnLCBGSUxFKTsgZnByaW50ZiAoRklMRSwgSE9T VF9XSURFX0lOVF9QUklOVF9ERUMsIGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZUEUgKERF Q0wpKSk7IGZwdXRjICgnXG4nLCBGSUxFKTsgfSB9IHdoaWxlICgwKQojIDUzMSAiZWxmb3Mu aCIKI2RlZmluZSBBU01fREVDTEFSRV9GVU5DVElPTl9TSVpFKEZJTEUsRk5BTUUsREVDTCkg ZG8geyBpZiAoIWZsYWdfaW5oaWJpdF9zaXplX2RpcmVjdGl2ZSkgeyBjaGFyIGxhYmVsWzI1 Nl07IHN0YXRpYyBpbnQgbGFiZWxubzsgbGFiZWxubysrOyBBU01fR0VORVJBVEVfSU5URVJO QUxfTEFCRUwgKGxhYmVsLCAiTGZlIiwgbGFiZWxubyk7IEFTTV9PVVRQVVRfSU5URVJOQUxf TEFCRUwgKEZJTEUsICJMZmUiLCBsYWJlbG5vKTsgZnByaW50ZiAoRklMRSwgIiVzIiwgU0la RV9BU01fT1ApOyBhc3NlbWJsZV9uYW1lIChGSUxFLCAoRk5BTUUpKTsgZnByaW50ZiAoRklM RSwgIiwiKTsgYXNzZW1ibGVfbmFtZSAoRklMRSwgbGFiZWwpOyBmcHJpbnRmIChGSUxFLCAi LSIpOyBhc3NlbWJsZV9uYW1lIChGSUxFLCAoRk5BTUUpKTsgcHV0YyAoJ1xuJywgRklMRSk7 IH0gfSB3aGlsZSAoMCkKIyA1NzAgImVsZm9zLmgiCiNkZWZpbmUgRVNDQVBFUyAiXDFcMVwx XDFcMVwxXDFcMWJ0blwxZnJcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFc MFwwXCJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcXFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFc MVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFc MVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFc MVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFc MVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFcMVwxXDFc MVwxXDFcMVwxXDFcMVwxIgojIDU5MiAiZWxmb3MuaCIKI2RlZmluZSBTVFJJTkdfTElNSVQg KCh1bnNpZ25lZCkgMjU2KQoKI2RlZmluZSBTVFJJTkdfQVNNX09QICJcdC5zdHJpbmdcdCIK IyA2MDMgImVsZm9zLmgiCiNkZWZpbmUgQVNNX09VVFBVVF9MSU1JVEVEX1NUUklORyhGSUxF LFNUUikgZG8geyByZWdpc3RlciBjb25zdCB1bnNpZ25lZCBjaGFyICpfbGltaXRlZF9zdHIg PSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAoU1RSKTsgcmVnaXN0ZXIgdW5zaWduZWQgY2g7 IGZwcmludGYgKChGSUxFKSwgIiVzXCIiLCBTVFJJTkdfQVNNX09QKTsgZm9yICg7IChjaCA9 ICpfbGltaXRlZF9zdHIpOyBfbGltaXRlZF9zdHIrKykgeyByZWdpc3RlciBpbnQgZXNjYXBl OyBzd2l0Y2ggKGVzY2FwZSA9IEVTQ0FQRVNbY2hdKSB7IGNhc2UgMDogcHV0YyAoY2gsIChG SUxFKSk7IGJyZWFrOyBjYXNlIDE6IGZwcmludGYgKChGSUxFKSwgIlxcJTAzbyIsIGNoKTsg YnJlYWs7IGRlZmF1bHQ6IHB1dGMgKCdcXCcsIChGSUxFKSk7IHB1dGMgKGVzY2FwZSwgKEZJ TEUpKTsgYnJlYWs7IH0gfSBmcHJpbnRmICgoRklMRSksICJcIlxuIik7IH0gd2hpbGUgKDAp CiMgNjQyICJlbGZvcy5oIgojdW5kZWYgQVNNX09VVFBVVF9BU0NJSQojZGVmaW5lIEFTTV9P VVRQVVRfQVNDSUkoRklMRSxTVFIsTEVOR1RIKSBkbyB7IHJlZ2lzdGVyIGNvbnN0IHVuc2ln bmVkIGNoYXIgKl9hc2NpaV9ieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIChTVFIp OyByZWdpc3RlciBjb25zdCB1bnNpZ25lZCBjaGFyICpsaW1pdCA9IF9hc2NpaV9ieXRlcyAr IChMRU5HVEgpOyByZWdpc3RlciB1bnNpZ25lZCBieXRlc19pbl9jaHVuayA9IDA7IGZvciAo OyBfYXNjaWlfYnl0ZXMgPCBsaW1pdDsgX2FzY2lpX2J5dGVzKyspIHsgcmVnaXN0ZXIgY29u c3QgdW5zaWduZWQgY2hhciAqcDsgaWYgKGJ5dGVzX2luX2NodW5rID49IDYwKSB7IGZwcmlu dGYgKChGSUxFKSwgIlwiXG4iKTsgYnl0ZXNfaW5fY2h1bmsgPSAwOyB9IGZvciAocCA9IF9h c2NpaV9ieXRlczsgcCA8IGxpbWl0ICYmICpwICE9ICdcMCc7IHArKykgY29udGludWU7IGlm IChwIDwgbGltaXQgJiYgKHAgLSBfYXNjaWlfYnl0ZXMpIDw9IChsb25nKVNUUklOR19MSU1J VCkgeyBpZiAoYnl0ZXNfaW5fY2h1bmsgPiAwKSB7IGZwcmludGYgKChGSUxFKSwgIlwiXG4i KTsgYnl0ZXNfaW5fY2h1bmsgPSAwOyB9IEFTTV9PVVRQVVRfTElNSVRFRF9TVFJJTkcgKChG SUxFKSwgX2FzY2lpX2J5dGVzKTsgX2FzY2lpX2J5dGVzID0gcDsgfSBlbHNlIHsgcmVnaXN0 ZXIgaW50IGVzY2FwZTsgcmVnaXN0ZXIgdW5zaWduZWQgY2g7IGlmIChieXRlc19pbl9jaHVu ayA9PSAwKSBmcHJpbnRmICgoRklMRSksICIlc1wiIiwgQVNDSUlfREFUQV9BU01fT1ApOyBz d2l0Y2ggKGVzY2FwZSA9IEVTQ0FQRVNbY2ggPSAqX2FzY2lpX2J5dGVzXSkgeyBjYXNlIDA6 IHB1dGMgKGNoLCAoRklMRSkpOyBieXRlc19pbl9jaHVuaysrOyBicmVhazsgY2FzZSAxOiBm cHJpbnRmICgoRklMRSksICJcXCUwM28iLCBjaCk7IGJ5dGVzX2luX2NodW5rICs9IDQ7IGJy ZWFrOyBkZWZhdWx0OiBwdXRjICgnXFwnLCAoRklMRSkpOyBwdXRjIChlc2NhcGUsIChGSUxF KSk7IGJ5dGVzX2luX2NodW5rICs9IDI7IGJyZWFrOyB9IH0gfSBpZiAoYnl0ZXNfaW5fY2h1 bmsgPiAwKSBmcHJpbnRmICgoRklMRSksICJcIlxuIik7IH0gd2hpbGUgKDApCiMgMTkgImNv bmZpZy5oIiAyCiMgMSAic3ZyNC5oIiAxCiMgMzkgInN2cjQuaCIKI2RlZmluZSBVU0lOR19T VlI0X0ggCiMgNDggInN2cjQuaCIKI2RlZmluZSBTV0lUQ0hfVEFLRVNfQVJHKENIQVIpIChE RUZBVUxUX1NXSVRDSF9UQUtFU19BUkcgKENIQVIpIHx8IChDSEFSKSA9PSAnaCcgfHwgKENI QVIpID09ICd4JyB8fCAoQ0hBUikgPT0gJ3onKQojIDU3ICJzdnI0LmgiCiNkZWZpbmUgV09S RF9TV0lUQ0hfVEFLRVNfQVJHKFNUUikgKERFRkFVTFRfV09SRF9TV0lUQ0hfVEFLRVNfQVJH IChTVFIpICYmIHN0cmNtcCAoU1RSLCAiVGRhdGEiKSAmJiBzdHJjbXAgKFNUUiwgIlR0ZXh0 IikgJiYgc3RyY21wIChTVFIsICJUYnNzIikpCiMgNjYgInN2cjQuaCIKI3VuZGVmIENQUF9Q UkVERUZJTkVTCiMgODQgInN2cjQuaCIKI3VuZGVmIEFTTV9TUEVDCiNkZWZpbmUgQVNNX1NQ RUMgIiV7djotVn0gJXtReTp9ICV7IVFuOi1ReX0gJXtufSAle1R9ICV7WW0sKn0gJXtZZCwq fSAle1dhLCo6JSp9IgojIDk2ICJzdnI0LmgiCiN1bmRlZiBBU01fRklOQUxfU1BFQwojZGVm aW5lIEFTTV9GSU5BTF9TUEVDICIlfCIKCgoKCgojdW5kZWYgTURfRVhFQ19QUkVGSVgKI2Rl ZmluZSBNRF9FWEVDX1BSRUZJWCAiL3Vzci9jY3MvYmluLyIKCgoKCgoKI3VuZGVmIE1EX1NU QVJURklMRV9QUkVGSVgKI2RlZmluZSBNRF9TVEFSVEZJTEVfUFJFRklYICIvdXNyL2Njcy9s aWIvIgoKCgoKCiN1bmRlZiBMSUJfU1BFQwojZGVmaW5lIExJQl9TUEVDICIleyFzaGFyZWQ6 JXshc3ltYm9saWM6LWxjfX0iCgoKCgoKCgojdW5kZWYgRU5ERklMRV9TUEVDCiNkZWZpbmUg RU5ERklMRV9TUEVDICJjcnRlbmQubyVzICV7cGc6Z2NydG4ubyVzfSV7IXBnOmNydG4ubyVz fSIKIyAxNTMgInN2cjQuaCIKI3VuZGVmIExJTktfU1BFQwojIDE2NCAic3ZyNC5oIgojZGVm aW5lIExJTktfU1BFQyAiJXtoKn0gJXt2Oi1WfSAJCSAgICV7Yn0gCQkgICAle3N0YXRpYzot ZG4gLUJzdGF0aWN9IAkJICAgJXtzaGFyZWQ6LUcgLWR5IC16IHRleHR9IAkJICAgJXtzeW1i b2xpYzotQnN5bWJvbGljIC1HIC1keSAteiB0ZXh0fSAJCSAgICV7RzotR30gCQkgICAle1lQ LCp9IAkJICAgJXshWVAsKjole3A6LVkgUCwvdXNyL2Njcy9saWIvbGlicDovdXNyL2xpYi9s aWJwOi91c3IvY2NzL2xpYjovdXNyL2xpYn0gCQkgICAgJXshcDotWSBQLC91c3IvY2NzL2xp YjovdXNyL2xpYn19IAkJICAgJXtReTp9ICV7IVFuOi1ReX0iCiMgMTg3ICJzdnI0LmgiCiN1 bmRlZiBTVEFSVEZJTEVfU1BFQwojZGVmaW5lIFNUQVJURklMRV9TUEVDICIleyFzaGFyZWQ6 IAkJCSAleyFzeW1ib2xpYzogCQkJICAle3BnOmdjcnQxLm8lc30leyFwZzole3A6bWNydDEu byVzfSV7IXA6Y3J0MS5vJXN9fX19CQkJJXtwZzpnY3J0aS5vJXN9JXshcGc6Y3J0aS5vJXN9 IAkJCSV7YW5zaTp2YWx1ZXMtWGMubyVzfSAJCQkleyFhbnNpOiAJCQkgJXt0cmFkaXRpb25h bDp2YWx1ZXMtWHQubyVzfSAJCQkgJXshdHJhZGl0aW9uYWw6dmFsdWVzLVhhLm8lc319ICAJ CQljcnRiZWdpbi5vJXMiCiMgMjAwICJzdnI0LmgiCiNkZWZpbmUgU0NDU19ESVJFQ1RJVkUg CiMgMjExICJzdnI0LmgiCiN1bmRlZiBEQlhfUkVHSVNURVJfTlVNQkVSCgoKCgojdW5kZWYg U0laRV9UWVBFCiNkZWZpbmUgU0laRV9UWVBFICJ1bnNpZ25lZCBpbnQiCgojdW5kZWYgUFRS RElGRl9UWVBFCiNkZWZpbmUgUFRSRElGRl9UWVBFICJpbnQiCgojdW5kZWYgV0NIQVJfVFlQ RQojZGVmaW5lIFdDSEFSX1RZUEUgImxvbmcgaW50IgoKI3VuZGVmIFdDSEFSX1RZUEVfU0la RQojZGVmaW5lIFdDSEFSX1RZUEVfU0laRSBCSVRTX1BFUl9XT1JECgoKCgoKI2RlZmluZSBU QVJHRVRfSEFTX0ZfU0VUTEtXIAojIDIwICJjb25maWcuaCIgMgojIDEgImxpbnV4LmgiIDEK IyAyNCAibGludXguaCIKI2RlZmluZSBMSU5VWF9ERUZBVUxUX0VMRiAKCgoKI3VuZGVmIEFT TV9GSUxFX1NUQVJUCiNkZWZpbmUgQVNNX0ZJTEVfU1RBUlQoRklMRSkgZG8geyBvdXRwdXRf ZmlsZV9kaXJlY3RpdmUgKEZJTEUsIG1haW5faW5wdXRfZmlsZW5hbWUpOyBpZiAoaXg4Nl9h c21fZGlhbGVjdCA9PSBBU01fSU5URUwpIGZwdXRzICgiXHQuaW50ZWxfc3ludGF4XG4iLCBG SUxFKTsgfSB3aGlsZSAoMCkKCgoKCgoKI3VuZGVmIFRBUkdFVF9WRVJTSU9OCiNkZWZpbmUg VEFSR0VUX1ZFUlNJT04gZnByaW50ZiAoc3RkZXJyLCAiIChpMzg2IExpbnV4L0VMRikiKTsK CgoKI3VuZGVmIERFRkFVTFRfUENDX1NUUlVDVF9SRVRVUk4KI2RlZmluZSBERUZBVUxUX1BD Q19TVFJVQ1RfUkVUVVJOIDEKCiN1bmRlZiBBU01fQ09NTUVOVF9TVEFSVAojZGVmaW5lIEFT TV9DT01NRU5UX1NUQVJUICIjIgoKI3VuZGVmIERCWF9SRUdJU1RFUl9OVU1CRVIKI2RlZmlu ZSBEQlhfUkVHSVNURVJfTlVNQkVSKG4pIChUQVJHRVRfNjRCSVQgPyBkYng2NF9yZWdpc3Rl cl9tYXBbbl0gOiBzdnI0X2RieF9yZWdpc3Rlcl9tYXBbbl0pCgoKCgoKCiNkZWZpbmUgTk9f UFJPRklMRV9DT1VOVEVSUyAKCiN1bmRlZiBGVU5DVElPTl9QUk9GSUxFUgojZGVmaW5lIEZV TkNUSU9OX1BST0ZJTEVSKEZJTEUsTEFCRUxOTykgeyBpZiAoZmxhZ19waWMpIGZwcmludGYg KEZJTEUsICJcdGNhbGxcdCptY291bnRAR09UKCUlZWJ4KVxuIik7IGVsc2UgZnByaW50ZiAo RklMRSwgIlx0Y2FsbFx0bWNvdW50XG4iKTsgfQojIDcyICJsaW51eC5oIgojdW5kZWYgVEFS R0VUX0FMTE9XU19QUk9GSUxJTkdfV0lUSE9VVF9GUkFNRV9QT0lOVEVSCiNkZWZpbmUgVEFS R0VUX0FMTE9XU19QUk9GSUxJTkdfV0lUSE9VVF9GUkFNRV9QT0lOVEVSIGZhbHNlCgojdW5k ZWYgU0laRV9UWVBFCiNkZWZpbmUgU0laRV9UWVBFICJ1bnNpZ25lZCBpbnQiCgojdW5kZWYg UFRSRElGRl9UWVBFCiNkZWZpbmUgUFRSRElGRl9UWVBFICJpbnQiCgojdW5kZWYgV0NIQVJf VFlQRQojZGVmaW5lIFdDSEFSX1RZUEUgImxvbmcgaW50IgoKI3VuZGVmIFdDSEFSX1RZUEVf U0laRQojZGVmaW5lIFdDSEFSX1RZUEVfU0laRSBCSVRTX1BFUl9XT1JECgojdW5kZWYgQ1BQ X1BSRURFRklORVMKI2RlZmluZSBDUFBfUFJFREVGSU5FUyAiLURfX0VMRl9fIC1EdW5peCAt RF9fZ251X2xpbnV4X18gLURsaW51eCAtQXN5c3RlbT1wb3NpeCIKCiN1bmRlZiBDUFBfU1BF QwoKCgojZGVmaW5lIENQUF9TUEVDICIlKGNwcF9jcHUpICV7ZlBJQzotRF9fUElDX18gLURf X3BpY19ffSAle2ZwaWM6LURfX1BJQ19fIC1EX19waWNfX30gJXtwb3NpeDotRF9QT1NJWF9T T1VSQ0V9ICV7cHRocmVhZDotRF9SRUVOVFJBTlR9IgoKCiN1bmRlZiBDQzFfU1BFQwojZGVm aW5lIENDMV9TUEVDICIlKGNjMV9jcHUpICV7cHJvZmlsZTotcH0iCiMgMTE2ICJsaW51eC5o IgojdW5kZWYgTElOS19TUEVDCiMgMTM2ICJsaW51eC5oIgojZGVmaW5lIExJTktfU1BFQyAi LW0gZWxmX2kzODYgJXtzaGFyZWQ6LXNoYXJlZH0gICAleyFzaGFyZWQ6ICAgICAleyFpYmNz OiAgICAgICAleyFzdGF0aWM6IAkle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gCSV7IWR5 bmFtaWMtbGlua2VyOi1keW5hbWljLWxpbmtlciAvbGliL2xkLWxpbnV4LnNvLjJ9fSAJJXtz dGF0aWM6LXN0YXRpY319fSIKIyAxNTAgImxpbnV4LmgiCiNkZWZpbmUgQVNNX09VVFBVVF9B TElHTkVEX0JTUyhGSUxFLERFQ0wsTkFNRSxTSVpFLEFMSUdOKSBhc21fb3V0cHV0X2FsaWdu ZWRfYnNzIChGSUxFLCBERUNMLCBOQU1FLCBTSVpFLCBBTElHTikKIyAxNjAgImxpbnV4Lmgi CiNkZWZpbmUgQVNNX09VVFBVVF9NQVhfU0tJUF9BTElHTihGSUxFLExPRyxNQVhfU0tJUCkg ZG8geyBpZiAoKExPRykgIT0gMCkgeyBpZiAoKE1BWF9TS0lQKSA9PSAwKSBmcHJpbnRmICgo RklMRSksICJcdC5wMmFsaWduICVkXG4iLCAoTE9HKSk7IGVsc2UgZnByaW50ZiAoKEZJTEUp LCAiXHQucDJhbGlnbiAlZCwsJWRcbiIsIChMT0cpLCAoTUFYX1NLSVApKTsgfSB9IHdoaWxl ICgwKQojIDE4OSAibGludXguaCIKI2RlZmluZSBBU01fTUFZQkVfT1VUUFVUX0VOQ09ERURf QUREUl9SVFgoRklMRSxFTkNPRElORyxTSVpFLEFERFIsRE9ORSkgZG8geyBpZiAoKFNJWkUp ID09IDQgJiYgKChFTkNPRElORykgJiAweDcwKSA9PSBEV19FSF9QRV9kYXRhcmVsKSB7IGZw dXRzIChBU01fTE9ORywgRklMRSk7IGFzc2VtYmxlX25hbWUgKEZJTEUsIFhTVFIgKEFERFIs IDApKTsgZnB1dHMgKCgoRU5DT0RJTkcpICYgRFdfRUhfUEVfaW5kaXJlY3QgPyAiQEdPVCIg OiAiQEdPVE9GRiIpLCBGSUxFKTsgZ290byBET05FOyB9IH0gd2hpbGUgKDApCiMgMjA5ICJs aW51eC5oIgojZGVmaW5lIENSVF9HRVRfUkZJQl9EQVRBKEJBU0UpIF9fYXNtX18gKCJjYWxs XHQuTFBSJT1cbiIgIi5MUFIlPTpcblx0IiAicG9wbFx0JTBcblx0IiAiYWRkbFx0JF9HTE9C QUxfT0ZGU0VUX1RBQkxFXytbLi0uTFBSJT1dLCUwIiA6ICI9ZCIoQkFTRSkpCiMgMjI4ICJs aW51eC5oIgojZGVmaW5lIE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUihDT05URVhULEZT LFNVQ0NFU1MpIGRvIHsgdW5zaWduZWQgY2hhciAqcGNfID0gKENPTlRFWFQpLT5yYTsgc3Ry dWN0IHNpZ2NvbnRleHQgKnNjXzsgbG9uZyBuZXdfY2ZhXzsgaWYgKCoodW5zaWduZWQgc2hv cnQgKikocGNfKzApID09IDB4Yjg1OCAmJiAqKHVuc2lnbmVkIGludCAqKShwY18rMikgPT0g MTE5ICYmICoodW5zaWduZWQgc2hvcnQgKikocGNfKzYpID09IDB4ODBjZCkgc2NfID0gKENP TlRFWFQpLT5jZmEgKyA0OyBlbHNlIGlmICgqKHVuc2lnbmVkIGNoYXIgKikocGNfKzApID09 IDB4YjggJiYgKih1bnNpZ25lZCBpbnQgKikocGNfKzEpID09IDE3MyAmJiAqKHVuc2lnbmVk IHNob3J0ICopKHBjXys1KSA9PSAweDgwY2QpIHsgc3RydWN0IHJ0X3NpZ2ZyYW1lIHsgaW50 IHNpZzsgc3RydWN0IHNpZ2luZm8gKnBpbmZvOyB2b2lkICpwdWM7IHN0cnVjdCBzaWdpbmZv IGluZm87IHN0cnVjdCB1Y29udGV4dCB1YzsgfSAqcnRfID0gKENPTlRFWFQpLT5jZmE7IHNj XyA9IChzdHJ1Y3Qgc2lnY29udGV4dCAqKSAmcnRfLT51Yy51Y19tY29udGV4dDsgfSBlbHNl IGJyZWFrOyBuZXdfY2ZhXyA9IHNjXy0+ZXNwOyAoRlMpLT5jZmFfaG93ID0gQ0ZBX1JFR19P RkZTRVQ7IChGUyktPmNmYV9yZWcgPSA0OyAoRlMpLT5jZmFfb2Zmc2V0ID0gbmV3X2NmYV8g LSAobG9uZykgKENPTlRFWFQpLT5jZmE7IChGUyktPnJlZ3MucmVnWzBdLmhvdyA9IFJFR19T QVZFRF9PRkZTRVQ7IChGUyktPnJlZ3MucmVnWzBdLmxvYy5vZmZzZXQgPSAobG9uZykmc2Nf LT5lYXggLSBuZXdfY2ZhXzsgKEZTKS0+cmVncy5yZWdbM10uaG93ID0gUkVHX1NBVkVEX09G RlNFVDsgKEZTKS0+cmVncy5yZWdbM10ubG9jLm9mZnNldCA9IChsb25nKSZzY18tPmVieCAt IG5ld19jZmFfOyAoRlMpLT5yZWdzLnJlZ1sxXS5ob3cgPSBSRUdfU0FWRURfT0ZGU0VUOyAo RlMpLT5yZWdzLnJlZ1sxXS5sb2Mub2Zmc2V0ID0gKGxvbmcpJnNjXy0+ZWN4IC0gbmV3X2Nm YV87IChGUyktPnJlZ3MucmVnWzJdLmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7IChGUyktPnJl Z3MucmVnWzJdLmxvYy5vZmZzZXQgPSAobG9uZykmc2NfLT5lZHggLSBuZXdfY2ZhXzsgKEZT KS0+cmVncy5yZWdbNl0uaG93ID0gUkVHX1NBVkVEX09GRlNFVDsgKEZTKS0+cmVncy5yZWdb Nl0ubG9jLm9mZnNldCA9IChsb25nKSZzY18tPmVzaSAtIG5ld19jZmFfOyAoRlMpLT5yZWdz LnJlZ1s3XS5ob3cgPSBSRUdfU0FWRURfT0ZGU0VUOyAoRlMpLT5yZWdzLnJlZ1s3XS5sb2Mu b2Zmc2V0ID0gKGxvbmcpJnNjXy0+ZWRpIC0gbmV3X2NmYV87IChGUyktPnJlZ3MucmVnWzVd LmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7IChGUyktPnJlZ3MucmVnWzVdLmxvYy5vZmZzZXQg PSAobG9uZykmc2NfLT5lYnAgLSBuZXdfY2ZhXzsgKEZTKS0+cmVncy5yZWdbOF0uaG93ID0g UkVHX1NBVkVEX09GRlNFVDsgKEZTKS0+cmVncy5yZWdbOF0ubG9jLm9mZnNldCA9IChsb25n KSZzY18tPmVpcCAtIG5ld19jZmFfOyAoRlMpLT5yZXRhZGRyX2NvbHVtbiA9IDg7IGdvdG8g U1VDQ0VTUzsgfSB3aGlsZSAoMCkKIyAyMSAiY29uZmlnLmgiIDIKIyAxICJ4ODYtNjQuaCIg MQojIDIyICJ4ODYtNjQuaCIKI3VuZGVmIEFTTV9DT01NRU5UX1NUQVJUCiNkZWZpbmUgQVNN X0NPTU1FTlRfU1RBUlQgIiMiCgojdW5kZWYgREJYX1JFR0lTVEVSX05VTUJFUgojZGVmaW5l IERCWF9SRUdJU1RFUl9OVU1CRVIobikgKFRBUkdFVF82NEJJVCA/IGRieDY0X3JlZ2lzdGVy X21hcFtuXSA6IHN2cjRfZGJ4X3JlZ2lzdGVyX21hcFtuXSkKCgoKI2RlZmluZSBOT19QUk9G SUxFX0NPVU5URVJTIAoKI3VuZGVmIEZVTkNUSU9OX1BST0ZJTEVSCiNkZWZpbmUgRlVOQ1RJ T05fUFJPRklMRVIoRklMRSxMQUJFTE5PKSB7IGlmIChUQVJHRVRfNjRCSVQgJiYgZmxhZ19w aWMpIGZwcmludGYgKEZJTEUsICJcdGNhbGxcdCptY291bnRAUExUXG4iKTsgZWxzZSBpZiAo ZmxhZ19waWMpIGZwcmludGYgKEZJTEUsICJcdGNhbGxcdCptY291bnRAR09UKCUlZWJ4KVxu Iik7IGVsc2UgZnByaW50ZiAoRklMRSwgIlx0Y2FsbFx0bWNvdW50XG4iKTsgfQojIDQzICJ4 ODYtNjQuaCIKI3VuZGVmIFNJWkVfVFlQRQojZGVmaW5lIFNJWkVfVFlQRSAoVEFSR0VUXzY0 QklUID8gImxvbmcgdW5zaWduZWQgaW50IiA6ICJ1bnNpZ25lZCBpbnQiKQoKI3VuZGVmIFBU UkRJRkZfVFlQRQojZGVmaW5lIFBUUkRJRkZfVFlQRSAoVEFSR0VUXzY0QklUID8gImxvbmcg aW50IiA6ICJpbnQiKQoKI3VuZGVmIFdDSEFSX1RZUEUKI2RlZmluZSBXQ0hBUl9UWVBFICJp bnQiCgojdW5kZWYgV0NIQVJfVFlQRV9TSVpFCiNkZWZpbmUgV0NIQVJfVFlQRV9TSVpFIDMy CgojdW5kZWYgQ0MxX1NQRUMKI2RlZmluZSBDQzFfU1BFQyAiJShjYzFfY3B1KSAle3Byb2Zp bGU6LXB9IgoKI3VuZGVmIEFTTV9TUEVDCiNkZWZpbmUgQVNNX1NQRUMgIiV7djotVn0gJXtR eTp9ICV7IVFuOi1ReX0gJXtufSAle1R9ICV7WW0sKn0gJXtZZCwqfSAgJXtXYSwqOiUqfSAl e20zMjotLTMyfSIKCgoKCgoKCiNkZWZpbmUgQVNNX09VVFBVVF9BTElHTkVEX0JTUyhGSUxF LERFQ0wsTkFNRSxTSVpFLEFMSUdOKSBhc21fb3V0cHV0X2FsaWduZWRfYnNzIChGSUxFLCBE RUNMLCBOQU1FLCBTSVpFLCBBTElHTikKIyA3NiAieDg2LTY0LmgiCiNkZWZpbmUgQVNNX09V VFBVVF9NQVhfU0tJUF9BTElHTihGSUxFLExPRyxNQVhfU0tJUCkgZG8geyBpZiAoKExPRykg IT0gMCkgeyBpZiAoKE1BWF9TS0lQKSA9PSAwKSBmcHJpbnRmICgoRklMRSksICJcdC5wMmFs aWduICVkXG4iLCAoTE9HKSk7IGVsc2UgZnByaW50ZiAoKEZJTEUpLCAiXHQucDJhbGlnbiAl ZCwsJWRcbiIsIChMT0cpLCAoTUFYX1NLSVApKTsgfSB9IHdoaWxlICgwKQojIDg4ICJ4ODYt NjQuaCIKI3VuZGVmIERXQVJGMl9ERUJVR0dJTkdfSU5GTwojdW5kZWYgRFdBUkZfREVCVUdH SU5HX0lORk8KI2RlZmluZSBEV0FSRjJfREVCVUdHSU5HX0lORk8gCiNkZWZpbmUgRFdBUkYy X1VOV0lORF9JTkZPIDEKCiN1bmRlZiBIQVZFX0FTX0RXQVJGMl9ERUJVR19MSU5FCiNkZWZp bmUgSEFWRV9BU19EV0FSRjJfREVCVUdfTElORSAKCiN1bmRlZiBQUkVGRVJSRURfREVCVUdH SU5HX1RZUEUKI2RlZmluZSBQUkVGRVJSRURfREVCVUdHSU5HX1RZUEUgRFdBUkYyX0RFQlVH CiMgMjIgImNvbmZpZy5oIiAyCiMgMSAibGludXg2NC5oIiAxCiMgMjIgImxpbnV4NjQuaCIK I2RlZmluZSBMSU5VWF9ERUZBVUxUX0VMRiAKCiN1bmRlZiBUQVJHRVRfVkVSU0lPTgojZGVm aW5lIFRBUkdFVF9WRVJTSU9OIGZwcmludGYgKHN0ZGVyciwgIiAoeDg2LTY0IExpbnV4L0VM RikiKTsKCiN1bmRlZiBDUFBfUFJFREVGSU5FUwojZGVmaW5lIENQUF9QUkVERUZJTkVTICIt RF9fRUxGX18gLUR1bml4IC1EX19nbnVfbGludXhfXyAtRGxpbnV4IC1Bc3lzdGVtKHBvc2l4 KSIKCiN1bmRlZiBDUFBfU1BFQwojZGVmaW5lIENQUF9TUEVDICIlKGNwcF9jcHUpICV7ZlBJ QzotRF9fUElDX18gLURfX3BpY19ffSAle2ZwaWM6LURfX1BJQ19fIC1EX19waWNfX30gJXtw b3NpeDotRF9QT1NJWF9TT1VSQ0V9ICV7cHRocmVhZDotRF9SRUVOVFJBTlR9ICV7IW0zMjot RF9fTE9OR19NQVhfXz05MjIzMzcyMDM2ODU0Nzc1ODA3TH0iCiMgNDEgImxpbnV4NjQuaCIK I3VuZGVmIExJTktfU1BFQwojZGVmaW5lIExJTktfU1BFQyAiJXshbTMyOi1tIGVsZl94ODZf NjQgLVkgUCwvdXNyL2xpYjY0fSAle20zMjotbSBlbGZfaTM4Nn0gICAle3NoYXJlZDotc2hh cmVkfSAgICV7IXNoYXJlZDogICAgICV7IXN0YXRpYzogICAgICAgJXtyZHluYW1pYzotZXhw b3J0LWR5bmFtaWN9ICAgICAgICV7bTMyOiV7IWR5bmFtaWMtbGlua2VyOi1keW5hbWljLWxp bmtlciAvbGliL2xkLWxpbnV4LnNvLjJ9fSAgICAgICAleyFtMzI6JXshZHluYW1pYy1saW5r ZXI6LWR5bmFtaWMtbGlua2VyIC9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMn19fSAgICAg JXtzdGF0aWM6LXN0YXRpY319IgojIDUxICJsaW51eDY0LmgiCiN1bmRlZiBTVEFSVEZJTEVf U1BFQwojZGVmaW5lIFNUQVJURklMRV9TUEVDICIle20zMjoleyFzaGFyZWQ6ICAgICAgICAl e3BnOmdjcnQxLm8lc30gJXshcGc6JXtwOmdjcnQxLm8lc30gICAgICAgICV7IXA6JXtwcm9m aWxlOmdjcnQxLm8lc30gJXshcHJvZmlsZTpjcnQxLm8lc319fX0gICAgICBjcnRpLm8lcyAl e3N0YXRpYzpjcnRiZWdpblQubyVzfSAgICAgJXshc3RhdGljOiV7IXNoYXJlZDpjcnRiZWdp bi5vJXN9ICV7c2hhcmVkOmNydGJlZ2luUy5vJXN9fX0gICAgJXshbTMyOiV7IXNoYXJlZDog ICAgICAgICV7cGc6L3Vzci9saWI2NC9nY3J0MS5vJXN9ICV7IXBnOiV7cDovdXNyL2xpYjY0 L2djcnQxLm8lc30gICAgICAgICV7IXA6JXtwcm9maWxlOi91c3IvbGliNjQvZ2NydDEubyVz fSAleyFwcm9maWxlOi91c3IvbGliNjQvY3J0MS5vJXN9fX19ICAgICAvdXNyL2xpYjY0L2Ny dGkubyVzICV7c3RhdGljOmNydGJlZ2luVC5vJXN9ICAgICAgJXshc3RhdGljOiV7IXNoYXJl ZDpjcnRiZWdpbi5vJXN9ICV7c2hhcmVkOmNydGJlZ2luUy5vJXN9fX0iCiMgNjQgImxpbnV4 NjQuaCIKI3VuZGVmIEVOREZJTEVfU1BFQwojZGVmaW5lIEVOREZJTEVfU1BFQyAiICAle20z MjoleyFzaGFyZWQ6Y3J0ZW5kLm8lc30gJXtzaGFyZWQ6Y3J0ZW5kUy5vJXN9IGNydG4ubyVz fSAgICV7IW0zMjoleyFzaGFyZWQ6Y3J0ZW5kLm8lc30gJXtzaGFyZWQ6Y3J0ZW5kUy5vJXN9 IC91c3IvbGliNjQvY3J0bi5vJXN9IgoKCgojZGVmaW5lIE1VTFRJTElCX0RFRkFVTFRTIHsg Im02NCIgfQojIDE0MCAibGludXg2NC5oIgojdW5kZWYgTURfRkFMTEJBQ0tfRlJBTUVfU1RB VEVfRk9SCiNkZWZpbmUgTURfRkFMTEJBQ0tfRlJBTUVfU1RBVEVfRk9SKENPTlRFWFQsRlMs U1VDQ0VTUykgZG8geyB1bnNpZ25lZCBjaGFyICpwY18gPSAoQ09OVEVYVCktPnJhOyBzdHJ1 Y3Qgc2lnY29udGV4dCAqc2NfOyBsb25nIG5ld19jZmFfOyBpZiAoKih1bnNpZ25lZCBzaG9y dCAqKShwY18rMCkgPT0gMHhiODU4ICYmICoodW5zaWduZWQgaW50ICopKHBjXysyKSA9PSAx MTkgJiYgKih1bnNpZ25lZCBzaG9ydCAqKShwY18rNikgPT0gMHg4MGNkKSBzY18gPSAoQ09O VEVYVCktPmNmYSArIDQ7IGVsc2UgaWYgKCoodW5zaWduZWQgY2hhciAqKShwY18rMCkgPT0g MHhiOCAmJiAqKHVuc2lnbmVkIGludCAqKShwY18rMSkgPT0gMTczICYmICoodW5zaWduZWQg c2hvcnQgKikocGNfKzUpID09IDB4ODBjZCkgeyBzdHJ1Y3QgcnRfc2lnZnJhbWUgeyBpbnQg c2lnOyBzdHJ1Y3Qgc2lnaW5mbyAqcGluZm87IHZvaWQgKnB1Yzsgc3RydWN0IHNpZ2luZm8g aW5mbzsgc3RydWN0IHVjb250ZXh0IHVjOyB9ICpydF8gPSAoQ09OVEVYVCktPmNmYTsgc2Nf ID0gKHN0cnVjdCBzaWdjb250ZXh0ICopICZydF8tPnVjLnVjX21jb250ZXh0OyB9IGVsc2Ug YnJlYWs7IG5ld19jZmFfID0gc2NfLT5lc3A7IChGUyktPmNmYV9ob3cgPSBDRkFfUkVHX09G RlNFVDsgKEZTKS0+Y2ZhX3JlZyA9IDQ7IChGUyktPmNmYV9vZmZzZXQgPSBuZXdfY2ZhXyAt IChsb25nKSAoQ09OVEVYVCktPmNmYTsgKEZTKS0+cmVncy5yZWdbMF0uaG93ID0gUkVHX1NB VkVEX09GRlNFVDsgKEZTKS0+cmVncy5yZWdbMF0ubG9jLm9mZnNldCA9IChsb25nKSZzY18t PmVheCAtIG5ld19jZmFfOyAoRlMpLT5yZWdzLnJlZ1szXS5ob3cgPSBSRUdfU0FWRURfT0ZG U0VUOyAoRlMpLT5yZWdzLnJlZ1szXS5sb2Mub2Zmc2V0ID0gKGxvbmcpJnNjXy0+ZWJ4IC0g bmV3X2NmYV87IChGUyktPnJlZ3MucmVnWzFdLmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7IChG UyktPnJlZ3MucmVnWzFdLmxvYy5vZmZzZXQgPSAobG9uZykmc2NfLT5lY3ggLSBuZXdfY2Zh XzsgKEZTKS0+cmVncy5yZWdbMl0uaG93ID0gUkVHX1NBVkVEX09GRlNFVDsgKEZTKS0+cmVn cy5yZWdbMl0ubG9jLm9mZnNldCA9IChsb25nKSZzY18tPmVkeCAtIG5ld19jZmFfOyAoRlMp LT5yZWdzLnJlZ1s2XS5ob3cgPSBSRUdfU0FWRURfT0ZGU0VUOyAoRlMpLT5yZWdzLnJlZ1s2 XS5sb2Mub2Zmc2V0ID0gKGxvbmcpJnNjXy0+ZXNpIC0gbmV3X2NmYV87IChGUyktPnJlZ3Mu cmVnWzddLmhvdyA9IFJFR19TQVZFRF9PRkZTRVQ7IChGUyktPnJlZ3MucmVnWzddLmxvYy5v ZmZzZXQgPSAobG9uZykmc2NfLT5lZGkgLSBuZXdfY2ZhXzsgKEZTKS0+cmVncy5yZWdbNV0u aG93ID0gUkVHX1NBVkVEX09GRlNFVDsgKEZTKS0+cmVncy5yZWdbNV0ubG9jLm9mZnNldCA9 IChsb25nKSZzY18tPmVicCAtIG5ld19jZmFfOyAoRlMpLT5yZWdzLnJlZ1s4XS5ob3cgPSBS RUdfU0FWRURfT0ZGU0VUOyAoRlMpLT5yZWdzLnJlZ1s4XS5sb2Mub2Zmc2V0ID0gKGxvbmcp JnNjXy0+ZWlwIC0gbmV3X2NmYV87IChGUyktPnJldGFkZHJfY29sdW1uID0gODsgZ290byBT VUNDRVNTOyB9IHdoaWxlICgwKQojIDIzICJjb25maWcuaCIgMgojIDEgImRlZmF1bHRzLmgi IDEKIyAyNCAiZGVmYXVsdHMuaCIKI2RlZmluZSBHQ0NfREVGQVVMVFNfSCAKCgoKI2RlZmlu ZSBUQVJHRVRfQkVMTCAwMDcKI2RlZmluZSBUQVJHRVRfQlMgMDEwCiNkZWZpbmUgVEFSR0VU X1RBQiAwMTEKI2RlZmluZSBUQVJHRVRfTkVXTElORSAwMTIKI2RlZmluZSBUQVJHRVRfVlQg MDEzCiNkZWZpbmUgVEFSR0VUX0ZGIDAxNAojZGVmaW5lIFRBUkdFVF9DUiAwMTUKI2RlZmlu ZSBUQVJHRVRfRVNDIDAzMwojIDU3ICJkZWZhdWx0cy5oIgojZGVmaW5lIEFTTV9TVEFCRF9P UCAiXHQuc3RhYmRcdCIKIyA3MyAiZGVmYXVsdHMuaCIKI2RlZmluZSBBU01fT1VUUFVUX0FM VEVSTkFURV9MQUJFTF9OQU1FKEZJTEUsSU5TTikgZG8geyBBU01fT1VUUFVUX0xBQkVMKEZJ TEUsTEFCRUxfQUxURVJOQVRFX05BTUUgKElOU04pKTsgfSB3aGlsZSAoMCkKIyAxMjAgImRl ZmF1bHRzLmgiCiNkZWZpbmUgQVNNX09VVFBVVF9ERUYoRklMRSxMQUJFTDEsTEFCRUwyKSBk byB7IGZwcmludGYgKChGSUxFKSwgIiVzIiwgU0VUX0FTTV9PUCk7IGFzc2VtYmxlX25hbWUg KEZJTEUsIExBQkVMMSk7IGZwcmludGYgKEZJTEUsICIsIik7IGFzc2VtYmxlX25hbWUgKEZJ TEUsIExBQkVMMik7IGZwcmludGYgKEZJTEUsICJcbiIpOyB9IHdoaWxlICgwKQojIDEzMyAi ZGVmYXVsdHMuaCIKI2RlZmluZSBBU01fT1VUUFVUX0xBQkVMUkVGKEZJTEUsTkFNRSkgYXNt X2ZwcmludGYgKChGSUxFKSwgIiVVJXMiLCAoTkFNRSkpCgoKCgoKCgojZGVmaW5lIEFTTV9P VVRQVVRfREVCVUdfTEFCRUwoRklMRSxQUkVGSVgsTlVNKSBBU01fT1VUUFVUX0lOVEVSTkFM X0xBQkVMIChGSUxFLCBQUkVGSVgsIE5VTSkKCgoKCgoKI2RlZmluZSBBU01fT1VUUFVUX1dF QUtfQUxJQVMoU1RSRUFNLE5BTUUsVkFMVUUpIGRvIHsgQVNNX1dFQUtFTl9MQUJFTCAoU1RS RUFNLCBOQU1FKTsgaWYgKFZBTFVFKSBBU01fT1VUUFVUX0RFRiAoU1RSRUFNLCBOQU1FLCBW QUxVRSk7IH0gd2hpbGUgKDApCiMgMTYyICJkZWZhdWx0cy5oIgojZGVmaW5lIFNVUFBPUlRT X1dFQUsgMQojIDE3MSAiZGVmYXVsdHMuaCIKI2RlZmluZSBTVVBQT1JUU19PTkVfT05MWSAx CiMgMTg3ICJkZWZhdWx0cy5oIgojZGVmaW5lIFRBUkdFVF9BVFRSSUJVVEVfV0VBSyBfX2F0 dHJpYnV0ZV9fICgod2VhaykpCiMgMTk2ICJkZWZhdWx0cy5oIgojZGVmaW5lIFNVUFBPUlRT X0lOSVRfUFJJT1JJVFkgMQoKCgoKCgojZGVmaW5lIExJTktfRUxJTUlOQVRFX0RVUExJQ0FU RV9MRElSRUNUT1JJRVMgMAojIDIxNiAiZGVmYXVsdHMuaCIKI2RlZmluZSBFSF9GUkFNRV9T RUNUSU9OX05BTUUgIi5laF9mcmFtZSIKIyAyMjUgImRlZmF1bHRzLmgiCiNkZWZpbmUgSkNS X1NFQ1RJT05fTkFNRSAiLmpjciIKIyAyNTggImRlZmF1bHRzLmgiCiNkZWZpbmUgRFdBUkYy X0dFTkVSQVRFX1RFWFRfU0VDVElPTl9MQUJFTCAxCiMgMjg1ICJkZWZhdWx0cy5oIgojZGVm aW5lIENIQVJfVFlQRV9TSVpFIEJJVFNfUEVSX1VOSVQKCgoKCiNkZWZpbmUgQk9PTF9UWVBF X1NJWkUgQ0hBUl9UWVBFX1NJWkUKIyAzMTQgImRlZmF1bHRzLmgiCiNkZWZpbmUgV0NIQVJf VU5TSUdORUQgMAojIDM0MiAiZGVmYXVsdHMuaCIKI2RlZmluZSBHQ09WX1RZUEVfU0laRSBM T05HX0xPTkdfVFlQRV9TSVpFCgoKCgoKCgojZGVmaW5lIENQTFVTUExVU19DUFBfU1BFQyBD UFBfU1BFQwojIDM4MCAiZGVmYXVsdHMuaCIKI2RlZmluZSBUQVJHRVRfVlRBQkxFX1VTRVNf REVTQ1JJUFRPUlMgMAojIDM5NiAiZGVmYXVsdHMuaCIKI2RlZmluZSBUQVJHRVRfUFRSTUVN RlVOQ19WQklUX0xPQ0FUSU9OIChGVU5DVElPTl9CT1VOREFSWSA+PSAyICogQklUU19QRVJf VU5JVCA/IHB0cm1lbWZ1bmNfdmJpdF9pbl9wZm4gOiBwdHJtZW1mdW5jX3ZiaXRfaW5fZGVs dGEpCiMgNDA5ICJkZWZhdWx0cy5oIgojZGVmaW5lIERFRkFVTFRfR0RCX0VYVEVOU0lPTlMg MQojIDQ1NSAiZGVmYXVsdHMuaCIKI2RlZmluZSBGVU5DVElPTl9BUkdfUkVHX0xJVFRMRV9F TkRJQU4gMAoKCgoKCgojZGVmaW5lIE1PREVfQkFTRV9SRUdfQ0xBU1MoTU9ERSkgQkFTRV9S RUdfQ0xBU1MKCgoKCgojZGVmaW5lIERFRkFVTFRfVVNFX0NYQV9BVEVYSVQgMAojIDI0ICJj b25maWcuaCIgMgoKI2RlZmluZSBQT1NJWCAKCgojIDEgImluc24tY29uc3RhbnRzLmgiIDEK CgoKCiNkZWZpbmUgR0NDX0lOU05fQ09OU1RBTlRTX0ggCiMgMjkgImNvbmZpZy5oIiAyCiMg MSAiaW5zbi1mbGFncy5oIiAxCgoKCgojZGVmaW5lIEdDQ19JTlNOX0ZMQUdTX0ggCgojZGVm aW5lIEhBVkVfY21wZGlfY2Nub18xX3JleDY0IChUQVJHRVRfNjRCSVQgJiYgaXg4Nl9tYXRj aF9jY21vZGUgKGluc24sIENDTk9tb2RlKSkKI2RlZmluZSBIQVZFX2NtcGRpXzFfaW5zbl9y ZXg2NCAoVEFSR0VUXzY0QklUICYmIGl4ODZfbWF0Y2hfY2Ntb2RlIChpbnNuLCBDQ21vZGUp KQojZGVmaW5lIEhBVkVfY21wcWlfZXh0XzNfaW5zbiAoIVRBUkdFVF82NEJJVCAmJiBpeDg2 X21hdGNoX2NjbW9kZSAoaW5zbiwgQ0Ntb2RlKSkKI2RlZmluZSBIQVZFX2NtcHFpX2V4dF8z X2luc25fcmV4NjQgKFRBUkdFVF82NEJJVCAmJiBpeDg2X21hdGNoX2NjbW9kZSAoaW5zbiwg Q0Ntb2RlKSkKI2RlZmluZSBIQVZFX3g4Nl9mbnN0c3dfMSAoVEFSR0VUXzgwMzg3KQojZGVm aW5lIEhBVkVfeDg2X3NhaGZfMSAoIVRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX3BvcHNp MSAoIVRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX21vdnNpX2luc3ZfMSAoIVRBUkdFVF82 NEJJVCkKI2RlZmluZSBIQVZFX3B1c2hkaTJfcmV4NjQgKFRBUkdFVF82NEJJVCkKI2RlZmlu ZSBIQVZFX3BvcGRpMSAoVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVfc3dhcHhmIDEKI2Rl ZmluZSBIQVZFX3N3YXB0ZiAxCiNkZWZpbmUgSEFWRV96ZXJvX2V4dGVuZGhpc2kyX2FuZCAo VEFSR0VUX1pFUk9fRVhURU5EX1dJVEhfQU5EICYmICFvcHRpbWl6ZV9zaXplKQojZGVmaW5l IEhBVkVfemVyb19leHRlbmRzaWRpMl8zMiAoIVRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZF X3plcm9fZXh0ZW5kc2lkaTJfcmV4NjQgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX3pl cm9fZXh0ZW5kaGlkaTIgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX3plcm9fZXh0ZW5k cWlkaTIgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX2V4dGVuZHNpZGkyX3JleDY0IChU QVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9leHRlbmRoaWRpMiAoVEFSR0VUXzY0QklUKQoj ZGVmaW5lIEhBVkVfZXh0ZW5kcWlkaTIgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX2V4 dGVuZGhpc2kyIDEKI2RlZmluZSBIQVZFX2V4dGVuZHFpaGkyIDEKI2RlZmluZSBIQVZFX2V4 dGVuZHFpc2kyIDEKI2RlZmluZSBIQVZFX3RydW5jZGZzZjJfMyAoVEFSR0VUXzgwMzg3KQoj ZGVmaW5lIEhBVkVfdHJ1bmNkZnNmMl9zc2Vfb25seSAoIVRBUkdFVF84MDM4NyAmJiBUQVJH RVRfU1NFMikKI2RlZmluZSBIQVZFX2ZpeF90cnVuY2RpX25vbWVtb3J5IChUQVJHRVRfODAz ODcgJiYgRkxPQVRfTU9ERV9QIChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKSAmJiAoIVNTRV9G TE9BVF9NT0RFX1AgKEdFVF9NT0RFIChvcGVyYW5kc1sxXSkpIHx8ICFUQVJHRVRfNjRCSVQp KQoKI2RlZmluZSBIQVZFX2ZpeF90cnVuY2RpX21lbW9yeSAoVEFSR0VUXzgwMzg3ICYmIEZM T0FUX01PREVfUCAoR0VUX01PREUgKG9wZXJhbmRzWzFdKSkgJiYgKCFTU0VfRkxPQVRfTU9E RV9QIChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKSB8fCAhVEFSR0VUXzY0QklUKSkKCiNkZWZp bmUgSEFWRV9maXhfdHJ1bmNzZmRpX3NzZSAoVEFSR0VUXzY0QklUICYmIFRBUkdFVF9TU0Up CiNkZWZpbmUgSEFWRV9maXhfdHJ1bmNkZmRpX3NzZSAoVEFSR0VUXzY0QklUICYmIFRBUkdF VF9TU0UyKQojZGVmaW5lIEhBVkVfZml4X3RydW5jc2lfbm9tZW1vcnkgKFRBUkdFVF84MDM4 NyAmJiBGTE9BVF9NT0RFX1AgKEdFVF9NT0RFIChvcGVyYW5kc1sxXSkpICYmICFTU0VfRkxP QVRfTU9ERV9QIChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKSkKCiNkZWZpbmUgSEFWRV9maXhf dHJ1bmNzaV9tZW1vcnkgKFRBUkdFVF84MDM4NyAmJiBGTE9BVF9NT0RFX1AgKEdFVF9NT0RF IChvcGVyYW5kc1sxXSkpICYmICFTU0VfRkxPQVRfTU9ERV9QIChHRVRfTU9ERSAob3BlcmFu ZHNbMV0pKSkKCiNkZWZpbmUgSEFWRV9maXhfdHJ1bmNzZnNpX3NzZSAoVEFSR0VUX1NTRSkK I2RlZmluZSBIQVZFX2ZpeF90cnVuY2Rmc2lfc3NlIChUQVJHRVRfU1NFMikKI2RlZmluZSBI QVZFX2ZpeF90cnVuY2hpX25vbWVtb3J5IChUQVJHRVRfODAzODcgJiYgRkxPQVRfTU9ERV9Q IChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKSAmJiAhU1NFX0ZMT0FUX01PREVfUCAoR0VUX01P REUgKG9wZXJhbmRzWzFdKSkpCgojZGVmaW5lIEhBVkVfZml4X3RydW5jaGlfbWVtb3J5IChU QVJHRVRfODAzODcgJiYgRkxPQVRfTU9ERV9QIChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKSAm JiAhU1NFX0ZMT0FUX01PREVfUCAoR0VUX01PREUgKG9wZXJhbmRzWzFdKSkpCgojZGVmaW5l IEhBVkVfeDg2X2Zuc3Rjd18xIChUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV94ODZfZmxk Y3dfMSAoVEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfZmxvYXRoaXNmMiAoVEFSR0VUXzgw Mzg3ICYmICFUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfZmxvYXRoaWRmMiAoVEFSR0VUXzgw Mzg3ICYmICFUQVJHRVRfU1NFMikKI2RlZmluZSBIQVZFX2Zsb2F0aGl4ZjIgKCFUQVJHRVRf NjRCSVQgJiYgVEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfZmxvYXRoaXRmMiAoVEFSR0VU XzgwMzg3KQojZGVmaW5lIEhBVkVfZmxvYXRzaXhmMiAoIVRBUkdFVF82NEJJVCAmJiBUQVJH RVRfODAzODcpCiNkZWZpbmUgSEFWRV9mbG9hdHNpdGYyIChUQVJHRVRfODAzODcpCiNkZWZp bmUgSEFWRV9mbG9hdGRpeGYyICghVEFSR0VUXzY0QklUICYmIFRBUkdFVF84MDM4NykKI2Rl ZmluZSBIQVZFX2Zsb2F0ZGl0ZjIgKFRBUkdFVF84MDM4NykKI2RlZmluZSBIQVZFX2FkZHFp M19jYyAoaXg4Nl9iaW5hcnlfb3BlcmF0b3Jfb2sgKFBMVVMsIFFJbW9kZSwgb3BlcmFuZHMp KQojZGVmaW5lIEhBVkVfYWRkc2lfMV96ZXh0IChUQVJHRVRfNjRCSVQgJiYgaXg4Nl9iaW5h cnlfb3BlcmF0b3Jfb2sgKFBMVVMsIFNJbW9kZSwgb3BlcmFuZHMpKQojZGVmaW5lIEhBVkVf YWRkcWlfZXh0XzEgKCFUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9zdWJkaTNfY2Fycnlf cmV4NjQgKFRBUkdFVF82NEJJVCAmJiBpeDg2X2JpbmFyeV9vcGVyYXRvcl9vayAoTUlOVVMs IERJbW9kZSwgb3BlcmFuZHMpKQojZGVmaW5lIEhBVkVfc3Vic2kzX2NhcnJ5IChpeDg2X2Jp bmFyeV9vcGVyYXRvcl9vayAoTUlOVVMsIFNJbW9kZSwgb3BlcmFuZHMpKQojZGVmaW5lIEhB VkVfc3Vic2kzX2NhcnJ5X3pleHQgKFRBUkdFVF82NEJJVCAmJiBpeDg2X2JpbmFyeV9vcGVy YXRvcl9vayAoTUlOVVMsIFNJbW9kZSwgb3BlcmFuZHMpKQojZGVmaW5lIEhBVkVfZGl2cWkz IChUQVJHRVRfUUlNT0RFX01BVEgpCiNkZWZpbmUgSEFWRV91ZGl2cWkzIChUQVJHRVRfUUlN T0RFX01BVEgpCiNkZWZpbmUgSEFWRV9kaXZtb2RoaTQgKFRBUkdFVF9ISU1PREVfTUFUSCkK I2RlZmluZSBIQVZFX3VkaXZtb2RkaTQgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX3Vk aXZtb2RzaTQgMQojZGVmaW5lIEhBVkVfdGVzdHNpXzEgKGl4ODZfbWF0Y2hfY2Ntb2RlIChp bnNuLCBDQ05PbW9kZSkpCiNkZWZpbmUgSEFWRV9hbmRxaV9leHRfMCAoKHVuc2lnbmVkIEhP U1RfV0lERV9JTlQpSU5UVkFMIChvcGVyYW5kc1syXSkgPD0gMHhmZikKI2RlZmluZSBIQVZF X25lZ3NmMl9tZW1vcnkgKGl4ODZfdW5hcnlfb3BlcmF0b3Jfb2sgKE5FRywgU0Ztb2RlLCBv cGVyYW5kcykpCiNkZWZpbmUgSEFWRV9uZWdzZjJfaWZzIChUQVJHRVRfU1NFICYmIChyZWxv YWRfaW5fcHJvZ3Jlc3MgfHwgcmVsb2FkX2NvbXBsZXRlZCB8fCAocmVnaXN0ZXJfb3BlcmFu ZCAob3BlcmFuZHNbMF0sIFZPSURtb2RlKSAmJiByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5k c1sxXSwgVk9JRG1vZGUpKSkpCgoKCiNkZWZpbmUgSEFWRV9uZWdkZjJfbWVtb3J5IChpeDg2 X3VuYXJ5X29wZXJhdG9yX29rIChORUcsIERGbW9kZSwgb3BlcmFuZHMpKQojZGVmaW5lIEhB VkVfbmVnZGYyX2lmcyAoIVRBUkdFVF82NEJJVCAmJiBUQVJHRVRfU1NFMiAmJiAocmVsb2Fk X2luX3Byb2dyZXNzIHx8IHJlbG9hZF9jb21wbGV0ZWQgfHwgKHJlZ2lzdGVyX29wZXJhbmQg KG9wZXJhbmRzWzBdLCBWT0lEbW9kZSkgJiYgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNb MV0sIFZPSURtb2RlKSkpKQoKCgojZGVmaW5lIEhBVkVfYWJzc2YyX21lbW9yeSAoaXg4Nl91 bmFyeV9vcGVyYXRvcl9vayAoQUJTLCBTRm1vZGUsIG9wZXJhbmRzKSkKI2RlZmluZSBIQVZF X2Fic3NmMl9pZnMgKFRBUkdFVF9TU0UgJiYgKHJlbG9hZF9pbl9wcm9ncmVzcyB8fCByZWxv YWRfY29tcGxldGVkIHx8IChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgVk9JRG1v ZGUpICYmIHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzFdLCBWT0lEbW9kZSkpKSkKCgoK I2RlZmluZSBIQVZFX2Fic2RmMl9tZW1vcnkgKGl4ODZfdW5hcnlfb3BlcmF0b3Jfb2sgKEFC UywgREZtb2RlLCBvcGVyYW5kcykpCiNkZWZpbmUgSEFWRV9hYnNkZjJfaWZzICghVEFSR0VU XzY0QklUICYmIFRBUkdFVF9TU0UyICYmIChyZWxvYWRfaW5fcHJvZ3Jlc3MgfHwgcmVsb2Fk X2NvbXBsZXRlZCB8fCAocmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMF0sIFZPSURtb2Rl KSAmJiByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sxXSwgVk9JRG1vZGUpKSkpCgoKCiNk ZWZpbmUgSEFWRV9hc2hsZGkzXzEgKCFUQVJHRVRfNjRCSVQgJiYgVEFSR0VUX0NNT1ZFKQoj ZGVmaW5lIEhBVkVfeDg2X3NobGRfMSAxCiNkZWZpbmUgSEFWRV9hc2hyZGkzXzYzX3JleDY0 IChUQVJHRVRfNjRCSVQgJiYgSU5UVkFMIChvcGVyYW5kc1syXSkgPT0gNjMgJiYgKFRBUkdF VF9VU0VfQ0xURCB8fCBvcHRpbWl6ZV9zaXplKSAmJiBpeDg2X2JpbmFyeV9vcGVyYXRvcl9v ayAoQVNISUZUUlQsIERJbW9kZSwgb3BlcmFuZHMpKQoKI2RlZmluZSBIQVZFX2FzaHJkaTNf MSAoIVRBUkdFVF82NEJJVCAmJiBUQVJHRVRfQ01PVkUpCiNkZWZpbmUgSEFWRV94ODZfc2hy ZF8xIDEKI2RlZmluZSBIQVZFX2FzaHJzaTNfMzEgKElOVFZBTCAob3BlcmFuZHNbMl0pID09 IDMxICYmIChUQVJHRVRfVVNFX0NMVEQgfHwgb3B0aW1pemVfc2l6ZSkgJiYgaXg4Nl9iaW5h cnlfb3BlcmF0b3Jfb2sgKEFTSElGVFJULCBTSW1vZGUsIG9wZXJhbmRzKSkKCiNkZWZpbmUg SEFWRV9sc2hyZGkzXzEgKCFUQVJHRVRfNjRCSVQgJiYgVEFSR0VUX0NNT1ZFKQojZGVmaW5l IEhBVkVfc2V0Y2NfMiAxCiNkZWZpbmUgSEFWRV9qdW1wIDEKI2RlZmluZSBIQVZFX2RvbG9v cF9lbmRfaW50ZXJuYWwgKCFUQVJHRVRfNjRCSVQgJiYgVEFSR0VUX1VTRV9MT09QKQojZGVm aW5lIEhBVkVfYmxvY2thZ2UgMQojZGVmaW5lIEhBVkVfcmV0dXJuX2ludGVybmFsIChyZWxv YWRfY29tcGxldGVkKQojZGVmaW5lIEhBVkVfcmV0dXJuX3BvcF9pbnRlcm5hbCAocmVsb2Fk X2NvbXBsZXRlZCkKI2RlZmluZSBIQVZFX3JldHVybl9pbmRpcmVjdF9pbnRlcm5hbCAocmVs b2FkX2NvbXBsZXRlZCkKI2RlZmluZSBIQVZFX25vcCAxCiNkZWZpbmUgSEFWRV9wcm9sb2d1 ZV9zZXRfZ290ICghVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVfcHJvbG9ndWVfZ2V0X3Bj ICghVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVfZWhfcmV0dXJuX3NpICghVEFSR0VUXzY0 QklUKQojZGVmaW5lIEhBVkVfZWhfcmV0dXJuX2RpIChUQVJHRVRfNjRCSVQpCiNkZWZpbmUg SEFWRV9sZWF2ZSAoIVRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX2xlYXZlX3JleDY0IChU QVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9mZnNzaV8xIDEKI2RlZmluZSBIQVZFX3NxcnRz ZjJfMSAoISBUQVJHRVRfTk9fRkFOQ1lfTUFUSF8zODcgJiYgVEFSR0VUXzgwMzg3ICYmIChU QVJHRVRfU1NFX01BVEggJiYgVEFSR0VUX01JWF9TU0VfSTM4NykpCgojZGVmaW5lIEhBVkVf c3FydHNmMl8xX3NzZV9vbmx5IChUQVJHRVRfU1NFX01BVEggJiYgKCFUQVJHRVRfODAzODcg fHwgIVRBUkdFVF9NSVhfU1NFX0kzODcpKQojZGVmaW5lIEhBVkVfc3FydHNmMl9pMzg3ICgh IFRBUkdFVF9OT19GQU5DWV9NQVRIXzM4NyAmJiBUQVJHRVRfODAzODcgJiYgIVRBUkdFVF9T U0VfTUFUSCkKCiNkZWZpbmUgSEFWRV9zcXJ0ZGYyXzEgKCEgVEFSR0VUX05PX0ZBTkNZX01B VEhfMzg3ICYmIFRBUkdFVF84MDM4NyAmJiAoVEFSR0VUX1NTRTIgJiYgVEFSR0VUX1NTRV9N QVRIICYmIFRBUkdFVF9NSVhfU1NFX0kzODcpKQoKI2RlZmluZSBIQVZFX3NxcnRkZjJfMV9z c2Vfb25seSAoVEFSR0VUX1NTRTIgJiYgVEFSR0VUX1NTRV9NQVRIICYmICghVEFSR0VUXzgw Mzg3IHx8ICFUQVJHRVRfTUlYX1NTRV9JMzg3KSkKI2RlZmluZSBIQVZFX3NxcnRkZjJfaTM4 NyAoISBUQVJHRVRfTk9fRkFOQ1lfTUFUSF8zODcgJiYgVEFSR0VUXzgwMzg3ICYmICghVEFS R0VUX1NTRTIgfHwgIVRBUkdFVF9TU0VfTUFUSCkpCgojZGVmaW5lIEhBVkVfc3FydHhmMiAo IVRBUkdFVF82NEJJVCAmJiBUQVJHRVRfODAzODcgJiYgIVRBUkdFVF9OT19GQU5DWV9NQVRI XzM4NyAmJiAoVEFSR0VUX0lFRUVfRlAgfHwgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRp b25zKSApCgojZGVmaW5lIEhBVkVfc3FydHRmMiAoISBUQVJHRVRfTk9fRkFOQ1lfTUFUSF8z ODcgJiYgVEFSR0VUXzgwMzg3ICYmIChUQVJHRVRfSUVFRV9GUCB8fCBmbGFnX3Vuc2FmZV9t YXRoX29wdGltaXphdGlvbnMpICkKCiNkZWZpbmUgSEFWRV9zaW5kZjIgKCEgVEFSR0VUX05P X0ZBTkNZX01BVEhfMzg3ICYmIFRBUkdFVF84MDM4NyAmJiBmbGFnX3Vuc2FmZV9tYXRoX29w dGltaXphdGlvbnMpCgojZGVmaW5lIEhBVkVfc2luc2YyICghIFRBUkdFVF9OT19GQU5DWV9N QVRIXzM4NyAmJiBUQVJHRVRfODAzODcgJiYgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRp b25zKQoKI2RlZmluZSBIQVZFX3NpbnhmMiAoIVRBUkdFVF82NEJJVCAmJiBUQVJHRVRfODAz ODcgJiYgIVRBUkdFVF9OT19GQU5DWV9NQVRIXzM4NyAmJiBmbGFnX3Vuc2FmZV9tYXRoX29w dGltaXphdGlvbnMpCgojZGVmaW5lIEhBVkVfc2ludGYyICghIFRBUkdFVF9OT19GQU5DWV9N QVRIXzM4NyAmJiBUQVJHRVRfODAzODcgJiYgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRp b25zKQoKI2RlZmluZSBIQVZFX2Nvc2RmMiAoISBUQVJHRVRfTk9fRkFOQ1lfTUFUSF8zODcg JiYgVEFSR0VUXzgwMzg3ICYmIGZsYWdfdW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucykKCiNk ZWZpbmUgSEFWRV9jb3NzZjIgKCEgVEFSR0VUX05PX0ZBTkNZX01BVEhfMzg3ICYmIFRBUkdF VF84MDM4NyAmJiBmbGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMpCgojZGVmaW5lIEhB VkVfY29zeGYyICghIFRBUkdFVF9OT19GQU5DWV9NQVRIXzM4NyAmJiBUQVJHRVRfODAzODcg JiYgZmxhZ191bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zKQoKI2RlZmluZSBIQVZFX2Nvc3Rm MiAoISBUQVJHRVRfTk9fRkFOQ1lfTUFUSF8zODcgJiYgVEFSR0VUXzgwMzg3ICYmIGZsYWdf dW5zYWZlX21hdGhfb3B0aW1pemF0aW9ucykKCiNkZWZpbmUgSEFWRV9jbGQgMQojZGVmaW5l IEhBVkVfc3RybW92ZGlfcmV4XzEgKFRBUkdFVF82NEJJVCAmJiAoVEFSR0VUX1NJTkdMRV9T VFJJTkdPUCB8fCBvcHRpbWl6ZV9zaXplKSkKI2RlZmluZSBIQVZFX3N0cm1vdnNpXzEgKCFU QVJHRVRfNjRCSVQgJiYgKFRBUkdFVF9TSU5HTEVfU1RSSU5HT1AgfHwgb3B0aW1pemVfc2l6 ZSkpCiNkZWZpbmUgSEFWRV9zdHJtb3ZzaV9yZXhfMSAoVEFSR0VUXzY0QklUICYmIChUQVJH RVRfU0lOR0xFX1NUUklOR09QIHx8IG9wdGltaXplX3NpemUpKQojZGVmaW5lIEhBVkVfc3Ry bW92aGlfMSAoIVRBUkdFVF82NEJJVCAmJiAoVEFSR0VUX1NJTkdMRV9TVFJJTkdPUCB8fCBv cHRpbWl6ZV9zaXplKSkKI2RlZmluZSBIQVZFX3N0cm1vdmhpX3JleF8xIChUQVJHRVRfNjRC SVQgJiYgKFRBUkdFVF9TSU5HTEVfU1RSSU5HT1AgfHwgb3B0aW1pemVfc2l6ZSkpCiNkZWZp bmUgSEFWRV9zdHJtb3ZxaV8xICghVEFSR0VUXzY0QklUICYmIChUQVJHRVRfU0lOR0xFX1NU UklOR09QIHx8IG9wdGltaXplX3NpemUpKQojZGVmaW5lIEhBVkVfc3RybW92cWlfcmV4XzEg KFRBUkdFVF82NEJJVCAmJiAoVEFSR0VUX1NJTkdMRV9TVFJJTkdPUCB8fCBvcHRpbWl6ZV9z aXplKSkKI2RlZmluZSBIQVZFX3JlcF9tb3ZkaV9yZXg2NCAoVEFSR0VUXzY0QklUKQojZGVm aW5lIEhBVkVfcmVwX21vdnNpICghVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVfcmVwX21v dnNpX3JleDY0IChUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9yZXBfbW92cWkgKCFUQVJH RVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9yZXBfbW92cWlfcmV4NjQgKFRBUkdFVF82NEJJVCkK I2RlZmluZSBIQVZFX3N0cnNldGRpX3JleF8xIChUQVJHRVRfNjRCSVQgJiYgKFRBUkdFVF9T SU5HTEVfU1RSSU5HT1AgfHwgb3B0aW1pemVfc2l6ZSkpCiNkZWZpbmUgSEFWRV9zdHJzZXRz aV8xICghVEFSR0VUXzY0QklUICYmIChUQVJHRVRfU0lOR0xFX1NUUklOR09QIHx8IG9wdGlt aXplX3NpemUpKQojZGVmaW5lIEhBVkVfc3Ryc2V0c2lfcmV4XzEgKFRBUkdFVF82NEJJVCAm JiAoVEFSR0VUX1NJTkdMRV9TVFJJTkdPUCB8fCBvcHRpbWl6ZV9zaXplKSkKI2RlZmluZSBI QVZFX3N0cnNldGhpXzEgKCFUQVJHRVRfNjRCSVQgJiYgKFRBUkdFVF9TSU5HTEVfU1RSSU5H T1AgfHwgb3B0aW1pemVfc2l6ZSkpCiNkZWZpbmUgSEFWRV9zdHJzZXRoaV9yZXhfMSAoVEFS R0VUXzY0QklUICYmIChUQVJHRVRfU0lOR0xFX1NUUklOR09QIHx8IG9wdGltaXplX3NpemUp KQojZGVmaW5lIEhBVkVfc3Ryc2V0cWlfMSAoIVRBUkdFVF82NEJJVCAmJiAoVEFSR0VUX1NJ TkdMRV9TVFJJTkdPUCB8fCBvcHRpbWl6ZV9zaXplKSkKI2RlZmluZSBIQVZFX3N0cnNldHFp X3JleF8xIChUQVJHRVRfNjRCSVQgJiYgKFRBUkdFVF9TSU5HTEVfU1RSSU5HT1AgfHwgb3B0 aW1pemVfc2l6ZSkpCiNkZWZpbmUgSEFWRV9yZXBfc3Rvc2RpX3JleDY0IChUQVJHRVRfNjRC SVQpCiNkZWZpbmUgSEFWRV9yZXBfc3Rvc3NpICghVEFSR0VUXzY0QklUKQojZGVmaW5lIEhB VkVfcmVwX3N0b3NzaV9yZXg2NCAoVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVfcmVwX3N0 b3NxaSAoIVRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX3JlcF9zdG9zcWlfcmV4NjQgKFRB UkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX2NtcHN0cnFpX256XzEgKCFUQVJHRVRfNjRCSVQp CiNkZWZpbmUgSEFWRV9jbXBzdHJxaV9uel9yZXhfMSAoVEFSR0VUXzY0QklUKQojZGVmaW5l IEhBVkVfY21wc3RycWlfMSAoIVRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX2NtcHN0cnFp X3JleF8xIChUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9zdHJsZW5xaV8xICghVEFSR0VU XzY0QklUKQojZGVmaW5lIEhBVkVfc3RybGVucWlfcmV4XzEgKFRBUkdFVF82NEJJVCkKI2Rl ZmluZSBIQVZFX3g4Nl9tb3ZkaWNjXzBfbTFfcmV4NjQgKFRBUkdFVF82NEJJVCkKI2RlZmlu ZSBIQVZFX3g4Nl9tb3ZzaWNjXzBfbTEgMQojZGVmaW5lIEhBVkVfcHJvX2VwaWxvZ3VlX2Fk anVzdF9zdGFja19yZXg2NCAoVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVfc3NlX21vdnNm Y2MgKFRBUkdFVF9TU0UgJiYgKEdFVF9DT0RFIChvcGVyYW5kc1syXSkgIT0gTUVNIHx8IEdF VF9DT0RFIChvcGVyYW5kc1szXSkgIT0gTUVNKSAmJiAoIVRBUkdFVF9JRUVFX0ZQIHx8IChH RVRfQ09ERSAob3BlcmFuZHNbMV0pICE9IEVRICYmIEdFVF9DT0RFIChvcGVyYW5kc1sxXSkg IT0gTkUpKSkKCgoKI2RlZmluZSBIQVZFX3NzZV9tb3ZzZmNjX2VxIChUQVJHRVRfU1NFICYm IChHRVRfQ09ERSAob3BlcmFuZHNbMl0pICE9IE1FTSB8fCBHRVRfQ09ERSAob3BlcmFuZHNb M10pICE9IE1FTSkpCgojZGVmaW5lIEhBVkVfc3NlX21vdmRmY2MgKFRBUkdFVF9TU0UyICYm IChHRVRfQ09ERSAob3BlcmFuZHNbMl0pICE9IE1FTSB8fCBHRVRfQ09ERSAob3BlcmFuZHNb M10pICE9IE1FTSkgJiYgKCFUQVJHRVRfSUVFRV9GUCB8fCAoR0VUX0NPREUgKG9wZXJhbmRz WzFdKSAhPSBFUSAmJiBHRVRfQ09ERSAob3BlcmFuZHNbMV0pICE9IE5FKSkpCgoKCiNkZWZp bmUgSEFWRV9zc2VfbW92ZGZjY19lcSAoVEFSR0VUX1NTRSAmJiAoR0VUX0NPREUgKG9wZXJh bmRzWzJdKSAhPSBNRU0gfHwgR0VUX0NPREUgKG9wZXJhbmRzWzNdKSAhPSBNRU0pKQoKI2Rl ZmluZSBIQVZFX2FsbG9jYXRlX3N0YWNrX3dvcmtlcl8xICghVEFSR0VUXzY0QklUICYmIFRB UkdFVF9TVEFDS19QUk9CRSkKI2RlZmluZSBIQVZFX2FsbG9jYXRlX3N0YWNrX3dvcmtlcl9y ZXg2NCAoVEFSR0VUXzY0QklUICYmIFRBUkdFVF9TVEFDS19QUk9CRSkKI2RlZmluZSBIQVZF X3RyYXAgMQojZGVmaW5lIEhBVkVfbW92djRzZl9pbnRlcm5hbCAoVEFSR0VUX1NTRSkKI2Rl ZmluZSBIQVZFX21vdnY0c2lfaW50ZXJuYWwgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9t b3Z2OHFpX2ludGVybmFsIChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfbW92djRoaV9pbnRl cm5hbCAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZFX21vdnYyc2lfaW50ZXJuYWwgKFRBUkdF VF9NTVgpCiNkZWZpbmUgSEFWRV9tb3Z2MnNmX2ludGVybmFsIChUQVJHRVRfM0ROT1cpCiNk ZWZpbmUgSEFWRV9tb3Z0aV9pbnRlcm5hbCAoVEFSR0VUX1NTRSAmJiAhVEFSR0VUXzY0QklU KQojZGVmaW5lIEhBVkVfc3NlX21vdmFwcyAoVEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX3Nz ZV9tb3Z1cHMgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9zc2VfbW92bXNrcHMgKFRBUkdF VF9TU0UpCiNkZWZpbmUgSEFWRV9tbXhfcG1vdm1za2IgKFRBUkdFVF9TU0UgfHwgVEFSR0VU XzNETk9XX0EpCiNkZWZpbmUgSEFWRV9tbXhfbWFza21vdnEgKChUQVJHRVRfU1NFIHx8IFRB UkdFVF8zRE5PV19BKSAmJiAhVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVfbW14X21hc2tt b3ZxX3JleCAoKFRBUkdFVF9TU0UgfHwgVEFSR0VUXzNETk9XX0EpICYmIFRBUkdFVF82NEJJ VCkKI2RlZmluZSBIQVZFX3NzZV9tb3ZudHY0c2YgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFW RV9zc2VfbW92bnRkaSAoVEFSR0VUX1NTRSB8fCBUQVJHRVRfM0ROT1dfQSkKI2RlZmluZSBI QVZFX3NzZV9tb3ZobHBzIChUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfc3NlX21vdmxocHMg KFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9zc2VfbW92aHBzIChUQVJHRVRfU1NFICYmIChH RVRfQ09ERSAob3BlcmFuZHNbMV0pID09IE1FTSB8fCBHRVRfQ09ERSAob3BlcmFuZHNbMl0p ID09IE1FTSkpCgojZGVmaW5lIEhBVkVfc3NlX21vdmxwcyAoVEFSR0VUX1NTRSAmJiAoR0VU X0NPREUgKG9wZXJhbmRzWzFdKSA9PSBNRU0gfHwgR0VUX0NPREUgKG9wZXJhbmRzWzJdKSA9 PSBNRU0pKQoKI2RlZmluZSBIQVZFX3NzZV9sb2Fkc3MgKFRBUkdFVF9TU0UpCiNkZWZpbmUg SEFWRV9zc2VfbW92c3MgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9zc2Vfc3RvcmVzcyAo VEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX3NzZV9zaHVmcHMgKFRBUkdFVF9TU0UpCiNkZWZp bmUgSEFWRV9hZGR2NHNmMyAoVEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX3ZtYWRkdjRzZjMg KFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9zdWJ2NHNmMyAoVEFSR0VUX1NTRSkKI2RlZmlu ZSBIQVZFX3Ztc3VidjRzZjMgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9tdWx2NHNmMyAo VEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX3ZtbXVsdjRzZjMgKFRBUkdFVF9TU0UpCiNkZWZp bmUgSEFWRV9kaXZ2NHNmMyAoVEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX3ZtZGl2djRzZjMg KFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9yY3B2NHNmMiAoVEFSR0VUX1NTRSkKI2RlZmlu ZSBIQVZFX3ZtcmNwdjRzZjIgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9yc3FydHY0c2Yy IChUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfdm1yc3FydHY0c2YyIChUQVJHRVRfU1NFKQoj ZGVmaW5lIEhBVkVfc3FydHY0c2YyIChUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfdm1zcXJ0 djRzZjIgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9zc2VfYW5kdGkzIChUQVJHRVRfU1NF ICYmICFUQVJHRVRfU1NFMiAmJiAoR0VUX0NPREUgKG9wZXJhbmRzWzFdKSAhPSBNRU0gfHwg R0VUX0NPREUgKG9wZXJhbmRzWzJdKSAhPSBNRU0pKQoKI2RlZmluZSBIQVZFX3NzZV9uYW5k dGkzIChUQVJHRVRfU1NFICYmICFUQVJHRVRfU1NFMikKI2RlZmluZSBIQVZFX3NzZV9pb3J0 aTMgKFRBUkdFVF9TU0UgJiYgIVRBUkdFVF9TU0UyICYmIChHRVRfQ09ERSAob3BlcmFuZHNb MV0pICE9IE1FTSB8fCBHRVRfQ09ERSAob3BlcmFuZHNbMl0pICE9IE1FTSkpCgojZGVmaW5l IEhBVkVfc3NlX3hvcnRpMyAoVEFSR0VUX1NTRSAmJiAhVEFSR0VUX1NTRTIgJiYgKEdFVF9D T0RFIChvcGVyYW5kc1sxXSkgIT0gTUVNIHx8IEdFVF9DT0RFIChvcGVyYW5kc1syXSkgIT0g TUVNKSkKCiNkZWZpbmUgSEFWRV9zc2VfY2xydjRzZiAoVEFSR0VUX1NTRSkKI2RlZmluZSBI QVZFX21hc2tjbXB2NHNmMyAoVEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX21hc2tuY21wdjRz ZjMgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV92bW1hc2tjbXB2NHNmMyAoVEFSR0VUX1NT RSkKI2RlZmluZSBIQVZFX3ZtbWFza25jbXB2NHNmMyAoVEFSR0VUX1NTRSkKI2RlZmluZSBI QVZFX3NzZV9jb21pIChUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfc3NlX3Vjb21pIChUQVJH RVRfU1NFKQojZGVmaW5lIEhBVkVfc3NlX3VucGNraHBzIChUQVJHRVRfU1NFKQojZGVmaW5l IEhBVkVfc3NlX3VucGNrbHBzIChUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfc21heHY0c2Yz IChUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfdm1zbWF4djRzZjMgKFRBUkdFVF9TU0UpCiNk ZWZpbmUgSEFWRV9zbWludjRzZjMgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV92bXNtaW52 NHNmMyAoVEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX2N2dHBpMnBzIChUQVJHRVRfU1NFKQoj ZGVmaW5lIEhBVkVfY3Z0cHMycGkgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9jdnR0cHMy cGkgKFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9jdnRzaTJzcyAoVEFSR0VUX1NTRSkKI2Rl ZmluZSBIQVZFX2N2dHNzMnNpIChUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfY3Z0dHNzMnNp IChUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfYWRkdjhxaTMgKFRBUkdFVF9NTVgpCiNkZWZp bmUgSEFWRV9hZGR2NGhpMyAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZFX2FkZHYyc2kzIChU QVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfc3NhZGR2OHFpMyAoVEFSR0VUX01NWCkKI2RlZmlu ZSBIQVZFX3NzYWRkdjRoaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV91c2FkZHY4cWkz IChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfdXNhZGR2NGhpMyAoVEFSR0VUX01NWCkKI2Rl ZmluZSBIQVZFX3N1YnY4cWkzIChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfc3VidjRoaTMg KFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9zdWJ2MnNpMyAoVEFSR0VUX01NWCkKI2RlZmlu ZSBIQVZFX3Nzc3VidjhxaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9zc3N1YnY0aGkz IChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfdXNzdWJ2OHFpMyAoVEFSR0VUX01NWCkKI2Rl ZmluZSBIQVZFX3Vzc3VidjRoaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9tdWx2NGhp MyAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZFX3NtdWx2NGhpM19oaWdocGFydCAoVEFSR0VU X01NWCkKI2RlZmluZSBIQVZFX3VtdWx2NGhpM19oaWdocGFydCAoVEFSR0VUX1NTRSB8fCBU QVJHRVRfM0ROT1dfQSkKI2RlZmluZSBIQVZFX21teF9wbWFkZHdkIChUQVJHRVRfTU1YKQoj ZGVmaW5lIEhBVkVfbW14X2lvcmRpMyAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZFX21teF94 b3JkaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9tbXhfY2xyZGkgKFRBUkdFVF9NTVgp CiNkZWZpbmUgSEFWRV9tbXhfYW5kZGkzIChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfbW14 X25hbmRkaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9tbXhfdWF2Z3Y4cWkzIChUQVJH RVRfU1NFIHx8IFRBUkdFVF8zRE5PV19BKQojZGVmaW5lIEhBVkVfbW14X3Vhdmd2NGhpMyAo VEFSR0VUX1NTRSB8fCBUQVJHRVRfM0ROT1dfQSkKI2RlZmluZSBIQVZFX21teF9wc2FkYncg KFRBUkdFVF9TU0UgfHwgVEFSR0VUXzNETk9XX0EpCiNkZWZpbmUgSEFWRV9tbXhfcGluc3J3 IChUQVJHRVRfU1NFIHx8IFRBUkdFVF8zRE5PV19BKQojZGVmaW5lIEhBVkVfbW14X3BleHRy dyAoVEFSR0VUX1NTRSB8fCBUQVJHRVRfM0ROT1dfQSkKI2RlZmluZSBIQVZFX21teF9wc2h1 ZncgKFRBUkdFVF9TU0UgfHwgVEFSR0VUXzNETk9XX0EpCiNkZWZpbmUgSEFWRV9lcXY4cWkz IChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfZXF2NGhpMyAoVEFSR0VUX01NWCkKI2RlZmlu ZSBIQVZFX2VxdjJzaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9ndHY4cWkzIChUQVJH RVRfTU1YKQojZGVmaW5lIEhBVkVfZ3R2NGhpMyAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZF X2d0djJzaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV91bWF4djhxaTMgKFRBUkdFVF9T U0UgfHwgVEFSR0VUXzNETk9XX0EpCiNkZWZpbmUgSEFWRV9zbWF4djRoaTMgKFRBUkdFVF9T U0UgfHwgVEFSR0VUXzNETk9XX0EpCiNkZWZpbmUgSEFWRV91bWludjhxaTMgKFRBUkdFVF9T U0UgfHwgVEFSR0VUXzNETk9XX0EpCiNkZWZpbmUgSEFWRV9zbWludjRoaTMgKFRBUkdFVF9T U0UgfHwgVEFSR0VUXzNETk9XX0EpCiNkZWZpbmUgSEFWRV9hc2hydjRoaTMgKFRBUkdFVF9N TVgpCiNkZWZpbmUgSEFWRV9hc2hydjJzaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9s c2hydjRoaTMgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9sc2hydjJzaTMgKFRBUkdFVF9N TVgpCiNkZWZpbmUgSEFWRV9tbXhfbHNocmRpMyAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZF X2FzaGx2NGhpMyAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZFX2FzaGx2MnNpMyAoVEFSR0VU X01NWCkKI2RlZmluZSBIQVZFX21teF9hc2hsZGkzIChUQVJHRVRfTU1YKQojZGVmaW5lIEhB VkVfbW14X3BhY2tzc3diIChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfbW14X3BhY2tzc2R3 IChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfbW14X3BhY2t1c3diIChUQVJHRVRfTU1YKQoj ZGVmaW5lIEhBVkVfbW14X3B1bnBja2hidyAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZFX21t eF9wdW5wY2tod2QgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9tbXhfcHVucGNraGRxIChU QVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfbW14X3B1bnBja2xidyAoVEFSR0VUX01NWCkKI2Rl ZmluZSBIQVZFX21teF9wdW5wY2tsd2QgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9tbXhf cHVucGNrbGRxIChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfZW1tcyAoVEFSR0VUX01NWCkK I2RlZmluZSBIQVZFX2xkbXhjc3IgKFRBUkdFVF9NTVgpCiNkZWZpbmUgSEFWRV9zdG14Y3Ny IChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfYWRkdjJzZjMgKFRBUkdFVF8zRE5PVykKI2Rl ZmluZSBIQVZFX3N1YnYyc2YzIChUQVJHRVRfM0ROT1cpCiNkZWZpbmUgSEFWRV9zdWJydjJz ZjMgKFRBUkdFVF8zRE5PVykKI2RlZmluZSBIQVZFX2d0djJzZjMgKFRBUkdFVF8zRE5PVykK I2RlZmluZSBIQVZFX2dldjJzZjMgKFRBUkdFVF8zRE5PVykKI2RlZmluZSBIQVZFX2VxdjJz ZjMgKFRBUkdFVF8zRE5PVykKI2RlZmluZSBIQVZFX3BmbWF4djJzZjMgKFRBUkdFVF8zRE5P VykKI2RlZmluZSBIQVZFX3BmbWludjJzZjMgKFRBUkdFVF8zRE5PVykKI2RlZmluZSBIQVZF X211bHYyc2YzIChUQVJHRVRfM0ROT1cpCiNkZWZpbmUgSEFWRV9mZW1tcyAoVEFSR0VUXzNE Tk9XKQojZGVmaW5lIEhBVkVfcGYyaWQgKFRBUkdFVF8zRE5PVykKI2RlZmluZSBIQVZFX3Bm Mml3IChUQVJHRVRfM0ROT1dfQSkKI2RlZmluZSBIQVZFX3BmYWNjIChUQVJHRVRfM0ROT1cp CiNkZWZpbmUgSEFWRV9wZm5hY2MgKFRBUkdFVF8zRE5PV19BKQojZGVmaW5lIEhBVkVfcGZw bmFjYyAoVEFSR0VUXzNETk9XX0EpCiNkZWZpbmUgSEFWRV9waTJmdyAoVEFSR0VUXzNETk9X X0EpCiNkZWZpbmUgSEFWRV9mbG9hdHYyc2kyIChUQVJHRVRfM0ROT1cpCiNkZWZpbmUgSEFW RV9wYXZndXNiIChUQVJHRVRfM0ROT1cpCiNkZWZpbmUgSEFWRV9wZnJjcHYyc2YyIChUQVJH RVRfM0ROT1cpCiNkZWZpbmUgSEFWRV9wZnJjcGl0MXYyc2YzIChUQVJHRVRfM0ROT1cpCiNk ZWZpbmUgSEFWRV9wZnJjcGl0MnYyc2YzIChUQVJHRVRfM0ROT1cpCiNkZWZpbmUgSEFWRV9w ZnJzcXJ0djJzZjIgKFRBUkdFVF8zRE5PVykKI2RlZmluZSBIQVZFX3BmcnNxaXQxdjJzZjMg KFRBUkdFVF8zRE5PVykKI2RlZmluZSBIQVZFX3BtdWxocnd2NGhpMyAoVEFSR0VUXzNETk9X KQojZGVmaW5lIEhBVkVfcHN3YXBkdjJzaTIgKFRBUkdFVF8zRE5PV19BKQojZGVmaW5lIEhB VkVfcHN3YXBkdjJzZjIgKFRBUkdFVF8zRE5PV19BKQojZGVmaW5lIEhBVkVfY21wZGkgMQoj ZGVmaW5lIEhBVkVfY21wc2kgMQojZGVmaW5lIEhBVkVfY21waGkgMQojZGVmaW5lIEhBVkVf Y21wcWkgKFRBUkdFVF9RSU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX2NtcGRpXzFfcmV4NjQg KFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX2NtcHNpXzEgMQojZGVmaW5lIEhBVkVfY21w cWlfZXh0XzMgMQojZGVmaW5lIEhBVkVfY21weGYgKCFUQVJHRVRfNjRCSVQgJiYgVEFSR0VU XzgwMzg3KQojZGVmaW5lIEhBVkVfY21wdGYgKFRBUkdFVF84MDM4NykKI2RlZmluZSBIQVZF X2NtcGRmIChUQVJHRVRfODAzODcgfHwgVEFSR0VUX1NTRTIpCiNkZWZpbmUgSEFWRV9jbXBz ZiAoVEFSR0VUXzgwMzg3IHx8IFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9tb3ZzaSAxCiNk ZWZpbmUgSEFWRV9tb3ZoaSAxCiNkZWZpbmUgSEFWRV9tb3ZzdHJpY3RoaSAoISBUQVJHRVRf UEFSVElBTF9SRUdfU1RBTEwgfHwgb3B0aW1pemVfc2l6ZSkKI2RlZmluZSBIQVZFX21vdnFp IDEKI2RlZmluZSBIQVZFX3JlbG9hZF9vdXRxaSAxCiNkZWZpbmUgSEFWRV9tb3ZzdHJpY3Rx aSAoISBUQVJHRVRfUEFSVElBTF9SRUdfU1RBTEwpCiNkZWZpbmUgSEFWRV9tb3ZkaSAxCiNk ZWZpbmUgSEFWRV9tb3ZzZiAxCiNkZWZpbmUgSEFWRV9tb3ZkZiAxCiNkZWZpbmUgSEFWRV9t b3Z4ZiAoIVRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX21vdnRmIDEKI2RlZmluZSBIQVZF X3plcm9fZXh0ZW5kaGlzaTIgMQojZGVmaW5lIEhBVkVfemVyb19leHRlbmRxaWhpMiAxCiNk ZWZpbmUgSEFWRV96ZXJvX2V4dGVuZHFpc2kyIDEKI2RlZmluZSBIQVZFX3plcm9fZXh0ZW5k c2lkaTIgMQojZGVmaW5lIEhBVkVfZXh0ZW5kc2lkaTIgMQojZGVmaW5lIEhBVkVfZXh0ZW5k c2ZkZjIgKFRBUkdFVF84MDM4NyB8fCBUQVJHRVRfU1NFMikKI2RlZmluZSBIQVZFX2V4dGVu ZHNmeGYyICghVEFSR0VUXzY0QklUICYmIFRBUkdFVF84MDM4NykKI2RlZmluZSBIQVZFX2V4 dGVuZHNmdGYyIChUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV9leHRlbmRkZnhmMiAoIVRB UkdFVF82NEJJVCAmJiBUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV9leHRlbmRkZnRmMiAo VEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfdHJ1bmNkZnNmMiAoVEFSR0VUXzgwMzg3IHx8 IFRBUkdFVF9TU0UyKQojZGVmaW5lIEhBVkVfdHJ1bmN4ZnNmMiAoIVRBUkdFVF82NEJJVCAm JiBUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV90cnVuY3Rmc2YyIChUQVJHRVRfODAzODcp CiNkZWZpbmUgSEFWRV90cnVuY3hmZGYyICghVEFSR0VUXzY0QklUICYmIFRBUkdFVF84MDM4 NykKI2RlZmluZSBIQVZFX3RydW5jdGZkZjIgKFRBUkdFVF84MDM4NykKI2RlZmluZSBIQVZF X2ZpeF90cnVuY3hmZGkyICghVEFSR0VUXzY0QklUICYmIFRBUkdFVF84MDM4NykKI2RlZmlu ZSBIQVZFX2ZpeF90cnVuY3RmZGkyIChUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV9maXhf dHJ1bmNkZmRpMiAoVEFSR0VUXzgwMzg3IHx8IChUQVJHRVRfU1NFMiAmJiBUQVJHRVRfNjRC SVQpKQojZGVmaW5lIEhBVkVfZml4X3RydW5jc2ZkaTIgKFRBUkdFVF84MDM4NyB8fCAoVEFS R0VUX1NTRSAmJiBUQVJHRVRfNjRCSVQpKQojZGVmaW5lIEhBVkVfZml4X3RydW5jeGZzaTIg KCFUQVJHRVRfNjRCSVQgJiYgVEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfZml4X3RydW5j dGZzaTIgKFRBUkdFVF84MDM4NykKI2RlZmluZSBIQVZFX2ZpeF90cnVuY2Rmc2kyIChUQVJH RVRfODAzODcgfHwgVEFSR0VUX1NTRTIpCiNkZWZpbmUgSEFWRV9maXhfdHJ1bmNzZnNpMiAo VEFSR0VUXzgwMzg3IHx8IFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9maXhfdHJ1bmN4Zmhp MiAoIVRBUkdFVF82NEJJVCAmJiBUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV9maXhfdHJ1 bmN0ZmhpMiAoVEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfZml4X3RydW5jZGZoaTIgKFRB UkdFVF84MDM4NyAmJiAhVEFSR0VUX1NTRTIpCiNkZWZpbmUgSEFWRV9maXhfdHJ1bmNzZmhp MiAoVEFSR0VUXzgwMzg3ICYmICFUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfZmxvYXRzaXNm MiAoVEFSR0VUX1NTRSB8fCBUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV9mbG9hdGRpc2Yy ICgoVEFSR0VUXzY0QklUICYmIFRBUkdFVF9TU0UpIHx8IFRBUkdFVF84MDM4NykKI2RlZmlu ZSBIQVZFX2Zsb2F0c2lkZjIgKFRBUkdFVF84MDM4NyB8fCBUQVJHRVRfU1NFMikKI2RlZmlu ZSBIQVZFX2Zsb2F0ZGlkZjIgKChUQVJHRVRfNjRCSVQgJiYgVEFSR0VUX1NTRTIpIHx8IFRB UkdFVF84MDM4NykKI2RlZmluZSBIQVZFX2FkZGRpMyAxCiNkZWZpbmUgSEFWRV9hZGRzaTMg MQojZGVmaW5lIEhBVkVfYWRkaGkzIChUQVJHRVRfSElNT0RFX01BVEgpCiNkZWZpbmUgSEFW RV9hZGRxaTMgKFRBUkdFVF9RSU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX2FkZHhmMyAoIVRB UkdFVF82NEJJVCAmJiBUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV9hZGR0ZjMgKFRBUkdF VF84MDM4NykKI2RlZmluZSBIQVZFX2FkZGRmMyAoVEFSR0VUXzgwMzg3IHx8IChUQVJHRVRf U1NFMiAmJiBUQVJHRVRfU1NFX01BVEgpKQojZGVmaW5lIEhBVkVfYWRkc2YzIChUQVJHRVRf ODAzODcgfHwgVEFSR0VUX1NTRV9NQVRIKQojZGVmaW5lIEhBVkVfc3ViZGkzIDEKI2RlZmlu ZSBIQVZFX3N1YnNpMyAxCiNkZWZpbmUgSEFWRV9zdWJoaTMgKFRBUkdFVF9ISU1PREVfTUFU SCkKI2RlZmluZSBIQVZFX3N1YnFpMyAoVEFSR0VUX1FJTU9ERV9NQVRIKQojZGVmaW5lIEhB VkVfc3VieGYzICghVEFSR0VUXzY0QklUICYmIFRBUkdFVF84MDM4NykKI2RlZmluZSBIQVZF X3N1YnRmMyAoVEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfc3ViZGYzIChUQVJHRVRfODAz ODcgfHwgKFRBUkdFVF9TU0UyICYmIFRBUkdFVF9TU0VfTUFUSCkpCiNkZWZpbmUgSEFWRV9z dWJzZjMgKFRBUkdFVF84MDM4NyB8fCBUQVJHRVRfU1NFX01BVEgpCiNkZWZpbmUgSEFWRV9t dWxkaTMgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX211bHNpMyAxCiNkZWZpbmUgSEFW RV9tdWxoaTMgKFRBUkdFVF9ISU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX211bHFpMyAoVEFS R0VUX1FJTU9ERV9NQVRIKQojZGVmaW5lIEhBVkVfdW11bHFpaGkzIChUQVJHRVRfUUlNT0RF X01BVEgpCiNkZWZpbmUgSEFWRV9tdWxxaWhpMyAoVEFSR0VUX1FJTU9ERV9NQVRIKQojZGVm aW5lIEhBVkVfdW11bGRpdGkzIChUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV91bXVsc2lk aTMgKCFUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9tdWxkaXRpMyAoVEFSR0VUXzY0QklU KQojZGVmaW5lIEhBVkVfbXVsc2lkaTMgKCFUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV91 bXVsZGkzX2hpZ2hwYXJ0IChUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV91bXVsc2kzX2hp Z2hwYXJ0IDEKI2RlZmluZSBIQVZFX3NtdWxkaTNfaGlnaHBhcnQgKFRBUkdFVF82NEJJVCkK I2RlZmluZSBIQVZFX3NtdWxzaTNfaGlnaHBhcnQgMQojZGVmaW5lIEhBVkVfbXVseGYzICgh VEFSR0VUXzY0QklUICYmIFRBUkdFVF84MDM4NykKI2RlZmluZSBIQVZFX211bHRmMyAoVEFS R0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfbXVsZGYzIChUQVJHRVRfODAzODcgfHwgKFRBUkdF VF9TU0UyICYmIFRBUkdFVF9TU0VfTUFUSCkpCiNkZWZpbmUgSEFWRV9tdWxzZjMgKFRBUkdF VF84MDM4NyB8fCBUQVJHRVRfU1NFX01BVEgpCiNkZWZpbmUgSEFWRV9kaXZ4ZjMgKCFUQVJH RVRfNjRCSVQgJiYgVEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfZGl2dGYzIChUQVJHRVRf ODAzODcpCiNkZWZpbmUgSEFWRV9kaXZkZjMgKFRBUkdFVF84MDM4NyB8fCAoVEFSR0VUX1NT RTIgJiYgVEFSR0VUX1NTRV9NQVRIKSkKI2RlZmluZSBIQVZFX2RpdnNmMyAoVEFSR0VUXzgw Mzg3IHx8IFRBUkdFVF9TU0VfTUFUSCkKI2RlZmluZSBIQVZFX2Rpdm1vZGRpNCAoVEFSR0VU XzY0QklUKQojZGVmaW5lIEhBVkVfZGl2bW9kc2k0IDEKI2RlZmluZSBIQVZFX3VkaXZtb2Ro aTQgKFRBUkdFVF9ISU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX3Rlc3RzaV9jY25vXzEgMQoj ZGVmaW5lIEhBVkVfdGVzdHFpX2Njel8xIDEKI2RlZmluZSBIQVZFX3Rlc3RxaV9leHRfY2Nu b18wIDEKI2RlZmluZSBIQVZFX2FuZGRpMyAoVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVf YW5kc2kzIDEKI2RlZmluZSBIQVZFX2FuZGhpMyAoVEFSR0VUX0hJTU9ERV9NQVRIKQojZGVm aW5lIEhBVkVfYW5kcWkzIChUQVJHRVRfUUlNT0RFX01BVEgpCiNkZWZpbmUgSEFWRV9pb3Jk aTMgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX2lvcnNpMyAxCiNkZWZpbmUgSEFWRV9p b3JoaTMgKFRBUkdFVF9ISU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX2lvcnFpMyAoVEFSR0VU X1FJTU9ERV9NQVRIKQojZGVmaW5lIEhBVkVfeG9yZGkzIChUQVJHRVRfNjRCSVQpCiNkZWZp bmUgSEFWRV94b3JzaTMgMQojZGVmaW5lIEhBVkVfeG9yaGkzIChUQVJHRVRfSElNT0RFX01B VEgpCiNkZWZpbmUgSEFWRV94b3JxaTMgKFRBUkdFVF9RSU1PREVfTUFUSCkKI2RlZmluZSBI QVZFX3hvcnFpX2NjX2V4dF8xIDEKI2RlZmluZSBIQVZFX25lZ2RpMiAxCiNkZWZpbmUgSEFW RV9uZWdzaTIgMQojZGVmaW5lIEhBVkVfbmVnaGkyIChUQVJHRVRfSElNT0RFX01BVEgpCiNk ZWZpbmUgSEFWRV9uZWdxaTIgKFRBUkdFVF9RSU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX25l Z3NmMiAoVEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfbmVnZGYyIChUQVJHRVRfODAzODcp CiNkZWZpbmUgSEFWRV9uZWd4ZjIgKCFUQVJHRVRfNjRCSVQgJiYgVEFSR0VUXzgwMzg3KQoj ZGVmaW5lIEhBVkVfbmVndGYyIChUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV9hYnNzZjIg KFRBUkdFVF84MDM4NykKI2RlZmluZSBIQVZFX2Fic2RmMiAoVEFSR0VUXzgwMzg3KQojZGVm aW5lIEhBVkVfYWJzeGYyICghVEFSR0VUXzY0QklUICYmIFRBUkdFVF84MDM4NykKI2RlZmlu ZSBIQVZFX2Fic3RmMiAoVEFSR0VUXzgwMzg3KQojZGVmaW5lIEhBVkVfb25lX2NtcGxkaTIg KFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX29uZV9jbXBsc2kyIDEKI2RlZmluZSBIQVZF X29uZV9jbXBsaGkyIChUQVJHRVRfSElNT0RFX01BVEgpCiNkZWZpbmUgSEFWRV9vbmVfY21w bHFpMiAoVEFSR0VUX1FJTU9ERV9NQVRIKQojZGVmaW5lIEhBVkVfYXNobGRpMyAxCiNkZWZp bmUgSEFWRV94ODZfc2hpZnRfYWRqXzEgKFRBUkdFVF9DTU9WRSkKI2RlZmluZSBIQVZFX3g4 Nl9zaGlmdF9hZGpfMiAxCiNkZWZpbmUgSEFWRV9hc2hsc2kzIDEKI2RlZmluZSBIQVZFX2Fz aGxoaTMgKFRBUkdFVF9ISU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX2FzaGxxaTMgKFRBUkdF VF9RSU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX2FzaHJkaTMgMQojZGVmaW5lIEhBVkVfeDg2 X3NoaWZ0X2Fkal8zIDEKI2RlZmluZSBIQVZFX2FzaHJzaTMgMQojZGVmaW5lIEhBVkVfYXNo cmhpMyAoVEFSR0VUX0hJTU9ERV9NQVRIKQojZGVmaW5lIEhBVkVfYXNocnFpMyAoVEFSR0VU X1FJTU9ERV9NQVRIKQojZGVmaW5lIEhBVkVfbHNocmRpMyAxCiNkZWZpbmUgSEFWRV9sc2hy c2kzIDEKI2RlZmluZSBIQVZFX2xzaHJoaTMgKFRBUkdFVF9ISU1PREVfTUFUSCkKI2RlZmlu ZSBIQVZFX2xzaHJxaTMgKFRBUkdFVF9RSU1PREVfTUFUSCkKI2RlZmluZSBIQVZFX3JvdGxk aTMgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX3JvdGxzaTMgMQojZGVmaW5lIEhBVkVf cm90bGhpMyAoVEFSR0VUX0hJTU9ERV9NQVRIKQojZGVmaW5lIEhBVkVfcm90bHFpMyAoVEFS R0VUX1FJTU9ERV9NQVRIKQojZGVmaW5lIEhBVkVfcm90cmRpMyAoVEFSR0VUXzY0QklUKQoj ZGVmaW5lIEhBVkVfcm90cnNpMyAxCiNkZWZpbmUgSEFWRV9yb3RyaGkzIChUQVJHRVRfSElN T0RFX01BVEgpCiNkZWZpbmUgSEFWRV9yb3RycWkzIChUQVJHRVRfUUlNT0RFX01BVEgpCiNk ZWZpbmUgSEFWRV9leHR2IDEKI2RlZmluZSBIQVZFX2V4dHp2IDEKI2RlZmluZSBIQVZFX2lu c3YgMQojZGVmaW5lIEhBVkVfc2VxIDEKI2RlZmluZSBIQVZFX3NuZSAxCiNkZWZpbmUgSEFW RV9zZ3QgMQojZGVmaW5lIEhBVkVfc2d0dSAxCiNkZWZpbmUgSEFWRV9zbHQgMQojZGVmaW5l IEhBVkVfc2x0dSAxCiNkZWZpbmUgSEFWRV9zZ2UgMQojZGVmaW5lIEhBVkVfc2dldSAxCiNk ZWZpbmUgSEFWRV9zbGUgMQojZGVmaW5lIEhBVkVfc2xldSAxCiNkZWZpbmUgSEFWRV9zdW5v cmRlcmVkIChUQVJHRVRfODAzODcgfHwgVEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX3NvcmRl cmVkIChUQVJHRVRfODAzODcpCiNkZWZpbmUgSEFWRV9zdW5lcSAoVEFSR0VUXzgwMzg3IHx8 IFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9zdW5nZSAoVEFSR0VUXzgwMzg3IHx8IFRBUkdF VF9TU0UpCiNkZWZpbmUgSEFWRV9zdW5ndCAoVEFSR0VUXzgwMzg3IHx8IFRBUkdFVF9TU0Up CiNkZWZpbmUgSEFWRV9zdW5sZSAoVEFSR0VUXzgwMzg3IHx8IFRBUkdFVF9TU0UpCiNkZWZp bmUgSEFWRV9zdW5sdCAoVEFSR0VUXzgwMzg3IHx8IFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFW RV9zbHRndCAoVEFSR0VUXzgwMzg3IHx8IFRBUkdFVF9TU0UpCiNkZWZpbmUgSEFWRV9iZXEg MQojZGVmaW5lIEhBVkVfYm5lIDEKI2RlZmluZSBIQVZFX2JndCAxCiNkZWZpbmUgSEFWRV9i Z3R1IDEKI2RlZmluZSBIQVZFX2JsdCAxCiNkZWZpbmUgSEFWRV9ibHR1IDEKI2RlZmluZSBI QVZFX2JnZSAxCiNkZWZpbmUgSEFWRV9iZ2V1IDEKI2RlZmluZSBIQVZFX2JsZSAxCiNkZWZp bmUgSEFWRV9ibGV1IDEKI2RlZmluZSBIQVZFX2J1bm9yZGVyZWQgKFRBUkdFVF84MDM4NyB8 fCBUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfYm9yZGVyZWQgKFRBUkdFVF84MDM4NyB8fCBU QVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfYnVuZXEgKFRBUkdFVF84MDM4NyB8fCBUQVJHRVRf U1NFKQojZGVmaW5lIEhBVkVfYnVuZ2UgKFRBUkdFVF84MDM4NyB8fCBUQVJHRVRfU1NFKQoj ZGVmaW5lIEhBVkVfYnVuZ3QgKFRBUkdFVF84MDM4NyB8fCBUQVJHRVRfU1NFKQojZGVmaW5l IEhBVkVfYnVubGUgKFRBUkdFVF84MDM4NyB8fCBUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVf YnVubHQgKFRBUkdFVF84MDM4NyB8fCBUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfYmx0Z3Qg KFRBUkdFVF84MDM4NyB8fCBUQVJHRVRfU1NFKQojZGVmaW5lIEhBVkVfaW5kaXJlY3RfanVt cCAxCiNkZWZpbmUgSEFWRV90YWJsZWp1bXAgMQojZGVmaW5lIEhBVkVfZG9sb29wX2VuZCAo IVRBUkdFVF82NEJJVCAmJiBUQVJHRVRfVVNFX0xPT1ApCiNkZWZpbmUgSEFWRV9jYWxsX3Bv cCAoIVRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX2NhbGwgMQojZGVmaW5lIEhBVkVfY2Fs bF9leHAgMQojZGVmaW5lIEhBVkVfY2FsbF92YWx1ZV9wb3AgKCFUQVJHRVRfNjRCSVQpCiNk ZWZpbmUgSEFWRV9jYWxsX3ZhbHVlIDEKI2RlZmluZSBIQVZFX2NhbGxfdmFsdWVfZXhwIDEK I2RlZmluZSBIQVZFX3VudHlwZWRfY2FsbCAxCiNkZWZpbmUgSEFWRV9yZXR1cm4gKGl4ODZf Y2FuX3VzZV9yZXR1cm5faW5zbl9wICgpKQojZGVmaW5lIEhBVkVfcHJvbG9ndWUgMQojZGVm aW5lIEhBVkVfZXBpbG9ndWUgMQojZGVmaW5lIEhBVkVfc2liY2FsbF9lcGlsb2d1ZSAxCiNk ZWZpbmUgSEFWRV9laF9yZXR1cm4gMQojZGVmaW5lIEhBVkVfZmZzc2kyIDEKI2RlZmluZSBI QVZFX3NxcnRzZjIgKCghIFRBUkdFVF9OT19GQU5DWV9NQVRIXzM4NyAmJiBUQVJHRVRfODAz ODcpIHx8IFRBUkdFVF9TU0VfTUFUSCkKI2RlZmluZSBIQVZFX3NxcnRkZjIgKCghIFRBUkdF VF9OT19GQU5DWV9NQVRIXzM4NyAmJiBUQVJHRVRfODAzODcpIHx8IChUQVJHRVRfU1NFMiAm JiBUQVJHRVRfU1NFX01BVEgpKQoKI2RlZmluZSBIQVZFX21vdnN0cnNpIDEKI2RlZmluZSBI QVZFX21vdnN0cmRpIChUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9zdHJtb3ZkaV9yZXg2 NCAoVEFSR0VUXzY0QklUKQojZGVmaW5lIEhBVkVfc3RybW92c2kgMQojZGVmaW5lIEhBVkVf c3RybW92c2lfcmV4NjQgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX3N0cm1vdmhpIDEK I2RlZmluZSBIQVZFX3N0cm1vdmhpX3JleDY0IChUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFW RV9zdHJtb3ZxaSAxCiNkZWZpbmUgSEFWRV9zdHJtb3ZxaV9yZXg2NCAoVEFSR0VUXzY0QklU KQojZGVmaW5lIEhBVkVfY2xyc3Ryc2kgMQojZGVmaW5lIEhBVkVfY2xyc3RyZGkgKFRBUkdF VF82NEJJVCkKI2RlZmluZSBIQVZFX3N0cnNldGRpX3JleDY0IChUQVJHRVRfNjRCSVQpCiNk ZWZpbmUgSEFWRV9zdHJzZXRzaSAxCiNkZWZpbmUgSEFWRV9zdHJzZXRzaV9yZXg2NCAoVEFS R0VUXzY0QklUKQojZGVmaW5lIEhBVkVfc3Ryc2V0aGkgMQojZGVmaW5lIEhBVkVfc3Ryc2V0 aGlfcmV4NjQgKFRBUkdFVF82NEJJVCkKI2RlZmluZSBIQVZFX3N0cnNldHFpIDEKI2RlZmlu ZSBIQVZFX3N0cnNldHFpX3JleDY0IChUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9jbXBz dHJzaSAxCiNkZWZpbmUgSEFWRV9jbXBpbnRxaSAxCiNkZWZpbmUgSEFWRV9zdHJsZW5zaSAx CiNkZWZpbmUgSEFWRV9zdHJsZW5kaSAxCiNkZWZpbmUgSEFWRV9tb3ZkaWNjIChUQVJHRVRf NjRCSVQpCiNkZWZpbmUgSEFWRV9tb3ZzaWNjIDEKI2RlZmluZSBIQVZFX21vdmhpY2MgKFRB UkdFVF9DTU9WRSAmJiBUQVJHRVRfSElNT0RFX01BVEgpCiNkZWZpbmUgSEFWRV9tb3ZzZmNj IChUQVJHRVRfQ01PVkUpCiNkZWZpbmUgSEFWRV9tb3ZkZmNjIChUQVJHRVRfQ01PVkUpCiNk ZWZpbmUgSEFWRV9tb3Z4ZmNjICghVEFSR0VUXzY0QklUICYmIFRBUkdFVF9DTU9WRSkKI2Rl ZmluZSBIQVZFX21vdnRmY2MgKFRBUkdFVF9DTU9WRSkKI2RlZmluZSBIQVZFX21pbnNmMyAo VEFSR0VUX1NTRSkKI2RlZmluZSBIQVZFX21pbmRmMyAoVEFSR0VUX1NTRTIgJiYgVEFSR0VU X1NTRV9NQVRIKQojZGVmaW5lIEhBVkVfbWF4c2YzIChUQVJHRVRfU1NFKQojZGVmaW5lIEhB VkVfbWF4ZGYzIChUQVJHRVRfU1NFMiAmJiBUQVJHRVRfU1NFX01BVEgpCiNkZWZpbmUgSEFW RV9wcm9fZXBpbG9ndWVfYWRqdXN0X3N0YWNrIDEKI2RlZmluZSBIQVZFX2FsbG9jYXRlX3N0 YWNrX3dvcmtlciAoVEFSR0VUX1NUQUNLX1BST0JFKQojZGVmaW5lIEhBVkVfYWxsb2NhdGVf c3RhY2sgKFRBUkdFVF9TVEFDS19QUk9CRSkKI2RlZmluZSBIQVZFX2J1aWx0aW5fc2V0am1w X3JlY2VpdmVyICghVEFSR0VUXzY0QklUICYmIGZsYWdfcGljKQojZGVmaW5lIEhBVkVfY29u ZGl0aW9uYWxfdHJhcCAxCiNkZWZpbmUgSEFWRV9tb3Z0aSAoVEFSR0VUX1NTRSB8fCBUQVJH RVRfNjRCSVQpCiNkZWZpbmUgSEFWRV9tb3Z2NHNmIChUQVJHRVRfU1NFKQojZGVmaW5lIEhB VkVfbW92djRzaSAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZFX21vdnYyc2kgKFRBUkdFVF9N TVgpCiNkZWZpbmUgSEFWRV9tb3Z2NGhpIChUQVJHRVRfTU1YKQojZGVmaW5lIEhBVkVfbW92 djhxaSAoVEFSR0VUX01NWCkKI2RlZmluZSBIQVZFX21vdnYyc2YgKFRBUkdFVF8zRE5PVykK I2RlZmluZSBIQVZFX3NmZW5jZSAoVEFSR0VUX1NTRSB8fCBUQVJHRVRfM0ROT1dfQSkKI2Rl ZmluZSBIQVZFX3NzZV9wcm9sb2d1ZV9zYXZlIChUQVJHRVRfNjRCSVQpCiNkZWZpbmUgSEFW RV9wcmVmZXRjaCAoVEFSR0VUX1BSRUZFVENIX1NTRSB8fCBUQVJHRVRfM0ROT1cpCnN0cnVj dCBydHhfZGVmOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jbXBkaV9jY25vXzFfcmV4 NjQgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0 IHJ0eF9kZWYgKmdlbl9jbXBkaV8xX2luc25fcmV4NjQgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jbXBxaV9leHRf M19pbnNuIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0 cnVjdCBydHhfZGVmICpnZW5fY21wcWlfZXh0XzNfaW5zbl9yZXg2NCAoc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3g4 Nl9mbnN0c3dfMSAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAq Z2VuX3g4Nl9zYWhmXzEgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9wb3BzaTEgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9tb3ZzaV9pbnN2XzEgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9wdXNoZGkyX3JleDY0IChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fcG9wZGkxIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fc3dhcHhmIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fc3dhcHRmIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5femVyb19leHRlbmRoaXNp Ml9hbmQgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3Ry dWN0IHJ0eF9kZWYgKmdlbl96ZXJvX2V4dGVuZHNpZGkyXzMyIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5femVyb19l eHRlbmRzaWRpMl9yZXg2NCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3plcm9fZXh0ZW5kaGlkaTIgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl96ZXJvX2V4dGVuZHFpZGkyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZXh0ZW5kc2lkaTJfcmV4NjQgKHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9leHRlbmRoaWRpMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2V4dGVuZHFpZGkyIChzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZXh0 ZW5kaGlzaTIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9leHRlbmRxaWhpMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2V4dGVuZHFpc2ky IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5fdHJ1bmNkZnNmMl8zIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4 X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdHJ1bmNkZnNmMl9zc2Vfb25s eSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3Qg cnR4X2RlZiAqZ2VuX2ZpeF90cnVuY2RpX25vbWVtb3J5IChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZml4X3RydW5j ZGlfbWVtb3J5IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fZml4X3RydW5jc2ZkaV9zc2UgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9maXhfdHJ1bmNkZmRpX3NzZSAoc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX2ZpeF90cnVuY3NpX25vbWVtb3J5IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZml4X3RydW5jc2lfbWVt b3J5IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZml4 X3RydW5jc2ZzaV9zc2UgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9maXhfdHJ1bmNkZnNpX3NzZSAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2ZpeF90cnVuY2hpX25vbWVtb3J5IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZml4X3RydW5jaGlfbWVtb3J5IChz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5feDg2X2Zuc3Rj d18xIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5feDg2 X2ZsZGN3XzEgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9mbG9hdGhpc2YyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZmxvYXRoaWRmMiAoc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2Zsb2F0aGl4 ZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0 IHJ0eF9kZWYgKmdlbl9mbG9hdGhpdGYyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4 X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZmxvYXRzaXhmMiAoc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAq Z2VuX2Zsb2F0c2l0ZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9mbG9hdGRpeGYyIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZmxvYXRk aXRmMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1 Y3QgcnR4X2RlZiAqZ2VuX2FkZHFpM19jYyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2FkZHNpXzFfemV4dCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2FkZHFpX2V4dF8x IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3ViZGkzX2NhcnJ5X3JleDY0IChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3Vic2kzX2NhcnJ5IChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5fc3Vic2kzX2NhcnJ5X3pleHQgKHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9kaXZxaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl91ZGl2cWkzIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZGl2bW9kaGk0IChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdWRpdm1vZGRpNCAoc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3VkaXZtb2RzaTQgKHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl90ZXN0c2lfMSAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2FuZHFpX2V4dF8wIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbmVnc2YyX21lbW9y eSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3Qg cnR4X2RlZiAqZ2VuX25lZ3NmMl9pZnMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9u ZWdkZjJfbWVtb3J5IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbmVnZGYyX2lmcyAoc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX2Fic3NmMl9tZW1vcnkgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hYnNzZjJfaWZzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fYWJzZGYyX21lbW9yeSAoc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2Fic2RmMl9p ZnMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hc2hsZGkzXzEgKHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3Ry dWN0IHJ0eF9kZWYgKmdlbl94ODZfc2hsZF8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fYXNocmRpM182M19yZXg2NCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2FzaHJk aTNfMSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3g4Nl9zaHJkXzEgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9hc2hyc2kzXzMxIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fbHNocmRpM18xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc2V0Y2NfMiAo c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX2p1bXAgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9kb2xvb3BfZW5kX2ludGVybmFsIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fYmxvY2thZ2UgKHZvaWQpOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9yZXR1cm5f aW50ZXJuYWwgKHZvaWQpOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9yZXR1cm5fcG9w X2ludGVybmFsIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fcmV0dXJuX2luZGlyZWN0X2ludGVybmFsIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fbm9wICh2b2lkKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fcHJvbG9ndWVfc2V0X2dvdCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3By b2xvZ3VlX2dldF9wYyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4 dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2VoX3JldHVybl9zaSAoc3RydWN0IHJ0eF9kZWYg Kik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2VoX3JldHVybl9kaSAoc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2xlYXZlICh2b2lkKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbGVhdmVfcmV4NjQgKHZvaWQpOwpleHRlcm4gc3Ry dWN0IHJ0eF9kZWYgKmdlbl9mZnNzaV8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4 X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3FydHNmMl8xIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fc3FydHNmMl8xX3NzZV9vbmx5IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3FydHNmMl9pMzg3IChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fc3FydGRmMl8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3FydGRmMl8xX3NzZV9vbmx5IChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f c3FydGRmMl9pMzg3IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3FydHhmMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NxcnR0ZjIgKHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9zaW5kZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zaW5zZjIgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zaW54ZjIgKHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9zaW50ZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jb3NkZjIgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jb3NzZjIgKHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9jb3N4ZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jb3N0ZjIgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jbGQgKHZvaWQp OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdHJtb3ZkaV9yZXhfMSAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0cm1vdnNpXzEgKHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdHJtb3ZzaV9yZXhf MSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0cm1v dmhpXzEgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9z dHJtb3ZoaV9yZXhfMSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX3N0cm1vdnFpXzEgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0 eF9kZWYgKmdlbl9zdHJtb3ZxaV9yZXhfMSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX3JlcF9tb3ZkaV9yZXg2NCAoc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX3JlcF9tb3ZzaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3JlcF9t b3ZzaV9yZXg2NCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3JlcF9tb3ZxaSAoc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4 dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3JlcF9tb3ZxaV9yZXg2NCAoc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1 Y3QgcnR4X2RlZiAqZ2VuX3N0cnNldGRpX3JleF8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fc3Ryc2V0c2lfMSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0cnNldHNp X3JleF8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4 X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3Ryc2V0aGlfMSAoc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVy biBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0cnNldGhpX3JleF8xIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5fc3Ryc2V0cWlfMSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0 cnNldHFpX3JleF8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fcmVwX3N0b3NkaV9y ZXg2NCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1 Y3QgcnR4X2RlZiAqZ2VuX3JlcF9zdG9zc2kgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9yZXBfc3Rvc3NpX3JleDY0 IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5fcmVwX3N0b3NxaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3JlcF9zdG9zcWlfcmV4NjQgKHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9jbXBzdHJxaV9uel8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVj dCBydHhfZGVmICpnZW5fY21wc3RycWlfbnpfcmV4XzEgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jbXBzdHJxaV8xIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fY21wc3RycWlfcmV4XzEgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdHJsZW5xaV8xIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3RybGVucWlfcmV4XzEgKHN0cnVjdCBydHhfZGVm ICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0 IHJ0eF9kZWYgKmdlbl94ODZfbW92ZGljY18wX20xX3JleDY0IChzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5feDg2X21vdnNpY2NfMF9tMSAoc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3Byb19lcGlsb2d1ZV9h ZGp1c3Rfc3RhY2tfcmV4NjQgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zc2VfbW92 c2ZjYyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NzZV9tb3ZzZmNjX2VxIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fc3NlX21vdmRmY2MgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zc2VfbW92 ZGZjY19lcSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX2FsbG9jYXRlX3N0YWNrX3dvcmtlcl8xIChzdHJ1Y3QgcnR4 X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fYWxsb2NhdGVfc3RhY2tfd29y a2VyX3JleDY0IChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fdHJhcCAodm9pZCk7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21vdnY0c2ZfaW50 ZXJuYWwgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3Ry dWN0IHJ0eF9kZWYgKmdlbl9tb3Z2NHNpX2ludGVybmFsIChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbW92djhxaV9p bnRlcm5hbCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX21vdnY0aGlfaW50ZXJuYWwgKHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3Z2MnNp X2ludGVybmFsIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fbW92djJzZl9pbnRlcm5hbCAoc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21vdnRp X2ludGVybmFsIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fc3NlX21vdmFwcyAoc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NzZV9tb3Z1cHMg KHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0 eF9kZWYgKmdlbl9zc2VfbW92bXNrcHMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tbXhfcG1vdm1za2IgKHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9tbXhfbWFza21vdnEgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tbXhfbWFz a21vdnFfcmV4IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3NlX21vdm50djRzZiAo c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX3NzZV9tb3ZudGRpIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3NlX21vdmhscHMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9zc2VfbW92bGhwcyAoc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX3NzZV9tb3ZocHMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zc2VfbW92 bHBzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3NlX2xvYWRzcyAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X3NzZV9tb3ZzcyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NzZV9zdG9yZXNzIChz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhf ZGVmICpnZW5fc3NlX3NodWZwcyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3Qg cnR4X2RlZiAqZ2VuX2FkZHY0c2YzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdm1h ZGR2NHNmMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N1YnY0c2YzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fdm1zdWJ2NHNmMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX211bHY0c2YzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdm1tdWx2NHNm MyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2RpdnY0c2YzIChzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVj dCBydHhfZGVmICpnZW5fdm1kaXZ2NHNmMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X3JjcHY0c2YyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fdm1yY3B2NHNmMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX3JzcXJ0djRzZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl92bXJzcXJ0djRzZjIgKHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3Ry dWN0IHJ0eF9kZWYgKmdlbl9zcXJ0djRzZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl92bXNxcnR2NHNmMiAoc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4 dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NzZV9hbmR0aTMgKHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0 eF9kZWYgKmdlbl9zc2VfbmFuZHRpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3Nz ZV9pb3J0aTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zc2VfeG9ydGkzIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3NlX2NscnY0c2YgKHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tYXNrY21wdjRzZjMgKHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tYXNrbmNtcHY0c2YzIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdm1tYXNrY21wdjRz ZjMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl92bW1h c2tuY21wdjRzZjMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9zc2VfY29taSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NzZV91Y29taSAo c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NzZV91bnBja2hwcyAoc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1 Y3QgcnR4X2RlZiAqZ2VuX3NzZV91bnBja2xwcyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAq Z2VuX3NtYXh2NHNmMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3Ztc21heHY0c2Yz IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc21pbnY0c2YzIChzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVj dCBydHhfZGVmICpnZW5fdm1zbWludjRzZjMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9jdnRwaTJwcyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2N2dHBzMnBpIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fY3Z0dHBzMnBpIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fY3Z0c2kyc3MgKHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0 eF9kZWYgKmdlbl9jdnRzczJzaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2N2dHRzczJzaSAoc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2Fk ZHY4cWkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4 X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fYWRkdjRoaTMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9hZGR2MnNpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAq Z2VuX3NzYWRkdjhxaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zc2FkZHY0aGkz IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdXNhZGR2OHFpMyAoc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1 Y3QgcnR4X2RlZiAqZ2VuX3VzYWRkdjRoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9zdWJ2OHFpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N1YnY0aGkzIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3VidjJzaTMgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9zc3N1YnY4cWkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3NzdWJ2 NGhpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3Vzc3VidjhxaTMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl91c3N1YnY0aGkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fbXVsdjRoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zbXVsdjRoaTNf aGlnaHBhcnQgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl91bXVsdjRoaTNfaGlnaHBh cnQgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tbXhfcG1hZGR3ZCAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX21teF9pb3JkaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9tbXhfeG9yZGkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbW14X2NscmRp IChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbW14X2Fu ZGRpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21teF9uYW5kZGkzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fbW14X3Vhdmd2OHFpMyAoc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX21teF91YXZndjRoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9t bXhfcHNhZGJ3IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbW14X3BpbnNydyAoc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21teF9wZXh0cncg KHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tbXhfcHNodWZ3IChzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVj dCBydHhfZGVmICpnZW5fZXF2OHFpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2Vx djRoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9lcXYyc2kzIChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0 cnVjdCBydHhfZGVmICpnZW5fZ3R2OHFpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2d0djRoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9ndHYyc2kzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fdW1heHY4cWkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fc21heHY0aGkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdW1pbnY4cWkz IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc21pbnY0aGkzIChzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVj dCBydHhfZGVmICpnZW5fYXNocnY0aGkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f YXNocnYyc2kzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbHNocnY0aGkzIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbHNocnYyc2kzIChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhf ZGVmICpnZW5fbW14X2xzaHJkaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hc2hs djRoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hc2hsdjJzaTMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9tbXhfYXNobGRpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX21teF9wYWNrc3N3YiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21teF9w YWNrc3NkdyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21teF9wYWNrdXN3YiAoc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4 dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21teF9wdW5wY2toYncgKHN0cnVjdCBydHhfZGVm ICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0 IHJ0eF9kZWYgKmdlbl9tbXhfcHVucGNraHdkIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fbW14X3B1bnBja2hkcSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21teF9wdW5w Y2tsYncgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tbXhfcHVucGNrbHdkIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbW14X3B1bnBja2xkcSAoc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3Qg cnR4X2RlZiAqZ2VuX2VtbXMgKHZvaWQpOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9s ZG14Y3NyIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f c3RteGNzciAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2FkZHYyc2YzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3VidjJzZjMgKHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRl cm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdWJydjJzZjMgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9ndHYyc2YzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZ2V2MnNmMyAo c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2VxdjJzZjMgKHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0 eF9kZWYgKmdlbl9wZm1heHYyc2YzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fcGZt aW52MnNmMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX211bHYyc2YzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fZmVtbXMgKHZvaWQpOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9wZjJpZCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4 dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3BmMml3IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fcGZhY2MgKHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRl cm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9wZm5hY2MgKHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9wZnBuYWNjIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fcGkyZncgKHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9mbG9hdHYyc2kyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fcGF2Z3VzYiAoc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX3BmcmNwdjJzZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9wZnJjcGl0MXYyc2YzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fcGZyY3BpdDJ2MnNmMyAoc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX3BmcnNxcnR2MnNmMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3BmcnNxaXQxdjJzZjMgKHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRl cm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9wbXVsaHJ3djRoaTMgKHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0 eF9kZWYgKmdlbl9wc3dhcGR2MnNpMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3Bzd2FwZHYyc2YyIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fY21wZGkgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9jbXBzaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2NtcGhpIChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f Y21wcWkgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3Ry dWN0IHJ0eF9kZWYgKmdlbl9jbXBkaV8xX3JleDY0IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fY21wc2lfMSAoc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX2NtcHFpX2V4dF8zIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fY21weGYgKHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jbXB0ZiAo c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX2NtcGRmIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fY21wc2YgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3ZzaSAoc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX21vdmhpIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbW92c3RyaWN0aGkgKHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3ZxaSAo c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX3JlbG9hZF9vdXRxaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21v dnN0cmljdHFpIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fbW92ZGkgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3ZzZiAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X21vdmRmIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0 cnVjdCBydHhfZGVmICpnZW5fbW92eGYgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3Z0ZiAoc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3pl cm9fZXh0ZW5kaGlzaTIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl96ZXJvX2V4dGVuZHFpaGkyIChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f emVyb19leHRlbmRxaXNpMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3plcm9fZXh0ZW5kc2lkaTIgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9leHRlbmRzaWRpMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4 dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2V4dGVuZHNmZGYyIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZXh0ZW5k c2Z4ZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3Ry dWN0IHJ0eF9kZWYgKmdlbl9leHRlbmRzZnRmMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2V4dGVuZGRmeGYyIChz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhf ZGVmICpnZW5fZXh0ZW5kZGZ0ZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl90cnVuY2Rmc2YyIChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f dHJ1bmN4ZnNmMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVy biBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3RydW5jdGZzZjIgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl90cnVuY3hmZGYy IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5fdHJ1bmN0ZmRmMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2ZpeF90cnVuY3hmZGkyIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fZml4X3RydW5jdGZkaTIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9maXhfdHJ1bmNkZmRpMiAoc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAq Z2VuX2ZpeF90cnVuY3NmZGkyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZml4X3RydW5jeGZzaTIgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9maXhfdHJ1bmN0ZnNpMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2ZpeF90cnVuY2Rmc2kyIChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f Zml4X3RydW5jc2ZzaTIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9maXhfdHJ1bmN4ZmhpMiAoc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2Zp eF90cnVuY3RmaGkyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZml4X3RydW5jZGZoaTIgKHN0cnVjdCBydHhfZGVm ICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9maXhf dHJ1bmNzZmhpMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVy biBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2Zsb2F0c2lzZjIgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9mbG9hdGRpc2Yy IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5fZmxvYXRzaWRmMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2Zsb2F0ZGlkZjIgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9hZGRkaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hZGRzaTMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9hZGRoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9hZGRxaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hZGR4ZjMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9hZGR0ZjMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9hZGRkZjMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hZGRzZjMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9zdWJkaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9zdWJzaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdWJoaTMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9zdWJxaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9zdWJ4ZjMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdWJ0ZjMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9zdWJkZjMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9zdWJzZjMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tdWxkaTMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl9tdWxzaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9tdWxoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tdWxxaTMgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4g c3RydWN0IHJ0eF9kZWYgKmdlbl91bXVscWloaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9tdWxxaWhpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3VtdWxkaXRpMyAo c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3VtdWxzaWRpMyAoc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3Qg cnR4X2RlZiAqZ2VuX211bGRpdGkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbXVs c2lkaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl91bXVsZGkzX2hpZ2hwYXJ0IChz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdW11bHNpM19oaWdocGFydCAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX3NtdWxkaTNfaGlnaHBhcnQgKHN0cnVjdCBydHhfZGVmICos IHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0 eF9kZWYgKmdlbl9zbXVsc2kzX2hpZ2hwYXJ0IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fbXVseGYzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbXVsdGYzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fbXVsZGYzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fbXVsc2YzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZGl2eGYzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fZGl2dGYzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fZGl2ZGYzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZGl2c2YzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fZGl2bW9kZGk0IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fZGl2bW9kc2k0IChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fdWRpdm1vZGhpNCAoc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3Rlc3RzaV9jY25vXzEgKHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl90ZXN0cWlfY2N6XzEgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl90ZXN0cWlfZXh0X2Njbm9fMCAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2FuZGRpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2FuZHNpMyAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX2FuZGhpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2FuZHFpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2lvcmRpMyAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX2lvcnNpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2lvcmhpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2lvcnFpMyAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX3hvcmRpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X3hvcnNpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3hvcmhpMyAoc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX3hvcnFpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X3hvcnFpX2NjX2V4dF8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbmVnZGkyIChz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhf ZGVmICpnZW5fbmVnc2kyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbmVnaGkyIChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbmVncWkyIChz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhf ZGVmICpnZW5fbmVnc2YyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbmVnZGYyIChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbmVneGYyIChz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhf ZGVmICpnZW5fbmVndGYyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fYWJzc2YyIChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fYWJzZGYyIChz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhf ZGVmICpnZW5fYWJzeGYyIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fYWJzdGYyIChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fb25lX2NtcGxk aTIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0 IHJ0eF9kZWYgKmdlbl9vbmVfY21wbHNpMiAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX29uZV9jbXBsaGkyIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fb25lX2NtcGxxaTIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hc2hsZGkzIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5feDg2X3NoaWZ0X2Fkal8xIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5feDg2X3NoaWZ0X2Fkal8yIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5fYXNobHNpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2FzaGxo aTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hc2hscWkzIChzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVj dCBydHhfZGVmICpnZW5fYXNocmRpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3g4 Nl9zaGlmdF9hZGpfMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2FzaHJzaTMgKHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpl eHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9hc2hyaGkzIChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhf ZGVmICpnZW5fYXNocnFpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2xzaHJkaTMg KHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9sc2hyc2kzIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBy dHhfZGVmICpnZW5fbHNocmhpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYg Kiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2xzaHJx aTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9yb3RsZGkzIChzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVj dCBydHhfZGVmICpnZW5fcm90bHNpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3Jv dGxoaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9yb3RscWkzIChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0 cnVjdCBydHhfZGVmICpnZW5fcm90cmRpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X3JvdHJzaTMgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9yb3RyaGkzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fcm90cnFpMyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAq Z2VuX2V4dHYgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9leHR6diAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2luc3YgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9z ZXEgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zbmUg KHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zZ3QgKHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zZ3R1IChzdHJ1 Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc2x0IChzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc2x0dSAoc3RydWN0IHJ0 eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NnZSAoc3RydWN0IHJ0eF9k ZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NnZXUgKHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zbGUgKHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zbGV1IChzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3Vub3JkZXJlZCAoc3RydWN0IHJ0eF9kZWYg Kik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NvcmRlcmVkIChzdHJ1Y3QgcnR4X2Rl ZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3VuZXEgKHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdW5nZSAoc3RydWN0IHJ0eF9kZWYg Kik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N1bmd0IChzdHJ1Y3QgcnR4X2RlZiAq KTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3VubGUgKHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdW5sdCAoc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3NsdGd0IChzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fYmVxIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fYm5lIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fYmd0IChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0 cnVjdCBydHhfZGVmICpnZW5fYmd0dSAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1 Y3QgcnR4X2RlZiAqZ2VuX2JsdCAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3Qg cnR4X2RlZiAqZ2VuX2JsdHUgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0 eF9kZWYgKmdlbl9iZ2UgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9iZ2V1IChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fYmxlIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fYmxldSAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2J1bm9yZGVyZWQgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9ib3JkZXJlZCAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX2J1bmVxIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fYnVuZ2UgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9idW5ndCAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAq Z2VuX2J1bmxlIChzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fYnVubHQgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9ibHRndCAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2luZGlyZWN0X2p1bXAgKHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl90YWJsZWp1bXAgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9kb2xvb3BfZW5kIChzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKI2RlZmluZSBHRU5fQ0FMTF9QT1AoQSxCLEMsRCkg Z2VuX2NhbGxfcG9wICgoQSksIChCKSwgKEMpLCAoRCkpCmV4dGVybiBzdHJ1Y3QgcnR4X2Rl ZiAqZ2VuX2NhbGxfcG9wIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKI2RlZmluZSBHRU5fQ0FMTChB LEIsQyxEKSBnZW5fY2FsbCAoKEEpLCAoQiksIChDKSkKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fY2FsbCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2NhbGxfZXhwIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKI2RlZmluZSBHRU5fQ0FMTF9WQUxV RV9QT1AoQSxCLEMsRCxFKSBnZW5fY2FsbF92YWx1ZV9wb3AgKChBKSwgKEIpLCAoQyksIChE KSwgKEUpKQpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jYWxsX3ZhbHVlX3BvcCAoc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3Ry dWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CiNkZWZpbmUgR0VOX0NBTExfVkFM VUUoQSxCLEMsRCxFKSBnZW5fY2FsbF92YWx1ZSAoKEEpLCAoQiksIChDKSwgKEQpKQpleHRl cm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jYWxsX3ZhbHVlIChzdHJ1Y3QgcnR4X2RlZiAqLCBz dHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fY2FsbF92YWx1ZV9leHAgKHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3Ry dWN0IHJ0eF9kZWYgKmdlbl91bnR5cGVkX2NhbGwgKHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYg Kmdlbl9yZXR1cm4gKHZvaWQpOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9wcm9sb2d1 ZSAodm9pZCk7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2VwaWxvZ3VlICh2b2lkKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc2liY2FsbF9lcGlsb2d1ZSAodm9pZCk7CmV4 dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2VoX3JldHVybiAoc3RydWN0IHJ0eF9kZWYgKiwg c3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2Zmc3NpMiAo c3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4 X2RlZiAqZ2VuX3NxcnRzZjIgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICop OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zcXJ0ZGYyIChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbW92c3Ry c2kgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3Zz dHJkaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0 cm1vdmRpX3JleDY0IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3RybW92c2kgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdHJtb3ZzaV9y ZXg2NCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1 Y3QgcnR4X2RlZiAqZ2VuX3N0cm1vdmhpIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4 X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3RybW92aGlfcmV4NjQgKHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9k ZWYgKmdlbl9zdHJtb3ZxaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7 CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0cm1vdnFpX3JleDY0IChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f Y2xyc3Ryc2kgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jbHJzdHJkaSAoc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVy biBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0cnNldGRpX3JleDY0IChzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3Ryc2V0 c2kgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0 IHJ0eF9kZWYgKmdlbl9zdHJzZXRzaV9yZXg2NCAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0cnNldGhpIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVm ICpnZW5fc3Ryc2V0aGlfcmV4NjQgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zdHJzZXRxaSAoc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0 cnNldHFpX3JleDY0IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0 ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fY21wc3Ryc2kgKHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jbXBpbnRxaSAo c3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3N0cmxlbnNp IChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAq LCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fc3RybGVu ZGkgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVm ICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3Zk aWNjIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2Rl ZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbW92 c2ljYyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9k ZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21v dmhpY2MgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9t b3ZzZmNjIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f bW92ZGZjYyAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0 eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X21vdnhmY2MgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICosIHN0cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdl bl9tb3Z0ZmNjIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fbWluc2YzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fbWluZGYzIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJu IHN0cnVjdCBydHhfZGVmICpnZW5fbWF4c2YzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fbWF4ZGYzIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3Qg cnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fcHJvX2VwaWxvZ3VlX2Fk anVzdF9zdGFjayAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX2FsbG9jYXRlX3N0YWNr X3dvcmtlciAoc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2Vu X2FsbG9jYXRlX3N0YWNrIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsK ZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5fYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIgKHN0 cnVjdCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9jb25kaXRpb25h bF90cmFwIChzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0 cnVjdCBydHhfZGVmICpnZW5fbW92dGkgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBydHhf ZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3Z2NHNmIChzdHJ1Y3QgcnR4 X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpnZW5f bW92djRzaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVybiBz dHJ1Y3QgcnR4X2RlZiAqZ2VuX21vdnYyc2kgKHN0cnVjdCBydHhfZGVmICosIHN0cnVjdCBy dHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9tb3Z2NGhpIChzdHJ1Y3Qg cnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKZXh0ZXJuIHN0cnVjdCBydHhfZGVmICpn ZW5fbW92djhxaSAoc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKik7CmV4dGVy biBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX21vdnYyc2YgKHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICopOwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zZmVuY2UgKHZvaWQp OwpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmdlbl9zc2VfcHJvbG9ndWVfc2F2ZSAoc3RydWN0 IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0IHJ0eF9kZWYgKiwgc3RydWN0 IHJ0eF9kZWYgKik7CmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqZ2VuX3ByZWZldGNoIChzdHJ1 Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBzdHJ1Y3QgcnR4X2RlZiAqKTsKIyAz MCAiY29uZmlnLmgiIDIKIyAyNCAicmVncmVuYW1lLmMiIDIKIyAxICJzeXN0ZW0uaCIgMQoj IDI0ICJzeXN0ZW0uaCIKI2RlZmluZSBHQ0NfU1lTVEVNX0ggCgoKCgojZGVmaW5lIEdDQ0JV R1VSTCAiPFVSTDpodHRwOi8vd3d3LnNwZWMub3JnLz4iCgoKCiMgMSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUv MTQuMC4xL2luY2x1ZGUvc3RkYXJnLmgiIDEgMyA0CiMgMzEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAu MS9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKI2RlZmluZSBfU1REQVJHX0ggCiNkZWZpbmUgX0FO U0lfU1REQVJHX0hfIAoKI3VuZGVmIF9fbmVlZF9fX3ZhX2xpc3QKCgoKCiNkZWZpbmUgX19H TlVDX1ZBX0xJU1QgCgojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRhcmcu aCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgNTAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNo NjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKI2RlZmluZSB2YV9z dGFydCh2LGwpIF9fYnVpbHRpbl92YV9zdGFydCh2LGwpCgojZGVmaW5lIHZhX2VuZCh2KSBf X2J1aWx0aW5fdmFfZW5kKHYpCiNkZWZpbmUgdmFfYXJnKHYsbCkgX19idWlsdGluX3ZhX2Fy Zyh2LGwpCgoKI2RlZmluZSB2YV9jb3B5KGQscykgX19idWlsdGluX3ZhX2NvcHkoZCxzKQoK I2RlZmluZSBfX3ZhX2NvcHkoZCxzKSBfX2J1aWx0aW5fdmFfY29weShkLHMpCiMgMTAzICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0 LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19nbnVj X3ZhX2xpc3QgdmFfbGlzdDsKCgoKCgojZGVmaW5lIF9WQV9MSVNUXyAKCgojZGVmaW5lIF9W QV9MSVNUIAoKCiNkZWZpbmUgX1ZBX0xJU1RfREVGSU5FRCAKCgojZGVmaW5lIF9WQV9MSVNU X1RfSCAKCgojZGVmaW5lIF9fdmFfbGlzdF9fIAojIDM0ICJzeXN0ZW0uaCIgMgojIDQ3ICJz eXN0ZW0uaCIKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIv Z2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAz IDQKIyAzOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9s b29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojZGVm aW5lIF9TVERERUZfSCAKI2RlZmluZSBfU1REREVGX0hfIAoKI2RlZmluZSBfQU5TSV9TVERE RUZfSCAKIyAxMzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9u ZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9n Y2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQK I2RlZmluZSBfUFRSRElGRl9UIAojZGVmaW5lIF9UX1BUUkRJRkZfIAojZGVmaW5lIF9UX1BU UkRJRkYgCiNkZWZpbmUgX19QVFJESUZGX1QgCiNkZWZpbmUgX1BUUkRJRkZfVF8gCiNkZWZp bmUgX0JTRF9QVFJESUZGX1RfIAojZGVmaW5lIF9fX2ludF9wdHJkaWZmX3RfaCAKI2RlZmlu ZSBfR0NDX1BUUkRJRkZfVCAKI2RlZmluZSBfUFRSRElGRl9UX0RFQ0xBUkVEIAojZGVmaW5l IF9fREVGSU5FRF9wdHJkaWZmX3QgCgoKCnR5cGVkZWYgbG9uZyBpbnQgcHRyZGlmZl90Owoj IDE1OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29u Z2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYg X19uZWVkX3B0cmRpZmZfdAojIDE4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3Rk ZGVmLmgiIDMgNAojZGVmaW5lIF9fc2l6ZV90X18gCiNkZWZpbmUgX19TSVpFX1RfXyAKI2Rl ZmluZSBfU0laRV9UIAojZGVmaW5lIF9TWVNfU0laRV9UX0ggCiNkZWZpbmUgX1RfU0laRV8g CiNkZWZpbmUgX1RfU0laRSAKI2RlZmluZSBfX1NJWkVfVCAKI2RlZmluZSBfU0laRV9UXyAK I2RlZmluZSBfQlNEX1NJWkVfVF8gCiNkZWZpbmUgX1NJWkVfVF9ERUZJTkVEXyAKI2RlZmlu ZSBfU0laRV9UX0RFRklORUQgCiNkZWZpbmUgX0JTRF9TSVpFX1RfREVGSU5FRF8gCiNkZWZp bmUgX1NJWkVfVF9ERUNMQVJFRCAKI2RlZmluZSBfX0RFRklORURfc2l6ZV90IAojZGVmaW5l IF9fX2ludF9zaXplX3RfaCAKI2RlZmluZSBfR0NDX1NJWkVfVCAKI2RlZmluZSBfU0laRVRf IAoKCgoKCgojZGVmaW5lIF9fc2l6ZV90IAoKCgoKCnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBp bnQgc2l6ZV90OwojIDIzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgi IDMgNAojdW5kZWYgX19uZWVkX3NpemVfdAojIDI2NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2lu Y2x1ZGUvc3RkZGVmLmgiIDMgNAojZGVmaW5lIF9fd2NoYXJfdF9fIAojZGVmaW5lIF9fV0NI QVJfVF9fIAojZGVmaW5lIF9XQ0hBUl9UIAojZGVmaW5lIF9UX1dDSEFSXyAKI2RlZmluZSBf VF9XQ0hBUiAKI2RlZmluZSBfX1dDSEFSX1QgCiNkZWZpbmUgX1dDSEFSX1RfIAojZGVmaW5l IF9CU0RfV0NIQVJfVF8gCiNkZWZpbmUgX1dDSEFSX1RfREVGSU5FRF8gCiNkZWZpbmUgX1dD SEFSX1RfREVGSU5FRCAKI2RlZmluZSBfV0NIQVJfVF9IIAojZGVmaW5lIF9fX2ludF93Y2hh cl90X2ggCiNkZWZpbmUgX19JTlRfV0NIQVJfVF9IIAojZGVmaW5lIF9HQ0NfV0NIQVJfVCAK I2RlZmluZSBfV0NIQVJfVF9ERUNMQVJFRCAKI2RlZmluZSBfX0RFRklORURfd2NoYXJfdCAK IyAyOTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9v bmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVm IF9CU0RfV0NIQVJfVF8KIyAzMjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRv b2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRy dW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRlL3N0ZGRl Zi5oIiAzIDQKdHlwZWRlZiBpbnQgd2NoYXJfdDsKIyAzNDkgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAu MS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF93Y2hhcl90CiMgMzk5ICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0 LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBOVUxMCgoK CgojZGVmaW5lIE5VTEwgKCh2b2lkICopMCkKCgoKCgojdW5kZWYgX19uZWVkX05VTEwKCgoK CiN1bmRlZiBvZmZzZXRvZgojZGVmaW5lIG9mZnNldG9mKFRZUEUsTUVNQkVSKSBfX2J1aWx0 aW5fb2Zmc2V0b2YgKFRZUEUsIE1FTUJFUikKCgoKCiNkZWZpbmUgX0dDQ19NQVhfQUxJR05f VCAKCgoKdHlwZWRlZiBzdHJ1Y3QgewogIGxvbmcgbG9uZyBfX21heF9hbGlnbl9sbCBfX2F0 dHJpYnV0ZV9fKChfX2FsaWduZWRfXyhfX2FsaWdub2ZfXyhsb25nIGxvbmcpKSkpOwogIGxv bmcgZG91YmxlIF9fbWF4X2FsaWduX2xkIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKF9f YWxpZ25vZl9fKGxvbmcgZG91YmxlKSkpKTsKIyA0MzYgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9p bmNsdWRlL3N0ZGRlZi5oIiAzIDQKfSBtYXhfYWxpZ25fdDsKIyA0OCAic3lzdGVtLmgiIDIK CgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDEgMyA0CiMgMjQgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojZGVmaW5lIF9TVERJT19IIDEK CiNkZWZpbmUgX19HTElCQ19JTlRFUk5BTF9TVEFSVElOR19IRUFERVJfSU1QTEVNRU5UQVRJ T04gCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNo NjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1zdGFy dC5oIiAxIDMgNAojIDMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hh aW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9s b29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVh ZGVyLXN0YXJ0LmgiIDMgNAojdW5kZWYgX19HTElCQ19JTlRFUk5BTF9TVEFSVElOR19IRUFE RVJfSU1QTEVNRU5UQVRJT04KCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVy ZXMuaCIgMSAzIDQKIyAxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIg MyA0CiNkZWZpbmUgX0ZFQVRVUkVTX0ggMQojIDEyNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvZmVhdHVyZXMuaCIgMyA0CiN1bmRlZiBfX1VTRV9JU09DMTEKI3VuZGVmIF9fVVNFX0lT T0M5OQojdW5kZWYgX19VU0VfSVNPQzk1CiN1bmRlZiBfX1VTRV9JU09DWFgxMQojdW5kZWYg X19VU0VfUE9TSVgKI3VuZGVmIF9fVVNFX1BPU0lYMgojdW5kZWYgX19VU0VfUE9TSVgxOTkz MDkKI3VuZGVmIF9fVVNFX1BPU0lYMTk5NTA2CiN1bmRlZiBfX1VTRV9YT1BFTgojdW5kZWYg X19VU0VfWE9QRU5fRVhURU5ERUQKI3VuZGVmIF9fVVNFX1VOSVg5OAojdW5kZWYgX19VU0Vf WE9QRU4ySwojdW5kZWYgX19VU0VfWE9QRU4yS1hTSQojdW5kZWYgX19VU0VfWE9QRU4ySzgK I3VuZGVmIF9fVVNFX1hPUEVOMks4WFNJCiN1bmRlZiBfX1VTRV9MQVJHRUZJTEUKI3VuZGVm IF9fVVNFX0xBUkdFRklMRTY0CiN1bmRlZiBfX1VTRV9GSUxFX09GRlNFVDY0CiN1bmRlZiBf X1VTRV9NSVNDCiN1bmRlZiBfX1VTRV9BVEZJTEUKI3VuZGVmIF9fVVNFX0RZTkFNSUNfU1RB Q0tfU0laRQojdW5kZWYgX19VU0VfR05VCiN1bmRlZiBfX1VTRV9GT1JUSUZZX0xFVkVMCiN1 bmRlZiBfX0tFUk5FTF9TVFJJQ1RfTkFNRVMKI3VuZGVmIF9fR0xJQkNfVVNFX0lTT0MyWAoj dW5kZWYgX19HTElCQ19VU0VfREVQUkVDQVRFRF9HRVRTCiN1bmRlZiBfX0dMSUJDX1VTRV9E RVBSRUNBVEVEX1NDQU5GCiN1bmRlZiBfX0dMSUJDX1VTRV9DMlhfU1RSVE9MCgoKCgojZGVm aW5lIF9fS0VSTkVMX1NUUklDVF9OQU1FUyAKIyAxNzAgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2ZlYXR1cmVzLmgiIDMgNAojZGVmaW5lIF9fR05VQ19QUkVSRVEobWFqLG1pbikgKChf X0dOVUNfXyA8PCAxNikgKyBfX0dOVUNfTUlOT1JfXyA+PSAoKG1haikgPDwgMTYpICsgKG1p bikpCiMgMTg0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKI2Rl ZmluZSBfX2dsaWJjX2NsYW5nX3ByZXJlcShtYWosbWluKSAwCgoKCiNkZWZpbmUgX19HTElC Q19VU0UoRikgX19HTElCQ19VU0VfICMjIEYKIyAyMDMgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2ZlYXR1cmVzLmgiIDMgNAojdW5kZWYgX0lTT0M5NV9TT1VSQ0UKI2RlZmluZSBfSVNP Qzk1X1NPVVJDRSAxCiN1bmRlZiBfSVNPQzk5X1NPVVJDRQojZGVmaW5lIF9JU09DOTlfU09V UkNFIDEKI3VuZGVmIF9JU09DMTFfU09VUkNFCiNkZWZpbmUgX0lTT0MxMV9TT1VSQ0UgMQoj dW5kZWYgX0lTT0MyWF9TT1VSQ0UKI2RlZmluZSBfSVNPQzJYX1NPVVJDRSAxCiN1bmRlZiBf UE9TSVhfU09VUkNFCiNkZWZpbmUgX1BPU0lYX1NPVVJDRSAxCiN1bmRlZiBfUE9TSVhfQ19T T1VSQ0UKI2RlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwODA5TAojdW5kZWYgX1hPUEVOX1NP VVJDRQojZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNzAwCiN1bmRlZiBfWE9QRU5fU09VUkNFX0VY VEVOREVECiNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAxCiN1bmRlZiBfTEFSR0VG SUxFNjRfU09VUkNFCiNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRSAxCiN1bmRlZiBfREVG QVVMVF9TT1VSQ0UKI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UgMQojdW5kZWYgX0FURklMRV9T T1VSQ0UKI2RlZmluZSBfQVRGSUxFX1NPVVJDRSAxCiN1bmRlZiBfRFlOQU1JQ19TVEFDS19T SVpFX1NPVVJDRQojZGVmaW5lIF9EWU5BTUlDX1NUQUNLX1NJWkVfU09VUkNFIDEKIyAyMzcg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojdW5kZWYgX0RFRkFV TFRfU09VUkNFCiNkZWZpbmUgX0RFRkFVTFRfU09VUkNFIDEKCgoKCgojZGVmaW5lIF9fR0xJ QkNfVVNFX0lTT0MyWCAxCgoKCgoKCgojZGVmaW5lIF9fVVNFX0lTT0MxMSAxCgoKCgoKCiNk ZWZpbmUgX19VU0VfSVNPQzk5IDEKCgoKCgoKI2RlZmluZSBfX1VTRV9JU09DOTUgMQojIDI4 OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hh aW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiN1bmRlZiBfUE9T SVhfU09VUkNFCiNkZWZpbmUgX1BPU0lYX1NPVVJDRSAxCiN1bmRlZiBfUE9TSVhfQ19TT1VS Q0UKI2RlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMjAwODA5TAojIDMyNyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiNkZWZpbmUgX19VU0VfUE9TSVggMQoKCgoj ZGVmaW5lIF9fVVNFX1BPU0lYMiAxCgoKCiNkZWZpbmUgX19VU0VfUE9TSVgxOTkzMDkgMQoK CgojZGVmaW5lIF9fVVNFX1BPU0lYMTk5NTA2IDEKCgoKI2RlZmluZSBfX1VTRV9YT1BFTjJL IDEKI3VuZGVmIF9fVVNFX0lTT0M5NQojZGVmaW5lIF9fVVNFX0lTT0M5NSAxCiN1bmRlZiBf X1VTRV9JU09DOTkKI2RlZmluZSBfX1VTRV9JU09DOTkgMQoKCgojZGVmaW5lIF9fVVNFX1hP UEVOMks4IDEKI3VuZGVmIF9BVEZJTEVfU09VUkNFCiNkZWZpbmUgX0FURklMRV9TT1VSQ0Ug MQoKCgojZGVmaW5lIF9fVVNFX1hPUEVOIDEKCiNkZWZpbmUgX19VU0VfWE9QRU5fRVhURU5E RUQgMQojZGVmaW5lIF9fVVNFX1VOSVg5OCAxCiN1bmRlZiBfTEFSR0VGSUxFX1NPVVJDRQoj ZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDEKCgojZGVmaW5lIF9fVVNFX1hPUEVOMks4IDEK I2RlZmluZSBfX1VTRV9YT1BFTjJLOFhTSSAxCgojZGVmaW5lIF9fVVNFX1hPUEVOMksgMQoj ZGVmaW5lIF9fVVNFX1hPUEVOMktYU0kgMQojdW5kZWYgX19VU0VfSVNPQzk1CiNkZWZpbmUg X19VU0VfSVNPQzk1IDEKI3VuZGVmIF9fVVNFX0lTT0M5OQojZGVmaW5lIF9fVVNFX0lTT0M5 OSAxCiMgMzgzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKI2Rl ZmluZSBfX1VTRV9MQVJHRUZJTEUgMQoKCgojZGVmaW5lIF9fVVNFX0xBUkdFRklMRTY0IDEK CgoKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy10aW1lNjQuaCIg MSAzIDQKIyAyMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVyZXMtdGltZTY0Lmgi IDMgNAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAz IDQKIyAxOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNo NjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAzIDQK I2RlZmluZSBfX1dPUkRTSVpFIDY0CiNkZWZpbmUgX19XT1JEU0laRV9USU1FNjRfQ09NUEFU MzIgMAojIDIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy10aW1lNjQuaCIg MiAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3RpbWVzaXplLmgiIDEg MyA0CiMgMjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdGltZXNpemUuaCIgMyA0 CiNkZWZpbmUgX19USU1FU0laRSA2NAojIDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9m ZWF0dXJlcy10aW1lNjQuaCIgMiAzIDQKIyAzOTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2ZlYXR1cmVzLmgiIDIgMyA0CgoKI2RlZmluZSBfX1VTRV9NSVNDIDEKCgoKI2RlZmluZSBf X1VTRV9BVEZJTEUgMQoKCgojZGVmaW5lIF9fVVNFX0RZTkFNSUNfU1RBQ0tfU0laRSAxCgoK CiNkZWZpbmUgX19VU0VfR05VIDEKIyA0MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Zl YXR1cmVzLmgiIDMgNAojZGVmaW5lIF9fVVNFX0ZPUlRJRllfTEVWRUwgMAoKCgoKCgoKI2Rl ZmluZSBfX0dMSUJDX1VTRV9ERVBSRUNBVEVEX0dFVFMgMAojIDQ2NSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiNkZWZpbmUgX19HTElCQ19VU0VfREVQUkVD QVRFRF9TQ0FORiAwCiMgNDc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mZWF0dXJlcy5o IiAzIDQKI2RlZmluZSBfX0dMSUJDX1VTRV9DMlhfU1RSVE9MIDEKIyA0ODkgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojdW5kZWYgX19HTlVfTElCUkFSWV9f CiNkZWZpbmUgX19HTlVfTElCUkFSWV9fIDYKCgoKI2RlZmluZSBfX0dMSUJDX18gMgojZGVm aW5lIF9fR0xJQkNfTUlOT1JfXyAzOAoKI2RlZmluZSBfX0dMSUJDX1BSRVJFUShtYWosbWlu KSAoKF9fR0xJQkNfXyA8PCAxNikgKyBfX0dMSUJDX01JTk9SX18gPj0gKChtYWopIDw8IDE2 KSArIChtaW4pKQoKCgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL2NkZWZz LmgiIDEgMyA0CiMgMjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAz IDQKI2RlZmluZSBfU1lTX0NERUZTX0ggMQojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9zeXMvY2RlZnMuaCIgMyA0CiN1bmRlZiBfX1AKI3VuZGVmIF9fUE1UCiMgNDUgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2dsaWJjX2hh c19hdHRyaWJ1dGUoYXR0cikgX19oYXNfYXR0cmlidXRlIChhdHRyKQoKCgoKI2RlZmluZSBf X2dsaWJjX2hhc19idWlsdGluKG5hbWUpIF9faGFzX2J1aWx0aW4gKG5hbWUpCgoKCgojZGVm aW5lIF9fZ2xpYmNfaGFzX2V4dGVuc2lvbihleHQpIF9faGFzX2V4dGVuc2lvbiAoZXh0KQoj IDY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUg X19MRUFGICwgX19sZWFmX18KI2RlZmluZSBfX0xFQUZfQVRUUiBfX2F0dHJpYnV0ZV9fICgo X19sZWFmX18pKQojIDc5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hh aW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9s b29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIg MyA0CiNkZWZpbmUgX19USFJPVyBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gX19MRUFG KSkKI2RlZmluZSBfX1RIUk9XTkwgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkKI2Rl ZmluZSBfX05USChmY3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyBfX0xFQUYpKSBm Y3QKI2RlZmluZSBfX05USE5MKGZjdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkg ZmN0CiMgMTAyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNk ZWZpbmUgX19DT0xEIF9fYXR0cmlidXRlX18gKChfX2NvbGRfXykpCiMgMTI1ICIvaG9tZS9j aGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxs L2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19QKGFyZ3MpIGFy Z3MKI2RlZmluZSBfX1BNVChhcmdzKSBhcmdzCgoKCgojZGVmaW5lIF9fQ09OQ0FUKHgseSkg eCAjIyB5CiNkZWZpbmUgX19TVFJJTkcoeCkgI3gKCgojZGVmaW5lIF9fcHRyX3Qgdm9pZCAq CgoKCgoKCgojZGVmaW5lIF9fQkVHSU5fREVDTFMgCiNkZWZpbmUgX19FTkRfREVDTFMgCgoK CgojZGVmaW5lIF9fYm9zKHB0cikgX19idWlsdGluX29iamVjdF9zaXplIChwdHIsIF9fVVNF X0ZPUlRJRllfTEVWRUwgPiAxKQojZGVmaW5lIF9fYm9zMChwdHIpIF9fYnVpbHRpbl9vYmpl Y3Rfc2l6ZSAocHRyLCAwKQoKCgoKCgoKI2RlZmluZSBfX2dsaWJjX29ianNpemUwKF9fbykg X19ib3MwIChfX28pCiNkZWZpbmUgX19nbGliY19vYmpzaXplKF9fbykgX19ib3MgKF9fbykK IyAyMTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmlu ZSBfX3dhcm5hdHRyKG1zZykgX19hdHRyaWJ1dGVfXygoX193YXJuaW5nX18gKG1zZykpKQoj ZGVmaW5lIF9fZXJyb3JkZWNsKG5hbWUsbXNnKSBleHRlcm4gdm9pZCBuYW1lICh2b2lkKSBf X2F0dHJpYnV0ZV9fKChfX2Vycm9yX18gKG1zZykpKQojIDIyNSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fZmxleGFyciBbXQojZGVmaW5l IF9fZ2xpYmNfYzk5X2ZsZXhhcnJfYXZhaWxhYmxlIDEKIyAyNTYgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX1JFRElSRUNUKG5hbWUscHJv dG8sYWxpYXMpIG5hbWUgcHJvdG8gX19hc21fXyAoX19BU01OQU1FICgjYWxpYXMpKQoKCgoK CgojZGVmaW5lIF9fUkVESVJFQ1RfTlRIKG5hbWUscHJvdG8sYWxpYXMpIG5hbWUgcHJvdG8g X19hc21fXyAoX19BU01OQU1FICgjYWxpYXMpKSBfX1RIUk9XCgojZGVmaW5lIF9fUkVESVJF Q1RfTlRITkwobmFtZSxwcm90byxhbGlhcykgbmFtZSBwcm90byBfX2FzbV9fIChfX0FTTU5B TUUgKCNhbGlhcykpIF9fVEhST1dOTAoKCiNkZWZpbmUgX19BU01OQU1FKGNuYW1lKSBfX0FT TU5BTUUyIChfX1VTRVJfTEFCRUxfUFJFRklYX18sIGNuYW1lKQojZGVmaW5lIF9fQVNNTkFN RTIocHJlZml4LGNuYW1lKSBfX1NUUklORyAocHJlZml4KSBjbmFtZQoKCiNkZWZpbmUgX19S RURJUkVDVF9GT1JUSUZZIF9fUkVESVJFQ1QKCgoKI2RlZmluZSBfX1JFRElSRUNUX0ZPUlRJ RllfTlRIIF9fUkVESVJFQ1RfTlRICiMgMjk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9z eXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19hdHRyaWJ1dGVfbWFsbG9jX18gX19hdHRyaWJ1 dGVfXyAoKF9fbWFsbG9jX18pKQoKCgoKCgoKI2RlZmluZSBfX2F0dHJpYnV0ZV9hbGxvY19z aXplX18ocGFyYW1zKSBfX2F0dHJpYnV0ZV9fICgoX19hbGxvY19zaXplX18gcGFyYW1zKSkK IyAzMTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmlu ZSBfX2F0dHJpYnV0ZV9hbGxvY19hbGlnbl9fKHBhcmFtKSBfX2F0dHJpYnV0ZV9fICgoX19h bGxvY19hbGlnbl9fIHBhcmFtKSkKIyAzMjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5 cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2F0dHJpYnV0ZV9wdXJlX18gX19hdHRyaWJ1dGVf XyAoKF9fcHVyZV9fKSkKCgoKCgoKI2RlZmluZSBfX2F0dHJpYnV0ZV9jb25zdF9fIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKQoKCgoKCiNkZWZpbmUgX19hdHRyaWJ1dGVfbWF5YmVf dW51c2VkX18gX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKQojIDM0NyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cmlidXRlX3Vz ZWRfXyBfX2F0dHJpYnV0ZV9fICgoX191c2VkX18pKQojZGVmaW5lIF9fYXR0cmlidXRlX25v aW5saW5lX18gX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVfXykpCgoKCgoKCgojZGVmaW5l IF9fYXR0cmlidXRlX2RlcHJlY2F0ZWRfXyBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVk X18pKQojIDM2NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAoj ZGVmaW5lIF9fYXR0cmlidXRlX2RlcHJlY2F0ZWRfbXNnX18obXNnKSBfX2F0dHJpYnV0ZV9f ICgoX19kZXByZWNhdGVkX18gKG1zZykpKQojIDM3OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4 KSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKIyAzODkgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2F0dHJpYnV0ZV9m b3JtYXRfc3RyZm1vbl9fKGEsYikgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc3Ry Zm1vbl9fLCBhLCBiKSkpCiMgNDAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2Rl ZnMuaCIgMyA0CiNkZWZpbmUgX19hdHRyaWJ1dGVfbm9ubnVsbF9fKHBhcmFtcykgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fIHBhcmFtcykpCgoKCgoKI2RlZmluZSBfX25vbm51bGwo cGFyYW1zKSBfX2F0dHJpYnV0ZV9ub25udWxsX18gKHBhcmFtcykKCgoKCgoKI2RlZmluZSBf X3JldHVybnNfbm9ubnVsbCBfX2F0dHJpYnV0ZV9fICgoX19yZXR1cm5zX25vbm51bGxfXykp CiMgNDIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZp bmUgX19hdHRyaWJ1dGVfd2Fybl91bnVzZWRfcmVzdWx0X18gX19hdHRyaWJ1dGVfXyAoKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKQojIDQzMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv c3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fd3VyIAoKCgoKCgoKI3VuZGVmIF9fYWx3YXlz X2lubGluZQojZGVmaW5lIF9fYWx3YXlzX2lubGluZSBfX2lubGluZSBfX2F0dHJpYnV0ZV9f ICgoX19hbHdheXNfaW5saW5lX18pKQojIDQ1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv c3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cmlidXRlX2FydGlmaWNpYWxfXyBfX2F0 dHJpYnV0ZV9fICgoX19hcnRpZmljaWFsX18pKQojIDQ2OCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fZXh0ZXJuX2lubGluZSBleHRlcm4g X19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkKI2RlZmluZSBfX2V4 dGVybl9hbHdheXNfaW5saW5lIGV4dGVybiBfX2Fsd2F5c19pbmxpbmUgX19hdHRyaWJ1dGVf XyAoKF9fZ251X2lubGluZV9fKSkKIyA0NzggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5 cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2ZvcnRpZnlfZnVuY3Rpb24gX19leHRlcm5fYWx3 YXlzX2lubGluZSBfX2F0dHJpYnV0ZV9hcnRpZmljaWFsX18KCgoKCgojZGVmaW5lIF9fdmFf YXJnX3BhY2soKSBfX2J1aWx0aW5fdmFfYXJnX3BhY2sgKCkKI2RlZmluZSBfX3ZhX2FyZ19w YWNrX2xlbigpIF9fYnVpbHRpbl92YV9hcmdfcGFja19sZW4gKCkKIyA1MTIgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX3Jlc3RyaWN0X2Fy ciBfX3Jlc3RyaWN0CiMgNTI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMu aCIgMyA0CiNkZWZpbmUgX19nbGliY191bmxpa2VseShjb25kKSBfX2J1aWx0aW5fZXhwZWN0 ICgoY29uZCksIDApCiNkZWZpbmUgX19nbGliY19saWtlbHkoY29uZCkgX19idWlsdGluX2V4 cGVjdCAoKGNvbmQpLCAxKQojIDU0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL2Nk ZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cmlidXRlX25vbnN0cmluZ19fIF9fYXR0cmlidXRl X18gKChfX25vbnN0cmluZ19fKSkKCgoKCgojdW5kZWYgX19hdHRyaWJ1dGVfY29weV9fCgoK CiNkZWZpbmUgX19hdHRyaWJ1dGVfY29weV9fKGFyZykgX19hdHRyaWJ1dGVfXyAoKF9fY29w eV9fIChhcmcpKSkKIyA1NzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5o IiAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEg MyA0CiMgMTggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMyA0 CiNkZWZpbmUgX19XT1JEU0laRSA2NAojZGVmaW5lIF9fV09SRFNJWkVfVElNRTY0X0NPTVBB VDMyIDAKIyA1NzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9u ZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25n YXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAyIDMg NAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbG9uZy1kb3VibGUuaCIgMSAz IDQKIyAyMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNo NjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9sb25nLWRvdWJsZS5oIiAz IDQKI2RlZmluZSBfX0xET1VCTEVfUkVESVJFQ1RTX1RPX0ZMT0FUMTI4X0FCSSAwCiMgNTc4 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMiAzIDQKIyA2MzQgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX0xEQkxf UkVESVIxKG5hbWUscHJvdG8sYWxpYXMpIG5hbWUgcHJvdG8KI2RlZmluZSBfX0xEQkxfUkVE SVIobmFtZSxwcm90bykgbmFtZSBwcm90bwojZGVmaW5lIF9fTERCTF9SRURJUjFfTlRIKG5h bWUscHJvdG8sYWxpYXMpIG5hbWUgcHJvdG8gX19USFJPVwojZGVmaW5lIF9fTERCTF9SRURJ Ul9OVEgobmFtZSxwcm90bykgbmFtZSBwcm90byBfX1RIUk9XCiNkZWZpbmUgX19MREJMX1JF RElSMl9ERUNMKG5hbWUpIAojZGVmaW5lIF9fTERCTF9SRURJUl9ERUNMKG5hbWUpIAoKI2Rl ZmluZSBfX1JFRElSRUNUX0xEQkwobmFtZSxwcm90byxhbGlhcykgX19SRURJUkVDVCAobmFt ZSwgcHJvdG8sIGFsaWFzKQojZGVmaW5lIF9fUkVESVJFQ1RfTlRIX0xEQkwobmFtZSxwcm90 byxhbGlhcykgX19SRURJUkVDVF9OVEggKG5hbWUsIHByb3RvLCBhbGlhcykKIyA2NTMgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2dsaWJj X21hY3JvX3dhcm5pbmcxKG1lc3NhZ2UpIF9QcmFnbWEgKCNtZXNzYWdlKQojZGVmaW5lIF9f Z2xpYmNfbWFjcm9fd2FybmluZyhtZXNzYWdlKSBfX2dsaWJjX21hY3JvX3dhcm5pbmcxIChH Q0Mgd2FybmluZyBtZXNzYWdlKQojIDY3MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lz L2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fSEFWRV9HRU5FUklDX1NFTEVDVElPTiAxCiMgNjgz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19h dHRyX2FjY2Vzcyh4KSBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyB4KSkKCgoKCgoKCiNk ZWZpbmUgX19mb3J0aWZpZWRfYXR0cl9hY2Nlc3MoYSxvLHMpIF9fYXR0cl9hY2Nlc3MgKChh LCBvLCBzKSkKCgojZGVmaW5lIF9fYXR0cl9hY2Nlc3Nfbm9uZShhcmdubykgX19hdHRyaWJ1 dGVfXyAoKF9fYWNjZXNzX18gKF9fbm9uZV9fLCBhcmdubykpKQojIDcwNyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cl9kZWFsbG9j KGRlYWxsb2MsYXJnbm8pIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fIChkZWFsbG9jLCBh cmdubykpKQoKI2RlZmluZSBfX2F0dHJfZGVhbGxvY19mcmVlIF9fYXR0cl9kZWFsbG9jIChf X2J1aWx0aW5fZnJlZSwgMSkKIyA3MTggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9j ZGVmcy5oIiAzIDQKI2RlZmluZSBfX2F0dHJpYnV0ZV9yZXR1cm5zX3R3aWNlX18gX19hdHRy aWJ1dGVfXyAoKF9fcmV0dXJuc190d2ljZV9fKSkKIyA1MDQgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL2ZlYXR1cmVzLmgiIDIgMyA0CiMgNTE5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9mZWF0dXJlcy5oIiAzIDQKI2RlZmluZSBfX1VTRV9FWFRFUk5fSU5MSU5FUyAxCgoKCgoK CgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2dudS9zdHVicy5oIiAxIDMgNAoKCgoK IyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMg MTggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMyA0CiNkZWZp bmUgX19XT1JEU0laRSA2NAojZGVmaW5lIF9fV09SRFNJWkVfVElNRTY0X0NPTVBBVDMyIDAK IyA2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMiAzIDQKCgoKCgoj IDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2dudS9zdHVicy1scDY0ZC5oIiAxIDMgNAoj IDEwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9nbnUvc3R1YnMtbHA2NGQuaCIgMyA0CiNk ZWZpbmUgX19zdHViX19fY29tcGF0X2JkZmx1c2ggCiNkZWZpbmUgX19zdHViX19fY29tcGF0 X2NyZWF0ZV9tb2R1bGUgCiNkZWZpbmUgX19zdHViX19fY29tcGF0X2dldF9rZXJuZWxfc3lt cyAKI2RlZmluZSBfX3N0dWJfX19jb21wYXRfcXVlcnlfbW9kdWxlIAojZGVmaW5lIF9fc3R1 Yl9fX2NvbXBhdF91c2VsaWIgCiNkZWZpbmUgX19zdHViX2NoZmxhZ3MgCiNkZWZpbmUgX19z dHViX2ZjaGZsYWdzIAojZGVmaW5lIF9fc3R1Yl9ndHR5IAojZGVmaW5lIF9fc3R1Yl9yZXZv a2UgCiNkZWZpbmUgX19zdHViX3NldGxvZ2luIAojZGVmaW5lIF9fc3R1Yl9zaWdyZXR1cm4g CiNkZWZpbmUgX19zdHViX3N0dHkgCiMgMTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2du dS9zdHVicy5oIiAyIDMgNAojIDUyOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmVhdHVy ZXMuaCIgMiAzIDQKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhl YWRlci1zdGFydC5oIiAyIDMgNAoKCgojdW5kZWYgX19HTElCQ19VU0VfTElCX0VYVDIKCgoj ZGVmaW5lIF9fR0xJQkNfVVNFX0xJQl9FWFQyIDEKIyA2NyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvYml0cy9saWJjLWhlYWRlci1zdGFydC5oIiAzIDQKI3VuZGVmIF9fR0xJQkNfVVNF X0lFQ182MDU1OV9CRlBfRVhUCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9CRlBf RVhUIDEKCgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9CRlBfRVhUX0MyWAoKI2Rl ZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfQkZQX0VYVF9DMlggMQoKCgojdW5kZWYgX19H TElCQ19VU0VfSUVDXzYwNTU5X0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlf RVhUIDEKIyA5MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1z dGFydC5oIiAzIDQKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFQKCiNk ZWZpbmUgX19HTElCQ19VU0VfSUVDXzYwNTU5X0ZVTkNTX0VYVCAxCgoKCiN1bmRlZiBfX0dM SUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhUX0MyWAoKI2RlZmluZSBfX0dMSUJDX1VTRV9J RUNfNjA1NTlfRlVOQ1NfRVhUX0MyWCAxCgoKCgoKCiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNf NjA1NTlfVFlQRVNfRVhUCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9UWVBFU19F WFQgMQojIDI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCgoj ZGVmaW5lIF9fbmVlZF9zaXplX3QgCiNkZWZpbmUgX19uZWVkX05VTEwgCiMgMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51 eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTU4ICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdu dS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfcHRyZGlmZl90 CiMgMjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xv b25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRl ZiBfX25lZWRfc2l6ZV90CiMgMzQ5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRk ZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfd2NoYXJfdAojIDM5OSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQu MC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgTlVMTAoKCgoKI2RlZmluZSBOVUxM ICgodm9pZCAqKTApCgoKCgoKI3VuZGVmIF9fbmVlZF9OVUxMCgoKCgojdW5kZWYgb2Zmc2V0 b2YKI2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJFUikgX19idWlsdGluX29mZnNldG9mIChU WVBFLCBNRU1CRVIpCiMgMzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIg MyA0CgojZGVmaW5lIF9fbmVlZF9fX3ZhX2xpc3QgCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMyA0CiMgMjQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2JpdHMvdHlwZXMuaCIgMyA0CiNkZWZpbmUgX0JJVFNfVFlQRVNfSCAxCgoKIyAxICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMTggIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMyA0CiNkZWZpbmUgX19X T1JEU0laRSA2NAojZGVmaW5lIF9fV09SRFNJWkVfVElNRTY0X0NPTVBBVDMyIDAKIyAyOCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMgNAojIDEgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdGltZXNpemUuaCIgMSAzIDQKIyAyMCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aW1lc2l6ZS5oIiAzIDQKI2RlZmluZSBfX1RJTUVT SVpFIDY0CiMgMjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9u ZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25n YXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAz IDQKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQg c2hvcnQgaW50IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2ludDsKdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VfbG9uZzsKCgp0eXBlZGVmIHNpZ25lZCBjaGFy IF9faW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNp Z25lZCBzaG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBf X3VpbnQxNl90Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2ln bmVkIGludCBfX3VpbnQzMl90OwoKdHlwZWRlZiBzaWduZWQgbG9uZyBpbnQgX19pbnQ2NF90 Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdWludDY0X3Q7CgoKCgoKCnR5cGVkZWYg X19pbnQ4X3QgX19pbnRfbGVhc3Q4X3Q7CnR5cGVkZWYgX191aW50OF90IF9fdWludF9sZWFz dDhfdDsKdHlwZWRlZiBfX2ludDE2X3QgX19pbnRfbGVhc3QxNl90Owp0eXBlZGVmIF9fdWlu dDE2X3QgX191aW50X2xlYXN0MTZfdDsKdHlwZWRlZiBfX2ludDMyX3QgX19pbnRfbGVhc3Qz Ml90Owp0eXBlZGVmIF9fdWludDMyX3QgX191aW50X2xlYXN0MzJfdDsKdHlwZWRlZiBfX2lu dDY0X3QgX19pbnRfbGVhc3Q2NF90Owp0eXBlZGVmIF9fdWludDY0X3QgX191aW50X2xlYXN0 NjRfdDsKCgoKdHlwZWRlZiBsb25nIGludCBfX3F1YWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBs b25nIGludCBfX3VfcXVhZF90OwoKCgoKCgoKdHlwZWRlZiBsb25nIGludCBfX2ludG1heF90 Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdWludG1heF90OwojIDEwOSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAzIDQKI2RlZmluZSBfX1MxNl9UWVBF IHNob3J0IGludAojZGVmaW5lIF9fVTE2X1RZUEUgdW5zaWduZWQgc2hvcnQgaW50CiNkZWZp bmUgX19TMzJfVFlQRSBpbnQKI2RlZmluZSBfX1UzMl9UWVBFIHVuc2lnbmVkIGludAojZGVm aW5lIF9fU0xPTkdXT1JEX1RZUEUgbG9uZyBpbnQKI2RlZmluZSBfX1VMT05HV09SRF9UWVBF IHVuc2lnbmVkIGxvbmcgaW50CiMgMTI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L3R5cGVzLmgiIDMgNAojZGVmaW5lIF9fU1FVQURfVFlQRSBsb25nIGludAojZGVmaW5lIF9f VVFVQURfVFlQRSB1bnNpZ25lZCBsb25nIGludAojZGVmaW5lIF9fU1dPUkRfVFlQRSBsb25n IGludAojZGVmaW5lIF9fVVdPUkRfVFlQRSB1bnNpZ25lZCBsb25nIGludAojZGVmaW5lIF9f U0xPTkczMl9UWVBFIGludAojZGVmaW5lIF9fVUxPTkczMl9UWVBFIHVuc2lnbmVkIGludAoj ZGVmaW5lIF9fUzY0X1RZUEUgbG9uZyBpbnQKI2RlZmluZSBfX1U2NF9UWVBFIHVuc2lnbmVk IGxvbmcgaW50CgojZGVmaW5lIF9fU1REX1RZUEUgdHlwZWRlZgoKCgojIDEgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXNpemVzLmgiIDEgMyA0CiMgMjQgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXNpemVzLmgiIDMgNAojZGVmaW5lIF9CSVRTX1RZ UEVTSVpFU19IIDEKIyA0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlc2l6 ZXMuaCIgMyA0CiNkZWZpbmUgX19JTk9fVF9UWVBFIF9fVUxPTkdXT1JEX1RZUEUKI2RlZmlu ZSBfX09GRl9UX1RZUEUgX19TTE9OR1dPUkRfVFlQRQojZGVmaW5lIF9fUkxJTV9UX1RZUEUg X19VTE9OR1dPUkRfVFlQRQojZGVmaW5lIF9fQkxLQ05UX1RfVFlQRSBfX1NMT05HV09SRF9U WVBFCiNkZWZpbmUgX19GU0JMS0NOVF9UX1RZUEUgX19VTE9OR1dPUkRfVFlQRQojZGVmaW5l IF9fRlNGSUxDTlRfVF9UWVBFIF9fVUxPTkdXT1JEX1RZUEUKI2RlZmluZSBfX1RJTUVfVF9U WVBFIF9fU0xPTkdXT1JEX1RZUEUKI2RlZmluZSBfX1NVU0VDT05EU19UX1RZUEUgX19TTE9O R1dPUkRfVFlQRQoKCiNkZWZpbmUgX19ERVZfVF9UWVBFIF9fVVFVQURfVFlQRQojZGVmaW5l IF9fVUlEX1RfVFlQRSBfX1UzMl9UWVBFCiNkZWZpbmUgX19HSURfVF9UWVBFIF9fVTMyX1RZ UEUKI2RlZmluZSBfX0lOTzY0X1RfVFlQRSBfX1VRVUFEX1RZUEUKI2RlZmluZSBfX01PREVf VF9UWVBFIF9fVTMyX1RZUEUKI2RlZmluZSBfX05MSU5LX1RfVFlQRSBfX1UzMl9UWVBFCiNk ZWZpbmUgX19PRkY2NF9UX1RZUEUgX19TUVVBRF9UWVBFCiNkZWZpbmUgX19QSURfVF9UWVBF IF9fUzMyX1RZUEUKI2RlZmluZSBfX1JMSU02NF9UX1RZUEUgX19VUVVBRF9UWVBFCiNkZWZp bmUgX19CTEtDTlQ2NF9UX1RZUEUgX19TUVVBRF9UWVBFCiNkZWZpbmUgX19GU0JMS0NOVDY0 X1RfVFlQRSBfX1VRVUFEX1RZUEUKI2RlZmluZSBfX0ZTRklMQ05UNjRfVF9UWVBFIF9fVVFV QURfVFlQRQojZGVmaW5lIF9fRlNXT1JEX1RfVFlQRSBfX1NXT1JEX1RZUEUKI2RlZmluZSBf X0lEX1RfVFlQRSBfX1UzMl9UWVBFCiNkZWZpbmUgX19DTE9DS19UX1RZUEUgX19TTE9OR1dP UkRfVFlQRQojZGVmaW5lIF9fVVNFQ09ORFNfVF9UWVBFIF9fVTMyX1RZUEUKI2RlZmluZSBf X1NVU0VDT05EUzY0X1RfVFlQRSBfX1NRVUFEX1RZUEUKI2RlZmluZSBfX0RBRERSX1RfVFlQ RSBfX1MzMl9UWVBFCiNkZWZpbmUgX19LRVlfVF9UWVBFIF9fUzMyX1RZUEUKI2RlZmluZSBf X0NMT0NLSURfVF9UWVBFIF9fUzMyX1RZUEUKI2RlZmluZSBfX1RJTUVSX1RfVFlQRSB2b2lk ICoKI2RlZmluZSBfX0JMS1NJWkVfVF9UWVBFIF9fUzMyX1RZUEUKI2RlZmluZSBfX0ZTSURf VF9UWVBFIHN0cnVjdCB7IGludCBfX3ZhbFsyXTsgfQojZGVmaW5lIF9fU1NJWkVfVF9UWVBF IF9fU1dPUkRfVFlQRQojZGVmaW5lIF9fU1lTQ0FMTF9TTE9OR19UWVBFIF9fU0xPTkdXT1JE X1RZUEUKI2RlZmluZSBfX1NZU0NBTExfVUxPTkdfVFlQRSBfX1VMT05HV09SRF9UWVBFCiNk ZWZpbmUgX19DUFVfTUFTS19UWVBFIF9fVUxPTkdXT1JEX1RZUEUKCgoKCgojZGVmaW5lIF9f T0ZGX1RfTUFUQ0hFU19PRkY2NF9UIDEKCgojZGVmaW5lIF9fSU5PX1RfTUFUQ0hFU19JTk82 NF9UIDEKCgojZGVmaW5lIF9fUkxJTV9UX01BVENIRVNfUkxJTTY0X1QgMQoKCiNkZWZpbmUg X19TVEFURlNfTUFUQ0hFU19TVEFURlM2NCAxCgoKI2RlZmluZSBfX0tFUk5FTF9PTERfVElN RVZBTF9NQVRDSEVTX1RJTUVWQUw2NCAoX19XT1JEU0laRSA9PSA2NCkKIyAxMDQgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXNpemVzLmgiIDMgNAojZGVmaW5lIF9fRkRf U0VUU0laRSAxMDI0CiMgMTQyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVz LmgiIDIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aW1lNjQuaCIg MSAzIDQKIyAyNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aW1lNjQuaCIgMyA0 CiNkZWZpbmUgX0JJVFNfVElNRTY0X0ggMQoKCgoKCiNkZWZpbmUgX19USU1FNjRfVF9UWVBF IF9fVElNRV9UX1RZUEUKIyAxNDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRv b2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRy dW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlw ZXMuaCIgMiAzIDQKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZGV2X3Q7CnR5cGVk ZWYgdW5zaWduZWQgaW50IF9fdWlkX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fZ2lkX3Q7 CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19pbm9fdDsKdHlwZWRlZiB1bnNpZ25lZCBs b25nIGludCBfX2lubzY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fbW9kZV90Owp0eXBl ZGVmIHVuc2lnbmVkIGludCBfX25saW5rX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19vZmZfdDsK dHlwZWRlZiBsb25nIGludCBfX29mZjY0X3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVk ZWYgc3RydWN0IHsgaW50IF9fdmFsWzJdOyB9IF9fZnNpZF90Owp0eXBlZGVmIGxvbmcgaW50 IF9fY2xvY2tfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3JsaW1fdDsKdHlwZWRl ZiB1bnNpZ25lZCBsb25nIGludCBfX3JsaW02NF90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBf X2lkX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50 IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0eXBlZGVm IGxvbmcgaW50IF9fc3VzZWNvbmRzNjRfdDsKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlw ZWRlZiBpbnQgX19rZXlfdDsKCgp0eXBlZGVmIGludCBfX2Nsb2NraWRfdDsKCgp0eXBlZGVm IHZvaWQgKiBfX3RpbWVyX3Q7CgoKdHlwZWRlZiBpbnQgX19ibGtzaXplX3Q7CgoKCgp0eXBl ZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19ibGtjbnQ2NF90 OwoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2Jsa2NudF90Owp0eXBlZGVmIHVu c2lnbmVkIGxvbmcgaW50IF9fZnNibGtjbnQ2NF90OwoKCnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBpbnQgX19mc2ZpbGNudF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNmaWxj bnQ2NF90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX19mc3dvcmRfdDsKCnR5cGVkZWYgbG9uZyBp bnQgX19zc2l6ZV90OwoKCnR5cGVkZWYgbG9uZyBpbnQgX19zeXNjYWxsX3Nsb25nX3Q7Cgp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fc3lzY2FsbF91bG9uZ190OwoKCgp0eXBlZGVm IF9fb2ZmNjRfdCBfX2xvZmZfdDsKdHlwZWRlZiBjaGFyICpfX2NhZGRyX3Q7CgoKdHlwZWRl ZiBsb25nIGludCBfX2ludHB0cl90OwoKCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fc29ja2xl bl90OwoKCgoKdHlwZWRlZiBpbnQgX19zaWdfYXRvbWljX3Q7CiMgMjI2ICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMgNAojdW5kZWYgX19TVERfVFlQRQojIDM5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDEgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvX19mcG9zX3QuaCIgMSAzIDQKCiNkZWZpbmUg X19fX19mcG9zX3RfZGVmaW5lZCAxCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL3R5cGVzL19fbWJzdGF0ZV90LmgiIDEgMyA0CgojZGVmaW5lIF9fX19tYnN0YXRlX3Rf ZGVmaW5lZCAxCiMgMTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvX19t YnN0YXRlX3QuaCIgMyA0CnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19jb3VudDsKICB1bmlv bgogIHsKICAgIHVuc2lnbmVkIGludCBfX3djaDsKICAgIGNoYXIgX193Y2hiWzRdOwogIH0g X192YWx1ZTsKfSBfX21ic3RhdGVfdDsKIyA2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL3R5cGVzL19fZnBvc190LmgiIDIgMyA0CgoKCgp0eXBlZGVmIHN0cnVjdCBfR19mcG9z X3QKewogIF9fb2ZmX3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfX2Zwb3Nf dDsKIyA0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNo NjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKIyAxICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL19fZnBvczY0X3QuaCIgMSAzIDQK CiNkZWZpbmUgX19fX19mcG9zNjRfdF9kZWZpbmVkIDEKCgoKCgoKCnR5cGVkZWYgc3RydWN0 IF9HX2Zwb3M2NF90CnsKICBfX29mZjY0X3QgX19wb3M7CiAgX19tYnN0YXRlX3QgX19zdGF0 ZTsKfSBfX2Zwb3M2NF90OwojIDQxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5o IiAyIDMgNAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9u ZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25n YXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvX19GSUxF LmgiIDEgMyA0CgojZGVmaW5lIF9fX19GSUxFX2RlZmluZWQgMQoKc3RydWN0IF9JT19GSUxF Owp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNDIgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv Yml0cy90eXBlcy9GSUxFLmgiIDEgMyA0CgojZGVmaW5lIF9fRklMRV9kZWZpbmVkIDEKCnN0 cnVjdCBfSU9fRklMRTsKCgp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwojIDQzICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDEgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3RydWN0X0ZJTEUuaCIgMSAzIDQKIyAxOSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5z dGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zdHJ1Y3RfRklMRS5oIiAzIDQKI2Rl ZmluZSBfX3N0cnVjdF9GSUxFX2RlZmluZWQgMQojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3R5cGVzL3N0cnVjdF9GSUxFLmgiIDMgNApzdHJ1Y3QgX0lPX0ZJTEU7CnN0 cnVjdCBfSU9fbWFya2VyOwpzdHJ1Y3QgX0lPX2NvZGVjdnQ7CnN0cnVjdCBfSU9fd2lkZV9k YXRhOwoKCgoKdHlwZWRlZiB2b2lkIF9JT19sb2NrX3Q7CgoKCgoKc3RydWN0IF9JT19GSUxF CnsKICBpbnQgX2ZsYWdzOwoKCiAgY2hhciAqX0lPX3JlYWRfcHRyOwogIGNoYXIgKl9JT19y ZWFkX2VuZDsKICBjaGFyICpfSU9fcmVhZF9iYXNlOwogIGNoYXIgKl9JT193cml0ZV9iYXNl OwogIGNoYXIgKl9JT193cml0ZV9wdHI7CiAgY2hhciAqX0lPX3dyaXRlX2VuZDsKICBjaGFy ICpfSU9fYnVmX2Jhc2U7CiAgY2hhciAqX0lPX2J1Zl9lbmQ7CgoKICBjaGFyICpfSU9fc2F2 ZV9iYXNlOwogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsKICBjaGFyICpfSU9fc2F2ZV9lbmQ7 CgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxFICpf Y2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfZmxhZ3MyOwogIF9fb2ZmX3QgX29sZF9v ZmZzZXQ7CgoKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQgY2hhciBf dnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCiAgX0lPX2xvY2tfdCAqX2xv Y2s7CgoKCgoKCgogIF9fb2ZmNjRfdCBfb2Zmc2V0OwoKICBzdHJ1Y3QgX0lPX2NvZGVjdnQg Kl9jb2RlY3Z0OwogIHN0cnVjdCBfSU9fd2lkZV9kYXRhICpfd2lkZV9kYXRhOwogIHN0cnVj dCBfSU9fRklMRSAqX2ZyZWVyZXNfbGlzdDsKICB2b2lkICpfZnJlZXJlc19idWY7CiAgc2l6 ZV90IF9fcGFkNTsKICBpbnQgX21vZGU7CgogIGNoYXIgX3VudXNlZDJbMTUgKiBzaXplb2Yg KGludCkgLSA0ICogc2l6ZW9mICh2b2lkICopIC0gc2l6ZW9mIChzaXplX3QpXTsKfTsKCgoj ZGVmaW5lIF9fZ2V0Y191bmxvY2tlZF9ib2R5KF9mcCkgKF9fZ2xpYmNfdW5saWtlbHkgKChf ZnApLT5fSU9fcmVhZF9wdHIgPj0gKF9mcCktPl9JT19yZWFkX2VuZCkgPyBfX3VmbG93IChf ZnApIDogKih1bnNpZ25lZCBjaGFyICopIChfZnApLT5fSU9fcmVhZF9wdHIrKykKCgoKI2Rl ZmluZSBfX3B1dGNfdW5sb2NrZWRfYm9keShfY2gsX2ZwKSAoX19nbGliY191bmxpa2VseSAo KF9mcCktPl9JT193cml0ZV9wdHIgPj0gKF9mcCktPl9JT193cml0ZV9lbmQpID8gX19vdmVy ZmxvdyAoX2ZwLCAodW5zaWduZWQgY2hhcikgKF9jaCkpIDogKHVuc2lnbmVkIGNoYXIpICgq KF9mcCktPl9JT193cml0ZV9wdHIrKyA9IChfY2gpKSkKCgoKCiNkZWZpbmUgX0lPX0VPRl9T RUVOIDB4MDAxMAojZGVmaW5lIF9fZmVvZl91bmxvY2tlZF9ib2R5KF9mcCkgKCgoX2ZwKS0+ X2ZsYWdzICYgX0lPX0VPRl9TRUVOKSAhPSAwKQoKI2RlZmluZSBfSU9fRVJSX1NFRU4gMHgw MDIwCiNkZWZpbmUgX19mZXJyb3JfdW5sb2NrZWRfYm9keShfZnApICgoKF9mcCktPl9mbGFn cyAmIF9JT19FUlJfU0VFTikgIT0gMCkKCiNkZWZpbmUgX0lPX1VTRVJfTE9DSyAweDgwMDAK IyA0NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgojIDEgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvY29va2llX2lvX2Z1bmN0aW9uc190 LmgiIDEgMyA0CiMgMTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvY29v a2llX2lvX2Z1bmN0aW9uc190LmgiIDMgNAojZGVmaW5lIF9fY29va2llX2lvX2Z1bmN0aW9u c190X2RlZmluZWQgMQoKCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgY29va2llX3JlYWRfZnVu Y3Rpb25fdCAodm9pZCAqX19jb29raWUsIGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uYnl0ZXMpOwoKCgoKCgoKdHlw ZWRlZiBfX3NzaXplX3QgY29va2llX3dyaXRlX2Z1bmN0aW9uX3QgKHZvaWQgKl9fY29va2ll LCBjb25zdCBjaGFyICpfX2J1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCBfX25ieXRlcyk7CgoKCgoKCgp0eXBlZGVmIGludCBjb29raWVf c2Vla19mdW5jdGlvbl90ICh2b2lkICpfX2Nvb2tpZSwgX19vZmY2NF90ICpfX3BvcywgaW50 IF9fdyk7CgoKdHlwZWRlZiBpbnQgY29va2llX2Nsb3NlX2Z1bmN0aW9uX3QgKHZvaWQgKl9f Y29va2llKTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNf dAp7CiAgY29va2llX3JlYWRfZnVuY3Rpb25fdCAqcmVhZDsKICBjb29raWVfd3JpdGVfZnVu Y3Rpb25fdCAqd3JpdGU7CiAgY29va2llX3NlZWtfZnVuY3Rpb25fdCAqc2VlazsKICBjb29r aWVfY2xvc2VfZnVuY3Rpb25fdCAqY2xvc2U7Cn0gY29va2llX2lvX2Z1bmN0aW9uc190Owoj IDQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDYzICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKdHlwZWRlZiBfX29mZl90IG9mZl90 OwoKCgojZGVmaW5lIF9fb2ZmX3RfZGVmaW5lZCAKCgp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2 NF90OwojZGVmaW5lIF9fb2ZmNjRfdF9kZWZpbmVkIAoKCgoKCnR5cGVkZWYgX19zc2l6ZV90 IHNzaXplX3Q7CiNkZWZpbmUgX19zc2l6ZV90X2RlZmluZWQgCgoKCgoKdHlwZWRlZiBfX2Zw b3NfdCBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9fZnBvczY0X3QgZnBvczY0X3Q7CgoKCiNkZWZp bmUgX0lPRkJGIDAKI2RlZmluZSBfSU9MQkYgMQojZGVmaW5lIF9JT05CRiAyCgoKCiNkZWZp bmUgQlVGU0laIDgxOTIKCgoKCiNkZWZpbmUgRU9GICgtMSkKCgoKCiNkZWZpbmUgU0VFS19T RVQgMAojZGVmaW5lIFNFRUtfQ1VSIDEKI2RlZmluZSBTRUVLX0VORCAyCgojZGVmaW5lIFNF RUtfREFUQSAzCiNkZWZpbmUgU0VFS19IT0xFIDQKCgoKCgojZGVmaW5lIFBfdG1wZGlyICIv dG1wIgoKCiNkZWZpbmUgTF90bXBuYW0gMjAKI2RlZmluZSBUTVBfTUFYIDIzODMyOAoKCgoj IDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMyA0CiMg MjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDMgNAojZGVm aW5lIF9CSVRTX1NURElPX0xJTV9IIDEKCgoKCgojZGVmaW5lIEZJTEVOQU1FX01BWCA0MDk2 CiMgMTI5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCiNkZWZp bmUgTF9jdGVybWlkIDkKCiNkZWZpbmUgTF9jdXNlcmlkIDkKCgoKI3VuZGVmIEZPUEVOX01B WAojZGVmaW5lIEZPUEVOX01BWCAxNgoKCgoKI2RlZmluZSBfUFJJTlRGX05BTl9MRU5fTUFY IDQKCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsKZXh0ZXJu IEZJTEUgKnN0ZGVycjsKCiNkZWZpbmUgc3RkaW4gc3RkaW4KI2RlZmluZSBzdGRvdXQgc3Rk b3V0CiNkZWZpbmUgc3RkZXJyIHN0ZGVycgoKCmV4dGVybiBpbnQgcmVtb3ZlIChjb25zdCBj aGFyICpfX2ZpbGVuYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwoKZXh0ZXJuIGludCByZW5hbWUgKGNvbnN0IGNoYXIgKl9fb2xkLCBjb25zdCBjaGFy ICpfX25ldykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoK ZXh0ZXJuIGludCByZW5hbWVhdCAoaW50IF9fb2xkZmQsIGNvbnN0IGNoYXIgKl9fb2xkLCBp bnQgX19uZXdmZCwKICAgICAgIGNvbnN0IGNoYXIgKl9fbmV3KSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKI2RlZmluZSBSRU5BTUVfTk9SRVBMQUNF ICgxIDw8IDApCiNkZWZpbmUgUkVOQU1FX0VYQ0hBTkdFICgxIDw8IDEpCiNkZWZpbmUgUkVO QU1FX1dISVRFT1VUICgxIDw8IDIpCgoKCmV4dGVybiBpbnQgcmVuYW1lYXQyIChpbnQgX19v bGRmZCwgY29uc3QgY2hhciAqX19vbGQsIGludCBfX25ld2ZkLAogICAgICAgIGNvbnN0IGNo YXIgKl9fbmV3LCB1bnNpZ25lZCBpbnQgX19mbGFncykgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKZXh0ZXJuIGludCBmY2xvc2UgKEZJTEUgKl9f c3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgojdW5kZWYgX19h dHRyX2RlYWxsb2NfZmNsb3NlCiNkZWZpbmUgX19hdHRyX2RlYWxsb2NfZmNsb3NlIF9fYXR0 cl9kZWFsbG9jIChmY2xvc2UsIDEpCgoKCgoKCmV4dGVybiBGSUxFICp0bXBmaWxlICh2b2lk KQogIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFs bG9jX18gKGZjbG9zZSwgMSkpKSA7CiMgMjA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9z dGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKnRtcGZpbGU2NCAodm9pZCkKICAgX19hdHRyaWJ1 dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoZmNsb3Nl LCAxKSkpIDsKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbSAoY2hhclsyMF0pIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5h bV9yIChjaGFyIF9fc1syMF0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgOwojIDIyNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4 dGVybiBjaGFyICp0ZW1wbmFtIChjb25zdCBjaGFyICpfX2RpciwgY29uc3QgY2hhciAqX19w ZngpCiAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoX19i dWlsdGluX2ZyZWUsIDEpKSk7CgoKCgoKCmV4dGVybiBpbnQgZmZsdXNoIChGSUxFICpfX3N0 cmVhbSk7CiMgMjQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0 ZXJuIGludCBmZmx1c2hfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKTsKIyAyNTQgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZjbG9zZWFsbCAo dm9pZCk7CiMgMjYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0 ZXJuIEZJTEUgKmZvcGVuIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCiAg ICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcykKICBfX2F0dHJpYnV0ZV9fICgo X19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fIChmY2xvc2UsIDEpKSkg OwoKCgoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m aWxlbmFtZSwKICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAg ICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgzKSkpOwojIDI4OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0 CmV4dGVybiBGSUxFICpmb3BlbjY0IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5h bWUsCiAgICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKQogIF9fYXR0cmli dXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKGZjbG9z ZSwgMSkpKSA7CmV4dGVybiBGSUxFICpmcmVvcGVuNjQgKGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19maWxlbmFtZSwKICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICBG SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDMpKSk7CgoKCgpleHRlcm4gRklMRSAqZmRvcGVuIChpbnQgX19mZCwgY29uc3QgY2hhciAq X19tb2RlcykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQogIF9f YXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18g KGZjbG9zZSwgMSkpKSA7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2b2lkICpf X3Jlc3RyaWN0IF9fbWFnaWNfY29va2llLAogICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19tb2RlcywKICAgICBjb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQogIF9fYXR0cmlidXRlX18gKChf X21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKGZjbG9zZSwgMSkpKSA7 CgoKCgpleHRlcm4gRklMRSAqZm1lbW9wZW4gKHZvaWQgKl9fcywgc2l6ZV90IF9fbGVuLCBj b25zdCBjaGFyICpfX21vZGVzKQogIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgo X19tYWxsb2NfXyAoZmNsb3NlLCAxKSkpIDsKCgoKCmV4dGVybiBGSUxFICpvcGVuX21lbXN0 cmVhbSAoY2hhciAqKl9fYnVmbG9jLCBzaXplX3QgKl9fc2l6ZWxvYykgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQogIF9fYXR0cmlidXRlX18gKChfX21hbGxv Y19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKGZjbG9zZSwgMSkpKSA7CiMgMzMz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIHZvaWQgc2V0 YnVmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVm KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4g aW50IHNldHZidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJp Y3QgX19idWYsCiAgICAgIGludCBfX21vZGVzLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVy IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAog ICAgICAgICBzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwoKCmV4dGVybiB2b2lkIHNldGxpbmVidWYgKEZJTEUgKl9fc3RyZWFtKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgoKZXh0ZXJu IGludCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICBjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKCgoKZXh0ZXJuIGludCBwcmludGYg KGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLik7CgpleHRlcm4gaW50IHNw cmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LCAuLi4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOwoKCgoK CmV4dGVybiBpbnQgdmZwcmludGYgKEZJTEUgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpOwoK CgoKZXh0ZXJuIGludCB2cHJpbnRmIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0 LCBfX2dudWNfdmFfbGlzdCBfX2FyZyk7CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpf X3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAg IF9fZ251Y192YV9saXN0IF9fYXJnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsK CgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBf X21heGxlbiwKICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19m b3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChj aGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgIGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9f IChfX3ByaW50Zl9fLCAzLCAwKSkpOwoKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFy ICoqX19yZXN0cmljdCBfX3B0ciwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2YsCiAgICAg ICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSkg OwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAg ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp bnRmX18sIDIsIDMpKSkgOwpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqX19yZXN0cmlj dCBfX3B0ciwKICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt YXRfXyAoX19wcmludGZfXywgMiwgMykpKSA7CgoKCgpleHRlcm4gaW50IHZkcHJpbnRmIChp bnQgX19mZCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgIF9fZ251Y192 YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50 Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IGRwcmludGYgKGludCBfX2ZkLCBjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0 X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklM RSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Zm9ybWF0LCAuLi4pIDsKCgoKCmV4dGVybiBpbnQgc2NhbmYgKGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYgKGNvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19zLAogICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQs IC4uLikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoj IDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmxvYXRuLmgiIDEgMyA0CiMgMjAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmxvYXRuLmgiIDMgNAojZGVmaW5lIF9C SVRTX0ZMT0FUTl9IIAoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9sb25n LWRvdWJsZS5oIiAxIDMgNAojIDIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2xv bmctZG91YmxlLmgiIDMgNAojZGVmaW5lIF9fTERPVUJMRV9SRURJUkVDVFNfVE9fRkxPQVQx MjhfQUJJIDAKIyAyNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mbG9hdG4uaCIg MiAzIDQKCgoKCgojZGVmaW5lIF9fSEFWRV9GTE9BVDEyOCAxCiMgNDAgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2JpdHMvZmxvYXRuLmgiIDMgNAojZGVmaW5lIF9fSEFWRV9ESVNUSU5D VF9GTE9BVDEyOCAwCgoKCgojZGVmaW5lIF9fSEFWRV9GTE9BVDY0WCBfX0hBVkVfRkxPQVQx MjgKCgoKCgojZGVmaW5lIF9fSEFWRV9GTE9BVDY0WF9MT05HX0RPVUJMRSBfX0hBVkVfRkxP QVQxMjgKIyA2MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mbG9hdG4uaCIgMyA0 CiNkZWZpbmUgX19mMTI4KHgpIHggIyNmMTI4CiMgNzEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2JpdHMvZmxvYXRuLmgiIDMgNAojZGVmaW5lIF9fQ0ZMT0FUMTI4IF9Db21wbGV4IF9G bG9hdDEyOAojIDk1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Zsb2F0bi5oIiAz IDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Zsb2F0bi1jb21tb24uaCIg MSAzIDQKIyAyMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mbG9hdG4tY29tbW9u LmgiIDMgNAojZGVmaW5lIF9CSVRTX0ZMT0FUTl9DT01NT05fSCAKCgojIDEgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvbG9uZy1kb3VibGUuaCIgMSAzIDQKIyAyMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9sb25nLWRvdWJsZS5oIiAzIDQKI2RlZmluZSBfX0xE T1VCTEVfUkVESVJFQ1RTX1RPX0ZMT0FUMTI4X0FCSSAwCiMgMjUgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMvZmxvYXRuLWNvbW1vbi5oIiAyIDMgNAojIDM0ICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL2Zsb2F0bi1jb21tb24uaCIgMyA0CiNkZWZpbmUgX19IQVZF X0ZMT0FUMTYgMAojZGVmaW5lIF9fSEFWRV9GTE9BVDMyIDEKI2RlZmluZSBfX0hBVkVfRkxP QVQ2NCAxCiNkZWZpbmUgX19IQVZFX0ZMT0FUMzJYIDEKI2RlZmluZSBfX0hBVkVfRkxPQVQx MjhYIDAKIyA1MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mbG9hdG4tY29tbW9u LmgiIDMgNAojZGVmaW5lIF9fSEFWRV9ESVNUSU5DVF9GTE9BVDE2IF9fSEFWRV9GTE9BVDE2 CiNkZWZpbmUgX19IQVZFX0RJU1RJTkNUX0ZMT0FUMzIgMAojZGVmaW5lIF9fSEFWRV9ESVNU SU5DVF9GTE9BVDY0IDAKI2RlZmluZSBfX0hBVkVfRElTVElOQ1RfRkxPQVQzMlggMAojZGVm aW5lIF9fSEFWRV9ESVNUSU5DVF9GTE9BVDY0WCAwCiNkZWZpbmUgX19IQVZFX0RJU1RJTkNU X0ZMT0FUMTI4WCBfX0hBVkVfRkxPQVQxMjhYCgoKCgoKI2RlZmluZSBfX0hBVkVfRkxPQVQx MjhfVU5MSUtFX0xEQkwgKF9fSEFWRV9ESVNUSU5DVF9GTE9BVDEyOCAmJiBfX0xEQkxfTUFO VF9ESUdfXyAhPSAxMTMpCgoKCgoKCiNkZWZpbmUgX19IQVZFX0ZMT0FUTl9OT1RfVFlQRURF RiAxCiMgOTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmxvYXRuLWNvbW1vbi5o IiAzIDQKI2RlZmluZSBfX2YzMih4KSB4ICMjZjMyCiMgMTA1ICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9iaXRzL2Zsb2F0bi1jb21tb24uaCIgMyA0CiNkZWZpbmUgX19mNjQoeCkgeCAj I2Y2NAoKCgoKCgoKI2RlZmluZSBfX2YzMngoeCkgeCAjI2YzMngKIyAxMjUgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvZmxvYXRuLWNvbW1vbi5oIiAzIDQKI2RlZmluZSBfX2Y2 NHgoeCkgeCAjI2Y2NHgKIyAxNTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRv b2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRy dW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmxv YXRuLWNvbW1vbi5oIiAzIDQKI2RlZmluZSBfX0NGTE9BVDMyIF9Db21wbGV4IF9GbG9hdDMy CiMgMTYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Zsb2F0bi1jb21tb24uaCIg MyA0CiNkZWZpbmUgX19DRkxPQVQ2NCBfQ29tcGxleCBfRmxvYXQ2NAoKCgoKCgoKI2RlZmlu ZSBfX0NGTE9BVDMyWCBfQ29tcGxleCBfRmxvYXQzMngKIyAxODMgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMvZmxvYXRuLWNvbW1vbi5oIiAzIDQKI2RlZmluZSBfX0NGTE9BVDY0 WCBfQ29tcGxleCBfRmxvYXQ2NHgKIyA5NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy9mbG9hdG4uaCIgMiAzIDQKIyA0MzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDIgMyA0CgoKCgpleHRlcm4gaW50IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0 cmVhbSwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSBfX2FzbV9fICgi IiAiX19pc29jMjNfZnNjYW5mIikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 CmV4dGVybiBpbnQgc2NhbmYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4u LikgX19hc21fXyAoIiIgIl9faXNvYzIzX3NjYW5mIikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOwpleHRlcm4gaW50IHNzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBf X3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgX19hc21fXyAoIiIg Il9faXNvYzIzX3NzY2FuZiIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkKCiAgICAgICAgICAgICAgICAgICAgICA7CiMgNDg2ICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3Ry aWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgX19nbnVj X3ZhX2xpc3QgX19hcmcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2Nh bmZfXywgMiwgMCkpKSA7CgoKCgoKZXh0ZXJuIGludCB2c2NhbmYgKGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmli dXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDEsIDApKSkgOwoKCmV4dGVybiBpbnQg dnNzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgIGNvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f Zm9ybWF0X18gKF9fc2NhbmZfXywgMiwgMCkpKTsKCgoKCgoKZXh0ZXJuIGludCB2ZnNjYW5m IChGSUxFICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1h dCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpIF9fYXNtX18gKCIiICJfX2lzb2MyM192ZnNjYW5m IikKCgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAw KSkpIDsKZXh0ZXJuIGludCB2c2NhbmYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt YXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSBfX2FzbV9fICgiIiAiX19pc29jMjNfdnNjYW5m IikKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkp KSA7CmV4dGVybiBpbnQgdnNzY2FuZiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKSBf X2FzbV9fICgiIiAiX19pc29jMjNfdnNzY2FuZiIpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkKCgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAo X19zY2FuZl9fLCAyLCAwKSkpOwojIDU3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3Rk aW8uaCIgMyA0CmV4dGVybiBpbnQgZmdldGMgKEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGlu dCBnZXRjIChGSUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGludCBnZXRjaGFyICh2b2lk KTsKCgoKCgoKZXh0ZXJuIGludCBnZXRjX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSk7CmV4 dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAodm9pZCk7CiMgNTk2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmZ2V0Y191bmxvY2tlZCAoRklM RSAqX19zdHJlYW0pOwojIDYwNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MyA0CmV4dGVybiBpbnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJu IGludCBwdXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGludCBw dXRjaGFyIChpbnQgX19jKTsKIyA2MjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDMgNApleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0 cmVhbSk7CgoKCgoKCgpleHRlcm4gaW50IHB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUg Kl9fc3RyZWFtKTsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKTsKCgoK CgoKZXh0ZXJuIGludCBnZXR3IChGSUxFICpfX3N0cmVhbSk7CgoKZXh0ZXJuIGludCBwdXR3 IChpbnQgX193LCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKCgpleHRlcm4gY2hhciAqZmdldHMg KGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry ZWFtKQogICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRlX29ubHlfXywg MSwgMikpKTsKIyA2NzMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApl eHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQg X19uLAogICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICBfX2F0dHJpYnV0 ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDIpKSk7CiMgNjkwICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIF9fc3NpemVfdCBfX2dl dGRlbGltIChjaGFyICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVsaW1pdGVyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p IDsKZXh0ZXJuIF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5l cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19u LCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCgoKCmV4dGVybiBfX3NzaXplX3QgZ2V0bGluZSAo Y2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCAqX19yZXN0cmljdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgRklM RSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwoKCgoKCgoKZXh0ZXJuIGludCBmcHV0cyAoY29u c3QgY2hhciAqX19yZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoK CgoKCmV4dGVybiBpbnQgcHV0cyAoY29uc3QgY2hhciAqX19zKTsKCgoKCgoKZXh0ZXJuIGlu dCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKCgoKCgoKZXh0ZXJuIHNpemVf dCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAg IHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBz aXplX3QgZndyaXRlIChjb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19z aXplLAogICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zKTsKIyA3NDkg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZwdXRz X3VubG9ja2VkIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgRklMRSAqX19y ZXN0cmljdCBfX3N0cmVhbSk7CiMgNzYwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRp by5oIiAzIDQKZXh0ZXJuIHNpemVfdCBmcmVhZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmlj dCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19y ZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4gc2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoY29u c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgIHNp emVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCgoKZXh0ZXJuIGlu dCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2Up OwoKCgoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0 ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0cmVhbSk7CiMgNzk0ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmc2Vla28gKEZJTEUgKl9fc3Ry ZWFtLCBfX29mZl90IF9fb2ZmLCBpbnQgX193aGVuY2UpOwoKCgoKZXh0ZXJuIF9fb2ZmX3Qg ZnRlbGxvIChGSUxFICpfX3N0cmVhbSkgOwojIDgxOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZmdldHBvcyAoRklMRSAqX19yZXN0cmljdCBf X3N0cmVhbSwgZnBvc190ICpfX3Jlc3RyaWN0IF9fcG9zKTsKCgoKCmV4dGVybiBpbnQgZnNl dHBvcyAoRklMRSAqX19zdHJlYW0sIGNvbnN0IGZwb3NfdCAqX19wb3MpOwojIDgzNyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5z dGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnNlZWtvNjQg KEZJTEUgKl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSk7CmV4dGVy biBfX29mZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmdl dHBvczY0IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0cmlj dCBfX3Bvcyk7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVhbSwgY29uc3Qg ZnBvczY0X3QgKl9fcG9zKTsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3Ry ZWFtKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKZXh0ZXJu IGludCBmZW9mIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSA7CgpleHRlcm4gaW50IGZlcnJvciAoRklMRSAqX19zdHJlYW0pIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgpleHRlcm4gdm9p ZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklM RSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg OwpleHRlcm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKCgoKZXh0ZXJuIHZvaWQg cGVycm9yIChjb25zdCBjaGFyICpfX3MpIF9fYXR0cmlidXRlX18gKChfX2NvbGRfXykpOwoK CgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9j a2VkIChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSA7CiMgODgxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hh aW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9s b29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQK ZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3RyZWFtKTsKCgoKCgpleHRlcm4gRklMRSAq cG9wZW4gKGNvbnN0IGNoYXIgKl9fY29tbWFuZCwgY29uc3QgY2hhciAqX19tb2RlcykKICBf X2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f IChwY2xvc2UsIDEpKSkgOwoKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAqX19z KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCiAgX19hdHRyaWJ1 dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAxKSkpOwoKCgoKCmV4dGVybiBj aGFyICpjdXNlcmlkIChjaGFyICpfX3MpCiAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18g KF9fd3JpdGVfb25seV9fLCAxKSkpOwoKCgoKc3RydWN0IG9ic3RhY2s7CgoKZXh0ZXJuIGlu dCBvYnN0YWNrX3ByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0YWNr LAogICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18g KF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgb2JzdGFja192cHJpbnRmIChzdHJ1 Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ssCiAgICAgICBjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmdzKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1h dF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZmxvY2tmaWxl IChGSUxFICpfX3N0cmVhbSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKCgoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgKEZJTEUgKl9fc3RyZWFtKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgpleHRlcm4gdm9pZCBm dW5sb2NrZmlsZSAoRklMRSAqX19zdHJlYW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7CiMgOTQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5o IiAzIDQKZXh0ZXJuIGludCBfX3VmbG93IChGSUxFICopOwpleHRlcm4gaW50IF9fb3ZlcmZs b3cgKEZJTEUgKiwgaW50KTsKIyA5NjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGlv LmgiIDMgNAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9u ZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25n YXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMSAz IDQKIyAyMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNo NjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzIDQKI2Rl ZmluZSBfQklUU19TVERJT19IIDEKIyAyOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy9zdGRpby5oIiAzIDQKI2RlZmluZSBfX1NURElPX0lOTElORSBfX2V4dGVybl9pbmxpbmUK IyAzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzIDQKZXh0ZXJu IF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludAp2cHJpbnRm IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCBfX2FyZykK ewogIHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgoKCmV4dGVy biBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKZ2V0Y2hh ciAodm9pZCkKewogIHJldHVybiBnZXRjIChzdGRpbik7Cn0KCgoKCmV4dGVybiBfX2lubGlu ZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKZmdldGNfdW5sb2NrZWQg KEZJTEUgKl9fZnApCnsKICByZXR1cm4gKF9fYnVpbHRpbl9leHBlY3QgKCgoX19mcCktPl9J T19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2VuZCksIDApID8gX191ZmxvdyAoX19m cCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVhZF9wdHIrKyk7Cn0KCgoK CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50 CmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fZnApCnsKICByZXR1cm4gKF9fYnVpbHRpbl9leHBl Y3QgKCgoX19mcCktPl9JT19yZWFkX3B0ciA+PSAoX19mcCktPl9JT19yZWFkX2VuZCksIDAp ID8gX191ZmxvdyAoX19mcCkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKF9fZnApLT5fSU9fcmVh ZF9wdHIrKyk7Cn0KCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lu bGluZV9fKSkgaW50CmdldGNoYXJfdW5sb2NrZWQgKHZvaWQpCnsKICByZXR1cm4gKF9fYnVp bHRpbl9leHBlY3QgKCgoc3RkaW4pLT5fSU9fcmVhZF9wdHIgPj0gKHN0ZGluKS0+X0lPX3Jl YWRfZW5kKSwgMCkgPyBfX3VmbG93IChzdGRpbikgOiAqKHVuc2lnbmVkIGNoYXIgKikgKHN0 ZGluKS0+X0lPX3JlYWRfcHRyKyspOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1 dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50CnB1dGNoYXIgKGludCBfX2MpCnsKICByZXR1 cm4gcHV0YyAoX19jLCBzdGRvdXQpOwp9CgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1 dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50CmZwdXRjX3VubG9ja2VkIChpbnQgX19jLCBG SUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoX19idWlsdGluX2V4cGVjdCAoKChfX3N0cmVh bSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3RyZWFtKS0+X0lPX3dyaXRlX2VuZCksIDApID8g X19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNpZ25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWdu ZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoK CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGlu dApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAo X19idWlsdGluX2V4cGVjdCAoKChfX3N0cmVhbSktPl9JT193cml0ZV9wdHIgPj0gKF9fc3Ry ZWFtKS0+X0lPX3dyaXRlX2VuZCksIDApID8gX19vdmVyZmxvdyAoX19zdHJlYW0sICh1bnNp Z25lZCBjaGFyKSAoX19jKSkgOiAodW5zaWduZWQgY2hhcikgKCooX19zdHJlYW0pLT5fSU9f d3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRl X18gKChfX2dudV9pbmxpbmVfXykpIGludApwdXRjaGFyX3VubG9ja2VkIChpbnQgX19jKQp7 CiAgcmV0dXJuIChfX2J1aWx0aW5fZXhwZWN0ICgoKHN0ZG91dCktPl9JT193cml0ZV9wdHIg Pj0gKHN0ZG91dCktPl9JT193cml0ZV9lbmQpLCAwKSA/IF9fb3ZlcmZsb3cgKHN0ZG91dCwg KHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihzdGRvdXQpLT5f SU9fd3JpdGVfcHRyKysgPSAoX19jKSkpOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0 cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIF9fc3NpemVfdApnZXRsaW5lIChjaGFyICoq X19saW5lcHRyLCBzaXplX3QgKl9fbiwgRklMRSAqX19zdHJlYW0pCnsKICByZXR1cm4gX19n ZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbicsIF9fc3RyZWFtKTsKfQoKCgoKCmV4dGVy biBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBmZW9mX3VubG9ja2VkIChGSUxF ICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSktPl9mbGFncyAmIDB4MDAxMCkg IT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGlu ZV9fKSkgaW50Cl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgZmVy cm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkKewogIHJldHVybiAoKChfX3N0cmVhbSkt Pl9mbGFncyAmIDB4MDAyMCkgIT0gMCk7Cn0KIyAxNDcgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2JpdHMvc3RkaW8uaCIgMyA0CiNkZWZpbmUgZnJlYWRfdW5sb2NrZWQocHRyLHNpemUs bixzdHJlYW0pIChfX2V4dGVuc2lvbl9fICgoX19idWlsdGluX2NvbnN0YW50X3AgKHNpemUp ICYmIF9fYnVpbHRpbl9jb25zdGFudF9wIChuKSAmJiAoc2l6ZV90KSAoc2l6ZSkgKiAoc2l6 ZV90KSAobikgPD0gOCAmJiAoc2l6ZV90KSAoc2l6ZSkgIT0gMCkgPyAoeyBjaGFyICpfX3B0 ciA9IChjaGFyICopIChwdHIpOyBGSUxFICpfX3N0cmVhbSA9IChzdHJlYW0pOyBzaXplX3Qg X19jbnQ7IGZvciAoX19jbnQgPSAoc2l6ZV90KSAoc2l6ZSkgKiAoc2l6ZV90KSAobik7IF9f Y250ID4gMDsgLS1fX2NudCkgeyBpbnQgX19jID0gZ2V0Y191bmxvY2tlZCAoX19zdHJlYW0p OyBpZiAoX19jID09IEVPRikgYnJlYWs7ICpfX3B0cisrID0gX19jOyB9ICgoc2l6ZV90KSAo c2l6ZSkgKiAoc2l6ZV90KSAobikgLSBfX2NudCkgLyAoc2l6ZV90KSAoc2l6ZSk7IH0pIDog KCgoX19idWlsdGluX2NvbnN0YW50X3AgKHNpemUpICYmIChzaXplX3QpIChzaXplKSA9PSAw KSB8fCAoX19idWlsdGluX2NvbnN0YW50X3AgKG4pICYmIChzaXplX3QpIChuKSA9PSAwKSkg PyAoKHZvaWQpIChwdHIpLCAodm9pZCkgKHN0cmVhbSksICh2b2lkKSAoc2l6ZSksICh2b2lk KSAobiksIChzaXplX3QpIDApIDogZnJlYWRfdW5sb2NrZWQgKHB0ciwgc2l6ZSwgbiwgc3Ry ZWFtKSkpKQojIDE3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAz IDQKI2RlZmluZSBmd3JpdGVfdW5sb2NrZWQocHRyLHNpemUsbixzdHJlYW0pIChfX2V4dGVu c2lvbl9fICgoX19idWlsdGluX2NvbnN0YW50X3AgKHNpemUpICYmIF9fYnVpbHRpbl9jb25z dGFudF9wIChuKSAmJiAoc2l6ZV90KSAoc2l6ZSkgKiAoc2l6ZV90KSAobikgPD0gOCAmJiAo c2l6ZV90KSAoc2l6ZSkgIT0gMCkgPyAoeyBjb25zdCBjaGFyICpfX3B0ciA9IChjb25zdCBj aGFyICopIChwdHIpOyBGSUxFICpfX3N0cmVhbSA9IChzdHJlYW0pOyBzaXplX3QgX19jbnQ7 IGZvciAoX19jbnQgPSAoc2l6ZV90KSAoc2l6ZSkgKiAoc2l6ZV90KSAobik7IF9fY250ID4g MDsgLS1fX2NudCkgaWYgKHB1dGNfdW5sb2NrZWQgKCpfX3B0cisrLCBfX3N0cmVhbSkgPT0g RU9GKSBicmVhazsgKChzaXplX3QpIChzaXplKSAqIChzaXplX3QpIChuKSAtIF9fY250KSAv IChzaXplX3QpIChzaXplKTsgfSkgOiAoKChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZSkg JiYgKHNpemVfdCkgKHNpemUpID09IDApIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCAobikg JiYgKHNpemVfdCkgKG4pID09IDApKSA/ICgodm9pZCkgKHB0ciksICh2b2lkKSAoc3RyZWFt KSwgKHZvaWQpIChzaXplKSwgKHZvaWQpIChuKSwgKHNpemVfdCkgMCkgOiBmd3JpdGVfdW5s b2NrZWQgKHB0ciwgc2l6ZSwgbiwgc3RyZWFtKSkpKQojIDE5MyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvYml0cy9zdGRpby5oIiAzIDQKI3VuZGVmIF9fU1RESU9fSU5MSU5FCiMgOTYx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCgoKCgoKIyA1MSAi c3lzdGVtLmgiIDIKIyAxMTAgInN5c3RlbS5oIgojIDEgIi4vc2FmZS1jdHlwZS5oIiAxCiMg MzYgIi4vc2FmZS1jdHlwZS5oIgojZGVmaW5lIFNBRkVfQ1RZUEVfSCAKCgoKCgoKCgojIDQ0 ICIuL3NhZmUtY3R5cGUuaCIKZW51bSB7CgogIF9zY2hfaXNibGFuayA9IDB4MDAwMSwKICBf c2NoX2lzY250cmwgPSAweDAwMDIsCiAgX3NjaF9pc2RpZ2l0ID0gMHgwMDA0LAogIF9zY2hf aXNsb3dlciA9IDB4MDAwOCwKICBfc2NoX2lzcHJpbnQgPSAweDAwMTAsCiAgX3NjaF9pc3B1 bmN0ID0gMHgwMDIwLAogIF9zY2hfaXNzcGFjZSA9IDB4MDA0MCwKICBfc2NoX2lzdXBwZXIg PSAweDAwODAsCiAgX3NjaF9pc3hkaWdpdCA9IDB4MDEwMCwKCgogIF9zY2hfaXNpZHN0ID0g MHgwMjAwLAogIF9zY2hfaXN2c3AgPSAweDA0MDAsCiAgX3NjaF9pc252c3AgPSAweDA4MDAs CgoKICBfc2NoX2lzYWxwaGEgPSBfc2NoX2lzdXBwZXJ8X3NjaF9pc2xvd2VyLAogIF9zY2hf aXNhbG51bSA9IF9zY2hfaXNhbHBoYXxfc2NoX2lzZGlnaXQsCiAgX3NjaF9pc2lkbnVtID0g X3NjaF9pc2lkc3R8X3NjaF9pc2RpZ2l0LAogIF9zY2hfaXNncmFwaCA9IF9zY2hfaXNhbG51 bXxfc2NoX2lzcHVuY3QsCiAgX3NjaF9pc2NwcHNwID0gX3NjaF9pc3ZzcHxfc2NoX2lzbnZz cCwKICBfc2NoX2lzYmFzaWMgPSBfc2NoX2lzcHJpbnR8X3NjaF9pc2NwcHNwCgp9OwoKCmV4 dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBfc2NoX2lzdGFibGVbMjU2XTsKCiNkZWZpbmUg X3NjaF90ZXN0KGMsYml0KSAoX3NjaF9pc3RhYmxlWyhjKSAmIDB4ZmZdICYgKHVuc2lnbmVk IHNob3J0KShiaXQpKQoKI2RlZmluZSBJU0FMUEhBKGMpIF9zY2hfdGVzdChjLCBfc2NoX2lz YWxwaGEpCiNkZWZpbmUgSVNBTE5VTShjKSBfc2NoX3Rlc3QoYywgX3NjaF9pc2FsbnVtKQoj ZGVmaW5lIElTQkxBTksoYykgX3NjaF90ZXN0KGMsIF9zY2hfaXNibGFuaykKI2RlZmluZSBJ U0NOVFJMKGMpIF9zY2hfdGVzdChjLCBfc2NoX2lzY250cmwpCiNkZWZpbmUgSVNESUdJVChj KSBfc2NoX3Rlc3QoYywgX3NjaF9pc2RpZ2l0KQojZGVmaW5lIElTR1JBUEgoYykgX3NjaF90 ZXN0KGMsIF9zY2hfaXNncmFwaCkKI2RlZmluZSBJU0xPV0VSKGMpIF9zY2hfdGVzdChjLCBf c2NoX2lzbG93ZXIpCiNkZWZpbmUgSVNQUklOVChjKSBfc2NoX3Rlc3QoYywgX3NjaF9pc3By aW50KQojZGVmaW5lIElTUFVOQ1QoYykgX3NjaF90ZXN0KGMsIF9zY2hfaXNwdW5jdCkKI2Rl ZmluZSBJU1NQQUNFKGMpIF9zY2hfdGVzdChjLCBfc2NoX2lzc3BhY2UpCiNkZWZpbmUgSVNV UFBFUihjKSBfc2NoX3Rlc3QoYywgX3NjaF9pc3VwcGVyKQojZGVmaW5lIElTWERJR0lUKGMp IF9zY2hfdGVzdChjLCBfc2NoX2lzeGRpZ2l0KQoKI2RlZmluZSBJU0lETlVNKGMpIF9zY2hf dGVzdChjLCBfc2NoX2lzaWRudW0pCiNkZWZpbmUgSVNJRFNUKGMpIF9zY2hfdGVzdChjLCBf c2NoX2lzaWRzdCkKI2RlZmluZSBJU19JU09CQVNJQyhjKSBfc2NoX3Rlc3QoYywgX3NjaF9p c2Jhc2ljKQojZGVmaW5lIElTX1ZTUEFDRShjKSBfc2NoX3Rlc3QoYywgX3NjaF9pc3ZzcCkK I2RlZmluZSBJU19OVlNQQUNFKGMpIF9zY2hfdGVzdChjLCBfc2NoX2lzbnZzcCkKI2RlZmlu ZSBJU19TUEFDRV9PUl9OVUwoYykgX3NjaF90ZXN0KGMsIF9zY2hfaXNjcHBzcCkKCgpleHRl cm4gY29uc3QgdW5zaWduZWQgY2hhciBfc2NoX3RvdXBwZXJbMjU2XTsKZXh0ZXJuIGNvbnN0 IHVuc2lnbmVkIGNoYXIgX3NjaF90b2xvd2VyWzI1Nl07CiNkZWZpbmUgVE9VUFBFUihjKSBf c2NoX3RvdXBwZXJbKGMpICYgMHhmZl0KI2RlZmluZSBUT0xPV0VSKGMpIF9zY2hfdG9sb3dl clsoYykgJiAweGZmXQojIDExMSAic3lzdGVtLmgiIDIKCiMgMSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMyA0CiMgMjMgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL3N5cy90eXBlcy5oIiAzIDQKI2RlZmluZSBfU1lTX1RZUEVTX0ggMQoKCgoKCgoKCgoK IyAzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVm IF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBf X3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRf dCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRf dCBmc2lkX3Q7CiNkZWZpbmUgX191X2NoYXJfZGVmaW5lZCAKCnR5cGVkZWYgX19sb2ZmX3Qg bG9mZl90OwoKCgoKdHlwZWRlZiBfX2lub190IGlub190OwoKCgojZGVmaW5lIF9faW5vX3Rf ZGVmaW5lZCAKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90OwojZGVmaW5lIF9faW5vNjRf dF9kZWZpbmVkIAoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CiNkZWZpbmUgX19kZXZfdF9k ZWZpbmVkIAoKCgp0eXBlZGVmIF9fZ2lkX3QgZ2lkX3Q7CiNkZWZpbmUgX19naWRfdF9kZWZp bmVkIAoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKI2RlZmluZSBfX21vZGVfdF9kZWZp bmVkIAoKCgp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190OwojZGVmaW5lIF9fbmxpbmtfdF9k ZWZpbmVkIAoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CiNkZWZpbmUgX191aWRfdF9kZWZp bmVkIAojIDk3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5 cGVkZWYgX19waWRfdCBwaWRfdDsKI2RlZmluZSBfX3BpZF90X2RlZmluZWQgCgoKCgp0eXBl ZGVmIF9faWRfdCBpZF90OwojZGVmaW5lIF9faWRfdF9kZWZpbmVkIAojIDExNCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIF9fZGFkZHJfdCBk YWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwojZGVmaW5lIF9fZGFkZHJfdF9k ZWZpbmVkIAoKCgoKdHlwZWRlZiBfX2tleV90IGtleV90OwojZGVmaW5lIF9fa2V5X3RfZGVm aW5lZCAKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL2Nsb2Nr X3QuaCIgMSAzIDQKCiNkZWZpbmUgX19jbG9ja190X2RlZmluZWQgMQoKCgoKdHlwZWRlZiBf X2Nsb2NrX3QgY2xvY2tfdDsKIyAxMjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy90 eXBlcy5oIiAyIDMgNAoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVz L2Nsb2NraWRfdC5oIiAxIDMgNAoKI2RlZmluZSBfX2Nsb2NraWRfdF9kZWZpbmVkIDEKCgoK CnR5cGVkZWYgX19jbG9ja2lkX3QgY2xvY2tpZF90OwojIDEyOSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvYml0cy90eXBlcy90aW1lX3QuaCIgMSAzIDQKCiNkZWZpbmUgX190aW1lX3RfZGVmaW5l ZCAxCgoKCgoKCgp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKIyAxMzAgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAojIDEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL2JpdHMvdHlwZXMvdGltZXJfdC5oIiAxIDMgNAoKI2RlZmluZSBfX3RpbWVyX3Rf ZGVmaW5lZCAxCgoKCgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEzMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCnR5cGVkZWYgX191c2Vj b25kc190IHVzZWNvbmRzX3Q7CiNkZWZpbmUgX191c2Vjb25kc190X2RlZmluZWQgCgoKdHlw ZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190OwojZGVmaW5lIF9fc3VzZWNvbmRzX3Rf ZGVmaW5lZCAKCgoKI2RlZmluZSBfX25lZWRfc2l6ZV90IAojIDEgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0 LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE1OCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4x L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3B0cmRpZmZfdAojIDIzNyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2 NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVk X3NpemVfdAojIDM0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGli L2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMg NAojdW5kZWYgX19uZWVkX3djaGFyX3QKIyAzOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9pbmNs dWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5VTEwKCgoKCiNkZWZpbmUgTlVMTCAoKHZvaWQg KikwKQoKCgoKCiN1bmRlZiBfX25lZWRfTlVMTAoKCgoKI3VuZGVmIG9mZnNldG9mCiNkZWZp bmUgb2Zmc2V0b2YoVFlQRSxNRU1CRVIpIF9fYnVpbHRpbl9vZmZzZXRvZiAoVFlQRSwgTUVN QkVSKQojIDE0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0 CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQg c2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgoKCiMgMSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGRpbnQtaW50bi5oIiAxIDMgNAojIDIw ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0ZGludC1pbnRuLmgiIDMgNAojZGVm aW5lIF9CSVRTX1NURElOVF9JTlROX0ggMQoKCgp0eXBlZGVmIF9faW50OF90IGludDhfdDsK dHlwZWRlZiBfX2ludDE2X3QgaW50MTZfdDsKdHlwZWRlZiBfX2ludDMyX3QgaW50MzJfdDsK dHlwZWRlZiBfX2ludDY0X3QgaW50NjRfdDsKIyAxNTYgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCnR5cGVkZWYgX191aW50OF90IHVfaW50OF90Owp0 eXBlZGVmIF9fdWludDE2X3QgdV9pbnQxNl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9pbnQz Ml90Owp0eXBlZGVmIF9fdWludDY0X3QgdV9pbnQ2NF90OwoKCnR5cGVkZWYgaW50IHJlZ2lz dGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKCgoKCgoKI2Rl ZmluZSBfX0JJVF9UWVBFU19ERUZJTkVEX18gMQoKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9lbmRpYW4uaCIgMSAzIDQKIyAxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv ZW5kaWFuLmgiIDMgNAojZGVmaW5lIF9FTkRJQU5fSCAxCgoKCgojIDEgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMyA0CiMgMjAgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDMgNAojZGVmaW5lIF9CSVRTX0VORElBTl9IIDEK IyAzMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMyA0CiNkZWZp bmUgX19MSVRUTEVfRU5ESUFOIDEyMzQKI2RlZmluZSBfX0JJR19FTkRJQU4gNDMyMQojZGVm aW5lIF9fUERQX0VORElBTiAzNDEyCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL2VuZGlhbm5lc3MuaCIgMSAzIDQKCiNkZWZpbmUgX0JJVFNfRU5ESUFOTkVTU19IIDEK CgoKCgoKI2RlZmluZSBfX0JZVEVfT1JERVIgX19MSVRUTEVfRU5ESUFOCiMgMzYgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDIgMyA0CgoKCgojZGVmaW5lIF9f RkxPQVRfV09SRF9PUkRFUiBfX0JZVEVfT1JERVIKCgoKI2RlZmluZSBfX0xPTkdfTE9OR19Q QUlSKEhJLExPKSBMTywgSEkKIyAyNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZW5kaWFu LmgiIDIgMyA0CgoKI2RlZmluZSBMSVRUTEVfRU5ESUFOIF9fTElUVExFX0VORElBTgojZGVm aW5lIEJJR19FTkRJQU4gX19CSUdfRU5ESUFOCiNkZWZpbmUgUERQX0VORElBTiBfX1BEUF9F TkRJQU4KI2RlZmluZSBCWVRFX09SREVSIF9fQllURV9PUkRFUgoKCgoKIyAxICIvaG9tZS9j aGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxs L2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDEgMyA0CiMgMjQgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMyA0CiNkZWZpbmUgX0JJVFNfQllU RVNXQVBfSCAxCgoKCgoKI2RlZmluZSBfX2Jzd2FwX2NvbnN0YW50XzE2KHgpICgoX191aW50 MTZfdCkgKCgoKHgpID4+IDgpICYgMHhmZikgfCAoKCh4KSAmIDB4ZmYpIDw8IDgpKSkKCgpz dGF0aWMgX19pbmxpbmUgX191aW50MTZfdApfX2Jzd2FwXzE2IChfX3VpbnQxNl90IF9fYnN4 KQp7CgogIHJldHVybiBfX2J1aWx0aW5fYnN3YXAxNiAoX19ic3gpOwoKCgp9CgoKI2RlZmlu ZSBfX2Jzd2FwX2NvbnN0YW50XzMyKHgpICgoKCh4KSAmIDB4ZmYwMDAwMDB1KSA+PiAyNCkg fCAoKCh4KSAmIDB4MDBmZjAwMDB1KSA+PiA4KSB8ICgoKHgpICYgMHgwMDAwZmYwMHUpIDw8 IDgpIHwgKCgoeCkgJiAweDAwMDAwMGZmdSkgPDwgMjQpKQoKCgpzdGF0aWMgX19pbmxpbmUg X191aW50MzJfdApfX2Jzd2FwXzMyIChfX3VpbnQzMl90IF9fYnN4KQp7CgogIHJldHVybiBf X2J1aWx0aW5fYnN3YXAzMiAoX19ic3gpOwoKCgp9CgoKI2RlZmluZSBfX2Jzd2FwX2NvbnN0 YW50XzY0KHgpICgoKCh4KSAmIDB4ZmYwMDAwMDAwMDAwMDAwMHVsbCkgPj4gNTYpIHwgKCgo eCkgJiAweDAwZmYwMDAwMDAwMDAwMDB1bGwpID4+IDQwKSB8ICgoKHgpICYgMHgwMDAwZmYw MDAwMDAwMDAwdWxsKSA+PiAyNCkgfCAoKCh4KSAmIDB4MDAwMDAwZmYwMDAwMDAwMHVsbCkg Pj4gOCkgfCAoKCh4KSAmIDB4MDAwMDAwMDBmZjAwMDAwMHVsbCkgPDwgOCkgfCAoKCh4KSAm IDB4MDAwMDAwMDAwMGZmMDAwMHVsbCkgPDwgMjQpIHwgKCgoeCkgJiAweDAwMDAwMDAwMDAw MGZmMDB1bGwpIDw8IDQwKSB8ICgoKHgpICYgMHgwMDAwMDAwMDAwMDAwMGZmdWxsKSA8PCA1 NikpCiMgNjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvYnl0ZXN3YXAuaCIgMyA0 Cl9fZXh0ZW5zaW9uX18gc3RhdGljIF9faW5saW5lIF9fdWludDY0X3QKX19ic3dhcF82NCAo X191aW50NjRfdCBfX2JzeCkKewoKICByZXR1cm4gX19idWlsdGluX2Jzd2FwNjQgKF9fYnN4 KTsKCgoKfQojIDM2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzIDQK IyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3VpbnRuLWlkZW50aXR5LmgiIDEg MyA0CiMgMjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdWludG4taWRlbnRpdHku aCIgMyA0CiNkZWZpbmUgX0JJVFNfVUlOVE5fSURFTlRJVFlfSCAxCgoKCgoKCgpzdGF0aWMg X19pbmxpbmUgX191aW50MTZfdApfX3VpbnQxNl9pZGVudGl0eSAoX191aW50MTZfdCBfX3gp CnsKICByZXR1cm4gX194Owp9CgpzdGF0aWMgX19pbmxpbmUgX191aW50MzJfdApfX3VpbnQz Ml9pZGVudGl0eSAoX191aW50MzJfdCBfX3gpCnsKICByZXR1cm4gX194Owp9CgpzdGF0aWMg X19pbmxpbmUgX191aW50NjRfdApfX3VpbnQ2NF9pZGVudGl0eSAoX191aW50NjRfdCBfX3gp CnsKICByZXR1cm4gX194Owp9CiMgMzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2VuZGlh bi5oIiAyIDMgNAoKCiNkZWZpbmUgaHRvYmUxNih4KSBfX2Jzd2FwXzE2ICh4KQojZGVmaW5l IGh0b2xlMTYoeCkgX191aW50MTZfaWRlbnRpdHkgKHgpCiNkZWZpbmUgYmUxNnRvaCh4KSBf X2Jzd2FwXzE2ICh4KQojZGVmaW5lIGxlMTZ0b2goeCkgX191aW50MTZfaWRlbnRpdHkgKHgp CgojZGVmaW5lIGh0b2JlMzIoeCkgX19ic3dhcF8zMiAoeCkKI2RlZmluZSBodG9sZTMyKHgp IF9fdWludDMyX2lkZW50aXR5ICh4KQojZGVmaW5lIGJlMzJ0b2goeCkgX19ic3dhcF8zMiAo eCkKI2RlZmluZSBsZTMydG9oKHgpIF9fdWludDMyX2lkZW50aXR5ICh4KQoKI2RlZmluZSBo dG9iZTY0KHgpIF9fYnN3YXBfNjQgKHgpCiNkZWZpbmUgaHRvbGU2NCh4KSBfX3VpbnQ2NF9p ZGVudGl0eSAoeCkKI2RlZmluZSBiZTY0dG9oKHgpIF9fYnN3YXBfNjQgKHgpCiNkZWZpbmUg bGU2NHRvaCh4KSBfX3VpbnQ2NF9pZGVudGl0eSAoeCkKIyAxNzcgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMgNAojIDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9zeXMvc2VsZWN0LmgiIDMgNAojZGVmaW5lIF9TWVNfU0VMRUNUX0ggMQoKCgoKCgoKIyAx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMgNAojIDI1ICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAzIDQKI2RlZmluZSBfX0ZE X1pFUk8ocykgZG8geyB1bnNpZ25lZCBpbnQgX19pOyBmZF9zZXQgKl9fYXJyID0gKHMpOyBm b3IgKF9faSA9IDA7IF9faSA8IHNpemVvZiAoZmRfc2V0KSAvIHNpemVvZiAoX19mZF9tYXNr KTsgKytfX2kpIF9fRkRTX0JJVFMgKF9fYXJyKVtfX2ldID0gMDsgfSB3aGlsZSAoMCkKCgoK CgoKI2RlZmluZSBfX0ZEX1NFVChkLHMpICgodm9pZCkgKF9fRkRTX0JJVFMgKHMpW19fRkRf RUxUKGQpXSB8PSBfX0ZEX01BU0soZCkpKQoKI2RlZmluZSBfX0ZEX0NMUihkLHMpICgodm9p ZCkgKF9fRkRTX0JJVFMgKHMpW19fRkRfRUxUKGQpXSAmPSB+X19GRF9NQVNLKGQpKSkKCiNk ZWZpbmUgX19GRF9JU1NFVChkLHMpICgoX19GRFNfQklUUyAocylbX19GRF9FTFQgKGQpXSAm IF9fRkRfTUFTSyAoZCkpICE9IDApCiMgMzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5 cy9zZWxlY3QuaCIgMiAzIDQKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMvc2lnc2V0X3QuaCIgMSAzIDQKCiNkZWZpbmUgX19zaWdzZXRfdF9kZWZpbmVkIDEK CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9fX3NpZ3NldF90Lmgi IDEgMyA0CgojZGVmaW5lIF9fX19zaWdzZXRfdF9kZWZpbmVkIAoKI2RlZmluZSBfU0lHU0VU X05XT1JEUyAoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKQp0eXBl ZGVmIHN0cnVjdAp7CiAgdW5zaWduZWQgbG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNp emVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSldOwp9IF9fc2lnc2V0X3Q7CiMgNSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zaWdzZXRfdC5oIiAyIDMgNAoKCnR5cGVk ZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv c3lzL3NlbGVjdC5oIiAyIDMgNAoKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvdHlwZXMvc3RydWN0X3RpbWV2YWwuaCIgMSAzIDQKCiNkZWZpbmUgX190aW1ldmFsX2Rl ZmluZWQgMQoKCgoKCnN0cnVjdCB0aW1ldmFsCnsKCgoKCiAgX190aW1lX3QgdHZfc2VjOwog IF9fc3VzZWNvbmRzX3QgdHZfdXNlYzsKCn07CiMgMzggIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv Yml0cy90eXBlcy9zdHJ1Y3RfdGltZXNwZWMuaCIgMSAzIDQKCgojZGVmaW5lIF9TVFJVQ1Rf VElNRVNQRUMgMQoKCgoKCgoKc3RydWN0IHRpbWVzcGVjCnsKCgoKICBfX3RpbWVfdCB0dl9z ZWM7CgoKCgogIF9fc3lzY2FsbF9zbG9uZ190IHR2X25zZWM7CiMgMzEgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3RydWN0X3RpbWVzcGVjLmgiIDMgNAp9OwojIDQw ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMyA0CiMgNDkgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgbG9uZyBp bnQgX19mZF9tYXNrOwoKCiN1bmRlZiBfX05GREJJVFMKCiNkZWZpbmUgX19ORkRCSVRTICg4 ICogKGludCkgc2l6ZW9mIChfX2ZkX21hc2spKQojZGVmaW5lIF9fRkRfRUxUKGQpICgoZCkg LyBfX05GREJJVFMpCiNkZWZpbmUgX19GRF9NQVNLKGQpICgoX19mZF9tYXNrKSAoMVVMIDw8 ICgoZCkgJSBfX05GREJJVFMpKSkKCgp0eXBlZGVmIHN0cnVjdAogIHsKCgoKICAgIF9fZmRf bWFzayBmZHNfYml0c1sxMDI0IC8gKDggKiAoaW50KSBzaXplb2YgKF9fZmRfbWFzaykpXTsK I2RlZmluZSBfX0ZEU19CSVRTKHNldCkgKChzZXQpLT5mZHNfYml0cykKCgoKCiAgfSBmZF9z ZXQ7CgoKI2RlZmluZSBGRF9TRVRTSVpFIF9fRkRfU0VUU0laRQoKCgp0eXBlZGVmIF9fZmRf bWFzayBmZF9tYXNrOwoKCiNkZWZpbmUgTkZEQklUUyBfX05GREJJVFMKCgoKCiNkZWZpbmUg RkRfU0VUKGZkLGZkc2V0cCkgX19GRF9TRVQgKGZkLCBmZHNldHApCiNkZWZpbmUgRkRfQ0xS KGZkLGZkc2V0cCkgX19GRF9DTFIgKGZkLCBmZHNldHApCiNkZWZpbmUgRkRfSVNTRVQoZmQs ZmRzZXRwKSBfX0ZEX0lTU0VUIChmZCwgZmRzZXRwKQojZGVmaW5lIEZEX1pFUk8oZmRzZXRw KSBfX0ZEX1pFUk8gKGZkc2V0cCkKCgoKIyAxMDIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgc2VsZWN0IChpbnQgX19uZmRzLCBmZF9z ZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dy aXRlZmRzLAogICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICBzdHJ1 Y3QgdGltZXZhbCAqX19yZXN0cmljdCBfX3RpbWVvdXQpOwojIDEyNyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQg X19uZmRzLCBmZF9zZXQgKl9fcmVzdHJpY3QgX19yZWFkZmRzLAogICAgICBmZF9zZXQgKl9f cmVzdHJpY3QgX193cml0ZWZkcywKICAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0 ZmRzLAogICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0 LAogICAgICBjb25zdCBfX3NpZ3NldF90ICpfX3Jlc3RyaWN0IF9fc2lnbWFzayk7CiMgMTUz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAoKIyAxODAgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCgoKCnR5cGVkZWYg X19ibGtzaXplX3QgYmxrc2l6ZV90OwojZGVmaW5lIF9fYmxrc2l6ZV90X2RlZmluZWQgCgoK CgoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwojZGVmaW5lIF9fYmxrY250X3RfZGVm aW5lZCAKCgp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwojZGVmaW5lIF9fZnNi bGtjbnRfdF9kZWZpbmVkIAoKCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmlsY250X3Q7CiNk ZWZpbmUgX19mc2ZpbGNudF90X2RlZmluZWQgCiMgMjE5ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2NudDY0X3Q7 CnR5cGVkZWYgX19mc2Jsa2NudDY0X3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIF9fZnNmaWxj bnQ2NF90IGZzZmlsY250NjRfdDsKCgoKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMyA0CiMgMjAgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNAojZGVmaW5lIF9CSVRTX1BUSFJFQURUWVBF U19DT01NT05fSCAxCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3RocmVh ZC1zaGFyZWQtdHlwZXMuaCIgMSAzIDQKIyAyMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv Yml0cy90aHJlYWQtc2hhcmVkLXR5cGVzLmgiIDMgNAojZGVmaW5lIF9USFJFQURfU0hBUkVE X1RZUEVTX0ggMQojIDQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hh aW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9s b29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3RocmVhZC1z aGFyZWQtdHlwZXMuaCIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9w dGhyZWFkdHlwZXMtYXJjaC5oIiAxIDMgNAojIDIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL3B0aHJlYWR0eXBlcy1hcmNoLmgiIDMgNAojZGVmaW5lIF9CSVRTX1BUSFJFQURU WVBFU19BUkNIX0ggMQoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dvcmRz aXplLmgiIDEgMyA0CiMgMTggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNp emUuaCIgMyA0CiNkZWZpbmUgX19XT1JEU0laRSA2NAojZGVmaW5lIF9fV09SRFNJWkVfVElN RTY0X0NPTVBBVDMyIDAKIyAyNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9wdGhy ZWFkdHlwZXMtYXJjaC5oIiAyIDMgNAoKCiNkZWZpbmUgX19TSVpFT0ZfUFRIUkVBRF9BVFRS X1QgNTYKI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX01VVEVYX1QgNDAKI2RlZmluZSBfX1NJ WkVPRl9QVEhSRUFEX1JXTE9DS19UIDU2CiNkZWZpbmUgX19TSVpFT0ZfUFRIUkVBRF9CQVJS SUVSX1QgMzIKCgoKCgoKI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX01VVEVYQVRUUl9UIDQK I2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX1JXTE9DS0FUVFJfVCA4CiNkZWZpbmUgX19TSVpF T0ZfUFRIUkVBRF9CQVJSSUVSQVRUUl9UIDQKI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX0NP TkRfVCA0OAojZGVmaW5lIF9fU0laRU9GX1BUSFJFQURfQ09OREFUVFJfVCA0CgojZGVmaW5l IF9fTE9DS19BTElHTk1FTlQgCiNkZWZpbmUgX19PTkNFX0FMSUdOTUVOVCAKIyA0NSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5z dGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aHJlYWQtc2hhcmVkLXR5cGVzLmgiIDIgMyA0 CgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvYXRvbWljX3dpZGVfY291bnRl ci5oIiAxIDMgNAojIDIwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hh aW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9s b29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2F0b21pY193 aWRlX2NvdW50ZXIuaCIgMyA0CiNkZWZpbmUgX0JJVFNfQVRPTUlDX1dJREVfQ09VTlRFUl9I IAoKCgoKdHlwZWRlZiB1bmlvbgp7CiAgX19leHRlbnNpb25fXyB1bnNpZ25lZCBsb25nIGxv bmcgaW50IF9fdmFsdWU2NDsKICBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBpbnQgX19sb3c7 CiAgICB1bnNpZ25lZCBpbnQgX19oaWdoOwogIH0gX192YWx1ZTMyOwp9IF9fYXRvbWljX3dp ZGVfY291bnRlcjsKIyA0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aHJlYWQt c2hhcmVkLXR5cGVzLmgiIDIgMyA0CgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRfaW50 ZXJuYWxfbGlzdAp7CiAgc3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9saXN0ICpfX3ByZXY7 CiAgc3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9saXN0ICpfX25leHQ7Cn0gX19wdGhyZWFk X2xpc3RfdDsKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9zbGlzdAp7CiAg c3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9zbGlzdCAqX19uZXh0Owp9IF9fcHRocmVhZF9z bGlzdF90OwojIDc2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3RocmVhZC1zaGFy ZWQtdHlwZXMuaCIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdHJ1 Y3RfbXV0ZXguaCIgMSAzIDQKIyAyMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9z dHJ1Y3RfbXV0ZXguaCIgMyA0CiNkZWZpbmUgX1RIUkVBRF9NVVRFWF9JTlRFUk5BTF9IIDEK CgoKCgoKc3RydWN0IF9fcHRocmVhZF9tdXRleF9zCnsKICBpbnQgX19sb2NrIDsKICB1bnNp Z25lZCBpbnQgX19jb3VudDsKICBpbnQgX19vd25lcjsKCiAgdW5zaWduZWQgaW50IF9fbnVz ZXJzOwojIDU4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0cnVjdF9tdXRleC5o IiAzIDQKICBpbnQgX19raW5kOwoKCgoKICBpbnQgX19zcGluczsKICBfX3B0aHJlYWRfbGlz dF90IF9fbGlzdDsKI2RlZmluZSBfX1BUSFJFQURfTVVURVhfSEFWRV9QUkVWIDEKIyA3NCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdHJ1Y3RfbXV0ZXguaCIgMyA0Cn07CgoK I2RlZmluZSBfX1BUSFJFQURfTVVURVhfSU5JVElBTElaRVIoX19raW5kKSAwLCAwLCAwLCAw LCBfX2tpbmQsIDAsIHsgMCwgMCB9CiMgNzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvdGhyZWFkLXNoYXJlZC10eXBlcy5oIiAyIDMgNAojIDg5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9iaXRzL3RocmVhZC1zaGFyZWQtdHlwZXMuaCIgMyA0CiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy9zdHJ1Y3Rfcndsb2NrLmgiIDEgMyA0CiMgMjAgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RydWN0X3J3bG9jay5oIiAzIDQKI2RlZmluZSBf X1JXTE9DS19JTlRFUk5BTF9IIAojIDI5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L3N0cnVjdF9yd2xvY2suaCIgMyA0CnN0cnVjdCBfX3B0aHJlYWRfcndsb2NrX2FyY2hfdAp7 CiAgdW5zaWduZWQgaW50IF9fcmVhZGVyczsKICB1bnNpZ25lZCBpbnQgX193cml0ZXJzOwog IHVuc2lnbmVkIGludCBfX3dycGhhc2VfZnV0ZXg7CiAgdW5zaWduZWQgaW50IF9fd3JpdGVy c19mdXRleDsKICB1bnNpZ25lZCBpbnQgX19wYWQzOwogIHVuc2lnbmVkIGludCBfX3BhZDQ7 CiMgNDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RydWN0X3J3bG9jay5oIiAz IDQKICB1bnNpZ25lZCBjaGFyIF9fZmxhZ3M7CiAgdW5zaWduZWQgY2hhciBfX3NoYXJlZDsK ICB1bnNpZ25lZCBjaGFyIF9fcGFkMTsKICB1bnNpZ25lZCBjaGFyIF9fcGFkMjsKCiAgaW50 IF9fY3VyX3dyaXRlcjsKfTsKCgoKCgojZGVmaW5lIF9fUFRIUkVBRF9SV0xPQ0tfSU5JVElB TElaRVIoX19mbGFncykgMCwgMCwgMCwgMCwgMCwgMCwgX19mbGFncywgMCwgMCwgMCwgMAoj IDkwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3RocmVhZC1zaGFyZWQtdHlwZXMu aCIgMiAzIDQKCgoKCnN0cnVjdCBfX3B0aHJlYWRfY29uZF9zCnsKICBfX2F0b21pY193aWRl X2NvdW50ZXIgX193c2VxOwogIF9fYXRvbWljX3dpZGVfY291bnRlciBfX2cxX3N0YXJ0Owog IHVuc2lnbmVkIGludCBfX2dfcmVmc1syXSA7CiAgdW5zaWduZWQgaW50IF9fZ19zaXplWzJd OwogIHVuc2lnbmVkIGludCBfX2cxX29yaWdfc2l6ZTsKICB1bnNpZ25lZCBpbnQgX193cmVm czsKICB1bnNpZ25lZCBpbnQgX19nX3NpZ25hbHNbMl07Cn07Cgp0eXBlZGVmIHVuc2lnbmVk IGludCBfX3Rzc190Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdGhyZF90OwoKdHlw ZWRlZiBzdHJ1Y3QKewogIGludCBfX2RhdGEgOwp9IF9fb25jZV9mbGFnOwoKI2RlZmluZSBf X09OQ0VfRkxBR19JTklUIHsgMCB9CiMgMjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvcHRocmVhZHR5cGVzLmgiIDIgMyA0CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg cHRocmVhZF90OwoKCgoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbNF07CiAgaW50 IF9fYWxpZ247Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKCnR5cGVkZWYgdW5pb24Kewog IGNoYXIgX19zaXplWzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRfY29uZGF0dHJfdDsK CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlfdDsKCgoKdHlwZWRlZiBpbnQg cHRocmVhZF9vbmNlX3Q7CgoKdW5pb24gcHRocmVhZF9hdHRyX3QKewogIGNoYXIgX19zaXpl WzU2XTsKICBsb25nIGludCBfX2FsaWduOwp9OwoKdHlwZWRlZiB1bmlvbiBwdGhyZWFkX2F0 dHJfdCBwdGhyZWFkX2F0dHJfdDsKI2RlZmluZSBfX2hhdmVfcHRocmVhZF9hdHRyX3QgMQoK Cgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19wdGhyZWFkX211dGV4X3MgX19kYXRhOwog IGNoYXIgX19zaXplWzQwXTsKICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRfbXV0ZXhf dDsKCgp0eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19wdGhyZWFkX2NvbmRfcyBfX2RhdGE7 CiAgY2hhciBfX3NpemVbNDhdOwogIF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX2Fs aWduOwp9IHB0aHJlYWRfY29uZF90OwoKCgoKCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBf X3B0aHJlYWRfcndsb2NrX2FyY2hfdCBfX2RhdGE7CiAgY2hhciBfX3NpemVbNTZdOwogIGxv bmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9yd2xvY2tfdDsKCnR5cGVkZWYgdW5pb24Kewog IGNoYXIgX19zaXplWzhdOwogIGxvbmcgaW50IF9fYWxpZ247Cn0gcHRocmVhZF9yd2xvY2th dHRyX3Q7CgoKCgoKdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190OwoK CgoKdHlwZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbMzJdOwogIGxvbmcgaW50IF9fYWxp Z247Cn0gcHRocmVhZF9iYXJyaWVyX3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6 ZVs0XTsKICBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7CiMgMjI4ICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQKCgoKIyAxMTMgInN5 c3RlbS5oIiAyCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDEgMyA0 CiMgMjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMgNAojZGVmaW5lIF9F UlJOT19IIDEKCgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9lcnJuby5o IiAxIDMgNAojIDIwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Vycm5vLmgiIDMg NAojZGVmaW5lIF9CSVRTX0VSUk5PX0ggMQoKCgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvbGludXgvZXJybm8uaCIgMSAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9hc20vZXJybm8uaCIgMSAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hc20t Z2VuZXJpYy9lcnJuby5oIiAxIDMgNAoKCiNkZWZpbmUgX0FTTV9HRU5FUklDX0VSUk5PX0gg CgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2Uu aCIgMSAzIDQKCgojZGVmaW5lIF9BU01fR0VORVJJQ19FUlJOT19CQVNFX0ggCgojZGVmaW5l IEVQRVJNIDEKI2RlZmluZSBFTk9FTlQgMgojZGVmaW5lIEVTUkNIIDMKI2RlZmluZSBFSU5U UiA0CiNkZWZpbmUgRUlPIDUKI2RlZmluZSBFTlhJTyA2CiNkZWZpbmUgRTJCSUcgNwojZGVm aW5lIEVOT0VYRUMgOAojZGVmaW5lIEVCQURGIDkKI2RlZmluZSBFQ0hJTEQgMTAKI2RlZmlu ZSBFQUdBSU4gMTEKI2RlZmluZSBFTk9NRU0gMTIKI2RlZmluZSBFQUNDRVMgMTMKI2RlZmlu ZSBFRkFVTFQgMTQKI2RlZmluZSBFTk9UQkxLIDE1CiNkZWZpbmUgRUJVU1kgMTYKI2RlZmlu ZSBFRVhJU1QgMTcKI2RlZmluZSBFWERFViAxOAojZGVmaW5lIEVOT0RFViAxOQojZGVmaW5l IEVOT1RESVIgMjAKI2RlZmluZSBFSVNESVIgMjEKI2RlZmluZSBFSU5WQUwgMjIKI2RlZmlu ZSBFTkZJTEUgMjMKI2RlZmluZSBFTUZJTEUgMjQKI2RlZmluZSBFTk9UVFkgMjUKI2RlZmlu ZSBFVFhUQlNZIDI2CiNkZWZpbmUgRUZCSUcgMjcKI2RlZmluZSBFTk9TUEMgMjgKI2RlZmlu ZSBFU1BJUEUgMjkKI2RlZmluZSBFUk9GUyAzMAojZGVmaW5lIEVNTElOSyAzMQojZGVmaW5l IEVQSVBFIDMyCiNkZWZpbmUgRURPTSAzMwojZGVmaW5lIEVSQU5HRSAzNAojIDYgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmgiIDIgMyA0CgojZGVmaW5l IEVERUFETEsgMzUKI2RlZmluZSBFTkFNRVRPT0xPTkcgMzYKI2RlZmluZSBFTk9MQ0sgMzcK IyAxOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvZXJybm8uaCIgMyA0 CiNkZWZpbmUgRU5PU1lTIDM4CgojZGVmaW5lIEVOT1RFTVBUWSAzOQojZGVmaW5lIEVMT09Q IDQwCiNkZWZpbmUgRVdPVUxEQkxPQ0sgRUFHQUlOCiNkZWZpbmUgRU5PTVNHIDQyCiNkZWZp bmUgRUlEUk0gNDMKI2RlZmluZSBFQ0hSTkcgNDQKI2RlZmluZSBFTDJOU1lOQyA0NQojZGVm aW5lIEVMM0hMVCA0NgojZGVmaW5lIEVMM1JTVCA0NwojZGVmaW5lIEVMTlJORyA0OAojZGVm aW5lIEVVTkFUQ0ggNDkKI2RlZmluZSBFTk9DU0kgNTAKI2RlZmluZSBFTDJITFQgNTEKI2Rl ZmluZSBFQkFERSA1MgojZGVmaW5lIEVCQURSIDUzCiNkZWZpbmUgRVhGVUxMIDU0CiNkZWZp bmUgRU5PQU5PIDU1CiNkZWZpbmUgRUJBRFJRQyA1NgojZGVmaW5lIEVCQURTTFQgNTcKCiNk ZWZpbmUgRURFQURMT0NLIEVERUFETEsKCiNkZWZpbmUgRUJGT05UIDU5CiNkZWZpbmUgRU5P U1RSIDYwCiNkZWZpbmUgRU5PREFUQSA2MQojZGVmaW5lIEVUSU1FIDYyCiNkZWZpbmUgRU5P U1IgNjMKI2RlZmluZSBFTk9ORVQgNjQKI2RlZmluZSBFTk9QS0cgNjUKI2RlZmluZSBFUkVN T1RFIDY2CiNkZWZpbmUgRU5PTElOSyA2NwojZGVmaW5lIEVBRFYgNjgKI2RlZmluZSBFU1JN TlQgNjkKI2RlZmluZSBFQ09NTSA3MAojZGVmaW5lIEVQUk9UTyA3MQojZGVmaW5lIEVNVUxU SUhPUCA3MgojZGVmaW5lIEVET1RET1QgNzMKI2RlZmluZSBFQkFETVNHIDc0CiNkZWZpbmUg RU9WRVJGTE9XIDc1CiNkZWZpbmUgRU5PVFVOSVEgNzYKI2RlZmluZSBFQkFERkQgNzcKI2Rl ZmluZSBFUkVNQ0hHIDc4CiNkZWZpbmUgRUxJQkFDQyA3OQojZGVmaW5lIEVMSUJCQUQgODAK I2RlZmluZSBFTElCU0NOIDgxCiNkZWZpbmUgRUxJQk1BWCA4MgojZGVmaW5lIEVMSUJFWEVD IDgzCiNkZWZpbmUgRUlMU0VRIDg0CiNkZWZpbmUgRVJFU1RBUlQgODUKI2RlZmluZSBFU1RS UElQRSA4NgojZGVmaW5lIEVVU0VSUyA4NwojZGVmaW5lIEVOT1RTT0NLIDg4CiNkZWZpbmUg RURFU1RBRERSUkVRIDg5CiNkZWZpbmUgRU1TR1NJWkUgOTAKI2RlZmluZSBFUFJPVE9UWVBF IDkxCiNkZWZpbmUgRU5PUFJPVE9PUFQgOTIKI2RlZmluZSBFUFJPVE9OT1NVUFBPUlQgOTMK I2RlZmluZSBFU09DS1ROT1NVUFBPUlQgOTQKI2RlZmluZSBFT1BOT1RTVVBQIDk1CiNkZWZp bmUgRVBGTk9TVVBQT1JUIDk2CiNkZWZpbmUgRUFGTk9TVVBQT1JUIDk3CiNkZWZpbmUgRUFE RFJJTlVTRSA5OAojZGVmaW5lIEVBRERSTk9UQVZBSUwgOTkKI2RlZmluZSBFTkVURE9XTiAx MDAKI2RlZmluZSBFTkVUVU5SRUFDSCAxMDEKI2RlZmluZSBFTkVUUkVTRVQgMTAyCiNkZWZp bmUgRUNPTk5BQk9SVEVEIDEwMwojZGVmaW5lIEVDT05OUkVTRVQgMTA0CiNkZWZpbmUgRU5P QlVGUyAxMDUKI2RlZmluZSBFSVNDT05OIDEwNgojZGVmaW5lIEVOT1RDT05OIDEwNwojZGVm aW5lIEVTSFVURE9XTiAxMDgKI2RlZmluZSBFVE9PTUFOWVJFRlMgMTA5CiNkZWZpbmUgRVRJ TUVET1VUIDExMAojZGVmaW5lIEVDT05OUkVGVVNFRCAxMTEKI2RlZmluZSBFSE9TVERPV04g MTEyCiNkZWZpbmUgRUhPU1RVTlJFQUNIIDExMwojZGVmaW5lIEVBTFJFQURZIDExNAojZGVm aW5lIEVJTlBST0dSRVNTIDExNQojZGVmaW5lIEVTVEFMRSAxMTYKI2RlZmluZSBFVUNMRUFO IDExNwojZGVmaW5lIEVOT1ROQU0gMTE4CiNkZWZpbmUgRU5BVkFJTCAxMTkKI2RlZmluZSBF SVNOQU0gMTIwCiNkZWZpbmUgRVJFTU9URUlPIDEyMQojZGVmaW5lIEVEUVVPVCAxMjIKCiNk ZWZpbmUgRU5PTUVESVVNIDEyMwojZGVmaW5lIEVNRURJVU1UWVBFIDEyNAojZGVmaW5lIEVD QU5DRUxFRCAxMjUKI2RlZmluZSBFTk9LRVkgMTI2CiNkZWZpbmUgRUtFWUVYUElSRUQgMTI3 CiNkZWZpbmUgRUtFWVJFVk9LRUQgMTI4CiNkZWZpbmUgRUtFWVJFSkVDVEVEIDEyOQoKCiNk ZWZpbmUgRU9XTkVSREVBRCAxMzAKI2RlZmluZSBFTk9UUkVDT1ZFUkFCTEUgMTMxCgojZGVm aW5lIEVSRktJTEwgMTMyCgojZGVmaW5lIEVIV1BPSVNPTiAxMzMKIyAyICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMiAzIDQKIyAyICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9saW51eC9lcnJuby5oIiAyIDMgNAojIDI3ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL2Vycm5vLmgiIDIgMyA0CgoKCiNkZWZpbmUgRU5PVFNVUCBFT1BOT1RTVVBQ CiMgMjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMyA0CgoKCgoKCgoK ZXh0ZXJuIGludCAqX19lcnJub19sb2NhdGlvbiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiNk ZWZpbmUgZXJybm8gKCpfX2Vycm5vX2xvY2F0aW9uICgpKQoKCgoKCgpleHRlcm4gY2hhciAq cHJvZ3JhbV9pbnZvY2F0aW9uX25hbWU7CmV4dGVybiBjaGFyICpwcm9ncmFtX2ludm9jYXRp b25fc2hvcnRfbmFtZTsKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBl cy9lcnJvcl90LmgiIDEgMyA0CiMgMjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMvZXJyb3JfdC5oIiAzIDQKI2RlZmluZSBfX2Vycm9yX3RfZGVmaW5lZCAxCgp0eXBl ZGVmIGludCBlcnJvcl90OwojIDQ5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9lcnJuby5o IiAyIDMgNAoKCgoKIyAxMTUgInN5c3RlbS5oIiAyCiMgMTI1ICJzeXN0ZW0uaCIKIyAxICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzIDQKIyAyMyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAojZGVmaW5lIF9TVFJJTkdfSCAxCgojZGVm aW5lIF9fR0xJQkNfSU5URVJOQUxfU1RBUlRJTkdfSEVBREVSX0lNUExFTUVOVEFUSU9OIAoj IDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIg MSAzIDQKIyAzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1z dGFydC5oIiAzIDQKI3VuZGVmIF9fR0xJQkNfSU5URVJOQUxfU1RBUlRJTkdfSEVBREVSX0lN UExFTUVOVEFUSU9OCgoKCgoKI3VuZGVmIF9fR0xJQkNfVVNFX0xJQl9FWFQyCgoKI2RlZmlu ZSBfX0dMSUJDX1VTRV9MSUJfRVhUMiAxCiMgNjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIgMyA0CiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNf NjA1NTlfQkZQX0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfQkZQX0VYVCAx CgoKCiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfQkZQX0VYVF9DMlgKCiNkZWZpbmUg X19HTElCQ19VU0VfSUVDXzYwNTU5X0JGUF9FWFRfQzJYIDEKCgoKI3VuZGVmIF9fR0xJQkNf VVNFX0lFQ182MDU1OV9FWFQKCiNkZWZpbmUgX19HTElCQ19VU0VfSUVDXzYwNTU5X0VYVCAx CiMgOTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3RhcnQu aCIgMyA0CiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhUCgojZGVmaW5l IF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFQgMQoKCgojdW5kZWYgX19HTElCQ19V U0VfSUVDXzYwNTU5X0ZVTkNTX0VYVF9DMlgKCiNkZWZpbmUgX19HTElCQ19VU0VfSUVDXzYw NTU5X0ZVTkNTX0VYVF9DMlggMQoKCgoKCgojdW5kZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5 X1RZUEVTX0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfVFlQRVNfRVhUIDEK IyAyNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CgoKCgojZGVm aW5lIF9fbmVlZF9zaXplX3QgCiNkZWZpbmUgX19uZWVkX05VTEwgCiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1n bnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTU4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8x NC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfcHRyZGlmZl90CiMg MjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25n YXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBf X25lZWRfc2l6ZV90CiMgMzQ5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYu aCIgMyA0CiN1bmRlZiBfX25lZWRfd2NoYXJfdAojIDM5OSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4x L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgTlVMTAoKCgoKI2RlZmluZSBOVUxMICgo dm9pZCAqKTApCgoKCgoKI3VuZGVmIF9fbmVlZF9OVUxMCgoKCgojdW5kZWYgb2Zmc2V0b2YK I2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJFUikgX19idWlsdGluX29mZnNldG9mIChUWVBF LCBNRU1CRVIpCiMgMzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMg NAojIDQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiB2 b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25zdCB2b2lkICpfX3Jl c3RyaWN0IF9fc3JjLAogICAgICAgc2l6ZV90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7CgoKZXh0ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwgY29uc3Qgdm9pZCAq X19zcmMsIHNpemVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoK ZXh0ZXJuIHZvaWQgKm1lbWNjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25zdCB2 b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgIGludCBfX2MsIHNpemVfdCBfX24pCiAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSwgMikpKSBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAo X193cml0ZV9vbmx5X18sIDEsIDQpKSk7CgoKCgpleHRlcm4gdm9pZCAqbWVtc2V0ICh2b2lk ICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4 dGVybiBpbnQgbWVtY21wIChjb25zdCB2b2lkICpfX3MxLCBjb25zdCB2b2lkICpfX3MyLCBz aXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpOwojIDgwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIg MyA0CmV4dGVybiBpbnQgX19tZW1jbXBlcSAoY29uc3Qgdm9pZCAqX19zMSwgY29uc3Qgdm9p ZCAqX19zMiwgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsKIyAxMDcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3N0cmluZy5oIiAzIDQKZXh0ZXJuIHZvaWQgKm1lbWNociAoY29uc3Qgdm9pZCAqX19zLCBp bnQgX19jLCBzaXplX3QgX19uKQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKTsKIyAxMjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 cmluZy5oIiAzIDQKZXh0ZXJuIHZvaWQgKnJhd21lbWNociAoY29uc3Qgdm9pZCAqX19zLCBp bnQgX19jKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpOwojIDEzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApl eHRlcm4gdm9pZCAqbWVtcmNociAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3Qg X19uKQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX19yZWFkX29ubHlfXywg MSwgMykpKTsKCgoKCgpleHRlcm4gY2hhciAqc3RyY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9f ZGVzdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSwgMikpKTsKCmV4dGVybiBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9f ZGVzdCwKICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBjaGFyICpzdHJjYXQg KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jYXQg KGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3Jj LAogICAgICAgIHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVy biBpbnQgc3RyY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoK ZXh0ZXJuIGludCBzdHJuY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3My LCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgc3RyY29sbCAoY29uc3QgY2hhciAqX19z MSwgY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBzaXplX3Qgc3RyeGZybSAoY2hhciAq X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z cmMsIHNpemVfdCBfX24pCiAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKSBfX2F0dHJpYnV0ZV9f ICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDMpKSk7CgoKCiMgMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9sb2NhbGVfdC5oIiAxIDMgNAojIDIwICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL2xvY2FsZV90LmgiIDMgNAojZGVm aW5lIF9CSVRTX1RZUEVTX0xPQ0FMRV9UX0ggMQoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3R5cGVzL19fbG9jYWxlX3QuaCIgMSAzIDQKIyAyMCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvYml0cy90eXBlcy9fX2xvY2FsZV90LmgiIDMgNAojZGVmaW5lIF9CSVRT X1RZUEVTX19fTE9DQUxFX1RfSCAxCgoKCgoKCnN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoK ICBzdHJ1Y3QgX19sb2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKCgogIGNvbnN0IHVuc2ln bmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0IGludCAqX19jdHlwZV90b2xvd2Vy OwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwoKCiAgY29uc3QgY2hhciAqX19uYW1l c1sxM107Cn07Cgp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QgKl9fbG9jYWxlX3Q7 CiMgMjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvbG9jYWxlX3QuaCIg MiAzIDQKCnR5cGVkZWYgX19sb2NhbGVfdCBsb2NhbGVfdDsKIyAxNzMgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAoKCmV4dGVybiBpbnQgc3RyY29sbF9sIChj b25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLCBsb2NhbGVfdCBfX2wpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDMpKSk7 CgoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtX2wgKGNoYXIgKl9fZGVzdCwgY29uc3QgY2hhciAq X19zcmMsIHNpemVfdCBfX24sCiAgICBsb2NhbGVfdCBfX2wpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgy LCA0KSkpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9f LCAxLCAzKSkpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJkdXAgKGNvbnN0IGNoYXIgKl9fcykK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp OwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoY29uc3QgY2hhciAqX19zdHJpbmcsIHNp emVfdCBfX24pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKCgoKCiNkZWZpbmUgc3RyZHVwYShzKSAoX19leHRlbnNpb25fXyAoeyBj b25zdCBjaGFyICpfX29sZCA9IChzKTsgc2l6ZV90IF9fbGVuID0gc3RybGVuIChfX29sZCkg KyAxOyBjaGFyICpfX25ldyA9IChjaGFyICopIF9fYnVpbHRpbl9hbGxvY2EgKF9fbGVuKTsg KGNoYXIgKikgbWVtY3B5IChfX25ldywgX19vbGQsIF9fbGVuKTsgfSkpCiMgMjExICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CiNkZWZpbmUgc3RybmR1cGEocyxu KSAoX19leHRlbnNpb25fXyAoeyBjb25zdCBjaGFyICpfX29sZCA9IChzKTsgc2l6ZV90IF9f bGVuID0gc3RybmxlbiAoX19vbGQsIChuKSk7IGNoYXIgKl9fbmV3ID0gKGNoYXIgKikgX19i dWlsdGluX2FsbG9jYSAoX19sZW4gKyAxKTsgX19uZXdbX19sZW5dID0gJ1wwJzsgKGNoYXIg KikgbWVtY3B5IChfX25ldywgX19vbGQsIF9fbGVuKTsgfSkpCiMgMjQ2ICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVybiBjaGFyICpzdHJjaHIgKGNvbnN0 IGNoYXIgKl9fcywgaW50IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKTsKIyAyNzMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKl9fcywgaW50 IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKIyAyODYgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9u ZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25n YXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0 ZXJuIGNoYXIgKnN0cmNocm51bCAoY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQogICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4 dGVybiBzaXplX3Qgc3RyY3NwbiAoY29uc3QgY2hhciAqX19zLCBjb25zdCBjaGFyICpfX3Jl amVjdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgMikpKTsKCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAoY29uc3QgY2hhciAqX19zLCBjb25z dCBjaGFyICpfX2FjY2VwdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMikpKTsKIyAzMjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cnBicmsgKGNvbnN0IGNoYXIgKl9fcywgY29u c3QgY2hhciAqX19hY2NlcHQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDIpKSk7CiMgMzUwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9z dHJpbmcuaCIgMyA0CmV4dGVybiBjaGFyICpzdHJzdHIgKGNvbnN0IGNoYXIgKl9faGF5c3Rh Y2ssIGNvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cnRvayAo Y2hhciAqX19yZXN0cmljdCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RydG9rX3Ig KGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Rl bGltLAogICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMiwgMykpKTsKCmV4dGVybiBjaGFyICpzdHJ0b2tfciAoY2hhciAqX19yZXN0cmlj dCBfX3MsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgY2hhciAq Kl9fcmVzdHJpY3QgX19zYXZlX3B0cikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsK IyAzODAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNo YXIgKnN0cmNhc2VzdHIgKGNvbnN0IGNoYXIgKl9faGF5c3RhY2ssIGNvbnN0IGNoYXIgKl9f bmVlZGxlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxLCAyKSkpOwoKCgoKCgoKZXh0ZXJuIHZvaWQgKm1lbW1lbSAoY29uc3Qgdm9pZCAqX19o YXlzdGFjaywgc2l6ZV90IF9faGF5c3RhY2tsZW4sCiAgICAgICBjb25zdCB2b2lkICpfX25l ZWRsZSwgc2l6ZV90IF9fbmVlZGxlbGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nl c3NfXyAoX19yZWFkX29ubHlfXywgMSwgMikpKQogICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNj ZXNzX18gKF9fcmVhZF9vbmx5X18sIDMsIDQpKSk7CgoKCmV4dGVybiB2b2lkICpfX21lbXBj cHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICBjb25zdCB2b2lkICpfX3Jlc3RyaWN0 IF9fc3JjLCBzaXplX3QgX19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRl cm4gdm9pZCAqbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgY29u c3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVybiBzaXplX3Qgc3RybGVuIChjb25zdCBjaGFyICpf X3MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSk7CgoKCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBz aXplX3QgX19tYXhsZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51 bSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyA0NDQgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmVy cm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMikpKSBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193 cml0ZV9vbmx5X18sIDIsIDMpKSk7CgoKCgpleHRlcm4gY29uc3QgY2hhciAqc3RyZXJyb3Jk ZXNjX25wIChpbnQgX19lcnIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7CgpleHRlcm4gY29uc3QgY2hhciAqc3RyZXJyb3JuYW1lX25wIChpbnQgX19lcnIp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKZXh0ZXJu IGNoYXIgKnN0cmVycm9yX2wgKGludCBfX2Vycm51bSwgbG9jYWxlX3QgX19sKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgojIDEgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMSAzIDQKIyAxOSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvc3RyaW5ncy5oIiAzIDQKI2RlZmluZSBfU1RSSU5HU19IIDEKCgojZGVmaW5lIF9f bmVlZF9zaXplX3QgCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgi IDEgMyA0CiMgMTU4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIv Z2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0 CiN1bmRlZiBfX25lZWRfcHRyZGlmZl90CiMgMjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5j bHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfc2l6ZV90CiMgMzQ5ICIvaG9tZS9j aGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxs L2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4 LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfd2NoYXJf dAojIDM5OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9s b29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5k ZWYgTlVMTAoKCgoKI2RlZmluZSBOVUxMICgodm9pZCAqKTApCgoKCgoKI3VuZGVmIF9fbmVl ZF9OVUxMCgoKCgojdW5kZWYgb2Zmc2V0b2YKI2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJF UikgX19idWlsdGluX29mZnNldG9mIChUWVBFLCBNRU1CRVIpCiMgMjQgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N0cmluZ3MuaCIgMiAzIDQKCgoKCgoKCgoKCmV4dGVybiBpbnQgYmNt cCAoY29uc3Qgdm9pZCAqX19zMSwgY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK CgpleHRlcm4gdm9pZCBiY29weSAoY29uc3Qgdm9pZCAqX19zcmMsIHZvaWQgKl9fZGVzdCwg c2l6ZV90IF9fbikKICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gdm9pZCBi emVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyA2 OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hh aW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAzIDQKZXh0ZXJuIGNoYXIg KmluZGV4IChjb25zdCBjaGFyICpfX3MsIGludCBfX2MpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgOTYgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0cmluZ3MuaCIgMyA0CmV4dGVybiBjaGFyICpyaW5kZXggKGNvbnN0IGNo YXIgKl9fcywgaW50IF9fYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIGludCBmZnMgKGludCBfX2kpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOwoKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsIChsb25nIGxvbmcgaW50 IF9fbGwpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAo Y29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHN0 cm5jYXNlY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLCBzaXplX3Qg X19uKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx LCAyKSkpOwoKCgoKCgpleHRlcm4gaW50IHN0cmNhc2VjbXBfbCAoY29uc3QgY2hhciAqX19z MSwgY29uc3QgY2hhciAqX19zMiwgbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIsIDMpKSk7CgoKCmV4dGVybiBp bnQgc3RybmNhc2VjbXBfbCAoY29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMiwK ICAgICBzaXplX3QgX19uLCBsb2NhbGVfdCBfX2xvYykKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgNCkpKTsKCgoKIyA0NjMgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNAoKCgpleHRlcm4gdm9pZCBleHBs aWNpdF9iemVybyAodm9pZCAqX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KQogICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAxLCAy KSkpOwoKCgpleHRlcm4gY2hhciAqc3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmlu Z3AsCiAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDIpKSk7CgoKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19z aWcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVy biBjb25zdCBjaGFyICpzaWdhYmJyZXZfbnAgKGludCBfX3NpZykgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gY29uc3QgY2hhciAqc2lnZGVz Y3JfbnAgKGludCBfX3NpZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz dCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSwgMikpKTsKZXh0ZXJuIGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3Qs IGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19k ZXN0LAogICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gY2hhciAqc3RwbmNweSAoY2hhciAq X19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny Yywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVy biBzaXplX3Qgc3RybGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgIGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDIpKSkgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9f LCAxLCAzKSkpOwoKCgpleHRlcm4gc2l6ZV90IHN0cmxjYXQgKGNoYXIgKl9fcmVzdHJpY3Qg X19kZXN0LAogICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3Qg X19uKQogIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpIF9fYXR0cmlidXRlX18gKChfX2FjY2Vz c19fIChfX3JlYWRfd3JpdGVfXywgMSwgMykpKTsKCgoKCmV4dGVybiBpbnQgc3RydmVyc2Nt cCAoY29uc3QgY2hhciAqX19zMSwgY29uc3QgY2hhciAqX19zMikKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gY2hh ciAqc3RyZnJ5IChjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0 ZXJuIHZvaWQgKm1lbWZyb2IgKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSkKICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3JlYWRfd3JpdGVf XywgMSwgMikpKTsKIyA1NDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmluZy5oIiAz IDQKZXh0ZXJuIGNoYXIgKmJhc2VuYW1lIChjb25zdCBjaGFyICpfX2ZpbGVuYW1lKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSkpKTsKIyA1NTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0cmlu Zy5oIiAzIDQKCiMgMTI2ICJzeXN0ZW0uaCIgMgojIDEzNCAic3lzdGVtLmgiCiMgMSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5z dGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgMjUgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKI2RlZmluZSBfX0dMSUJDX0lOVEVSTkFMX1NU QVJUSU5HX0hFQURFUl9JTVBMRU1FTlRBVElPTiAKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0LmgiIDEgMyA0CiMgMzEgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIgMyA0CiN1bmRlZiBfX0dM SUJDX0lOVEVSTkFMX1NUQVJUSU5HX0hFQURFUl9JTVBMRU1FTlRBVElPTgoKCgoKCiN1bmRl ZiBfX0dMSUJDX1VTRV9MSUJfRVhUMgoKCiNkZWZpbmUgX19HTElCQ19VU0VfTElCX0VYVDIg MQojIDY3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0 LmgiIDMgNAojdW5kZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5X0JGUF9FWFQKCiNkZWZpbmUg X19HTElCQ19VU0VfSUVDXzYwNTU5X0JGUF9FWFQgMQoKCgojdW5kZWYgX19HTElCQ19VU0Vf SUVDXzYwNTU5X0JGUF9FWFRfQzJYCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9C RlBfRVhUX0MyWCAxCgoKCiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRVhUCgojZGVm aW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9FWFQgMQojIDkwICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0LmgiIDMgNAojdW5kZWYgX19HTElCQ19V U0VfSUVDXzYwNTU5X0ZVTkNTX0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlf RlVOQ1NfRVhUIDEKCgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFRf QzJYCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFRfQzJYIDEKCgoK CgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9UWVBFU19FWFQKCiNkZWZpbmUgX19H TElCQ19VU0VfSUVDXzYwNTU5X1RZUEVTX0VYVCAxCiMgMjcgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKI2RlZmlu ZSBfX25lZWRfd2NoYXJfdCAKI2RlZmluZSBfX25lZWRfTlVMTCAKIyAxICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdu dS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAxNTggIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0 LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9wdHJkaWZmX3QKIyAy MzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdh cmNoNjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9f bmVlZF9zaXplX3QKIyAzNDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRlL3N0ZGRlZi5o IiAzIDQKI3VuZGVmIF9fbmVlZF93Y2hhcl90CiMgMzk5ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEv aW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBOVUxMCgoKCgojZGVmaW5lIE5VTEwgKCh2 b2lkICopMCkKCgoKCgojdW5kZWYgX19uZWVkX05VTEwKCgoKCiN1bmRlZiBvZmZzZXRvZgoj ZGVmaW5lIG9mZnNldG9mKFRZUEUsTUVNQkVSKSBfX2J1aWx0aW5fb2Zmc2V0b2YgKFRZUEUs IE1FTUJFUikKIyAzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0 CgoKCiNkZWZpbmUgX1NURExJQl9IIDEKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMgNAojIDI1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL3dhaXRmbGFncy5oIiAzIDQKI2RlZmluZSBXTk9IQU5HIDEKI2RlZmluZSBXVU5U UkFDRUQgMgoKCgojZGVmaW5lIFdTVE9QUEVEIDIKI2RlZmluZSBXRVhJVEVEIDQKI2RlZmlu ZSBXQ09OVElOVUVEIDgKI2RlZmluZSBXTk9XQUlUIDB4MDEwMDAwMDAKCgojZGVmaW5lIF9f V05PVEhSRUFEIDB4MjAwMDAwMDAKCiNkZWZpbmUgX19XQUxMIDB4NDAwMDAwMDAKI2RlZmlu ZSBfX1dDTE9ORSAweDgwMDAwMDAwCiMgNDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 ZGxpYi5oIiAyIDMgNAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd2FpdHN0 YXR1cy5oIiAxIDMgNAojIDI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dhaXRz dGF0dXMuaCIgMyA0CiNkZWZpbmUgX19XRVhJVFNUQVRVUyhzdGF0dXMpICgoKHN0YXR1cykg JiAweGZmMDApID4+IDgpCgoKI2RlZmluZSBfX1dURVJNU0lHKHN0YXR1cykgKChzdGF0dXMp ICYgMHg3ZikKCgojZGVmaW5lIF9fV1NUT1BTSUcoc3RhdHVzKSBfX1dFWElUU1RBVFVTKHN0 YXR1cykKCgojZGVmaW5lIF9fV0lGRVhJVEVEKHN0YXR1cykgKF9fV1RFUk1TSUcoc3RhdHVz KSA9PSAwKQoKCiNkZWZpbmUgX19XSUZTSUdOQUxFRChzdGF0dXMpICgoKHNpZ25lZCBjaGFy KSAoKChzdGF0dXMpICYgMHg3ZikgKyAxKSA+PiAxKSA+IDApCgoKCiNkZWZpbmUgX19XSUZT VE9QUEVEKHN0YXR1cykgKCgoc3RhdHVzKSAmIDB4ZmYpID09IDB4N2YpCgoKCgojZGVmaW5l IF9fV0lGQ09OVElOVUVEKHN0YXR1cykgKChzdGF0dXMpID09IF9fV19DT05USU5VRUQpCgoK CiNkZWZpbmUgX19XQ09SRURVTVAoc3RhdHVzKSAoKHN0YXR1cykgJiBfX1dDT1JFRkxBRykK CgojZGVmaW5lIF9fV19FWElUQ09ERShyZXQsc2lnKSAoKHJldCkgPDwgOCB8IChzaWcpKQoj ZGVmaW5lIF9fV19TVE9QQ09ERShzaWcpICgoc2lnKSA8PCA4IHwgMHg3ZikKI2RlZmluZSBf X1dfQ09OVElOVUVEIDB4ZmZmZgojZGVmaW5lIF9fV0NPUkVGTEFHIDB4ODAKIyA0MiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5z dGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKI2RlZmluZSBXRVhJVFNU QVRVUyhzdGF0dXMpIF9fV0VYSVRTVEFUVVMgKHN0YXR1cykKI2RlZmluZSBXVEVSTVNJRyhz dGF0dXMpIF9fV1RFUk1TSUcgKHN0YXR1cykKI2RlZmluZSBXU1RPUFNJRyhzdGF0dXMpIF9f V1NUT1BTSUcgKHN0YXR1cykKI2RlZmluZSBXSUZFWElURUQoc3RhdHVzKSBfX1dJRkVYSVRF RCAoc3RhdHVzKQojZGVmaW5lIFdJRlNJR05BTEVEKHN0YXR1cykgX19XSUZTSUdOQUxFRCAo c3RhdHVzKQojZGVmaW5lIFdJRlNUT1BQRUQoc3RhdHVzKSBfX1dJRlNUT1BQRUQgKHN0YXR1 cykKCiNkZWZpbmUgV0lGQ09OVElOVUVEKHN0YXR1cykgX19XSUZDT05USU5VRUQgKHN0YXR1 cykKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CiAgICBpbnQgcmVt OwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsK ICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKI2RlZmluZSBfX2xkaXZfdF9kZWZpbmVk IDEKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGxvbmcg aW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsKICB9IGxsZGl2X3Q7CiNkZWZpbmUg X19sbGRpdl90X2RlZmluZWQgMQoKCgoKI2RlZmluZSBSQU5EX01BWCAyMTQ3NDgzNjQ3CgoK CgojZGVmaW5lIEVYSVRfRkFJTFVSRSAxCiNkZWZpbmUgRVhJVF9TVUNDRVNTIDAKCgoKI2Rl ZmluZSBNQl9DVVJfTUFYIChfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICgpKQpleHRlcm4gc2l6 ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgpleHRlcm4gZG91YmxlIGF0b2YgKGNvbnN0IGNo YXIgKl9fbnB0cikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKSA7CgpleHRlcm4gaW50IGF0b2kgKGNvbnN0IGNoYXIgKl9fbnB0cikKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7Cgpl eHRlcm4gbG9uZyBpbnQgYXRvbCAoY29uc3QgY2hhciAqX19ucHRyKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKX19leHRlbnNp b25fXyBleHRlcm4gbG9uZyBsb25nIGludCBhdG9sbCAoY29uc3QgY2hhciAqX19ucHRyKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsK CgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRy LAogICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOwoKCgpleHRlcm4gZmxvYXQgc3RydG9mIChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fbnB0ciwKICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkIChjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDE0MSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gX0Zsb2F0MzIgc3RydG9mMzIgKGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gX0Zsb2F0NjQgc3RydG9m NjQgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgIGNoYXIgKipfX3Jlc3Ry aWN0IF9fZW5kcHRyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gX0Zs b2F0MTI4IHN0cnRvZjEyOCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KTsKCgoKZXh0ZXJuIF9GbG9hdDMyeCBzdHJ0b2YzMnggKGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19ucHRyLAogICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBfRmxvYXQ2NHggc3RydG9mNjR4IChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDE3NyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gbG9uZyBpbnQgc3RydG9sIChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgpleHRlcm4gdW5z aWduZWQgbG9uZyBpbnQgc3RydG91bCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIs CiAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwoKCgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcg aW50IHN0cnRvcSAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgY2hh ciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50 IHN0cnRvdXEgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgIGNo YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOwoKCgoKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0 b2xsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hhciAqKl9f cmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRv dWxsIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICBjaGFyICoqX19yZXN0 cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsK CgoKCgoKZXh0ZXJuIGxvbmcgaW50IHN0cnRvbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSBfX2FzbV9f ICgiIiAiX19pc29jMjNfc3RydG9sIikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKQoKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwpl eHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSBfX2Fz bV9fICgiIiAiX19pc29jMjNfc3RydG91bCIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSkKCgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBp bnQgX19iYXNlKSBfX2FzbV9fICgiIiAiX19pc29jMjNfc3RydG9sbCIpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkKCgogICAgIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSkpKTsKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBs b25nIGludCBzdHJ0b3VxIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAq Kl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpIF9fYXNtX18gKCIiICJfX2lzb2My M19zdHJ0b3VsbCIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkK CgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgpfX2V4dGVuc2lv bl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgKGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgX19h c21fXyAoIiIgIl9faXNvYzIzX3N0cnRvbGwiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpCgoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEp KSk7Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91 bGwgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBf X2VuZHB0ciwgaW50IF9fYmFzZSkgX19hc21fXyAoIiIgIl9faXNvYzIzX3N0cnRvdWxsIikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQoKCgogICAgIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyAyNzggIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBzdHJmcm9tZCAoY2hhciAqX19kZXN0 LCBzaXplX3QgX19zaXplLCBjb25zdCBjaGFyICpfX2Zvcm1hdCwKICAgICAgIGRvdWJsZSBf X2YpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSk7CgpleHRlcm4gaW50IHN0cmZyb21mIChj aGFyICpfX2Rlc3QsIHNpemVfdCBfX3NpemUsIGNvbnN0IGNoYXIgKl9fZm9ybWF0LAogICAg ICAgZmxvYXQgX19mKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKZXh0ZXJuIGludCBz dHJmcm9tbCAoY2hhciAqX19kZXN0LCBzaXplX3QgX19zaXplLCBjb25zdCBjaGFyICpfX2Zv cm1hdCwKICAgICAgIGxvbmcgZG91YmxlIF9fZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykp KTsKIyAyOTggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJu IGludCBzdHJmcm9tZjMyIChjaGFyICpfX2Rlc3QsIHNpemVfdCBfX3NpemUsIGNvbnN0IGNo YXIgKiBfX2Zvcm1hdCwKICAgICAgICAgX0Zsb2F0MzIgX19mKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgzKSkpOwoKCgpleHRlcm4gaW50IHN0cmZyb21mNjQgKGNoYXIgKl9fZGVzdCwgc2l6 ZV90IF9fc2l6ZSwgY29uc3QgY2hhciAqIF9fZm9ybWF0LAogICAgICAgICBfRmxvYXQ2NCBf X2YpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSk7CgoKCmV4dGVybiBpbnQgc3RyZnJvbWYx MjggKGNoYXIgKl9fZGVzdCwgc2l6ZV90IF9fc2l6ZSwgY29uc3QgY2hhciAqIF9fZm9ybWF0 LAogICBfRmxvYXQxMjggX19mKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKCgpleHRl cm4gaW50IHN0cmZyb21mMzJ4IChjaGFyICpfX2Rlc3QsIHNpemVfdCBfX3NpemUsIGNvbnN0 IGNoYXIgKiBfX2Zvcm1hdCwKICAgX0Zsb2F0MzJ4IF9fZikKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMykpKTsKCgoKZXh0ZXJuIGludCBzdHJmcm9tZjY0eCAoY2hhciAqX19kZXN0LCBzaXpl X3QgX19zaXplLCBjb25zdCBjaGFyICogX19mb3JtYXQsCiAgIF9GbG9hdDY0eCBfX2YpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDMpKSk7CiMgMzQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBsb25nIGludCBzdHJ0b2xfbCAoY29uc3QgY2hhciAq X19yZXN0cmljdCBfX25wdHIsCiAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu dCBfX2Jhc2UsCiAgICAgbG9jYWxlX3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCA0KSkp OwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWxfbCAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25wdHIsCiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAg ICAgICAgaW50IF9fYmFzZSwgbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEsIDQpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGxf bCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICBjaGFyICoqX19yZXN0cmlj dCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgIGxvY2FsZV90IF9fbG9jKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxLCA0KSkpOwoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9u ZyBsb25nIGludCBzdHJ0b3VsbF9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgaW50IF9fYmFzZSwg bG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgoKCgoKZXh0 ZXJuIGxvbmcgaW50IHN0cnRvbF9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwg Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsIGxvY2FsZV90IF9fbG9j KSBfX2FzbV9fICgiIiAiX19pc29jMjNfc3RydG9sX2wiKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpCgoKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCA0KSkpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bF9sIChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs IGludCBfX2Jhc2UsIGxvY2FsZV90IF9fbG9jKSBfX2FzbV9fICgiIiAiX19pc29jMjNfc3Ry dG91bF9sIikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQoKCgoK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7Cl9fZXh0ZW5zaW9u X18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbF9sIChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UsIGxv Y2FsZV90IF9fbG9jKSBfX2FzbV9fICgiIiAiX19pc29jMjNfc3RydG9sbF9sIikgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQoKCgoKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2ln bmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGxfbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLCBsb2NhbGVf dCBfX2xvYykgX19hc21fXyAoIiIgIl9faXNvYzIzX3N0cnRvdWxsX2wiKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCgoKCgogICAgIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgNCkpKTsKIyA0MTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGRvdWJsZSBzdHJ0b2RfbCAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25wdHIsCiAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBsb2NhbGVf dCBfX2xvYykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMykpKTsKCmV4dGVybiBmbG9hdCBz dHJ0b2ZfbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgIGNoYXIg KipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBsb2NhbGVfdCBfX2xvYykKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSwgMykpKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkX2wgKGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu ZHB0ciwKICAgICAgICAgbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDMpKSk7CiMgNDM2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4 dGVybiBfRmxvYXQzMiBzdHJ0b2YzMl9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0 ciwKICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgbG9jYWxlX3Qg X19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSk7CgoKCmV4dGVybiBfRmxvYXQ2 NCBzdHJ0b2Y2NF9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIGNo YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgbG9jYWxlX3QgX19sb2MpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDMpKSk7CgoKCmV4dGVybiBfRmxvYXQxMjggc3RydG9mMTI4 X2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICBjaGFyICoqX19y ZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDMpKSk7CgoKCmV4dGVybiBfRmxvYXQzMnggc3RydG9mMzJ4X2wgKGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICBjaGFyICoqX19yZXN0cmlj dCBfX2VuZHB0ciwKICAgICAgICAgbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDMpKSk7CgoKCmV4dGVybiBfRmxvYXQ2NHggc3RydG9mNjR4X2wgKGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu ZHB0ciwKICAgICAgICAgbG9jYWxlX3QgX19sb2MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDMpKSk7CiMgNDgwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4 dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBhdG9pIChjb25zdCBjaGFy ICpfX25wdHIpCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSAo KHZvaWQgKikwKSwgMTApOwp9CmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19n bnVfaW5saW5lX18pKSBsb25nIGludApfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIGF0b2wgKGNvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2wg KF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApLCAxMCk7Cn0KCgpfX2V4dGVuc2lvbl9f IGV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBsb25n IGxvbmcgaW50Cl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgYXRv bGwgKGNvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChj aGFyICoqKSAoKHZvaWQgKikwKSwgMTApOwp9CiMgNTA1ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpsNjRhIChsb25nIGludCBfX24pIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCmV4dGVybiBsb25n IGludCBhNjRsIChjb25zdCBjaGFyICpfX3MpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwojIDUyMSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gbG9uZyBpbnQgcmFuZG9tICh2b2lkKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiB2b2lkIHNy YW5kb20gKHVuc2lnbmVkIGludCBfX3NlZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKmluaXRzdGF0ZSAodW5zaWduZWQg aW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgc2l6ZV90IF9fc3RhdGVsZW4pIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgyKSkpOwoKCgpleHRlcm4gY2hhciAqc2V0c3RhdGUgKGNoYXIgKl9f c3RhdGVidWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgoKc3RydWN0IHJhbmRvbV9k YXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsKICAgIGludDMyX3QgKnJwdHI7CiAgICBpbnQz Ml90ICpzdGF0ZTsKICAgIGludCByYW5kX3R5cGU7CiAgICBpbnQgcmFuZF9kZWc7CiAgICBp bnQgcmFuZF9zZXA7CiAgICBpbnQzMl90ICplbmRfcHRyOwogIH07CgpleHRlcm4gaW50IHJh bmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJpY3QgX19idWYsCiAgICAgICBp bnQzMl90ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK CmV4dGVybiBpbnQgc3JhbmRvbV9yICh1bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFu ZG9tX2RhdGEgKl9fYnVmKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKZXh0ZXJuIGlu dCBpbml0c3RhdGVfciAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19yZXN0cmljdCBf X3N0YXRlYnVmLAogICBzaXplX3QgX19zdGF0ZWxlbiwKICAgc3RydWN0IHJhbmRvbV9kYXRh ICpfX3Jlc3RyaWN0IF9fYnVmKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOwoKZXh0 ZXJuIGludCBzZXRzdGF0ZV9yIChjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCiAgICAg ICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZvaWQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgpleHRlcm4gdm9pZCBzcmFuZCAo dW5zaWduZWQgaW50IF9fc2VlZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgoKZXh0ZXJuIGludCByYW5kX3IgKHVuc2lnbmVkIGludCAqX19zZWVkKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgoKZXh0ZXJu IGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwpleHRlcm4gZG91YmxlIGVyYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBf X3hzdWJpWzNdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gbG9uZyBpbnQgbHJh bmQ0OCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK ZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNd KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBsb25nIGludCBtcmFuZDQ4 ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwpleHRl cm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBp bnQgX19zZWVkdmFsKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp OwpleHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGlu dCBfX3NlZWQxNnZbM10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4dGVybiB2b2lk IGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsKCgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hv cnQgaW50IF9feFszXTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAg dW5zaWduZWQgc2hvcnQgaW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7 CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwoKICB9OwoK CmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0 IF9fYnVmZmVyLAogICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICh1bnNpZ25lZCBzaG9y dCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3Ry aWN0IF9fYnVmZmVyLAogICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIGludCBscmFuZDQ4X3IgKHN0cnVjdCBk cmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgbG9uZyBpbnQgKl9f cmVzdHJpY3QgX19yZXN1bHQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVy biBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAg ICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxv bmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy KSkpOwoKCmV4dGVybiBpbnQgbXJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jl c3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0 KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gaW50IGpyYW5kNDhfciAo dW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgc3RydWN0IGRyYW5kNDhf ZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBsb25nIGludCAqX19yZXN0cmlj dCBfX3Jlc3VsdCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50 IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpf X2J1ZmZlcikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCmV4dGVybiBpbnQgc2VlZDQ4 X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3NlZWQxNnZbM10sCiAgICAgICBzdHJ1Y3QgZHJh bmQ0OF9kYXRhICpfX2J1ZmZlcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4g aW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCiAgICAgICAg c3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7CgoKZXh0ZXJuIF9fdWludDMyX3QgYXJjNHJhbmRvbSAodm9pZCkKICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgpleHRlcm4gdm9pZCBh cmM0cmFuZG9tX2J1ZiAodm9pZCAqX19idWYsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBfX3VpbnQzMl90IGFyYzRyYW5kb21fdW5pZm9y bSAoX191aW50MzJfdCBfX3VwcGVyX2JvdW5kKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90 IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nf c2l6ZV9fICgxKSkpIDsKCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVfdCBfX25tZW1iLCBz aXplX3QgX19zaXplKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19h bGxvY19zaXplX18gKDEsIDIpKSkgOwoKCgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9p ZCAqX19wdHIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRf XykpIF9fYXR0cmlidXRlX18gKChfX2FsbG9jX3NpemVfXyAoMikpKTsKCgpleHRlcm4gdm9p ZCBmcmVlICh2b2lkICpfX3B0cikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgoKCgoKCmV4dGVybiB2b2lkICpyZWFsbG9jYXJyYXkgKHZvaWQgKl9fcHRy LCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19hbGxvY19zaXplX18gKDIsIDMp KSkKICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fIChfX2J1aWx0aW5fZnJlZSwgMSkp KTsKCgpleHRlcm4gdm9pZCAqcmVhbGxvY2FycmF5ICh2b2lkICpfX3B0ciwgc2l6ZV90IF9f bm1lbWIsIHNpemVfdCBfX3NpemUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAocmVhbGxvY2FycmF5 LCAxKSkpOwoKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMg NAojIDE5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMyA0CiNkZWZpbmUg X0FMTE9DQV9IIDEKCgoKI2RlZmluZSBfX25lZWRfc2l6ZV90IAojIDEgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251 LzE0LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE1OCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQu MC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3B0cmRpZmZfdAojIDIz NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hh aW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19u ZWVkX3NpemVfdAojIDM0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgi IDMgNAojdW5kZWYgX19uZWVkX3djaGFyX3QKIyAzOTkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9p bmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5VTEwKCgoKCiNkZWZpbmUgTlVMTCAoKHZv aWQgKikwKQoKCgoKCiN1bmRlZiBfX25lZWRfTlVMTAoKCgoKI3VuZGVmIG9mZnNldG9mCiNk ZWZpbmUgb2Zmc2V0b2YoVFlQRSxNRU1CRVIpIF9fYnVpbHRpbl9vZmZzZXRvZiAoVFlQRSwg TUVNQkVSKQojIDI1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzIDQK CgoKCiN1bmRlZiBhbGxvY2EKCgpleHRlcm4gdm9pZCAqYWxsb2NhIChzaXplX3QgX19zaXpl KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCiNkZWZpbmUg YWxsb2NhKHNpemUpIF9fYnVpbHRpbl9hbGxvY2EgKHNpemUpCgoKCiMgNzA3ICIvaG9tZS9j aGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxs L2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoKCgpleHRlcm4gdm9pZCAqdmFs bG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19hbGxvY19zaXplX18gKDEpKSkgOwoKCgoKZXh0ZXJuIGludCBwb3NpeF9tZW1hbGln biAodm9pZCAqKl9fbWVtcHRyLCBzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoKZXh0ZXJuIHZvaWQgKmFsaWduZWRf YWxsb2MgKHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21h bGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2NfYWxpZ25fXyAoMSkpKQogICAgIF9f YXR0cmlidXRlX18gKChfX2FsbG9jX3NpemVfXyAoMikpKSA7CgoKCmV4dGVybiB2b2lkIGFi b3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKZXh0ZXJuIGludCBhdGV4aXQgKHZv aWQgKCpfX2Z1bmMpICh2b2lkKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpleHRl cm4gaW50IGF0X3F1aWNrX2V4aXQgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSk7CgoKCgoKCmV4dGVybiBpbnQgb25fZXhpdCAodm9pZCAoKl9fZnVuYykg KGludCBfX3N0YXR1cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKTsKCgoKCgpleHRlcm4gdm9pZCBleGl0IChpbnQgX19zdGF0dXMpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9yZXR1cm5fXykpOwoKCgoKCmV4dGVybiB2b2lkIHF1aWNrX2V4aXQgKGludCBfX3N0 YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBf X3N0YXR1cykgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gY2hhciAqZ2V0ZW52IChj b25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKCmV4dGVybiBj aGFyICpzZWN1cmVfZ2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSkgOwoKCgoKCgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgc2V0ZW52IChjb25zdCBj aGFyICpfX25hbWUsIGNvbnN0IGNoYXIgKl9fdmFsdWUsIGludCBfX3JlcGxhY2UpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDIpKSk7CgoKZXh0ZXJuIGludCB1bnNldGVudiAoY29uc3QgY2hh ciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIGludCBjbGVh cmVudiAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsK IyA4MTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNo YXIgKm1rdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMg ODI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQg bWtzdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpIDsKIyA4MzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQK ZXh0ZXJuIGludCBta3N0ZW1wNjQgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKSA7CiMgODQ5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtzdGVtcHMgKGNoYXIgKl9fdGVtcGxhdGUsIGlu dCBfX3N1ZmZpeGxlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA4 NTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBt a3N0ZW1wczY0IChjaGFyICpfX3RlbXBsYXRlLCBpbnQgX19zdWZmaXhsZW4pCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA4NzAgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9f dGVtcGxhdGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA4ODEgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta29zdGVtcCAoY2hhciAqX190 ZW1wbGF0ZSwgaW50IF9fZmxhZ3MpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KSA7CiMgODkxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVy biBpbnQgbWtvc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSwgaW50IF9fZmxhZ3MpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgOTAxICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtvc3RlbXBzIChjaGFyICpfX3Rl bXBsYXRlLCBpbnQgX19zdWZmaXhsZW4sIGludCBfX2ZsYWdzKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgOTEzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtvc3RlbXBzNjQgKGNoYXIgKl9fdGVtcGxh dGUsIGludCBfX3N1ZmZpeGxlbiwgaW50IF9fZmxhZ3MpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpIDsKIyA5MjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0 ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBzeXN0ZW0gKGNvbnN0IGNoYXIgKl9fY29tbWFuZCkg OwoKCgoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChjb25zdCBjaGFy ICpfX25hbWUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9f bWFsbG9jX18pKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fIChfX2J1aWx0aW5f ZnJlZSwgMSkpKSA7CiMgOTQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRsaWIuaCIg MyA0CmV4dGVybiBjaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25h bWUsCiAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKI2RlZmluZSBfX0NPTVBBUl9G Tl9UIAp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChjb25zdCB2b2lkICosIGNvbnN0 IHZvaWQgKik7CgoKdHlwZWRlZiBfX2NvbXBhcl9mbl90IGNvbXBhcmlzb25fZm5fdDsKCgoK dHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9kX2ZuX3QpIChjb25zdCB2b2lkICosIGNvbnN0IHZv aWQgKiwgdm9pZCAqKTsKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChjb25zdCB2b2lkICpf X2tleSwgY29uc3Qgdm9pZCAqX19iYXNlLAogICAgICAgIHNpemVfdCBfX25tZW1iLCBzaXpl X3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMiwgNSkpKSA7CgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3N0ZGxpYi1ic2VhcmNoLmgiIDEgMyA0CiMgMTkgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMvc3RkbGliLWJzZWFyY2guaCIgMyA0CmV4dGVybiBfX2lubGluZSBf X2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSB2b2lkICoKYnNlYXJjaCAoY29uc3Qg dm9pZCAqX19rZXksIGNvbnN0IHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVf dCBfX3NpemUsCiAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikKewogIHNpemVfdCBfX2wsIF9f dSwgX19pZHg7CiAgY29uc3Qgdm9pZCAqX19wOwogIGludCBfX2NvbXBhcmlzb247CgogIF9f bCA9IDA7CiAgX191ID0gX19ubWVtYjsKICB3aGlsZSAoX19sIDwgX191KQogICAgewogICAg ICBfX2lkeCA9IChfX2wgKyBfX3UpIC8gMjsKICAgICAgX19wID0gKGNvbnN0IHZvaWQgKikg KCgoY29uc3QgY2hhciAqKSBfX2Jhc2UpICsgKF9faWR4ICogX19zaXplKSk7CiAgICAgIF9f Y29tcGFyaXNvbiA9ICgqX19jb21wYXIpIChfX2tleSwgX19wKTsKICAgICAgaWYgKF9fY29t cGFyaXNvbiA8IDApCiBfX3UgPSBfX2lkeDsKICAgICAgZWxzZSBpZiAoX19jb21wYXJpc29u ID4gMCkKIF9fbCA9IF9faWR4ICsgMTsKICAgICAgZWxzZQogewoKI3ByYWdtYSBHQ0MgZGlh Z25vc3RpYyBwdXNoCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdjYXN0LXF1 YWwiCgogICByZXR1cm4gKHZvaWQgKikgX19wOwoKI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBw b3AKCiB9CiAgICB9CgogIHJldHVybiAoKHZvaWQgKikwKTsKfQojIDk2NiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgpleHRlcm4gdm9pZCBxc29ydCAo dm9pZCAqX19iYXNlLCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICBfX2Nv bXBhcl9mbl90IF9fY29tcGFyKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQp KSk7CgpleHRlcm4gdm9pZCBxc29ydF9yICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1i LCBzaXplX3QgX19zaXplLAogICAgICAgX19jb21wYXJfZF9mbl90IF9fY29tcGFyLCB2b2lk ICpfX2FyZykKICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgoKCgpl eHRlcm4gaW50IGFicyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwpleHRlcm4gbG9uZyBp bnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CgoKX19leHRlbnNpb25f XyBleHRlcm4gbG9uZyBsb25nIGludCBsbGFicyAobG9uZyBsb25nIGludCBfX3gpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSkgOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwg aW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgOwpleHRlcm4gbGRpdl90IGxkaXYg KGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSkgOwoKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2X3QgbGxkaXYgKGxvbmcgbG9uZyBp bnQgX19udW1lciwKICAgICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSkgOwojIDEwMTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz IDQKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGlu dCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKCgoKCmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUg X192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICBp bnQgKl9fcmVzdHJpY3QgX19zaWduKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7CgoKCgpl eHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAq X19idWYpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSkgOwoKCgoKZXh0ZXJuIGNoYXIgKnFl Y3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgIGludCAqX19y ZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgzLCA0KSkpIDsKZXh0ZXJuIGNoYXIgKnFmY3Z0IChsb25nIGRvdWJsZSBfX3Zh bHVlLCBpbnQgX19uZGlnaXQsCiAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg Kl9fcmVzdHJpY3QgX19zaWduKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKZXh0 ZXJuIGNoYXIgKnFnY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNo YXIgKl9fYnVmKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpIDsKCgoKCmV4dGVybiBpbnQg ZWN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3Qg X19kZWNwdCwKICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0 IF9fYnVmLAogICAgIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQsIDUpKSk7 CmV4dGVybiBpbnQgZmN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQg Kl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFy ICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDMsIDQsIDUpKSk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUs IGludCBfX25kaWdpdCwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19y ZXN0cmljdCBfX3NpZ24sCiAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBf X2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsKZXh0ZXJuIGludCBxZmN2 dF9yIChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgIGludCAqX19y ZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICBjaGFyICpf X3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMs IDQsIDUpKSk7CgoKCgoKZXh0ZXJuIGludCBtYmxlbiAoY29uc3QgY2hhciAqX19zLCBzaXpl X3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4 dGVybiBpbnQgbWJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgIGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3Ms IHdjaGFyX3QgX193Y2hhcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKCgoKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBf X3B3Y3MsCiAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpCiAgICBfX2F0dHJpYnV0ZV9f ICgoX19hY2Nlc3NfXyAoX19yZWFkX29ubHlfXywgMikpKTsKCmV4dGVybiBzaXplX3Qgd2Nz dG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICBjb25zdCB3Y2hhcl90ICpfX3Jlc3Ry aWN0IF9fcHdjcywgc2l6ZV90IF9fbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpCiAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVf b25seV9fLCAxLCAzKSkpCiAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fcmVhZF9v bmx5X18sIDIpKSk7CgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoY29uc3QgY2hhciAqX19y ZXNwb25zZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwojIDEwOTkgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipf X3Jlc3RyaWN0IF9fb3B0aW9ucCwKICAgICAgICBjaGFyICpjb25zdCAqX19yZXN0cmljdCBf X3Rva2VucywKICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX3ZhbHVlcCkKICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMiwgMykpKSA7CgoKCgoKCgpleHRlcm4gaW50IHBvc2l4X29wZW5w dCAoaW50IF9fb2ZsYWcpIDsKCgoKCgoKCmV4dGVybiBpbnQgZ3JhbnRwdCAoaW50IF9fZmQp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBp bnQgdW5sb2NrcHQgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCBfX2ZkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCgoKZXh0ZXJuIGludCBw dHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgyKSkpIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dy aXRlX29ubHlfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IGdldHB0ICh2b2lkKTsKCgoKCgoK ZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2FkYXZnW10sIGludCBfX25lbGVt KQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDExNTUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L3N0ZGxpYi1mbG9hdC5oIiAxIDMgNAojIDI0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9i aXRzL3N0ZGxpYi1mbG9hdC5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18g KChfX2dudV9pbmxpbmVfXykpIGRvdWJsZQpfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIGF0b2YgKGNvbnN0IGNoYXIgKl9fbnB0cikKewogIHJldHVybiBzdHJ0 b2QgKF9fbnB0ciwgKGNoYXIgKiopICgodm9pZCAqKTApKTsKfQojIDExNTYgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAojIDExNjcgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKCiMgMTM1ICJzeXN0ZW0uaCIgMgoKCgoKCgoKI2Rl ZmluZSBTVUNDRVNTX0VYSVRfQ09ERSBFWElUX1NVQ0NFU1MKCgoKCgoKCiNkZWZpbmUgRkFU QUxfRVhJVF9DT0RFIEVYSVRfRkFJTFVSRQoKCgoKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAxIDMgNAojIDIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91 bmlzdGQuaCIgMyA0CiNkZWZpbmUgX1VOSVNURF9IIDEKCgoKCgoKCgoKCiNkZWZpbmUgX1BP U0lYX1ZFUlNJT04gMjAwODA5TAojIDUzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlz dGQuaCIgMyA0CiNkZWZpbmUgX19QT1NJWDJfVEhJU19WRVJTSU9OIDIwMDgwOUwKIyA2NyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNAojZGVmaW5lIF9QT1NJWDJf VkVSU0lPTiBfX1BPU0lYMl9USElTX1ZFUlNJT04KCgojZGVmaW5lIF9QT1NJWDJfQ19WRVJT SU9OIF9fUE9TSVgyX1RISVNfVkVSU0lPTgoKCgojZGVmaW5lIF9QT1NJWDJfQ19CSU5EIF9f UE9TSVgyX1RISVNfVkVSU0lPTgoKCgojZGVmaW5lIF9QT1NJWDJfQ19ERVYgX19QT1NJWDJf VEhJU19WRVJTSU9OCgoKCiNkZWZpbmUgX1BPU0lYMl9TV19ERVYgX19QT1NJWDJfVEhJU19W RVJTSU9OCgoKCiNkZWZpbmUgX1BPU0lYMl9MT0NBTEVERUYgX19QT1NJWDJfVEhJU19WRVJT SU9OCgoKCiNkZWZpbmUgX1hPUEVOX1ZFUlNJT04gNzAwCiMgMTAwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiNkZWZpbmUgX1hPUEVOX1hDVV9WRVJTSU9OIDQK CgojZGVmaW5lIF9YT1BFTl9YUEcyIDEKI2RlZmluZSBfWE9QRU5fWFBHMyAxCiNkZWZpbmUg X1hPUEVOX1hQRzQgMQoKCiNkZWZpbmUgX1hPUEVOX1VOSVggMQoKCgojZGVmaW5lIF9YT1BF Tl9FTkhfSTE4TiAxCgoKI2RlZmluZSBfWE9QRU5fTEVHQUNZIDEKIyAyMDIgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3Bvc2l4X29wdC5oIiAxIDMgNAojIDIwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3Bvc2l4X29wdC5oIiAzIDQKI2RlZmluZSBfQklUU19QT1NJWF9PUFRfSCAx CgoKI2RlZmluZSBfUE9TSVhfSk9CX0NPTlRST0wgMQoKCiNkZWZpbmUgX1BPU0lYX1NBVkVE X0lEUyAxCgoKCgoKI2RlZmluZSBfUE9TSVhfUFJJT1JJVFlfU0NIRURVTElORyAyMDA4MDlM CgoKI2RlZmluZSBfUE9TSVhfU1lOQ0hST05JWkVEX0lPIDIwMDgwOUwKCgojZGVmaW5lIF9Q T1NJWF9GU1lOQyAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfTUFQUEVEX0ZJTEVTIDIwMDgw OUwKCgojZGVmaW5lIF9QT1NJWF9NRU1MT0NLIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9N RU1MT0NLX1JBTkdFIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9NRU1PUllfUFJPVEVDVElP TiAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfQ0hPV05fUkVTVFJJQ1RFRCAwCgoKCiNkZWZp bmUgX1BPU0lYX1ZESVNBQkxFICdcMCcKCgojZGVmaW5lIF9QT1NJWF9OT19UUlVOQyAxCgoK I2RlZmluZSBfWE9QRU5fUkVBTFRJTUUgMQoKCiNkZWZpbmUgX1hPUEVOX1JFQUxUSU1FX1RI UkVBRFMgMQoKCiNkZWZpbmUgX1hPUEVOX1NITSAxCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFE UyAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfUkVFTlRSQU5UX0ZVTkNUSU9OUyAxCiNkZWZp bmUgX1BPU0lYX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUyAyMDA4MDlMCgoKI2RlZmluZSBfUE9T SVhfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lY X1RIUkVBRF9BVFRSX1NUQUNLU0laRSAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFE X0FUVFJfU1RBQ0tBRERSIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9USFJFQURfUFJJT19J TkhFUklUIDIwMDgwOUwKCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFEX1BSSU9fUFJPVEVDVCAy MDA4MDlMCgoKCiNkZWZpbmUgX1BPU0lYX1RIUkVBRF9ST0JVU1RfUFJJT19JTkhFUklUIDIw MDgwOUwKCgojZGVmaW5lIF9QT1NJWF9USFJFQURfUk9CVVNUX1BSSU9fUFJPVEVDVCAtMQoK CgojZGVmaW5lIF9QT1NJWF9TRU1BUEhPUkVTIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9S RUFMVElNRV9TSUdOQUxTIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9BU1lOQ0hST05PVVNf SU8gMjAwODA5TAojZGVmaW5lIF9QT1NJWF9BU1lOQ19JTyAxCgojZGVmaW5lIF9MRlNfQVNZ TkNIUk9OT1VTX0lPIDEKCiNkZWZpbmUgX1BPU0lYX1BSSU9SSVRJWkVEX0lPIDIwMDgwOUwK CgojZGVmaW5lIF9MRlM2NF9BU1lOQ0hST05PVVNfSU8gMQoKCiNkZWZpbmUgX0xGU19MQVJH RUZJTEUgMQojZGVmaW5lIF9MRlM2NF9MQVJHRUZJTEUgMQojZGVmaW5lIF9MRlM2NF9TVERJ TyAxCgoKI2RlZmluZSBfUE9TSVhfU0hBUkVEX01FTU9SWV9PQkpFQ1RTIDIwMDgwOUwKCgoj ZGVmaW5lIF9QT1NJWF9DUFVUSU1FIDAKCgojZGVmaW5lIF9QT1NJWF9USFJFQURfQ1BVVElN RSAwCgoKI2RlZmluZSBfUE9TSVhfUkVHRVhQIDEKCgojZGVmaW5lIF9QT1NJWF9SRUFERVJf V1JJVEVSX0xPQ0tTIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9TSEVMTCAxCgoKI2RlZmlu ZSBfUE9TSVhfVElNRU9VVFMgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX1NQSU5fTE9DS1Mg MjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX1NQQVdOIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJ WF9USU1FUlMgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX0JBUlJJRVJTIDIwMDgwOUwKCgoj ZGVmaW5lIF9QT1NJWF9NRVNTQUdFX1BBU1NJTkcgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lY X1RIUkVBRF9QUk9DRVNTX1NIQVJFRCAyMDA4MDlMCgoKI2RlZmluZSBfUE9TSVhfTU9OT1RP TklDX0NMT0NLIDAKCgojZGVmaW5lIF9QT1NJWF9DTE9DS19TRUxFQ1RJT04gMjAwODA5TAoK CiNkZWZpbmUgX1BPU0lYX0FEVklTT1JZX0lORk8gMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lY X0lQVjYgMjAwODA5TAoKCiNkZWZpbmUgX1BPU0lYX1JBV19TT0NLRVRTIDIwMDgwOUwKCgoj ZGVmaW5lIF9QT1NJWDJfQ0hBUl9URVJNIDIwMDgwOUwKCgojZGVmaW5lIF9QT1NJWF9TUE9S QURJQ19TRVJWRVIgLTEKI2RlZmluZSBfUE9TSVhfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiAt MQoKCiNkZWZpbmUgX1BPU0lYX1RSQUNFIC0xCiNkZWZpbmUgX1BPU0lYX1RSQUNFX0VWRU5U X0ZJTFRFUiAtMQojZGVmaW5lIF9QT1NJWF9UUkFDRV9JTkhFUklUIC0xCiNkZWZpbmUgX1BP U0lYX1RSQUNFX0xPRyAtMQoKCiNkZWZpbmUgX1BPU0lYX1RZUEVEX01FTU9SWV9PQkpFQ1RT IC0xCiMgMjAzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgoK IyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAxIDMg NAojIDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAz IDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0 CiMgMTggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMyA0CiNk ZWZpbmUgX19XT1JEU0laRSA2NAojZGVmaW5lIF9fV09SRFNJWkVfVElNRTY0X0NPTVBBVDMy IDAKIyAyMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNo NjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMuaCIg MiAzIDQKIyA0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9ubWVudHMu aCIgMyA0CiNkZWZpbmUgX1BPU0lYX1Y3X0lMUDMyX09GRjMyIC0xCiNkZWZpbmUgX1BPU0lY X1Y3X0lMUDMyX09GRkJJRyAtMQojZGVmaW5lIF9QT1NJWF9WNl9JTFAzMl9PRkYzMiAtMQoj ZGVmaW5lIF9QT1NJWF9WNl9JTFAzMl9PRkZCSUcgLTEKI2RlZmluZSBfWEJTNV9JTFAzMl9P RkYzMiAtMQojZGVmaW5lIF9YQlM1X0lMUDMyX09GRkJJRyAtMQoKCiNkZWZpbmUgX1BPU0lY X1Y3X0xQQklHX09GRkJJRyAtMQojZGVmaW5lIF9QT1NJWF9WNl9MUEJJR19PRkZCSUcgLTEK I2RlZmluZSBfWEJTNV9MUEJJR19PRkZCSUcgLTEKCgojZGVmaW5lIF9QT1NJWF9WN19MUDY0 X09GRjY0IDEKI2RlZmluZSBfUE9TSVhfVjZfTFA2NF9PRkY2NCAxCiNkZWZpbmUgX1hCUzVf TFA2NF9PRkY2NCAxCiMgMjA3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIg MiAzIDQKCgoKI2RlZmluZSBTVERJTl9GSUxFTk8gMAojZGVmaW5lIFNURE9VVF9GSUxFTk8g MQojZGVmaW5lIFNUREVSUl9GSUxFTk8gMgojIDIyNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMgNAojZGVmaW5lIF9fbmVlZF9zaXplX3QgCiNkZWZpbmUgX19uZWVk X05VTEwgCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2dj Yy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0 CiMgMTU4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xv b25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRl ZiBfX25lZWRfcHRyZGlmZl90CiMgMjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9z dGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfc2l6ZV90CiMgMzQ5ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8x NC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfd2NoYXJfdAojIDM5 OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hh aW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgTlVM TAoKCgoKI2RlZmluZSBOVUxMICgodm9pZCAqKTApCgoKCgoKI3VuZGVmIF9fbmVlZF9OVUxM CgoKCgojdW5kZWYgb2Zmc2V0b2YKI2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJFUikgX19i dWlsdGluX29mZnNldG9mIChUWVBFLCBNRU1CRVIpCiMgMjI3ICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKIyAyNjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAzIDQKdHlwZWRlZiBfX2ludHB0cl90IGludHB0cl90OwojZGVmaW5lIF9f aW50cHRyX3RfZGVmaW5lZCAKCgoKCgp0eXBlZGVmIF9fc29ja2xlbl90IHNvY2tsZW5fdDsK I2RlZmluZSBfX3NvY2tsZW5fdF9kZWZpbmVkIAoKCgoKCiNkZWZpbmUgUl9PSyA0CiNkZWZp bmUgV19PSyAyCiNkZWZpbmUgWF9PSyAxCiNkZWZpbmUgRl9PSyAwCgoKZXh0ZXJuIGludCBh Y2Nlc3MgKGNvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7CgoKCgpleHRlcm4gaW50IGV1aWRhY2Nlc3MgKGNvbnN0IGNoYXIgKl9fbmFtZSwg aW50IF9fdHlwZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IGVh Y2Nlc3MgKGNvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IGV4ZWN2ZWF0IChpbnQgX19mZCwgY29uc3QgY2hh ciAqX19wYXRoLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwKICAgICAgICAgICAgICAgICAgICAg Y2hhciAqY29uc3QgX19lbnZwW10sIGludCBfX2ZsYWdzKQogICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDIsIDMpKSk7CgoKCgoKCmV4dGVybiBpbnQgZmFjY2Vzc2F0IChpbnQgX19mZCwgY29uc3Qg Y2hhciAqX19maWxlLCBpbnQgX190eXBlLCBpbnQgX19mbGFnKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgyKSkpIDsKIyAzMjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAz IDQKI2RlZmluZSBMX1NFVCBTRUVLX1NFVAojZGVmaW5lIExfSU5DUiBTRUVLX0NVUgojZGVm aW5lIExfWFRORCBTRUVLX0VORAojIDMzOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5p c3RkLmgiIDMgNApleHRlcm4gX19vZmZfdCBsc2VlayAoaW50IF9fZmQsIF9fb2ZmX3QgX19v ZmZzZXQsIGludCBfX3doZW5jZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKIyAzNTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQK ZXh0ZXJuIF9fb2ZmNjRfdCBsc2VlazY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fb2Zmc2V0 LCBpbnQgX193aGVuY2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgoKCgoKZXh0ZXJuIGludCBjbG9zZSAoaW50IF9fZmQpOwoKCgoKZXh0ZXJu IHZvaWQgY2xvc2Vmcm9tIChpbnQgX19sb3dmZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKTsKCgoKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWQgKGludCBfX2Zk LCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKQogICAgX19hdHRyaWJ1dGVfXyAoKF9f YWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAyLCAzKSkpOwoKCgoKCmV4dGVybiBzc2l6ZV90 IHdyaXRlIChpbnQgX19mZCwgY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24pCiAgICBf X2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX19yZWFkX29ubHlfXywgMiwgMykpKTsKIyAz ODkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHNzaXpl X3QgcHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLAogICAg ICAgIF9fb2ZmX3QgX19vZmZzZXQpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAo X193cml0ZV9vbmx5X18sIDIsIDMpKSk7CgoKCgoKCmV4dGVybiBzc2l6ZV90IHB3cml0ZSAo aW50IF9fZmQsIGNvbnN0IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uLAogICAgICAgICBfX29m Zl90IF9fb2Zmc2V0KQogICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fcmVhZF9v bmx5X18sIDIsIDMpKSk7CiMgNDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQu aCIgMyA0CmV4dGVybiBzc2l6ZV90IHByZWFkNjQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwg c2l6ZV90IF9fbmJ5dGVzLAogICBfX29mZjY0X3QgX19vZmZzZXQpCiAgICBfX2F0dHJpYnV0 ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDIsIDMpKSk7CgoKZXh0ZXJuIHNz aXplX3QgcHdyaXRlNjQgKGludCBfX2ZkLCBjb25zdCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9f biwKICAgIF9fb2ZmNjRfdCBfX29mZnNldCkKICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vz c19fIChfX3JlYWRfb25seV9fLCAyLCAzKSkpOwoKCgoKCgoKZXh0ZXJuIGludCBwaXBlIChp bnQgX19waXBlZGVzWzJdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIDsKCgoKCmV4dGVybiBpbnQgcGlwZTIgKGludCBfX3BpcGVkZXNbMl0sIGludCBfX2Zs YWdzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKIyA0NTIg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHVuc2lnbmVk IGludCBhbGFybSAodW5zaWduZWQgaW50IF9fc2Vjb25kcykgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKIyA0NjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAodW5zaWduZWQgaW50 IF9fc2Vjb25kcyk7CgoKCgoKCgpleHRlcm4gX191c2Vjb25kc190IHVhbGFybSAoX191c2Vj b25kc190IF9fdmFsdWUsIF9fdXNlY29uZHNfdCBfX2ludGVydmFsKQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgdXNs ZWVwIChfX3VzZWNvbmRzX3QgX191c2Vjb25kcyk7CiMgNDg5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgcGF1c2UgKHZvaWQpOwoKCgpleHRl cm4gaW50IGNob3duIChjb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwgX19n aWRfdCBfX2dyb3VwKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKCgoKZXh0ZXJuIGlu dCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91cCkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgpleHRlcm4g aW50IGxjaG93biAoY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lk X3QgX19ncm91cCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCgoKCmV4dGVybiBp bnQgZmNob3duYXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19v d25lciwKICAgICAgIF9fZ2lkX3QgX19ncm91cCwgaW50IF9fZmxhZykKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMikpKSA7CgoKCmV4dGVybiBpbnQgY2hkaXIgKGNvbnN0IGNoYXIgKl9fcGF0 aCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgpleHRlcm4gaW50IGZjaGRpciAoaW50IF9f ZmQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwojIDUzMSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gY2hhciAqZ2V0 Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgoKZXh0ZXJuIGNoYXIgKmdldF9jdXJyZW50X2Rp cl9uYW1lICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp OwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmdldHdkIChjaGFyICpfX2J1ZikKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKQogICAgX19h dHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAxKSkpOwoKCgoKZXh0 ZXJuIGludCBkdXAgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIDsKCgpleHRlcm4gaW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gaW50 IGR1cDMgKGludCBfX2ZkLCBpbnQgX19mZDIsIGludCBfX2ZsYWdzKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gY2hhciAqKl9fZW52aXJv bjsKCmV4dGVybiBjaGFyICoqZW52aXJvbjsKCgoKCgpleHRlcm4gaW50IGV4ZWN2ZSAoY29u c3QgY2hhciAqX19wYXRoLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwKICAgICBjaGFyICpjb25z dCBfX2VudnBbXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgpleHRlcm4gaW50IGZl eGVjdmUgKGludCBfX2ZkLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwgY2hhciAqY29uc3QgX19l bnZwW10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCgpleHRlcm4gaW50IGV4ZWN2 IChjb25zdCBjaGFyICpfX3BhdGgsIGNoYXIgKmNvbnN0IF9fYXJndltdKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxLCAyKSkpOwoKCgpleHRlcm4gaW50IGV4ZWNsZSAoY29uc3QgY2hhciAq X19wYXRoLCBjb25zdCBjaGFyICpfX2FyZywgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx LCAyKSkpOwoKCgpleHRlcm4gaW50IGV4ZWNsIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0 IGNoYXIgKl9fYXJnLCAuLi4pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCmV4 dGVybiBpbnQgZXhlY3ZwIChjb25zdCBjaGFyICpfX2ZpbGUsIGNoYXIgKmNvbnN0IF9fYXJn dltdKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGludCBleGVj bHAgKGNvbnN0IGNoYXIgKl9fZmlsZSwgY29uc3QgY2hhciAqX19hcmcsIC4uLikKICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVybiBpbnQgZXhlY3ZwZSAoY29uc3Qg Y2hhciAqX19maWxlLCBjaGFyICpjb25zdCBfX2FyZ3ZbXSwKICAgICAgY2hhciAqY29uc3Qg X19lbnZwW10pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgoKZXh0ZXJuIGlu dCBuaWNlIChpbnQgX19pbmMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgOwoKCgoKZXh0ZXJuIHZvaWQgX2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRyaWJ1 dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvYml0cy9jb25mbmFtZS5oIiAxIDMgNAojIDI0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL2NvbmZuYW1lLmgiIDMgNAplbnVtCiAgewogICAgX1BDX0xJTktfTUFYLAojZGVm aW5lIF9QQ19MSU5LX01BWCBfUENfTElOS19NQVgKICAgIF9QQ19NQVhfQ0FOT04sCiNkZWZp bmUgX1BDX01BWF9DQU5PTiBfUENfTUFYX0NBTk9OCiAgICBfUENfTUFYX0lOUFVULAojZGVm aW5lIF9QQ19NQVhfSU5QVVQgX1BDX01BWF9JTlBVVAogICAgX1BDX05BTUVfTUFYLAojZGVm aW5lIF9QQ19OQU1FX01BWCBfUENfTkFNRV9NQVgKICAgIF9QQ19QQVRIX01BWCwKI2RlZmlu ZSBfUENfUEFUSF9NQVggX1BDX1BBVEhfTUFYCiAgICBfUENfUElQRV9CVUYsCiNkZWZpbmUg X1BDX1BJUEVfQlVGIF9QQ19QSVBFX0JVRgogICAgX1BDX0NIT1dOX1JFU1RSSUNURUQsCiNk ZWZpbmUgX1BDX0NIT1dOX1JFU1RSSUNURUQgX1BDX0NIT1dOX1JFU1RSSUNURUQKICAgIF9Q Q19OT19UUlVOQywKI2RlZmluZSBfUENfTk9fVFJVTkMgX1BDX05PX1RSVU5DCiAgICBfUENf VkRJU0FCTEUsCiNkZWZpbmUgX1BDX1ZESVNBQkxFIF9QQ19WRElTQUJMRQogICAgX1BDX1NZ TkNfSU8sCiNkZWZpbmUgX1BDX1NZTkNfSU8gX1BDX1NZTkNfSU8KICAgIF9QQ19BU1lOQ19J TywKI2RlZmluZSBfUENfQVNZTkNfSU8gX1BDX0FTWU5DX0lPCiAgICBfUENfUFJJT19JTywK I2RlZmluZSBfUENfUFJJT19JTyBfUENfUFJJT19JTwogICAgX1BDX1NPQ0tfTUFYQlVGLAoj ZGVmaW5lIF9QQ19TT0NLX01BWEJVRiBfUENfU09DS19NQVhCVUYKICAgIF9QQ19GSUxFU0la RUJJVFMsCiNkZWZpbmUgX1BDX0ZJTEVTSVpFQklUUyBfUENfRklMRVNJWkVCSVRTCiAgICBf UENfUkVDX0lOQ1JfWEZFUl9TSVpFLAojZGVmaW5lIF9QQ19SRUNfSU5DUl9YRkVSX1NJWkUg X1BDX1JFQ19JTkNSX1hGRVJfU0laRQogICAgX1BDX1JFQ19NQVhfWEZFUl9TSVpFLAojZGVm aW5lIF9QQ19SRUNfTUFYX1hGRVJfU0laRSBfUENfUkVDX01BWF9YRkVSX1NJWkUKICAgIF9Q Q19SRUNfTUlOX1hGRVJfU0laRSwKI2RlZmluZSBfUENfUkVDX01JTl9YRkVSX1NJWkUgX1BD X1JFQ19NSU5fWEZFUl9TSVpFCiAgICBfUENfUkVDX1hGRVJfQUxJR04sCiNkZWZpbmUgX1BD X1JFQ19YRkVSX0FMSUdOIF9QQ19SRUNfWEZFUl9BTElHTgogICAgX1BDX0FMTE9DX1NJWkVf TUlOLAojZGVmaW5lIF9QQ19BTExPQ19TSVpFX01JTiBfUENfQUxMT0NfU0laRV9NSU4KICAg IF9QQ19TWU1MSU5LX01BWCwKI2RlZmluZSBfUENfU1lNTElOS19NQVggX1BDX1NZTUxJTktf TUFYCiAgICBfUENfMl9TWU1MSU5LUwojZGVmaW5lIF9QQ18yX1NZTUxJTktTIF9QQ18yX1NZ TUxJTktTCiAgfTsKCgplbnVtCiAgewogICAgX1NDX0FSR19NQVgsCiNkZWZpbmUgX1NDX0FS R19NQVggX1NDX0FSR19NQVgKICAgIF9TQ19DSElMRF9NQVgsCiNkZWZpbmUgX1NDX0NISUxE X01BWCBfU0NfQ0hJTERfTUFYCiAgICBfU0NfQ0xLX1RDSywKI2RlZmluZSBfU0NfQ0xLX1RD SyBfU0NfQ0xLX1RDSwogICAgX1NDX05HUk9VUFNfTUFYLAojZGVmaW5lIF9TQ19OR1JPVVBT X01BWCBfU0NfTkdST1VQU19NQVgKICAgIF9TQ19PUEVOX01BWCwKI2RlZmluZSBfU0NfT1BF Tl9NQVggX1NDX09QRU5fTUFYCiAgICBfU0NfU1RSRUFNX01BWCwKI2RlZmluZSBfU0NfU1RS RUFNX01BWCBfU0NfU1RSRUFNX01BWAogICAgX1NDX1RaTkFNRV9NQVgsCiNkZWZpbmUgX1ND X1RaTkFNRV9NQVggX1NDX1RaTkFNRV9NQVgKICAgIF9TQ19KT0JfQ09OVFJPTCwKI2RlZmlu ZSBfU0NfSk9CX0NPTlRST0wgX1NDX0pPQl9DT05UUk9MCiAgICBfU0NfU0FWRURfSURTLAoj ZGVmaW5lIF9TQ19TQVZFRF9JRFMgX1NDX1NBVkVEX0lEUwogICAgX1NDX1JFQUxUSU1FX1NJ R05BTFMsCiNkZWZpbmUgX1NDX1JFQUxUSU1FX1NJR05BTFMgX1NDX1JFQUxUSU1FX1NJR05B TFMKICAgIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAojZGVmaW5lIF9TQ19QUklPUklUWV9T Q0hFRFVMSU5HIF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HCiAgICBfU0NfVElNRVJTLAojZGVm aW5lIF9TQ19USU1FUlMgX1NDX1RJTUVSUwogICAgX1NDX0FTWU5DSFJPTk9VU19JTywKI2Rl ZmluZSBfU0NfQVNZTkNIUk9OT1VTX0lPIF9TQ19BU1lOQ0hST05PVVNfSU8KICAgIF9TQ19Q UklPUklUSVpFRF9JTywKI2RlZmluZSBfU0NfUFJJT1JJVElaRURfSU8gX1NDX1BSSU9SSVRJ WkVEX0lPCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLAojZGVmaW5lIF9TQ19TWU5DSFJPTkla RURfSU8gX1NDX1NZTkNIUk9OSVpFRF9JTwogICAgX1NDX0ZTWU5DLAojZGVmaW5lIF9TQ19G U1lOQyBfU0NfRlNZTkMKICAgIF9TQ19NQVBQRURfRklMRVMsCiNkZWZpbmUgX1NDX01BUFBF RF9GSUxFUyBfU0NfTUFQUEVEX0ZJTEVTCiAgICBfU0NfTUVNTE9DSywKI2RlZmluZSBfU0Nf TUVNTE9DSyBfU0NfTUVNTE9DSwogICAgX1NDX01FTUxPQ0tfUkFOR0UsCiNkZWZpbmUgX1ND X01FTUxPQ0tfUkFOR0UgX1NDX01FTUxPQ0tfUkFOR0UKICAgIF9TQ19NRU1PUllfUFJPVEVD VElPTiwKI2RlZmluZSBfU0NfTUVNT1JZX1BST1RFQ1RJT04gX1NDX01FTU9SWV9QUk9URUNU SU9OCiAgICBfU0NfTUVTU0FHRV9QQVNTSU5HLAojZGVmaW5lIF9TQ19NRVNTQUdFX1BBU1NJ TkcgX1NDX01FU1NBR0VfUEFTU0lORwogICAgX1NDX1NFTUFQSE9SRVMsCiNkZWZpbmUgX1ND X1NFTUFQSE9SRVMgX1NDX1NFTUFQSE9SRVMKICAgIF9TQ19TSEFSRURfTUVNT1JZX09CSkVD VFMsCiNkZWZpbmUgX1NDX1NIQVJFRF9NRU1PUllfT0JKRUNUUyBfU0NfU0hBUkVEX01FTU9S WV9PQkpFQ1RTCiAgICBfU0NfQUlPX0xJU1RJT19NQVgsCiNkZWZpbmUgX1NDX0FJT19MSVNU SU9fTUFYIF9TQ19BSU9fTElTVElPX01BWAogICAgX1NDX0FJT19NQVgsCiNkZWZpbmUgX1ND X0FJT19NQVggX1NDX0FJT19NQVgKICAgIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgsCiNkZWZp bmUgX1NDX0FJT19QUklPX0RFTFRBX01BWCBfU0NfQUlPX1BSSU9fREVMVEFfTUFYCiAgICBf U0NfREVMQVlUSU1FUl9NQVgsCiNkZWZpbmUgX1NDX0RFTEFZVElNRVJfTUFYIF9TQ19ERUxB WVRJTUVSX01BWAogICAgX1NDX01RX09QRU5fTUFYLAojZGVmaW5lIF9TQ19NUV9PUEVOX01B WCBfU0NfTVFfT1BFTl9NQVgKICAgIF9TQ19NUV9QUklPX01BWCwKI2RlZmluZSBfU0NfTVFf UFJJT19NQVggX1NDX01RX1BSSU9fTUFYCiAgICBfU0NfVkVSU0lPTiwKI2RlZmluZSBfU0Nf VkVSU0lPTiBfU0NfVkVSU0lPTgogICAgX1NDX1BBR0VTSVpFLAojZGVmaW5lIF9TQ19QQUdF U0laRSBfU0NfUEFHRVNJWkUKI2RlZmluZSBfU0NfUEFHRV9TSVpFIF9TQ19QQUdFU0laRQog ICAgX1NDX1JUU0lHX01BWCwKI2RlZmluZSBfU0NfUlRTSUdfTUFYIF9TQ19SVFNJR19NQVgK ICAgIF9TQ19TRU1fTlNFTVNfTUFYLAojZGVmaW5lIF9TQ19TRU1fTlNFTVNfTUFYIF9TQ19T RU1fTlNFTVNfTUFYCiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKI2RlZmluZSBfU0NfU0VNX1ZB TFVFX01BWCBfU0NfU0VNX1ZBTFVFX01BWAogICAgX1NDX1NJR1FVRVVFX01BWCwKI2RlZmlu ZSBfU0NfU0lHUVVFVUVfTUFYIF9TQ19TSUdRVUVVRV9NQVgKICAgIF9TQ19USU1FUl9NQVgs CiNkZWZpbmUgX1NDX1RJTUVSX01BWCBfU0NfVElNRVJfTUFYCgoKCiAgICBfU0NfQkNfQkFT RV9NQVgsCiNkZWZpbmUgX1NDX0JDX0JBU0VfTUFYIF9TQ19CQ19CQVNFX01BWAogICAgX1ND X0JDX0RJTV9NQVgsCiNkZWZpbmUgX1NDX0JDX0RJTV9NQVggX1NDX0JDX0RJTV9NQVgKICAg IF9TQ19CQ19TQ0FMRV9NQVgsCiNkZWZpbmUgX1NDX0JDX1NDQUxFX01BWCBfU0NfQkNfU0NB TEVfTUFYCiAgICBfU0NfQkNfU1RSSU5HX01BWCwKI2RlZmluZSBfU0NfQkNfU1RSSU5HX01B WCBfU0NfQkNfU1RSSU5HX01BWAogICAgX1NDX0NPTExfV0VJR0hUU19NQVgsCiNkZWZpbmUg X1NDX0NPTExfV0VJR0hUU19NQVggX1NDX0NPTExfV0VJR0hUU19NQVgKICAgIF9TQ19FUVVJ Vl9DTEFTU19NQVgsCiNkZWZpbmUgX1NDX0VRVUlWX0NMQVNTX01BWCBfU0NfRVFVSVZfQ0xB U1NfTUFYCiAgICBfU0NfRVhQUl9ORVNUX01BWCwKI2RlZmluZSBfU0NfRVhQUl9ORVNUX01B WCBfU0NfRVhQUl9ORVNUX01BWAogICAgX1NDX0xJTkVfTUFYLAojZGVmaW5lIF9TQ19MSU5F X01BWCBfU0NfTElORV9NQVgKICAgIF9TQ19SRV9EVVBfTUFYLAojZGVmaW5lIF9TQ19SRV9E VVBfTUFYIF9TQ19SRV9EVVBfTUFYCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYLAojZGVm aW5lIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVggX1NDX0NIQVJDTEFTU19OQU1FX01BWAoKICAg IF9TQ18yX1ZFUlNJT04sCiNkZWZpbmUgX1NDXzJfVkVSU0lPTiBfU0NfMl9WRVJTSU9OCiAg ICBfU0NfMl9DX0JJTkQsCiNkZWZpbmUgX1NDXzJfQ19CSU5EIF9TQ18yX0NfQklORAogICAg X1NDXzJfQ19ERVYsCiNkZWZpbmUgX1NDXzJfQ19ERVYgX1NDXzJfQ19ERVYKICAgIF9TQ18y X0ZPUlRfREVWLAojZGVmaW5lIF9TQ18yX0ZPUlRfREVWIF9TQ18yX0ZPUlRfREVWCiAgICBf U0NfMl9GT1JUX1JVTiwKI2RlZmluZSBfU0NfMl9GT1JUX1JVTiBfU0NfMl9GT1JUX1JVTgog ICAgX1NDXzJfU1dfREVWLAojZGVmaW5lIF9TQ18yX1NXX0RFViBfU0NfMl9TV19ERVYKICAg IF9TQ18yX0xPQ0FMRURFRiwKI2RlZmluZSBfU0NfMl9MT0NBTEVERUYgX1NDXzJfTE9DQUxF REVGCgogICAgX1NDX1BJSSwKI2RlZmluZSBfU0NfUElJIF9TQ19QSUkKICAgIF9TQ19QSUlf WFRJLAojZGVmaW5lIF9TQ19QSUlfWFRJIF9TQ19QSUlfWFRJCiAgICBfU0NfUElJX1NPQ0tF VCwKI2RlZmluZSBfU0NfUElJX1NPQ0tFVCBfU0NfUElJX1NPQ0tFVAogICAgX1NDX1BJSV9J TlRFUk5FVCwKI2RlZmluZSBfU0NfUElJX0lOVEVSTkVUIF9TQ19QSUlfSU5URVJORVQKICAg IF9TQ19QSUlfT1NJLAojZGVmaW5lIF9TQ19QSUlfT1NJIF9TQ19QSUlfT1NJCiAgICBfU0Nf UE9MTCwKI2RlZmluZSBfU0NfUE9MTCBfU0NfUE9MTAogICAgX1NDX1NFTEVDVCwKI2RlZmlu ZSBfU0NfU0VMRUNUIF9TQ19TRUxFQ1QKICAgIF9TQ19VSU9fTUFYSU9WLAojZGVmaW5lIF9T Q19VSU9fTUFYSU9WIF9TQ19VSU9fTUFYSU9WCiAgICBfU0NfSU9WX01BWCA9IF9TQ19VSU9f TUFYSU9WLAojZGVmaW5lIF9TQ19JT1ZfTUFYIF9TQ19JT1ZfTUFYCiAgICBfU0NfUElJX0lO VEVSTkVUX1NUUkVBTSwKI2RlZmluZSBfU0NfUElJX0lOVEVSTkVUX1NUUkVBTSBfU0NfUElJ X0lOVEVSTkVUX1NUUkVBTQogICAgX1NDX1BJSV9JTlRFUk5FVF9ER1JBTSwKI2RlZmluZSBf U0NfUElJX0lOVEVSTkVUX0RHUkFNIF9TQ19QSUlfSU5URVJORVRfREdSQU0KICAgIF9TQ19Q SUlfT1NJX0NPVFMsCiNkZWZpbmUgX1NDX1BJSV9PU0lfQ09UUyBfU0NfUElJX09TSV9DT1RT CiAgICBfU0NfUElJX09TSV9DTFRTLAojZGVmaW5lIF9TQ19QSUlfT1NJX0NMVFMgX1NDX1BJ SV9PU0lfQ0xUUwogICAgX1NDX1BJSV9PU0lfTSwKI2RlZmluZSBfU0NfUElJX09TSV9NIF9T Q19QSUlfT1NJX00KICAgIF9TQ19UX0lPVl9NQVgsCiNkZWZpbmUgX1NDX1RfSU9WX01BWCBf U0NfVF9JT1ZfTUFYCgoKICAgIF9TQ19USFJFQURTLAojZGVmaW5lIF9TQ19USFJFQURTIF9T Q19USFJFQURTCiAgICBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TLAojZGVmaW5lIF9TQ19U SFJFQURfU0FGRV9GVU5DVElPTlMgX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUwogICAgX1ND X0dFVEdSX1JfU0laRV9NQVgsCiNkZWZpbmUgX1NDX0dFVEdSX1JfU0laRV9NQVggX1NDX0dF VEdSX1JfU0laRV9NQVgKICAgIF9TQ19HRVRQV19SX1NJWkVfTUFYLAojZGVmaW5lIF9TQ19H RVRQV19SX1NJWkVfTUFYIF9TQ19HRVRQV19SX1NJWkVfTUFYCiAgICBfU0NfTE9HSU5fTkFN RV9NQVgsCiNkZWZpbmUgX1NDX0xPR0lOX05BTUVfTUFYIF9TQ19MT0dJTl9OQU1FX01BWAog ICAgX1NDX1RUWV9OQU1FX01BWCwKI2RlZmluZSBfU0NfVFRZX05BTUVfTUFYIF9TQ19UVFlf TkFNRV9NQVgKICAgIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TLAojZGVmaW5l IF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TIF9TQ19USFJFQURfREVTVFJVQ1RP Ul9JVEVSQVRJT05TCiAgICBfU0NfVEhSRUFEX0tFWVNfTUFYLAojZGVmaW5lIF9TQ19USFJF QURfS0VZU19NQVggX1NDX1RIUkVBRF9LRVlTX01BWAogICAgX1NDX1RIUkVBRF9TVEFDS19N SU4sCiNkZWZpbmUgX1NDX1RIUkVBRF9TVEFDS19NSU4gX1NDX1RIUkVBRF9TVEFDS19NSU4K ICAgIF9TQ19USFJFQURfVEhSRUFEU19NQVgsCiNkZWZpbmUgX1NDX1RIUkVBRF9USFJFQURT X01BWCBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYCiAgICBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tB RERSLAojZGVmaW5lIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIgX1NDX1RIUkVBRF9BVFRS X1NUQUNLQUREUgogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKI2RlZmluZSBfU0Nf VEhSRUFEX0FUVFJfU1RBQ0tTSVpFIF9TQ19USFJFQURfQVRUUl9TVEFDS1NJWkUKICAgIF9T Q19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORywKI2RlZmluZSBfU0NfVEhSRUFEX1BSSU9S SVRZX1NDSEVEVUxJTkcgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HCiAgICBfU0Nf VEhSRUFEX1BSSU9fSU5IRVJJVCwKI2RlZmluZSBfU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCBf U0NfVEhSRUFEX1BSSU9fSU5IRVJJVAogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QsCiNk ZWZpbmUgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QK ICAgIF9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQsCiNkZWZpbmUgX1NDX1RIUkVBRF9QUk9D RVNTX1NIQVJFRCBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVECgogICAgX1NDX05QUk9DRVNT T1JTX0NPTkYsCiNkZWZpbmUgX1NDX05QUk9DRVNTT1JTX0NPTkYgX1NDX05QUk9DRVNTT1JT X0NPTkYKICAgIF9TQ19OUFJPQ0VTU09SU19PTkxOLAojZGVmaW5lIF9TQ19OUFJPQ0VTU09S U19PTkxOIF9TQ19OUFJPQ0VTU09SU19PTkxOCiAgICBfU0NfUEhZU19QQUdFUywKI2RlZmlu ZSBfU0NfUEhZU19QQUdFUyBfU0NfUEhZU19QQUdFUwogICAgX1NDX0FWUEhZU19QQUdFUywK I2RlZmluZSBfU0NfQVZQSFlTX1BBR0VTIF9TQ19BVlBIWVNfUEFHRVMKICAgIF9TQ19BVEVY SVRfTUFYLAojZGVmaW5lIF9TQ19BVEVYSVRfTUFYIF9TQ19BVEVYSVRfTUFYCiAgICBfU0Nf UEFTU19NQVgsCiNkZWZpbmUgX1NDX1BBU1NfTUFYIF9TQ19QQVNTX01BWAoKICAgIF9TQ19Y T1BFTl9WRVJTSU9OLAojZGVmaW5lIF9TQ19YT1BFTl9WRVJTSU9OIF9TQ19YT1BFTl9WRVJT SU9OCiAgICBfU0NfWE9QRU5fWENVX1ZFUlNJT04sCiNkZWZpbmUgX1NDX1hPUEVOX1hDVV9W RVJTSU9OIF9TQ19YT1BFTl9YQ1VfVkVSU0lPTgogICAgX1NDX1hPUEVOX1VOSVgsCiNkZWZp bmUgX1NDX1hPUEVOX1VOSVggX1NDX1hPUEVOX1VOSVgKICAgIF9TQ19YT1BFTl9DUllQVCwK I2RlZmluZSBfU0NfWE9QRU5fQ1JZUFQgX1NDX1hPUEVOX0NSWVBUCiAgICBfU0NfWE9QRU5f RU5IX0kxOE4sCiNkZWZpbmUgX1NDX1hPUEVOX0VOSF9JMThOIF9TQ19YT1BFTl9FTkhfSTE4 TgogICAgX1NDX1hPUEVOX1NITSwKI2RlZmluZSBfU0NfWE9QRU5fU0hNIF9TQ19YT1BFTl9T SE0KCiAgICBfU0NfMl9DSEFSX1RFUk0sCiNkZWZpbmUgX1NDXzJfQ0hBUl9URVJNIF9TQ18y X0NIQVJfVEVSTQogICAgX1NDXzJfQ19WRVJTSU9OLAojZGVmaW5lIF9TQ18yX0NfVkVSU0lP TiBfU0NfMl9DX1ZFUlNJT04KICAgIF9TQ18yX1VQRSwKI2RlZmluZSBfU0NfMl9VUEUgX1ND XzJfVVBFCgogICAgX1NDX1hPUEVOX1hQRzIsCiNkZWZpbmUgX1NDX1hPUEVOX1hQRzIgX1ND X1hPUEVOX1hQRzIKICAgIF9TQ19YT1BFTl9YUEczLAojZGVmaW5lIF9TQ19YT1BFTl9YUEcz IF9TQ19YT1BFTl9YUEczCiAgICBfU0NfWE9QRU5fWFBHNCwKI2RlZmluZSBfU0NfWE9QRU5f WFBHNCBfU0NfWE9QRU5fWFBHNAoKICAgIF9TQ19DSEFSX0JJVCwKI2RlZmluZSBfU0NfQ0hB Ul9CSVQgX1NDX0NIQVJfQklUCiAgICBfU0NfQ0hBUl9NQVgsCiNkZWZpbmUgX1NDX0NIQVJf TUFYIF9TQ19DSEFSX01BWAogICAgX1NDX0NIQVJfTUlOLAojZGVmaW5lIF9TQ19DSEFSX01J TiBfU0NfQ0hBUl9NSU4KICAgIF9TQ19JTlRfTUFYLAojZGVmaW5lIF9TQ19JTlRfTUFYIF9T Q19JTlRfTUFYCiAgICBfU0NfSU5UX01JTiwKI2RlZmluZSBfU0NfSU5UX01JTiBfU0NfSU5U X01JTgogICAgX1NDX0xPTkdfQklULAojZGVmaW5lIF9TQ19MT05HX0JJVCBfU0NfTE9OR19C SVQKICAgIF9TQ19XT1JEX0JJVCwKI2RlZmluZSBfU0NfV09SRF9CSVQgX1NDX1dPUkRfQklU CiAgICBfU0NfTUJfTEVOX01BWCwKI2RlZmluZSBfU0NfTUJfTEVOX01BWCBfU0NfTUJfTEVO X01BWAogICAgX1NDX05aRVJPLAojZGVmaW5lIF9TQ19OWkVSTyBfU0NfTlpFUk8KICAgIF9T Q19TU0laRV9NQVgsCiNkZWZpbmUgX1NDX1NTSVpFX01BWCBfU0NfU1NJWkVfTUFYCiAgICBf U0NfU0NIQVJfTUFYLAojZGVmaW5lIF9TQ19TQ0hBUl9NQVggX1NDX1NDSEFSX01BWAogICAg X1NDX1NDSEFSX01JTiwKI2RlZmluZSBfU0NfU0NIQVJfTUlOIF9TQ19TQ0hBUl9NSU4KICAg IF9TQ19TSFJUX01BWCwKI2RlZmluZSBfU0NfU0hSVF9NQVggX1NDX1NIUlRfTUFYCiAgICBf U0NfU0hSVF9NSU4sCiNkZWZpbmUgX1NDX1NIUlRfTUlOIF9TQ19TSFJUX01JTgogICAgX1ND X1VDSEFSX01BWCwKI2RlZmluZSBfU0NfVUNIQVJfTUFYIF9TQ19VQ0hBUl9NQVgKICAgIF9T Q19VSU5UX01BWCwKI2RlZmluZSBfU0NfVUlOVF9NQVggX1NDX1VJTlRfTUFYCiAgICBfU0Nf VUxPTkdfTUFYLAojZGVmaW5lIF9TQ19VTE9OR19NQVggX1NDX1VMT05HX01BWAogICAgX1ND X1VTSFJUX01BWCwKI2RlZmluZSBfU0NfVVNIUlRfTUFYIF9TQ19VU0hSVF9NQVgKCiAgICBf U0NfTkxfQVJHTUFYLAojZGVmaW5lIF9TQ19OTF9BUkdNQVggX1NDX05MX0FSR01BWAogICAg X1NDX05MX0xBTkdNQVgsCiNkZWZpbmUgX1NDX05MX0xBTkdNQVggX1NDX05MX0xBTkdNQVgK ICAgIF9TQ19OTF9NU0dNQVgsCiNkZWZpbmUgX1NDX05MX01TR01BWCBfU0NfTkxfTVNHTUFY CiAgICBfU0NfTkxfTk1BWCwKI2RlZmluZSBfU0NfTkxfTk1BWCBfU0NfTkxfTk1BWAogICAg X1NDX05MX1NFVE1BWCwKI2RlZmluZSBfU0NfTkxfU0VUTUFYIF9TQ19OTF9TRVRNQVgKICAg IF9TQ19OTF9URVhUTUFYLAojZGVmaW5lIF9TQ19OTF9URVhUTUFYIF9TQ19OTF9URVhUTUFY CgogICAgX1NDX1hCUzVfSUxQMzJfT0ZGMzIsCiNkZWZpbmUgX1NDX1hCUzVfSUxQMzJfT0ZG MzIgX1NDX1hCUzVfSUxQMzJfT0ZGMzIKICAgIF9TQ19YQlM1X0lMUDMyX09GRkJJRywKI2Rl ZmluZSBfU0NfWEJTNV9JTFAzMl9PRkZCSUcgX1NDX1hCUzVfSUxQMzJfT0ZGQklHCiAgICBf U0NfWEJTNV9MUDY0X09GRjY0LAojZGVmaW5lIF9TQ19YQlM1X0xQNjRfT0ZGNjQgX1NDX1hC UzVfTFA2NF9PRkY2NAogICAgX1NDX1hCUzVfTFBCSUdfT0ZGQklHLAojZGVmaW5lIF9TQ19Y QlM1X0xQQklHX09GRkJJRyBfU0NfWEJTNV9MUEJJR19PRkZCSUcKCiAgICBfU0NfWE9QRU5f TEVHQUNZLAojZGVmaW5lIF9TQ19YT1BFTl9MRUdBQ1kgX1NDX1hPUEVOX0xFR0FDWQogICAg X1NDX1hPUEVOX1JFQUxUSU1FLAojZGVmaW5lIF9TQ19YT1BFTl9SRUFMVElNRSBfU0NfWE9Q RU5fUkVBTFRJTUUKICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTLAojZGVmaW5lIF9T Q19YT1BFTl9SRUFMVElNRV9USFJFQURTIF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTCgog ICAgX1NDX0FEVklTT1JZX0lORk8sCiNkZWZpbmUgX1NDX0FEVklTT1JZX0lORk8gX1NDX0FE VklTT1JZX0lORk8KICAgIF9TQ19CQVJSSUVSUywKI2RlZmluZSBfU0NfQkFSUklFUlMgX1ND X0JBUlJJRVJTCiAgICBfU0NfQkFTRSwKI2RlZmluZSBfU0NfQkFTRSBfU0NfQkFTRQogICAg X1NDX0NfTEFOR19TVVBQT1JULAojZGVmaW5lIF9TQ19DX0xBTkdfU1VQUE9SVCBfU0NfQ19M QU5HX1NVUFBPUlQKICAgIF9TQ19DX0xBTkdfU1VQUE9SVF9SLAojZGVmaW5lIF9TQ19DX0xB TkdfU1VQUE9SVF9SIF9TQ19DX0xBTkdfU1VQUE9SVF9SCiAgICBfU0NfQ0xPQ0tfU0VMRUNU SU9OLAojZGVmaW5lIF9TQ19DTE9DS19TRUxFQ1RJT04gX1NDX0NMT0NLX1NFTEVDVElPTgog ICAgX1NDX0NQVVRJTUUsCiNkZWZpbmUgX1NDX0NQVVRJTUUgX1NDX0NQVVRJTUUKICAgIF9T Q19USFJFQURfQ1BVVElNRSwKI2RlZmluZSBfU0NfVEhSRUFEX0NQVVRJTUUgX1NDX1RIUkVB RF9DUFVUSU1FCiAgICBfU0NfREVWSUNFX0lPLAojZGVmaW5lIF9TQ19ERVZJQ0VfSU8gX1ND X0RFVklDRV9JTwogICAgX1NDX0RFVklDRV9TUEVDSUZJQywKI2RlZmluZSBfU0NfREVWSUNF X1NQRUNJRklDIF9TQ19ERVZJQ0VfU1BFQ0lGSUMKICAgIF9TQ19ERVZJQ0VfU1BFQ0lGSUNf UiwKI2RlZmluZSBfU0NfREVWSUNFX1NQRUNJRklDX1IgX1NDX0RFVklDRV9TUEVDSUZJQ19S CiAgICBfU0NfRkRfTUdNVCwKI2RlZmluZSBfU0NfRkRfTUdNVCBfU0NfRkRfTUdNVAogICAg X1NDX0ZJRk8sCiNkZWZpbmUgX1NDX0ZJRk8gX1NDX0ZJRk8KICAgIF9TQ19QSVBFLAojZGVm aW5lIF9TQ19QSVBFIF9TQ19QSVBFCiAgICBfU0NfRklMRV9BVFRSSUJVVEVTLAojZGVmaW5l IF9TQ19GSUxFX0FUVFJJQlVURVMgX1NDX0ZJTEVfQVRUUklCVVRFUwogICAgX1NDX0ZJTEVf TE9DS0lORywKI2RlZmluZSBfU0NfRklMRV9MT0NLSU5HIF9TQ19GSUxFX0xPQ0tJTkcKICAg IF9TQ19GSUxFX1NZU1RFTSwKI2RlZmluZSBfU0NfRklMRV9TWVNURU0gX1NDX0ZJTEVfU1lT VEVNCiAgICBfU0NfTU9OT1RPTklDX0NMT0NLLAojZGVmaW5lIF9TQ19NT05PVE9OSUNfQ0xP Q0sgX1NDX01PTk9UT05JQ19DTE9DSwogICAgX1NDX01VTFRJX1BST0NFU1MsCiNkZWZpbmUg X1NDX01VTFRJX1BST0NFU1MgX1NDX01VTFRJX1BST0NFU1MKICAgIF9TQ19TSU5HTEVfUFJP Q0VTUywKI2RlZmluZSBfU0NfU0lOR0xFX1BST0NFU1MgX1NDX1NJTkdMRV9QUk9DRVNTCiAg ICBfU0NfTkVUV09SS0lORywKI2RlZmluZSBfU0NfTkVUV09SS0lORyBfU0NfTkVUV09SS0lO RwogICAgX1NDX1JFQURFUl9XUklURVJfTE9DS1MsCiNkZWZpbmUgX1NDX1JFQURFUl9XUklU RVJfTE9DS1MgX1NDX1JFQURFUl9XUklURVJfTE9DS1MKICAgIF9TQ19TUElOX0xPQ0tTLAoj ZGVmaW5lIF9TQ19TUElOX0xPQ0tTIF9TQ19TUElOX0xPQ0tTCiAgICBfU0NfUkVHRVhQLAoj ZGVmaW5lIF9TQ19SRUdFWFAgX1NDX1JFR0VYUAogICAgX1NDX1JFR0VYX1ZFUlNJT04sCiNk ZWZpbmUgX1NDX1JFR0VYX1ZFUlNJT04gX1NDX1JFR0VYX1ZFUlNJT04KICAgIF9TQ19TSEVM TCwKI2RlZmluZSBfU0NfU0hFTEwgX1NDX1NIRUxMCiAgICBfU0NfU0lHTkFMUywKI2RlZmlu ZSBfU0NfU0lHTkFMUyBfU0NfU0lHTkFMUwogICAgX1NDX1NQQVdOLAojZGVmaW5lIF9TQ19T UEFXTiBfU0NfU1BBV04KICAgIF9TQ19TUE9SQURJQ19TRVJWRVIsCiNkZWZpbmUgX1NDX1NQ T1JBRElDX1NFUlZFUiBfU0NfU1BPUkFESUNfU0VSVkVSCiAgICBfU0NfVEhSRUFEX1NQT1JB RElDX1NFUlZFUiwKI2RlZmluZSBfU0NfVEhSRUFEX1NQT1JBRElDX1NFUlZFUiBfU0NfVEhS RUFEX1NQT1JBRElDX1NFUlZFUgogICAgX1NDX1NZU1RFTV9EQVRBQkFTRSwKI2RlZmluZSBf U0NfU1lTVEVNX0RBVEFCQVNFIF9TQ19TWVNURU1fREFUQUJBU0UKICAgIF9TQ19TWVNURU1f REFUQUJBU0VfUiwKI2RlZmluZSBfU0NfU1lTVEVNX0RBVEFCQVNFX1IgX1NDX1NZU1RFTV9E QVRBQkFTRV9SCiAgICBfU0NfVElNRU9VVFMsCiNkZWZpbmUgX1NDX1RJTUVPVVRTIF9TQ19U SU1FT1VUUwogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLAojZGVmaW5lIF9TQ19UWVBF RF9NRU1PUllfT0JKRUNUUyBfU0NfVFlQRURfTUVNT1JZX09CSkVDVFMKICAgIF9TQ19VU0VS X0dST1VQUywKI2RlZmluZSBfU0NfVVNFUl9HUk9VUFMgX1NDX1VTRVJfR1JPVVBTCiAgICBf U0NfVVNFUl9HUk9VUFNfUiwKI2RlZmluZSBfU0NfVVNFUl9HUk9VUFNfUiBfU0NfVVNFUl9H Uk9VUFNfUgogICAgX1NDXzJfUEJTLAojZGVmaW5lIF9TQ18yX1BCUyBfU0NfMl9QQlMKICAg IF9TQ18yX1BCU19BQ0NPVU5USU5HLAojZGVmaW5lIF9TQ18yX1BCU19BQ0NPVU5USU5HIF9T Q18yX1BCU19BQ0NPVU5USU5HCiAgICBfU0NfMl9QQlNfTE9DQVRFLAojZGVmaW5lIF9TQ18y X1BCU19MT0NBVEUgX1NDXzJfUEJTX0xPQ0FURQogICAgX1NDXzJfUEJTX01FU1NBR0UsCiNk ZWZpbmUgX1NDXzJfUEJTX01FU1NBR0UgX1NDXzJfUEJTX01FU1NBR0UKICAgIF9TQ18yX1BC U19UUkFDSywKI2RlZmluZSBfU0NfMl9QQlNfVFJBQ0sgX1NDXzJfUEJTX1RSQUNLCiAgICBf U0NfU1lNTE9PUF9NQVgsCiNkZWZpbmUgX1NDX1NZTUxPT1BfTUFYIF9TQ19TWU1MT09QX01B WAogICAgX1NDX1NUUkVBTVMsCiNkZWZpbmUgX1NDX1NUUkVBTVMgX1NDX1NUUkVBTVMKICAg IF9TQ18yX1BCU19DSEVDS1BPSU5ULAojZGVmaW5lIF9TQ18yX1BCU19DSEVDS1BPSU5UIF9T Q18yX1BCU19DSEVDS1BPSU5UCgogICAgX1NDX1Y2X0lMUDMyX09GRjMyLAojZGVmaW5lIF9T Q19WNl9JTFAzMl9PRkYzMiBfU0NfVjZfSUxQMzJfT0ZGMzIKICAgIF9TQ19WNl9JTFAzMl9P RkZCSUcsCiNkZWZpbmUgX1NDX1Y2X0lMUDMyX09GRkJJRyBfU0NfVjZfSUxQMzJfT0ZGQklH CiAgICBfU0NfVjZfTFA2NF9PRkY2NCwKI2RlZmluZSBfU0NfVjZfTFA2NF9PRkY2NCBfU0Nf VjZfTFA2NF9PRkY2NAogICAgX1NDX1Y2X0xQQklHX09GRkJJRywKI2RlZmluZSBfU0NfVjZf TFBCSUdfT0ZGQklHIF9TQ19WNl9MUEJJR19PRkZCSUcKCiAgICBfU0NfSE9TVF9OQU1FX01B WCwKI2RlZmluZSBfU0NfSE9TVF9OQU1FX01BWCBfU0NfSE9TVF9OQU1FX01BWAogICAgX1ND X1RSQUNFLAojZGVmaW5lIF9TQ19UUkFDRSBfU0NfVFJBQ0UKICAgIF9TQ19UUkFDRV9FVkVO VF9GSUxURVIsCiNkZWZpbmUgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUiBfU0NfVFJBQ0VfRVZF TlRfRklMVEVSCiAgICBfU0NfVFJBQ0VfSU5IRVJJVCwKI2RlZmluZSBfU0NfVFJBQ0VfSU5I RVJJVCBfU0NfVFJBQ0VfSU5IRVJJVAogICAgX1NDX1RSQUNFX0xPRywKI2RlZmluZSBfU0Nf VFJBQ0VfTE9HIF9TQ19UUkFDRV9MT0cKCiAgICBfU0NfTEVWRUwxX0lDQUNIRV9TSVpFLAoj ZGVmaW5lIF9TQ19MRVZFTDFfSUNBQ0hFX1NJWkUgX1NDX0xFVkVMMV9JQ0FDSEVfU0laRQog ICAgX1NDX0xFVkVMMV9JQ0FDSEVfQVNTT0MsCiNkZWZpbmUgX1NDX0xFVkVMMV9JQ0FDSEVf QVNTT0MgX1NDX0xFVkVMMV9JQ0FDSEVfQVNTT0MKICAgIF9TQ19MRVZFTDFfSUNBQ0hFX0xJ TkVTSVpFLAojZGVmaW5lIF9TQ19MRVZFTDFfSUNBQ0hFX0xJTkVTSVpFIF9TQ19MRVZFTDFf SUNBQ0hFX0xJTkVTSVpFCiAgICBfU0NfTEVWRUwxX0RDQUNIRV9TSVpFLAojZGVmaW5lIF9T Q19MRVZFTDFfRENBQ0hFX1NJWkUgX1NDX0xFVkVMMV9EQ0FDSEVfU0laRQogICAgX1NDX0xF VkVMMV9EQ0FDSEVfQVNTT0MsCiNkZWZpbmUgX1NDX0xFVkVMMV9EQ0FDSEVfQVNTT0MgX1ND X0xFVkVMMV9EQ0FDSEVfQVNTT0MKICAgIF9TQ19MRVZFTDFfRENBQ0hFX0xJTkVTSVpFLAoj ZGVmaW5lIF9TQ19MRVZFTDFfRENBQ0hFX0xJTkVTSVpFIF9TQ19MRVZFTDFfRENBQ0hFX0xJ TkVTSVpFCiAgICBfU0NfTEVWRUwyX0NBQ0hFX1NJWkUsCiNkZWZpbmUgX1NDX0xFVkVMMl9D QUNIRV9TSVpFIF9TQ19MRVZFTDJfQ0FDSEVfU0laRQogICAgX1NDX0xFVkVMMl9DQUNIRV9B U1NPQywKI2RlZmluZSBfU0NfTEVWRUwyX0NBQ0hFX0FTU09DIF9TQ19MRVZFTDJfQ0FDSEVf QVNTT0MKICAgIF9TQ19MRVZFTDJfQ0FDSEVfTElORVNJWkUsCiNkZWZpbmUgX1NDX0xFVkVM Ml9DQUNIRV9MSU5FU0laRSBfU0NfTEVWRUwyX0NBQ0hFX0xJTkVTSVpFCiAgICBfU0NfTEVW RUwzX0NBQ0hFX1NJWkUsCiNkZWZpbmUgX1NDX0xFVkVMM19DQUNIRV9TSVpFIF9TQ19MRVZF TDNfQ0FDSEVfU0laRQogICAgX1NDX0xFVkVMM19DQUNIRV9BU1NPQywKI2RlZmluZSBfU0Nf TEVWRUwzX0NBQ0hFX0FTU09DIF9TQ19MRVZFTDNfQ0FDSEVfQVNTT0MKICAgIF9TQ19MRVZF TDNfQ0FDSEVfTElORVNJWkUsCiNkZWZpbmUgX1NDX0xFVkVMM19DQUNIRV9MSU5FU0laRSBf U0NfTEVWRUwzX0NBQ0hFX0xJTkVTSVpFCiAgICBfU0NfTEVWRUw0X0NBQ0hFX1NJWkUsCiNk ZWZpbmUgX1NDX0xFVkVMNF9DQUNIRV9TSVpFIF9TQ19MRVZFTDRfQ0FDSEVfU0laRQogICAg X1NDX0xFVkVMNF9DQUNIRV9BU1NPQywKI2RlZmluZSBfU0NfTEVWRUw0X0NBQ0hFX0FTU09D IF9TQ19MRVZFTDRfQ0FDSEVfQVNTT0MKICAgIF9TQ19MRVZFTDRfQ0FDSEVfTElORVNJWkUs CiNkZWZpbmUgX1NDX0xFVkVMNF9DQUNIRV9MSU5FU0laRSBfU0NfTEVWRUw0X0NBQ0hFX0xJ TkVTSVpFCgoKICAgIF9TQ19JUFY2ID0gX1NDX0xFVkVMMV9JQ0FDSEVfU0laRSArIDUwLAoj ZGVmaW5lIF9TQ19JUFY2IF9TQ19JUFY2CiAgICBfU0NfUkFXX1NPQ0tFVFMsCiNkZWZpbmUg X1NDX1JBV19TT0NLRVRTIF9TQ19SQVdfU09DS0VUUwoKICAgIF9TQ19WN19JTFAzMl9PRkYz MiwKI2RlZmluZSBfU0NfVjdfSUxQMzJfT0ZGMzIgX1NDX1Y3X0lMUDMyX09GRjMyCiAgICBf U0NfVjdfSUxQMzJfT0ZGQklHLAojZGVmaW5lIF9TQ19WN19JTFAzMl9PRkZCSUcgX1NDX1Y3 X0lMUDMyX09GRkJJRwogICAgX1NDX1Y3X0xQNjRfT0ZGNjQsCiNkZWZpbmUgX1NDX1Y3X0xQ NjRfT0ZGNjQgX1NDX1Y3X0xQNjRfT0ZGNjQKICAgIF9TQ19WN19MUEJJR19PRkZCSUcsCiNk ZWZpbmUgX1NDX1Y3X0xQQklHX09GRkJJRyBfU0NfVjdfTFBCSUdfT0ZGQklHCgogICAgX1ND X1NTX1JFUExfTUFYLAojZGVmaW5lIF9TQ19TU19SRVBMX01BWCBfU0NfU1NfUkVQTF9NQVgK CiAgICBfU0NfVFJBQ0VfRVZFTlRfTkFNRV9NQVgsCiNkZWZpbmUgX1NDX1RSQUNFX0VWRU5U X05BTUVfTUFYIF9TQ19UUkFDRV9FVkVOVF9OQU1FX01BWAogICAgX1NDX1RSQUNFX05BTUVf TUFYLAojZGVmaW5lIF9TQ19UUkFDRV9OQU1FX01BWCBfU0NfVFJBQ0VfTkFNRV9NQVgKICAg IF9TQ19UUkFDRV9TWVNfTUFYLAojZGVmaW5lIF9TQ19UUkFDRV9TWVNfTUFYIF9TQ19UUkFD RV9TWVNfTUFYCiAgICBfU0NfVFJBQ0VfVVNFUl9FVkVOVF9NQVgsCiNkZWZpbmUgX1NDX1RS QUNFX1VTRVJfRVZFTlRfTUFYIF9TQ19UUkFDRV9VU0VSX0VWRU5UX01BWAoKICAgIF9TQ19Y T1BFTl9TVFJFQU1TLAojZGVmaW5lIF9TQ19YT1BFTl9TVFJFQU1TIF9TQ19YT1BFTl9TVFJF QU1TCgogICAgX1NDX1RIUkVBRF9ST0JVU1RfUFJJT19JTkhFUklULAojZGVmaW5lIF9TQ19U SFJFQURfUk9CVVNUX1BSSU9fSU5IRVJJVCBfU0NfVEhSRUFEX1JPQlVTVF9QUklPX0lOSEVS SVQKICAgIF9TQ19USFJFQURfUk9CVVNUX1BSSU9fUFJPVEVDVCwKI2RlZmluZSBfU0NfVEhS RUFEX1JPQlVTVF9QUklPX1BST1RFQ1QgX1NDX1RIUkVBRF9ST0JVU1RfUFJJT19QUk9URUNU CgogICAgX1NDX01JTlNJR1NUS1NaLAojZGVmaW5lIF9TQ19NSU5TSUdTVEtTWiBfU0NfTUlO U0lHU1RLU1oKCiAgICBfU0NfU0lHU1RLU1oKI2RlZmluZSBfU0NfU0lHU1RLU1ogX1NDX1NJ R1NUS1NaCiAgfTsKCgplbnVtCiAgewogICAgX0NTX1BBVEgsCiNkZWZpbmUgX0NTX1BBVEgg X0NTX1BBVEgKCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTLAojZGVmaW5lIF9D U19WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMgX0NTX1Y2X1dJRFRIX1JFU1RSSUNURURfRU5W UwojZGVmaW5lIF9DU19QT1NJWF9WNl9XSURUSF9SRVNUUklDVEVEX0VOVlMgX0NTX1Y2X1dJ RFRIX1JFU1RSSUNURURfRU5WUwoKICAgIF9DU19HTlVfTElCQ19WRVJTSU9OLAojZGVmaW5l IF9DU19HTlVfTElCQ19WRVJTSU9OIF9DU19HTlVfTElCQ19WRVJTSU9OCiAgICBfQ1NfR05V X0xJQlBUSFJFQURfVkVSU0lPTiwKI2RlZmluZSBfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lP TiBfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTgoKICAgIF9DU19WNV9XSURUSF9SRVNUUklD VEVEX0VOVlMsCiNkZWZpbmUgX0NTX1Y1X1dJRFRIX1JFU1RSSUNURURfRU5WUyBfQ1NfVjVf V0lEVEhfUkVTVFJJQ1RFRF9FTlZTCiNkZWZpbmUgX0NTX1BPU0lYX1Y1X1dJRFRIX1JFU1RS SUNURURfRU5WUyBfQ1NfVjVfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTCgogICAgX0NTX1Y3X1dJ RFRIX1JFU1RSSUNURURfRU5WUywKI2RlZmluZSBfQ1NfVjdfV0lEVEhfUkVTVFJJQ1RFRF9F TlZTIF9DU19WN19XSURUSF9SRVNUUklDVEVEX0VOVlMKI2RlZmluZSBfQ1NfUE9TSVhfVjdf V0lEVEhfUkVTVFJJQ1RFRF9FTlZTIF9DU19WN19XSURUSF9SRVNUUklDVEVEX0VOVlMKCiAg ICBfQ1NfTEZTX0NGTEFHUyA9IDEwMDAsCiNkZWZpbmUgX0NTX0xGU19DRkxBR1MgX0NTX0xG U19DRkxBR1MKICAgIF9DU19MRlNfTERGTEFHUywKI2RlZmluZSBfQ1NfTEZTX0xERkxBR1Mg X0NTX0xGU19MREZMQUdTCiAgICBfQ1NfTEZTX0xJQlMsCiNkZWZpbmUgX0NTX0xGU19MSUJT IF9DU19MRlNfTElCUwogICAgX0NTX0xGU19MSU5URkxBR1MsCiNkZWZpbmUgX0NTX0xGU19M SU5URkxBR1MgX0NTX0xGU19MSU5URkxBR1MKICAgIF9DU19MRlM2NF9DRkxBR1MsCiNkZWZp bmUgX0NTX0xGUzY0X0NGTEFHUyBfQ1NfTEZTNjRfQ0ZMQUdTCiAgICBfQ1NfTEZTNjRfTERG TEFHUywKI2RlZmluZSBfQ1NfTEZTNjRfTERGTEFHUyBfQ1NfTEZTNjRfTERGTEFHUwogICAg X0NTX0xGUzY0X0xJQlMsCiNkZWZpbmUgX0NTX0xGUzY0X0xJQlMgX0NTX0xGUzY0X0xJQlMK ICAgIF9DU19MRlM2NF9MSU5URkxBR1MsCiNkZWZpbmUgX0NTX0xGUzY0X0xJTlRGTEFHUyBf Q1NfTEZTNjRfTElOVEZMQUdTCgogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0g MTEwMCwKI2RlZmluZSBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9DRkxBR1MgX0NTX1hCUzVfSUxQ MzJfT0ZGMzJfQ0ZMQUdTCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTLAojZGVm aW5lIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MgX0NTX1hCUzVfSUxQMzJfT0ZGMzJf TERGTEFHUwogICAgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUywKI2RlZmluZSBfQ1NfWEJT NV9JTFAzMl9PRkYzMl9MSUJTIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMKICAgIF9DU19Y QlM1X0lMUDMyX09GRjMyX0xJTlRGTEFHUywKI2RlZmluZSBfQ1NfWEJTNV9JTFAzMl9PRkYz Ml9MSU5URkxBR1MgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElOVEZMQUdTCiAgICBfQ1NfWEJT NV9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAojZGVmaW5lIF9DU19YQlM1X0lMUDMyX09GRkJJR19D RkxBR1MgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUwogICAgX0NTX1hCUzVfSUxQMzJf T0ZGQklHX0xERkxBR1MsCiNkZWZpbmUgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xERkxBR1Mg X0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xERkxBR1MKICAgIF9DU19YQlM1X0lMUDMyX09GRkJJ R19MSUJTLAojZGVmaW5lIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSUJTIF9DU19YQlM1X0lM UDMyX09GRkJJR19MSUJTCiAgICBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTLAoj ZGVmaW5lIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MgX0NTX1hCUzVfSUxQMzJf T0ZGQklHX0xJTlRGTEFHUwogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MsCiNkZWZp bmUgX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxB R1MKICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUywKI2RlZmluZSBfQ1NfWEJTNV9M UDY0X09GRjY0X0xERkxBR1MgX0NTX1hCUzVfTFA2NF9PRkY2NF9MREZMQUdTCiAgICBfQ1Nf WEJTNV9MUDY0X09GRjY0X0xJQlMsCiNkZWZpbmUgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJT IF9DU19YQlM1X0xQNjRfT0ZGNjRfTElCUwogICAgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5U RkxBR1MsCiNkZWZpbmUgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSU5URkxBR1MgX0NTX1hCUzVf TFA2NF9PRkY2NF9MSU5URkxBR1MKICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1Ms CiNkZWZpbmUgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyBfQ1NfWEJTNV9MUEJJR19P RkZCSUdfQ0ZMQUdTCiAgICBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUywKI2RlZmlu ZSBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUyBfQ1NfWEJTNV9MUEJJR19PRkZCSUdf TERGTEFHUwogICAgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMsCiNkZWZpbmUgX0NTX1hC UzVfTFBCSUdfT0ZGQklHX0xJQlMgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMKICAgIF9D U19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MsCiNkZWZpbmUgX0NTX1hCUzVfTFBCSUdf T0ZGQklHX0xJTlRGTEFHUyBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTCgogICAg X0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjZf SUxQMzJfT0ZGMzJfQ0ZMQUdTIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9DRkxBR1MKICAg IF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MREZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9W Nl9JTFAzMl9PRkYzMl9MREZMQUdTIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MREZMQUdT CiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElCUywKI2RlZmluZSBfQ1NfUE9TSVhf VjZfSUxQMzJfT0ZGMzJfTElCUyBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJfTElCUwogICAg X0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJTlRGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhf VjZfSUxQMzJfT0ZGMzJfTElOVEZMQUdTIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MSU5U RkxBR1MKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTLAojZGVmaW5lIF9D U19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZC SUdfQ0ZMQUdTCiAgICBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MsCiNkZWZp bmUgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MREZMQUdTIF9DU19QT1NJWF9WNl9JTFAz Ml9PRkZCSUdfTERGTEFHUwogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSUJTLAoj ZGVmaW5lIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElCUyBfQ1NfUE9TSVhfVjZfSUxQ MzJfT0ZGQklHX0xJQlMKICAgIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdT LAojZGVmaW5lIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdTIF9DU19QT1NJ WF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdTCiAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2 NF9DRkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTIF9DU19Q T1NJWF9WNl9MUDY0X09GRjY0X0NGTEFHUwogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRf TERGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MREZMQUdTIF9DU19Q T1NJWF9WNl9MUDY0X09GRjY0X0xERkxBR1MKICAgIF9DU19QT1NJWF9WNl9MUDY0X09GRjY0 X0xJQlMsCiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUyBfQ1NfUE9TSVhf VjZfTFA2NF9PRkY2NF9MSUJTCiAgICBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSU5URkxB R1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTIF9DU19QT1NJ WF9WNl9MUDY0X09GRjY0X0xJTlRGTEFHUwogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJ R19DRkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19DRkxBR1MgX0NT X1BPU0lYX1Y2X0xQQklHX09GRkJJR19DRkxBR1MKICAgIF9DU19QT1NJWF9WNl9MUEJJR19P RkZCSUdfTERGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjZfTFBCSUdfT0ZGQklHX0xERkxB R1MgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZMQUdTCiAgICBfQ1NfUE9TSVhfVjZf TFBCSUdfT0ZGQklHX0xJQlMsCiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19M SUJTIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfTElCUwogICAgX0NTX1BPU0lYX1Y2X0xQ QklHX09GRkJJR19MSU5URkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJ R19MSU5URkxBR1MgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxBR1MKCiAgICBf Q1NfUE9TSVhfVjdfSUxQMzJfT0ZGMzJfQ0ZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9WN19J TFAzMl9PRkYzMl9DRkxBR1MgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0NGTEFHUwogICAg X0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0xERkxBR1MsCiNkZWZpbmUgX0NTX1BPU0lYX1Y3 X0lMUDMyX09GRjMyX0xERkxBR1MgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0xERkxBR1MK ICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MSUJTLAojZGVmaW5lIF9DU19QT1NJWF9W N19JTFAzMl9PRkYzMl9MSUJTIF9DU19QT1NJWF9WN19JTFAzMl9PRkYzMl9MSUJTCiAgICBf Q1NfUE9TSVhfVjdfSUxQMzJfT0ZGMzJfTElOVEZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9W N19JTFAzMl9PRkYzMl9MSU5URkxBR1MgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRjMyX0xJTlRG TEFHUwogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19DRkxBR1MsCiNkZWZpbmUgX0NT X1BPU0lYX1Y3X0lMUDMyX09GRkJJR19DRkxBR1MgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJ R19DRkxBR1MKICAgIF9DU19QT1NJWF9WN19JTFAzMl9PRkZCSUdfTERGTEFHUywKI2RlZmlu ZSBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0xERkxBR1MgX0NTX1BPU0lYX1Y3X0lMUDMy X09GRkJJR19MREZMQUdTCiAgICBfQ1NfUE9TSVhfVjdfSUxQMzJfT0ZGQklHX0xJQlMsCiNk ZWZpbmUgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MSUJTIF9DU19QT1NJWF9WN19JTFAz Ml9PRkZCSUdfTElCUwogICAgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MSU5URkxBR1Ms CiNkZWZpbmUgX0NTX1BPU0lYX1Y3X0lMUDMyX09GRkJJR19MSU5URkxBR1MgX0NTX1BPU0lY X1Y3X0lMUDMyX09GRkJJR19MSU5URkxBR1MKICAgIF9DU19QT1NJWF9WN19MUDY0X09GRjY0 X0NGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9DRkxBR1MgX0NTX1BP U0lYX1Y3X0xQNjRfT0ZGNjRfQ0ZMQUdTCiAgICBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9M REZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9WN19MUDY0X09GRjY0X0xERkxBR1MgX0NTX1BP U0lYX1Y3X0xQNjRfT0ZGNjRfTERGTEFHUwogICAgX0NTX1BPU0lYX1Y3X0xQNjRfT0ZGNjRf TElCUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9MSUJTIF9DU19QT1NJWF9W N19MUDY0X09GRjY0X0xJQlMKICAgIF9DU19QT1NJWF9WN19MUDY0X09GRjY0X0xJTlRGTEFH UywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfTFA2NF9PRkY2NF9MSU5URkxBR1MgX0NTX1BPU0lY X1Y3X0xQNjRfT0ZGNjRfTElOVEZMQUdTCiAgICBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklH X0NGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0NGTEFHUyBfQ1Nf UE9TSVhfVjdfTFBCSUdfT0ZGQklHX0NGTEFHUwogICAgX0NTX1BPU0lYX1Y3X0xQQklHX09G RkJJR19MREZMQUdTLAojZGVmaW5lIF9DU19QT1NJWF9WN19MUEJJR19PRkZCSUdfTERGTEFH UyBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xERkxBR1MKICAgIF9DU19QT1NJWF9WN19M UEJJR19PRkZCSUdfTElCUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xJ QlMgX0NTX1BPU0lYX1Y3X0xQQklHX09GRkJJR19MSUJTCiAgICBfQ1NfUE9TSVhfVjdfTFBC SUdfT0ZGQklHX0xJTlRGTEFHUywKI2RlZmluZSBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklH X0xJTlRGTEFHUyBfQ1NfUE9TSVhfVjdfTFBCSUdfT0ZGQklHX0xJTlRGTEFHUwoKICAgIF9D U19WNl9FTlYsCiNkZWZpbmUgX0NTX1Y2X0VOViBfQ1NfVjZfRU5WCiAgICBfQ1NfVjdfRU5W CiNkZWZpbmUgX0NTX1Y3X0VOViBfQ1NfVjdfRU5WCiAgfTsKIyA2MzEgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAoKCmV4dGVybiBsb25nIGludCBwYXRoY29u ZiAoY29uc3QgY2hhciAqX19wYXRoLCBpbnQgX19uYW1lKQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpOwoKCmV4dGVybiBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQgX19u YW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy biBsb25nIGludCBzeXNjb25mIChpbnQgX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gc2l6ZV90IGNvbmZzdHIgKGludCBfX25h bWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkKICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dy aXRlX29ubHlfXywgMiwgMykpKTsKCgoKCmV4dGVybiBfX3BpZF90IGdldHBpZCAodm9pZCkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRlcm4gX19w aWRfdCBnZXRwcGlkICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwoKCmV4dGVybiBfX3BpZF90IGdldHBncnAgKHZvaWQpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIF9fcGlkX3QgX19nZXRwZ2lk IChfX3BpZF90IF9fcGlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpOwoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKZXh0ZXJuIGludCBzZXRw Z2lkIChfX3BpZF90IF9fcGlkLCBfX3BpZF90IF9fcGdpZCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fICwgX19sZWFmX18pKTsKIyA2ODIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGludCBzZXRwZ3JwICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gX19waWRfdCBzZXRz aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK CmV4dGVybiBfX3BpZF90IGdldHNpZCAoX19waWRfdCBfX3BpZCkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICh2 b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVy biBfX3VpZF90IGdldGV1aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7CgoKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICh2b2lkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBfX2dpZF90IGdldGVn aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK CgpleHRlcm4gaW50IGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKQogICAgX19hdHRyaWJ1 dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAyLCAxKSkpOwoKCmV4dGVybiBp bnQgZ3JvdXBfbWVtYmVyIChfX2dpZF90IF9fZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gaW50IHNldHVpZCAoX191aWRfdCBf X3VpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7CgoKCgpl eHRlcm4gaW50IHNldHJldWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJuIGlu dCBzZXRldWlkIChfX3VpZF90IF9fdWlkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18g LCBfX2xlYWZfXykpIDsKCgoKCgoKZXh0ZXJuIGludCBzZXRnaWQgKF9fZ2lkX3QgX19naWQp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKZXh0ZXJu IGludCBzZXRyZWdpZCAoX19naWRfdCBfX3JnaWQsIF9fZ2lkX3QgX19lZ2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKCgoKCmV4dGVybiBpbnQgc2V0 ZWdpZCAoX19naWRfdCBfX2dpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRyZXN1aWQgKF9fdWlkX3QgKl9fcnVpZCwg X191aWRfdCAqX19ldWlkLCBfX3VpZF90ICpfX3N1aWQpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCBnZXRyZXNnaWQgKF9f Z2lkX3QgKl9fcmdpZCwgX19naWRfdCAqX19lZ2lkLCBfX2dpZF90ICpfX3NnaWQpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGlu dCBzZXRyZXN1aWQgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9fZXVpZCwgX191aWRfdCBf X3N1aWQpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSA7 CgoKCmV4dGVybiBpbnQgc2V0cmVzZ2lkIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2Vn aWQsIF9fZ2lkX3QgX19zZ2lkKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgOwoKCgoKCgpleHRlcm4gX19waWRfdCBmb3JrICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18pKTsKCgoKCgoKCmV4dGVybiBfX3BpZF90IHZmb3JrICh2 b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpl eHRlcm4gX19waWRfdCBfRm9yayAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gY2hhciAqdHR5bmFtZSAoaW50IF9fZmQpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBpbnQg dHR5bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMikpKQogICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19f IChfX3dyaXRlX29ubHlfXywgMiwgMykpKTsKCgoKZXh0ZXJuIGludCBpc2F0dHkgKGludCBf X2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKZXh0 ZXJuIGludCB0dHlzbG90ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwoKCgoKZXh0ZXJuIGludCBsaW5rIChjb25zdCBjaGFyICpfX2Zyb20sIGNv bnN0IGNoYXIgKl9fdG8pCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSkgOwoKCgoKZXh0 ZXJuIGludCBsaW5rYXQgKGludCBfX2Zyb21mZCwgY29uc3QgY2hhciAqX19mcm9tLCBpbnQg X190b2ZkLAogICAgIGNvbnN0IGNoYXIgKl9fdG8sIGludCBfX2ZsYWdzKQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgyLCA0KSkpIDsKCgoKCmV4dGVybiBpbnQgc3ltbGluayAoY29uc3QgY2hh ciAqX19mcm9tLCBjb25zdCBjaGFyICpfX3RvKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy KSkpIDsKCgoKCmV4dGVybiBzc2l6ZV90IHJlYWRsaW5rIChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fcGF0aCwKICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Fj Y2Vzc19fIChfX3dyaXRlX29ubHlfXywgMiwgMykpKTsKCgoKCgpleHRlcm4gaW50IHN5bWxp bmthdCAoY29uc3QgY2hhciAqX19mcm9tLCBpbnQgX190b2ZkLAogICAgICAgIGNvbnN0IGNo YXIgKl9fdG8pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpIDsKCgpleHRlcm4gc3NpemVfdCBy ZWFkbGlua2F0IChpbnQgX19mZCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsCiAg ICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMiwgMykpKQogICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dy aXRlX29ubHlfXywgMywgNCkpKTsKCgoKZXh0ZXJuIGludCB1bmxpbmsgKGNvbnN0IGNoYXIg Kl9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQgdW5saW5rYXQg KGludCBfX2ZkLCBjb25zdCBjaGFyICpfX25hbWUsIGludCBfX2ZsYWcpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDIpKSk7CgoKCmV4dGVybiBpbnQgcm1kaXIgKGNvbnN0IGNoYXIgKl9fcGF0 aCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAo aW50IF9fZmQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoK ZXh0ZXJuIGludCB0Y3NldHBncnAgKGludCBfX2ZkLCBfX3BpZF90IF9fcGdycF9pZCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKZXh0ZXJuIGNo YXIgKmdldGxvZ2luICh2b2lkKTsKCgoKCgoKCmV4dGVybiBpbnQgZ2V0bG9naW5fciAoY2hh ciAqX19uYW1lLCBzaXplX3QgX19uYW1lX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5 X18sIDEsIDIpKSk7CgoKCgpleHRlcm4gaW50IHNldGxvZ2luIChjb25zdCBjaGFyICpfX25h bWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9iaXRzL2dldG9wdF9wb3NpeC5oIiAxIDMgNAojIDIxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9iaXRzL2dldG9wdF9wb3NpeC5oIiAzIDQKI2RlZmluZSBfR0VUT1BUX1BP U0lYX0ggMQoKCgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9nZXRvcHRf Y29yZS5oIiAxIDMgNAojIDIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2dldG9w dF9jb3JlLmgiIDMgNAojZGVmaW5lIF9HRVRPUFRfQ09SRV9IIDEKCgoKCgoKCgoKCgoKCgpl eHRlcm4gY2hhciAqb3B0YXJnOwojIDUwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L2dldG9wdF9jb3JlLmgiIDMgNApleHRlcm4gaW50IG9wdGluZDsKCgoKCmV4dGVybiBpbnQg b3B0ZXJyOwoKCgpleHRlcm4gaW50IG9wdG9wdDsKIyA5MSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvYml0cy9nZXRvcHRfY29yZS5oIiAzIDQKZXh0ZXJuIGludCBnZXRvcHQgKGludCBf X19hcmdjLCBjaGFyICpjb25zdCAqX19fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMp CiAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsKCgojIDI4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9iaXRzL2dldG9wdF9wb3NpeC5oIiAyIDMgNAoKCiMgNDkgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvZ2V0b3B0X3Bvc2l4LmgiIDMgNAoKIyA5MDQgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNAoKCgoKCgoKZXh0ZXJuIGludCBn ZXRob3N0bmFtZSAoY2hhciAqX19uYW1lLCBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18s IDEsIDIpKSk7CgoKCgoKCmV4dGVybiBpbnQgc2V0aG9zdG5hbWUgKGNvbnN0IGNoYXIgKl9f bmFtZSwgc2l6ZV90IF9fbGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmli dXRlX18gKChfX2FjY2Vzc19fIChfX3JlYWRfb25seV9fLCAxLCAyKSkpOwoKCgpleHRlcm4g aW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fICwgX19sZWFmX18pKSA7CgoKCgoKZXh0ZXJuIGludCBnZXRkb21haW5uYW1lIChjaGFy ICpfX25hbWUsIHNpemVfdCBfX2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKQogICAg IF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRlX29ubHlfXywgMSwgMikpKTsK ZXh0ZXJuIGludCBzZXRkb21haW5uYW1lIChjb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBf X2xlbikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX19hY2Nl c3NfXyAoX19yZWFkX29ubHlfXywgMSwgMikpKTsKCgoKCmV4dGVybiBpbnQgdmhhbmd1cCAo dm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgpleHRl cm4gaW50IHJldm9rZSAoY29uc3QgY2hhciAqX19maWxlKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KSA7CgoKCgoKCgpleHRlcm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3Nh bXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCiAgICAgc2l6ZV90IF9fb2Zmc2V0LCB1bnNp Z25lZCBpbnQgX19zY2FsZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpleHRl cm4gaW50IGFjY3QgKGNvbnN0IGNoYXIgKl9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGNoYXIgKmdldHVzZXJzaGVsbCAodm9p ZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKZXh0ZXJuIHZv aWQgZW5kdXNlcnNoZWxsICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBf X2xlYWZfXykpOwpleHRlcm4gdm9pZCBzZXR1c2Vyc2hlbGwgKHZvaWQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCgoKZXh0ZXJuIGludCBkYWVtb24g KGludCBfX25vY2hkaXIsIGludCBfX25vY2xvc2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSkgOwoKCgoKCgpleHRlcm4gaW50IGNocm9vdCAoY29uc3QgY2hh ciAqX19wYXRoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCmV4dGVybiBjaGFyICpnZXRw YXNzIChjb25zdCBjaGFyICpfX3Byb21wdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpOwoKCgoKCgoKZXh0ZXJuIGludCBmc3luYyAoaW50IF9fZmQpOwoKCgoKCmV4dGVy biBpbnQgc3luY2ZzIChpbnQgX19mZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9pZCk7CgoK ZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IGdldHBhZ2VzaXplICh2b2lkKSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKCgoKCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAodm9pZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAxMDI2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgdHJ1bmNhdGUgKGNvbnN0IGNo YXIgKl9fZmlsZSwgX19vZmZfdCBfX2xlbmd0aCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KSA7CiMgMTAzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRl cm4gaW50IHRydW5jYXRlNjQgKGNvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmY2NF90IF9fbGVu Z3RoKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyAxMDQ5ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgZnRydW5jYXRlIChpbnQgX19m ZCwgX19vZmZfdCBfX2xlbmd0aCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSA7CiMgMTA1OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMg NApleHRlcm4gaW50IGZ0cnVuY2F0ZTY0IChpbnQgX19mZCwgX19vZmY2NF90IF9fbGVuZ3Ro KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIDsKIyAxMDcwICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CmV4dGVybiBpbnQgYnJrICh2 b2lkICpfX2FkZHIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkg OwoKCgoKCmV4dGVybiB2b2lkICpzYnJrIChpbnRwdHJfdCBfX2RlbHRhKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDEwOTEgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcg aW50IF9fc3lzbm8sIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKTsKIyAxMTA4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiNk ZWZpbmUgRl9VTE9DSyAwCiNkZWZpbmUgRl9MT0NLIDEKI2RlZmluZSBGX1RMT0NLIDIKI2Rl ZmluZSBGX1RFU1QgMwoKCmV4dGVybiBpbnQgbG9ja2YgKGludCBfX2ZkLCBpbnQgX19jbWQs IF9fb2ZmX3QgX19sZW4pIDsKIyAxMTI0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlz dGQuaCIgMyA0CmV4dGVybiBpbnQgbG9ja2Y2NCAoaW50IF9fZmQsIGludCBfX2NtZCwgX19v ZmY2NF90IF9fbGVuKSA7CiMgMTEzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3Rk LmgiIDMgNAojZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSAoX19leHRl bnNpb25fXyAoeyBsb25nIGludCBfX3Jlc3VsdDsgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQp IChleHByZXNzaW9uKTsgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5U Uik7IF9fcmVzdWx0OyB9KSkKCgoKCgoKCnNzaXplX3QgY29weV9maWxlX3JhbmdlIChpbnQg X19pbmZkLCBfX29mZjY0X3QgKl9fcGlub2ZmLAogICAgaW50IF9fb3V0ZmQsIF9fb2ZmNjRf dCAqX19wb3V0b2ZmLAogICAgc2l6ZV90IF9fbGVuZ3RoLCB1bnNpZ25lZCBpbnQgX19mbGFn cyk7CgoKCgoKZXh0ZXJuIGludCBmZGF0YXN5bmMgKGludCBfX2ZpbGRlcyk7CiMgMTE1OSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gY2hhciAqY3J5 cHQgKGNvbnN0IGNoYXIgKl9fa2V5LCBjb25zdCBjaGFyICpfX3NhbHQpCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDIpKSk7CgoKCgoKCgpleHRlcm4gdm9pZCBzd2FiIChjb25zdCB2b2lk ICpfX3Jlc3RyaWN0IF9fZnJvbSwgdm9pZCAqX19yZXN0cmljdCBfX3RvLAogICAgc3NpemVf dCBfX24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19h Y2Nlc3NfXyAoX19yZWFkX29ubHlfXywgMSwgMykpKQogICAgX19hdHRyaWJ1dGVfXyAoKF9f YWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAyLCAzKSkpOwojIDExOTggIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQKaW50IGdldGVudHJvcHkgKHZvaWQgKl9fYnVm ZmVyLCBzaXplX3QgX19sZW5ndGgpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAo X193cml0ZV9vbmx5X18sIDEsIDIpKSk7CiMgMTIwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvdW5pc3RkLmgiIDMgNApleHRlcm4gaW50IGNsb3NlX3JhbmdlICh1bnNpZ25lZCBpbnQg X19mZCwgdW5zaWduZWQgaW50IF9fbWF4X2ZkLAogICBpbnQgX19mbGFncykgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAxMjE4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv Yml0cy91bmlzdGRfZXh0LmgiIDEgMyA0CiMgMzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvdW5pc3RkX2V4dC5oIiAzIDQKZXh0ZXJuIF9fcGlkX3QgZ2V0dGlkICh2b2lkKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgojIDEgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L2Nsb3NlX3JhbmdlLmgiIDEgMyA0CgoKI2RlZmlu ZSBfTElOVVhfQ0xPU0VfUkFOR0VfSCAKCgojZGVmaW5lIENMT1NFX1JBTkdFX1VOU0hBUkUg KDFVIDw8IDEpCgoKI2RlZmluZSBDTE9TRV9SQU5HRV9DTE9FWEVDICgxVSA8PCAyKQojIDM5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3VuaXN0ZF9leHQuaCIgMiAzIDQKIyAx MjE5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzIDQKCgojIDE1OCAi c3lzdGVtLmgiIDIKIyAxNjcgInN5c3RlbS5oIgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9p bmNsdWRlL2xpbWl0cy5oIiAxIDMgNAojIDMwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVk ZS9saW1pdHMuaCIgMyA0CiNkZWZpbmUgX0dDQ19MSU1JVFNfSF8gCgoKCiMgMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51 eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3lzbGltaXRzLmgiIDEgMyA0CgoKCgoKI2RlZmluZSBf R0NDX05FWFRfTElNSVRTX0ggCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvbGlt aXRzLmgiIDEgMyA0CiMgMjEwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9saW1pdHMu aCIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDEgMyA0CiMg MjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzIDQKI2RlZmluZSBfTElC Q19MSU1JVFNfSF8gMQoKI2RlZmluZSBfX0dMSUJDX0lOVEVSTkFMX1NUQVJUSU5HX0hFQURF Ul9JTVBMRU1FTlRBVElPTiAKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2xp YmMtaGVhZGVyLXN0YXJ0LmgiIDEgMyA0CiMgMzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIgMyA0CiN1bmRlZiBfX0dMSUJDX0lOVEVSTkFM X1NUQVJUSU5HX0hFQURFUl9JTVBMRU1FTlRBVElPTgoKCgoKCiN1bmRlZiBfX0dMSUJDX1VT RV9MSUJfRVhUMgoKCiNkZWZpbmUgX19HTElCQ19VU0VfTElCX0VYVDIgMQojIDY3ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0LmgiIDMgNAojdW5k ZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5X0JGUF9FWFQKCiNkZWZpbmUgX19HTElCQ19VU0Vf SUVDXzYwNTU5X0JGUF9FWFQgMQoKCgojdW5kZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5X0JG UF9FWFRfQzJYCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9CRlBfRVhUX0MyWCAx CgoKCiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRVhUCgojZGVmaW5lIF9fR0xJQkNf VVNFX0lFQ182MDU1OV9FWFQgMQojIDkwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L2xpYmMtaGVhZGVyLXN0YXJ0LmgiIDMgNAojdW5kZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5 X0ZVTkNTX0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhUIDEK CgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFRfQzJYCgojZGVmaW5l IF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFRfQzJYIDEKCgoKCgoKI3VuZGVmIF9f R0xJQkNfVVNFX0lFQ182MDU1OV9UWVBFU19FWFQKCiNkZWZpbmUgX19HTElCQ19VU0VfSUVD XzYwNTU5X1RZUEVTX0VYVCAxCiMgMjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbWl0 cy5oIiAyIDMgNAoKCgoKCiNkZWZpbmUgTUJfTEVOX01BWCAxNgojIDEzMiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojZGVmaW5lIExMT05HX01JTiAoLUxMT05H X01BWC0xKQoKCiNkZWZpbmUgTExPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCgoKI2RlZmlu ZSBVTExPTkdfTUFYIChMTE9OR19NQVggKiAyVUxMICsgMSkKIyAxNDcgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzIDQKI2RlZmluZSBDSEFSX1dJRFRIIDgKCgojZGVm aW5lIFNDSEFSX1dJRFRIIDgKCgojZGVmaW5lIFVDSEFSX1dJRFRIIDgKCgojZGVmaW5lIFNI UlRfV0lEVEggMTYKCgojZGVmaW5lIFVTSFJUX1dJRFRIIDE2CgoKI2RlZmluZSBJTlRfV0lE VEggMzIKCgojZGVmaW5lIFVJTlRfV0lEVEggMzIKCgojZGVmaW5lIExPTkdfV0lEVEggX19X T1JEU0laRQoKCiNkZWZpbmUgVUxPTkdfV0lEVEggX19XT1JEU0laRQoKCiNkZWZpbmUgTExP TkdfV0lEVEggNjQKCgojZGVmaW5lIFVMTE9OR19XSURUSCA2NAojIDE4NiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojZGVmaW5lIEJPT0xfTUFYIDEKCgojZGVm aW5lIEJPT0xfV0lEVEggMQoKCgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy9wb3NpeDFfbGltLmgiIDEgMyA0CiMgMjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Jp dHMvcG9zaXgxX2xpbS5oIiAzIDQKI2RlZmluZSBfQklUU19QT1NJWDFfTElNX0ggMQoKIyAx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMTgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMyA0CiNkZWZpbmUg X19XT1JEU0laRSA2NAojZGVmaW5lIF9fV09SRFNJWkVfVElNRTY0X0NPTVBBVDMyIDAKIyAy OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hh aW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMyA0CgoK CgojZGVmaW5lIF9QT1NJWF9BSU9fTElTVElPX01BWCAyCgoKI2RlZmluZSBfUE9TSVhfQUlP X01BWCAxCgoKI2RlZmluZSBfUE9TSVhfQVJHX01BWCA0MDk2CgoKCiNkZWZpbmUgX1BPU0lY X0NISUxEX01BWCAyNQoKCgoKCiNkZWZpbmUgX1BPU0lYX0RFTEFZVElNRVJfTUFYIDMyCgoK CiNkZWZpbmUgX1BPU0lYX0hPU1RfTkFNRV9NQVggMjU1CgoKI2RlZmluZSBfUE9TSVhfTElO S19NQVggOAoKCiNkZWZpbmUgX1BPU0lYX0xPR0lOX05BTUVfTUFYIDkKCgojZGVmaW5lIF9Q T1NJWF9NQVhfQ0FOT04gMjU1CgoKCiNkZWZpbmUgX1BPU0lYX01BWF9JTlBVVCAyNTUKCgoj ZGVmaW5lIF9QT1NJWF9NUV9PUEVOX01BWCA4CgoKI2RlZmluZSBfUE9TSVhfTVFfUFJJT19N QVggMzIKCgojZGVmaW5lIF9QT1NJWF9OQU1FX01BWCAxNAoKCgojZGVmaW5lIF9QT1NJWF9O R1JPVVBTX01BWCA4CgoKCgoKCiNkZWZpbmUgX1BPU0lYX09QRU5fTUFYIDIwCgoKCgoKCgoj ZGVmaW5lIF9QT1NJWF9GRF9TRVRTSVpFIF9QT1NJWF9PUEVOX01BWAoKCgojZGVmaW5lIF9Q T1NJWF9QQVRIX01BWCAyNTYKCgojZGVmaW5lIF9QT1NJWF9QSVBFX0JVRiA1MTIKCgoKI2Rl ZmluZSBfUE9TSVhfUkVfRFVQX01BWCAyNTUKCgojZGVmaW5lIF9QT1NJWF9SVFNJR19NQVgg OAoKCiNkZWZpbmUgX1BPU0lYX1NFTV9OU0VNU19NQVggMjU2CgoKI2RlZmluZSBfUE9TSVhf U0VNX1ZBTFVFX01BWCAzMjc2NwoKCiNkZWZpbmUgX1BPU0lYX1NJR1FVRVVFX01BWCAzMgoK CiNkZWZpbmUgX1BPU0lYX1NTSVpFX01BWCAzMjc2NwoKCiNkZWZpbmUgX1BPU0lYX1NUUkVB TV9NQVggOAoKCiNkZWZpbmUgX1BPU0lYX1NZTUxJTktfTUFYIDI1NQoKCgojZGVmaW5lIF9Q T1NJWF9TWU1MT09QX01BWCA4CgoKI2RlZmluZSBfUE9TSVhfVElNRVJfTUFYIDMyCgoKI2Rl ZmluZSBfUE9TSVhfVFRZX05BTUVfTUFYIDkKCgoKI2RlZmluZSBfUE9TSVhfVFpOQU1FX01B WCA2CgoKCgoKCiNkZWZpbmUgX1BPU0lYX1FMSU1JVCAxCgoKCiNkZWZpbmUgX1BPU0lYX0hJ V0FUIF9QT1NJWF9QSVBFX0JVRgoKCiNkZWZpbmUgX1BPU0lYX1VJT19NQVhJT1YgMTYKCgoK I2RlZmluZSBfUE9TSVhfQ0xPQ0tSRVNfTUlOIDIwMDAwMDAwCgoKCiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMSAzIDQKIyAyNSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy9sb2NhbF9saW0uaCIgMyA0CiNkZWZpbmUgX191bmRlZl9O Ul9PUEVOIAoKCiNkZWZpbmUgX191bmRlZl9MSU5LX01BWCAKCgojZGVmaW5lIF9fdW5kZWZf T1BFTl9NQVggCgoKI2RlZmluZSBfX3VuZGVmX0FSR19NQVggCgoKCiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMyA0CgoKI2RlZmluZSBfTElOVVhf TElNSVRTX0ggCgojZGVmaW5lIE5SX09QRU4gMTAyNAoKI2RlZmluZSBOR1JPVVBTX01BWCA2 NTUzNgojZGVmaW5lIEFSR19NQVggMTMxMDcyCiNkZWZpbmUgTElOS19NQVggMTI3CiNkZWZp bmUgTUFYX0NBTk9OIDI1NQojZGVmaW5lIE1BWF9JTlBVVCAyNTUKI2RlZmluZSBOQU1FX01B WCAyNTUKI2RlZmluZSBQQVRIX01BWCA0MDk2CiNkZWZpbmUgUElQRV9CVUYgNDA5NgojZGVm aW5lIFhBVFRSX05BTUVfTUFYIDI1NQojZGVmaW5lIFhBVFRSX1NJWkVfTUFYIDY1NTM2CiNk ZWZpbmUgWEFUVFJfTElTVF9NQVggNjU1MzYKCiNkZWZpbmUgUlRTSUdfTUFYIDMyCiMgMzkg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvbG9jYWxfbGltLmgiIDIgMyA0CgoKCiN1 bmRlZiBOUl9PUEVOCiN1bmRlZiBfX3VuZGVmX05SX09QRU4KCgoKI3VuZGVmIExJTktfTUFY CiN1bmRlZiBfX3VuZGVmX0xJTktfTUFYCgoKCiN1bmRlZiBPUEVOX01BWAojdW5kZWYgX191 bmRlZl9PUEVOX01BWAoKCgojdW5kZWYgQVJHX01BWAojdW5kZWYgX191bmRlZl9BUkdfTUFY CgoKCiNkZWZpbmUgX1BPU0lYX1RIUkVBRF9LRVlTX01BWCAxMjgKCiNkZWZpbmUgUFRIUkVB RF9LRVlTX01BWCAxMDI0CgoKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0RFU1RSVUNUT1JfSVRF UkFUSU9OUyA0CgojZGVmaW5lIFBUSFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TIF9QT1NJ WF9USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TCgoKI2RlZmluZSBfUE9TSVhfVEhSRUFE X1RIUkVBRFNfTUFYIDY0CgojdW5kZWYgUFRIUkVBRF9USFJFQURTX01BWAoKCgojZGVmaW5l IEFJT19QUklPX0RFTFRBX01BWCAyMAoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv Yml0cy9wdGhyZWFkX3N0YWNrX21pbi1keW5hbWljLmgiIDEgMyA0CiMgMjIgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZF9zdGFja19taW4tZHluYW1pYy5oIiAzIDQK I2RlZmluZSBfX1NDX1RIUkVBRF9TVEFDS19NSU5fVkFMVUUgNzUKCmV4dGVybiBsb25nIGlu dCBfX3N5c2NvbmYgKGludCBfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSk7CgojZGVmaW5lIFBUSFJFQURfU1RBQ0tfTUlOIF9fc3lzY29uZiAoX19T Q19USFJFQURfU1RBQ0tfTUlOX1ZBTFVFKQojIDgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL2xvY2FsX2xpbS5oIiAyIDMgNAoKCiNkZWZpbmUgREVMQVlUSU1FUl9NQVggMjE0 NzQ4MzY0NwoKCiNkZWZpbmUgVFRZX05BTUVfTUFYIDMyCgoKI2RlZmluZSBMT0dJTl9OQU1F X01BWCAyNTYKCgojZGVmaW5lIEhPU1RfTkFNRV9NQVggNjQKCgojZGVmaW5lIE1RX1BSSU9f TUFYIDMyNzY4CgoKI2RlZmluZSBTRU1fVkFMVUVfTUFYICgyMTQ3NDgzNjQ3KQojIDE2MiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDIgMyA0CgoKCgoK CgojZGVmaW5lIFNTSVpFX01BWCBMT05HX01BWAojIDE5NiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvbGltaXRzLmgiIDIgMyA0CgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv Yml0cy9wb3NpeDJfbGltLmgiIDEgMyA0CiMgMjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvcG9zaXgyX2xpbS5oIiAzIDQKI2RlZmluZSBfQklUU19QT1NJWDJfTElNX0ggMQoK CgojZGVmaW5lIF9QT1NJWDJfQkNfQkFTRV9NQVggOTkKCgojZGVmaW5lIF9QT1NJWDJfQkNf RElNX01BWCAyMDQ4CgoKI2RlZmluZSBfUE9TSVgyX0JDX1NDQUxFX01BWCA5OQoKCiNkZWZp bmUgX1BPU0lYMl9CQ19TVFJJTkdfTUFYIDEwMDAKCgoKI2RlZmluZSBfUE9TSVgyX0NPTExf V0VJR0hUU19NQVggMgoKCgojZGVmaW5lIF9QT1NJWDJfRVhQUl9ORVNUX01BWCAzMgoKCiNk ZWZpbmUgX1BPU0lYMl9MSU5FX01BWCAyMDQ4CgoKCiNkZWZpbmUgX1BPU0lYMl9SRV9EVVBf TUFYIDI1NQoKCgojZGVmaW5lIF9QT1NJWDJfQ0hBUkNMQVNTX05BTUVfTUFYIDE0CgoKCgoK CgojZGVmaW5lIEJDX0JBU0VfTUFYIF9QT1NJWDJfQkNfQkFTRV9NQVgKCgojZGVmaW5lIEJD X0RJTV9NQVggX1BPU0lYMl9CQ19ESU1fTUFYCgoKI2RlZmluZSBCQ19TQ0FMRV9NQVggX1BP U0lYMl9CQ19TQ0FMRV9NQVgKCgojZGVmaW5lIEJDX1NUUklOR19NQVggX1BPU0lYMl9CQ19T VFJJTkdfTUFYCgoKI2RlZmluZSBDT0xMX1dFSUdIVFNfTUFYIDI1NQoKCiNkZWZpbmUgRVhQ Ul9ORVNUX01BWCBfUE9TSVgyX0VYUFJfTkVTVF9NQVgKCgojZGVmaW5lIExJTkVfTUFYIF9Q T1NJWDJfTElORV9NQVgKCgojZGVmaW5lIENIQVJDTEFTU19OQU1FX01BWCAyMDQ4CgoKCiNk ZWZpbmUgUkVfRFVQX01BWCAoMHg3ZmZmKQojIDIwMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvbGltaXRzLmgiIDIgMyA0CgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy94b3Blbl9saW0uaCIgMSAzIDQKIyAzMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy94b3Blbl9saW0uaCIgMyA0CiNkZWZpbmUgX1hPUEVOX0xJTV9IIDEKIyA2MiAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9saW0uaCIgMyA0CiNkZWZpbmUgX1hPUEVO X0lPVl9NQVggX1BPU0lYX1VJT19NQVhJT1YKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv bG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1s aW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1 ZGUvYml0cy91aW9fbGltLmgiIDEgMyA0CiMgMjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvdWlvX2xpbS5oIiAzIDQKI2RlZmluZSBfQklUU19VSU9fTElNX0ggMQojIDMwICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3Vpb19saW0uaCIgMyA0CiNkZWZpbmUgX19J T1ZfTUFYIDEwMjQKIyA2NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy94b3Blbl9s aW0uaCIgMiAzIDQKCiNkZWZpbmUgSU9WX01BWCBfX0lPVl9NQVgKCgoKCgoKI2RlZmluZSBO TF9BUkdNQVggX1BPU0lYX0FSR19NQVgKCgojZGVmaW5lIE5MX0xBTkdNQVggX1BPU0lYMl9M SU5FX01BWAoKCiNkZWZpbmUgTkxfTVNHTUFYIElOVF9NQVgKCgoKCiNkZWZpbmUgTkxfTk1B WCBJTlRfTUFYCgoKCiNkZWZpbmUgTkxfU0VUTUFYIElOVF9NQVgKCgojZGVmaW5lIE5MX1RF WFRNQVggSU5UX01BWAoKCiNkZWZpbmUgTlpFUk8gMjAKIyAxMTQgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2JpdHMveG9wZW5fbGltLmgiIDMgNAojZGVmaW5lIFdPUkRfQklUIDMyCiMg MTM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3hvcGVuX2xpbS5oIiAzIDQKI2Rl ZmluZSBMT05HX0JJVCA2NAojIDIwNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvbGltaXRz LmgiIDIgMyA0CiMgMjExICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hh aW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9s aWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9saW1pdHMuaCIg MiAzIDQKIyA4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2Nj L2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAz IDQKI3VuZGVmIF9HQ0NfTkVYVF9MSU1JVFNfSAojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEv aW5jbHVkZS9saW1pdHMuaCIgMiAzIDQKIyA2MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1 ZGUvbGltaXRzLmgiIDMgNAojZGVmaW5lIF9MSU1JVFNfSF9fXyAKCgojdW5kZWYgQ0hBUl9C SVQKI2RlZmluZSBDSEFSX0JJVCBfX0NIQVJfQklUX18KCgoKCgoKCiN1bmRlZiBTQ0hBUl9N SU4KI2RlZmluZSBTQ0hBUl9NSU4gKC1TQ0hBUl9NQVggLSAxKQojdW5kZWYgU0NIQVJfTUFY CiNkZWZpbmUgU0NIQVJfTUFYIF9fU0NIQVJfTUFYX18KCgojdW5kZWYgVUNIQVJfTUFYCgoK CiNkZWZpbmUgVUNIQVJfTUFYIChTQ0hBUl9NQVggKiAyICsgMSkKIyA5NiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1n bnUvMTQuMC4xL2luY2x1ZGUvbGltaXRzLmgiIDMgNAojdW5kZWYgQ0hBUl9NSU4KI2RlZmlu ZSBDSEFSX01JTiBTQ0hBUl9NSU4KI3VuZGVmIENIQVJfTUFYCiNkZWZpbmUgQ0hBUl9NQVgg U0NIQVJfTUFYCgoKCiN1bmRlZiBTSFJUX01JTgojZGVmaW5lIFNIUlRfTUlOICgtU0hSVF9N QVggLSAxKQojdW5kZWYgU0hSVF9NQVgKI2RlZmluZSBTSFJUX01BWCBfX1NIUlRfTUFYX18K CgojdW5kZWYgVVNIUlRfTUFYCgoKCiNkZWZpbmUgVVNIUlRfTUFYIChTSFJUX01BWCAqIDIg KyAxKQoKCgojdW5kZWYgSU5UX01JTgojZGVmaW5lIElOVF9NSU4gKC1JTlRfTUFYIC0gMSkK I3VuZGVmIElOVF9NQVgKI2RlZmluZSBJTlRfTUFYIF9fSU5UX01BWF9fCgoKI3VuZGVmIFVJ TlRfTUFYCiNkZWZpbmUgVUlOVF9NQVggKElOVF9NQVggKiAyVSArIDFVKQoKCgojdW5kZWYg TE9OR19NSU4KI2RlZmluZSBMT05HX01JTiAoLUxPTkdfTUFYIC0gMUwpCiN1bmRlZiBMT05H X01BWAojZGVmaW5lIExPTkdfTUFYIF9fTE9OR19NQVhfXwoKCiN1bmRlZiBVTE9OR19NQVgK I2RlZmluZSBVTE9OR19NQVggKExPTkdfTUFYICogMlVMICsgMVVMKQoKCgojdW5kZWYgTExP TkdfTUlOCiNkZWZpbmUgTExPTkdfTUlOICgtTExPTkdfTUFYIC0gMUxMKQojdW5kZWYgTExP TkdfTUFYCiNkZWZpbmUgTExPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCgoKI3VuZGVmIFVM TE9OR19NQVgKI2RlZmluZSBVTExPTkdfTUFYIChMTE9OR19NQVggKiAyVUxMICsgMVVMTCkK CgoKCiN1bmRlZiBMT05HX0xPTkdfTUlOCiNkZWZpbmUgTE9OR19MT05HX01JTiAoLUxPTkdf TE9OR19NQVggLSAxTEwpCiN1bmRlZiBMT05HX0xPTkdfTUFYCiNkZWZpbmUgTE9OR19MT05H X01BWCBfX0xPTkdfTE9OR19NQVhfXwoKCiN1bmRlZiBVTE9OR19MT05HX01BWAojZGVmaW5l IFVMT05HX0xPTkdfTUFYIChMT05HX0xPTkdfTUFYICogMlVMTCArIDFVTEwpCiMgMTY4ICJz eXN0ZW0uaCIgMgoKCgojIDEgImh3aW50LmgiIDEKIyAxMCAiaHdpbnQuaCIKI2RlZmluZSBH Q0NfSFdJTlRfSCAKCgojZGVmaW5lIEhPU1RfQklUU19QRVJfQ0hBUiBDSEFSX0JJVAojZGVm aW5lIEhPU1RfQklUU19QRVJfU0hPUlQgKENIQVJfQklUICogU0laRU9GX1NIT1JUKQojZGVm aW5lIEhPU1RfQklUU19QRVJfSU5UIChDSEFSX0JJVCAqIFNJWkVPRl9JTlQpCiNkZWZpbmUg SE9TVF9CSVRTX1BFUl9MT05HIChDSEFSX0JJVCAqIFNJWkVPRl9MT05HKQoKCiNkZWZpbmUg SE9TVF9CSVRTX1BFUl9MT05HTE9ORyAoQ0hBUl9CSVQgKiBTSVpFT0ZfTE9OR19MT05HKQoj IDY3ICJod2ludC5oIgojZGVmaW5lIEhPU1RfQklUU19QRVJfV0lERV9JTlQgSE9TVF9CSVRT X1BFUl9MT05HCiNkZWZpbmUgSE9TVF9XSURFX0lOVCBsb25nCiMgODQgImh3aW50LmgiCiNk ZWZpbmUgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMgIiVsZCIKIyAxMDAgImh3aW50LmgiCiNk ZWZpbmUgSE9TVF9XSURFX0lOVF9QUklOVF9VTlNJR05FRCAiJWx1IgojIDExNiAiaHdpbnQu aCIKI2RlZmluZSBIT1NUX1dJREVfSU5UX1BSSU5UX0hFWCAiMHglbHgiCiMgMTMzICJod2lu dC5oIgojZGVmaW5lIEhPU1RfV0lERV9JTlRfUFJJTlRfRE9VQkxFX0hFWCAiMHglbHglMDE2 bHgiCiMgMTc4ICJod2ludC5oIgojZGVmaW5lIEhPU1RfQklUU19QRVJfV0lERVNUX0lOVCBI T1NUX0JJVFNfUEVSX0xPTkcKI2RlZmluZSBIT1NUX1dJREVTVF9JTlQgbG9uZwojZGVmaW5l IEhPU1RfV0lERVNUX0lOVF9QUklOVF9ERUMgIiVsZCIKI2RlZmluZSBIT1NUX1dJREVTVF9J TlRfUFJJTlRfVU5TSUdORUQgIiVsdSIKI2RlZmluZSBIT1NUX1dJREVTVF9JTlRfUFJJTlRf SEVYICIweCVseCIKIyAxNzIgInN5c3RlbS5oIiAyCiMgMTgwICJzeXN0ZW0uaCIKI2RlZmlu ZSBJTl9SQU5HRShWQUxVRSxMT1dFUixVUFBFUikgKCh1bnNpZ25lZCBIT1NUX1dJREVfSU5U KSAoKFZBTFVFKSAtIChMT1dFUikpIDw9ICgoVVBQRVIpIC0gKExPV0VSKSkpCgoKCgoKCiNk ZWZpbmUgSU5UVFlQRV9TSUdORUQodCkgKCEgKCh0KSAwIDwgKHQpIC0xKSkKCgojZGVmaW5l IElOVFRZUEVfTUlOSU1VTSh0KSAoKHQpIChJTlRUWVBFX1NJR05FRCAodCkgPyB+ICh0KSAw IDw8IChzaXplb2YodCkgKiBDSEFSX0JJVCAtIDEpIDogKHQpIDApKQoKI2RlZmluZSBJTlRU WVBFX01BWElNVU0odCkgKCh0KSAofiAodCkgMCAtIElOVFRZUEVfTUlOSU1VTSAodCkpKQoj IDIwNyAic3lzdGVtLmgiCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAx IDMgNAojIDIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAojZGVmaW5l IF9USU1FX0ggMQoKCgojZGVmaW5lIF9fbmVlZF9zaXplX3QgCiNkZWZpbmUgX19uZWVkX05V TEwgCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190 b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9s b29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMg MTU4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25n YXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBf X25lZWRfcHRyZGlmZl90CiMgMjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjEvaW5jbHVkZS9zdGRk ZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfc2l6ZV90CiMgMzQ5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4w LjEvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfd2NoYXJfdAojIDM5OSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2 NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgTlVMTAoK CgoKI2RlZmluZSBOVUxMICgodm9pZCAqKTApCgoKCgoKI3VuZGVmIF9fbmVlZF9OVUxMCgoK CgojdW5kZWYgb2Zmc2V0b2YKI2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJFUikgX19idWls dGluX29mZnNldG9mIChUWVBFLCBNRU1CRVIpCiMgMzAgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL3RpbWUuaCIgMiAzIDQKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L3RpbWUuaCIgMSAzIDQKIyAyNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aW1l LmgiIDMgNAojZGVmaW5lIF9CSVRTX1RJTUVfSCAxCiMgMzQgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL2JpdHMvdGltZS5oIiAzIDQKI2RlZmluZSBDTE9DS1NfUEVSX1NFQyAoKF9fY2xv Y2tfdCkgMTAwMDAwMCkKIyA0NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aW1l LmgiIDMgNAojZGVmaW5lIENMT0NLX1JFQUxUSU1FIDAKCiNkZWZpbmUgQ0xPQ0tfTU9OT1RP TklDIDEKCiNkZWZpbmUgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEIDIKCiNkZWZpbmUgQ0xP Q0tfVEhSRUFEX0NQVVRJTUVfSUQgMwoKI2RlZmluZSBDTE9DS19NT05PVE9OSUNfUkFXIDQK CiNkZWZpbmUgQ0xPQ0tfUkVBTFRJTUVfQ09BUlNFIDUKCiNkZWZpbmUgQ0xPQ0tfTU9OT1RP TklDX0NPQVJTRSA2CgojZGVmaW5lIENMT0NLX0JPT1RUSU1FIDcKCiNkZWZpbmUgQ0xPQ0tf UkVBTFRJTUVfQUxBUk0gOAoKI2RlZmluZSBDTE9DS19CT09UVElNRV9BTEFSTSA5CgojZGVm aW5lIENMT0NLX1RBSSAxMQoKCiNkZWZpbmUgVElNRVJfQUJTVElNRSAxCgoKCiMgMSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5z dGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aW1leC5oIiAxIDMgNAojIDE5ICIvaG9tZS9j aGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxs L2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9iaXRzL3RpbWV4LmgiIDMgNAojZGVmaW5lIF9CSVRTX1RJTUVY X0ggMQoKCgoKCgpzdHJ1Y3QgdGltZXgKewojIDU4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9iaXRzL3RpbWV4LmgiIDMgNAogIHVuc2lnbmVkIGludCBtb2RlczsKICBfX3N5c2NhbGxf c2xvbmdfdCBvZmZzZXQ7CiAgX19zeXNjYWxsX3Nsb25nX3QgZnJlcTsKICBfX3N5c2NhbGxf c2xvbmdfdCBtYXhlcnJvcjsKICBfX3N5c2NhbGxfc2xvbmdfdCBlc3RlcnJvcjsKICBpbnQg c3RhdHVzOwogIF9fc3lzY2FsbF9zbG9uZ190IGNvbnN0YW50OwogIF9fc3lzY2FsbF9zbG9u Z190IHByZWNpc2lvbjsKICBfX3N5c2NhbGxfc2xvbmdfdCB0b2xlcmFuY2U7CiAgc3RydWN0 IHRpbWV2YWwgdGltZTsKICBfX3N5c2NhbGxfc2xvbmdfdCB0aWNrOwogIF9fc3lzY2FsbF9z bG9uZ190IHBwc2ZyZXE7CiAgX19zeXNjYWxsX3Nsb25nX3Qgaml0dGVyOwogIGludCBzaGlm dDsKICBfX3N5c2NhbGxfc2xvbmdfdCBzdGFiaWw7CiAgX19zeXNjYWxsX3Nsb25nX3Qgaml0 Y250OwogIF9fc3lzY2FsbF9zbG9uZ190IGNhbGNudDsKICBfX3N5c2NhbGxfc2xvbmdfdCBl cnJjbnQ7CiAgX19zeXNjYWxsX3Nsb25nX3Qgc3RiY250OwoKICBpbnQgdGFpOwoKCiAgaW50 IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICBpbnQgOjMyOyBpbnQgOjMyOyBp bnQgOjMyOyBpbnQgOjMyOwogIGludCA6MzI7IGludCA6MzI7IGludCA6MzI7Cgp9OwoKCiNk ZWZpbmUgQURKX09GRlNFVCAweDAwMDEKI2RlZmluZSBBREpfRlJFUVVFTkNZIDB4MDAwMgoj ZGVmaW5lIEFESl9NQVhFUlJPUiAweDAwMDQKI2RlZmluZSBBREpfRVNURVJST1IgMHgwMDA4 CiNkZWZpbmUgQURKX1NUQVRVUyAweDAwMTAKI2RlZmluZSBBREpfVElNRUNPTlNUIDB4MDAy MAojZGVmaW5lIEFESl9UQUkgMHgwMDgwCiNkZWZpbmUgQURKX1NFVE9GRlNFVCAweDAxMDAK I2RlZmluZSBBREpfTUlDUk8gMHgxMDAwCiNkZWZpbmUgQURKX05BTk8gMHgyMDAwCiNkZWZp bmUgQURKX1RJQ0sgMHg0MDAwCiNkZWZpbmUgQURKX09GRlNFVF9TSU5HTEVTSE9UIDB4ODAw MQojZGVmaW5lIEFESl9PRkZTRVRfU1NfUkVBRCAweGEwMDEKCgojZGVmaW5lIE1PRF9PRkZT RVQgQURKX09GRlNFVAojZGVmaW5lIE1PRF9GUkVRVUVOQ1kgQURKX0ZSRVFVRU5DWQojZGVm aW5lIE1PRF9NQVhFUlJPUiBBREpfTUFYRVJST1IKI2RlZmluZSBNT0RfRVNURVJST1IgQURK X0VTVEVSUk9SCiNkZWZpbmUgTU9EX1NUQVRVUyBBREpfU1RBVFVTCiNkZWZpbmUgTU9EX1RJ TUVDT05TVCBBREpfVElNRUNPTlNUCiNkZWZpbmUgTU9EX0NMS0IgQURKX1RJQ0sKI2RlZmlu ZSBNT0RfQ0xLQSBBREpfT0ZGU0VUX1NJTkdMRVNIT1QKI2RlZmluZSBNT0RfVEFJIEFESl9U QUkKI2RlZmluZSBNT0RfTUlDUk8gQURKX01JQ1JPCiNkZWZpbmUgTU9EX05BTk8gQURKX05B Tk8KCgoKI2RlZmluZSBTVEFfUExMIDB4MDAwMQojZGVmaW5lIFNUQV9QUFNGUkVRIDB4MDAw MgojZGVmaW5lIFNUQV9QUFNUSU1FIDB4MDAwNAojZGVmaW5lIFNUQV9GTEwgMHgwMDA4Cgoj ZGVmaW5lIFNUQV9JTlMgMHgwMDEwCiNkZWZpbmUgU1RBX0RFTCAweDAwMjAKI2RlZmluZSBT VEFfVU5TWU5DIDB4MDA0MAojZGVmaW5lIFNUQV9GUkVRSE9MRCAweDAwODAKCiNkZWZpbmUg U1RBX1BQU1NJR05BTCAweDAxMDAKI2RlZmluZSBTVEFfUFBTSklUVEVSIDB4MDIwMAojZGVm aW5lIFNUQV9QUFNXQU5ERVIgMHgwNDAwCiNkZWZpbmUgU1RBX1BQU0VSUk9SIDB4MDgwMAoK I2RlZmluZSBTVEFfQ0xPQ0tFUlIgMHgxMDAwCiNkZWZpbmUgU1RBX05BTk8gMHgyMDAwCiNk ZWZpbmUgU1RBX01PREUgMHg0MDAwCiNkZWZpbmUgU1RBX0NMSyAweDgwMDAKCgojZGVmaW5l IFNUQV9ST05MWSAoU1RBX1BQU1NJR05BTCB8IFNUQV9QUFNKSVRURVIgfCBTVEFfUFBTV0FO REVSIHwgU1RBX1BQU0VSUk9SIHwgU1RBX0NMT0NLRVJSIHwgU1RBX05BTk8gfCBTVEFfTU9E RSB8IFNUQV9DTEspCiMgNzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvdGltZS5o IiAyIDMgNAoKCgoKZXh0ZXJuIGludCBjbG9ja19hZGp0aW1lIChfX2Nsb2NraWRfdCBfX2Ns b2NrX2lkLCBzdHJ1Y3QgdGltZXggKl9fdXR4KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKIyA5 MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hh aW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDMgNAoKIyAzNCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5z dGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251 L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAoKCgoKCiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zdHJ1Y3RfdG0uaCIgMSAzIDQKCiNkZWZpbmUg X19zdHJ1Y3RfdG1fZGVmaW5lZCAxCgoKCgpzdHJ1Y3QgdG0KewogIGludCB0bV9zZWM7CiAg aW50IHRtX21pbjsKICBpbnQgdG1faG91cjsKICBpbnQgdG1fbWRheTsKICBpbnQgdG1fbW9u OwogIGludCB0bV95ZWFyOwogIGludCB0bV93ZGF5OwogIGludCB0bV95ZGF5OwogIGludCB0 bV9pc2RzdDsKCgogIGxvbmcgaW50IHRtX2dtdG9mZjsKICBjb25zdCBjaGFyICp0bV96b25l OwoKCgoKfTsKIyA0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAoj IDQ4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xj aGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1s aW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAojIDEgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3RydWN0X2l0aW1lcnNwZWMuaCIgMSAzIDQK CiNkZWZpbmUgX19pdGltZXJzcGVjX2RlZmluZWQgMQoKCgoKCnN0cnVjdCBpdGltZXJzcGVj CiAgewogICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgc3RydWN0IHRpbWVz cGVjIGl0X3ZhbHVlOwogIH07CiMgNDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUu aCIgMiAzIDQKc3RydWN0IHNpZ2V2ZW50OwojIDY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS90aW1lLmgiIDMgNAojZGVmaW5lIFRJTUVfVVRDIDEKCgoKCgoKZXh0ZXJuIGNsb2NrX3Qg Y2xvY2sgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 CgoKCmV4dGVybiB0aW1lX3QgdGltZSAodGltZV90ICpfX3RpbWVyKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCmV4dGVybiBkb3VibGUgZGlmZnRpbWUg KHRpbWVfdCBfX3RpbWUxLCB0aW1lX3QgX190aW1lMCkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgpleHRlcm4gdGltZV90IG1rdGltZSAoc3RydWN0IHRtICpfX3RwKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDEwMCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIHNpemVfdCBzdHJmdGltZSAoY2hhciAqX19yZXN0 cmljdCBfX3MsIHNpemVfdCBfX21heHNpemUsCiAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mb3JtYXQsCiAgIGNvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKQogICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMywgNCkpKTsKCgoKCmV4dGVybiBjaGFyICpzdHJwdGltZSAoY29u c3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19mbXQsIHN0cnVjdCB0bSAqX190cCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lX2wgKGNo YXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgIGNvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0 IF9fdHAsCiAgICAgbG9jYWxlX3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBjaGFyICpzdHJwdGltZV9sIChjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fcywKICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIHN0 cnVjdCB0bSAqX190cCwKICAgIGxvY2FsZV90IF9fbG9jKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgpleHRlcm4gc3RydWN0IHRtICpnbXRpbWUg KGNvbnN0IHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwg X19sZWFmX18pKTsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lIChjb25zdCB0aW1l X3QgKl9fdGltZXIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 CiMgMTU1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gc3Ry dWN0IHRtICpnbXRpbWVfciAoY29uc3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAg ICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3Ig KGNvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgc3RydWN0IHRt ICpfX3Jlc3RyaWN0IF9fdHApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSk7CiMgMTgwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRl cm4gY2hhciAqYXNjdGltZSAoY29uc3Qgc3RydWN0IHRtICpfX3RwKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gY2hhciAqY3RpbWUgKGNv bnN0IHRpbWVfdCAqX190aW1lcikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKIyAxOTggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4 dGVybiBjaGFyICphc2N0aW1lX3IgKGNvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3Rw LAogICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4gY2hhciAqY3RpbWVfciAoY29uc3QgdGltZV90 ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Zikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAyMTggIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBjaGFyICpfX3R6bmFtZVsy XTsKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsK CgoKCmV4dGVybiBjaGFyICp0em5hbWVbMl07CgoKCmV4dGVybiB2b2lkIHR6c2V0ICh2b2lk KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgpleHRlcm4g aW50IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7CgoKCgoKI2RlZmluZSBf X2lzbGVhcCh5ZWFyKSAoKHllYXIpICUgNCA9PSAwICYmICgoeWVhcikgJSAxMDAgIT0gMCB8 fCAoeWVhcikgJSA0MDAgPT0gMCkpCgoKCgoKCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1 Y3QgdG0gKl9fdHApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7 CiMgMjY0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gdGlt ZV90IHRpbWVsb2NhbCAoc3RydWN0IHRtICpfX3RwKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpOwoKCgoKCgoKZXh0ZXJuIGludCBkeXNpemUgKGludCBfX3ll YXIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOwojIDI4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGlt ZS5oIiAzIDQKZXh0ZXJuIGludCBuYW5vc2xlZXAgKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAq X19yZXF1ZXN0ZWRfdGltZSwKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVtYWluaW5n KTsKCgpleHRlcm4gaW50IGNsb2NrX2dldHJlcyAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0 cnVjdCB0aW1lc3BlYyAqX19yZXMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CgoKZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lIChjbG9ja2lkX3QgX19jbG9j a19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkp OwoKCmV4dGVybiBpbnQgY2xvY2tfc2V0dGltZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQsIGNv bnN0IHN0cnVjdCB0aW1lc3BlYyAqX190cCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsK IyAzMjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBpbnQg Y2xvY2tfbmFub3NsZWVwIChjbG9ja2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCiAg ICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVxLAogICAgICAgc3RydWN0IHRpbWVz cGVjICpfX3JlbSk7CiMgMzM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMg NApleHRlcm4gaW50IGNsb2NrX2dldGNwdWNsb2NraWQgKHBpZF90IF9fcGlkLCBjbG9ja2lk X3QgKl9fY2xvY2tfaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSk7CgoKCgpleHRlcm4gaW50IHRpbWVyX2NyZWF0ZSAoY2xvY2tpZF90IF9fY2xvY2tfaWQs CiAgICBzdHJ1Y3Qgc2lnZXZlbnQgKl9fcmVzdHJpY3QgX19ldnAsCiAgICB0aW1lcl90ICpf X3Jlc3RyaWN0IF9fdGltZXJpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKTsKCgpleHRlcm4gaW50IHRpbWVyX2RlbGV0ZSAodGltZXJfdCBfX3RpbWVyaWQp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBp bnQgdGltZXJfc2V0dGltZSAodGltZXJfdCBfX3RpbWVyaWQsIGludCBfX2ZsYWdzLAogICAg IGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpfX3Jlc3RyaWN0IF9fdmFsdWUsCiAgICAgc3Ry dWN0IGl0aW1lcnNwZWMgKl9fcmVzdHJpY3QgX19vdmFsdWUpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIGludCB0aW1lcl9nZXR0aW1lICh0 aW1lcl90IF9fdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKl9fdmFsdWUpCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAzNzcgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBpbnQgdGltZXJfZ2V0b3ZlcnJ1 biAodGltZXJfdCBfX3RpbWVyaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9f bGVhZl9fKSk7CgoKCgoKCmV4dGVybiBpbnQgdGltZXNwZWNfZ2V0IChzdHJ1Y3QgdGltZXNw ZWMgKl9fdHMsIGludCBfX2Jhc2UpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f ICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgNDAw ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gaW50IHRpbWVz cGVjX2dldHJlcyAoc3RydWN0IHRpbWVzcGVjICpfX3RzLCBpbnQgX19iYXNlKQogICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CiMgNDI2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxs L2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gaW50IGdldGRhdGVfZXJyOwoj IDQzNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIHN0cnVj dCB0bSAqZ2V0ZGF0ZSAoY29uc3QgY2hhciAqX19zdHJpbmcpOwojIDQ0OSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCBnZXRkYXRlX3IgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19zdHJpbmcsCiAgICAgICAgc3RydWN0IHRtICpfX3Jlc3Ry aWN0IF9fcmVzYnVmcCk7CgoKCiMgMjA4ICJzeXN0ZW0uaCIgMgoKCgoKCiMgMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwuaCIgMSAzIDQKIyAyMyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvZmNudGwuaCIgMyA0CiNkZWZpbmUgX0ZDTlRMX0ggMQoKCgoKCgoKCgoKCiMg MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hh aW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mY250bC5oIiAxIDMgNAojIDIzICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDMgNAojIDEgIi9ob21lL2No ZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwv bG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNy b290L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAxOCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAzIDQKI2RlZmluZSBfX1dPUkRTSVpF IDY0CiNkZWZpbmUgX19XT1JEU0laRV9USU1FNjRfQ09NUEFUMzIgMAojIDI0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxs L2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLmgiIDIgMyA0CgoKCgojZGVmaW5lIF9fT19M QVJHRUZJTEUgMAoKI2RlZmluZSBGX0dFVExLNjQgNQojZGVmaW5lIEZfU0VUTEs2NCA2CiNk ZWZpbmUgRl9TRVRMS1c2NCA3CgoKc3RydWN0IGZsb2NrCnsKICBzaG9ydCBpbnQgbF90eXBl OwogIHNob3J0IGludCBsX3doZW5jZTsKCiAgX19vZmZfdCBsX3N0YXJ0OwogIF9fb2ZmX3Qg bF9sZW47CgoKCgogIF9fcGlkX3QgbF9waWQ7Cn07CgoKc3RydWN0IGZsb2NrNjQKewogIHNo b3J0IGludCBsX3R5cGU7CiAgc2hvcnQgaW50IGxfd2hlbmNlOwogIF9fb2ZmNjRfdCBsX3N0 YXJ0OwogIF9fb2ZmNjRfdCBsX2xlbjsKICBfX3BpZF90IGxfcGlkOwp9OwoKCgojIDEgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmNudGwtbGludXguaCIgMSAzIDQKIyAzOCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mY250bC1saW51eC5oIiAzIDQKIyAxICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3N0cnVjdF9pb3ZlYy5oIiAxIDMg NAojIDIwICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3N0cnVjdF9pb3Zl Yy5oIiAzIDQKI2RlZmluZSBfX2lvdmVjX2RlZmluZWQgMQoKI2RlZmluZSBfX25lZWRfc2l6 ZV90IAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2Mv bG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAoj IDE1OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29u Z2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYg X19uZWVkX3B0cmRpZmZfdAojIDIzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4xL2luY2x1ZGUvc3Rk ZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3NpemVfdAojIDM0OSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQu MC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3djaGFyX3QKIyAzOTkg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNo NjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5VTEwK CgoKCiNkZWZpbmUgTlVMTCAoKHZvaWQgKikwKQoKCgoKCiN1bmRlZiBfX25lZWRfTlVMTAoK CgoKI3VuZGVmIG9mZnNldG9mCiNkZWZpbmUgb2Zmc2V0b2YoVFlQRSxNRU1CRVIpIF9fYnVp bHRpbl9vZmZzZXRvZiAoVFlQRSwgTUVNQkVSKQojIDI0ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3R5cGVzL3N0cnVjdF9pb3ZlYy5oIiAyIDMgNAoKCnN0cnVjdCBpb3ZlYwog IHsKICAgIHZvaWQgKmlvdl9iYXNlOwogICAgc2l6ZV90IGlvdl9sZW47CiAgfTsKIyAzOSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9mY250bC1saW51eC5oIiAyIDMgNAoKCgoj ZGVmaW5lIE9fQUNDTU9ERSAwMDAzCiNkZWZpbmUgT19SRE9OTFkgMDAKI2RlZmluZSBPX1dS T05MWSAwMQojZGVmaW5lIE9fUkRXUiAwMgoKI2RlZmluZSBPX0NSRUFUIDAxMDAKCgojZGVm aW5lIE9fRVhDTCAwMjAwCgoKI2RlZmluZSBPX05PQ1RUWSAwNDAwCgoKI2RlZmluZSBPX1RS VU5DIDAxMDAwCgoKI2RlZmluZSBPX0FQUEVORCAwMjAwMAoKCiNkZWZpbmUgT19OT05CTE9D SyAwNDAwMAoKCiNkZWZpbmUgT19OREVMQVkgT19OT05CTE9DSwoKCiNkZWZpbmUgT19TWU5D IDA0MDEwMDAwCgojZGVmaW5lIE9fRlNZTkMgT19TWU5DCgojZGVmaW5lIE9fQVNZTkMgMDIw MDAwCgoKCgoKCiNkZWZpbmUgX19PX0RJUkVDVE9SWSAwMjAwMDAwCgoKI2RlZmluZSBfX09f Tk9GT0xMT1cgMDQwMDAwMAoKCiNkZWZpbmUgX19PX0NMT0VYRUMgMDIwMDAwMDAKCgojZGVm aW5lIF9fT19ESVJFQ1QgMDQwMDAwCgoKI2RlZmluZSBfX09fTk9BVElNRSAwMTAwMDAwMAoK CiNkZWZpbmUgX19PX1BBVEggMDEwMDAwMDAwCgoKI2RlZmluZSBfX09fRFNZTkMgMDEwMDAw CgoKI2RlZmluZSBfX09fVE1QRklMRSAoMDIwMDAwMDAwIHwgX19PX0RJUkVDVE9SWSkKIyAx MDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmNudGwtbGludXguaCIgMyA0CiNk ZWZpbmUgRl9HRVRMSyBGX0dFVExLNjQKI2RlZmluZSBGX1NFVExLIEZfU0VUTEs2NAojZGVm aW5lIEZfU0VUTEtXIEZfU0VUTEtXNjQKIyAxMzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvZmNudGwtbGludXguaCIgMyA0CiNkZWZpbmUgRl9PRkRfR0VUTEsgMzYKI2RlZmlu ZSBGX09GRF9TRVRMSyAzNwojZGVmaW5lIEZfT0ZEX1NFVExLVyAzOAoKCgojZGVmaW5lIE9f TEFSR0VGSUxFIF9fT19MQVJHRUZJTEUKCgoKI2RlZmluZSBPX0RJUkVDVE9SWSBfX09fRElS RUNUT1JZCiNkZWZpbmUgT19OT0ZPTExPVyBfX09fTk9GT0xMT1cKI2RlZmluZSBPX0NMT0VY RUMgX19PX0NMT0VYRUMKCgoKI2RlZmluZSBPX0RJUkVDVCBfX09fRElSRUNUCiNkZWZpbmUg T19OT0FUSU1FIF9fT19OT0FUSU1FCiNkZWZpbmUgT19QQVRIIF9fT19QQVRICiNkZWZpbmUg T19UTVBGSUxFIF9fT19UTVBGSUxFCgoKCgoKCiNkZWZpbmUgT19EU1lOQyBfX09fRFNZTkMK CgoKI2RlZmluZSBPX1JTWU5DIE9fU1lOQwoKCgoKI2RlZmluZSBGX0RVUEZEIDAKI2RlZmlu ZSBGX0dFVEZEIDEKI2RlZmluZSBGX1NFVEZEIDIKI2RlZmluZSBGX0dFVEZMIDMKI2RlZmlu ZSBGX1NFVEZMIDQKCgojZGVmaW5lIF9fRl9TRVRPV04gOAojZGVmaW5lIF9fRl9HRVRPV04g OQoKCgojZGVmaW5lIEZfU0VUT1dOIF9fRl9TRVRPV04KI2RlZmluZSBGX0dFVE9XTiBfX0Zf R0VUT1dOCgoKCiNkZWZpbmUgX19GX1NFVFNJRyAxMAojZGVmaW5lIF9fRl9HRVRTSUcgMTEK CgojZGVmaW5lIF9fRl9TRVRPV05fRVggMTUKI2RlZmluZSBfX0ZfR0VUT1dOX0VYIDE2CgoK CiNkZWZpbmUgRl9TRVRTSUcgX19GX1NFVFNJRwojZGVmaW5lIEZfR0VUU0lHIF9fRl9HRVRT SUcKI2RlZmluZSBGX1NFVE9XTl9FWCBfX0ZfU0VUT1dOX0VYCiNkZWZpbmUgRl9HRVRPV05f RVggX19GX0dFVE9XTl9FWAoKCgojZGVmaW5lIEZfU0VUTEVBU0UgMTAyNAojZGVmaW5lIEZf R0VUTEVBU0UgMTAyNQojZGVmaW5lIEZfTk9USUZZIDEwMjYKI2RlZmluZSBGX1NFVFBJUEVf U1ogMTAzMQojZGVmaW5lIEZfR0VUUElQRV9TWiAxMDMyCiNkZWZpbmUgRl9BRERfU0VBTFMg MTAzMwojZGVmaW5lIEZfR0VUX1NFQUxTIDEwMzQKCiNkZWZpbmUgRl9HRVRfUldfSElOVCAx MDM1CiNkZWZpbmUgRl9TRVRfUldfSElOVCAxMDM2CiNkZWZpbmUgRl9HRVRfRklMRV9SV19I SU5UIDEwMzcKI2RlZmluZSBGX1NFVF9GSUxFX1JXX0hJTlQgMTAzOAoKCiNkZWZpbmUgRl9E VVBGRF9DTE9FWEVDIDEwMzAKCgoKCiNkZWZpbmUgRkRfQ0xPRVhFQyAxCgoKCiNkZWZpbmUg Rl9SRExDSyAwCiNkZWZpbmUgRl9XUkxDSyAxCiNkZWZpbmUgRl9VTkxDSyAyCgoKCgoKI2Rl ZmluZSBGX0VYTENLIDQKI2RlZmluZSBGX1NITENLIDgKCgoKCiNkZWZpbmUgTE9DS19TSCAx CiNkZWZpbmUgTE9DS19FWCAyCiNkZWZpbmUgTE9DS19OQiA0CgojZGVmaW5lIExPQ0tfVU4g OAoKCgojZGVmaW5lIExPQ0tfTUFORCAzMgojZGVmaW5lIExPQ0tfUkVBRCA2NAojZGVmaW5l IExPQ0tfV1JJVEUgMTI4CiNkZWZpbmUgTE9DS19SVyAxOTIKCgoKCiNkZWZpbmUgRE5fQUND RVNTIDB4MDAwMDAwMDEKI2RlZmluZSBETl9NT0RJRlkgMHgwMDAwMDAwMgojZGVmaW5lIERO X0NSRUFURSAweDAwMDAwMDA0CiNkZWZpbmUgRE5fREVMRVRFIDB4MDAwMDAwMDgKI2RlZmlu ZSBETl9SRU5BTUUgMHgwMDAwMDAxMAojZGVmaW5lIEROX0FUVFJJQiAweDAwMDAwMDIwCiNk ZWZpbmUgRE5fTVVMVElTSE9UIDB4ODAwMDAwMDAKCgoKCgplbnVtIF9fcGlkX3R5cGUKICB7 CiAgICBGX09XTkVSX1RJRCA9IDAsCiAgICBGX09XTkVSX1BJRCwKICAgIEZfT1dORVJfUEdS UCwKICAgIEZfT1dORVJfR0lEID0gRl9PV05FUl9QR1JQCiAgfTsKCgpzdHJ1Y3QgZl9vd25l cl9leAogIHsKICAgIGVudW0gX19waWRfdHlwZSB0eXBlOwogICAgX19waWRfdCBwaWQ7CiAg fTsKCgoKCiNkZWZpbmUgRl9TRUFMX1NFQUwgMHgwMDAxCiNkZWZpbmUgRl9TRUFMX1NIUklO SyAweDAwMDIKI2RlZmluZSBGX1NFQUxfR1JPVyAweDAwMDQKI2RlZmluZSBGX1NFQUxfV1JJ VEUgMHgwMDA4CiNkZWZpbmUgRl9TRUFMX0ZVVFVSRV9XUklURSAweDAwMTAKCiNkZWZpbmUg Rl9TRUFMX0VYRUMgMHgwMDIwCgoKCgojZGVmaW5lIFJXSF9XUklURV9MSUZFX05PVF9TRVQg MAojZGVmaW5lIFJXRl9XUklURV9MSUZFX05PVF9TRVQgUldIX1dSSVRFX0xJRkVfTk9UX1NF VAojZGVmaW5lIFJXSF9XUklURV9MSUZFX05PTkUgMQojZGVmaW5lIFJXSF9XUklURV9MSUZF X1NIT1JUIDIKI2RlZmluZSBSV0hfV1JJVEVfTElGRV9NRURJVU0gMwojZGVmaW5lIFJXSF9X UklURV9MSUZFX0xPTkcgNAojZGVmaW5lIFJXSF9XUklURV9MSUZFX0VYVFJFTUUgNQoKCgoK CiNkZWZpbmUgRkFQUEVORCBPX0FQUEVORAojZGVmaW5lIEZGU1lOQyBPX0ZTWU5DCiNkZWZp bmUgRkFTWU5DIE9fQVNZTkMKI2RlZmluZSBGTk9OQkxPQ0sgT19OT05CTE9DSwojZGVmaW5l IEZOREVMQVkgT19OREVMQVkKCgoKI2RlZmluZSBfX1BPU0lYX0ZBRFZfRE9OVE5FRUQgNAoj ZGVmaW5lIF9fUE9TSVhfRkFEVl9OT1JFVVNFIDUKCgoKI2RlZmluZSBQT1NJWF9GQURWX05P Uk1BTCAwCiNkZWZpbmUgUE9TSVhfRkFEVl9SQU5ET00gMQojZGVmaW5lIFBPU0lYX0ZBRFZf U0VRVUVOVElBTCAyCiNkZWZpbmUgUE9TSVhfRkFEVl9XSUxMTkVFRCAzCiNkZWZpbmUgUE9T SVhfRkFEVl9ET05UTkVFRCBfX1BPU0lYX0ZBRFZfRE9OVE5FRUQKI2RlZmluZSBQT1NJWF9G QURWX05PUkVVU0UgX19QT1NJWF9GQURWX05PUkVVU0UKCgoKCgojZGVmaW5lIFNZTkNfRklM RV9SQU5HRV9XQUlUX0JFRk9SRSAxCgoKI2RlZmluZSBTWU5DX0ZJTEVfUkFOR0VfV1JJVEUg MgoKCiNkZWZpbmUgU1lOQ19GSUxFX1JBTkdFX1dBSVRfQUZURVIgNAoKCgoKI2RlZmluZSBT WU5DX0ZJTEVfUkFOR0VfV1JJVEVfQU5EX1dBSVQgKFNZTkNfRklMRV9SQU5HRV9XUklURSB8 IFNZTkNfRklMRV9SQU5HRV9XQUlUX0JFRk9SRSB8IFNZTkNfRklMRV9SQU5HRV9XQUlUX0FG VEVSKQoKCgoKI2RlZmluZSBTUExJQ0VfRl9NT1ZFIDEKI2RlZmluZSBTUExJQ0VfRl9OT05C TE9DSyAyCgoKI2RlZmluZSBTUExJQ0VfRl9NT1JFIDQKI2RlZmluZSBTUExJQ0VfRl9HSUZU IDgKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9mYWxsb2MuaCIgMSAz IDQKCgojZGVmaW5lIF9GQUxMT0NfSF8gCgojZGVmaW5lIEZBTExPQ19GTF9LRUVQX1NJWkUg MHgwMQojZGVmaW5lIEZBTExPQ19GTF9QVU5DSF9IT0xFIDB4MDIKI2RlZmluZSBGQUxMT0Nf RkxfTk9fSElERV9TVEFMRSAweDA0CiMgMjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xp bnV4L2ZhbGxvYy5oIiAzIDQKI2RlZmluZSBGQUxMT0NfRkxfQ09MTEFQU0VfUkFOR0UgMHgw OAojIDQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9mYWxsb2MuaCIgMyA0CiNk ZWZpbmUgRkFMTE9DX0ZMX1pFUk9fUkFOR0UgMHgxMAojIDYwICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9saW51eC9mYWxsb2MuaCIgMyA0CiNkZWZpbmUgRkFMTE9DX0ZMX0lOU0VSVF9S QU5HRSAweDIwCiMgNzggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L2ZhbGxvYy5o IiAzIDQKI2RlZmluZSBGQUxMT0NfRkxfVU5TSEFSRV9SQU5HRSAweDQwCiMgMzU2ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLWxpbnV4LmgiIDIgMyA0CgoKCnN0cnVj dCBmaWxlX2hhbmRsZQp7CiAgdW5zaWduZWQgaW50IGhhbmRsZV9ieXRlczsKICBpbnQgaGFu ZGxlX3R5cGU7CgogIHVuc2lnbmVkIGNoYXIgZl9oYW5kbGVbMF07Cn07CgoKI2RlZmluZSBN QVhfSEFORExFX1NaIDEyOAoKCgoKCgoKZXh0ZXJuIF9fc3NpemVfdCByZWFkYWhlYWQgKGlu dCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIHNpemVfdCBfX2NvdW50KQogICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgoKZXh0ZXJuIGludCBz eW5jX2ZpbGVfcmFuZ2UgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQsIF9fb2ZmNjRf dCBfX2NvdW50LAogICAgICAgdW5zaWduZWQgaW50IF9fZmxhZ3MpOwoKCgoKCgpleHRlcm4g X19zc2l6ZV90IHZtc3BsaWNlIChpbnQgX19mZG91dCwgY29uc3Qgc3RydWN0IGlvdmVjICpf X2lvdiwKICAgICAgc2l6ZV90IF9fY291bnQsIHVuc2lnbmVkIGludCBfX2ZsYWdzKTsKCgoK CgpleHRlcm4gX19zc2l6ZV90IHNwbGljZSAoaW50IF9fZmRpbiwgX19vZmY2NF90ICpfX29m ZmluLCBpbnQgX19mZG91dCwKICAgIF9fb2ZmNjRfdCAqX19vZmZvdXQsIHNpemVfdCBfX2xl biwKICAgIHVuc2lnbmVkIGludCBfX2ZsYWdzKTsKCgoKCgpleHRlcm4gX19zc2l6ZV90IHRl ZSAoaW50IF9fZmRpbiwgaW50IF9fZmRvdXQsIHNpemVfdCBfX2xlbiwKICAgICAgICB1bnNp Z25lZCBpbnQgX19mbGFncyk7CgoKCgoKCmV4dGVybiBpbnQgZmFsbG9jYXRlIChpbnQgX19m ZCwgaW50IF9fbW9kZSwgX19vZmZfdCBfX29mZnNldCwgX19vZmZfdCBfX2xlbik7CiMgNDI2 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2ZjbnRsLWxpbnV4LmgiIDMgNApleHRl cm4gaW50IGZhbGxvY2F0ZTY0IChpbnQgX19mZCwgaW50IF9fbW9kZSwgX19vZmY2NF90IF9f b2Zmc2V0LAogICBfX29mZjY0X3QgX19sZW4pOwoKCgoKZXh0ZXJuIGludCBuYW1lX3RvX2hh bmRsZV9hdCAoaW50IF9fZGZkLCBjb25zdCBjaGFyICpfX25hbWUsCiAgICAgICAgIHN0cnVj dCBmaWxlX2hhbmRsZSAqX19oYW5kbGUsIGludCAqX19tbnRfaWQsCiAgICAgICAgIGludCBf X2ZsYWdzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwoKCgoK CmV4dGVybiBpbnQgb3Blbl9ieV9oYW5kbGVfYXQgKGludCBfX21vdW50ZGlyZmQsIHN0cnVj dCBmaWxlX2hhbmRsZSAqX19oYW5kbGUsCiAgICAgICAgIGludCBfX2ZsYWdzKTsKCgoKCiMg NjIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvZmNudGwuaCIgMiAzIDQKIyAzNiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwuaCIgMiAzIDQKCgoKCiNkZWZpbmUgX19P UEVOX05FRURTX01PREUob2ZsYWcpICgoKG9mbGFnKSAmIE9fQ1JFQVQpICE9IDAgfHwgKChv ZmxhZykgJiBfX09fVE1QRklMRSkgPT0gX19PX1RNUEZJTEUpCiMgNzggIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290 L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvc3RhdC5oIiAxIDMgNAojIDIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lz YS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdu dS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRz L3N0YXQuaCIgMyA0CiNkZWZpbmUgX0JJVFNfU1RBVF9IIDEKCiMgMSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvYml0cy9zdHJ1Y3Rfc3RhdC5oIiAxIDMgNAojIDI0ICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9iaXRzL3N0cnVjdF9zdGF0LmgiIDMgNAojZGVmaW5lIF9CSVRTX1NU UlVDVF9TVEFUX0ggMQoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9v bGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1 bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy93b3Jk c2l6ZS5oIiAxIDMgNAojIDE4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3dvcmRz aXplLmgiIDMgNAojZGVmaW5lIF9fV09SRFNJWkUgNjQKI2RlZmluZSBfX1dPUkRTSVpFX1RJ TUU2NF9DT01QQVQzMiAwCiMgMjggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRv b2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRy dW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3Ry dWN0X3N0YXQuaCIgMiAzIDQKCgoKCgoKCiNkZWZpbmUgX19maWVsZDY0KHR5cGUsdHlwZTY0 LG5hbWUpIHR5cGUgbmFtZQojIDQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10 b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10 cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0 cnVjdF9zdGF0LmgiIDMgNApzdHJ1Y3Qgc3RhdAogIHsKICAgIF9fZGV2X3Qgc3RfZGV2Owog ICAgX19pbm9fdCBzdF9pbm87CiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19ubGlua190 IHN0X25saW5rOwogICAgX191aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsKICAg IF9fZGV2X3Qgc3RfcmRldjsKICAgIF9fZGV2X3QgX19wYWQxOwogICAgX19vZmZfdCBzdF9z aXplOwogICAgX19ibGtzaXplX3Qgc3RfYmxrc2l6ZTsKICAgIGludCBfX3BhZDI7CiAgICBf X2Jsa2NudF90IHN0X2Jsb2NrczsKCgoKCgoKCiAgICBzdHJ1Y3QgdGltZXNwZWMgc3RfYXRp bTsKICAgIHN0cnVjdCB0aW1lc3BlYyBzdF9tdGltOwogICAgc3RydWN0IHRpbWVzcGVjIHN0 X2N0aW07CiNkZWZpbmUgc3RfYXRpbWUgc3RfYXRpbS50dl9zZWMKI2RlZmluZSBzdF9tdGlt ZSBzdF9tdGltLnR2X3NlYwojZGVmaW5lIHN0X2N0aW1lIHN0X2N0aW0udHZfc2VjCiMgNzkg Ii9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWlu L2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4 LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RydWN0X3N0YXQuaCIgMyA0CiAgICBp bnQgX19nbGliY19yZXNlcnZlZFsyXTsKICB9OwoKI3VuZGVmIF9fZmllbGQ2NAoKCnN0cnVj dCBzdGF0NjQKICB7CiAgICBfX2Rldl90IHN0X2RldjsKICAgIF9faW5vNjRfdCBzdF9pbm87 CiAgICBfX21vZGVfdCBzdF9tb2RlOwogICAgX19ubGlua190IHN0X25saW5rOwogICAgX191 aWRfdCBzdF91aWQ7CiAgICBfX2dpZF90IHN0X2dpZDsKICAgIF9fZGV2X3Qgc3RfcmRldjsK ICAgIF9fZGV2X3QgX19wYWQxOwogICAgX19vZmY2NF90IHN0X3NpemU7CiAgICBfX2Jsa3Np emVfdCBzdF9ibGtzaXplOwogICAgaW50IF9fcGFkMjsKICAgIF9fYmxrY250NjRfdCBzdF9i bG9ja3M7CgoKCgoKCgogICAgc3RydWN0IHRpbWVzcGVjIHN0X2F0aW07CiAgICBzdHJ1Y3Qg dGltZXNwZWMgc3RfbXRpbTsKICAgIHN0cnVjdCB0aW1lc3BlYyBzdF9jdGltOwojIDExNyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdHJ1Y3Rfc3RhdC5oIiAzIDQKICAgIGlu dCBfX2dsaWJjX3Jlc2VydmVkWzJdOwogIH07CgoKCiNkZWZpbmUgX1NUQVRCVUZfU1RfQkxL U0laRSAKI2RlZmluZSBfU1RBVEJVRl9TVF9SREVWIAoKI2RlZmluZSBfU1RBVEJVRl9TVF9O U0VDIAojIDI2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0YXQuaCIgMiAzIDQK CgoKI2RlZmluZSBfX1NfSUZNVCAwMTcwMDAwCgoKI2RlZmluZSBfX1NfSUZESVIgMDA0MDAw MAojZGVmaW5lIF9fU19JRkNIUiAwMDIwMDAwCiNkZWZpbmUgX19TX0lGQkxLIDAwNjAwMDAK I2RlZmluZSBfX1NfSUZSRUcgMDEwMDAwMAojZGVmaW5lIF9fU19JRklGTyAwMDEwMDAwCiNk ZWZpbmUgX19TX0lGTE5LIDAxMjAwMDAKI2RlZmluZSBfX1NfSUZTT0NLIDAxNDAwMDAKCgoK I2RlZmluZSBfX1NfVFlQRUlTTVEoYnVmKSAoKGJ1ZiktPnN0X21vZGUgLSAoYnVmKS0+c3Rf bW9kZSkKI2RlZmluZSBfX1NfVFlQRUlTU0VNKGJ1ZikgKChidWYpLT5zdF9tb2RlIC0gKGJ1 ZiktPnN0X21vZGUpCiNkZWZpbmUgX19TX1RZUEVJU1NITShidWYpICgoYnVmKS0+c3RfbW9k ZSAtIChidWYpLT5zdF9tb2RlKQoKCgojZGVmaW5lIF9fU19JU1VJRCAwNDAwMAojZGVmaW5l IF9fU19JU0dJRCAwMjAwMAojZGVmaW5lIF9fU19JU1ZUWCAwMTAwMAojZGVmaW5lIF9fU19J UkVBRCAwNDAwCiNkZWZpbmUgX19TX0lXUklURSAwMjAwCiNkZWZpbmUgX19TX0lFWEVDIDAx MDAKCgojZGVmaW5lIFVUSU1FX05PVyAoKDFsIDw8IDMwKSAtIDFsKQojZGVmaW5lIFVUSU1F X09NSVQgKCgxbCA8PCAzMCkgLSAybCkKIyA3OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv ZmNudGwuaCIgMiAzIDQKCiNkZWZpbmUgU19JRk1UIF9fU19JRk1UCiNkZWZpbmUgU19JRkRJ UiBfX1NfSUZESVIKI2RlZmluZSBTX0lGQ0hSIF9fU19JRkNIUgojZGVmaW5lIFNfSUZCTEsg X19TX0lGQkxLCiNkZWZpbmUgU19JRlJFRyBfX1NfSUZSRUcKCiNkZWZpbmUgU19JRklGTyBf X1NfSUZJRk8KCgojZGVmaW5lIFNfSUZMTksgX19TX0lGTE5LCgoKI2RlZmluZSBTX0lGU09D SyBfX1NfSUZTT0NLCgoKCgojZGVmaW5lIFNfSVNVSUQgX19TX0lTVUlECiNkZWZpbmUgU19J U0dJRCBfX1NfSVNHSUQKCgoKI2RlZmluZSBTX0lTVlRYIF9fU19JU1ZUWAoKCiNkZWZpbmUg U19JUlVTUiBfX1NfSVJFQUQKI2RlZmluZSBTX0lXVVNSIF9fU19JV1JJVEUKI2RlZmluZSBT X0lYVVNSIF9fU19JRVhFQwoKI2RlZmluZSBTX0lSV1hVIChfX1NfSVJFQUR8X19TX0lXUklU RXxfX1NfSUVYRUMpCgojZGVmaW5lIFNfSVJHUlAgKFNfSVJVU1IgPj4gMykKI2RlZmluZSBT X0lXR1JQIChTX0lXVVNSID4+IDMpCiNkZWZpbmUgU19JWEdSUCAoU19JWFVTUiA+PiAzKQoK I2RlZmluZSBTX0lSV1hHIChTX0lSV1hVID4+IDMpCgojZGVmaW5lIFNfSVJPVEggKFNfSVJH UlAgPj4gMykKI2RlZmluZSBTX0lXT1RIIChTX0lXR1JQID4+IDMpCiNkZWZpbmUgU19JWE9U SCAoU19JWEdSUCA+PiAzKQoKI2RlZmluZSBTX0lSV1hPIChTX0lSV1hHID4+IDMpCiMgMTM3 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKI2RlZmluZSBTRUVLX1NF VCAwCiNkZWZpbmUgU0VFS19DVVIgMQojZGVmaW5lIFNFRUtfRU5EIDIKIyAxNDkgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNAojZGVmaW5lIEFUX0ZEQ1dEIC0xMDAK CgojZGVmaW5lIEFUX1NZTUxJTktfTk9GT0xMT1cgMHgxMDAKI2RlZmluZSBBVF9SRU1PVkVE SVIgMHgyMDAKCiNkZWZpbmUgQVRfU1lNTElOS19GT0xMT1cgMHg0MDAKCiNkZWZpbmUgQVRf Tk9fQVVUT01PVU5UIDB4ODAwCgojZGVmaW5lIEFUX0VNUFRZX1BBVEggMHgxMDAwCiNkZWZp bmUgQVRfU1RBVFhfU1lOQ19UWVBFIDB4NjAwMAojZGVmaW5lIEFUX1NUQVRYX1NZTkNfQVNf U1RBVCAweDAwMDAKI2RlZmluZSBBVF9TVEFUWF9GT1JDRV9TWU5DIDB4MjAwMAojZGVmaW5l IEFUX1NUQVRYX0RPTlRfU1lOQyAweDQwMDAKI2RlZmluZSBBVF9SRUNVUlNJVkUgMHg4MDAw CgojZGVmaW5lIEFUX0VBQ0NFU1MgMHgyMDAKIyAxNzcgIi9ob21lL2NoZW5nbHVsdS93b3Jr L2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQt bGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNs dWRlL2ZjbnRsLmgiIDMgNApleHRlcm4gaW50IGZjbnRsIChpbnQgX19mZCwgaW50IF9fY21k LCAuLi4pOwojIDE4NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CmV4 dGVybiBpbnQgZmNudGw2NCAoaW50IF9fZmQsIGludCBfX2NtZCwgLi4uKTsKIyAyMDkgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNApleHRlcm4gaW50IG9wZW4gKGNv bnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpOwojIDIxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwu aCIgMyA0CmV4dGVybiBpbnQgb3BlbjY0IChjb25zdCBjaGFyICpfX2ZpbGUsIGludCBfX29m bGFnLCAuLi4pIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyAyMzMgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNApleHRlcm4gaW50IG9wZW5hdCAo aW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikKICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CiMgMjQ0ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0ZXJuIGludCBvcGVuYXQ2NCAoaW50IF9fZmQs IGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fb2ZsYWcsIC4uLikKICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDIpKSk7CiMgMjU1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9mY250bC5oIiAzIDQKZXh0ZXJuIGludCBjcmVhdCAoY29uc3QgY2hhciAqX19maWxlLCBt b2RlX3QgX19tb2RlKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMjY1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0ZXJuIGludCBjcmVh dDY0IChjb25zdCBjaGFyICpfX2ZpbGUsIG1vZGVfdCBfX21vZGUpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKTsKIyAzMDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2Zj bnRsLmgiIDMgNApleHRlcm4gaW50IHBvc2l4X2ZhZHZpc2UgKGludCBfX2ZkLCBvZmZfdCBf X29mZnNldCwgb2ZmX3QgX19sZW4sCiAgICAgaW50IF9fYWR2aXNlKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpOwojIDMxMyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvZmNudGwuaCIgMyA0CmV4dGVybiBpbnQgcG9zaXhfZmFkdmlzZTY0IChpbnQgX19m ZCwgb2ZmNjRfdCBfX29mZnNldCwgb2ZmNjRfdCBfX2xlbiwKICAgICAgIGludCBfX2Fkdmlz ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKIyAzMjMgIi9o b21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2lu c3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9zeXNyb290L3Vzci9pbmNsdWRlL2ZjbnRsLmgiIDMgNApleHRlcm4gaW50IHBvc2l4X2Zh bGxvY2F0ZSAoaW50IF9fZmQsIG9mZl90IF9fb2Zmc2V0LCBvZmZfdCBfX2xlbik7CiMgMzM0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9mY250bC5oIiAzIDQKZXh0ZXJuIGludCBwb3Np eF9mYWxsb2NhdGU2NCAoaW50IF9fZmQsIG9mZjY0X3QgX19vZmZzZXQsIG9mZjY0X3QgX19s ZW4pOwojIDM0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25l d190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdh cmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvZmNudGwuaCIgMyA0CgojIDIx NCAic3lzdGVtLmgiIDIKIyAyNDIgInN5c3RlbS5oIgojdW5kZWYgTUlOCiN1bmRlZiBNQVgK I2RlZmluZSBNSU4oWCxZKSAoKFgpIDwgKFkpID8gKFgpIDogKFkpKQojZGVmaW5lIE1BWChY LFkpICgoWCkgPiAoWSkgPyAoWCkgOiAoWSkpCgoKI2RlZmluZSBDRUlMKHgseSkgKCgoeCkg KyAoeSkgLSAxKSAvICh5KSkKIyAzMTIgInN5c3RlbS5oIgojIDEgIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL21hbGxvYy5oIiAxIDMgNAojIDIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9tYWxsb2MuaCIgMyA0CiNkZWZpbmUgX01BTExPQ19IIDEKCgojIDEgIi9ob21lL2NoZW5n bHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9v bmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251 LzE0LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDI1ICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9tYWxsb2MuaCIgMiAzIDQKCgoKCgoKI2RlZmluZSBfX01BTExPQ19IT09LX1ZP TEFUSUxFIHZvbGF0aWxlCiNkZWZpbmUgX19NQUxMT0NfREVQUkVDQVRFRCBfX2F0dHJpYnV0 ZV9kZXByZWNhdGVkX18KCgoKCgoKZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IF9fc2l6 ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19tYWxsb2NfXykpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9f ICgxKSkpIDsKCgpleHRlcm4gdm9pZCAqY2FsbG9jIChzaXplX3QgX19ubWVtYiwgc2l6ZV90 IF9fc2l6ZSkKX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0 dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX2FsbG9jX3NpemVf XyAoMSwgMikpKSA7CgoKCgoKCmV4dGVybiB2b2lkICpyZWFsbG9jICh2b2lkICpfX3B0ciwg c2l6ZV90IF9fc2l6ZSkKX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18p KSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIF9fYXR0cmlidXRl X18gKChfX2FsbG9jX3NpemVfXyAoMikpKTsKCgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2Nh cnJheSAodm9pZCAqX19wdHIsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBfX2F0dHJpYnV0ZV9fICgoX19hbGxvY19zaXpl X18gKDIsIDMpKSkKICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoX19idWlsdGluX2Zy ZWUsIDEpKSk7CgoKZXh0ZXJuIHZvaWQgZnJlZSAodm9pZCAqX19wdHIpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbWFsaWdu IChzaXplX3QgX19hbGlnbm1lbnQsIHNpemVfdCBfX3NpemUpCiAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykp IF9fYXR0cmlidXRlX18gKChfX2FsbG9jX2FsaWduX18gKDEpKSkKICBfX2F0dHJpYnV0ZV9f ICgoX19hbGxvY19zaXplX18gKDIpKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKF9f YnVpbHRpbl9mcmVlLCAxKSkpOwoKCmV4dGVybiB2b2lkICp2YWxsb2MgKHNpemVfdCBfX3Np emUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbWFsbG9jX18pKQogICAgIF9fYXR0cmlidXRlX18gKChfX2FsbG9jX3NpemVf XyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoX19idWlsdGluX2ZyZWUsIDEp KSk7CgoKCmV4dGVybiB2b2lkICpwdmFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxv Y19fKSkKICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoX19idWlsdGluX2ZyZWUsIDEp KSk7CgoKCnN0cnVjdCBtYWxsaW5mbwp7CiAgaW50IGFyZW5hOwogIGludCBvcmRibGtzOwog IGludCBzbWJsa3M7CiAgaW50IGhibGtzOwogIGludCBoYmxraGQ7CiAgaW50IHVzbWJsa3M7 CiAgaW50IGZzbWJsa3M7CiAgaW50IHVvcmRibGtzOwogIGludCBmb3JkYmxrczsKICBpbnQg a2VlcGNvc3Q7Cn07CgoKCgpzdHJ1Y3QgbWFsbGluZm8yCnsKICBzaXplX3QgYXJlbmE7CiAg c2l6ZV90IG9yZGJsa3M7CiAgc2l6ZV90IHNtYmxrczsKICBzaXplX3QgaGJsa3M7CiAgc2l6 ZV90IGhibGtoZDsKICBzaXplX3QgdXNtYmxrczsKICBzaXplX3QgZnNtYmxrczsKICBzaXpl X3QgdW9yZGJsa3M7CiAgc2l6ZV90IGZvcmRibGtzOwogIHNpemVfdCBrZWVwY29zdDsKfTsK CgpleHRlcm4gc3RydWN0IG1hbGxpbmZvIG1hbGxpbmZvICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0 ZWRfXykpOwoKCmV4dGVybiBzdHJ1Y3QgbWFsbGluZm8yIG1hbGxpbmZvMiAodm9pZCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKI2RlZmluZSBNX01Y RkFTVCAxCgoKI2RlZmluZSBNX05MQkxLUyAyCgoKI2RlZmluZSBNX0dSQUlOIDMKCgojZGVm aW5lIE1fS0VFUCA0CgoKCiNkZWZpbmUgTV9UUklNX1RIUkVTSE9MRCAtMQojZGVmaW5lIE1f VE9QX1BBRCAtMgojZGVmaW5lIE1fTU1BUF9USFJFU0hPTEQgLTMKI2RlZmluZSBNX01NQVBf TUFYIC00CiNkZWZpbmUgTV9DSEVDS19BQ1RJT04gLTUKI2RlZmluZSBNX1BFUlRVUkIgLTYK I2RlZmluZSBNX0FSRU5BX1RFU1QgLTcKI2RlZmluZSBNX0FSRU5BX01BWCAtOAoKCmV4dGVy biBpbnQgbWFsbG9wdCAoaW50IF9fcGFyYW0sIGludCBfX3ZhbCkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKZXh0ZXJuIGludCBtYWxsb2NfdHJpbSAo c2l6ZV90IF9fcGFkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykp OwoKCgpleHRlcm4gc2l6ZV90IG1hbGxvY191c2FibGVfc2l6ZSAodm9pZCAqX19wdHIpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKZXh0ZXJuIHZvaWQg bWFsbG9jX3N0YXRzICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xl YWZfXykpOwoKCmV4dGVybiBpbnQgbWFsbG9jX2luZm8gKGludCBfX29wdGlvbnMsIEZJTEUg Kl9fZnApIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKIyAz MTMgInN5c3RlbS5oIiAyCiMgMzY5ICJzeXN0ZW0uaCIKI2RlZmluZSBIQVZFX0RFU0lHTkFU RURfSU5JVElBTElaRVJTICgoR0NDX1ZFUlNJT04gPj0gMjAwNykgfHwgKF9fU1REQ19WRVJT SU9OX18gPj0gMTk5OTAxTCkpCgoKCgoKI2RlZmluZSBIQVZFX19CT09MICgoR0NDX1ZFUlNJ T04gPj0gMzAwMCkgfHwgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCkpCgoKCgoKIyAx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFp bi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51 eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAxIDMgNAojIDIzICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKI2RlZmluZSBfU1lTX1NUQVRf SCAxCiMgOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNAoKCiMg MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hh aW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGlu dXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGF0LmgiIDEgMyA0CiMgMTAyICIv aG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9p bnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1n bnUvc3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAyIDMgNAoKCiNkZWZpbmUgU19J Rk1UIF9fU19JRk1UCiNkZWZpbmUgU19JRkRJUiBfX1NfSUZESVIKI2RlZmluZSBTX0lGQ0hS IF9fU19JRkNIUgojZGVmaW5lIFNfSUZCTEsgX19TX0lGQkxLCiNkZWZpbmUgU19JRlJFRyBf X1NfSUZSRUcKCiNkZWZpbmUgU19JRklGTyBfX1NfSUZJRk8KCgojZGVmaW5lIFNfSUZMTksg X19TX0lGTE5LCgoKCiNkZWZpbmUgU19JRlNPQ0sgX19TX0lGU09DSwoKCgoKCiNkZWZpbmUg X19TX0lTVFlQRShtb2RlLG1hc2spICgoKG1vZGUpICYgX19TX0lGTVQpID09IChtYXNrKSkK CiNkZWZpbmUgU19JU0RJUihtb2RlKSBfX1NfSVNUWVBFKChtb2RlKSwgX19TX0lGRElSKQoj ZGVmaW5lIFNfSVNDSFIobW9kZSkgX19TX0lTVFlQRSgobW9kZSksIF9fU19JRkNIUikKI2Rl ZmluZSBTX0lTQkxLKG1vZGUpIF9fU19JU1RZUEUoKG1vZGUpLCBfX1NfSUZCTEspCiNkZWZp bmUgU19JU1JFRyhtb2RlKSBfX1NfSVNUWVBFKChtb2RlKSwgX19TX0lGUkVHKQoKI2RlZmlu ZSBTX0lTRklGTyhtb2RlKSBfX1NfSVNUWVBFKChtb2RlKSwgX19TX0lGSUZPKQoKCiNkZWZp bmUgU19JU0xOSyhtb2RlKSBfX1NfSVNUWVBFKChtb2RlKSwgX19TX0lGTE5LKQojIDE0MiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4v aW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgt Z251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CiNkZWZpbmUgU19JU1NP Q0sobW9kZSkgX19TX0lTVFlQRSgobW9kZSksIF9fU19JRlNPQ0spCiMgMTUyICIvaG9tZS9j aGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxs L2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lz cm9vdC91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKI2RlZmluZSBTX1RZUEVJU01RKGJ1 ZikgX19TX1RZUEVJU01RKGJ1ZikKI2RlZmluZSBTX1RZUEVJU1NFTShidWYpIF9fU19UWVBF SVNTRU0oYnVmKQojZGVmaW5lIFNfVFlQRUlTU0hNKGJ1ZikgX19TX1RZUEVJU1NITShidWYp CgoKCgoKI2RlZmluZSBTX0lTVUlEIF9fU19JU1VJRAojZGVmaW5lIFNfSVNHSUQgX19TX0lT R0lECgoKCiNkZWZpbmUgU19JU1ZUWCBfX1NfSVNWVFgKCgojZGVmaW5lIFNfSVJVU1IgX19T X0lSRUFECiNkZWZpbmUgU19JV1VTUiBfX1NfSVdSSVRFCiNkZWZpbmUgU19JWFVTUiBfX1Nf SUVYRUMKCiNkZWZpbmUgU19JUldYVSAoX19TX0lSRUFEfF9fU19JV1JJVEV8X19TX0lFWEVD KQoKCiNkZWZpbmUgU19JUkVBRCBTX0lSVVNSCiNkZWZpbmUgU19JV1JJVEUgU19JV1VTUgoj ZGVmaW5lIFNfSUVYRUMgU19JWFVTUgoKCiNkZWZpbmUgU19JUkdSUCAoU19JUlVTUiA+PiAz KQojZGVmaW5lIFNfSVdHUlAgKFNfSVdVU1IgPj4gMykKI2RlZmluZSBTX0lYR1JQIChTX0lY VVNSID4+IDMpCgojZGVmaW5lIFNfSVJXWEcgKFNfSVJXWFUgPj4gMykKCiNkZWZpbmUgU19J Uk9USCAoU19JUkdSUCA+PiAzKQojZGVmaW5lIFNfSVdPVEggKFNfSVdHUlAgPj4gMykKI2Rl ZmluZSBTX0lYT1RIIChTX0lYR1JQID4+IDMpCgojZGVmaW5lIFNfSVJXWE8gKFNfSVJXWEcg Pj4gMykKCgoKCiNkZWZpbmUgQUNDRVNTUEVSTVMgKFNfSVJXWFV8U19JUldYR3xTX0lSV1hP KQojZGVmaW5lIEFMTFBFUk1TIChTX0lTVUlEfFNfSVNHSUR8U19JU1ZUWHxTX0lSV1hVfFNf SVJXWEd8U19JUldYTykKI2RlZmluZSBERUZGSUxFTU9ERSAoU19JUlVTUnxTX0lXVVNSfFNf SVJHUlB8U19JV0dSUHxTX0lST1RIfFNfSVdPVEgpCgojZGVmaW5lIFNfQkxLU0laRSA1MTIK CgoKCgpleHRlcm4gaW50IHN0YXQgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAog ICBzdHJ1Y3Qgc3RhdCAqX19yZXN0cmljdCBfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIp KSk7CgoKCmV4dGVybiBpbnQgZnN0YXQgKGludCBfX2ZkLCBzdHJ1Y3Qgc3RhdCAqX19idWYp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgyKSkpOwojIDI0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9v bmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51 eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUv c3lzL3N0YXQuaCIgMyA0CmV4dGVybiBpbnQgc3RhdDY0IChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fZmlsZSwKICAgICBzdHJ1Y3Qgc3RhdDY0ICpfX3Jlc3RyaWN0IF9fYnVmKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMikpKTsKZXh0ZXJuIGludCBmc3RhdDY0IChpbnQgX19mZCwgc3Ry dWN0IHN0YXQ2NCAqX19idWYpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVh Zl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwojIDI2NCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3N0YXQuaCIgMyA0CmV4dGVybiBpbnQgZnN0YXRhdCAo aW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxlLAogICAgICBzdHJ1Y3Qg c3RhdCAqX19yZXN0cmljdCBfX2J1ZiwgaW50IF9fZmxhZykKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMiwgMykpKTsKIyAyOTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xj aGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5r L2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL3N5cy9zdGF0Lmgi IDMgNApleHRlcm4gaW50IGZzdGF0YXQ2NCAoaW50IF9fZmQsIGNvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19maWxlLAogICAgICAgIHN0cnVjdCBzdGF0NjQgKl9fcmVzdHJpY3QgX19idWYs IGludCBfX2ZsYWcpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFm X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSk7CiMgMzEzICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKZXh0ZXJuIGludCBsc3RhdCAo Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGUsCiAgICBzdHJ1Y3Qgc3RhdCAqX19yZXN0 cmljdCBfX2J1ZikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgMzM4ICIvaG9tZS9jaGVu Z2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xv b25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9v dC91c3IvaW5jbHVkZS9zeXMvc3RhdC5oIiAzIDQKZXh0ZXJuIGludCBsc3RhdDY0IChjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZSwKICAgICAgc3RydWN0IHN0YXQ2NCAqX19yZXN0 cmljdCBfX2J1ZikKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKIyAzNTIgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL3N5cy9zdGF0LmgiIDMgNApleHRlcm4gaW50IGNobW9kIChj b25zdCBjaGFyICpfX2ZpbGUsIF9fbW9kZV90IF9fbW9kZSkKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IGxjaG1vZCAoY29uc3QgY2hhciAqX19maWxlLCBf X21vZGVfdCBfX21vZGUpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19s ZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4g aW50IGZjaG1vZCAoaW50IF9fZmQsIF9fbW9kZV90IF9fbW9kZSkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fICwgX19sZWFmX18pKTsKCgoKCgpleHRlcm4gaW50IGZjaG1vZGF0IChp bnQgX19mZCwgY29uc3QgY2hhciAqX19maWxlLCBfX21vZGVfdCBfX21vZGUsCiAgICAgICBp bnQgX19mbGFnKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpIDsKCgoKCgoKZXh0ZXJuIF9f bW9kZV90IHVtYXNrIChfX21vZGVfdCBfX21hc2spIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXyAsIF9fbGVhZl9fKSk7CgoKCgpleHRlcm4gX19tb2RlX3QgZ2V0dW1hc2sgKHZvaWQp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSk7CgoKCmV4dGVybiBp bnQgbWtkaXIgKGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKQogICAgIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4dGVybiBpbnQgbWtkaXJhdCAoaW50IF9fZmQs IGNvbnN0IGNoYXIgKl9fcGF0aCwgX19tb2RlX3QgX19tb2RlKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXyAsIF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgyKSkpOwoKCgoKCgpleHRlcm4gaW50IG1rbm9kIChjb25zdCBjaGFyICpfX3BhdGgs IF9fbW9kZV90IF9fbW9kZSwgX19kZXZfdCBfX2RldikKICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKCgoKCgpleHRlcm4gaW50IG1rbm9kYXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpf X3BhdGgsIF9fbW9kZV90IF9fbW9kZSwKICAgICAgX19kZXZfdCBfX2RldikgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDIpKSk7CgoKCgoKZXh0ZXJuIGludCBta2ZpZm8gKGNvbnN0IGNoYXIgKl9fcGF0 aCwgX19tb2RlX3QgX19tb2RlKQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXyAs IF9fbGVhZl9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCmV4 dGVybiBpbnQgbWtmaWZvYXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3BhdGgsIF9fbW9k ZV90IF9fbW9kZSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZf XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKCgoKZXh0ZXJuIGlu dCB1dGltZW5zYXQgKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX3BhdGgsCiAgICAgICAgY29u c3Qgc3RydWN0IHRpbWVzcGVjIF9fdGltZXNbMl0sCiAgICAgICAgaW50IF9fZmxhZ3MpCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fICwgX19sZWFmX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDIpKSk7CiMgNDUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9zeXMvc3RhdC5oIiAzIDQKZXh0ZXJuIGludCBmdXRpbWVucyAoaW50IF9fZmQsIGNvbnN0 IHN0cnVjdCB0aW1lc3BlYyBfX3RpbWVzWzJdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18gLCBfX2xlYWZfXykpOwojIDQ2NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2Et dG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUt dHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvc3lzL3N0 YXQuaCIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGF0eC5oIiAx IDMgNAojIDMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0YXR4LmgiIDMgNAoj IDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNo YWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxp bnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMSAzIDQKCgojZGVm aW5lIF9MSU5VWF9TVEFUX0ggCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4 L3R5cGVzLmgiIDEgMyA0CgoKI2RlZmluZSBfTElOVVhfVFlQRVNfSCAKCiMgMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFs bC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5 c3Jvb3QvdXNyL2luY2x1ZGUvYXNtL3R5cGVzLmgiIDEgMyA0CiMgMSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvdHlwZXMuaCIgMSAzIDQKCgojZGVmaW5lIF9BU01f R0VORVJJQ19UWVBFU19IIAoKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNh LXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251 LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2FzbS1n ZW5lcmljL2ludC1sbDY0LmgiIDEgMyA0CiMgMTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2FzbS1nZW5lcmljL2ludC1sbDY0LmgiIDMgNAojZGVmaW5lIF9BU01fR0VORVJJQ19JTlRf TEw2NF9IIAoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hc20vYml0c3Blcmxvbmcu aCIgMSAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4v bmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29u Z2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRz cGVybG9uZy5oIiAxIDMgNAoKCiNkZWZpbmUgX19BU01fR0VORVJJQ19CSVRTX1BFUl9MT05H IAojIDE0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRzcGVybG9u Zy5oIiAzIDQKI2RlZmluZSBfX0JJVFNfUEVSX0xPTkcgKF9fQ0hBUl9CSVRfXyAqIF9fU0la RU9GX0xPTkdfXykKIyAyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hh aW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9s b29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9hc20vYml0c3Blcmxv bmcuaCIgMiAzIDQKIyAxMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMv aW50LWxsNjQuaCIgMiAzIDQKCgoKCgoKCnR5cGVkZWYgX19zaWduZWRfXyBjaGFyIF9fczg7 CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3U4OwoKdHlwZWRlZiBfX3NpZ25lZF9fIHNob3J0 IF9fczE2Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdTE2OwoKdHlwZWRlZiBfX3NpZ25l ZF9fIGludCBfX3MzMjsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CgoKX19leHRlbnNp b25fXyB0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIF9fczY0OwpfX2V4dGVuc2lvbl9f IHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwojIDggIi9ob21lL2NoZW5nbHVs dS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdh cmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vz ci9pbmNsdWRlL2FzbS1nZW5lcmljL3R5cGVzLmgiIDIgMyA0CiMgMiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29u Z2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3Qv dXNyL2luY2x1ZGUvYXNtL3R5cGVzLmgiIDIgMyA0CiMgNiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2 NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2lu Y2x1ZGUvbGludXgvdHlwZXMuaCIgMiAzIDQKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAxIDMgNAoKCiNkZWZpbmUgX0xJTlVYX1BPU0lY X1RZUEVTX0ggCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFp bi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xv b25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3N0ZGRlZi5o IiAxIDMgNAoKCiNkZWZpbmUgX0xJTlVYX1NURERFRl9IIAojIDI2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25n YXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91 c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMyA0CiNkZWZpbmUgX19zdHJ1Y3RfZ3JvdXAo VEFHLE5BTUUsQVRUUlMsTUVNQkVSUy4uLikgdW5pb24geyBzdHJ1Y3QgeyBNRU1CRVJTIH0g QVRUUlM7IHN0cnVjdCBUQUcgeyBNRU1CRVJTIH0gQVRUUlMgTkFNRTsgfQojIDQ3ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9zdGRkZWYuaCIgMyA0CiNkZWZpbmUgX19ERUNM QVJFX0ZMRVhfQVJSQVkoVFlQRSxOQU1FKSBzdHJ1Y3QgeyBzdHJ1Y3QgeyB9IF9fZW1wdHlf ICMjIE5BTUU7IFRZUEUgTkFNRVtdOyB9CgoKCgoKCgojZGVmaW5lIF9fY291bnRlZF9ieSht KSAKIyA2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rv b2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2 NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5oIiAy IDMgNAojIDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3 X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9wb3NpeF90eXBlcy5o IiAzIDQKI3VuZGVmIF9fRkRfU0VUU0laRQojZGVmaW5lIF9fRkRfU0VUU0laRSAxMDI0Cgp0 eXBlZGVmIHN0cnVjdCB7CiB1bnNpZ25lZCBsb25nIGZkc19iaXRzWzEwMjQgLyAoOCAqIHNp emVvZihsb25nKSldOwp9IF9fa2VybmVsX2ZkX3NldDsKCgp0eXBlZGVmIHZvaWQgKCpfX2tl cm5lbF9zaWdoYW5kbGVyX3QpKGludCk7CgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfa2V5X3Q7 CnR5cGVkZWYgaW50IF9fa2VybmVsX21xZF90OwoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9hc20vcG9zaXhfdHlwZXMuaCIgMSAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9hc20tZ2VuZXJpYy9wb3NpeF90eXBlcy5oIiAxIDMgNAoKCiNkZWZpbmUgX19BU01f R0VORVJJQ19QT1NJWF9UWVBFU19IIAoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9h c20vYml0c3BlcmxvbmcuaCIgMSAzIDQKIyA2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9h c20tZ2VuZXJpYy9wb3NpeF90eXBlcy5oIiAyIDMgNAojIDE1ICIvaG9tZS9jaGVuZ2x1bHUv d29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJj aDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3Iv aW5jbHVkZS9hc20tZ2VuZXJpYy9wb3NpeF90eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIF9f a2VybmVsX2xvbmdfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fa2VybmVsX3Vsb25nX3Q7 CgoKCnR5cGVkZWYgX19rZXJuZWxfdWxvbmdfdCBfX2tlcm5lbF9pbm9fdDsKCgoKdHlwZWRl ZiB1bnNpZ25lZCBpbnQgX19rZXJuZWxfbW9kZV90OwoKCgp0eXBlZGVmIGludCBfX2tlcm5l bF9waWRfdDsKCgoKdHlwZWRlZiBpbnQgX19rZXJuZWxfaXBjX3BpZF90OwoKCgp0eXBlZGVm IHVuc2lnbmVkIGludCBfX2tlcm5lbF91aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19r ZXJuZWxfZ2lkX3Q7CgoKCnR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9fa2VybmVsX3N1c2Vj b25kc190OwoKCgp0eXBlZGVmIGludCBfX2tlcm5lbF9kYWRkcl90OwoKCgp0eXBlZGVmIHVu c2lnbmVkIGludCBfX2tlcm5lbF91aWQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX2tl cm5lbF9naWQzMl90OwoKCgp0eXBlZGVmIF9fa2VybmVsX3VpZF90IF9fa2VybmVsX29sZF91 aWRfdDsKdHlwZWRlZiBfX2tlcm5lbF9naWRfdCBfX2tlcm5lbF9vbGRfZ2lkX3Q7CgoKCnR5 cGVkZWYgdW5zaWduZWQgaW50IF9fa2VybmVsX29sZF9kZXZfdDsKIyA3MiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYXNtLWdlbmVyaWMvcG9zaXhfdHlwZXMuaCIgMyA0CnR5cGVkZWYg X19rZXJuZWxfdWxvbmdfdCBfX2tlcm5lbF9zaXplX3Q7CnR5cGVkZWYgX19rZXJuZWxfbG9u Z190IF9fa2VybmVsX3NzaXplX3Q7CnR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9fa2VybmVs X3B0cmRpZmZfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKIGludCB2YWxbMl07Cn0gX19rZXJu ZWxfZnNpZF90OwoKCgoKCnR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9fa2VybmVsX29mZl90 Owp0eXBlZGVmIGxvbmcgbG9uZyBfX2tlcm5lbF9sb2ZmX3Q7CnR5cGVkZWYgX19rZXJuZWxf bG9uZ190IF9fa2VybmVsX29sZF90aW1lX3Q7CnR5cGVkZWYgX19rZXJuZWxfbG9uZ190IF9f a2VybmVsX3RpbWVfdDsKdHlwZWRlZiBsb25nIGxvbmcgX19rZXJuZWxfdGltZTY0X3Q7CnR5 cGVkZWYgX19rZXJuZWxfbG9uZ190IF9fa2VybmVsX2Nsb2NrX3Q7CnR5cGVkZWYgaW50IF9f a2VybmVsX3RpbWVyX3Q7CnR5cGVkZWYgaW50IF9fa2VybmVsX2Nsb2NraWRfdDsKdHlwZWRl ZiBjaGFyICogX19rZXJuZWxfY2FkZHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX2tl cm5lbF91aWQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fa2VybmVsX2dpZDE2X3Q7 CiMgMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29s Y2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQt bGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYXNtL3Bvc2l4X3R5cGVzLmgiIDIgMyA0 CiMgMzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9v bGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3Bvc2l4X3R5cGVzLmgiIDIg MyA0CiMgMTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3R5cGVzLmgiIDIgMyA0 CgoKdHlwZWRlZiBfX3NpZ25lZF9fIF9faW50MTI4IF9fczEyOCBfX2F0dHJpYnV0ZV9fKChh bGlnbmVkKDE2KSkpOwp0eXBlZGVmIHVuc2lnbmVkIF9faW50MTI4IF9fdTEyOCBfX2F0dHJp YnV0ZV9fKChhbGlnbmVkKDE2KSkpOwojIDI1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29u Z2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4 LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9s aW51eC90eXBlcy5oIiAzIDQKI2RlZmluZSBfX2JpdHdpc2UgCgoKCiNkZWZpbmUgX19iaXR3 aXNlX18gX19iaXR3aXNlCgp0eXBlZGVmIF9fdTE2IF9fbGUxNjsKdHlwZWRlZiBfX3UxNiBf X2JlMTY7CnR5cGVkZWYgX191MzIgX19sZTMyOwp0eXBlZGVmIF9fdTMyIF9fYmUzMjsKdHlw ZWRlZiBfX3U2NCBfX2xlNjQ7CnR5cGVkZWYgX191NjQgX19iZTY0OwoKdHlwZWRlZiBfX3Ux NiBfX3N1bTE2Owp0eXBlZGVmIF9fdTMyIF9fd3N1bTsKIyA1MCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2Fy Y2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNy L2luY2x1ZGUvbGludXgvdHlwZXMuaCIgMyA0CiNkZWZpbmUgX19hbGlnbmVkX3U2NCBfX3U2 NCBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSkKI2RlZmluZSBfX2FsaWduZWRfYmU2NCBf X2JlNjQgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpCiNkZWZpbmUgX19hbGlnbmVkX2xl NjQgX19sZTY0IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKQoKdHlwZWRlZiB1bnNpZ25l ZCBfX3BvbGxfdDsKIyA2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hh aW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9s b29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9zdGF0Lmgi IDIgMyA0CiMgNTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9u ZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25n YXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMyA0 CnN0cnVjdCBzdGF0eF90aW1lc3RhbXAgewogX19zNjQgdHZfc2VjOwogX191MzIgdHZfbnNl YzsKIF9fczMyIF9fcmVzZXJ2ZWQ7Cn07CiMgOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2xpbnV4L3N0YXQuaCIgMyA0CnN0cnVjdCBzdGF0eCB7CgogX191MzIgc3R4X21hc2s7CiBf X3UzMiBzdHhfYmxrc2l6ZTsKIF9fdTY0IHN0eF9hdHRyaWJ1dGVzOwoKIF9fdTMyIHN0eF9u bGluazsKIF9fdTMyIHN0eF91aWQ7CiBfX3UzMiBzdHhfZ2lkOwogX191MTYgc3R4X21vZGU7 CiBfX3UxNiBfX3NwYXJlMFsxXTsKCiBfX3U2NCBzdHhfaW5vOwogX191NjQgc3R4X3NpemU7 CiBfX3U2NCBzdHhfYmxvY2tzOwogX191NjQgc3R4X2F0dHJpYnV0ZXNfbWFzazsKCiBzdHJ1 Y3Qgc3RhdHhfdGltZXN0YW1wIHN0eF9hdGltZTsKIHN0cnVjdCBzdGF0eF90aW1lc3RhbXAg c3R4X2J0aW1lOwogc3RydWN0IHN0YXR4X3RpbWVzdGFtcCBzdHhfY3RpbWU7CiBzdHJ1Y3Qg c3RhdHhfdGltZXN0YW1wIHN0eF9tdGltZTsKCiBfX3UzMiBzdHhfcmRldl9tYWpvcjsKIF9f dTMyIHN0eF9yZGV2X21pbm9yOwogX191MzIgc3R4X2Rldl9tYWpvcjsKIF9fdTMyIHN0eF9k ZXZfbWlub3I7CgogX191NjQgc3R4X21udF9pZDsKIF9fdTMyIHN0eF9kaW9fbWVtX2FsaWdu OwogX191MzIgc3R4X2Rpb19vZmZzZXRfYWxpZ247CgogX191NjQgX19zcGFyZTNbMTJdOwoK fTsKIyAxNDIgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdf dG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJj aDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L3N0YXQuaCIgMyA0CiNk ZWZpbmUgU1RBVFhfVFlQRSAweDAwMDAwMDAxVQojZGVmaW5lIFNUQVRYX01PREUgMHgwMDAw MDAwMlUKI2RlZmluZSBTVEFUWF9OTElOSyAweDAwMDAwMDA0VQojZGVmaW5lIFNUQVRYX1VJ RCAweDAwMDAwMDA4VQojZGVmaW5lIFNUQVRYX0dJRCAweDAwMDAwMDEwVQojZGVmaW5lIFNU QVRYX0FUSU1FIDB4MDAwMDAwMjBVCiNkZWZpbmUgU1RBVFhfTVRJTUUgMHgwMDAwMDA0MFUK I2RlZmluZSBTVEFUWF9DVElNRSAweDAwMDAwMDgwVQojZGVmaW5lIFNUQVRYX0lOTyAweDAw MDAwMTAwVQojZGVmaW5lIFNUQVRYX1NJWkUgMHgwMDAwMDIwMFUKI2RlZmluZSBTVEFUWF9C TE9DS1MgMHgwMDAwMDQwMFUKI2RlZmluZSBTVEFUWF9CQVNJQ19TVEFUUyAweDAwMDAwN2Zm VQojZGVmaW5lIFNUQVRYX0JUSU1FIDB4MDAwMDA4MDBVCiNkZWZpbmUgU1RBVFhfTU5UX0lE IDB4MDAwMDEwMDBVCiNkZWZpbmUgU1RBVFhfRElPQUxJR04gMHgwMDAwMjAwMFUKCiNkZWZp bmUgU1RBVFhfX1JFU0VSVkVEIDB4ODAwMDAwMDBVCgoKCgoKCiNkZWZpbmUgU1RBVFhfQUxM IDB4MDAwMDBmZmZVCiMgMTgxICIvaG9tZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29s Y2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVu ay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9zdGF0 LmgiIDMgNAojZGVmaW5lIFNUQVRYX0FUVFJfQ09NUFJFU1NFRCAweDAwMDAwMDA0CiNkZWZp bmUgU1RBVFhfQVRUUl9JTU1VVEFCTEUgMHgwMDAwMDAxMAojZGVmaW5lIFNUQVRYX0FUVFJf QVBQRU5EIDB4MDAwMDAwMjAKI2RlZmluZSBTVEFUWF9BVFRSX05PRFVNUCAweDAwMDAwMDQw CiNkZWZpbmUgU1RBVFhfQVRUUl9FTkNSWVBURUQgMHgwMDAwMDgwMAojZGVmaW5lIFNUQVRY X0FUVFJfQVVUT01PVU5UIDB4MDAwMDEwMDAKI2RlZmluZSBTVEFUWF9BVFRSX01PVU5UX1JP T1QgMHgwMDAwMjAwMAojZGVmaW5lIFNUQVRYX0FUVFJfVkVSSVRZIDB4MDAxMDAwMDAKI2Rl ZmluZSBTVEFUWF9BVFRSX0RBWCAweDAwMjAwMDAwCiMgMzIgIi9ob21lL2NoZW5nbHVsdS93 b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNo NjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9p bmNsdWRlL2JpdHMvc3RhdHguaCIgMiAzIDQKCiNkZWZpbmUgX19zdGF0eF90aW1lc3RhbXBf ZGVmaW5lZCAxCiNkZWZpbmUgX19zdGF0eF9kZWZpbmVkIDEKCgoKCiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9s b29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jv b3QvdXNyL2luY2x1ZGUvYml0cy9zdGF0eC1nZW5lcmljLmgiIDEgMyA0CiMgMjUgIi9ob21l L2NoZW5nbHVsdS93b3JrL2xvb25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3Rh bGwvbG9vbmdhcmNoNjQtbGludXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9z eXNyb290L3Vzci9pbmNsdWRlL2JpdHMvc3RhdHgtZ2VuZXJpYy5oIiAzIDQKIyAxICIvaG9t ZS9jaGVuZ2x1bHUvd29yay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0 YWxsL2xvb25nYXJjaDY0LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUv c3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3N0cnVjdF9zdGF0eF90aW1lc3RhbXAu aCIgMSAzIDQKIyAyNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNoYWlu L25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsvbG9v bmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy9zdGF0eC1nZW5l cmljLmgiIDIgMyA0CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdpc2EtdG9vbGNo YWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1nbnUtdHJ1bmsv bG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9z dHJ1Y3Rfc3RhdHguaCIgMSAzIDQKIyAyNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvbG9vbmdp c2EtdG9vbGNoYWluL25ld190b29sY2hhaW4vaW5zdGFsbC9sb29uZ2FyY2g2NC1saW51eC1n bnUtdHJ1bmsvbG9vbmdhcmNoNjQtbGludXgtZ251L3N5c3Jvb3QvdXNyL2luY2x1ZGUvYml0 cy9zdGF0eC1nZW5lcmljLmgiIDIgMyA0CiMgNTggIi9ob21lL2NoZW5nbHVsdS93b3JrL2xv b25naXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGlu dXgtZ251LXRydW5rL2xvb25nYXJjaDY0LWxpbnV4LWdudS9zeXNyb290L3Vzci9pbmNsdWRl L2JpdHMvc3RhdHgtZ2VuZXJpYy5oIiAzIDQKCgoKaW50IHN0YXR4IChpbnQgX19kaXJmZCwg Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3BhdGgsIGludCBfX2ZsYWdzLAogICAgICAgICAg IHVuc2lnbmVkIGludCBfX21hc2ssIHN0cnVjdCBzdGF0eCAqX19yZXN0cmljdCBfX2J1ZikK ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18gLCBfX2xlYWZfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMiwgNSkpKTsKCgojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay9sb29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0 LWxpbnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5j bHVkZS9iaXRzL3N0YXR4LmgiIDIgMyA0CiMgNDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay9s b29uZ2lzYS10b29sY2hhaW4vbmV3X3Rvb2xjaGFpbi9pbnN0YWxsL2xvb25nYXJjaDY0LWxp bnV4LWdudS10cnVuay9sb29uZ2FyY2g2NC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVk ZS9zeXMvc3RhdC5oIiAyIDMgNAoKCgojIDM4MiAic3lzdGVtLmgiIDIKIyA0NTQgInN5c3Rl bS5oIgojZGVmaW5lIEhPU1RfUFRSX1BSSU5URiAiJXAiCiMgNDY0ICJzeXN0ZW0uaCIKI2Rl ZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKCgoKI2RlZmluZSBESVJfU0VQQVJBVE9SICcvJwoK CgoKI2RlZmluZSBJU19ESVJfU0VQQVJBVE9SKENIKSAoKENIKSA9PSBESVJfU0VQQVJBVE9S KQojIDQ4OCAic3lzdGVtLmgiCiNkZWZpbmUgSVNfQUJTT0xVVEVfUEFUSE5BTUUoU1RSKSAo SVNfRElSX1NFUEFSQVRPUiAoKFNUUilbMF0pIHx8IChTVFIpWzBdID09ICckJykKCgoKCiMg MSAibGliaWJlcnR5LmgiIDEKIyAzNiAibGliaWJlcnR5LmgiCiNkZWZpbmUgTElCSUJFUlRZ X0ggCiMgNDYgImxpYmliZXJ0eS5oIgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2xvb25n aXNhLXRvb2xjaGFpbi9uZXdfdG9vbGNoYWluL2luc3RhbGwvbG9vbmdhcmNoNjQtbGludXgt Z251LXRydW5rL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMS9pbmNsdWRl L3N0ZGRlZi5oIiAxIDMgNAojIDQ3ICJsaWJpYmVydHkuaCIgMgojIDU5ICJsaWJpYmVydHku aCIKCiMgNTkgImxpYmliZXJ0eS5oIgpleHRlcm4gY2hhciAqKmJ1aWxkYXJndiAoY29uc3Qg Y2hhciAqKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCgpleHRlcm4gdm9pZCBm cmVlYXJndiAoY2hhciAqKik7CgoKCgpleHRlcm4gY2hhciAqKmR1cGFyZ3YgKGNoYXIgKiop IF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CiMgODIgImxpYmliZXJ0eS5oIgpleHRl cm4gY2hhciAqYmFzZW5hbWUgKGNvbnN0IGNoYXIgKik7CiMgOTEgImxpYmliZXJ0eS5oIgpl eHRlcm4gY29uc3QgY2hhciAqbGJhc2VuYW1lIChjb25zdCBjaGFyICopOwoKCgoKCmV4dGVy biBjaGFyICpjb25jYXQgKGNvbnN0IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19t YWxsb2NfXykpOwojIDEwNiAibGliaWJlcnR5LmgiCmV4dGVybiBjaGFyICpyZWNvbmNhdCAo Y2hhciAqLCBjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18p KTsKCgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBjb25jYXRfbGVuZ3RoIChjb25zdCBjaGFy ICosIC4uLik7CgoKCgoKCmV4dGVybiBjaGFyICpjb25jYXRfY29weSAoY2hhciAqLCBjb25z dCBjaGFyICosIC4uLik7CgoKCgoKCmV4dGVybiBjaGFyICpjb25jYXRfY29weTIgKGNvbnN0 IGNoYXIgKiwgLi4uKTsKCgoKZXh0ZXJuIGNoYXIgKmxpYmliZXJ0eV9jb25jYXRfcHRyOwoK CgoKCiNkZWZpbmUgQUNPTkNBVChBQ09OQ0FUX1BBUkFNUykgKGxpYmliZXJ0eV9jb25jYXRf cHRyID0gYWxsb2NhIChjb25jYXRfbGVuZ3RoIEFDT05DQVRfUEFSQU1TICsgMSksIGNvbmNh dF9jb3B5MiBBQ09OQ0FUX1BBUkFNUykKCgoKCgpleHRlcm4gaW50IGZkbWF0Y2ggKGludCBm ZDEsIGludCBmZDIpOwoKCgoKZXh0ZXJuIGNoYXIgKiBnZXRwd2QgKHZvaWQpOwoKCgpleHRl cm4gbG9uZyBnZXRfcnVuX3RpbWUgKHZvaWQpOwoKCgpleHRlcm4gY2hhciAqY2hvb3NlX3Rl bXBfYmFzZSAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKZXh0ZXJu IGNoYXIgKm1ha2VfdGVtcF9maWxlIChjb25zdCBjaGFyICopIF9fYXR0cmlidXRlX18gKChf X21hbGxvY19fKSk7CgoKCmV4dGVybiBjb25zdCBjaGFyICpzcGFjZXMgKGludCBjb3VudCk7 CgoKCgpleHRlcm4gaW50IGVycm5vX21heCAodm9pZCk7CgoKCgpleHRlcm4gY29uc3QgY2hh ciAqc3RyZXJybm8gKGludCk7CgoKCmV4dGVybiBpbnQgc3RydG9lcnJubyAoY29uc3QgY2hh ciAqKTsKCgoKZXh0ZXJuIGNoYXIgKnhzdHJlcnJvciAoaW50KTsKCgoKCmV4dGVybiBpbnQg c2lnbm9fbWF4ICh2b2lkKTsKIyAxOTggImxpYmliZXJ0eS5oIgpleHRlcm4gY29uc3QgY2hh ciAqc3Ryc2lnbm8gKGludCk7CgoKCmV4dGVybiBpbnQgc3RydG9zaWdubyAoY29uc3QgY2hh ciAqKTsKCgoKZXh0ZXJuIGludCB4YXRleGl0ICh2b2lkICgqZm4pICh2b2lkKSk7CgoKCmV4 dGVybiB2b2lkIHhleGl0IChpbnQgc3RhdHVzKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVy bl9fKSk7CgoKCmV4dGVybiB2b2lkIHhtYWxsb2Nfc2V0X3Byb2dyYW1fbmFtZSAoY29uc3Qg Y2hhciAqKTsKCgpleHRlcm4gdm9pZCB4bWFsbG9jX2ZhaWxlZCAoc2l6ZV90KSBfX2F0dHJp YnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgKiB4bWFsbG9jIChz aXplX3QpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCgoKZXh0ZXJuIHZvaWQg KiB4cmVhbGxvYyAodm9pZCAqLCBzaXplX3QpOwoKCgoKZXh0ZXJuIHZvaWQgKiB4Y2FsbG9j IChzaXplX3QsIHNpemVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKZXh0 ZXJuIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKikgX19hdHRyaWJ1dGVfXyAoKF9fbWFs bG9jX18pKTsKCgoKZXh0ZXJuIHZvaWQgKiB4bWVtZHVwIChjb25zdCB2b2lkICosIHNpemVf dCwgc2l6ZV90KSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpOwoKCmV4dGVybiB2b2lk IHNwZWNxc29ydCAodm9pZCAqLCBpbnQsIGludCwgaW50ICgqKSgpICk7CgoKCiNkZWZpbmUg X2hleF9hcnJheV9zaXplIDI1NgojZGVmaW5lIF9oZXhfYmFkIDk5CmV4dGVybiBjb25zdCBj aGFyIF9oZXhfdmFsdWVbMjU2XTsKZXh0ZXJuIHZvaWQgaGV4X2luaXQgKHZvaWQpOwojZGVm aW5lIGhleF9wKGMpIChoZXhfdmFsdWUgKGMpICE9IF9oZXhfYmFkKQoKCiNkZWZpbmUgaGV4 X3ZhbHVlKGMpIChfaGV4X3ZhbHVlWyh1bnNpZ25lZCBjaGFyKSAoYyldKQoKCgojZGVmaW5l IFBFWEVDVVRFX0ZJUlNUIDEKI2RlZmluZSBQRVhFQ1VURV9MQVNUIDIKI2RlZmluZSBQRVhF Q1VURV9PTkUgKFBFWEVDVVRFX0ZJUlNUICsgUEVYRUNVVEVfTEFTVCkKI2RlZmluZSBQRVhF Q1VURV9TRUFSQ0ggNAojZGVmaW5lIFBFWEVDVVRFX1ZFUkJPU0UgOAoKCgpleHRlcm4gaW50 IHBleGVjdXRlIChjb25zdCBjaGFyICosIGNoYXIgKiBjb25zdCAqLCBjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgY2hhciAqKiwgaW50KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKZXh0ZXJuIGludCBwd2FpdCAoaW50 LCBpbnQgKiwgaW50KTsKCgoKCmV4dGVybiBpbnQgYXNwcmludGYgKGNoYXIgKiosIGNvbnN0 IGNoYXIgKiwgLi4uKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywg MiwgMykpKTsKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFy ICosIHZhX2xpc3QpCiAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18s IDIsIDApKSk7CgojZGVmaW5lIEFSUkFZX1NJWkUoYSkgKHNpemVvZiAoYSkgLyBzaXplb2Yg KChhKVswXSkpCiMgNDk0ICJzeXN0ZW0uaCIgMgojIDEgInN5bWNhdC5oIiAxCiMgMjAgInN5 bWNhdC5oIgojZGVmaW5lIFNZTV9DQVRfSCAKCgojZGVmaW5lIENPTkNBVDIoYSxiKSBhICMj YgojZGVmaW5lIENPTkNBVDMoYSxiLGMpIGEgIyNiICMjYwojZGVmaW5lIENPTkNBVDQoYSxi LGMsZCkgYSAjI2IgIyNjICMjZAojZGVmaW5lIFNUUklOR1gocykgI3MKIyAzOCAic3ltY2F0 LmgiCiNkZWZpbmUgWENPTkNBVDIoYSxiKSBDT05DQVQyKGEsYikKI2RlZmluZSBYQ09OQ0FU MyhhLGIsYykgQ09OQ0FUMyhhLGIsYykKI2RlZmluZSBYQ09OQ0FUNChhLGIsYyxkKSBDT05D QVQ0KGEsYixjLGQpCgoKCgoKCiNkZWZpbmUgWFNUUklORyhzKSBTVFJJTkdYKHMpCiMgNDk1 ICJzeXN0ZW0uaCIgMgoKCgoKCiNkZWZpbmUgSE9TVF9CSVRfQlVDS0VUICIvZGV2L251bGwi CiMgNTA5ICJzeXN0ZW0uaCIKI2RlZmluZSBFTlVNX0JJVEZJRUxEKFRZUEUpIHVuc2lnbmVk IGludAojIDUyNyAic3lzdGVtLmgiCiNkZWZpbmUgVU5JT05fSU5JVF9aRVJPICwgezB9CiMg NTQ5ICJzeXN0ZW0uaCIKI3VuZGVmIGJvb2wKI3VuZGVmIHRydWUKI3VuZGVmIGZhbHNlCiN1 bmRlZiBUUlVFCiN1bmRlZiBGQUxTRQoKCgoKCgoKI2RlZmluZSBib29sIF9Cb29sCiNkZWZp bmUgdHJ1ZSAxCiNkZWZpbmUgZmFsc2UgMAoKCiNkZWZpbmUgVFJVRSB0cnVlCiNkZWZpbmUg RkFMU0UgZmFsc2UKIyA1ODAgInN5c3RlbS5oIgojZGVmaW5lIHJlYWxseV9jYWxsX21hbGxv YyBtYWxsb2MKI2RlZmluZSByZWFsbHlfY2FsbF9jYWxsb2MgY2FsbG9jCiNkZWZpbmUgcmVh bGx5X2NhbGxfcmVhbGxvYyByZWFsbG9jCiMgNjI2ICJzeXN0ZW0uaCIKI3VuZGVmIGJjb3B5 CiN1bmRlZiBiemVybwojdW5kZWYgYmNtcAojdW5kZWYgcmluZGV4CiAgICAgICAgCiMgMjUg InJlZ3JlbmFtZS5jIiAyCiMgMSAicnRsLmgiIDEKIyAyMyAicnRsLmgiCiNkZWZpbmUgR0ND X1JUTF9IIAoKc3RydWN0IGZ1bmN0aW9uOwoKIyAxICJtYWNobW9kZS5oIiAxCiMgMjMgIm1h Y2htb2RlLmgiCiNkZWZpbmUgSEFWRV9NQUNISU5FX01PREVTIAoKCgojZGVmaW5lIERFRl9N QUNITU9ERShTWU0sTkFNRSxUWVBFLEJJVFNJWkUsU0laRSxVTklULFdJREVSLElOTkVSKSBT WU0sCgplbnVtIG1hY2hpbmVfbW9kZSB7CiMgMSAibWFjaG1vZGUuZGVmIiAxCiMgNzQgIm1h Y2htb2RlLmRlZiIKVk9JRG1vZGUsCgpCSW1vZGUsClFJbW9kZSwKSEltb2RlLApTSW1vZGUs CkRJbW9kZSwKVEltb2RlLApPSW1vZGUsCgoKCgpQUUltb2RlLApQSEltb2RlLApQU0ltb2Rl LApQREltb2RlLAoKUUZtb2RlLApIRm1vZGUsClRRRm1vZGUsClNGbW9kZSwKREZtb2RlLApY Rm1vZGUsClRGbW9kZSwKCgpRQ21vZGUsCkhDbW9kZSwKU0Ntb2RlLApEQ21vZGUsClhDbW9k ZSwKVENtb2RlLAoKQ1FJbW9kZSwKQ0hJbW9kZSwKQ1NJbW9kZSwKQ0RJbW9kZSwKQ1RJbW9k ZSwKQ09JbW9kZSwKCgoKCgoKClYyUUltb2RlLApWMkhJbW9kZSwKVjJTSW1vZGUsClYyRElt b2RlLAoKVjRRSW1vZGUsClY0SEltb2RlLApWNFNJbW9kZSwKVjRESW1vZGUsCgpWOFFJbW9k ZSwKVjhISW1vZGUsClY4U0ltb2RlLApWOERJbW9kZSwKClYxNlFJbW9kZSwKClYyU0Ztb2Rl LApWMkRGbW9kZSwKClY0U0Ztb2RlLApWNERGbW9kZSwKClY4U0Ztb2RlLApWOERGbW9kZSwK VjE2U0Ztb2RlLAoKCgpCTEttb2RlLAoKCgoKCgojZGVmaW5lIENDKEUsTSkgREVGX01BQ0hN T0RFIChFLCBNLCBNT0RFX0NDLCBCSVRTX1BFUl9VTklUKjQsIDQsIDQsIFZPSURtb2RlLCBW T0lEbW9kZSkKCkNDbW9kZSwKCgpDQ0dDbW9kZSwgQ0NHT0Ntb2RlLCBDQ05PbW9kZSwgQ0Na bW9kZSwgQ0NGUG1vZGUsIENDRlBVbW9kZSwKCgojdW5kZWYgQ0MKIyAzMSAibWFjaG1vZGUu aCIgMgpNQVhfTUFDSElORV9NT0RFIH07CgojdW5kZWYgREVGX01BQ0hNT0RFCgoKI2RlZmlu ZSBOVU1fTUFDSElORV9NT0RFUyAoaW50KSBNQVhfTUFDSElORV9NT0RFCgoKCgpleHRlcm4g Y29uc3QgY2hhciAqIGNvbnN0IG1vZGVfbmFtZVsoaW50KSBNQVhfTUFDSElORV9NT0RFXTsK I2RlZmluZSBHRVRfTU9ERV9OQU1FKE1PREUpIChtb2RlX25hbWVbKGludCkgKE1PREUpXSkK CmVudW0gbW9kZV9jbGFzcyB7IE1PREVfUkFORE9NLCBNT0RFX0lOVCwgTU9ERV9GTE9BVCwg TU9ERV9QQVJUSUFMX0lOVCwgTU9ERV9DQywKICAgIE1PREVfQ09NUExFWF9JTlQsIE1PREVf Q09NUExFWF9GTE9BVCwKICAgIE1PREVfVkVDVE9SX0lOVCwgTU9ERV9WRUNUT1JfRkxPQVQs CiAgICBNQVhfTU9ERV9DTEFTU307CgoKCgpleHRlcm4gY29uc3QgZW51bSBtb2RlX2NsYXNz IG1vZGVfY2xhc3NbKGludCkgTUFYX01BQ0hJTkVfTU9ERV07CiNkZWZpbmUgR0VUX01PREVf Q0xBU1MoTU9ERSkgKG1vZGVfY2xhc3NbKGludCkgKE1PREUpXSkKCgojZGVmaW5lIElOVEVH UkFMX01PREVfUChNT0RFKSAoR0VUX01PREVfQ0xBU1MgKE1PREUpID09IE1PREVfSU5UIHx8 IEdFVF9NT0RFX0NMQVNTIChNT0RFKSA9PSBNT0RFX1BBUlRJQUxfSU5UIHx8IEdFVF9NT0RF X0NMQVNTIChNT0RFKSA9PSBNT0RFX0NPTVBMRVhfSU5UIHx8IEdFVF9NT0RFX0NMQVNTIChN T0RFKSA9PSBNT0RFX1ZFQ1RPUl9JTlQpCgoKCgoKCiNkZWZpbmUgRkxPQVRfTU9ERV9QKE1P REUpIChHRVRfTU9ERV9DTEFTUyAoTU9ERSkgPT0gTU9ERV9GTE9BVCB8fCBHRVRfTU9ERV9D TEFTUyAoTU9ERSkgPT0gTU9ERV9DT01QTEVYX0ZMT0FUIHx8IEdFVF9NT0RFX0NMQVNTIChN T0RFKSA9PSBNT0RFX1ZFQ1RPUl9GTE9BVCkKCgoKCgojZGVmaW5lIENPTVBMRVhfTU9ERV9Q KE1PREUpIChHRVRfTU9ERV9DTEFTUyAoTU9ERSkgPT0gTU9ERV9DT01QTEVYX0lOVCB8fCBH RVRfTU9ERV9DTEFTUyAoTU9ERSkgPT0gTU9ERV9DT01QTEVYX0ZMT0FUKQoKCgoKI2RlZmlu ZSBWRUNUT1JfTU9ERV9QKE1PREUpIChHRVRfTU9ERV9DTEFTUyAoTU9ERSkgPT0gTU9ERV9W RUNUT1JfSU5UIHx8IEdFVF9NT0RFX0NMQVNTIChNT0RFKSA9PSBNT0RFX1ZFQ1RPUl9GTE9B VCkKCgoKCgpleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciBtb2RlX3NpemVbKGludCkgTUFY X01BQ0hJTkVfTU9ERV07CiNkZWZpbmUgR0VUX01PREVfU0laRShNT0RFKSAobW9kZV9zaXpl WyhpbnQpIChNT0RFKV0pCgoKCmV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIG1vZGVfdW5p dF9zaXplWyhpbnQpIE1BWF9NQUNISU5FX01PREVdOwojZGVmaW5lIEdFVF9NT0RFX1VOSVRf U0laRShNT0RFKSAobW9kZV91bml0X3NpemVbKGludCkgKE1PREUpXSkKCgoKI2RlZmluZSBH RVRfTU9ERV9OVU5JVFMoTU9ERSkgKChHRVRfTU9ERV9VTklUX1NJWkUgKChNT0RFKSkgPT0g MCkgPyAwIDogKEdFVF9NT0RFX1NJWkUgKChNT0RFKSkgLyBHRVRfTU9ERV9VTklUX1NJWkUg KChNT0RFKSkpKQoKCgoKCmV4dGVybiBjb25zdCB1bnNpZ25lZCBzaG9ydCBtb2RlX2JpdHNp emVbKGludCkgTUFYX01BQ0hJTkVfTU9ERV07CiNkZWZpbmUgR0VUX01PREVfQklUU0laRShN T0RFKSAobW9kZV9iaXRzaXplWyhpbnQpIChNT0RFKV0pCiMgMTA2ICJtYWNobW9kZS5oIgpl eHRlcm4gY29uc3QgdW5zaWduZWQgbG9uZyBtb2RlX21hc2tfYXJyYXlbKGludCkgTUFYX01B Q0hJTkVfTU9ERV07CgojZGVmaW5lIEdFVF9NT0RFX01BU0soTU9ERSkgbW9kZV9tYXNrX2Fy cmF5WyhpbnQpIChNT0RFKV0KCmV4dGVybiBjb25zdCBlbnVtIG1hY2hpbmVfbW9kZSBpbm5l cl9tb2RlX2FycmF5WyhpbnQpIE1BWF9NQUNISU5FX01PREVdOwoKCgojZGVmaW5lIEdFVF9N T0RFX0lOTkVSKE1PREUpIGlubmVyX21vZGVfYXJyYXlbKGludCkgKE1PREUpXQojIDEyMyAi bWFjaG1vZGUuaCIKZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgbW9kZV93aWRlcl9tb2Rl WyhpbnQpIE1BWF9NQUNISU5FX01PREVdOwojZGVmaW5lIEdFVF9NT0RFX1dJREVSX01PREUo TU9ERSkgKChlbnVtIG1hY2hpbmVfbW9kZSltb2RlX3dpZGVyX21vZGVbKGludCkgKE1PREUp XSkKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgbW9kZV9mb3Jfc2l6ZSAodW5zaWdu ZWQgaW50LCBlbnVtIG1vZGVfY2xhc3MsIGludCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKCgoKZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIHNtYWxsZXN0X21vZGVfZm9yX3Np emUKICAgICh1bnNpZ25lZCBpbnQsIGVudW0gbW9kZV9jbGFzcyk7CgoKCgoKZXh0ZXJuIGVu dW0gbWFjaGluZV9tb2RlIGludF9tb2RlX2Zvcl9tb2RlIChlbnVtIG1hY2hpbmVfbW9kZSk7 CgoKCmV4dGVybiBlbnVtIG1hY2hpbmVfbW9kZSBnZXRfYmVzdF9tb2RlIChpbnQsIGludCwg dW5zaWduZWQgaW50LCBlbnVtIG1hY2hpbmVfbW9kZSwgaW50KQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7CgoKCmV4dGVybiB1bnNpZ25lZCBnZXRfbW9kZV9hbGlnbm1lbnQg KGVudW0gbWFjaGluZV9tb2RlKTsKCiNkZWZpbmUgR0VUX01PREVfQUxJR05NRU5UKE1PREUp IGdldF9tb2RlX2FsaWdubWVudCAoTU9ERSkKCgoKZXh0ZXJuIGNvbnN0IGVudW0gbWFjaGlu ZV9tb2RlIGNsYXNzX25hcnJvd2VzdF9tb2RlWyhpbnQpIE1BWF9NT0RFX0NMQVNTXTsKI2Rl ZmluZSBHRVRfQ0xBU1NfTkFSUk9XRVNUX01PREUoQ0xBU1MpIGNsYXNzX25hcnJvd2VzdF9t b2RlWyhpbnQpIChDTEFTUyldCgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgYnl0ZV9t b2RlOwpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgd29yZF9tb2RlOwpleHRlcm4gZW51bSBt YWNoaW5lX21vZGUgcHRyX21vZGU7CiMgMjggInJ0bC5oIiAyCgojdW5kZWYgRkZTCiN1bmRl ZiBGTE9BVAojdW5kZWYgQUJTCiN1bmRlZiBQQwoKCgojZGVmaW5lIE5PT1BfTU9WRV9JTlNO X0NPREUgSU5UX01BWAoKCgojZGVmaW5lIFJUWF9DT0RFIGVudW0gcnR4X2NvZGUKZW51bSBy dHhfY29kZSB7CgojZGVmaW5lIERFRl9SVExfRVhQUihFTlVNLE5BTUUsRk9STUFULENMQVNT KSBFTlVNICwKIyAxICJydGwuZGVmIiAxCiMgNzAgInJ0bC5kZWYiClVOS05PV04gLAoKCgpO SUwgLAoKCgoKSU5DTFVERSAsCgoKCgoKCkVYUFJfTElTVCAsCgoKCklOU05fTElTVCAsCiMg MTI5ICJydGwuZGVmIgpNQVRDSF9PUEVSQU5EICwKCgoKCgoKTUFUQ0hfU0NSQVRDSCAsCgoK CgpNQVRDSF9EVVAgLAoKCgoKCgoKTUFUQ0hfT1BFUkFUT1IgLAojIDE1OCAicnRsLmRlZiIK TUFUQ0hfUEFSQUxMRUwgLAoKCgoKTUFUQ0hfT1BfRFVQICwKCgoKCk1BVENIX1BBUl9EVVAg LAoKCgoKTUFUQ0hfSU5TTiAsCiMgMTkyICJydGwuZGVmIgpERUZJTkVfSU5TTiAsCgoKCgoK CgpERUZJTkVfUEVFUEhPTEUgLAojIDIxMSAicnRsLmRlZiIKREVGSU5FX1NQTElUICwKIyAy MzkgInJ0bC5kZWYiCkRFRklORV9JTlNOX0FORF9TUExJVCAsCgoKCkRFRklORV9QRUVQSE9M RTIgLAoKCgpERUZJTkVfQ09NQklORSAsCiMgMjYwICJydGwuZGVmIgpERUZJTkVfRVhQQU5E ICwKIyAyNzYgInJ0bC5kZWYiCkRFRklORV9ERUxBWSAsCiMgMzE3ICJydGwuZGVmIgpERUZJ TkVfRlVOQ1RJT05fVU5JVCAsCgoKREVGSU5FX0FTTV9BVFRSSUJVVEVTICwKIyAzMzMgInJ0 bC5kZWYiCkRFRklORV9DT05EX0VYRUMgLAoKCgoKClNFUVVFTkNFICwKCgpBRERSRVNTICwK IyAzNTMgInJ0bC5kZWYiCkRFRklORV9BVFRSICwKCgpBVFRSICwKCgoKCgoKClNFVF9BVFRS ICwKIyAzNzkgInJ0bC5kZWYiClNFVF9BVFRSX0FMVEVSTkFUSVZFICwKCgoKCkVRX0FUVFIg LAojIDM5NCAicnRsLmRlZiIKQVRUUl9GTEFHICwKIyA0MDcgInJ0bC5kZWYiCklOU04gLAoK CgpKVU1QX0lOU04gLAoKCgoKCgpDQUxMX0lOU04gLAoKCkJBUlJJRVIgLAojIDQzMCAicnRs LmRlZiIKQ09ERV9MQUJFTCAsCgoKCgoKCk5PVEUgLAojIDQ1MCAicnRsLmRlZiIKQ09ORF9F WEVDICwKCgpQQVJBTExFTCAsCgoKCgoKCgpBU01fSU5QVVQgLAojIDQ3NSAicnRsLmRlZiIK QVNNX09QRVJBTkRTICwKIyA0ODYgInJ0bC5kZWYiClVOU1BFQyAsCgoKVU5TUEVDX1ZPTEFU SUxFICwKCgoKQUREUl9WRUMgLAojIDUxOCAicnRsLmRlZiIKQUREUl9ESUZGX1ZFQyAsCiMg NTI5ICJydGwuZGVmIgpQUkVGRVRDSCAsCiMgNTQxICJydGwuZGVmIgpTRVQgLAoKCgoKVVNF ICwKCgoKCkNMT0JCRVIgLAoKCgoKCkNBTEwgLAoKCgpSRVRVUk4gLAoKCgoKClRSQVBfSUYg LAoKCgoKUkVTWCAsCgoKCgoKCkNPTlNUX0lOVCAsCgoKCgoKCkNPTlNUX0RPVUJMRSAsCgoK Q09OU1RfVkVDVE9SICwKCgpDT05TVF9TVFJJTkcgLAoKCgoKCkNPTlNUICwKCgoKUEMgLAoK ClZBTFVFICwKIyA2MTQgInJ0bC5kZWYiClJFRyAsCgoKCgoKClNDUkFUQ0ggLAojIDYzMSAi cnRsLmRlZiIKU1VCUkVHICwKIyA2NDQgInJ0bC5kZWYiClNUUklDVF9MT1dfUEFSVCAsCgoK CgoKQ09OQ0FUICwKCgoKCk1FTSAsCgoKCgoKTEFCRUxfUkVGICwKCgoKCgpTWU1CT0xfUkVG ICwKCgoKCgoKQ0MwICwKIyA2ODMgInJ0bC5kZWYiCkFERFJFU1NPRiAsCiMgNzAxICJydGwu ZGVmIgpRVUVVRUQgLAojIDcxMyAicnRsLmRlZiIKSUZfVEhFTl9FTFNFICwKIyA3MjIgInJ0 bC5kZWYiCkNPTkQgLAoKCkNPTVBBUkUgLAoKClBMVVMgLAoKCk1JTlVTICwKCgpORUcgLAoK TVVMVCAsCgoKRElWICwKCk1PRCAsCgoKVURJViAsClVNT0QgLAoKCkFORCAsCgpJT1IgLAoK WE9SICwKCk5PVCAsCgoKCgpBU0hJRlQgLApST1RBVEUgLApBU0hJRlRSVCAsCkxTSElGVFJU ICwKUk9UQVRFUlQgLAoKCgoKClNNSU4gLApTTUFYICwKVU1JTiAsClVNQVggLAojIDc4MSAi cnRsLmRlZiIKUFJFX0RFQyAsClBSRV9JTkMgLApQT1NUX0RFQyAsClBPU1RfSU5DICwKIyA3 OTggInJ0bC5kZWYiClBSRV9NT0RJRlkgLApQT1NUX01PRElGWSAsCgoKCk5FICwKRVEgLApH RSAsCkdUICwKTEUgLApMVCAsCkdFVSAsCkdUVSAsCkxFVSAsCkxUVSAsCgoKVU5PUkRFUkVE ICwKT1JERVJFRCAsCgoKVU5FUSAsClVOR0UgLApVTkdUICwKVU5MRSAsClVOTFQgLAoKCkxU R1QgLAoKCgoKU0lHTl9FWFRFTkQgLAoKClpFUk9fRVhURU5EICwKCgpUUlVOQ0FURSAsCgoK RkxPQVRfRVhURU5EICwKRkxPQVRfVFJVTkNBVEUgLAoKCkZMT0FUICwKCgoKCgoKCkZJWCAs CgoKVU5TSUdORURfRkxPQVQgLAoKCgoKVU5TSUdORURfRklYICwKCgpBQlMgLAoKClNRUlQg LAoKCgoKRkZTICwKIyA4ODIgInJ0bC5kZWYiClNJR05fRVhUUkFDVCAsCgoKWkVST19FWFRS QUNUICwKCgoKCkhJR0ggLAoKCgpMT19TVU0gLAojIDkwNyAicnRsLmRlZiIKUkFOR0VfSU5G TyAsCiMgOTIyICJydGwuZGVmIgpSQU5HRV9SRUcgLAoKCgoKClJBTkdFX1ZBUiAsCgoKClJB TkdFX0xJVkUgLAoKCgoKQ09OU1RBTlRfUF9SVFggLAojIDk1OCAicnRsLmRlZiIKQ0FMTF9Q TEFDRUhPTERFUiAsCgoKCgoKClZFQ19NRVJHRSAsCgoKCgoKVkVDX1NFTEVDVCAsCgoKCgpW RUNfQ09OQ0FUICwKCgoKCgpWRUNfRFVQTElDQVRFICwKCgpTU19QTFVTICwKCgpVU19QTFVT ICwKCgpTU19NSU5VUyAsCgoKVVNfTUlOVVMgLAoKClNTX1RSVU5DQVRFICwKCgpVU19UUlVO Q0FURSAsCiMgMTAxNCAicnRsLmRlZiIKUEhJICwKIyA0NSAicnRsLmgiIDIKI3VuZGVmIERF Rl9SVExfRVhQUgoKICBMQVNUX0FORF9VTlVTRURfUlRYX0NPREV9OwoKCgojZGVmaW5lIE5V TV9SVFhfQ09ERSAoKGludCkgTEFTVF9BTkRfVU5VU0VEX1JUWF9DT0RFKQoKCmV4dGVybiBj b25zdCB1bnNpZ25lZCBjaGFyIHJ0eF9sZW5ndGhbKChpbnQpIExBU1RfQU5EX1VOVVNFRF9S VFhfQ09ERSldOwojZGVmaW5lIEdFVF9SVFhfTEVOR1RIKENPREUpIChydHhfbGVuZ3RoWyhp bnQpIChDT0RFKV0pCgpleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IHJ0eF9uYW1lWygoaW50 KSBMQVNUX0FORF9VTlVTRURfUlRYX0NPREUpXTsKI2RlZmluZSBHRVRfUlRYX05BTUUoQ09E RSkgKHJ0eF9uYW1lWyhpbnQpIChDT0RFKV0pCgpleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0 IHJ0eF9mb3JtYXRbKChpbnQpIExBU1RfQU5EX1VOVVNFRF9SVFhfQ09ERSldOwojZGVmaW5l IEdFVF9SVFhfRk9STUFUKENPREUpIChydHhfZm9ybWF0WyhpbnQpIChDT0RFKV0pCgpleHRl cm4gY29uc3QgY2hhciBydHhfY2xhc3NbKChpbnQpIExBU1RfQU5EX1VOVVNFRF9SVFhfQ09E RSldOwojZGVmaW5lIEdFVF9SVFhfQ0xBU1MoQ09ERSkgKHJ0eF9jbGFzc1soaW50KSAoQ09E RSldKQoKCgp0eXBlZGVmIHN0cnVjdAp7CgogIHVuc2lnbmVkIG1pbl9hbGlnbjogODsKCiAg dW5zaWduZWQgYmFzZV9hZnRlcl92ZWM6IDE7CiAgdW5zaWduZWQgbWluX2FmdGVyX3ZlYzog MTsKCiAgdW5zaWduZWQgbWF4X2FmdGVyX3ZlYzogMTsKCiAgdW5zaWduZWQgbWluX2FmdGVy X2Jhc2U6IDE7CgogIHVuc2lnbmVkIG1heF9hZnRlcl9iYXNlOiAxOwoKCiAgdW5zaWduZWQg b2Zmc2V0X3Vuc2lnbmVkOiAxOwogIHVuc2lnbmVkIDogMjsKICB1bnNpZ25lZCBzY2FsZSA6 IDg7Cn0gYWRkcl9kaWZmX3ZlY19mbGFnczsKCgoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgbG9u ZyBhbGlhczsKICB0cmVlIGV4cHI7CiAgcnR4IG9mZnNldDsKICBydHggc2l6ZTsKICB1bnNp Z25lZCBpbnQgYWxpZ247Cn0gbWVtX2F0dHJzOwoKCgp0eXBlZGVmIHVuaW9uIHJ0dW5pb25f ZGVmCnsKICBsb25nIHJ0d2ludDsKICBpbnQgcnRpbnQ7CiAgdW5zaWduZWQgaW50IHJ0dWlu dDsKICBjb25zdCBjaGFyICpydHN0cjsKICBydHggcnR4OwogIHJ0dmVjIHJ0dmVjOwogIGVu dW0gbWFjaGluZV9tb2RlIHJ0dHlwZTsKICBhZGRyX2RpZmZfdmVjX2ZsYWdzIHJ0X2FkZHJf ZGlmZl92ZWNfZmxhZ3M7CiAgc3RydWN0IGNzZWxpYl92YWxfc3RydWN0ICpydF9jc2VsaWI7 CiAgc3RydWN0IGJpdG1hcF9oZWFkX2RlZiAqcnRiaXQ7CiAgdHJlZSBydHRyZWU7CiAgc3Ry dWN0IGJhc2ljX2Jsb2NrX2RlZiAqYmI7CiAgbWVtX2F0dHJzICpydG1lbTsKfSBydHVuaW9u OwoKCgpzdHJ1Y3QgcnR4X2RlZgp7CgogIHVuc2lnbmVkIGludCBjb2RlOiAxNjsKCgogIHVu c2lnbmVkIGludCBtb2RlIDogODsKCgoKCgoKICB1bnNpZ25lZCBpbnQganVtcCA6IDE7CgoK ICB1bnNpZ25lZCBpbnQgY2FsbCA6IDE7CiMgMTQ5ICJydGwuaCIKICB1bnNpZ25lZCBpbnQg dW5jaGFuZ2luZyA6IDE7CgoKCgoKCgogIHVuc2lnbmVkIGludCB2b2xhdGlsIDogMTsKIyAx NzUgInJ0bC5oIgogIHVuc2lnbmVkIGludCBpbl9zdHJ1Y3QgOiAxOwoKCgoKCgogIHVuc2ln bmVkIGludCB1c2VkIDogMTsKCgoKCiAgdW5zaWduZWQgaW50ZWdyYXRlZCA6IDE7CiMgMTk2 ICJydGwuaCIKICB1bnNpZ25lZCBmcmFtZV9yZWxhdGVkIDogMTsKCgoKCiAgcnR1bmlvbiBm bGRbMV07Cn07CgojZGVmaW5lIE5VTExfUlRYIChydHgpIDAKCgoKI2RlZmluZSBHRVRfQ09E RShSVFgpICgoZW51bSBydHhfY29kZSkgKFJUWCktPmNvZGUpCiNkZWZpbmUgUFVUX0NPREUo UlRYLENPREUpICgoUlRYKS0+Y29kZSA9IChFTlVNX0JJVEZJRUxEKHJ0eF9jb2RlKSkgKENP REUpKQoKI2RlZmluZSBHRVRfTU9ERShSVFgpICgoZW51bSBtYWNoaW5lX21vZGUpIChSVFgp LT5tb2RlKQojZGVmaW5lIFBVVF9NT0RFKFJUWCxNT0RFKSAoKFJUWCktPm1vZGUgPSAoRU5V TV9CSVRGSUVMRChtYWNoaW5lX21vZGUpKSAoTU9ERSkpCgojZGVmaW5lIFJUWF9JTlRFR1JB VEVEX1AoUlRYKSAoKFJUWCktPmludGVncmF0ZWQpCiNkZWZpbmUgUlRYX1VOQ0hBTkdJTkdf UChSVFgpICgoUlRYKS0+dW5jaGFuZ2luZykKI2RlZmluZSBSVFhfRlJBTUVfUkVMQVRFRF9Q KFJUWCkgKChSVFgpLT5mcmFtZV9yZWxhdGVkKQoKCgoKCnN0cnVjdCBydHZlY19kZWYgewog IGludCBudW1fZWxlbTsKICBydHggZWxlbVsxXTsKfTsKCiNkZWZpbmUgTlVMTF9SVFZFQyAo cnR2ZWMpIDAKCiNkZWZpbmUgR0VUX05VTV9FTEVNKFJUVkVDKSAoKFJUVkVDKS0+bnVtX2Vs ZW0pCiNkZWZpbmUgUFVUX05VTV9FTEVNKFJUVkVDLE5VTSkgKChSVFZFQyktPm51bV9lbGVt ID0gKE5VTSkpCgoKI2RlZmluZSBSRUdfUChYKSAoR0VUX0NPREUgKFgpID09IFJFRykKCgoj ZGVmaW5lIExBQkVMX1AoWCkgKEdFVF9DT0RFIChYKSA9PSBDT0RFX0xBQkVMKQoKCiNkZWZp bmUgSlVNUF9QKFgpIChHRVRfQ09ERSAoWCkgPT0gSlVNUF9JTlNOKQoKCiNkZWZpbmUgTk9U RV9QKFgpIChHRVRfQ09ERSAoWCkgPT0gTk9URSkKCgojZGVmaW5lIEJBUlJJRVJfUChYKSAo R0VUX0NPREUgKFgpID09IEJBUlJJRVIpCgoKI2RlZmluZSBKVU1QX1RBQkxFX0RBVEFfUChJ TlNOKSAoSlVNUF9QIChJTlNOKSAmJiAoR0VUX0NPREUgKFBBVFRFUk4gKElOU04pKSA9PSBB RERSX1ZFQyB8fCBHRVRfQ09ERSAoUEFUVEVSTiAoSU5TTikpID09IEFERFJfRElGRl9WRUMp KQoKCgoKCiNkZWZpbmUgQ09OU1RBTlRfUChYKSAoR0VUX0NPREUgKFgpID09IExBQkVMX1JF RiB8fCBHRVRfQ09ERSAoWCkgPT0gU1lNQk9MX1JFRiB8fCBHRVRfQ09ERSAoWCkgPT0gQ09O U1RfSU5UIHx8IEdFVF9DT0RFIChYKSA9PSBDT05TVF9ET1VCTEUgfHwgR0VUX0NPREUgKFgp ID09IENPTlNUIHx8IEdFVF9DT0RFIChYKSA9PSBISUdIIHx8IEdFVF9DT0RFIChYKSA9PSBD T05TVF9WRUNUT1IgfHwgR0VUX0NPREUgKFgpID09IENPTlNUQU5UX1BfUlRYKQojIDMzMiAi cnRsLmgiCiNkZWZpbmUgUlRMX0NIRUNLMShSVFgsTixDMSkgKChSVFgpLT5mbGRbTl0pCiNk ZWZpbmUgUlRMX0NIRUNLMihSVFgsTixDMSxDMikgKChSVFgpLT5mbGRbTl0pCiNkZWZpbmUg UlRMX0NIRUNLQzEoUlRYLE4sQykgKChSVFgpLT5mbGRbTl0pCiNkZWZpbmUgUlRMX0NIRUNL QzIoUlRYLE4sQzEsQzIpICgoUlRYKS0+ZmxkW05dKQojZGVmaW5lIFJUVkVDX0VMVChSVFZF QyxJKSAoKFJUVkVDKS0+ZWxlbVtJXSkKCgoKI2RlZmluZSBYV0lOVChSVFgsTikgKFJUTF9D SEVDSzEgKFJUWCwgTiwgJ3cnKS5ydHdpbnQpCiNkZWZpbmUgWElOVChSVFgsTikgKFJUTF9D SEVDSzIgKFJUWCwgTiwgJ2knLCAnbicpLnJ0aW50KQojZGVmaW5lIFhTVFIoUlRYLE4pIChS VExfQ0hFQ0syIChSVFgsIE4sICdzJywgJ1MnKS5ydHN0cikKI2RlZmluZSBYRVhQKFJUWCxO KSAoUlRMX0NIRUNLMiAoUlRYLCBOLCAnZScsICd1JykucnR4KQojZGVmaW5lIFhWRUMoUlRY LE4pIChSVExfQ0hFQ0syIChSVFgsIE4sICdFJywgJ1YnKS5ydHZlYykKI2RlZmluZSBYTU9E RShSVFgsTikgKFJUTF9DSEVDSzEgKFJUWCwgTiwgJ00nKS5ydHR5cGUpCiNkZWZpbmUgWEJJ VE1BUChSVFgsTikgKFJUTF9DSEVDSzEgKFJUWCwgTiwgJ2InKS5ydGJpdCkKI2RlZmluZSBY VFJFRShSVFgsTikgKFJUTF9DSEVDSzEgKFJUWCwgTiwgJ3QnKS5ydHRyZWUpCiNkZWZpbmUg WEJCREVGKFJUWCxOKSAoUlRMX0NIRUNLMSAoUlRYLCBOLCAnQicpLmJiKQojZGVmaW5lIFhU TVBMKFJUWCxOKSAoUlRMX0NIRUNLMSAoUlRYLCBOLCAnVCcpLnJ0c3RyKQoKI2RlZmluZSBY VkVDRVhQKFJUWCxOLE0pIFJUVkVDX0VMVCAoWFZFQyAoUlRYLCBOKSwgTSkKI2RlZmluZSBY VkVDTEVOKFJUWCxOKSBHRVRfTlVNX0VMRU0gKFhWRUMgKFJUWCwgTikpCgoKCgojZGVmaW5l IFgwV0lOVChSVFgsTikgKFJUTF9DSEVDSzEgKFJUWCwgTiwgJzAnKS5ydHdpbnQpCiNkZWZp bmUgWDBJTlQoUlRYLE4pIChSVExfQ0hFQ0sxIChSVFgsIE4sICcwJykucnRpbnQpCiNkZWZp bmUgWDBVSU5UKFJUWCxOKSAoUlRMX0NIRUNLMSAoUlRYLCBOLCAnMCcpLnJ0dWludCkKI2Rl ZmluZSBYMFNUUihSVFgsTikgKFJUTF9DSEVDSzEgKFJUWCwgTiwgJzAnKS5ydHN0cikKI2Rl ZmluZSBYMEVYUChSVFgsTikgKFJUTF9DSEVDSzEgKFJUWCwgTiwgJzAnKS5ydHgpCiNkZWZp bmUgWDBWRUMoUlRYLE4pIChSVExfQ0hFQ0sxIChSVFgsIE4sICcwJykucnR2ZWMpCiNkZWZp bmUgWDBNT0RFKFJUWCxOKSAoUlRMX0NIRUNLMSAoUlRYLCBOLCAnMCcpLnJ0dHlwZSkKI2Rl ZmluZSBYMEJJVE1BUChSVFgsTikgKFJUTF9DSEVDSzEgKFJUWCwgTiwgJzAnKS5ydGJpdCkK I2RlZmluZSBYMFRSRUUoUlRYLE4pIChSVExfQ0hFQ0sxIChSVFgsIE4sICcwJykucnR0cmVl KQojZGVmaW5lIFgwQkJERUYoUlRYLE4pIChSVExfQ0hFQ0sxIChSVFgsIE4sICcwJykuYmIp CiNkZWZpbmUgWDBBRFZGTEFHUyhSVFgsTikgKFJUTF9DSEVDSzEgKFJUWCwgTiwgJzAnKS5y dF9hZGRyX2RpZmZfdmVjX2ZsYWdzKQojZGVmaW5lIFgwQ1NFTElCKFJUWCxOKSAoUlRMX0NI RUNLMSAoUlRYLCBOLCAnMCcpLnJ0X2NzZWxpYikKI2RlZmluZSBYME1FTUFUVFIoUlRYLE4p IChSVExfQ0hFQ0sxIChSVFgsIE4sICcwJykucnRtZW0pCgojZGVmaW5lIFhDV0lOVChSVFgs TixDKSAoUlRMX0NIRUNLQzEgKFJUWCwgTiwgQykucnR3aW50KQojZGVmaW5lIFhDSU5UKFJU WCxOLEMpIChSVExfQ0hFQ0tDMSAoUlRYLCBOLCBDKS5ydGludCkKI2RlZmluZSBYQ1VJTlQo UlRYLE4sQykgKFJUTF9DSEVDS0MxIChSVFgsIE4sIEMpLnJ0dWludCkKI2RlZmluZSBYQ1NU UihSVFgsTixDKSAoUlRMX0NIRUNLQzEgKFJUWCwgTiwgQykucnRzdHIpCiNkZWZpbmUgWENF WFAoUlRYLE4sQykgKFJUTF9DSEVDS0MxIChSVFgsIE4sIEMpLnJ0eCkKI2RlZmluZSBYQ1ZF QyhSVFgsTixDKSAoUlRMX0NIRUNLQzEgKFJUWCwgTiwgQykucnR2ZWMpCiNkZWZpbmUgWENN T0RFKFJUWCxOLEMpIChSVExfQ0hFQ0tDMSAoUlRYLCBOLCBDKS5ydHR5cGUpCiNkZWZpbmUg WENCSVRNQVAoUlRYLE4sQykgKFJUTF9DSEVDS0MxIChSVFgsIE4sIEMpLnJ0Yml0KQojZGVm aW5lIFhDVFJFRShSVFgsTixDKSAoUlRMX0NIRUNLQzEgKFJUWCwgTiwgQykucnR0cmVlKQoj ZGVmaW5lIFhDQkJERUYoUlRYLE4sQykgKFJUTF9DSEVDS0MxIChSVFgsIE4sIEMpLmJiKQoj ZGVmaW5lIFhDQURWRkxBR1MoUlRYLE4sQykgKFJUTF9DSEVDS0MxIChSVFgsIE4sIEMpLnJ0 X2FkZHJfZGlmZl92ZWNfZmxhZ3MpCiNkZWZpbmUgWENDU0VMSUIoUlRYLE4sQykgKFJUTF9D SEVDS0MxIChSVFgsIE4sIEMpLnJ0X2NzZWxpYikKCiNkZWZpbmUgWENWRUNFWFAoUlRYLE4s TSxDKSBSVFZFQ19FTFQgKFhDVkVDIChSVFgsIE4sIEMpLCBNKQojZGVmaW5lIFhDVkVDTEVO KFJUWCxOLEMpIEdFVF9OVU1fRUxFTSAoWENWRUMgKFJUWCwgTiwgQykpCgojZGVmaW5lIFhD MkVYUChSVFgsTixDMSxDMikgKFJUTF9DSEVDS0MyIChSVFgsIE4sIEMxLCBDMikucnR4KQoK CgoKI2RlZmluZSBJTlNOX1AoWCkgKEdFVF9SVFhfQ0xBU1MgKEdFVF9DT0RFKFgpKSA9PSAn aScpCgoKCiNkZWZpbmUgSU5TTl9VSUQoSU5TTikgWElOVCAoSU5TTiwgMCkKCgojZGVmaW5l IFBSRVZfSU5TTihJTlNOKSBYRVhQIChJTlNOLCAxKQojZGVmaW5lIE5FWFRfSU5TTihJTlNO KSBYRVhQIChJTlNOLCAyKQoKCiNkZWZpbmUgUEFUVEVSTihJTlNOKSBYRVhQIChJTlNOLCAz KQoKCgojZGVmaW5lIElOU05fQ09ERShJTlNOKSBYSU5UIChJTlNOLCA0KQoKCgoKCgojZGVm aW5lIExPR19MSU5LUyhJTlNOKSBYRVhQKElOU04sIDUpCgoKI2RlZmluZSBJTlNOX0RFTEVU RURfUChJTlNOKSAoKElOU04pLT52b2xhdGlsKQoKCiNkZWZpbmUgQ09OU1RfT1JfUFVSRV9D QUxMX1AoSU5TTikgKChJTlNOKS0+dW5jaGFuZ2luZykKCgojZGVmaW5lIFNJQkxJTkdfQ0FM TF9QKElOU04pICgoSU5TTiktPmp1bXApCgoKCiNkZWZpbmUgSU5TTl9BTk5VTExFRF9CUkFO Q0hfUChJTlNOKSAoKElOU04pLT51bmNoYW5naW5nKQoKCiNkZWZpbmUgSU5TTl9ERUFEX0NP REVfUChJTlNOKSAoKElOU04pLT5pbl9zdHJ1Y3QpCgoKCgoKI2RlZmluZSBJTlNOX0ZST01f VEFSR0VUX1AoSU5TTikgKChJTlNOKS0+aW5fc3RydWN0KQoKI2RlZmluZSBBRERSX0RJRkZf VkVDX0ZMQUdTKFJUWCkgWDBBRFZGTEFHUyhSVFgsIDQpCgojZGVmaW5lIENTRUxJQl9WQUxf UFRSKFJUWCkgWDBDU0VMSUIoUlRYLCAwKQoKCgoKCgoKI2RlZmluZSBSRUdfTk9URVMoSU5T TikgWEVYUChJTlNOLCA2KQoKCmVudW0gcmVnX25vdGUKewoKCgogIFJFR19ERUFEID0gMSwK CgogIFJFR19JTkMsCiMgNDcwICJydGwuaCIKICBSRUdfRVFVSVYsCgoKCgogIFJFR19FUVVB TCwKCgoKCgogIFJFR19XQVNfMCwKCgoKCgogIFJFR19SRVRWQUwsCgoKCgogIFJFR19MSUJD QUxMLAoKCgoKCgogIFJFR19OT05ORUcsCgoKCiAgUkVHX05PX0NPTkZMSUNULAoKCiAgUkVH X1VOVVNFRCwKIyA1MTUgInJ0bC5oIgogIFJFR19DQ19TRVRURVIsIFJFR19DQ19VU0VSLAoK CgoKICBSRUdfTEFCRUwsCgoKCgoKICBSRUdfREVQX0FOVEksIFJFR19ERVBfT1VUUFVULAoK CgoKCiAgUkVHX0JSX1BST0IsCgoKCgogIFJFR19FWEVDX0NPVU5ULAoKCgogIFJFR19OT0FM SUFTLAoKCgogIFJFR19TQVZFX0FSRUEsCgoKCgoKICBSRUdfQlJfUFJFRCwKCgoKCiAgUkVH X0ZSQU1FX1JFTEFURURfRVhQUiwKCgoKCiAgUkVHX0VIX0NPTlRFWFQsCgoKCgoKICBSRUdf RUhfUkVHSU9OLAoKCiAgUkVHX1NBVkVfTk9URSwKCgoKCgogIFJFR19NQVlCRV9ERUFELAoK CiAgUkVHX05PUkVUVVJOLAoKCgogIFJFR19OT05fTE9DQUxfR09UTywKCgoKICBSRUdfU0VU Sk1QLAoKCiAgUkVHX0FMV0FZU19SRVRVUk4sCgoKCiAgUkVHX1ZUQUJMRV9SRUYKfTsKCgoj ZGVmaW5lIFJFR19CUl9QUk9CX0JBU0UgMTAwMDAKCgojZGVmaW5lIFJFR19OT1RFX0tJTkQo TElOSykgKChlbnVtIHJlZ19ub3RlKSBHRVRfTU9ERSAoTElOSykpCiNkZWZpbmUgUFVUX1JF R19OT1RFX0tJTkQoTElOSyxLSU5EKSBQVVRfTU9ERSAoTElOSywgKGVudW0gbWFjaGluZV9t b2RlKSAoS0lORCkpCgoKCgpleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IHJlZ19ub3RlX25h bWVbXTsKI2RlZmluZSBHRVRfUkVHX05PVEVfTkFNRShNT0RFKSAocmVnX25vdGVfbmFtZVso aW50KSAoTU9ERSldKQojIDYxNyAicnRsLmgiCiNkZWZpbmUgQ0FMTF9JTlNOX0ZVTkNUSU9O X1VTQUdFKElOU04pIFhFWFAoSU5TTiwgNykKCgoKCiNkZWZpbmUgQ09ERV9MQUJFTF9OVU1C RVIoSU5TTikgWElOVCAoSU5TTiwgNSkKCiNkZWZpbmUgTElORV9OVU1CRVIgTk9URQojIDYz MyAicnRsLmgiCiNkZWZpbmUgTk9URV9TT1VSQ0VfRklMRShJTlNOKSBYQ1NUUiAoSU5TTiwg MywgTk9URSkKI2RlZmluZSBOT1RFX0JMT0NLKElOU04pIFhDVFJFRSAoSU5TTiwgMywgTk9U RSkKI2RlZmluZSBOT1RFX0VIX0hBTkRMRVIoSU5TTikgWENJTlQgKElOU04sIDMsIE5PVEUp CiNkZWZpbmUgTk9URV9SQU5HRV9JTkZPKElOU04pIFhDRVhQIChJTlNOLCAzLCBOT1RFKQoj ZGVmaW5lIE5PVEVfTElWRV9JTkZPKElOU04pIFhDRVhQIChJTlNOLCAzLCBOT1RFKQojZGVm aW5lIE5PVEVfQkFTSUNfQkxPQ0soSU5TTikgWENCQkRFRiAoSU5TTiwgMywgTk9URSkKI2Rl ZmluZSBOT1RFX0VYUEVDVEVEX1ZBTFVFKElOU04pIFhDRVhQIChJTlNOLCAzLCBOT1RFKQoK CgojZGVmaW5lIE5PVEVfTElORV9OVU1CRVIoSU5TTikgWENJTlQgKElOU04sIDQsIE5PVEUp CgoKI2RlZmluZSBOT1RFX0lOU05fQkFTSUNfQkxPQ0tfUChJTlNOKSAoR0VUX0NPREUgKElO U04pID09IE5PVEUgJiYgTk9URV9MSU5FX05VTUJFUiAoSU5TTikgPT0gTk9URV9JTlNOX0JB U0lDX0JMT0NLKQojIDY2MyAicnRsLmgiCmVudW0gaW5zbl9ub3RlCnsKCiAgTk9URV9JTlNO X0JJQVMgPSAtMTAwLAoKCgogIE5PVEVfSU5TTl9ERUxFVEVELAoKCgogIE5PVEVfSU5TTl9C TE9DS19CRUcsCiAgTk9URV9JTlNOX0JMT0NLX0VORCwKCgogIE5PVEVfSU5TTl9MT09QX0JF RywKICBOT1RFX0lOU05fTE9PUF9FTkQsCgoKICBOT1RFX0lOU05fTE9PUF9DT05ULAoKICBO T1RFX0lOU05fTE9PUF9WVE9QLAoKCgoKCiAgTk9URV9JTlNOX0xPT1BfRU5EX1RPUF9DT05E LAoKCgoKCgogIE5PVEVfSU5TTl9GVU5DVElPTl9FTkQsCgoKICBOT1RFX0lOU05fUFJPTE9H VUVfRU5ELAoKCiAgTk9URV9JTlNOX0VQSUxPR1VFX0JFRywKCgogIE5PVEVfSU5TTl9ERUxF VEVEX0xBQkVMLAoKCgoKICBOT1RFX0lOU05fRlVOQ1RJT05fQkVHLAoKCgogIE5PVEVfSU5T Tl9FSF9SRUdJT05fQkVHLAogIE5PVEVfSU5TTl9FSF9SRUdJT05fRU5ELAoKCgoKICBOT1RF X0lOU05fUkVQRUFURURfTElORV9OVU1CRVIsCgoKCiAgTk9URV9JTlNOX1JBTkdFX0JFRywK ICBOT1RFX0lOU05fUkFOR0VfRU5ELAoKCiAgTk9URV9JTlNOX0xJVkUsCgoKICBOT1RFX0lO U05fQkFTSUNfQkxPQ0ssCgoKCiAgTk9URV9JTlNOX0VYUEVDVEVEX1ZBTFVFLAoKICBOT1RF X0lOU05fTUFYCn07CgoKCmV4dGVybiBjb25zdCBjaGFyICogY29uc3Qgbm90ZV9pbnNuX25h bWVbTk9URV9JTlNOX01BWCAtIE5PVEVfSU5TTl9CSUFTXTsKI2RlZmluZSBHRVRfTk9URV9J TlNOX05BTUUoTk9URV9DT0RFKSAobm90ZV9pbnNuX25hbWVbKE5PVEVfQ09ERSkgLSAoaW50 KSBOT1RFX0lOU05fQklBU10pCgoKCgojZGVmaW5lIExBQkVMX05BTUUoUlRYKSBYQ1NUUiAo UlRYLCA2LCBDT0RFX0xBQkVMKQoKCgojZGVmaW5lIExBQkVMX05VU0VTKFJUWCkgWENJTlQg KFJUWCwgMywgQ09ERV9MQUJFTCkKCgojZGVmaW5lIExBQkVMX0FMVEVSTkFURV9OQU1FKFJU WCkgWENTVFIgKFJUWCwgNywgQ09ERV9MQUJFTCkKCgojZGVmaW5lIEFERFJFU1NPRl9SRUdO TyhSVFgpIFhDVUlOVCAoUlRYLCAxLCBBRERSRVNTT0YpCgoKI2RlZmluZSBBRERSRVNTT0Zf REVDTChSVFgpIFhDVFJFRSAoUlRYLCAyLCBBRERSRVNTT0YpCgoKCgojZGVmaW5lIEpVTVBf TEFCRUwoSU5TTikgWENFWFAgKElOU04sIDcsIEpVTVBfSU5TTikKCgoKCgojZGVmaW5lIExB QkVMX1JFRlMoTEFCRUwpIFhDRVhQIChMQUJFTCwgNCwgQ09ERV9MQUJFTCkKCgoKCgojZGVm aW5lIExBQkVMX05FWFRSRUYoUkVGKSBYQ0VYUCAoUkVGLCAxLCBMQUJFTF9SRUYpCgoKCgoj ZGVmaW5lIENPTlRBSU5JTkdfSU5TTihSVFgpIFhDRVhQIChSVFgsIDIsIExBQkVMX1JFRikK CgoKCgojZGVmaW5lIFJFR05PKFJUWCkgWENVSU5UIChSVFgsIDAsIFJFRykKI2RlZmluZSBP UklHSU5BTF9SRUdOTyhSVFgpIFgwVUlOVCAoUlRYLCAxKQoKCgoKI2RlZmluZSBSRUdfRlVO Q1RJT05fVkFMVUVfUChSVFgpICgoUlRYKS0+aW50ZWdyYXRlZCkKCgojZGVmaW5lIFJFR19V U0VSVkFSX1AoUlRYKSAoKFJUWCktPnZvbGF0aWwpCgoKI2RlZmluZSBSRUdfUE9JTlRFUihS VFgpICgoUlRYKS0+ZnJhbWVfcmVsYXRlZCkKCgojZGVmaW5lIEhBUkRfUkVHSVNURVJfUChS RUcpIChIQVJEX1JFR0lTVEVSX05VTV9QIChSRUdOTyAoUkVHKSkpCgoKI2RlZmluZSBIQVJE X1JFR0lTVEVSX05VTV9QKFJFR19OTykgKChSRUdfTk8pIDwgRklSU1RfUFNFVURPX1JFR0lT VEVSKQoKCgojZGVmaW5lIElOVFZBTChSVFgpIFhDV0lOVChSVFgsIDAsIENPTlNUX0lOVCkK IyA4MjEgInJ0bC5oIgojZGVmaW5lIENPTlNUX0RPVUJMRV9MT1cocikgWENXSU5UIChyLCAx LCBDT05TVF9ET1VCTEUpCiNkZWZpbmUgQ09OU1RfRE9VQkxFX0hJR0gocikgWENXSU5UIChy LCAyLCBDT05TVF9ET1VCTEUpCgoKI2RlZmluZSBDT05TVF9ET1VCTEVfQ0hBSU4ocikgWENF WFAgKHIsIDAsIENPTlNUX0RPVUJMRSkKCgojZGVmaW5lIENPTlNUX1ZFQ1RPUl9FTFQoUlRY LE4pIFhDVkVDRVhQIChSVFgsIDAsIE4sIENPTlNUX1ZFQ1RPUikKCgojZGVmaW5lIENPTlNU X1ZFQ1RPUl9OVU5JVFMoUlRYKSBYQ1ZFQ0xFTiAoUlRYLCAwLCBDT05TVF9WRUNUT1IpCgoK CgojZGVmaW5lIFNVQlJFR19SRUcoUlRYKSBYQ0VYUCAoUlRYLCAwLCBTVUJSRUcpCiNkZWZp bmUgU1VCUkVHX0JZVEUoUlRYKSBYQ1VJTlQgKFJUWCwgMSwgU1VCUkVHKQoKCmV4dGVybiB1 bnNpZ25lZCBpbnQgc3VicmVnX2xzYiAocnR4KTsKZXh0ZXJuIHVuc2lnbmVkIGludCBzdWJy ZWdfcmVnbm9fb2Zmc2V0ICh1bnNpZ25lZCBpbnQsIGVudW0gbWFjaGluZV9tb2RlLCB1bnNp Z25lZCBpbnQsIGVudW0gbWFjaGluZV9tb2RlKQoKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKZXh0ZXJuIHVuc2lnbmVkIGludCBzdWJyZWdfcmVnbm8gKHJ0eCk7CiMgODU1ICJy dGwuaCIKI2RlZmluZSBTVUJSRUdfUFJPTU9URURfVkFSX1AoUlRYKSAoKFJUWCktPmluX3N0 cnVjdCkKI2RlZmluZSBTVUJSRUdfUFJPTU9URURfVU5TSUdORURfUChSVFgpICgoUlRYKS0+ dW5jaGFuZ2luZykKCgoKI2RlZmluZSBBU01fT1BFUkFORFNfVEVNUExBVEUoUlRYKSBYQ1NU UiAoUlRYLCAwLCBBU01fT1BFUkFORFMpCiNkZWZpbmUgQVNNX09QRVJBTkRTX09VVFBVVF9D T05TVFJBSU5UKFJUWCkgWENTVFIgKFJUWCwgMSwgQVNNX09QRVJBTkRTKQojZGVmaW5lIEFT TV9PUEVSQU5EU19PVVRQVVRfSURYKFJUWCkgWENJTlQgKFJUWCwgMiwgQVNNX09QRVJBTkRT KQojZGVmaW5lIEFTTV9PUEVSQU5EU19JTlBVVF9WRUMoUlRYKSBYQ1ZFQyAoUlRYLCAzLCBB U01fT1BFUkFORFMpCiNkZWZpbmUgQVNNX09QRVJBTkRTX0lOUFVUX0NPTlNUUkFJTlRfVkVD KFJUWCkgWENWRUMgKFJUWCwgNCwgQVNNX09QRVJBTkRTKQojZGVmaW5lIEFTTV9PUEVSQU5E U19JTlBVVChSVFgsTikgWENWRUNFWFAgKFJUWCwgMywgTiwgQVNNX09QRVJBTkRTKQojZGVm aW5lIEFTTV9PUEVSQU5EU19JTlBVVF9MRU5HVEgoUlRYKSBYQ1ZFQ0xFTiAoUlRYLCAzLCBB U01fT1BFUkFORFMpCiNkZWZpbmUgQVNNX09QRVJBTkRTX0lOUFVUX0NPTlNUUkFJTlRfRVhQ KFJUWCxOKSBYQ1ZFQ0VYUCAoUlRYLCA0LCBOLCBBU01fT1BFUkFORFMpCgojZGVmaW5lIEFT TV9PUEVSQU5EU19JTlBVVF9DT05TVFJBSU5UKFJUWCxOKSBYU1RSIChYQ1ZFQ0VYUCAoUlRY LCA0LCBOLCBBU01fT1BFUkFORFMpLCAwKQoKI2RlZmluZSBBU01fT1BFUkFORFNfSU5QVVRf TU9ERShSVFgsTikgR0VUX01PREUgKFhDVkVDRVhQIChSVFgsIDQsIE4sIEFTTV9PUEVSQU5E UykpCgojZGVmaW5lIEFTTV9PUEVSQU5EU19TT1VSQ0VfRklMRShSVFgpIFhDU1RSIChSVFgs IDUsIEFTTV9PUEVSQU5EUykKI2RlZmluZSBBU01fT1BFUkFORFNfU09VUkNFX0xJTkUoUlRY KSBYQ0lOVCAoUlRYLCA2LCBBU01fT1BFUkFORFMpCgoKCgojZGVmaW5lIE1FTV9LRUVQX0FM SUFTX1NFVF9QKFJUWCkgKChSVFgpLT5qdW1wKQoKCgojZGVmaW5lIE1FTV9WT0xBVElMRV9Q KFJUWCkgKChSVFgpLT52b2xhdGlsKQoKCgoKI2RlZmluZSBNRU1fSU5fU1RSVUNUX1AoUlRY KSAoKFJUWCktPmluX3N0cnVjdCkKCgoKI2RlZmluZSBNRU1fU0NBTEFSX1AoUlRYKSAoKFJU WCktPmZyYW1lX3JlbGF0ZWQpCgoKCgoKI2RlZmluZSBNRU1fU0VUX0lOX1NUUlVDVF9QKFJU WCxWQUwpIGRvIHsgaWYgKFZBTCkgeyBNRU1fSU5fU1RSVUNUX1AgKFJUWCkgPSAxOyBNRU1f U0NBTEFSX1AgKFJUWCkgPSAwOyB9IGVsc2UgeyBNRU1fSU5fU1RSVUNUX1AgKFJUWCkgPSAw OyBNRU1fU0NBTEFSX1AgKFJUWCkgPSAxOyB9IH0gd2hpbGUgKDApCiMgOTE0ICJydGwuaCIK I2RlZmluZSBNRU1fQVRUUlMoUlRYKSBYME1FTUFUVFIgKFJUWCwgMSkKIyA5MjUgInJ0bC5o IgojZGVmaW5lIE1FTV9BTElBU19TRVQoUlRYKSAoTUVNX0FUVFJTIChSVFgpID09IDAgPyAw IDogTUVNX0FUVFJTIChSVFgpLT5hbGlhcykKCgoKI2RlZmluZSBNRU1fRVhQUihSVFgpIChN RU1fQVRUUlMgKFJUWCkgPT0gMCA/IDAgOiBNRU1fQVRUUlMgKFJUWCktPmV4cHIpCgoKCiNk ZWZpbmUgTUVNX09GRlNFVChSVFgpIChNRU1fQVRUUlMgKFJUWCkgPT0gMCA/IDAgOiBNRU1f QVRUUlMgKFJUWCktPm9mZnNldCkKCgoKI2RlZmluZSBNRU1fU0laRShSVFgpIChNRU1fQVRU UlMgKFJUWCkgIT0gMCA/IE1FTV9BVFRSUyAoUlRYKS0+c2l6ZSA6IEdFVF9NT0RFIChSVFgp ICE9IEJMS21vZGUgPyBHRU5fSU5UIChHRVRfTU9ERV9TSVpFIChHRVRfTU9ERSAoUlRYKSkp IDogMCkKCgoKCgoKI2RlZmluZSBNRU1fQUxJR04oUlRYKSAoTUVNX0FUVFJTIChSVFgpICE9 IDAgPyBNRU1fQVRUUlMgKFJUWCktPmFsaWduIDogKFNUUklDVF9BTElHTk1FTlQgJiYgR0VU X01PREUgKFJUWCkgIT0gQkxLbW9kZSA/IEdFVF9NT0RFX0FMSUdOTUVOVCAoR0VUX01PREUg KFJUWCkpIDogQklUU19QRVJfVU5JVCkpCgoKCgoKI2RlZmluZSBNRU1fQ09QWV9BVFRSSUJV VEVTKExIUyxSSFMpIChNRU1fVk9MQVRJTEVfUCAoTEhTKSA9IE1FTV9WT0xBVElMRV9QIChS SFMpLCBNRU1fSU5fU1RSVUNUX1AgKExIUykgPSBNRU1fSU5fU1RSVUNUX1AgKFJIUyksIE1F TV9TQ0FMQVJfUCAoTEhTKSA9IE1FTV9TQ0FMQVJfUCAoUkhTKSwgUlRYX1VOQ0hBTkdJTkdf UCAoTEhTKSA9IFJUWF9VTkNIQU5HSU5HX1AgKFJIUyksIE1FTV9LRUVQX0FMSUFTX1NFVF9Q IChMSFMpID0gTUVNX0tFRVBfQUxJQVNfU0VUX1AgKFJIUyksIE1FTV9BVFRSUyAoTEhTKSA9 IE1FTV9BVFRSUyAoUkhTKSkKIyA5NjAgInJ0bC5oIgojZGVmaW5lIExBQkVMX09VVFNJREVf TE9PUF9QKFJUWCkgKChSVFgpLT5pbl9zdHJ1Y3QpCgoKCiNkZWZpbmUgTEFCRUxfUkVGX05P TkxPQ0FMX1AoUlRYKSAoKFJUWCktPnZvbGF0aWwpCgoKI2RlZmluZSBMQUJFTF9QUkVTRVJW RV9QKFJUWCkgKChSVFgpLT5pbl9zdHJ1Y3QpCgoKI2RlZmluZSBSRUdfTE9PUF9URVNUX1Ao UlRYKSAoKFJUWCktPmluX3N0cnVjdCkKCgoKI2RlZmluZSBTQ0hFRF9HUk9VUF9QKElOU04p ICgoSU5TTiktPmluX3N0cnVjdCkKIyA5ODMgInJ0bC5oIgojZGVmaW5lIExJTktfQ09TVF9a RVJPKFgpICgoWCktPmp1bXApCiNkZWZpbmUgTElOS19DT1NUX0ZSRUUoWCkgKChYKS0+Y2Fs bCkKCgoKI2RlZmluZSBTRVRfREVTVChSVFgpIFhDMkVYUChSVFgsIDAsIFNFVCwgQ0xPQkJF UikKI2RlZmluZSBTRVRfU1JDKFJUWCkgWENFWFAoUlRYLCAxLCBTRVQpCiNkZWZpbmUgU0VU X0lTX1JFVFVSTl9QKFJUWCkgKChSVFgpLT5qdW1wKQoKCiNkZWZpbmUgVFJBUF9DT05ESVRJ T04oUlRYKSBYQ0VYUCAoUlRYLCAwLCBUUkFQX0lGKQojZGVmaW5lIFRSQVBfQ09ERShSVFgp IFhDRVhQIChSVFgsIDEsIFRSQVBfSUYpCgoKCgojZGVmaW5lIENPTkRfRVhFQ19URVNUKFJU WCkgWENFWFAgKFJUWCwgMCwgQ09ORF9FWEVDKQojZGVmaW5lIENPTkRfRVhFQ19DT0RFKFJU WCkgWENFWFAgKFJUWCwgMSwgQ09ORF9FWEVDKQoKCiNkZWZpbmUgQ09OU1RBTlRfUE9PTF9B RERSRVNTX1AoUlRYKSAoKFJUWCktPnVuY2hhbmdpbmcpCgoKI2RlZmluZSBTVFJJTkdfUE9P TF9BRERSRVNTX1AoUlRYKSAoKFJUWCktPmZyYW1lX3JlbGF0ZWQpCgoKI2RlZmluZSBTWU1C T0xfUkVGX0ZMQUcoUlRYKSAoKFJUWCktPnZvbGF0aWwpCgoKI2RlZmluZSBTWU1CT0xfUkVG X1VTRUQoUlRYKSAoKFJUWCktPnVzZWQpCgoKI2RlZmluZSBTWU1CT0xfUkVGX1dFQUsoUlRY KSAoKFJUWCktPmludGVncmF0ZWQpCiMgMTAyNyAicnRsLmgiCiNkZWZpbmUgRklORF9SRUdf SU5DX05PVEUoSU5TTixSRUcpIDAKIyAxMDM5ICJydGwuaCIKI2RlZmluZSBIQVZFX1BSRV9J TkNSRU1FTlQgMAoKCgojZGVmaW5lIEhBVkVfUFJFX0RFQ1JFTUVOVCAwCgoKCiNkZWZpbmUg SEFWRV9QT1NUX0lOQ1JFTUVOVCAwCgoKCiNkZWZpbmUgSEFWRV9QT1NUX0RFQ1JFTUVOVCAw CgoKCiNkZWZpbmUgSEFWRV9QT1NUX01PRElGWV9ESVNQIDAKCgoKI2RlZmluZSBIQVZFX1BP U1RfTU9ESUZZX1JFRyAwCgoKCiNkZWZpbmUgSEFWRV9QUkVfTU9ESUZZX0RJU1AgMAoKCgoj ZGVmaW5lIEhBVkVfUFJFX01PRElGWV9SRUcgMAojIDEwNzYgInJ0bC5oIgojZGVmaW5lIFVT RV9MT0FEX1BPU1RfSU5DUkVNRU5UKE1PREUpIEhBVkVfUE9TVF9JTkNSRU1FTlQKCgoKI2Rl ZmluZSBVU0VfTE9BRF9QT1NUX0RFQ1JFTUVOVChNT0RFKSBIQVZFX1BPU1RfREVDUkVNRU5U CgoKCiNkZWZpbmUgVVNFX0xPQURfUFJFX0lOQ1JFTUVOVChNT0RFKSBIQVZFX1BSRV9JTkNS RU1FTlQKCgoKI2RlZmluZSBVU0VfTE9BRF9QUkVfREVDUkVNRU5UKE1PREUpIEhBVkVfUFJF X0RFQ1JFTUVOVAoKCgojZGVmaW5lIFVTRV9TVE9SRV9QT1NUX0lOQ1JFTUVOVChNT0RFKSBI QVZFX1BPU1RfSU5DUkVNRU5UCgoKCiNkZWZpbmUgVVNFX1NUT1JFX1BPU1RfREVDUkVNRU5U KE1PREUpIEhBVkVfUE9TVF9ERUNSRU1FTlQKCgoKI2RlZmluZSBVU0VfU1RPUkVfUFJFX0lO Q1JFTUVOVChNT0RFKSBIQVZFX1BSRV9JTkNSRU1FTlQKCgoKI2RlZmluZSBVU0VfU1RPUkVf UFJFX0RFQ1JFTUVOVChNT0RFKSBIQVZFX1BSRV9ERUNSRU1FTlQKCgoKCgojZGVmaW5lIFJB TkdFX0lORk9fTk9URV9TVEFSVChJTlNOKSBYQ0VYUCAoSU5TTiwgMCwgUkFOR0VfSU5GTykK CgojZGVmaW5lIFJBTkdFX0lORk9fTk9URV9FTkQoSU5TTikgWENFWFAgKElOU04sIDEsIFJB TkdFX0lORk8pCgoKCiNkZWZpbmUgUkFOR0VfSU5GT19SRUdTKElOU04pIFhDVkVDIChJTlNO LCAyLCBSQU5HRV9JTkZPKQojZGVmaW5lIFJBTkdFX0lORk9fUkVHU19SRUcoSU5TTixOKSBY Q1ZFQ0VYUCAoSU5TTiwgMiwgTiwgUkFOR0VfSU5GTykKI2RlZmluZSBSQU5HRV9JTkZPX05V TV9SRUdTKElOU04pIFhDVkVDTEVOIChJTlNOLCAyLCBSQU5HRV9JTkZPKQoKCiNkZWZpbmUg UkFOR0VfSU5GT19OQ0FMTFMoSU5TTikgWENJTlQgKElOU04sIDMsIFJBTkdFX0lORk8pCgoK I2RlZmluZSBSQU5HRV9JTkZPX05JTlNOUyhJTlNOKSBYQ0lOVCAoSU5TTiwgNCwgUkFOR0Vf SU5GTykKCgojZGVmaW5lIFJBTkdFX0lORk9fVU5JUVVFKElOU04pIFhDSU5UIChJTlNOLCA1 LCBSQU5HRV9JTkZPKQoKCiNkZWZpbmUgUkFOR0VfSU5GT19CQl9TVEFSVChJTlNOKSBYQ0lO VCAoSU5TTiwgNiwgUkFOR0VfSU5GTykKCgojZGVmaW5lIFJBTkdFX0lORk9fQkJfRU5EKElO U04pIFhDSU5UIChJTlNOLCA3LCBSQU5HRV9JTkZPKQoKCiNkZWZpbmUgUkFOR0VfSU5GT19M T09QX0RFUFRIKElOU04pIFhDSU5UIChJTlNOLCA4LCBSQU5HRV9JTkZPKQoKCgojZGVmaW5l IFJBTkdFX0lORk9fTElWRV9TVEFSVChJTlNOKSBYQ0JJVE1BUCAoSU5TTiwgOSwgUkFOR0Vf SU5GTykKCgoKI2RlZmluZSBSQU5HRV9JTkZPX0xJVkVfRU5EKElOU04pIFhDQklUTUFQIChJ TlNOLCAxMCwgUkFOR0VfSU5GTykKCgojZGVmaW5lIFJBTkdFX0lORk9fTUFSS0VSX1NUQVJU KElOU04pIFhDSU5UIChJTlNOLCAxMSwgUkFOR0VfSU5GTykKCgojZGVmaW5lIFJBTkdFX0lO Rk9fTUFSS0VSX0VORChJTlNOKSBYQ0lOVCAoSU5TTiwgMTIsIFJBTkdFX0lORk8pCgoKI2Rl ZmluZSBSQU5HRV9SRUdfUFNFVURPKElOU04sTikgWENJTlQgKFhDVkVDRVhQIChJTlNOLCAy LCBOLCBSQU5HRV9JTkZPKSwgMCwgUkVHKQoKCiNkZWZpbmUgUkFOR0VfUkVHX0NPUFkoSU5T TixOKSBYQ0lOVCAoWENWRUNFWFAgKElOU04sIDIsIE4sIFJBTkdFX0lORk8pLCAxLCBSRUcp CgoKI2RlZmluZSBSQU5HRV9SRUdfUkVGUyhJTlNOLE4pIFhJTlQgKFhDVkVDRVhQIChJTlNO LCAyLCBOLCBSQU5HRV9JTkZPKSwgMikKCgojZGVmaW5lIFJBTkdFX1JFR19TRVRTKElOU04s TikgWElOVCAoWENWRUNFWFAgKElOU04sIDIsIE4sIFJBTkdFX0lORk8pLCAzKQoKCiNkZWZp bmUgUkFOR0VfUkVHX0RFQVRIUyhJTlNOLE4pIFhJTlQgKFhDVkVDRVhQIChJTlNOLCAyLCBO LCBSQU5HRV9JTkZPKSwgNCkKCgoKI2RlZmluZSBSQU5HRV9SRUdfQ09QWV9GTEFHUyhJTlNO LE4pIFhJTlQgKFhDVkVDRVhQIChJTlNOLCAyLCBOLCBSQU5HRV9JTkZPKSwgNSkKCgojZGVm aW5lIFJBTkdFX1JFR19MSVZFX0xFTkdUSChJTlNOLE4pIFhJTlQgKFhDVkVDRVhQIChJTlNO LCAyLCBOLCBSQU5HRV9JTkZPKSwgNikKCgojZGVmaW5lIFJBTkdFX1JFR19OX0NBTExTKElO U04sTikgWElOVCAoWENWRUNFWFAgKElOU04sIDIsIE4sIFJBTkdFX0lORk8pLCA3KQoKCgoj ZGVmaW5lIFJBTkdFX1JFR19TWU1CT0xfTk9ERShJTlNOLE4pIFhUUkVFIChYQ1ZFQ0VYUCAo SU5TTiwgMiwgTiwgUkFOR0VfSU5GTyksIDgpCgoKCiNkZWZpbmUgUkFOR0VfUkVHX0JMT0NL X05PREUoSU5TTixOKSBYVFJFRSAoWENWRUNFWFAgKElOU04sIDIsIE4sIFJBTkdFX0lORk8p LCA5KQoKCiNkZWZpbmUgUkFOR0VfVkFSX0xJU1QoSU5TTikgKFhFWFAgKElOU04sIDApKQoK CiNkZWZpbmUgUkFOR0VfVkFSX0JMT0NLKElOU04pIChYVFJFRSAoSU5TTiwgMSkpCgoKI2Rl ZmluZSBSQU5HRV9WQVJfTlVNKElOU04pIChYSU5UIChJTlNOLCAyKSkKCgojZGVmaW5lIFJB TkdFX0xJVkVfQklUTUFQKElOU04pIChYQklUTUFQIChJTlNOLCAwKSkKCgojZGVmaW5lIFJB TkdFX0xJVkVfT1JJR19CTE9DSyhJTlNOKSAoWElOVCAoSU5TTiwgMSkpCgoKI2RlZmluZSBQ SElfTk9ERV9QKFgpICgoWCkgJiYgR0VUX0NPREUgKFgpID09IElOU04gJiYgR0VUX0NPREUg KFBBVFRFUk4gKFgpKSA9PSBTRVQgJiYgR0VUX0NPREUgKFNFVF9TUkMgKFBBVFRFUk4gKFgp KSkgPT0gUEhJKQojIDEyMTEgInJ0bC5oIgpleHRlcm4gaW50IHJ0eF9lcXVhbF9mdW5jdGlv bl92YWx1ZV9tYXR0ZXJzOwoKCmV4dGVybiBpbnQgZ2VuZXJhdGluZ19jb25jYXRfcDsKCgoK CmV4dGVybiBpbnQgY2VpbF9sb2cyICh1bnNpZ25lZCBsb25nKTsKCiNkZWZpbmUgcGx1c19j b25zdGFudChYLEMpIHBsdXNfY29uc3RhbnRfd2lkZSAoKFgpLCAoSE9TVF9XSURFX0lOVCkg KEMpKQoKCmV4dGVybiBydHggZXhwYW5kX2J1aWx0aW5fZXhwZWN0X2p1bXAgKHRyZWUsIHJ0 eCwgcnR4KTsKCgpleHRlcm4gdm9pZCBzZXRfc3RhY2tfY2hlY2tfbGliZnVuYyAocnR4KTsK ZXh0ZXJuIGxvbmcgdHJ1bmNfaW50X2Zvcl9tb2RlIChsb25nLCBlbnVtIG1hY2hpbmVfbW9k ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBwbHVzX2Nv bnN0YW50X3dpZGUgKHJ0eCwgbG9uZyk7CmV4dGVybiBydHggcGx1c19jb25zdGFudF9mb3Jf b3V0cHV0X3dpZGUgKHJ0eCwgbG9uZyk7CmV4dGVybiB2b2lkIG9wdGltaXplX3NhdmVfYXJl YV9hbGxvY2EgKHJ0eCk7CgoKZXh0ZXJuIHJ0eCBnZW5fcnR4IChlbnVtIHJ0eF9jb2RlLCBl bnVtIG1hY2hpbmVfbW9kZSwgLi4uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OwpleHRlcm4gcnR2ZWMgZ2VuX3J0dmVjIChpbnQsIC4uLik7CmV4dGVybiBydHggY29weV9p bnNuXzEgKHJ0eCk7CmV4dGVybiBydHggY29weV9pbnNuIChydHgpOwpleHRlcm4gcnR4IGdl bl9pbnRfbW9kZSAobG9uZywgZW51bSBtYWNoaW5lX21vZGUpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgOwoKCmV4dGVybiBydHggcnR4X2FsbG9jIChlbnVtIHJ0eF9jb2RlKTsKZXh0 ZXJuIHJ0dmVjIHJ0dmVjX2FsbG9jIChpbnQpOwpleHRlcm4gcnR4IGNvcHlfcnR4IChydHgp OwoKCmV4dGVybiBydHggY29weV9ydHhfaWZfc2hhcmVkIChydHgpOwoKCmV4dGVybiBydHgg Y29weV9tb3N0X3J0eCAocnR4LCBydHgpOwpleHRlcm4gcnR4IHNoYWxsb3dfY29weV9ydHgg KHJ0eCk7CmV4dGVybiBpbnQgcnR4X2VxdWFsX3AgKHJ0eCwgcnR4KTsKCgpleHRlcm4gcnR2 ZWMgZ2VuX3J0dmVjX3YgKGludCwgcnR4ICopOwpleHRlcm4gcnR4IGdlbl9yZWdfcnR4IChl bnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBydHggZ2VuX2xhYmVsX3J0eCAodm9pZCk7CmV4 dGVybiBpbnQgc3VicmVnX2hhcmRfcmVnbm8gKHJ0eCwgaW50KTsKZXh0ZXJuIHJ0eCBnZW5f bG93cGFydF9jb21tb24gKGVudW0gbWFjaGluZV9tb2RlLCBydHgpOwpleHRlcm4gcnR4IGdl bl9sb3dwYXJ0IChlbnVtIG1hY2hpbmVfbW9kZSwgcnR4KTsKCgpleHRlcm4gcnR4IGdlbl9s b3dwYXJ0X2lmX3Bvc3NpYmxlIChlbnVtIG1hY2hpbmVfbW9kZSwgcnR4KTsKCgpleHRlcm4g cnR4IGdlbl9oaWdocGFydCAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7CmV4dGVybiBydHgg Z2VuX2hpZ2hwYXJ0X21vZGUgKGVudW0gbWFjaGluZV9tb2RlLCBlbnVtIG1hY2hpbmVfbW9k ZSwgcnR4KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gcnR4IGdl bl9yZWFscGFydCAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7CmV4dGVybiBydHggZ2VuX2lt YWdwYXJ0IChlbnVtIG1hY2hpbmVfbW9kZSwgcnR4KTsKZXh0ZXJuIHJ0eCBvcGVyYW5kX3N1 YndvcmQgKHJ0eCwgdW5zaWduZWQgaW50LCBpbnQsIGVudW0gbWFjaGluZV9tb2RlKQogICAg ICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBjb25zdGFudF9zdWJ3b3JkIChy dHgsIGludCwgZW51bSBtYWNoaW5lX21vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAg OwoKCmV4dGVybiBydHggb3BlcmFuZF9zdWJ3b3JkX2ZvcmNlIChydHgsIHVuc2lnbmVkIGlu dCwgZW51bSBtYWNoaW5lX21vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRl cm4gaW50IHN1YnJlZ19sb3dwYXJ0X3AgKHJ0eCk7CmV4dGVybiB1bnNpZ25lZCBpbnQgc3Vi cmVnX2xvd3BhcnRfb2Zmc2V0IChlbnVtIG1hY2hpbmVfbW9kZSwgZW51bSBtYWNoaW5lX21v ZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiB1bnNpZ25lZCBpbnQg c3VicmVnX2hpZ2hwYXJ0X29mZnNldCAoZW51bSBtYWNoaW5lX21vZGUsIGVudW0gbWFjaGlu ZV9tb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBtYWtl X3NhZmVfZnJvbSAocnR4LCBydHgpOwpleHRlcm4gcnR4IGNvbnZlcnRfbWVtb3J5X2FkZHJl c3MgKGVudW0gbWFjaGluZV9tb2RlLCBydHgpOwpleHRlcm4gcnR4IGdldF9pbnNucyAodm9p ZCk7CmV4dGVybiBjb25zdCBjaGFyICpnZXRfaW5zbl9uYW1lIChpbnQpOwpleHRlcm4gcnR4 IGdldF9sYXN0X2luc24gKHZvaWQpOwpleHRlcm4gcnR4IGdldF9sYXN0X2luc25fYW55d2hl cmUgKHZvaWQpOwpleHRlcm4gdm9pZCBzdGFydF9zZXF1ZW5jZSAodm9pZCk7CmV4dGVybiB2 b2lkIHB1c2hfdG9fc2VxdWVuY2UgKHJ0eCk7CmV4dGVybiB2b2lkIGVuZF9zZXF1ZW5jZSAo dm9pZCk7CmV4dGVybiB2b2lkIHB1c2hfdG9fZnVsbF9zZXF1ZW5jZSAocnR4LCBydHgpOwpl eHRlcm4gdm9pZCBlbmRfZnVsbF9zZXF1ZW5jZSAocnR4KiwgcnR4Kik7CmV4dGVybiBydHgg Z2VuX3NlcXVlbmNlICh2b2lkKTsKCgpleHRlcm4gcnR4IGltbWVkX2RvdWJsZV9jb25zdCAo bG9uZywgbG9uZywgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gcnR4IG1lbV9mb3JfY29u c3RfZG91YmxlIChydHgpOwpleHRlcm4gcnR4IGZvcmNlX2NvbnN0X21lbSAoZW51bSBtYWNo aW5lX21vZGUsIHJ0eCk7CgoKZXh0ZXJuIHJ0eCBnZXRfcG9vbF9jb25zdGFudCAocnR4KTsK ZXh0ZXJuIHJ0eCBnZXRfcG9vbF9jb25zdGFudF9tYXJrIChydHgsIF9Cb29sICopOwpleHRl cm4gZW51bSBtYWNoaW5lX21vZGUgZ2V0X3Bvb2xfbW9kZSAocnR4KTsKZXh0ZXJuIHJ0eCBn ZXRfcG9vbF9jb25zdGFudF9mb3JfZnVuY3Rpb24gKHN0cnVjdCBmdW5jdGlvbiAqLCBydHgp OwpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgZ2V0X3Bvb2xfbW9kZV9mb3JfZnVuY3Rpb24g KHN0cnVjdCBmdW5jdGlvbiAqLCBydHgpOwpleHRlcm4gaW50IGdldF9wb29sX29mZnNldCAo cnR4KTsKZXh0ZXJuIHJ0eCBzaW1wbGlmeV9zdWJ0cmFjdGlvbiAocnR4KTsKCgpleHRlcm4g cnR4IGFzc2lnbl9zdGFja19sb2NhbCAoZW51bSBtYWNoaW5lX21vZGUsIGxvbmcsIGludCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggYXNzaWduX3N0 YWNrX3RlbXAgKGVudW0gbWFjaGluZV9tb2RlLCBsb25nLCBpbnQpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwpleHRlcm4gcnR4IGFzc2lnbl9zdGFja190ZW1wX2Zvcl90 eXBlIChlbnVtIG1hY2hpbmVfbW9kZSwgbG9uZywgaW50LCB0cmVlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggYXNzaWduX3RlbXAgKHRyZWUsIGlu dCwgaW50LCBpbnQpOwoKZXh0ZXJuIHJ0eCBlbWl0X2luc25fYmVmb3JlIChydHgsIHJ0eCk7 CmV4dGVybiBydHggZW1pdF9qdW1wX2luc25fYmVmb3JlIChydHgsIHJ0eCk7CmV4dGVybiBy dHggZW1pdF9jYWxsX2luc25fYmVmb3JlIChydHgsIHJ0eCk7CmV4dGVybiBydHggZW1pdF9i YXJyaWVyX2JlZm9yZSAocnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2xhYmVsX2JlZm9yZSAocnR4 LCBydHgpOwpleHRlcm4gcnR4IGVtaXRfbm90ZV9iZWZvcmUgKGludCwgcnR4KTsKZXh0ZXJu IHJ0eCBlbWl0X2luc25fYWZ0ZXIgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2p1bXBf aW5zbl9hZnRlciAocnR4LCBydHgpOwpleHRlcm4gcnR4IGVtaXRfYmFycmllcl9hZnRlciAo cnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2xhYmVsX2FmdGVyIChydHgsIHJ0eCk7CmV4dGVybiBy dHggZW1pdF9ub3RlX2FmdGVyIChpbnQsIHJ0eCk7CmV4dGVybiBydHggZW1pdF9saW5lX25v dGVfYWZ0ZXIgKGNvbnN0IGNoYXIgKiwgaW50LCBydHgpOwpleHRlcm4gcnR4IGVtaXRfaW5z biAocnR4KTsKZXh0ZXJuIHJ0eCBlbWl0X2luc25zIChydHgpOwpleHRlcm4gcnR4IGVtaXRf aW5zbnNfYmVmb3JlIChydHgsIHJ0eCk7CmV4dGVybiBydHggZW1pdF9pbnNuc19hZnRlciAo cnR4LCBydHgpOwpleHRlcm4gcnR4IGVtaXRfanVtcF9pbnNuIChydHgpOwpleHRlcm4gcnR4 IGVtaXRfY2FsbF9pbnNuIChydHgpOwpleHRlcm4gcnR4IGVtaXRfbGFiZWwgKHJ0eCk7CmV4 dGVybiBydHggZW1pdF9iYXJyaWVyICh2b2lkKTsKZXh0ZXJuIHJ0eCBlbWl0X2xpbmVfbm90 ZSAoY29uc3QgY2hhciAqLCBpbnQpOwpleHRlcm4gcnR4IGVtaXRfbm90ZSAoY29uc3QgY2hh ciAqLCBpbnQpOwpleHRlcm4gcnR4IGVtaXRfbGluZV9ub3RlX2ZvcmNlIChjb25zdCBjaGFy ICosIGludCk7CmV4dGVybiBydHggbWFrZV9pbnNuX3JhdyAocnR4KTsKZXh0ZXJuIHJ0eCBw cmV2aW91c19pbnNuIChydHgpOwpleHRlcm4gcnR4IG5leHRfaW5zbiAocnR4KTsKZXh0ZXJu IHJ0eCBwcmV2X25vbm5vdGVfaW5zbiAocnR4KTsKZXh0ZXJuIHJ0eCBuZXh0X25vbm5vdGVf aW5zbiAocnR4KTsKZXh0ZXJuIHJ0eCBwcmV2X3JlYWxfaW5zbiAocnR4KTsKZXh0ZXJuIHJ0 eCBuZXh0X3JlYWxfaW5zbiAocnR4KTsKZXh0ZXJuIHJ0eCBwcmV2X2FjdGl2ZV9pbnNuIChy dHgpOwpleHRlcm4gcnR4IG5leHRfYWN0aXZlX2luc24gKHJ0eCk7CmV4dGVybiBpbnQgYWN0 aXZlX2luc25fcCAocnR4KTsKZXh0ZXJuIHJ0eCBwcmV2X2xhYmVsIChydHgpOwpleHRlcm4g cnR4IG5leHRfbGFiZWwgKHJ0eCk7CmV4dGVybiBydHggbmV4dF9jYzBfdXNlciAocnR4KTsK ZXh0ZXJuIHJ0eCBwcmV2X2NjMF9zZXR0ZXIgKHJ0eCk7CgoKZXh0ZXJuIHJ0eCBuZXh0X25v bmRlbGV0ZWRfaW5zbiAocnR4KTsKZXh0ZXJuIGVudW0gcnR4X2NvZGUgcmV2ZXJzZV9jb25k aXRpb24gKGVudW0gcnR4X2NvZGUpOwpleHRlcm4gZW51bSBydHhfY29kZSByZXZlcnNlX2Nv bmRpdGlvbl9tYXliZV91bm9yZGVyZWQgKGVudW0gcnR4X2NvZGUpOwpleHRlcm4gZW51bSBy dHhfY29kZSBzd2FwX2NvbmRpdGlvbiAoZW51bSBydHhfY29kZSk7CmV4dGVybiBlbnVtIHJ0 eF9jb2RlIHVuc2lnbmVkX2NvbmRpdGlvbiAoZW51bSBydHhfY29kZSk7CmV4dGVybiBlbnVt IHJ0eF9jb2RlIHNpZ25lZF9jb25kaXRpb24gKGVudW0gcnR4X2NvZGUpOwpleHRlcm4gdm9p ZCBtYXJrX2p1bXBfbGFiZWwgKHJ0eCwgcnR4LCBpbnQpOwpleHRlcm4gdm9pZCBjbGVhbnVw X2JhcnJpZXJzICh2b2lkKTsKCgpleHRlcm4gX0Jvb2wgc3F1ZWV6ZV9ub3RlcyAocnR4ICos IHJ0eCAqKTsKZXh0ZXJuIHJ0eCBkZWxldGVfcmVsYXRlZF9pbnNucyAocnR4KTsKZXh0ZXJu IHZvaWQgZGVsZXRlX2p1bXAgKHJ0eCk7CmV4dGVybiB2b2lkIGRlbGV0ZV9iYXJyaWVyIChy dHgpOwpleHRlcm4gcnR4IGdldF9sYWJlbF9iZWZvcmUgKHJ0eCk7CmV4dGVybiBydHggZ2V0 X2xhYmVsX2FmdGVyIChydHgpOwpleHRlcm4gcnR4IGZvbGxvd19qdW1wcyAocnR4KTsKCgpl eHRlcm4gcnR4ICpmaW5kX2NvbnN0YW50X3Rlcm1fbG9jIChydHggKik7CgoKZXh0ZXJuIHJ0 eCB0cnlfc3BsaXQgKHJ0eCwgcnR4LCBpbnQpOwpleHRlcm4gaW50IHNwbGl0X2JyYW5jaF9w cm9iYWJpbGl0eTsKCgpleHRlcm4gcnR4IHNwbGl0X2luc25zIChydHgsIHJ0eCk7CgoKZXh0 ZXJuIHJ0eCBzaW1wbGlmeV91bmFyeV9vcGVyYXRpb24gKGVudW0gcnR4X2NvZGUsIGVudW0g bWFjaGluZV9tb2RlLCBydHgsIGVudW0gbWFjaGluZV9tb2RlKQoKICAgICAgICAgICAgICAg ICAgICAgICAgICA7CmV4dGVybiBydHggc2ltcGxpZnlfYmluYXJ5X29wZXJhdGlvbiAoZW51 bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUsIHJ0eCwgcnR4KQoKICAgICAgICAgICAg OwpleHRlcm4gcnR4IHNpbXBsaWZ5X3Rlcm5hcnlfb3BlcmF0aW9uIChlbnVtIHJ0eF9jb2Rl LCBlbnVtIG1hY2hpbmVfbW9kZSwgZW51bSBtYWNoaW5lX21vZGUsIHJ0eCwgcnR4LCBydHgp CgoKICAgICAgICAgICAgOwpleHRlcm4gcnR4IHNpbXBsaWZ5X3JlbGF0aW9uYWxfb3BlcmF0 aW9uIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSwgcnR4LCBydHgpCgogICAg ICAgICAgICAgOwpleHRlcm4gcnR4IHNpbXBsaWZ5X2dlbl9iaW5hcnkgKGVudW0gcnR4X2Nv ZGUsIGVudW0gbWFjaGluZV9tb2RlLCBydHgsIHJ0eCkKCiAgICAgICAgICAgICAgICAgOwpl eHRlcm4gcnR4IHNpbXBsaWZ5X2dlbl91bmFyeSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNo aW5lX21vZGUsIHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpCgogICAgICAgICAgICAgICAgICAg ICAgICAgIDsKZXh0ZXJuIHJ0eCBzaW1wbGlmeV9nZW5fdGVybmFyeSAoZW51bSBydHhfY29k ZSwgZW51bSBtYWNoaW5lX21vZGUsIGVudW0gbWFjaGluZV9tb2RlLCBydHgsIHJ0eCwgcnR4 KQoKCiAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggc2ltcGxpZnlfZ2VuX3Jl bGF0aW9uYWwgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlLCBlbnVtIG1hY2hp bmVfbW9kZSwgcnR4LCBydHgpCgoKICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggc2lt cGxpZnlfc3VicmVnIChlbnVtIG1hY2hpbmVfbW9kZSwgcnR4LCBlbnVtIG1hY2hpbmVfbW9k ZSwgdW5zaWduZWQgaW50KQoKCiAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBz aW1wbGlmeV9nZW5fc3VicmVnIChlbnVtIG1hY2hpbmVfbW9kZSwgcnR4LCBlbnVtIG1hY2hp bmVfbW9kZSwgdW5zaWduZWQgaW50KQoKCiAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJu IHJ0eCBzaW1wbGlmeV9yZXBsYWNlX3J0eCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBydHgg c2ltcGxpZnlfcnR4IChydHgpOwpleHRlcm4gcnR4IGF2b2lkX2NvbnN0YW50X3Bvb2xfcmVm ZXJlbmNlIChydHgpOwoKCmV4dGVybiBydHggZ2VuX21lbV9hZGRyZXNzb2YgKHJ0eCwgdHJl ZSk7CgoKZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIGNob29zZV9oYXJkX3JlZ19tb2RlICh1 bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg OwoKCmV4dGVybiBydHggc2V0X3VuaXF1ZV9yZWdfbm90ZSAocnR4LCBlbnVtIHJlZ19ub3Rl LCBydHgpOwoKCgoKI2RlZmluZSBzaW5nbGVfc2V0KEkpIChJTlNOX1AgKEkpID8gKEdFVF9D T0RFIChQQVRURVJOIChJKSkgPT0gU0VUID8gUEFUVEVSTiAoSSkgOiBzaW5nbGVfc2V0XzEg KEkpKSA6IE5VTExfUlRYKQoKCgojZGVmaW5lIHNpbmdsZV9zZXRfMShJKSBzaW5nbGVfc2V0 XzIgKEksIFBBVFRFUk4gKEkpKQoKZXh0ZXJuIGludCBydHhfYWRkcl9jYW5fdHJhcF9wIChy dHgpOwpleHRlcm4gaW50IHJ0eF91bnN0YWJsZV9wIChydHgpOwpleHRlcm4gaW50IHJ0eF92 YXJpZXNfcCAocnR4LCBpbnQpOwpleHRlcm4gaW50IHJ0eF9hZGRyX3Zhcmllc19wIChydHgs IGludCk7CmV4dGVybiBsb25nIGdldF9pbnRlZ2VyX3Rlcm0gKHJ0eCk7CmV4dGVybiBydHgg Z2V0X3JlbGF0ZWRfdmFsdWUgKHJ0eCk7CmV4dGVybiBydHggZ2V0X2p1bXBfdGFibGVfb2Zm c2V0IChydHgsIHJ0eCAqKTsKZXh0ZXJuIGludCByZWdfbWVudGlvbmVkX3AgKHJ0eCwgcnR4 KTsKZXh0ZXJuIGludCBjb3VudF9vY2N1cnJlbmNlcyAocnR4LCBydHgsIGludCk7CmV4dGVy biBpbnQgcmVnX3JlZmVyZW5jZWRfcCAocnR4LCBydHgpOwpleHRlcm4gaW50IHJlZ191c2Vk X2JldHdlZW5fcCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBpbnQgcmVnX3JlZmVyZW5jZWRf YmV0d2Vlbl9wIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIGludCByZWdfc2V0X2JldHdlZW5f cCAocnR4LCBydHgsIHJ0eCk7CmV4dGVybiBpbnQgcmVnc19zZXRfYmV0d2Vlbl9wIChydHgs IHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBjb21tdXRhdGl2ZV9vcGVyYW5kX3ByZWNlZGVuY2Ug KHJ0eCk7CmV4dGVybiBpbnQgc3dhcF9jb21tdXRhdGl2ZV9vcGVyYW5kc19wIChydHgsIHJ0 eCk7CmV4dGVybiBpbnQgbW9kaWZpZWRfYmV0d2Vlbl9wIChydHgsIHJ0eCwgcnR4KTsKZXh0 ZXJuIGludCBub19sYWJlbHNfYmV0d2Vlbl9wIChydHgsIHJ0eCk7CmV4dGVybiBpbnQgbm9f anVtcHNfYmV0d2Vlbl9wIChydHgsIHJ0eCk7CmV4dGVybiBpbnQgbW9kaWZpZWRfaW5fcCAo cnR4LCBydHgpOwpleHRlcm4gaW50IGluc25fZGVwZW5kZW50X3AgKHJ0eCwgcnR4KTsKZXh0 ZXJuIGludCByZWdfc2V0X3AgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBzaW5nbGVfc2V0XzIg KHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBtdWx0aXBsZV9zZXRzIChydHgpOwpleHRlcm4gaW50 IHNldF9ub29wX3AgKHJ0eCk7CmV4dGVybiBpbnQgbm9vcF9tb3ZlX3AgKHJ0eCk7CmV4dGVy biBydHggZmluZF9sYXN0X3ZhbHVlIChydHgsIHJ0eCAqLCBydHgsIGludCk7CmV4dGVybiBp bnQgcmVmZXJzX3RvX3JlZ25vX3AgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LCBydHgs IHJ0eCAqKQogICAgICAgICAgICAgICAgICAgOwpleHRlcm4gaW50IHJlZ19vdmVybGFwX21l bnRpb25lZF9wIChydHgsIHJ0eCk7CmV4dGVybiBydHggc2V0X29mIChydHgsIHJ0eCk7CmV4 dGVybiB2b2lkIG5vdGVfc3RvcmVzIChydHgsIHZvaWQgKCopIChydHgsIHJ0eCwgdm9pZCAq KSwgdm9pZCAqKQoKICAgICAgICAgICAgICAgOwpleHRlcm4gdm9pZCBub3RlX3VzZXMgKHJ0 eCAqLCB2b2lkICgqKSAocnR4ICosIHZvaWQgKiksIHZvaWQgKikKCiAgICAgICAgICAgICAg IDsKZXh0ZXJuIHJ0eCByZWdfc2V0X2xhc3QgKHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBkZWFk X29yX3NldF9wIChydHgsIHJ0eCk7CmV4dGVybiBpbnQgZGVhZF9vcl9zZXRfcmVnbm9fcCAo cnR4LCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gcnR4IGZpbmRfcmVnX25vdGUgKHJ0eCwgZW51 bSByZWdfbm90ZSwgcnR4KTsKZXh0ZXJuIHJ0eCBmaW5kX3JlZ25vX25vdGUgKHJ0eCwgZW51 bSByZWdfbm90ZSwgdW5zaWduZWQgaW50KQogICAgICAgICAgICAgICAgICAgICA7CmV4dGVy biBydHggZmluZF9yZWdfZXF1YWxfZXF1aXZfbm90ZSAocnR4KTsKZXh0ZXJuIGludCBmaW5k X3JlZ19mdXNhZ2UgKHJ0eCwgZW51bSBydHhfY29kZSwgcnR4KTsKZXh0ZXJuIGludCBmaW5k X3JlZ25vX2Z1c2FnZSAocnR4LCBlbnVtIHJ0eF9jb2RlLCB1bnNpZ25lZCBpbnQpCiAgICAg ICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGludCBwdXJlX2NhbGxfcCAocnR4KTsKZXh0ZXJu IHZvaWQgcmVtb3ZlX25vdGUgKHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBzaWRlX2VmZmVjdHNf cCAocnR4KTsKZXh0ZXJuIGludCB2b2xhdGlsZV9yZWZzX3AgKHJ0eCk7CmV4dGVybiBpbnQg dm9sYXRpbGVfaW5zbl9wIChydHgpOwpleHRlcm4gaW50IG1heV90cmFwX3AgKHJ0eCk7CmV4 dGVybiBpbnQgaW5lcXVhbGl0eV9jb21wYXJpc29uc19wIChydHgpOwpleHRlcm4gcnR4IHJl cGxhY2VfcnR4IChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCByZXBsYWNlX3JlZ3MgKHJ0 eCwgcnR4ICosIHVuc2lnbmVkIGludCwgaW50KQogICAgICAgICAgICA7CmV4dGVybiBpbnQg Y29tcHV0ZWRfanVtcF9wIChydHgpOwp0eXBlZGVmIGludCAoKnJ0eF9mdW5jdGlvbikgKHJ0 eCAqLCB2b2lkICopOwpleHRlcm4gaW50IGZvcl9lYWNoX3J0eCAocnR4ICosIHJ0eF9mdW5j dGlvbiwgdm9pZCAqKTsKZXh0ZXJuIHJ0eCByZWdub191c2VfaW4gKHVuc2lnbmVkIGludCwg cnR4KTsKZXh0ZXJuIGludCBhdXRvX2luY19wIChydHgpOwpleHRlcm4gaW50IGluX2V4cHJf bGlzdF9wIChydHgsIHJ0eCk7CmV4dGVybiB2b2lkIHJlbW92ZV9ub2RlX2Zyb21fZXhwcl9s aXN0IChydHgsIHJ0eCAqKTsKZXh0ZXJuIGludCBpbnNuc19zYWZlX3RvX21vdmVfcCAocnR4 LCBydHgsIHJ0eCAqKTsKZXh0ZXJuIGludCBsb2NfbWVudGlvbmVkX2luX3AgKHJ0eCAqLCBy dHgpOwpleHRlcm4gcnR4IGZpbmRfZmlyc3RfcGFyYW1ldGVyX2xvYWQgKHJ0eCwgcnR4KTsK CgoKZXh0ZXJuIHJ0eCBmaW5kX3VzZV9hc19hZGRyZXNzIChydHgsIHJ0eCwgbG9uZyk7CnZv aWQgaW5pdF9FWFBSX0lOU05fTElTVF9jYWNoZSAodm9pZCk7CnZvaWQgZnJlZV9FWFBSX0xJ U1RfbGlzdCAocnR4ICopOwp2b2lkIGZyZWVfSU5TTl9MSVNUX2xpc3QgKHJ0eCAqKTsKdm9p ZCBmcmVlX0VYUFJfTElTVF9ub2RlIChydHgpOwp2b2lkIGZyZWVfSU5TTl9MSVNUX25vZGUg KHJ0eCk7CnJ0eCBhbGxvY19JTlNOX0xJU1QgKHJ0eCwgcnR4KTsKcnR4IGFsbG9jX0VYUFJf TElTVCAoaW50LCBydHgsIHJ0eCk7CgoKCgoKCgpleHRlcm4gaW50IG1heF9wYXJhbGxlbDsK CgpleHRlcm4gdm9pZCBmcmVlX3JlZ19pbmZvICh2b2lkKTsKCgpleHRlcm4gaW50IGFzbV9u b3BlcmFuZHMgKHJ0eCk7CmV4dGVybiBjb25zdCBjaGFyICpkZWNvZGVfYXNtX29wZXJhbmRz IChydHgsIHJ0eCAqLCBydHggKiosIGNvbnN0IGNoYXIgKiosIGVudW0gbWFjaGluZV9tb2Rl ICopCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgpleHRlcm4gZW51bSBy ZWdfY2xhc3MgcmVnX3ByZWZlcnJlZF9jbGFzcyAoaW50KTsKZXh0ZXJuIGVudW0gcmVnX2Ns YXNzIHJlZ19hbHRlcm5hdGVfY2xhc3MgKGludCk7CgpleHRlcm4gcnR4IGdldF9maXJzdF9u b25wYXJtX2luc24gKHZvaWQpOwoKZXh0ZXJuIHZvaWQgc3BsaXRfYWxsX2luc25zIChpbnQp OwpleHRlcm4gdm9pZCBzcGxpdF9hbGxfaW5zbnNfbm9mbG93ICh2b2lkKTsKCiNkZWZpbmUg TUFYX1NBVkVEX0NPTlNUX0lOVCA2NApleHRlcm4gcnR4IGNvbnN0X2ludF9ydHhbNjQgKiAy ICsgMV07CgojZGVmaW5lIGNvbnN0MF9ydHggKGNvbnN0X2ludF9ydHhbTUFYX1NBVkVEX0NP TlNUX0lOVF0pCiNkZWZpbmUgY29uc3QxX3J0eCAoY29uc3RfaW50X3J0eFtNQVhfU0FWRURf Q09OU1RfSU5UKzFdKQojZGVmaW5lIGNvbnN0Ml9ydHggKGNvbnN0X2ludF9ydHhbTUFYX1NB VkVEX0NPTlNUX0lOVCsyXSkKI2RlZmluZSBjb25zdG0xX3J0eCAoY29uc3RfaW50X3J0eFtN QVhfU0FWRURfQ09OU1RfSU5ULTFdKQpleHRlcm4gcnR4IGNvbnN0X3RydWVfcnR4OwoKZXh0 ZXJuIHJ0eCBjb25zdF90aW55X3J0eFszXVsoaW50KSBNQVhfTUFDSElORV9NT0RFXTsKCgoK CiNkZWZpbmUgQ09OU1QwX1JUWChNT0RFKSAoY29uc3RfdGlueV9ydHhbMF1bKGludCkgKE1P REUpXSkKCgoKI2RlZmluZSBDT05TVDFfUlRYKE1PREUpIChjb25zdF90aW55X3J0eFsxXVso aW50KSAoTU9ERSldKQojZGVmaW5lIENPTlNUMl9SVFgoTU9ERSkgKGNvbnN0X3RpbnlfcnR4 WzJdWyhpbnQpIChNT0RFKV0pCiMgMTU4NCAicnRsLmgiCmVudW0gZ2xvYmFsX3J0bF9pbmRl eAp7CiAgR1JfUEMsCiAgR1JfQ0MwLAogIEdSX1NUQUNLX1BPSU5URVIsCiAgR1JfRlJBTUVf UE9JTlRFUiwKIyAxNTk5ICJydGwuaCIKICBHUl9IQVJEX0ZSQU1FX1BPSU5URVIsCgoKCgoK ICBHUl9BUkdfUE9JTlRFUiwKCgogIEdSX1ZJUlRVQUxfSU5DT01JTkdfQVJHUywKICBHUl9W SVJUVUFMX1NUQUNLX0FSR1MsCiAgR1JfVklSVFVBTF9TVEFDS19EWU5BTUlDLAogIEdSX1ZJ UlRVQUxfT1VUR09JTkdfQVJHUywKICBHUl9WSVJUVUFMX0NGQSwKCiAgR1JfTUFYCn07CgoK ZXh0ZXJuIHJ0eCBnbG9iYWxfcnRsW0dSX01BWF07CgoKI2RlZmluZSBwY19ydHggKGdsb2Jh bF9ydGxbR1JfUENdKQojZGVmaW5lIGNjMF9ydHggKGdsb2JhbF9ydGxbR1JfQ0MwXSkKCgoK CiNkZWZpbmUgc3RhY2tfcG9pbnRlcl9ydHggKGdsb2JhbF9ydGxbR1JfU1RBQ0tfUE9JTlRF Ul0pCiNkZWZpbmUgZnJhbWVfcG9pbnRlcl9ydHggKGdsb2JhbF9ydGxbR1JfRlJBTUVfUE9J TlRFUl0pCiNkZWZpbmUgaGFyZF9mcmFtZV9wb2ludGVyX3J0eCAoZ2xvYmFsX3J0bFtHUl9I QVJEX0ZSQU1FX1BPSU5URVJdKQojZGVmaW5lIGFyZ19wb2ludGVyX3J0eCAoZ2xvYmFsX3J0 bFtHUl9BUkdfUE9JTlRFUl0pCgpleHRlcm4gcnR4IHBpY19vZmZzZXRfdGFibGVfcnR4Owpl eHRlcm4gcnR4IHN0cnVjdF92YWx1ZV9ydHg7CmV4dGVybiBydHggc3RydWN0X3ZhbHVlX2lu Y29taW5nX3J0eDsKZXh0ZXJuIHJ0eCBzdGF0aWNfY2hhaW5fcnR4OwpleHRlcm4gcnR4IHN0 YXRpY19jaGFpbl9pbmNvbWluZ19ydHg7CmV4dGVybiBydHggcmV0dXJuX2FkZHJlc3NfcG9p bnRlcl9ydHg7CgoKCgojIDEgImdlbnJ0bC5oIiAxCgoKCiNkZWZpbmUgR0NDX0dFTlJUTF9I IAoKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9zIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hp bmVfbW9kZSBtb2RlLCBjb25zdCBjaGFyICphcmcwKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9lZSAoZW51bSBydHhfY29kZSwgZW51 bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGFyZzAsIHJ0eCBhcmcxKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X3VlIChlbnVtIHJ0 eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYXJnMCwgcnR4IGFyZzEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggZ2VuX3J0eF9mbXRf aXNzIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgYXJnMCwg Y29uc3QgY2hhciAqYXJnMSwgY29uc3QgY2hhciAqYXJnMikKCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X2lzIChlbnVtIHJ0eF9jb2Rl LCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgYXJnMCwgY29uc3QgY2hhciAqYXJnMSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gcnR4IGdl bl9ydHhfZm10X2kgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIGlu dCBhcmcwKQogICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggZ2VuX3J0eF9mbXRf aXNFIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgYXJnMCwg Y29uc3QgY2hhciAqYXJnMSwgcnR2ZWMgYXJnMikKCiAgICAgICAgICAgICAgICAgICAgICAg OwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X2lFIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hp bmVfbW9kZSBtb2RlLCBpbnQgYXJnMCwgcnR2ZWMgYXJnMSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X0VzcyAoZW51bSBydHhf Y29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR2ZWMgYXJnMCwgY29uc3QgY2hhciAq YXJnMSwgY29uc3QgY2hhciAqYXJnMikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X3NFc3MgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFj aGluZV9tb2RlIG1vZGUsIGNvbnN0IGNoYXIgKmFyZzAsIHJ0dmVjIGFyZzEsIGNvbnN0IGNo YXIgKmFyZzIsIGNvbnN0IGNoYXIgKmFyZzMpCgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9lRSAoZW51 bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGFyZzAsIHJ0dmVjIGFy ZzEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5f cnR4X2ZtdF9FIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHZl YyBhcmcwKQogICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2Zt dF9lIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYXJnMCkK ICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X3NzZSAoZW51 bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgY29uc3QgY2hhciAqYXJnMCwg Y29uc3QgY2hhciAqYXJnMSwgcnR4IGFyZzIpCgogICAgICAgICAgICAgICAgICAgICA7CmV4 dGVybiBydHggZ2VuX3J0eF9mbXRfc3MgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9t b2RlIG1vZGUsIGNvbnN0IGNoYXIgKmFyZzAsIGNvbnN0IGNoYXIgKmFyZzEpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gcnR4IGdl bl9ydHhfZm10X3NFIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBj b25zdCBjaGFyICphcmcwLCBydHZlYyBhcmcxKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9pdXVlaWVlIChlbnVt IHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBpbnQgYXJnMCwgcnR4IGFyZzEs IHJ0eCBhcmcyLCBydHggYXJnMywgaW50IGFyZzQsIHJ0eCBhcmc1LCBydHggYXJnNikKCgog ICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggZ2VuX3J0eF9mbXRfaXV1ZWllZTAg KGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIGludCBhcmcwLCBydHgg YXJnMSwgcnR4IGFyZzIsIHJ0eCBhcmczLCBpbnQgYXJnNCwgcnR4IGFyZzUsIHJ0eCBhcmc2 KQoKCiAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9pdXVl aWVlZSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50IGFyZzAs IHJ0eCBhcmcxLCBydHggYXJnMiwgcnR4IGFyZzMsIGludCBhcmc0LCBydHggYXJnNSwgcnR4 IGFyZzYsIHJ0eCBhcmc3KQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4 dGVybiBydHggZ2VuX3J0eF9mbXRfaXV1IChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVf bW9kZSBtb2RlLCBpbnQgYXJnMCwgcnR4IGFyZzEsIHJ0eCBhcmcyKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9p dXUwMGlzcyAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50IGFy ZzAsIHJ0eCBhcmcxLCBydHggYXJnMiwgaW50IGFyZzMsIGNvbnN0IGNoYXIgKmFyZzQsIGNv bnN0IGNoYXIgKmFyZzUpCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVy biBydHggZ2VuX3J0eF9mbXRfc3NpRUVzaSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5l X21vZGUgbW9kZSwgY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFy ZzIsIHJ0dmVjIGFyZzMsIHJ0dmVjIGFyZzQsIGNvbnN0IGNoYXIgKmFyZzUsIGludCBhcmc2 KQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0 eCBnZW5fcnR4X2ZtdF9FaSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9k ZSwgcnR2ZWMgYXJnMCwgaW50IGFyZzEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9lRWVlMCAoZW51bSBydHhfY29kZSwgZW51 bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGFyZzAsIHJ0dmVjIGFyZzEsIHJ0eCBhcmcyLCBy dHggYXJnMykKCiAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2Zt dF9lZWUgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCBhcmcw LCBydHggYXJnMSwgcnR4IGFyZzIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOwpleHRlcm4gcnR4IGdlbl9ydHhfZm10XyAoZW51bSBydHhfY29kZSwgZW51 bSBtYWNoaW5lX21vZGUgbW9kZSk7CmV4dGVybiBydHggZ2VuX3J0eF9mbXRfdyAoZW51bSBy dHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgbG9uZyBhcmcwKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gcnR4IGdlbl9ydHhfZm10XzB3d3cgKGVu dW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIGxvbmcgYXJnMCwgbG9uZyBh cmcxLCBsb25nIGFyZzIpCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0 ZXJuIHJ0eCBnZW5fcnR4X2ZtdF8wIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9k ZSBtb2RlKTsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9pMCAoZW51bSBydHhfY29kZSwgZW51 bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50IGFyZzApCiAgICAgICAgICAgICAgICAgICAgIDsK ZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9laSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5l X21vZGUgbW9kZSwgcnR4IGFyZzAsIGludCBhcmcxKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X2UwIChlbnVtIHJ0eF9jb2RlLCBl bnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYXJnMCkKICAgICAgICAgICAgICAgICAgICAg OwpleHRlcm4gcnR4IGdlbl9ydHhfZm10X3UwMCAoZW51bSBydHhfY29kZSwgZW51bSBtYWNo aW5lX21vZGUgbW9kZSwgcnR4IGFyZzApCiAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJu IHJ0eCBnZW5fcnR4X2ZtdF9laXQgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2Rl IG1vZGUsIHJ0eCBhcmcwLCBpbnQgYXJnMSwgdW5pb24gdHJlZV9ub2RlICphcmcyKQoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2Zt dF9lZWVlZSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGFy ZzAsIHJ0eCBhcmcxLCBydHggYXJnMiwgcnR4IGFyZzMsIHJ0eCBhcmc0KQoKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9FZSAoZW51 bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR2ZWMgYXJnMCwgcnR4IGFy ZzEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZW5f cnR4X2ZtdF91dUVpaWlpaWliYmlpIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9k ZSBtb2RlLCBydHggYXJnMCwgcnR4IGFyZzEsIHJ0dmVjIGFyZzIsIGludCBhcmczLCBpbnQg YXJnNCwgaW50IGFyZzUsIGludCBhcmc2LCBpbnQgYXJnNywgaW50IGFyZzgsIHN0cnVjdCBi aXRtYXBfaGVhZF9kZWYgKmFyZzksIHN0cnVjdCBiaXRtYXBfaGVhZF9kZWYgKmFyZzEwLCBp bnQgYXJnMTEsIGludCBhcmcxMikKCgoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7CmV4dGVybiBydHggZ2VuX3J0eF9mbXRfaWlpaWlpaWl0dCAoZW51bSBydHhfY29k ZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50IGFyZzAsIGludCBhcmcxLCBpbnQgYXJn MiwgaW50IGFyZzMsIGludCBhcmc0LCBpbnQgYXJnNSwgaW50IGFyZzYsIGludCBhcmc3LCB1 bmlvbiB0cmVlX25vZGUgKmFyZzgsIHVuaW9uIHRyZWVfbm9kZSAqYXJnOSkKCgoKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggZ2VuX3J0eF9mbXRf ZXRpIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggYXJnMCwg dW5pb24gdHJlZV9ub2RlICphcmcxLCBpbnQgYXJnMikKCiAgICAgICAgICAgICAgICAgICAg IDsKZXh0ZXJuIHJ0eCBnZW5fcnR4X2ZtdF9iaSAoZW51bSBydHhfY29kZSwgZW51bSBtYWNo aW5lX21vZGUgbW9kZSwgc3RydWN0IGJpdG1hcF9oZWFkX2RlZiAqYXJnMCwgaW50IGFyZzEp CgogICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggZ2VuX3J0eF9mbXRfdXV1dSAo ZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IGFyZzAsIHJ0eCBh cmcxLCBydHggYXJnMiwgcnR4IGFyZzMpCgogICAgICAgICAgICAgICAgICAgICA7CgojZGVm aW5lIGdlbl9ydHhfSU5DTFVERShNT0RFLEFSRzApIGdlbl9ydHhfZm10X3MgKElOQ0xVREUs IChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4X0VYUFJfTElTVChNT0RFLEFSRzAs QVJHMSkgZ2VuX3J0eF9mbXRfZWUgKEVYUFJfTElTVCwgKE1PREUpLCAoQVJHMCksIChBUkcx KSkKCiNkZWZpbmUgZ2VuX3J0eF9JTlNOX0xJU1QoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhf Zm10X3VlIChJTlNOX0xJU1QsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdl bl9ydHhfTUFUQ0hfT1BFUkFORChNT0RFLEFSRzAsQVJHMSxBUkcyKSBnZW5fcnR4X2ZtdF9p c3MgKE1BVENIX09QRVJBTkQsIChNT0RFKSwgKEFSRzApLCAoQVJHMSksIChBUkcyKSkKCiNk ZWZpbmUgZ2VuX3J0eF9NQVRDSF9TQ1JBVENIKE1PREUsQVJHMCxBUkcxKSBnZW5fcnR4X2Zt dF9pcyAoTUFUQ0hfU0NSQVRDSCwgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUg Z2VuX3J0eF9NQVRDSF9EVVAoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9pIChNQVRDSF9EVVAs IChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4X01BVENIX09QRVJBVE9SKE1PREUs QVJHMCxBUkcxLEFSRzIpIGdlbl9ydHhfZm10X2lzRSAoTUFUQ0hfT1BFUkFUT1IsIChNT0RF KSwgKEFSRzApLCAoQVJHMSksIChBUkcyKSkKCiNkZWZpbmUgZ2VuX3J0eF9NQVRDSF9QQVJB TExFTChNT0RFLEFSRzAsQVJHMSxBUkcyKSBnZW5fcnR4X2ZtdF9pc0UgKE1BVENIX1BBUkFM TEVMLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpLCAoQVJHMikpCgojZGVmaW5lIGdlbl9ydHhf TUFUQ0hfT1BfRFVQKE1PREUsQVJHMCxBUkcxKSBnZW5fcnR4X2ZtdF9pRSAoTUFUQ0hfT1Bf RFVQLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X01BVENIX1BB Ul9EVVAoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2lFIChNQVRDSF9QQVJfRFVQLCAo TU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X01BVENIX0lOU04oTU9E RSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2lzIChNQVRDSF9JTlNOLCAoTU9ERSksIChBUkcw KSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X0RFRklORV9DT01CSU5FKE1PREUsQVJHMCxB UkcxLEFSRzIpIGdlbl9ydHhfZm10X0VzcyAoREVGSU5FX0NPTUJJTkUsIChNT0RFKSwgKEFS RzApLCAoQVJHMSksIChBUkcyKSkKCiNkZWZpbmUgZ2VuX3J0eF9ERUZJTkVfRVhQQU5EKE1P REUsQVJHMCxBUkcxLEFSRzIsQVJHMykgZ2VuX3J0eF9mbXRfc0VzcyAoREVGSU5FX0VYUEFO RCwgKE1PREUpLCAoQVJHMCksIChBUkcxKSwgKEFSRzIpLCAoQVJHMykpCgojZGVmaW5lIGdl bl9ydHhfREVGSU5FX0RFTEFZKE1PREUsQVJHMCxBUkcxKSBnZW5fcnR4X2ZtdF9lRSAoREVG SU5FX0RFTEFZLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X0RF RklORV9DT05EX0VYRUMoTU9ERSxBUkcwLEFSRzEsQVJHMikgZ2VuX3J0eF9mbXRfRXNzIChE RUZJTkVfQ09ORF9FWEVDLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpLCAoQVJHMikpCgojZGVm aW5lIGdlbl9ydHhfU0VRVUVOQ0UoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9FIChTRVFVRU5D RSwgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfQUREUkVTUyhNT0RFLEFSRzAp IGdlbl9ydHhfZm10X2UgKEFERFJFU1MsIChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5f cnR4X0RFRklORV9BVFRSKE1PREUsQVJHMCxBUkcxLEFSRzIpIGdlbl9ydHhfZm10X3NzZSAo REVGSU5FX0FUVFIsIChNT0RFKSwgKEFSRzApLCAoQVJHMSksIChBUkcyKSkKCiNkZWZpbmUg Z2VuX3J0eF9BVFRSKE1PREUsQVJHMCkgZ2VuX3J0eF9mbXRfcyAoQVRUUiwgKE1PREUpLCAo QVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfU0VUX0FUVFIoTU9ERSxBUkcwLEFSRzEpIGdlbl9y dHhfZm10X3NzIChTRVRfQVRUUiwgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUg Z2VuX3J0eF9TRVRfQVRUUl9BTFRFUk5BVElWRShNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9m bXRfc0UgKFNFVF9BVFRSX0FMVEVSTkFUSVZFLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoK I2RlZmluZSBnZW5fcnR4X0VRX0FUVFIoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X3Nz IChFUV9BVFRSLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X0FU VFJfRkxBRyhNT0RFLEFSRzApIGdlbl9ydHhfZm10X3MgKEFUVFJfRkxBRywgKE1PREUpLCAo QVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfSU5TTihNT0RFLEFSRzAsQVJHMSxBUkcyLEFSRzMs QVJHNCxBUkc1LEFSRzYpIGdlbl9ydHhfZm10X2l1dWVpZWUgKElOU04sIChNT0RFKSwgKEFS RzApLCAoQVJHMSksIChBUkcyKSwgKEFSRzMpLCAoQVJHNCksIChBUkc1KSwgKEFSRzYpKQoK I2RlZmluZSBnZW5fcnR4X0pVTVBfSU5TTihNT0RFLEFSRzAsQVJHMSxBUkcyLEFSRzMsQVJH NCxBUkc1LEFSRzYpIGdlbl9ydHhfZm10X2l1dWVpZWUwIChKVU1QX0lOU04sIChNT0RFKSwg KEFSRzApLCAoQVJHMSksIChBUkcyKSwgKEFSRzMpLCAoQVJHNCksIChBUkc1KSwgKEFSRzYp KQoKI2RlZmluZSBnZW5fcnR4X0NBTExfSU5TTihNT0RFLEFSRzAsQVJHMSxBUkcyLEFSRzMs QVJHNCxBUkc1LEFSRzYsQVJHNykgZ2VuX3J0eF9mbXRfaXV1ZWllZWUgKENBTExfSU5TTiwg KE1PREUpLCAoQVJHMCksIChBUkcxKSwgKEFSRzIpLCAoQVJHMyksIChBUkc0KSwgKEFSRzUp LCAoQVJHNiksIChBUkc3KSkKCiNkZWZpbmUgZ2VuX3J0eF9CQVJSSUVSKE1PREUsQVJHMCxB UkcxLEFSRzIpIGdlbl9ydHhfZm10X2l1dSAoQkFSUklFUiwgKE1PREUpLCAoQVJHMCksIChB UkcxKSwgKEFSRzIpKQoKI2RlZmluZSBnZW5fcnR4X0NPREVfTEFCRUwoTU9ERSxBUkcwLEFS RzEsQVJHMixBUkczLEFSRzQsQVJHNSkgZ2VuX3J0eF9mbXRfaXV1MDBpc3MgKENPREVfTEFC RUwsIChNT0RFKSwgKEFSRzApLCAoQVJHMSksIChBUkcyKSwgKEFSRzMpLCAoQVJHNCksIChB Ukc1KSkKCiNkZWZpbmUgZ2VuX3J0eF9DT05EX0VYRUMoTU9ERSxBUkcwLEFSRzEpIGdlbl9y dHhfZm10X2VlIChDT05EX0VYRUMsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5l IGdlbl9ydHhfUEFSQUxMRUwoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9FIChQQVJBTExFTCwg KE1PREUpLCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfQVNNX0lOUFVUKE1PREUsQVJHMCkg Z2VuX3J0eF9mbXRfcyAoQVNNX0lOUFVULCAoTU9ERSksIChBUkcwKSkKCiNkZWZpbmUgZ2Vu X3J0eF9BU01fT1BFUkFORFMoTU9ERSxBUkcwLEFSRzEsQVJHMixBUkczLEFSRzQsQVJHNSxB Ukc2KSBnZW5fcnR4X2ZtdF9zc2lFRXNpIChBU01fT1BFUkFORFMsIChNT0RFKSwgKEFSRzAp LCAoQVJHMSksIChBUkcyKSwgKEFSRzMpLCAoQVJHNCksIChBUkc1KSwgKEFSRzYpKQoKI2Rl ZmluZSBnZW5fcnR4X1VOU1BFQyhNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfRWkgKFVO U1BFQywgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0eF9VTlNQRUNf Vk9MQVRJTEUoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X0VpIChVTlNQRUNfVk9MQVRJ TEUsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfQUREUl9WRUMo TU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9FIChBRERSX1ZFQywgKE1PREUpLCAoQVJHMCkpCgoj ZGVmaW5lIGdlbl9ydHhfQUREUl9ESUZGX1ZFQyhNT0RFLEFSRzAsQVJHMSxBUkcyLEFSRzMp IGdlbl9ydHhfZm10X2VFZWUwIChBRERSX0RJRkZfVkVDLCAoTU9ERSksIChBUkcwKSwgKEFS RzEpLCAoQVJHMiksIChBUkczKSkKCiNkZWZpbmUgZ2VuX3J0eF9QUkVGRVRDSChNT0RFLEFS RzAsQVJHMSxBUkcyKSBnZW5fcnR4X2ZtdF9lZWUgKFBSRUZFVENILCAoTU9ERSksIChBUkcw KSwgKEFSRzEpLCAoQVJHMikpCgojZGVmaW5lIGdlbl9ydHhfU0VUKE1PREUsQVJHMCxBUkcx KSBnZW5fcnR4X2ZtdF9lZSAoU0VULCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmlu ZSBnZW5fcnR4X1VTRShNT0RFLEFSRzApIGdlbl9ydHhfZm10X2UgKFVTRSwgKE1PREUpLCAo QVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfQ0xPQkJFUihNT0RFLEFSRzApIGdlbl9ydHhfZm10 X2UgKENMT0JCRVIsIChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4X0NBTEwoTU9E RSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChDQUxMLCAoTU9ERSksIChBUkcwKSwgKEFS RzEpKQoKI2RlZmluZSBnZW5fcnR4X1JFVFVSTihNT0RFKSBnZW5fcnR4X2ZtdF8gKFJFVFVS TiwgKE1PREUpKQoKI2RlZmluZSBnZW5fcnR4X1RSQVBfSUYoTU9ERSxBUkcwLEFSRzEpIGdl bl9ydHhfZm10X2VlIChUUkFQX0lGLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmlu ZSBnZW5fcnR4X1JFU1goTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9pIChSRVNYLCAoTU9ERSks IChBUkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9yYXdfQ09OU1RfSU5UKE1PREUsQVJHMCkgZ2Vu X3J0eF9mbXRfdyAoQ09OU1RfSU5ULCAoTU9ERSksIChBUkcwKSkKCiNkZWZpbmUgZ2VuX3J0 eF9yYXdfQ09OU1RfRE9VQkxFKE1PREUsQVJHMCxBUkcxLEFSRzIpIGdlbl9ydHhfZm10XzB3 d3cgKENPTlNUX0RPVUJMRSwgKE1PREUpLCAoQVJHMCksIChBUkcxKSwgKEFSRzIpKQoKI2Rl ZmluZSBnZW5fcnR4X0NPTlNUX1ZFQ1RPUihNT0RFLEFSRzApIGdlbl9ydHhfZm10X0UgKENP TlNUX1ZFQ1RPUiwgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfQ09OU1RfU1RS SU5HKE1PREUsQVJHMCkgZ2VuX3J0eF9mbXRfcyAoQ09OU1RfU1RSSU5HLCAoTU9ERSksIChB UkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9DT05TVChNT0RFLEFSRzApIGdlbl9ydHhfZm10X2Ug KENPTlNULCAoTU9ERSksIChBUkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9QQyhNT0RFKSBnZW5f cnR4X2ZtdF8gKFBDLCAoTU9ERSkpCgojZGVmaW5lIGdlbl9ydHhfVkFMVUUoTU9ERSkgZ2Vu X3J0eF9mbXRfMCAoVkFMVUUsIChNT0RFKSkKCiNkZWZpbmUgZ2VuX3J0eF9yYXdfUkVHKE1P REUsQVJHMCkgZ2VuX3J0eF9mbXRfaTAgKFJFRywgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5l IGdlbl9ydHhfU0NSQVRDSChNT0RFKSBnZW5fcnR4X2ZtdF8wIChTQ1JBVENILCAoTU9ERSkp CgojZGVmaW5lIGdlbl9ydHhfcmF3X1NVQlJFRyhNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9m bXRfZWkgKFNVQlJFRywgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0 eF9TVFJJQ1RfTE9XX1BBUlQoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9lIChTVFJJQ1RfTE9X X1BBUlQsIChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4X0NPTkNBVChNT0RFLEFS RzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKENPTkNBVCwgKE1PREUpLCAoQVJHMCksIChBUkcx KSkKCiNkZWZpbmUgZ2VuX3J0eF9yYXdfTUVNKE1PREUsQVJHMCkgZ2VuX3J0eF9mbXRfZTAg KE1FTSwgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfTEFCRUxfUkVGKE1PREUs QVJHMCkgZ2VuX3J0eF9mbXRfdTAwIChMQUJFTF9SRUYsIChNT0RFKSwgKEFSRzApKQoKI2Rl ZmluZSBnZW5fcnR4X1NZTUJPTF9SRUYoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9zIChTWU1C T0xfUkVGLCAoTU9ERSksIChBUkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9DQzAoTU9ERSkgZ2Vu X3J0eF9mbXRfIChDQzAsIChNT0RFKSkKCiNkZWZpbmUgZ2VuX3J0eF9BRERSRVNTT0YoTU9E RSxBUkcwLEFSRzEsQVJHMikgZ2VuX3J0eF9mbXRfZWl0IChBRERSRVNTT0YsIChNT0RFKSwg KEFSRzApLCAoQVJHMSksIChBUkcyKSkKCiNkZWZpbmUgZ2VuX3J0eF9RVUVVRUQoTU9ERSxB UkcwLEFSRzEsQVJHMixBUkczLEFSRzQpIGdlbl9ydHhfZm10X2VlZWVlIChRVUVVRUQsIChN T0RFKSwgKEFSRzApLCAoQVJHMSksIChBUkcyKSwgKEFSRzMpLCAoQVJHNCkpCgojZGVmaW5l IGdlbl9ydHhfSUZfVEhFTl9FTFNFKE1PREUsQVJHMCxBUkcxLEFSRzIpIGdlbl9ydHhfZm10 X2VlZSAoSUZfVEhFTl9FTFNFLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpLCAoQVJHMikpCgoj ZGVmaW5lIGdlbl9ydHhfQ09ORChNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfRWUgKENP TkQsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfQ09NUEFSRShN T0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKENPTVBBUkUsIChNT0RFKSwgKEFSRzAp LCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfUExVUyhNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0 eF9mbXRfZWUgKFBMVVMsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9y dHhfTUlOVVMoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChNSU5VUywgKE1PREUp LCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0eF9ORUcoTU9ERSxBUkcwKSBnZW5f cnR4X2ZtdF9lIChORUcsIChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4X01VTFQo TU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChNVUxULCAoTU9ERSksIChBUkcwKSwg KEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X0RJVihNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9m bXRfZWUgKERJViwgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0eF9N T0QoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChNT0QsIChNT0RFKSwgKEFSRzAp LCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfVURJVihNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0 eF9mbXRfZWUgKFVESVYsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9y dHhfVU1PRChNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKFVNT0QsIChNT0RFKSwg KEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfQU5EKE1PREUsQVJHMCxBUkcxKSBn ZW5fcnR4X2ZtdF9lZSAoQU5ELCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBn ZW5fcnR4X0lPUihNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKElPUiwgKE1PREUp LCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0eF9YT1IoTU9ERSxBUkcwLEFSRzEp IGdlbl9ydHhfZm10X2VlIChYT1IsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5l IGdlbl9ydHhfTk9UKE1PREUsQVJHMCkgZ2VuX3J0eF9mbXRfZSAoTk9ULCAoTU9ERSksIChB UkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9BU0hJRlQoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhf Zm10X2VlIChBU0hJRlQsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9y dHhfUk9UQVRFKE1PREUsQVJHMCxBUkcxKSBnZW5fcnR4X2ZtdF9lZSAoUk9UQVRFLCAoTU9E RSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X0FTSElGVFJUKE1PREUsQVJH MCxBUkcxKSBnZW5fcnR4X2ZtdF9lZSAoQVNISUZUUlQsIChNT0RFKSwgKEFSRzApLCAoQVJH MSkpCgojZGVmaW5lIGdlbl9ydHhfTFNISUZUUlQoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhf Zm10X2VlIChMU0hJRlRSVCwgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2Vu X3J0eF9ST1RBVEVSVChNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKFJPVEFURVJU LCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X1NNSU4oTU9ERSxB UkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChTTUlOLCAoTU9ERSksIChBUkcwKSwgKEFSRzEp KQoKI2RlZmluZSBnZW5fcnR4X1NNQVgoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2Vl IChTTUFYLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X1VNSU4o TU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChVTUlOLCAoTU9ERSksIChBUkcwKSwg KEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X1VNQVgoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhf Zm10X2VlIChVTUFYLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4 X1BSRV9ERUMoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9lIChQUkVfREVDLCAoTU9ERSksIChB UkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9QUkVfSU5DKE1PREUsQVJHMCkgZ2VuX3J0eF9mbXRf ZSAoUFJFX0lOQywgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfUE9TVF9ERUMo TU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9lIChQT1NUX0RFQywgKE1PREUpLCAoQVJHMCkpCgoj ZGVmaW5lIGdlbl9ydHhfUE9TVF9JTkMoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9lIChQT1NU X0lOQywgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfUFJFX01PRElGWShNT0RF LEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKFBSRV9NT0RJRlksIChNT0RFKSwgKEFSRzAp LCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfUE9TVF9NT0RJRlkoTU9ERSxBUkcwLEFSRzEp IGdlbl9ydHhfZm10X2VlIChQT1NUX01PRElGWSwgKE1PREUpLCAoQVJHMCksIChBUkcxKSkK CiNkZWZpbmUgZ2VuX3J0eF9ORShNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKE5F LCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X0VRKE1PREUsQVJH MCxBUkcxKSBnZW5fcnR4X2ZtdF9lZSAoRVEsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgoj ZGVmaW5lIGdlbl9ydHhfR0UoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChHRSwg KE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0eF9HVChNT0RFLEFSRzAs QVJHMSkgZ2VuX3J0eF9mbXRfZWUgKEdULCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2Rl ZmluZSBnZW5fcnR4X0xFKE1PREUsQVJHMCxBUkcxKSBnZW5fcnR4X2ZtdF9lZSAoTEUsIChN T0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfTFQoTU9ERSxBUkcwLEFS RzEpIGdlbl9ydHhfZm10X2VlIChMVCwgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZp bmUgZ2VuX3J0eF9HRVUoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChHRVUsIChN T0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfR1RVKE1PREUsQVJHMCxB UkcxKSBnZW5fcnR4X2ZtdF9lZSAoR1RVLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2Rl ZmluZSBnZW5fcnR4X0xFVShNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKExFVSwg KE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0eF9MVFUoTU9ERSxBUkcw LEFSRzEpIGdlbl9ydHhfZm10X2VlIChMVFUsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgoj ZGVmaW5lIGdlbl9ydHhfVU5PUkRFUkVEKE1PREUsQVJHMCxBUkcxKSBnZW5fcnR4X2ZtdF9l ZSAoVU5PUkRFUkVELCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4 X09SREVSRUQoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChPUkRFUkVELCAoTU9E RSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X1VORVEoTU9ERSxBUkcwLEFS RzEpIGdlbl9ydHhfZm10X2VlIChVTkVRLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2Rl ZmluZSBnZW5fcnR4X1VOR0UoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChVTkdF LCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X1VOR1QoTU9ERSxB UkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChVTkdULCAoTU9ERSksIChBUkcwKSwgKEFSRzEp KQoKI2RlZmluZSBnZW5fcnR4X1VOTEUoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2Vl IChVTkxFLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X1VOTFQo TU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChVTkxULCAoTU9ERSksIChBUkcwKSwg KEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X0xUR1QoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhf Zm10X2VlIChMVEdULCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4 X1NJR05fRVhURU5EKE1PREUsQVJHMCkgZ2VuX3J0eF9mbXRfZSAoU0lHTl9FWFRFTkQsIChN T0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4X1pFUk9fRVhURU5EKE1PREUsQVJHMCkg Z2VuX3J0eF9mbXRfZSAoWkVST19FWFRFTkQsIChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBn ZW5fcnR4X1RSVU5DQVRFKE1PREUsQVJHMCkgZ2VuX3J0eF9mbXRfZSAoVFJVTkNBVEUsIChN T0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4X0ZMT0FUX0VYVEVORChNT0RFLEFSRzAp IGdlbl9ydHhfZm10X2UgKEZMT0FUX0VYVEVORCwgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5l IGdlbl9ydHhfRkxPQVRfVFJVTkNBVEUoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9lIChGTE9B VF9UUlVOQ0FURSwgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfRkxPQVQoTU9E RSxBUkcwKSBnZW5fcnR4X2ZtdF9lIChGTE9BVCwgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5l IGdlbl9ydHhfRklYKE1PREUsQVJHMCkgZ2VuX3J0eF9mbXRfZSAoRklYLCAoTU9ERSksIChB UkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9VTlNJR05FRF9GTE9BVChNT0RFLEFSRzApIGdlbl9y dHhfZm10X2UgKFVOU0lHTkVEX0ZMT0FULCAoTU9ERSksIChBUkcwKSkKCiNkZWZpbmUgZ2Vu X3J0eF9VTlNJR05FRF9GSVgoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9lIChVTlNJR05FRF9G SVgsIChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4X0FCUyhNT0RFLEFSRzApIGdl bl9ydHhfZm10X2UgKEFCUywgKE1PREUpLCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfU1FS VChNT0RFLEFSRzApIGdlbl9ydHhfZm10X2UgKFNRUlQsIChNT0RFKSwgKEFSRzApKQoKI2Rl ZmluZSBnZW5fcnR4X0ZGUyhNT0RFLEFSRzApIGdlbl9ydHhfZm10X2UgKEZGUywgKE1PREUp LCAoQVJHMCkpCgojZGVmaW5lIGdlbl9ydHhfU0lHTl9FWFRSQUNUKE1PREUsQVJHMCxBUkcx LEFSRzIpIGdlbl9ydHhfZm10X2VlZSAoU0lHTl9FWFRSQUNULCAoTU9ERSksIChBUkcwKSwg KEFSRzEpLCAoQVJHMikpCgojZGVmaW5lIGdlbl9ydHhfWkVST19FWFRSQUNUKE1PREUsQVJH MCxBUkcxLEFSRzIpIGdlbl9ydHhfZm10X2VlZSAoWkVST19FWFRSQUNULCAoTU9ERSksIChB UkcwKSwgKEFSRzEpLCAoQVJHMikpCgojZGVmaW5lIGdlbl9ydHhfSElHSChNT0RFLEFSRzAp IGdlbl9ydHhfZm10X2UgKEhJR0gsIChNT0RFKSwgKEFSRzApKQoKI2RlZmluZSBnZW5fcnR4 X0xPX1NVTShNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKExPX1NVTSwgKE1PREUp LCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0eF9SQU5HRV9JTkZPKE1PREUsQVJH MCxBUkcxLEFSRzIsQVJHMyxBUkc0LEFSRzUsQVJHNixBUkc3LEFSRzgsQVJHOSxBUkcxMCxB UkcxMSxBUkcxMikgZ2VuX3J0eF9mbXRfdXVFaWlpaWlpYmJpaSAoUkFOR0VfSU5GTywgKE1P REUpLCAoQVJHMCksIChBUkcxKSwgKEFSRzIpLCAoQVJHMyksIChBUkc0KSwgKEFSRzUpLCAo QVJHNiksIChBUkc3KSwgKEFSRzgpLCAoQVJHOSksIChBUkcxMCksIChBUkcxMSksIChBUkcx MikpCgojZGVmaW5lIGdlbl9ydHhfUkFOR0VfUkVHKE1PREUsQVJHMCxBUkcxLEFSRzIsQVJH MyxBUkc0LEFSRzUsQVJHNixBUkc3LEFSRzgsQVJHOSkgZ2VuX3J0eF9mbXRfaWlpaWlpaWl0 dCAoUkFOR0VfUkVHLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpLCAoQVJHMiksIChBUkczKSwg KEFSRzQpLCAoQVJHNSksIChBUkc2KSwgKEFSRzcpLCAoQVJHOCksIChBUkc5KSkKCiNkZWZp bmUgZ2VuX3J0eF9SQU5HRV9WQVIoTU9ERSxBUkcwLEFSRzEsQVJHMikgZ2VuX3J0eF9mbXRf ZXRpIChSQU5HRV9WQVIsIChNT0RFKSwgKEFSRzApLCAoQVJHMSksIChBUkcyKSkKCiNkZWZp bmUgZ2VuX3J0eF9SQU5HRV9MSVZFKE1PREUsQVJHMCxBUkcxKSBnZW5fcnR4X2ZtdF9iaSAo UkFOR0VfTElWRSwgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2VuX3J0eF9D T05TVEFOVF9QX1JUWChNT0RFLEFSRzApIGdlbl9ydHhfZm10X2UgKENPTlNUQU5UX1BfUlRY LCAoTU9ERSksIChBUkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9DQUxMX1BMQUNFSE9MREVSKE1P REUsQVJHMCxBUkcxLEFSRzIsQVJHMykgZ2VuX3J0eF9mbXRfdXV1dSAoQ0FMTF9QTEFDRUhP TERFUiwgKE1PREUpLCAoQVJHMCksIChBUkcxKSwgKEFSRzIpLCAoQVJHMykpCgojZGVmaW5l IGdlbl9ydHhfVkVDX01FUkdFKE1PREUsQVJHMCxBUkcxLEFSRzIpIGdlbl9ydHhfZm10X2Vl ZSAoVkVDX01FUkdFLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpLCAoQVJHMikpCgojZGVmaW5l IGdlbl9ydHhfVkVDX1NFTEVDVChNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKFZF Q19TRUxFQ1QsIChNT0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfVkVD X0NPTkNBVChNT0RFLEFSRzAsQVJHMSkgZ2VuX3J0eF9mbXRfZWUgKFZFQ19DT05DQVQsIChN T0RFKSwgKEFSRzApLCAoQVJHMSkpCgojZGVmaW5lIGdlbl9ydHhfVkVDX0RVUExJQ0FURShN T0RFLEFSRzApIGdlbl9ydHhfZm10X2UgKFZFQ19EVVBMSUNBVEUsIChNT0RFKSwgKEFSRzAp KQoKI2RlZmluZSBnZW5fcnR4X1NTX1BMVVMoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10 X2VlIChTU19QTFVTLCAoTU9ERSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4 X1VTX1BMVVMoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhfZm10X2VlIChVU19QTFVTLCAoTU9E RSksIChBUkcwKSwgKEFSRzEpKQoKI2RlZmluZSBnZW5fcnR4X1NTX01JTlVTKE1PREUsQVJH MCxBUkcxKSBnZW5fcnR4X2ZtdF9lZSAoU1NfTUlOVVMsIChNT0RFKSwgKEFSRzApLCAoQVJH MSkpCgojZGVmaW5lIGdlbl9ydHhfVVNfTUlOVVMoTU9ERSxBUkcwLEFSRzEpIGdlbl9ydHhf Zm10X2VlIChVU19NSU5VUywgKE1PREUpLCAoQVJHMCksIChBUkcxKSkKCiNkZWZpbmUgZ2Vu X3J0eF9TU19UUlVOQ0FURShNT0RFLEFSRzApIGdlbl9ydHhfZm10X2UgKFNTX1RSVU5DQVRF LCAoTU9ERSksIChBUkcwKSkKCiNkZWZpbmUgZ2VuX3J0eF9VU19UUlVOQ0FURShNT0RFLEFS RzApIGdlbl9ydHhfZm10X2UgKFVTX1RSVU5DQVRFLCAoTU9ERSksIChBUkcwKSkKCiNkZWZp bmUgZ2VuX3J0eF9QSEkoTU9ERSxBUkcwKSBnZW5fcnR4X2ZtdF9FIChQSEksIChNT0RFKSwg KEFSRzApKQojIDE2NDMgInJ0bC5oIiAyCgoKCgoKCgpleHRlcm4gcnR4IGdlbl9ydHhfQ09O U1RfRE9VQkxFIChlbnVtIG1hY2hpbmVfbW9kZSwgbG9uZywgbG9uZykKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiBydHggZ2VuX3J0eF9DT05T VF9JTlQgKGVudW0gbWFjaGluZV9tb2RlLCBsb25nKTsKZXh0ZXJuIHJ0eCBnZW5fcmF3X1JF RyAoZW51bSBtYWNoaW5lX21vZGUsIGludCk7CmV4dGVybiBydHggZ2VuX3J0eF9SRUcgKGVu dW0gbWFjaGluZV9tb2RlLCBpbnQpOwpleHRlcm4gcnR4IGdlbl9ydHhfU1VCUkVHIChlbnVt IG1hY2hpbmVfbW9kZSwgcnR4LCBpbnQpOwpleHRlcm4gcnR4IGdlbl9ydHhfTUVNIChlbnVt IG1hY2hpbmVfbW9kZSwgcnR4KTsKCmV4dGVybiBydHggZ2VuX2xvd3BhcnRfU1VCUkVHIChl bnVtIG1hY2hpbmVfbW9kZSwgcnR4KTsKCgoKI2RlZmluZSBHRU5fSU5UKE4pIGdlbl9ydHhf Q09OU1RfSU5UIChWT0lEbW9kZSwgKEhPU1RfV0lERV9JTlQpIChOKSkKCgoKCgoKCiNkZWZp bmUgRklSU1RfVklSVFVBTF9SRUdJU1RFUiAoRklSU1RfUFNFVURPX1JFR0lTVEVSKQoKCgoK CiNkZWZpbmUgdmlydHVhbF9pbmNvbWluZ19hcmdzX3J0eCAoZ2xvYmFsX3J0bFtHUl9WSVJU VUFMX0lOQ09NSU5HX0FSR1NdKQoKI2RlZmluZSBWSVJUVUFMX0lOQ09NSU5HX0FSR1NfUkVH TlVNIChGSVJTVF9WSVJUVUFMX1JFR0lTVEVSKQoKCgoKCiNkZWZpbmUgdmlydHVhbF9zdGFj a192YXJzX3J0eCAoZ2xvYmFsX3J0bFtHUl9WSVJUVUFMX1NUQUNLX0FSR1NdKQoKI2RlZmlu ZSBWSVJUVUFMX1NUQUNLX1ZBUlNfUkVHTlVNICgoRklSU1RfVklSVFVBTF9SRUdJU1RFUikg KyAxKQoKCgoKCiNkZWZpbmUgdmlydHVhbF9zdGFja19keW5hbWljX3J0eCAoZ2xvYmFsX3J0 bFtHUl9WSVJUVUFMX1NUQUNLX0RZTkFNSUNdKQoKI2RlZmluZSBWSVJUVUFMX1NUQUNLX0RZ TkFNSUNfUkVHTlVNICgoRklSU1RfVklSVFVBTF9SRUdJU1RFUikgKyAyKQoKCgoKCiNkZWZp bmUgdmlydHVhbF9vdXRnb2luZ19hcmdzX3J0eCAoZ2xvYmFsX3J0bFtHUl9WSVJUVUFMX09V VEdPSU5HX0FSR1NdKQoKI2RlZmluZSBWSVJUVUFMX09VVEdPSU5HX0FSR1NfUkVHTlVNICgo RklSU1RfVklSVFVBTF9SRUdJU1RFUikgKyAzKQoKCgoKCgoKI2RlZmluZSB2aXJ0dWFsX2Nm YV9ydHggKGdsb2JhbF9ydGxbR1JfVklSVFVBTF9DRkFdKQoKI2RlZmluZSBWSVJUVUFMX0NG QV9SRUdOVU0gKChGSVJTVF9WSVJUVUFMX1JFR0lTVEVSKSArIDQpCgojZGVmaW5lIExBU1Rf VklSVFVBTF9SRUdJU1RFUiAoKEZJUlNUX1ZJUlRVQUxfUkVHSVNURVIpICsgNCkKCgojZGVm aW5lIFJFR05PX1BUUl9GUkFNRV9QKFJFR05VTSkgKChSRUdOVU0pID09IFNUQUNLX1BPSU5U RVJfUkVHTlVNIHx8IChSRUdOVU0pID09IEZSQU1FX1BPSU5URVJfUkVHTlVNIHx8IChSRUdO VU0pID09IEhBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0gfHwgKFJFR05VTSkgPT0gQVJHX1BP SU5URVJfUkVHTlVNIHx8ICgoUkVHTlVNKSA+PSBGSVJTVF9WSVJUVUFMX1JFR0lTVEVSICYm IChSRUdOVU0pIDw9IExBU1RfVklSVFVBTF9SRUdJU1RFUikpCiMgMTcyNiAicnRsLmgiCiNk ZWZpbmUgSU5WQUxJRF9SRUdOVU0gKH4odW5zaWduZWQgaW50KSAwKQoKZXh0ZXJuIHJ0eCBm aW5kX25leHRfcmVmIChydHgsIHJ0eCk7CgpleHRlcm4gcnR4IG91dHB1dF9jb25zdGFudF9k ZWYgKHRyZWUsIGludCk7CmV4dGVybiBydHggaW1tZWRfcmVhbF9jb25zdCAodHJlZSk7CiMg MTc0MSAicnRsLmgiCmV4dGVybiBpbnQgZmxvdzJfY29tcGxldGVkOwoKCgoKZXh0ZXJuIGlu dCByZWxvYWRfY29tcGxldGVkOwoKCgoKZXh0ZXJuIGludCByZWxvYWRfaW5fcHJvZ3Jlc3M7 CgoKCgoKCgpleHRlcm4gaW50IGNzZV9ub3RfZXhwZWN0ZWQ7CgoKCmV4dGVybiBpbnQgbm9f bmV3X3BzZXVkb3M7CgoKCgoKZXh0ZXJuIGludCBydHhfdG9fdHJlZV9jb2RlIChlbnVtIHJ0 eF9jb2RlKTsKCgpzdHJ1Y3Qgb2JzdGFjazsKZXh0ZXJuIHZvaWQgZ2NjX29ic3RhY2tfaW5p dCAoc3RydWN0IG9ic3RhY2sgKik7CgoKc3RydWN0IGNzZV9iYXNpY19ibG9ja19kYXRhOwoK CgoKI2RlZmluZSBDT1NUU19OX0lOU05TKE4pICgoTikgKiA0KQoKCgojZGVmaW5lIE1BWF9D T1NUIElOVF9NQVgKCmV4dGVybiBpbnQgcnR4X2Nvc3QgKHJ0eCwgZW51bSBydHhfY29kZSk7 CmV4dGVybiBpbnQgYWRkcmVzc19jb3N0IChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0 ZXJuIHZvaWQgZGVsZXRlX3RyaXZpYWxseV9kZWFkX2luc25zIChydHgsIGludCwgaW50KTsK CmV4dGVybiBpbnQgY3NlX21haW4gKHJ0eCwgaW50LCBpbnQsIEZJTEUgKik7CgpleHRlcm4g dm9pZCBjc2VfZW5kX29mX2Jhc2ljX2Jsb2NrIChydHgsIHN0cnVjdCBjc2VfYmFzaWNfYmxv Y2tfZGF0YSAqLCBpbnQsIGludCwgaW50KQoKICAgICAgICAgICAgICAgICAgICAgOwoKCmV4 dGVybiBpbnQgY29tcGFyaXNvbl9kb21pbmF0ZXNfcCAoZW51bSBydHhfY29kZSwgZW51bSBy dHhfY29kZSk7CmV4dGVybiBpbnQgY29uZGp1bXBfcCAocnR4KTsKZXh0ZXJuIGludCBhbnlf Y29uZGp1bXBfcCAocnR4KTsKZXh0ZXJuIGludCBhbnlfdW5jb25kanVtcF9wIChydHgpOwpl eHRlcm4gaW50IHNhZmVfdG9fcmVtb3ZlX2p1bXBfcCAocnR4KTsKZXh0ZXJuIHJ0eCBwY19z ZXQgKHJ0eCk7CmV4dGVybiBydHggY29uZGp1bXBfbGFiZWwgKHJ0eCk7CmV4dGVybiBpbnQg c2ltcGxlanVtcF9wIChydHgpOwpleHRlcm4gaW50IHJldHVybmp1bXBfcCAocnR4KTsKZXh0 ZXJuIGludCBvbmx5anVtcF9wIChydHgpOwpleHRlcm4gaW50IG9ubHlfc2V0c19jYzBfcCAo cnR4KTsKZXh0ZXJuIGludCBzZXRzX2NjMF9wIChydHgpOwpleHRlcm4gaW50IGludmVydF9q dW1wXzEgKHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBpbnZlcnRfanVtcCAocnR4LCBydHgsIGlu dCk7CmV4dGVybiBpbnQgcnR4X3JlbnVtYmVyZWRfZXF1YWxfcCAocnR4LCBydHgpOwpleHRl cm4gaW50IHRydWVfcmVnbnVtIChydHgpOwpleHRlcm4gaW50IHJlZGlyZWN0X2p1bXBfMSAo cnR4LCBydHgpOwpleHRlcm4gaW50IHJlZGlyZWN0X2p1bXAgKHJ0eCwgcnR4LCBpbnQpOwpl eHRlcm4gdm9pZCByZWJ1aWxkX2p1bXBfbGFiZWxzIChydHgpOwpleHRlcm4gZW51bSBydHhf Y29kZSByZXZlcnNlZF9jb21wYXJpc29uX2NvZGUgKHJ0eCwgcnR4KTsKZXh0ZXJuIGVudW0g cnR4X2NvZGUgcmV2ZXJzZWRfY29tcGFyaXNvbl9jb2RlX3BhcnRzIChlbnVtIHJ0eF9jb2Rl LCBydHgsIHJ0eCwgcnR4KQogICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiB2 b2lkIGRlbGV0ZV9mb3JfcGVlcGhvbGUgKHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBjb25kanVt cF9pbl9wYXJhbGxlbF9wIChydHgpOwpleHRlcm4gdm9pZCBuZXZlcl9yZWFjaGVkX3dhcm5p bmcgKHJ0eCwgcnR4KTsKZXh0ZXJuIHZvaWQgcHVyZ2VfbGluZV9udW1iZXJfbm90ZXMgKHJ0 eCk7CmV4dGVybiB2b2lkIGNvcHlfbG9vcF9oZWFkZXJzIChydHgpOwoKCmV4dGVybiBpbnQg bWF4X3JlZ19udW0gKHZvaWQpOwpleHRlcm4gaW50IG1heF9sYWJlbF9udW0gKHZvaWQpOwpl eHRlcm4gaW50IGdldF9maXJzdF9sYWJlbF9udW0gKHZvaWQpOwpleHRlcm4gdm9pZCBkZWxl dGVfaW5zbnNfc2luY2UgKHJ0eCk7CmV4dGVybiB2b2lkIG1hcmtfcmVnX3BvaW50ZXIgKHJ0 eCwgaW50KTsKZXh0ZXJuIHZvaWQgbWFya191c2VyX3JlZyAocnR4KTsKZXh0ZXJuIHZvaWQg cmVzZXRfdXNlZF9mbGFncyAocnR4KTsKZXh0ZXJuIHZvaWQgcmVvcmRlcl9pbnNucyAocnR4 LCBydHgsIHJ0eCk7CmV4dGVybiB2b2lkIHJlb3JkZXJfaW5zbnNfbm9iYiAocnR4LCBydHgs IHJ0eCk7CmV4dGVybiBpbnQgZ2V0X21heF91aWQgKHZvaWQpOwpleHRlcm4gaW50IGluX3Nl cXVlbmNlX3AgKHZvaWQpOwpleHRlcm4gdm9pZCBmb3JjZV9uZXh0X2xpbmVfbm90ZSAodm9p ZCk7CmV4dGVybiB2b2lkIGNsZWFyX2VtaXRfY2FjaGVzICh2b2lkKTsKZXh0ZXJuIHZvaWQg aW5pdF9lbWl0ICh2b2lkKTsKZXh0ZXJuIHZvaWQgaW5pdF9lbWl0X29uY2UgKGludCk7CmV4 dGVybiB2b2lkIHB1c2hfdG9wbW9zdF9zZXF1ZW5jZSAodm9pZCk7CmV4dGVybiB2b2lkIHBv cF90b3Btb3N0X3NlcXVlbmNlICh2b2lkKTsKZXh0ZXJuIGludCBzdWJyZWdfcmVhbHBhcnRf cCAocnR4KTsKZXh0ZXJuIHZvaWQgcmV2ZXJzZV9jb21wYXJpc29uIChydHgpOwpleHRlcm4g dm9pZCBzZXRfbmV3X2ZpcnN0X2FuZF9sYXN0X2luc24gKHJ0eCwgcnR4KTsKZXh0ZXJuIHZv aWQgc2V0X25ld19maXJzdF9hbmRfbGFzdF9sYWJlbF9udW0gKGludCwgaW50KTsKZXh0ZXJu IHZvaWQgc2V0X25ld19sYXN0X2xhYmVsX251bSAoaW50KTsKZXh0ZXJuIHZvaWQgdW5zaGFy ZV9hbGxfcnRsX2FnYWluIChydHgpOwpleHRlcm4gdm9pZCBzZXRfbGFzdF9pbnNuIChydHgp OwpleHRlcm4gdm9pZCBsaW5rX2NjMF9pbnNucyAocnR4KTsKZXh0ZXJuIHZvaWQgYWRkX2lu c24gKHJ0eCk7CmV4dGVybiB2b2lkIGFkZF9pbnNuX2JlZm9yZSAocnR4LCBydHgpOwpleHRl cm4gdm9pZCBhZGRfaW5zbl9hZnRlciAocnR4LCBydHgpOwpleHRlcm4gdm9pZCByZW1vdmVf aW5zbiAocnR4KTsKZXh0ZXJuIHZvaWQgcmVvcmRlcl9pbnNuc193aXRoX2xpbmVfbm90ZXMg KHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gdm9pZCBlbWl0X2luc25fYWZ0ZXJfd2l0aF9saW5l X25vdGVzIChydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIGVudW0gcnR4X2NvZGUgY2xhc3NpZnlf aW5zbiAocnR4KTsKZXh0ZXJuIHJ0eCBlbWl0IChydHgpOwoKCgppbnQgZm9yY2VfbGluZV9u dW1iZXJzICh2b2lkKTsKdm9pZCByZXN0b3JlX2xpbmVfbnVtYmVyX3N0YXR1cyAoaW50IG9s ZF92YWx1ZSk7CmV4dGVybiB2b2lkIHJlbnVtYmVyX2luc25zIChGSUxFICopOwpleHRlcm4g dm9pZCByZW1vdmVfdW5uZWNlc3Nhcnlfbm90ZXMgKHZvaWQpOwpleHRlcm4gcnR4IGRlbGV0 ZV9pbnNuIChydHgpOwpleHRlcm4gdm9pZCBkZWxldGVfaW5zbl9jaGFpbiAocnR4LCBydHgp OwoKCmV4dGVybiBpbnQgY29tYmluZV9pbnN0cnVjdGlvbnMgKHJ0eCwgdW5zaWduZWQgaW50 KTsKZXh0ZXJuIHVuc2lnbmVkIGludCBleHRlbmRlZF9jb3VudCAocnR4LCBlbnVtIG1hY2hp bmVfbW9kZSwgaW50KTsKZXh0ZXJuIHJ0eCByZW1vdmVfZGVhdGggKHVuc2lnbmVkIGludCwg cnR4KTsKCmV4dGVybiB2b2lkIGR1bXBfY29tYmluZV9zdGF0cyAoRklMRSAqKTsKZXh0ZXJu IHZvaWQgZHVtcF9jb21iaW5lX3RvdGFsX3N0YXRzIChGSUxFICopOwoKCgoKZXh0ZXJuIHZv aWQgc2NoZWR1bGVfaW5zbnMgKEZJTEUgKik7CmV4dGVybiB2b2lkIHNjaGVkdWxlX2ViYnMg KEZJTEUgKik7CgpleHRlcm4gdm9pZCBmaXhfc2NoZWRfcGFyYW0gKGNvbnN0IGNoYXIgKiwg Y29uc3QgY2hhciAqKTsKCgpleHRlcm4gY29uc3QgY2hhciAqcHJpbnRfcnR4X2hlYWQ7CmV4 dGVybiB2b2lkIGRlYnVnX3J0eCAocnR4KTsKZXh0ZXJuIHZvaWQgZGVidWdfcnR4X2xpc3Qg KHJ0eCwgaW50KTsKZXh0ZXJuIHZvaWQgZGVidWdfcnR4X3JhbmdlIChydHgsIHJ0eCk7CmV4 dGVybiBydHggZGVidWdfcnR4X2ZpbmQgKHJ0eCwgaW50KTsKCmV4dGVybiB2b2lkIHByaW50 X21lbV9leHByIChGSUxFICosIHRyZWUpOwpleHRlcm4gdm9pZCBwcmludF9ydGwgKEZJTEUg KiwgcnR4KTsKZXh0ZXJuIHZvaWQgcHJpbnRfc2ltcGxlX3J0bCAoRklMRSAqLCBydHgpOwpl eHRlcm4gaW50IHByaW50X3J0bF9zaW5nbGUgKEZJTEUgKiwgcnR4KTsKZXh0ZXJuIHZvaWQg cHJpbnRfaW5saW5lX3J0eCAoRklMRSAqLCBydHgsIGludCk7CgoKCmV4dGVybiB2b2lkIGlu aXRfbG9vcCAodm9pZCk7CmV4dGVybiBydHggbGliY2FsbF9vdGhlcl9yZWcgKHJ0eCwgcnR4 KTsKCmV4dGVybiB2b2lkIGxvb3Bfb3B0aW1pemUgKHJ0eCwgRklMRSAqLCBpbnQpOwoKZXh0 ZXJuIHZvaWQgcmVjb3JkX2V4Y2Vzc19yZWdzIChydHgsIHJ0eCwgcnR4ICopOwoKCmV4dGVy biB2b2lkIHJlcG9zaXRpb25fcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX25vdGVzIChydHgpOwpl eHRlcm4gdm9pZCB0aHJlYWRfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlX2luc25zIChydHgpOwpl eHRlcm4gaW50IHByb2xvZ3VlX2VwaWxvZ3VlX2NvbnRhaW5zIChydHgpOwpleHRlcm4gaW50 IHNpYmNhbGxfZXBpbG9ndWVfY29udGFpbnMgKHJ0eCk7CmV4dGVybiB2b2lkIHByZXNlcnZl X3J0bF9leHByX3Jlc3VsdCAocnR4KTsKZXh0ZXJuIHZvaWQgbWFya190ZW1wX2FkZHJfdGFr ZW4gKHJ0eCk7CmV4dGVybiB2b2lkIHVwZGF0ZV90ZW1wX3Nsb3RfYWRkcmVzcyAocnR4LCBy dHgpOwpleHRlcm4gdm9pZCBwdXJnZV9hZGRyZXNzb2YgKHJ0eCk7CmV4dGVybiB2b2lkIHB1 cmdlX2hhcmRfc3VicmVnX3NldHMgKHJ0eCk7CgoKZXh0ZXJuIHZvaWQgc2V0X2ZpbGVfYW5k X2xpbmVfZm9yX3N0bXQgKGNvbnN0IGNoYXIgKiwgaW50KTsKZXh0ZXJuIHZvaWQgZXhwYW5k X251bGxfcmV0dXJuICh2b2lkKTsKZXh0ZXJuIHZvaWQgZW1pdF9qdW1wIChydHgpOwpleHRl cm4gaW50IHByZXNlcnZlX3N1YmV4cHJlc3Npb25zX3AgKHZvaWQpOwoKCmV4dGVybiB2b2lk IG1vdmVfYnlfcGllY2VzIChydHgsIHJ0eCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgaW50 KQoKICAgICAgICAgICAgICAgICAgICAgOwoKCmV4dGVybiB2b2lkIHJlY29tcHV0ZV9yZWdf dXNhZ2UgKHJ0eCwgaW50KTsKZXh0ZXJuIGludCBpbml0aWFsaXplX3VuaW5pdGlhbGl6ZWRf c3VicmVncyAodm9pZCk7CgpleHRlcm4gdm9pZCBwcmludF9ydGxfd2l0aF9iYiAoRklMRSAq LCBydHgpOwpleHRlcm4gdm9pZCBkdW1wX2Zsb3dfaW5mbyAoRklMRSAqKTsKCgoKZXh0ZXJu IHZvaWQgaW5pdF9leHBtZWQgKHZvaWQpOwpleHRlcm4gdm9pZCBleHBhbmRfaW5jIChydHgs IHJ0eCk7CmV4dGVybiB2b2lkIGV4cGFuZF9kZWMgKHJ0eCwgcnR4KTsKZXh0ZXJuIHJ0eCBl eHBhbmRfbXVsdF9oaWdocGFydCAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCwgdW5zaWduZWQg bG9uZywgcnR4LCBpbnQsIGludCkKCiAgICAgICAgICAgICAgICA7CgoKCmV4dGVybiBpbnQg Z2NzZV9tYWluIChydHgsIEZJTEUgKik7CgoKCmV4dGVybiB2b2lkIG1hcmtfZWxpbWluYXRp b24gKGludCwgaW50KTsKCmV4dGVybiBpbnQgZ2xvYmFsX2FsbG9jIChGSUxFICopOwpleHRl cm4gdm9pZCBkdW1wX2dsb2JhbF9yZWdzIChGSUxFICopOwoKCgoKZXh0ZXJuIHZvaWQgYnVp bGRfaW5zbl9jaGFpbiAocnR4KTsKCgpleHRlcm4gaW50IHJlZ19jbGFzc2VzX2ludGVyc2Vj dF9wIChlbnVtIHJlZ19jbGFzcywgZW51bSByZWdfY2xhc3MpOwpleHRlcm4gaW50IHJlZ19j bGFzc19zdWJzZXRfcCAoZW51bSByZWdfY2xhc3MsIGVudW0gcmVnX2NsYXNzKTsKZXh0ZXJu IHZvaWQgZ2xvYmFsaXplX3JlZyAoaW50KTsKZXh0ZXJuIHZvaWQgaW5pdF9yZWdzICh2b2lk KTsKZXh0ZXJuIHZvaWQgaW5pdF9yZWdfc2V0cyAodm9pZCk7CmV4dGVybiB2b2lkIHJlZ3Nl dF9yZWxlYXNlX21lbW9yeSAodm9pZCk7CmV4dGVybiB2b2lkIHJlZ2NsYXNzX2luaXQgKHZv aWQpOwpleHRlcm4gdm9pZCByZWdjbGFzcyAocnR4LCBpbnQsIEZJTEUgKik7CmV4dGVybiB2 b2lkIHJlZ19zY2FuIChydHgsIHVuc2lnbmVkIGludCwgaW50KTsKZXh0ZXJuIHZvaWQgcmVn X3NjYW5fdXBkYXRlIChydHgsIHJ0eCwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgZml4 X3JlZ2lzdGVyIChjb25zdCBjaGFyICosIGludCwgaW50KTsKCmV4dGVybiB2b2lkIGRlbGV0 ZV9udWxsX3BvaW50ZXJfY2hlY2tzIChydHgpOwoKCgpleHRlcm4gdm9pZCByZWdtb3ZlX29w dGltaXplIChydHgsIGludCwgRklMRSAqKTsKCmV4dGVybiB2b2lkIGNvbWJpbmVfc3RhY2tf YWRqdXN0bWVudHMgKHZvaWQpOwoKCgpleHRlcm4gdm9pZCBkYnJfc2NoZWR1bGUgKHJ0eCwg RklMRSAqKTsKCgoKCmV4dGVybiB2b2lkIGR1bXBfbG9jYWxfYWxsb2MgKEZJTEUgKik7Cgpl eHRlcm4gaW50IGxvY2FsX2FsbG9jICh2b2lkKTsKZXh0ZXJuIGludCBmdW5jdGlvbl9pbnZh cmlhbnRfcCAocnR4KTsKCgpleHRlcm4gdm9pZCBpbml0X2JyYW5jaF9wcm9iIChjb25zdCBj aGFyICopOwpleHRlcm4gdm9pZCBicmFuY2hfcHJvYiAodm9pZCk7CmV4dGVybiB2b2lkIGVu ZF9icmFuY2hfcHJvYiAodm9pZCk7CmV4dGVybiB2b2lkIG91dHB1dF9mdW5jX3N0YXJ0X3By b2ZpbGVyICh2b2lkKTsKCgoKZXh0ZXJuIHZvaWQgcmVnX3RvX3N0YWNrIChydHgsIEZJTEUg Kik7CgoKCmV4dGVybiBpbnQgYWRkX2RvdWJsZSAodW5zaWduZWQgbG9uZywgbG9uZywgdW5z aWduZWQgbG9uZywgbG9uZywgdW5zaWduZWQgbG9uZyAqLCBsb25nICopCgoKICAgICAgICAg ICAgICAgICAgICAgICA7CmV4dGVybiBpbnQgbmVnX2RvdWJsZSAodW5zaWduZWQgbG9uZywg bG9uZywgdW5zaWduZWQgbG9uZyAqLCBsb25nICopCgogICAgICAgICAgICAgICAgICAgICAg IDsKZXh0ZXJuIGludCBtdWxfZG91YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCB1bnNpZ25l ZCBsb25nLCBsb25nLCB1bnNpZ25lZCBsb25nICosIGxvbmcgKikKCgoKICAgICAgICAgICAg ICAgICAgICAgICA7CmV4dGVybiB2b2lkIGxzaGlmdF9kb3VibGUgKHVuc2lnbmVkIGxvbmcs IGxvbmcsIGxvbmcsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyAqLCBsb25nICosIGlu dCkKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gdm9pZCByc2hpZnRf ZG91YmxlICh1bnNpZ25lZCBsb25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBpbnQsIHVuc2ln bmVkIGxvbmcgKiwgbG9uZyAqLCBpbnQpCgoKICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKZXh0ZXJuIHZvaWQgbHJvdGF0ZV9kb3VibGUgKHVuc2lnbmVkIGxvbmcsIGxvbmcsIGxv bmcsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyAqLCBsb25nICopCgoKICAgICAgICAg ICAgICAgICAgICAgICA7CmV4dGVybiB2b2lkIHJyb3RhdGVfZG91YmxlICh1bnNpZ25lZCBs b25nLCBsb25nLCBsb25nLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGxvbmcgKiwgbG9uZyAq KQoKCiAgICAgICAgICAgICAgICAgICAgICAgOwoKCmVudW0gbGliY2FsbF90eXBlCnsKICBM Q1RfTk9STUFMID0gMCwKICBMQ1RfQ09OU1QgPSAxLAogIExDVF9QVVJFID0gMiwKICBMQ1Rf Q09OU1RfTUFLRV9CTE9DSyA9IDMsCiAgTENUX1BVUkVfTUFLRV9CTE9DSyA9IDQsCiAgTENU X05PUkVUVVJOID0gNSwKICBMQ1RfVEhST1cgPSA2LAogIExDVF9BTFdBWVNfUkVUVVJOID0g NywKICBMQ1RfUkVUVVJOU19UV0lDRSA9IDgKfTsKCmV4dGVybiB2b2lkIGVtaXRfbGlicmFy eV9jYWxsIChydHgsIGVudW0gbGliY2FsbF90eXBlLCBlbnVtIG1hY2hpbmVfbW9kZSwgaW50 LCAuLi4pCgogICAgICAgICAgICA7CmV4dGVybiBydHggZW1pdF9saWJyYXJ5X2NhbGxfdmFs dWUgKHJ0eCwgcnR4LCBlbnVtIGxpYmNhbGxfdHlwZSwgZW51bSBtYWNoaW5lX21vZGUsIGlu dCwgLi4uKQoKICAgICAgICAgICAgOwoKCmV4dGVybiBpbnQgc2V0X2RvbWluYXRlc191c2Ug KGludCwgaW50LCBpbnQsIHJ0eCwgcnR4KTsKCgpleHRlcm4gaW50IGluX2RhdGFfc2VjdGlv biAodm9pZCk7CmV4dGVybiB2b2lkIGluaXRfdmFyYXNtX29uY2UgKHZvaWQpOwoKCmV4dGVy biB2b2lkIGluaXRfcnRsICh2b2lkKTsKZXh0ZXJuIHZvaWQgdHJhdmVyc2VfbWRfY29uc3Rh bnRzIChpbnQgKCopICh2b2lkICoqLCB2b2lkICopLCB2b2lkICopCiAgICAgICAgICAgICAg IDsKc3RydWN0IG1kX2NvbnN0YW50IHsgY2hhciAqbmFtZSwgKnZhbHVlOyB9OwoKCmV4dGVy biBpbnQgcmVhZF9za2lwX3NwYWNlcyAoRklMRSAqKTsKZXh0ZXJuIHJ0eCByZWFkX3J0eCAo RklMRSAqKTsKCgpleHRlcm4gY29uc3QgY2hhciAqcmVhZF9ydHhfZmlsZW5hbWU7CmV4dGVy biBpbnQgcmVhZF9ydHhfbGluZW5vOwoKCgoKCgoKZXh0ZXJuIHZvaWQgZmFuY3lfYWJvcnQg KGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopCiAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3JldHVybl9fKSk7CiNkZWZpbmUgYWJvcnQoKSBmYW5jeV9hYm9ydCAoX19GSUxFX18s IF9fTElORV9fLCBfX0ZVTkNUSU9OX18pCgoKZXh0ZXJuIHZvaWQgY2xlYXJfcmVnX2FsaWFz X2luZm8gKHJ0eCk7CmV4dGVybiBydHggY2Fub25fcnR4IChydHgpOwpleHRlcm4gaW50IHRy dWVfZGVwZW5kZW5jZSAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSwgcnR4LCBpbnQgKCopKHJ0 eCwgaW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHJ0eCBnZXRfYWRk ciAocnR4KTsKZXh0ZXJuIGludCBjYW5vbl90cnVlX2RlcGVuZGVuY2UgKHJ0eCwgZW51bSBt YWNoaW5lX21vZGUsIHJ0eCwgcnR4LCBpbnQgKCopKHJ0eCwgaW50KSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOwpleHRlcm4gaW50IHJlYWRfZGVwZW5kZW5jZSAocnR4LCBydHgpOwpleHRlcm4g aW50IGFudGlfZGVwZW5kZW5jZSAocnR4LCBydHgpOwpleHRlcm4gaW50IG91dHB1dF9kZXBl bmRlbmNlIChydHgsIHJ0eCk7CmV4dGVybiB2b2lkIG1hcmtfY29uc3RhbnRfZnVuY3Rpb24g KHZvaWQpOwpleHRlcm4gdm9pZCBpbml0X2FsaWFzX29uY2UgKHZvaWQpOwpleHRlcm4gdm9p ZCBpbml0X2FsaWFzX2FuYWx5c2lzICh2b2lkKTsKZXh0ZXJuIHZvaWQgZW5kX2FsaWFzX2Fu YWx5c2lzICh2b2lkKTsKZXh0ZXJuIHJ0eCBhZGRyX3NpZGVfZWZmZWN0X2V2YWwgKHJ0eCwg aW50LCBpbnQpOwoKCnR5cGVkZWYgZW51bSB7CiAgc2liY2FsbF91c2Vfbm9ybWFsID0gMSwK ICBzaWJjYWxsX3VzZV90YWlsX3JlY3Vyc2lvbiwKICBzaWJjYWxsX3VzZV9zaWJjYWxsCn0g c2liY2FsbF91c2VfdDsKCmV4dGVybiB2b2lkIG9wdGltaXplX3NpYmxpbmdfYW5kX3RhaWxf cmVjdXJzaXZlX2NhbGxzICh2b2lkKTsKZXh0ZXJuIHZvaWQgcmVwbGFjZV9jYWxsX3BsYWNl aG9sZGVyIChydHgsIHNpYmNhbGxfdXNlX3QpOwoKCmV4dGVybiBpbnQgc3RhY2tfcmVnc19t ZW50aW9uZWQgKHJ0eCBpbnNuKTsKCgoKZXh0ZXJuIHJ0eCBzdGFja19saW1pdF9ydHg7CgoK ZXh0ZXJuIHZvaWQgcmVncmVuYW1lX29wdGltaXplICh2b2lkKTsKZXh0ZXJuIHZvaWQgY29w eXByb3BfaGFyZHJlZ19mb3J3YXJkICh2b2lkKTsKCgpleHRlcm4gdm9pZCBpZl9jb252ZXJ0 IChpbnQpOwoKCmV4dGVybiB2b2lkIGludmVydF9icl9wcm9iYWJpbGl0aWVzIChydHgpOwpl eHRlcm4gX0Jvb2wgZXhwZW5zaXZlX2Z1bmN0aW9uX3AgKGludCk7CiMgMjYgInJlZ3JlbmFt ZS5jIiAyCiMgMSAidG1fcC5oIiAxCiMgMSAiaTM4Ni1wcm90b3MuaCIgMQojIDIzICJpMzg2 LXByb3Rvcy5oIgpleHRlcm4gdm9pZCBvdmVycmlkZV9vcHRpb25zICh2b2lkKTsKZXh0ZXJu IHZvaWQgb3B0aW1pemF0aW9uX29wdGlvbnMgKGludCwgaW50KTsKCmV4dGVybiBpbnQgaXg4 Nl9jYW5fdXNlX3JldHVybl9pbnNuX3AgKHZvaWQpOwpleHRlcm4gaW50IGl4ODZfZnJhbWVf cG9pbnRlcl9yZXF1aXJlZCAodm9pZCk7CmV4dGVybiB2b2lkIGl4ODZfc2V0dXBfZnJhbWVf YWRkcmVzc2VzICh2b2lkKTsKCmV4dGVybiB2b2lkIGl4ODZfYXNtX2ZpbGVfZW5kIChGSUxF ICopOwpleHRlcm4gdm9pZCBsb2FkX3BpY19yZWdpc3RlciAodm9pZCk7CmV4dGVybiBsb25n IGl4ODZfaW5pdGlhbF9lbGltaW5hdGlvbl9vZmZzZXQgKGludCwgaW50KTsKZXh0ZXJuIHZv aWQgaXg4Nl9leHBhbmRfcHJvbG9ndWUgKHZvaWQpOwpleHRlcm4gdm9pZCBpeDg2X2V4cGFu ZF9lcGlsb2d1ZSAoaW50KTsKCmV4dGVybiB2b2lkIGl4ODZfb3V0cHV0X2FkZHJfdmVjX2Vs dCAoRklMRSAqLCBpbnQpOwpleHRlcm4gdm9pZCBpeDg2X291dHB1dF9hZGRyX2RpZmZfZWx0 IChGSUxFICosIGludCwgaW50KTsKCgpleHRlcm4gaW50IGl4ODZfYWxpZ25lZF9wIChydHgp OwoKZXh0ZXJuIGludCBzdGFuZGFyZF84MDM4N19jb25zdGFudF9wIChydHgpOwpleHRlcm4g aW50IHN0YW5kYXJkX3NzZV9jb25zdGFudF9wIChydHgpOwpleHRlcm4gaW50IHN5bWJvbGlj X3JlZmVyZW5jZV9tZW50aW9uZWRfcCAocnR4KTsKCmV4dGVybiBpbnQgeDg2XzY0X2dlbmVy YWxfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgeDg2XzY0 X3N6ZXh0X2dlbmVyYWxfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVy biBpbnQgeDg2XzY0X25vbm1lbW9yeV9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2Rl KTsKZXh0ZXJuIGludCB4ODZfNjRfc3pleHRfbm9ubWVtb3J5X29wZXJhbmQgKHJ0eCwgZW51 bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHg4Nl82NF9pbW1lZGlhdGVfb3BlcmFuZCAo cnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgeDg2XzY0X3pleHRfaW1tZWRp YXRlX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGNvbnN0 X2ludF8xX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHN5 bWJvbGljX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHBp Y19zeW1ib2xpY19vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGlu dCBjYWxsX2luc25fb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBp bnQgY29uc3RhbnRfY2FsbF9hZGRyZXNzX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21v ZGUpOwpleHRlcm4gaW50IGNvbnN0MF9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2Rl KTsKZXh0ZXJuIGludCBjb25zdDFfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7 CmV4dGVybiBpbnQgY29uc3QyNDhfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7 CmV4dGVybiBpbnQgaW5jZGVjX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpl eHRlcm4gaW50IHJlZ19ub19zcF9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsK ZXh0ZXJuIGludCBtbXhfcmVnX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpl eHRlcm4gaW50IGdlbmVyYWxfbm9fZWxpbV9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9t b2RlKTsKZXh0ZXJuIGludCBub25tZW1vcnlfbm9fZWxpbV9vcGVyYW5kIChydHgsIGVudW0g bWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBxX3JlZ3Nfb3BlcmFuZCAocnR4LCBlbnVtIG1h Y2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgbm9uX3FfcmVnc19vcGVyYW5kIChydHgsIGVudW0g bWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBzc2VfY29tcGFyaXNvbl9vcGVyYXRvciAocnR4 LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgZmNtb3ZfY29tcGFyaXNvbl9vcGVy YXRvciAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgY21wX2ZwX2V4cGFu ZGVyX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGl4ODZf Y29tcGFyaXNvbl9vcGVyYXRvciAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBp bnQgZXh0X3JlZ2lzdGVyX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRl cm4gaW50IGJpbmFyeV9mcF9vcGVyYXRvciAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4 dGVybiBpbnQgbXVsdF9vcGVyYXRvciAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVy biBpbnQgZGl2X29wZXJhdG9yIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGlu dCBhcml0aF9vcl9sb2dpY2FsX29wZXJhdG9yIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsK ZXh0ZXJuIGludCBwcm9tb3RhYmxlX2JpbmFyeV9vcGVyYXRvciAocnR4LCBlbnVtIG1hY2hp bmVfbW9kZSk7CmV4dGVybiBpbnQgbWVtb3J5X2Rpc3BsYWNlbWVudF9vcGVyYW5kIChydHgs IGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBjbXBzaV9vcGVyYW5kIChydHgsIGVu dW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBsb25nX21lbW9yeV9vcGVyYW5kIChydHgs IGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBhbGlnbmVkX29wZXJhbmQgKHJ0eCwg ZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgaXg4Nl9jY19t b2RlIChlbnVtIHJ0eF9jb2RlLCBydHgsIHJ0eCk7CgpleHRlcm4gaW50IGl4ODZfZXhwYW5k X21vdnN0ciAocnR4LCBydHgsIHJ0eCwgcnR4KTsKZXh0ZXJuIGludCBpeDg2X2V4cGFuZF9j bHJzdHIgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gaW50IGl4ODZfZXhwYW5kX3N0cmxlbiAo cnR4LCBydHgsIHJ0eCwgcnR4KTsKCmV4dGVybiBpbnQgbGVnaXRpbWF0ZV9waWNfYWRkcmVz c19kaXNwX3AgKHJ0eCk7CmV4dGVybiBpbnQgbGVnaXRpbWF0ZV9hZGRyZXNzX3AgKGVudW0g bWFjaGluZV9tb2RlLCBydHgsIGludCk7CmV4dGVybiBydHggbGVnaXRpbWl6ZV9waWNfYWRk cmVzcyAocnR4LCBydHgpOwpleHRlcm4gcnR4IGxlZ2l0aW1pemVfYWRkcmVzcyAocnR4LCBy dHgsIGVudW0gbWFjaGluZV9tb2RlKTsKCmV4dGVybiB2b2lkIHByaW50X3JlZyAocnR4LCBp bnQsIEZJTEUqKTsKZXh0ZXJuIHZvaWQgcHJpbnRfb3BlcmFuZCAoRklMRSosIHJ0eCwgaW50 KTsKZXh0ZXJuIHZvaWQgcHJpbnRfb3BlcmFuZF9hZGRyZXNzIChGSUxFKiwgcnR4KTsKCmV4 dGVybiB2b2lkIHNwbGl0X2RpIChydHhbXSwgaW50LCBydHhbXSwgcnR4W10pOwpleHRlcm4g dm9pZCBzcGxpdF90aSAocnR4W10sIGludCwgcnR4W10sIHJ0eFtdKTsKCmV4dGVybiBjb25z dCBjaGFyICpvdXRwdXRfMzg3X2JpbmFyeV9vcCAocnR4LCBydHgqKTsKZXh0ZXJuIGNvbnN0 IGNoYXIgKm91dHB1dF9maXhfdHJ1bmMgKHJ0eCwgcnR4Kik7CmV4dGVybiBjb25zdCBjaGFy ICpvdXRwdXRfZnBfY29tcGFyZSAocnR4LCBydHgqLCBpbnQsIGludCk7CgpleHRlcm4gdm9p ZCBpMzg2X2R3YXJmX291dHB1dF9hZGRyX2NvbnN0IChGSUxFKiwgcnR4KTsKZXh0ZXJuIHJ0 eCBpMzg2X3NpbXBsaWZ5X2R3YXJmX2FkZHIgKHJ0eCk7CgpleHRlcm4gdm9pZCBpeDg2X2V4 cGFuZF9jbGVhciAocnR4KTsKZXh0ZXJuIHZvaWQgaXg4Nl9leHBhbmRfbW92ZSAoZW51bSBt YWNoaW5lX21vZGUsIHJ0eFtdKTsKZXh0ZXJuIHZvaWQgaXg4Nl9leHBhbmRfdmVjdG9yX21v dmUgKGVudW0gbWFjaGluZV9tb2RlLCBydHhbXSk7CmV4dGVybiB2b2lkIGl4ODZfZXhwYW5k X2JpbmFyeV9vcGVyYXRvciAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5lX21vZGUsIHJ0 eFtdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGlu dCBpeDg2X2JpbmFyeV9vcGVyYXRvcl9vayAoZW51bSBydHhfY29kZSwgZW51bSBtYWNoaW5l X21vZGUsIHJ0eFtdKQogICAgICAgICAgICAgIDsKZXh0ZXJuIHZvaWQgaXg4Nl9leHBhbmRf dW5hcnlfb3BlcmF0b3IgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlLCBydHhb XSkKICAgICAgICAgICAgICAgICAgOwpleHRlcm4gaW50IGl4ODZfdW5hcnlfb3BlcmF0b3Jf b2sgKGVudW0gcnR4X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlLCBydHhbXSkKICAgICAgICAg ICAgIDsKZXh0ZXJuIGludCBpeDg2X21hdGNoX2NjbW9kZSAocnR4LCBlbnVtIG1hY2hpbmVf bW9kZSk7CmV4dGVybiBydHggaXg4Nl9leHBhbmRfY29tcGFyZSAoZW51bSBydHhfY29kZSwg cnR4ICosIHJ0eCAqKTsKZXh0ZXJuIGludCBpeDg2X3VzZV9mY29taV9jb21wYXJlIChlbnVt IHJ0eF9jb2RlKTsKZXh0ZXJuIHZvaWQgaXg4Nl9leHBhbmRfYnJhbmNoIChlbnVtIHJ0eF9j b2RlLCBydHgpOwpleHRlcm4gaW50IGl4ODZfZXhwYW5kX3NldGNjIChlbnVtIHJ0eF9jb2Rl LCBydHgpOwpleHRlcm4gaW50IGl4ODZfZXhwYW5kX2ludF9tb3ZjYyAocnR4W10pOwpleHRl cm4gaW50IGl4ODZfZXhwYW5kX2ZwX21vdmNjIChydHhbXSk7CmV4dGVybiB2b2lkIHg4Nl9p bml0aWFsaXplX3RyYW1wb2xpbmUgKHJ0eCwgcnR4LCBydHgpOwpleHRlcm4gcnR4IGl4ODZf emVyb19leHRlbmRfdG9fUG1vZGUgKHJ0eCk7CmV4dGVybiB2b2lkIGl4ODZfc3BsaXRfbG9u Z19tb3ZlIChydHhbXSk7CmV4dGVybiB2b2lkIGl4ODZfc3BsaXRfYXNobGRpIChydHggKiwg cnR4KTsKZXh0ZXJuIHZvaWQgaXg4Nl9zcGxpdF9hc2hyZGkgKHJ0eCAqLCBydHgpOwpleHRl cm4gdm9pZCBpeDg2X3NwbGl0X2xzaHJkaSAocnR4ICosIHJ0eCk7CmV4dGVybiBpbnQgaXg4 Nl9hZGRyZXNzX2Nvc3QgKHJ0eCk7CmV4dGVybiBydHggaXg4Nl9maW5kX2Jhc2VfdGVybSAo cnR4KTsKCmV4dGVybiBydHggYXNzaWduXzM4Nl9zdGFja19sb2NhbCAoZW51bSBtYWNoaW5l X21vZGUsIGludCk7CmV4dGVybiBpbnQgaXg4Nl9hdHRyX2xlbmd0aF9pbW1lZGlhdGVfZGVm YXVsdCAocnR4LCBpbnQpOwpleHRlcm4gaW50IGl4ODZfYXR0cl9sZW5ndGhfYWRkcmVzc19k ZWZhdWx0IChydHgpOwoKZXh0ZXJuIGVudW0gbWFjaGluZV9tb2RlIGl4ODZfZnBfY29tcGFy ZV9tb2RlIChlbnVtIHJ0eF9jb2RlKTsKCmV4dGVybiBpbnQgeDg2XzY0X3NpZ25fZXh0ZW5k ZWRfdmFsdWUgKHJ0eCk7CmV4dGVybiBpbnQgeDg2XzY0X3plcm9fZXh0ZW5kZWRfdmFsdWUg KHJ0eCk7CmV4dGVybiBydHggaXg4Nl9saWJjYWxsX3ZhbHVlIChlbnVtIG1hY2hpbmVfbW9k ZSk7CmV4dGVybiBfQm9vbCBpeDg2X2Z1bmN0aW9uX3ZhbHVlX3JlZ25vX3AgKGludCk7CmV4 dGVybiBfQm9vbCBpeDg2X2Z1bmN0aW9uX2FyZ19yZWdub19wIChpbnQpOwpleHRlcm4gaW50 IGl4ODZfZnVuY3Rpb25fYXJnX2JvdW5kYXJ5IChlbnVtIG1hY2hpbmVfbW9kZSwgdHJlZSk7 CmV4dGVybiBpbnQgaXg4Nl9yZXR1cm5faW5fbWVtb3J5ICh0cmVlKTsKZXh0ZXJuIHZvaWQg aXg4Nl92YV9zdGFydCAoaW50LCB0cmVlLCBydHgpOwpleHRlcm4gcnR4IGl4ODZfdmFfYXJn ICh0cmVlLCB0cmVlKTsKZXh0ZXJuIHZvaWQgaXg4Nl9zZXR1cF9pbmNvbWluZ192YXJhcmdz IChDVU1VTEFUSVZFX0FSR1MgKiwgZW51bSBtYWNoaW5lX21vZGUsIHRyZWUsIGludCAqLCBp bnQpCgogICAgICAgICAgICAgICAgICAgICAgICAgOwoKZXh0ZXJuIHJ0eCBpeDg2X2ZvcmNl X3RvX21lbW9yeSAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7CmV4dGVybiB2b2lkIGl4ODZf ZnJlZV9mcm9tX21lbW9yeSAoZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gdm9pZCBpeDg2 X3NwbGl0X2ZwX2JyYW5jaCAoZW51bSBydHhfY29kZSBjb2RlLCBydHgsIHJ0eCwgcnR4LCBy dHgsIHJ0eCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gaW50IGl4ODZf aGFyZF9yZWdub19tb2RlX29rIChpbnQsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGlu dCBpeDg2X3JlZ2lzdGVyX21vdmVfY29zdCAoZW51bSBtYWNoaW5lX21vZGUsIGVudW0gcmVn X2NsYXNzLCBlbnVtIHJlZ19jbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0 ZXJuIGludCBpeDg2X3NlY29uZGFyeV9tZW1vcnlfbmVlZGVkIChlbnVtIHJlZ19jbGFzcywg ZW51bSByZWdfY2xhc3MsIGVudW0gbWFjaGluZV9tb2RlLCBpbnQpCgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwpleHRlcm4gZW51bSByZWdfY2xhc3MgaXg4Nl9wcmVmZXJy ZWRfcmVsb2FkX2NsYXNzIChydHgsIGVudW0gcmVnX2NsYXNzKQogICAgICAgICAgICAgICAg ICAgICAgICAgIDsKZXh0ZXJuIGludCBpeDg2X21lbW9yeV9tb3ZlX2Nvc3QgKGVudW0gbWFj aGluZV9tb2RlLCBlbnVtIHJlZ19jbGFzcywgaW50KQogICAgICAgICAgICA7CmV4dGVybiB2 b2lkIGl4ODZfc2V0X21vdmVfbWVtX2F0dHJzIChydHgsIHJ0eCwgcnR4LCBydHgsIHJ0eCk7 CmV4dGVybiB2b2lkIGVtaXRfaTM4N19jd19pbml0aWFsaXphdGlvbiAocnR4LCBydHgpOwpl eHRlcm4gX0Jvb2wgaXg4Nl9mcF9qdW1wX25vbnRyaXZpYWxfcCAoZW51bSBydHhfY29kZSk7 CmV4dGVybiB2b2lkIHg4Nl9vcmRlcl9yZWdzX2Zvcl9sb2NhbF9hbGxvYyAodm9pZCk7CiMg MiAidG1fcC5oIiAyCiMgMSAidG0tcHJlZHMuaCIgMQoKCgojZGVmaW5lIEdDQ19UTV9QUkVE U19IIAoKCgpleHRlcm4gaW50IHg4Nl82NF9pbW1lZGlhdGVfb3BlcmFuZCAocnR4LCBlbnVt IG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgeDg2XzY0X25vbm1lbW9yeV9vcGVyYW5kIChy dHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCB4ODZfNjRfbW92YWJzX29wZXJh bmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHg4Nl82NF9zemV4dF9u b25tZW1vcnlfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQg eDg2XzY0X2dlbmVyYWxfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVy biBpbnQgeDg2XzY0X3N6ZXh0X2dlbmVyYWxfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVf bW9kZSk7CmV4dGVybiBpbnQgeDg2XzY0X3pleHRfaW1tZWRpYXRlX29wZXJhbmQgKHJ0eCwg ZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHNoaWZ0ZGlfb3BlcmFuZCAocnR4LCBl bnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgY29uc3RfaW50XzFfb3BlcmFuZCAocnR4 LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgY29uc3RfaW50XzFfMzFfb3BlcmFu ZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgc3ltYm9saWNfb3BlcmFu ZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgYWxpZ25lZF9vcGVyYW5k IChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBwaWNfc3ltYm9saWNfb3Bl cmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgY2FsbF9pbnNuX29w ZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGNvbnN0YW50X2Nh bGxfYWRkcmVzc19vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGlu dCBjb25zdDBfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQg Y29uc3QxX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGNv bnN0MjQ4X29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGlu Y2RlY19vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBtbXhf cmVnX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IHJlZ19u b19zcF9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBnZW5l cmFsX25vX2VsaW1fb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBp bnQgbm9ubWVtb3J5X25vX2VsaW1fb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7 CmV4dGVybiBpbnQgcV9yZWdzX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpl eHRlcm4gaW50IG5vbl9xX3JlZ3Nfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7 CmV4dGVybiBpbnQgZmNtb3ZfY29tcGFyaXNvbl9vcGVyYXRvciAocnR4LCBlbnVtIG1hY2hp bmVfbW9kZSk7CmV4dGVybiBpbnQgc3NlX2NvbXBhcmlzb25fb3BlcmF0b3IgKHJ0eCwgZW51 bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGl4ODZfY29tcGFyaXNvbl9vcGVyYXRvciAo cnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgY21wX2ZwX2V4cGFuZGVyX29w ZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGV4dF9yZWdpc3Rl cl9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0ZXJuIGludCBiaW5hcnlf ZnBfb3BlcmF0b3IgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IG11bHRf b3BlcmF0b3IgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRlcm4gaW50IGRpdl9vcGVy YXRvciAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgYXJpdGhfb3JfbG9n aWNhbF9vcGVyYXRvciAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7CmV4dGVybiBpbnQgcHJv bW90YWJsZV9iaW5hcnlfb3BlcmF0b3IgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRl cm4gaW50IG1lbW9yeV9kaXNwbGFjZW1lbnRfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVf bW9kZSk7CmV4dGVybiBpbnQgY21wc2lfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9k ZSk7CmV4dGVybiBpbnQgbG9uZ19tZW1vcnlfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVf bW9kZSk7CiMgMyAidG1fcC5oIiAyCiMgMjcgInJlZ3JlbmFtZS5jIiAyCiMgMSAiaW5zbi1j b25maWcuaCIgMQoKCgoKI2RlZmluZSBHQ0NfSU5TTl9DT05GSUdfSCAKCiNkZWZpbmUgTUFY X1JFQ09HX09QRVJBTkRTIDMwCiNkZWZpbmUgTUFYX0RVUF9PUEVSQU5EUyA0CgojZGVmaW5l IE1BWF9JTlNOU19QRVJfU1BMSVQgNAoKI2RlZmluZSBIQVZFX2NvbmRpdGlvbmFsX21vdmUg MQojZGVmaW5lIEhBVkVfcGVlcGhvbGUyIDEKI2RlZmluZSBNQVhfSU5TTlNfUEVSX1BFRVAy IDQKIyAyOCAicmVncmVuYW1lLmMiIDIKIyAxICJyZWdzLmgiIDEKIyAyMyAicmVncy5oIgoj IDEgInZhcnJheS5oIiAxCiMgMjMgInZhcnJheS5oIgojZGVmaW5lIEdDQ19WQVJSQVlfSCAK IyAzNiAidmFycmF5LmgiCnN0cnVjdCBjb25zdF9lcXVpdl9kYXRhIHsKIyA1MCAidmFycmF5 LmgiCiAgc3RydWN0IHJ0eF9kZWYgKnJ0eDsKCgoKICB1bnNpZ25lZCBhZ2U7Cn07CgoKdHlw ZWRlZiB1bmlvbiB2YXJyYXlfZGF0YV90YWcgewogIGNoYXIgY1sxXTsKICB1bnNpZ25lZCBj aGFyIHVjWzFdOwogIHNob3J0IHNbMV07CiAgdW5zaWduZWQgc2hvcnQgdXNbMV07CiAgaW50 IGlbMV07CiAgdW5zaWduZWQgaW50IHVbMV07CiAgbG9uZyBsWzFdOwogIHVuc2lnbmVkIGxv bmcgdWxbMV07CiAgbG9uZyBoaW50WzFdOwogIHVuc2lnbmVkIGxvbmcgdWhpbnRbMV07CiAg dm9pZCAqIGdlbmVyaWNbMV07CiAgY2hhciAqY3B0clsxXTsKICBzdHJ1Y3QgcnR4X2RlZiAq cnR4WzFdOwogIHN0cnVjdCBydHZlY19kZWYgKnJ0dmVjWzFdOwogIHVuaW9uIHRyZWVfbm9k ZSAqdHJlZVsxXTsKICBzdHJ1Y3QgYml0bWFwX2hlYWRfZGVmICpiaXRtYXBbMV07CiAgc3Ry dWN0IHNjaGVkX2luZm9fdGFnICpzY2hlZFsxXTsKICBzdHJ1Y3QgcmVnX2luZm9fZGVmICpy ZWdbMV07CiAgc3RydWN0IGNvbnN0X2VxdWl2X2RhdGEgY29uc3RfZXF1aXZbMV07CiAgc3Ry dWN0IGJhc2ljX2Jsb2NrX2RlZiAqYmJbMV07CiAgc3RydWN0IGVsdF9saXN0ICp0ZVsxXTsK fSB2YXJyYXlfZGF0YTsKCgp0eXBlZGVmIHN0cnVjdCB2YXJyYXlfaGVhZF90YWcgewogIHNp emVfdCBudW1fZWxlbWVudHM7CiAgc2l6ZV90IGVsZW1lbnRzX3VzZWQ7CgogIHNpemVfdCBl bGVtZW50X3NpemU7CiAgY29uc3QgY2hhciAqbmFtZTsKICB2YXJyYXlfZGF0YSBkYXRhOwp9 ICp2YXJyYXlfdHlwZTsKCgoKZXh0ZXJuIHZhcnJheV90eXBlIHZhcnJheV9pbml0IChzaXpl X3QsIHNpemVfdCwgY29uc3QgY2hhciAqKTsKCiNkZWZpbmUgVkFSUkFZX0NIQVJfSU5JVCh2 YSxudW0sbmFtZSkgdmEgPSB2YXJyYXlfaW5pdCAobnVtLCBzaXplb2YgKGNoYXIpLCBuYW1l KQoKCiNkZWZpbmUgVkFSUkFZX1VDSEFSX0lOSVQodmEsbnVtLG5hbWUpIHZhID0gdmFycmF5 X2luaXQgKG51bSwgc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSwgbmFtZSkKCgojZGVmaW5lIFZB UlJBWV9TSE9SVF9JTklUKHZhLG51bSxuYW1lKSB2YSA9IHZhcnJheV9pbml0IChudW0sIHNp emVvZiAoc2hvcnQpLCBuYW1lKQoKCiNkZWZpbmUgVkFSUkFZX1VTSE9SVF9JTklUKHZhLG51 bSxuYW1lKSB2YSA9IHZhcnJheV9pbml0IChudW0sIHNpemVvZiAodW5zaWduZWQgc2hvcnQp LCBuYW1lKQoKCiNkZWZpbmUgVkFSUkFZX0lOVF9JTklUKHZhLG51bSxuYW1lKSB2YSA9IHZh cnJheV9pbml0IChudW0sIHNpemVvZiAoaW50KSwgbmFtZSkKCgojZGVmaW5lIFZBUlJBWV9V SU5UX0lOSVQodmEsbnVtLG5hbWUpIHZhID0gdmFycmF5X2luaXQgKG51bSwgc2l6ZW9mICh1 bnNpZ25lZCBpbnQpLCBuYW1lKQoKCiNkZWZpbmUgVkFSUkFZX0xPTkdfSU5JVCh2YSxudW0s bmFtZSkgdmEgPSB2YXJyYXlfaW5pdCAobnVtLCBzaXplb2YgKGxvbmcpLCBuYW1lKQoKCiNk ZWZpbmUgVkFSUkFZX1VMT05HX0lOSVQodmEsbnVtLG5hbWUpIHZhID0gdmFycmF5X2luaXQg KG51bSwgc2l6ZW9mICh1bnNpZ25lZCBsb25nKSwgbmFtZSkKCgojZGVmaW5lIFZBUlJBWV9X SURFX0lOVF9JTklUKHZhLG51bSxuYW1lKSB2YSA9IHZhcnJheV9pbml0IChudW0sIHNpemVv ZiAoSE9TVF9XSURFX0lOVCksIG5hbWUpCgoKI2RlZmluZSBWQVJSQVlfVVdJREVfSU5UX0lO SVQodmEsbnVtLG5hbWUpIHZhID0gdmFycmF5X2luaXQgKG51bSwgc2l6ZW9mICh1bnNpZ25l ZCBIT1NUX1dJREVfSU5UKSwgbmFtZSkKCgojZGVmaW5lIFZBUlJBWV9HRU5FUklDX1BUUl9J TklUKHZhLG51bSxuYW1lKSB2YSA9IHZhcnJheV9pbml0IChudW0sIHNpemVvZiAoUFRSKSwg bmFtZSkKCgojZGVmaW5lIFZBUlJBWV9DSEFSX1BUUl9JTklUKHZhLG51bSxuYW1lKSB2YSA9 IHZhcnJheV9pbml0IChudW0sIHNpemVvZiAoY2hhciAqKSwgbmFtZSkKCgojZGVmaW5lIFZB UlJBWV9SVFhfSU5JVCh2YSxudW0sbmFtZSkgdmEgPSB2YXJyYXlfaW5pdCAobnVtLCBzaXpl b2YgKHN0cnVjdCBydHhfZGVmICopLCBuYW1lKQoKCiNkZWZpbmUgVkFSUkFZX1JUVkVDX0lO SVQodmEsbnVtLG5hbWUpIHZhID0gdmFycmF5X2luaXQgKG51bSwgc2l6ZW9mIChzdHJ1Y3Qg cnR2ZWNfZGVmKSwgbmFtZSkKCgojZGVmaW5lIFZBUlJBWV9UUkVFX0lOSVQodmEsbnVtLG5h bWUpIHZhID0gdmFycmF5X2luaXQgKG51bSwgc2l6ZW9mICh1bmlvbiB0cmVlX25vZGUgKiks IG5hbWUpCgoKI2RlZmluZSBWQVJSQVlfQklUTUFQX0lOSVQodmEsbnVtLG5hbWUpIHZhID0g dmFycmF5X2luaXQgKG51bSwgc2l6ZW9mIChzdHJ1Y3QgYml0bWFwX2hlYWRfZGVmICopLCBu YW1lKQoKCiNkZWZpbmUgVkFSUkFZX1NDSEVEX0lOSVQodmEsbnVtLG5hbWUpIHZhID0gdmFy cmF5X2luaXQgKG51bSwgc2l6ZW9mIChzdHJ1Y3Qgc2NoZWRfaW5mb190YWcgKiksIG5hbWUp CgoKI2RlZmluZSBWQVJSQVlfUkVHX0lOSVQodmEsbnVtLG5hbWUpIHZhID0gdmFycmF5X2lu aXQgKG51bSwgc2l6ZW9mIChzdHJ1Y3QgcmVnX2luZm9fZGVmICopLCBuYW1lKQoKCiNkZWZp bmUgVkFSUkFZX0NPTlNUX0VRVUlWX0lOSVQodmEsbnVtLG5hbWUpIHZhID0gdmFycmF5X2lu aXQgKG51bSwgc2l6ZW9mIChzdHJ1Y3QgY29uc3RfZXF1aXZfZGF0YSksIG5hbWUpCgoKI2Rl ZmluZSBWQVJSQVlfQkJfSU5JVCh2YSxudW0sbmFtZSkgdmEgPSB2YXJyYXlfaW5pdCAobnVt LCBzaXplb2YgKHN0cnVjdCBiYXNpY19ibG9ja19kZWYgKiksIG5hbWUpCgoKI2RlZmluZSBW QVJSQVlfRUxUX0xJU1RfSU5JVCh2YSxudW0sbmFtZSkgdmEgPSB2YXJyYXlfaW5pdCAobnVt LCBzaXplb2YgKHN0cnVjdCBlbHRfbGlzdCAqKSwgbmFtZSkKCgoKCiNkZWZpbmUgVkFSUkFZ X0ZSRUUodnApIGRvIHsgaWYgKHZwKSB7IGZyZWUgKHZwKTsgdnAgPSAodmFycmF5X3R5cGUp IDA7IH0gfSB3aGlsZSAoMCkKCgoKZXh0ZXJuIHZhcnJheV90eXBlIHZhcnJheV9ncm93ICh2 YXJyYXlfdHlwZSwgc2l6ZV90KTsKCiNkZWZpbmUgVkFSUkFZX0dST1coVkEsTikgKChWQSkg PSB2YXJyYXlfZ3JvdyAoVkEsIE4pKQoKI2RlZmluZSBWQVJSQVlfU0laRShWQSkgKChWQSkt Pm51bV9lbGVtZW50cykKCiNkZWZpbmUgVkFSUkFZX0FDVElWRV9TSVpFKFZBKSAoKFZBKS0+ ZWxlbWVudHNfdXNlZCkKI2RlZmluZSBWQVJSQVlfUE9QX0FMTChWQSkgKChWQSktPmVsZW1l bnRzX3VzZWQgPSAwKQojIDE4NiAidmFycmF5LmgiCiNkZWZpbmUgVkFSUkFZX0NIRUNLKFZB LE4sVCkgKChWQSktPmRhdGEuVFtOXSkKCgoKCiNkZWZpbmUgVkFSUkFZX1BVU0goVkEsVCxY KSBkbyB7IGlmICgoVkEpLT5lbGVtZW50c191c2VkID49IChWQSktPm51bV9lbGVtZW50cykg VkFSUkFZX0dST1cgKChWQSksIDIgKiAoVkEpLT5udW1fZWxlbWVudHMpOyAoVkEpLT5kYXRh LlRbKFZBKS0+ZWxlbWVudHNfdXNlZCsrXSA9IChYKTsgfSB3aGlsZSAoMCkKIyAyMDEgInZh cnJheS5oIgojZGVmaW5lIFZBUlJBWV9QT1AoVkEpICgoVkEpLT5lbGVtZW50c191c2VkLS0p CgoKCiNkZWZpbmUgVkFSUkFZX1RPUChWQSxUKSAoKFZBKS0+ZGF0YS5UWyhWQSktPmVsZW1l bnRzX3VzZWQgLSAxXSkKCgojZGVmaW5lIFZBUlJBWV9DSEFSKFZBLE4pIFZBUlJBWV9DSEVD SyAoVkEsIE4sIGMpCiNkZWZpbmUgVkFSUkFZX1VDSEFSKFZBLE4pIFZBUlJBWV9DSEVDSyAo VkEsIE4sIHVjKQojZGVmaW5lIFZBUlJBWV9TSE9SVChWQSxOKSBWQVJSQVlfQ0hFQ0sgKFZB LCBOLCBzKQojZGVmaW5lIFZBUlJBWV9VU0hPUlQoVkEsTikgVkFSUkFZX0NIRUNLIChWQSwg TiwgdXMpCiNkZWZpbmUgVkFSUkFZX0lOVChWQSxOKSBWQVJSQVlfQ0hFQ0sgKFZBLCBOLCBp KQojZGVmaW5lIFZBUlJBWV9VSU5UKFZBLE4pIFZBUlJBWV9DSEVDSyAoVkEsIE4sIHUpCiNk ZWZpbmUgVkFSUkFZX0xPTkcoVkEsTikgVkFSUkFZX0NIRUNLIChWQSwgTiwgbCkKI2RlZmlu ZSBWQVJSQVlfVUxPTkcoVkEsTikgVkFSUkFZX0NIRUNLIChWQSwgTiwgdWwpCiNkZWZpbmUg VkFSUkFZX1dJREVfSU5UKFZBLE4pIFZBUlJBWV9DSEVDSyAoVkEsIE4sIGhpbnQpCiNkZWZp bmUgVkFSUkFZX1VXSURFX0lOVChWQSxOKSBWQVJSQVlfQ0hFQ0sgKFZBLCBOLCB1aGludCkK I2RlZmluZSBWQVJSQVlfR0VORVJJQ19QVFIoVkEsTikgVkFSUkFZX0NIRUNLIChWQSwgTiwg Z2VuZXJpYykKI2RlZmluZSBWQVJSQVlfQ0hBUl9QVFIoVkEsTikgVkFSUkFZX0NIRUNLIChW QSwgTiwgY3B0cikKI2RlZmluZSBWQVJSQVlfUlRYKFZBLE4pIFZBUlJBWV9DSEVDSyAoVkEs IE4sIHJ0eCkKI2RlZmluZSBWQVJSQVlfUlRWRUMoVkEsTikgVkFSUkFZX0NIRUNLIChWQSwg TiwgcnR2ZWMpCiNkZWZpbmUgVkFSUkFZX1RSRUUoVkEsTikgVkFSUkFZX0NIRUNLIChWQSwg TiwgdHJlZSkKI2RlZmluZSBWQVJSQVlfQklUTUFQKFZBLE4pIFZBUlJBWV9DSEVDSyAoVkEs IE4sIGJpdG1hcCkKI2RlZmluZSBWQVJSQVlfU0NIRUQoVkEsTikgVkFSUkFZX0NIRUNLIChW QSwgTiwgc2NoZWQpCiNkZWZpbmUgVkFSUkFZX1JFRyhWQSxOKSBWQVJSQVlfQ0hFQ0sgKFZB LCBOLCByZWcpCiNkZWZpbmUgVkFSUkFZX0NPTlNUX0VRVUlWKFZBLE4pIFZBUlJBWV9DSEVD SyAoVkEsIE4sIGNvbnN0X2VxdWl2KQojZGVmaW5lIFZBUlJBWV9CQihWQSxOKSBWQVJSQVlf Q0hFQ0sgKFZBLCBOLCBiYikKI2RlZmluZSBWQVJSQVlfRUxUX0xJU1QoVkEsTikgVkFSUkFZ X0NIRUNLIChWQSwgTiwgdGUpCgoKI2RlZmluZSBWQVJSQVlfUFVTSF9DSEFSKFZBLFgpIFZB UlJBWV9QVVNIIChWQSwgYywgWCkKI2RlZmluZSBWQVJSQVlfUFVTSF9VQ0hBUihWQSxYKSBW QVJSQVlfUFVTSCAoVkEsIHVjLCBYKQojZGVmaW5lIFZBUlJBWV9QVVNIX1NIT1JUKFZBLFgp IFZBUlJBWV9QVVNIIChWQSwgcywgWCkKI2RlZmluZSBWQVJSQVlfUFVTSF9VU0hPUlQoVkEs WCkgVkFSUkFZX1BVU0ggKFZBLCB1cywgWCkKI2RlZmluZSBWQVJSQVlfUFVTSF9JTlQoVkEs WCkgVkFSUkFZX1BVU0ggKFZBLCBpLCBYKQojZGVmaW5lIFZBUlJBWV9QVVNIX1VJTlQoVkEs WCkgVkFSUkFZX1BVU0ggKFZBLCB1LCBYKQojZGVmaW5lIFZBUlJBWV9QVVNIX0xPTkcoVkEs WCkgVkFSUkFZX1BVU0ggKFZBLCBsLCBYKQojZGVmaW5lIFZBUlJBWV9QVVNIX1VMT05HKFZB LFgpIFZBUlJBWV9QVVNIIChWQSwgdWwsIFgpCiNkZWZpbmUgVkFSUkFZX1BVU0hfV0lERV9J TlQoVkEsWCkgVkFSUkFZX1BVU0ggKFZBLCBoaW50LCBYKQojZGVmaW5lIFZBUlJBWV9QVVNI X1VXSURFX0lOVChWQSxYKSBWQVJSQVlfUFVTSCAoVkEsIHVoaW50LCBYKQojZGVmaW5lIFZB UlJBWV9QVVNIX0dFTkVSSUNfUFRSKFZBLFgpIFZBUlJBWV9QVVNIIChWQSwgZ2VuZXJpYywg WCkKI2RlZmluZSBWQVJSQVlfUFVTSF9DSEFSX1BUUihWQSxYKSBWQVJSQVlfUFVTSCAoVkEs IGNwdHIsIFgpCiNkZWZpbmUgVkFSUkFZX1BVU0hfUlRYKFZBLFgpIFZBUlJBWV9QVVNIIChW QSwgcnR4LCBYKQojZGVmaW5lIFZBUlJBWV9QVVNIX1JUVkVDKFZBLFgpIFZBUlJBWV9QVVNI IChWQSwgcnR2ZWMsIFgpCiNkZWZpbmUgVkFSUkFZX1BVU0hfVFJFRShWQSxYKSBWQVJSQVlf UFVTSCAoVkEsIHRyZWUsIFgpCiNkZWZpbmUgVkFSUkFZX1BVU0hfQklUTUFQKFZBLFgpIFZB UlJBWV9QVVNIIChWQSwgYml0bWFwLCBYKQojZGVmaW5lIFZBUlJBWV9QVVNIX1NDSEVEKFZB LFgpIFZBUlJBWV9QVVNIIChWQSwgc2NoZWQsIFgpCiNkZWZpbmUgVkFSUkFZX1BVU0hfUkVH KFZBLFgpIFZBUlJBWV9QVVNIIChWQSwgcmVnLCBYKQojZGVmaW5lIFZBUlJBWV9QVVNIX0NP TlNUX0VRVUlWKFZBLFgpIFZBUlJBWV9QVVNIIChWQSwgY29uc3RfZXF1aXYsIFgpCiNkZWZp bmUgVkFSUkFZX1BVU0hfQkIoVkEsWCkgVkFSUkFZX1BVU0ggKFZBLCBiYiwgWCkKCgojZGVm aW5lIFZBUlJBWV9UT1BfQ0hBUihWQSkgVkFSUkFZX1RPUCAoVkEsIGMpCiNkZWZpbmUgVkFS UkFZX1RPUF9VQ0hBUihWQSkgVkFSUkFZX1RPUCAoVkEsIHVjKQojZGVmaW5lIFZBUlJBWV9U T1BfU0hPUlQoVkEpIFZBUlJBWV9UT1AgKFZBLCBzKQojZGVmaW5lIFZBUlJBWV9UT1BfVVNI T1JUKFZBKSBWQVJSQVlfVE9QIChWQSwgdXMpCiNkZWZpbmUgVkFSUkFZX1RPUF9JTlQoVkEp IFZBUlJBWV9UT1AgKFZBLCBpKQojZGVmaW5lIFZBUlJBWV9UT1BfVUlOVChWQSkgVkFSUkFZ X1RPUCAoVkEsIHUpCiNkZWZpbmUgVkFSUkFZX1RPUF9MT05HKFZBKSBWQVJSQVlfVE9QIChW QSwgbCkKI2RlZmluZSBWQVJSQVlfVE9QX1VMT05HKFZBKSBWQVJSQVlfVE9QIChWQSwgdWwp CiNkZWZpbmUgVkFSUkFZX1RPUF9XSURFX0lOVChWQSkgVkFSUkFZX1RPUCAoVkEsIGhpbnQp CiNkZWZpbmUgVkFSUkFZX1RPUF9VV0lERV9JTlQoVkEpIFZBUlJBWV9UT1AgKFZBLCB1aGlu dCkKI2RlZmluZSBWQVJSQVlfVE9QX0dFTkVSSUNfUFRSKFZBKSBWQVJSQVlfVE9QIChWQSwg Z2VuZXJpYykKI2RlZmluZSBWQVJSQVlfVE9QX0NIQVJfUFRSKFZBKSBWQVJSQVlfVE9QIChW QSwgY3B0cikKI2RlZmluZSBWQVJSQVlfVE9QX1JUWChWQSkgVkFSUkFZX1RPUCAoVkEsIHJ0 eCkKI2RlZmluZSBWQVJSQVlfVE9QX1JUVkVDKFZBKSBWQVJSQVlfVE9QIChWQSwgcnR2ZWMp CiNkZWZpbmUgVkFSUkFZX1RPUF9UUkVFKFZBKSBWQVJSQVlfVE9QIChWQSwgdHJlZSkKI2Rl ZmluZSBWQVJSQVlfVE9QX0JJVE1BUChWQSkgVkFSUkFZX1RPUCAoVkEsIGJpdG1hcCkKI2Rl ZmluZSBWQVJSQVlfVE9QX1NDSEVEKFZBKSBWQVJSQVlfVE9QIChWQSwgc2NoZWQpCiNkZWZp bmUgVkFSUkFZX1RPUF9SRUcoVkEpIFZBUlJBWV9UT1AgKFZBLCByZWcpCiNkZWZpbmUgVkFS UkFZX1RPUF9DT05TVF9FUVVJVihWQSkgVkFSUkFZX1RPUCAoVkEsIGNvbnN0X2VxdWl2KQoj ZGVmaW5lIFZBUlJBWV9UT1BfQkIoVkEpIFZBUlJBWV9UT1AgKFZBLCBiYikKIyAyNCAicmVn cy5oIiAyCgojZGVmaW5lIFJFR19CWVRFUyhSKSBtb2RlX3NpemVbKGludCkgR0VUX01PREUg KFIpXQoKCgoKCgoKI2RlZmluZSBSRUdNT0RFX05BVFVSQUxfU0laRShNT0RFKSBVTklUU19Q RVJfV09SRAojIDQyICJyZWdzLmgiCmV4dGVybiBpbnQgbWF4X3JlZ25vOwoKCnR5cGVkZWYg c3RydWN0IHJlZ19pbmZvX2RlZgp7CiAgaW50IGZpcnN0X3VpZDsKICBpbnQgbGFzdF91aWQ7 CiAgaW50IGxhc3Rfbm90ZV91aWQ7CgoKICBpbnQgc2V0czsKCgogIGludCByZWZzOwogIGlu dCBmcmVxOwogIGludCBkZWF0aHM7CiAgaW50IGxpdmVfbGVuZ3RoOwogIGludCBjYWxsc19j cm9zc2VkOwogIGludCBiYXNpY19ibG9jazsKICBjaGFyIGNoYW5nZXNfbW9kZTsKCn0gcmVn X2luZm87CgpleHRlcm4gdmFycmF5X3R5cGUgcmVnX25faW5mbzsKCgoKI2RlZmluZSBSRUdf Tl9SRUZTKE4pIChWQVJSQVlfUkVHIChyZWdfbl9pbmZvLCBOKS0+cmVmcykKCgoKI2RlZmlu ZSBSRUdfRlJFUShOKSAoVkFSUkFZX1JFRyAocmVnX25faW5mbywgTiktPmZyZXEpCgoKCgoK I2RlZmluZSBSRUdfRlJFUV9NQVggMTAwMAoKCgoKCiNkZWZpbmUgUkVHX0ZSRVFfRlJPTV9C QihiYikgKG9wdGltaXplX3NpemUgfHwgKGZsYWdfYnJhbmNoX3Byb2JhYmlsaXRpZXMgJiYg IUVOVFJZX0JMT0NLX1BUUi0+Y291bnQpID8gUkVHX0ZSRVFfTUFYIDogKChiYiktPmZyZXF1 ZW5jeSAqIFJFR19GUkVRX01BWCAvIEJCX0ZSRVFfTUFYKSA/ICgoYmIpLT5mcmVxdWVuY3kg KiBSRUdfRlJFUV9NQVggLyBCQl9GUkVRX01BWCkgOiAxKQojIDk3ICJyZWdzLmgiCiNkZWZp bmUgUkVHX05fU0VUUyhOKSAoVkFSUkFZX1JFRyAocmVnX25faW5mbywgTiktPnNldHMpCgoK CgoKCgojZGVmaW5lIFJFR19OX0RFQVRIUyhOKSAoVkFSUkFZX1JFRyAocmVnX25faW5mbywg TiktPmRlYXRocykKCgoKCgoKI2RlZmluZSBSRUdfQ0hBTkdFU19NT0RFKE4pIChWQVJSQVlf UkVHIChyZWdfbl9pbmZvLCBOKS0+Y2hhbmdlc19tb2RlKQoKCgojZGVmaW5lIFBTRVVET19S RUdOT19TSVpFKE4pICgoR0VUX01PREVfU0laRSAoUFNFVURPX1JFR05PX01PREUgKE4pKSAr IFVOSVRTX1BFUl9XT1JEIC0gMSkgLyBVTklUU19QRVJfV09SRCkKCgoKCgojZGVmaW5lIFBT RVVET19SRUdOT19CWVRFUyhOKSBHRVRfTU9ERV9TSVpFIChQU0VVRE9fUkVHTk9fTU9ERSAo TikpCgoKCgojZGVmaW5lIFBTRVVET19SRUdOT19NT0RFKE4pIEdFVF9NT0RFIChyZWdub19y ZWdfcnR4W05dKQoKCgojZGVmaW5lIFJFR19OX0NBTExTX0NST1NTRUQoTikgKFZBUlJBWV9S RUcgKHJlZ19uX2luZm8sIE4pLT5jYWxsc19jcm9zc2VkKQojIDE0OCAicmVncy5oIgojZGVm aW5lIFJFR19MSVZFX0xFTkdUSChOKSAoVkFSUkFZX1JFRyAocmVnX25faW5mbywgTiktPmxp dmVfbGVuZ3RoKQojIDE1NyAicmVncy5oIgpleHRlcm4gc2hvcnQgKnJlZ19yZW51bWJlcjsK CgoKCmV4dGVybiBjaGFyIHJlZ3NfZXZlcl9saXZlWzUzXTsKCgoKZXh0ZXJuIGNvbnN0IGNo YXIgKiByZWdfbmFtZXNbNTNdOwoKCgoKCgpleHRlcm4gZW51bSBtYWNoaW5lX21vZGUgcmVn X3Jhd19tb2RlWzUzXTsKCgoKCgoKI2RlZmluZSBSRUdOT19GSVJTVF9VSUQoTikgKFZBUlJB WV9SRUcgKHJlZ19uX2luZm8sIE4pLT5maXJzdF91aWQpCgoKCgoKCgojZGVmaW5lIFJFR05P X0xBU1RfVUlEKE4pIChWQVJSQVlfUkVHIChyZWdfbl9pbmZvLCBOKS0+bGFzdF91aWQpCgoK CiNkZWZpbmUgUkVHTk9fTEFTVF9OT1RFX1VJRChOKSAoVkFSUkFZX1JFRyAocmVnX25faW5m bywgTiktPmxhc3Rfbm90ZV91aWQpCgoKCmV4dGVybiBydHggcmVnc19tYXlfc2hhcmU7CgoK CgpleHRlcm4gaW50IGNhbGxlcl9zYXZlX25lZWRlZDsKCgoKCgoKI2RlZmluZSBDQUxMRVJf U0FWRV9QUk9GSVRBQkxFKFJFRlMsQ0FMTFMpICg0ICogKENBTExTKSA8IChSRUZTKSkKIyAy MjYgInJlZ3MuaCIKI2RlZmluZSBIQVJEX1JFR05PX0NBTExfUEFSVF9DTE9CQkVSRUQoUkVH Tk8sTU9ERSkgMAoKCgpleHRlcm4gdm9pZCBhbGxvY2F0ZV9yZWdfaW5mbyAoc2l6ZV90LCBp bnQsIGludCk7CiMgMjkgInJlZ3JlbmFtZS5jIiAyCiMgMSAiaGFyZC1yZWctc2V0LmgiIDEK IyAyMiAiaGFyZC1yZWctc2V0LmgiCiNkZWZpbmUgR0NDX0hBUkRfUkVHX1NFVF9IIAojIDQx ICJoYXJkLXJlZy1zZXQuaCIKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEhBUkRfUkVHX0VMVF9U WVBFOwoKCgojZGVmaW5lIEhBUkRfUkVHX1NFVCBIQVJEX1JFR19FTFRfVFlQRQojIDU5ICJo YXJkLXJlZy1zZXQuaCIKI2RlZmluZSBIQVJEX0NPTlNUKFgpICgoSEFSRF9SRUdfRUxUX1RZ UEUpIChYKSkKIyA5MCAiaGFyZC1yZWctc2V0LmgiCiNkZWZpbmUgU0VUX0hBUkRfUkVHX0JJ VChTRVQsQklUKSAoKFNFVCkgfD0gSEFSRF9DT05TVCAoMSkgPDwgKEJJVCkpCgojZGVmaW5l IENMRUFSX0hBUkRfUkVHX0JJVChTRVQsQklUKSAoKFNFVCkgJj0gfihIQVJEX0NPTlNUICgx KSA8PCAoQklUKSkpCgojZGVmaW5lIFRFU1RfSEFSRF9SRUdfQklUKFNFVCxCSVQpICgoU0VU KSAmIChIQVJEX0NPTlNUICgxKSA8PCAoQklUKSkpCgoKI2RlZmluZSBDTEVBUl9IQVJEX1JF R19TRVQoVE8pICgoVE8pID0gSEFSRF9DT05TVCAoMCkpCiNkZWZpbmUgU0VUX0hBUkRfUkVH X1NFVChUTykgKChUTykgPSB+IEhBUkRfQ09OU1QgKDApKQoKI2RlZmluZSBDT1BZX0hBUkRf UkVHX1NFVChUTyxGUk9NKSAoKFRPKSA9IChGUk9NKSkKI2RlZmluZSBDT01QTF9IQVJEX1JF R19TRVQoVE8sRlJPTSkgKChUTykgPSB+KEZST00pKQoKI2RlZmluZSBJT1JfSEFSRF9SRUdf U0VUKFRPLEZST00pICgoVE8pIHw9IChGUk9NKSkKI2RlZmluZSBJT1JfQ09NUExfSEFSRF9S RUdfU0VUKFRPLEZST00pICgoVE8pIHw9IH4gKEZST00pKQojZGVmaW5lIEFORF9IQVJEX1JF R19TRVQoVE8sRlJPTSkgKChUTykgJj0gKEZST00pKQojZGVmaW5lIEFORF9DT01QTF9IQVJE X1JFR19TRVQoVE8sRlJPTSkgKChUTykgJj0gfiAoRlJPTSkpCgojZGVmaW5lIEdPX0lGX0hB UkRfUkVHX1NVQlNFVChYLFksVE8pIGlmIChIQVJEX0NPTlNUICgwKSA9PSAoKFgpICYgfihZ KSkpIGdvdG8gVE8KCiNkZWZpbmUgR09fSUZfSEFSRF9SRUdfRVFVQUwoWCxZLFRPKSBpZiAo KFgpID09IChZKSkgZ290byBUTwojIDM5NSAiaGFyZC1yZWctc2V0LmgiCmV4dGVybiBjaGFy IGZpeGVkX3JlZ3NbNTNdOwoKCgpleHRlcm4gSEFSRF9SRUdfRUxUX1RZUEUgZml4ZWRfcmVn X3NldDsKCgoKCgoKZXh0ZXJuIGNoYXIgY2FsbF91c2VkX3JlZ3NbNTNdOwoKCgpleHRlcm4g SEFSRF9SRUdfRUxUX1RZUEUgY2FsbF91c2VkX3JlZ19zZXQ7CgoKZXh0ZXJuIEhBUkRfUkVH X0VMVF9UWVBFIGxvc2luZ19jYWxsZXJfc2F2ZV9yZWdfc2V0OwoKCgoKCgoKZXh0ZXJuIGNo YXIgY2FsbF9maXhlZF9yZWdzWzUzXTsKCgoKZXh0ZXJuIEhBUkRfUkVHX0VMVF9UWVBFIGNh bGxfZml4ZWRfcmVnX3NldDsKCgoKCgoKZXh0ZXJuIGNoYXIgZ2xvYmFsX3JlZ3NbNTNdOwoj IDQ0MSAiaGFyZC1yZWctc2V0LmgiCmV4dGVybiBIQVJEX1JFR19FTFRfVFlQRSByZWdzX2lu dmFsaWRhdGVkX2J5X2NhbGw7CgoKCgpleHRlcm4gaW50IHJlZ19hbGxvY19vcmRlcls1M107 CgoKCmV4dGVybiBpbnQgaW52X3JlZ19hbGxvY19vcmRlcls1M107CgoKCgpleHRlcm4gSEFS RF9SRUdfRUxUX1RZUEUgcmVnX2NsYXNzX2NvbnRlbnRzWygoaW50KSBMSU1fUkVHX0NMQVNT RVMpXTsKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCByZWdfY2xhc3Nfc2l6ZVsoKGludCkgTElN X1JFR19DTEFTU0VTKV07CgoKCmV4dGVybiBlbnVtIHJlZ19jbGFzcyByZWdfY2xhc3Nfc3Vw ZXJjbGFzc2VzWygoaW50KSBMSU1fUkVHX0NMQVNTRVMpXVsoKGludCkgTElNX1JFR19DTEFT U0VTKV07CgoKCmV4dGVybiBlbnVtIHJlZ19jbGFzcyByZWdfY2xhc3Nfc3ViY2xhc3Nlc1so KGludCkgTElNX1JFR19DTEFTU0VTKV1bKChpbnQpIExJTV9SRUdfQ0xBU1NFUyldOwoKCgoK ZXh0ZXJuIGVudW0gcmVnX2NsYXNzIHJlZ19jbGFzc19zdWJ1bmlvblsoKGludCkgTElNX1JF R19DTEFTU0VTKV1bKChpbnQpIExJTV9SRUdfQ0xBU1NFUyldOwoKCgoKZXh0ZXJuIGVudW0g cmVnX2NsYXNzIHJlZ19jbGFzc19zdXBlcnVuaW9uWygoaW50KSBMSU1fUkVHX0NMQVNTRVMp XVsoKGludCkgTElNX1JFR19DTEFTU0VTKV07CgoKCmV4dGVybiBpbnQgbl9ub25fZml4ZWRf cmVnczsKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKiByZWdfbmFtZXNbNTNdOwojIDMwICJyZWdy ZW5hbWUuYyIgMgojIDEgImJhc2ljLWJsb2NrLmgiIDEKIyAyMyAiYmFzaWMtYmxvY2suaCIK I2RlZmluZSBHQ0NfQkFTSUNfQkxPQ0tfSCAKCiMgMSAiYml0bWFwLmgiIDEKIyAyMyAiYml0 bWFwLmgiCiNkZWZpbmUgR0NDX0JJVE1BUF9IIAoKCgoKI2RlZmluZSBCSVRNQVBfRUxFTUVO VF9XT1JEUyAyCgoKCgoKCiNkZWZpbmUgQklUTUFQX0VMRU1FTlRfQUxMX0JJVFMgKCh1bnNp Z25lZCkgKEJJVE1BUF9FTEVNRU5UX1dPUkRTICogSE9TVF9CSVRTX1BFUl9XSURFX0lOVCkp CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBiaXRtYXBfZWxlbWVudF9kZWYKewogIHN0cnVjdCBi aXRtYXBfZWxlbWVudF9kZWYgKm5leHQ7CiAgc3RydWN0IGJpdG1hcF9lbGVtZW50X2RlZiAq cHJldjsKICB1bnNpZ25lZCBpbnQgaW5keDsKICB1bnNpZ25lZCBsb25nIGJpdHNbMl07Cn0g Yml0bWFwX2VsZW1lbnQ7CgoKdHlwZWRlZiBzdHJ1Y3QgYml0bWFwX2hlYWRfZGVmIHsKICBi aXRtYXBfZWxlbWVudCAqZmlyc3Q7CiAgYml0bWFwX2VsZW1lbnQgKmN1cnJlbnQ7CiAgdW5z aWduZWQgaW50IGluZHg7Cgp9IGJpdG1hcF9oZWFkLCAqYml0bWFwOwoKCmVudW0gYml0bWFw X2JpdHMgewogIEJJVE1BUF9BTkQsCiAgQklUTUFQX0FORF9DT01QTCwKICBCSVRNQVBfSU9S LAogIEJJVE1BUF9YT1IsCiAgQklUTUFQX0lPUl9DT01QTAp9OwoKCmV4dGVybiBiaXRtYXBf ZWxlbWVudCBiaXRtYXBfemVyb19iaXRzOwoKCmV4dGVybiB2b2lkIGJpdG1hcF9jbGVhciAo Yml0bWFwKTsKCgpleHRlcm4gdm9pZCBiaXRtYXBfY29weSAoYml0bWFwLCBiaXRtYXApOwoK CmV4dGVybiBpbnQgYml0bWFwX2VxdWFsX3AgKGJpdG1hcCwgYml0bWFwKTsKCgpleHRlcm4g aW50IGJpdG1hcF9vcGVyYXRpb24gKGJpdG1hcCwgYml0bWFwLCBiaXRtYXAsIGVudW0gYml0 bWFwX2JpdHMpOwoKCgpleHRlcm4gdm9pZCBiaXRtYXBfaW9yX2FuZF9jb21wbCAoYml0bWFw LCBiaXRtYXAsIGJpdG1hcCk7CgoKZXh0ZXJuIHZvaWQgYml0bWFwX2NsZWFyX2JpdCAoYml0 bWFwLCBpbnQpOwoKCmV4dGVybiB2b2lkIGJpdG1hcF9zZXRfYml0IChiaXRtYXAsIGludCk7 CgoKZXh0ZXJuIGludCBiaXRtYXBfYml0X3AgKGJpdG1hcCwgaW50KTsKCgpleHRlcm4gdm9p ZCBkZWJ1Z19iaXRtYXAgKGJpdG1hcCk7CmV4dGVybiB2b2lkIGRlYnVnX2JpdG1hcF9maWxl IChGSUxFICosIGJpdG1hcCk7CgoKZXh0ZXJuIHZvaWQgYml0bWFwX3ByaW50IChGSUxFICos IGJpdG1hcCwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCmV4dGVybiBiaXRtYXAg Yml0bWFwX2luaXRpYWxpemUgKGJpdG1hcCk7CgoKZXh0ZXJuIHZvaWQgYml0bWFwX3JlbGVh c2VfbWVtb3J5ICh2b2lkKTsKCgojZGVmaW5lIGR1bXBfYml0bWFwKGZpbGUsYml0bWFwKSBi aXRtYXBfcHJpbnQgKGZpbGUsIGJpdG1hcCwgIiIsICJcbiIpCiNkZWZpbmUgYml0bWFwX3pl cm8oYSkgYml0bWFwX2NsZWFyIChhKQojZGVmaW5lIGJpdG1hcF9hX29yX2IoYSxiLGMpIGJp dG1hcF9vcGVyYXRpb24gKGEsIGIsIGMsIEJJVE1BUF9JT1IpCiNkZWZpbmUgYml0bWFwX2Ff YW5kX2IoYSxiLGMpIGJpdG1hcF9vcGVyYXRpb24gKGEsIGIsIGMsIEJJVE1BUF9BTkQpCmV4 dGVybiBpbnQgYml0bWFwX3VuaW9uX29mX2RpZmYgKGJpdG1hcCwgYml0bWFwLCBiaXRtYXAs IGJpdG1hcCk7CmV4dGVybiBpbnQgYml0bWFwX2ZpcnN0X3NldF9iaXQgKGJpdG1hcCk7CmV4 dGVybiBpbnQgYml0bWFwX2xhc3Rfc2V0X2JpdCAoYml0bWFwKTsKCgojZGVmaW5lIEJJVE1B UF9PQlNUQUNLX0FMTE9DKE9CU1RBQ0spIGJpdG1hcF9pbml0aWFsaXplICgoYml0bWFwKSBv YnN0YWNrX2FsbG9jIChPQlNUQUNLLCBzaXplb2YgKGJpdG1hcF9oZWFkKSkpCgoKCgoKCgoj ZGVmaW5lIEJJVE1BUF9BTExPQ0EoUFRSKSBkbyB7IGJpdG1hcCB0ZW1wX2JpdG1hcF8gPSAo Yml0bWFwKSBhbGxvY2EgKHNpemVvZiAoYml0bWFwX2hlYWQpKTsgKFBUUikgPSBiaXRtYXBf aW5pdGlhbGl6ZSAodGVtcF9iaXRtYXBfKTsgfSB3aGlsZSAoMCkKCgoKCgoKI2RlZmluZSBC SVRNQVBfWE1BTExPQygpIGJpdG1hcF9pbml0aWFsaXplICgoYml0bWFwKSB4bWFsbG9jIChz aXplb2YgKGJpdG1hcF9oZWFkKSkpCgoKCiNkZWZpbmUgQklUTUFQX0ZSRUUoQklUTUFQKSBk byB7IGlmIChCSVRNQVApIHsgYml0bWFwX2NsZWFyIChCSVRNQVApOyAoQklUTUFQKSA9IDA7 IH0gfSB3aGlsZSAoMCkKIyAxNDggImJpdG1hcC5oIgojZGVmaW5lIEJJVE1BUF9YRlJFRShC SVRNQVApIGRvIHsgaWYgKEJJVE1BUCkgeyBiaXRtYXBfY2xlYXIgKEJJVE1BUCk7IGZyZWUg KEJJVE1BUCk7IChCSVRNQVApID0gMDsgfSB9IHdoaWxlICgwKQojIDE1OSAiYml0bWFwLmgi CiNkZWZpbmUgQklUTUFQX0lOSVRfT05DRSgpIAoKCgoKI2RlZmluZSBFWEVDVVRFX0lGX1NF VF9JTl9CSVRNQVAoQklUTUFQLE1JTixCSVROVU0sQ09ERSkgZG8geyBiaXRtYXBfZWxlbWVu dCAqcHRyXyA9IChCSVRNQVApLT5maXJzdDsgdW5zaWduZWQgaW50IGluZHhfID0gKE1JTikg LyBCSVRNQVBfRUxFTUVOVF9BTExfQklUUzsgdW5zaWduZWQgYml0X251bV8gPSAoTUlOKSAl ICgodW5zaWduZWQpIEhPU1RfQklUU19QRVJfV0lERV9JTlQpOyB1bnNpZ25lZCB3b3JkX251 bV8gPSAoKChNSU4pIC8gKCh1bnNpZ25lZCkgSE9TVF9CSVRTX1BFUl9XSURFX0lOVCkpICUg QklUTUFQX0VMRU1FTlRfV09SRFMpOyB3aGlsZSAocHRyXyAhPSAwICYmIHB0cl8tPmluZHgg PCBpbmR4XykgcHRyXyA9IHB0cl8tPm5leHQ7IGlmIChwdHJfICE9IDAgJiYgcHRyXy0+aW5k eCAhPSBpbmR4XykgeyBiaXRfbnVtXyA9IDA7IHdvcmRfbnVtXyA9IDA7IH0gZm9yICg7IHB0 cl8gIT0gMDsgcHRyXyA9IHB0cl8tPm5leHQpIHsgZm9yICg7IHdvcmRfbnVtXyA8IEJJVE1B UF9FTEVNRU5UX1dPUkRTOyB3b3JkX251bV8rKykgeyB1bnNpZ25lZCBIT1NUX1dJREVfSU5U IHdvcmRfID0gcHRyXy0+Yml0c1t3b3JkX251bV9dOyBpZiAod29yZF8gIT0gMCkgeyBmb3Ig KDsgYml0X251bV8gPCBIT1NUX0JJVFNfUEVSX1dJREVfSU5UOyBiaXRfbnVtXysrKSB7IHVu c2lnbmVkIEhPU1RfV0lERV9JTlQgbWFza18gPSAoKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQp IDEpIDw8IGJpdF9udW1fOyBpZiAoKHdvcmRfICYgbWFza18pICE9IDApIHsgd29yZF8gJj0g fiBtYXNrXzsgKEJJVE5VTSkgPSAocHRyXy0+aW5keCAqIEJJVE1BUF9FTEVNRU5UX0FMTF9C SVRTICsgd29yZF9udW1fICogSE9TVF9CSVRTX1BFUl9XSURFX0lOVCArIGJpdF9udW1fKTsg Q09ERTsgaWYgKHdvcmRfID09IDApIGJyZWFrOyB9IH0gfSBiaXRfbnVtXyA9IDA7IH0gd29y ZF9udW1fID0gMDsgfSB9IHdoaWxlICgwKQojIDIyMSAiYml0bWFwLmgiCiNkZWZpbmUgRVhF Q1VURV9JRl9BTkRfQ09NUExfSU5fQklUTUFQKEJJVE1BUDEsQklUTUFQMixNSU4sQklUTlVN LENPREUpIGRvIHsgYml0bWFwX2VsZW1lbnQgKnB0cjFfID0gKEJJVE1BUDEpLT5maXJzdDsg Yml0bWFwX2VsZW1lbnQgKnB0cjJfID0gKEJJVE1BUDIpLT5maXJzdDsgdW5zaWduZWQgaW50 IGluZHhfID0gKE1JTikgLyBCSVRNQVBfRUxFTUVOVF9BTExfQklUUzsgdW5zaWduZWQgYml0 X251bV8gPSAoTUlOKSAlICgodW5zaWduZWQpIEhPU1RfQklUU19QRVJfV0lERV9JTlQpOyB1 bnNpZ25lZCB3b3JkX251bV8gPSAoKChNSU4pIC8gKCh1bnNpZ25lZCkgSE9TVF9CSVRTX1BF Ul9XSURFX0lOVCkpICUgQklUTUFQX0VMRU1FTlRfV09SRFMpOyB3aGlsZSAocHRyMV8gIT0g MCAmJiBwdHIxXy0+aW5keCA8IGluZHhfKSBwdHIxXyA9IHB0cjFfLT5uZXh0OyBpZiAocHRy MV8gIT0gMCAmJiBwdHIxXy0+aW5keCAhPSBpbmR4XykgeyBiaXRfbnVtXyA9IDA7IHdvcmRf bnVtXyA9IDA7IH0gZm9yICg7IHB0cjFfICE9IDAgOyBwdHIxXyA9IHB0cjFfLT5uZXh0KSB7 IGJpdG1hcF9lbGVtZW50ICp0bXAyXzsgd2hpbGUgKHB0cjJfICE9IDAgJiYgcHRyMl8tPmlu ZHggPCBwdHIxXy0+aW5keCkgcHRyMl8gPSBwdHIyXy0+bmV4dDsgdG1wMl8gPSAoKHB0cjJf ICE9IDAgJiYgcHRyMl8tPmluZHggPT0gcHRyMV8tPmluZHgpID8gcHRyMl8gOiAmYml0bWFw X3plcm9fYml0cyk7IGZvciAoOyB3b3JkX251bV8gPCBCSVRNQVBfRUxFTUVOVF9XT1JEUzsg d29yZF9udW1fKyspIHsgdW5zaWduZWQgSE9TVF9XSURFX0lOVCB3b3JkXyA9IChwdHIxXy0+ Yml0c1t3b3JkX251bV9dICYgfiB0bXAyXy0+Yml0c1t3b3JkX251bV9dKTsgaWYgKHdvcmRf ICE9IDApIHsgZm9yICg7IGJpdF9udW1fIDwgSE9TVF9CSVRTX1BFUl9XSURFX0lOVDsgYml0 X251bV8rKykgeyB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIG1hc2tfID0gKCh1bnNpZ25lZCBI T1NUX1dJREVfSU5UKTEpIDw8IGJpdF9udW1fOyBpZiAoKHdvcmRfICYgbWFza18pICE9IDAp IHsgd29yZF8gJj0gfiBtYXNrXzsgKEJJVE5VTSkgPSAocHRyMV8tPmluZHggKiBCSVRNQVBf RUxFTUVOVF9BTExfQklUUyArIHdvcmRfbnVtXyAqIEhPU1RfQklUU19QRVJfV0lERV9JTlQg KyBiaXRfbnVtXyk7IENPREU7IGlmICh3b3JkXyA9PSAwKSBicmVhazsgfSB9IH0gYml0X251 bV8gPSAwOyB9IHdvcmRfbnVtXyA9IDA7IH0gfSB3aGlsZSAoMCkKIyAyODggImJpdG1hcC5o IgojZGVmaW5lIEVYRUNVVEVfSUZfQU5EX0lOX0JJVE1BUChCSVRNQVAxLEJJVE1BUDIsTUlO LEJJVE5VTSxDT0RFKSBkbyB7IGJpdG1hcF9lbGVtZW50ICpwdHIxXyA9IChCSVRNQVAxKS0+ Zmlyc3Q7IGJpdG1hcF9lbGVtZW50ICpwdHIyXyA9IChCSVRNQVAyKS0+Zmlyc3Q7IHVuc2ln bmVkIGludCBpbmR4XyA9IChNSU4pIC8gQklUTUFQX0VMRU1FTlRfQUxMX0JJVFM7IHVuc2ln bmVkIGJpdF9udW1fID0gKE1JTikgJSAoKHVuc2lnbmVkKSBIT1NUX0JJVFNfUEVSX1dJREVf SU5UKTsgdW5zaWduZWQgd29yZF9udW1fID0gKCgoTUlOKSAvICgodW5zaWduZWQpIEhPU1Rf QklUU19QRVJfV0lERV9JTlQpKSAlIEJJVE1BUF9FTEVNRU5UX1dPUkRTKTsgd2hpbGUgKHB0 cjFfICE9IDAgJiYgcHRyMV8tPmluZHggPCBpbmR4XykgcHRyMV8gPSBwdHIxXy0+bmV4dDsg aWYgKHB0cjFfICE9IDAgJiYgcHRyMV8tPmluZHggIT0gaW5keF8pIHsgYml0X251bV8gPSAw OyB3b3JkX251bV8gPSAwOyB9IGZvciAoOyBwdHIxXyAhPSAwIDsgcHRyMV8gPSBwdHIxXy0+ bmV4dCkgeyB3aGlsZSAocHRyMl8gIT0gMCAmJiBwdHIyXy0+aW5keCA8IHB0cjFfLT5pbmR4 KSBwdHIyXyA9IHB0cjJfLT5uZXh0OyBpZiAocHRyMl8gPT0gMCkgeyBwdHIxXyA9IChiaXRt YXBfZWxlbWVudCAqKTA7IGJyZWFrOyB9IGVsc2UgaWYgKHB0cjJfLT5pbmR4ID4gcHRyMV8t PmluZHgpIHsgYml0X251bV8gPSB3b3JkX251bV8gPSAwOyBjb250aW51ZTsgfSBmb3IgKDsg d29yZF9udW1fIDwgQklUTUFQX0VMRU1FTlRfV09SRFM7IHdvcmRfbnVtXysrKSB7IHVuc2ln bmVkIEhPU1RfV0lERV9JTlQgd29yZF8gPSAocHRyMV8tPmJpdHNbd29yZF9udW1fXSAmIHB0 cjJfLT5iaXRzW3dvcmRfbnVtX10pOyBpZiAod29yZF8gIT0gMCkgeyBmb3IgKDsgYml0X251 bV8gPCBIT1NUX0JJVFNfUEVSX1dJREVfSU5UOyBiaXRfbnVtXysrKSB7IHVuc2lnbmVkIEhP U1RfV0lERV9JTlQgbWFza18gPSAoKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpMSkgPDwgYml0 X251bV87IGlmICgod29yZF8gJiBtYXNrXykgIT0gMCkgeyB3b3JkXyAmPSB+IG1hc2tfOyAo QklUTlVNKSA9IChwdHIxXy0+aW5keCAqIEJJVE1BUF9FTEVNRU5UX0FMTF9CSVRTICsgd29y ZF9udW1fICogSE9TVF9CSVRTX1BFUl9XSURFX0lOVCArIGJpdF9udW1fKTsgQ09ERTsgaWYg KHdvcmRfID09IDApIGJyZWFrOyB9IH0gfSBiaXRfbnVtXyA9IDA7IH0gd29yZF9udW1fID0g MDsgfSB9IHdoaWxlICgwKQojIDI2ICJiYXNpYy1ibG9jay5oIiAyCiMgMSAic2JpdG1hcC5o IiAxCiMgMjIgInNiaXRtYXAuaCIKI2RlZmluZSBHQ0NfU0JJVE1BUF9IIAoKCgoKCiNkZWZp bmUgU0JJVE1BUF9FTFRfQklUUyAoKHVuc2lnbmVkKSBIT1NUX0JJVFNfUEVSX1dJREVfSU5U KQojZGVmaW5lIFNCSVRNQVBfRUxUX1RZUEUgdW5zaWduZWQgSE9TVF9XSURFX0lOVAoKdHlw ZWRlZiBzdHJ1Y3Qgc2ltcGxlX2JpdG1hcF9kZWYKewogIHVuc2lnbmVkIGludCBuX2JpdHM7 CiAgdW5zaWduZWQgaW50IHNpemU7CiAgdW5zaWduZWQgaW50IGJ5dGVzOwogIHVuc2lnbmVk IGxvbmcgZWxtc1sxXTsKfSAqc2JpdG1hcDsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyAqc2Jp dG1hcF9wdHI7CgoKI2RlZmluZSBTQklUTUFQX1NFVF9TSVpFKE4pICgoKE4pICsgU0JJVE1B UF9FTFRfQklUUyAtIDEpIC8gU0JJVE1BUF9FTFRfQklUUykKCgojZGVmaW5lIFNFVF9CSVQo QklUTUFQLEJJVE5PKSAoKEJJVE1BUCktPmVsbXMgWyhCSVROTykgLyBTQklUTUFQX0VMVF9C SVRTXSB8PSAoU0JJVE1BUF9FTFRfVFlQRSkgMSA8PCAoQklUTk8pICUgU0JJVE1BUF9FTFRf QklUUykKCgoKCiNkZWZpbmUgVEVTVF9CSVQoQklUTUFQLEJJVE5PKSAoKEJJVE1BUCktPmVs bXMgWyhCSVROTykgLyBTQklUTUFQX0VMVF9CSVRTXSA+PiAoQklUTk8pICUgU0JJVE1BUF9F TFRfQklUUyAmIDEpCgoKCiNkZWZpbmUgUkVTRVRfQklUKEJJVE1BUCxCSVROTykgKChCSVRN QVApLT5lbG1zIFsoQklUTk8pIC8gU0JJVE1BUF9FTFRfQklUU10gJj0gfigoU0JJVE1BUF9F TFRfVFlQRSkgMSA8PCAoQklUTk8pICUgU0JJVE1BUF9FTFRfQklUUykpCgoKCgojZGVmaW5l IEVYRUNVVEVfSUZfU0VUX0lOX1NCSVRNQVAoU0JJVE1BUCxNSU4sTixDT0RFKSBkbyB7IHVu c2lnbmVkIGludCB3b3JkX251bV87IHVuc2lnbmVkIGludCBiaXRfbnVtXyA9IChNSU4pICUg KHVuc2lnbmVkIGludCkgU0JJVE1BUF9FTFRfQklUUzsgdW5zaWduZWQgaW50IHNpemVfID0g KFNCSVRNQVApLT5zaXplOyBTQklUTUFQX0VMVF9UWVBFICpwdHJfID0gKFNCSVRNQVApLT5l bG1zOyBmb3IgKHdvcmRfbnVtXyA9IChNSU4pIC8gKHVuc2lnbmVkIGludCkgU0JJVE1BUF9F TFRfQklUUzsgd29yZF9udW1fIDwgc2l6ZV87IHdvcmRfbnVtXysrLCBiaXRfbnVtXyA9IDAp IHsgU0JJVE1BUF9FTFRfVFlQRSB3b3JkXyA9IHB0cl9bd29yZF9udW1fXTsgaWYgKHdvcmRf ICE9IDApIGZvciAoOyBiaXRfbnVtXyA8IFNCSVRNQVBfRUxUX0JJVFM7IGJpdF9udW1fKysp IHsgU0JJVE1BUF9FTFRfVFlQRSBfbWFzayA9IChTQklUTUFQX0VMVF9UWVBFKSAxIDw8IGJp dF9udW1fOyBpZiAoKHdvcmRfICYgX21hc2spICE9IDApIHsgd29yZF8gJj0gfiBfbWFzazsg KE4pID0gd29yZF9udW1fICogU0JJVE1BUF9FTFRfQklUUyArIGJpdF9udW1fOyBDT0RFOyBp ZiAod29yZF8gPT0gMCkgYnJlYWs7IH0gfSB9IH0gd2hpbGUgKDApCiMgODggInNiaXRtYXAu aCIKI2RlZmluZSBzYml0bWFwX2ZyZWUoTUFQKSBmcmVlKE1BUCkKI2RlZmluZSBzYml0bWFw X3ZlY3Rvcl9mcmVlKFZFQykgZnJlZShWRUMpCgpzdHJ1Y3QgaW50X2xpc3Q7CgpleHRlcm4g dm9pZCBkdW1wX3NiaXRtYXAgKEZJTEUgKiwgc2JpdG1hcCk7CmV4dGVybiB2b2lkIGR1bXBf c2JpdG1hcF92ZWN0b3IgKEZJTEUgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNi aXRtYXAgKiwgaW50KQoKICAgICAgICAgICAgOwpleHRlcm4gc2JpdG1hcCBzYml0bWFwX2Fs bG9jICh1bnNpZ25lZCBpbnQpOwpleHRlcm4gc2JpdG1hcCAqc2JpdG1hcF92ZWN0b3JfYWxs b2MgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50KTsKZXh0ZXJuIHZvaWQgc2JpdG1hcF9j b3B5IChzYml0bWFwLCBzYml0bWFwKTsKZXh0ZXJuIGludCBzYml0bWFwX2VxdWFsIChzYml0 bWFwLCBzYml0bWFwKTsKZXh0ZXJuIHZvaWQgc2JpdG1hcF96ZXJvIChzYml0bWFwKTsKZXh0 ZXJuIHZvaWQgc2JpdG1hcF9vbmVzIChzYml0bWFwKTsKZXh0ZXJuIHZvaWQgc2JpdG1hcF92 ZWN0b3JfemVybyAoc2JpdG1hcCAqLCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBzYml0 bWFwX3ZlY3Rvcl9vbmVzIChzYml0bWFwICosIHVuc2lnbmVkIGludCk7CgpleHRlcm4gaW50 IHNiaXRtYXBfdW5pb25fb2ZfZGlmZiAoc2JpdG1hcCwgc2JpdG1hcCwgc2JpdG1hcCwgc2Jp dG1hcCkKICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHZvaWQgc2JpdG1hcF9kaWZmZXJlbmNl IChzYml0bWFwLCBzYml0bWFwLCBzYml0bWFwKTsKZXh0ZXJuIHZvaWQgc2JpdG1hcF9ub3Qg KHNiaXRtYXAsIHNiaXRtYXApOwpleHRlcm4gaW50IHNiaXRtYXBfYV9vcl9iX2FuZF9jIChz Yml0bWFwLCBzYml0bWFwLCBzYml0bWFwLCBzYml0bWFwKQogICAgICAgICAgICAgICAgOwpl eHRlcm4gaW50IHNiaXRtYXBfYV9hbmRfYl9vcl9jIChzYml0bWFwLCBzYml0bWFwLCBzYml0 bWFwLCBzYml0bWFwKQogICAgICAgICAgICAgICAgOwpleHRlcm4gaW50IHNiaXRtYXBfYV9h bmRfYiAoc2JpdG1hcCwgc2JpdG1hcCwgc2JpdG1hcCk7CmV4dGVybiBpbnQgc2JpdG1hcF9h X29yX2IgKHNiaXRtYXAsIHNiaXRtYXAsIHNiaXRtYXApOwpleHRlcm4gaW50IHNiaXRtYXBf YV94b3JfYiAoc2JpdG1hcCwgc2JpdG1hcCwgc2JpdG1hcCk7CmV4dGVybiBpbnQgc2JpdG1h cF9hX3N1YnNldF9iX3AgKHNiaXRtYXAsIHNiaXRtYXApOwoKZXh0ZXJuIGludCBzYml0bWFw X2ZpcnN0X3NldF9iaXQgKHNiaXRtYXApOwpleHRlcm4gaW50IHNiaXRtYXBfbGFzdF9zZXRf Yml0IChzYml0bWFwKTsKCmV4dGVybiB2b2lkIHNiaXRtYXBfaW50ZXJzZWN0X29mX3ByZWRz dWNjIChzYml0bWFwLCBzYml0bWFwICosIGludCwgc3RydWN0IGludF9saXN0ICoqKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiNkZWZpbmUgc2JpdG1hcF9pbnRlcnNl Y3Rfb2ZfcHJlZGVjZXNzb3JzIHNiaXRtYXBfaW50ZXJzZWN0X29mX3ByZWRzdWNjCiNkZWZp bmUgc2JpdG1hcF9pbnRlcnNlY3Rfb2Zfc3VjY2Vzc29ycyBzYml0bWFwX2ludGVyc2VjdF9v Zl9wcmVkc3VjYwoKZXh0ZXJuIHZvaWQgc2JpdG1hcF91bmlvbl9vZl9wcmVkc3VjYyAoc2Jp dG1hcCwgc2JpdG1hcCAqLCBpbnQsIHN0cnVjdCBpbnRfbGlzdCAqKikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgOwojZGVmaW5lIHNiaXRtYXBfdW5pb25fb2ZfcHJlZGVjZXNzb3Jz IHNiaXRtYXBfdW5pb25fb2ZfcHJlZHN1Y2MKI2RlZmluZSBzYml0bWFwX3VuaW9uX29mX3N1 Y2Nlc3NvcnMgc2JpdG1hcF91bmlvbl9vZl9wcmVkc3VjYwoKCgoKZXh0ZXJuIHZvaWQgc2Jp dG1hcF9pbnRlcnNlY3Rpb25fb2Zfc3VjY3MgKHNiaXRtYXAsIHNiaXRtYXAgKiwgaW50KTsK ZXh0ZXJuIHZvaWQgc2JpdG1hcF9pbnRlcnNlY3Rpb25fb2ZfcHJlZHMgKHNiaXRtYXAsIHNi aXRtYXAgKiwgaW50KTsKZXh0ZXJuIHZvaWQgc2JpdG1hcF91bmlvbl9vZl9zdWNjcyAoc2Jp dG1hcCwgc2JpdG1hcCAqLCBpbnQpOwpleHRlcm4gdm9pZCBzYml0bWFwX3VuaW9uX29mX3By ZWRzIChzYml0bWFwLCBzYml0bWFwICosIGludCk7CgpleHRlcm4gdm9pZCBkZWJ1Z19zYml0 bWFwIChzYml0bWFwKTsKIyAyNyAiYmFzaWMtYmxvY2suaCIgMgoKIyAxICJwYXJ0aXRpb24u aCIgMQojIDM3ICJwYXJ0aXRpb24uaCIKI2RlZmluZSBfUEFSVElUSU9OX0ggCgoKCgoKIyAx ICIuL2Fuc2lkZWNsLmgiIDEKIyA0NCAicGFydGl0aW9uLmgiIDIKCgpzdHJ1Y3QgcGFydGl0 aW9uX2VsZW0KewoKCiAgaW50IGNsYXNzX2VsZW1lbnQ7CgoKICBzdHJ1Y3QgcGFydGl0aW9u X2VsZW0qIG5leHQ7CgoKICB1bnNpZ25lZCBjbGFzc19jb3VudDsKfTsKCnR5cGVkZWYgc3Ry dWN0IHBhcnRpdGlvbl9kZWYKewoKICBpbnQgbnVtX2VsZW1lbnRzOwoKICBzdHJ1Y3QgcGFy dGl0aW9uX2VsZW0gZWxlbWVudHNbMV07Cn0gKnBhcnRpdGlvbjsKCmV4dGVybiBwYXJ0aXRp b24gcGFydGl0aW9uX25ldyAoaW50KTsKZXh0ZXJuIHZvaWQgcGFydGl0aW9uX2RlbGV0ZSAo cGFydGl0aW9uKTsKZXh0ZXJuIGludCBwYXJ0aXRpb25fdW5pb24gKHBhcnRpdGlvbiwgaW50 LCBpbnQpCgogICAgICAgICAgIDsKZXh0ZXJuIHZvaWQgcGFydGl0aW9uX3ByaW50IChwYXJ0 aXRpb24sIEZJTEUqKQogICAgICAgICAgICAgOwoKCgoKI2RlZmluZSBwYXJ0aXRpb25fZmlu ZChwYXJ0aXRpb25fXyxlbGVtZW50X18pICgocGFydGl0aW9uX18pLT5lbGVtZW50c1soZWxl bWVudF9fKV0uY2xhc3NfZWxlbWVudCkKIyAyOSAiYmFzaWMtYmxvY2suaCIgMgoKCnR5cGVk ZWYgYml0bWFwX2hlYWQgcmVnc2V0X2hlYWQ7Cgp0eXBlZGVmIGJpdG1hcCByZWdzZXQ7CgoK I2RlZmluZSBJTklUX1JFR19TRVQoSEVBRCkgYml0bWFwX2luaXRpYWxpemUgKEhFQUQpCgoK I2RlZmluZSBDTEVBUl9SRUdfU0VUKEhFQUQpIGJpdG1hcF9jbGVhciAoSEVBRCkKCgojZGVm aW5lIENPUFlfUkVHX1NFVChUTyxGUk9NKSBiaXRtYXBfY29weSAoVE8sIEZST00pCgoKI2Rl ZmluZSBSRUdfU0VUX0VRVUFMX1AoQSxCKSBiaXRtYXBfZXF1YWxfcCAoQSwgQikKCgojZGVm aW5lIEFORF9SRUdfU0VUKFRPLEZST00pIGJpdG1hcF9vcGVyYXRpb24gKFRPLCBUTywgRlJP TSwgQklUTUFQX0FORCkKCgojZGVmaW5lIEFORF9DT01QTF9SRUdfU0VUKFRPLEZST00pIGJp dG1hcF9vcGVyYXRpb24gKFRPLCBUTywgRlJPTSwgQklUTUFQX0FORF9DT01QTCkKCgoKI2Rl ZmluZSBJT1JfUkVHX1NFVChUTyxGUk9NKSBiaXRtYXBfb3BlcmF0aW9uIChUTywgVE8sIEZS T00sIEJJVE1BUF9JT1IpCgoKI2RlZmluZSBYT1JfUkVHX1NFVChUTyxGUk9NKSBiaXRtYXBf b3BlcmF0aW9uIChUTywgVE8sIEZST00sIEJJVE1BUF9YT1IpCgoKI2RlZmluZSBJT1JfQU5E X0NPTVBMX1JFR19TRVQoVE8sRlJPTTEsRlJPTTIpIGJpdG1hcF9pb3JfYW5kX2NvbXBsIChU TywgRlJPTTEsIEZST00yKQoKCgojZGVmaW5lIENMRUFSX1JFR05PX1JFR19TRVQoSEVBRCxS RUcpIGJpdG1hcF9jbGVhcl9iaXQgKEhFQUQsIFJFRykKCgojZGVmaW5lIFNFVF9SRUdOT19S RUdfU0VUKEhFQUQsUkVHKSBiaXRtYXBfc2V0X2JpdCAoSEVBRCwgUkVHKQoKCiNkZWZpbmUg UkVHTk9fUkVHX1NFVF9QKFRPLFJFRykgYml0bWFwX2JpdF9wIChUTywgUkVHKQoKCmV4dGVy biB2b2lkIHJlZ19zZXRfdG9faGFyZF9yZWdfc2V0IChIQVJEX1JFR19FTFRfVFlQRSAqLCBi aXRtYXApOwojZGVmaW5lIFJFR19TRVRfVE9fSEFSRF9SRUdfU0VUKFRPLEZST00pIGRvIHsg Q0xFQVJfSEFSRF9SRUdfU0VUIChUTyk7IHJlZ19zZXRfdG9faGFyZF9yZWdfc2V0ICgmVE8s IEZST00pOyB9IHdoaWxlICgwKQoKCgoKCgoKI2RlZmluZSBFWEVDVVRFX0lGX1NFVF9JTl9S RUdfU0VUKFJFR1NFVCxNSU4sUkVHTlVNLENPREUpIEVYRUNVVEVfSUZfU0VUX0lOX0JJVE1B UCAoUkVHU0VULCBNSU4sIFJFR05VTSwgQ09ERSkKCgoKCgojZGVmaW5lIEVYRUNVVEVfSUZf QU5EX0NPTVBMX0lOX1JFR19TRVQoUkVHU0VUMSxSRUdTRVQyLE1JTixSRUdOVU0sQ09ERSkg RVhFQ1VURV9JRl9BTkRfQ09NUExfSU5fQklUTUFQIChSRUdTRVQxLCBSRUdTRVQyLCBNSU4s IFJFR05VTSwgQ09ERSkKCgoKCgojZGVmaW5lIEVYRUNVVEVfSUZfQU5EX0lOX1JFR19TRVQo UkVHU0VUMSxSRUdTRVQyLE1JTixSRUdOVU0sQ09ERSkgRVhFQ1VURV9JRl9BTkRfSU5fQklU TUFQIChSRUdTRVQxLCBSRUdTRVQyLCBNSU4sIFJFR05VTSwgQ09ERSkKCgoKI2RlZmluZSBP QlNUQUNLX0FMTE9DX1JFR19TRVQoT0JTVEFDSykgQklUTUFQX09CU1RBQ0tfQUxMT0MgKE9C U1RBQ0spCgoKI2RlZmluZSBJTklUSUFMSVpFX1JFR19TRVQoSEVBRCkgYml0bWFwX2luaXRp YWxpemUgKCZIRUFEKQoKCiNkZWZpbmUgRlJFRV9SRUdfU0VUKFJFR1NFVCkgQklUTUFQX0ZS RUUoUkVHU0VUKQoKCiNkZWZpbmUgSU5JVF9PTkNFX1JFR19TRVQoKSBCSVRNQVBfSU5JVF9P TkNFICgpCgoKCgojZGVmaW5lIE1BWF9SRUdOT19SRUdfU0VUKE5VTV9SRUdTLE5FV19QLFJF TlVNQkVSX1ApIAoKCnR5cGVkZWYgbG9uZyBnY292X3R5cGU7CgoKdHlwZWRlZiBzdHJ1Y3Qg ZWRnZV9kZWYgewoKICBzdHJ1Y3QgZWRnZV9kZWYgKnByZWRfbmV4dCwgKnN1Y2NfbmV4dDsK CgogIHN0cnVjdCBiYXNpY19ibG9ja19kZWYgKnNyYywgKmRlc3Q7CgoKICBydHggaW5zbnM7 CgoKICB2b2lkICphdXg7CgogIGludCBmbGFnczsKICBpbnQgcHJvYmFiaWxpdHk7CiAgZ2Nv dl90eXBlIGNvdW50OwoKfSAqZWRnZTsKCiNkZWZpbmUgRURHRV9GQUxMVEhSVSAxCiNkZWZp bmUgRURHRV9BQk5PUk1BTCAyCiNkZWZpbmUgRURHRV9BQk5PUk1BTF9DQUxMIDQKI2RlZmlu ZSBFREdFX0VIIDgKI2RlZmluZSBFREdFX0ZBS0UgMTYKI2RlZmluZSBFREdFX0RGU19CQUNL IDMyCgojZGVmaW5lIEVER0VfQ09NUExFWCAoRURHRV9BQk5PUk1BTCB8IEVER0VfQUJOT1JN QUxfQ0FMTCB8IEVER0VfRUgpCiMgMTc0ICJiYXNpYy1ibG9jay5oIgp0eXBlZGVmIHN0cnVj dCBiYXNpY19ibG9ja19kZWYgewoKICBydHggaGVhZCwgZW5kOwoKCiAgdHJlZSBoZWFkX3Ry ZWU7CiAgdHJlZSBlbmRfdHJlZTsKCgogIGVkZ2UgcHJlZCwgc3VjYzsKCgoKCiAgcmVnc2V0 IGxvY2FsX3NldDsKCgoKICByZWdzZXQgY29uZF9sb2NhbF9zZXQ7CgoKCgoKICByZWdzZXQg Z2xvYmFsX2xpdmVfYXRfc3RhcnQ7CgogIHJlZ3NldCBnbG9iYWxfbGl2ZV9hdF9lbmQ7CgoK ICB2b2lkICphdXg7CgoKICBpbnQgaW5kZXg7CgoKICBpbnQgbG9vcF9kZXB0aDsKCgogIGdj b3ZfdHlwZSBjb3VudDsKCgogIGludCBmcmVxdWVuY3k7CgoKICBpbnQgZmxhZ3M7Cn0gKmJh c2ljX2Jsb2NrOwoKI2RlZmluZSBCQl9GUkVRX01BWCAxMDAwMAoKCiNkZWZpbmUgQkJfUkVB Q0hBQkxFIDEKCgoKZXh0ZXJuIGludCBuX2Jhc2ljX2Jsb2NrczsKCgoKZXh0ZXJuIGludCBu X2VkZ2VzOwoKCgpleHRlcm4gdmFycmF5X3R5cGUgYmFzaWNfYmxvY2tfaW5mbzsKCiNkZWZp bmUgQkFTSUNfQkxPQ0soTikgKFZBUlJBWV9CQiAoYmFzaWNfYmxvY2tfaW5mbywgKE4pKSkK CgoKZXh0ZXJuIHJlZ3NldCByZWdzX2xpdmVfYXRfc2V0am1wOwoKCgpleHRlcm4gcnR4IGxh YmVsX3ZhbHVlX2xpc3QsIHRhaWxfcmVjdXJzaW9uX2xhYmVsX2xpc3Q7CgpleHRlcm4gc3Ry dWN0IG9ic3RhY2sgZmxvd19vYnN0YWNrOwojIDI1NyAiYmFzaWMtYmxvY2suaCIKI2RlZmlu ZSBSRUdfQkxPQ0tfVU5LTk9XTiAtMQojZGVmaW5lIFJFR19CTE9DS19HTE9CQUwgLTIKCiNk ZWZpbmUgUkVHX0JBU0lDX0JMT0NLKE4pIChWQVJSQVlfUkVHIChyZWdfbl9pbmZvLCBOKS0+ YmFzaWNfYmxvY2spCgoKCiNkZWZpbmUgQkxPQ0tfSEVBRChCKSAoQkFTSUNfQkxPQ0sgKEIp LT5oZWFkKQojZGVmaW5lIEJMT0NLX0VORChCKSAoQkFTSUNfQkxPQ0sgKEIpLT5lbmQpCgoj ZGVmaW5lIEJMT0NLX0hFQURfVFJFRShCKSAoQkFTSUNfQkxPQ0sgKEIpLT5oZWFkX3RyZWUp CiNkZWZpbmUgQkxPQ0tfRU5EX1RSRUUoQikgKEJBU0lDX0JMT0NLIChCKS0+ZW5kX3RyZWUp CgoKI2RlZmluZSBFTlRSWV9CTE9DSyAoLTEpCiNkZWZpbmUgRVhJVF9CTE9DSyAoLTIpCgoK I2RlZmluZSBJTlZBTElEX0JMT0NLICgtMykKCgpleHRlcm4gc3RydWN0IGJhc2ljX2Jsb2Nr X2RlZiBlbnRyeV9leGl0X2Jsb2Nrc1syXTsKI2RlZmluZSBFTlRSWV9CTE9DS19QVFIgKCZl bnRyeV9leGl0X2Jsb2Nrc1swXSkKI2RlZmluZSBFWElUX0JMT0NLX1BUUiAoJmVudHJ5X2V4 aXRfYmxvY2tzWzFdKQoKZXh0ZXJuIHZhcnJheV90eXBlIGJhc2ljX2Jsb2NrX2Zvcl9pbnNu OwojZGVmaW5lIEJMT0NLX0ZPUl9JTlNOKElOU04pIFZBUlJBWV9CQiAoYmFzaWNfYmxvY2tf Zm9yX2luc24sIElOU05fVUlEIChJTlNOKSkKI2RlZmluZSBCTE9DS19OVU0oSU5TTikgKEJM T0NLX0ZPUl9JTlNOIChJTlNOKS0+aW5kZXggKyAwKQoKZXh0ZXJuIHZvaWQgY29tcHV0ZV9i Yl9mb3JfaW5zbiAoaW50KTsKZXh0ZXJuIHZvaWQgZnJlZV9iYl9mb3JfaW5zbiAodm9pZCk7 CmV4dGVybiB2b2lkIHVwZGF0ZV9iYl9mb3JfaW5zbiAoYmFzaWNfYmxvY2spOwpleHRlcm4g dm9pZCBzZXRfYmxvY2tfZm9yX2luc24gKHJ0eCwgYmFzaWNfYmxvY2spOwoKZXh0ZXJuIHZv aWQgZnJlZV9iYXNpY19ibG9ja192YXJzIChpbnQpOwoKZXh0ZXJuIGVkZ2Ugc3BsaXRfYmxv Y2sgKGJhc2ljX2Jsb2NrLCBydHgpOwpleHRlcm4gYmFzaWNfYmxvY2sgc3BsaXRfZWRnZSAo ZWRnZSk7CmV4dGVybiB2b2lkIGluc2VydF9pbnNuX29uX2VkZ2UgKHJ0eCwgZWRnZSk7CmV4 dGVybiB2b2lkIGNvbW1pdF9lZGdlX2luc2VydGlvbnMgKHZvaWQpOwpleHRlcm4gdm9pZCBy ZW1vdmVfZmFrZV9lZGdlcyAodm9pZCk7CmV4dGVybiB2b2lkIGFkZF9ub3JldHVybl9mYWtl X2V4aXRfZWRnZXMgKHZvaWQpOwpleHRlcm4gdm9pZCBjb25uZWN0X2luZmluaXRlX2xvb3Bz X3RvX2V4aXQgKHZvaWQpOwpleHRlcm4gaW50IGZsb3dfY2FsbF9lZGdlc19hZGQgKHNiaXRt YXApOwpleHRlcm4gZWRnZSBjYWNoZWRfbWFrZV9lZGdlIChzYml0bWFwICosIGJhc2ljX2Js b2NrLCBiYXNpY19ibG9jaywgaW50KQogICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRl cm4gZWRnZSBtYWtlX2VkZ2UgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywgaW50KQogICAg ICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gZWRnZSBtYWtlX3NpbmdsZV9zdWNjX2Vk Z2UgKGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaywgaW50KQogICAgICAgICAgICAgICAgICAg ICAgICAgOwpleHRlcm4gdm9pZCByZW1vdmVfZWRnZSAoZWRnZSk7CmV4dGVybiB2b2lkIHJl ZGlyZWN0X2VkZ2Vfc3VjYyAoZWRnZSwgYmFzaWNfYmxvY2spOwpleHRlcm4gZWRnZSByZWRp cmVjdF9lZGdlX3N1Y2Nfbm9kdXAgKGVkZ2UsIGJhc2ljX2Jsb2NrKTsKZXh0ZXJuIHZvaWQg cmVkaXJlY3RfZWRnZV9wcmVkIChlZGdlLCBiYXNpY19ibG9jayk7CmV4dGVybiBiYXNpY19i bG9jayBjcmVhdGVfYmFzaWNfYmxvY2tfc3RydWN0dXJlIChpbnQsIHJ0eCwgcnR4LCBydHgp OwpleHRlcm4gYmFzaWNfYmxvY2sgY3JlYXRlX2Jhc2ljX2Jsb2NrIChpbnQsIHJ0eCwgcnR4 KTsKZXh0ZXJuIGludCBmbG93X2RlbGV0ZV9ibG9jayAoYmFzaWNfYmxvY2spOwpleHRlcm4g aW50IGZsb3dfZGVsZXRlX2Jsb2NrX25vZXhwdW5nZSAoYmFzaWNfYmxvY2spOwpleHRlcm4g dm9pZCBtZXJnZV9ibG9ja3Nfbm9tb3ZlIChiYXNpY19ibG9jaywgYmFzaWNfYmxvY2spOwpl eHRlcm4gdm9pZCB0aWR5X2ZhbGx0aHJ1X2VkZ2UgKGVkZ2UsIGJhc2ljX2Jsb2NrLCBiYXNp Y19ibG9jaykKICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiB2b2lkIHRpZHlfZmFsbHRo cnVfZWRnZXMgKHZvaWQpOwpleHRlcm4gdm9pZCBmbG93X3JldmVyc2VfdG9wX3NvcnRfb3Jk ZXJfY29tcHV0ZSAoaW50ICopOwpleHRlcm4gaW50IGZsb3dfZGVwdGhfZmlyc3Rfb3JkZXJf Y29tcHV0ZSAoaW50ICosIGludCAqKTsKZXh0ZXJuIHZvaWQgZmxvd19wcmVvcmRlcl90cmFu c3ZlcnNhbF9jb21wdXRlIChpbnQgKik7CmV4dGVybiB2b2lkIGR1bXBfZWRnZV9pbmZvIChG SUxFICosIGVkZ2UsIGludCk7CmV4dGVybiB2b2lkIGNsZWFyX2VkZ2VzICh2b2lkKTsKZXh0 ZXJuIHZvaWQgbWFya19jcml0aWNhbF9lZGdlcyAodm9pZCk7CmV4dGVybiBydHggZmlyc3Rf aW5zbl9hZnRlcl9iYXNpY19ibG9ja19ub3RlIChiYXNpY19ibG9jayk7CgoKc3RydWN0IGxv b3AKewoKICBpbnQgbnVtOwoKCiAgYmFzaWNfYmxvY2sgaGVhZGVyOwoKCiAgYmFzaWNfYmxv Y2sgbGF0Y2g7CgoKICBiYXNpY19ibG9jayBwcmVfaGVhZGVyOwoKCgoKICBlZGdlICpwcmVf aGVhZGVyX2VkZ2VzOwoKCiAgaW50IG51bV9wcmVfaGVhZGVyX2VkZ2VzOwoKCgogIGJhc2lj X2Jsb2NrIGZpcnN0OwoKCgogIGJhc2ljX2Jsb2NrIGxhc3Q7CgoKICBzYml0bWFwIG5vZGVz OwoKCiAgaW50IG51bV9ub2RlczsKCgogIGVkZ2UgKmVudHJ5X2VkZ2VzOwoKCiAgaW50IG51 bV9lbnRyaWVzOwoKCiAgZWRnZSAqZXhpdF9lZGdlczsKCgogIGludCBudW1fZXhpdHM7CgoK ICBzYml0bWFwIGV4aXRzX2RvbXM7CgoKICBpbnQgZGVwdGg7CgoKCiAgaW50IGxldmVsOwoK CiAgc3RydWN0IGxvb3AgKm91dGVyOwoKCiAgc3RydWN0IGxvb3AgKmlubmVyOwoKCiAgc3Ry dWN0IGxvb3AgKm5leHQ7CgoKICBpbnQgc2hhcmVkOwoKCiAgaW50IGludmFsaWQ7CgoKICB2 b2lkICphdXg7CgoKCgoKICBydHggdnRvcDsKCgoKICBydHggY29udDsKCgogIHJ0eCBjb250 X2RvbWluYXRvcjsKCgogIHJ0eCBzdGFydDsKCgogIHJ0eCBlbmQ7CgoKCiAgcnR4IHRvcDsK CgogIHJ0eCBzY2FuX3N0YXJ0OwoKCiAgcnR4IHNpbms7CiMgNDQyICJiYXNpYy1ibG9jay5o IgogIHJ0eCBleGl0X2xhYmVsczsKCgoKICBpbnQgZXhpdF9jb3VudDsKfTsKCgoKc3RydWN0 IGxvb3BzCnsKCiAgaW50IG51bTsKCgogIGludCBsZXZlbHM7CgoKCiAgc3RydWN0IGxvb3Ag KmFycmF5OwoKCiAgc3RydWN0IGxvb3AgKnRyZWVfcm9vdDsKCgogIHN0cnVjdCBjZmcKICB7 CgogICAgc2JpdG1hcCAqZG9tOwoKCiAgICBpbnQgKmRmc19vcmRlcjsKCgoKICAgIGludCAq cmNfb3JkZXI7CiAgfSBjZmc7CgoKICBzYml0bWFwIHNoYXJlZF9oZWFkZXJzOwp9OwoKZXh0 ZXJuIGludCBmbG93X2xvb3BzX2ZpbmQgKHN0cnVjdCBsb29wcyAqLCBpbnQgZmxhZ3MpOwpl eHRlcm4gaW50IGZsb3dfbG9vcHNfdXBkYXRlIChzdHJ1Y3QgbG9vcHMgKiwgaW50IGZsYWdz KTsKZXh0ZXJuIHZvaWQgZmxvd19sb29wc19mcmVlIChzdHJ1Y3QgbG9vcHMgKik7CmV4dGVy biB2b2lkIGZsb3dfbG9vcHNfZHVtcCAoY29uc3Qgc3RydWN0IGxvb3BzICosIEZJTEUgKiwg dm9pZCAoKikoY29uc3Qgc3RydWN0IGxvb3AgKiwgRklMRSAqLCBpbnQpLCBpbnQpCgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiB2b2lkIGZsb3dfbG9vcF9kdW1w IChjb25zdCBzdHJ1Y3QgbG9vcCAqLCBGSUxFICosIHZvaWQgKCopKGNvbnN0IHN0cnVjdCBs b29wICosIEZJTEUgKiwgaW50KSwgaW50KQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CmV4dGVybiBpbnQgZmxvd19sb29wX3NjYW4gKHN0cnVjdCBsb29wcyAqLCBzdHJ1Y3Qg bG9vcCAqLCBpbnQpOwoKCnN0cnVjdCBlZGdlX2xpc3QKewogIGludCBudW1fYmxvY2tzOwog IGludCBudW1fZWRnZXM7CiAgZWRnZSAqaW5kZXhfdG9fZWRnZTsKfTsKCgojZGVmaW5lIEVE R0VfSU5ERVhfTk9fRURHRSAtMQoKCgojZGVmaW5lIEVER0VfSU5ERVgoZWwscHJlZCxzdWNj KSAoZmluZF9lZGdlX2luZGV4ICgoZWwpLCAocHJlZCksIChzdWNjKSkpCgoKCiNkZWZpbmUg SU5ERVhfRURHRV9QUkVEX0JCKGVsLGluZGV4KSAoKGVsKS0+aW5kZXhfdG9fZWRnZVsoaW5k ZXgpXS0+c3JjKQojZGVmaW5lIElOREVYX0VER0VfU1VDQ19CQihlbCxpbmRleCkgKChlbCkt PmluZGV4X3RvX2VkZ2VbKGluZGV4KV0tPmRlc3QpCgoKI2RlZmluZSBJTkRFWF9FREdFKGVs LGluZGV4KSAoKGVsKS0+aW5kZXhfdG9fZWRnZVsoaW5kZXgpXSkKCgojZGVmaW5lIE5VTV9F REdFUyhlbCkgKChlbCktPm51bV9lZGdlcykKCgojZGVmaW5lIEZBTExUSFJVX0VER0UoYmIp ICgoYmIpLT5zdWNjLT5mbGFncyAmIEVER0VfRkFMTFRIUlUgPyAoYmIpLT5zdWNjIDogKGJi KS0+c3VjYy0+c3VjY19uZXh0KQoKCgojZGVmaW5lIEJSQU5DSF9FREdFKGJiKSAoKGJiKS0+ c3VjYy0+ZmxhZ3MgJiBFREdFX0ZBTExUSFJVID8gKGJiKS0+c3VjYy0+c3VjY19uZXh0IDog KGJiKS0+c3VjYykKCgoKI2RlZmluZSBFREdFX0ZSRVFVRU5DWShlKSAoKChlKS0+c3JjLT5m cmVxdWVuY3kgKiAoZSktPnByb2JhYmlsaXR5ICsgUkVHX0JSX1BST0JfQkFTRSAvIDIpIC8g UkVHX0JSX1BST0JfQkFTRSkKCgoKCgojZGVmaW5lIEVER0VfQ1JJVElDQUxfUChlKSAoKGUp LT5zcmMtPnN1Y2MtPnN1Y2NfbmV4dCAmJiAoZSktPmRlc3QtPnByZWQtPnByZWRfbmV4dCkK CgpzdHJ1Y3QgZWRnZV9saXN0ICogY3JlYXRlX2VkZ2VfbGlzdCAodm9pZCk7CnZvaWQgZnJl ZV9lZGdlX2xpc3QgKHN0cnVjdCBlZGdlX2xpc3QgKik7CnZvaWQgcHJpbnRfZWRnZV9saXN0 IChGSUxFICosIHN0cnVjdCBlZGdlX2xpc3QgKik7CnZvaWQgdmVyaWZ5X2VkZ2VfbGlzdCAo RklMRSAqLCBzdHJ1Y3QgZWRnZV9saXN0ICopOwppbnQgZmluZF9lZGdlX2luZGV4IChzdHJ1 Y3QgZWRnZV9saXN0ICosIGJhc2ljX2Jsb2NrLCBiYXNpY19ibG9jaykKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOwoKCmVudW0gdXBkYXRlX2xpZmVfZXh0ZW50CnsKICBV UERBVEVfTElGRV9MT0NBTCA9IDAsCiAgVVBEQVRFX0xJRkVfR0xPQkFMID0gMSwKICBVUERB VEVfTElGRV9HTE9CQUxfUk1fTk9URVMgPSAyCn07CgoKCiNkZWZpbmUgUFJPUF9ERUFUSF9O T1RFUyAxCiNkZWZpbmUgUFJPUF9MT0dfTElOS1MgMgojZGVmaW5lIFBST1BfUkVHX0lORk8g NAojZGVmaW5lIFBST1BfS0lMTF9ERUFEX0NPREUgOAojZGVmaW5lIFBST1BfU0NBTl9ERUFE X0NPREUgMTYKI2RlZmluZSBQUk9QX0FMTE9XX0NGR19DSEFOR0VTIDMyCgojZGVmaW5lIFBS T1BfQVVUT0lOQyA2NAojZGVmaW5lIFBST1BfRVFVQUxfTk9URVMgMTI4CiNkZWZpbmUgUFJP UF9GSU5BTCAxMjcKCiNkZWZpbmUgQ0xFQU5VUF9FWFBFTlNJVkUgMQoKI2RlZmluZSBDTEVB TlVQX0NST1NTSlVNUCAyCiNkZWZpbmUgQ0xFQU5VUF9QT1NUX1JFR1NUQUNLIDQKCiNkZWZp bmUgQ0xFQU5VUF9QUkVfU0lCQ0FMTCA4CgojZGVmaW5lIENMRUFOVVBfUFJFX0xPT1AgMTYK CiNkZWZpbmUgQ0xFQU5VUF9VUERBVEVfTElGRSAzMgojZGVmaW5lIENMRUFOVVBfVEhSRUFE SU5HIDY0CgoKI2RlZmluZSBMT09QX1RSRUUgMQojZGVmaW5lIExPT1BfUFJFX0hFQURFUiAy CiNkZWZpbmUgTE9PUF9FTlRSWV9FREdFUyA0CiNkZWZpbmUgTE9PUF9FWElUX0VER0VTIDgK I2RlZmluZSBMT09QX0VER0VTIChMT09QX0VOVFJZX0VER0VTIHwgTE9PUF9FWElUX0VER0VT KQojZGVmaW5lIExPT1BfRVhJVFNfRE9NUyAxNgojZGVmaW5lIExPT1BfQUxMIDMxCgpleHRl cm4gdm9pZCBsaWZlX2FuYWx5c2lzIChydHgsIEZJTEUgKiwgaW50KTsKZXh0ZXJuIHZvaWQg dXBkYXRlX2xpZmVfaW5mbyAoc2JpdG1hcCwgZW51bSB1cGRhdGVfbGlmZV9leHRlbnQsIGlu dCkKICAgICAgICAgICA7CmV4dGVybiBpbnQgY291bnRfb3JfcmVtb3ZlX2RlYXRoX25vdGVz IChzYml0bWFwLCBpbnQpOwpleHRlcm4gaW50IHByb3BhZ2F0ZV9ibG9jayAoYmFzaWNfYmxv Y2ssIHJlZ3NldCwgcmVnc2V0LCByZWdzZXQsIGludCkKICAgICAgICAgICA7CgpzdHJ1Y3Qg cHJvcGFnYXRlX2Jsb2NrX2luZm87CmV4dGVybiBydHggcHJvcGFnYXRlX29uZV9pbnNuIChz dHJ1Y3QgcHJvcGFnYXRlX2Jsb2NrX2luZm8gKiwgcnR4KTsKZXh0ZXJuIHN0cnVjdCBwcm9w YWdhdGVfYmxvY2tfaW5mbyAqaW5pdF9wcm9wYWdhdGVfYmxvY2tfaW5mbwogIChiYXNpY19i bG9jaywgcmVnc2V0LCByZWdzZXQsIHJlZ3NldCwgaW50KTsKZXh0ZXJuIHZvaWQgZnJlZV9w cm9wYWdhdGVfYmxvY2tfaW5mbyAoc3RydWN0IHByb3BhZ2F0ZV9ibG9ja19pbmZvICopOwoK CmV4dGVybiBzdHJ1Y3QgZWRnZV9saXN0ICpwcmVfZWRnZV9sY20gKEZJTEUgKiwgaW50LCBz Yml0bWFwICosIHNiaXRtYXAgKiwgc2JpdG1hcCAqLCBzYml0bWFwICosIHNiaXRtYXAgKios IHNiaXRtYXAgKiopCgoKICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHN0cnVjdCBlZGdl X2xpc3QgKnByZV9lZGdlX3Jldl9sY20gKEZJTEUgKiwgaW50LCBzYml0bWFwICosIHNiaXRt YXAgKiwgc2JpdG1hcCAqLCBzYml0bWFwICosIHNiaXRtYXAgKiosIHNiaXRtYXAgKiopCgoK ICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gdm9pZCBjb21wdXRlX2F2YWlsYWJsZSAo c2JpdG1hcCAqLCBzYml0bWFwICosIHNiaXRtYXAgKiwgc2JpdG1hcCAqKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGludCBvcHRpbWl6ZV9tb2RlX3N3aXRjaGlu ZyAoRklMRSAqKTsKCgpleHRlcm4gcnR4IGVtaXRfYmxvY2tfaW5zbl9hZnRlciAocnR4LCBy dHgsIGJhc2ljX2Jsb2NrKTsKZXh0ZXJuIHJ0eCBlbWl0X2Jsb2NrX2luc25fYmVmb3JlIChy dHgsIHJ0eCwgYmFzaWNfYmxvY2spOwoKCmV4dGVybiB2b2lkIGVzdGltYXRlX3Byb2JhYmls aXR5IChzdHJ1Y3QgbG9vcHMgKik7CmV4dGVybiB2b2lkIGV4cGVjdGVkX3ZhbHVlX3RvX2Jy X3Byb2IgKHZvaWQpOwoKCmV4dGVybiB2b2lkIGluaXRfZmxvdyAodm9pZCk7CmV4dGVybiB2 b2lkIHJlb3JkZXJfYmFzaWNfYmxvY2tzICh2b2lkKTsKZXh0ZXJuIHZvaWQgZHVtcF9iYiAo YmFzaWNfYmxvY2ssIEZJTEUgKik7CmV4dGVybiB2b2lkIGRlYnVnX2JiIChiYXNpY19ibG9j ayk7CmV4dGVybiB2b2lkIGRlYnVnX2JiX24gKGludCk7CmV4dGVybiB2b2lkIGR1bXBfcmVn c2V0IChyZWdzZXQsIEZJTEUgKik7CmV4dGVybiB2b2lkIGRlYnVnX3JlZ3NldCAocmVnc2V0 KTsKZXh0ZXJuIHZvaWQgYWxsb2NhdGVfcmVnX2xpZmVfZGF0YSAodm9pZCk7CmV4dGVybiB2 b2lkIGFsbG9jYXRlX2JiX2xpZmVfZGF0YSAodm9pZCk7CmV4dGVybiB2b2lkIGV4cHVuZ2Vf YmxvY2sgKGJhc2ljX2Jsb2NrKTsKZXh0ZXJuIHZvaWQgZXhwdW5nZV9ibG9ja19ub2NvbXBh Y3QgKGJhc2ljX2Jsb2NrKTsKZXh0ZXJuIGJhc2ljX2Jsb2NrIGFsbG9jX2Jsb2NrICh2b2lk KTsKZXh0ZXJuIHZvaWQgZmluZF91bnJlYWNoYWJsZV9ibG9ja3MgKHZvaWQpOwpleHRlcm4g dm9pZCBkZWxldGVfbm9vcF9tb3ZlcyAocnR4KTsKZXh0ZXJuIGJhc2ljX2Jsb2NrIHJlZGly ZWN0X2VkZ2VfYW5kX2JyYW5jaF9mb3JjZSAoZWRnZSwgYmFzaWNfYmxvY2spOwpleHRlcm4g YmFzaWNfYmxvY2sgZm9yY2Vfbm9uZmFsbHRocnUgKGVkZ2UpOwpleHRlcm4gX0Jvb2wgcmVk aXJlY3RfZWRnZV9hbmRfYnJhbmNoIChlZGdlLCBiYXNpY19ibG9jayk7CmV4dGVybiBydHgg YmxvY2tfbGFiZWwgKGJhc2ljX2Jsb2NrKTsKZXh0ZXJuIF9Cb29sIGZvcndhcmRlcl9ibG9j a19wIChiYXNpY19ibG9jayk7CmV4dGVybiBfQm9vbCBwdXJnZV9hbGxfZGVhZF9lZGdlcyAo aW50KTsKZXh0ZXJuIF9Cb29sIHB1cmdlX2RlYWRfZWRnZXMgKGJhc2ljX2Jsb2NrKTsKZXh0 ZXJuIHZvaWQgZmluZF9zdWJfYmFzaWNfYmxvY2tzIChiYXNpY19ibG9jayk7CmV4dGVybiB2 b2lkIGZpbmRfbWFueV9zdWJfYmFzaWNfYmxvY2tzIChzYml0bWFwKTsKZXh0ZXJuIF9Cb29s IGNhbl9mYWxsdGhydSAoYmFzaWNfYmxvY2ssIGJhc2ljX2Jsb2NrKTsKZXh0ZXJuIHZvaWQg Zmxvd19ub2Rlc19wcmludCAoY29uc3QgY2hhciAqLCBjb25zdCBzYml0bWFwLCBGSUxFICop CiAgICAgICAgICAgICAgIDsKZXh0ZXJuIHZvaWQgZmxvd19lZGdlX2xpc3RfcHJpbnQgKGNv bnN0IGNoYXIgKiwgY29uc3QgZWRnZSAqLCBpbnQsIEZJTEUgKikKICAgICAgICAgICAgICAg ICAgICA7CmV4dGVybiB2b2lkIGFsbG9jX2F1eF9mb3JfYmxvY2sgKGJhc2ljX2Jsb2NrLCBp bnQpOwpleHRlcm4gdm9pZCBhbGxvY19hdXhfZm9yX2Jsb2NrcyAoaW50KTsKZXh0ZXJuIHZv aWQgY2xlYXJfYXV4X2Zvcl9ibG9ja3MgKHZvaWQpOwpleHRlcm4gdm9pZCBmcmVlX2F1eF9m b3JfYmxvY2tzICh2b2lkKTsKCgoKc3RhdGljCgoKCiAgICAgICB2b2lkIGFsbG9jX2F1eF9m b3JfZWRnZSAoZWRnZSwgaW50KTsKZXh0ZXJuIHZvaWQgYWxsb2NfYXV4X2Zvcl9lZGdlcyAo aW50KTsKZXh0ZXJuIHZvaWQgY2xlYXJfYXV4X2Zvcl9lZGdlcyAodm9pZCk7CmV4dGVybiB2 b2lkIGZyZWVfYXV4X2Zvcl9lZGdlcyAodm9pZCk7CgoKCgpleHRlcm4gdm9pZCB2ZXJpZnlf Zmxvd19pbmZvICh2b2lkKTsKZXh0ZXJuIGludCBmbG93X2xvb3Bfb3V0c2lkZV9lZGdlX3Ag KGNvbnN0IHN0cnVjdCBsb29wICosIGVkZ2UpOwoKdHlwZWRlZiBzdHJ1Y3QgY29uZmxpY3Rf Z3JhcGhfZGVmICpjb25mbGljdF9ncmFwaDsKCgoKCnR5cGVkZWYgaW50ICgqY29uZmxpY3Rf Z3JhcGhfZW51bV9mbikgKGludCwgaW50LCB2b2lkICopOwoKCgoKZXh0ZXJuIGNvbmZsaWN0 X2dyYXBoIGNvbmZsaWN0X2dyYXBoX25ldwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGludCk7CmV4dGVybiB2b2lkIGNvbmZsaWN0X2dyYXBoX2RlbGV0ZSAo Y29uZmxpY3RfZ3JhcGgpOwpleHRlcm4gaW50IGNvbmZsaWN0X2dyYXBoX2FkZCAoY29uZmxp Y3RfZ3JhcGgsIGludCwgaW50KQogICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGludCBjb25m bGljdF9ncmFwaF9jb25mbGljdF9wIChjb25mbGljdF9ncmFwaCwgaW50LCBpbnQpCiAgICAg ICAgICAgICAgICAgOwpleHRlcm4gdm9pZCBjb25mbGljdF9ncmFwaF9lbnVtIChjb25mbGlj dF9ncmFwaCwgaW50LCBjb25mbGljdF9ncmFwaF9lbnVtX2ZuLCB2b2lkICopCgogICAgICAg ICAgICAgICA7CmV4dGVybiB2b2lkIGNvbmZsaWN0X2dyYXBoX21lcmdlX3JlZ3MgKGNvbmZs aWN0X2dyYXBoLCBpbnQsIGludCkKICAgICAgICAgICAgOwpleHRlcm4gdm9pZCBjb25mbGlj dF9ncmFwaF9wcmludCAoY29uZmxpY3RfZ3JhcGgsIEZJTEUqKTsKZXh0ZXJuIGNvbmZsaWN0 X2dyYXBoIGNvbmZsaWN0X2dyYXBoX2NvbXB1dGUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChyZWdzZXQsIHBhcnRpdGlvbikKICAgICAgICAgICAgICAgICAg OwpleHRlcm4gX0Jvb2wgbWFya19kZnNfYmFja19lZGdlcyAodm9pZCk7CmV4dGVybiB2b2lk IHVwZGF0ZV9icl9wcm9iX25vdGUgKGJhc2ljX2Jsb2NrKTsKZXh0ZXJuIHZvaWQgZml4dXBf YWJub3JtYWxfZWRnZXMgKHZvaWQpOwoKCgplbnVtIGNkaV9kaXJlY3Rpb24KewogIENESV9E T01JTkFUT1JTLAogIENESV9QT1NUX0RPTUlOQVRPUlMKfTsKCmV4dGVybiB2b2lkIGNhbGN1 bGF0ZV9kb21pbmFuY2VfaW5mbyAoaW50ICosIHNiaXRtYXAgKiwgZW51bSBjZGlfZGlyZWN0 aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgICA7CiMgMzEgInJlZ3JlbmFtZS5jIiAy CiMgMSAicmVsb2FkLmgiIDEKIyAzNSAicmVsb2FkLmgiCiNkZWZpbmUgSEFWRV9TRUNPTkRB UllfUkVMT0FEUyAKIyA0NyAicmVsb2FkLmgiCmV4dGVybiBpbnQgbWVtb3J5X21vdmVfc2Vj b25kYXJ5X2Nvc3QgKGVudW0gbWFjaGluZV9tb2RlLCBlbnVtIHJlZ19jbGFzcywgaW50KTsK CgojZGVmaW5lIE1BWF9SRUxPQURTICgyICogTUFYX1JFQ09HX09QRVJBTkRTICogKE1BWF9S RUdTX1BFUl9BRERSRVNTICsgMSkpCiMgNzYgInJlbG9hZC5oIgplbnVtIHJlbG9hZF90eXBl CnsKICBSRUxPQURfRk9SX0lOUFVULCBSRUxPQURfRk9SX09VVFBVVCwgUkVMT0FEX0ZPUl9J TlNOLAogIFJFTE9BRF9GT1JfSU5QVVRfQUREUkVTUywgUkVMT0FEX0ZPUl9JTlBBRERSX0FE RFJFU1MsCiAgUkVMT0FEX0ZPUl9PVVRQVVRfQUREUkVTUywgUkVMT0FEX0ZPUl9PVVRBRERS X0FERFJFU1MsCiAgUkVMT0FEX0ZPUl9PUEVSQU5EX0FERFJFU1MsIFJFTE9BRF9GT1JfT1BB RERSX0FERFIsCiAgUkVMT0FEX09USEVSLCBSRUxPQURfRk9SX09USEVSX0FERFJFU1MKfTsK IyAxNjcgInJlbG9hZC5oIgpleHRlcm4gcnR4ICpyZWdfZXF1aXZfY29uc3RhbnQ7CmV4dGVy biBydHggKnJlZ19lcXVpdl9tZW1vcnlfbG9jOwpleHRlcm4gcnR4ICpyZWdfZXF1aXZfYWRk cmVzczsKZXh0ZXJuIHJ0eCAqcmVnX2VxdWl2X21lbTsKCgoKZXh0ZXJuIGludCBuX2Vhcmx5 Y2xvYmJlcnM7CmV4dGVybiBydHggcmVsb2FkX2Vhcmx5Y2xvYmJlcnNbMzBdOwoKCmV4dGVy biBpbnQgcmVsb2FkX25fb3BlcmFuZHM7CgoKCmV4dGVybiBpbnQgcmVsb2FkX2ZpcnN0X3Vp ZDsKCgoKCgpleHRlcm4gY2hhciBpbmRpcmVjdF9zeW1yZWZfb2s7CgoKZXh0ZXJuIGNoYXIg ZG91YmxlX3JlZ19hZGRyZXNzX29rOwoKZXh0ZXJuIGludCBudW1fbm90X2F0X2luaXRpYWxf b2Zmc2V0OwoKc3RydWN0IG5lZWRzCnsKCiAgc2hvcnQgcmVnc1syXVsoKGludCkgTElNX1JF R19DTEFTU0VTKV07CiAgc2hvcnQgZ3JvdXBzWygoaW50KSBMSU1fUkVHX0NMQVNTRVMpXTsK fTsKCgoKCgpzdHJ1Y3QgaW5zbl9jaGFpbgp7CgogIHN0cnVjdCBpbnNuX2NoYWluICpuZXh0 LCAqcHJldjsKCgoKICBzdHJ1Y3QgaW5zbl9jaGFpbiAqbmV4dF9uZWVkX3JlbG9hZDsKCgog IGludCBibG9jazsKCiAgcnR4IGluc247CgoKICByZWdzZXRfaGVhZCBsaXZlX3Rocm91Z2hv dXQ7CiAgcmVnc2V0X2hlYWQgZGVhZF9vcl9zZXQ7CgoKICBzdHJ1Y3QgcmVsb2FkICpybGQ7 CiAgaW50IG5fcmVsb2FkczsKCgogIEhBUkRfUkVHX0VMVF9UWVBFIHVzZWRfc3BpbGxfcmVn czsKCgogIHN0cnVjdCBuZWVkcyBuZWVkOwoKCiAgdW5zaWduZWQgaW50IG5lZWRfcmVsb2Fk OjE7CgoKICB1bnNpZ25lZCBpbnQgbmVlZF9vcGVyYW5kX2NoYW5nZToxOwoKICB1bnNpZ25l ZCBpbnQgbmVlZF9lbGltOjE7CgogIHVuc2lnbmVkIGludCBpc19jYWxsZXJfc2F2ZV9pbnNu OjE7Cn07CgoKCmV4dGVybiBzdHJ1Y3QgaW5zbl9jaGFpbiAqcmVsb2FkX2luc25fY2hhaW47 CgoKZXh0ZXJuIHN0cnVjdCBpbnNuX2NoYWluICpuZXdfaW5zbl9jaGFpbiAodm9pZCk7Cgpl eHRlcm4gdm9pZCBjb21wdXRlX3VzZV9ieV9wc2V1ZG9zIChIQVJEX1JFR19FTFRfVFlQRSAq LCByZWdzZXQpOwoKCgoKCgoKZXh0ZXJuIHJ0eCBnZXRfc2Vjb25kYXJ5X21lbSAocnR4LCBl bnVtIG1hY2hpbmVfbW9kZSwgaW50LCBlbnVtIHJlbG9hZF90eXBlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwoKCmV4dGVybiB2b2lkIGNsZWFyX3NlY29uZGFyeV9tZW0g KHZvaWQpOwoKCgpleHRlcm4gdm9pZCB0cmFuc2Zlcl9yZXBsYWNlbWVudHMgKGludCwgaW50 KTsKCgoKCgpleHRlcm4gaW50IHJlbW92ZV9hZGRyZXNzX3JlcGxhY2VtZW50cyAocnR4IGlu X3J0eCk7CgoKCgpleHRlcm4gaW50IG9wZXJhbmRzX21hdGNoX3AgKHJ0eCwgcnR4KTsKCgpl eHRlcm4gaW50IHNhZmVfZnJvbV9lYXJseWNsb2JiZXIgKHJ0eCwgcnR4KTsKCgoKCmV4dGVy biBpbnQgZmluZF9yZWxvYWRzIChydHgsIGludCwgaW50LCBpbnQsIHNob3J0ICopOwoKCgoK CmV4dGVybiBydHggZm9ybV9zdW0gKHJ0eCwgcnR4KTsKCgoKZXh0ZXJuIHZvaWQgc3Vic3Rf cmVsb2FkcyAocnR4KTsKCgoKCmV4dGVybiB2b2lkIGNvcHlfcmVwbGFjZW1lbnRzIChydHgs IHJ0eCk7CgoKZXh0ZXJuIHZvaWQgbW92ZV9yZXBsYWNlbWVudHMgKHJ0eCAqeCwgcnR4ICp5 KTsKCgoKZXh0ZXJuIHJ0eCBmaW5kX3JlcGxhY2VtZW50IChydHggKik7CgoKCgpleHRlcm4g aW50IHJlZmVyc190b19yZWdub19mb3JfcmVsb2FkX3AgKHVuc2lnbmVkIGludCwgdW5zaWdu ZWQgaW50LCBydHgsIHJ0eCAqKQogICAgICAgICAgICAgICAgICAgOwoKCmV4dGVybiBpbnQg cmVnX292ZXJsYXBfbWVudGlvbmVkX2Zvcl9yZWxvYWRfcCAocnR4LCBydHgpOwoKCgpleHRl cm4gaW50IHJlZmVyc190b19tZW1fZm9yX3JlbG9hZF9wIChydHgpOwoKCgpleHRlcm4gcnR4 IGZpbmRfZXF1aXZfcmVnIChydHgsIHJ0eCwgZW51bSByZWdfY2xhc3MsIGludCwgc2hvcnQg KiwgaW50LCBlbnVtIG1hY2hpbmVfbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CgoKZXh0ZXJuIGludCByZWdub19jbG9iYmVyZWRfcCAodW5zaWduZWQgaW50LCBydHgs IGVudW0gbWFjaGluZV9tb2RlLCBpbnQpCiAgICAgICAgICAgICAgIDsKCgpleHRlcm4gaW50 IGVhcmx5Y2xvYmJlcl9vcGVyYW5kX3AgKHJ0eCk7CgoKZXh0ZXJuIGludCBwdXNoX3JlbG9h ZCAocnR4LCBydHgsIHJ0eCAqLCBydHggKiwgZW51bSByZWdfY2xhc3MsIGVudW0gbWFjaGlu ZV9tb2RlLCBlbnVtIG1hY2hpbmVfbW9kZSwgaW50LCBpbnQsIGludCwgZW51bSByZWxvYWRf dHlwZSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCmV4dGVy biB2b2lkIHJlbG9hZF9jc2VfcmVncyAocnR4KTsKZXh0ZXJuIGludCByZWxvYWRzX2NvbmZs aWN0IChpbnQsIGludCk7CgoKZXh0ZXJuIHZvaWQgaW5pdF9yZWxvYWQgKHZvaWQpOwoKCmV4 dGVybiBpbnQgcmVsb2FkIChydHgsIGludCk7CgoKCmV4dGVybiB2b2lkIG1hcmtfaG9tZV9s aXZlIChpbnQpOwoKCgpleHRlcm4gcnR4IGVsaW1pbmF0ZV9yZWdzIChydHgsIGVudW0gbWFj aGluZV9tb2RlLCBydHgpOwoKCgoKZXh0ZXJuIHJ0eCBnZW5fcmVsb2FkIChydHgsIHJ0eCwg aW50LCBlbnVtIHJlbG9hZF90eXBlKTsKCgpleHRlcm4gdm9pZCBkZWFsbG9jYXRlX3JlbG9h ZF9yZWcgKGludCByKTsKCgoKCmV4dGVybiB2b2lkIGluaXRfY2FsbGVyX3NhdmUgKHZvaWQp OwoKCmV4dGVybiB2b2lkIGluaXRfc2F2ZV9hcmVhcyAodm9pZCk7CgoKZXh0ZXJuIHZvaWQg c2V0dXBfc2F2ZV9hcmVhcyAodm9pZCk7CgoKZXh0ZXJuIHZvaWQgc2F2ZV9jYWxsX2Nsb2Ji ZXJlZF9yZWdzICh2b2lkKTsKCgpleHRlcm4gdm9pZCBjbGVhbnVwX3N1YnJlZ19vcGVyYW5k cyAocnR4KTsKCgpleHRlcm4gdm9pZCBkZWJ1Z19yZWxvYWRfdG9fc3RyZWFtIChGSUxFICop OwpleHRlcm4gdm9pZCBkZWJ1Z19yZWxvYWQgKHZvaWQpOwojIDMyICJyZWdyZW5hbWUuYyIg MgojIDEgIm91dHB1dC5oIiAxCiMgMjQgIm91dHB1dC5oIgpleHRlcm4gdm9pZCBjb21wdXRl X2FsaWdubWVudHMgKHZvaWQpOwoKCmV4dGVybiB2b2lkIGluaXRfZmluYWwgKGNvbnN0IGNo YXIgKik7CgoKCmV4dGVybiB2b2lkIGVuZF9maW5hbCAoY29uc3QgY2hhciAqKTsKCgoKZXh0 ZXJuIHZvaWQgYXBwX2VuYWJsZSAodm9pZCk7CgoKCmV4dGVybiB2b2lkIGFwcF9kaXNhYmxl ICh2b2lkKTsKCgoKCmV4dGVybiBpbnQgZGJyX3NlcXVlbmNlX2xlbmd0aCAodm9pZCk7CgoK ZXh0ZXJuIHZvaWQgaW5pdF9pbnNuX2xlbmd0aHMgKHZvaWQpOwoKCgoKZXh0ZXJuIGludCBn ZXRfYXR0cl9sZW5ndGggKHJ0eCk7CgoKCmV4dGVybiB2b2lkIHNob3J0ZW5fYnJhbmNoZXMg KHJ0eCk7CgoKCgoKCmV4dGVybiB2b2lkIGZpbmFsX3N0YXJ0X2Z1bmN0aW9uIChydHgsIEZJ TEUgKiwgaW50KTsKCgoKCmV4dGVybiB2b2lkIGZpbmFsX2VuZF9mdW5jdGlvbiAodm9pZCk7 CgoKZXh0ZXJuIHZvaWQgZmluYWwgKHJ0eCwgRklMRSAqLCBpbnQsIGludCk7CgoKCgpleHRl cm4gcnR4IGZpbmFsX3NjYW5faW5zbiAocnR4LCBGSUxFICosIGludCwgaW50LCBpbnQpOwoK CgpleHRlcm4gcnR4IGFsdGVyX3N1YnJlZyAocnR4ICopOwoKCgpleHRlcm4gdm9pZCBvdXRw dXRfb3BlcmFuZF9sb3NzYWdlIChjb25zdCBjaGFyICosIC4uLikgX19hdHRyaWJ1dGVfXyAo KF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDEsIDIpKSk7CgoKCmV4dGVybiB2b2lkIG91dHB1 dF9hc21faW5zbiAoY29uc3QgY2hhciAqLCBydHggKik7CgoKCgpleHRlcm4gaW50IGluc25f Y3VycmVudF9yZWZlcmVuY2VfYWRkcmVzcyAocnR4KTsKCgoKZXh0ZXJuIGludCBsYWJlbF90 b19hbGlnbm1lbnQgKHJ0eCk7CgoKZXh0ZXJuIHZvaWQgb3V0cHV0X2FzbV9sYWJlbCAocnR4 KTsKCgoKZXh0ZXJuIHZvaWQgb3V0cHV0X2FkZHJlc3MgKHJ0eCk7CgoKCgpleHRlcm4gdm9p ZCBvdXRwdXRfYWRkcl9jb25zdCAoRklMRSAqLCBydHgpOwoKCgpleHRlcm4gdm9pZCBhc21f ZnByaW50ZiAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqcCwgLi4uKTsKCgoKZXh0ZXJuIHZv aWQgc3BsaXRfZG91YmxlIChydHgsIHJ0eCAqLCBydHggKik7CgoKZXh0ZXJuIGludCBsZWFm X2Z1bmN0aW9uX3AgKHZvaWQpOwoKCgoKZXh0ZXJuIGludCBmaW5hbF9mb3J3YXJkX2JyYW5j aF9wIChydHgpOwoKCgpleHRlcm4gaW50IG9ubHlfbGVhZl9yZWdzX3VzZWQgKHZvaWQpOwoK CgpleHRlcm4gdm9pZCBsZWFmX3JlbnVtYmVyX3JlZ3NfaW5zbiAocnR4KTsKCgpleHRlcm4g Y29uc3QgY2hhciAqZ2V0X2luc25fdGVtcGxhdGUgKGludCwgcnR4KTsKCgoKZXh0ZXJuIGlu dCBhZGRfd2VhayAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwoKCmV4dGVybiB2b2lk IGFsbG9jYXRlX2Zvcl9saWZlX2FuYWx5c2lzICh2b2lkKTsKZXh0ZXJuIGludCByZWdub191 bmluaXRpYWxpemVkICh1bnNpZ25lZCBpbnQpOwpleHRlcm4gaW50IHJlZ25vX2Nsb2JiZXJl ZF9hdF9zZXRqbXAgKGludCk7CmV4dGVybiB2b2lkIGZpbmRfYmFzaWNfYmxvY2tzIChydHgs IGludCwgRklMRSAqKTsKZXh0ZXJuIF9Cb29sIGNsZWFudXBfY2ZnIChpbnQpOwpleHRlcm4g dm9pZCBjaGVja19mdW5jdGlvbl9yZXR1cm5fd2FybmluZ3MgKHZvaWQpOwoKCgoKCmV4dGVy biB2b2lkIHRleHRfc2VjdGlvbiAodm9pZCk7CgoKZXh0ZXJuIHZvaWQgZGF0YV9zZWN0aW9u ICh2b2lkKTsKCgpleHRlcm4gdm9pZCBmb3JjZV9kYXRhX3NlY3Rpb24gKHZvaWQpOwoKCgpl eHRlcm4gdm9pZCByZWFkb25seV9kYXRhX3NlY3Rpb24gKHZvaWQpOwoKCmV4dGVybiBpbnQg aW5fdGV4dF9zZWN0aW9uICh2b2lkKTsKIyAxNzggIm91dHB1dC5oIgpleHRlcm4gdm9pZCBi c3Nfc2VjdGlvbiAodm9pZCk7CgoKCmV4dGVybiB2b2lkIGNvbnN0X3NlY3Rpb24gKHZvaWQp OwoKCgpleHRlcm4gdm9pZCBpbml0X3NlY3Rpb24gKHZvaWQpOwoKCgpleHRlcm4gdm9pZCBm aW5pX3NlY3Rpb24gKHZvaWQpOwojIDIzOSAib3V0cHV0LmgiCmV4dGVybiB2b2lkIHdlYWtf ZmluaXNoICh2b2lkKTsKIyAyNDggIm91dHB1dC5oIgpleHRlcm4gaW50IGRlY29kZV9yZWdf bmFtZSAoY29uc3QgY2hhciAqKTsKIyAyOTIgIm91dHB1dC5oIgpleHRlcm4gdm9pZCBhc3Nl bWJsZV96ZXJvcyAoaW50KTsKCgpleHRlcm4gdm9pZCBhc3NlbWJsZV9hbGlnbiAoaW50KTsK ZXh0ZXJuIHZvaWQgYXNzZW1ibGVfZWhfYWxpZ24gKGludCk7CgoKZXh0ZXJuIHZvaWQgYXNz ZW1ibGVfc3RyaW5nIChjb25zdCBjaGFyICosIGludCk7CgoKCmV4dGVybiB2b2lkIGFzc2Vt YmxlX2V4dGVybmFsX2xpYmNhbGwgKHJ0eCk7CgoKCmV4dGVybiB2b2lkIGFzc2VtYmxlX2ds b2JhbCAoY29uc3QgY2hhciAqKTsKCgpleHRlcm4gdm9pZCBhc3NlbWJsZV9sYWJlbCAoY29u c3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgYXNzZW1ibGVfZWhfbGFiZWwgKGNvbnN0IGNoYXIg Kik7CgoKCgoKCmV4dGVybiB2b2lkIGFzc2VtYmxlX25hbWUgKEZJTEUgKiwgY29uc3QgY2hh ciAqKTsKIyAzMjcgIm91dHB1dC5oIgpleHRlcm4gY29uc3QgY2hhciAqaW50ZWdlcl9hc21f b3AgKGludCwgaW50KTsKCgoKCmV4dGVybiB2b2lkIGFzc2VtYmxlX2ludGVnZXJfd2l0aF9v cCAoY29uc3QgY2hhciAqLCBydHgpOwoKCmV4dGVybiBfQm9vbCBkZWZhdWx0X2Fzc2VtYmxl X2ludGVnZXIgKHJ0eCwgdW5zaWduZWQgaW50LCBpbnQpOwoKCgoKCmV4dGVybiBfQm9vbCBh c3NlbWJsZV9pbnRlZ2VyIChydHgsIHVuc2lnbmVkLCB1bnNpZ25lZCwgaW50KTsKCgoKCiNk ZWZpbmUgYXNzZW1ibGVfYWxpZ25lZF9pbnRlZ2VyKFNJWkUsVkFMVUUpIGFzc2VtYmxlX2lu dGVnZXIgKFZBTFVFLCBTSVpFLCAoU0laRSkgKiBCSVRTX1BFUl9VTklULCAxKQojIDM2MCAi b3V0cHV0LmgiCmV4dGVybiB2b2lkIGNsZWFyX2NvbnN0X2RvdWJsZV9tZW0gKHZvaWQpOwoK CmV4dGVybiB2b2lkIGRlZmVyX2FkZHJlc3NlZF9jb25zdGFudHMgKHZvaWQpOwoKCgpleHRl cm4gdm9pZCBvdXRwdXRfZGVmZXJyZWRfYWRkcmVzc2VkX2NvbnN0YW50cyAodm9pZCk7CgoK ZXh0ZXJuIGludCBnZXRfcG9vbF9zaXplICh2b2lkKTsKIyA0MTAgIm91dHB1dC5oIgpleHRl cm4gcnR4IGZpbmFsX3NlcXVlbmNlOwojIDQyMyAib3V0cHV0LmgiCmV4dGVybiBGSUxFICph c21fb3V0X2ZpbGU7CgoKCmV4dGVybiBjb25zdCBjaGFyICpmaXJzdF9nbG9iYWxfb2JqZWN0 X25hbWU7CgoKZXh0ZXJuIGNvbnN0IGNoYXIgKndlYWtfZ2xvYmFsX29iamVjdF9uYW1lOwoK CgoKCgpleHRlcm4gaW50IGN1cnJlbnRfZnVuY3Rpb25faXNfbGVhZjsKCgoKCmV4dGVybiBp bnQgY3VycmVudF9mdW5jdGlvbl9ub3Rocm93OwoKCgoKCmV4dGVybiBpbnQgY3VycmVudF9m dW5jdGlvbl9zcF9pc191bmNoYW5naW5nOwoKCgoKCmV4dGVybiBpbnQgY3VycmVudF9mdW5j dGlvbl91c2VzX29ubHlfbGVhZl9yZWdzOwoKCgoKZXh0ZXJuIEZJTEUgKnJ0bF9kdW1wX2Zp bGU7CgoKCmV4dGVybiBzdHJ1Y3QgcnR4X2RlZiAqY3VycmVudF9pbnNuX3ByZWRpY2F0ZTsK CgpleHRlcm4gc3RydWN0IHJ0eF9kZWYgKmN1cnJlbnRfb3V0cHV0X2luc247CgoKCgojZGVm aW5lIERFQ0xfUkVBRE9OTFlfU0VDVElPTihERUNMLFJFTE9DKSAoVFJFRV9SRUFET05MWSAo REVDTCkgJiYgISBUUkVFX1RISVNfVk9MQVRJTEUgKERFQ0wpICYmIERFQ0xfSU5JVElBTCAo REVDTCkgJiYgKERFQ0xfSU5JVElBTCAoREVDTCkgPT0gZXJyb3JfbWFya19ub2RlIHx8IFRS RUVfQ09OU1RBTlQgKERFQ0xfSU5JVElBTCAoREVDTCkpKSAmJiAhIChSRUxPQyAmJiAoZmxh Z19waWMgfHwgREVDTF9PTkVfT05MWSAoREVDTCkpKSkKIyA0ODAgIm91dHB1dC5oIgpleHRl cm4gY29uc3QgY2hhciAqdXNlcl9sYWJlbF9wcmVmaXg7CgoKCgoKI2RlZmluZSBTVFJJUF9O QU1FX0VOQ09ESU5HKFZBUixTWU1CT0xfTkFNRSkgKFZBUikgPSAoKFNZTUJPTF9OQU1FKSAr ICgoU1lNQk9MX05BTUUpWzBdID09ICcqJykpCgoKCgpleHRlcm4gdm9pZCBkZWZhdWx0X2Z1 bmN0aW9uX3Byb19lcGlsb2d1ZSAoRklMRSAqLCBsb25nKTsKCgpleHRlcm4gdm9pZCBkZWZh dWx0X2V4Y2VwdGlvbl9zZWN0aW9uICh2b2lkKTsKCgpleHRlcm4gdm9pZCBkZWZhdWx0X2Vo X2ZyYW1lX3NlY3Rpb24gKHZvaWQpOwoKCmV4dGVybiB2b2lkIG5vX2FzbV90b19zdHJlYW0g KEZJTEUgKik7CgoKI2RlZmluZSBTRUNUSU9OX0VOVFNJWkUgMHgwMDBmZgojZGVmaW5lIFNF Q1RJT05fQ09ERSAweDAwMTAwCiNkZWZpbmUgU0VDVElPTl9XUklURSAweDAwMjAwCiNkZWZp bmUgU0VDVElPTl9ERUJVRyAweDAwNDAwCiNkZWZpbmUgU0VDVElPTl9MSU5LT05DRSAweDAw ODAwCiNkZWZpbmUgU0VDVElPTl9TTUFMTCAweDAxMDAwCiNkZWZpbmUgU0VDVElPTl9CU1Mg MHgwMjAwMAojZGVmaW5lIFNFQ1RJT05fRk9SR0VUIDB4MDQwMDAKI2RlZmluZSBTRUNUSU9O X01FUkdFIDB4MDgwMDAKI2RlZmluZSBTRUNUSU9OX1NUUklOR1MgMHgxMDAwMAoKI2RlZmlu ZSBTRUNUSU9OX09WRVJSSURFIDB4MjAwMDAKI2RlZmluZSBTRUNUSU9OX01BQ0hfREVQIDB4 NDAwMDAKCmV4dGVybiB1bnNpZ25lZCBpbnQgZ2V0X25hbWVkX3NlY3Rpb25fZmxhZ3MgKGNv bnN0IGNoYXIgKik7CmV4dGVybiBfQm9vbCBzZXRfbmFtZWRfc2VjdGlvbl9mbGFncyAoY29u c3QgY2hhciAqLCB1bnNpZ25lZCBpbnQpOwpleHRlcm4gdm9pZCBuYW1lZF9zZWN0aW9uX2Zs YWdzIChjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCk7CmV4dGVybiBfQm9vbCBuYW1lZF9z ZWN0aW9uX2ZpcnN0X2RlY2xhcmF0aW9uIChjb25zdCBjaGFyICopOwoKdW5pb24gdHJlZV9u b2RlOwpleHRlcm4gdW5zaWduZWQgaW50IGRlZmF1bHRfc2VjdGlvbl90eXBlX2ZsYWdzICh1 bmlvbiB0cmVlX25vZGUgKiwgY29uc3QgY2hhciAqLCBpbnQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgOwoKZXh0ZXJuIHZvaWQgZGVmYXVsdF9ub19uYW1lZF9zZWN0aW9uIChjb25z dCBjaGFyICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lkIGRlZmF1bHRfZWxmX2FzbV9u YW1lZF9zZWN0aW9uIChjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCk7CmV4dGVybiB2b2lk IGRlZmF1bHRfY29mZl9hc21fbmFtZWRfc2VjdGlvbiAoY29uc3QgY2hhciAqLCB1bnNpZ25l ZCBpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHZvaWQgZGVmYXVsdF9w ZV9hc21fbmFtZWRfc2VjdGlvbiAoY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQpOwoKZXh0 ZXJuIHZvaWQgZGVmYXVsdF9zdGFic19hc21fb3V0X2Rlc3RydWN0b3IgKHN0cnVjdCBydHhf ZGVmICosIGludCk7CmV4dGVybiB2b2lkIGRlZmF1bHRfbmFtZWRfc2VjdGlvbl9hc21fb3V0 X2Rlc3RydWN0b3IgKHN0cnVjdCBydHhfZGVmICosIGludCkKICAgICAgICAgICAgICAgICAg OwpleHRlcm4gdm9pZCBkZWZhdWx0X2R0b3Jfc2VjdGlvbl9hc21fb3V0X2Rlc3RydWN0b3Ig KHN0cnVjdCBydHhfZGVmICosIGludCkKICAgICAgICAgICAgICAgICA7CmV4dGVybiB2b2lk IGRlZmF1bHRfc3RhYnNfYXNtX291dF9jb25zdHJ1Y3RvciAoc3RydWN0IHJ0eF9kZWYgKiwg aW50KTsKZXh0ZXJuIHZvaWQgZGVmYXVsdF9uYW1lZF9zZWN0aW9uX2FzbV9vdXRfY29uc3Ry dWN0b3IgKHN0cnVjdCBydHhfZGVmICosIGludCkKICAgICAgICAgICAgICAgICAgIDsKZXh0 ZXJuIHZvaWQgZGVmYXVsdF9jdG9yX3NlY3Rpb25fYXNtX291dF9jb25zdHJ1Y3RvciAoc3Ry dWN0IHJ0eF9kZWYgKiwgaW50KQogICAgICAgICAgICAgICAgICA7CgoKZXh0ZXJuIHZvaWQg YXNzZW1ibGVfdnRhYmxlX2VudHJ5IChzdHJ1Y3QgcnR4X2RlZiAqLCBsb25nKTsKZXh0ZXJu IHZvaWQgYXNzZW1ibGVfdnRhYmxlX2luaGVyaXQgKHN0cnVjdCBydHhfZGVmICosIHN0cnVj dCBydHhfZGVmICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiMgMzMgInJlZ3Jl bmFtZS5jIiAyCiMgMSAiZnVuY3Rpb24uaCIgMQojIDIyICJmdW5jdGlvbi5oIgpzdHJ1Y3Qg dmFyX3JlZnNfcXVldWUKewogIHJ0eCBtb2RpZmllZDsKICBlbnVtIG1hY2hpbmVfbW9kZSBw cm9tb3RlZF9tb2RlOwogIGludCB1bnNpZ25lZHA7CiAgc3RydWN0IHZhcl9yZWZzX3F1ZXVl ICpuZXh0Owp9OwoKCgoKCgpzdHJ1Y3Qgc2VxdWVuY2Vfc3RhY2sKewoKICBydHggZmlyc3Qs IGxhc3Q7CiAgdHJlZSBzZXF1ZW5jZV9ydGxfZXhwcjsKICBzdHJ1Y3Qgc2VxdWVuY2Vfc3Rh Y2sgKm5leHQ7Cn07CgpleHRlcm4gc3RydWN0IHNlcXVlbmNlX3N0YWNrICpzZXF1ZW5jZV9z dGFjazsKCgoKc3RydWN0IHNpbXBsZV9vYnN0YWNrX3N0YWNrCnsKICBzdHJ1Y3Qgb2JzdGFj ayAqb2JzdGFjazsKICBzdHJ1Y3Qgc2ltcGxlX29ic3RhY2tfc3RhY2sgKm5leHQ7Cn07Cgpz dHJ1Y3QgZW1pdF9zdGF0dXMKewoKCiAgaW50IHhfcmVnX3J0eF9ubzsKCgogIGludCB4X2Zp cnN0X2xhYmVsX251bTsKCgoKCgoKICBydHggeF9maXJzdF9pbnNuOwogIHJ0eCB4X2xhc3Rf aW5zbjsKCgoKCiAgdHJlZSBzZXF1ZW5jZV9ydGxfZXhwcjsKCgoKCgogIHN0cnVjdCBzZXF1 ZW5jZV9zdGFjayAqc2VxdWVuY2Vfc3RhY2s7CgoKCiAgaW50IHhfY3VyX2luc25fdWlkOwoK CgogIGludCB4X2xhc3RfbGluZW51bTsKICBjb25zdCBjaGFyICp4X2xhc3RfZmlsZW5hbWU7 CgoKCgoKICBpbnQgcmVnbm9fcG9pbnRlcl9hbGlnbl9sZW5ndGg7CgoKCgogIHVuc2lnbmVk IGNoYXIgKnJlZ25vX3BvaW50ZXJfYWxpZ247CgoKCiAgdHJlZSAqcmVnbm9fZGVjbDsKCgoK ICBydHggKnhfcmVnbm9fcmVnX3J0eDsKfTsKCgojZGVmaW5lIHJlZ19ydHhfbm8gKGNmdW4t PmVtaXQtPnhfcmVnX3J0eF9ubykKI2RlZmluZSBzZXFfcnRsX2V4cHIgKGNmdW4tPmVtaXQt PnNlcXVlbmNlX3J0bF9leHByKQojZGVmaW5lIHJlZ25vX3JlZ19ydHggKGNmdW4tPmVtaXQt PnhfcmVnbm9fcmVnX3J0eCkKI2RlZmluZSBzZXFfc3RhY2sgKGNmdW4tPmVtaXQtPnNlcXVl bmNlX3N0YWNrKQoKI2RlZmluZSBSRUdOT19QT0lOVEVSX0FMSUdOKFJFR05PKSAoY2Z1bi0+ ZW1pdC0+cmVnbm9fcG9pbnRlcl9hbGlnbltSRUdOT10pCiNkZWZpbmUgUkVHTk9fREVDTChS RUdOTykgKGNmdW4tPmVtaXQtPnJlZ25vX2RlY2xbUkVHTk9dKQoKc3RydWN0IGV4cHJfc3Rh dHVzCnsKCgogIGludCB4X3BlbmRpbmdfc3RhY2tfYWRqdXN0OwojIDE0MCAiZnVuY3Rpb24u aCIKICBpbnQgeF9pbmhpYml0X2RlZmVyX3BvcDsKCgoKCgogIGludCB4X3N0YWNrX3BvaW50 ZXJfZGVsdGE7CgoKCgogIHJ0eCB4X3NhdmVyZWdzX3ZhbHVlOwoKCiAgcnR4IHhfYXBwbHlf YXJnc192YWx1ZTsKCgogIHJ0eCB4X2ZvcmNlZF9sYWJlbHM7CgoKICBydHggeF9wZW5kaW5n X2NoYWluOwp9OwoKI2RlZmluZSBwZW5kaW5nX3N0YWNrX2FkanVzdCAoY2Z1bi0+ZXhwci0+ eF9wZW5kaW5nX3N0YWNrX2FkanVzdCkKI2RlZmluZSBpbmhpYml0X2RlZmVyX3BvcCAoY2Z1 bi0+ZXhwci0+eF9pbmhpYml0X2RlZmVyX3BvcCkKI2RlZmluZSBzYXZlcmVnc192YWx1ZSAo Y2Z1bi0+ZXhwci0+eF9zYXZlcmVnc192YWx1ZSkKI2RlZmluZSBhcHBseV9hcmdzX3ZhbHVl IChjZnVuLT5leHByLT54X2FwcGx5X2FyZ3NfdmFsdWUpCiNkZWZpbmUgZm9yY2VkX2xhYmVs cyAoY2Z1bi0+ZXhwci0+eF9mb3JjZWRfbGFiZWxzKQojZGVmaW5lIHBlbmRpbmdfY2hhaW4g KGNmdW4tPmV4cHItPnhfcGVuZGluZ19jaGFpbikKI2RlZmluZSBzdGFja19wb2ludGVyX2Rl bHRhIChjZnVuLT5leHByLT54X3N0YWNrX3BvaW50ZXJfZGVsdGEpCgoKCgpzdHJ1Y3QgZnVu Y3Rpb24KewogIHN0cnVjdCBlaF9zdGF0dXMgKmVoOwogIHN0cnVjdCBzdG10X3N0YXR1cyAq c3RtdDsKICBzdHJ1Y3QgZXhwcl9zdGF0dXMgKmV4cHI7CiAgc3RydWN0IGVtaXRfc3RhdHVz ICplbWl0OwogIHN0cnVjdCB2YXJhc21fc3RhdHVzICp2YXJhc207CgoKCgogIGNvbnN0IGNo YXIgKm5hbWU7CgoKICB0cmVlIGRlY2w7CgoKICBzdHJ1Y3QgZnVuY3Rpb24gKm91dGVyOwoK CgoKICBpbnQgcG9wc19hcmdzOwoKCgoKICBpbnQgYXJnc19zaXplOwoKCgoKICBpbnQgcHJl dGVuZF9hcmdzX3NpemU7CgoKCiAgaW50IG91dGdvaW5nX2FyZ3Nfc2l6ZTsKCgoKICBydHgg YXJnX29mZnNldF9ydHg7CgoKCiAgQ1VNVUxBVElWRV9BUkdTIGFyZ3NfaW5mbzsKCgoKCgog IHJ0eCByZXR1cm5fcnR4OwoKCiAgcnR4IGludGVybmFsX2FyZ19wb2ludGVyOwoKCgogIGNv bnN0IGNoYXIgKmNhbm5vdF9pbmxpbmU7CgoKCiAgc3RydWN0IGluaXRpYWxfdmFsdWVfc3Ry dWN0ICpoYXJkX3JlZ19pbml0aWFsX3ZhbHM7CgoKICBpbnQgeF9mdW5jdGlvbl9jYWxsX2Nv dW50OwoKCgoKICB0cmVlIHhfbm9ubG9jYWxfbGFiZWxzOwoKCgoKCiAgcnR4IHhfbm9ubG9j YWxfZ290b19oYW5kbGVyX3Nsb3RzOwoKCgogIHJ0eCB4X25vbmxvY2FsX2dvdG9faGFuZGxl cl9sYWJlbHM7CgoKCgogIHJ0eCB4X25vbmxvY2FsX2dvdG9fc3RhY2tfbGV2ZWw7CgoKCgoK ICBydHggeF9jbGVhbnVwX2xhYmVsOwoKCgoKICBydHggeF9yZXR1cm5fbGFiZWw7CgoKCiAg cnR4IHhfc2F2ZV9leHByX3JlZ3M7CgoKCiAgcnR4IHhfc3RhY2tfc2xvdF9saXN0OwoKCiAg dHJlZSB4X3J0bF9leHByX2NoYWluOwoKCgogIHJ0eCB4X3RhaWxfcmVjdXJzaW9uX2xhYmVs OwoKCiAgcnR4IHhfdGFpbF9yZWN1cnNpb25fcmVlbnRyeTsKCgoKCgogIHJ0eCB4X2FyZ19w b2ludGVyX3NhdmVfYXJlYTsKCgoKCiAgcnR4IHhfY2xvYmJlcl9yZXR1cm5faW5zbjsKCgoK CiAgbG9uZyB4X2ZyYW1lX29mZnNldDsKCgoKCiAgdHJlZSB4X2NvbnRleHRfZGlzcGxheTsK IyAzMTcgImZ1bmN0aW9uLmgiCiAgdHJlZSB4X3RyYW1wb2xpbmVfbGlzdDsKCgogIHJ0eCB4 X3Bhcm1fYmlydGhfaW5zbjsKCgoKICBydHggeF9sYXN0X3Bhcm1faW5zbjsKCgoKICB1bnNp Z25lZCBpbnQgeF9tYXhfcGFybV9yZWc7CgoKCgoKICBydHggKnhfcGFybV9yZWdfc3RhY2tf bG9jOwoKCiAgc3RydWN0IHRlbXBfc2xvdCAqeF90ZW1wX3Nsb3RzOwoKCiAgaW50IHhfdGVt cF9zbG90X2xldmVsOwoKCiAgaW50IHhfdmFyX3RlbXBfc2xvdF9sZXZlbDsKCgoKCgogIGlu dCB4X3RhcmdldF90ZW1wX3Nsb3RfbGV2ZWw7CgoKCiAgc3RydWN0IHZhcl9yZWZzX3F1ZXVl ICpmaXh1cF92YXJfcmVmc19xdWV1ZTsKCgogIGludCBpbmxpbmFibGU7CiAgaW50IG5vX2Rl YnVnZ2luZ19zeW1ib2xzOwoKICB2b2lkICpvcmlnaW5hbF9hcmdfdmVjdG9yOwogIHRyZWUg b3JpZ2luYWxfZGVjbF9pbml0aWFsOwoKCiAgcnR4IGlubF9sYXN0X3Bhcm1faW5zbjsKCiAg aW50IGlubF9tYXhfbGFiZWxfbnVtOwoKCiAgaW50IHByb2ZpbGVfbGFiZWxfbm87CgoKCgog IHN0cnVjdCBtYWNoaW5lX2Z1bmN0aW9uICptYWNoaW5lOwoKICBpbnQgc3RhY2tfYWxpZ25t ZW50X25lZWRlZDsKCiAgaW50IHByZWZlcnJlZF9zdGFja19ib3VuZGFyeTsKCgogIHN0cnVj dCBsYW5ndWFnZV9mdW5jdGlvbiAqbGFuZ3VhZ2U7CgoKCgoKICBydHggZXBpbG9ndWVfZGVs YXlfbGlzdDsKCgoKCgogIHVuc2lnbmVkIGludCByZXR1cm5zX3N0cnVjdCA6IDE7CgoKCiAg dW5zaWduZWQgaW50IHJldHVybnNfcGNjX3N0cnVjdCA6IDE7CgoKICB1bnNpZ25lZCBpbnQg cmV0dXJuc19wb2ludGVyIDogMTsKCgogIHVuc2lnbmVkIGludCBuZWVkc19jb250ZXh0IDog MTsKCgogIHVuc2lnbmVkIGludCBjYWxsc19zZXRqbXAgOiAxOwoKCiAgdW5zaWduZWQgaW50 IGNhbGxzX2xvbmdqbXAgOiAxOwoKCgogIHVuc2lnbmVkIGludCBjYWxsc19hbGxvY2EgOiAx OwoKCiAgdW5zaWduZWQgaW50IGNhbGxzX2VoX3JldHVybiA6IDE7CgoKCiAgdW5zaWduZWQg aW50IGhhc19ub25sb2NhbF9sYWJlbCA6IDE7CgoKCiAgdW5zaWduZWQgaW50IGhhc19ub25s b2NhbF9nb3RvIDogMTsKCgogIHVuc2lnbmVkIGludCBjb250YWluc19mdW5jdGlvbnMgOiAx OwoKCiAgdW5zaWduZWQgaW50IGhhc19jb21wdXRlZF9qdW1wIDogMTsKCgoKCiAgdW5zaWdu ZWQgaW50IGlzX3RodW5rIDogMTsKCgoKICB1bnNpZ25lZCBpbnQgaW5zdHJ1bWVudF9lbnRy eV9leGl0IDogMTsKCgogIHVuc2lnbmVkIGludCBwcm9maWxlIDogMTsKCgoKICB1bnNpZ25l ZCBpbnQgbGltaXRfc3RhY2sgOiAxOwoKCgogIHVuc2lnbmVkIGludCB2YXJhcmdzIDogMTsK CgoKICB1bnNpZ25lZCBpbnQgc3RkYXJnIDogMTsKCgoKCgogIHVuc2lnbmVkIGludCB4X3do b2xlX2Z1bmN0aW9uX21vZGVfcCA6IDE7CiMgNDY4ICJmdW5jdGlvbi5oIgogIHVuc2lnbmVk IGludCB4X2RvbnRfc2F2ZV9wZW5kaW5nX3NpemVzX3AgOiAxOwoKCiAgdW5zaWduZWQgaW50 IHVzZXNfY29uc3RfcG9vbCA6IDE7CgoKICB1bnNpZ25lZCBpbnQgdXNlc19waWNfb2Zmc2V0 X3RhYmxlIDogMTsKCgogIHVuc2lnbmVkIGludCB1c2VzX2VoX2xzZGEgOiAxOwoKCiAgdW5z aWduZWQgaW50IGFyZ19wb2ludGVyX3NhdmVfYXJlYV9pbml0IDogMTsKfTsKCgpleHRlcm4g c3RydWN0IGZ1bmN0aW9uICpjZnVuOwoKCmV4dGVybiBpbnQgdmlydHVhbHNfaW5zdGFudGlh dGVkOwoKCiNkZWZpbmUgY3VycmVudF9mdW5jdGlvbl9uYW1lIChjZnVuLT5uYW1lKQojZGVm aW5lIGN1cnJlbnRfZnVuY3Rpb25fcG9wc19hcmdzIChjZnVuLT5wb3BzX2FyZ3MpCiNkZWZp bmUgY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX3N0cnVjdCAoY2Z1bi0+cmV0dXJuc19zdHJ1 Y3QpCiNkZWZpbmUgY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX3BjY19zdHJ1Y3QgKGNmdW4t PnJldHVybnNfcGNjX3N0cnVjdCkKI2RlZmluZSBjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNf cG9pbnRlciAoY2Z1bi0+cmV0dXJuc19wb2ludGVyKQojZGVmaW5lIGN1cnJlbnRfZnVuY3Rp b25fbmVlZHNfY29udGV4dCAoY2Z1bi0+bmVlZHNfY29udGV4dCkKI2RlZmluZSBjdXJyZW50 X2Z1bmN0aW9uX2NhbGxzX3NldGptcCAoY2Z1bi0+Y2FsbHNfc2V0am1wKQojZGVmaW5lIGN1 cnJlbnRfZnVuY3Rpb25fY2FsbHNfYWxsb2NhIChjZnVuLT5jYWxsc19hbGxvY2EpCiNkZWZp bmUgY3VycmVudF9mdW5jdGlvbl9jYWxsc19sb25nam1wIChjZnVuLT5jYWxsc19sb25nam1w KQojZGVmaW5lIGN1cnJlbnRfZnVuY3Rpb25fY2FsbHNfZWhfcmV0dXJuIChjZnVuLT5jYWxs c19laF9yZXR1cm4pCiNkZWZpbmUgY3VycmVudF9mdW5jdGlvbl9oYXNfY29tcHV0ZWRfanVt cCAoY2Z1bi0+aGFzX2NvbXB1dGVkX2p1bXApCiNkZWZpbmUgY3VycmVudF9mdW5jdGlvbl9j b250YWluc19mdW5jdGlvbnMgKGNmdW4tPmNvbnRhaW5zX2Z1bmN0aW9ucykKI2RlZmluZSBj dXJyZW50X2Z1bmN0aW9uX2lzX3RodW5rIChjZnVuLT5pc190aHVuaykKI2RlZmluZSBjdXJy ZW50X2Z1bmN0aW9uX2FyZ3NfaW5mbyAoY2Z1bi0+YXJnc19pbmZvKQojZGVmaW5lIGN1cnJl bnRfZnVuY3Rpb25fYXJnc19zaXplIChjZnVuLT5hcmdzX3NpemUpCiNkZWZpbmUgY3VycmVu dF9mdW5jdGlvbl9wcmV0ZW5kX2FyZ3Nfc2l6ZSAoY2Z1bi0+cHJldGVuZF9hcmdzX3NpemUp CiNkZWZpbmUgY3VycmVudF9mdW5jdGlvbl9vdXRnb2luZ19hcmdzX3NpemUgKGNmdW4tPm91 dGdvaW5nX2FyZ3Nfc2l6ZSkKI2RlZmluZSBjdXJyZW50X2Z1bmN0aW9uX2FyZ19vZmZzZXRf cnR4IChjZnVuLT5hcmdfb2Zmc2V0X3J0eCkKI2RlZmluZSBjdXJyZW50X2Z1bmN0aW9uX3Zh cmFyZ3MgKGNmdW4tPnZhcmFyZ3MpCiNkZWZpbmUgY3VycmVudF9mdW5jdGlvbl9zdGRhcmcg KGNmdW4tPnN0ZGFyZykKI2RlZmluZSBjdXJyZW50X2Z1bmN0aW9uX2ludGVybmFsX2FyZ19w b2ludGVyIChjZnVuLT5pbnRlcm5hbF9hcmdfcG9pbnRlcikKI2RlZmluZSBjdXJyZW50X2Z1 bmN0aW9uX3JldHVybl9ydHggKGNmdW4tPnJldHVybl9ydHgpCiNkZWZpbmUgY3VycmVudF9m dW5jdGlvbl9pbnN0cnVtZW50X2VudHJ5X2V4aXQgKGNmdW4tPmluc3RydW1lbnRfZW50cnlf ZXhpdCkKI2RlZmluZSBjdXJyZW50X2Z1bmN0aW9uX3Byb2ZpbGUgKGNmdW4tPnByb2ZpbGUp CiNkZWZpbmUgY3VycmVudF9mdW5jdGlvbl9wcm9maWxlX2xhYmVsX25vIChjZnVuLT5wcm9m aWxlX2xhYmVsX25vKQojZGVmaW5lIGN1cnJlbnRfZnVuY3Rpb25fbGltaXRfc3RhY2sgKGNm dW4tPmxpbWl0X3N0YWNrKQojZGVmaW5lIGN1cnJlbnRfZnVuY3Rpb25fdXNlc19waWNfb2Zm c2V0X3RhYmxlIChjZnVuLT51c2VzX3BpY19vZmZzZXRfdGFibGUpCiNkZWZpbmUgY3VycmVu dF9mdW5jdGlvbl91c2VzX2NvbnN0X3Bvb2wgKGNmdW4tPnVzZXNfY29uc3RfcG9vbCkKI2Rl ZmluZSBjdXJyZW50X2Z1bmN0aW9uX2Nhbm5vdF9pbmxpbmUgKGNmdW4tPmNhbm5vdF9pbmxp bmUpCiNkZWZpbmUgY3VycmVudF9mdW5jdGlvbl9lcGlsb2d1ZV9kZWxheV9saXN0IChjZnVu LT5lcGlsb2d1ZV9kZWxheV9saXN0KQojZGVmaW5lIGN1cnJlbnRfZnVuY3Rpb25faGFzX25v bmxvY2FsX2xhYmVsIChjZnVuLT5oYXNfbm9ubG9jYWxfbGFiZWwpCiNkZWZpbmUgY3VycmVu dF9mdW5jdGlvbl9oYXNfbm9ubG9jYWxfZ290byAoY2Z1bi0+aGFzX25vbmxvY2FsX2dvdG8p CgojZGVmaW5lIG1heF9wYXJtX3JlZyAoY2Z1bi0+eF9tYXhfcGFybV9yZWcpCiNkZWZpbmUg cGFybV9yZWdfc3RhY2tfbG9jIChjZnVuLT54X3Bhcm1fcmVnX3N0YWNrX2xvYykKI2RlZmlu ZSBjbGVhbnVwX2xhYmVsIChjZnVuLT54X2NsZWFudXBfbGFiZWwpCiNkZWZpbmUgcmV0dXJu X2xhYmVsIChjZnVuLT54X3JldHVybl9sYWJlbCkKI2RlZmluZSBzYXZlX2V4cHJfcmVncyAo Y2Z1bi0+eF9zYXZlX2V4cHJfcmVncykKI2RlZmluZSBzdGFja19zbG90X2xpc3QgKGNmdW4t Pnhfc3RhY2tfc2xvdF9saXN0KQojZGVmaW5lIHBhcm1fYmlydGhfaW5zbiAoY2Z1bi0+eF9w YXJtX2JpcnRoX2luc24pCiNkZWZpbmUgZnJhbWVfb2Zmc2V0IChjZnVuLT54X2ZyYW1lX29m ZnNldCkKI2RlZmluZSB0YWlsX3JlY3Vyc2lvbl9sYWJlbCAoY2Z1bi0+eF90YWlsX3JlY3Vy c2lvbl9sYWJlbCkKI2RlZmluZSB0YWlsX3JlY3Vyc2lvbl9yZWVudHJ5IChjZnVuLT54X3Rh aWxfcmVjdXJzaW9uX3JlZW50cnkpCiNkZWZpbmUgYXJnX3BvaW50ZXJfc2F2ZV9hcmVhIChj ZnVuLT54X2FyZ19wb2ludGVyX3NhdmVfYXJlYSkKI2RlZmluZSBydGxfZXhwcl9jaGFpbiAo Y2Z1bi0+eF9ydGxfZXhwcl9jaGFpbikKI2RlZmluZSBsYXN0X3Bhcm1faW5zbiAoY2Z1bi0+ eF9sYXN0X3Bhcm1faW5zbikKI2RlZmluZSBjb250ZXh0X2Rpc3BsYXkgKGNmdW4tPnhfY29u dGV4dF9kaXNwbGF5KQojZGVmaW5lIHRyYW1wb2xpbmVfbGlzdCAoY2Z1bi0+eF90cmFtcG9s aW5lX2xpc3QpCiNkZWZpbmUgZnVuY3Rpb25fY2FsbF9jb3VudCAoY2Z1bi0+eF9mdW5jdGlv bl9jYWxsX2NvdW50KQojZGVmaW5lIHRlbXBfc2xvdHMgKGNmdW4tPnhfdGVtcF9zbG90cykK I2RlZmluZSB0ZW1wX3Nsb3RfbGV2ZWwgKGNmdW4tPnhfdGVtcF9zbG90X2xldmVsKQojZGVm aW5lIHRhcmdldF90ZW1wX3Nsb3RfbGV2ZWwgKGNmdW4tPnhfdGFyZ2V0X3RlbXBfc2xvdF9s ZXZlbCkKI2RlZmluZSB2YXJfdGVtcF9zbG90X2xldmVsIChjZnVuLT54X3Zhcl90ZW1wX3Ns b3RfbGV2ZWwpCiNkZWZpbmUgbm9ubG9jYWxfbGFiZWxzIChjZnVuLT54X25vbmxvY2FsX2xh YmVscykKI2RlZmluZSBub25sb2NhbF9nb3RvX2hhbmRsZXJfc2xvdHMgKGNmdW4tPnhfbm9u bG9jYWxfZ290b19oYW5kbGVyX3Nsb3RzKQojZGVmaW5lIG5vbmxvY2FsX2dvdG9faGFuZGxl cl9sYWJlbHMgKGNmdW4tPnhfbm9ubG9jYWxfZ290b19oYW5kbGVyX2xhYmVscykKI2RlZmlu ZSBub25sb2NhbF9nb3RvX3N0YWNrX2xldmVsIChjZnVuLT54X25vbmxvY2FsX2dvdG9fc3Rh Y2tfbGV2ZWwpCgoKZXh0ZXJuIHRyZWUgaW5saW5lX2Z1bmN0aW9uX2RlY2w7CgoKCnN0cnVj dCBmdW5jdGlvbiAqZmluZF9mdW5jdGlvbl9kYXRhICh0cmVlKTsKCgpleHRlcm4gdm9pZCBp ZGVudGlmeV9ibG9ja3MgKHZvaWQpOwoKCgpleHRlcm4gdm9pZCByZW9yZGVyX2Jsb2NrcyAo dm9pZCk7CgoKZXh0ZXJuIHZvaWQgbnVtYmVyX2Jsb2NrcyAodHJlZSk7CgoKCgpleHRlcm4g bG9uZyBnZXRfZnJhbWVfc2l6ZSAodm9pZCk7CgpleHRlcm4gbG9uZyBnZXRfZnVuY19mcmFt ZV9zaXplIChzdHJ1Y3QgZnVuY3Rpb24gKik7CgoKCmV4dGVybiB2b2lkICgqaW5pdF9tYWNo aW5lX3N0YXR1cykgKHN0cnVjdCBmdW5jdGlvbiAqKTsKZXh0ZXJuIHZvaWQgKCpmcmVlX21h Y2hpbmVfc3RhdHVzKSAoc3RydWN0IGZ1bmN0aW9uICopOwoKCgpleHRlcm4gdm9pZCAoKm1h cmtfbWFjaGluZV9zdGF0dXMpIChzdHJ1Y3QgZnVuY3Rpb24gKik7CgoKZXh0ZXJuIHZvaWQg KCppbml0X2xhbmdfc3RhdHVzKSAoc3RydWN0IGZ1bmN0aW9uICopOwpleHRlcm4gdm9pZCAo Km1hcmtfbGFuZ19zdGF0dXMpIChzdHJ1Y3QgZnVuY3Rpb24gKik7CmV4dGVybiB2b2lkICgq c2F2ZV9sYW5nX3N0YXR1cykgKHN0cnVjdCBmdW5jdGlvbiAqKTsKZXh0ZXJuIHZvaWQgKCpy ZXN0b3JlX2xhbmdfc3RhdHVzKSAoc3RydWN0IGZ1bmN0aW9uICopOwpleHRlcm4gdm9pZCAo KmZyZWVfbGFuZ19zdGF0dXMpIChzdHJ1Y3QgZnVuY3Rpb24gKik7CgoKZXh0ZXJuIHZvaWQg cmVzdG9yZV9lbWl0X3N0YXR1cyAoc3RydWN0IGZ1bmN0aW9uICopOwpleHRlcm4gdm9pZCBm cmVlX2FmdGVyX3BhcnNpbmcgKHN0cnVjdCBmdW5jdGlvbiAqKTsKZXh0ZXJuIHZvaWQgZnJl ZV9hZnRlcl9jb21waWxhdGlvbiAoc3RydWN0IGZ1bmN0aW9uICopOwoKZXh0ZXJuIHZvaWQg aW5pdF92YXJhc21fc3RhdHVzIChzdHJ1Y3QgZnVuY3Rpb24gKik7CmV4dGVybiB2b2lkIGZy ZWVfdmFyYXNtX3N0YXR1cyAoc3RydWN0IGZ1bmN0aW9uICopOwpleHRlcm4gdm9pZCBmcmVl X2VtaXRfc3RhdHVzIChzdHJ1Y3QgZnVuY3Rpb24gKik7CmV4dGVybiB2b2lkIGZyZWVfc3Rt dF9zdGF0dXMgKHN0cnVjdCBmdW5jdGlvbiAqKTsKZXh0ZXJuIHZvaWQgZnJlZV9laF9zdGF0 dXMgKHN0cnVjdCBmdW5jdGlvbiAqKTsKZXh0ZXJuIHZvaWQgZnJlZV9leHByX3N0YXR1cyAo c3RydWN0IGZ1bmN0aW9uICopOwoKZXh0ZXJuIHJ0eCBnZXRfZmlyc3RfYmxvY2tfYmVnICh2 b2lkKTsKCgpleHRlcm4gdm9pZCBkaWRkbGVfcmV0dXJuX3ZhbHVlICh2b2lkICgqKShydHgs IHZvaWQqKSwgdm9pZCopOwpleHRlcm4gdm9pZCBjbG9iYmVyX3JldHVybl9yZWdpc3RlciAo dm9pZCk7CmV4dGVybiB2b2lkIHVzZV9yZXR1cm5fcmVnaXN0ZXIgKHZvaWQpOwoKCmV4dGVy biBydHggZ2V0X2FyZ19wb2ludGVyX3NhdmVfYXJlYSAoc3RydWN0IGZ1bmN0aW9uICopOwoK ZXh0ZXJuIHZvaWQgaW5pdF92aXJ0dWFsX3JlZ3MgKHN0cnVjdCBlbWl0X3N0YXR1cyAqKTsK CgpleHRlcm4gdm9pZCBpbml0X2Z1bmN0aW9uX29uY2UgKHZvaWQpOwojIDM0ICJyZWdyZW5h bWUuYyIgMgojIDEgInJlY29nLmgiIDEKIyAyMyAicmVjb2cuaCIKI2RlZmluZSBNQVhfUkVD T0dfQUxURVJOQVRJVkVTIDMwCiNkZWZpbmUgcmVjb2dfbWVtb2l6ZWQoSSkgKElOU05fQ09E RSAoSSkgPj0gMCA/IElOU05fQ09ERSAoSSkgOiByZWNvZ19tZW1vaXplZF8xIChJKSkKCgoK ZW51bSBvcF90eXBlIHsKICBPUF9JTiwKICBPUF9PVVQsCiAgT1BfSU5PVVQKfTsKCnN0cnVj dCBvcGVyYW5kX2FsdGVybmF0aXZlCnsKCgogIGNvbnN0IGNoYXIgKmNvbnN0cmFpbnQ7CgoK ICBlbnVtIHJlZ19jbGFzcyBjbGFzczsKCgoKICB1bnNpZ25lZCBpbnQgcmVqZWN0OwoKCiAg aW50IG1hdGNoZXM7CgoKCiAgaW50IG1hdGNoZWQ7CgoKICB1bnNpZ25lZCBpbnQgZWFybHlj bG9iYmVyOjE7CgogIHVuc2lnbmVkIGludCBtZW1vcnlfb2s6MTsKCiAgdW5zaWduZWQgaW50 IG9mZm1lbV9vazoxOwoKICB1bnNpZ25lZCBpbnQgbm9ub2ZmbWVtX29rOjE7CgogIHVuc2ln bmVkIGludCBkZWNtZW1fb2s6MTsKCiAgdW5zaWduZWQgaW50IGluY21lbV9vazoxOwoKICB1 bnNpZ25lZCBpbnQgaXNfYWRkcmVzczoxOwoKCiAgdW5zaWduZWQgaW50IGFueXRoaW5nX29r OjE7Cn07CgoKZXh0ZXJuIHZvaWQgaW5pdF9yZWNvZyAodm9pZCk7CmV4dGVybiB2b2lkIGlu aXRfcmVjb2dfbm9fdm9sYXRpbGUgKHZvaWQpOwpleHRlcm4gaW50IHJlY29nX21lbW9pemVk XzEgKHJ0eCk7CmV4dGVybiBpbnQgY2hlY2tfYXNtX29wZXJhbmRzIChydHgpOwpleHRlcm4g aW50IGFzbV9vcGVyYW5kX29rIChydHgsIGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgdmFs aWRhdGVfY2hhbmdlIChydHgsIHJ0eCAqLCBydHgsIGludCk7CmV4dGVybiBpbnQgaW5zbl9p bnZhbGlkX3AgKHJ0eCk7CmV4dGVybiBpbnQgYXBwbHlfY2hhbmdlX2dyb3VwICh2b2lkKTsK ZXh0ZXJuIGludCBudW1fdmFsaWRhdGVkX2NoYW5nZXMgKHZvaWQpOwpleHRlcm4gdm9pZCBj YW5jZWxfY2hhbmdlcyAoaW50KTsKZXh0ZXJuIGludCBjb25zdHJhaW5fb3BlcmFuZHMgKGlu dCk7CmV4dGVybiBpbnQgY29uc3RyYWluX29wZXJhbmRzX2NhY2hlZCAoaW50KTsKZXh0ZXJu IGludCBtZW1vcnlfYWRkcmVzc19wIChlbnVtIG1hY2hpbmVfbW9kZSwgcnR4KTsKZXh0ZXJu IGludCBzdHJpY3RfbWVtb3J5X2FkZHJlc3NfcCAoZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7 CmV4dGVybiBpbnQgdmFsaWRhdGVfcmVwbGFjZV9ydHhfc3ViZXhwIChydHgsIHJ0eCwgcnR4 LCBydHggKik7CmV4dGVybiBpbnQgdmFsaWRhdGVfcmVwbGFjZV9ydHggKHJ0eCwgcnR4LCBy dHgpOwpleHRlcm4gdm9pZCB2YWxpZGF0ZV9yZXBsYWNlX3J0eF9ncm91cCAocnR4LCBydHgs IHJ0eCk7CmV4dGVybiBpbnQgdmFsaWRhdGVfcmVwbGFjZV9zcmMgKHJ0eCwgcnR4LCBydHgp OwoKCgpleHRlcm4gaW50IHJlZ19maXRzX2NsYXNzX3AgKHJ0eCwgZW51bSByZWdfY2xhc3Ms IGludCwgZW51bSBtYWNoaW5lX21vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CmV4dGVybiBydHggKmZpbmRfc2luZ2xlX3VzZSAocnR4LCBydHgsIHJ0eCAqKTsKCmV4 dGVybiBpbnQgZ2VuZXJhbF9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKZXh0 ZXJuIGludCBhZGRyZXNzX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRl cm4gaW50IHJlZ2lzdGVyX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUpOwpleHRl cm4gaW50IHBtb2RlX3JlZ2lzdGVyX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUp OwpleHRlcm4gaW50IHNjcmF0Y2hfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7 CmV4dGVybiBpbnQgaW1tZWRpYXRlX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5lX21vZGUp OwpleHRlcm4gaW50IGNvbnN0X2ludF9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2Rl KTsKZXh0ZXJuIGludCBjb25zdF9kb3VibGVfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVf bW9kZSk7CmV4dGVybiBpbnQgbm9uaW1tZWRpYXRlX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNo aW5lX21vZGUpOwpleHRlcm4gaW50IG5vbm1lbW9yeV9vcGVyYW5kIChydHgsIGVudW0gbWFj aGluZV9tb2RlKTsKZXh0ZXJuIGludCBwdXNoX29wZXJhbmQgKHJ0eCwgZW51bSBtYWNoaW5l X21vZGUpOwpleHRlcm4gaW50IHBvcF9vcGVyYW5kIChydHgsIGVudW0gbWFjaGluZV9tb2Rl KTsKZXh0ZXJuIGludCBtZW1vcnlfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7 CmV4dGVybiBpbnQgaW5kaXJlY3Rfb3BlcmFuZCAocnR4LCBlbnVtIG1hY2hpbmVfbW9kZSk7 CmV4dGVybiBpbnQgbW9kZV9pbmRlcGVuZGVudF9vcGVyYW5kIChydHgsIGVudW0gbWFjaGlu ZV9tb2RlKTsKZXh0ZXJuIGludCBjb21wYXJpc29uX29wZXJhdG9yIChydHgsIGVudW0gbWFj aGluZV9tb2RlKTsKCmV4dGVybiBpbnQgb2Zmc2V0dGFibGVfbWVtcmVmX3AgKHJ0eCk7CmV4 dGVybiBpbnQgb2Zmc2V0dGFibGVfbm9uc3RyaWN0X21lbXJlZl9wIChydHgpOwpleHRlcm4g aW50IG9mZnNldHRhYmxlX2FkZHJlc3NfcCAoaW50LCBlbnVtIG1hY2hpbmVfbW9kZSwgcnR4 KTsKZXh0ZXJuIGludCBtb2RlX2RlcGVuZGVudF9hZGRyZXNzX3AgKHJ0eCk7CgpleHRlcm4g aW50IHJlY29nIChydHgsIHJ0eCwgaW50ICopOwpleHRlcm4gdm9pZCBhZGRfY2xvYmJlcnMg KHJ0eCwgaW50KTsKZXh0ZXJuIGludCBhZGRlZF9jbG9iYmVyc19oYXJkX3JlZ19wIChpbnQp OwpleHRlcm4gdm9pZCBpbnNuX2V4dHJhY3QgKHJ0eCk7CmV4dGVybiB2b2lkIGV4dHJhY3Rf aW5zbiAocnR4KTsKZXh0ZXJuIHZvaWQgZXh0cmFjdF9jb25zdHJhaW5faW5zbl9jYWNoZWQg KHJ0eCk7CmV4dGVybiB2b2lkIGV4dHJhY3RfaW5zbl9jYWNoZWQgKHJ0eCk7CmV4dGVybiB2 b2lkIHByZXByb2Nlc3NfY29uc3RyYWludHMgKHZvaWQpOwpleHRlcm4gcnR4IHBlZXAyX25l eHRfaW5zbiAoaW50KTsKZXh0ZXJuIGludCBwZWVwMl9yZWdub19kZWFkX3AgKGludCwgaW50 KTsKZXh0ZXJuIGludCBwZWVwMl9yZWdfZGVhZF9wIChpbnQsIHJ0eCk7CgpleHRlcm4gcnR4 IHBlZXAyX2ZpbmRfZnJlZV9yZWdpc3RlciAoaW50LCBpbnQsIGNvbnN0IGNoYXIgKiwgZW51 bSBtYWNoaW5lX21vZGUsIEhBUkRfUkVHX0VMVF9UWVBFICopCgogICAgICAgICAgICAgICAg ICAgICAgIDsKCmV4dGVybiB2b2lkIHBlZXBob2xlMl9vcHRpbWl6ZSAoRklMRSAqKTsKZXh0 ZXJuIHJ0eCBwZWVwaG9sZTJfaW5zbnMgKHJ0eCwgcnR4LCBpbnQgKik7CgoKZXh0ZXJuIGlu dCB2b2xhdGlsZV9vazsKCgoKZXh0ZXJuIGludCB3aGljaF9hbHRlcm5hdGl2ZTsKCgoKc3Ry dWN0IHJlY29nX2RhdGEKewoKCgoKCgoKICBydHggb3BlcmFuZFszMF07CgoKICBydHggKm9w ZXJhbmRfbG9jWzMwXTsKCgogIGNvbnN0IGNoYXIgKmNvbnN0cmFpbnRzWzMwXTsKCgogIGVu dW0gbWFjaGluZV9tb2RlIG9wZXJhbmRfbW9kZVszMF07CgoKICBlbnVtIG9wX3R5cGUgb3Bl cmFuZF90eXBlWzMwXTsKCgoKICBydHggKmR1cF9sb2NbNF07CgoKCiAgY2hhciBkdXBfbnVt WzRdOwojIDE5MSAicmVjb2cuaCIKICBjaGFyIG5fb3BlcmFuZHM7CgoKICBjaGFyIG5fZHVw czsKCgogIGNoYXIgbl9hbHRlcm5hdGl2ZXM7CgoKICBydHggaW5zbjsKfTsKCmV4dGVybiBz dHJ1Y3QgcmVjb2dfZGF0YSByZWNvZ19kYXRhOwoKCgpleHRlcm4gc3RydWN0IG9wZXJhbmRf YWx0ZXJuYXRpdmUgcmVjb2dfb3BfYWx0WzMwXVszMF07CgoKCgp0eXBlZGVmIGludCAoKmlu c25fb3BlcmFuZF9wcmVkaWNhdGVfZm4pIChydHgsIGVudW0gbWFjaGluZV9tb2RlKTsKdHlw ZWRlZiBjb25zdCBjaGFyICogKCppbnNuX291dHB1dF9mbikgKHJ0eCAqLCBydHgpOwp0eXBl ZGVmIHJ0eCAoKmluc25fZ2VuX2ZuKSAocnR4LCAuLi4pOwoKc3RydWN0IGluc25fb3BlcmFu ZF9kYXRhCnsKICBjb25zdCBpbnNuX29wZXJhbmRfcHJlZGljYXRlX2ZuIHByZWRpY2F0ZTsK CiAgY29uc3QgY2hhciAqY29uc3QgY29uc3RyYWludDsKCiAgY29uc3QgdW5zaWduZWQgaW50 IG1vZGUgOiAxNjsKCiAgY29uc3QgY2hhciBzdHJpY3RfbG93OwoKICBjb25zdCBjaGFyIGVs aW1pbmFibGU7Cn07CgoKCiNkZWZpbmUgSU5TTl9PVVRQVVRfRk9STUFUX05PTkUgMAojZGVm aW5lIElOU05fT1VUUFVUX0ZPUk1BVF9TSU5HTEUgMQojZGVmaW5lIElOU05fT1VUUFVUX0ZP Uk1BVF9NVUxUSSAyCiNkZWZpbmUgSU5TTl9PVVRQVVRfRk9STUFUX0ZVTkNUSU9OIDMKCnN0 cnVjdCBpbnNuX2RhdGEKewogIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWU7CiAgY29uc3Qgdm9p ZCAqIG91dHB1dDsKICBjb25zdCBpbnNuX2dlbl9mbiBnZW5mdW47CiAgY29uc3Qgc3RydWN0 IGluc25fb3BlcmFuZF9kYXRhICpjb25zdCBvcGVyYW5kOwoKICBjb25zdCBjaGFyIG5fb3Bl cmFuZHM7CiAgY29uc3QgY2hhciBuX2R1cHM7CiAgY29uc3QgY2hhciBuX2FsdGVybmF0aXZl czsKICBjb25zdCBjaGFyIG91dHB1dF9mb3JtYXQ7Cn07CgpleHRlcm4gY29uc3Qgc3RydWN0 IGluc25fZGF0YSBpbnNuX2RhdGFbXTsKIyAzNSAicmVncmVuYW1lLmMiIDIKIyAxICJmbGFn cy5oIiAxCiMgMjMgImZsYWdzLmgiCiNkZWZpbmUgR0NDX0ZMQUdTX0ggCgoKZXh0ZXJuIGNv bnN0IGNoYXIgKm1haW5faW5wdXRfZmlsZW5hbWU7CgplbnVtIGRlYnVnX2luZm9fdHlwZQp7 CiAgTk9fREVCVUcsCiAgREJYX0RFQlVHLAogIFNEQl9ERUJVRywKICBEV0FSRl9ERUJVRywK ICBEV0FSRjJfREVCVUcsCiAgWENPRkZfREVCVUcsCiAgVk1TX0RFQlVHLAogIFZNU19BTkRf RFdBUkYyX0RFQlVHCgp9OwoKCmV4dGVybiBlbnVtIGRlYnVnX2luZm9fdHlwZSB3cml0ZV9z eW1ib2xzOwoKZW51bSBkZWJ1Z19pbmZvX2xldmVsCnsKICBESU5GT19MRVZFTF9OT05FLAog IERJTkZPX0xFVkVMX1RFUlNFLAogIERJTkZPX0xFVkVMX05PUk1BTCwKICBESU5GT19MRVZF TF9WRVJCT1NFCn07CgoKZXh0ZXJuIGVudW0gZGVidWdfaW5mb19sZXZlbCBkZWJ1Z19pbmZv X2xldmVsOwoKCgpleHRlcm4gaW50IHVzZV9nbnVfZGVidWdfaW5mb19leHRlbnNpb25zOwoK CgpleHRlcm4gaW50IG9wdGltaXplOwoKCgpleHRlcm4gaW50IG9wdGltaXplX3NpemU7CgoK CgpleHRlcm4gaW50IHF1aWV0X2ZsYWc7CgoKCmV4dGVybiBpbnQgdGltZV9yZXBvcnQ7CgoK CgpleHRlcm4gaW50IG1lbV9yZXBvcnQ7CgoKCmV4dGVybiBpbnQgaW5oaWJpdF93YXJuaW5n czsKCgoKZXh0ZXJuIGludCB3YXJuX3N5c3RlbV9oZWFkZXJzOwoKCgpleHRlcm4gaW50IGV4 dHJhX3dhcm5pbmdzOwoKCgoKCmV4dGVybiB2b2lkIHNldF9XdW51c2VkIChpbnQgc2V0dGlu Zyk7CgpleHRlcm4gaW50IHdhcm5fdW51c2VkX2Z1bmN0aW9uOwpleHRlcm4gaW50IHdhcm5f dW51c2VkX2xhYmVsOwpleHRlcm4gaW50IHdhcm5fdW51c2VkX3BhcmFtZXRlcjsKZXh0ZXJu IGludCB3YXJuX3VudXNlZF92YXJpYWJsZTsKZXh0ZXJuIGludCB3YXJuX3VudXNlZF92YWx1 ZTsKCgoKZXh0ZXJuIGludCB3YXJuX25vdHJlYWNoZWQ7CgoKCmV4dGVybiBpbnQgd2Fybl9p bmxpbmU7CgoKCmV4dGVybiBpbnQgd2Fybl91bmluaXRpYWxpemVkOwoKCgoKCgoKZXh0ZXJu IGludCB3YXJuX3Vua25vd25fcHJhZ21hczsKCgoKZXh0ZXJuIGludCB3YXJuX3NoYWRvdzsK CgoKZXh0ZXJuIGludCB3YXJuX3N3aXRjaDsKCgoKCmV4dGVybiBpbnQgd2Fybl9yZXR1cm5f dHlwZTsKCgoKZXh0ZXJuIGludCB3YXJuX21pc3Npbmdfbm9yZXR1cm47CgoKCgoKZXh0ZXJu IGludCB3YXJuX2Nhc3RfYWxpZ247CgoKCgoKZXh0ZXJuIGludCB3YXJuX2xhcmdlcl90aGFu OwpleHRlcm4gbG9uZyBsYXJnZXJfdGhhbl9zaXplOwoKCgoKZXh0ZXJuIGludCB3YXJuX2Fn Z3JlZ2F0ZV9yZXR1cm47CgoKCmV4dGVybiBpbnQgd2Fybl9wYWNrZWQ7CgoKCmV4dGVybiBp bnQgd2Fybl9wYWRkZWQ7CgoKCmV4dGVybiBpbnQgd2Fybl9kaXNhYmxlZF9vcHRpbWl6YXRp b247CgoKCgpleHRlcm4gaW50IHdhcm5fZGVwcmVjYXRlZF9kZWNsOwoKCgpleHRlcm4gaW50 IHByb2ZpbGVfZmxhZzsKCgoKZXh0ZXJuIGludCBwcm9maWxlX2FyY19mbGFnOwoKCgpleHRl cm4gaW50IGZsYWdfdGVzdF9jb3ZlcmFnZTsKCgoKZXh0ZXJuIGludCBmbGFnX2JyYW5jaF9w cm9iYWJpbGl0aWVzOwoKCgpleHRlcm4gaW50IGZsYWdfcmVvcmRlcl9ibG9ja3M7CgoKCmV4 dGVybiBpbnQgZmxhZ19yZW5hbWVfcmVnaXN0ZXJzOwoKCgoKZXh0ZXJuIGludCBwZWRhbnRp YzsKCgoKCmV4dGVybiBpbnQgaW5fc3lzdGVtX2hlYWRlcjsKCgoKCmV4dGVybiBpbnQgZmxh Z19wcmludF9hc21fbmFtZTsKCgoKCgpleHRlcm4gaW50IGZsYWdfc2lnbmVkX2NoYXI7CgoK CmV4dGVybiBpbnQgZmxhZ19zaG9ydF9lbnVtczsKCgoKCgpleHRlcm4gaW50IGZsYWdfY2Fs bGVyX3NhdmVzOwoKCgpleHRlcm4gaW50IGZsYWdfcGNjX3N0cnVjdF9yZXR1cm47CgoKCgpl eHRlcm4gaW50IGZsYWdfZm9yY2VfbWVtOwoKCgoKZXh0ZXJuIGludCBmbGFnX2ZvcmNlX2Fk ZHI7CgoKCgpleHRlcm4gaW50IGZsYWdfZGVmZXJfcG9wOwoKCgoKZXh0ZXJuIGludCBmbGFn X2Zsb2F0X3N0b3JlOwoKCgpleHRlcm4gaW50IGZsYWdfc3RyZW5ndGhfcmVkdWNlOwoKCgoK CgpleHRlcm4gaW50IGZsYWdfdW5yb2xsX2xvb3BzOwoKCgoKZXh0ZXJuIGludCBmbGFnX3Vu cm9sbF9hbGxfbG9vcHM7CgoKCgpleHRlcm4gaW50IGZsYWdfbW92ZV9hbGxfbW92YWJsZXM7 CgoKCmV4dGVybiBpbnQgZmxhZ19wcmVmZXRjaF9sb29wX2FycmF5czsKCgoKCmV4dGVybiBp bnQgZmxhZ19yZWR1Y2VfYWxsX2dpdnM7CgoKCgpleHRlcm4gaW50IGZsYWdfY3NlX2ZvbGxv d19qdW1wczsKCgoKCmV4dGVybiBpbnQgZmxhZ19jc2Vfc2tpcF9ibG9ja3M7CgoKCmV4dGVy biBpbnQgZmxhZ19leHBlbnNpdmVfb3B0aW1pemF0aW9uczsKCgoKCmV4dGVybiBpbnQgZmxh Z193cml0YWJsZV9zdHJpbmdzOwoKCgoKCmV4dGVybiBpbnQgZmxhZ19ub19mdW5jdGlvbl9j c2U7CgoKCgpleHRlcm4gaW50IGZsYWdfb21pdF9mcmFtZV9wb2ludGVyOwoKCgpleHRlcm4g aW50IGZsYWdfbm9fcGVlcGhvbGU7CgoKCmV4dGVybiBpbnQgZmxhZ192b2xhdGlsZTsKCgoK ZXh0ZXJuIGludCBmbGFnX3ZvbGF0aWxlX2dsb2JhbDsKCgoKZXh0ZXJuIGludCBmbGFnX3Zv bGF0aWxlX3N0YXRpYzsKCgoKZXh0ZXJuIGludCBmbGFnX29wdGltaXplX3NpYmxpbmdfY2Fs bHM7CgoKCgpleHRlcm4gaW50IGZsYWdfZXJybm9fbWF0aDsKCgoKCgoKZXh0ZXJuIGludCBm bGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnM7CgoKCgoKZXh0ZXJuIGludCBmbGFnX3Ry YXBwaW5nX21hdGg7CgoKCgoKZXh0ZXJuIGludCBmbGFnX2NvbXBsZXhfZGl2aWRlX21ldGhv ZDsKCgoKZXh0ZXJuIGludCBmbGFnX3JlcnVuX2xvb3Bfb3B0OwoKCgoKZXh0ZXJuIGludCBm bGFnX2lubGluZV9mdW5jdGlvbnM7CgoKCgoKZXh0ZXJuIGludCBmbGFnX2tlZXBfaW5saW5l X2Z1bmN0aW9uczsKCgoKCgoKCmV4dGVybiBpbnQgZmxhZ19ub19pbmxpbmU7CgoKCgpleHRl cm4gaW50IGZsYWdfcmVhbGx5X25vX2lubGluZTsKCgoKZXh0ZXJuIGludCBmbGFnX3N5bnRh eF9vbmx5OwoKCgpleHRlcm4gaW50IGZsYWdfZ2VuX2F1eF9pbmZvOwoKCgpleHRlcm4gaW50 IGZsYWdfc2hhcmVkX2RhdGE7CgoKCgoKCmV4dGVybiBpbnQgZmxhZ19zY2hlZHVsZV9pbnNu czsKZXh0ZXJuIGludCBmbGFnX3NjaGVkdWxlX2luc25zX2FmdGVyX3JlbG9hZDsKIyA0MTgg ImZsYWdzLmgiCmV4dGVybiBpbnQgZmxhZ19zY2hlZHVsZV9pbnRlcmJsb2NrOwpleHRlcm4g aW50IGZsYWdfc2NoZWR1bGVfc3BlY3VsYXRpdmU7CmV4dGVybiBpbnQgZmxhZ19zY2hlZHVs ZV9zcGVjdWxhdGl2ZV9sb2FkOwpleHRlcm4gaW50IGZsYWdfc2NoZWR1bGVfc3BlY3VsYXRp dmVfbG9hZF9kYW5nZXJvdXM7CgoKCmV4dGVybiBpbnQgZmxhZ19icmFuY2hfb25fY291bnRf cmVnOwoKCgoKCmV4dGVybiBpbnQgZmxhZ19zaW5nbGVfcHJlY2lzaW9uX2NvbnN0YW50OwoK CgpleHRlcm4gaW50IGZsYWdfZGVsYXllZF9icmFuY2g7CgoKCgpleHRlcm4gaW50IGZsYWdf ZHVtcF91bm51bWJlcmVkOwoKCgoKCmV4dGVybiBpbnQgZmxhZ19wcmV0ZW5kX2Zsb2F0OwoK CgoKZXh0ZXJuIGludCBmbGFnX3BlZGFudGljX2Vycm9yczsKCgoKCmV4dGVybiBpbnQgZmxh Z19waWM7CgoKCgpleHRlcm4gaW50IGZsYWdfZXhjZXB0aW9uczsKCgoKZXh0ZXJuIGludCBm bGFnX3Vud2luZF90YWJsZXM7CgoKCmV4dGVybiBpbnQgZmxhZ19hc3luY2hyb25vdXNfdW53 aW5kX3RhYmxlczsKCgoKCmV4dGVybiBpbnQgZmxhZ19ub19jb21tb247CgoKCgoKZXh0ZXJu IGludCBmbGFnX2luaGliaXRfc2l6ZV9kaXJlY3RpdmU7CgoKCgpleHRlcm4gaW50IGZsYWdf ZnVuY3Rpb25fc2VjdGlvbnM7CgoKCmV4dGVybiBpbnQgZmxhZ19kYXRhX3NlY3Rpb25zOwoj IDQ5OCAiZmxhZ3MuaCIKZXh0ZXJuIGludCBmbGFnX3ZlcmJvc2VfYXNtOwojIDUwNyAiZmxh Z3MuaCIKZXh0ZXJuIGludCBmbGFnX2RlYnVnX2FzbTsKCmV4dGVybiBpbnQgZmxhZ19kdW1w X3J0bF9pbl9hc207CgoKCmV4dGVybiBpbnQgZmxhZ19nbnVfbGlua2VyOwoKCmV4dGVybiBp bnQgZmxhZ19wYWNrX3N0cnVjdDsKIyA1MjUgImZsYWdzLmgiCmV4dGVybiBpbnQgZmxhZ19h cmd1bWVudF9ub2FsaWFzOwoKCgoKCmV4dGVybiBpbnQgZmxhZ19zdHJpY3RfYWxpYXNpbmc7 CgoKCmV4dGVybiBpbnQgZmxhZ19zdGFja19jaGVjazsKCgpleHRlcm4gaW50IGZsYWdfcmVn bW92ZTsKCgpleHRlcm4gaW50IGZsYWdfaW5zdHJ1bWVudF9mdW5jdGlvbl9lbnRyeV9leGl0 OwoKCmV4dGVybiBpbnQgZmxhZ19wZWVwaG9sZTI7CgoKZXh0ZXJuIGludCBmbGFnX2d1ZXNz X2JyYW5jaF9wcm9iOwoKCgoKCgpleHRlcm4gaW50IGZsYWdfYm91bmRlZF9wb2ludGVyczsK CgoKCgoKCmV4dGVybiBpbnQgZmxhZ19ib3VuZHNfY2hlY2s7CgoKCgpleHRlcm4gaW50IGZs YWdfbWVyZ2VfY29uc3RhbnRzOwoKCgoKZXh0ZXJuIGludCBmbGFnX3JlbnVtYmVyX2luc25z OwoKCgoKCgoKZXh0ZXJuIGludCBmcmFtZV9wb2ludGVyX25lZWRlZDsKCgoKZXh0ZXJuIGlu dCBmbGFnX3RyYXB2OwoKCmV4dGVybiBpbnQgZ19zd2l0Y2hfdmFsdWU7CmV4dGVybiBpbnQg Z19zd2l0Y2hfc2V0OwoKCgoKCgpleHRlcm4gaW50IGFsaWduX2xvb3BzOwpleHRlcm4gaW50 IGFsaWduX2xvb3BzX2xvZzsKZXh0ZXJuIGludCBhbGlnbl9sb29wc19tYXhfc2tpcDsKZXh0 ZXJuIGludCBhbGlnbl9qdW1wczsKZXh0ZXJuIGludCBhbGlnbl9qdW1wc19sb2c7CmV4dGVy biBpbnQgYWxpZ25fanVtcHNfbWF4X3NraXA7CmV4dGVybiBpbnQgYWxpZ25fbGFiZWxzOwpl eHRlcm4gaW50IGFsaWduX2xhYmVsc19sb2c7CmV4dGVybiBpbnQgYWxpZ25fbGFiZWxzX21h eF9za2lwOwpleHRlcm4gaW50IGFsaWduX2Z1bmN0aW9uczsKZXh0ZXJuIGludCBhbGlnbl9m dW5jdGlvbnNfbG9nOwoKCmV4dGVybiBpbnQgZHVtcF9mb3JfZ3JhcGg7CgoKZW51bSBncmFw aF9kdW1wX3R5cGVzCnsKICBub19ncmFwaCA9IDAsCiAgdmNnCn07CmV4dGVybiBlbnVtIGdy YXBoX2R1bXBfdHlwZXMgZ3JhcGhfZHVtcF9mb3JtYXQ7CgoKCgoKZXh0ZXJuIGludCBmbGFn X25vX2lkZW50OwoKCgpleHRlcm4gaW50IGZsYWdfZ2NzZV9sbTsKCgoKZXh0ZXJuIGludCBm bGFnX2djc2Vfc207CgoKCgpleHRlcm4gaW50IGZsYWdfZWxpbWluYXRlX2R3YXJmMl9kdXBz OwoKCgpleHRlcm4gaW50IGZsYWdfZGV0YWlsZWRfc3RhdGlzdGljczsKCgpleHRlcm4gaW50 IGZsYWdfbm9uX2NhbGxfZXhjZXB0aW9uczsKIyAzNiAicmVncmVuYW1lLmMiIDIKIyAxICJ0 b3BsZXYuaCIgMQojIDIyICJ0b3BsZXYuaCIKI2RlZmluZSBHQ0NfVE9QTEVWX0ggCgoKCiNk ZWZpbmUgc2tpcF9sZWFkaW5nX3N1YnN0cmluZyh3aG9sZSxwYXJ0KSAoc3RybmNtcCAod2hv bGUsIHBhcnQsIHN0cmxlbiAocGFydCkpID8gTlVMTCA6IHdob2xlICsgc3RybGVuIChwYXJ0 KSkKCgpleHRlcm4gaW50IHRvcGxldl9tYWluIChpbnQsIGNoYXIgKiopOwpleHRlcm4gaW50 IHJlYWRfaW50ZWdyYWxfcGFyYW1ldGVyIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg Y29uc3QgaW50KQogICAgICAgICAgICAgICAgIDsKZXh0ZXJuIGludCBjb3VudF9lcnJvciAo aW50KTsKZXh0ZXJuIHZvaWQgc3RyaXBfb2ZmX2VuZGluZyAoY2hhciAqLCBpbnQpOwpleHRl cm4gdm9pZCBwcmludF90aW1lIChjb25zdCBjaGFyICosIGxvbmcpOwpleHRlcm4gY29uc3Qg Y2hhciAqdHJpbV9maWxlbmFtZSAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgaW50ZXJu YWxfZXJyb3IgKGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3JldHVybl9fKSk7CmV4dGVybiB2b2lkIGZhdGFsX2lvX2Vycm9yIChjb25zdCBj aGFyICosIC4uLikKICAgICAgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykp OwpleHRlcm4gdm9pZCBfZmF0YWxfaW5zbl9ub3RfZm91bmQgKHN0cnVjdCBydHhfZGVmICos IGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopCgoKICAgICAgICAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwpleHRlcm4gdm9pZCBfZmF0YWxfaW5zbiAoY29u c3QgY2hhciAqLCBzdHJ1Y3QgcnR4X2RlZiAqLCBjb25zdCBjaGFyICosIGludCwgY29uc3Qg Y2hhciAqKQoKCgogICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsK CiNkZWZpbmUgZmF0YWxfaW5zbihtc2dpZCxpbnNuKSBfZmF0YWxfaW5zbiAobXNnaWQsIGlu c24sIF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9fKQoKI2RlZmluZSBmYXRhbF9p bnNuX25vdF9mb3VuZChpbnNuKSBfZmF0YWxfaW5zbl9ub3RfZm91bmQgKGluc24sIF9fRklM RV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9fKQoKCgoKCmV4dGVybiB2b2lkIHdhcm5pbmcg KGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIHZvaWQgZXJyb3IgKGNvbnN0IGNoYXIgKiwg Li4uKTsKZXh0ZXJuIHZvaWQgZmF0YWxfZXJyb3IgKGNvbnN0IGNoYXIgKiwgLi4uKQogICAg ICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CmV4dGVybiB2b2lkIHBl ZHdhcm4gKGNvbnN0IGNoYXIgKiwgLi4uKTsKZXh0ZXJuIHZvaWQgcGVkd2Fybl93aXRoX2Zp bGVfYW5kX2xpbmUgKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICosIC4uLikKICAg ICAgICAgICAgICAgICAgICAgICAgICA7CmV4dGVybiB2b2lkIHdhcm5pbmdfd2l0aF9maWxl X2FuZF9saW5lIChjb25zdCBjaGFyICosIGludCwgY29uc3QgY2hhciAqLCAuLi4pCiAgICAg ICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4gdm9pZCBlcnJvcl93aXRoX2ZpbGVfYW5k X2xpbmUgKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICosIC4uLikKICAgICAgICAg ICAgICAgICAgICAgICAgICA7CmV4dGVybiB2b2lkIHNvcnJ5IChjb25zdCBjaGFyICosIC4u Lik7CmV4dGVybiB2b2lkIHJlcG9ydF9lcnJvcl9mdW5jdGlvbiAoY29uc3QgY2hhciAqKTsK CmV4dGVybiB2b2lkIHJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbiAodW5pb24gdHJlZV9ub2Rl ICosIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKZXh0ZXJuIHZvaWQgcmVzdF9vZl90eXBlX2NvbXBpbGF0aW9uICh1bmlvbiB0cmVl X25vZGUgKiwgaW50KTsKZXh0ZXJuIHZvaWQgcmVzdF9vZl9jb21waWxhdGlvbiAodW5pb24g dHJlZV9ub2RlICopOwoKZXh0ZXJuIHZvaWQgcGVkd2Fybl93aXRoX2RlY2wgKHVuaW9uIHRy ZWVfbm9kZSAqLCBjb25zdCBjaGFyICosIC4uLikKICAgICAgICAgICAgICAgICAgICAgICAg ICA7CmV4dGVybiB2b2lkIHdhcm5pbmdfd2l0aF9kZWNsICh1bmlvbiB0cmVlX25vZGUgKiwg Y29uc3QgY2hhciAqLCAuLi4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgOwpleHRlcm4g dm9pZCBlcnJvcl93aXRoX2RlY2wgKHVuaW9uIHRyZWVfbm9kZSAqLCBjb25zdCBjaGFyICos IC4uLikKICAgICAgICAgICAgICAgICAgICAgICAgICA7CgpleHRlcm4gdm9pZCBhbm5vdW5j ZV9mdW5jdGlvbiAodW5pb24gdHJlZV9ub2RlICopOwoKZXh0ZXJuIHZvaWQgZXJyb3JfZm9y X2FzbSAoc3RydWN0IHJ0eF9kZWYgKiwgY29uc3QgY2hhciAqLCAuLi4pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgOwpleHRlcm4gdm9pZCB3YXJuaW5nX2Zvcl9hc20gKHN0cnVjdCBy dHhfZGVmICosIGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgICAgICAgICAgICAgICAgICAg IDsKZXh0ZXJuIHZvaWQgd2Fybl9kZXByZWNhdGVkX3VzZSAodW5pb24gdHJlZV9ub2RlICop OwpleHRlcm4gaW50IGRvX2Zsb2F0X2hhbmRsZXIgKHZvaWQgKCopICh2b2lkICopLCB2b2lk ICopOwoKCmV4dGVybiB2b2lkIG91dHB1dF9xdW90ZWRfc3RyaW5nIChGSUxFICosIGNvbnN0 IGNoYXIgKik7CmV4dGVybiB2b2lkIG91dHB1dF9maWxlX2RpcmVjdGl2ZSAoRklMRSAqLCBj b25zdCBjaGFyICopOwoKZXh0ZXJuIHZvaWQgZG9fYWJvcnQgKHZvaWQpIF9fYXR0cmlidXRl X18gKChfX25vcmV0dXJuX18pKTsKZXh0ZXJuIHZvaWQgYm90Y2ggKGNvbnN0IGNoYXIgKikK ICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gdm9pZCBmbm90 aWNlIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKQogICAgICAgICAgICBfX2F0dHJpYnV0 ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IHdy YXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zICh1bmlvbiB0cmVlX25vZGUgKiosIGludCk7CmV4 dGVybiB2b2lkIGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbnMgKHVuaW9uIHRyZWVfbm9kZSAq KiwgaW50KTsKCmV4dGVybiBjb25zdCBjaGFyICpwcm9nbmFtZTsKZXh0ZXJuIGNvbnN0IGNo YXIgKmR1bXBfYmFzZV9uYW1lOwoKCmV4dGVybiBzdHJ1Y3QgaHQgKmlkZW50X2hhc2g7CgoK CgpleHRlcm4gdm9pZCBzZXRfZmFzdF9tYXRoX2ZsYWdzICh2b2lkKTsKZXh0ZXJuIHZvaWQg c2V0X25vX2Zhc3RfbWF0aF9mbGFncyAodm9pZCk7CgoKCgoKI2RlZmluZSBleGFjdF9sb2cy KE4pIGV4YWN0X2xvZzJfd2lkZSAoKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpIChOKSkKI2Rl ZmluZSBmbG9vcl9sb2cyKE4pIGZsb29yX2xvZzJfd2lkZSAoKHVuc2lnbmVkIEhPU1RfV0lE RV9JTlQpIChOKSkKCmV4dGVybiBpbnQgZXhhY3RfbG9nMl93aWRlICh1bnNpZ25lZCBsb25n KTsKZXh0ZXJuIGludCBmbG9vcl9sb2cyX3dpZGUgKHVuc2lnbmVkIGxvbmcpOwojIDM3ICJy ZWdyZW5hbWUuYyIgMgojIDEgIm9ic3RhY2suaCIgMQojIDExMSAib2JzdGFjay5oIgojZGVm aW5lIF9PQlNUQUNLX0ggMQojIDEyMiAib2JzdGFjay5oIgojZGVmaW5lIF9fUFRSX1RPX0lO VChQKSAoKFApIC0gKGNoYXIgKikgMCkKCgoKI2RlZmluZSBfX0lOVF9UT19QVFIoUCkgKChQ KSArIChjaGFyICopIDApCiMgMTM2ICJvYnN0YWNrLmgiCiNkZWZpbmUgUFRSX0lOVF9UWVBF IF9fUFRSRElGRl9UWVBFX18KIyAxNDkgIm9ic3RhY2suaCIKI2RlZmluZSBfb2JzdGFja19t ZW1jcHkoVG8sRnJvbSxOKSBtZW1jcHkgKChUbyksIChGcm9tKSwgKE4pKQojIDE2MSAib2Jz dGFjay5oIgpzdHJ1Y3QgX29ic3RhY2tfY2h1bmsKewogIGNoYXIgKmxpbWl0OwogIHN0cnVj dCBfb2JzdGFja19jaHVuayAqcHJldjsKICBjaGFyIGNvbnRlbnRzWzRdOwp9OwoKc3RydWN0 IG9ic3RhY2sKewogIGxvbmcgY2h1bmtfc2l6ZTsKICBzdHJ1Y3QgX29ic3RhY2tfY2h1bmsg KmNodW5rOwogIGNoYXIgKm9iamVjdF9iYXNlOwogIGNoYXIgKm5leHRfZnJlZTsKICBjaGFy ICpjaHVua19saW1pdDsKICBsb25nIGludCB0ZW1wOwogIGludCBhbGlnbm1lbnRfbWFzazsK CgoKCiAgc3RydWN0IF9vYnN0YWNrX2NodW5rICooKmNodW5rZnVuKSAodm9pZCAqLCBsb25n KTsKICB2b2lkICgqZnJlZWZ1bikgKHZvaWQgKiwgc3RydWN0IF9vYnN0YWNrX2NodW5rICop OwogIHZvaWQgKmV4dHJhX2FyZzsKCgoKCgogIHVuc2lnbmVkIHVzZV9leHRyYV9hcmc6MTsK ICB1bnNpZ25lZCBtYXliZV9lbXB0eV9vYmplY3Q6MTsKCgoKICB1bnNpZ25lZCBhbGxvY19m YWlsZWQ6MTsKCgp9OwoKCgoKZXh0ZXJuIHZvaWQgX29ic3RhY2tfbmV3Y2h1bmsgKHN0cnVj dCBvYnN0YWNrICosIGludCk7CmV4dGVybiB2b2lkIF9vYnN0YWNrX2ZyZWUgKHN0cnVjdCBv YnN0YWNrICosIHZvaWQgKik7CmV4dGVybiBpbnQgX29ic3RhY2tfYmVnaW4gKHN0cnVjdCBv YnN0YWNrICosIGludCwgaW50LAogICAgICAgdm9pZCAqKCopIChsb25nKSwgdm9pZCAoKikg KHZvaWQgKikpOwpleHRlcm4gaW50IF9vYnN0YWNrX2JlZ2luXzEgKHN0cnVjdCBvYnN0YWNr ICosIGludCwgaW50LAogICAgICAgIHZvaWQgKigqKSAodm9pZCAqLCBsb25nKSwKICAgICAg ICB2b2lkICgqKSAodm9pZCAqLCB2b2lkICopLCB2b2lkICopOwpleHRlcm4gaW50IF9vYnN0 YWNrX21lbW9yeV91c2VkIChzdHJ1Y3Qgb2JzdGFjayAqKTsKIyAyMjMgIm9ic3RhY2suaCIK dm9pZCBvYnN0YWNrX2luaXQgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKCnZvaWQgKiBv YnN0YWNrX2FsbG9jIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgaW50IHNpemUpOwoKdm9p ZCAqIG9ic3RhY2tfY29weSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmFkZHJl c3MsIGludCBzaXplKTsKdm9pZCAqIG9ic3RhY2tfY29weTAgKHN0cnVjdCBvYnN0YWNrICpv YnN0YWNrLCB2b2lkICphZGRyZXNzLCBpbnQgc2l6ZSk7Cgp2b2lkIG9ic3RhY2tfZnJlZSAo c3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIHZvaWQgKmJsb2NrKTsKCnZvaWQgb2JzdGFja19i bGFuayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBzaXplKTsKCnZvaWQgb2JzdGFj a19ncm93IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgdm9pZCAqZGF0YSwgaW50IHNpemUp Owp2b2lkIG9ic3RhY2tfZ3JvdzAgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCB2b2lkICpk YXRhLCBpbnQgc2l6ZSk7Cgp2b2lkIG9ic3RhY2tfMWdyb3cgKHN0cnVjdCBvYnN0YWNrICpv YnN0YWNrLCBpbnQgZGF0YV9jaGFyKTsKdm9pZCBvYnN0YWNrX3B0cl9ncm93IChzdHJ1Y3Qg b2JzdGFjayAqb2JzdGFjaywgdm9pZCAqZGF0YSk7CnZvaWQgb2JzdGFja19pbnRfZ3JvdyAo c3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssIGludCBkYXRhKTsKCnZvaWQgKiBvYnN0YWNrX2Zp bmlzaCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwoKaW50IG9ic3RhY2tfb2JqZWN0X3Np emUgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKCmludCBvYnN0YWNrX3Jvb20gKHN0cnVj dCBvYnN0YWNrICpvYnN0YWNrKTsKdm9pZCBvYnN0YWNrX21ha2Vfcm9vbSAoc3RydWN0IG9i c3RhY2sgKm9ic3RhY2ssIGludCBzaXplKTsKdm9pZCBvYnN0YWNrXzFncm93X2Zhc3QgKHN0 cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBpbnQgZGF0YV9jaGFyKTsKdm9pZCBvYnN0YWNrX3B0 cl9ncm93X2Zhc3QgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCB2b2lkICpkYXRhKTsKdm9p ZCBvYnN0YWNrX2ludF9ncm93X2Zhc3QgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBpbnQg ZGF0YSk7CnZvaWQgb2JzdGFja19ibGFua19mYXN0IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFj aywgaW50IHNpemUpOwoKdm9pZCAqIG9ic3RhY2tfYmFzZSAoc3RydWN0IG9ic3RhY2sgKm9i c3RhY2spOwp2b2lkICogb2JzdGFja19uZXh0X2ZyZWUgKHN0cnVjdCBvYnN0YWNrICpvYnN0 YWNrKTsKaW50IG9ic3RhY2tfYWxpZ25tZW50X21hc2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0 YWNrKTsKaW50IG9ic3RhY2tfY2h1bmtfc2l6ZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2sp OwppbnQgb2JzdGFja19tZW1vcnlfdXNlZCAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwoj IDI2NyAib2JzdGFjay5oIgpleHRlcm4gdm9pZCAoKm9ic3RhY2tfYWxsb2NfZmFpbGVkX2hh bmRsZXIpICh2b2lkKTsKCgoKCgpleHRlcm4gaW50IG9ic3RhY2tfZXhpdF9mYWlsdXJlOwoK CgoKCiNkZWZpbmUgb2JzdGFja19iYXNlKGgpICgoaCktPm9iamVjdF9iYXNlKQoKCgojZGVm aW5lIG9ic3RhY2tfY2h1bmtfc2l6ZShoKSAoKGgpLT5jaHVua19zaXplKQoKCgojZGVmaW5l IG9ic3RhY2tfbmV4dF9mcmVlKGgpICgoaCktPm5leHRfZnJlZSkKCgoKI2RlZmluZSBvYnN0 YWNrX2FsaWdubWVudF9tYXNrKGgpICgoaCktPmFsaWdubWVudF9tYXNrKQoKCgoKCiNkZWZp bmUgb2JzdGFja19pbml0KGgpIF9vYnN0YWNrX2JlZ2luICgoaCksIDAsIDAsICh2b2lkICoo KikgKGxvbmcpKSBvYnN0YWNrX2NodW5rX2FsbG9jLCAodm9pZCAoKikgKHZvaWQgKikpIG9i c3RhY2tfY2h1bmtfZnJlZSkKCgoKI2RlZmluZSBvYnN0YWNrX2JlZ2luKGgsc2l6ZSkgX29i c3RhY2tfYmVnaW4gKChoKSwgKHNpemUpLCAwLCAodm9pZCAqKCopIChsb25nKSkgb2JzdGFj a19jaHVua19hbGxvYywgKHZvaWQgKCopICh2b2lkICopKSBvYnN0YWNrX2NodW5rX2ZyZWUp CgoKCiNkZWZpbmUgb2JzdGFja19zcGVjaWZ5X2FsbG9jYXRpb24oaCxzaXplLGFsaWdubWVu dCxjaHVua2Z1bixmcmVlZnVuKSBfb2JzdGFja19iZWdpbiAoKGgpLCAoc2l6ZSksIChhbGln bm1lbnQpLCAodm9pZCAqKCopIChsb25nKSkgKGNodW5rZnVuKSwgKHZvaWQgKCopICh2b2lk ICopKSAoZnJlZWZ1bikpCgoKCiNkZWZpbmUgb2JzdGFja19zcGVjaWZ5X2FsbG9jYXRpb25f d2l0aF9hcmcoaCxzaXplLGFsaWdubWVudCxjaHVua2Z1bixmcmVlZnVuLGFyZykgX29ic3Rh Y2tfYmVnaW5fMSAoKGgpLCAoc2l6ZSksIChhbGlnbm1lbnQpLCAodm9pZCAqKCopICh2b2lk ICosIGxvbmcpKSAoY2h1bmtmdW4pLCAodm9pZCAoKikgKHZvaWQgKiwgdm9pZCAqKSkgKGZy ZWVmdW4pLCAoYXJnKSkKCgoKCiNkZWZpbmUgb2JzdGFja19jaHVua2Z1bihoLG5ld2NodW5r ZnVuKSAoKGgpIC0+IGNodW5rZnVuID0gKHN0cnVjdCBfb2JzdGFja19jaHVuayAqKCopKHZv aWQgKiwgbG9uZykpIChuZXdjaHVua2Z1bikpCgoKI2RlZmluZSBvYnN0YWNrX2ZyZWVmdW4o aCxuZXdmcmVlZnVuKSAoKGgpIC0+IGZyZWVmdW4gPSAodm9pZCAoKikodm9pZCAqLCBzdHJ1 Y3QgX29ic3RhY2tfY2h1bmsgKikpIChuZXdmcmVlZnVuKSkKIyAzNDYgIm9ic3RhY2suaCIK I2RlZmluZSBvYnN0YWNrXzFncm93X2Zhc3QoaCxhY2hhcikgKCooKGgpLT5uZXh0X2ZyZWUp KysgPSBhY2hhcikKCiNkZWZpbmUgb2JzdGFja19ibGFua19mYXN0KGgsbikgKChoKS0+bmV4 dF9mcmVlICs9IChuKSkKCiNkZWZpbmUgb2JzdGFja19tZW1vcnlfdXNlZChoKSBfb2JzdGFj a19tZW1vcnlfdXNlZCAoaCkKIyAzNjUgIm9ic3RhY2suaCIKI2RlZmluZSBvYnN0YWNrX29i amVjdF9zaXplKE9CU1RBQ0spIF9fZXh0ZW5zaW9uX18gKHsgc3RydWN0IG9ic3RhY2sgKl9f byA9IChPQlNUQUNLKTsgKHVuc2lnbmVkKSAoX19vLT5uZXh0X2ZyZWUgLSBfX28tPm9iamVj dF9iYXNlKTsgfSkKCgoKCiNkZWZpbmUgb2JzdGFja19yb29tKE9CU1RBQ0spIF9fZXh0ZW5z aW9uX18gKHsgc3RydWN0IG9ic3RhY2sgKl9fbyA9IChPQlNUQUNLKTsgKHVuc2lnbmVkKSAo X19vLT5jaHVua19saW1pdCAtIF9fby0+bmV4dF9mcmVlKTsgfSkKCgoKCiNkZWZpbmUgb2Jz dGFja19tYWtlX3Jvb20oT0JTVEFDSyxsZW5ndGgpIF9fZXh0ZW5zaW9uX18gKHsgc3RydWN0 IG9ic3RhY2sgKl9fbyA9IChPQlNUQUNLKTsgaW50IF9fbGVuID0gKGxlbmd0aCk7IGlmIChf X28tPmNodW5rX2xpbWl0IC0gX19vLT5uZXh0X2ZyZWUgPCBfX2xlbikgX29ic3RhY2tfbmV3 Y2h1bmsgKF9fbywgX19sZW4pOyAodm9pZCkgMDsgfSkKCgoKCgoKCiNkZWZpbmUgb2JzdGFj a19lbXB0eV9wKE9CU1RBQ0spIF9fZXh0ZW5zaW9uX18gKHsgc3RydWN0IG9ic3RhY2sgKl9f byA9IChPQlNUQUNLKTsgKF9fby0+Y2h1bmstPnByZXYgPT0gMCAmJiBfX28tPm5leHRfZnJl ZSAtIF9fby0+Y2h1bmstPmNvbnRlbnRzID09IDApOyB9KQoKCgoKI2RlZmluZSBvYnN0YWNr X2dyb3coT0JTVEFDSyx3aGVyZSxsZW5ndGgpIF9fZXh0ZW5zaW9uX18gKHsgc3RydWN0IG9i c3RhY2sgKl9fbyA9IChPQlNUQUNLKTsgaW50IF9fbGVuID0gKGxlbmd0aCk7IGlmIChfX28t Pm5leHRfZnJlZSArIF9fbGVuID4gX19vLT5jaHVua19saW1pdCkgX29ic3RhY2tfbmV3Y2h1 bmsgKF9fbywgX19sZW4pOyBfb2JzdGFja19tZW1jcHkgKF9fby0+bmV4dF9mcmVlLCAod2hl cmUpLCBfX2xlbik7IF9fby0+bmV4dF9mcmVlICs9IF9fbGVuOyAodm9pZCkgMDsgfSkKIyAz OTggIm9ic3RhY2suaCIKI2RlZmluZSBvYnN0YWNrX2dyb3cwKE9CU1RBQ0ssd2hlcmUsbGVu Z3RoKSBfX2V4dGVuc2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpfX28gPSAoT0JTVEFDSyk7 IGludCBfX2xlbiA9IChsZW5ndGgpOyBpZiAoX19vLT5uZXh0X2ZyZWUgKyBfX2xlbiArIDEg PiBfX28tPmNodW5rX2xpbWl0KSBfb2JzdGFja19uZXdjaHVuayAoX19vLCBfX2xlbiArIDEp OyBfb2JzdGFja19tZW1jcHkgKF9fby0+bmV4dF9mcmVlLCAod2hlcmUpLCBfX2xlbik7IF9f by0+bmV4dF9mcmVlICs9IF9fbGVuOyAqKF9fby0+bmV4dF9mcmVlKSsrID0gMDsgKHZvaWQp IDA7IH0pCiMgNDA5ICJvYnN0YWNrLmgiCiNkZWZpbmUgb2JzdGFja18xZ3JvdyhPQlNUQUNL LGRhdHVtKSBfX2V4dGVuc2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpfX28gPSAoT0JTVEFD Syk7IGlmIChfX28tPm5leHRfZnJlZSArIDEgPiBfX28tPmNodW5rX2xpbWl0KSBfb2JzdGFj a19uZXdjaHVuayAoX19vLCAxKTsgKihfX28tPm5leHRfZnJlZSkrKyA9IChkYXR1bSk7ICh2 b2lkKSAwOyB9KQojIDQyMSAib2JzdGFjay5oIgojZGVmaW5lIG9ic3RhY2tfcHRyX2dyb3co T0JTVEFDSyxkYXR1bSkgX19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19vID0g KE9CU1RBQ0spOyBpZiAoX19vLT5uZXh0X2ZyZWUgKyBzaXplb2YgKHZvaWQgKikgPiBfX28t PmNodW5rX2xpbWl0KSBfb2JzdGFja19uZXdjaHVuayAoX19vLCBzaXplb2YgKHZvaWQgKikp OyAoKCooKHZvaWQgKiopX19vLT5uZXh0X2ZyZWUpID0gKCh2b2lkICopZGF0dW0pKSwgKF9f by0+bmV4dF9mcmVlICs9IHNpemVvZiAodm9pZCAqKSkpOyAodm9pZCkgMDsgfSkKIyA0MzAg Im9ic3RhY2suaCIKI2RlZmluZSBvYnN0YWNrX2ludF9ncm93KE9CU1RBQ0ssZGF0dW0pIF9f ZXh0ZW5zaW9uX18gKHsgc3RydWN0IG9ic3RhY2sgKl9fbyA9IChPQlNUQUNLKTsgaWYgKF9f by0+bmV4dF9mcmVlICsgc2l6ZW9mIChpbnQpID4gX19vLT5jaHVua19saW1pdCkgX29ic3Rh Y2tfbmV3Y2h1bmsgKF9fbywgc2l6ZW9mIChpbnQpKTsgKigoaW50ICopX19vLT5uZXh0X2Zy ZWUpKysgPSAoKGludClkYXR1bSk7ICh2b2lkKSAwOyB9KQoKCgoKCgoKI2RlZmluZSBvYnN0 YWNrX3B0cl9ncm93X2Zhc3QoaCxhcHRyKSAoKigodm9pZCAqKikgKGgpLT5uZXh0X2ZyZWUp KysgPSAodm9pZCAqKWFwdHIpCiNkZWZpbmUgb2JzdGFja19pbnRfZ3Jvd19mYXN0KGgsYWlu dCkgKCooKGludCAqKSAoaCktPm5leHRfZnJlZSkrKyA9IChpbnQpIGFpbnQpCgojZGVmaW5l IG9ic3RhY2tfYmxhbmsoT0JTVEFDSyxsZW5ndGgpIF9fZXh0ZW5zaW9uX18gKHsgc3RydWN0 IG9ic3RhY2sgKl9fbyA9IChPQlNUQUNLKTsgaW50IF9fbGVuID0gKGxlbmd0aCk7IGlmIChf X28tPmNodW5rX2xpbWl0IC0gX19vLT5uZXh0X2ZyZWUgPCBfX2xlbikgX29ic3RhY2tfbmV3 Y2h1bmsgKF9fbywgX19sZW4pOyBfX28tPm5leHRfZnJlZSArPSBfX2xlbjsgKHZvaWQpIDA7 IH0pCiMgNDUwICJvYnN0YWNrLmgiCiNkZWZpbmUgb2JzdGFja19hbGxvYyhPQlNUQUNLLGxl bmd0aCkgX19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19oID0gKE9CU1RBQ0sp OyBvYnN0YWNrX2JsYW5rIChfX2gsIChsZW5ndGgpKTsgb2JzdGFja19maW5pc2ggKF9faCk7 IH0pCgoKCgoKI2RlZmluZSBvYnN0YWNrX2NvcHkoT0JTVEFDSyx3aGVyZSxsZW5ndGgpIF9f ZXh0ZW5zaW9uX18gKHsgc3RydWN0IG9ic3RhY2sgKl9faCA9IChPQlNUQUNLKTsgb2JzdGFj a19ncm93IChfX2gsICh3aGVyZSksIChsZW5ndGgpKTsgb2JzdGFja19maW5pc2ggKF9faCk7 IH0pCgoKCgoKI2RlZmluZSBvYnN0YWNrX2NvcHkwKE9CU1RBQ0ssd2hlcmUsbGVuZ3RoKSBf X2V4dGVuc2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpfX2ggPSAoT0JTVEFDSyk7IG9ic3Rh Y2tfZ3JvdzAgKF9faCwgKHdoZXJlKSwgKGxlbmd0aCkpOyBvYnN0YWNrX2ZpbmlzaCAoX19o KTsgfSkKCgoKCgoKCiNkZWZpbmUgb2JzdGFja19maW5pc2goT0JTVEFDSykgX19leHRlbnNp b25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19vMSA9IChPQlNUQUNLKTsgdm9pZCAqdmFsdWU7 IHZhbHVlID0gKHZvaWQgKikgX19vMS0+b2JqZWN0X2Jhc2U7IGlmIChfX28xLT5uZXh0X2Zy ZWUgPT0gdmFsdWUpIF9fbzEtPm1heWJlX2VtcHR5X29iamVjdCA9IDE7IF9fbzEtPm5leHRf ZnJlZSA9IF9fSU5UX1RPX1BUUiAoKF9fUFRSX1RPX0lOVCAoX19vMS0+bmV4dF9mcmVlKStf X28xLT5hbGlnbm1lbnRfbWFzaykgJiB+IChfX28xLT5hbGlnbm1lbnRfbWFzaykpOyBpZiAo X19vMS0+bmV4dF9mcmVlIC0gKGNoYXIgKilfX28xLT5jaHVuayA+IF9fbzEtPmNodW5rX2xp bWl0IC0gKGNoYXIgKilfX28xLT5jaHVuaykgX19vMS0+bmV4dF9mcmVlID0gX19vMS0+Y2h1 bmtfbGltaXQ7IF9fbzEtPm9iamVjdF9iYXNlID0gX19vMS0+bmV4dF9mcmVlOyB2YWx1ZTsg fSkKIyA0ODYgIm9ic3RhY2suaCIKI2RlZmluZSBvYnN0YWNrX2ZyZWUoT0JTVEFDSyxPQkop IF9fZXh0ZW5zaW9uX18gKHsgc3RydWN0IG9ic3RhY2sgKl9fbyA9IChPQlNUQUNLKTsgdm9p ZCAqX19vYmogPSAoT0JKKTsgaWYgKF9fb2JqID4gKHZvaWQgKilfX28tPmNodW5rICYmIF9f b2JqIDwgKHZvaWQgKilfX28tPmNodW5rX2xpbWl0KSBfX28tPm5leHRfZnJlZSA9IF9fby0+ b2JqZWN0X2Jhc2UgPSBfX29iajsgZWxzZSAob2JzdGFja19mcmVlKSAoX19vLCBfX29iaik7 IH0pCiMgMzggInJlZ3JlbmFtZS5jIiAyCgojZGVmaW5lIG9ic3RhY2tfY2h1bmtfYWxsb2Mg eG1hbGxvYwojZGVmaW5lIG9ic3RhY2tfY2h1bmtfZnJlZSBmcmVlCgoKI2RlZmluZSBSRUdO T19NT0RFX09LX0ZPUl9CQVNFX1AoUkVHTk8sTU9ERSkgUkVHTk9fT0tfRk9SX0JBU0VfUCAo UkVHTk8pCgoKCiNkZWZpbmUgUkVHX01PREVfT0tfRk9SX0JBU0VfUChSRUdOTyxNT0RFKSBS RUdfT0tfRk9SX0JBU0VfUCAoUkVHTk8pCgoKc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJl Z19jbGFzc19uYW1lc1tdID0geyAiTk9fUkVHUyIsICJBUkVHIiwgIkRSRUciLCAiQ1JFRyIs ICJCUkVHIiwgIlNJUkVHIiwgIkRJUkVHIiwgIkFEX1JFR1MiLCAiUV9SRUdTIiwgIk5PTl9R X1JFR1MiLCAiSU5ERVhfUkVHUyIsICJMRUdBQ1lfUkVHUyIsICJHRU5FUkFMX1JFR1MiLCAi RlBfVE9QX1JFRyIsICJGUF9TRUNPTkRfUkVHIiwgIkZMT0FUX1JFR1MiLCAiU1NFX1JFR1Mi LCAiTU1YX1JFR1MiLCAiRlBfVE9QX1NTRV9SRUdTIiwgIkZQX1NFQ09ORF9TU0VfUkVHUyIs ICJGTE9BVF9TU0VfUkVHUyIsICJGTE9BVF9JTlRfUkVHUyIsICJJTlRfU1NFX1JFR1MiLCAi RkxPQVRfSU5UX1NTRV9SRUdTIiwgIkFMTF9SRUdTIiB9OwoKc3RydWN0IGR1X2NoYWluCnsK ICBzdHJ1Y3QgZHVfY2hhaW4gKm5leHRfY2hhaW47CiAgc3RydWN0IGR1X2NoYWluICpuZXh0 X3VzZTsKCiAgcnR4IGluc247CiAgcnR4ICpsb2M7CiAgZW51bSByZWdfY2xhc3MgY2xhc3M7 CiAgdW5zaWduZWQgaW50IG5lZWRfY2FsbGVyX3NhdmVfcmVnOjE7CiAgdW5zaWduZWQgaW50 IGVhcmx5Y2xvYmJlcjoxOwp9OwoKZW51bSBzY2FuX2FjdGlvbnMKewogIHRlcm1pbmF0ZV9h bGxfcmVhZCwKICB0ZXJtaW5hdGVfb3ZlcmxhcHBpbmdfcmVhZCwKICB0ZXJtaW5hdGVfd3Jp dGUsCiAgdGVybWluYXRlX2RlYWQsCiAgbWFya19yZWFkLAogIG1hcmtfd3JpdGUKfTsKCnN0 YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc2Nhbl9hY3Rpb25zX25hbWVbXSA9CnsKICAidGVy bWluYXRlX2FsbF9yZWFkIiwKICAidGVybWluYXRlX292ZXJsYXBwaW5nX3JlYWQiLAogICJ0 ZXJtaW5hdGVfd3JpdGUiLAogICJ0ZXJtaW5hdGVfZGVhZCIsCiAgIm1hcmtfcmVhZCIsCiAg Im1hcmtfd3JpdGUiCn07CgpzdGF0aWMgc3RydWN0IG9ic3RhY2sgcmVuYW1lX29ic3RhY2s7 CgpzdGF0aWMgdm9pZCBkb19yZXBsYWNlIChzdHJ1Y3QgZHVfY2hhaW4gKiwgaW50KTsKc3Rh dGljIHZvaWQgc2Nhbl9ydHhfcmVnIChydHgsIHJ0eCAqLCBlbnVtIHJlZ19jbGFzcywgZW51 bSBzY2FuX2FjdGlvbnMsIGVudW0gb3BfdHlwZSwgaW50KQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsKc3RhdGljIHZvaWQgc2Nhbl9ydHhfYWRkcmVz cyAocnR4LCBydHggKiwgZW51bSByZWdfY2xhc3MsIGVudW0gc2Nhbl9hY3Rpb25zLCBlbnVt IG1hY2hpbmVfbW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOwpzdGF0aWMgdm9pZCBzY2FuX3J0eCAocnR4LCBydHggKiwgZW51bSByZWdf Y2xhc3MsIGVudW0gc2Nhbl9hY3Rpb25zLCBlbnVtIG9wX3R5cGUsIGludCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CnN0YXRpYyBzdHJ1Y3Qg ZHVfY2hhaW4gKmJ1aWxkX2RlZl91c2UgKGJhc2ljX2Jsb2NrKTsKc3RhdGljIHZvaWQgZHVt cF9kZWZfdXNlX2NoYWluIChzdHJ1Y3QgZHVfY2hhaW4gKik7CnN0YXRpYyB2b2lkIG5vdGVf c2V0cyAocnR4LCBydHgsIHZvaWQgKik7CnN0YXRpYyB2b2lkIGNsZWFyX2RlYWRfcmVncyAo SEFSRF9SRUdfRUxUX1RZUEUgKiwgZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7CnN0YXRpYyB2 b2lkIG1lcmdlX292ZXJsYXBwaW5nX3JlZ3MgKGJhc2ljX2Jsb2NrLCBIQVJEX1JFR19FTFRf VFlQRSAqLCBzdHJ1Y3QgZHVfY2hhaW4gKikKICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKCgoKCnN0YXRpYyB2b2lkCm5vdGVfc2V0cyAoeCwgc2V0LCBkYXRhKQogICAgIHJ0eCB4 OwogICAgIHJ0eCBzZXQgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKTsKICAgICB2b2lk ICpkYXRhOwp7CiAgSEFSRF9SRUdfRUxUX1RZUEUgKnBzZXQgPSAoSEFSRF9SRUdfRUxUX1RZ UEUgKikgZGF0YTsKICB1bnNpZ25lZCBpbnQgcmVnbm87CiAgaW50IG5yZWdzOwogIGlmICgo KGVudW0gcnR4X2NvZGUpICh4KS0+Y29kZSkgIT0gUkVHKQogICAgcmV0dXJuOwogIHJlZ25v ID0gKCgoeCktPmZsZFswXSkucnR1aW50KTsKICBucmVncyA9ICgoKHJlZ25vKSA+PSA4ICYm IChyZWdubykgPD0gKDggKyA3KSkgfHwgKCgocmVnbm8pID49ICgyMCArIDEpICYmIChyZWdu bykgPD0gKCgyMCArIDEpICsgNykpIHx8ICgocmVnbm8pID49ICgoKCgoKCgyMCArIDEpICsg NykgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmIChyZWdubykgPD0gKCgoKCgoKCgyMCAr IDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykpKSB8fCAoKHJlZ25vKSA+ PSAoKCgyMCArIDEpICsgNykgKyAxKSAmJiAocmVnbm8pIDw9ICgoKCgyMCArIDEpICsgNykg KyAxKSArIDcpKSA/ICgoKG1vZGVfY2xhc3NbKGludCkgKCgoZW51bSBtYWNoaW5lX21vZGUp ICh4KS0+bW9kZSkpXSkgPT0gTU9ERV9DT01QTEVYX0lOVCB8fCAobW9kZV9jbGFzc1soaW50 KSAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKHgpLT5tb2RlKSldKSA9PSBNT0RFX0NPTVBMRVhf RkxPQVQpID8gMiA6IDEpIDogKCgoKGVudW0gbWFjaGluZV9tb2RlKSAoeCktPm1vZGUpKSA9 PSBURm1vZGUgPyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gMiA6IDMpIDogKCgo ZW51bSBtYWNoaW5lX21vZGUpICh4KS0+bW9kZSkpID09IFRDbW9kZSA/ICgodGFyZ2V0X2Zs YWdzICYgMHgwMjAwMDAwMCkgPyA0IDogNikgOiAoKChtb2RlX3NpemVbKGludCkgKCgoZW51 bSBtYWNoaW5lX21vZGUpICh4KS0+bW9kZSkpXSkgKyAoKHRhcmdldF9mbGFncyAmIDB4MDIw MDAwMDApID8gOCA6IDQpIC0gMSkgLyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8g OCA6IDQpKSkpOwoKCiAgaWYgKHJlZ25vICsgbnJlZ3MgPiA1MykKICAgIGZhbmN5X2Fib3J0 ICgicmVncmVuYW1lLmMiLCAxMTksIF9fRlVOQ1RJT05fXyk7CgogIHdoaWxlIChucmVncy0t ID4gMCkKICAgICgoKnBzZXQpIHw9ICgoSEFSRF9SRUdfRUxUX1RZUEUpICgxKSkgPDwgKHJl Z25vICsgbnJlZ3MpKTsKfQoKCgoKc3RhdGljIHZvaWQKY2xlYXJfZGVhZF9yZWdzIChwc2V0 LCBraW5kLCBub3RlcykKICAgICBIQVJEX1JFR19FTFRfVFlQRSAqcHNldDsKICAgICBlbnVt IG1hY2hpbmVfbW9kZSBraW5kOwogICAgIHJ0eCBub3RlczsKewogIHJ0eCBub3RlOwogIGZv ciAobm90ZSA9IG5vdGVzOyBub3RlOyBub3RlID0gKCgobm90ZSktPmZsZFsxXSkucnR4KSkK ICAgIGlmICgoKGVudW0gcmVnX25vdGUpICgoZW51bSBtYWNoaW5lX21vZGUpIChub3RlKS0+ bW9kZSkpID09IGtpbmQgJiYgKCgoZW51bSBydHhfY29kZSkgKCgoKG5vdGUpLT5mbGRbMF0p LnJ0eCkpLT5jb2RlKSA9PSBSRUcpKQogICAgICB7CiBydHggcmVnID0gKCgobm90ZSktPmZs ZFswXSkucnR4KTsKIHVuc2lnbmVkIGludCByZWdubyA9ICgoKHJlZyktPmZsZFswXSkucnR1 aW50KTsKIGludCBucmVncyA9ICgoKHJlZ25vKSA+PSA4ICYmIChyZWdubykgPD0gKDggKyA3 KSkgfHwgKCgocmVnbm8pID49ICgyMCArIDEpICYmIChyZWdubykgPD0gKCgyMCArIDEpICsg NykpIHx8ICgocmVnbm8pID49ICgoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkg KyA3KSArIDEpICYmIChyZWdubykgPD0gKCgoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcp ICsgMSkgKyA3KSArIDEpICsgNykpKSB8fCAoKHJlZ25vKSA+PSAoKCgyMCArIDEpICsgNykg KyAxKSAmJiAocmVnbm8pIDw9ICgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpKSA/ICgoKG1v ZGVfY2xhc3NbKGludCkgKCgoZW51bSBtYWNoaW5lX21vZGUpIChyZWcpLT5tb2RlKSldKSA9 PSBNT0RFX0NPTVBMRVhfSU5UIHx8IChtb2RlX2NsYXNzWyhpbnQpICgoKGVudW0gbWFjaGlu ZV9tb2RlKSAocmVnKS0+bW9kZSkpXSkgPT0gTU9ERV9DT01QTEVYX0ZMT0FUKSA/IDIgOiAx KSA6ICgoKChlbnVtIG1hY2hpbmVfbW9kZSkgKHJlZyktPm1vZGUpKSA9PSBURm1vZGUgPyAo KHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gMiA6IDMpIDogKCgoZW51bSBtYWNoaW5l X21vZGUpIChyZWcpLT5tb2RlKSkgPT0gVENtb2RlID8gKCh0YXJnZXRfZmxhZ3MgJiAweDAy MDAwMDAwKSA/IDQgOiA2KSA6ICgoKG1vZGVfc2l6ZVsoaW50KSAoKChlbnVtIG1hY2hpbmVf bW9kZSkgKHJlZyktPm1vZGUpKV0pICsgKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/ IDggOiA0KSAtIDEpIC8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSkp KTsKCgogaWYgKHJlZ25vICsgbnJlZ3MgPiA1MykKICAgZmFuY3lfYWJvcnQgKCJyZWdyZW5h bWUuYyIsIDE0NCwgX19GVU5DVElPTl9fKTsKCiB3aGlsZSAobnJlZ3MtLSA+IDApCiAgICgo KnBzZXQpICY9IH4oKChIQVJEX1JFR19FTFRfVFlQRSkgKDEpKSA8PCAocmVnbm8gKyBucmVn cykpKTsKICAgICAgfQp9CgoKCgpzdGF0aWMgdm9pZAptZXJnZV9vdmVybGFwcGluZ19yZWdz IChiLCBwc2V0LCBjaGFpbikKICAgICBiYXNpY19ibG9jayBiOwogICAgIEhBUkRfUkVHX0VM VF9UWVBFICpwc2V0OwogICAgIHN0cnVjdCBkdV9jaGFpbiAqY2hhaW47CnsKICBzdHJ1Y3Qg ZHVfY2hhaW4gKnQgPSBjaGFpbjsKICBydHggaW5zbjsKICBIQVJEX1JFR19FTFRfVFlQRSBs aXZlOwoKICBkbyB7ICgobGl2ZSkgPSAoKEhBUkRfUkVHX0VMVF9UWVBFKSAoMCkpKTsgcmVn X3NldF90b19oYXJkX3JlZ19zZXQgKCZsaXZlLCBiLT5nbG9iYWxfbGl2ZV9hdF9zdGFydCk7 IH0gd2hpbGUgKDApOwogIGluc24gPSBiLT5oZWFkOwogIHdoaWxlICh0KQogICAgewoKCiAg ICAgIHdoaWxlIChpbnNuICE9IHQtPmluc24pCiB7CiAgIGlmICgoKHJ0eF9jbGFzc1soaW50 KSAoKChlbnVtIHJ0eF9jb2RlKSAoaW5zbiktPmNvZGUpKV0pID09ICdpJykpCiAgICAgewog ICAgICAgY2xlYXJfZGVhZF9yZWdzICgmbGl2ZSwgUkVHX0RFQUQsICgoKGluc24pLT5mbGRb Nl0pLnJ0eCkpOwogICAgICAgbm90ZV9zdG9yZXMgKCgoKGluc24pLT5mbGRbM10pLnJ0eCks IG5vdGVfc2V0cywgKHZvaWQgKikgJmxpdmUpOwoKCiAgICAgICBpZiAodCAhPSBjaGFpbikK ICAoKCpwc2V0KSB8PSAobGl2ZSkpOwogICAgICAgY2xlYXJfZGVhZF9yZWdzICgmbGl2ZSwg UkVHX1VOVVNFRCwgKCgoaW5zbiktPmZsZFs2XSkucnR4KSk7CiAgICAgfQogICBpbnNuID0g KCgoaW5zbiktPmZsZFsyXSkucnR4KTsKIH0KCiAgICAgICgoKnBzZXQpIHw9IChsaXZlKSk7 CgoKCgogICAgICBpZiAoISB0LT5uZXh0X3VzZSkKIG5vdGVfc3RvcmVzICgoKChpbnNuKS0+ ZmxkWzNdKS5ydHgpLCBub3RlX3NldHMsICh2b2lkICopIHBzZXQpOwoKICAgICAgdCA9IHQt Pm5leHRfdXNlOwogICAgfQp9CgoKCnZvaWQKcmVncmVuYW1lX29wdGltaXplICgpCnsKICBp bnQgdGlja1s1M107CiAgaW50IHRoaXNfdGljayA9IDA7CiAgaW50IGI7CiAgY2hhciAqZmly c3Rfb2JqOwoKICBtZW1zZXQgKHRpY2ssIDAsIHNpemVvZiB0aWNrKTsKCiAgZ2NjX29ic3Rh Y2tfaW5pdCAoJnJlbmFtZV9vYnN0YWNrKTsKICBmaXJzdF9vYmogPSAoY2hhciAqKSBfX2V4 dGVuc2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpfX2ggPSAoJnJlbmFtZV9vYnN0YWNrKTsg X19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19vID0gKF9faCk7IGludCBfX2xl biA9ICgoMCkpOyBpZiAoX19vLT5jaHVua19saW1pdCAtIF9fby0+bmV4dF9mcmVlIDwgX19s ZW4pIF9vYnN0YWNrX25ld2NodW5rIChfX28sIF9fbGVuKTsgX19vLT5uZXh0X2ZyZWUgKz0g X19sZW47ICh2b2lkKSAwOyB9KTsgX19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAq X19vMSA9IChfX2gpOyB2b2lkICp2YWx1ZTsgdmFsdWUgPSAodm9pZCAqKSBfX28xLT5vYmpl Y3RfYmFzZTsgaWYgKF9fbzEtPm5leHRfZnJlZSA9PSB2YWx1ZSkgX19vMS0+bWF5YmVfZW1w dHlfb2JqZWN0ID0gMTsgX19vMS0+bmV4dF9mcmVlID0gKCgoKChfX28xLT5uZXh0X2ZyZWUp IC0gKGNoYXIgKikgMCkrX19vMS0+YWxpZ25tZW50X21hc2spICYgfiAoX19vMS0+YWxpZ25t ZW50X21hc2spKSArIChjaGFyICopIDApOyBpZiAoX19vMS0+bmV4dF9mcmVlIC0gKGNoYXIg KilfX28xLT5jaHVuayA+IF9fbzEtPmNodW5rX2xpbWl0IC0gKGNoYXIgKilfX28xLT5jaHVu aykgX19vMS0+bmV4dF9mcmVlID0gX19vMS0+Y2h1bmtfbGltaXQ7IF9fbzEtPm9iamVjdF9i YXNlID0gX19vMS0+bmV4dF9mcmVlOyB2YWx1ZTsgfSk7IH0pOwoKICBmb3IgKGIgPSAwOyBi IDwgbl9iYXNpY19ibG9ja3M7IGIrKykKICAgIHsKICAgICAgYmFzaWNfYmxvY2sgYmIgPSAo KChiYXNpY19ibG9ja19pbmZvKS0+ZGF0YS5iYlsoYildKSk7CiAgICAgIHN0cnVjdCBkdV9j aGFpbiAqYWxsX2NoYWlucyA9IDA7CiAgICAgIEhBUkRfUkVHX0VMVF9UWVBFIHVuYXZhaWxh YmxlOwogICAgICBIQVJEX1JFR19FTFRfVFlQRSByZWdzX3NlZW47CgogICAgICAoKHVuYXZh aWxhYmxlKSA9ICgoSEFSRF9SRUdfRUxUX1RZUEUpICgwKSkpOwoKICAgICAgaWYgKHJ0bF9k dW1wX2ZpbGUpCiBmcHJpbnRmIChydGxfZHVtcF9maWxlLCAiXG5CYXNpYyBibG9jayAlZDpc biIsIGIpOwoKICAgICAgYWxsX2NoYWlucyA9IGJ1aWxkX2RlZl91c2UgKGJiKTsKCiAgICAg IGlmIChydGxfZHVtcF9maWxlKQogZHVtcF9kZWZfdXNlX2NoYWluIChhbGxfY2hhaW5zKTsK CiAgICAgICgodW5hdmFpbGFibGUpID0gKChIQVJEX1JFR19FTFRfVFlQRSkgKDApKSk7Cgog ICAgICBpZiAoZnJhbWVfcG9pbnRlcl9uZWVkZWQpCiB7CiAgIGludCBpOwoKICAgZm9yIChp ID0gKCgoMjApID49IDggJiYgKDIwKSA8PSAoOCArIDcpKSB8fCAoKCgyMCkgPj0gKDIwICsg MSkgJiYgKDIwKSA8PSAoKDIwICsgMSkgKyA3KSkgfHwgKCgyMCkgPj0gKCgoKCgoKDIwICsg MSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpICsgMSkgJiYgKDIwKSA8PSAoKCgoKCgoKDIw ICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkpIHx8ICgoMjApID49 ICgoKDIwICsgMSkgKyA3KSArIDEpICYmICgyMCkgPD0gKCgoKDIwICsgMSkgKyA3KSArIDEp ICsgNykpID8gKCgobW9kZV9jbGFzc1soaW50KSAoKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAw MDAwKSA/IERJbW9kZSA6IFNJbW9kZSkpXSkgPT0gTU9ERV9DT01QTEVYX0lOVCB8fCAobW9k ZV9jbGFzc1soaW50KSAoKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IERJbW9kZSA6 IFNJbW9kZSkpXSkgPT0gTU9ERV9DT01QTEVYX0ZMT0FUKSA/IDIgOiAxKSA6ICgoKCh0YXJn ZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IERJbW9kZSA6IFNJbW9kZSkpID09IFRGbW9kZSA/ ICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyAyIDogMykgOiAoKCh0YXJnZXRfZmxh Z3MgJiAweDAyMDAwMDAwKSA/IERJbW9kZSA6IFNJbW9kZSkpID09IFRDbW9kZSA/ICgodGFy Z2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA0IDogNikgOiAoKChtb2RlX3NpemVbKGludCkg KCgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyBESW1vZGUgOiBTSW1vZGUpKV0pICsg KCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSAtIDEpIC8gKCh0YXJnZXRf ZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSkpKTsgaS0tOykKICAgICAoKHVuYXZhaWxh YmxlKSB8PSAoKEhBUkRfUkVHX0VMVF9UWVBFKSAoMSkpIDw8ICgyMCArIGkpKTsKCgogICBm b3IgKGkgPSAoKCg2KSA+PSA4ICYmICg2KSA8PSAoOCArIDcpKSB8fCAoKCg2KSA+PSAoMjAg KyAxKSAmJiAoNikgPD0gKCgyMCArIDEpICsgNykpIHx8ICgoNikgPj0gKCgoKCgoKDIwICsg MSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpICsgMSkgJiYgKDYpIDw9ICgoKCgoKCgoMjAg KyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpKSkgfHwgKCg2KSA+PSAo KCgyMCArIDEpICsgNykgKyAxKSAmJiAoNikgPD0gKCgoKDIwICsgMSkgKyA3KSArIDEpICsg NykpID8gKCgobW9kZV9jbGFzc1soaW50KSAoKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAw KSA/IERJbW9kZSA6IFNJbW9kZSkpXSkgPT0gTU9ERV9DT01QTEVYX0lOVCB8fCAobW9kZV9j bGFzc1soaW50KSAoKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IERJbW9kZSA6IFNJ bW9kZSkpXSkgPT0gTU9ERV9DT01QTEVYX0ZMT0FUKSA/IDIgOiAxKSA6ICgoKCh0YXJnZXRf ZmxhZ3MgJiAweDAyMDAwMDAwKSA/IERJbW9kZSA6IFNJbW9kZSkpID09IFRGbW9kZSA/ICgo dGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyAyIDogMykgOiAoKCh0YXJnZXRfZmxhZ3Mg JiAweDAyMDAwMDAwKSA/IERJbW9kZSA6IFNJbW9kZSkpID09IFRDbW9kZSA/ICgodGFyZ2V0 X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA0IDogNikgOiAoKChtb2RlX3NpemVbKGludCkgKCgo dGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyBESW1vZGUgOiBTSW1vZGUpKV0pICsgKCh0 YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSAtIDEpIC8gKCh0YXJnZXRfZmxh Z3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSkpKTsgaS0tOykKICAgICAoKHVuYXZhaWxhYmxl KSB8PSAoKEhBUkRfUkVHX0VMVF9UWVBFKSAoMSkpIDw8ICg2ICsgaSkpOwoKIH0KCiAgICAg ICgocmVnc19zZWVuKSA9ICgoSEFSRF9SRUdfRUxUX1RZUEUpICgwKSkpOwogICAgICB3aGls ZSAoYWxsX2NoYWlucykKIHsKICAgaW50IG5ld19yZWcsIGJlc3RfbmV3X3JlZyA9IC0xOwog ICBpbnQgbl91c2VzOwogICBzdHJ1Y3QgZHVfY2hhaW4gKnRoaXMgPSBhbGxfY2hhaW5zOwog ICBzdHJ1Y3QgZHVfY2hhaW4gKnRtcCwgKmxhc3Q7CiAgIEhBUkRfUkVHX0VMVF9UWVBFIHRo aXNfdW5hdmFpbGFibGU7CiAgIGludCByZWcgPSAoKCgqdGhpcy0+bG9jKS0+ZmxkWzBdKS5y dHVpbnQpOwogICBpbnQgaTsKCiAgIGFsbF9jaGFpbnMgPSB0aGlzLT5uZXh0X2NoYWluOwoj IDI2NiAicmVncmVuYW1lLmMiCiAgIGlmIChmaXhlZF9yZWdzW3JlZ10gfHwgZ2xvYmFsX3Jl Z3NbcmVnXQoKICAgICAgIHx8IChmcmFtZV9wb2ludGVyX25lZWRlZCAmJiByZWcgPT0gNikK CgoKICAgICAgICkKICAgICBjb250aW51ZTsKCiAgICgodGhpc191bmF2YWlsYWJsZSkgPSAo dW5hdmFpbGFibGUpKTsKCgoKCiAgIG5fdXNlcyA9IDA7CiAgIGZvciAobGFzdCA9IHRoaXM7 IGxhc3QtPm5leHRfdXNlOyBsYXN0ID0gbGFzdC0+bmV4dF91c2UpCiAgICAgewogICAgICAg bl91c2VzKys7CiAgICAgICAoKHRoaXNfdW5hdmFpbGFibGUpIHw9IH4gKHJlZ19jbGFzc19j b250ZW50c1tsYXN0LT5jbGFzc10pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7CiAgICAgfQogICBpZiAobl91c2VzIDwgMSkKICAgICBjb250aW51ZTsK CiAgICgodGhpc191bmF2YWlsYWJsZSkgfD0gfiAocmVnX2NsYXNzX2NvbnRlbnRzW2xhc3Qt PmNsYXNzXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAg aWYgKHRoaXMtPm5lZWRfY2FsbGVyX3NhdmVfcmVnKQogICAgICgodGhpc191bmF2YWlsYWJs ZSkgfD0gKGNhbGxfdXNlZF9yZWdfc2V0KSk7CgogICBtZXJnZV9vdmVybGFwcGluZ19yZWdz IChiYiwgJnRoaXNfdW5hdmFpbGFibGUsIHRoaXMpOwoKCgogICBmb3IgKG5ld19yZWcgPSAw OyBuZXdfcmVnIDwgNTM7IG5ld19yZWcrKykKICAgICB7CiAgICAgICBpbnQgbnJlZ3MgPSAo KChuZXdfcmVnKSA+PSA4ICYmIChuZXdfcmVnKSA8PSAoOCArIDcpKSB8fCAoKChuZXdfcmVn KSA+PSAoMjAgKyAxKSAmJiAobmV3X3JlZykgPD0gKCgyMCArIDEpICsgNykpIHx8ICgobmV3 X3JlZykgPj0gKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpICsgMSkg JiYgKG5ld19yZWcpIDw9ICgoKCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsg NykgKyAxKSArIDcpKSkgfHwgKChuZXdfcmVnKSA+PSAoKCgyMCArIDEpICsgNykgKyAxKSAm JiAobmV3X3JlZykgPD0gKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykpID8gKCgobW9kZV9j bGFzc1soaW50KSAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKCp0aGlzLT5sb2MpLT5tb2RlKSld KSA9PSBNT0RFX0NPTVBMRVhfSU5UIHx8IChtb2RlX2NsYXNzWyhpbnQpICgoKGVudW0gbWFj aGluZV9tb2RlKSAoKnRoaXMtPmxvYyktPm1vZGUpKV0pID09IE1PREVfQ09NUExFWF9GTE9B VCkgPyAyIDogMSkgOiAoKCgoZW51bSBtYWNoaW5lX21vZGUpICgqdGhpcy0+bG9jKS0+bW9k ZSkpID09IFRGbW9kZSA/ICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyAyIDogMykg OiAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKCp0aGlzLT5sb2MpLT5tb2RlKSkgPT0gVENtb2Rl ID8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDQgOiA2KSA6ICgoKG1vZGVfc2l6 ZVsoaW50KSAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKCp0aGlzLT5sb2MpLT5tb2RlKSldKSAr ICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkgLSAxKSAvICgodGFyZ2V0 X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkpKSk7CgogICAgICAgZm9yIChpID0gbnJl Z3MgLSAxOyBpID49IDA7IC0taSkKICAgICAgICAgaWYgKCgodGhpc191bmF2YWlsYWJsZSkg JiAoKChIQVJEX1JFR19FTFRfVFlQRSkgKDEpKSA8PCAobmV3X3JlZyArIGkpKSkKICAgICAg fHwgZml4ZWRfcmVnc1tuZXdfcmVnICsgaV0KICAgICAgfHwgZ2xvYmFsX3JlZ3NbbmV3X3Jl ZyArIGldCgogICAgICB8fCAoISByZWdzX2V2ZXJfbGl2ZVtuZXdfcmVnICsgaV0KICAgJiYg ISBjYWxsX3VzZWRfcmVnc1tuZXdfcmVnICsgaV0pCgoKCgoKCgogICAgICB8fCAhICgocmVn ICsgaSkgPCA4IHx8IChyZWcgKyBpKSA+ICg4ICsgNykpCgogICAgICApCiAgICBicmVhazsK ICAgICAgIGlmIChpID49IDApCiAgY29udGludWU7CgoKCiAgICAgICBmb3IgKHRtcCA9IHRo aXM7IHRtcDsgdG1wID0gdG1wLT5uZXh0X3VzZSkKICBpZiAoISBpeDg2X2hhcmRfcmVnbm9f bW9kZV9vayAoKG5ld19yZWcpLCAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKCp0bXAtPmxvYykt Pm1vZGUpKSkKICAgICAgfHwgKHRtcC0+bmVlZF9jYWxsZXJfc2F2ZV9yZWcKICAgJiYgISAo MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICYmICgwCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpCiAgICBicmVhazsKICAgICAg IGlmICghIHRtcCkKICB7CiAgICBpZiAoYmVzdF9uZXdfcmVnID09IC0xCiAgICAgICAgfHwg dGlja1tiZXN0X25ld19yZWddID4gdGlja1tuZXdfcmVnXSkKICAgICAgYmVzdF9uZXdfcmVn ID0gbmV3X3JlZzsKICB9CiAgICAgfQoKICAgaWYgKHJ0bF9kdW1wX2ZpbGUpCiAgICAgewog ICAgICAgZnByaW50ZiAocnRsX2R1bXBfZmlsZSwgIlJlZ2lzdGVyICVzIGluIGluc24gJWQi LAogICAgICAgICByZWdfbmFtZXNbcmVnXSwgKCgobGFzdC0+aW5zbiktPmZsZFswXSkucnRp bnQpKTsKICAgICAgIGlmIChsYXN0LT5uZWVkX2NhbGxlcl9zYXZlX3JlZykKICBmcHJpbnRm IChydGxfZHVtcF9maWxlLCAiIGNyb3NzZXMgYSBjYWxsIik7CiAgICAgICB9CgogICBpZiAo YmVzdF9uZXdfcmVnID09IC0xKQogICAgIHsKICAgICAgIGlmIChydGxfZHVtcF9maWxlKQog IGZwcmludGYgKHJ0bF9kdW1wX2ZpbGUsICI7IG5vIGF2YWlsYWJsZSByZWdpc3RlcnNcbiIp OwogICAgICAgY29udGludWU7CiAgICAgfQoKICAgZG9fcmVwbGFjZSAodGhpcywgYmVzdF9u ZXdfcmVnKTsKICAgdGlja1tiZXN0X25ld19yZWddID0gdGhpc190aWNrKys7CgogICBpZiAo cnRsX2R1bXBfZmlsZSkKICAgICBmcHJpbnRmIChydGxfZHVtcF9maWxlLCAiLCByZW5hbWVk IGFzICVzXG4iLCByZWdfbmFtZXNbYmVzdF9uZXdfcmVnXSk7CiB9CgogICAgICBfX2V4dGVu c2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpfX28gPSAoJnJlbmFtZV9vYnN0YWNrKTsgdm9p ZCAqX19vYmogPSAoZmlyc3Rfb2JqKTsgaWYgKF9fb2JqID4gKHZvaWQgKilfX28tPmNodW5r ICYmIF9fb2JqIDwgKHZvaWQgKilfX28tPmNodW5rX2xpbWl0KSBfX28tPm5leHRfZnJlZSA9 IF9fby0+b2JqZWN0X2Jhc2UgPSBfX29iajsgZWxzZSAob2JzdGFja19mcmVlKSAoX19vLCBf X29iaik7IH0pOwogICAgfQoKICBfX2V4dGVuc2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpf X28gPSAoJnJlbmFtZV9vYnN0YWNrKTsgdm9pZCAqX19vYmogPSAoCiMgMzY4ICJyZWdyZW5h bWUuYyIgMyA0CiAoKHZvaWQgKikwKQojIDM2OCAicmVncmVuYW1lLmMiCiApOyBpZiAoX19v YmogPiAodm9pZCAqKV9fby0+Y2h1bmsgJiYgX19vYmogPCAodm9pZCAqKV9fby0+Y2h1bmtf bGltaXQpIF9fby0+bmV4dF9mcmVlID0gX19vLT5vYmplY3RfYmFzZSA9IF9fb2JqOyBlbHNl IChvYnN0YWNrX2ZyZWUpIChfX28sIF9fb2JqKTsgfSk7CgogIGlmIChydGxfZHVtcF9maWxl KQogICAgZnB1dGMgKCdcbicsIHJ0bF9kdW1wX2ZpbGUpOwoKICBjb3VudF9vcl9yZW1vdmVf ZGVhdGhfbm90ZXMgKAojIDM3MyAicmVncmVuYW1lLmMiIDMgNAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKHZvaWQgKikwKQojIDM3MyAicmVncmVuYW1lLmMiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAsIDEpOwogIHVwZGF0ZV9saWZlX2luZm8gKAoj IDM3NCAicmVncmVuYW1lLmMiIDMgNAogICAgICAgICAgICAgICAgICAgKCh2b2lkICopMCkK IyAzNzQgInJlZ3JlbmFtZS5jIgogICAgICAgICAgICAgICAgICAgICAgICwgVVBEQVRFX0xJ RkVfTE9DQUwsCiAgICAgIDQgfCAxKTsKfQoKc3RhdGljIHZvaWQKZG9fcmVwbGFjZSAoY2hh aW4sIHJlZykKICAgICBzdHJ1Y3QgZHVfY2hhaW4gKmNoYWluOwogICAgIGludCByZWc7CnsK ICB3aGlsZSAoY2hhaW4pCiAgICB7CiAgICAgIHVuc2lnbmVkIGludCByZWdubyA9ICgoKCpj aGFpbi0+bG9jKS0+ZmxkWzFdKS5ydHVpbnQpOwogICAgICAqY2hhaW4tPmxvYyA9IGdlbl9y YXdfUkVHICgoKGVudW0gbWFjaGluZV9tb2RlKSAoKmNoYWluLT5sb2MpLT5tb2RlKSwgcmVn KTsKICAgICAgaWYgKHJlZ25vID49IDUzKQogKCgoKmNoYWluLT5sb2MpLT5mbGRbMV0pLnJ0 dWludCkgPSByZWdubzsKICAgICAgY2hhaW4gPSBjaGFpbi0+bmV4dF91c2U7CiAgICB9Cn0K CgpzdGF0aWMgc3RydWN0IGR1X2NoYWluICpvcGVuX2NoYWluczsKc3RhdGljIHN0cnVjdCBk dV9jaGFpbiAqY2xvc2VkX2NoYWluczsKCnN0YXRpYyB2b2lkCnNjYW5fcnR4X3JlZyAoaW5z biwgbG9jLCBjbGFzcywgYWN0aW9uLCB0eXBlLCBlYXJseWNsb2JiZXIpCiAgICAgcnR4IGlu c247CiAgICAgcnR4ICpsb2M7CiAgICAgZW51bSByZWdfY2xhc3MgY2xhc3M7CiAgICAgZW51 bSBzY2FuX2FjdGlvbnMgYWN0aW9uOwogICAgIGVudW0gb3BfdHlwZSB0eXBlOwogICAgIGlu dCBlYXJseWNsb2JiZXI7CnsKICBzdHJ1Y3QgZHVfY2hhaW4gKipwOwogIHJ0eCB4ID0gKmxv YzsKICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlID0gKChlbnVtIG1hY2hpbmVfbW9kZSkgKHgp LT5tb2RlKTsKICBpbnQgdGhpc19yZWdubyA9ICgoKHgpLT5mbGRbMF0pLnJ0dWludCk7CiAg aW50IHRoaXNfbnJlZ3MgPSAoKCh0aGlzX3JlZ25vKSA+PSA4ICYmICh0aGlzX3JlZ25vKSA8 PSAoOCArIDcpKSB8fCAoKCh0aGlzX3JlZ25vKSA+PSAoMjAgKyAxKSAmJiAodGhpc19yZWdu bykgPD0gKCgyMCArIDEpICsgNykpIHx8ICgodGhpc19yZWdubykgPj0gKCgoKCgoKDIwICsg MSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpICsgMSkgJiYgKHRoaXNfcmVnbm8pIDw9ICgo KCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpKSkgfHwg KCh0aGlzX3JlZ25vKSA+PSAoKCgyMCArIDEpICsgNykgKyAxKSAmJiAodGhpc19yZWdubykg PD0gKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykpID8gKCgobW9kZV9jbGFzc1soaW50KSAo bW9kZSldKSA9PSBNT0RFX0NPTVBMRVhfSU5UIHx8IChtb2RlX2NsYXNzWyhpbnQpIChtb2Rl KV0pID09IE1PREVfQ09NUExFWF9GTE9BVCkgPyAyIDogMSkgOiAoKG1vZGUpID09IFRGbW9k ZSA/ICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyAyIDogMykgOiAobW9kZSkgPT0g VENtb2RlID8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDQgOiA2KSA6ICgoKG1v ZGVfc2l6ZVsoaW50KSAobW9kZSldKSArICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkg PyA4IDogNCkgLSAxKSAvICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkp KSk7CgogIGlmIChhY3Rpb24gPT0gbWFya193cml0ZSkKICAgIHsKICAgICAgaWYgKHR5cGUg PT0gT1BfT1VUKQogewogICBzdHJ1Y3QgZHVfY2hhaW4gKnRoaXMgPSAoc3RydWN0IGR1X2No YWluICopCiAgICAgX19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19oID0gKCZy ZW5hbWVfb2JzdGFjayk7IF9fZXh0ZW5zaW9uX18gKHsgc3RydWN0IG9ic3RhY2sgKl9fbyA9 IChfX2gpOyBpbnQgX19sZW4gPSAoKHNpemVvZiAoc3RydWN0IGR1X2NoYWluKSkpOyBpZiAo X19vLT5jaHVua19saW1pdCAtIF9fby0+bmV4dF9mcmVlIDwgX19sZW4pIF9vYnN0YWNrX25l d2NodW5rIChfX28sIF9fbGVuKTsgX19vLT5uZXh0X2ZyZWUgKz0gX19sZW47ICh2b2lkKSAw OyB9KTsgX19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFjayAqX19vMSA9IChfX2gpOyB2 b2lkICp2YWx1ZTsgdmFsdWUgPSAodm9pZCAqKSBfX28xLT5vYmplY3RfYmFzZTsgaWYgKF9f bzEtPm5leHRfZnJlZSA9PSB2YWx1ZSkgX19vMS0+bWF5YmVfZW1wdHlfb2JqZWN0ID0gMTsg X19vMS0+bmV4dF9mcmVlID0gKCgoKChfX28xLT5uZXh0X2ZyZWUpIC0gKGNoYXIgKikgMCkr X19vMS0+YWxpZ25tZW50X21hc2spICYgfiAoX19vMS0+YWxpZ25tZW50X21hc2spKSArIChj aGFyICopIDApOyBpZiAoX19vMS0+bmV4dF9mcmVlIC0gKGNoYXIgKilfX28xLT5jaHVuayA+ IF9fbzEtPmNodW5rX2xpbWl0IC0gKGNoYXIgKilfX28xLT5jaHVuaykgX19vMS0+bmV4dF9m cmVlID0gX19vMS0+Y2h1bmtfbGltaXQ7IF9fbzEtPm9iamVjdF9iYXNlID0gX19vMS0+bmV4 dF9mcmVlOyB2YWx1ZTsgfSk7IH0pOwogICB0aGlzLT5uZXh0X3VzZSA9IDA7CiAgIHRoaXMt Pm5leHRfY2hhaW4gPSBvcGVuX2NoYWluczsKICAgdGhpcy0+bG9jID0gbG9jOwogICB0aGlz LT5pbnNuID0gaW5zbjsKICAgdGhpcy0+Y2xhc3MgPSBjbGFzczsKICAgdGhpcy0+bmVlZF9j YWxsZXJfc2F2ZV9yZWcgPSAwOwogICB0aGlzLT5lYXJseWNsb2JiZXIgPSBlYXJseWNsb2Ji ZXI7CiAgIG9wZW5fY2hhaW5zID0gdGhpczsKIH0KICAgICAgcmV0dXJuOwogICAgfQoKICBp ZiAoKHR5cGUgPT0gT1BfT1VUICYmIGFjdGlvbiAhPSB0ZXJtaW5hdGVfd3JpdGUpCiAgICAg IHx8ICh0eXBlICE9IE9QX09VVCAmJiBhY3Rpb24gPT0gdGVybWluYXRlX3dyaXRlKSkKICAg IHJldHVybjsKCiAgZm9yIChwID0gJm9wZW5fY2hhaW5zOyAqcDspCiAgICB7CiAgICAgIHN0 cnVjdCBkdV9jaGFpbiAqdGhpcyA9ICpwOwojIDQ0NSAicmVncmVuYW1lLmMiCiAgICAgIGlm ICgqdGhpcy0+bG9jID09IChnbG9iYWxfcnRsW0dSX0NDMF0pKQogcCA9ICZ0aGlzLT5uZXh0 X2NoYWluOwogICAgICBlbHNlCiAgICAgICAgewogICBpbnQgcmVnbm8gPSAoKCgqdGhpcy0+ bG9jKS0+ZmxkWzBdKS5ydHVpbnQpOwogICBpbnQgbnJlZ3MgPSAoKChyZWdubykgPj0gOCAm JiAocmVnbm8pIDw9ICg4ICsgNykpIHx8ICgoKHJlZ25vKSA+PSAoMjAgKyAxKSAmJiAocmVn bm8pIDw9ICgoMjAgKyAxKSArIDcpKSB8fCAoKHJlZ25vKSA+PSAoKCgoKCgoMjAgKyAxKSAr IDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAmJiAocmVnbm8pIDw9ICgoKCgoKCgoMjAg KyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpKSkgfHwgKChyZWdubykg Pj0gKCgoMjAgKyAxKSArIDcpICsgMSkgJiYgKHJlZ25vKSA8PSAoKCgoMjAgKyAxKSArIDcp ICsgMSkgKyA3KSkgPyAoKChtb2RlX2NsYXNzWyhpbnQpICgoKGVudW0gbWFjaGluZV9tb2Rl KSAoKnRoaXMtPmxvYyktPm1vZGUpKV0pID09IE1PREVfQ09NUExFWF9JTlQgfHwgKG1vZGVf Y2xhc3NbKGludCkgKCgoZW51bSBtYWNoaW5lX21vZGUpICgqdGhpcy0+bG9jKS0+bW9kZSkp XSkgPT0gTU9ERV9DT01QTEVYX0ZMT0FUKSA/IDIgOiAxKSA6ICgoKChlbnVtIG1hY2hpbmVf bW9kZSkgKCp0aGlzLT5sb2MpLT5tb2RlKSkgPT0gVEZtb2RlID8gKCh0YXJnZXRfZmxhZ3Mg JiAweDAyMDAwMDAwKSA/IDIgOiAzKSA6ICgoKGVudW0gbWFjaGluZV9tb2RlKSAoKnRoaXMt PmxvYyktPm1vZGUpKSA9PSBUQ21vZGUgPyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDAp ID8gNCA6IDYpIDogKCgobW9kZV9zaXplWyhpbnQpICgoKGVudW0gbWFjaGluZV9tb2RlKSAo KnRoaXMtPmxvYyktPm1vZGUpKV0pICsgKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/ IDggOiA0KSAtIDEpIC8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSkp KTsKICAgaW50IGV4YWN0X21hdGNoID0gKHJlZ25vID09IHRoaXNfcmVnbm8gJiYgbnJlZ3Mg PT0gdGhpc19ucmVncyk7CgogICBpZiAocmVnbm8gKyBucmVncyA8PSB0aGlzX3JlZ25vCiAg ICAgICB8fCB0aGlzX3JlZ25vICsgdGhpc19ucmVncyA8PSByZWdubykKICAgICB7CiAgICAg ICBwID0gJnRoaXMtPm5leHRfY2hhaW47CiAgICAgICBjb250aW51ZTsKICAgICB9CgogICBp ZiAoYWN0aW9uID09IG1hcmtfcmVhZCkKICAgICB7CiAgICAgICBpZiAoISBleGFjdF9tYXRj aCkKICBmYW5jeV9hYm9ydCAoInJlZ3JlbmFtZS5jIiwgNDYzLCBfX0ZVTkNUSU9OX18pOwoK CgoKCiAgICAgICBpZiAoY2xhc3MgIT0gTk9fUkVHUykKICB7CiAgICB0aGlzID0gKHN0cnVj dCBkdV9jaGFpbiAqKQogICAgICBfX2V4dGVuc2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpf X2ggPSAoJnJlbmFtZV9vYnN0YWNrKTsgX19leHRlbnNpb25fXyAoeyBzdHJ1Y3Qgb2JzdGFj ayAqX19vID0gKF9faCk7IGludCBfX2xlbiA9ICgoc2l6ZW9mIChzdHJ1Y3QgZHVfY2hhaW4p KSk7IGlmIChfX28tPmNodW5rX2xpbWl0IC0gX19vLT5uZXh0X2ZyZWUgPCBfX2xlbikgX29i c3RhY2tfbmV3Y2h1bmsgKF9fbywgX19sZW4pOyBfX28tPm5leHRfZnJlZSArPSBfX2xlbjsg KHZvaWQpIDA7IH0pOyBfX2V4dGVuc2lvbl9fICh7IHN0cnVjdCBvYnN0YWNrICpfX28xID0g KF9faCk7IHZvaWQgKnZhbHVlOyB2YWx1ZSA9ICh2b2lkICopIF9fbzEtPm9iamVjdF9iYXNl OyBpZiAoX19vMS0+bmV4dF9mcmVlID09IHZhbHVlKSBfX28xLT5tYXliZV9lbXB0eV9vYmpl Y3QgPSAxOyBfX28xLT5uZXh0X2ZyZWUgPSAoKCgoKF9fbzEtPm5leHRfZnJlZSkgLSAoY2hh ciAqKSAwKStfX28xLT5hbGlnbm1lbnRfbWFzaykgJiB+IChfX28xLT5hbGlnbm1lbnRfbWFz aykpICsgKGNoYXIgKikgMCk7IGlmIChfX28xLT5uZXh0X2ZyZWUgLSAoY2hhciAqKV9fbzEt PmNodW5rID4gX19vMS0+Y2h1bmtfbGltaXQgLSAoY2hhciAqKV9fbzEtPmNodW5rKSBfX28x LT5uZXh0X2ZyZWUgPSBfX28xLT5jaHVua19saW1pdDsgX19vMS0+b2JqZWN0X2Jhc2UgPSBf X28xLT5uZXh0X2ZyZWU7IHZhbHVlOyB9KTsgfSk7CiAgICB0aGlzLT5uZXh0X3VzZSA9IDA7 CiAgICB0aGlzLT5uZXh0X2NoYWluID0gKCpwKS0+bmV4dF9jaGFpbjsKICAgIHRoaXMtPmxv YyA9IGxvYzsKICAgIHRoaXMtPmluc24gPSBpbnNuOwogICAgdGhpcy0+Y2xhc3MgPSBjbGFz czsKICAgIHRoaXMtPm5lZWRfY2FsbGVyX3NhdmVfcmVnID0gMDsKICAgIHdoaWxlICgqcCkK ICAgICAgcCA9ICYoKnApLT5uZXh0X3VzZTsKICAgICpwID0gdGhpczsKICAgIHJldHVybjsK ICB9CiAgICAgfQoKICAgaWYgKGFjdGlvbiAhPSB0ZXJtaW5hdGVfb3ZlcmxhcHBpbmdfcmVh ZCB8fCAhIGV4YWN0X21hdGNoKQogICAgIHsKICAgICAgIHN0cnVjdCBkdV9jaGFpbiAqbmV4 dCA9IHRoaXMtPm5leHRfY2hhaW47CgoKCgoKICAgICAgIGlmICgoYWN0aW9uID09IHRlcm1p bmF0ZV9kZWFkIHx8IGFjdGlvbiA9PSB0ZXJtaW5hdGVfd3JpdGUpCiAgICAmJiBleGFjdF9t YXRjaCkKICB7CiAgICB0aGlzLT5uZXh0X2NoYWluID0gY2xvc2VkX2NoYWluczsKICAgIGNs b3NlZF9jaGFpbnMgPSB0aGlzOwogICAgaWYgKHJ0bF9kdW1wX2ZpbGUpCiAgICAgIGZwcmlu dGYgKHJ0bF9kdW1wX2ZpbGUsCiAgICAgICAgIkNsb3NpbmcgY2hhaW4gJXMgYXQgaW5zbiAl ZCAoJXMpXG4iLAogICAgICAgIHJlZ19uYW1lc1soKCgqdGhpcy0+bG9jKS0+ZmxkWzBdKS5y dHVpbnQpXSwgKCgoaW5zbiktPmZsZFswXSkucnRpbnQpLAogICAgICAgIHNjYW5fYWN0aW9u c19uYW1lWyhpbnQpIGFjdGlvbl0pOwogIH0KICAgICAgIGVsc2UKICB7CiAgICBpZiAocnRs X2R1bXBfZmlsZSkKICAgICAgZnByaW50ZiAocnRsX2R1bXBfZmlsZSwKICAgICAgICAiRGlz Y2FyZGluZyBjaGFpbiAlcyBhdCBpbnNuICVkICglcylcbiIsCiAgICAgICAgcmVnX25hbWVz WygoKCp0aGlzLT5sb2MpLT5mbGRbMF0pLnJ0dWludCldLCAoKChpbnNuKS0+ZmxkWzBdKS5y dGludCksCiAgICAgICAgc2Nhbl9hY3Rpb25zX25hbWVbKGludCkgYWN0aW9uXSk7CiAgfQog ICAgICAgKnAgPSBuZXh0OwogICAgIH0KICAgZWxzZQogICAgIHAgPSAmdGhpcy0+bmV4dF9j aGFpbjsKIH0KICAgIH0KfQoKCgoKc3RhdGljIHZvaWQKc2Nhbl9ydHhfYWRkcmVzcyAoaW5z biwgbG9jLCBjbGFzcywgYWN0aW9uLCBtb2RlKQogICAgIHJ0eCBpbnNuOwogICAgIHJ0eCAq bG9jOwogICAgIGVudW0gcmVnX2NsYXNzIGNsYXNzOwogICAgIGVudW0gc2Nhbl9hY3Rpb25z IGFjdGlvbjsKICAgICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlOwp7CiAgcnR4IHggPSAqbG9j OwogIGVudW0gcnR4X2NvZGUgY29kZSA9ICgoZW51bSBydHhfY29kZSkgKHgpLT5jb2RlKTsK ICBjb25zdCBjaGFyICpmbXQ7CiAgaW50IGksIGo7CgogIGlmIChhY3Rpb24gPT0gbWFya193 cml0ZSkKICAgIHJldHVybjsKCiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBQTFVT OgogICAgICB7CiBydHggb3JpZ19vcDAgPSAoKCh4KS0+ZmxkWzBdKS5ydHgpOwogcnR4IG9y aWdfb3AxID0gKCgoeCktPmZsZFsxXSkucnR4KTsKIGVudW0gcnR4X2NvZGUgY29kZTAgPSAo KGVudW0gcnR4X2NvZGUpIChvcmlnX29wMCktPmNvZGUpOwogZW51bSBydHhfY29kZSBjb2Rl MSA9ICgoZW51bSBydHhfY29kZSkgKG9yaWdfb3AxKS0+Y29kZSk7CiBydHggb3AwID0gb3Jp Z19vcDA7CiBydHggb3AxID0gb3JpZ19vcDE7CiBydHggKmxvY0kgPSAKIyA1NTAgInJlZ3Jl bmFtZS5jIiAzIDQKICAgICAgICAgICAgKCh2b2lkICopMCkKIyA1NTAgInJlZ3JlbmFtZS5j IgogICAgICAgICAgICAgICAgOwogcnR4ICpsb2NCID0gCiMgNTUxICJyZWdyZW5hbWUuYyIg MyA0CiAgICAgICAgICAgICgodm9pZCAqKTApCiMgNTUxICJyZWdyZW5hbWUuYyIKICAgICAg ICAgICAgICAgIDsKCiBpZiAoKChlbnVtIHJ0eF9jb2RlKSAob3AwKS0+Y29kZSkgPT0gU1VC UkVHKQogICB7CiAgICAgb3AwID0gKCgob3AwKS0+ZmxkWzBdKS5ydHgpOwogICAgIGNvZGUw ID0gKChlbnVtIHJ0eF9jb2RlKSAob3AwKS0+Y29kZSk7CiAgIH0KCiBpZiAoKChlbnVtIHJ0 eF9jb2RlKSAob3AxKS0+Y29kZSkgPT0gU1VCUkVHKQogICB7CiAgICAgb3AxID0gKCgob3Ax KS0+ZmxkWzBdKS5ydHgpOwogICAgIGNvZGUxID0gKChlbnVtIHJ0eF9jb2RlKSAob3AxKS0+ Y29kZSk7CiAgIH0KCiBpZiAoY29kZTAgPT0gTVVMVCB8fCBjb2RlMCA9PSBTSUdOX0VYVEVO RCB8fCBjb2RlMCA9PSBUUlVOQ0FURQogICAgIHx8IGNvZGUwID09IFpFUk9fRVhURU5EIHx8 IGNvZGUxID09IE1FTSkKICAgewogICAgIGxvY0kgPSAmKCgoeCktPmZsZFswXSkucnR4KTsK ICAgICBsb2NCID0gJigoKHgpLT5mbGRbMV0pLnJ0eCk7CiAgIH0KIGVsc2UgaWYgKGNvZGUx ID09IE1VTFQgfHwgY29kZTEgPT0gU0lHTl9FWFRFTkQgfHwgY29kZTEgPT0gVFJVTkNBVEUK ICAgfHwgY29kZTEgPT0gWkVST19FWFRFTkQgfHwgY29kZTAgPT0gTUVNKQogICB7CiAgICAg bG9jSSA9ICYoKCh4KS0+ZmxkWzFdKS5ydHgpOwogICAgIGxvY0IgPSAmKCgoeCktPmZsZFsw XSkucnR4KTsKICAgfQogZWxzZSBpZiAoY29kZTAgPT0gQ09OU1RfSU5UIHx8IGNvZGUwID09 IENPTlNUCiAgIHx8IGNvZGUwID09IFNZTUJPTF9SRUYgfHwgY29kZTAgPT0gTEFCRUxfUkVG KQogICBsb2NCID0gJigoKHgpLT5mbGRbMV0pLnJ0eCk7CiBlbHNlIGlmIChjb2RlMSA9PSBD T05TVF9JTlQgfHwgY29kZTEgPT0gQ09OU1QKICAgfHwgY29kZTEgPT0gU1lNQk9MX1JFRiB8 fCBjb2RlMSA9PSBMQUJFTF9SRUYpCiAgIGxvY0IgPSAmKCgoeCktPmZsZFswXSkucnR4KTsK IGVsc2UgaWYgKGNvZGUwID09IFJFRyAmJiBjb2RlMSA9PSBSRUcpCiAgIHsKICAgICBpbnQg aW5kZXhfb3A7CgogICAgIGlmICgoKCgoKG9wMCktPmZsZFswXSkucnR1aW50KSkgPCA3IHx8 ICgoKChvcDApLT5mbGRbMF0pLnJ0dWludCkgPj0gKCgoKCgyMCArIDEpICsgNykgKyAxKSAr IDcpICsgMSkgJiYgKCgoKG9wMCktPmZsZFswXSkucnR1aW50KSkgPD0gKCgoKCgoMjAgKyAx KSArIDcpICsgMSkgKyA3KSArIDEpICsgNykpIHx8ICgodW5zaWduZWQpIHJlZ19yZW51bWJl clsoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQpKV0gPj0gKCgoKCgyMCArIDEpICsgNykgKyAx KSArIDcpICsgMSkgJiYgKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgoKG9wMCktPmZsZFsw XSkucnR1aW50KSldIDw9ICgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcp KSB8fCAodW5zaWduZWQpIHJlZ19yZW51bWJlclsoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQp KV0gPCA3KQogICYmICgoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKSA8PSA3IHx8ICgoKChv cDEpLT5mbGRbMF0pLnJ0dWludCkpID09IDE2IHx8ICgoKChvcDEpLT5mbGRbMF0pLnJ0dWlu dCkpID09IDIwIHx8ICgoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkgPj0gKCgoKCgyMCArIDEp ICsgNykgKyAxKSArIDcpICsgMSkgJiYgKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSkgPD0g KCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykpIHx8ICgodW5zaWduZWQp IHJlZ19yZW51bWJlclsoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKV0gPj0gKCgoKCgyMCAr IDEpICsgNykgKyAxKSArIDcpICsgMSkgJiYgKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgo KG9wMSktPmZsZFswXSkucnR1aW50KSldIDw9ICgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsg NykgKyAxKSArIDcpKSB8fCAodW5zaWduZWQpIHJlZ19yZW51bWJlclsoKCgob3AxKS0+Zmxk WzBdKS5ydHVpbnQpKV0gPD0gNykpCiAgICAgICBpbmRleF9vcCA9IDA7CiAgICAgZWxzZSBp ZiAoKCgoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkpIDwgNyB8fCAoKCgob3AxKS0+ZmxkWzBd KS5ydHVpbnQpID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmICgoKChv cDEpLT5mbGRbMF0pLnJ0dWludCkpIDw9ICgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykg KyAxKSArIDcpKSB8fCAoKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgoKG9wMSktPmZsZFsw XSkucnR1aW50KSldID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmICh1 bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkpXSA8PSAo KCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkgfHwgKHVuc2lnbmVkKSBy ZWdfcmVudW1iZXJbKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSldIDwgNykKICAgICAgICYm ICgoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQpKSA8PSA3IHx8ICgoKChvcDApLT5mbGRbMF0p LnJ0dWludCkpID09IDE2IHx8ICgoKChvcDApLT5mbGRbMF0pLnJ0dWludCkpID09IDIwIHx8 ICgoKChvcDApLT5mbGRbMF0pLnJ0dWludCkgPj0gKCgoKCgyMCArIDEpICsgNykgKyAxKSAr IDcpICsgMSkgJiYgKCgoKG9wMCktPmZsZFswXSkucnR1aW50KSkgPD0gKCgoKCgoMjAgKyAx KSArIDcpICsgMSkgKyA3KSArIDEpICsgNykpIHx8ICgodW5zaWduZWQpIHJlZ19yZW51bWJl clsoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQpKV0gPj0gKCgoKCgyMCArIDEpICsgNykgKyAx KSArIDcpICsgMSkgJiYgKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgoKG9wMCktPmZsZFsw XSkucnR1aW50KSldIDw9ICgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcp KSB8fCAodW5zaWduZWQpIHJlZ19yZW51bWJlclsoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQp KV0gPD0gNykpCiAgICAgICBpbmRleF9vcCA9IDE7CiAgICAgZWxzZSBpZiAoKCgoKChvcDEp LT5mbGRbMF0pLnJ0dWludCkpIDw9IDcgfHwgKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSkg PT0gMTYgfHwgKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSkgPT0gMjAgfHwgKCgoKG9wMSkt PmZsZFswXSkucnR1aW50KSA+PSAoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAm JiAoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKSA8PSAoKCgoKCgyMCArIDEpICsgNykgKyAx KSArIDcpICsgMSkgKyA3KSkgfHwgKCh1bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDEp LT5mbGRbMF0pLnJ0dWludCkpXSA+PSAoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAx KSAmJiAodW5zaWduZWQpIHJlZ19yZW51bWJlclsoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQp KV0gPD0gKCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykpIHx8ICh1bnNp Z25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkpXSA8PSA3KSkK ICAgICAgIGluZGV4X29wID0gMDsKICAgICBlbHNlIGlmICgoKCgoKG9wMCktPmZsZFswXSku cnR1aW50KSkgPD0gNyB8fCAoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQpKSA9PSAxNiB8fCAo KCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQpKSA9PSAyMCB8fCAoKCgob3AwKS0+ZmxkWzBdKS5y dHVpbnQpID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmICgoKChvcDAp LT5mbGRbMF0pLnJ0dWludCkpIDw9ICgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAx KSArIDcpKSB8fCAoKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgoKG9wMCktPmZsZFswXSku cnR1aW50KSldID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmICh1bnNp Z25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDApLT5mbGRbMF0pLnJ0dWludCkpXSA8PSAoKCgo KCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkgfHwgKHVuc2lnbmVkKSByZWdf cmVudW1iZXJbKCgoKG9wMCktPmZsZFswXSkucnR1aW50KSldIDw9IDcpKQogICAgICAgaW5k ZXhfb3AgPSAxOwogICAgIGVsc2UgaWYgKCgoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKSA8 IDcgfHwgKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSA+PSAoKCgoKDIwICsgMSkgKyA3KSAr IDEpICsgNykgKyAxKSAmJiAoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKSA8PSAoKCgoKCgy MCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkgfHwgKCh1bnNpZ25lZCkgcmVnX3Jl bnVtYmVyWygoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkpXSA+PSAoKCgoKDIwICsgMSkgKyA3 KSArIDEpICsgNykgKyAxKSAmJiAodW5zaWduZWQpIHJlZ19yZW51bWJlclsoKCgob3AxKS0+ ZmxkWzBdKS5ydHVpbnQpKV0gPD0gKCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEp ICsgNykpIHx8ICh1bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDEpLT5mbGRbMF0pLnJ0 dWludCkpXSA8IDcpKQogICAgICAgaW5kZXhfb3AgPSAxOwogICAgIGVsc2UKICAgICAgIGlu ZGV4X29wID0gMDsKCiAgICAgbG9jSSA9ICYoKCh4KS0+ZmxkW2luZGV4X29wXSkucnR4KTsK ICAgICBsb2NCID0gJigoKHgpLT5mbGRbIWluZGV4X29wXSkucnR4KTsKICAgfQogZWxzZSBp ZiAoY29kZTAgPT0gUkVHKQogICB7CiAgICAgbG9jSSA9ICYoKCh4KS0+ZmxkWzBdKS5ydHgp OwogICAgIGxvY0IgPSAmKCgoeCktPmZsZFsxXSkucnR4KTsKICAgfQogZWxzZSBpZiAoY29k ZTEgPT0gUkVHKQogICB7CiAgICAgbG9jSSA9ICYoKCh4KS0+ZmxkWzFdKS5ydHgpOwogICAg IGxvY0IgPSAmKCgoeCktPmZsZFswXSkucnR4KTsKICAgfQoKIGlmIChsb2NJKQogICBzY2Fu X3J0eF9hZGRyZXNzIChpbnNuLCBsb2NJLCBJTkRFWF9SRUdTLCBhY3Rpb24sIG1vZGUpOwog aWYgKGxvY0IpCiAgIHNjYW5fcnR4X2FkZHJlc3MgKGluc24sIGxvY0IsIEdFTkVSQUxfUkVH UywgYWN0aW9uLCBtb2RlKTsKIHJldHVybjsKICAgICAgfQoKICAgIGNhc2UgUE9TVF9JTkM6 CiAgICBjYXNlIFBPU1RfREVDOgogICAgY2FzZSBQT1NUX01PRElGWToKICAgIGNhc2UgUFJF X0lOQzoKICAgIGNhc2UgUFJFX0RFQzoKICAgIGNhc2UgUFJFX01PRElGWToKCgoKICAgICAg YWN0aW9uID0gdGVybWluYXRlX2FsbF9yZWFkOwoKICAgICAgYnJlYWs7CgogICAgY2FzZSBN RU06CiAgICAgIHNjYW5fcnR4X2FkZHJlc3MgKGluc24sICYoKCh4KS0+ZmxkWzBdKS5ydHgp LAogICBHRU5FUkFMX1JFR1MsIGFjdGlvbiwKICAgKChlbnVtIG1hY2hpbmVfbW9kZSkgKHgp LT5tb2RlKSk7CiAgICAgIHJldHVybjsKCiAgICBjYXNlIFJFRzoKICAgICAgc2Nhbl9ydHhf cmVnIChpbnNuLCBsb2MsIGNsYXNzLCBhY3Rpb24sIE9QX0lOLCAwKTsKICAgICAgcmV0dXJu OwoKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAgfQoKICBmbXQgPSAocnR4X2Zvcm1h dFsoaW50KSAoY29kZSldKTsKICBmb3IgKGkgPSAocnR4X2xlbmd0aFsoaW50KSAoY29kZSld KSAtIDE7IGkgPj0gMDsgaS0tKQogICAgewogICAgICBpZiAoZm10W2ldID09ICdlJykKIHNj YW5fcnR4X2FkZHJlc3MgKGluc24sICYoKCh4KS0+ZmxkW2ldKS5ydHgpLCBjbGFzcywgYWN0 aW9uLCBtb2RlKTsKICAgICAgZWxzZSBpZiAoZm10W2ldID09ICdFJykKIGZvciAoaiA9ICgo KCgoeCktPmZsZFtpXSkucnR2ZWMpKS0+bnVtX2VsZW0pIC0gMTsgaiA+PSAwOyBqLS0pCiAg IHNjYW5fcnR4X2FkZHJlc3MgKGluc24sICYoKCgoKHgpLT5mbGRbaV0pLnJ0dmVjKSktPmVs ZW1bal0pLCBjbGFzcywgYWN0aW9uLCBtb2RlKTsKICAgIH0KfQoKc3RhdGljIHZvaWQKc2Nh bl9ydHggKGluc24sIGxvYywgY2xhc3MsIGFjdGlvbiwgdHlwZSwgZWFybHljbG9iYmVyKQog ICAgIHJ0eCBpbnNuOwogICAgIHJ0eCAqbG9jOwogICAgIGVudW0gcmVnX2NsYXNzIGNsYXNz OwogICAgIGVudW0gc2Nhbl9hY3Rpb25zIGFjdGlvbjsKICAgICBlbnVtIG9wX3R5cGUgdHlw ZTsKICAgICBpbnQgZWFybHljbG9iYmVyOwp7CiAgY29uc3QgY2hhciAqZm10OwogIHJ0eCB4 ID0gKmxvYzsKICBlbnVtIHJ0eF9jb2RlIGNvZGUgPSAoKGVudW0gcnR4X2NvZGUpICh4KS0+ Y29kZSk7CiAgaW50IGksIGo7CgogIGNvZGUgPSAoKGVudW0gcnR4X2NvZGUpICh4KS0+Y29k ZSk7CiAgc3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBDT05TVDoKICAgIGNhc2UgQ09O U1RfSU5UOgogICAgY2FzZSBDT05TVF9ET1VCTEU6CiAgICBjYXNlIENPTlNUX1ZFQ1RPUjoK ICAgIGNhc2UgU1lNQk9MX1JFRjoKICAgIGNhc2UgTEFCRUxfUkVGOgogICAgY2FzZSBDQzA6 CiAgICBjYXNlIFBDOgogICAgICByZXR1cm47CgogICAgY2FzZSBSRUc6CiAgICAgIHNjYW5f cnR4X3JlZyAoaW5zbiwgbG9jLCBjbGFzcywgYWN0aW9uLCB0eXBlLCBlYXJseWNsb2JiZXIp OwogICAgICByZXR1cm47CgogICAgY2FzZSBNRU06CiAgICAgIHNjYW5fcnR4X2FkZHJlc3Mg KGluc24sICYoKCh4KS0+ZmxkWzBdKS5ydHgpLAogICBHRU5FUkFMX1JFR1MsIGFjdGlvbiwK ICAgKChlbnVtIG1hY2hpbmVfbW9kZSkgKHgpLT5tb2RlKSk7CiAgICAgIHJldHVybjsKCiAg ICBjYXNlIFNFVDoKICAgICAgc2Nhbl9ydHggKGluc24sICYoKCh4KS0+ZmxkWzFdKS5ydHgp LCBjbGFzcywgYWN0aW9uLCBPUF9JTiwgMCk7CiAgICAgIHNjYW5fcnR4IChpbnNuLCAmKCgo eCktPmZsZFswXSkucnR4KSwgY2xhc3MsIGFjdGlvbiwgT1BfT1VULCAwKTsKICAgICAgcmV0 dXJuOwoKICAgIGNhc2UgU1RSSUNUX0xPV19QQVJUOgogICAgICBzY2FuX3J0eCAoaW5zbiwg JigoKHgpLT5mbGRbMF0pLnJ0eCksIGNsYXNzLCBhY3Rpb24sIE9QX0lOT1VULCBlYXJseWNs b2JiZXIpOwogICAgICByZXR1cm47CgogICAgY2FzZSBaRVJPX0VYVFJBQ1Q6CiAgICBjYXNl IFNJR05fRVhUUkFDVDoKICAgICAgc2Nhbl9ydHggKGluc24sICYoKCh4KS0+ZmxkWzBdKS5y dHgpLCBjbGFzcywgYWN0aW9uLAogIHR5cGUgPT0gT1BfSU4gPyBPUF9JTiA6IE9QX0lOT1VU LCBlYXJseWNsb2JiZXIpOwogICAgICBzY2FuX3J0eCAoaW5zbiwgJigoKHgpLT5mbGRbMV0p LnJ0eCksIGNsYXNzLCBhY3Rpb24sIE9QX0lOLCAwKTsKICAgICAgc2Nhbl9ydHggKGluc24s ICYoKCh4KS0+ZmxkWzJdKS5ydHgpLCBjbGFzcywgYWN0aW9uLCBPUF9JTiwgMCk7CiAgICAg IHJldHVybjsKCiAgICBjYXNlIFBPU1RfSU5DOgogICAgY2FzZSBQUkVfSU5DOgogICAgY2Fz ZSBQT1NUX0RFQzoKICAgIGNhc2UgUFJFX0RFQzoKICAgIGNhc2UgUE9TVF9NT0RJRlk6CiAg ICBjYXNlIFBSRV9NT0RJRlk6CgogICAgICBmYW5jeV9hYm9ydCAoInJlZ3JlbmFtZS5jIiwg NzIyLCBfX0ZVTkNUSU9OX18pOwoKICAgIGNhc2UgQ0xPQkJFUjoKICAgICAgc2Nhbl9ydHgg KGluc24sICYoKCh4KS0+ZmxkWzBdKS5ydHgpLCBjbGFzcywgYWN0aW9uLCBPUF9PVVQsIDEp OwogICAgICByZXR1cm47CgogICAgY2FzZSBFWFBSX0xJU1Q6CiAgICAgIHNjYW5fcnR4IChp bnNuLCAmKCgoeCktPmZsZFswXSkucnR4KSwgY2xhc3MsIGFjdGlvbiwgdHlwZSwgMCk7CiAg ICAgIGlmICgoKCh4KS0+ZmxkWzFdKS5ydHgpKQogc2Nhbl9ydHggKGluc24sICYoKCh4KS0+ ZmxkWzFdKS5ydHgpLCBjbGFzcywgYWN0aW9uLCB0eXBlLCAwKTsKICAgICAgcmV0dXJuOwoK ICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAgfQoKICBmbXQgPSAocnR4X2Zvcm1hdFso aW50KSAoY29kZSldKTsKICBmb3IgKGkgPSAocnR4X2xlbmd0aFsoaW50KSAoY29kZSldKSAt IDE7IGkgPj0gMDsgaS0tKQogICAgewogICAgICBpZiAoZm10W2ldID09ICdlJykKIHNjYW5f cnR4IChpbnNuLCAmKCgoeCktPmZsZFtpXSkucnR4KSwgY2xhc3MsIGFjdGlvbiwgdHlwZSwg MCk7CiAgICAgIGVsc2UgaWYgKGZtdFtpXSA9PSAnRScpCiBmb3IgKGogPSAoKCgoKHgpLT5m bGRbaV0pLnJ0dmVjKSktPm51bV9lbGVtKSAtIDE7IGogPj0gMDsgai0tKQogICBzY2FuX3J0 eCAoaW5zbiwgJigoKCgoeCktPmZsZFtpXSkucnR2ZWMpKS0+ZWxlbVtqXSksIGNsYXNzLCBh Y3Rpb24sIHR5cGUsIDApOwogICAgfQp9CgoKCnN0YXRpYyBzdHJ1Y3QgZHVfY2hhaW4gKgpi dWlsZF9kZWZfdXNlIChiYikKICAgICBiYXNpY19ibG9jayBiYjsKewogIHJ0eCBpbnNuOwoK ICBvcGVuX2NoYWlucyA9IGNsb3NlZF9jaGFpbnMgPSAKIyA3NTcgInJlZ3JlbmFtZS5jIiAz IDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodm9pZCAqKTApCiMgNzU3ICJy ZWdyZW5hbWUuYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogIGZv ciAoaW5zbiA9IGJiLT5oZWFkOyA7IGluc24gPSAoKChpbnNuKS0+ZmxkWzJdKS5ydHgpKQog ICAgewogICAgICBpZiAoKChydHhfY2xhc3NbKGludCkgKCgoZW51bSBydHhfY29kZSkgKGlu c24pLT5jb2RlKSldKSA9PSAnaScpKQogewogICBpbnQgbl9vcHM7CiAgIHJ0eCBub3RlOwog ICBydHggb2xkX29wZXJhbmRzWzMwXTsKICAgcnR4IG9sZF9kdXBzWzRdOwogICBpbnQgaSwg aWNvZGU7CiAgIGludCBhbHQ7CiAgIGludCBwcmVkaWNhdGVkOwojIDc4NyAicmVncmVuYW1l LmMiCiAgIGljb2RlID0gKCgoKGluc24pLT5mbGRbNF0pLnJ0aW50KSA+PSAwID8gKCgoaW5z biktPmZsZFs0XSkucnRpbnQpIDogcmVjb2dfbWVtb2l6ZWRfMSAoaW5zbikpOwogICBleHRy YWN0X2luc24gKGluc24pOwogICBjb25zdHJhaW5fb3BlcmFuZHMgKDEpOwogICBwcmVwcm9j ZXNzX2NvbnN0cmFpbnRzICgpOwogICBhbHQgPSB3aGljaF9hbHRlcm5hdGl2ZTsKICAgbl9v cHMgPSByZWNvZ19kYXRhLm5fb3BlcmFuZHM7CgoKCgoKICAgcHJlZGljYXRlZCA9ICgoZW51 bSBydHhfY29kZSkgKCgoKGluc24pLT5mbGRbM10pLnJ0eCkpLT5jb2RlKSA9PSBDT05EX0VY RUM7CiAgIGZvciAoaSA9IDA7IGkgPCBuX29wczsgKytpKQogICAgIHsKICAgICAgIGludCBt YXRjaGVzID0gcmVjb2dfb3BfYWx0W2ldW2FsdF0ubWF0Y2hlczsKICAgICAgIGlmIChtYXRj aGVzID49IDApCiAgcmVjb2dfb3BfYWx0W2ldW2FsdF0uY2xhc3MgPSByZWNvZ19vcF9hbHRb bWF0Y2hlc11bYWx0XS5jbGFzczsKICAgICAgIGlmIChtYXRjaGVzID49IDAgfHwgcmVjb2df b3BfYWx0W2ldW2FsdF0ubWF0Y2hlZCA+PSAwCiAgICAgICAgICAgfHwgKHByZWRpY2F0ZWQg JiYgcmVjb2dfZGF0YS5vcGVyYW5kX3R5cGVbaV0gPT0gT1BfT1VUKSkKICByZWNvZ19kYXRh Lm9wZXJhbmRfdHlwZVtpXSA9IE9QX0lOT1VUOwogICAgIH0KCgogICBmb3IgKGkgPSAwOyBp IDwgbl9vcHM7IGkrKykKICAgICBzY2FuX3J0eCAoaW5zbiwgcmVjb2dfZGF0YS5vcGVyYW5k X2xvY1tpXSwKICAgICAgICBOT19SRUdTLCB0ZXJtaW5hdGVfb3ZlcmxhcHBpbmdfcmVhZCwK ICAgICAgICByZWNvZ19kYXRhLm9wZXJhbmRfdHlwZVtpXSwgMCk7CgoKCgoKICAgZm9yIChp ID0gMDsgaSA8IG5fb3BzOyBpKyspCiAgICAgewogICAgICAgb2xkX29wZXJhbmRzW2ldID0g cmVjb2dfZGF0YS5vcGVyYW5kW2ldOwoKCgogICAgICAgaWYgKHJlY29nX2RhdGEuY29uc3Ry YWludHNbaV1bMF0gPT0gJ1wwJykKICBjb250aW51ZTsKICAgICAgICpyZWNvZ19kYXRhLm9w ZXJhbmRfbG9jW2ldID0gKGdsb2JhbF9ydGxbR1JfQ0MwXSk7CiAgICAgfQogICBmb3IgKGkg PSAwOyBpIDwgcmVjb2dfZGF0YS5uX2R1cHM7IGkrKykKICAgICB7CiAgICAgICBpbnQgZHVw X251bSA9IHJlY29nX2RhdGEuZHVwX251bVtpXTsKCiAgICAgICBvbGRfZHVwc1tpXSA9ICpy ZWNvZ19kYXRhLmR1cF9sb2NbaV07CiAgICAgICAqcmVjb2dfZGF0YS5kdXBfbG9jW2ldID0g KGdsb2JhbF9ydGxbR1JfQ0MwXSk7CgoKCiAgICAgICBpZiAoaWNvZGUgPj0gMAogICAgJiYg aW5zbl9kYXRhW2ljb2RlXS5vcGVyYW5kW2R1cF9udW1dLmVsaW1pbmFibGUgPT0gMCkKICBv bGRfZHVwc1tpXSA9IHJlY29nX2RhdGEub3BlcmFuZFtkdXBfbnVtXTsKICAgICB9CgogICBz Y2FuX3J0eCAoaW5zbiwgJigoKGluc24pLT5mbGRbM10pLnJ0eCksIE5PX1JFR1MsIHRlcm1p bmF0ZV9hbGxfcmVhZCwKICAgICAgT1BfSU4sIDApOwoKICAgZm9yIChpID0gMDsgaSA8IHJl Y29nX2RhdGEubl9kdXBzOyBpKyspCiAgICAgKnJlY29nX2RhdGEuZHVwX2xvY1tpXSA9IG9s ZF9kdXBzW2ldOwogICBmb3IgKGkgPSAwOyBpIDwgbl9vcHM7IGkrKykKICAgICAqcmVjb2df ZGF0YS5vcGVyYW5kX2xvY1tpXSA9IG9sZF9vcGVyYW5kc1tpXTsKCgogICBpZiAoKChlbnVt IHJ0eF9jb2RlKSAoaW5zbiktPmNvZGUpID09IENBTExfSU5TTiAmJiAoKChpbnNuKS0+Zmxk WzddKS5ydHgpKQogICAgIHNjYW5fcnR4IChpbnNuLCAmKCgoaW5zbiktPmZsZFs3XSkucnR4 KSwKICAgICAgICBOT19SRUdTLCB0ZXJtaW5hdGVfYWxsX3JlYWQsIE9QX0lOLCAwKTsKCgoK ICAgaWYgKGFzbV9ub3BlcmFuZHMgKCgoKGluc24pLT5mbGRbM10pLnJ0eCkpID4gMCkKICAg ICBmb3IgKGkgPSAwOyBpIDwgbl9vcHM7IGkrKykKICAgICAgIHsKICBydHggKmxvYyA9IHJl Y29nX2RhdGEub3BlcmFuZF9sb2NbaV07CiAgcnR4IG9wID0gKmxvYzsKCiAgaWYgKCgoZW51 bSBydHhfY29kZSkgKG9wKS0+Y29kZSkgPT0gUkVHCiAgICAgICYmICgoKG9wKS0+ZmxkWzBd KS5ydHVpbnQpID09ICgoKG9wKS0+ZmxkWzFdKS5ydHVpbnQpCiAgICAgICYmIChyZWNvZ19k YXRhLm9wZXJhbmRfdHlwZVtpXSA9PSBPUF9JTgogICB8fCByZWNvZ19kYXRhLm9wZXJhbmRf dHlwZVtpXSA9PSBPUF9JTk9VVCkpCiAgICBzY2FuX3J0eCAoaW5zbiwgbG9jLCBOT19SRUdT LCB0ZXJtaW5hdGVfYWxsX3JlYWQsIE9QX0lOLCAwKTsKICAgICAgIH0KCgogICBmb3IgKGkg PSAwOyBpIDwgbl9vcHMgKyByZWNvZ19kYXRhLm5fZHVwczsgaSsrKQogICAgIHsKICAgICAg IGludCBvcG4gPSBpIDwgbl9vcHMgPyBpIDogcmVjb2dfZGF0YS5kdXBfbnVtW2kgLSBuX29w c107CiAgICAgICBydHggKmxvYyA9IChpIDwgbl9vcHMKICAgICA/IHJlY29nX2RhdGEub3Bl cmFuZF9sb2Nbb3BuXQogICAgIDogcmVjb2dfZGF0YS5kdXBfbG9jW2kgLSBuX29wc10pOwog ICAgICAgZW51bSByZWdfY2xhc3MgY2xhc3MgPSByZWNvZ19vcF9hbHRbb3BuXVthbHRdLmNs YXNzOwogICAgICAgZW51bSBvcF90eXBlIHR5cGUgPSByZWNvZ19kYXRhLm9wZXJhbmRfdHlw ZVtvcG5dOwoKCgoKICAgICAgIGlmIChyZWNvZ19kYXRhLmNvbnN0cmFpbnRzW29wbl1bMF0g PT0gJ1wwJykKICBjb250aW51ZTsKCiAgICAgICBpZiAocmVjb2dfb3BfYWx0W29wbl1bYWx0 XS5pc19hZGRyZXNzKQogIHNjYW5fcnR4X2FkZHJlc3MgKGluc24sIGxvYywgY2xhc3MsIG1h cmtfcmVhZCwgVk9JRG1vZGUpOwogICAgICAgZWxzZQogIHNjYW5fcnR4IChpbnNuLCBsb2Ms IGNsYXNzLCBtYXJrX3JlYWQsIHR5cGUsIDApOwogICAgIH0KCgoKICAgZm9yIChub3RlID0g KCgoaW5zbiktPmZsZFs2XSkucnR4KTsgbm90ZTsgbm90ZSA9ICgoKG5vdGUpLT5mbGRbMV0p LnJ0eCkpCiAgICAgewogICAgICAgaWYgKCgoZW51bSByZWdfbm90ZSkgKChlbnVtIG1hY2hp bmVfbW9kZSkgKG5vdGUpLT5tb2RlKSkgPT0gUkVHX0RFQUQpCiAgc2Nhbl9ydHggKGluc24s ICYoKChub3RlKS0+ZmxkWzBdKS5ydHgpLCBOT19SRUdTLCB0ZXJtaW5hdGVfZGVhZCwKICAg ICBPUF9JTiwgMCk7CiAgICAgICBlbHNlIGlmICgoKGVudW0gcmVnX25vdGUpICgoZW51bSBt YWNoaW5lX21vZGUpIChub3RlKS0+bW9kZSkpID09IFJFR19JTkMpCiAgc2Nhbl9ydHggKGlu c24sICYoKChub3RlKS0+ZmxkWzBdKS5ydHgpLCBBTExfUkVHUywgbWFya19yZWFkLAogICAg IE9QX0lOT1VULCAwKTsKICAgICB9CgoKCiAgIGlmICgoKGVudW0gcnR4X2NvZGUpIChpbnNu KS0+Y29kZSkgPT0gQ0FMTF9JTlNOKQogICAgIHsKICAgICAgIHN0cnVjdCBkdV9jaGFpbiAq cDsKICAgICAgIGZvciAocCA9IG9wZW5fY2hhaW5zOyBwOyBwID0gcC0+bmV4dF9jaGFpbikK ICBwLT5uZWVkX2NhbGxlcl9zYXZlX3JlZyA9IDE7CiAgICAgfQoKCgoKCiAgIGZvciAoaSA9 IDA7IGkgPCBuX29wczsgaSsrKQogICAgIHsKICAgICAgIG9sZF9vcGVyYW5kc1tpXSA9IHJl Y29nX2RhdGEub3BlcmFuZFtpXTsKICAgICAgIGlmIChyZWNvZ19kYXRhLm9wZXJhbmRfdHlw ZVtpXSA9PSBPUF9JTk9VVCkKICAqcmVjb2dfZGF0YS5vcGVyYW5kX2xvY1tpXSA9IChnbG9i YWxfcnRsW0dSX0NDMF0pOwogICAgIH0KICAgZm9yIChpID0gMDsgaSA8IHJlY29nX2RhdGEu bl9kdXBzOyBpKyspCiAgICAgewogICAgICAgaW50IG9wbiA9IHJlY29nX2RhdGEuZHVwX251 bVtpXTsKICAgICAgIG9sZF9kdXBzW2ldID0gKnJlY29nX2RhdGEuZHVwX2xvY1tpXTsKICAg ICAgIGlmIChyZWNvZ19kYXRhLm9wZXJhbmRfdHlwZVtvcG5dID09IE9QX0lOT1VUKQogICpy ZWNvZ19kYXRhLmR1cF9sb2NbaV0gPSAoZ2xvYmFsX3J0bFtHUl9DQzBdKTsKICAgICB9Cgog ICBzY2FuX3J0eCAoaW5zbiwgJigoKGluc24pLT5mbGRbM10pLnJ0eCksIE5PX1JFR1MsIHRl cm1pbmF0ZV93cml0ZSwgT1BfSU4sIDApOwoKICAgZm9yIChpID0gMDsgaSA8IHJlY29nX2Rh dGEubl9kdXBzOyBpKyspCiAgICAgKnJlY29nX2RhdGEuZHVwX2xvY1tpXSA9IG9sZF9kdXBz W2ldOwogICBmb3IgKGkgPSAwOyBpIDwgbl9vcHM7IGkrKykKICAgICAqcmVjb2dfZGF0YS5v cGVyYW5kX2xvY1tpXSA9IG9sZF9vcGVyYW5kc1tpXTsKCgoKCgoKCiAgIGlmIChhc21fbm9w ZXJhbmRzICgoKChpbnNuKS0+ZmxkWzNdKS5ydHgpKSA+IDApCiAgICAgewogICAgICAgZm9y IChpID0gMDsgaSA8IG5fb3BzOyBpKyspCiAgaWYgKHJlY29nX2RhdGEub3BlcmFuZF90eXBl W2ldID09IE9QX09VVCkKICAgIHsKICAgICAgcnR4ICpsb2MgPSByZWNvZ19kYXRhLm9wZXJh bmRfbG9jW2ldOwogICAgICBydHggb3AgPSAqbG9jOwogICAgICBlbnVtIHJlZ19jbGFzcyBj bGFzcyA9IHJlY29nX29wX2FsdFtpXVthbHRdLmNsYXNzOwoKICAgICAgaWYgKCgoZW51bSBy dHhfY29kZSkgKG9wKS0+Y29kZSkgPT0gUkVHCiAgICAgICAgICAmJiAoKChvcCktPmZsZFsw XSkucnR1aW50KSA9PSAoKChvcCktPmZsZFsxXSkucnR1aW50KSkKICAgICAgICBjb250aW51 ZTsKCiAgICAgIHNjYW5fcnR4IChpbnNuLCBsb2MsIGNsYXNzLCBtYXJrX3dyaXRlLCBPUF9P VVQsCiAgICAgICAgIHJlY29nX29wX2FsdFtpXVthbHRdLmVhcmx5Y2xvYmJlcik7CiAgICB9 CiAgICAgfQogICBlbHNlIGlmICgoKGVudW0gcnR4X2NvZGUpIChpbnNuKS0+Y29kZSkgIT0g Q0FMTF9JTlNOKQogICAgIGZvciAoaSA9IDA7IGkgPCBuX29wcyArIHJlY29nX2RhdGEubl9k dXBzOyBpKyspCiAgICAgICB7CiAgaW50IG9wbiA9IGkgPCBuX29wcyA/IGkgOiByZWNvZ19k YXRhLmR1cF9udW1baSAtIG5fb3BzXTsKICBydHggKmxvYyA9IChpIDwgbl9vcHMKICAgICAg ID8gcmVjb2dfZGF0YS5vcGVyYW5kX2xvY1tvcG5dCiAgICAgICA6IHJlY29nX2RhdGEuZHVw X2xvY1tpIC0gbl9vcHNdKTsKICBlbnVtIHJlZ19jbGFzcyBjbGFzcyA9IHJlY29nX29wX2Fs dFtvcG5dW2FsdF0uY2xhc3M7CgogIGlmIChyZWNvZ19kYXRhLm9wZXJhbmRfdHlwZVtvcG5d ID09IE9QX09VVCkKICAgIHNjYW5fcnR4IChpbnNuLCBsb2MsIGNsYXNzLCBtYXJrX3dyaXRl LCBPUF9PVVQsCiAgICAgICByZWNvZ19vcF9hbHRbb3BuXVthbHRdLmVhcmx5Y2xvYmJlcik7 CiAgICAgICB9CgoKCiAgIGZvciAobm90ZSA9ICgoKGluc24pLT5mbGRbNl0pLnJ0eCk7IG5v dGU7IG5vdGUgPSAoKChub3RlKS0+ZmxkWzFdKS5ydHgpKQogICAgIGlmICgoKGVudW0gcmVn X25vdGUpICgoZW51bSBtYWNoaW5lX21vZGUpIChub3RlKS0+bW9kZSkpID09IFJFR19VTlVT RUQpCiAgICAgICBzY2FuX3J0eCAoaW5zbiwgJigoKG5vdGUpLT5mbGRbMF0pLnJ0eCksIE5P X1JFR1MsIHRlcm1pbmF0ZV9kZWFkLAogICBPUF9JTiwgMCk7CiB9CiAgICAgIGlmIChpbnNu ID09IGJiLT5lbmQpCiBicmVhazsKICAgIH0KCgoKICByZXR1cm4gY2xvc2VkX2NoYWluczsK fQoKCgoKc3RhdGljIHZvaWQKZHVtcF9kZWZfdXNlX2NoYWluIChjaGFpbnMpCiAgICAgc3Ry dWN0IGR1X2NoYWluICpjaGFpbnM7CnsKICB3aGlsZSAoY2hhaW5zKQogICAgewogICAgICBz dHJ1Y3QgZHVfY2hhaW4gKnRoaXMgPSBjaGFpbnM7CiAgICAgIGludCByID0gKCgoKnRoaXMt PmxvYyktPmZsZFswXSkucnR1aW50KTsKICAgICAgaW50IG5yZWdzID0gKCgocikgPj0gOCAm JiAocikgPD0gKDggKyA3KSkgfHwgKCgocikgPj0gKDIwICsgMSkgJiYgKHIpIDw9ICgoMjAg KyAxKSArIDcpKSB8fCAoKHIpID49ICgoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsg MSkgKyA3KSArIDEpICYmIChyKSA8PSAoKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykg KyAxKSArIDcpICsgMSkgKyA3KSkpIHx8ICgocikgPj0gKCgoMjAgKyAxKSArIDcpICsgMSkg JiYgKHIpIDw9ICgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpKSA/ICgoKG1vZGVfY2xhc3Nb KGludCkgKCgoZW51bSBtYWNoaW5lX21vZGUpICgqdGhpcy0+bG9jKS0+bW9kZSkpXSkgPT0g TU9ERV9DT01QTEVYX0lOVCB8fCAobW9kZV9jbGFzc1soaW50KSAoKChlbnVtIG1hY2hpbmVf bW9kZSkgKCp0aGlzLT5sb2MpLT5tb2RlKSldKSA9PSBNT0RFX0NPTVBMRVhfRkxPQVQpID8g MiA6IDEpIDogKCgoKGVudW0gbWFjaGluZV9tb2RlKSAoKnRoaXMtPmxvYyktPm1vZGUpKSA9 PSBURm1vZGUgPyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gMiA6IDMpIDogKCgo ZW51bSBtYWNoaW5lX21vZGUpICgqdGhpcy0+bG9jKS0+bW9kZSkpID09IFRDbW9kZSA/ICgo dGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA0IDogNikgOiAoKChtb2RlX3NpemVbKGlu dCkgKCgoZW51bSBtYWNoaW5lX21vZGUpICgqdGhpcy0+bG9jKS0+bW9kZSkpXSkgKyAoKHRh cmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gOCA6IDQpIC0gMSkgLyAoKHRhcmdldF9mbGFn cyAmIDB4MDIwMDAwMDApID8gOCA6IDQpKSkpOwogICAgICBmcHJpbnRmIChydGxfZHVtcF9m aWxlLCAiUmVnaXN0ZXIgJXMgKCVkKToiLCByZWdfbmFtZXNbcl0sIG5yZWdzKTsKICAgICAg d2hpbGUgKHRoaXMpCiB7CiAgIGZwcmludGYgKHJ0bF9kdW1wX2ZpbGUsICIgJWQgWyVzXSIs ICgoKHRoaXMtPmluc24pLT5mbGRbMF0pLnJ0aW50KSwKICAgICByZWdfY2xhc3NfbmFtZXNb dGhpcy0+Y2xhc3NdKTsKICAgdGhpcyA9IHRoaXMtPm5leHRfdXNlOwogfQogICAgICBmcHJp bnRmIChydGxfZHVtcF9maWxlLCAiXG4iKTsKICAgICAgY2hhaW5zID0gY2hhaW5zLT5uZXh0 X2NoYWluOwogICAgfQp9CiMgMTAyOCAicmVncmVuYW1lLmMiCnN0cnVjdCB2YWx1ZV9kYXRh X2VudHJ5CnsKICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlOwogIHVuc2lnbmVkIGludCBvbGRl c3RfcmVnbm87CiAgdW5zaWduZWQgaW50IG5leHRfcmVnbm87Cn07CgpzdHJ1Y3QgdmFsdWVf ZGF0YQp7CiAgc3RydWN0IHZhbHVlX2RhdGFfZW50cnkgZVs1M107CiAgdW5zaWduZWQgaW50 IG1heF92YWx1ZV9yZWdzOwp9OwoKc3RhdGljIHZvaWQga2lsbF92YWx1ZV9yZWdubyAodW5z aWduZWQsIHN0cnVjdCB2YWx1ZV9kYXRhICopOwpzdGF0aWMgdm9pZCBraWxsX3ZhbHVlIChy dHgsIHN0cnVjdCB2YWx1ZV9kYXRhICopOwpzdGF0aWMgdm9pZCBzZXRfdmFsdWVfcmVnbm8g KHVuc2lnbmVkLCBlbnVtIG1hY2hpbmVfbW9kZSwgc3RydWN0IHZhbHVlX2RhdGEgKikKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwpzdGF0aWMgdm9pZCBpbml0X3ZhbHVlX2Rh dGEgKHN0cnVjdCB2YWx1ZV9kYXRhICopOwpzdGF0aWMgdm9pZCBraWxsX2Nsb2JiZXJlZF92 YWx1ZSAocnR4LCBydHgsIHZvaWQgKik7CnN0YXRpYyB2b2lkIGtpbGxfc2V0X3ZhbHVlIChy dHgsIHJ0eCwgdm9pZCAqKTsKc3RhdGljIGludCBraWxsX2F1dG9pbmNfdmFsdWUgKHJ0eCAq LCB2b2lkICopOwpzdGF0aWMgdm9pZCBjb3B5X3ZhbHVlIChydHgsIHJ0eCwgc3RydWN0IHZh bHVlX2RhdGEgKik7CnN0YXRpYyBfQm9vbCBtb2RlX2NoYW5nZV9vayAoZW51bSBtYWNoaW5l X21vZGUsIGVudW0gbWFjaGluZV9tb2RlLCB1bnNpZ25lZCBpbnQpCiAgICAgICAgICAgICAg ICAgICAgICA7CnN0YXRpYyBydHggZmluZF9vbGRlc3RfdmFsdWVfcmVnIChlbnVtIHJlZ19j bGFzcywgcnR4LCBzdHJ1Y3QgdmFsdWVfZGF0YSAqKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgOwpzdGF0aWMgX0Jvb2wgcmVwbGFjZV9vbGRlc3RfdmFsdWVfcmVnIChydHggKiwg ZW51bSByZWdfY2xhc3MsIHJ0eCwgc3RydWN0IHZhbHVlX2RhdGEgKikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7CnN0YXRpYyBfQm9vbCByZXBsYWNlX29sZGVzdF92YWx1 ZV9hZGRyIChydHggKiwgZW51bSByZWdfY2xhc3MsIGVudW0gbWFjaGluZV9tb2RlLCBydHgs IHN0cnVjdCB2YWx1ZV9kYXRhICopCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CnN0YXRpYyBfQm9vbCByZXBsYWNlX29sZGVzdF92YWx1ZV9tZW0gKHJ0eCwgcnR4LCBz dHJ1Y3QgdmFsdWVfZGF0YSAqKTsKc3RhdGljIF9Cb29sIGNvcHlwcm9wX2hhcmRyZWdfZm9y d2FyZF8xIChiYXNpY19ibG9jaywgc3RydWN0IHZhbHVlX2RhdGEgKikKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsKZXh0ZXJuIHZvaWQgZGVidWdfdmFsdWVfZGF0YSAoc3RydWN0 IHZhbHVlX2RhdGEgKik7CgoKCgoKCgpzdGF0aWMgdm9pZApraWxsX3ZhbHVlX3JlZ25vIChy ZWdubywgdmQpCiAgICAgdW5zaWduZWQgaW50IHJlZ25vOwogICAgIHN0cnVjdCB2YWx1ZV9k YXRhICp2ZDsKewogIHVuc2lnbmVkIGludCBpLCBuZXh0OwoKICBpZiAodmQtPmVbcmVnbm9d Lm9sZGVzdF9yZWdubyAhPSByZWdubykKICAgIHsKICAgICAgZm9yIChpID0gdmQtPmVbcmVn bm9dLm9sZGVzdF9yZWdubzsKICAgIHZkLT5lW2ldLm5leHRfcmVnbm8gIT0gcmVnbm87CiAg ICBpID0gdmQtPmVbaV0ubmV4dF9yZWdubykKIGNvbnRpbnVlOwogICAgICB2ZC0+ZVtpXS5u ZXh0X3JlZ25vID0gdmQtPmVbcmVnbm9dLm5leHRfcmVnbm87CiAgICB9CiAgZWxzZSBpZiAo KG5leHQgPSB2ZC0+ZVtyZWdub10ubmV4dF9yZWdubykgIT0gKH4odW5zaWduZWQgaW50KSAw KSkKICAgIHsKICAgICAgZm9yIChpID0gbmV4dDsgaSAhPSAofih1bnNpZ25lZCBpbnQpIDAp OyBpID0gdmQtPmVbaV0ubmV4dF9yZWdubykKICAgICAgICB2ZC0+ZVtpXS5vbGRlc3RfcmVn bm8gPSBuZXh0OwogICAgfQoKICB2ZC0+ZVtyZWdub10ubW9kZSA9IFZPSURtb2RlOwogIHZk LT5lW3JlZ25vXS5vbGRlc3RfcmVnbm8gPSByZWdubzsKICB2ZC0+ZVtyZWdub10ubmV4dF9y ZWdubyA9ICh+KHVuc2lnbmVkIGludCkgMCk7CgoKCgp9CgoKCgpzdGF0aWMgdm9pZApraWxs X3ZhbHVlICh4LCB2ZCkKICAgICBydHggeDsKICAgICBzdHJ1Y3QgdmFsdWVfZGF0YSAqdmQ7 CnsKCgoKCgogIGlmICgoKGVudW0gcnR4X2NvZGUpICh4KS0+Y29kZSkgPT0gU1VCUkVHKQog ICAgeCA9IHNpbXBsaWZ5X3N1YnJlZyAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKHgpLT5tb2Rl KSwgKCgoeCktPmZsZFswXSkucnR4KSwKICAgICgoZW51bSBtYWNoaW5lX21vZGUpICgoKCh4 KS0+ZmxkWzBdKS5ydHgpKS0+bW9kZSksICgoKHgpLT5mbGRbMV0pLnJ0dWludCkpOwogIGlm ICgoKChlbnVtIHJ0eF9jb2RlKSAoeCktPmNvZGUpID09IFJFRykpCiAgICB7CiAgICAgIHVu c2lnbmVkIGludCByZWdubyA9ICgoKHgpLT5mbGRbMF0pLnJ0dWludCk7CiAgICAgIHVuc2ln bmVkIGludCBuID0gKCgocmVnbm8pID49IDggJiYgKHJlZ25vKSA8PSAoOCArIDcpKSB8fCAo KChyZWdubykgPj0gKDIwICsgMSkgJiYgKHJlZ25vKSA8PSAoKDIwICsgMSkgKyA3KSkgfHwg KChyZWdubykgPj0gKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpICsg MSkgJiYgKHJlZ25vKSA8PSAoKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAr IDcpICsgMSkgKyA3KSkpIHx8ICgocmVnbm8pID49ICgoKDIwICsgMSkgKyA3KSArIDEpICYm IChyZWdubykgPD0gKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykpID8gKCgobW9kZV9jbGFz c1soaW50KSAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKHgpLT5tb2RlKSldKSA9PSBNT0RFX0NP TVBMRVhfSU5UIHx8IChtb2RlX2NsYXNzWyhpbnQpICgoKGVudW0gbWFjaGluZV9tb2RlKSAo eCktPm1vZGUpKV0pID09IE1PREVfQ09NUExFWF9GTE9BVCkgPyAyIDogMSkgOiAoKCgoZW51 bSBtYWNoaW5lX21vZGUpICh4KS0+bW9kZSkpID09IFRGbW9kZSA/ICgodGFyZ2V0X2ZsYWdz ICYgMHgwMjAwMDAwMCkgPyAyIDogMykgOiAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKHgpLT5t b2RlKSkgPT0gVENtb2RlID8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDQgOiA2 KSA6ICgoKG1vZGVfc2l6ZVsoaW50KSAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKHgpLT5tb2Rl KSldKSArICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkgLSAxKSAvICgo dGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkpKSk7CiAgICAgIHVuc2lnbmVk IGludCBpLCBqOwoKCiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpCiBraWxsX3ZhbHVl X3JlZ25vIChyZWdubyArIGksIHZkKTsKCgogICAgICBpZiAocmVnbm8gPCB2ZC0+bWF4X3Zh bHVlX3JlZ3MpCiBqID0gMDsKICAgICAgZWxzZQogaiA9IHJlZ25vIC0gdmQtPm1heF92YWx1 ZV9yZWdzOwogICAgICBmb3IgKDsgaiA8IHJlZ25vOyArK2opCiB7CiAgIGlmICh2ZC0+ZVtq XS5tb2RlID09IFZPSURtb2RlKQogICAgIGNvbnRpbnVlOwogICBuID0gKCgoaikgPj0gOCAm JiAoaikgPD0gKDggKyA3KSkgfHwgKCgoaikgPj0gKDIwICsgMSkgJiYgKGopIDw9ICgoMjAg KyAxKSArIDcpKSB8fCAoKGopID49ICgoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsg MSkgKyA3KSArIDEpICYmIChqKSA8PSAoKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykg KyAxKSArIDcpICsgMSkgKyA3KSkpIHx8ICgoaikgPj0gKCgoMjAgKyAxKSArIDcpICsgMSkg JiYgKGopIDw9ICgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpKSA/ICgoKG1vZGVfY2xhc3Nb KGludCkgKHZkLT5lW2pdLm1vZGUpXSkgPT0gTU9ERV9DT01QTEVYX0lOVCB8fCAobW9kZV9j bGFzc1soaW50KSAodmQtPmVbal0ubW9kZSldKSA9PSBNT0RFX0NPTVBMRVhfRkxPQVQpID8g MiA6IDEpIDogKCh2ZC0+ZVtqXS5tb2RlKSA9PSBURm1vZGUgPyAoKHRhcmdldF9mbGFncyAm IDB4MDIwMDAwMDApID8gMiA6IDMpIDogKHZkLT5lW2pdLm1vZGUpID09IFRDbW9kZSA/ICgo dGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA0IDogNikgOiAoKChtb2RlX3NpemVbKGlu dCkgKHZkLT5lW2pdLm1vZGUpXSkgKyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8g OCA6IDQpIC0gMSkgLyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gOCA6IDQpKSkp OwogICBpZiAoaiArIG4gPiByZWdubykKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQog ICAgICAga2lsbF92YWx1ZV9yZWdubyAoaiArIGksIHZkKTsKIH0KICAgIH0KfQoKCgpzdGF0 aWMgdm9pZApzZXRfdmFsdWVfcmVnbm8gKHJlZ25vLCBtb2RlLCB2ZCkKICAgICB1bnNpZ25l ZCBpbnQgcmVnbm87CiAgICAgZW51bSBtYWNoaW5lX21vZGUgbW9kZTsKICAgICBzdHJ1Y3Qg dmFsdWVfZGF0YSAqdmQ7CnsKICB1bnNpZ25lZCBpbnQgbnJlZ3M7CgogIHZkLT5lW3JlZ25v XS5tb2RlID0gbW9kZTsKCiAgbnJlZ3MgPSAoKChyZWdubykgPj0gOCAmJiAocmVnbm8pIDw9 ICg4ICsgNykpIHx8ICgoKHJlZ25vKSA+PSAoMjAgKyAxKSAmJiAocmVnbm8pIDw9ICgoMjAg KyAxKSArIDcpKSB8fCAoKHJlZ25vKSA+PSAoKCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3 KSArIDEpICsgNykgKyAxKSAmJiAocmVnbm8pIDw9ICgoKCgoKCgoMjAgKyAxKSArIDcpICsg MSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpKSkgfHwgKChyZWdubykgPj0gKCgoMjAgKyAx KSArIDcpICsgMSkgJiYgKHJlZ25vKSA8PSAoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSkg PyAoKChtb2RlX2NsYXNzWyhpbnQpIChtb2RlKV0pID09IE1PREVfQ09NUExFWF9JTlQgfHwg KG1vZGVfY2xhc3NbKGludCkgKG1vZGUpXSkgPT0gTU9ERV9DT01QTEVYX0ZMT0FUKSA/IDIg OiAxKSA6ICgobW9kZSkgPT0gVEZtb2RlID8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAw KSA/IDIgOiAzKSA6IChtb2RlKSA9PSBUQ21vZGUgPyAoKHRhcmdldF9mbGFncyAmIDB4MDIw MDAwMDApID8gNCA6IDYpIDogKCgobW9kZV9zaXplWyhpbnQpIChtb2RlKV0pICsgKCh0YXJn ZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSAtIDEpIC8gKCh0YXJnZXRfZmxhZ3Mg JiAweDAyMDAwMDAwKSA/IDggOiA0KSkpKTsKICBpZiAobnJlZ3MgPiB2ZC0+bWF4X3ZhbHVl X3JlZ3MpCiAgICB2ZC0+bWF4X3ZhbHVlX3JlZ3MgPSBucmVnczsKfQoKCgpzdGF0aWMgdm9p ZAppbml0X3ZhbHVlX2RhdGEgKHZkKQogICAgIHN0cnVjdCB2YWx1ZV9kYXRhICp2ZDsKewog IGludCBpOwogIGZvciAoaSA9IDA7IGkgPCA1MzsgKytpKQogICAgewogICAgICB2ZC0+ZVtp XS5tb2RlID0gVk9JRG1vZGU7CiAgICAgIHZkLT5lW2ldLm9sZGVzdF9yZWdubyA9IGk7CiAg ICAgIHZkLT5lW2ldLm5leHRfcmVnbm8gPSAofih1bnNpZ25lZCBpbnQpIDApOwogICAgfQog IHZkLT5tYXhfdmFsdWVfcmVncyA9IDA7Cn0KCgoKc3RhdGljIHZvaWQKa2lsbF9jbG9iYmVy ZWRfdmFsdWUgKHgsIHNldCwgZGF0YSkKICAgICBydHggeDsKICAgICBydHggc2V0OwogICAg IHZvaWQgKmRhdGE7CnsKICBzdHJ1Y3QgdmFsdWVfZGF0YSAqdmQgPSBkYXRhOwogIGlmICgo KGVudW0gcnR4X2NvZGUpIChzZXQpLT5jb2RlKSA9PSBDTE9CQkVSKQogICAga2lsbF92YWx1 ZSAoeCwgdmQpOwp9CgoKCgpzdGF0aWMgdm9pZApraWxsX3NldF92YWx1ZSAoeCwgc2V0LCBk YXRhKQogICAgIHJ0eCB4OwogICAgIHJ0eCBzZXQ7CiAgICAgdm9pZCAqZGF0YTsKewogIHN0 cnVjdCB2YWx1ZV9kYXRhICp2ZCA9IGRhdGE7CiAgaWYgKCgoZW51bSBydHhfY29kZSkgKHNl dCktPmNvZGUpICE9IENMT0JCRVIpCiAgICB7CiAgICAgIGtpbGxfdmFsdWUgKHgsIHZkKTsK ICAgICAgaWYgKCgoKGVudW0gcnR4X2NvZGUpICh4KS0+Y29kZSkgPT0gUkVHKSkKICAgICAg ICBzZXRfdmFsdWVfcmVnbm8gKCgoKHgpLT5mbGRbMF0pLnJ0dWludCksICgoZW51bSBtYWNo aW5lX21vZGUpICh4KS0+bW9kZSksIHZkKTsKICAgIH0KfQoKCgoKCnN0YXRpYyBpbnQKa2ls bF9hdXRvaW5jX3ZhbHVlIChweCwgZGF0YSkKICAgICBydHggKnB4OwogICAgIHZvaWQgKmRh dGE7CnsKICBydHggeCA9ICpweDsKICBzdHJ1Y3QgdmFsdWVfZGF0YSAqdmQgPSBkYXRhOwoK ICBpZiAoKHJ0eF9jbGFzc1soaW50KSAoKChlbnVtIHJ0eF9jb2RlKSAoeCktPmNvZGUpKV0p ID09ICdhJykKICAgIHsKICAgICAgeCA9ICgoKHgpLT5mbGRbMF0pLnJ0eCk7CiAgICAgIGtp bGxfdmFsdWUgKHgsIHZkKTsKICAgICAgc2V0X3ZhbHVlX3JlZ25vICgoKCh4KS0+ZmxkWzBd KS5ydHVpbnQpLCAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gREltb2RlIDogU0lt b2RlKSwgdmQpOwogICAgICByZXR1cm4gLTE7CiAgICB9CgogIHJldHVybiAwOwp9CgoKCgpz dGF0aWMgdm9pZApjb3B5X3ZhbHVlIChkZXN0LCBzcmMsIHZkKQogICAgIHJ0eCBkZXN0Owog ICAgIHJ0eCBzcmM7CiAgICAgc3RydWN0IHZhbHVlX2RhdGEgKnZkOwp7CiAgdW5zaWduZWQg aW50IGRyID0gKCgoZGVzdCktPmZsZFswXSkucnR1aW50KTsKICB1bnNpZ25lZCBpbnQgc3Ig PSAoKChzcmMpLT5mbGRbMF0pLnJ0dWludCk7CiAgdW5zaWduZWQgaW50IGRuLCBzbjsKICB1 bnNpZ25lZCBpbnQgaTsKCgoKICBpZiAoc3IgPT0gZHIpCiAgICByZXR1cm47CgoKCiAgaWYg KGRyID09IDcpCiAgICByZXR1cm47CgoKICBpZiAoZnJhbWVfcG9pbnRlcl9uZWVkZWQgJiYg ZHIgPT0gNikKICAgIHJldHVybjsKCgogIGRuID0gKCgoZHIpID49IDggJiYgKGRyKSA8PSAo OCArIDcpKSB8fCAoKChkcikgPj0gKDIwICsgMSkgJiYgKGRyKSA8PSAoKDIwICsgMSkgKyA3 KSkgfHwgKChkcikgPj0gKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcp ICsgMSkgJiYgKGRyKSA8PSAoKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAr IDcpICsgMSkgKyA3KSkpIHx8ICgoZHIpID49ICgoKDIwICsgMSkgKyA3KSArIDEpICYmIChk cikgPD0gKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykpID8gKCgobW9kZV9jbGFzc1soaW50 KSAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKGRlc3QpLT5tb2RlKSldKSA9PSBNT0RFX0NPTVBM RVhfSU5UIHx8IChtb2RlX2NsYXNzWyhpbnQpICgoKGVudW0gbWFjaGluZV9tb2RlKSAoZGVz dCktPm1vZGUpKV0pID09IE1PREVfQ09NUExFWF9GTE9BVCkgPyAyIDogMSkgOiAoKCgoZW51 bSBtYWNoaW5lX21vZGUpIChkZXN0KS0+bW9kZSkpID09IFRGbW9kZSA/ICgodGFyZ2V0X2Zs YWdzICYgMHgwMjAwMDAwMCkgPyAyIDogMykgOiAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKGRl c3QpLT5tb2RlKSkgPT0gVENtb2RlID8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/ IDQgOiA2KSA6ICgoKG1vZGVfc2l6ZVsoaW50KSAoKChlbnVtIG1hY2hpbmVfbW9kZSkgKGRl c3QpLT5tb2RlKSldKSArICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkg LSAxKSAvICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkpKSk7CiAgc24g PSAoKChzcikgPj0gOCAmJiAoc3IpIDw9ICg4ICsgNykpIHx8ICgoKHNyKSA+PSAoMjAgKyAx KSAmJiAoc3IpIDw9ICgoMjAgKyAxKSArIDcpKSB8fCAoKHNyKSA+PSAoKCgoKCgoMjAgKyAx KSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAmJiAoc3IpIDw9ICgoKCgoKCgoMjAg KyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpKSkgfHwgKChzcikgPj0g KCgoMjAgKyAxKSArIDcpICsgMSkgJiYgKHNyKSA8PSAoKCgoMjAgKyAxKSArIDcpICsgMSkg KyA3KSkgPyAoKChtb2RlX2NsYXNzWyhpbnQpICgoKGVudW0gbWFjaGluZV9tb2RlKSAoZGVz dCktPm1vZGUpKV0pID09IE1PREVfQ09NUExFWF9JTlQgfHwgKG1vZGVfY2xhc3NbKGludCkg KCgoZW51bSBtYWNoaW5lX21vZGUpIChkZXN0KS0+bW9kZSkpXSkgPT0gTU9ERV9DT01QTEVY X0ZMT0FUKSA/IDIgOiAxKSA6ICgoKChlbnVtIG1hY2hpbmVfbW9kZSkgKGRlc3QpLT5tb2Rl KSkgPT0gVEZtb2RlID8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDIgOiAzKSA6 ICgoKGVudW0gbWFjaGluZV9tb2RlKSAoZGVzdCktPm1vZGUpKSA9PSBUQ21vZGUgPyAoKHRh cmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gNCA6IDYpIDogKCgobW9kZV9zaXplWyhpbnQp ICgoKGVudW0gbWFjaGluZV9tb2RlKSAoZGVzdCktPm1vZGUpKV0pICsgKCh0YXJnZXRfZmxh Z3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSAtIDEpIC8gKCh0YXJnZXRfZmxhZ3MgJiAweDAy MDAwMDAwKSA/IDggOiA0KSkpKTsKICBpZiAoKGRyID4gc3IgJiYgZHIgPCBzciArIHNuKQog ICAgICB8fCAoc3IgPiBkciAmJiBzciA8IGRyICsgZG4pKQogICAgcmV0dXJuOwoKCgoKICBp ZiAodmQtPmVbc3JdLm1vZGUgPT0gVk9JRG1vZGUpCiAgICBzZXRfdmFsdWVfcmVnbm8gKHNy LCB2ZC0+ZVtkcl0ubW9kZSwgdmQpOwoKCgoKICBlbHNlIGlmIChzbiA+ICh1bnNpZ25lZCBp bnQpICgoKHNyKSA+PSA4ICYmIChzcikgPD0gKDggKyA3KSkgfHwgKCgoc3IpID49ICgyMCAr IDEpICYmIChzcikgPD0gKCgyMCArIDEpICsgNykpIHx8ICgoc3IpID49ICgoKCgoKCgyMCAr IDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmIChzcikgPD0gKCgoKCgoKCgy MCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykpKSB8fCAoKHNyKSA+ PSAoKCgyMCArIDEpICsgNykgKyAxKSAmJiAoc3IpIDw9ICgoKCgyMCArIDEpICsgNykgKyAx KSArIDcpKSA/ICgoKG1vZGVfY2xhc3NbKGludCkgKHZkLT5lW3NyXS5tb2RlKV0pID09IE1P REVfQ09NUExFWF9JTlQgfHwgKG1vZGVfY2xhc3NbKGludCkgKHZkLT5lW3NyXS5tb2RlKV0p ID09IE1PREVfQ09NUExFWF9GTE9BVCkgPyAyIDogMSkgOiAoKHZkLT5lW3NyXS5tb2RlKSA9 PSBURm1vZGUgPyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gMiA6IDMpIDogKHZk LT5lW3NyXS5tb2RlKSA9PSBUQ21vZGUgPyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDAp ID8gNCA6IDYpIDogKCgobW9kZV9zaXplWyhpbnQpICh2ZC0+ZVtzcl0ubW9kZSldKSArICgo dGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkgLSAxKSAvICgodGFyZ2V0X2Zs YWdzICYgMHgwMjAwMDAwMCkgPyA4IDogNCkpKSkpCiAgICByZXR1cm47CgoKCiAgdmQtPmVb ZHJdLm9sZGVzdF9yZWdubyA9IHZkLT5lW3NyXS5vbGRlc3RfcmVnbm87CgogIGZvciAoaSA9 IHNyOyB2ZC0+ZVtpXS5uZXh0X3JlZ25vICE9ICh+KHVuc2lnbmVkIGludCkgMCk7IGkgPSB2 ZC0+ZVtpXS5uZXh0X3JlZ25vKQogICAgY29udGludWU7CiAgdmQtPmVbaV0ubmV4dF9yZWdu byA9IGRyOwoKCgoKfQoKCgpzdGF0aWMgX0Jvb2wKbW9kZV9jaGFuZ2Vfb2sgKG9yaWdfbW9k ZSwgbmV3X21vZGUsIHJlZ25vKQogICAgIGVudW0gbWFjaGluZV9tb2RlIG9yaWdfbW9kZSwg bmV3X21vZGU7CiAgICAgdW5zaWduZWQgaW50IHJlZ25vIF9fYXR0cmlidXRlX18gKChfX3Vu dXNlZF9fKSk7CnsKICBpZiAoKG1vZGVfc2l6ZVsoaW50KSAob3JpZ19tb2RlKV0pIDwgKG1v ZGVfc2l6ZVsoaW50KSAobmV3X21vZGUpXSkpCiAgICByZXR1cm4gMDsKCgoKCgoKCiAgcmV0 dXJuIDE7Cn0KCgoKCgpzdGF0aWMgcnR4CmZpbmRfb2xkZXN0X3ZhbHVlX3JlZyAoY2xhc3Ms IHJlZywgdmQpCiAgICAgZW51bSByZWdfY2xhc3MgY2xhc3M7CiAgICAgcnR4IHJlZzsKICAg ICBzdHJ1Y3QgdmFsdWVfZGF0YSAqdmQ7CnsKICB1bnNpZ25lZCBpbnQgcmVnbm8gPSAoKChy ZWcpLT5mbGRbMF0pLnJ0dWludCk7CiAgZW51bSBtYWNoaW5lX21vZGUgbW9kZSA9ICgoZW51 bSBtYWNoaW5lX21vZGUpIChyZWcpLT5tb2RlKTsKICB1bnNpZ25lZCBpbnQgaTsKIyAxMzMw ICJyZWdyZW5hbWUuYyIKICBpZiAobW9kZSAhPSB2ZC0+ZVtyZWdub10ubW9kZSkKICAgIHsK ICAgICAgaWYgKCgoKHJlZ25vKSA+PSA4ICYmIChyZWdubykgPD0gKDggKyA3KSkgfHwgKCgo cmVnbm8pID49ICgyMCArIDEpICYmIChyZWdubykgPD0gKCgyMCArIDEpICsgNykpIHx8ICgo cmVnbm8pID49ICgoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSArIDEp ICYmIChyZWdubykgPD0gKCgoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3 KSArIDEpICsgNykpKSB8fCAoKHJlZ25vKSA+PSAoKCgyMCArIDEpICsgNykgKyAxKSAmJiAo cmVnbm8pIDw9ICgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpKSA/ICgoKG1vZGVfY2xhc3Nb KGludCkgKG1vZGUpXSkgPT0gTU9ERV9DT01QTEVYX0lOVCB8fCAobW9kZV9jbGFzc1soaW50 KSAobW9kZSldKSA9PSBNT0RFX0NPTVBMRVhfRkxPQVQpID8gMiA6IDEpIDogKChtb2RlKSA9 PSBURm1vZGUgPyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gMiA6IDMpIDogKG1v ZGUpID09IFRDbW9kZSA/ICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA0IDogNikg OiAoKChtb2RlX3NpemVbKGludCkgKG1vZGUpXSkgKyAoKHRhcmdldF9mbGFncyAmIDB4MDIw MDAwMDApID8gOCA6IDQpIC0gMSkgLyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8g OCA6IDQpKSkpCiAgID4gKCgocmVnbm8pID49IDggJiYgKHJlZ25vKSA8PSAoOCArIDcpKSB8 fCAoKChyZWdubykgPj0gKDIwICsgMSkgJiYgKHJlZ25vKSA8PSAoKDIwICsgMSkgKyA3KSkg fHwgKChyZWdubykgPj0gKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcp ICsgMSkgJiYgKHJlZ25vKSA8PSAoKCgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAx KSArIDcpICsgMSkgKyA3KSkpIHx8ICgocmVnbm8pID49ICgoKDIwICsgMSkgKyA3KSArIDEp ICYmIChyZWdubykgPD0gKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykpID8gKCgobW9kZV9j bGFzc1soaW50KSAodmQtPmVbcmVnbm9dLm1vZGUpXSkgPT0gTU9ERV9DT01QTEVYX0lOVCB8 fCAobW9kZV9jbGFzc1soaW50KSAodmQtPmVbcmVnbm9dLm1vZGUpXSkgPT0gTU9ERV9DT01Q TEVYX0ZMT0FUKSA/IDIgOiAxKSA6ICgodmQtPmVbcmVnbm9dLm1vZGUpID09IFRGbW9kZSA/ ICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyAyIDogMykgOiAodmQtPmVbcmVnbm9d Lm1vZGUpID09IFRDbW9kZSA/ICgodGFyZ2V0X2ZsYWdzICYgMHgwMjAwMDAwMCkgPyA0IDog NikgOiAoKChtb2RlX3NpemVbKGludCkgKHZkLT5lW3JlZ25vXS5tb2RlKV0pICsgKCh0YXJn ZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSAtIDEpIC8gKCh0YXJnZXRfZmxhZ3Mg JiAweDAyMDAwMDAwKSA/IDggOiA0KSkpKSkKIHJldHVybiAocnR4KSAwOwogICAgfQoKICBm b3IgKGkgPSB2ZC0+ZVtyZWdub10ub2xkZXN0X3JlZ25vOyBpICE9IHJlZ25vOyBpID0gdmQt PmVbaV0ubmV4dF9yZWdubykKICAgIGlmICgoKHJlZ19jbGFzc19jb250ZW50c1tjbGFzc10p ICYgKCgoSEFSRF9SRUdfRUxUX1RZUEUpICgxKSkgPDwgKGkpKSkKICYmICh2ZC0+ZVtpXS5t b2RlID09IG1vZGUKICAgICB8fCBtb2RlX2NoYW5nZV9vayAodmQtPmVbaV0ubW9kZSwgbW9k ZSwgaSkpKQogICAgICB7CiBydHggbmV3ID0gZ2VuX3J0eF9mbXRfaTAgKFJFRywgKG1vZGUp LCAoaSkpOwogKCgobmV3KS0+ZmxkWzFdKS5ydHVpbnQpID0gKCgocmVnKS0+ZmxkWzFdKS5y dHVpbnQpOwogcmV0dXJuIG5ldzsKICAgICAgfQoKICByZXR1cm4gKHJ0eCkgMDsKfQoKCgoK c3RhdGljIF9Cb29sCnJlcGxhY2Vfb2xkZXN0X3ZhbHVlX3JlZyAobG9jLCBjbGFzcywgaW5z biwgdmQpCiAgICAgcnR4ICpsb2M7CiAgICAgZW51bSByZWdfY2xhc3MgY2xhc3M7CiAgICAg cnR4IGluc247CiAgICAgc3RydWN0IHZhbHVlX2RhdGEgKnZkOwp7CiAgcnR4IG5ldyA9IGZp bmRfb2xkZXN0X3ZhbHVlX3JlZyAoY2xhc3MsICpsb2MsIHZkKTsKICBpZiAobmV3KQogICAg ewogICAgICBpZiAocnRsX2R1bXBfZmlsZSkKIGZwcmludGYgKHJ0bF9kdW1wX2ZpbGUsICJp bnNuICV1OiByZXBsYWNlZCByZWcgJXUgd2l0aCAldVxuIiwKICAgKCgoaW5zbiktPmZsZFsw XSkucnRpbnQpLCAoKCgqbG9jKS0+ZmxkWzBdKS5ydHVpbnQpLCAoKChuZXcpLT5mbGRbMF0p LnJ0dWludCkpOwoKICAgICAgKmxvYyA9IG5ldzsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAg cmV0dXJuIDA7Cn0KCgoKCgpzdGF0aWMgX0Jvb2wKcmVwbGFjZV9vbGRlc3RfdmFsdWVfYWRk ciAobG9jLCBjbGFzcywgbW9kZSwgaW5zbiwgdmQpCiAgICAgcnR4ICpsb2M7CiAgICAgZW51 bSByZWdfY2xhc3MgY2xhc3M7CiAgICAgZW51bSBtYWNoaW5lX21vZGUgbW9kZTsKICAgICBy dHggaW5zbjsKICAgICBzdHJ1Y3QgdmFsdWVfZGF0YSAqdmQ7CnsKICBydHggeCA9ICpsb2M7 CiAgZW51bSBydHhfY29kZSBjb2RlID0gKChlbnVtIHJ0eF9jb2RlKSAoeCktPmNvZGUpOwog IGNvbnN0IGNoYXIgKmZtdDsKICBpbnQgaSwgajsKICBfQm9vbCBjaGFuZ2VkID0gMDsKCiAg c3dpdGNoIChjb2RlKQogICAgewogICAgY2FzZSBQTFVTOgogICAgICB7CiBydHggb3JpZ19v cDAgPSAoKCh4KS0+ZmxkWzBdKS5ydHgpOwogcnR4IG9yaWdfb3AxID0gKCgoeCktPmZsZFsx XSkucnR4KTsKIGVudW0gcnR4X2NvZGUgY29kZTAgPSAoKGVudW0gcnR4X2NvZGUpIChvcmln X29wMCktPmNvZGUpOwogZW51bSBydHhfY29kZSBjb2RlMSA9ICgoZW51bSBydHhfY29kZSkg KG9yaWdfb3AxKS0+Y29kZSk7CiBydHggb3AwID0gb3JpZ19vcDA7CiBydHggb3AxID0gb3Jp Z19vcDE7CiBydHggKmxvY0kgPSAKIyAxNDAxICJyZWdyZW5hbWUuYyIgMyA0CiAgICAgICAg ICAgICgodm9pZCAqKTApCiMgMTQwMSAicmVncmVuYW1lLmMiCiAgICAgICAgICAgICAgICA7 CiBydHggKmxvY0IgPSAKIyAxNDAyICJyZWdyZW5hbWUuYyIgMyA0CiAgICAgICAgICAgICgo dm9pZCAqKTApCiMgMTQwMiAicmVncmVuYW1lLmMiCiAgICAgICAgICAgICAgICA7CgogaWYg KCgoZW51bSBydHhfY29kZSkgKG9wMCktPmNvZGUpID09IFNVQlJFRykKICAgewogICAgIG9w MCA9ICgoKG9wMCktPmZsZFswXSkucnR4KTsKICAgICBjb2RlMCA9ICgoZW51bSBydHhfY29k ZSkgKG9wMCktPmNvZGUpOwogICB9CgogaWYgKCgoZW51bSBydHhfY29kZSkgKG9wMSktPmNv ZGUpID09IFNVQlJFRykKICAgewogICAgIG9wMSA9ICgoKG9wMSktPmZsZFswXSkucnR4KTsK ICAgICBjb2RlMSA9ICgoZW51bSBydHhfY29kZSkgKG9wMSktPmNvZGUpOwogICB9CgogaWYg KGNvZGUwID09IE1VTFQgfHwgY29kZTAgPT0gU0lHTl9FWFRFTkQgfHwgY29kZTAgPT0gVFJV TkNBVEUKICAgICB8fCBjb2RlMCA9PSBaRVJPX0VYVEVORCB8fCBjb2RlMSA9PSBNRU0pCiAg IHsKICAgICBsb2NJID0gJigoKHgpLT5mbGRbMF0pLnJ0eCk7CiAgICAgbG9jQiA9ICYoKCh4 KS0+ZmxkWzFdKS5ydHgpOwogICB9CiBlbHNlIGlmIChjb2RlMSA9PSBNVUxUIHx8IGNvZGUx ID09IFNJR05fRVhURU5EIHx8IGNvZGUxID09IFRSVU5DQVRFCiAgIHx8IGNvZGUxID09IFpF Uk9fRVhURU5EIHx8IGNvZGUwID09IE1FTSkKICAgewogICAgIGxvY0kgPSAmKCgoeCktPmZs ZFsxXSkucnR4KTsKICAgICBsb2NCID0gJigoKHgpLT5mbGRbMF0pLnJ0eCk7CiAgIH0KIGVs c2UgaWYgKGNvZGUwID09IENPTlNUX0lOVCB8fCBjb2RlMCA9PSBDT05TVAogICB8fCBjb2Rl MCA9PSBTWU1CT0xfUkVGIHx8IGNvZGUwID09IExBQkVMX1JFRikKICAgbG9jQiA9ICYoKCh4 KS0+ZmxkWzFdKS5ydHgpOwogZWxzZSBpZiAoY29kZTEgPT0gQ09OU1RfSU5UIHx8IGNvZGUx ID09IENPTlNUCiAgIHx8IGNvZGUxID09IFNZTUJPTF9SRUYgfHwgY29kZTEgPT0gTEFCRUxf UkVGKQogICBsb2NCID0gJigoKHgpLT5mbGRbMF0pLnJ0eCk7CiBlbHNlIGlmIChjb2RlMCA9 PSBSRUcgJiYgY29kZTEgPT0gUkVHKQogICB7CiAgICAgaW50IGluZGV4X29wOwoKICAgICBp ZiAoKCgoKChvcDApLT5mbGRbMF0pLnJ0dWludCkpIDwgNyB8fCAoKCgob3AwKS0+ZmxkWzBd KS5ydHVpbnQpID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmICgoKChv cDApLT5mbGRbMF0pLnJ0dWludCkpIDw9ICgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykg KyAxKSArIDcpKSB8fCAoKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgoKG9wMCktPmZsZFsw XSkucnR1aW50KSldID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmICh1 bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDApLT5mbGRbMF0pLnJ0dWludCkpXSA8PSAo KCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkgfHwgKHVuc2lnbmVkKSBy ZWdfcmVudW1iZXJbKCgoKG9wMCktPmZsZFswXSkucnR1aW50KSldIDwgNykKICAmJiAoKCgo KG9wMSktPmZsZFswXSkucnR1aW50KSkgPD0gNyB8fCAoKCgob3AxKS0+ZmxkWzBdKS5ydHVp bnQpKSA9PSAxNiB8fCAoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKSA9PSAyMCB8fCAoKCgo b3AxKS0+ZmxkWzBdKS5ydHVpbnQpID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSAr IDEpICYmICgoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkpIDw9ICgoKCgoKDIwICsgMSkgKyA3 KSArIDEpICsgNykgKyAxKSArIDcpKSB8fCAoKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgo KG9wMSktPmZsZFswXSkucnR1aW50KSldID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3 KSArIDEpICYmICh1bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDEpLT5mbGRbMF0pLnJ0 dWludCkpXSA8PSAoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkgfHwg KHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSldIDw9 IDcpKQogICAgICAgaW5kZXhfb3AgPSAwOwogICAgIGVsc2UgaWYgKCgoKCgob3AxKS0+Zmxk WzBdKS5ydHVpbnQpKSA8IDcgfHwgKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSA+PSAoKCgo KDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAmJiAoKCgob3AxKS0+ZmxkWzBdKS5ydHVp bnQpKSA8PSAoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkgfHwgKCh1 bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkpXSA+PSAo KCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAmJiAodW5zaWduZWQpIHJlZ19yZW51 bWJlclsoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKV0gPD0gKCgoKCgoMjAgKyAxKSArIDcp ICsgMSkgKyA3KSArIDEpICsgNykpIHx8ICh1bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChv cDEpLT5mbGRbMF0pLnJ0dWludCkpXSA8IDcpCiAgICAgICAmJiAoKCgoKG9wMCktPmZsZFsw XSkucnR1aW50KSkgPD0gNyB8fCAoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQpKSA9PSAxNiB8 fCAoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQpKSA9PSAyMCB8fCAoKCgob3AwKS0+ZmxkWzBd KS5ydHVpbnQpID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmICgoKChv cDApLT5mbGRbMF0pLnJ0dWludCkpIDw9ICgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykg KyAxKSArIDcpKSB8fCAoKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgoKG9wMCktPmZsZFsw XSkucnR1aW50KSldID49ICgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICYmICh1 bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDApLT5mbGRbMF0pLnJ0dWludCkpXSA8PSAo KCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkgfHwgKHVuc2lnbmVkKSBy ZWdfcmVudW1iZXJbKCgoKG9wMCktPmZsZFswXSkucnR1aW50KSldIDw9IDcpKQogICAgICAg aW5kZXhfb3AgPSAxOwogICAgIGVsc2UgaWYgKCgoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQp KSA8PSA3IHx8ICgoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkpID09IDE2IHx8ICgoKChvcDEp LT5mbGRbMF0pLnJ0dWludCkpID09IDIwIHx8ICgoKChvcDEpLT5mbGRbMF0pLnJ0dWludCkg Pj0gKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgJiYgKCgoKG9wMSktPmZsZFsw XSkucnR1aW50KSkgPD0gKCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykp IHx8ICgodW5zaWduZWQpIHJlZ19yZW51bWJlclsoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQp KV0gPj0gKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgJiYgKHVuc2lnbmVkKSBy ZWdfcmVudW1iZXJbKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSldIDw9ICgoKCgoKDIwICsg MSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpKSB8fCAodW5zaWduZWQpIHJlZ19yZW51bWJl clsoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKV0gPD0gNykpCiAgICAgICBpbmRleF9vcCA9 IDA7CiAgICAgZWxzZSBpZiAoKCgoKChvcDApLT5mbGRbMF0pLnJ0dWludCkpIDw9IDcgfHwg KCgoKG9wMCktPmZsZFswXSkucnR1aW50KSkgPT0gMTYgfHwgKCgoKG9wMCktPmZsZFswXSku cnR1aW50KSkgPT0gMjAgfHwgKCgoKG9wMCktPmZsZFswXSkucnR1aW50KSA+PSAoKCgoKDIw ICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAmJiAoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQp KSA8PSAoKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgKyA3KSkgfHwgKCh1bnNp Z25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDApLT5mbGRbMF0pLnJ0dWludCkpXSA+PSAoKCgo KDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAmJiAodW5zaWduZWQpIHJlZ19yZW51bWJl clsoKCgob3AwKS0+ZmxkWzBdKS5ydHVpbnQpKV0gPD0gKCgoKCgoMjAgKyAxKSArIDcpICsg MSkgKyA3KSArIDEpICsgNykpIHx8ICh1bnNpZ25lZCkgcmVnX3JlbnVtYmVyWygoKChvcDAp LT5mbGRbMF0pLnJ0dWludCkpXSA8PSA3KSkKICAgICAgIGluZGV4X29wID0gMTsKICAgICBl bHNlIGlmICgoKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSkgPCA3IHx8ICgoKChvcDEpLT5m bGRbMF0pLnJ0dWludCkgPj0gKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkgJiYg KCgoKG9wMSktPmZsZFswXSkucnR1aW50KSkgPD0gKCgoKCgoMjAgKyAxKSArIDcpICsgMSkg KyA3KSArIDEpICsgNykpIHx8ICgodW5zaWduZWQpIHJlZ19yZW51bWJlclsoKCgob3AxKS0+ ZmxkWzBdKS5ydHVpbnQpKV0gPj0gKCgoKCgyMCArIDEpICsgNykgKyAxKSArIDcpICsgMSkg JiYgKHVuc2lnbmVkKSByZWdfcmVudW1iZXJbKCgoKG9wMSktPmZsZFswXSkucnR1aW50KSld IDw9ICgoKCgoKDIwICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpKSB8fCAodW5zaWdu ZWQpIHJlZ19yZW51bWJlclsoKCgob3AxKS0+ZmxkWzBdKS5ydHVpbnQpKV0gPCA3KSkKICAg ICAgIGluZGV4X29wID0gMTsKICAgICBlbHNlCiAgICAgICBpbmRleF9vcCA9IDA7CgogICAg IGxvY0kgPSAmKCgoeCktPmZsZFtpbmRleF9vcF0pLnJ0eCk7CiAgICAgbG9jQiA9ICYoKCh4 KS0+ZmxkWyFpbmRleF9vcF0pLnJ0eCk7CiAgIH0KIGVsc2UgaWYgKGNvZGUwID09IFJFRykK ICAgewogICAgIGxvY0kgPSAmKCgoeCktPmZsZFswXSkucnR4KTsKICAgICBsb2NCID0gJigo KHgpLT5mbGRbMV0pLnJ0eCk7CiAgIH0KIGVsc2UgaWYgKGNvZGUxID09IFJFRykKICAgewog ICAgIGxvY0kgPSAmKCgoeCktPmZsZFsxXSkucnR4KTsKICAgICBsb2NCID0gJigoKHgpLT5m bGRbMF0pLnJ0eCk7CiAgIH0KCiBpZiAobG9jSSkKICAgY2hhbmdlZCB8PSByZXBsYWNlX29s ZGVzdF92YWx1ZV9hZGRyIChsb2NJLCBJTkRFWF9SRUdTLCBtb2RlLAogICAgICAgICAgICAg aW5zbiwgdmQpOwogaWYgKGxvY0IpCiAgIGNoYW5nZWQgfD0gcmVwbGFjZV9vbGRlc3RfdmFs dWVfYWRkciAobG9jQiwKICAgICAgR0VORVJBTF9SRUdTLAogICAgICBtb2RlLCBpbnNuLCB2 ZCk7CiByZXR1cm4gY2hhbmdlZDsKICAgICAgfQoKICAgIGNhc2UgUE9TVF9JTkM6CiAgICBj YXNlIFBPU1RfREVDOgogICAgY2FzZSBQT1NUX01PRElGWToKICAgIGNhc2UgUFJFX0lOQzoK ICAgIGNhc2UgUFJFX0RFQzoKICAgIGNhc2UgUFJFX01PRElGWToKICAgICAgcmV0dXJuIDA7 CgogICAgY2FzZSBNRU06CiAgICAgIHJldHVybiByZXBsYWNlX29sZGVzdF92YWx1ZV9tZW0g KHgsIGluc24sIHZkKTsKCiAgICBjYXNlIFJFRzoKICAgICAgcmV0dXJuIHJlcGxhY2Vfb2xk ZXN0X3ZhbHVlX3JlZyAobG9jLCBjbGFzcywgaW5zbiwgdmQpOwoKICAgIGRlZmF1bHQ6CiAg ICAgIGJyZWFrOwogICAgfQoKICBmbXQgPSAocnR4X2Zvcm1hdFsoaW50KSAoY29kZSldKTsK ICBmb3IgKGkgPSAocnR4X2xlbmd0aFsoaW50KSAoY29kZSldKSAtIDE7IGkgPj0gMDsgaS0t KQogICAgewogICAgICBpZiAoZm10W2ldID09ICdlJykKIGNoYW5nZWQgfD0gcmVwbGFjZV9v bGRlc3RfdmFsdWVfYWRkciAoJigoKHgpLT5mbGRbaV0pLnJ0eCksIGNsYXNzLCBtb2RlLAog ICAgICAgICAgIGluc24sIHZkKTsKICAgICAgZWxzZSBpZiAoZm10W2ldID09ICdFJykKIGZv ciAoaiA9ICgoKCgoeCktPmZsZFtpXSkucnR2ZWMpKS0+bnVtX2VsZW0pIC0gMTsgaiA+PSAw OyBqLS0pCiAgIGNoYW5nZWQgfD0gcmVwbGFjZV9vbGRlc3RfdmFsdWVfYWRkciAoJigoKCgo eCktPmZsZFtpXSkucnR2ZWMpKS0+ZWxlbVtqXSksIGNsYXNzLAogICAgICAgICAgICAgbW9k ZSwgaW5zbiwgdmQpOwogICAgfQoKICByZXR1cm4gY2hhbmdlZDsKfQoKCgpzdGF0aWMgX0Jv b2wKcmVwbGFjZV9vbGRlc3RfdmFsdWVfbWVtICh4LCBpbnNuLCB2ZCkKICAgICBydHggeDsK ICAgICBydHggaW5zbjsKICAgICBzdHJ1Y3QgdmFsdWVfZGF0YSAqdmQ7CnsKICByZXR1cm4g cmVwbGFjZV9vbGRlc3RfdmFsdWVfYWRkciAoJigoKHgpLT5mbGRbMF0pLnJ0eCksCiAgICAg ICAgR0VORVJBTF9SRUdTLAogICAgICAgICgoZW51bSBtYWNoaW5lX21vZGUpICh4KS0+bW9k ZSksIGluc24sIHZkKTsKfQoKCgpzdGF0aWMgX0Jvb2wKY29weXByb3BfaGFyZHJlZ19mb3J3 YXJkXzEgKGJiLCB2ZCkKICAgICBiYXNpY19ibG9jayBiYjsKICAgICBzdHJ1Y3QgdmFsdWVf ZGF0YSAqdmQ7CnsKICBfQm9vbCBjaGFuZ2VkID0gMDsKICBydHggaW5zbjsKCiAgZm9yIChp bnNuID0gYmItPmhlYWQ7IDsgaW5zbiA9ICgoKGluc24pLT5mbGRbMl0pLnJ0eCkpCiAgICB7 CiAgICAgIGludCBuX29wcywgaSwgYWx0LCBwcmVkaWNhdGVkOwogICAgICBfQm9vbCBpc19h c207CiAgICAgIHJ0eCBzZXQ7CgogICAgICBpZiAoISAoKHJ0eF9jbGFzc1soaW50KSAoKChl bnVtIHJ0eF9jb2RlKSAoaW5zbiktPmNvZGUpKV0pID09ICdpJykpCiB7CiAgIGlmIChpbnNu ID09IGJiLT5lbmQpCiAgICAgYnJlYWs7CiAgIGVsc2UKICAgICBjb250aW51ZTsKIH0KCiAg ICAgIHNldCA9ICgoKHJ0eF9jbGFzc1soaW50KSAoKChlbnVtIHJ0eF9jb2RlKSAoaW5zbikt PmNvZGUpKV0pID09ICdpJykgPyAoKChlbnVtIHJ0eF9jb2RlKSAoKCgoaW5zbiktPmZsZFsz XSkucnR4KSktPmNvZGUpID09IFNFVCA/ICgoKGluc24pLT5mbGRbM10pLnJ0eCkgOiBzaW5n bGVfc2V0XzIgKGluc24sICgoKGluc24pLT5mbGRbM10pLnJ0eCkpKSA6IChydHgpIDApOwog ICAgICBleHRyYWN0X2luc24gKGluc24pOwogICAgICBjb25zdHJhaW5fb3BlcmFuZHMgKDEp OwogICAgICBwcmVwcm9jZXNzX2NvbnN0cmFpbnRzICgpOwogICAgICBhbHQgPSB3aGljaF9h bHRlcm5hdGl2ZTsKICAgICAgbl9vcHMgPSByZWNvZ19kYXRhLm5fb3BlcmFuZHM7CiAgICAg IGlzX2FzbSA9IGFzbV9ub3BlcmFuZHMgKCgoKGluc24pLT5mbGRbM10pLnJ0eCkpID49IDA7 CgoKCgoKICAgICAgcHJlZGljYXRlZCA9ICgoZW51bSBydHhfY29kZSkgKCgoKGluc24pLT5m bGRbM10pLnJ0eCkpLT5jb2RlKSA9PSBDT05EX0VYRUM7CiAgICAgIGZvciAoaSA9IDA7IGkg PCBuX29wczsgKytpKQogewogICBpbnQgbWF0Y2hlcyA9IHJlY29nX29wX2FsdFtpXVthbHRd Lm1hdGNoZXM7CiAgIGlmIChtYXRjaGVzID49IDApCiAgICAgcmVjb2dfb3BfYWx0W2ldW2Fs dF0uY2xhc3MgPSByZWNvZ19vcF9hbHRbbWF0Y2hlc11bYWx0XS5jbGFzczsKICAgaWYgKG1h dGNoZXMgPj0gMCB8fCByZWNvZ19vcF9hbHRbaV1bYWx0XS5tYXRjaGVkID49IDAKICAgICAg IHx8IChwcmVkaWNhdGVkICYmIHJlY29nX2RhdGEub3BlcmFuZF90eXBlW2ldID09IE9QX09V VCkpCiAgICAgcmVjb2dfZGF0YS5vcGVyYW5kX3R5cGVbaV0gPSBPUF9JTk9VVDsKIH0KCgog ICAgICBmb3IgKGkgPSAwOyBpIDwgbl9vcHM7IGkrKykKIGlmIChyZWNvZ19vcF9hbHRbaV1b YWx0XS5lYXJseWNsb2JiZXIpCiAgIGtpbGxfdmFsdWUgKHJlY29nX2RhdGEub3BlcmFuZFtp XSwgdmQpOwoKCgoKICAgICAgbm90ZV9zdG9yZXMgKCgoKGluc24pLT5mbGRbM10pLnJ0eCks IGtpbGxfY2xvYmJlcmVkX3ZhbHVlLCB2ZCk7CgoKCiAgICAgIGZvcl9lYWNoX3J0eCAoJigo KGluc24pLT5mbGRbM10pLnJ0eCksIGtpbGxfYXV0b2luY192YWx1ZSwgdmQpOwoKCiAgICAg IGZvciAoaSA9IDA7IGkgPCBuX29wczsgaSsrKQogaWYgKHJlY29nX29wX2FsdFtpXVthbHRd LmVhcmx5Y2xvYmJlcikKICAga2lsbF92YWx1ZSAocmVjb2dfZGF0YS5vcGVyYW5kW2ldLCB2 ZCk7CgoKCiAgICAgIGlmIChzZXQgJiYgKCgoZW51bSBydHhfY29kZSkgKCgoKHNldCktPmZs ZFsxXSkucnR4KSktPmNvZGUpID09IFJFRykpCiB7CiAgIHJ0eCBzcmMgPSAoKChzZXQpLT5m bGRbMV0pLnJ0eCk7CiAgIHVuc2lnbmVkIGludCByZWdubyA9ICgoKHNyYyktPmZsZFswXSku cnR1aW50KTsKICAgZW51bSBtYWNoaW5lX21vZGUgbW9kZSA9ICgoZW51bSBtYWNoaW5lX21v ZGUpIChzcmMpLT5tb2RlKTsKICAgdW5zaWduZWQgaW50IGk7CiAgIHJ0eCBuZXc7CgoKCiAg IGlmIChtb2RlICE9IHZkLT5lW3JlZ25vXS5tb2RlKQogICAgIHsKICAgICAgIGlmICgoKChy ZWdubykgPj0gOCAmJiAocmVnbm8pIDw9ICg4ICsgNykpIHx8ICgoKHJlZ25vKSA+PSAoMjAg KyAxKSAmJiAocmVnbm8pIDw9ICgoMjAgKyAxKSArIDcpKSB8fCAoKHJlZ25vKSA+PSAoKCgo KCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAmJiAocmVnbm8pIDw9 ICgoKCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSArIDcpKSkg fHwgKChyZWdubykgPj0gKCgoMjAgKyAxKSArIDcpICsgMSkgJiYgKHJlZ25vKSA8PSAoKCgo MjAgKyAxKSArIDcpICsgMSkgKyA3KSkgPyAoKChtb2RlX2NsYXNzWyhpbnQpIChtb2RlKV0p ID09IE1PREVfQ09NUExFWF9JTlQgfHwgKG1vZGVfY2xhc3NbKGludCkgKG1vZGUpXSkgPT0g TU9ERV9DT01QTEVYX0ZMT0FUKSA/IDIgOiAxKSA6ICgobW9kZSkgPT0gVEZtb2RlID8gKCh0 YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDIgOiAzKSA6IChtb2RlKSA9PSBUQ21vZGUg PyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDApID8gNCA6IDYpIDogKCgobW9kZV9zaXpl WyhpbnQpIChtb2RlKV0pICsgKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0 KSAtIDEpIC8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDggOiA0KSkpKQogICAg PiAoKChyZWdubykgPj0gOCAmJiAocmVnbm8pIDw9ICg4ICsgNykpIHx8ICgoKHJlZ25vKSA+ PSAoMjAgKyAxKSAmJiAocmVnbm8pIDw9ICgoMjAgKyAxKSArIDcpKSB8fCAoKHJlZ25vKSA+ PSAoKCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAmJiAocmVn bm8pIDw9ICgoKCgoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSArIDEpICsgNykgKyAxKSAr IDcpKSkgfHwgKChyZWdubykgPj0gKCgoMjAgKyAxKSArIDcpICsgMSkgJiYgKHJlZ25vKSA8 PSAoKCgoMjAgKyAxKSArIDcpICsgMSkgKyA3KSkgPyAoKChtb2RlX2NsYXNzWyhpbnQpICh2 ZC0+ZVtyZWdub10ubW9kZSldKSA9PSBNT0RFX0NPTVBMRVhfSU5UIHx8IChtb2RlX2NsYXNz WyhpbnQpICh2ZC0+ZVtyZWdub10ubW9kZSldKSA9PSBNT0RFX0NPTVBMRVhfRkxPQVQpID8g MiA6IDEpIDogKCh2ZC0+ZVtyZWdub10ubW9kZSkgPT0gVEZtb2RlID8gKCh0YXJnZXRfZmxh Z3MgJiAweDAyMDAwMDAwKSA/IDIgOiAzKSA6ICh2ZC0+ZVtyZWdub10ubW9kZSkgPT0gVENt b2RlID8gKCh0YXJnZXRfZmxhZ3MgJiAweDAyMDAwMDAwKSA/IDQgOiA2KSA6ICgoKG1vZGVf c2l6ZVsoaW50KSAodmQtPmVbcmVnbm9dLm1vZGUpXSkgKyAoKHRhcmdldF9mbGFncyAmIDB4 MDIwMDAwMDApID8gOCA6IDQpIC0gMSkgLyAoKHRhcmdldF9mbGFncyAmIDB4MDIwMDAwMDAp ID8gOCA6IDQpKSkpKQogIGdvdG8gbm9fbW92ZV9zcGVjaWFsX2Nhc2U7CiAgICAgfQoKCgog ICBpZiAoKCgoZW51bSBydHhfY29kZSkgKCgoKHNldCktPmZsZFswXSkucnR4KSktPmNvZGUp ID09IFJFRykpCiAgICAgewogICAgICAgbmV3ID0gZmluZF9vbGRlc3RfdmFsdWVfcmVnICgo cmVnY2xhc3NfbWFwW3JlZ25vXSksIHNyYywgdmQpOwogICAgICAgaWYgKG5ldyAmJiB2YWxp ZGF0ZV9jaGFuZ2UgKGluc24sICYoKChzZXQpLT5mbGRbMV0pLnJ0eCksIG5ldywgMCkpCiAg ewogICAgaWYgKHJ0bF9kdW1wX2ZpbGUpCiAgICAgIGZwcmludGYgKHJ0bF9kdW1wX2ZpbGUs CiAgICAgICAgImluc24gJXU6IHJlcGxhY2VkIHJlZyAldSB3aXRoICV1XG4iLAogICAgICAg ICgoKGluc24pLT5mbGRbMF0pLnJ0aW50KSwgcmVnbm8sICgoKG5ldyktPmZsZFswXSkucnR1 aW50KSk7CiAgICAgICAgICAgY2hhbmdlZCA9IDE7CiAgICBnb3RvIGRpZF9yZXBsYWNlbWVu dDsKICB9CiAgICAgfQoKCiAgIGZvciAoaSA9IHZkLT5lW3JlZ25vXS5vbGRlc3RfcmVnbm87 IGkgIT0gcmVnbm87CiAgICAgICAgaSA9IHZkLT5lW2ldLm5leHRfcmVnbm8pCiAgICAgaWYg KHZkLT5lW2ldLm1vZGUgPT0gbW9kZQogIHx8IG1vZGVfY2hhbmdlX29rICh2ZC0+ZVtpXS5t b2RlLCBtb2RlLCBpKSkKICAgICAgIHsKICBuZXcgPSBnZW5fcnR4X2ZtdF9pMCAoUkVHLCAo bW9kZSksIChpKSk7CiAgaWYgKHZhbGlkYXRlX2NoYW5nZSAoaW5zbiwgJigoKHNldCktPmZs ZFsxXSkucnR4KSwgbmV3LCAwKSkKICAgIHsKICAgICAgKCgobmV3KS0+ZmxkWzFdKS5ydHVp bnQpID0gKCgoc3JjKS0+ZmxkWzFdKS5ydHVpbnQpOwogICAgICBpZiAocnRsX2R1bXBfZmls ZSkKICAgICAgICBmcHJpbnRmIChydGxfZHVtcF9maWxlLAogICAgICAgICAgImluc24gJXU6 IHJlcGxhY2VkIHJlZyAldSB3aXRoICV1XG4iLAogICAgICAgICAgKCgoaW5zbiktPmZsZFsw XSkucnRpbnQpLCByZWdubywgKCgobmV3KS0+ZmxkWzBdKS5ydHVpbnQpKTsKICAgICAgY2hh bmdlZCA9IDE7CiAgICAgIGdvdG8gZGlkX3JlcGxhY2VtZW50OwogICAgfQogICAgICAgfQog fQogICAgICBub19tb3ZlX3NwZWNpYWxfY2FzZToKCgoKICAgICAgZm9yIChpID0gMDsgaSA8 IG5fb3BzOyBpKyspCiB7CiAgIF9Cb29sIHJlcGxhY2VkID0gMDsKCgoKCiAgIGlmIChyZWNv Z19kYXRhLmNvbnN0cmFpbnRzW2ldWzBdID09ICdcMCcpCiAgICAgY29udGludWU7CgoKICAg aWYgKGlzX2FzbSAmJiAoKGVudW0gcnR4X2NvZGUpIChyZWNvZ19kYXRhLm9wZXJhbmRbaV0p LT5jb2RlKSA9PSBSRUcKICAgICAgICYmICgoKChyZWNvZ19kYXRhLm9wZXJhbmRbaV0pLT5m bGRbMF0pLnJ0dWludCkKICAgID09ICgoKHJlY29nX2RhdGEub3BlcmFuZFtpXSktPmZsZFsx XSkucnR1aW50KSkpCiAgICAgY29udGludWU7CgogICBpZiAocmVjb2dfZGF0YS5vcGVyYW5k X3R5cGVbaV0gPT0gT1BfSU4pCiAgICAgewogICAgICAgaWYgKHJlY29nX29wX2FsdFtpXVth bHRdLmlzX2FkZHJlc3MpCiAgcmVwbGFjZWQKICAgID0gcmVwbGFjZV9vbGRlc3RfdmFsdWVf YWRkciAocmVjb2dfZGF0YS5vcGVyYW5kX2xvY1tpXSwKICAgICAgICAgICAgcmVjb2dfb3Bf YWx0W2ldW2FsdF0uY2xhc3MsCiAgICAgICAgICAgIFZPSURtb2RlLCBpbnNuLCB2ZCk7CiAg ICAgICBlbHNlIGlmICgoKChlbnVtIHJ0eF9jb2RlKSAocmVjb2dfZGF0YS5vcGVyYW5kW2ld KS0+Y29kZSkgPT0gUkVHKSkKICByZXBsYWNlZAogICAgPSByZXBsYWNlX29sZGVzdF92YWx1 ZV9yZWcgKHJlY29nX2RhdGEub3BlcmFuZF9sb2NbaV0sCiAgICAgICAgICAgcmVjb2dfb3Bf YWx0W2ldW2FsdF0uY2xhc3MsCiAgICAgICAgICAgaW5zbiwgdmQpOwogICAgICAgZWxzZSBp ZiAoKChlbnVtIHJ0eF9jb2RlKSAocmVjb2dfZGF0YS5vcGVyYW5kW2ldKS0+Y29kZSkgPT0g TUVNKQogIHJlcGxhY2VkID0gcmVwbGFjZV9vbGRlc3RfdmFsdWVfbWVtIChyZWNvZ19kYXRh Lm9wZXJhbmRbaV0sCiAgICAgICAgICAgaW5zbiwgdmQpOwogICAgIH0KICAgZWxzZSBpZiAo KChlbnVtIHJ0eF9jb2RlKSAocmVjb2dfZGF0YS5vcGVyYW5kW2ldKS0+Y29kZSkgPT0gTUVN KQogICAgIHJlcGxhY2VkID0gcmVwbGFjZV9vbGRlc3RfdmFsdWVfbWVtIChyZWNvZ19kYXRh Lm9wZXJhbmRbaV0sCiAgICAgICAgICAgICAgaW5zbiwgdmQpOwoKCiAgIGlmIChyZXBsYWNl ZCkKICAgICB7CiAgICAgICBpbnQgajsKICAgICAgIHJ0eCBuZXc7CgogICAgICAgY2hhbmdl ZCA9IDE7CgogICAgICAgbmV3ID0gKnJlY29nX2RhdGEub3BlcmFuZF9sb2NbaV07CiAgICAg ICByZWNvZ19kYXRhLm9wZXJhbmRbaV0gPSBuZXc7CiAgICAgICBmb3IgKGogPSAwOyBqIDwg cmVjb2dfZGF0YS5uX2R1cHM7IGorKykKICBpZiAocmVjb2dfZGF0YS5kdXBfbnVtW2pdID09 IGkpCiAgICAqcmVjb2dfZGF0YS5kdXBfbG9jW2pdID0gbmV3OwogICAgIH0KIH0KCiAgICBk aWRfcmVwbGFjZW1lbnQ6CgogICAgICBpZiAoKChlbnVtIHJ0eF9jb2RlKSAoaW5zbiktPmNv ZGUpID09IENBTExfSU5TTikKIGZvciAoaSA9IDA7IGkgPCA1MzsgaSsrKQogICBpZiAoKChy ZWdzX2ludmFsaWRhdGVkX2J5X2NhbGwpICYgKCgoSEFSRF9SRUdfRUxUX1RZUEUpICgxKSkg PDwgKGkpKSkpCiAgICAga2lsbF92YWx1ZV9yZWdubyAoaSwgdmQpOwoKCiAgICAgIG5vdGVf c3RvcmVzICgoKChpbnNuKS0+ZmxkWzNdKS5ydHgpLCBraWxsX3NldF92YWx1ZSwgdmQpOwoK CiAgICAgIGlmIChzZXQgJiYgKCgoZW51bSBydHhfY29kZSkgKCgoKHNldCktPmZsZFswXSku cnR4KSktPmNvZGUpID09IFJFRykgJiYgKCgoZW51bSBydHhfY29kZSkgKCgoKHNldCktPmZs ZFsxXSkucnR4KSktPmNvZGUpID09IFJFRykpCiBjb3B5X3ZhbHVlICgoKChzZXQpLT5mbGRb MF0pLnJ0eCksICgoKHNldCktPmZsZFsxXSkucnR4KSwgdmQpOwoKICAgICAgaWYgKGluc24g PT0gYmItPmVuZCkKIGJyZWFrOwogICAgfQoKICByZXR1cm4gY2hhbmdlZDsKfQoKCgp2b2lk CmNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZCAoKQp7CiAgc3RydWN0IHZhbHVlX2RhdGEgKmFs bF92ZDsKICBfQm9vbCBuZWVkX3JlZnJlc2g7CiAgaW50IGI7CgogIG5lZWRfcmVmcmVzaCA9 IDA7CgogIGFsbF92ZCA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHZhbHVlX2RhdGEpICog bl9iYXNpY19ibG9ja3MpOwoKICBmb3IgKGIgPSAwOyBiIDwgbl9iYXNpY19ibG9ja3M7IGIr KykKICAgIHsKICAgICAgYmFzaWNfYmxvY2sgYmIgPSAoKChiYXNpY19ibG9ja19pbmZvKS0+ ZGF0YS5iYlsoYildKSk7CgoKCgoKICAgICAgaWYgKGJiLT5wcmVkCiAgICYmICEgYmItPnBy ZWQtPnByZWRfbmV4dAogICAmJiAhIChiYi0+cHJlZC0+ZmxhZ3MgJiAoNCB8IDgpKQogICAm JiBiYi0+cHJlZC0+c3JjLT5pbmRleCAhPSAoLTEpCiAgICYmIGJiLT5wcmVkLT5zcmMtPmlu ZGV4IDwgYikKIGFsbF92ZFtiXSA9IGFsbF92ZFtiYi0+cHJlZC0+c3JjLT5pbmRleF07CiAg ICAgIGVsc2UKICAgICAgICBpbml0X3ZhbHVlX2RhdGEgKGFsbF92ZCArIGIpOwoKICAgICAg aWYgKGNvcHlwcm9wX2hhcmRyZWdfZm9yd2FyZF8xIChiYiwgYWxsX3ZkICsgYikpCiBuZWVk X3JlZnJlc2ggPSAxOwogICAgfQoKICBpZiAobmVlZF9yZWZyZXNoKQogICAgewogICAgICBp ZiAocnRsX2R1bXBfZmlsZSkKIGZwdXRzICgiXG5cbiIsIHJ0bF9kdW1wX2ZpbGUpOwoKCgoK ICAgICAgZGVsZXRlX25vb3BfbW92ZXMgKGdldF9pbnNucyAoKSk7CiAgICAgIHVwZGF0ZV9s aWZlX2luZm8gKAojIDE3NjMgInJlZ3JlbmFtZS5jIiAzIDQKICAgICAgICAgICAgICAgICAg ICAgICAoKHZvaWQgKikwKQojIDE3NjMgInJlZ3JlbmFtZS5jIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAsIFVQREFURV9MSUZFX0dMT0JBTF9STV9OT1RFUywKICAgMQogICB8IDE2 CiAgIHwgOCk7CiAgICB9CgogIGZyZWUgKGFsbF92ZCk7Cn0KCgoKdm9pZApkZWJ1Z192YWx1 ZV9kYXRhICh2ZCkKICAgICBzdHJ1Y3QgdmFsdWVfZGF0YSAqdmQ7CnsKICBIQVJEX1JFR19F TFRfVFlQRSBzZXQ7CiAgdW5zaWduZWQgaW50IGksIGo7CgogICgoc2V0KSA9ICgoSEFSRF9S RUdfRUxUX1RZUEUpICgwKSkpOwoKICBmb3IgKGkgPSAwOyBpIDwgNTM7ICsraSkKICAgIGlm ICh2ZC0+ZVtpXS5vbGRlc3RfcmVnbm8gPT0gaSkKICAgICAgewogaWYgKHZkLT5lW2ldLm1v ZGUgPT0gVk9JRG1vZGUpCiAgIHsKICAgICBpZiAodmQtPmVbaV0ubmV4dF9yZWdubyAhPSAo fih1bnNpZ25lZCBpbnQpIDApKQogICAgICAgZnByaW50ZiAoCiMgMTc4OSAicmVncmVuYW1l LmMiIDMgNAogICAgICAgICAgICAgICBzdGRlcnIKIyAxNzg5ICJyZWdyZW5hbWUuYyIKICAg ICAgICAgICAgICAgICAgICAgLCAiWyV1XSBCYWQgbmV4dF9yZWdubyBmb3IgZW1wdHkgY2hh aW4gKCV1KVxuIiwKICAgICAgICAgaSwgdmQtPmVbaV0ubmV4dF9yZWdubyk7CiAgICAgY29u dGludWU7CiAgIH0KCiAoKHNldCkgfD0gKChIQVJEX1JFR19FTFRfVFlQRSkgKDEpKSA8PCAo aSkpOwogZnByaW50ZiAoCiMgMTc5NSAicmVncmVuYW1lLmMiIDMgNAogICAgICAgICBzdGRl cnIKIyAxNzk1ICJyZWdyZW5hbWUuYyIKICAgICAgICAgICAgICAgLCAiWyV1ICVzXSAiLCBp LCAobW9kZV9uYW1lWyhpbnQpICh2ZC0+ZVtpXS5tb2RlKV0pKTsKCiBmb3IgKGogPSB2ZC0+ ZVtpXS5uZXh0X3JlZ25vOwogICAgICBqICE9ICh+KHVuc2lnbmVkIGludCkgMCk7CiAgICAg IGogPSB2ZC0+ZVtqXS5uZXh0X3JlZ25vKQogICB7CiAgICAgaWYgKCgoc2V0KSAmICgoKEhB UkRfUkVHX0VMVF9UWVBFKSAoMSkpIDw8IChqKSkpKQogICAgICAgewogIGZwcmludGYgKAoj IDE4MDMgInJlZ3JlbmFtZS5jIiAzIDQKICAgICAgICAgIHN0ZGVycgojIDE4MDMgInJlZ3Jl bmFtZS5jIgogICAgICAgICAgICAgICAgLCAiWyV1XSBMb29wIGluIHJlZ25vIGNoYWluXG4i LCBqKTsKICByZXR1cm47CiAgICAgICB9CgogICAgIGlmICh2ZC0+ZVtqXS5vbGRlc3RfcmVn bm8gIT0gaSkKICAgICAgIHsKICBmcHJpbnRmICgKIyAxODA5ICJyZWdyZW5hbWUuYyIgMyA0 CiAgICAgICAgICBzdGRlcnIKIyAxODA5ICJyZWdyZW5hbWUuYyIKICAgICAgICAgICAgICAg ICwgIlsldV0gQmFkIG9sZGVzdF9yZWdubyAoJXUpXG4iLAogICAgaiwgdmQtPmVbal0ub2xk ZXN0X3JlZ25vKTsKICByZXR1cm47CiAgICAgICB9CiAgICAgKChzZXQpIHw9ICgoSEFSRF9S RUdfRUxUX1RZUEUpICgxKSkgPDwgKGopKTsKICAgICBmcHJpbnRmICgKIyAxODE0ICJyZWdy ZW5hbWUuYyIgMyA0CiAgICAgICAgICAgICBzdGRlcnIKIyAxODE0ICJyZWdyZW5hbWUuYyIK ICAgICAgICAgICAgICAgICAgICwgIlsldSAlc10gIiwgaiwgKG1vZGVfbmFtZVsoaW50KSAo dmQtPmVbal0ubW9kZSldKSk7CiAgIH0KIGZwdXRjICgnXG4nLCAKIyAxODE2ICJyZWdyZW5h bWUuYyIgMyA0CiAgICAgICAgICAgICBzdGRlcnIKIyAxODE2ICJyZWdyZW5hbWUuYyIKICAg ICAgICAgICAgICAgICAgICk7CiAgICAgIH0KCiAgZm9yIChpID0gMDsgaSA8IDUzOyArK2kp CiAgICBpZiAoISAoKHNldCkgJiAoKChIQVJEX1JFR19FTFRfVFlQRSkgKDEpKSA8PCAoaSkp KQogJiYgKHZkLT5lW2ldLm1vZGUgIT0gVk9JRG1vZGUKICAgICB8fCB2ZC0+ZVtpXS5vbGRl c3RfcmVnbm8gIT0gaQogICAgIHx8IHZkLT5lW2ldLm5leHRfcmVnbm8gIT0gKH4odW5zaWdu ZWQgaW50KSAwKSkpCiAgICAgIGZwcmludGYgKAojIDE4MjQgInJlZ3JlbmFtZS5jIiAzIDQK ICAgICAgICAgICAgICBzdGRlcnIKIyAxODI0ICJyZWdyZW5hbWUuYyIKICAgICAgICAgICAg ICAgICAgICAsICJbJXVdIE5vbi1lbXB0eSByZWcgaW4gY2hhaW4gKCVzICV1ICVpKVxuIiwK ICAgICAgICBpLCAobW9kZV9uYW1lWyhpbnQpICh2ZC0+ZVtpXS5tb2RlKV0pLCB2ZC0+ZVtp XS5vbGRlc3RfcmVnbm8sCiAgICAgICAgdmQtPmVbaV0ubmV4dF9yZWdubyk7Cn0K --------------129B177C31D46CE5CB446103--