From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dwdVH-0003NJ-TK for qemu-devel@nongnu.org; Mon, 25 Sep 2017 20:13:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dwdV8-0005zD-9m for qemu-devel@nongnu.org; Mon, 25 Sep 2017 20:13:35 -0400 From: Alistair Francis Date: Mon, 25 Sep 2017 17:08:39 -0700 Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__ List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: alistair.francis@xilinx.com, alistair23@gmail.com, armbru@redhat.com, Gerd Hoffmann , Andrzej Zaborowski , Stefano Stabellini , Anthony Perard , John Snow , Aurelien Jarno , Yongbok Kim , Peter Crosthwaite , Stefan Hajnoczi , Fam Zheng , Juan Quintela , "Dr. David Alan Gilbert" , qemu-arm@nongnu.org, qemu-block@nongnu.org, xen-devel@lists.xenproject.org Replace all occurs of __FUNCTION__ except for the check in checkpatch with the non GCC specific __func__. One line in hcd-musb.c was manually tweaked to pass checkpatch. Signed-off-by: Alistair Francis Cc: Gerd Hoffmann Cc: Andrzej Zaborowski Cc: Stefano Stabellini Cc: Anthony Perard Cc: John Snow Cc: Aurelien Jarno Cc: Yongbok Kim Cc: Peter Crosthwaite Cc: Stefan Hajnoczi (supporter:Block Cc: Fam Zheng (supporter:Block Cc: Juan Quintela Cc: "Dr. David Alan Gilbert" Cc: qemu-arm@nongnu.org Cc: qemu-block@nongnu.org Cc: xen-devel@lists.xenproject.org --- audio/audio_int.h | 2 +- hw/arm/nseries.c | 2 +- hw/arm/omap1.c | 42 +++++++++++++++++++++--------------------- hw/arm/omap2.c | 12 ++++++------ hw/arm/palm.c | 14 +++++++------- hw/arm/pxa2xx.c | 46 +++++++++++++++++++++++----------------------- hw/arm/pxa2xx_gpio.c | 6 +++--- hw/arm/pxa2xx_pic.c | 4 ++-- hw/arm/tosa.c | 10 +++++----- hw/audio/hda-codec.c | 10 +++++----- hw/audio/intel-hda.c | 28 ++++++++++++++-------------- hw/audio/wm8750.c | 4 ++-- hw/block/nand.c | 4 ++-- hw/block/onenand.c | 8 ++++---- hw/bt/core.c | 10 +++++----- hw/bt/hci-csr.c | 14 +++++++------- hw/bt/hci.c | 26 +++++++++++++------------- hw/bt/hid.c | 2 +- hw/bt/l2cap.c | 22 +++++++++++----------- hw/bt/sdp.c | 6 +++--- hw/display/blizzard.c | 18 +++++++++--------- hw/display/omap_dss.c | 6 +++--- hw/display/pxa2xx_lcd.c | 14 +++++++------- hw/display/qxl-render.c | 6 +++--- hw/display/qxl.h | 2 +- hw/display/tc6393xb.c | 2 +- hw/display/xenfb.c | 2 +- hw/dma/omap_dma.c | 26 +++++++++++++------------- hw/dma/pxa2xx_dma.c | 14 +++++++------- hw/gpio/max7310.c | 8 ++++---- hw/gpio/omap_gpio.c | 2 +- hw/i2c/omap_i2c.c | 6 +++--- hw/ide/ahci.c | 2 +- hw/ide/microdrive.c | 4 ++-- hw/input/lm832x.c | 6 +++--- hw/input/pxa2xx_keypad.c | 6 +++--- hw/input/tsc2005.c | 8 ++++---- hw/input/tsc210x.c | 4 ++-- hw/intc/omap_intc.c | 2 +- hw/isa/vt82c686.c | 2 +- hw/mips/gt64xxx_pci.c | 2 +- hw/misc/cbus.c | 12 ++++++------ hw/misc/omap_clk.c | 4 ++-- hw/misc/omap_gpmc.c | 6 +++--- hw/misc/omap_l4.c | 4 ++-- hw/misc/omap_sdrc.c | 2 +- hw/misc/omap_tap.c | 6 +++--- hw/misc/tmp105.c | 2 +- hw/pci-host/bonito.c | 2 +- hw/sd/pxa2xx_mmci.c | 6 +++--- hw/ssi/omap_spi.c | 6 +++--- hw/timer/omap_gptimer.c | 6 +++--- hw/timer/twl92230.c | 6 +++--- hw/usb/desc.c | 2 +- hw/usb/dev-bluetooth.c | 4 ++-- hw/usb/hcd-musb.c | 4 ++-- hw/usb/tusb6010.c | 14 +++++++------- hw/xenpv/xen_domainbuild.c | 16 ++++++++-------- hw/xenpv/xen_machine_pv.c | 2 +- include/hw/arm/omap.h | 10 +++++----- include/hw/arm/sharpsl.h | 2 +- memory_mapping.c | 2 +- migration/block.c | 4 ++-- ui/cursor.c | 6 +++--- ui/spice-display.c | 4 ++-- 65 files changed, 273 insertions(+), 273 deletions(-) diff --git a/audio/audio_int.h b/audio/audio_int.h index 5bcb1c60e1..543b1bd8d5 100644 --- a/audio/audio_int.h +++ b/audio/audio_int.h @@ -253,7 +253,7 @@ static inline int audio_ring_dist (int dst, int src, int len) #define AUDIO_STRINGIFY(n) AUDIO_STRINGIFY_(n) #if defined _MSC_VER || defined __GNUC__ -#define AUDIO_FUNC __FUNCTION__ +#define AUDIO_FUNC __func__ #else #define AUDIO_FUNC __FILE__ ":" AUDIO_STRINGIFY (__LINE__) #endif diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c index 58005b6619..32687afced 100644 --- a/hw/arm/nseries.c +++ b/hw/arm/nseries.c @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len) uint8_t ret; if (len > 9) { - hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len); + hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len); } if (s->p >= ARRAY_SIZE(s->resp)) { diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c index b3e7625130..1388200191 100644 --- a/hw/arm/omap1.c +++ b/hw/arm/omap1.c @@ -999,7 +999,7 @@ static uint64_t omap_id_read(void *opaque, hwaddr addr, case omap1510: return 0x03310115; default: - hw_error("%s: bad mpu model\n", __FUNCTION__); + hw_error("%s: bad mpu model\n", __func__); } break; @@ -1010,7 +1010,7 @@ static uint64_t omap_id_read(void *opaque, hwaddr addr, case omap1510: return 0xfb47002f; default: - hw_error("%s: bad mpu model\n", __FUNCTION__); + hw_error("%s: bad mpu model\n", __func__); } break; } @@ -1716,7 +1716,7 @@ static void omap_clkm_write(void *opaque, hwaddr addr, case 0x18: /* ARM_SYSST */ if ((s->clkm.clocking_scheme ^ (value >> 11)) & 7) { s->clkm.clocking_scheme = (value >> 11) & 7; - printf("%s: clocking scheme set to %s\n", __FUNCTION__, + printf("%s: clocking scheme set to %s\n", __func__, clkschemename[s->clkm.clocking_scheme]); } s->clkm.cold_start &= value & 0x3f; @@ -2129,14 +2129,14 @@ qemu_irq *omap_mpuio_in_get(struct omap_mpuio_s *s) void omap_mpuio_out_set(struct omap_mpuio_s *s, int line, qemu_irq handler) { if (line >= 16 || line < 0) - hw_error("%s: No GPIO line %i\n", __FUNCTION__, line); + hw_error("%s: No GPIO line %i\n", __func__, line); s->handler[line] = handler; } void omap_mpuio_key(struct omap_mpuio_s *s, int row, int col, int down) { if (row >= 5 || row < 0) - hw_error("%s: No key %i-%i\n", __FUNCTION__, col, row); + hw_error("%s: No key %i-%i\n", __func__, col, row); if (down) s->buttons[row] |= 1 << col; @@ -2313,7 +2313,7 @@ void omap_uwire_attach(struct omap_uwire_s *s, uWireSlave *slave, int chipselect) { if (chipselect < 0 || chipselect > 3) { - fprintf(stderr, "%s: Bad chipselect %i\n", __FUNCTION__, chipselect); + fprintf(stderr, "%s: Bad chipselect %i\n", __func__, chipselect); exit(-1); } @@ -2335,7 +2335,7 @@ static void omap_pwl_update(struct omap_pwl_s *s) if (output != s->output) { s->output = output; - printf("%s: Backlight now at %i/256\n", __FUNCTION__, output); + printf("%s: Backlight now at %i/256\n", __func__, output); } } @@ -2473,7 +2473,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr, case 0x04: /* VRC */ if ((value ^ s->vrc) & 1) { if (value & 1) - printf("%s: %iHz buzz on\n", __FUNCTION__, (int) + printf("%s: %iHz buzz on\n", __func__, (int) /* 1.5 MHz from a 12-MHz or 13-MHz PWT_CLK */ ((omap_clk_getrate(s->clk) >> 3) / /* Pre-multiplexer divider */ @@ -2490,7 +2490,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr, ((value & (1 << 5)) ? 80 : 127) / (107 * 55 * 63 * 127))); else - printf("%s: silence!\n", __FUNCTION__); + printf("%s: silence!\n", __func__); } s->vrc = value & 0x7f; break; @@ -2562,7 +2562,7 @@ static void omap_rtc_alarm_update(struct omap_rtc_s *s) { s->alarm_ti = mktimegm(&s->alarm_tm); if (s->alarm_ti == -1) - printf("%s: conversion failed\n", __FUNCTION__); + printf("%s: conversion failed\n", __func__); } static uint64_t omap_rtc_read(void *opaque, hwaddr addr, @@ -3028,7 +3028,7 @@ static void omap_mcbsp_source_tick(void *opaque) if (!s->rx_rate) return; if (s->rx_req) - printf("%s: Rx FIFO overrun\n", __FUNCTION__); + printf("%s: Rx FIFO overrun\n", __func__); s->rx_req = s->rx_rate << bps[(s->rcr[0] >> 5) & 7]; @@ -3074,7 +3074,7 @@ static void omap_mcbsp_sink_tick(void *opaque) if (!s->tx_rate) return; if (s->tx_req) - printf("%s: Tx FIFO underrun\n", __FUNCTION__); + printf("%s: Tx FIFO underrun\n", __func__); s->tx_req = s->tx_rate << bps[(s->xcr[0] >> 5) & 7]; @@ -3176,7 +3176,7 @@ static uint64_t omap_mcbsp_read(void *opaque, hwaddr addr, /* Fall through. */ case 0x02: /* DRR1 */ if (s->rx_req < 2) { - printf("%s: Rx FIFO underrun\n", __FUNCTION__); + printf("%s: Rx FIFO underrun\n", __func__); omap_mcbsp_rx_done(s); } else { s->tx_req -= 2; @@ -3282,7 +3282,7 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr, if (s->tx_req < 2) omap_mcbsp_tx_done(s); } else - printf("%s: Tx FIFO overrun\n", __FUNCTION__); + printf("%s: Tx FIFO overrun\n", __func__); return; case 0x08: /* SPCR2 */ @@ -3297,7 +3297,7 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr, s->spcr[0] &= 0x0006; s->spcr[0] |= 0xf8f9 & value; if (value & (1 << 15)) /* DLB */ - printf("%s: Digital Loopback mode enable attempt\n", __FUNCTION__); + printf("%s: Digital Loopback mode enable attempt\n", __func__); if (~value & 1) { /* RRST */ s->spcr[0] &= ~6; s->rx_req = 0; @@ -3330,13 +3330,13 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr, s->mcr[1] = value & 0x03e3; if (value & 3) /* XMCM */ printf("%s: Tx channel selection mode enable attempt\n", - __FUNCTION__); + __func__); return; case 0x1a: /* MCR1 */ s->mcr[0] = value & 0x03e1; if (value & 1) /* RMCM */ printf("%s: Rx channel selection mode enable attempt\n", - __FUNCTION__); + __func__); return; case 0x1c: /* RCERA */ s->rcer[0] = value & 0xffff; @@ -3418,7 +3418,7 @@ static void omap_mcbsp_writew(void *opaque, hwaddr addr, if (s->tx_req < 4) omap_mcbsp_tx_done(s); } else - printf("%s: Tx FIFO overrun\n", __FUNCTION__); + printf("%s: Tx FIFO overrun\n", __func__); return; } @@ -3536,7 +3536,7 @@ static void omap_lpg_tick(void *opaque) timer_mod(s->tm, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + s->on); s->cycle = !s->cycle; - printf("%s: LED is %s\n", __FUNCTION__, s->cycle ? "on" : "off"); + printf("%s: LED is %s\n", __func__, s->cycle ? "on" : "off"); } static void omap_lpg_update(struct omap_lpg_s *s) @@ -3557,9 +3557,9 @@ static void omap_lpg_update(struct omap_lpg_s *s) timer_del(s->tm); if (on == period && s->on < s->period) - printf("%s: LED is on\n", __FUNCTION__); + printf("%s: LED is on\n", __func__); else if (on == 0 && s->on) - printf("%s: LED is off\n", __FUNCTION__); + printf("%s: LED is off\n", __func__); else if (on && (on != s->on || period != s->period)) { s->cycle = 0; s->on = on; diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c index f5b148881c..b53878b8b9 100644 --- a/hw/arm/omap2.c +++ b/hw/arm/omap2.c @@ -1312,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s) if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2) fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n", - __FUNCTION__); + __func__); } static void omap_prcm_dpll_update(struct omap_prcm_s *s) @@ -1331,7 +1331,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s) s->dpll_lock = 0; switch (mode) { case 0: - fprintf(stderr, "%s: bad EN_DPLL\n", __FUNCTION__); + fprintf(stderr, "%s: bad EN_DPLL\n", __func__); break; case 1: /* Low-power bypass mode (Default) */ case 2: /* Fast-relock bypass mode */ @@ -1358,7 +1358,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s) omap_clk_reparent(core, dpll_x2); break; case 3: - fprintf(stderr, "%s: bad CORE_CLK_SRC\n", __FUNCTION__); + fprintf(stderr, "%s: bad CORE_CLK_SRC\n", __func__); break; } } @@ -1628,7 +1628,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr, case 0x500: /* CM_CLKEN_PLL */ if (value & 0xffffff30) fprintf(stderr, "%s: write 0s in CM_CLKEN_PLL for " - "future compatibility\n", __FUNCTION__); + "future compatibility\n", __func__); if ((s->clken[9] ^ value) & 0xcc) { s->clken[9] &= ~0xcc; s->clken[9] |= value & 0xcc; @@ -1647,7 +1647,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr, case 0x540: /* CM_CLKSEL1_PLL */ if (value & 0xfc4000d7) fprintf(stderr, "%s: write 0s in CM_CLKSEL1_PLL for " - "future compatibility\n", __FUNCTION__); + "future compatibility\n", __func__); if ((s->clksel[5] ^ value) & 0x003fff00) { s->clksel[5] = value & 0x03bfff28; omap_prcm_dpll_update(s); @@ -1659,7 +1659,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr, case 0x544: /* CM_CLKSEL2_PLL */ if (value & ~3) fprintf(stderr, "%s: write 0s in CM_CLKSEL2_PLL[31:2] for " - "future compatibility\n", __FUNCTION__); + "future compatibility\n", __func__); if (s->clksel[6] != (value & 3)) { s->clksel[6] = value & 3; omap_prcm_dpll_update(s); diff --git a/hw/arm/palm.c b/hw/arm/palm.c index a1f55d79b4..285f43709d 100644 --- a/hw/arm/palm.c +++ b/hw/arm/palm.c @@ -44,7 +44,7 @@ static void static_write(void *opaque, hwaddr offset, uint64_t value, { #ifdef SPY printf("%s: value %08lx written at " PA_FMT "\n", - __FUNCTION__, value, offset); + __func__, value, offset); #endif } @@ -127,11 +127,11 @@ static void palmte_onoff_gpios(void *opaque, int line, int level) switch (line) { case 0: printf("%s: current to MMC/SD card %sabled.\n", - __FUNCTION__, level ? "dis" : "en"); + __func__, level ? "dis" : "en"); break; case 1: printf("%s: internal speaker amplifier %s.\n", - __FUNCTION__, level ? "down" : "on"); + __func__, level ? "down" : "on"); break; /* These LCD & Audio output signals have not been identified yet. */ @@ -139,12 +139,12 @@ static void palmte_onoff_gpios(void *opaque, int line, int level) case 3: case 4: printf("%s: LCD GPIO%i %s.\n", - __FUNCTION__, line - 1, level ? "high" : "low"); + __func__, line - 1, level ? "high" : "low"); break; case 5: case 6: printf("%s: Audio GPIO%i %s.\n", - __FUNCTION__, line - 4, level ? "high" : "low"); + __func__, line - 4, level ? "high" : "low"); break; } } @@ -234,7 +234,7 @@ static void palmte_init(MachineState *machine) rom_size = get_image_size(option_rom[0].name); if (rom_size > flash_size) { fprintf(stderr, "%s: ROM image too big (%x > %x)\n", - __FUNCTION__, rom_size, flash_size); + __func__, rom_size, flash_size); rom_size = 0; } if (rom_size > 0) { @@ -244,7 +244,7 @@ static void palmte_init(MachineState *machine) } if (rom_size < 0) { fprintf(stderr, "%s: error loading '%s'\n", - __FUNCTION__, option_rom[0].name); + __func__, option_rom[0].name); } } diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c index cf07234578..078006f390 100644 --- a/hw/arm/pxa2xx.c +++ b/hw/arm/pxa2xx.c @@ -107,7 +107,7 @@ static uint64_t pxa2xx_pm_read(void *opaque, hwaddr addr, return s->pm_regs[addr >> 2]; default: fail: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } return 0; @@ -139,7 +139,7 @@ static void pxa2xx_pm_write(void *opaque, hwaddr addr, break; } - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } } @@ -180,7 +180,7 @@ static uint64_t pxa2xx_cm_read(void *opaque, hwaddr addr, return s->cm_regs[CCCR >> 2] | (3 << 28); default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } return 0; @@ -205,7 +205,7 @@ static void pxa2xx_cm_write(void *opaque, hwaddr addr, break; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } } @@ -410,7 +410,7 @@ static uint64_t pxa2xx_mm_read(void *opaque, hwaddr addr, return s->mm_regs[addr >> 2]; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } return 0; @@ -429,7 +429,7 @@ static void pxa2xx_mm_write(void *opaque, hwaddr addr, } default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } } @@ -619,7 +619,7 @@ static uint64_t pxa2xx_ssp_read(void *opaque, hwaddr addr, if (!s->enable) return 0xffffffff; if (s->rx_level < 1) { - printf("%s: SSP Rx Underrun\n", __FUNCTION__); + printf("%s: SSP Rx Underrun\n", __func__); return 0xffffffff; } s->rx_level --; @@ -636,7 +636,7 @@ static uint64_t pxa2xx_ssp_read(void *opaque, hwaddr addr, case SSACD: return s->ssacd; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } return 0; @@ -653,9 +653,9 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr, s->sscr[0] = value & 0xc7ffffff; s->enable = value & SSCR0_SSE; if (value & SSCR0_MOD) - printf("%s: Attempt to use network mode\n", __FUNCTION__); + printf("%s: Attempt to use network mode\n", __func__); if (s->enable && SSCR0_DSS(value) < 4) - printf("%s: Wrong data size: %i bits\n", __FUNCTION__, + printf("%s: Wrong data size: %i bits\n", __func__, SSCR0_DSS(value)); if (!(value & SSCR0_SSE)) { s->sssr = 0; @@ -668,7 +668,7 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr, case SSCR1: s->sscr[1] = value; if (value & (SSCR1_LBM | SSCR1_EFWR)) - printf("%s: Attempt to use SSP test mode\n", __FUNCTION__); + printf("%s: Attempt to use SSP test mode\n", __func__); pxa2xx_ssp_fifo_update(s); break; @@ -728,7 +728,7 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr, break; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } } @@ -990,7 +990,7 @@ static uint64_t pxa2xx_rtc_read(void *opaque, hwaddr addr, else return s->last_swcr; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } return 0; @@ -1096,7 +1096,7 @@ static void pxa2xx_rtc_write(void *opaque, hwaddr addr, break; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); } } @@ -1342,7 +1342,7 @@ static uint64_t pxa2xx_i2c_read(void *opaque, hwaddr addr, s->ibmr = 0; return s->ibmr; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } return 0; @@ -1415,7 +1415,7 @@ static void pxa2xx_i2c_write(void *opaque, hwaddr addr, break; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); } } @@ -1616,7 +1616,7 @@ static uint64_t pxa2xx_i2s_read(void *opaque, hwaddr addr, } return 0; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } return 0; @@ -1639,14 +1639,14 @@ static void pxa2xx_i2s_write(void *opaque, hwaddr addr, s->status &= ~(1 << 7); /* I2SOFF */ } if (value & (1 << 4)) /* EFWR */ - printf("%s: Attempt to use special function\n", __FUNCTION__); + printf("%s: Attempt to use special function\n", __func__); s->enable = (value & 9) == 1; /* ENB && !RST*/ pxa2xx_i2s_update(s); break; case SACR1: s->control[1] = value & 0x0039; if (value & (1 << 5)) /* ENLBF */ - printf("%s: Attempt to use loopback function\n", __FUNCTION__); + printf("%s: Attempt to use loopback function\n", __func__); if (value & (1 << 4)) /* DPRL */ s->fifo_len = 0; pxa2xx_i2s_update(s); @@ -1673,7 +1673,7 @@ static void pxa2xx_i2s_write(void *opaque, hwaddr addr, } break; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); } } @@ -1849,7 +1849,7 @@ static uint64_t pxa2xx_fir_read(void *opaque, hwaddr addr, pxa2xx_fir_update(s); return ret; } - printf("%s: Rx FIFO underrun.\n", __FUNCTION__); + printf("%s: Rx FIFO underrun.\n", __func__); break; case ICSR0: return s->status[0]; @@ -1858,7 +1858,7 @@ static uint64_t pxa2xx_fir_read(void *opaque, hwaddr addr, case ICFOR: return s->rx_len; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); break; } return 0; @@ -1910,7 +1910,7 @@ static void pxa2xx_fir_write(void *opaque, hwaddr addr, case ICFOR: break; default: - printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr); + printf("%s: Bad register " REG_FMT "\n", __func__, addr); } } diff --git a/hw/arm/pxa2xx_gpio.c b/hw/arm/pxa2xx_gpio.c index 521dbad039..e15070188e 100644 --- a/hw/arm/pxa2xx_gpio.c +++ b/hw/arm/pxa2xx_gpio.c @@ -107,7 +107,7 @@ static void pxa2xx_gpio_set(void *opaque, int line, int level) uint32_t mask; if (line >= s->lines) { - printf("%s: No GPIO pin %i\n", __FUNCTION__, line); + printf("%s: No GPIO pin %i\n", __func__, line); return; } @@ -195,7 +195,7 @@ static uint64_t pxa2xx_gpio_read(void *opaque, hwaddr offset, return s->status[bank]; default: - hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset); } return 0; @@ -248,7 +248,7 @@ static void pxa2xx_gpio_write(void *opaque, hwaddr offset, break; default: - hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset); } } diff --git a/hw/arm/pxa2xx_pic.c b/hw/arm/pxa2xx_pic.c index b516ced8c0..61275fa040 100644 --- a/hw/arm/pxa2xx_pic.c +++ b/hw/arm/pxa2xx_pic.c @@ -165,7 +165,7 @@ static uint64_t pxa2xx_pic_mem_read(void *opaque, hwaddr offset, case ICHP: /* Highest Priority register */ return pxa2xx_pic_highest(s); default: - printf("%s: Bad register offset " REG_FMT "\n", __FUNCTION__, offset); + printf("%s: Bad register offset " REG_FMT "\n", __func__, offset); return 0; } } @@ -198,7 +198,7 @@ static void pxa2xx_pic_mem_write(void *opaque, hwaddr offset, s->priority[32 + ((offset - IPR32) >> 2)] = value & 0x8000003f; break; default: - printf("%s: Bad register offset " REG_FMT "\n", __FUNCTION__, offset); + printf("%s: Bad register offset " REG_FMT "\n", __func__, offset); return; } pxa2xx_pic_update(opaque); diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c index 044796350a..a55b1a369c 100644 --- a/hw/arm/tosa.c +++ b/hw/arm/tosa.c @@ -159,7 +159,7 @@ static int tosa_dac_send(I2CSlave *i2c, uint8_t data) s->buf[s->len] = data; if (s->len ++ > 2) { #ifdef VERBOSE - fprintf(stderr, "%s: message too long (%i bytes)\n", __FUNCTION__, s->len); + fprintf(stderr, "%s: message too long (%i bytes)\n", __func__, s->len); #endif return 1; } @@ -181,14 +181,14 @@ static int tosa_dac_event(I2CSlave *i2c, enum i2c_event event) case I2C_START_SEND: break; case I2C_START_RECV: - printf("%s: recv not supported!!!\n", __FUNCTION__); + printf("%s: recv not supported!!!\n", __func__); break; case I2C_FINISH: #ifdef VERBOSE if (s->len < 2) - printf("%s: message too short (%i bytes)\n", __FUNCTION__, s->len); + printf("%s: message too short (%i bytes)\n", __func__, s->len); if (s->len > 2) - printf("%s: message too long\n", __FUNCTION__); + printf("%s: message too long\n", __func__); #endif break; default: @@ -200,7 +200,7 @@ static int tosa_dac_event(I2CSlave *i2c, enum i2c_event event) static int tosa_dac_recv(I2CSlave *s) { - printf("%s: recv not supported!!!\n", __FUNCTION__); + printf("%s: recv not supported!!!\n", __func__); return -1; } diff --git a/hw/audio/hda-codec.c b/hw/audio/hda-codec.c index 5402cd196c..e8aa7842e6 100644 --- a/hw/audio/hda-codec.c +++ b/hw/audio/hda-codec.c @@ -316,7 +316,7 @@ static void hda_audio_command(HDACodecDevice *hda, uint32_t nid, uint32_t data) goto fail; } dprint(a, 2, "%s: nid %d (%s), verb 0x%x, payload 0x%x\n", - __FUNCTION__, nid, node->name, verb, payload); + __func__, nid, node->name, verb, payload); switch (verb) { /* all nodes */ @@ -449,7 +449,7 @@ static void hda_audio_command(HDACodecDevice *hda, uint32_t nid, uint32_t data) fail: dprint(a, 1, "%s: not handled: nid %d (%s), verb 0x%x, payload 0x%x\n", - __FUNCTION__, nid, node ? node->name : "?", verb, payload); + __func__, nid, node ? node->name : "?", verb, payload); hda_codec_response(hda, true, 0); } @@ -484,7 +484,7 @@ static int hda_audio_init(HDACodecDevice *hda, const struct desc_codec *desc) a->desc = desc; a->name = object_get_typename(OBJECT(a)); - dprint(a, 1, "%s: cad %d\n", __FUNCTION__, a->hda.cad); + dprint(a, 1, "%s: cad %d\n", __func__, a->hda.cad); AUD_register_card("hda", &a->card); for (i = 0; i < a->desc->nnodes; i++) { @@ -526,7 +526,7 @@ static void hda_audio_exit(HDACodecDevice *hda) HDAAudioStream *st; int i; - dprint(a, 1, "%s\n", __FUNCTION__); + dprint(a, 1, "%s\n", __func__); for (i = 0; i < ARRAY_SIZE(a->st); i++) { st = a->st + i; if (st->node == NULL) { @@ -547,7 +547,7 @@ static int hda_audio_post_load(void *opaque, int version) HDAAudioStream *st; int i; - dprint(a, 1, "%s\n", __FUNCTION__); + dprint(a, 1, "%s\n", __func__); if (version == 1) { /* assume running_compat[] is for output streams */ for (i = 0; i < ARRAY_SIZE(a->running_compat); i++) diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index 18a50a8f83..ed51177b15 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -265,7 +265,7 @@ static void intel_hda_update_irq(IntelHDAState *d) } else { level = 0; } - dprint(d, 2, "%s: level %d [%s]\n", __FUNCTION__, + dprint(d, 2, "%s: level %d [%s]\n", __func__, level, msi ? "msi" : "intx"); if (msi) { if (level) { @@ -285,7 +285,7 @@ static int intel_hda_send_command(IntelHDAState *d, uint32_t verb) cad = (verb >> 28) & 0x0f; if (verb & (1 << 27)) { /* indirect node addressing, not specified in HDA 1.0 */ - dprint(d, 1, "%s: indirect node addressing (guest bug?)\n", __FUNCTION__); + dprint(d, 1, "%s: indirect node addressing (guest bug?)\n", __func__); return -1; } nid = (verb >> 20) & 0x7f; @@ -293,7 +293,7 @@ static int intel_hda_send_command(IntelHDAState *d, uint32_t verb) codec = hda_codec_find(&d->codecs, cad); if (codec == NULL) { - dprint(d, 1, "%s: addressed non-existing codec\n", __FUNCTION__); + dprint(d, 1, "%s: addressed non-existing codec\n", __func__); return -1; } cdc = HDA_CODEC_DEVICE_GET_CLASS(codec); @@ -307,22 +307,22 @@ static void intel_hda_corb_run(IntelHDAState *d) uint32_t rp, verb; if (d->ics & ICH6_IRS_BUSY) { - dprint(d, 2, "%s: [icw] verb 0x%08x\n", __FUNCTION__, d->icw); + dprint(d, 2, "%s: [icw] verb 0x%08x\n", __func__, d->icw); intel_hda_send_command(d, d->icw); return; } for (;;) { if (!(d->corb_ctl & ICH6_CORBCTL_RUN)) { - dprint(d, 2, "%s: !run\n", __FUNCTION__); + dprint(d, 2, "%s: !run\n", __func__); return; } if ((d->corb_rp & 0xff) == d->corb_wp) { - dprint(d, 2, "%s: corb ring empty\n", __FUNCTION__); + dprint(d, 2, "%s: corb ring empty\n", __func__); return; } if (d->rirb_count == d->rirb_cnt) { - dprint(d, 2, "%s: rirb count reached\n", __FUNCTION__); + dprint(d, 2, "%s: rirb count reached\n", __func__); return; } @@ -331,7 +331,7 @@ static void intel_hda_corb_run(IntelHDAState *d) verb = ldl_le_pci_dma(&d->pci, addr + 4*rp); d->corb_rp = rp; - dprint(d, 2, "%s: [rp 0x%x] verb 0x%08x\n", __FUNCTION__, rp, verb); + dprint(d, 2, "%s: [rp 0x%x] verb 0x%08x\n", __func__, rp, verb); intel_hda_send_command(d, verb); } } @@ -345,7 +345,7 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res if (d->ics & ICH6_IRS_BUSY) { dprint(d, 2, "%s: [irr] response 0x%x, cad 0x%x\n", - __FUNCTION__, response, dev->cad); + __func__, response, dev->cad); d->irr = response; d->ics &= ~(ICH6_IRS_BUSY | 0xf0); d->ics |= (ICH6_IRS_VALID | (dev->cad << 4)); @@ -353,7 +353,7 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res } if (!(d->rirb_ctl & ICH6_RBCTL_DMA_EN)) { - dprint(d, 1, "%s: rirb dma disabled, drop codec response\n", __FUNCTION__); + dprint(d, 1, "%s: rirb dma disabled, drop codec response\n", __func__); return; } @@ -365,17 +365,17 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res d->rirb_wp = wp; dprint(d, 2, "%s: [wp 0x%x] response 0x%x, extra 0x%x\n", - __FUNCTION__, wp, response, ex); + __func__, wp, response, ex); d->rirb_count++; if (d->rirb_count == d->rirb_cnt) { - dprint(d, 2, "%s: rirb count reached (%d)\n", __FUNCTION__, d->rirb_count); + dprint(d, 2, "%s: rirb count reached (%d)\n", __func__, d->rirb_count); if (d->rirb_ctl & ICH6_RBCTL_IRQ_EN) { d->rirb_sts |= ICH6_RBSTS_IRQ; intel_hda_update_irq(d); } } else if ((d->corb_rp & 0xff) == d->corb_wp) { - dprint(d, 2, "%s: corb ring empty (%d/%d)\n", __FUNCTION__, + dprint(d, 2, "%s: corb ring empty (%d/%d)\n", __func__, d->rirb_count, d->rirb_cnt); if (d->rirb_ctl & ICH6_RBCTL_IRQ_EN) { d->rirb_sts |= ICH6_RBSTS_IRQ; @@ -1144,7 +1144,7 @@ static int intel_hda_post_load(void *opaque, int version) IntelHDAState* d = opaque; int i; - dprint(d, 1, "%s\n", __FUNCTION__); + dprint(d, 1, "%s\n", __func__); for (i = 0; i < ARRAY_SIZE(d->st); i++) { if (d->st[i].ctl & 0x02) { intel_hda_parse_bdl(d, &d->st[i]); diff --git a/hw/audio/wm8750.c b/hw/audio/wm8750.c index d2bf2e1da1..de04d8ae8f 100644 --- a/hw/audio/wm8750.c +++ b/hw/audio/wm8750.c @@ -315,7 +315,7 @@ static int wm8750_event(I2CSlave *i2c, enum i2c_event event) #ifdef VERBOSE if (s->i2c_len < 2) printf("%s: message too short (%i bytes)\n", - __FUNCTION__, s->i2c_len); + __func__, s->i2c_len); #endif break; default: @@ -555,7 +555,7 @@ static int wm8750_tx(I2CSlave *i2c, uint8_t data) #ifdef VERBOSE default: - printf("%s: unknown register %02x\n", __FUNCTION__, cmd); + printf("%s: unknown register %02x\n", __func__, cmd); #endif } diff --git a/hw/block/nand.c b/hw/block/nand.c index 0d33ac281f..5bc1829889 100644 --- a/hw/block/nand.c +++ b/hw/block/nand.c @@ -321,7 +321,7 @@ static void nand_command(NANDFlashState *s) break; default: - printf("%s: Unknown NAND command 0x%02x\n", __FUNCTION__, s->cmd); + printf("%s: Unknown NAND command 0x%02x\n", __func__, s->cmd); } } @@ -638,7 +638,7 @@ DeviceState *nand_init(BlockBackend *blk, int manf_id, int chip_id) DeviceState *dev; if (nand_flash_ids[chip_id].size == 0) { - hw_error("%s: Unsupported NAND chip ID.\n", __FUNCTION__); + hw_error("%s: Unsupported NAND chip ID.\n", __func__); } dev = DEVICE(object_new(TYPE_NAND)); qdev_prop_set_uint8(dev, "manufacturer_id", manf_id); diff --git a/hw/block/onenand.c b/hw/block/onenand.c index b7423607d9..224daf7ccf 100644 --- a/hw/block/onenand.c +++ b/hw/block/onenand.c @@ -661,12 +661,12 @@ static uint64_t onenand_read(void *opaque, hwaddr addr, case 0xff02: /* ECC Result of spare area data */ case 0xff03: /* ECC Result of main area data */ case 0xff04: /* ECC Result of spare area data */ - hw_error("%s: imeplement ECC\n", __FUNCTION__); + hw_error("%s: imeplement ECC\n", __func__); return 0x0000; } fprintf(stderr, "%s: unknown OneNAND register %x\n", - __FUNCTION__, offset); + __func__, offset); return 0; } @@ -711,7 +711,7 @@ static void onenand_write(void *opaque, hwaddr addr, default: fprintf(stderr, "%s: unknown OneNAND boot command %"PRIx64"\n", - __FUNCTION__, value); + __func__, value); } break; @@ -762,7 +762,7 @@ static void onenand_write(void *opaque, hwaddr addr, default: fprintf(stderr, "%s: unknown OneNAND register %x\n", - __FUNCTION__, offset); + __func__, offset); } } diff --git a/hw/bt/core.c b/hw/bt/core.c index 615f0af073..c1806b71a3 100644 --- a/hw/bt/core.c +++ b/hw/bt/core.c @@ -32,23 +32,23 @@ static void bt_dummy_lmp_connection_complete(struct bt_link_s *link) { if (link->slave->reject_reason) fprintf(stderr, "%s: stray LMP_not_accepted received, fixme\n", - __FUNCTION__); + __func__); else fprintf(stderr, "%s: stray LMP_accepted received, fixme\n", - __FUNCTION__); + __func__); exit(-1); } static void bt_dummy_lmp_disconnect_master(struct bt_link_s *link) { - fprintf(stderr, "%s: stray LMP_detach received, fixme\n", __FUNCTION__); + fprintf(stderr, "%s: stray LMP_detach received, fixme\n", __func__); exit(-1); } static void bt_dummy_lmp_acl_resp(struct bt_link_s *link, const uint8_t *data, int start, int len) { - fprintf(stderr, "%s: stray ACL response PDU, fixme\n", __FUNCTION__); + fprintf(stderr, "%s: stray ACL response PDU, fixme\n", __func__); exit(-1); } @@ -113,7 +113,7 @@ void bt_device_done(struct bt_device_s *dev) while (*p && *p != dev) p = &(*p)->next; if (*p != dev) { - fprintf(stderr, "%s: bad bt device \"%s\"\n", __FUNCTION__, + fprintf(stderr, "%s: bad bt device \"%s\"\n", __func__, dev->lmp_name ?: "(null)"); exit(-1); } diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c index d13192b9b5..ac067b81f6 100644 --- a/hw/bt/hci-csr.c +++ b/hw/bt/hci-csr.c @@ -111,14 +111,14 @@ static uint8_t *csrhci_out_packet(struct csrhci_s *s, int len) if (off < FIFO_LEN) { if (off + len > FIFO_LEN && (s->out_size = off + len) > FIFO_LEN * 2) { - fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len); + fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len); exit(-1); } return s->outfifo + off; } if (s->out_len > s->out_size) { - fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len); + fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len); exit(-1); } @@ -169,7 +169,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf, s->hci->bdaddr_set(s->hci, s->bd_addr.b); fprintf(stderr, "%s: bd_address loaded from firmware: " - "%02x:%02x:%02x:%02x:%02x:%02x\n", __FUNCTION__, + "%02x:%02x:%02x:%02x:%02x:%02x\n", __func__, s->bd_addr.b[0], s->bd_addr.b[1], s->bd_addr.b[2], s->bd_addr.b[3], s->bd_addr.b[4], s->bd_addr.b[5]); } @@ -181,7 +181,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf, break; default: - fprintf(stderr, "%s: got a bad CMD packet\n", __FUNCTION__); + fprintf(stderr, "%s: got a bad CMD packet\n", __func__); return; } @@ -226,7 +226,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt) case H4_NEG_PKT: if (s->in_hdr != sizeof(csrhci_neg_packet) || memcmp(pkt - 1, csrhci_neg_packet, s->in_hdr)) { - fprintf(stderr, "%s: got a bad NEG packet\n", __FUNCTION__); + fprintf(stderr, "%s: got a bad NEG packet\n", __func__); return; } pkt += 2; @@ -241,7 +241,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt) case H4_ALIVE_PKT: if (s->in_hdr != 4 || pkt[1] != 0x55 || pkt[2] != 0x00) { - fprintf(stderr, "%s: got a bad ALIVE packet\n", __FUNCTION__); + fprintf(stderr, "%s: got a bad ALIVE packet\n", __func__); return; } @@ -254,7 +254,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt) default: bad_pkt: /* TODO: error out */ - fprintf(stderr, "%s: got a bad packet\n", __FUNCTION__); + fprintf(stderr, "%s: got a bad packet\n", __func__); break; } diff --git a/hw/bt/hci.c b/hw/bt/hci.c index 476ebec0ab..df05f07887 100644 --- a/hw/bt/hci.c +++ b/hw/bt/hci.c @@ -458,7 +458,7 @@ static inline uint8_t *bt_hci_event_start(struct bt_hci_s *hci, if (len > 255) { fprintf(stderr, "%s: HCI event params too long (%ib)\n", - __FUNCTION__, len); + __func__, len); exit(-1); } @@ -589,7 +589,7 @@ static void bt_hci_inquiry_result(struct bt_hci_s *hci, bt_hci_inquiry_result_with_rssi(hci, slave); return; default: - fprintf(stderr, "%s: bad inquiry mode %02x\n", __FUNCTION__, + fprintf(stderr, "%s: bad inquiry mode %02x\n", __func__, hci->lm.inquiry_mode); exit(-1); } @@ -1528,7 +1528,7 @@ static void bt_submit_hci(struct HCIInfo *info, "the Inquiry command has been issued, a Command " "Status event has been received for the Inquiry " "command, and before the Inquiry Complete event " - "occurs", __FUNCTION__); + "occurs", __func__); bt_hci_event_complete_status(hci, HCI_COMMAND_DISALLOWED); break; } @@ -1567,7 +1567,7 @@ static void bt_submit_hci(struct HCIInfo *info, "the Inquiry command has been issued, a Command " "Status event has been received for the Inquiry " "command, and before the Inquiry Complete event " - "occurs", __FUNCTION__); + "occurs", __func__); bt_hci_event_complete_status(hci, HCI_COMMAND_DISALLOWED); break; } @@ -1972,7 +1972,7 @@ static void bt_submit_hci(struct HCIInfo *info, short_hci: fprintf(stderr, "%s: HCI packet too short (%iB)\n", - __FUNCTION__, length); + __func__, length); bt_hci_event_status(hci, HCI_INVALID_PARAMETERS); break; } @@ -1992,7 +1992,7 @@ static inline void bt_hci_lmp_acl_data(struct bt_hci_s *hci, uint16_t handle, if (len + HCI_ACL_HDR_SIZE > sizeof(hci->acl_buf)) { fprintf(stderr, "%s: can't take ACL packets %i bytes long\n", - __FUNCTION__, len); + __func__, len); return; } memcpy(hci->acl_buf + HCI_ACL_HDR_SIZE, data, len); @@ -2030,7 +2030,7 @@ static void bt_submit_acl(struct HCIInfo *info, if (length < HCI_ACL_HDR_SIZE) { fprintf(stderr, "%s: ACL packet too short (%iB)\n", - __FUNCTION__, length); + __func__, length); return; } @@ -2042,7 +2042,7 @@ static void bt_submit_acl(struct HCIInfo *info, if (bt_hci_handle_bad(hci, handle)) { fprintf(stderr, "%s: invalid ACL handle %03x\n", - __FUNCTION__, handle); + __func__, handle); /* TODO: signal an error */ return; } @@ -2050,7 +2050,7 @@ static void bt_submit_acl(struct HCIInfo *info, if (datalen > length) { fprintf(stderr, "%s: ACL packet too short (%iB < %iB)\n", - __FUNCTION__, length, datalen); + __func__, length, datalen); return; } @@ -2061,7 +2061,7 @@ static void bt_submit_acl(struct HCIInfo *info, hci->asb_handle = handle; else if (handle != hci->asb_handle) { fprintf(stderr, "%s: Bad handle %03x in Active Slave Broadcast\n", - __FUNCTION__, handle); + __func__, handle); /* TODO: signal an error */ return; } @@ -2074,7 +2074,7 @@ static void bt_submit_acl(struct HCIInfo *info, hci->psb_handle = handle; else if (handle != hci->psb_handle) { fprintf(stderr, "%s: Bad handle %03x in Parked Slave Broadcast\n", - __FUNCTION__, handle); + __func__, handle); /* TODO: signal an error */ return; } @@ -2106,13 +2106,13 @@ static void bt_submit_sco(struct HCIInfo *info, if (bt_hci_handle_bad(hci, handle)) { fprintf(stderr, "%s: invalid SCO handle %03x\n", - __FUNCTION__, handle); + __func__, handle); return; } if (datalen > length) { fprintf(stderr, "%s: SCO packet too short (%iB < %iB)\n", - __FUNCTION__, length, datalen); + __func__, length, datalen); return; } diff --git a/hw/bt/hid.c b/hw/bt/hid.c index f6affbbb44..09d17322e4 100644 --- a/hw/bt/hid.c +++ b/hw/bt/hid.c @@ -420,7 +420,7 @@ static void bt_hid_interrupt_sdu(void *opaque, const uint8_t *data, int len) return; bad: fprintf(stderr, "%s: bad transaction on Interrupt channel.\n", - __FUNCTION__); + __func__); } /* "Virtual cable" plug/unplug event. */ diff --git a/hw/bt/l2cap.c b/hw/bt/l2cap.c index e342045140..3e53dd082d 100644 --- a/hw/bt/l2cap.c +++ b/hw/bt/l2cap.c @@ -468,7 +468,7 @@ static void l2cap_channel_close(struct l2cap_instance_s *l2cap, if (likely(ch)) { if (ch->remote_cid != source_cid) { fprintf(stderr, "%s: Ignoring a Disconnection Request with the " - "invalid SCID %04x.\n", __FUNCTION__, source_cid); + "invalid SCID %04x.\n", __func__, source_cid); return; } @@ -791,7 +791,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id, /* TODO: do the IDs really have to be in sequence? */ if (!id || (id != l2cap->last_id && id != l2cap->next_id)) { fprintf(stderr, "%s: out of sequence command packet ignored.\n", - __FUNCTION__); + __func__); return; } #else @@ -814,7 +814,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id, /* We never issue commands other than Command Reject currently. */ fprintf(stderr, "%s: stray Command Reject (%02x, %04x) " - "packet, ignoring.\n", __FUNCTION__, id, + "packet, ignoring.\n", __func__, id, le16_to_cpu(((l2cap_cmd_rej *) params)->reason)); break; @@ -837,7 +837,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id, /* We never issue Connection Requests currently. TODO */ fprintf(stderr, "%s: unexpected Connection Response (%02x) " - "packet, ignoring.\n", __FUNCTION__, id); + "packet, ignoring.\n", __func__, id); break; case L2CAP_CONF_REQ: @@ -866,7 +866,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id, ((l2cap_conf_rsp *) params)->data, len - L2CAP_CONF_RSP_SIZE(0))) fprintf(stderr, "%s: unexpected Configure Response (%02x) " - "packet, ignoring.\n", __FUNCTION__, id); + "packet, ignoring.\n", __func__, id); break; case L2CAP_DISCONN_REQ: @@ -888,7 +888,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id, /* We never issue Disconnection Requests currently. TODO */ fprintf(stderr, "%s: unexpected Disconnection Response (%02x) " - "packet, ignoring.\n", __FUNCTION__, id); + "packet, ignoring.\n", __func__, id); break; case L2CAP_ECHO_REQ: @@ -898,7 +898,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id, case L2CAP_ECHO_RSP: /* We never issue Echo Requests currently. TODO */ fprintf(stderr, "%s: unexpected Echo Response (%02x) " - "packet, ignoring.\n", __FUNCTION__, id); + "packet, ignoring.\n", __func__, id); break; case L2CAP_INFO_REQ: @@ -918,7 +918,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id, /* We never issue Information Requests currently. TODO */ fprintf(stderr, "%s: unexpected Information Response (%02x) " - "packet, ignoring.\n", __FUNCTION__, id); + "packet, ignoring.\n", __func__, id); break; default: @@ -1067,7 +1067,7 @@ static void l2cap_frame_in(struct l2cap_instance_s *l2cap, if (unlikely(cid >= L2CAP_CID_MAX || !l2cap->cid[cid])) { fprintf(stderr, "%s: frame addressed to a non-existent L2CAP " - "channel %04x received.\n", __FUNCTION__, cid); + "channel %04x received.\n", __func__, cid); return; } @@ -1129,7 +1129,7 @@ static uint8_t *l2cap_bframe_out(struct bt_l2cap_conn_params_s *parm, int len) if (len > chan->params.remote_mtu) { fprintf(stderr, "%s: B-Frame for CID %04x longer than %i octets.\n", - __FUNCTION__, + __func__, chan->remote_cid, chan->params.remote_mtu); exit(-1); } @@ -1354,7 +1354,7 @@ void bt_l2cap_psm_register(struct bt_l2cap_device_s *dev, int psm, int min_mtu, if (new_psm) { fprintf(stderr, "%s: PSM %04x already registered for device `%s'.\n", - __FUNCTION__, psm, dev->device.lmp_name); + __func__, psm, dev->device.lmp_name); exit(-1); } diff --git a/hw/bt/sdp.c b/hw/bt/sdp.c index 3cb60b9495..7c0d38b504 100644 --- a/hw/bt/sdp.c +++ b/hw/bt/sdp.c @@ -506,7 +506,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len) int rsp_len = 0; if (len < 5) { - fprintf(stderr, "%s: short SDP PDU (%iB).\n", __FUNCTION__, len); + fprintf(stderr, "%s: short SDP PDU (%iB).\n", __func__, len); return; } @@ -518,7 +518,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len) if (len != plen) { fprintf(stderr, "%s: wrong SDP PDU length (%iB != %iB).\n", - __FUNCTION__, plen, len); + __func__, plen, len); err = SDP_INVALID_PDU_SIZE; goto respond; } @@ -545,7 +545,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len) case SDP_SVC_SEARCH_ATTR_RSP: default: fprintf(stderr, "%s: unexpected SDP PDU ID %02x.\n", - __FUNCTION__, pdu_id); + __func__, pdu_id); err = SDP_INVALID_SYNTAX; break; } diff --git a/hw/display/blizzard.c b/hw/display/blizzard.c index cbf07d14d9..291abe6fca 100644 --- a/hw/display/blizzard.c +++ b/hw/display/blizzard.c @@ -474,7 +474,7 @@ static uint16_t blizzard_reg_read(void *opaque, uint8_t reg) return s->gpio_pdown; default: - fprintf(stderr, "%s: unknown register %02x\n", __FUNCTION__, reg); + fprintf(stderr, "%s: unknown register %02x\n", __func__, reg); return 0; } } @@ -502,7 +502,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value) s->pll_mode = value & 0x77; if ((value & 3) == 0 || (value & 3) == 3) fprintf(stderr, "%s: wrong PLL Control bits (%i)\n", - __FUNCTION__, value & 3); + __func__, value & 3); break; case 0x0e: /* Clock-Source Select */ @@ -541,7 +541,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value) case 0x28: /* LCD Panel Configuration */ s->lcd_config = value & 0xff; if (value & (1 << 7)) - fprintf(stderr, "%s: data swap not supported!\n", __FUNCTION__); + fprintf(stderr, "%s: data swap not supported!\n", __func__); break; case 0x2a: /* LCD Horizontal Display Width */ @@ -586,7 +586,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value) s->hssi_config[1] = value; if (((value >> 4) & 3) == 3) fprintf(stderr, "%s: Illegal active-data-links value\n", - __FUNCTION__); + __func__); break; case 0x42: /* High-speed Serial Interface Tx Mode */ s->hssi_config[2] = value & 0xbd; @@ -641,7 +641,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value) s->enable = value & 1; s->blank = (value >> 1) & 1; if (value & (1 << 4)) - fprintf(stderr, "%s: Macrovision enable attempt!\n", __FUNCTION__); + fprintf(stderr, "%s: Macrovision enable attempt!\n", __func__); break; case 0x6a: /* Special Effects */ @@ -718,7 +718,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value) s->bpp = blizzard_iformat_bpp[s->iformat]; if (!s->bpp) fprintf(stderr, "%s: Illegal or unsupported input format %x\n", - __FUNCTION__, s->iformat); + __func__, s->iformat); break; case 0x8e: /* Data Source Select */ s->source = value & 7; @@ -730,7 +730,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value) !((s->ix[1] - s->ix[0]) & (s->iy[1] - s->iy[0]) & (s->ox[1] - s->ox[0]) & (s->oy[1] - s->oy[0]) & 1)) fprintf(stderr, "%s: Illegal input/output window positions\n", - __FUNCTION__); + __func__); blizzard_transfer_setup(s); break; @@ -784,7 +784,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value) s->pm = value & 0x83; if (value & s->mode & 1) fprintf(stderr, "%s: The display must be disabled before entering " - "Standby Mode\n", __FUNCTION__); + "Standby Mode\n", __func__); break; case 0xe8: /* Non-display Period Control / Status */ s->status = value & 0x1b; @@ -815,7 +815,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value) break; default: - fprintf(stderr, "%s: unknown register %02x\n", __FUNCTION__, reg); + fprintf(stderr, "%s: unknown register %02x\n", __func__, reg); break; } } diff --git a/hw/display/omap_dss.c b/hw/display/omap_dss.c index 783e9e1318..601f178fdd 100644 --- a/hw/display/omap_dss.c +++ b/hw/display/omap_dss.c @@ -526,7 +526,7 @@ static void omap_disc_write(void *opaque, hwaddr addr, s->dispc.l[0].attr = value & 0x7ff; if (value & (3 << 9)) fprintf(stderr, "%s: Big-endian pixel format not supported\n", - __FUNCTION__); + __func__); s->dispc.l[0].enable = value & 1; s->dispc.l[0].bpp = (value >> 1) & 0xf; s->dispc.invalidate = 1; @@ -617,7 +617,7 @@ static void omap_rfbi_transfer_start(struct omap_dss_s *s) if (s->rfbi.control & (1 << 1)) { /* BYPASS */ /* TODO: in non-Bypass mode we probably need to just assert the * DRQ and wait for DMA to write the pixels. */ - fprintf(stderr, "%s: Bypass mode unimplemented\n", __FUNCTION__); + fprintf(stderr, "%s: Bypass mode unimplemented\n", __func__); return; } @@ -1086,6 +1086,6 @@ struct omap_dss_s *omap_dss_init(struct omap_target_agent_s *ta, void omap_rfbi_attach(struct omap_dss_s *s, int cs, struct rfbi_chip_s *chip) { if (cs < 0 || cs > 1) - hw_error("%s: wrong CS %i\n", __FUNCTION__, cs); + hw_error("%s: wrong CS %i\n", __func__, cs); s->rfbi.chip[cs] = chip; } diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c index 845521c5b2..b83f80753a 100644 --- a/hw/display/pxa2xx_lcd.c +++ b/hw/display/pxa2xx_lcd.c @@ -405,7 +405,7 @@ static uint64_t pxa2xx_lcdc_read(void *opaque, hwaddr offset, default: fail: - hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset); } return 0; @@ -424,7 +424,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset, s->status[0] |= LCSR0_QD; if (!(s->control[0] & LCCR0_LCDT) && (value & LCCR0_LCDT)) - printf("%s: internal frame buffer unsupported\n", __FUNCTION__); + printf("%s: internal frame buffer unsupported\n", __func__); if ((s->control[3] & LCCR3_API) && (value & LCCR0_ENB) && !(value & LCCR0_LCDT)) @@ -460,7 +460,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset, case OVL1C1: if (!(s->ovl1c[0] & OVLC1_EN) && (value & OVLC1_EN)) - printf("%s: Overlay 1 not supported\n", __FUNCTION__); + printf("%s: Overlay 1 not supported\n", __func__); s->ovl1c[0] = value & 0x80ffffff; s->dma_ch[1].up = (value & OVLC1_EN) || (s->control[0] & LCCR0_SDS); @@ -472,7 +472,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset, case OVL2C1: if (!(s->ovl2c[0] & OVLC1_EN) && (value & OVLC1_EN)) - printf("%s: Overlay 2 not supported\n", __FUNCTION__); + printf("%s: Overlay 2 not supported\n", __func__); s->ovl2c[0] = value & 0x80ffffff; s->dma_ch[2].up = !!(value & OVLC1_EN); @@ -486,7 +486,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset, case CCR: if (!(s->ccr & CCR_CEN) && (value & CCR_CEN)) - printf("%s: Hardware cursor unimplemented\n", __FUNCTION__); + printf("%s: Hardware cursor unimplemented\n", __func__); s->ccr = value & 0x81ffffe7; s->dma_ch[5].up = !!(value & CCR_CEN); @@ -560,7 +560,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset, default: fail: - hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset); } } @@ -1050,7 +1050,7 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem, s->dest_width = 4; break; default: - fprintf(stderr, "%s: Bad color depth\n", __FUNCTION__); + fprintf(stderr, "%s: Bad color depth\n", __func__); exit(1); } diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c index 90e0865618..e7ac4f8789 100644 --- a/hw/display/qxl-render.c +++ b/hw/display/qxl-render.c @@ -78,7 +78,7 @@ void qxl_render_resize(PCIQXLDevice *qxl) qxl->guest_primary.bits_pp = 32; break; default: - fprintf(stderr, "%s: unhandled format: %x\n", __FUNCTION__, + fprintf(stderr, "%s: unhandled format: %x\n", __func__, qxl->guest_primary.surface.format); qxl->guest_primary.bytes_pp = 4; qxl->guest_primary.bits_pp = 32; @@ -248,7 +248,7 @@ static QEMUCursor *qxl_cursor(PCIQXLDevice *qxl, QXLCursor *cursor, break; default: fprintf(stderr, "%s: not implemented: type %d\n", - __FUNCTION__, cursor->header.type); + __func__, cursor->header.type); goto fail; } return c; @@ -275,7 +275,7 @@ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext) } if (qxl->debug > 1 && cmd->type != QXL_CURSOR_MOVE) { - fprintf(stderr, "%s", __FUNCTION__); + fprintf(stderr, "%s", __func__); qxl_log_cmd_cursor(qxl, cmd, ext->group_id); fprintf(stderr, "\n"); } diff --git a/hw/display/qxl.h b/hw/display/qxl.h index f6556adb73..7d1b60014a 100644 --- a/hw/display/qxl.h +++ b/hw/display/qxl.h @@ -133,7 +133,7 @@ typedef struct PCIQXLDevice { #define PCI_QXL(obj) OBJECT_CHECK(PCIQXLDevice, (obj), TYPE_PCI_QXL) #define PANIC_ON(x) if ((x)) { \ - printf("%s: PANIC %s failed\n", __FUNCTION__, #x); \ + printf("%s: PANIC %s failed\n", __func__, #x); \ abort(); \ } diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c index 74d10af3d4..79f161740a 100644 --- a/hw/display/tc6393xb.c +++ b/hw/display/tc6393xb.c @@ -148,7 +148,7 @@ static void tc6393xb_gpio_set(void *opaque, int line, int level) // TC6393xbState *s = opaque; if (line > TC6393XB_GPIOS) { - printf("%s: No GPIO pin %i\n", __FUNCTION__, line); + printf("%s: No GPIO pin %i\n", __func__, line); return; } diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index df8b78f6f4..6dc98d0497 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -643,7 +643,7 @@ static void xenfb_guest_copy(struct XenFB *xenfb, int x, int y, int w, int h) } if (oops) /* should not happen */ xen_pv_printf(&xenfb->c.xendev, 0, "%s: oops: convert %d -> %d bpp?\n", - __FUNCTION__, xenfb->depth, bpp); + __func__, xenfb->depth, bpp); dpy_gfx_update(xenfb->con, x, y, w, h); } diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c index 45dfe7aadd..abd18c67ea 100644 --- a/hw/dma/omap_dma.c +++ b/hw/dma/omap_dma.c @@ -161,7 +161,7 @@ static void omap_dma_channel_load(struct omap_dma_channel_s *ch) a->pck_element = 0; if (unlikely(!ch->elements || !ch->frames)) { - printf("%s: bad DMA request\n", __FUNCTION__); + printf("%s: bad DMA request\n", __func__); return; } @@ -519,7 +519,7 @@ static void omap_dma_transfer_setup(struct soc_dma_ch_s *dma) continue; #endif printf("%s: Bus time-out in DMA%i operation\n", - __FUNCTION__, dma->num); + __func__, dma->num); } min_elems = INT_MAX; @@ -879,14 +879,14 @@ static int omap_dma_ch_reg_write(struct omap_dma_s *s, ch->pack[0] = (value & 0x0040) >> 6; ch->port[0] = (enum omap_dma_port) ((value & 0x003c) >> 2); if (ch->port[0] >= __omap_dma_port_last) - printf("%s: invalid DMA port %i\n", __FUNCTION__, + printf("%s: invalid DMA port %i\n", __func__, ch->port[0]); if (ch->port[1] >= __omap_dma_port_last) - printf("%s: invalid DMA port %i\n", __FUNCTION__, + printf("%s: invalid DMA port %i\n", __func__, ch->port[1]); ch->data_type = 1 << (value & 3); if ((value & 3) == 3) { - printf("%s: bad data_type for DMA channel\n", __FUNCTION__); + printf("%s: bad data_type for DMA channel\n", __func__); ch->data_type >>= 1; } break; @@ -1440,7 +1440,7 @@ static int omap_dma_sys_read(struct omap_dma_s *s, int offset, case 0x482: /* DMA_PCh1_SR */ case 0x4c0: /* DMA_PChD_SR_0 */ printf("%s: Physical Channel Status Registers not implemented.\n", - __FUNCTION__); + __func__); *ret = 0xff; break; @@ -1898,13 +1898,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr, omap_dma_reset(s->dma); s->ocp = value & 0x3321; if (((s->ocp >> 12) & 3) == 3) /* MIDLEMODE */ - fprintf(stderr, "%s: invalid DMA power mode\n", __FUNCTION__); + fprintf(stderr, "%s: invalid DMA power mode\n", __func__); return; case 0x78: /* DMA4_GCR */ s->gcr = value & 0x00ff00ff; if ((value & 0xff) == 0x00) /* MAX_CHANNEL_FIFO_DEPTH */ - fprintf(stderr, "%s: wrong FIFO depth in GCR\n", __FUNCTION__); + fprintf(stderr, "%s: wrong FIFO depth in GCR\n", __func__); return; case 0x80 ... 0xfff: @@ -1935,7 +1935,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr, ch->src_sync = (value >> 24) & 1; /* XXX For CamDMA must be 1 */ if (ch->buf_disable && !ch->src_sync) fprintf(stderr, "%s: Buffering disable is not allowed in " - "destination synchronised mode\n", __FUNCTION__); + "destination synchronised mode\n", __func__); ch->prefetch = (value >> 23) & 1; ch->bs = (value >> 18) & 1; ch->transparent_copy = (value >> 17) & 1; @@ -1947,7 +1947,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr, ch->fs = (value & 0x0020) >> 5; if (ch->fs && ch->bs && ch->mode[0] && ch->mode[1]) fprintf(stderr, "%s: For a packet transfer at least one port " - "must be constant-addressed\n", __FUNCTION__); + "must be constant-addressed\n", __func__); ch->sync = (value & 0x001f) | ((value >> 14) & 0x0060); /* XXX must be 0x01 for CamDMA */ @@ -1978,7 +1978,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr, ch->endian_lock[1] =(value >> 18) & 1; if (ch->endian[0] != ch->endian[1]) fprintf(stderr, "%s: DMA endianness conversion enable attempt\n", - __FUNCTION__); + __func__); ch->write_mode = (value >> 16) & 3; ch->burst[1] = (value & 0xc000) >> 14; ch->pack[1] = (value & 0x2000) >> 13; @@ -1988,10 +1988,10 @@ static void omap_dma4_write(void *opaque, hwaddr addr, ch->translate[0] = (value & 0x003c) >> 2; if (ch->translate[0] | ch->translate[1]) fprintf(stderr, "%s: bad MReqAddressTranslate sideband signal\n", - __FUNCTION__); + __func__); ch->data_type = 1 << (value & 3); if ((value & 3) == 3) { - printf("%s: bad data_type for DMA channel\n", __FUNCTION__); + printf("%s: bad data_type for DMA channel\n", __func__); ch->data_type >>= 1; } break; diff --git a/hw/dma/pxa2xx_dma.c b/hw/dma/pxa2xx_dma.c index 634a4328f0..f4eb26cf17 100644 --- a/hw/dma/pxa2xx_dma.c +++ b/hw/dma/pxa2xx_dma.c @@ -169,7 +169,7 @@ static inline void pxa2xx_dma_descriptor_fetch( s->chan[ch].dest &= ~3; if (s->chan[ch].cmd & (DCMD_CMPEN | DCMD_FLYBYS | DCMD_FLYBYT)) - printf("%s: unsupported mode in channel %i\n", __FUNCTION__, ch); + printf("%s: unsupported mode in channel %i\n", __func__, ch); if (s->chan[ch].cmd & DCMD_STARTIRQEN) s->chan[ch].state |= DCSR_STARTINTR; @@ -264,7 +264,7 @@ static uint64_t pxa2xx_dma_read(void *opaque, hwaddr offset, unsigned int channel; if (size != 4) { - hw_error("%s: Bad access width\n", __FUNCTION__); + hw_error("%s: Bad access width\n", __func__); return 5; } @@ -312,7 +312,7 @@ static uint64_t pxa2xx_dma_read(void *opaque, hwaddr offset, } } - hw_error("%s: Bad offset 0x" TARGET_FMT_plx "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset 0x" TARGET_FMT_plx "\n", __func__, offset); return 7; } @@ -323,7 +323,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset, unsigned int channel; if (size != 4) { - hw_error("%s: Bad access width\n", __FUNCTION__); + hw_error("%s: Bad access width\n", __func__); return; } @@ -337,7 +337,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset, if (value & DRCMR_MAPVLD) if ((value & DRCMR_CHLNUM) > s->channels) hw_error("%s: Bad DMA channel %i\n", - __FUNCTION__, (unsigned)value & DRCMR_CHLNUM); + __func__, (unsigned)value & DRCMR_CHLNUM); s->req[channel] = value; break; @@ -416,7 +416,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset, break; } fail: - hw_error("%s: Bad offset " TARGET_FMT_plx "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " TARGET_FMT_plx "\n", __func__, offset); } } @@ -431,7 +431,7 @@ static void pxa2xx_dma_request(void *opaque, int req_num, int on) PXA2xxDMAState *s = opaque; int ch; if (req_num < 0 || req_num >= PXA2XX_DMA_NUM_REQUESTS) - hw_error("%s: Bad DMA request %i\n", __FUNCTION__, req_num); + hw_error("%s: Bad DMA request %i\n", __func__, req_num); if (!(s->req[req_num] & DRCMR_MAPVLD)) return; diff --git a/hw/gpio/max7310.c b/hw/gpio/max7310.c index f82e3e6555..4c203ef5c6 100644 --- a/hw/gpio/max7310.c +++ b/hw/gpio/max7310.c @@ -67,7 +67,7 @@ static int max7310_rx(I2CSlave *i2c) default: #ifdef VERBOSE - printf("%s: unknown register %02x\n", __FUNCTION__, s->command); + printf("%s: unknown register %02x\n", __func__, s->command); #endif break; } @@ -82,7 +82,7 @@ static int max7310_tx(I2CSlave *i2c, uint8_t data) if (s->len ++ > 1) { #ifdef VERBOSE - printf("%s: message too long (%i bytes)\n", __FUNCTION__, s->len); + printf("%s: message too long (%i bytes)\n", __func__, s->len); #endif return 1; } @@ -121,7 +121,7 @@ static int max7310_tx(I2CSlave *i2c, uint8_t data) break; default: #ifdef VERBOSE - printf("%s: unknown register %02x\n", __FUNCTION__, s->command); + printf("%s: unknown register %02x\n", __func__, s->command); #endif return 1; } @@ -141,7 +141,7 @@ static int max7310_event(I2CSlave *i2c, enum i2c_event event) case I2C_FINISH: #ifdef VERBOSE if (s->len == 1) - printf("%s: message too short (%i bytes)\n", __FUNCTION__, s->len); + printf("%s: message too short (%i bytes)\n", __func__, s->len); #endif break; default: diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c index 17891e2d0f..08472193b5 100644 --- a/hw/gpio/omap_gpio.c +++ b/hw/gpio/omap_gpio.c @@ -399,7 +399,7 @@ static void omap2_gpio_module_write(void *opaque, hwaddr addr, case 0x10: /* GPIO_SYSCONFIG */ if (((value >> 3) & 3) == 3) - fprintf(stderr, "%s: bad IDLEMODE value\n", __FUNCTION__); + fprintf(stderr, "%s: bad IDLEMODE value\n", __func__); if (value & 2) omap2_gpio_module_reset(s); s->config[0] = value & 0x1d; diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c index 12264ee0f5..26e3e5ebf6 100644 --- a/hw/i2c/omap_i2c.c +++ b/hw/i2c/omap_i2c.c @@ -341,12 +341,12 @@ static void omap_i2c_write(void *opaque, hwaddr addr, } if ((value & (1 << 15)) && !(value & (1 << 10))) { /* MST */ fprintf(stderr, "%s: I^2C slave mode not supported\n", - __FUNCTION__); + __func__); break; } if ((value & (1 << 15)) && value & (1 << 8)) { /* XA */ fprintf(stderr, "%s: 10-bit addressing mode not supported\n", - __FUNCTION__); + __func__); break; } if ((value & (1 << 15)) && value & (1 << 0)) { /* STT */ @@ -393,7 +393,7 @@ static void omap_i2c_write(void *opaque, hwaddr addr, omap_i2c_interrupts_update(s); } if (value & (1 << 15)) /* ST_EN */ - fprintf(stderr, "%s: System Test not supported\n", __FUNCTION__); + fprintf(stderr, "%s: System Test not supported\n", __func__); break; default: diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 32d1296a64..c25e293d88 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1053,7 +1053,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis, g_assert(is_ncq(ncq_fis->command)); if (ncq_tfs->used) { /* error - already in use */ - fprintf(stderr, "%s: tag %d already used\n", __FUNCTION__, tag); + fprintf(stderr, "%s: tag %d already used\n", __func__, tag); return; } diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c index 17917c0b30..3090254783 100644 --- a/hw/ide/microdrive.c +++ b/hw/ide/microdrive.c @@ -156,7 +156,7 @@ static uint8_t md_attr_read(PCMCIACardState *card, uint32_t at) return 0x00; #ifdef VERBOSE default: - printf("%s: Bad attribute space register %02x\n", __FUNCTION__, at); + printf("%s: Bad attribute space register %02x\n", __func__, at); #endif } @@ -193,7 +193,7 @@ static void md_attr_write(PCMCIACardState *card, uint32_t at, uint8_t value) case 0x06: /* Socket and Copy Register */ break; default: - printf("%s: Bad attribute space register %02x\n", __FUNCTION__, at); + printf("%s: Bad attribute space register %02x\n", __func__, at); } } diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c index 2340523da0..d39953126b 100644 --- a/hw/input/lm832x.c +++ b/hw/input/lm832x.c @@ -239,7 +239,7 @@ static uint8_t lm_kbd_read(LM823KbdState *s, int reg, int byte) default: lm_kbd_error(s, ERR_CMDUNK); - fprintf(stderr, "%s: unknown command %02x\n", __FUNCTION__, reg); + fprintf(stderr, "%s: unknown command %02x\n", __func__, reg); return 0x00; } @@ -331,7 +331,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value) if ((value & 3) && (value & 3) != 3) { lm_kbd_error(s, ERR_BADPAR); fprintf(stderr, "%s: invalid clock setting in RCPWM\n", - __FUNCTION__); + __func__); } /* TODO: Validate that the command is only issued once */ break; @@ -378,7 +378,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value) break; default: lm_kbd_error(s, ERR_CMDUNK); - fprintf(stderr, "%s: unknown command %02x\n", __FUNCTION__, reg); + fprintf(stderr, "%s: unknown command %02x\n", __func__, reg); break; } } diff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c index 2b70bbb95c..93db9ed25b 100644 --- a/hw/input/pxa2xx_keypad.c +++ b/hw/input/pxa2xx_keypad.c @@ -231,7 +231,7 @@ static uint64_t pxa2xx_keypad_read(void *opaque, hwaddr offset, return s->kpkdi; break; default: - hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset); } return 0; @@ -278,7 +278,7 @@ static void pxa2xx_keypad_write(void *opaque, hwaddr offset, break; default: - hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset); } } @@ -326,7 +326,7 @@ void pxa27x_register_keypad(PXA2xxKeyPadState *kp, const struct keymap *map, int size) { if(!map || size < 0x80) { - fprintf(stderr, "%s - No PXA keypad map defined\n", __FUNCTION__); + fprintf(stderr, "%s - No PXA keypad map defined\n", __func__); exit(-1); } diff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c index eb5320af40..7990954b6c 100644 --- a/hw/input/tsc2005.c +++ b/hw/input/tsc2005.c @@ -201,7 +201,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data) if (s->enabled != !(data & 0x4000)) { s->enabled = !(data & 0x4000); fprintf(stderr, "%s: touchscreen sense %sabled\n", - __FUNCTION__, s->enabled ? "en" : "dis"); + __func__, s->enabled ? "en" : "dis"); if (s->busy && !s->enabled) timer_del(s->timer); s->busy = s->busy && s->enabled; @@ -210,7 +210,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data) s->timing[0] = data & 0x1fff; if ((s->timing[0] >> 11) == 3) fprintf(stderr, "%s: illegal conversion clock setting\n", - __FUNCTION__); + __func__); break; case 0xd: /* CFR1 */ s->timing[1] = data & 0xf07; @@ -222,7 +222,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data) default: fprintf(stderr, "%s: write into read-only register %x\n", - __FUNCTION__, reg); + __func__, reg); } } @@ -338,7 +338,7 @@ static uint8_t tsc2005_txrx_word(void *opaque, uint8_t value) if (s->enabled != !(value & 1)) { s->enabled = !(value & 1); fprintf(stderr, "%s: touchscreen sense %sabled\n", - __FUNCTION__, s->enabled ? "en" : "dis"); + __func__, s->enabled ? "en" : "dis"); if (s->busy && !s->enabled) timer_del(s->timer); s->busy = s->busy && s->enabled; diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c index b068343771..d4b19c1825 100644 --- a/hw/input/tsc210x.c +++ b/hw/input/tsc210x.c @@ -287,7 +287,7 @@ static void tsc2102_audio_rate_update(TSC210xState *s) rate->fsref == ((s->audio_ctrl3 >> 13) & 1))/* REFFS */ break; if (!rate->rate) { - printf("%s: unknown sampling rate configured\n", __FUNCTION__); + printf("%s: unknown sampling rate configured\n", __func__); return; } @@ -913,7 +913,7 @@ uint32_t tsc210x_txrx(void *opaque, uint32_t value, int len) uint32_t ret = 0; if (len != 16) - hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len); + hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len); /* TODO: sequential reads etc - how do we make sure the host doesn't * unintentionally read out a conversion result from a register while diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c index ccdda89dab..6844c1aa83 100644 --- a/hw/intc/omap_intc.c +++ b/hw/intc/omap_intc.c @@ -540,7 +540,7 @@ static void omap2_inth_write(void *opaque, hwaddr addr, * for every register, see Chapter 3 and 4 for privileged mode. */ if (value & 1) fprintf(stderr, "%s: protection mode enable attempt\n", - __FUNCTION__); + __func__); return; case 0x50: /* INTC_IDLE */ diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c index 50dc83df77..72bf674403 100644 --- a/hw/isa/vt82c686.c +++ b/hw/isa/vt82c686.c @@ -30,7 +30,7 @@ //#define DEBUG_VT82C686B #ifdef DEBUG_VT82C686B -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__) +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__) #else #define DPRINTF(fmt, ...) #endif diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c index e8b2eef688..41a7690560 100644 --- a/hw/mips/gt64xxx_pci.c +++ b/hw/mips/gt64xxx_pci.c @@ -33,7 +33,7 @@ //#define DEBUG #ifdef DEBUG -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__) +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__) #else #define DPRINTF(fmt, ...) #endif diff --git a/hw/misc/cbus.c b/hw/misc/cbus.c index 677274ce3e..25e337ea77 100644 --- a/hw/misc/cbus.c +++ b/hw/misc/cbus.c @@ -62,7 +62,7 @@ static void cbus_io(CBusPriv *s) s->slave[s->addr]->io(s->slave[s->addr]->opaque, s->rw, s->reg, &s->val); else - hw_error("%s: bad slave address %i\n", __FUNCTION__, s->addr); + hw_error("%s: bad slave address %i\n", __func__, s->addr); } static void cbus_cycle(CBusPriv *s) @@ -299,7 +299,7 @@ static inline uint16_t retu_read(CBusRetu *s, int reg) return 0x0000; default: - hw_error("%s: bad register %02x\n", __FUNCTION__, reg); + hw_error("%s: bad register %02x\n", __func__, reg); } } @@ -372,7 +372,7 @@ static inline void retu_write(CBusRetu *s, int reg, uint16_t val) break; default: - hw_error("%s: bad register %02x\n", __FUNCTION__, reg); + hw_error("%s: bad register %02x\n", __func__, reg); } } @@ -538,7 +538,7 @@ static inline uint16_t tahvo_read(CBusTahvo *s, int reg) return 0x0000; default: - hw_error("%s: bad register %02x\n", __FUNCTION__, reg); + hw_error("%s: bad register %02x\n", __func__, reg); } } @@ -567,7 +567,7 @@ static inline void tahvo_write(CBusTahvo *s, int reg, uint16_t val) if (s->backlight != (val & 0x7f)) { s->backlight = val & 0x7f; printf("%s: LCD backlight now at %i / 127\n", - __FUNCTION__, s->backlight); + __func__, s->backlight); } break; @@ -588,7 +588,7 @@ static inline void tahvo_write(CBusTahvo *s, int reg, uint16_t val) break; default: - hw_error("%s: bad register %02x\n", __FUNCTION__, reg); + hw_error("%s: bad register %02x\n", __func__, reg); } } diff --git a/hw/misc/omap_clk.c b/hw/misc/omap_clk.c index 19151d07d6..9ea14186d4 100644 --- a/hw/misc/omap_clk.c +++ b/hw/misc/omap_clk.c @@ -1109,7 +1109,7 @@ struct clk *omap_findclk(struct omap_mpu_state_s *mpu, const char *name) for (i = mpu->clks; i->name; i ++) if (!strcmp(i->name, name) || (i->alias && !strcmp(i->alias, name))) return i; - hw_error("%s: %s not found\n", __FUNCTION__, name); + hw_error("%s: %s not found\n", __func__, name); } void omap_clk_get(struct clk *clk) @@ -1120,7 +1120,7 @@ void omap_clk_get(struct clk *clk) void omap_clk_put(struct clk *clk) { if (!(clk->usecount --)) - hw_error("%s: %s is not in use\n", __FUNCTION__, clk->name); + hw_error("%s: %s is not in use\n", __func__, clk->name); } static void omap_clk_update(struct clk *clk) diff --git a/hw/misc/omap_gpmc.c b/hw/misc/omap_gpmc.c index 67d8e2f023..84f9e4c612 100644 --- a/hw/misc/omap_gpmc.c +++ b/hw/misc/omap_gpmc.c @@ -643,7 +643,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr, case 0x010: /* GPMC_SYSCONFIG */ if ((value >> 3) == 0x3) fprintf(stderr, "%s: bad SDRAM idle mode %"PRIi64"\n", - __FUNCTION__, value >> 3); + __func__, value >> 3); if (value & 2) omap_gpmc_reset(s); s->sysconfig = value & 0x19; @@ -806,7 +806,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr, break; case 0x230: /* GPMC_TESTMODE_CTRL */ if (value & 7) - fprintf(stderr, "%s: test mode enable attempt\n", __FUNCTION__); + fprintf(stderr, "%s: test mode enable attempt\n", __func__); break; default: @@ -864,7 +864,7 @@ void omap_gpmc_attach(struct omap_gpmc_s *s, int cs, MemoryRegion *iomem) assert(iomem); if (cs < 0 || cs >= 8) { - fprintf(stderr, "%s: bad chip-select %i\n", __FUNCTION__, cs); + fprintf(stderr, "%s: bad chip-select %i\n", __func__, cs); exit(-1); } f = &s->cs_file[cs]; diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c index 88c533a0fe..96fc057b4e 100644 --- a/hw/misc/omap_l4.c +++ b/hw/misc/omap_l4.c @@ -126,7 +126,7 @@ struct omap_target_agent_s *omap_l4ta_get(struct omap_l4_s *bus, break; } if (!ta) { - fprintf(stderr, "%s: bad target agent (%i)\n", __FUNCTION__, cs); + fprintf(stderr, "%s: bad target agent (%i)\n", __func__, cs); exit(-1); } @@ -151,7 +151,7 @@ hwaddr omap_l4_attach(struct omap_target_agent_s *ta, hwaddr base; if (region < 0 || region >= ta->regions) { - fprintf(stderr, "%s: bad io region (%i)\n", __FUNCTION__, region); + fprintf(stderr, "%s: bad io region (%i)\n", __func__, region); exit(-1); } diff --git a/hw/misc/omap_sdrc.c b/hw/misc/omap_sdrc.c index dff37ecaf9..7b38c5568c 100644 --- a/hw/misc/omap_sdrc.c +++ b/hw/misc/omap_sdrc.c @@ -109,7 +109,7 @@ static void omap_sdrc_write(void *opaque, hwaddr addr, case 0x10: /* SDRC_SYSCONFIG */ if ((value >> 3) != 0x2) fprintf(stderr, "%s: bad SDRAM idle mode %i\n", - __FUNCTION__, (unsigned)value >> 3); + __func__, (unsigned)value >> 3); if (value & 2) omap_sdrc_reset(s); s->config = value & 0x18; diff --git a/hw/misc/omap_tap.c b/hw/misc/omap_tap.c index e6ea8ee235..3f595e8df7 100644 --- a/hw/misc/omap_tap.c +++ b/hw/misc/omap_tap.c @@ -44,7 +44,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr, case omap3430: return 0x1b7ae02f; /* ES 2 */ default: - hw_error("%s: Bad mpu model\n", __FUNCTION__); + hw_error("%s: Bad mpu model\n", __func__); } case 0x208: /* PRODUCTION_ID_reg for OMAP2 */ @@ -61,7 +61,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr, case omap3430: return 0x000000f0; default: - hw_error("%s: Bad mpu model\n", __FUNCTION__); + hw_error("%s: Bad mpu model\n", __func__); } case 0x20c: @@ -75,7 +75,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr, case omap3430: return 0xcafeb7ae; /* ES 2 */ default: - hw_error("%s: Bad mpu model\n", __FUNCTION__); + hw_error("%s: Bad mpu model\n", __func__); } case 0x218: /* DIE_ID_reg */ diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c index 04e83787d4..9e22d64e36 100644 --- a/hw/misc/tmp105.c +++ b/hw/misc/tmp105.c @@ -131,7 +131,7 @@ static void tmp105_write(TMP105State *s) case TMP105_REG_CONFIG: if (s->buf[0] & ~s->config & (1 << 0)) /* SD */ - printf("%s: TMP105 shutdown\n", __FUNCTION__); + printf("%s: TMP105 shutdown\n", __func__); s->config = s->buf[0]; s->faults = tmp105_faultq[(s->config >> 3) & 3]; /* F */ tmp105_alarm_update(s); diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c index 89133a9dd3..1767d2af61 100644 --- a/hw/pci-host/bonito.c +++ b/hw/pci-host/bonito.c @@ -50,7 +50,7 @@ //#define DEBUG_BONITO #ifdef DEBUG_BONITO -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__) +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__) #else #define DPRINTF(fmt, ...) #endif diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c index 3deccf02c9..0d4b88c609 100644 --- a/hw/sd/pxa2xx_mmci.c +++ b/hw/sd/pxa2xx_mmci.c @@ -330,7 +330,7 @@ static uint64_t pxa2xx_mmci_read(void *opaque, hwaddr offset, unsigned size) case MMC_BLKS_REM: return s->numblk; default: - hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset); } return 0; @@ -369,7 +369,7 @@ static void pxa2xx_mmci_write(void *opaque, case MMC_SPI: s->spi = value & 0xf; if (value & SPI_SPI_MODE) - printf("%s: attempted to use card in SPI mode\n", __FUNCTION__); + printf("%s: attempted to use card in SPI mode\n", __func__); break; case MMC_CMDAT: @@ -442,7 +442,7 @@ static void pxa2xx_mmci_write(void *opaque, break; default: - hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset); + hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset); } } diff --git a/hw/ssi/omap_spi.c b/hw/ssi/omap_spi.c index 22034656b8..34163e5646 100644 --- a/hw/ssi/omap_spi.c +++ b/hw/ssi/omap_spi.c @@ -295,10 +295,10 @@ static void omap_mcspi_write(void *opaque, hwaddr addr, if ((value ^ s->ch[ch].config) & (3 << 14)) /* DMAR | DMAW */ omap_mcspi_dmarequest_update(s->ch + ch); if (((value >> 12) & 3) == 3) /* TRM */ - fprintf(stderr, "%s: invalid TRM value (3)\n", __FUNCTION__); + fprintf(stderr, "%s: invalid TRM value (3)\n", __func__); if (((value >> 7) & 0x1f) < 3) /* WL */ fprintf(stderr, "%s: invalid WL value (%" PRIx64 ")\n", - __FUNCTION__, (value >> 7) & 0x1f); + __func__, (value >> 7) & 0x1f); s->ch[ch].config = value & 0x7fffff; break; @@ -367,7 +367,7 @@ void omap_mcspi_attach(struct omap_mcspi_s *s, int chipselect) { if (chipselect < 0 || chipselect >= s->chnum) - hw_error("%s: Bad chipselect %i\n", __FUNCTION__, chipselect); + hw_error("%s: Bad chipselect %i\n", __func__, chipselect); s->ch[chipselect].txrx = txrx; s->ch[chipselect].opaque = opaque; diff --git a/hw/timer/omap_gptimer.c b/hw/timer/omap_gptimer.c index 6d7c8a396f..ae2dc99832 100644 --- a/hw/timer/omap_gptimer.c +++ b/hw/timer/omap_gptimer.c @@ -357,7 +357,7 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr, s->config = value & 0x33d; if (((value >> 3) & 3) == 3) /* IDLEMODE */ fprintf(stderr, "%s: illegal IDLEMODE value in TIOCP_CFG\n", - __FUNCTION__); + __func__); if (value & 2) /* SOFTRESET */ omap_gp_timer_reset(s); break; @@ -395,10 +395,10 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr, s->st = (value >> 0) & 1; if (s->inout && s->trigger != gpt_trigger_none) fprintf(stderr, "%s: GP timer pin must be an output " - "for this trigger mode\n", __FUNCTION__); + "for this trigger mode\n", __func__); if (!s->inout && s->capture != gpt_capture_none) fprintf(stderr, "%s: GP timer pin must be an input " - "for this capture mode\n", __FUNCTION__); + "for this capture mode\n", __func__); if (s->trigger == gpt_trigger_none) omap_gp_timer_out(s, s->scpwm); /* TODO: make sure this doesn't overflow 32-bits */ diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c index c0aa8ae3de..87e334af24 100644 --- a/hw/timer/twl92230.c +++ b/hw/timer/twl92230.c @@ -403,7 +403,7 @@ static uint8_t menelaus_read(void *opaque, uint8_t addr) default: #ifdef VERBOSE - printf("%s: unknown register %02x\n", __FUNCTION__, addr); + printf("%s: unknown register %02x\n", __func__, addr); #endif break; } @@ -615,7 +615,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value) rtc_badness: default: fprintf(stderr, "%s: bad RTC_UPDATE value %02x\n", - __FUNCTION__, value); + __func__, value); s->status |= 1 << 10; /* RTCERR */ menelaus_update(s); } @@ -708,7 +708,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value) default: #ifdef VERBOSE - printf("%s: unknown register %02x\n", __FUNCTION__, addr); + printf("%s: unknown register %02x\n", __func__, addr); #endif } } diff --git a/hw/usb/desc.c b/hw/usb/desc.c index c36bf30e4f..85c15addc5 100644 --- a/hw/usb/desc.c +++ b/hw/usb/desc.c @@ -688,7 +688,7 @@ int usb_desc_get_descriptor(USBDevice *dev, USBPacket *p, break; default: - fprintf(stderr, "%s: %d unknown type %d (len %zd)\n", __FUNCTION__, + fprintf(stderr, "%s: %d unknown type %d (len %zd)\n", __func__, dev->addr, type, len); break; } diff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c index 443e3c301d..0bbceaea0b 100644 --- a/hw/usb/dev-bluetooth.c +++ b/hw/usb/dev-bluetooth.c @@ -274,13 +274,13 @@ static void usb_bt_fifo_enqueue(struct usb_hci_in_fifo_s *fifo, if (off <= DFIFO_LEN_MASK) { if (off + len > DFIFO_LEN_MASK + 1 && (fifo->dsize = off + len) > (DFIFO_LEN_MASK + 1) * 2) { - fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len); + fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len); exit(-1); } buf = fifo->data + off; } else { if (fifo->dlen > fifo->dsize) { - fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len); + fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len); exit(-1); } buf = fifo->data + off - fifo->dsize; diff --git a/hw/usb/hcd-musb.c b/hw/usb/hcd-musb.c index 27d9d0bd82..d70a91a58c 100644 --- a/hw/usb/hcd-musb.c +++ b/hw/usb/hcd-musb.c @@ -253,8 +253,8 @@ /* #define MUSB_DEBUG */ #ifdef MUSB_DEBUG -#define TRACE(fmt,...) fprintf(stderr, "%s@%d: " fmt "\n", __FUNCTION__, \ - __LINE__, ##__VA_ARGS__) +#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \ + __LINE__, ##__VA_ARGS__) #else #define TRACE(...) #endif diff --git a/hw/usb/tusb6010.c b/hw/usb/tusb6010.c index 8f593a6fdb..2662c060ed 100644 --- a/hw/usb/tusb6010.c +++ b/hw/usb/tusb6010.c @@ -296,7 +296,7 @@ static uint32_t tusb_async_readb(void *opaque, hwaddr addr) } printf("%s: unknown register at %03x\n", - __FUNCTION__, (int) (addr & 0xfff)); + __func__, (int) (addr & 0xfff)); return 0; } @@ -313,7 +313,7 @@ static uint32_t tusb_async_readh(void *opaque, hwaddr addr) } printf("%s: unknown register at %03x\n", - __FUNCTION__, (int) (addr & 0xfff)); + __func__, (int) (addr & 0xfff)); return 0; } @@ -436,7 +436,7 @@ static uint32_t tusb_async_readw(void *opaque, hwaddr addr) return 0x54059adf; } - printf("%s: unknown register at %03x\n", __FUNCTION__, offset); + printf("%s: unknown register at %03x\n", __func__, offset); return 0; } @@ -456,7 +456,7 @@ static void tusb_async_writeb(void *opaque, hwaddr addr, default: printf("%s: unknown register at %03x\n", - __FUNCTION__, (int) (addr & 0xfff)); + __func__, (int) (addr & 0xfff)); return; } } @@ -477,7 +477,7 @@ static void tusb_async_writeh(void *opaque, hwaddr addr, default: printf("%s: unknown register at %03x\n", - __FUNCTION__, (int) (addr & 0xfff)); + __func__, (int) (addr & 0xfff)); return; } } @@ -505,7 +505,7 @@ static void tusb_async_writew(void *opaque, hwaddr addr, s->dev_config = value; s->host_mode = (value & TUSB_DEV_CONF_USB_HOST_MODE); if (value & TUSB_DEV_CONF_PROD_TEST_MODE) - hw_error("%s: Product Test mode not allowed\n", __FUNCTION__); + hw_error("%s: Product Test mode not allowed\n", __func__); break; case TUSB_PHY_OTG_CTRL_ENABLE: @@ -636,7 +636,7 @@ static void tusb_async_writew(void *opaque, hwaddr addr, break; default: - printf("%s: unknown register at %03x\n", __FUNCTION__, offset); + printf("%s: unknown register at %03x\n", __func__, offset); return; } } diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c index c89ced2e88..027f76fad1 100644 --- a/hw/xenpv/xen_domainbuild.c +++ b/hw/xenpv/xen_domainbuild.c @@ -25,22 +25,22 @@ static int xenstore_domain_mkdir(char *path) int i; if (!xs_mkdir(xenstore, 0, path)) { - fprintf(stderr, "%s: xs_mkdir %s: failed\n", __FUNCTION__, path); + fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, path); return -1; } if (!xs_set_permissions(xenstore, 0, path, perms_ro, 2)) { - fprintf(stderr, "%s: xs_set_permissions failed\n", __FUNCTION__); + fprintf(stderr, "%s: xs_set_permissions failed\n", __func__); return -1; } for (i = 0; writable[i]; i++) { snprintf(subpath, sizeof(subpath), "%s/%s", path, writable[i]); if (!xs_mkdir(xenstore, 0, subpath)) { - fprintf(stderr, "%s: xs_mkdir %s: failed\n", __FUNCTION__, subpath); + fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, subpath); return -1; } if (!xs_set_permissions(xenstore, 0, subpath, perms_rw, 2)) { - fprintf(stderr, "%s: xs_set_permissions failed\n", __FUNCTION__); + fprintf(stderr, "%s: xs_set_permissions failed\n", __func__); return -1; } } @@ -158,7 +158,7 @@ static int xen_domain_watcher(void) char byte; if (pipe(fd) != 0) { - qemu_log("%s: Huh? pipe error: %s\n", __FUNCTION__, strerror(errno)); + qemu_log("%s: Huh? pipe error: %s\n", __func__, strerror(errno)); return -1; } if (fork() != 0) @@ -190,7 +190,7 @@ static int xen_domain_watcher(void) case -1: if (errno == EINTR) continue; - qemu_log("%s: Huh? read error: %s\n", __FUNCTION__, strerror(errno)); + qemu_log("%s: Huh? read error: %s\n", __func__, strerror(errno)); qemu_running = 0; break; case 0: @@ -198,13 +198,13 @@ static int xen_domain_watcher(void) qemu_running = 0; break; default: - qemu_log("%s: Huh? data on the watch pipe?\n", __FUNCTION__); + qemu_log("%s: Huh? data on the watch pipe?\n", __func__); break; } } /* cleanup */ - qemu_log("%s: destroy domain %d\n", __FUNCTION__, xen_domid); + qemu_log("%s: destroy domain %d\n", __func__, xen_domid); xc_domain_destroy(xen_xc, xen_domid); _exit(0); } diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c index 31d2f25627..69a52a9f93 100644 --- a/hw/xenpv/xen_machine_pv.c +++ b/hw/xenpv/xen_machine_pv.c @@ -36,7 +36,7 @@ static void xen_init_pv(MachineState *machine) /* Initialize backend core & drivers */ if (xen_be_init() != 0) { - fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__); + fprintf(stderr, "%s: xen backend core setup failed\n", __func__); exit(1); } diff --git a/include/hw/arm/omap.h b/include/hw/arm/omap.h index cac1b2ba43..b398607b06 100644 --- a/include/hw/arm/omap.h +++ b/include/hw/arm/omap.h @@ -960,10 +960,10 @@ void omap_mpu_wakeup(void *opaque, int irq, int req); # define OMAP_BAD_REG(paddr) \ fprintf(stderr, "%s: Bad register " OMAP_FMT_plx "\n", \ - __FUNCTION__, paddr) + __func__, paddr) # define OMAP_RO_REG(paddr) \ fprintf(stderr, "%s: Read-only register " OMAP_FMT_plx "\n", \ - __FUNCTION__, paddr) + __func__, paddr) /* OMAP-specific Linux bootloader tags for the ATAG_BOARD area (Board-specifc tags are not here) */ @@ -998,13 +998,13 @@ enum { # ifdef TCMI_VERBOSE # define OMAP_8B_REG(paddr) \ fprintf(stderr, "%s: 8-bit register " OMAP_FMT_plx "\n", \ - __FUNCTION__, paddr) + __func__, paddr) # define OMAP_16B_REG(paddr) \ fprintf(stderr, "%s: 16-bit register " OMAP_FMT_plx "\n", \ - __FUNCTION__, paddr) + __func__, paddr) # define OMAP_32B_REG(paddr) \ fprintf(stderr, "%s: 32-bit register " OMAP_FMT_plx "\n", \ - __FUNCTION__, paddr) + __func__, paddr) # else # define OMAP_8B_REG(paddr) # define OMAP_16B_REG(paddr) diff --git a/include/hw/arm/sharpsl.h b/include/hw/arm/sharpsl.h index 13981a6d03..5bf6db1fa2 100644 --- a/include/hw/arm/sharpsl.h +++ b/include/hw/arm/sharpsl.h @@ -7,7 +7,7 @@ #define QEMU_SHARPSL_H #define zaurus_printf(format, ...) \ - fprintf(stderr, "%s: " format, __FUNCTION__, ##__VA_ARGS__) + fprintf(stderr, "%s: " format, __func__, ##__VA_ARGS__) /* zaurus.c */ diff --git a/memory_mapping.c b/memory_mapping.c index a5d38552a6..775466f3a8 100644 --- a/memory_mapping.c +++ b/memory_mapping.c @@ -256,7 +256,7 @@ static void guest_phys_blocks_region_add(MemoryListener *listener, #ifdef DEBUG_GUEST_PHYS_REGION_ADD fprintf(stderr, "%s: target_start=" TARGET_FMT_plx " target_end=" - TARGET_FMT_plx ": %s (count: %u)\n", __FUNCTION__, target_start, + TARGET_FMT_plx ": %s (count: %u)\n", __func__, target_start, target_end, predecessor ? "joined" : "added", g->list->num); #endif } diff --git a/migration/block.c b/migration/block.c index 9171f60028..0e1b90a365 100644 --- a/migration/block.c +++ b/migration/block.c @@ -621,7 +621,7 @@ static int flush_blks(QEMUFile *f) int ret = 0; DPRINTF("%s Enter submitted %d read_done %d transferred %d\n", - __FUNCTION__, block_mig_state.submitted, block_mig_state.read_done, + __func__, block_mig_state.submitted, block_mig_state.read_done, block_mig_state.transferred); blk_mig_lock(); @@ -648,7 +648,7 @@ static int flush_blks(QEMUFile *f) } blk_mig_unlock(); - DPRINTF("%s Exit submitted %d read_done %d transferred %d\n", __FUNCTION__, + DPRINTF("%s Exit submitted %d read_done %d transferred %d\n", __func__, block_mig_state.submitted, block_mig_state.read_done, block_mig_state.transferred); return ret; diff --git a/ui/cursor.c b/ui/cursor.c index 2e2fe13fa6..f3da0cee79 100644 --- a/ui/cursor.c +++ b/ui/cursor.c @@ -19,11 +19,11 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[]) if (sscanf(xpm[line], "%u %u %u %u", &width, &height, &colors, &chars) != 4) { fprintf(stderr, "%s: header parse error: \"%s\"\n", - __FUNCTION__, xpm[line]); + __func__, xpm[line]); return NULL; } if (chars != 1) { - fprintf(stderr, "%s: chars != 1 not supported\n", __FUNCTION__); + fprintf(stderr, "%s: chars != 1 not supported\n", __func__); return NULL; } line++; @@ -41,7 +41,7 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[]) } } fprintf(stderr, "%s: color parse error: \"%s\"\n", - __FUNCTION__, xpm[line]); + __func__, xpm[line]); return NULL; } diff --git a/ui/spice-display.c b/ui/spice-display.c index 0963c7825f..346fff44f4 100644 --- a/ui/spice-display.c +++ b/ui/spice-display.c @@ -630,13 +630,13 @@ static int interface_req_cursor_notification(QXLInstance *sin) static void interface_notify_update(QXLInstance *sin, uint32_t update_id) { - fprintf(stderr, "%s: abort()\n", __FUNCTION__); + fprintf(stderr, "%s: abort()\n", __func__); abort(); } static int interface_flush_resources(QXLInstance *sin) { - fprintf(stderr, "%s: abort()\n", __FUNCTION__); + fprintf(stderr, "%s: abort()\n", __func__); abort(); return 0; } -- 2.11.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alistair Francis Subject: [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__ Date: Mon, 25 Sep 2017 17:08:39 -0700 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dwdUY-00057H-M3 for xen-devel@lists.xenproject.org; Tue, 26 Sep 2017 00:12:51 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: "Dr. David Alan Gilbert" , Stefano Stabellini , Fam Zheng , qemu-block@nongnu.org, Peter Crosthwaite , John Snow , Juan Quintela , armbru@redhat.com, alistair.francis@xilinx.com, Yongbok Kim , qemu-arm@nongnu.org, Gerd Hoffmann , Stefan Hajnoczi , xen-devel@lists.xenproject.org, Anthony Perard , alistair23@gmail.com, Andrzej Zaborowski , Aurelien Jarno List-Id: xen-devel@lists.xenproject.org UmVwbGFjZSBhbGwgb2NjdXJzIG9mIF9fRlVOQ1RJT05fXyBleGNlcHQgZm9yIHRoZSBjaGVjayBp biBjaGVja3BhdGNoCndpdGggdGhlIG5vbiBHQ0Mgc3BlY2lmaWMgX19mdW5jX18uCgpPbmUgbGlu ZSBpbiBoY2QtbXVzYi5jIHdhcyBtYW51YWxseSB0d2Vha2VkIHRvIHBhc3MgY2hlY2twYXRjaC4K ClNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAeGlsaW54 LmNvbT4KQ2M6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgpDYzogQW5kcnplaiBa YWJvcm93c2tpIDxiYWxyb2dnQGdtYWlsLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0 YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEFudGhvbnkgUGVyYXJkIDxhbnRob255LnBlcmFyZEBj aXRyaXguY29tPgpDYzogSm9obiBTbm93IDxqc25vd0ByZWRoYXQuY29tPgpDYzogQXVyZWxpZW4g SmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PgpDYzogWW9uZ2JvayBLaW0gPHlvbmdib2sua2lt QGltZ3RlYy5jb20+CkNjOiBQZXRlciBDcm9zdGh3YWl0ZSA8Y3Jvc3Rod2FpdGUucGV0ZXJAZ21h aWwuY29tPgpDYzogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPiAoc3VwcG9y dGVyOkJsb2NrCkNjOiBGYW0gWmhlbmcgPGZhbXpAcmVkaGF0LmNvbT4gKHN1cHBvcnRlcjpCbG9j awpDYzogSnVhbiBRdWludGVsYSA8cXVpbnRlbGFAcmVkaGF0LmNvbT4KQ2M6ICJEci4gRGF2aWQg QWxhbiBHaWxiZXJ0IiA8ZGdpbGJlcnRAcmVkaGF0LmNvbT4KQ2M6IHFlbXUtYXJtQG5vbmdudS5v cmcKQ2M6IHFlbXUtYmxvY2tAbm9uZ251Lm9yZwpDYzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2pl Y3Qub3JnCi0tLQoKIGF1ZGlvL2F1ZGlvX2ludC5oICAgICAgICAgIHwgIDIgKy0KIGh3L2FybS9u c2VyaWVzLmMgICAgICAgICAgIHwgIDIgKy0KIGh3L2FybS9vbWFwMS5jICAgICAgICAgICAgIHwg NDIgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBody9hcm0vb21h cDIuYyAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQogaHcvYXJtL3BhbG0uYyAgICAgICAg ICAgICAgfCAxNCArKysrKysrLS0tLS0tLQogaHcvYXJtL3B4YTJ4eC5jICAgICAgICAgICAgfCA0 NiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBody9hcm0v cHhhMnh4X2dwaW8uYyAgICAgICB8ICA2ICsrKy0tLQogaHcvYXJtL3B4YTJ4eF9waWMuYyAgICAg ICAgfCAgNCArKy0tCiBody9hcm0vdG9zYS5jICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0K IGh3L2F1ZGlvL2hkYS1jb2RlYy5jICAgICAgIHwgMTAgKysrKystLS0tLQogaHcvYXVkaW8vaW50 ZWwtaGRhLmMgICAgICAgfCAyOCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBody9hdWRp by93bTg3NTAuYyAgICAgICAgICB8ICA0ICsrLS0KIGh3L2Jsb2NrL25hbmQuYyAgICAgICAgICAg IHwgIDQgKystLQogaHcvYmxvY2svb25lbmFuZC5jICAgICAgICAgfCAgOCArKysrLS0tLQogaHcv YnQvY29yZS5jICAgICAgICAgICAgICAgfCAxMCArKysrKy0tLS0tCiBody9idC9oY2ktY3NyLmMg ICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCiBody9idC9oY2kuYyAgICAgICAgICAgICAg ICB8IDI2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBody9idC9oaWQuYyAgICAgICAgICAg ICAgICB8ICAyICstCiBody9idC9sMmNhcC5jICAgICAgICAgICAgICB8IDIyICsrKysrKysrKysr LS0tLS0tLS0tLS0KIGh3L2J0L3NkcC5jICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCiBody9k aXNwbGF5L2JsaXp6YXJkLmMgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQogaHcvZGlzcGxh eS9vbWFwX2Rzcy5jICAgICAgfCAgNiArKystLS0KIGh3L2Rpc3BsYXkvcHhhMnh4X2xjZC5jICAg IHwgMTQgKysrKysrKy0tLS0tLS0KIGh3L2Rpc3BsYXkvcXhsLXJlbmRlci5jICAgIHwgIDYgKysr LS0tCiBody9kaXNwbGF5L3F4bC5oICAgICAgICAgICB8ICAyICstCiBody9kaXNwbGF5L3RjNjM5 M3hiLmMgICAgICB8ICAyICstCiBody9kaXNwbGF5L3hlbmZiLmMgICAgICAgICB8ICAyICstCiBo dy9kbWEvb21hcF9kbWEuYyAgICAgICAgICB8IDI2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0t CiBody9kbWEvcHhhMnh4X2RtYS5jICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCiBody9ncGlv L21heDczMTAuYyAgICAgICAgICB8ICA4ICsrKystLS0tCiBody9ncGlvL29tYXBfZ3Bpby5jICAg ICAgICB8ICAyICstCiBody9pMmMvb21hcF9pMmMuYyAgICAgICAgICB8ICA2ICsrKy0tLQogaHcv aWRlL2FoY2kuYyAgICAgICAgICAgICAgfCAgMiArLQogaHcvaWRlL21pY3JvZHJpdmUuYyAgICAg ICAgfCAgNCArKy0tCiBody9pbnB1dC9sbTgzMnguYyAgICAgICAgICB8ICA2ICsrKy0tLQogaHcv aW5wdXQvcHhhMnh4X2tleXBhZC5jICAgfCAgNiArKystLS0KIGh3L2lucHV0L3RzYzIwMDUuYyAg ICAgICAgIHwgIDggKysrKy0tLS0KIGh3L2lucHV0L3RzYzIxMHguYyAgICAgICAgIHwgIDQgKyst LQogaHcvaW50Yy9vbWFwX2ludGMuYyAgICAgICAgfCAgMiArLQogaHcvaXNhL3Z0ODJjNjg2LmMg ICAgICAgICAgfCAgMiArLQogaHcvbWlwcy9ndDY0eHh4X3BjaS5jICAgICAgfCAgMiArLQogaHcv bWlzYy9jYnVzLmMgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KIGh3L21pc2Mvb21hcF9j bGsuYyAgICAgICAgIHwgIDQgKystLQogaHcvbWlzYy9vbWFwX2dwbWMuYyAgICAgICAgfCAgNiAr KystLS0KIGh3L21pc2Mvb21hcF9sNC5jICAgICAgICAgIHwgIDQgKystLQogaHcvbWlzYy9vbWFw X3NkcmMuYyAgICAgICAgfCAgMiArLQogaHcvbWlzYy9vbWFwX3RhcC5jICAgICAgICAgfCAgNiAr KystLS0KIGh3L21pc2MvdG1wMTA1LmMgICAgICAgICAgIHwgIDIgKy0KIGh3L3BjaS1ob3N0L2Jv bml0by5jICAgICAgIHwgIDIgKy0KIGh3L3NkL3B4YTJ4eF9tbWNpLmMgICAgICAgIHwgIDYgKysr LS0tCiBody9zc2kvb21hcF9zcGkuYyAgICAgICAgICB8ICA2ICsrKy0tLQogaHcvdGltZXIvb21h cF9ncHRpbWVyLmMgICAgfCAgNiArKystLS0KIGh3L3RpbWVyL3R3bDkyMjMwLmMgICAgICAgIHwg IDYgKysrLS0tCiBody91c2IvZGVzYy5jICAgICAgICAgICAgICB8ICAyICstCiBody91c2IvZGV2 LWJsdWV0b290aC5jICAgICB8ICA0ICsrLS0KIGh3L3VzYi9oY2QtbXVzYi5jICAgICAgICAgIHwg IDQgKystLQogaHcvdXNiL3R1c2I2MDEwLmMgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQog aHcveGVucHYveGVuX2RvbWFpbmJ1aWxkLmMgfCAxNiArKysrKysrKy0tLS0tLS0tCiBody94ZW5w di94ZW5fbWFjaGluZV9wdi5jICB8ICAyICstCiBpbmNsdWRlL2h3L2FybS9vbWFwLmggICAgICB8 IDEwICsrKysrLS0tLS0KIGluY2x1ZGUvaHcvYXJtL3NoYXJwc2wuaCAgIHwgIDIgKy0KIG1lbW9y eV9tYXBwaW5nLmMgICAgICAgICAgIHwgIDIgKy0KIG1pZ3JhdGlvbi9ibG9jay5jICAgICAgICAg IHwgIDQgKystLQogdWkvY3Vyc29yLmMgICAgICAgICAgICAgICAgfCAgNiArKystLS0KIHVpL3Nw aWNlLWRpc3BsYXkuYyAgICAgICAgIHwgIDQgKystLQogNjUgZmlsZXMgY2hhbmdlZCwgMjczIGlu c2VydGlvbnMoKyksIDI3MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hdWRpby9hdWRpb19p bnQuaCBiL2F1ZGlvL2F1ZGlvX2ludC5oCmluZGV4IDViY2IxYzYwZTEuLjU0M2IxYmQ4ZDUgMTAw NjQ0Ci0tLSBhL2F1ZGlvL2F1ZGlvX2ludC5oCisrKyBiL2F1ZGlvL2F1ZGlvX2ludC5oCkBAIC0y NTMsNyArMjUzLDcgQEAgc3RhdGljIGlubGluZSBpbnQgYXVkaW9fcmluZ19kaXN0IChpbnQgZHN0 LCBpbnQgc3JjLCBpbnQgbGVuKQogI2RlZmluZSBBVURJT19TVFJJTkdJRlkobikgQVVESU9fU1RS SU5HSUZZXyhuKQogCiAjaWYgZGVmaW5lZCBfTVNDX1ZFUiB8fCBkZWZpbmVkIF9fR05VQ19fCi0j ZGVmaW5lIEFVRElPX0ZVTkMgX19GVU5DVElPTl9fCisjZGVmaW5lIEFVRElPX0ZVTkMgX19mdW5j X18KICNlbHNlCiAjZGVmaW5lIEFVRElPX0ZVTkMgX19GSUxFX18gIjoiIEFVRElPX1NUUklOR0lG WSAoX19MSU5FX18pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2h3L2FybS9uc2VyaWVzLmMgYi9ody9h cm0vbnNlcmllcy5jCmluZGV4IDU4MDA1YjY2MTkuLjMyNjg3YWZjZWQgMTAwNjQ0Ci0tLSBhL2h3 L2FybS9uc2VyaWVzLmMKKysrIGIvaHcvYXJtL25zZXJpZXMuYwpAQCAtNDYzLDcgKzQ2Myw3IEBA IHN0YXRpYyB1aW50MzJfdCBtaXBpZF90eHJ4KHZvaWQgKm9wYXF1ZSwgdWludDMyX3QgY21kLCBp bnQgbGVuKQogICAgIHVpbnQ4X3QgcmV0OwogCiAgICAgaWYgKGxlbiA+IDkpIHsKLSAgICAgICAg aHdfZXJyb3IoIiVzOiBGSVhNRTogYmFkIFNQSSB3b3JkIHdpZHRoICVpXG4iLCBfX0ZVTkNUSU9O X18sIGxlbik7CisgICAgICAgIGh3X2Vycm9yKCIlczogRklYTUU6IGJhZCBTUEkgd29yZCB3aWR0 aCAlaVxuIiwgX19mdW5jX18sIGxlbik7CiAgICAgfQogCiAgICAgaWYgKHMtPnAgPj0gQVJSQVlf U0laRShzLT5yZXNwKSkgewpkaWZmIC0tZ2l0IGEvaHcvYXJtL29tYXAxLmMgYi9ody9hcm0vb21h cDEuYwppbmRleCBiM2U3NjI1MTMwLi4xMzg4MjAwMTkxIDEwMDY0NAotLS0gYS9ody9hcm0vb21h cDEuYworKysgYi9ody9hcm0vb21hcDEuYwpAQCAtOTk5LDcgKzk5OSw3IEBAIHN0YXRpYyB1aW50 NjRfdCBvbWFwX2lkX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgY2Fz ZSBvbWFwMTUxMDoKICAgICAgICAgICAgIHJldHVybiAweDAzMzEwMTE1OwogICAgICAgICBkZWZh dWx0OgotICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgbXB1IG1vZGVsXG4iLCBfX0ZVTkNU SU9OX18pOworICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgbXB1IG1vZGVsXG4iLCBfX2Z1 bmNfXyk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKQEAgLTEwMTAsNyArMTAxMCw3IEBA IHN0YXRpYyB1aW50NjRfdCBvbWFwX2lkX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwK ICAgICAgICAgY2FzZSBvbWFwMTUxMDoKICAgICAgICAgICAgIHJldHVybiAweGZiNDcwMDJmOwog ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgbXB1IG1vZGVs XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgbXB1IG1v ZGVsXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt MTcxNiw3ICsxNzE2LDcgQEAgc3RhdGljIHZvaWQgb21hcF9jbGttX3dyaXRlKHZvaWQgKm9wYXF1 ZSwgaHdhZGRyIGFkZHIsCiAgICAgY2FzZSAweDE4OgkvKiBBUk1fU1lTU1QgKi8KICAgICAgICAg aWYgKChzLT5jbGttLmNsb2NraW5nX3NjaGVtZSBeICh2YWx1ZSA+PiAxMSkpICYgNykgewogICAg ICAgICAgICAgcy0+Y2xrbS5jbG9ja2luZ19zY2hlbWUgPSAodmFsdWUgPj4gMTEpICYgNzsKLSAg ICAgICAgICAgIHByaW50ZigiJXM6IGNsb2NraW5nIHNjaGVtZSBzZXQgdG8gJXNcbiIsIF9fRlVO Q1RJT05fXywKKyAgICAgICAgICAgIHByaW50ZigiJXM6IGNsb2NraW5nIHNjaGVtZSBzZXQgdG8g JXNcbiIsIF9fZnVuY19fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsa3NjaGVtZW5h bWVbcy0+Y2xrbS5jbG9ja2luZ19zY2hlbWVdKTsKICAgICAgICAgfQogICAgICAgICBzLT5jbGtt LmNvbGRfc3RhcnQgJj0gdmFsdWUgJiAweDNmOwpAQCAtMjEyOSwxNCArMjEyOSwxNCBAQCBxZW11 X2lycSAqb21hcF9tcHVpb19pbl9nZXQoc3RydWN0IG9tYXBfbXB1aW9fcyAqcykKIHZvaWQgb21h cF9tcHVpb19vdXRfc2V0KHN0cnVjdCBvbWFwX21wdWlvX3MgKnMsIGludCBsaW5lLCBxZW11X2ly cSBoYW5kbGVyKQogewogICAgIGlmIChsaW5lID49IDE2IHx8IGxpbmUgPCAwKQotICAgICAgICBo d19lcnJvcigiJXM6IE5vIEdQSU8gbGluZSAlaVxuIiwgX19GVU5DVElPTl9fLCBsaW5lKTsKKyAg ICAgICAgaHdfZXJyb3IoIiVzOiBObyBHUElPIGxpbmUgJWlcbiIsIF9fZnVuY19fLCBsaW5lKTsK ICAgICBzLT5oYW5kbGVyW2xpbmVdID0gaGFuZGxlcjsKIH0KIAogdm9pZCBvbWFwX21wdWlvX2tl eShzdHJ1Y3Qgb21hcF9tcHVpb19zICpzLCBpbnQgcm93LCBpbnQgY29sLCBpbnQgZG93bikKIHsK ICAgICBpZiAocm93ID49IDUgfHwgcm93IDwgMCkKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBObyBr ZXkgJWktJWlcbiIsIF9fRlVOQ1RJT05fXywgY29sLCByb3cpOworICAgICAgICBod19lcnJvcigi JXM6IE5vIGtleSAlaS0laVxuIiwgX19mdW5jX18sIGNvbCwgcm93KTsKIAogICAgIGlmIChkb3du KQogICAgICAgICBzLT5idXR0b25zW3Jvd10gfD0gMSA8PCBjb2w7CkBAIC0yMzEzLDcgKzIzMTMs NyBAQCB2b2lkIG9tYXBfdXdpcmVfYXR0YWNoKHN0cnVjdCBvbWFwX3V3aXJlX3MgKnMsCiAgICAg ICAgICAgICAgICAgdVdpcmVTbGF2ZSAqc2xhdmUsIGludCBjaGlwc2VsZWN0KQogewogICAgIGlm IChjaGlwc2VsZWN0IDwgMCB8fCBjaGlwc2VsZWN0ID4gMykgewotICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIiVzOiBCYWQgY2hpcHNlbGVjdCAlaVxuIiwgX19GVU5DVElPTl9fLCBjaGlwc2VsZWN0 KTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogQmFkIGNoaXBzZWxlY3QgJWlcbiIsIF9f ZnVuY19fLCBjaGlwc2VsZWN0KTsKICAgICAgICAgZXhpdCgtMSk7CiAgICAgfQogCkBAIC0yMzM1 LDcgKzIzMzUsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX3B3bF91cGRhdGUoc3RydWN0IG9tYXBfcHds X3MgKnMpCiAKICAgICBpZiAob3V0cHV0ICE9IHMtPm91dHB1dCkgewogICAgICAgICBzLT5vdXRw dXQgPSBvdXRwdXQ7Ci0gICAgICAgIHByaW50ZigiJXM6IEJhY2tsaWdodCBub3cgYXQgJWkvMjU2 XG4iLCBfX0ZVTkNUSU9OX18sIG91dHB1dCk7CisgICAgICAgIHByaW50ZigiJXM6IEJhY2tsaWdo dCBub3cgYXQgJWkvMjU2XG4iLCBfX2Z1bmNfXywgb3V0cHV0KTsKICAgICB9CiB9CiAKQEAgLTI0 NzMsNyArMjQ3Myw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfcHd0X3dyaXRlKHZvaWQgKm9wYXF1ZSwg aHdhZGRyIGFkZHIsCiAgICAgY2FzZSAweDA0OgkvKiBWUkMgKi8KICAgICAgICAgaWYgKCh2YWx1 ZSBeIHMtPnZyYykgJiAxKSB7CiAgICAgICAgICAgICBpZiAodmFsdWUgJiAxKQotICAgICAgICAg ICAgICAgIHByaW50ZigiJXM6ICVpSHogYnV6eiBvblxuIiwgX19GVU5DVElPTl9fLCAoaW50KQor ICAgICAgICAgICAgICAgIHByaW50ZigiJXM6ICVpSHogYnV6eiBvblxuIiwgX19mdW5jX18sIChp bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDEuNSBNSHogZnJvbSBhIDEy LU1IeiBvciAxMy1NSHogUFdUX0NMSyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKG9tYXBfY2xrX2dldHJhdGUocy0+Y2xrKSA+PiAzKSAvCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBQcmUtbXVsdGlwbGV4ZXIgZGl2aWRlciAqLwpAQCAtMjQ5MCw3ICsy NDkwLDcgQEAgc3RhdGljIHZvaWQgb21hcF9wd3Rfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIg YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodmFsdWUgJiAoMSA8PCA1 KSkgPyAgODAgOiAxMjcpIC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMDcg KiA1NSAqIDYzICogMTI3KSkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHBy aW50ZigiJXM6IHNpbGVuY2UhXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgIHBy aW50ZigiJXM6IHNpbGVuY2UhXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIH0KICAgICAgICAgcy0+ dnJjID0gdmFsdWUgJiAweDdmOwogICAgICAgICBicmVhazsKQEAgLTI1NjIsNyArMjU2Miw3IEBA IHN0YXRpYyB2b2lkIG9tYXBfcnRjX2FsYXJtX3VwZGF0ZShzdHJ1Y3Qgb21hcF9ydGNfcyAqcykK IHsKICAgICBzLT5hbGFybV90aSA9IG1rdGltZWdtKCZzLT5hbGFybV90bSk7CiAgICAgaWYgKHMt PmFsYXJtX3RpID09IC0xKQotICAgICAgICBwcmludGYoIiVzOiBjb252ZXJzaW9uIGZhaWxlZFxu IiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgcHJpbnRmKCIlczogY29udmVyc2lvbiBmYWlsZWRc biIsIF9fZnVuY19fKTsKIH0KIAogc3RhdGljIHVpbnQ2NF90IG9tYXBfcnRjX3JlYWQodm9pZCAq b3BhcXVlLCBod2FkZHIgYWRkciwKQEAgLTMwMjgsNyArMzAyOCw3IEBAIHN0YXRpYyB2b2lkIG9t YXBfbWNic3Bfc291cmNlX3RpY2sodm9pZCAqb3BhcXVlKQogICAgIGlmICghcy0+cnhfcmF0ZSkK ICAgICAgICAgcmV0dXJuOwogICAgIGlmIChzLT5yeF9yZXEpCi0gICAgICAgIHByaW50ZigiJXM6 IFJ4IEZJRk8gb3ZlcnJ1blxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgcHJpbnRmKCIlczog UnggRklGTyBvdmVycnVuXG4iLCBfX2Z1bmNfXyk7CiAKICAgICBzLT5yeF9yZXEgPSBzLT5yeF9y YXRlIDw8IGJwc1socy0+cmNyWzBdID4+IDUpICYgN107CiAKQEAgLTMwNzQsNyArMzA3NCw3IEBA IHN0YXRpYyB2b2lkIG9tYXBfbWNic3Bfc2lua190aWNrKHZvaWQgKm9wYXF1ZSkKICAgICBpZiAo IXMtPnR4X3JhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAocy0+dHhfcmVxKQotICAgICAg ICBwcmludGYoIiVzOiBUeCBGSUZPIHVuZGVycnVuXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAg ICBwcmludGYoIiVzOiBUeCBGSUZPIHVuZGVycnVuXG4iLCBfX2Z1bmNfXyk7CiAKICAgICBzLT50 eF9yZXEgPSBzLT50eF9yYXRlIDw8IGJwc1socy0+eGNyWzBdID4+IDUpICYgN107CiAKQEAgLTMx NzYsNyArMzE3Niw3IEBAIHN0YXRpYyB1aW50NjRfdCBvbWFwX21jYnNwX3JlYWQodm9pZCAqb3Bh cXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICAgICBjYXNl IDB4MDI6CS8qIERSUjEgKi8KICAgICAgICAgaWYgKHMtPnJ4X3JlcSA8IDIpIHsKLSAgICAgICAg ICAgIHByaW50ZigiJXM6IFJ4IEZJRk8gdW5kZXJydW5cbiIsIF9fRlVOQ1RJT05fXyk7CisgICAg ICAgICAgICBwcmludGYoIiVzOiBSeCBGSUZPIHVuZGVycnVuXG4iLCBfX2Z1bmNfXyk7CiAgICAg ICAgICAgICBvbWFwX21jYnNwX3J4X2RvbmUocyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgICBzLT50eF9yZXEgLT0gMjsKQEAgLTMyODIsNyArMzI4Miw3IEBAIHN0YXRpYyB2b2lkIG9t YXBfbWNic3Bfd3JpdGVoKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgICAgICBp ZiAocy0+dHhfcmVxIDwgMikKICAgICAgICAgICAgICAgICBvbWFwX21jYnNwX3R4X2RvbmUocyk7 CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIlczogVHggRklGTyBvdmVycnVu XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgcHJpbnRmKCIlczogVHggRklGTyBvdmVy cnVuXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgMHgwODoJLyog U1BDUjIgKi8KQEAgLTMyOTcsNyArMzI5Nyw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfbWNic3Bfd3Jp dGVoKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIHMtPnNwY3JbMF0gJj0gMHgw MDA2OwogICAgICAgICBzLT5zcGNyWzBdIHw9IDB4ZjhmOSAmIHZhbHVlOwogICAgICAgICBpZiAo dmFsdWUgJiAoMSA8PCAxNSkpCQkJCS8qIERMQiAqLwotICAgICAgICAgICAgcHJpbnRmKCIlczog RGlnaXRhbCBMb29wYmFjayBtb2RlIGVuYWJsZSBhdHRlbXB0XG4iLCBfX0ZVTkNUSU9OX18pOwor ICAgICAgICAgICAgcHJpbnRmKCIlczogRGlnaXRhbCBMb29wYmFjayBtb2RlIGVuYWJsZSBhdHRl bXB0XG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGlmICh+dmFsdWUgJiAxKSB7CQkJCS8qIFJSU1Qg Ki8KICAgICAgICAgICAgIHMtPnNwY3JbMF0gJj0gfjY7CiAgICAgICAgICAgICBzLT5yeF9yZXEg PSAwOwpAQCAtMzMzMCwxMyArMzMzMCwxMyBAQCBzdGF0aWMgdm9pZCBvbWFwX21jYnNwX3dyaXRl aCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBzLT5tY3JbMV0gPSB2YWx1ZSAm IDB4MDNlMzsKICAgICAgICAgaWYgKHZhbHVlICYgMykJCQkJCS8qIFhNQ00gKi8KICAgICAgICAg ICAgIHByaW50ZigiJXM6IFR4IGNoYW5uZWwgc2VsZWN0aW9uIG1vZGUgZW5hYmxlIGF0dGVtcHRc biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl IDB4MWE6CS8qIE1DUjEgKi8KICAgICAgICAgcy0+bWNyWzBdID0gdmFsdWUgJiAweDAzZTE7CiAg ICAgICAgIGlmICh2YWx1ZSAmIDEpCQkJCQkvKiBSTUNNICovCiAgICAgICAgICAgICBwcmludGYo IiVzOiBSeCBjaGFubmVsIHNlbGVjdGlvbiBtb2RlIGVuYWJsZSBhdHRlbXB0XG4iLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19mdW5jX18pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSAweDFjOgkvKiBS Q0VSQSAqLwogICAgICAgICBzLT5yY2VyWzBdID0gdmFsdWUgJiAweGZmZmY7CkBAIC0zNDE4LDcg KzM0MTgsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX21jYnNwX3dyaXRldyh2b2lkICpvcGFxdWUsIGh3 YWRkciBhZGRyLAogICAgICAgICAgICAgaWYgKHMtPnR4X3JlcSA8IDQpCiAgICAgICAgICAgICAg ICAgb21hcF9tY2JzcF90eF9kb25lKHMpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHBy aW50ZigiJXM6IFR4IEZJRk8gb3ZlcnJ1blxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAg IHByaW50ZigiJXM6IFR4IEZJRk8gb3ZlcnJ1blxuIiwgX19mdW5jX18pOwogICAgICAgICByZXR1 cm47CiAgICAgfQogCkBAIC0zNTM2LDcgKzM1MzYsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2xwZ190 aWNrKHZvaWQgKm9wYXF1ZSkKICAgICAgICAgdGltZXJfbW9kKHMtPnRtLCBxZW11X2Nsb2NrX2dl dF9tcyhRRU1VX0NMT0NLX1ZJUlRVQUwpICsgcy0+b24pOwogCiAgICAgcy0+Y3ljbGUgPSAhcy0+ Y3ljbGU7Ci0gICAgcHJpbnRmKCIlczogTEVEIGlzICVzXG4iLCBfX0ZVTkNUSU9OX18sIHMtPmN5 Y2xlID8gIm9uIiA6ICJvZmYiKTsKKyAgICBwcmludGYoIiVzOiBMRUQgaXMgJXNcbiIsIF9fZnVu Y19fLCBzLT5jeWNsZSA/ICJvbiIgOiAib2ZmIik7CiB9CiAKIHN0YXRpYyB2b2lkIG9tYXBfbHBn X3VwZGF0ZShzdHJ1Y3Qgb21hcF9scGdfcyAqcykKQEAgLTM1NTcsOSArMzU1Nyw5IEBAIHN0YXRp YyB2b2lkIG9tYXBfbHBnX3VwZGF0ZShzdHJ1Y3Qgb21hcF9scGdfcyAqcykKIAogICAgIHRpbWVy X2RlbChzLT50bSk7CiAgICAgaWYgKG9uID09IHBlcmlvZCAmJiBzLT5vbiA8IHMtPnBlcmlvZCkK LSAgICAgICAgcHJpbnRmKCIlczogTEVEIGlzIG9uXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAg ICBwcmludGYoIiVzOiBMRUQgaXMgb25cbiIsIF9fZnVuY19fKTsKICAgICBlbHNlIGlmIChvbiA9 PSAwICYmIHMtPm9uKQotICAgICAgICBwcmludGYoIiVzOiBMRUQgaXMgb2ZmXG4iLCBfX0ZVTkNU SU9OX18pOworICAgICAgICBwcmludGYoIiVzOiBMRUQgaXMgb2ZmXG4iLCBfX2Z1bmNfXyk7CiAg ICAgZWxzZSBpZiAob24gJiYgKG9uICE9IHMtPm9uIHx8IHBlcmlvZCAhPSBzLT5wZXJpb2QpKSB7 CiAgICAgICAgIHMtPmN5Y2xlID0gMDsKICAgICAgICAgcy0+b24gPSBvbjsKZGlmZiAtLWdpdCBh L2h3L2FybS9vbWFwMi5jIGIvaHcvYXJtL29tYXAyLmMKaW5kZXggZjViMTQ4ODgxYy4uYjUzODc4 YjhiOSAxMDA2NDQKLS0tIGEvaHcvYXJtL29tYXAyLmMKKysrIGIvaHcvYXJtL29tYXAyLmMKQEAg LTEzMTIsNyArMTMxMiw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfcHJjbV9hcGxsX3VwZGF0ZShzdHJ1 Y3Qgb21hcF9wcmNtX3MgKnMpCiAKICAgICBpZiAobW9kZVswXSA9PSAxIHx8IG1vZGVbMF0gPT0g MiB8fCBtb2RlWzFdID09IDEgfHwgbW9kZVsxXSA9PSAyKQogICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIiVzOiBiYWQgRU5fNTRNX1BMTCBvciBiYWQgRU5fOTZNX1BMTFxuIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1 bmNfXyk7CiB9CiAKIHN0YXRpYyB2b2lkIG9tYXBfcHJjbV9kcGxsX3VwZGF0ZShzdHJ1Y3Qgb21h cF9wcmNtX3MgKnMpCkBAIC0xMzMxLDcgKzEzMzEsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX3ByY21f ZHBsbF91cGRhdGUoc3RydWN0IG9tYXBfcHJjbV9zICpzKQogICAgIHMtPmRwbGxfbG9jayA9IDA7 CiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAgY2FzZSAwOgotICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIiVzOiBiYWQgRU5fRFBMTFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgZnByaW50Zihz dGRlcnIsICIlczogYmFkIEVOX0RQTExcbiIsIF9fZnVuY19fKTsKICAgICAgICAgYnJlYWs7CiAg ICAgY2FzZSAxOgkvKiBMb3ctcG93ZXIgYnlwYXNzIG1vZGUgKERlZmF1bHQpICovCiAgICAgY2Fz ZSAyOgkvKiBGYXN0LXJlbG9jayBieXBhc3MgbW9kZSAqLwpAQCAtMTM1OCw3ICsxMzU4LDcgQEAg c3RhdGljIHZvaWQgb21hcF9wcmNtX2RwbGxfdXBkYXRlKHN0cnVjdCBvbWFwX3ByY21fcyAqcykK ICAgICAgICAgb21hcF9jbGtfcmVwYXJlbnQoY29yZSwgZHBsbF94Mik7CiAgICAgICAgIGJyZWFr OwogICAgIGNhc2UgMzoKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogYmFkIENPUkVfQ0xL X1NSQ1xuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogYmFk IENPUkVfQ0xLX1NSQ1xuIiwgX19mdW5jX18pOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBA IC0xNjI4LDcgKzE2MjgsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX3ByY21fd3JpdGUodm9pZCAqb3Bh cXVlLCBod2FkZHIgYWRkciwKICAgICBjYXNlIDB4NTAwOgkvKiBDTV9DTEtFTl9QTEwgKi8KICAg ICAgICAgaWYgKHZhbHVlICYgMHhmZmZmZmYzMCkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy LCAiJXM6IHdyaXRlIDBzIGluIENNX0NMS0VOX1BMTCBmb3IgIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJmdXR1cmUgY29tcGF0aWJpbGl0eVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiZnV0dXJlIGNvbXBhdGliaWxpdHlcbiIsIF9fZnVuY19f KTsKICAgICAgICAgaWYgKChzLT5jbGtlbls5XSBeIHZhbHVlKSAmIDB4Y2MpIHsKICAgICAgICAg ICAgIHMtPmNsa2VuWzldICY9IH4weGNjOwogICAgICAgICAgICAgcy0+Y2xrZW5bOV0gfD0gdmFs dWUgJiAweGNjOwpAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAgc3RhdGljIHZvaWQgb21hcF9wcmNtX3dy aXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgY2FzZSAweDU0MDoJLyogQ01fQ0xL U0VMMV9QTEwgKi8KICAgICAgICAgaWYgKHZhbHVlICYgMHhmYzQwMDBkNykKICAgICAgICAgICAg IGZwcmludGYoc3RkZXJyLCAiJXM6IHdyaXRlIDBzIGluIENNX0NMS1NFTDFfUExMIGZvciAiCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1dHVyZSBjb21wYXRpYmlsaXR5XG4iLCBfX0ZV TkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdXR1cmUgY29tcGF0aWJp bGl0eVxuIiwgX19mdW5jX18pOwogICAgICAgICBpZiAoKHMtPmNsa3NlbFs1XSBeIHZhbHVlKSAm IDB4MDAzZmZmMDApIHsKICAgICAgICAgICAgIHMtPmNsa3NlbFs1XSA9IHZhbHVlICYgMHgwM2Jm ZmYyODsKICAgICAgICAgICAgIG9tYXBfcHJjbV9kcGxsX3VwZGF0ZShzKTsKQEAgLTE2NTksNyAr MTY1OSw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfcHJjbV93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRk ciBhZGRyLAogICAgIGNhc2UgMHg1NDQ6CS8qIENNX0NMS1NFTDJfUExMICovCiAgICAgICAgIGlm ICh2YWx1ZSAmIH4zKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogd3JpdGUgMHMg aW4gQ01fQ0xLU0VMMl9QTExbMzE6Ml0gZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiZnV0dXJlIGNvbXBhdGliaWxpdHlcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImZ1dHVyZSBjb21wYXRpYmlsaXR5XG4iLCBfX2Z1bmNfXyk7CiAgICAg ICAgIGlmIChzLT5jbGtzZWxbNl0gIT0gKHZhbHVlICYgMykpIHsKICAgICAgICAgICAgIHMtPmNs a3NlbFs2XSA9IHZhbHVlICYgMzsKICAgICAgICAgICAgIG9tYXBfcHJjbV9kcGxsX3VwZGF0ZShz KTsKZGlmZiAtLWdpdCBhL2h3L2FybS9wYWxtLmMgYi9ody9hcm0vcGFsbS5jCmluZGV4IGExZjU1 ZDc5YjQuLjI4NWY0MzcwOWQgMTAwNjQ0Ci0tLSBhL2h3L2FybS9wYWxtLmMKKysrIGIvaHcvYXJt L3BhbG0uYwpAQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgdm9pZCBzdGF0aWNfd3JpdGUodm9pZCAq b3BhcXVlLCBod2FkZHIgb2Zmc2V0LCB1aW50NjRfdCB2YWx1ZSwKIHsKICNpZmRlZiBTUFkKICAg ICBwcmludGYoIiVzOiB2YWx1ZSAlMDhseCB3cml0dGVuIGF0ICIgUEFfRk1UICJcbiIsCi0gICAg ICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgdmFsdWUsIG9mZnNldCk7CisgICAgICAgICAg ICAgICAgICAgIF9fZnVuY19fLCB2YWx1ZSwgb2Zmc2V0KTsKICNlbmRpZgogfQogCkBAIC0xMjcs MTEgKzEyNywxMSBAQCBzdGF0aWMgdm9pZCBwYWxtdGVfb25vZmZfZ3Bpb3Modm9pZCAqb3BhcXVl LCBpbnQgbGluZSwgaW50IGxldmVsKQogICAgIHN3aXRjaCAobGluZSkgewogICAgIGNhc2UgMDoK ICAgICAgICAgcHJpbnRmKCIlczogY3VycmVudCB0byBNTUMvU0QgY2FyZCAlc2FibGVkLlxuIiwK LSAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgbGV2ZWwgPyAiZGlzIiA6ICJl biIpOworICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGxldmVsID8gImRpcyIgOiAi ZW4iKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAxOgogICAgICAgICBwcmludGYoIiVzOiBp bnRlcm5hbCBzcGVha2VyIGFtcGxpZmllciAlcy5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAg ICBfX0ZVTkNUSU9OX18sIGxldmVsID8gImRvd24iIDogIm9uIik7CisgICAgICAgICAgICAgICAg ICAgICAgICBfX2Z1bmNfXywgbGV2ZWwgPyAiZG93biIgOiAib24iKTsKICAgICAgICAgYnJlYWs7 CiAKICAgICAvKiBUaGVzZSBMQ0QgJiBBdWRpbyBvdXRwdXQgc2lnbmFscyBoYXZlIG5vdCBiZWVu IGlkZW50aWZpZWQgeWV0LiAgKi8KQEAgLTEzOSwxMiArMTM5LDEyIEBAIHN0YXRpYyB2b2lkIHBh bG10ZV9vbm9mZl9ncGlvcyh2b2lkICpvcGFxdWUsIGludCBsaW5lLCBpbnQgbGV2ZWwpCiAgICAg Y2FzZSAzOgogICAgIGNhc2UgNDoKICAgICAgICAgcHJpbnRmKCIlczogTENEIEdQSU8laSAlcy5c biIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGxpbmUgLSAxLCBsZXZl bCA/ICJoaWdoIiA6ICJsb3ciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBs aW5lIC0gMSwgbGV2ZWwgPyAiaGlnaCIgOiAibG93Iik7CiAgICAgICAgIGJyZWFrOwogICAgIGNh c2UgNToKICAgICBjYXNlIDY6CiAgICAgICAgIHByaW50ZigiJXM6IEF1ZGlvIEdQSU8laSAlcy5c biIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGxpbmUgLSA0LCBsZXZl bCA/ICJoaWdoIiA6ICJsb3ciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBs aW5lIC0gNCwgbGV2ZWwgPyAiaGlnaCIgOiAibG93Iik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K IH0KQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgdm9pZCBwYWxtdGVfaW5pdChNYWNoaW5lU3Rh dGUgKm1hY2hpbmUpCiAgICAgICAgIHJvbV9zaXplID0gZ2V0X2ltYWdlX3NpemUob3B0aW9uX3Jv bVswXS5uYW1lKTsKICAgICAgICAgaWYgKHJvbV9zaXplID4gZmxhc2hfc2l6ZSkgewogICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICIlczogUk9NIGltYWdlIHRvbyBiaWcgKCV4ID4gJXgpXG4i LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcm9tX3NpemUsIGZs YXNoX3NpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCByb21fc2l6 ZSwgZmxhc2hfc2l6ZSk7CiAgICAgICAgICAgICByb21fc2l6ZSA9IDA7CiAgICAgICAgIH0KICAg ICAgICAgaWYgKHJvbV9zaXplID4gMCkgewpAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0YXRpYyB2b2lk IHBhbG10ZV9pbml0KE1hY2hpbmVTdGF0ZSAqbWFjaGluZSkKICAgICAgICAgfQogICAgICAgICBp ZiAocm9tX3NpemUgPCAwKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBlcnJv ciBsb2FkaW5nICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElP Tl9fLCBvcHRpb25fcm9tWzBdLm5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCBvcHRpb25fcm9tWzBdLm5hbWUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1n aXQgYS9ody9hcm0vcHhhMnh4LmMgYi9ody9hcm0vcHhhMnh4LmMKaW5kZXggY2YwNzIzNDU3OC4u MDc4MDA2ZjM5MCAxMDA2NDQKLS0tIGEvaHcvYXJtL3B4YTJ4eC5jCisrKyBiL2h3L2FybS9weGEy eHguYwpAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB1aW50NjRfdCBweGEyeHhfcG1fcmVhZCh2 b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICByZXR1cm4gcy0+cG1fcmVnc1thZGRy ID4+IDJdOwogICAgIGRlZmF1bHQ6CiAgICAgZmFpbDoKLSAgICAgICAgcHJpbnRmKCIlczogQmFk IHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNUSU9OX18sIGFkZHIpOworICAgICAgICBw cmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBhZGRyKTsK ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMTM5LDcgKzEzOSw3IEBA IHN0YXRpYyB2b2lkIHB4YTJ4eF9wbV93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAog ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBwcmludGYoIiVzOiBCYWQg cmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgYWRkcik7CisgICAgICAgIHBy aW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19mdW5jX18sIGFkZHIpOwog ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0xODAsNyArMTgwLDcgQEAgc3RhdGljIHVpbnQ2 NF90IHB4YTJ4eF9jbV9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIHJl dHVybiBzLT5jbV9yZWdzW0NDQ1IgPj4gMl0gfCAoMyA8PCAyOCk7CiAKICAgICBkZWZhdWx0Ogot ICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJ T05fXywgYWRkcik7CisgICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQg IlxuIiwgX19mdW5jX18sIGFkZHIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJu IDA7CkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X2NtX3dyaXRlKHZvaWQg Km9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKLSAg ICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNUSU9O X18sIGFkZHIpOworICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJc biIsIF9fZnVuY19fLCBhZGRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtNDEwLDcg KzQxMCw3IEBAIHN0YXRpYyB1aW50NjRfdCBweGEyeHhfbW1fcmVhZCh2b2lkICpvcGFxdWUsIGh3 YWRkciBhZGRyLAogICAgICAgICAgICAgcmV0dXJuIHMtPm1tX3JlZ3NbYWRkciA+PiAyXTsKIAog ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQg IlxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lz dGVyICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAg IH0KICAgICByZXR1cm4gMDsKQEAgLTQyOSw3ICs0MjksNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhf bW1fd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgfQogCiAgICAgZGVm YXVsdDoKLSAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBf X0ZVTkNUSU9OX18sIGFkZHIpOworICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBS RUdfRk1UICJcbiIsIF9fZnVuY19fLCBhZGRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpA QCAtNjE5LDcgKzYxOSw3IEBAIHN0YXRpYyB1aW50NjRfdCBweGEyeHhfc3NwX3JlYWQodm9pZCAq b3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgaWYgKCFzLT5lbmFibGUpCiAgICAgICAgICAg ICByZXR1cm4gMHhmZmZmZmZmZjsKICAgICAgICAgaWYgKHMtPnJ4X2xldmVsIDwgMSkgewotICAg ICAgICAgICAgcHJpbnRmKCIlczogU1NQIFJ4IFVuZGVycnVuXG4iLCBfX0ZVTkNUSU9OX18pOwor ICAgICAgICAgICAgcHJpbnRmKCIlczogU1NQIFJ4IFVuZGVycnVuXG4iLCBfX2Z1bmNfXyk7CiAg ICAgICAgICAgICByZXR1cm4gMHhmZmZmZmZmZjsKICAgICAgICAgfQogICAgICAgICBzLT5yeF9s ZXZlbCAtLTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBzdGF0aWMgdWludDY0X3QgcHhhMnh4X3NzcF9y ZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgY2FzZSBTU0FDRDoKICAgICAgICAg cmV0dXJuIHMtPnNzYWNkOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCBy ZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJp bnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAg ICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTY1Myw5ICs2NTMsOSBAQCBz dGF0aWMgdm9pZCBweGEyeHhfc3NwX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAg ICAgICAgIHMtPnNzY3JbMF0gPSB2YWx1ZSAmIDB4YzdmZmZmZmY7CiAgICAgICAgIHMtPmVuYWJs ZSA9IHZhbHVlICYgU1NDUjBfU1NFOwogICAgICAgICBpZiAodmFsdWUgJiBTU0NSMF9NT0QpCi0g ICAgICAgICAgICBwcmludGYoIiVzOiBBdHRlbXB0IHRvIHVzZSBuZXR3b3JrIG1vZGVcbiIsIF9f RlVOQ1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYoIiVzOiBBdHRlbXB0IHRvIHVzZSBuZXR3 b3JrIG1vZGVcbiIsIF9fZnVuY19fKTsKICAgICAgICAgaWYgKHMtPmVuYWJsZSAmJiBTU0NSMF9E U1ModmFsdWUpIDwgNCkKLSAgICAgICAgICAgIHByaW50ZigiJXM6IFdyb25nIGRhdGEgc2l6ZTog JWkgYml0c1xuIiwgX19GVU5DVElPTl9fLAorICAgICAgICAgICAgcHJpbnRmKCIlczogV3Jvbmcg ZGF0YSBzaXplOiAlaSBiaXRzXG4iLCBfX2Z1bmNfXywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTU0NSMF9EU1ModmFsdWUpKTsKICAgICAgICAgaWYgKCEodmFsdWUgJiBTU0NSMF9TU0Up KSB7CiAgICAgICAgICAgICBzLT5zc3NyID0gMDsKQEAgLTY2OCw3ICs2NjgsNyBAQCBzdGF0aWMg dm9pZCBweGEyeHhfc3NwX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgY2Fz ZSBTU0NSMToKICAgICAgICAgcy0+c3NjclsxXSA9IHZhbHVlOwogICAgICAgICBpZiAodmFsdWUg JiAoU1NDUjFfTEJNIHwgU1NDUjFfRUZXUikpCi0gICAgICAgICAgICBwcmludGYoIiVzOiBBdHRl bXB0IHRvIHVzZSBTU1AgdGVzdCBtb2RlXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAg cHJpbnRmKCIlczogQXR0ZW1wdCB0byB1c2UgU1NQIHRlc3QgbW9kZVxuIiwgX19mdW5jX18pOwog ICAgICAgICBweGEyeHhfc3NwX2ZpZm9fdXBkYXRlKHMpOwogICAgICAgICBicmVhazsKIApAQCAt NzI4LDcgKzcyOCw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9zc3Bfd3JpdGUodm9pZCAqb3BhcXVl LCBod2FkZHIgYWRkciwKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBw cmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgYWRk cik7CisgICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19m dW5jX18sIGFkZHIpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC05OTAsNyArOTkwLDcg QEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9ydGNfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBh ZGRyLAogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gcy0+bGFzdF9zd2NyOwogICAg IGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxu IiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVy ICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K ICAgICByZXR1cm4gMDsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9y dGNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgYnJlYWs7CiAKICAg ICBkZWZhdWx0OgotICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJc biIsIF9fRlVOQ1RJT05fXywgYWRkcik7CisgICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3Rl ciAiIFJFR19GTVQgIlxuIiwgX19mdW5jX18sIGFkZHIpOwogICAgIH0KIH0KIApAQCAtMTM0Miw3 ICsxMzQyLDcgQEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9pMmNfcmVhZCh2b2lkICpvcGFxdWUs IGh3YWRkciBhZGRyLAogICAgICAgICAgICAgcy0+aWJtciA9IDA7CiAgICAgICAgIHJldHVybiBz LT5pYm1yOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAi IFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJpbnRmKCIlczog QmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAgICAgICAgIGJy ZWFrOwogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTE0MTUsNyArMTQxNSw3IEBAIHN0YXRpYyB2 b2lkIHB4YTJ4eF9pMmNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAg YnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIg IiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgYWRkcik7CisgICAgICAgIHByaW50ZigiJXM6 IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19mdW5jX18sIGFkZHIpOwogICAgIH0KIH0K IApAQCAtMTYxNiw3ICsxNjE2LDcgQEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9pMnNfcmVhZCh2 b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwog ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQg IlxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lz dGVyICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAg IH0KICAgICByZXR1cm4gMDsKQEAgLTE2MzksMTQgKzE2MzksMTQgQEAgc3RhdGljIHZvaWQgcHhh Mnh4X2kyc193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICAgICAgcy0+ c3RhdHVzICY9IH4oMSA8PCA3KTsJCQkvKiBJMlNPRkYgKi8KICAgICAgICAgfQogICAgICAgICBp ZiAodmFsdWUgJiAoMSA8PCA0KSkJCQkJLyogRUZXUiAqLwotICAgICAgICAgICAgcHJpbnRmKCIl czogQXR0ZW1wdCB0byB1c2Ugc3BlY2lhbCBmdW5jdGlvblxuIiwgX19GVU5DVElPTl9fKTsKKyAg ICAgICAgICAgIHByaW50ZigiJXM6IEF0dGVtcHQgdG8gdXNlIHNwZWNpYWwgZnVuY3Rpb25cbiIs IF9fZnVuY19fKTsKICAgICAgICAgcy0+ZW5hYmxlID0gKHZhbHVlICYgOSkgPT0gMTsJCQkvKiBF TkIgJiYgIVJTVCovCiAgICAgICAgIHB4YTJ4eF9pMnNfdXBkYXRlKHMpOwogICAgICAgICBicmVh azsKICAgICBjYXNlIFNBQ1IxOgogICAgICAgICBzLT5jb250cm9sWzFdID0gdmFsdWUgJiAweDAw Mzk7CiAgICAgICAgIGlmICh2YWx1ZSAmICgxIDw8IDUpKQkJCQkvKiBFTkxCRiAqLwotICAgICAg ICAgICAgcHJpbnRmKCIlczogQXR0ZW1wdCB0byB1c2UgbG9vcGJhY2sgZnVuY3Rpb25cbiIsIF9f RlVOQ1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYoIiVzOiBBdHRlbXB0IHRvIHVzZSBsb29w YmFjayBmdW5jdGlvblxuIiwgX19mdW5jX18pOwogICAgICAgICBpZiAodmFsdWUgJiAoMSA8PCA0 KSkJCQkJLyogRFBSTCAqLwogICAgICAgICAgICAgcy0+Zmlmb19sZW4gPSAwOwogICAgICAgICBw eGEyeHhfaTJzX3VwZGF0ZShzKTsKQEAgLTE2NzMsNyArMTY3Myw3IEBAIHN0YXRpYyB2b2lkIHB4 YTJ4eF9pMnNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgfQogICAg ICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0 ZXIgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgYWRkcik7CisgICAgICAgIHByaW50Zigi JXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19mdW5jX18sIGFkZHIpOwogICAgIH0K IH0KIApAQCAtMTg0OSw3ICsxODQ5LDcgQEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9maXJfcmVh ZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICAgICAgcHhhMnh4X2Zpcl91cGRh dGUocyk7CiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICB9Ci0gICAgICAgIHByaW50 ZigiJXM6IFJ4IEZJRk8gdW5kZXJydW4uXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBwcmlu dGYoIiVzOiBSeCBGSUZPIHVuZGVycnVuLlxuIiwgX19mdW5jX18pOwogICAgICAgICBicmVhazsK ICAgICBjYXNlIElDU1IwOgogICAgICAgICByZXR1cm4gcy0+c3RhdHVzWzBdOwpAQCAtMTg1OCw3 ICsxODU4LDcgQEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9maXJfcmVhZCh2b2lkICpvcGFxdWUs IGh3YWRkciBhZGRyLAogICAgIGNhc2UgSUNGT1I6CiAgICAgICAgIHJldHVybiBzLT5yeF9sZW47 CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZN VCAiXG4iLCBfX0ZVTkNUSU9OX18sIGFkZHIpOworICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVn aXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBhZGRyKTsKICAgICAgICAgYnJlYWs7CiAg ICAgfQogICAgIHJldHVybiAwOwpAQCAtMTkxMCw3ICsxOTEwLDcgQEAgc3RhdGljIHZvaWQgcHhh Mnh4X2Zpcl93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgIGNhc2UgSUNGT1I6 CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCBy ZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJp bnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAg ICAgfQogfQogCmRpZmYgLS1naXQgYS9ody9hcm0vcHhhMnh4X2dwaW8uYyBiL2h3L2FybS9weGEy eHhfZ3Bpby5jCmluZGV4IDUyMWRiYWQwMzkuLmUxNTA3MDE4OGUgMTAwNjQ0Ci0tLSBhL2h3L2Fy bS9weGEyeHhfZ3Bpby5jCisrKyBiL2h3L2FybS9weGEyeHhfZ3Bpby5jCkBAIC0xMDcsNyArMTA3 LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X2dwaW9fc2V0KHZvaWQgKm9wYXF1ZSwgaW50IGxpbmUs IGludCBsZXZlbCkKICAgICB1aW50MzJfdCBtYXNrOwogCiAgICAgaWYgKGxpbmUgPj0gcy0+bGlu ZXMpIHsKLSAgICAgICAgcHJpbnRmKCIlczogTm8gR1BJTyBwaW4gJWlcbiIsIF9fRlVOQ1RJT05f XywgbGluZSk7CisgICAgICAgIHByaW50ZigiJXM6IE5vIEdQSU8gcGluICVpXG4iLCBfX2Z1bmNf XywgbGluZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCBz dGF0aWMgdWludDY0X3QgcHhhMnh4X2dwaW9fcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBvZmZz ZXQsCiAgICAgICAgIHJldHVybiBzLT5zdGF0dXNbYmFua107CiAKICAgICBkZWZhdWx0OgotICAg ICAgICBod19lcnJvcigiJXM6IEJhZCBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05f Xywgb2Zmc2V0KTsKKyAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAi XG4iLCBfX2Z1bmNfXywgb2Zmc2V0KTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTI0OCw3 ICsyNDgsNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhfZ3Bpb193cml0ZSh2b2lkICpvcGFxdWUsIGh3 YWRkciBvZmZzZXQsCiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgaHdf ZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNUSU9OX18sIG9mZnNl dCk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNldCAiIFJFR19GTVQgIlxuIiwgX19m dW5jX18sIG9mZnNldCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9ody9hcm0vcHhhMnh4X3Bp Yy5jIGIvaHcvYXJtL3B4YTJ4eF9waWMuYwppbmRleCBiNTE2Y2VkOGMwLi42MTI3NWZhMDQwIDEw MDY0NAotLS0gYS9ody9hcm0vcHhhMnh4X3BpYy5jCisrKyBiL2h3L2FybS9weGEyeHhfcGljLmMK QEAgLTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgdWludDY0X3QgcHhhMnh4X3BpY19tZW1fcmVhZCh2 b2lkICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsCiAgICAgY2FzZSBJQ0hQOgkvKiBIaWdoZXN0IFBy aW9yaXR5IHJlZ2lzdGVyICovCiAgICAgICAgIHJldHVybiBweGEyeHhfcGljX2hpZ2hlc3Qocyk7 CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyIG9mZnNldCAi IFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBvZmZzZXQpOworICAgICAgICBwcmludGYoIiVz OiBCYWQgcmVnaXN0ZXIgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgb2Zmc2V0KTsK ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHN0YXRpYyB2 b2lkIHB4YTJ4eF9waWNfbWVtX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKICAg ICAgICAgcy0+cHJpb3JpdHlbMzIgKyAoKG9mZnNldCAtIElQUjMyKSA+PiAyKV0gPSB2YWx1ZSAm IDB4ODAwMDAwM2Y7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50 ZigiJXM6IEJhZCByZWdpc3RlciBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywg b2Zmc2V0KTsKKyAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyIG9mZnNldCAiIFJFR19G TVQgIlxuIiwgX19mdW5jX18sIG9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg cHhhMnh4X3BpY191cGRhdGUob3BhcXVlKTsKZGlmZiAtLWdpdCBhL2h3L2FybS90b3NhLmMgYi9o dy9hcm0vdG9zYS5jCmluZGV4IDA0NDc5NjM1MGEuLmE1NWIxYTM2OWMgMTAwNjQ0Ci0tLSBhL2h3 L2FybS90b3NhLmMKKysrIGIvaHcvYXJtL3Rvc2EuYwpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRp YyBpbnQgdG9zYV9kYWNfc2VuZChJMkNTbGF2ZSAqaTJjLCB1aW50OF90IGRhdGEpCiAgICAgcy0+ YnVmW3MtPmxlbl0gPSBkYXRhOwogICAgIGlmIChzLT5sZW4gKysgPiAyKSB7CiAjaWZkZWYgVkVS Qk9TRQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBtZXNzYWdlIHRvbyBsb25nICglaSBi eXRlcylcbiIsIF9fRlVOQ1RJT05fXywgcy0+bGVuKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs ICIlczogbWVzc2FnZSB0b28gbG9uZyAoJWkgYnl0ZXMpXG4iLCBfX2Z1bmNfXywgcy0+bGVuKTsK ICNlbmRpZgogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xODEsMTQgKzE4MSwxNCBAQCBz dGF0aWMgaW50IHRvc2FfZGFjX2V2ZW50KEkyQ1NsYXZlICppMmMsIGVudW0gaTJjX2V2ZW50IGV2 ZW50KQogICAgIGNhc2UgSTJDX1NUQVJUX1NFTkQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug STJDX1NUQVJUX1JFQ1Y6Ci0gICAgICAgIHByaW50ZigiJXM6IHJlY3Ygbm90IHN1cHBvcnRlZCEh IVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgcHJpbnRmKCIlczogcmVjdiBub3Qgc3VwcG9y dGVkISEhXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSTJDX0ZJTklT SDoKICNpZmRlZiBWRVJCT1NFCiAgICAgICAgIGlmIChzLT5sZW4gPCAyKQotICAgICAgICAgICAg cHJpbnRmKCIlczogbWVzc2FnZSB0b28gc2hvcnQgKCVpIGJ5dGVzKVxuIiwgX19GVU5DVElPTl9f LCBzLT5sZW4pOworICAgICAgICAgICAgcHJpbnRmKCIlczogbWVzc2FnZSB0b28gc2hvcnQgKCVp IGJ5dGVzKVxuIiwgX19mdW5jX18sIHMtPmxlbik7CiAgICAgICAgIGlmIChzLT5sZW4gPiAyKQot ICAgICAgICAgICAgcHJpbnRmKCIlczogbWVzc2FnZSB0b28gbG9uZ1xuIiwgX19GVU5DVElPTl9f KTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6IG1lc3NhZ2UgdG9vIGxvbmdcbiIsIF9fZnVuY19f KTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMjAwLDcgKzIwMCw3 IEBAIHN0YXRpYyBpbnQgdG9zYV9kYWNfZXZlbnQoSTJDU2xhdmUgKmkyYywgZW51bSBpMmNfZXZl bnQgZXZlbnQpCiAKIHN0YXRpYyBpbnQgdG9zYV9kYWNfcmVjdihJMkNTbGF2ZSAqcykKIHsKLSAg ICBwcmludGYoIiVzOiByZWN2IG5vdCBzdXBwb3J0ZWQhISFcbiIsIF9fRlVOQ1RJT05fXyk7Cisg ICAgcHJpbnRmKCIlczogcmVjdiBub3Qgc3VwcG9ydGVkISEhXG4iLCBfX2Z1bmNfXyk7CiAgICAg cmV0dXJuIC0xOwogfQogCmRpZmYgLS1naXQgYS9ody9hdWRpby9oZGEtY29kZWMuYyBiL2h3L2F1 ZGlvL2hkYS1jb2RlYy5jCmluZGV4IDU0MDJjZDE5NmMuLmU4YWE3ODQyZTYgMTAwNjQ0Ci0tLSBh L2h3L2F1ZGlvL2hkYS1jb2RlYy5jCisrKyBiL2h3L2F1ZGlvL2hkYS1jb2RlYy5jCkBAIC0zMTYs NyArMzE2LDcgQEAgc3RhdGljIHZvaWQgaGRhX2F1ZGlvX2NvbW1hbmQoSERBQ29kZWNEZXZpY2Ug KmhkYSwgdWludDMyX3QgbmlkLCB1aW50MzJfdCBkYXRhKQogICAgICAgICBnb3RvIGZhaWw7CiAg ICAgfQogICAgIGRwcmludChhLCAyLCAiJXM6IG5pZCAlZCAoJXMpLCB2ZXJiIDB4JXgsIHBheWxv YWQgMHgleFxuIiwKLSAgICAgICAgICAgX19GVU5DVElPTl9fLCBuaWQsIG5vZGUtPm5hbWUsIHZl cmIsIHBheWxvYWQpOworICAgICAgICAgICBfX2Z1bmNfXywgbmlkLCBub2RlLT5uYW1lLCB2ZXJi LCBwYXlsb2FkKTsKIAogICAgIHN3aXRjaCAodmVyYikgewogICAgIC8qIGFsbCBub2RlcyAqLwpA QCAtNDQ5LDcgKzQ0OSw3IEBAIHN0YXRpYyB2b2lkIGhkYV9hdWRpb19jb21tYW5kKEhEQUNvZGVj RGV2aWNlICpoZGEsIHVpbnQzMl90IG5pZCwgdWludDMyX3QgZGF0YSkKIAogZmFpbDoKICAgICBk cHJpbnQoYSwgMSwgIiVzOiBub3QgaGFuZGxlZDogbmlkICVkICglcyksIHZlcmIgMHgleCwgcGF5 bG9hZCAweCV4XG4iLAotICAgICAgICAgICBfX0ZVTkNUSU9OX18sIG5pZCwgbm9kZSA/IG5vZGUt Pm5hbWUgOiAiPyIsIHZlcmIsIHBheWxvYWQpOworICAgICAgICAgICBfX2Z1bmNfXywgbmlkLCBu b2RlID8gbm9kZS0+bmFtZSA6ICI/IiwgdmVyYiwgcGF5bG9hZCk7CiAgICAgaGRhX2NvZGVjX3Jl c3BvbnNlKGhkYSwgdHJ1ZSwgMCk7CiB9CiAKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0aWMgaW50 IGhkYV9hdWRpb19pbml0KEhEQUNvZGVjRGV2aWNlICpoZGEsIGNvbnN0IHN0cnVjdCBkZXNjX2Nv ZGVjICpkZXNjKQogCiAgICAgYS0+ZGVzYyA9IGRlc2M7CiAgICAgYS0+bmFtZSA9IG9iamVjdF9n ZXRfdHlwZW5hbWUoT0JKRUNUKGEpKTsKLSAgICBkcHJpbnQoYSwgMSwgIiVzOiBjYWQgJWRcbiIs IF9fRlVOQ1RJT05fXywgYS0+aGRhLmNhZCk7CisgICAgZHByaW50KGEsIDEsICIlczogY2FkICVk XG4iLCBfX2Z1bmNfXywgYS0+aGRhLmNhZCk7CiAKICAgICBBVURfcmVnaXN0ZXJfY2FyZCgiaGRh IiwgJmEtPmNhcmQpOwogICAgIGZvciAoaSA9IDA7IGkgPCBhLT5kZXNjLT5ubm9kZXM7IGkrKykg ewpAQCAtNTI2LDcgKzUyNiw3IEBAIHN0YXRpYyB2b2lkIGhkYV9hdWRpb19leGl0KEhEQUNvZGVj RGV2aWNlICpoZGEpCiAgICAgSERBQXVkaW9TdHJlYW0gKnN0OwogICAgIGludCBpOwogCi0gICAg ZHByaW50KGEsIDEsICIlc1xuIiwgX19GVU5DVElPTl9fKTsKKyAgICBkcHJpbnQoYSwgMSwgIiVz XG4iLCBfX2Z1bmNfXyk7CiAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYS0+c3QpOyBp KyspIHsKICAgICAgICAgc3QgPSBhLT5zdCArIGk7CiAgICAgICAgIGlmIChzdC0+bm9kZSA9PSBO VUxMKSB7CkBAIC01NDcsNyArNTQ3LDcgQEAgc3RhdGljIGludCBoZGFfYXVkaW9fcG9zdF9sb2Fk KHZvaWQgKm9wYXF1ZSwgaW50IHZlcnNpb24pCiAgICAgSERBQXVkaW9TdHJlYW0gKnN0OwogICAg IGludCBpOwogCi0gICAgZHByaW50KGEsIDEsICIlc1xuIiwgX19GVU5DVElPTl9fKTsKKyAgICBk cHJpbnQoYSwgMSwgIiVzXG4iLCBfX2Z1bmNfXyk7CiAgICAgaWYgKHZlcnNpb24gPT0gMSkgewog ICAgICAgICAvKiBhc3N1bWUgcnVubmluZ19jb21wYXRbXSBpcyBmb3Igb3V0cHV0IHN0cmVhbXMg Ki8KICAgICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYS0+cnVubmluZ19jb21wYXQp OyBpKyspCmRpZmYgLS1naXQgYS9ody9hdWRpby9pbnRlbC1oZGEuYyBiL2h3L2F1ZGlvL2ludGVs LWhkYS5jCmluZGV4IDE4YTUwYThmODMuLmVkNTExNzdiMTUgMTAwNjQ0Ci0tLSBhL2h3L2F1ZGlv L2ludGVsLWhkYS5jCisrKyBiL2h3L2F1ZGlvL2ludGVsLWhkYS5jCkBAIC0yNjUsNyArMjY1LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfaGRhX3VwZGF0ZV9pcnEoSW50ZWxIREFTdGF0ZSAqZCkKICAg ICB9IGVsc2UgewogICAgICAgICBsZXZlbCA9IDA7CiAgICAgfQotICAgIGRwcmludChkLCAyLCAi JXM6IGxldmVsICVkIFslc11cbiIsIF9fRlVOQ1RJT05fXywKKyAgICBkcHJpbnQoZCwgMiwgIiVz OiBsZXZlbCAlZCBbJXNdXG4iLCBfX2Z1bmNfXywKICAgICAgICAgICAgbGV2ZWwsIG1zaSA/ICJt c2kiIDogImludHgiKTsKICAgICBpZiAobXNpKSB7CiAgICAgICAgIGlmIChsZXZlbCkgewpAQCAt Mjg1LDcgKzI4NSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRhX3NlbmRfY29tbWFuZChJbnRlbEhE QVN0YXRlICpkLCB1aW50MzJfdCB2ZXJiKQogICAgIGNhZCA9ICh2ZXJiID4+IDI4KSAmIDB4MGY7 CiAgICAgaWYgKHZlcmIgJiAoMSA8PCAyNykpIHsKICAgICAgICAgLyogaW5kaXJlY3Qgbm9kZSBh ZGRyZXNzaW5nLCBub3Qgc3BlY2lmaWVkIGluIEhEQSAxLjAgKi8KLSAgICAgICAgZHByaW50KGQs IDEsICIlczogaW5kaXJlY3Qgbm9kZSBhZGRyZXNzaW5nIChndWVzdCBidWc/KVxuIiwgX19GVU5D VElPTl9fKTsKKyAgICAgICAgZHByaW50KGQsIDEsICIlczogaW5kaXJlY3Qgbm9kZSBhZGRyZXNz aW5nIChndWVzdCBidWc/KVxuIiwgX19mdW5jX18pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAg fQogICAgIG5pZCA9ICh2ZXJiID4+IDIwKSAmIDB4N2Y7CkBAIC0yOTMsNyArMjkzLDcgQEAgc3Rh dGljIGludCBpbnRlbF9oZGFfc2VuZF9jb21tYW5kKEludGVsSERBU3RhdGUgKmQsIHVpbnQzMl90 IHZlcmIpCiAKICAgICBjb2RlYyA9IGhkYV9jb2RlY19maW5kKCZkLT5jb2RlY3MsIGNhZCk7CiAg ICAgaWYgKGNvZGVjID09IE5VTEwpIHsKLSAgICAgICAgZHByaW50KGQsIDEsICIlczogYWRkcmVz c2VkIG5vbi1leGlzdGluZyBjb2RlY1xuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgZHByaW50 KGQsIDEsICIlczogYWRkcmVzc2VkIG5vbi1leGlzdGluZyBjb2RlY1xuIiwgX19mdW5jX18pOwog ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGNkYyA9IEhEQV9DT0RFQ19ERVZJQ0VfR0VU X0NMQVNTKGNvZGVjKTsKQEAgLTMwNywyMiArMzA3LDIyIEBAIHN0YXRpYyB2b2lkIGludGVsX2hk YV9jb3JiX3J1bihJbnRlbEhEQVN0YXRlICpkKQogICAgIHVpbnQzMl90IHJwLCB2ZXJiOwogCiAg ICAgaWYgKGQtPmljcyAmIElDSDZfSVJTX0JVU1kpIHsKLSAgICAgICAgZHByaW50KGQsIDIsICIl czogW2ljd10gdmVyYiAweCUwOHhcbiIsIF9fRlVOQ1RJT05fXywgZC0+aWN3KTsKKyAgICAgICAg ZHByaW50KGQsIDIsICIlczogW2ljd10gdmVyYiAweCUwOHhcbiIsIF9fZnVuY19fLCBkLT5pY3cp OwogICAgICAgICBpbnRlbF9oZGFfc2VuZF9jb21tYW5kKGQsIGQtPmljdyk7CiAgICAgICAgIHJl dHVybjsKICAgICB9CiAKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGlmICghKGQtPmNvcmJfY3Rs ICYgSUNINl9DT1JCQ1RMX1JVTikpIHsKLSAgICAgICAgICAgIGRwcmludChkLCAyLCAiJXM6ICFy dW5cbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBkcHJpbnQoZCwgMiwgIiVzOiAhcnVu XG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg aWYgKChkLT5jb3JiX3JwICYgMHhmZikgPT0gZC0+Y29yYl93cCkgewotICAgICAgICAgICAgZHBy aW50KGQsIDIsICIlczogY29yYiByaW5nIGVtcHR5XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAg ICAgICAgZHByaW50KGQsIDIsICIlczogY29yYiByaW5nIGVtcHR5XG4iLCBfX2Z1bmNfXyk7CiAg ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGQtPnJpcmJfY291bnQg PT0gZC0+cmlyYl9jbnQpIHsKLSAgICAgICAgICAgIGRwcmludChkLCAyLCAiJXM6IHJpcmIgY291 bnQgcmVhY2hlZFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIGRwcmludChkLCAyLCAi JXM6IHJpcmIgY291bnQgcmVhY2hlZFxuIiwgX19mdW5jX18pOwogICAgICAgICAgICAgcmV0dXJu OwogICAgICAgICB9CiAKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZGFf Y29yYl9ydW4oSW50ZWxIREFTdGF0ZSAqZCkKICAgICAgICAgdmVyYiA9IGxkbF9sZV9wY2lfZG1h KCZkLT5wY2ksIGFkZHIgKyA0KnJwKTsKICAgICAgICAgZC0+Y29yYl9ycCA9IHJwOwogCi0gICAg ICAgIGRwcmludChkLCAyLCAiJXM6IFtycCAweCV4XSB2ZXJiIDB4JTA4eFxuIiwgX19GVU5DVElP Tl9fLCBycCwgdmVyYik7CisgICAgICAgIGRwcmludChkLCAyLCAiJXM6IFtycCAweCV4XSB2ZXJi IDB4JTA4eFxuIiwgX19mdW5jX18sIHJwLCB2ZXJiKTsKICAgICAgICAgaW50ZWxfaGRhX3NlbmRf Y29tbWFuZChkLCB2ZXJiKTsKICAgICB9CiB9CkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfaGRhX3Jlc3BvbnNlKEhEQUNvZGVjRGV2aWNlICpkZXYsIGJvb2wgc29saWNpdGVk LCB1aW50MzJfdCByZXMKIAogICAgIGlmIChkLT5pY3MgJiBJQ0g2X0lSU19CVVNZKSB7CiAgICAg ICAgIGRwcmludChkLCAyLCAiJXM6IFtpcnJdIHJlc3BvbnNlIDB4JXgsIGNhZCAweCV4XG4iLAot ICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCByZXNwb25zZSwgZGV2LT5jYWQpOworICAgICAg ICAgICAgICAgX19mdW5jX18sIHJlc3BvbnNlLCBkZXYtPmNhZCk7CiAgICAgICAgIGQtPmlyciA9 IHJlc3BvbnNlOwogICAgICAgICBkLT5pY3MgJj0gfihJQ0g2X0lSU19CVVNZIHwgMHhmMCk7CiAg ICAgICAgIGQtPmljcyB8PSAoSUNINl9JUlNfVkFMSUQgfCAoZGV2LT5jYWQgPDwgNCkpOwpAQCAt MzUzLDcgKzM1Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2hkYV9yZXNwb25zZShIREFDb2RlY0Rl dmljZSAqZGV2LCBib29sIHNvbGljaXRlZCwgdWludDMyX3QgcmVzCiAgICAgfQogCiAgICAgaWYg KCEoZC0+cmlyYl9jdGwgJiBJQ0g2X1JCQ1RMX0RNQV9FTikpIHsKLSAgICAgICAgZHByaW50KGQs IDEsICIlczogcmlyYiBkbWEgZGlzYWJsZWQsIGRyb3AgY29kZWMgcmVzcG9uc2VcbiIsIF9fRlVO Q1RJT05fXyk7CisgICAgICAgIGRwcmludChkLCAxLCAiJXM6IHJpcmIgZG1hIGRpc2FibGVkLCBk cm9wIGNvZGVjIHJlc3BvbnNlXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybjsKICAgICB9 CiAKQEAgLTM2NSwxNyArMzY1LDE3IEBAIHN0YXRpYyB2b2lkIGludGVsX2hkYV9yZXNwb25zZShI REFDb2RlY0RldmljZSAqZGV2LCBib29sIHNvbGljaXRlZCwgdWludDMyX3QgcmVzCiAgICAgZC0+ cmlyYl93cCA9IHdwOwogCiAgICAgZHByaW50KGQsIDIsICIlczogW3dwIDB4JXhdIHJlc3BvbnNl IDB4JXgsIGV4dHJhIDB4JXhcbiIsCi0gICAgICAgICAgIF9fRlVOQ1RJT05fXywgd3AsIHJlc3Bv bnNlLCBleCk7CisgICAgICAgICAgIF9fZnVuY19fLCB3cCwgcmVzcG9uc2UsIGV4KTsKIAogICAg IGQtPnJpcmJfY291bnQrKzsKICAgICBpZiAoZC0+cmlyYl9jb3VudCA9PSBkLT5yaXJiX2NudCkg ewotICAgICAgICBkcHJpbnQoZCwgMiwgIiVzOiByaXJiIGNvdW50IHJlYWNoZWQgKCVkKVxuIiwg X19GVU5DVElPTl9fLCBkLT5yaXJiX2NvdW50KTsKKyAgICAgICAgZHByaW50KGQsIDIsICIlczog cmlyYiBjb3VudCByZWFjaGVkICglZClcbiIsIF9fZnVuY19fLCBkLT5yaXJiX2NvdW50KTsKICAg ICAgICAgaWYgKGQtPnJpcmJfY3RsICYgSUNINl9SQkNUTF9JUlFfRU4pIHsKICAgICAgICAgICAg IGQtPnJpcmJfc3RzIHw9IElDSDZfUkJTVFNfSVJROwogICAgICAgICAgICAgaW50ZWxfaGRhX3Vw ZGF0ZV9pcnEoZCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKChkLT5jb3JiX3JwICYgMHhm ZikgPT0gZC0+Y29yYl93cCkgewotICAgICAgICBkcHJpbnQoZCwgMiwgIiVzOiBjb3JiIHJpbmcg ZW1wdHkgKCVkLyVkKVxuIiwgX19GVU5DVElPTl9fLAorICAgICAgICBkcHJpbnQoZCwgMiwgIiVz OiBjb3JiIHJpbmcgZW1wdHkgKCVkLyVkKVxuIiwgX19mdW5jX18sCiAgICAgICAgICAgICAgICBk LT5yaXJiX2NvdW50LCBkLT5yaXJiX2NudCk7CiAgICAgICAgIGlmIChkLT5yaXJiX2N0bCAmIElD SDZfUkJDVExfSVJRX0VOKSB7CiAgICAgICAgICAgICBkLT5yaXJiX3N0cyB8PSBJQ0g2X1JCU1RT X0lSUTsKQEAgLTExNDQsNyArMTE0NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRhX3Bvc3RfbG9h ZCh2b2lkICpvcGFxdWUsIGludCB2ZXJzaW9uKQogICAgIEludGVsSERBU3RhdGUqIGQgPSBvcGFx dWU7CiAgICAgaW50IGk7CiAKLSAgICBkcHJpbnQoZCwgMSwgIiVzXG4iLCBfX0ZVTkNUSU9OX18p OworICAgIGRwcmludChkLCAxLCAiJXNcbiIsIF9fZnVuY19fKTsKICAgICBmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShkLT5zdCk7IGkrKykgewogICAgICAgICBpZiAoZC0+c3RbaV0uY3RsICYg MHgwMikgewogICAgICAgICAgICAgaW50ZWxfaGRhX3BhcnNlX2JkbChkLCAmZC0+c3RbaV0pOwpk aWZmIC0tZ2l0IGEvaHcvYXVkaW8vd204NzUwLmMgYi9ody9hdWRpby93bTg3NTAuYwppbmRleCBk MmJmMmUxZGExLi5kZTA0ZDhhZThmIDEwMDY0NAotLS0gYS9ody9hdWRpby93bTg3NTAuYworKysg Yi9ody9hdWRpby93bTg3NTAuYwpAQCAtMzE1LDcgKzMxNSw3IEBAIHN0YXRpYyBpbnQgd204NzUw X2V2ZW50KEkyQ1NsYXZlICppMmMsIGVudW0gaTJjX2V2ZW50IGV2ZW50KQogI2lmZGVmIFZFUkJP U0UKICAgICAgICAgaWYgKHMtPmkyY19sZW4gPCAyKQogICAgICAgICAgICAgcHJpbnRmKCIlczog bWVzc2FnZSB0b28gc2hvcnQgKCVpIGJ5dGVzKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfX0ZVTkNUSU9OX18sIHMtPmkyY19sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9fZnVuY19fLCBzLT5pMmNfbGVuKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBk ZWZhdWx0OgpAQCAtNTU1LDcgKzU1NSw3IEBAIHN0YXRpYyBpbnQgd204NzUwX3R4KEkyQ1NsYXZl ICppMmMsIHVpbnQ4X3QgZGF0YSkKIAogI2lmZGVmIFZFUkJPU0UKICAgICBkZWZhdWx0OgotICAg ICAgICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyICUwMnhcbiIsIF9fRlVOQ1RJT05fXywg Y21kKTsKKyAgICAgICAgcHJpbnRmKCIlczogdW5rbm93biByZWdpc3RlciAlMDJ4XG4iLCBfX2Z1 bmNfXywgY21kKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvaHcvYmxvY2svbmFuZC5j IGIvaHcvYmxvY2svbmFuZC5jCmluZGV4IDBkMzNhYzI4MWYuLjViYzE4Mjk4ODkgMTAwNjQ0Ci0t LSBhL2h3L2Jsb2NrL25hbmQuYworKysgYi9ody9ibG9jay9uYW5kLmMKQEAgLTMyMSw3ICszMjEs NyBAQCBzdGF0aWMgdm9pZCBuYW5kX2NvbW1hbmQoTkFOREZsYXNoU3RhdGUgKnMpCiAgICAgICAg IGJyZWFrOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCIlczogVW5rbm93biBOQU5E IGNvbW1hbmQgMHglMDJ4XG4iLCBfX0ZVTkNUSU9OX18sIHMtPmNtZCk7CisgICAgICAgIHByaW50 ZigiJXM6IFVua25vd24gTkFORCBjb21tYW5kIDB4JTAyeFxuIiwgX19mdW5jX18sIHMtPmNtZCk7 CiAgICAgfQogfQogCkBAIC02MzgsNyArNjM4LDcgQEAgRGV2aWNlU3RhdGUgKm5hbmRfaW5pdChC bG9ja0JhY2tlbmQgKmJsaywgaW50IG1hbmZfaWQsIGludCBjaGlwX2lkKQogICAgIERldmljZVN0 YXRlICpkZXY7CiAKICAgICBpZiAobmFuZF9mbGFzaF9pZHNbY2hpcF9pZF0uc2l6ZSA9PSAwKSB7 Ci0gICAgICAgIGh3X2Vycm9yKCIlczogVW5zdXBwb3J0ZWQgTkFORCBjaGlwIElELlxuIiwgX19G VU5DVElPTl9fKTsKKyAgICAgICAgaHdfZXJyb3IoIiVzOiBVbnN1cHBvcnRlZCBOQU5EIGNoaXAg SUQuXG4iLCBfX2Z1bmNfXyk7CiAgICAgfQogICAgIGRldiA9IERFVklDRShvYmplY3RfbmV3KFRZ UEVfTkFORCkpOwogICAgIHFkZXZfcHJvcF9zZXRfdWludDgoZGV2LCAibWFudWZhY3R1cmVyX2lk IiwgbWFuZl9pZCk7CmRpZmYgLS1naXQgYS9ody9ibG9jay9vbmVuYW5kLmMgYi9ody9ibG9jay9v bmVuYW5kLmMKaW5kZXggYjc0MjM2MDdkOS4uMjI0ZGFmN2NjZiAxMDA2NDQKLS0tIGEvaHcvYmxv Y2svb25lbmFuZC5jCisrKyBiL2h3L2Jsb2NrL29uZW5hbmQuYwpAQCAtNjYxLDEyICs2NjEsMTIg QEAgc3RhdGljIHVpbnQ2NF90IG9uZW5hbmRfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRy LAogICAgIGNhc2UgMHhmZjAyOgkvKiBFQ0MgUmVzdWx0IG9mIHNwYXJlIGFyZWEgZGF0YSAqLwog ICAgIGNhc2UgMHhmZjAzOgkvKiBFQ0MgUmVzdWx0IG9mIG1haW4gYXJlYSBkYXRhICovCiAgICAg Y2FzZSAweGZmMDQ6CS8qIEVDQyBSZXN1bHQgb2Ygc3BhcmUgYXJlYSBkYXRhICovCi0gICAgICAg IGh3X2Vycm9yKCIlczogaW1lcGxlbWVudCBFQ0NcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAg IGh3X2Vycm9yKCIlczogaW1lcGxlbWVudCBFQ0NcbiIsIF9fZnVuY19fKTsKICAgICAgICAgcmV0 dXJuIDB4MDAwMDsKICAgICB9CiAKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmtub3duIE9u ZU5BTkQgcmVnaXN0ZXIgJXhcbiIsCi0gICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywg b2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIG9mZnNldCk7CiAgICAgcmV0 dXJuIDA7CiB9CiAKQEAgLTcxMSw3ICs3MTEsNyBAQCBzdGF0aWMgdm9pZCBvbmVuYW5kX3dyaXRl KHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHVua25vd24gT25lTkFORCBib290IGNvbW1hbmQgJSJQ Ukl4NjQiXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgdmFs dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCB2YWx1ZSk7CiAgICAg ICAgIH0KICAgICAgICAgYnJlYWs7CiAKQEAgLTc2Miw3ICs3NjIsNyBAQCBzdGF0aWMgdm9pZCBv bmVuYW5kX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAKICAgICBkZWZhdWx0Ogog ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmtub3duIE9uZU5BTkQgcmVnaXN0ZXIgJXhc biIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIG9mZnNldCk7CisgICAg ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgb2Zmc2V0KTsKICAgICB9CiB9CiAKZGlmZiAt LWdpdCBhL2h3L2J0L2NvcmUuYyBiL2h3L2J0L2NvcmUuYwppbmRleCA2MTVmMGFmMDczLi5jMTgw NmI3MWEzIDEwMDY0NAotLS0gYS9ody9idC9jb3JlLmMKKysrIGIvaHcvYnQvY29yZS5jCkBAIC0z MiwyMyArMzIsMjMgQEAgc3RhdGljIHZvaWQgYnRfZHVtbXlfbG1wX2Nvbm5lY3Rpb25fY29tcGxl dGUoc3RydWN0IGJ0X2xpbmtfcyAqbGluaykKIHsKICAgICBpZiAobGluay0+c2xhdmUtPnJlamVj dF9yZWFzb24pCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHN0cmF5IExNUF9ub3RfYWNj ZXB0ZWQgcmVjZWl2ZWQsIGZpeG1lXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5D VElPTl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fKTsKICAgICBlbHNlCiAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHN0cmF5IExNUF9hY2NlcHRlZCByZWNlaXZlZCwg Zml4bWVcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18pOworICAgICAg ICAgICAgICAgICAgICAgICAgX19mdW5jX18pOwogICAgIGV4aXQoLTEpOwogfQogCiBzdGF0aWMg dm9pZCBidF9kdW1teV9sbXBfZGlzY29ubmVjdF9tYXN0ZXIoc3RydWN0IGJ0X2xpbmtfcyAqbGlu aykKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBzdHJheSBMTVBfZGV0YWNoIHJlY2VpdmVk LCBmaXhtZVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBzdHJh eSBMTVBfZGV0YWNoIHJlY2VpdmVkLCBmaXhtZVxuIiwgX19mdW5jX18pOwogICAgIGV4aXQoLTEp OwogfQogCiBzdGF0aWMgdm9pZCBidF9kdW1teV9sbXBfYWNsX3Jlc3Aoc3RydWN0IGJ0X2xpbmtf cyAqbGluaywKICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBpbnQgc3RhcnQs IGludCBsZW4pCiB7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlczogc3RyYXkgQUNMIHJlc3BvbnNl IFBEVSwgZml4bWVcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgZnByaW50ZihzdGRlcnIsICIlczog c3RyYXkgQUNMIHJlc3BvbnNlIFBEVSwgZml4bWVcbiIsIF9fZnVuY19fKTsKICAgICBleGl0KC0x KTsKIH0KIApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgYnRfZGV2aWNlX2RvbmUoc3RydWN0IGJ0 X2RldmljZV9zICpkZXYpCiAgICAgd2hpbGUgKCpwICYmICpwICE9IGRldikKICAgICAgICAgcCA9 ICYoKnApLT5uZXh0OwogICAgIGlmICgqcCAhPSBkZXYpIHsKLSAgICAgICAgZnByaW50ZihzdGRl cnIsICIlczogYmFkIGJ0IGRldmljZSBcIiVzXCJcbiIsIF9fRlVOQ1RJT05fXywKKyAgICAgICAg ZnByaW50ZihzdGRlcnIsICIlczogYmFkIGJ0IGRldmljZSBcIiVzXCJcbiIsIF9fZnVuY19fLAog ICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5sbXBfbmFtZSA/OiAiKG51bGwpIik7CiAgICAg ICAgIGV4aXQoLTEpOwogICAgIH0KZGlmZiAtLWdpdCBhL2h3L2J0L2hjaS1jc3IuYyBiL2h3L2J0 L2hjaS1jc3IuYwppbmRleCBkMTMxOTJiOWI1Li5hYzA2N2I4MWY2IDEwMDY0NAotLS0gYS9ody9i dC9oY2ktY3NyLmMKKysrIGIvaHcvYnQvaGNpLWNzci5jCkBAIC0xMTEsMTQgKzExMSwxNCBAQCBz dGF0aWMgdWludDhfdCAqY3NyaGNpX291dF9wYWNrZXQoc3RydWN0IGNzcmhjaV9zICpzLCBpbnQg bGVuKQogCiAgICAgaWYgKG9mZiA8IEZJRk9fTEVOKSB7CiAgICAgICAgIGlmIChvZmYgKyBsZW4g PiBGSUZPX0xFTiAmJiAocy0+b3V0X3NpemUgPSBvZmYgKyBsZW4pID4gRklGT19MRU4gKiAyKSB7 Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBjYW4ndCBhbGxvYyAlaSBieXRlc1xu IiwgX19GVU5DVElPTl9fLCBsZW4pOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczog Y2FuJ3QgYWxsb2MgJWkgYnl0ZXNcbiIsIF9fZnVuY19fLCBsZW4pOwogICAgICAgICAgICAgZXhp dCgtMSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHMtPm91dGZpZm8gKyBvZmY7CiAgICAg fQogCiAgICAgaWYgKHMtPm91dF9sZW4gPiBzLT5vdXRfc2l6ZSkgewotICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIiVzOiBjYW4ndCBhbGxvYyAlaSBieXRlc1xuIiwgX19GVU5DVElPTl9fLCBsZW4p OworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBjYW4ndCBhbGxvYyAlaSBieXRlc1xuIiwg X19mdW5jX18sIGxlbik7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0KIApAQCAtMTY5LDcgKzE2 OSw3IEBAIHN0YXRpYyB2b2lkIGNzcmhjaV9pbl9wYWNrZXRfdmVuZG9yKHN0cnVjdCBjc3JoY2lf cyAqcywgaW50IG9jZiwKIAogICAgICAgICAgICAgcy0+aGNpLT5iZGFkZHJfc2V0KHMtPmhjaSwg cy0+YmRfYWRkci5iKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJkX2FkZHJl c3MgbG9hZGVkIGZyb20gZmlybXdhcmU6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi JTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMnhcbiIsIF9fRlVOQ1RJT05fXywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiJTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMnhcbiIsIF9f ZnVuY19fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJkX2FkZHIuYlswXSwgcy0+ YmRfYWRkci5iWzFdLCBzLT5iZF9hZGRyLmJbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcy0+YmRfYWRkci5iWzNdLCBzLT5iZF9hZGRyLmJbNF0sIHMtPmJkX2FkZHIuYls1XSk7CiAg ICAgICAgIH0KQEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgdm9pZCBjc3JoY2lfaW5fcGFja2V0 X3ZlbmRvcihzdHJ1Y3QgY3NyaGNpX3MgKnMsIGludCBvY2YsCiAgICAgICAgIGJyZWFrOwogCiAg ICAgZGVmYXVsdDoKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogZ290IGEgYmFkIENNRCBw YWNrZXRcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGdv dCBhIGJhZCBDTUQgcGFja2V0XG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybjsKICAgICB9 CiAKQEAgLTIyNiw3ICsyMjYsNyBAQCBzdGF0aWMgdm9pZCBjc3JoY2lfaW5fcGFja2V0KHN0cnVj dCBjc3JoY2lfcyAqcywgdWludDhfdCAqcGt0KQogICAgIGNhc2UgSDRfTkVHX1BLVDoKICAgICAg ICAgaWYgKHMtPmluX2hkciAhPSBzaXplb2YoY3NyaGNpX25lZ19wYWNrZXQpIHx8CiAgICAgICAg ICAgICAgICAgICAgICAgICBtZW1jbXAocGt0IC0gMSwgY3NyaGNpX25lZ19wYWNrZXQsIHMtPmlu X2hkcikpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGdvdCBhIGJhZCBORUcg cGFja2V0XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIl czogZ290IGEgYmFkIE5FRyBwYWNrZXRcbiIsIF9fZnVuY19fKTsKICAgICAgICAgICAgIHJldHVy bjsKICAgICAgICAgfQogICAgICAgICBwa3QgKz0gMjsKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0 aWMgdm9pZCBjc3JoY2lfaW5fcGFja2V0KHN0cnVjdCBjc3JoY2lfcyAqcywgdWludDhfdCAqcGt0 KQogCiAgICAgY2FzZSBINF9BTElWRV9QS1Q6CiAgICAgICAgIGlmIChzLT5pbl9oZHIgIT0gNCB8 fCBwa3RbMV0gIT0gMHg1NSB8fCBwa3RbMl0gIT0gMHgwMCkgewotICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsICIlczogZ290IGEgYmFkIEFMSVZFIHBhY2tldFxuIiwgX19GVU5DVElPTl9fKTsK KyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGdvdCBhIGJhZCBBTElWRSBwYWNrZXRc biIsIF9fZnVuY19fKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNTQs NyArMjU0LDcgQEAgc3RhdGljIHZvaWQgY3NyaGNpX2luX3BhY2tldChzdHJ1Y3QgY3NyaGNpX3Mg KnMsIHVpbnQ4X3QgKnBrdCkKICAgICBkZWZhdWx0OgogICAgIGJhZF9wa3Q6CiAgICAgICAgIC8q IFRPRE86IGVycm9yIG91dCAqLwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBnb3QgYSBi YWQgcGFja2V0XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz OiBnb3QgYSBiYWQgcGFja2V0XG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K IApkaWZmIC0tZ2l0IGEvaHcvYnQvaGNpLmMgYi9ody9idC9oY2kuYwppbmRleCA0NzZlYmVjMGFi Li5kZjA1ZjA3ODg3IDEwMDY0NAotLS0gYS9ody9idC9oY2kuYworKysgYi9ody9idC9oY2kuYwpA QCAtNDU4LDcgKzQ1OCw3IEBAIHN0YXRpYyBpbmxpbmUgdWludDhfdCAqYnRfaGNpX2V2ZW50X3N0 YXJ0KHN0cnVjdCBidF9oY2lfcyAqaGNpLAogCiAgICAgaWYgKGxlbiA+IDI1NSkgewogICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBIQ0kgZXZlbnQgcGFyYW1zIHRvbyBsb25nICglaWIpXG4i LAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBsZW4pOworICAgICAgICAg ICAgICAgICAgICAgICAgX19mdW5jX18sIGxlbik7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0K IApAQCAtNTg5LDcgKzU4OSw3IEBAIHN0YXRpYyB2b2lkIGJ0X2hjaV9pbnF1aXJ5X3Jlc3VsdChz dHJ1Y3QgYnRfaGNpX3MgKmhjaSwKICAgICAgICAgYnRfaGNpX2lucXVpcnlfcmVzdWx0X3dpdGhf cnNzaShoY2ksIHNsYXZlKTsKICAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6Ci0gICAgICAg IGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCBpbnF1aXJ5IG1vZGUgJTAyeFxuIiwgX19GVU5DVElP Tl9fLAorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgaW5xdWlyeSBtb2RlICUwMnhc biIsIF9fZnVuY19fLAogICAgICAgICAgICAgICAgICAgICAgICAgaGNpLT5sbS5pbnF1aXJ5X21v ZGUpOwogICAgICAgICBleGl0KC0xKTsKICAgICB9CkBAIC0xNTI4LDcgKzE1MjgsNyBAQCBzdGF0 aWMgdm9pZCBidF9zdWJtaXRfaGNpKHN0cnVjdCBIQ0lJbmZvICppbmZvLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJ0aGUgSW5xdWlyeSBjb21tYW5kIGhhcyBiZWVuIGlzc3VlZCwgYSBD b21tYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhdHVzIGV2ZW50IGhhcyBi ZWVuIHJlY2VpdmVkIGZvciB0aGUgSW5xdWlyeSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImNvbW1hbmQsIGFuZCBiZWZvcmUgdGhlIElucXVpcnkgQ29tcGxldGUgZXZlbnQgIgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJvY2N1cnMiLCBfX0ZVTkNUSU9OX18pOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJvY2N1cnMiLCBfX2Z1bmNfXyk7CiAgICAgICAgICAgICBi dF9oY2lfZXZlbnRfY29tcGxldGVfc3RhdHVzKGhjaSwgSENJX0NPTU1BTkRfRElTQUxMT1dFRCk7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTU2Nyw3ICsxNTY3LDcgQEAgc3Rh dGljIHZvaWQgYnRfc3VibWl0X2hjaShzdHJ1Y3QgSENJSW5mbyAqaW5mbywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAidGhlIElucXVpcnkgY29tbWFuZCBoYXMgYmVlbiBpc3N1ZWQsIGEg Q29tbWFuZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0YXR1cyBldmVudCBoYXMg YmVlbiByZWNlaXZlZCBmb3IgdGhlIElucXVpcnkgIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJjb21tYW5kLCBhbmQgYmVmb3JlIHRoZSBJbnF1aXJ5IENvbXBsZXRlIGV2ZW50ICIKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAib2NjdXJzIiwgX19GVU5DVElPTl9fKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAib2NjdXJzIiwgX19mdW5jX18pOwogICAgICAgICAgICAg YnRfaGNpX2V2ZW50X2NvbXBsZXRlX3N0YXR1cyhoY2ksIEhDSV9DT01NQU5EX0RJU0FMTE9XRUQp OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE5NzIsNyArMTk3Miw3IEBAIHN0 YXRpYyB2b2lkIGJ0X3N1Ym1pdF9oY2koc3RydWN0IEhDSUluZm8gKmluZm8sCiAKICAgICBzaG9y dF9oY2k6CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEhDSSBwYWNrZXQgdG9vIHNob3J0 ICglaUIpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBsZW5ndGgp OworICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGxlbmd0aCk7CiAgICAgICAgIGJ0 X2hjaV9ldmVudF9zdGF0dXMoaGNpLCBIQ0lfSU5WQUxJRF9QQVJBTUVURVJTKTsKICAgICAgICAg YnJlYWs7CiAgICAgfQpAQCAtMTk5Miw3ICsxOTkyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGJ0 X2hjaV9sbXBfYWNsX2RhdGEoc3RydWN0IGJ0X2hjaV9zICpoY2ksIHVpbnQxNl90IGhhbmRsZSwK IAogICAgIGlmIChsZW4gKyBIQ0lfQUNMX0hEUl9TSVpFID4gc2l6ZW9mKGhjaS0+YWNsX2J1Zikp IHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogY2FuJ3QgdGFrZSBBQ0wgcGFja2V0cyAl aSBieXRlcyBsb25nXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBs ZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGxlbik7CiAgICAgICAgIHJl dHVybjsKICAgICB9CiAgICAgbWVtY3B5KGhjaS0+YWNsX2J1ZiArIEhDSV9BQ0xfSERSX1NJWkUs IGRhdGEsIGxlbik7CkBAIC0yMDMwLDcgKzIwMzAsNyBAQCBzdGF0aWMgdm9pZCBidF9zdWJtaXRf YWNsKHN0cnVjdCBIQ0lJbmZvICppbmZvLAogCiAgICAgaWYgKGxlbmd0aCA8IEhDSV9BQ0xfSERS X1NJWkUpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogQUNMIHBhY2tldCB0b28gc2hv cnQgKCVpQilcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGxlbmd0 aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgbGVuZ3RoKTsKICAgICAgICAg cmV0dXJuOwogICAgIH0KIApAQCAtMjA0Miw3ICsyMDQyLDcgQEAgc3RhdGljIHZvaWQgYnRfc3Vi bWl0X2FjbChzdHJ1Y3QgSENJSW5mbyAqaW5mbywKIAogICAgIGlmIChidF9oY2lfaGFuZGxlX2Jh ZChoY2ksIGhhbmRsZSkpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaW52YWxpZCBB Q0wgaGFuZGxlICUwM3hcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18s IGhhbmRsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaGFuZGxlKTsKICAg ICAgICAgLyogVE9ETzogc2lnbmFsIGFuIGVycm9yICovCiAgICAgICAgIHJldHVybjsKICAgICB9 CkBAIC0yMDUwLDcgKzIwNTAsNyBAQCBzdGF0aWMgdm9pZCBidF9zdWJtaXRfYWNsKHN0cnVjdCBI Q0lJbmZvICppbmZvLAogCiAgICAgaWYgKGRhdGFsZW4gPiBsZW5ndGgpIHsKICAgICAgICAgZnBy aW50ZihzdGRlcnIsICIlczogQUNMIHBhY2tldCB0b28gc2hvcnQgKCVpQiA8ICVpQilcbiIsCi0g ICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGxlbmd0aCwgZGF0YWxlbik7Cisg ICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgbGVuZ3RoLCBkYXRhbGVuKTsKICAgICAg ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjA2MSw3ICsyMDYxLDcgQEAgc3RhdGljIHZvaWQgYnRf c3VibWl0X2FjbChzdHJ1Y3QgSENJSW5mbyAqaW5mbywKICAgICAgICAgICAgIGhjaS0+YXNiX2hh bmRsZSA9IGhhbmRsZTsKICAgICAgICAgZWxzZSBpZiAoaGFuZGxlICE9IGhjaS0+YXNiX2hhbmRs ZSkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogQmFkIGhhbmRsZSAlMDN4IGlu IEFjdGl2ZSBTbGF2ZSBCcm9hZGNhc3RcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg X19GVU5DVElPTl9fLCBoYW5kbGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVu Y19fLCBoYW5kbGUpOwogICAgICAgICAgICAgLyogVE9ETzogc2lnbmFsIGFuIGVycm9yICovCiAg ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIwNzQsNyArMjA3NCw3IEBAIHN0YXRp YyB2b2lkIGJ0X3N1Ym1pdF9hY2woc3RydWN0IEhDSUluZm8gKmluZm8sCiAgICAgICAgICAgICBo Y2ktPnBzYl9oYW5kbGUgPSBoYW5kbGU7CiAgICAgICAgIGVsc2UgaWYgKGhhbmRsZSAhPSBoY2kt PnBzYl9oYW5kbGUpIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEJhZCBoYW5k bGUgJTAzeCBpbiBQYXJrZWQgU2xhdmUgQnJvYWRjYXN0XG4iLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9fRlVOQ1RJT05fXywgaGFuZGxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfX2Z1bmNfXywgaGFuZGxlKTsKICAgICAgICAgICAgIC8qIFRPRE86IHNpZ25hbCBhbiBl cnJvciAqLwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTA2LDEzICsyMTA2 LDEzIEBAIHN0YXRpYyB2b2lkIGJ0X3N1Ym1pdF9zY28oc3RydWN0IEhDSUluZm8gKmluZm8sCiAK ICAgICBpZiAoYnRfaGNpX2hhbmRsZV9iYWQoaGNpLCBoYW5kbGUpKSB7CiAgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiJXM6IGludmFsaWQgU0NPIGhhbmRsZSAlMDN4XG4iLAotICAgICAgICAgICAg ICAgICAgICAgICAgX19GVU5DVElPTl9fLCBoYW5kbGUpOworICAgICAgICAgICAgICAgICAgICAg ICAgX19mdW5jX18sIGhhbmRsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo ZGF0YWxlbiA+IGxlbmd0aCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBTQ08gcGFj a2V0IHRvbyBzaG9ydCAoJWlCIDwgJWlCKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9f RlVOQ1RJT05fXywgbGVuZ3RoLCBkYXRhbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCBsZW5ndGgsIGRhdGFsZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg LS1naXQgYS9ody9idC9oaWQuYyBiL2h3L2J0L2hpZC5jCmluZGV4IGY2YWZmYmJiNDQuLjA5ZDE3 MzIyZTQgMTAwNjQ0Ci0tLSBhL2h3L2J0L2hpZC5jCisrKyBiL2h3L2J0L2hpZC5jCkBAIC00MjAs NyArNDIwLDcgQEAgc3RhdGljIHZvaWQgYnRfaGlkX2ludGVycnVwdF9zZHUodm9pZCAqb3BhcXVl LCBjb25zdCB1aW50OF90ICpkYXRhLCBpbnQgbGVuKQogICAgIHJldHVybjsKIGJhZDoKICAgICBm cHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgdHJhbnNhY3Rpb24gb24gSW50ZXJydXB0IGNoYW5uZWwu XG4iLAotICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAg ICAgICBfX2Z1bmNfXyk7CiB9CiAKIC8qICJWaXJ0dWFsIGNhYmxlIiBwbHVnL3VucGx1ZyBldmVu dC4gICovCmRpZmYgLS1naXQgYS9ody9idC9sMmNhcC5jIGIvaHcvYnQvbDJjYXAuYwppbmRleCBl MzQyMDQ1MTQwLi4zZTUzZGQwODJkIDEwMDY0NAotLS0gYS9ody9idC9sMmNhcC5jCisrKyBiL2h3 L2J0L2wyY2FwLmMKQEAgLTQ2OCw3ICs0NjgsNyBAQCBzdGF0aWMgdm9pZCBsMmNhcF9jaGFubmVs X2Nsb3NlKHN0cnVjdCBsMmNhcF9pbnN0YW5jZV9zICpsMmNhcCwKICAgICBpZiAobGlrZWx5KGNo KSkgewogICAgICAgICBpZiAoY2gtPnJlbW90ZV9jaWQgIT0gc291cmNlX2NpZCkgewogICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICIlczogSWdub3JpbmcgYSBEaXNjb25uZWN0aW9uIFJlcXVl c3Qgd2l0aCB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIFNDSUQg JTA0eC5cbiIsIF9fRlVOQ1RJT05fXywgc291cmNlX2NpZCk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImludmFsaWQgU0NJRCAlMDR4LlxuIiwgX19mdW5jX18sIHNvdXJjZV9jaWQpOwog ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTc5MSw3ICs3OTEsNyBAQCBzdGF0 aWMgdm9pZCBsMmNhcF9jb21tYW5kKHN0cnVjdCBsMmNhcF9pbnN0YW5jZV9zICpsMmNhcCwgaW50 IGNvZGUsIGludCBpZCwKICAgICAvKiBUT0RPOiBkbyB0aGUgSURzIHJlYWxseSBoYXZlIHRvIGJl IGluIHNlcXVlbmNlPyAgKi8KICAgICBpZiAoIWlkIHx8IChpZCAhPSBsMmNhcC0+bGFzdF9pZCAm JiBpZCAhPSBsMmNhcC0+bmV4dF9pZCkpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczog b3V0IG9mIHNlcXVlbmNlIGNvbW1hbmQgcGFja2V0IGlnbm9yZWQuXG4iLAotICAgICAgICAgICAg ICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVu Y19fKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbHNlCkBAIC04MTQsNyArODE0LDcgQEAg c3RhdGljIHZvaWQgbDJjYXBfY29tbWFuZChzdHJ1Y3QgbDJjYXBfaW5zdGFuY2VfcyAqbDJjYXAs IGludCBjb2RlLCBpbnQgaWQsCiAKICAgICAgICAgLyogV2UgbmV2ZXIgaXNzdWUgY29tbWFuZHMg b3RoZXIgdGhhbiBDb21tYW5kIFJlamVjdCBjdXJyZW50bHkuICAqLwogICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIiVzOiBzdHJheSBDb21tYW5kIFJlamVjdCAoJTAyeCwgJTA0eCkgIgotICAgICAg ICAgICAgICAgICAgICAgICAgInBhY2tldCwgaWdub3JpbmcuXG4iLCBfX0ZVTkNUSU9OX18sIGlk LAorICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldCwgaWdub3JpbmcuXG4iLCBfX2Z1bmNf XywgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBsZTE2X3RvX2NwdSgoKGwyY2FwX2NtZF9y ZWogKikgcGFyYW1zKS0+cmVhc29uKSk7CiAgICAgICAgIGJyZWFrOwogCkBAIC04MzcsNyArODM3 LDcgQEAgc3RhdGljIHZvaWQgbDJjYXBfY29tbWFuZChzdHJ1Y3QgbDJjYXBfaW5zdGFuY2VfcyAq bDJjYXAsIGludCBjb2RlLCBpbnQgaWQsCiAKICAgICAgICAgLyogV2UgbmV2ZXIgaXNzdWUgQ29u bmVjdGlvbiBSZXF1ZXN0cyBjdXJyZW50bHkuIFRPRE8gICovCiAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiJXM6IHVuZXhwZWN0ZWQgQ29ubmVjdGlvbiBSZXNwb25zZSAoJTAyeCkgIgotICAgICAg ICAgICAgICAgICAgICAgICAgInBhY2tldCwgaWdub3JpbmcuXG4iLCBfX0ZVTkNUSU9OX18sIGlk KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXQsIGlnbm9yaW5nLlxuIiwgX19mdW5j X18sIGlkKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEwyQ0FQX0NPTkZfUkVROgpAQCAt ODY2LDcgKzg2Niw3IEBAIHN0YXRpYyB2b2lkIGwyY2FwX2NvbW1hbmQoc3RydWN0IGwyY2FwX2lu c3RhbmNlX3MgKmwyY2FwLCBpbnQgY29kZSwgaW50IGlkLAogICAgICAgICAgICAgICAgICAgICAg ICAgKChsMmNhcF9jb25mX3JzcCAqKSBwYXJhbXMpLT5kYXRhLAogICAgICAgICAgICAgICAgICAg ICAgICAgbGVuIC0gTDJDQVBfQ09ORl9SU1BfU0laRSgwKSkpCiAgICAgICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIiVzOiB1bmV4cGVjdGVkIENvbmZpZ3VyZSBSZXNwb25zZSAoJTAyeCkgIgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXQsIGlnbm9yaW5nLlxuIiwgX19GVU5DVElP Tl9fLCBpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldCwgaWdub3Jpbmcu XG4iLCBfX2Z1bmNfXywgaWQpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTDJDQVBfRElT Q09OTl9SRVE6CkBAIC04ODgsNyArODg4LDcgQEAgc3RhdGljIHZvaWQgbDJjYXBfY29tbWFuZChz dHJ1Y3QgbDJjYXBfaW5zdGFuY2VfcyAqbDJjYXAsIGludCBjb2RlLCBpbnQgaWQsCiAKICAgICAg ICAgLyogV2UgbmV2ZXIgaXNzdWUgRGlzY29ubmVjdGlvbiBSZXF1ZXN0cyBjdXJyZW50bHkuIFRP RE8gICovCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHVuZXhwZWN0ZWQgRGlzY29ubmVj dGlvbiBSZXNwb25zZSAoJTAyeCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldCwg aWdub3JpbmcuXG4iLCBfX0ZVTkNUSU9OX18sIGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICJwYWNrZXQsIGlnbm9yaW5nLlxuIiwgX19mdW5jX18sIGlkKTsKICAgICAgICAgYnJlYWs7CiAK ICAgICBjYXNlIEwyQ0FQX0VDSE9fUkVROgpAQCAtODk4LDcgKzg5OCw3IEBAIHN0YXRpYyB2b2lk IGwyY2FwX2NvbW1hbmQoc3RydWN0IGwyY2FwX2luc3RhbmNlX3MgKmwyY2FwLCBpbnQgY29kZSwg aW50IGlkLAogICAgIGNhc2UgTDJDQVBfRUNIT19SU1A6CiAgICAgICAgIC8qIFdlIG5ldmVyIGlz c3VlIEVjaG8gUmVxdWVzdHMgY3VycmVudGx5LiBUT0RPICAqLwogICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIiVzOiB1bmV4cGVjdGVkIEVjaG8gUmVzcG9uc2UgKCUwMngpICIKLSAgICAgICAgICAg ICAgICAgICAgICAgICJwYWNrZXQsIGlnbm9yaW5nLlxuIiwgX19GVU5DVElPTl9fLCBpZCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0LCBpZ25vcmluZy5cbiIsIF9fZnVuY19fLCBp ZCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBMMkNBUF9JTkZPX1JFUToKQEAgLTkxOCw3 ICs5MTgsNyBAQCBzdGF0aWMgdm9pZCBsMmNhcF9jb21tYW5kKHN0cnVjdCBsMmNhcF9pbnN0YW5j ZV9zICpsMmNhcCwgaW50IGNvZGUsIGludCBpZCwKIAogICAgICAgICAvKiBXZSBuZXZlciBpc3N1 ZSBJbmZvcm1hdGlvbiBSZXF1ZXN0cyBjdXJyZW50bHkuIFRPRE8gICovCiAgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiJXM6IHVuZXhwZWN0ZWQgSW5mb3JtYXRpb24gUmVzcG9uc2UgKCUwMngpICIK LSAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXQsIGlnbm9yaW5nLlxuIiwgX19GVU5DVElP Tl9fLCBpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0LCBpZ25vcmluZy5cbiIs IF9fZnVuY19fLCBpZCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKQEAgLTEwNjcs NyArMTA2Nyw3IEBAIHN0YXRpYyB2b2lkIGwyY2FwX2ZyYW1lX2luKHN0cnVjdCBsMmNhcF9pbnN0 YW5jZV9zICpsMmNhcCwKIAogICAgIGlmICh1bmxpa2VseShjaWQgPj0gTDJDQVBfQ0lEX01BWCB8 fCAhbDJjYXAtPmNpZFtjaWRdKSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBmcmFt ZSBhZGRyZXNzZWQgdG8gYSBub24tZXhpc3RlbnQgTDJDQVAgIgotICAgICAgICAgICAgICAgICAg ICAgICAgImNoYW5uZWwgJTA0eCByZWNlaXZlZC5cbiIsIF9fRlVOQ1RJT05fXywgY2lkKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICJjaGFubmVsICUwNHggcmVjZWl2ZWQuXG4iLCBfX2Z1bmNf XywgY2lkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTEyOSw3ICsxMTI5LDcgQEAg c3RhdGljIHVpbnQ4X3QgKmwyY2FwX2JmcmFtZV9vdXQoc3RydWN0IGJ0X2wyY2FwX2Nvbm5fcGFy YW1zX3MgKnBhcm0sIGludCBsZW4pCiAKICAgICBpZiAobGVuID4gY2hhbi0+cGFyYW1zLnJlbW90 ZV9tdHUpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogQi1GcmFtZSBmb3IgQ0lEICUw NHggbG9uZ2VyIHRoYW4gJWkgb2N0ZXRzLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9f RlVOQ1RJT05fXywKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLAogICAgICAgICAg ICAgICAgICAgICAgICAgY2hhbi0+cmVtb3RlX2NpZCwgY2hhbi0+cGFyYW1zLnJlbW90ZV9tdHUp OwogICAgICAgICBleGl0KC0xKTsKICAgICB9CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCB2b2lkIGJ0 X2wyY2FwX3BzbV9yZWdpc3RlcihzdHJ1Y3QgYnRfbDJjYXBfZGV2aWNlX3MgKmRldiwgaW50IHBz bSwgaW50IG1pbl9tdHUsCiAKICAgICBpZiAobmV3X3BzbSkgewogICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIiVzOiBQU00gJTA0eCBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIGRldmljZSBgJXMnLlxu IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcHNtLCBkZXYtPmRldmlj ZS5sbXBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgcHNtLCBkZXYt PmRldmljZS5sbXBfbmFtZSk7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0KIApkaWZmIC0tZ2l0 IGEvaHcvYnQvc2RwLmMgYi9ody9idC9zZHAuYwppbmRleCAzY2I2MGI5NDk1Li43YzBkMzhiNTA0 IDEwMDY0NAotLS0gYS9ody9idC9zZHAuYworKysgYi9ody9idC9zZHAuYwpAQCAtNTA2LDcgKzUw Niw3IEBAIHN0YXRpYyB2b2lkIGJ0X2wyY2FwX3NkcF9zZHVfaW4odm9pZCAqb3BhcXVlLCBjb25z dCB1aW50OF90ICpkYXRhLCBpbnQgbGVuKQogICAgIGludCByc3BfbGVuID0gMDsKIAogICAgIGlm IChsZW4gPCA1KSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHNob3J0IFNEUCBQRFUg KCVpQikuXG4iLCBfX0ZVTkNUSU9OX18sIGxlbik7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi JXM6IHNob3J0IFNEUCBQRFUgKCVpQikuXG4iLCBfX2Z1bmNfXywgbGVuKTsKICAgICAgICAgcmV0 dXJuOwogICAgIH0KIApAQCAtNTE4LDcgKzUxOCw3IEBAIHN0YXRpYyB2b2lkIGJ0X2wyY2FwX3Nk cF9zZHVfaW4odm9pZCAqb3BhcXVlLCBjb25zdCB1aW50OF90ICpkYXRhLCBpbnQgbGVuKQogCiAg ICAgaWYgKGxlbiAhPSBwbGVuKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHdyb25n IFNEUCBQRFUgbGVuZ3RoICglaUIgIT0gJWlCKS5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAg ICBfX0ZVTkNUSU9OX18sIHBsZW4sIGxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1 bmNfXywgcGxlbiwgbGVuKTsKICAgICAgICAgZXJyID0gU0RQX0lOVkFMSURfUERVX1NJWkU7CiAg ICAgICAgIGdvdG8gcmVzcG9uZDsKICAgICB9CkBAIC01NDUsNyArNTQ1LDcgQEAgc3RhdGljIHZv aWQgYnRfbDJjYXBfc2RwX3NkdV9pbih2b2lkICpvcGFxdWUsIGNvbnN0IHVpbnQ4X3QgKmRhdGEs IGludCBsZW4pCiAgICAgY2FzZSBTRFBfU1ZDX1NFQVJDSF9BVFRSX1JTUDoKICAgICBkZWZhdWx0 OgogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmV4cGVjdGVkIFNEUCBQRFUgSUQgJTAy eC5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIHBkdV9pZCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgcGR1X2lkKTsKICAgICAgICAgZXJyID0g U0RQX0lOVkFMSURfU1lOVEFYOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9o dy9kaXNwbGF5L2JsaXp6YXJkLmMgYi9ody9kaXNwbGF5L2JsaXp6YXJkLmMKaW5kZXggY2JmMDdk MTRkOS4uMjkxYWJlNmZjYSAxMDA2NDQKLS0tIGEvaHcvZGlzcGxheS9ibGl6emFyZC5jCisrKyBi L2h3L2Rpc3BsYXkvYmxpenphcmQuYwpAQCAtNDc0LDcgKzQ3NCw3IEBAIHN0YXRpYyB1aW50MTZf dCBibGl6emFyZF9yZWdfcmVhZCh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgcmVnKQogICAgICAgICBy ZXR1cm4gcy0+Z3Bpb19wZG93bjsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiJXM6IHVua25vd24gcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCByZWcpOwor ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmtub3duIHJlZ2lzdGVyICUwMnhcbiIsIF9f ZnVuY19fLCByZWcpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CkBAIC01MDIsNyArNTAy LDcgQEAgc3RhdGljIHZvaWQgYmxpenphcmRfcmVnX3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDhf dCByZWcsIHVpbnQxNl90IHZhbHVlKQogICAgICAgICBzLT5wbGxfbW9kZSA9IHZhbHVlICYgMHg3 NzsKICAgICAgICAgaWYgKCh2YWx1ZSAmIDMpID09IDAgfHwgKHZhbHVlICYgMykgPT0gMykKICAg ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHdyb25nIFBMTCBDb250cm9sIGJpdHMgKCVp KVxuIiwKLSAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCB2YWx1ZSAmIDMpOworICAg ICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgdmFsdWUgJiAzKTsKICAgICAgICAgYnJlYWs7CiAK ICAgICBjYXNlIDB4MGU6CS8qIENsb2NrLVNvdXJjZSBTZWxlY3QgKi8KQEAgLTU0MSw3ICs1NDEs NyBAQCBzdGF0aWMgdm9pZCBibGl6emFyZF9yZWdfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50OF90 IHJlZywgdWludDE2X3QgdmFsdWUpCiAgICAgY2FzZSAweDI4OgkvKiBMQ0QgUGFuZWwgQ29uZmln dXJhdGlvbiAqLwogICAgICAgICBzLT5sY2RfY29uZmlnID0gdmFsdWUgJiAweGZmOwogICAgICAg ICBpZiAodmFsdWUgJiAoMSA8PCA3KSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IGRhdGEgc3dhcCBub3Qgc3VwcG9ydGVkIVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAg IGZwcmludGYoc3RkZXJyLCAiJXM6IGRhdGEgc3dhcCBub3Qgc3VwcG9ydGVkIVxuIiwgX19mdW5j X18pOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHgyYToJLyogTENEIEhvcml6b250YWwg RGlzcGxheSBXaWR0aCAqLwpAQCAtNTg2LDcgKzU4Niw3IEBAIHN0YXRpYyB2b2lkIGJsaXp6YXJk X3JlZ193cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgcmVnLCB1aW50MTZfdCB2YWx1ZSkKICAg ICAgICAgcy0+aHNzaV9jb25maWdbMV0gPSB2YWx1ZTsKICAgICAgICAgaWYgKCgodmFsdWUgPj4g NCkgJiAzKSA9PSAzKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogSWxsZWdhbCBh Y3RpdmUtZGF0YS1saW5rcyB2YWx1ZVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fKTsKICAg ICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDQyOgkvKiBIaWdoLXNwZWVkIFNlcmlhbCBJbnRlcmZh Y2UgVHggTW9kZSAqLwogICAgICAgICBzLT5oc3NpX2NvbmZpZ1syXSA9IHZhbHVlICYgMHhiZDsK QEAgLTY0MSw3ICs2NDEsNyBAQCBzdGF0aWMgdm9pZCBibGl6emFyZF9yZWdfd3JpdGUodm9pZCAq b3BhcXVlLCB1aW50OF90IHJlZywgdWludDE2X3QgdmFsdWUpCiAgICAgICAgIHMtPmVuYWJsZSA9 IHZhbHVlICYgMTsKICAgICAgICAgcy0+YmxhbmsgPSAodmFsdWUgPj4gMSkgJiAxOwogICAgICAg ICBpZiAodmFsdWUgJiAoMSA8PCA0KSkKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IE1hY3JvdmlzaW9uIGVuYWJsZSBhdHRlbXB0IVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IE1hY3JvdmlzaW9uIGVuYWJsZSBhdHRlbXB0IVxuIiwg X19mdW5jX18pOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHg2YToJLyogU3BlY2lhbCBF ZmZlY3RzICovCkBAIC03MTgsNyArNzE4LDcgQEAgc3RhdGljIHZvaWQgYmxpenphcmRfcmVnX3dy aXRlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCByZWcsIHVpbnQxNl90IHZhbHVlKQogICAgICAgICBz LT5icHAgPSBibGl6emFyZF9pZm9ybWF0X2JwcFtzLT5pZm9ybWF0XTsKICAgICAgICAgaWYgKCFz LT5icHApCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBJbGxlZ2FsIG9yIHVuc3Vw cG9ydGVkIGlucHV0IGZvcm1hdCAleFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X0ZVTkNUSU9OX18sIHMtPmlmb3JtYXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCBzLT5pZm9ybWF0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDhlOgkvKiBE YXRhIFNvdXJjZSBTZWxlY3QgKi8KICAgICAgICAgcy0+c291cmNlID0gdmFsdWUgJiA3OwpAQCAt NzMwLDcgKzczMCw3IEBAIHN0YXRpYyB2b2lkIGJsaXp6YXJkX3JlZ193cml0ZSh2b2lkICpvcGFx dWUsIHVpbnQ4X3QgcmVnLCB1aW50MTZfdCB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICEoKHMtPml4WzFdIC0gcy0+aXhbMF0pICYgKHMtPml5WzFdIC0gcy0+aXlbMF0pICYKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHMtPm94WzFdIC0gcy0+b3hbMF0pICYgKHMtPm95WzFdIC0g cy0+b3lbMF0pICYgMSkpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBJbGxlZ2Fs IGlucHV0L291dHB1dCB3aW5kb3cgcG9zaXRpb25zXG4iLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5j X18pOwogCiAgICAgICAgIGJsaXp6YXJkX3RyYW5zZmVyX3NldHVwKHMpOwogICAgICAgICBicmVh azsKQEAgLTc4NCw3ICs3ODQsNyBAQCBzdGF0aWMgdm9pZCBibGl6emFyZF9yZWdfd3JpdGUodm9p ZCAqb3BhcXVlLCB1aW50OF90IHJlZywgdWludDE2X3QgdmFsdWUpCiAgICAgICAgIHMtPnBtID0g dmFsdWUgJiAweDgzOwogICAgICAgICBpZiAodmFsdWUgJiBzLT5tb2RlICYgMSkKICAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IFRoZSBkaXNwbGF5IG11c3QgYmUgZGlzYWJsZWQgYmVm b3JlIGVudGVyaW5nICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhbmRieSBNb2Rl XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdGFuZGJ5 IE1vZGVcbiIsIF9fZnVuY19fKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweGU4OgkvKiBO b24tZGlzcGxheSBQZXJpb2QgQ29udHJvbCAvIFN0YXR1cyAqLwogICAgICAgICBzLT5zdGF0dXMg PSB2YWx1ZSAmIDB4MWI7CkBAIC04MTUsNyArODE1LDcgQEAgc3RhdGljIHZvaWQgYmxpenphcmRf cmVnX3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCByZWcsIHVpbnQxNl90IHZhbHVlKQogICAg ICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IHVua25vd24gcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCByZWcpOworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIiVzOiB1bmtub3duIHJlZ2lzdGVyICUwMnhcbiIsIF9fZnVuY19fLCBy ZWcpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ody9kaXNwbGF5L29t YXBfZHNzLmMgYi9ody9kaXNwbGF5L29tYXBfZHNzLmMKaW5kZXggNzgzZTllMTMxOC4uNjAxZjE3 OGZkZCAxMDA2NDQKLS0tIGEvaHcvZGlzcGxheS9vbWFwX2Rzcy5jCisrKyBiL2h3L2Rpc3BsYXkv b21hcF9kc3MuYwpAQCAtNTI2LDcgKzUyNiw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfZGlzY193cml0 ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBzLT5kaXNwYy5sWzBdLmF0dHIg PSB2YWx1ZSAmIDB4N2ZmOwogICAgICAgICBpZiAodmFsdWUgJiAoMyA8PCA5KSkKICAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEJpZy1lbmRpYW4gcGl4ZWwgZm9ybWF0IG5vdCBzdXBw b3J0ZWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAgICAgICAgIHMtPmRpc3BjLmxb MF0uZW5hYmxlID0gdmFsdWUgJiAxOwogICAgICAgICBzLT5kaXNwYy5sWzBdLmJwcCA9ICh2YWx1 ZSA+PiAxKSAmIDB4ZjsKICAgICAgICAgcy0+ZGlzcGMuaW52YWxpZGF0ZSA9IDE7CkBAIC02MTcs NyArNjE3LDcgQEAgc3RhdGljIHZvaWQgb21hcF9yZmJpX3RyYW5zZmVyX3N0YXJ0KHN0cnVjdCBv bWFwX2Rzc19zICpzKQogICAgIGlmIChzLT5yZmJpLmNvbnRyb2wgJiAoMSA8PCAxKSkgewkJCQkv KiBCWVBBU1MgKi8KICAgICAgICAgLyogVE9ETzogaW4gbm9uLUJ5cGFzcyBtb2RlIHdlIHByb2Jh Ymx5IG5lZWQgdG8ganVzdCBhc3NlcnQgdGhlCiAgICAgICAgICAqIERSUSBhbmQgd2FpdCBmb3Ig RE1BIHRvIHdyaXRlIHRoZSBwaXhlbHMuICAqLwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz OiBCeXBhc3MgbW9kZSB1bmltcGxlbWVudGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIiVzOiBCeXBhc3MgbW9kZSB1bmltcGxlbWVudGVkXG4iLCBfX2Z1bmNf Xyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwODYsNiArMTA4Niw2IEBAIHN0cnVj dCBvbWFwX2Rzc19zICpvbWFwX2Rzc19pbml0KHN0cnVjdCBvbWFwX3RhcmdldF9hZ2VudF9zICp0 YSwKIHZvaWQgb21hcF9yZmJpX2F0dGFjaChzdHJ1Y3Qgb21hcF9kc3NfcyAqcywgaW50IGNzLCBz dHJ1Y3QgcmZiaV9jaGlwX3MgKmNoaXApCiB7CiAgICAgaWYgKGNzIDwgMCB8fCBjcyA+IDEpCi0g ICAgICAgIGh3X2Vycm9yKCIlczogd3JvbmcgQ1MgJWlcbiIsIF9fRlVOQ1RJT05fXywgY3MpOwor ICAgICAgICBod19lcnJvcigiJXM6IHdyb25nIENTICVpXG4iLCBfX2Z1bmNfXywgY3MpOwogICAg IHMtPnJmYmkuY2hpcFtjc10gPSBjaGlwOwogfQpkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS9weGEy eHhfbGNkLmMgYi9ody9kaXNwbGF5L3B4YTJ4eF9sY2QuYwppbmRleCA4NDU1MjFjNWIyLi5iODNm ODA3NTNhIDEwMDY0NAotLS0gYS9ody9kaXNwbGF5L3B4YTJ4eF9sY2QuYworKysgYi9ody9kaXNw bGF5L3B4YTJ4eF9sY2QuYwpAQCAtNDA1LDcgKzQwNSw3IEBAIHN0YXRpYyB1aW50NjRfdCBweGEy eHhfbGNkY19yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKIAogICAgIGRlZmF1bHQ6 CiAgICAgZmFpbDoKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAi XG4iLCBfX0ZVTkNUSU9OX18sIG9mZnNldCk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9m ZnNldCAiIFJFR19GTVQgIlxuIiwgX19mdW5jX18sIG9mZnNldCk7CiAgICAgfQogCiAgICAgcmV0 dXJuIDA7CkBAIC00MjQsNyArNDI0LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X2xjZGNfd3JpdGUo dm9pZCAqb3BhcXVlLCBod2FkZHIgb2Zmc2V0LAogICAgICAgICAgICAgcy0+c3RhdHVzWzBdIHw9 IExDU1IwX1FEOwogCiAgICAgICAgIGlmICghKHMtPmNvbnRyb2xbMF0gJiBMQ0NSMF9MQ0RUKSAm JiAodmFsdWUgJiBMQ0NSMF9MQ0RUKSkKLSAgICAgICAgICAgIHByaW50ZigiJXM6IGludGVybmFs IGZyYW1lIGJ1ZmZlciB1bnN1cHBvcnRlZFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAg IHByaW50ZigiJXM6IGludGVybmFsIGZyYW1lIGJ1ZmZlciB1bnN1cHBvcnRlZFxuIiwgX19mdW5j X18pOwogCiAgICAgICAgIGlmICgocy0+Y29udHJvbFszXSAmIExDQ1IzX0FQSSkgJiYKICAgICAg ICAgICAgICAgICAodmFsdWUgJiBMQ0NSMF9FTkIpICYmICEodmFsdWUgJiBMQ0NSMF9MQ0RUKSkK QEAgLTQ2MCw3ICs0NjAsNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhfbGNkY193cml0ZSh2b2lkICpv cGFxdWUsIGh3YWRkciBvZmZzZXQsCiAKICAgICBjYXNlIE9WTDFDMToKICAgICAgICAgaWYgKCEo cy0+b3ZsMWNbMF0gJiBPVkxDMV9FTikgJiYgKHZhbHVlICYgT1ZMQzFfRU4pKQotICAgICAgICAg ICAgcHJpbnRmKCIlczogT3ZlcmxheSAxIG5vdCBzdXBwb3J0ZWRcbiIsIF9fRlVOQ1RJT05fXyk7 CisgICAgICAgICAgICBwcmludGYoIiVzOiBPdmVybGF5IDEgbm90IHN1cHBvcnRlZFxuIiwgX19m dW5jX18pOwogCiAgICAgICAgIHMtPm92bDFjWzBdID0gdmFsdWUgJiAweDgwZmZmZmZmOwogICAg ICAgICBzLT5kbWFfY2hbMV0udXAgPSAodmFsdWUgJiBPVkxDMV9FTikgfHwgKHMtPmNvbnRyb2xb MF0gJiBMQ0NSMF9TRFMpOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9s Y2RjX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKIAogICAgIGNhc2UgT1ZMMkMx OgogICAgICAgICBpZiAoIShzLT5vdmwyY1swXSAmIE9WTEMxX0VOKSAmJiAodmFsdWUgJiBPVkxD MV9FTikpCi0gICAgICAgICAgICBwcmludGYoIiVzOiBPdmVybGF5IDIgbm90IHN1cHBvcnRlZFxu IiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6IE92ZXJsYXkgMiBub3Qg c3VwcG9ydGVkXG4iLCBfX2Z1bmNfXyk7CiAKICAgICAgICAgcy0+b3ZsMmNbMF0gPSB2YWx1ZSAm IDB4ODBmZmZmZmY7CiAgICAgICAgIHMtPmRtYV9jaFsyXS51cCA9ICEhKHZhbHVlICYgT1ZMQzFf RU4pOwpAQCAtNDg2LDcgKzQ4Niw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9sY2RjX3dyaXRlKHZv aWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKIAogICAgIGNhc2UgQ0NSOgogICAgICAgICBpZiAo IShzLT5jY3IgJiBDQ1JfQ0VOKSAmJiAodmFsdWUgJiBDQ1JfQ0VOKSkKLSAgICAgICAgICAgIHBy aW50ZigiJXM6IEhhcmR3YXJlIGN1cnNvciB1bmltcGxlbWVudGVkXG4iLCBfX0ZVTkNUSU9OX18p OworICAgICAgICAgICAgcHJpbnRmKCIlczogSGFyZHdhcmUgY3Vyc29yIHVuaW1wbGVtZW50ZWRc biIsIF9fZnVuY19fKTsKIAogICAgICAgICBzLT5jY3IgPSB2YWx1ZSAmIDB4ODFmZmZmZTc7CiAg ICAgICAgIHMtPmRtYV9jaFs1XS51cCA9ICEhKHZhbHVlICYgQ0NSX0NFTik7CkBAIC01NjAsNyAr NTYwLDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X2xjZGNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2Fk ZHIgb2Zmc2V0LAogCiAgICAgZGVmYXVsdDoKICAgICBmYWlsOgotICAgICAgICBod19lcnJvcigi JXM6IEJhZCBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgb2Zmc2V0KTsKKyAg ICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywg b2Zmc2V0KTsKICAgICB9CiB9CiAKQEAgLTEwNTAsNyArMTA1MCw3IEBAIFBYQTJ4eExDRFN0YXRl ICpweGEyeHhfbGNkY19pbml0KE1lbW9yeVJlZ2lvbiAqc3lzbWVtLAogICAgICAgICBzLT5kZXN0 X3dpZHRoID0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgZnByaW50 ZihzdGRlcnIsICIlczogQmFkIGNvbG9yIGRlcHRoXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBCYWQgY29sb3IgZGVwdGhcbiIsIF9fZnVuY19fKTsKICAg ICAgICAgZXhpdCgxKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvcXhsLXJlbmRl ci5jIGIvaHcvZGlzcGxheS9xeGwtcmVuZGVyLmMKaW5kZXggOTBlMDg2NTYxOC4uZTdhYzRmODc4 OSAxMDA2NDQKLS0tIGEvaHcvZGlzcGxheS9xeGwtcmVuZGVyLmMKKysrIGIvaHcvZGlzcGxheS9x eGwtcmVuZGVyLmMKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBxeGxfcmVuZGVyX3Jlc2l6ZShQQ0lR WExEZXZpY2UgKnF4bCkKICAgICAgICAgcXhsLT5ndWVzdF9wcmltYXJ5LmJpdHNfcHAgPSAzMjsK ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIl czogdW5oYW5kbGVkIGZvcm1hdDogJXhcbiIsIF9fRlVOQ1RJT05fXywKKyAgICAgICAgZnByaW50 ZihzdGRlcnIsICIlczogdW5oYW5kbGVkIGZvcm1hdDogJXhcbiIsIF9fZnVuY19fLAogICAgICAg ICAgICAgICAgIHF4bC0+Z3Vlc3RfcHJpbWFyeS5zdXJmYWNlLmZvcm1hdCk7CiAgICAgICAgIHF4 bC0+Z3Vlc3RfcHJpbWFyeS5ieXRlc19wcCA9IDQ7CiAgICAgICAgIHF4bC0+Z3Vlc3RfcHJpbWFy eS5iaXRzX3BwID0gMzI7CkBAIC0yNDgsNyArMjQ4LDcgQEAgc3RhdGljIFFFTVVDdXJzb3IgKnF4 bF9jdXJzb3IoUENJUVhMRGV2aWNlICpxeGwsIFFYTEN1cnNvciAqY3Vyc29yLAogICAgICAgICBi cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBub3QgaW1w bGVtZW50ZWQ6IHR5cGUgJWRcbiIsCi0gICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBjdXJz b3ItPmhlYWRlci50eXBlKTsKKyAgICAgICAgICAgICAgICBfX2Z1bmNfXywgY3Vyc29yLT5oZWFk ZXIudHlwZSk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgcmV0dXJuIGM7CkBAIC0y NzUsNyArMjc1LDcgQEAgaW50IHF4bF9yZW5kZXJfY3Vyc29yKFBDSVFYTERldmljZSAqcXhsLCBR WExDb21tYW5kRXh0ICpleHQpCiAgICAgfQogCiAgICAgaWYgKHF4bC0+ZGVidWcgPiAxICYmIGNt ZC0+dHlwZSAhPSBRWExfQ1VSU09SX01PVkUpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIl cyIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBfX2Z1bmNf Xyk7CiAgICAgICAgIHF4bF9sb2dfY21kX2N1cnNvcihxeGwsIGNtZCwgZXh0LT5ncm91cF9pZCk7 CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9ody9k aXNwbGF5L3F4bC5oIGIvaHcvZGlzcGxheS9xeGwuaAppbmRleCBmNjU1NmFkYjczLi43ZDFiNjAw MTRhIDEwMDY0NAotLS0gYS9ody9kaXNwbGF5L3F4bC5oCisrKyBiL2h3L2Rpc3BsYXkvcXhsLmgK QEAgLTEzMyw3ICsxMzMsNyBAQCB0eXBlZGVmIHN0cnVjdCBQQ0lRWExEZXZpY2UgewogI2RlZmlu ZSBQQ0lfUVhMKG9iaikgT0JKRUNUX0NIRUNLKFBDSVFYTERldmljZSwgKG9iaiksIFRZUEVfUENJ X1FYTCkKIAogI2RlZmluZSBQQU5JQ19PTih4KSBpZiAoKHgpKSB7ICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgICBwcmludGYoIiVzOiBQQU5JQyAlcyBmYWlsZWRcbiIsIF9fRlVOQ1RJT05f XywgI3gpOyBcCisgICAgcHJpbnRmKCIlczogUEFOSUMgJXMgZmFpbGVkXG4iLCBfX2Z1bmNfXywg I3gpOyBcCiAgICAgYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogfQogCmRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3RjNjM5M3hiLmMgYi9ody9kaXNw bGF5L3RjNjM5M3hiLmMKaW5kZXggNzRkMTBhZjNkNC4uNzlmMTYxNzQwYSAxMDA2NDQKLS0tIGEv aHcvZGlzcGxheS90YzYzOTN4Yi5jCisrKyBiL2h3L2Rpc3BsYXkvdGM2MzkzeGIuYwpAQCAtMTQ4 LDcgKzE0OCw3IEBAIHN0YXRpYyB2b2lkIHRjNjM5M3hiX2dwaW9fc2V0KHZvaWQgKm9wYXF1ZSwg aW50IGxpbmUsIGludCBsZXZlbCkKIC8vICAgIFRDNjM5M3hiU3RhdGUgKnMgPSBvcGFxdWU7CiAK ICAgICBpZiAobGluZSA+IFRDNjM5M1hCX0dQSU9TKSB7Ci0gICAgICAgIHByaW50ZigiJXM6IE5v IEdQSU8gcGluICVpXG4iLCBfX0ZVTkNUSU9OX18sIGxpbmUpOworICAgICAgICBwcmludGYoIiVz OiBObyBHUElPIHBpbiAlaVxuIiwgX19mdW5jX18sIGxpbmUpOwogICAgICAgICByZXR1cm47CiAg ICAgfQogCmRpZmYgLS1naXQgYS9ody9kaXNwbGF5L3hlbmZiLmMgYi9ody9kaXNwbGF5L3hlbmZi LmMKaW5kZXggZGY4Yjc4ZjZmNC4uNmRjOThkMDQ5NyAxMDA2NDQKLS0tIGEvaHcvZGlzcGxheS94 ZW5mYi5jCisrKyBiL2h3L2Rpc3BsYXkveGVuZmIuYwpAQCAtNjQzLDcgKzY0Myw3IEBAIHN0YXRp YyB2b2lkIHhlbmZiX2d1ZXN0X2NvcHkoc3RydWN0IFhlbkZCICp4ZW5mYiwgaW50IHgsIGludCB5 LCBpbnQgdywgaW50IGgpCiAgICAgfQogICAgIGlmIChvb3BzKSAvKiBzaG91bGQgbm90IGhhcHBl biAqLwogICAgICAgICB4ZW5fcHZfcHJpbnRmKCZ4ZW5mYi0+Yy54ZW5kZXYsIDAsICIlczogb29w czogY29udmVydCAlZCAtPiAlZCBicHA/XG4iLAotICAgICAgICAgICAgICAgICAgICAgIF9fRlVO Q1RJT05fXywgeGVuZmItPmRlcHRoLCBicHApOworICAgICAgICAgICAgICAgICAgICAgIF9fZnVu Y19fLCB4ZW5mYi0+ZGVwdGgsIGJwcCk7CiAKICAgICBkcHlfZ2Z4X3VwZGF0ZSh4ZW5mYi0+Y29u LCB4LCB5LCB3LCBoKTsKIH0KZGlmZiAtLWdpdCBhL2h3L2RtYS9vbWFwX2RtYS5jIGIvaHcvZG1h L29tYXBfZG1hLmMKaW5kZXggNDVkZmU3YWFkZC4uYWJkMThjNjdlYSAxMDA2NDQKLS0tIGEvaHcv ZG1hL29tYXBfZG1hLmMKKysrIGIvaHcvZG1hL29tYXBfZG1hLmMKQEAgLTE2MSw3ICsxNjEsNyBA QCBzdGF0aWMgdm9pZCBvbWFwX2RtYV9jaGFubmVsX2xvYWQoc3RydWN0IG9tYXBfZG1hX2NoYW5u ZWxfcyAqY2gpCiAgICAgYS0+cGNrX2VsZW1lbnQgPSAwOwogCiAgICAgaWYgKHVubGlrZWx5KCFj aC0+ZWxlbWVudHMgfHwgIWNoLT5mcmFtZXMpKSB7Ci0gICAgICAgIHByaW50ZigiJXM6IGJhZCBE TUEgcmVxdWVzdFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgcHJpbnRmKCIlczogYmFkIERN QSByZXF1ZXN0XG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUx OSw3ICs1MTksNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2RtYV90cmFuc2Zlcl9zZXR1cChzdHJ1Y3Qg c29jX2RtYV9jaF9zICpkbWEpCiAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgICAgIHBy aW50ZigiJXM6IEJ1cyB0aW1lLW91dCBpbiBETUElaSBvcGVyYXRpb25cbiIsCi0gICAgICAgICAg ICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGRtYS0+bnVtKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIF9fZnVuY19fLCBkbWEtPm51bSk7CiAgICAgfQogCiAgICAgbWluX2VsZW1zID0gSU5U X01BWDsKQEAgLTg3OSwxNCArODc5LDE0IEBAIHN0YXRpYyBpbnQgb21hcF9kbWFfY2hfcmVnX3dy aXRlKHN0cnVjdCBvbWFwX2RtYV9zICpzLAogICAgICAgICBjaC0+cGFja1swXSA9ICh2YWx1ZSAm IDB4MDA0MCkgPj4gNjsKICAgICAgICAgY2gtPnBvcnRbMF0gPSAoZW51bSBvbWFwX2RtYV9wb3J0 KSAoKHZhbHVlICYgMHgwMDNjKSA+PiAyKTsKICAgICAgICAgaWYgKGNoLT5wb3J0WzBdID49IF9f b21hcF9kbWFfcG9ydF9sYXN0KQotICAgICAgICAgICAgcHJpbnRmKCIlczogaW52YWxpZCBETUEg cG9ydCAlaVxuIiwgX19GVU5DVElPTl9fLAorICAgICAgICAgICAgcHJpbnRmKCIlczogaW52YWxp ZCBETUEgcG9ydCAlaVxuIiwgX19mdW5jX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2gtPnBvcnRbMF0pOwogICAgICAgICBpZiAoY2gtPnBvcnRbMV0gPj0gX19vbWFwX2RtYV9wb3J0 X2xhc3QpCi0gICAgICAgICAgICBwcmludGYoIiVzOiBpbnZhbGlkIERNQSBwb3J0ICVpXG4iLCBf X0ZVTkNUSU9OX18sCisgICAgICAgICAgICBwcmludGYoIiVzOiBpbnZhbGlkIERNQSBwb3J0ICVp XG4iLCBfX2Z1bmNfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaC0+cG9ydFsxXSk7 CiAgICAgICAgIGNoLT5kYXRhX3R5cGUgPSAxIDw8ICh2YWx1ZSAmIDMpOwogICAgICAgICBpZiAo KHZhbHVlICYgMykgPT0gMykgewotICAgICAgICAgICAgcHJpbnRmKCIlczogYmFkIGRhdGFfdHlw ZSBmb3IgRE1BIGNoYW5uZWxcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYo IiVzOiBiYWQgZGF0YV90eXBlIGZvciBETUEgY2hhbm5lbFxuIiwgX19mdW5jX18pOwogICAgICAg ICAgICAgY2gtPmRhdGFfdHlwZSA+Pj0gMTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAg LTE0NDAsNyArMTQ0MCw3IEBAIHN0YXRpYyBpbnQgb21hcF9kbWFfc3lzX3JlYWQoc3RydWN0IG9t YXBfZG1hX3MgKnMsIGludCBvZmZzZXQsCiAgICAgY2FzZSAweDQ4MjoJLyogRE1BX1BDaDFfU1Ig Ki8KICAgICBjYXNlIDB4NGMwOgkvKiBETUFfUENoRF9TUl8wICovCiAgICAgICAgIHByaW50Zigi JXM6IFBoeXNpY2FsIENoYW5uZWwgU3RhdHVzIFJlZ2lzdGVycyBub3QgaW1wbGVtZW50ZWQuXG4i LAotICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgICAgIF9fZnVuY19f KTsKICAgICAgICAgKnJldCA9IDB4ZmY7CiAgICAgICAgIGJyZWFrOwogCkBAIC0xODk4LDEzICsx ODk4LDEzIEBAIHN0YXRpYyB2b2lkIG9tYXBfZG1hNF93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRk ciBhZGRyLAogICAgICAgICAgICAgb21hcF9kbWFfcmVzZXQocy0+ZG1hKTsKICAgICAgICAgcy0+ b2NwID0gdmFsdWUgJiAweDMzMjE7CiAgICAgICAgIGlmICgoKHMtPm9jcCA+PiAxMikgJiAzKSA9 PSAzKQkJCQkvKiBNSURMRU1PREUgKi8KLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IGludmFsaWQgRE1BIHBvd2VyIG1vZGVcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIERNQSBwb3dlciBtb2RlXG4iLCBfX2Z1bmNfXyk7 CiAgICAgICAgIHJldHVybjsKIAogICAgIGNhc2UgMHg3ODoJLyogRE1BNF9HQ1IgKi8KICAgICAg ICAgcy0+Z2NyID0gdmFsdWUgJiAweDAwZmYwMGZmOwogCWlmICgodmFsdWUgJiAweGZmKSA9PSAw eDAwKQkJLyogTUFYX0NIQU5ORUxfRklGT19ERVBUSCAqLwotICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICIlczogd3JvbmcgRklGTyBkZXB0aCBpbiBHQ1JcbiIsIF9fRlVOQ1RJT05fXyk7Cisg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB3cm9uZyBGSUZPIGRlcHRoIGluIEdDUlxu IiwgX19mdW5jX18pOwogICAgICAgICByZXR1cm47CiAKICAgICBjYXNlIDB4ODAgLi4uIDB4ZmZm OgpAQCAtMTkzNSw3ICsxOTM1LDcgQEAgc3RhdGljIHZvaWQgb21hcF9kbWE0X3dyaXRlKHZvaWQg Km9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIGNoLT5zcmNfc3luYyA9ICh2YWx1ZSA+PiAy NCkgJiAxOwkvKiBYWFggRm9yIENhbURNQSBtdXN0IGJlIDEgKi8KICAgICAgICAgaWYgKGNoLT5i dWZfZGlzYWJsZSAmJiAhY2gtPnNyY19zeW5jKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs ICIlczogQnVmZmVyaW5nIGRpc2FibGUgaXMgbm90IGFsbG93ZWQgaW4gIgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJkZXN0aW5hdGlvbiBzeW5jaHJvbmlzZWQgbW9kZVxuIiwgX19GVU5D VElPTl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzdGluYXRpb24gc3luY2hy b25pc2VkIG1vZGVcbiIsIF9fZnVuY19fKTsKICAgICAgICAgY2gtPnByZWZldGNoID0gKHZhbHVl ID4+IDIzKSAmIDE7CiAgICAgICAgIGNoLT5icyA9ICh2YWx1ZSA+PiAxOCkgJiAxOwogICAgICAg ICBjaC0+dHJhbnNwYXJlbnRfY29weSA9ICh2YWx1ZSA+PiAxNykgJiAxOwpAQCAtMTk0Nyw3ICsx OTQ3LDcgQEAgc3RhdGljIHZvaWQgb21hcF9kbWE0X3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRy IGFkZHIsCiAgICAgICAgIGNoLT5mcyA9ICh2YWx1ZSAmIDB4MDAyMCkgPj4gNTsKICAgICAgICAg aWYgKGNoLT5mcyAmJiBjaC0+YnMgJiYgY2gtPm1vZGVbMF0gJiYgY2gtPm1vZGVbMV0pCiAgICAg ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBGb3IgYSBwYWNrZXQgdHJhbnNmZXIgYXQgbGVh c3Qgb25lIHBvcnQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGNvbnN0 YW50LWFkZHJlc3NlZFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAibXVzdCBiZSBjb25zdGFudC1hZGRyZXNzZWRcbiIsIF9fZnVuY19fKTsKICAgICAgICAg Y2gtPnN5bmMgPSAodmFsdWUgJiAweDAwMWYpIHwgKCh2YWx1ZSA+PiAxNCkgJiAweDAwNjApOwog ICAgICAgICAvKiBYWFggbXVzdCBiZSAweDAxIGZvciBDYW1ETUEgKi8KIApAQCAtMTk3OCw3ICsx OTc4LDcgQEAgc3RhdGljIHZvaWQgb21hcF9kbWE0X3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRy IGFkZHIsCiAgICAgICAgIGNoLT5lbmRpYW5fbG9ja1sxXSA9KHZhbHVlID4+IDE4KSAmIDE7CiAg ICAgICAgIGlmIChjaC0+ZW5kaWFuWzBdICE9IGNoLT5lbmRpYW5bMV0pCiAgICAgICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIiVzOiBETUEgZW5kaWFubmVzcyBjb252ZXJzaW9uIGVuYWJsZSBhdHRl bXB0XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOwogICAgICAgICBjaC0+d3JpdGVfbW9k ZSA9ICh2YWx1ZSA+PiAxNikgJiAzOwogICAgICAgICBjaC0+YnVyc3RbMV0gPSAodmFsdWUgJiAw eGMwMDApID4+IDE0OwogICAgICAgICBjaC0+cGFja1sxXSA9ICh2YWx1ZSAmIDB4MjAwMCkgPj4g MTM7CkBAIC0xOTg4LDEwICsxOTg4LDEwIEBAIHN0YXRpYyB2b2lkIG9tYXBfZG1hNF93cml0ZSh2 b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBjaC0+dHJhbnNsYXRlWzBdID0gKHZh bHVlICYgMHgwMDNjKSA+PiAyOwogICAgICAgICBpZiAoY2gtPnRyYW5zbGF0ZVswXSB8IGNoLT50 cmFuc2xhdGVbMV0pCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgTVJlcUFk ZHJlc3NUcmFuc2xhdGUgc2lkZWJhbmQgc2lnbmFsXG4iLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5j X18pOwogICAgICAgICBjaC0+ZGF0YV90eXBlID0gMSA8PCAodmFsdWUgJiAzKTsKICAgICAgICAg aWYgKCh2YWx1ZSAmIDMpID09IDMpIHsKLSAgICAgICAgICAgIHByaW50ZigiJXM6IGJhZCBkYXRh X3R5cGUgZm9yIERNQSBjaGFubmVsXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgcHJp bnRmKCIlczogYmFkIGRhdGFfdHlwZSBmb3IgRE1BIGNoYW5uZWxcbiIsIF9fZnVuY19fKTsKICAg ICAgICAgICAgIGNoLT5kYXRhX3R5cGUgPj49IDE7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7 CmRpZmYgLS1naXQgYS9ody9kbWEvcHhhMnh4X2RtYS5jIGIvaHcvZG1hL3B4YTJ4eF9kbWEuYwpp bmRleCA2MzRhNDMyOGYwLi5mNGViMjZjZjE3IDEwMDY0NAotLS0gYS9ody9kbWEvcHhhMnh4X2Rt YS5jCisrKyBiL2h3L2RtYS9weGEyeHhfZG1hLmMKQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMg aW5saW5lIHZvaWQgcHhhMnh4X2RtYV9kZXNjcmlwdG9yX2ZldGNoKAogICAgICAgICBzLT5jaGFu W2NoXS5kZXN0ICY9IH4zOwogCiAgICAgaWYgKHMtPmNoYW5bY2hdLmNtZCAmIChEQ01EX0NNUEVO IHwgRENNRF9GTFlCWVMgfCBEQ01EX0ZMWUJZVCkpCi0gICAgICAgIHByaW50ZigiJXM6IHVuc3Vw cG9ydGVkIG1vZGUgaW4gY2hhbm5lbCAlaVxuIiwgX19GVU5DVElPTl9fLCBjaCk7CisgICAgICAg IHByaW50ZigiJXM6IHVuc3VwcG9ydGVkIG1vZGUgaW4gY2hhbm5lbCAlaVxuIiwgX19mdW5jX18s IGNoKTsKIAogICAgIGlmIChzLT5jaGFuW2NoXS5jbWQgJiBEQ01EX1NUQVJUSVJRRU4pCiAgICAg ICAgIHMtPmNoYW5bY2hdLnN0YXRlIHw9IERDU1JfU1RBUlRJTlRSOwpAQCAtMjY0LDcgKzI2NCw3 IEBAIHN0YXRpYyB1aW50NjRfdCBweGEyeHhfZG1hX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIg b2Zmc2V0LAogICAgIHVuc2lnbmVkIGludCBjaGFubmVsOwogCiAgICAgaWYgKHNpemUgIT0gNCkg ewotICAgICAgICBod19lcnJvcigiJXM6IEJhZCBhY2Nlc3Mgd2lkdGhcbiIsIF9fRlVOQ1RJT05f Xyk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIGFjY2VzcyB3aWR0aFxuIiwgX19mdW5jX18p OwogICAgICAgICByZXR1cm4gNTsKICAgICB9CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMg dWludDY0X3QgcHhhMnh4X2RtYV9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKICAg ICAgICAgfQogICAgIH0KIAotICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNldCAweCIgVEFSR0VU X0ZNVF9wbHggIlxuIiwgX19GVU5DVElPTl9fLCBvZmZzZXQpOworICAgIGh3X2Vycm9yKCIlczog QmFkIG9mZnNldCAweCIgVEFSR0VUX0ZNVF9wbHggIlxuIiwgX19mdW5jX18sIG9mZnNldCk7CiAg ICAgcmV0dXJuIDc7CiB9CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhf ZG1hX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKICAgICB1bnNpZ25lZCBpbnQg Y2hhbm5lbDsKIAogICAgIGlmIChzaXplICE9IDQpIHsKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBC YWQgYWNjZXNzIHdpZHRoXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBod19lcnJvcigiJXM6 IEJhZCBhY2Nlc3Mgd2lkdGhcbiIsIF9fZnVuY19fKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K IApAQCAtMzM3LDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9kbWFfd3JpdGUodm9pZCAq b3BhcXVlLCBod2FkZHIgb2Zmc2V0LAogICAgICAgICBpZiAodmFsdWUgJiBEUkNNUl9NQVBWTEQp CiAgICAgICAgICAgICBpZiAoKHZhbHVlICYgRFJDTVJfQ0hMTlVNKSA+IHMtPmNoYW5uZWxzKQog ICAgICAgICAgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIERNQSBjaGFubmVsICVpXG4iLAotICAg ICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgKHVuc2lnbmVkKXZhbHVlICYgRFJD TVJfQ0hMTlVNKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgKHVuc2lnbmVk KXZhbHVlICYgRFJDTVJfQ0hMTlVNKTsKIAogICAgICAgICBzLT5yZXFbY2hhbm5lbF0gPSB2YWx1 ZTsKICAgICAgICAgYnJlYWs7CkBAIC00MTYsNyArNDE2LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4 X2RtYV93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsCiAgICAgICAgICAgICBicmVh azsKICAgICAgICAgfQogICAgIGZhaWw6Ci0gICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNl dCAiIFRBUkdFVF9GTVRfcGx4ICJcbiIsIF9fRlVOQ1RJT05fXywgb2Zmc2V0KTsKKyAgICAgICAg aHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgVEFSR0VUX0ZNVF9wbHggIlxuIiwgX19mdW5jX18s IG9mZnNldCk7CiAgICAgfQogfQogCkBAIC00MzEsNyArNDMxLDcgQEAgc3RhdGljIHZvaWQgcHhh Mnh4X2RtYV9yZXF1ZXN0KHZvaWQgKm9wYXF1ZSwgaW50IHJlcV9udW0sIGludCBvbikKICAgICBQ WEEyeHhETUFTdGF0ZSAqcyA9IG9wYXF1ZTsKICAgICBpbnQgY2g7CiAgICAgaWYgKHJlcV9udW0g PCAwIHx8IHJlcV9udW0gPj0gUFhBMlhYX0RNQV9OVU1fUkVRVUVTVFMpCi0gICAgICAgIGh3X2Vy cm9yKCIlczogQmFkIERNQSByZXF1ZXN0ICVpXG4iLCBfX0ZVTkNUSU9OX18sIHJlcV9udW0pOwor ICAgICAgICBod19lcnJvcigiJXM6IEJhZCBETUEgcmVxdWVzdCAlaVxuIiwgX19mdW5jX18sIHJl cV9udW0pOwogCiAgICAgaWYgKCEocy0+cmVxW3JlcV9udW1dICYgRFJDTVJfTUFQVkxEKSkKICAg ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvaHcvZ3Bpby9tYXg3MzEwLmMgYi9ody9ncGlvL21h eDczMTAuYwppbmRleCBmODJlM2U2NTU1Li40YzIwM2VmNWM2IDEwMDY0NAotLS0gYS9ody9ncGlv L21heDczMTAuYworKysgYi9ody9ncGlvL21heDczMTAuYwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0 aWMgaW50IG1heDczMTBfcngoSTJDU2xhdmUgKmkyYykKIAogICAgIGRlZmF1bHQ6CiAjaWZkZWYg VkVSQk9TRQotICAgICAgICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyICUwMnhcbiIsIF9f RlVOQ1RJT05fXywgcy0+Y29tbWFuZCk7CisgICAgICAgIHByaW50ZigiJXM6IHVua25vd24gcmVn aXN0ZXIgJTAyeFxuIiwgX19mdW5jX18sIHMtPmNvbW1hbmQpOwogI2VuZGlmCiAgICAgICAgIGJy ZWFrOwogICAgIH0KQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGludCBtYXg3MzEwX3R4KEkyQ1Ns YXZlICppMmMsIHVpbnQ4X3QgZGF0YSkKIAogICAgIGlmIChzLT5sZW4gKysgPiAxKSB7CiAjaWZk ZWYgVkVSQk9TRQotICAgICAgICBwcmludGYoIiVzOiBtZXNzYWdlIHRvbyBsb25nICglaSBieXRl cylcbiIsIF9fRlVOQ1RJT05fXywgcy0+bGVuKTsKKyAgICAgICAgcHJpbnRmKCIlczogbWVzc2Fn ZSB0b28gbG9uZyAoJWkgYnl0ZXMpXG4iLCBfX2Z1bmNfXywgcy0+bGVuKTsKICNlbmRpZgogICAg ICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xMjEsNyArMTIxLDcgQEAgc3RhdGljIGludCBtYXg3 MzEwX3R4KEkyQ1NsYXZlICppMmMsIHVpbnQ4X3QgZGF0YSkKIAlicmVhazsKICAgICBkZWZhdWx0 OgogI2lmZGVmIFZFUkJPU0UKLSAgICAgICAgcHJpbnRmKCIlczogdW5rbm93biByZWdpc3RlciAl MDJ4XG4iLCBfX0ZVTkNUSU9OX18sIHMtPmNvbW1hbmQpOworICAgICAgICBwcmludGYoIiVzOiB1 bmtub3duIHJlZ2lzdGVyICUwMnhcbiIsIF9fZnVuY19fLCBzLT5jb21tYW5kKTsKICNlbmRpZgog ICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xNDEsNyArMTQxLDcgQEAgc3RhdGljIGludCBt YXg3MzEwX2V2ZW50KEkyQ1NsYXZlICppMmMsIGVudW0gaTJjX2V2ZW50IGV2ZW50KQogICAgIGNh c2UgSTJDX0ZJTklTSDoKICNpZmRlZiBWRVJCT1NFCiAgICAgICAgIGlmIChzLT5sZW4gPT0gMSkK LSAgICAgICAgICAgIHByaW50ZigiJXM6IG1lc3NhZ2UgdG9vIHNob3J0ICglaSBieXRlcylcbiIs IF9fRlVOQ1RJT05fXywgcy0+bGVuKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6IG1lc3NhZ2Ug dG9vIHNob3J0ICglaSBieXRlcylcbiIsIF9fZnVuY19fLCBzLT5sZW4pOwogI2VuZGlmCiAgICAg ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9ody9ncGlvL29tYXBfZ3Bpby5j IGIvaHcvZ3Bpby9vbWFwX2dwaW8uYwppbmRleCAxNzg5MWUyZDBmLi4wODQ3MjE5M2I1IDEwMDY0 NAotLS0gYS9ody9ncGlvL29tYXBfZ3Bpby5jCisrKyBiL2h3L2dwaW8vb21hcF9ncGlvLmMKQEAg LTM5OSw3ICszOTksNyBAQCBzdGF0aWMgdm9pZCBvbWFwMl9ncGlvX21vZHVsZV93cml0ZSh2b2lk ICpvcGFxdWUsIGh3YWRkciBhZGRyLAogCiAgICAgY2FzZSAweDEwOgkvKiBHUElPX1NZU0NPTkZJ RyAqLwogICAgICAgICBpZiAoKCh2YWx1ZSA+PiAzKSAmIDMpID09IDMpCi0gICAgICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgSURMRU1PREUgdmFsdWVcbiIsIF9fRlVOQ1RJT05fXyk7 CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgSURMRU1PREUgdmFsdWVcbiIs IF9fZnVuY19fKTsKICAgICAgICAgaWYgKHZhbHVlICYgMikKICAgICAgICAgICAgIG9tYXAyX2dw aW9fbW9kdWxlX3Jlc2V0KHMpOwogICAgICAgICBzLT5jb25maWdbMF0gPSB2YWx1ZSAmIDB4MWQ7 CmRpZmYgLS1naXQgYS9ody9pMmMvb21hcF9pMmMuYyBiL2h3L2kyYy9vbWFwX2kyYy5jCmluZGV4 IDEyMjY0ZWUwZjUuLjI2ZTNlNWViZjYgMTAwNjQ0Ci0tLSBhL2h3L2kyYy9vbWFwX2kyYy5jCisr KyBiL2h3L2kyYy9vbWFwX2kyYy5jCkBAIC0zNDEsMTIgKzM0MSwxMiBAQCBzdGF0aWMgdm9pZCBv bWFwX2kyY193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICB9CiAgICAg ICAgIGlmICgodmFsdWUgJiAoMSA8PCAxNSkpICYmICEodmFsdWUgJiAoMSA8PCAxMCkpKSB7CS8q IE1TVCAqLwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogSV4yQyBzbGF2ZSBtb2Rl IG5vdCBzdXBwb3J0ZWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElP Tl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoKHZhbHVlICYgKDEgPDwgMTUpKSAmJiB2 YWx1ZSAmICgxIDw8IDgpKSB7CQkvKiBYQSAqLwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs ICIlczogMTAtYml0IGFkZHJlc3NpbmcgbW9kZSBub3Qgc3VwcG9ydGVkXG4iLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19mdW5jX18pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg aWYgKCh2YWx1ZSAmICgxIDw8IDE1KSkgJiYgdmFsdWUgJiAoMSA8PCAwKSkgewkJLyogU1RUICov CkBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIHZvaWQgb21hcF9pMmNfd3JpdGUodm9pZCAqb3Bh cXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgICAgICAgICBvbWFwX2kyY19pbnRlcnJ1cHRzX3Vw ZGF0ZShzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgaWYgKHZhbHVlICYgKDEgPDwgMTUpKQkJ CQkJLyogU1RfRU4gKi8KLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IFN5c3RlbSBU ZXN0IG5vdCBzdXBwb3J0ZWRcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIiVzOiBTeXN0ZW0gVGVzdCBub3Qgc3VwcG9ydGVkXG4iLCBfX2Z1bmNfXyk7CiAg ICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL2h3L2lkZS9haGNpLmMg Yi9ody9pZGUvYWhjaS5jCmluZGV4IDMyZDEyOTZhNjQuLmMyNWUyOTNkODggMTAwNjQ0Ci0tLSBh L2h3L2lkZS9haGNpLmMKKysrIGIvaHcvaWRlL2FoY2kuYwpAQCAtMTA1Myw3ICsxMDUzLDcgQEAg c3RhdGljIHZvaWQgcHJvY2Vzc19uY3FfY29tbWFuZChBSENJU3RhdGUgKnMsIGludCBwb3J0LCB1 aW50OF90ICpjbWRfZmlzLAogICAgIGdfYXNzZXJ0KGlzX25jcShuY3FfZmlzLT5jb21tYW5kKSk7 CiAgICAgaWYgKG5jcV90ZnMtPnVzZWQpIHsKICAgICAgICAgLyogZXJyb3IgLSBhbHJlYWR5IGlu IHVzZSAqLwotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB0YWcgJWQgYWxyZWFkeSB1c2Vk XG4iLCBfX0ZVTkNUSU9OX18sIHRhZyk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHRh ZyAlZCBhbHJlYWR5IHVzZWRcbiIsIF9fZnVuY19fLCB0YWcpOwogICAgICAgICByZXR1cm47CiAg ICAgfQogCmRpZmYgLS1naXQgYS9ody9pZGUvbWljcm9kcml2ZS5jIGIvaHcvaWRlL21pY3JvZHJp dmUuYwppbmRleCAxNzkxN2MwYjMwLi4zMDkwMjU0NzgzIDEwMDY0NAotLS0gYS9ody9pZGUvbWlj cm9kcml2ZS5jCisrKyBiL2h3L2lkZS9taWNyb2RyaXZlLmMKQEAgLTE1Niw3ICsxNTYsNyBAQCBz dGF0aWMgdWludDhfdCBtZF9hdHRyX3JlYWQoUENNQ0lBQ2FyZFN0YXRlICpjYXJkLCB1aW50MzJf dCBhdCkKICAgICAgICAgcmV0dXJuIDB4MDA7CiAjaWZkZWYgVkVSQk9TRQogICAgIGRlZmF1bHQ6 Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCBhdHRyaWJ1dGUgc3BhY2UgcmVnaXN0ZXIgJTAyeFxu IiwgX19GVU5DVElPTl9fLCBhdCk7CisgICAgICAgIHByaW50ZigiJXM6IEJhZCBhdHRyaWJ1dGUg c3BhY2UgcmVnaXN0ZXIgJTAyeFxuIiwgX19mdW5jX18sIGF0KTsKICNlbmRpZgogICAgIH0KIApA QCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyB2b2lkIG1kX2F0dHJfd3JpdGUoUENNQ0lBQ2FyZFN0 YXRlICpjYXJkLCB1aW50MzJfdCBhdCwgdWludDhfdCB2YWx1ZSkKICAgICBjYXNlIDB4MDY6CS8q IFNvY2tldCBhbmQgQ29weSBSZWdpc3RlciAqLwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0 OgotICAgICAgICBwcmludGYoIiVzOiBCYWQgYXR0cmlidXRlIHNwYWNlIHJlZ2lzdGVyICUwMnhc biIsIF9fRlVOQ1RJT05fXywgYXQpOworICAgICAgICBwcmludGYoIiVzOiBCYWQgYXR0cmlidXRl IHNwYWNlIHJlZ2lzdGVyICUwMnhcbiIsIF9fZnVuY19fLCBhdCk7CiAgICAgfQogfQogCmRpZmYg LS1naXQgYS9ody9pbnB1dC9sbTgzMnguYyBiL2h3L2lucHV0L2xtODMyeC5jCmluZGV4IDIzNDA1 MjNkYTAuLmQzOTk1MzEyNmIgMTAwNjQ0Ci0tLSBhL2h3L2lucHV0L2xtODMyeC5jCisrKyBiL2h3 L2lucHV0L2xtODMyeC5jCkBAIC0yMzksNyArMjM5LDcgQEAgc3RhdGljIHVpbnQ4X3QgbG1fa2Jk X3JlYWQoTE04MjNLYmRTdGF0ZSAqcywgaW50IHJlZywgaW50IGJ5dGUpCiAKICAgICBkZWZhdWx0 OgogICAgICAgICBsbV9rYmRfZXJyb3IocywgRVJSX0NNRFVOSyk7Ci0gICAgICAgIGZwcmludGYo c3RkZXJyLCAiJXM6IHVua25vd24gY29tbWFuZCAlMDJ4XG4iLCBfX0ZVTkNUSU9OX18sIHJlZyk7 CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHVua25vd24gY29tbWFuZCAlMDJ4XG4iLCBf X2Z1bmNfXywgcmVnKTsKICAgICAgICAgcmV0dXJuIDB4MDA7CiAgICAgfQogCkBAIC0zMzEsNyAr MzMxLDcgQEAgc3RhdGljIHZvaWQgbG1fa2JkX3dyaXRlKExNODIzS2JkU3RhdGUgKnMsIGludCBy ZWcsIGludCBieXRlLCB1aW50OF90IHZhbHVlKQogICAgICAgICBpZiAoKHZhbHVlICYgMykgJiYg KHZhbHVlICYgMykgIT0gMykgewogICAgICAgICAgICAgbG1fa2JkX2Vycm9yKHMsIEVSUl9CQURQ QVIpOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaW52YWxpZCBjbG9jayBzZXR0 aW5nIGluIFJDUFdNXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05f Xyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOwogICAgICAgICB9CiAg ICAgICAgIC8qIFRPRE86IFZhbGlkYXRlIHRoYXQgdGhlIGNvbW1hbmQgaXMgb25seSBpc3N1ZWQg b25jZSAqLwogICAgICAgICBicmVhazsKQEAgLTM3OCw3ICszNzgsNyBAQCBzdGF0aWMgdm9pZCBs bV9rYmRfd3JpdGUoTE04MjNLYmRTdGF0ZSAqcywgaW50IHJlZywgaW50IGJ5dGUsIHVpbnQ4X3Qg dmFsdWUpCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGxtX2tiZF9lcnJv cihzLCBFUlJfQ01EVU5LKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdW5rbm93biBj b21tYW5kICUwMnhcbiIsIF9fRlVOQ1RJT05fXywgcmVnKTsKKyAgICAgICAgZnByaW50ZihzdGRl cnIsICIlczogdW5rbm93biBjb21tYW5kICUwMnhcbiIsIF9fZnVuY19fLCByZWcpOwogICAgICAg ICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9ody9pbnB1dC9weGEyeHhfa2V5cGFkLmMg Yi9ody9pbnB1dC9weGEyeHhfa2V5cGFkLmMKaW5kZXggMmI3MGJiYjk1Yy4uOTNkYjllZDI1YiAx MDA2NDQKLS0tIGEvaHcvaW5wdXQvcHhhMnh4X2tleXBhZC5jCisrKyBiL2h3L2lucHV0L3B4YTJ4 eF9rZXlwYWQuYwpAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB1aW50NjRfdCBweGEyeHhfa2V5 cGFkX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIgb2Zmc2V0LAogICAgICAgICByZXR1cm4gcy0+ a3BrZGk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGh3X2Vycm9yKCIl czogQmFkIG9mZnNldCAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBvZmZzZXQpOworICAg ICAgICBod19lcnJvcigiJXM6IEJhZCBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBv ZmZzZXQpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMjc4LDcgKzI3OCw3IEBAIHN0YXRp YyB2b2lkIHB4YTJ4eF9rZXlwYWRfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgb2Zmc2V0LAog ICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGh3X2Vycm9yKCIlczogQmFk IG9mZnNldCAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBvZmZzZXQpOworICAgICAgICBo d19lcnJvcigiJXM6IEJhZCBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBvZmZzZXQp OwogICAgIH0KIH0KIApAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgcHhhMjd4X3JlZ2lzdGVyX2tl eXBhZChQWEEyeHhLZXlQYWRTdGF0ZSAqa3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGtleW1hcCAqbWFwLCBpbnQgc2l6ZSkKIHsKICAgICBpZighbWFwIHx8IHNp emUgPCAweDgwKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgLSBObyBQWEEga2V5cGFk IG1hcCBkZWZpbmVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IiVzIC0gTm8gUFhBIGtleXBhZCBtYXAgZGVmaW5lZFxuIiwgX19mdW5jX18pOwogICAgICAgICBl eGl0KC0xKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2h3L2lucHV0L3RzYzIwMDUuYyBiL2h3L2lu cHV0L3RzYzIwMDUuYwppbmRleCBlYjUzMjBhZjQwLi43OTkwOTU0YjZjIDEwMDY0NAotLS0gYS9o dy9pbnB1dC90c2MyMDA1LmMKKysrIGIvaHcvaW5wdXQvdHNjMjAwNS5jCkBAIC0yMDEsNyArMjAx LDcgQEAgc3RhdGljIHZvaWQgdHNjMjAwNV93cml0ZShUU0MyMDA1U3RhdGUgKnMsIGludCByZWcs IHVpbnQxNl90IGRhdGEpCiAgICAgICAgIGlmIChzLT5lbmFibGVkICE9ICEoZGF0YSAmIDB4NDAw MCkpIHsKICAgICAgICAgICAgIHMtPmVuYWJsZWQgPSAhKGRhdGEgJiAweDQwMDApOwogICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdG91Y2hzY3JlZW4gc2Vuc2UgJXNhYmxlZFxuIiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIHMtPmVuYWJsZWQgPyAi ZW4iIDogImRpcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBzLT5l bmFibGVkID8gImVuIiA6ICJkaXMiKTsKICAgICAgICAgICAgIGlmIChzLT5idXN5ICYmICFzLT5l bmFibGVkKQogICAgICAgICAgICAgICAgIHRpbWVyX2RlbChzLT50aW1lcik7CiAgICAgICAgICAg ICBzLT5idXN5ID0gcy0+YnVzeSAmJiBzLT5lbmFibGVkOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHN0 YXRpYyB2b2lkIHRzYzIwMDVfd3JpdGUoVFNDMjAwNVN0YXRlICpzLCBpbnQgcmVnLCB1aW50MTZf dCBkYXRhKQogICAgICAgICBzLT50aW1pbmdbMF0gPSBkYXRhICYgMHgxZmZmOwogICAgICAgICBp ZiAoKHMtPnRpbWluZ1swXSA+PiAxMSkgPT0gMykKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy LCAiJXM6IGlsbGVnYWwgY29udmVyc2lvbiBjbG9jayBzZXR0aW5nXG4iLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19mdW5jX18pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDB4ZDoJLyogQ0ZSMSAqLwog ICAgICAgICBzLT50aW1pbmdbMV0gPSBkYXRhICYgMHhmMDc7CkBAIC0yMjIsNyArMjIyLDcgQEAg c3RhdGljIHZvaWQgdHNjMjAwNV93cml0ZShUU0MyMDA1U3RhdGUgKnMsIGludCByZWcsIHVpbnQx Nl90IGRhdGEpCiAKICAgICBkZWZhdWx0OgogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB3 cml0ZSBpbnRvIHJlYWQtb25seSByZWdpc3RlciAleFxuIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgIF9fRlVOQ1RJT05fXywgcmVnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f LCByZWcpOwogICAgIH0KIH0KIApAQCAtMzM4LDcgKzMzOCw3IEBAIHN0YXRpYyB1aW50OF90IHRz YzIwMDVfdHhyeF93b3JkKHZvaWQgKm9wYXF1ZSwgdWludDhfdCB2YWx1ZSkKICAgICAgICAgICAg ICAgICBpZiAocy0+ZW5hYmxlZCAhPSAhKHZhbHVlICYgMSkpIHsKICAgICAgICAgICAgICAgICAg ICAgcy0+ZW5hYmxlZCA9ICEodmFsdWUgJiAxKTsKICAgICAgICAgICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsICIlczogdG91Y2hzY3JlZW4gc2Vuc2UgJXNhYmxlZFxuIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcy0+ZW5hYmxlZCA/ICJlbiIg OiAiZGlzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywg cy0+ZW5hYmxlZCA/ICJlbiIgOiAiZGlzIik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5i dXN5ICYmICFzLT5lbmFibGVkKQogICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJfZGVsKHMt PnRpbWVyKTsKICAgICAgICAgICAgICAgICAgICAgcy0+YnVzeSA9IHMtPmJ1c3kgJiYgcy0+ZW5h YmxlZDsKZGlmZiAtLWdpdCBhL2h3L2lucHV0L3RzYzIxMHguYyBiL2h3L2lucHV0L3RzYzIxMHgu YwppbmRleCBiMDY4MzQzNzcxLi5kNGIxOWMxODI1IDEwMDY0NAotLS0gYS9ody9pbnB1dC90c2My MTB4LmMKKysrIGIvaHcvaW5wdXQvdHNjMjEweC5jCkBAIC0yODcsNyArMjg3LDcgQEAgc3RhdGlj IHZvaWQgdHNjMjEwMl9hdWRpb19yYXRlX3VwZGF0ZShUU0MyMTB4U3RhdGUgKnMpCiAgICAgICAg ICAgICAgICAgICAgICAgICByYXRlLT5mc3JlZiA9PSAoKHMtPmF1ZGlvX2N0cmwzID4+IDEzKSAm IDEpKS8qIFJFRkZTICovCiAgICAgICAgICAgICBicmVhazsKICAgICBpZiAoIXJhdGUtPnJhdGUp IHsKLSAgICAgICAgcHJpbnRmKCIlczogdW5rbm93biBzYW1wbGluZyByYXRlIGNvbmZpZ3VyZWRc biIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIHByaW50ZigiJXM6IHVua25vd24gc2FtcGxpbmcg cmF0ZSBjb25maWd1cmVkXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK QEAgLTkxMyw3ICs5MTMsNyBAQCB1aW50MzJfdCB0c2MyMTB4X3R4cngodm9pZCAqb3BhcXVlLCB1 aW50MzJfdCB2YWx1ZSwgaW50IGxlbikKICAgICB1aW50MzJfdCByZXQgPSAwOwogCiAgICAgaWYg KGxlbiAhPSAxNikKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBGSVhNRTogYmFkIFNQSSB3b3JkIHdp ZHRoICVpXG4iLCBfX0ZVTkNUSU9OX18sIGxlbik7CisgICAgICAgIGh3X2Vycm9yKCIlczogRklY TUU6IGJhZCBTUEkgd29yZCB3aWR0aCAlaVxuIiwgX19mdW5jX18sIGxlbik7CiAKICAgICAvKiBU T0RPOiBzZXF1ZW50aWFsIHJlYWRzIGV0YyAtIGhvdyBkbyB3ZSBtYWtlIHN1cmUgdGhlIGhvc3Qg ZG9lc24ndAogICAgICAqIHVuaW50ZW50aW9uYWxseSByZWFkIG91dCBhIGNvbnZlcnNpb24gcmVz dWx0IGZyb20gYSByZWdpc3RlciB3aGlsZQpkaWZmIC0tZ2l0IGEvaHcvaW50Yy9vbWFwX2ludGMu YyBiL2h3L2ludGMvb21hcF9pbnRjLmMKaW5kZXggY2NkZGE4OWRhYi4uNjg0NGMxYWE4MyAxMDA2 NDQKLS0tIGEvaHcvaW50Yy9vbWFwX2ludGMuYworKysgYi9ody9pbnRjL29tYXBfaW50Yy5jCkBA IC01NDAsNyArNTQwLDcgQEAgc3RhdGljIHZvaWQgb21hcDJfaW50aF93cml0ZSh2b2lkICpvcGFx dWUsIGh3YWRkciBhZGRyLAogICAgICAgICAgKiBmb3IgZXZlcnkgcmVnaXN0ZXIsIHNlZSBDaGFw dGVyIDMgYW5kIDQgZm9yIHByaXZpbGVnZWQgbW9kZS4gICovCiAgICAgICAgIGlmICh2YWx1ZSAm IDEpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBwcm90ZWN0aW9uIG1vZGUgZW5h YmxlIGF0dGVtcHRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9f KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVy bjsKIAogICAgIGNhc2UgMHg1MDoJLyogSU5UQ19JRExFICovCmRpZmYgLS1naXQgYS9ody9pc2Ev dnQ4MmM2ODYuYyBiL2h3L2lzYS92dDgyYzY4Ni5jCmluZGV4IDUwZGM4M2RmNzcuLjcyYmY2NzQ0 MDMgMTAwNjQ0Ci0tLSBhL2h3L2lzYS92dDgyYzY4Ni5jCisrKyBiL2h3L2lzYS92dDgyYzY4Ni5j CkBAIC0zMCw3ICszMCw3IEBACiAvLyNkZWZpbmUgREVCVUdfVlQ4MkM2ODZCCiAKICNpZmRlZiBE RUJVR19WVDgyQzY4NkIKLSNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZnByaW50ZihzdGRlcnIs ICIlczogIiBmbXQsIF9fRlVOQ1RJT05fXywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRFBSSU5U RihmbXQsIC4uLikgZnByaW50ZihzdGRlcnIsICIlczogIiBmbXQsIF9fZnVuY19fLCAjI19fVkFf QVJHU19fKQogI2Vsc2UKICNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikKICNlbmRpZgpkaWZmIC0t Z2l0IGEvaHcvbWlwcy9ndDY0eHh4X3BjaS5jIGIvaHcvbWlwcy9ndDY0eHh4X3BjaS5jCmluZGV4 IGU4YjJlZWY2ODguLjQxYTc2OTA1NjAgMTAwNjQ0Ci0tLSBhL2h3L21pcHMvZ3Q2NHh4eF9wY2ku YworKysgYi9ody9taXBzL2d0NjR4eHhfcGNpLmMKQEAgLTMzLDcgKzMzLDcgQEAKIC8vI2RlZmlu ZSBERUJVRwogCiAjaWZkZWYgREVCVUcKLSNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZnByaW50 ZihzdGRlcnIsICIlczogIiBmbXQsIF9fRlVOQ1RJT05fXywgIyNfX1ZBX0FSR1NfXykKKyNkZWZp bmUgRFBSSU5URihmbXQsIC4uLikgZnByaW50ZihzdGRlcnIsICIlczogIiBmbXQsIF9fZnVuY19f LCAjI19fVkFfQVJHU19fKQogI2Vsc2UKICNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikKICNlbmRp ZgpkaWZmIC0tZ2l0IGEvaHcvbWlzYy9jYnVzLmMgYi9ody9taXNjL2NidXMuYwppbmRleCA2Nzcy NzRjZTNlLi4yNWUzMzdlYTc3IDEwMDY0NAotLS0gYS9ody9taXNjL2NidXMuYworKysgYi9ody9t aXNjL2NidXMuYwpAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgdm9pZCBjYnVzX2lvKENCdXNQcml2 ICpzKQogICAgICAgICBzLT5zbGF2ZVtzLT5hZGRyXS0+aW8ocy0+c2xhdmVbcy0+YWRkcl0tPm9w YXF1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnJ3LCBzLT5yZWcsICZzLT52YWwpOwog ICAgIGVsc2UKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgc2xhdmUgYWRkcmVzcyAlaVxuIiwg X19GVU5DVElPTl9fLCBzLT5hZGRyKTsKKyAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgc2xhdmUg YWRkcmVzcyAlaVxuIiwgX19mdW5jX18sIHMtPmFkZHIpOwogfQogCiBzdGF0aWMgdm9pZCBjYnVz X2N5Y2xlKENCdXNQcml2ICpzKQpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBpbmxpbmUgdWlu dDE2X3QgcmV0dV9yZWFkKENCdXNSZXR1ICpzLCBpbnQgcmVnKQogICAgICAgICByZXR1cm4gMHgw MDAwOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgcmVnaXN0ZXIg JTAyeFxuIiwgX19GVU5DVElPTl9fLCByZWcpOworICAgICAgICBod19lcnJvcigiJXM6IGJhZCBy ZWdpc3RlciAlMDJ4XG4iLCBfX2Z1bmNfXywgcmVnKTsKICAgICB9CiB9CiAKQEAgLTM3Miw3ICsz NzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmV0dV93cml0ZShDQnVzUmV0dSAqcywgaW50IHJl ZywgdWludDE2X3QgdmFsKQogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAg IGh3X2Vycm9yKCIlczogYmFkIHJlZ2lzdGVyICUwMnhcbiIsIF9fRlVOQ1RJT05fXywgcmVnKTsK KyAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgcmVnaXN0ZXIgJTAyeFxuIiwgX19mdW5jX18sIHJl Zyk7CiAgICAgfQogfQogCkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIGlubGluZSB1aW50MTZf dCB0YWh2b19yZWFkKENCdXNUYWh2byAqcywgaW50IHJlZykKICAgICAgICAgcmV0dXJuIDB4MDAw MDsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGh3X2Vycm9yKCIlczogYmFkIHJlZ2lzdGVyICUw MnhcbiIsIF9fRlVOQ1RJT05fXywgcmVnKTsKKyAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgcmVn aXN0ZXIgJTAyeFxuIiwgX19mdW5jX18sIHJlZyk7CiAgICAgfQogfQogCkBAIC01NjcsNyArNTY3 LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHRhaHZvX3dyaXRlKENCdXNUYWh2byAqcywgaW50IHJl ZywgdWludDE2X3QgdmFsKQogICAgICAgICBpZiAocy0+YmFja2xpZ2h0ICE9ICh2YWwgJiAweDdm KSkgewogICAgICAgICAgICAgcy0+YmFja2xpZ2h0ID0gdmFsICYgMHg3ZjsKICAgICAgICAgICAg IHByaW50ZigiJXM6IExDRCBiYWNrbGlnaHQgbm93IGF0ICVpIC8gMTI3XG4iLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcy0+YmFja2xpZ2h0KTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgcy0+YmFja2xpZ2h0KTsKICAgICAgICAgfQog ICAgICAgICBicmVhazsKIApAQCAtNTg4LDcgKzU4OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0 YWh2b193cml0ZShDQnVzVGFodm8gKnMsIGludCByZWcsIHVpbnQxNl90IHZhbCkKICAgICAgICAg YnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBod19lcnJvcigiJXM6IGJhZCByZWdpc3Rl ciAlMDJ4XG4iLCBfX0ZVTkNUSU9OX18sIHJlZyk7CisgICAgICAgIGh3X2Vycm9yKCIlczogYmFk IHJlZ2lzdGVyICUwMnhcbiIsIF9fZnVuY19fLCByZWcpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0 IGEvaHcvbWlzYy9vbWFwX2Nsay5jIGIvaHcvbWlzYy9vbWFwX2Nsay5jCmluZGV4IDE5MTUxZDA3 ZDYuLjllYTE0MTg2ZDQgMTAwNjQ0Ci0tLSBhL2h3L21pc2Mvb21hcF9jbGsuYworKysgYi9ody9t aXNjL29tYXBfY2xrLmMKQEAgLTExMDksNyArMTEwOSw3IEBAIHN0cnVjdCBjbGsgKm9tYXBfZmlu ZGNsayhzdHJ1Y3Qgb21hcF9tcHVfc3RhdGVfcyAqbXB1LCBjb25zdCBjaGFyICpuYW1lKQogICAg IGZvciAoaSA9IG1wdS0+Y2xrczsgaS0+bmFtZTsgaSArKykKICAgICAgICAgaWYgKCFzdHJjbXAo aS0+bmFtZSwgbmFtZSkgfHwgKGktPmFsaWFzICYmICFzdHJjbXAoaS0+YWxpYXMsIG5hbWUpKSkK ICAgICAgICAgICAgIHJldHVybiBpOwotICAgIGh3X2Vycm9yKCIlczogJXMgbm90IGZvdW5kXG4i LCBfX0ZVTkNUSU9OX18sIG5hbWUpOworICAgIGh3X2Vycm9yKCIlczogJXMgbm90IGZvdW5kXG4i LCBfX2Z1bmNfXywgbmFtZSk7CiB9CiAKIHZvaWQgb21hcF9jbGtfZ2V0KHN0cnVjdCBjbGsgKmNs aykKQEAgLTExMjAsNyArMTEyMCw3IEBAIHZvaWQgb21hcF9jbGtfZ2V0KHN0cnVjdCBjbGsgKmNs aykKIHZvaWQgb21hcF9jbGtfcHV0KHN0cnVjdCBjbGsgKmNsaykKIHsKICAgICBpZiAoIShjbGst PnVzZWNvdW50IC0tKSkKLSAgICAgICAgaHdfZXJyb3IoIiVzOiAlcyBpcyBub3QgaW4gdXNlXG4i LCBfX0ZVTkNUSU9OX18sIGNsay0+bmFtZSk7CisgICAgICAgIGh3X2Vycm9yKCIlczogJXMgaXMg bm90IGluIHVzZVxuIiwgX19mdW5jX18sIGNsay0+bmFtZSk7CiB9CiAKIHN0YXRpYyB2b2lkIG9t YXBfY2xrX3VwZGF0ZShzdHJ1Y3QgY2xrICpjbGspCmRpZmYgLS1naXQgYS9ody9taXNjL29tYXBf Z3BtYy5jIGIvaHcvbWlzYy9vbWFwX2dwbWMuYwppbmRleCA2N2Q4ZTJmMDIzLi44NGY5ZTRjNjEy IDEwMDY0NAotLS0gYS9ody9taXNjL29tYXBfZ3BtYy5jCisrKyBiL2h3L21pc2Mvb21hcF9ncG1j LmMKQEAgLTY0Myw3ICs2NDMsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2dwbWNfd3JpdGUodm9pZCAq b3BhcXVlLCBod2FkZHIgYWRkciwKICAgICBjYXNlIDB4MDEwOgkvKiBHUE1DX1NZU0NPTkZJRyAq LwogICAgICAgICBpZiAoKHZhbHVlID4+IDMpID09IDB4MykKICAgICAgICAgICAgIGZwcmludGYo c3RkZXJyLCAiJXM6IGJhZCBTRFJBTSBpZGxlIG1vZGUgJSJQUklpNjQiXG4iLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgdmFsdWUgPj4gMyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHZhbHVlID4+IDMpOwogICAgICAgICBpZiAodmFs dWUgJiAyKQogICAgICAgICAgICAgb21hcF9ncG1jX3Jlc2V0KHMpOwogICAgICAgICBzLT5zeXNj b25maWcgPSB2YWx1ZSAmIDB4MTk7CkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIHZvaWQgb21h cF9ncG1jX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgMHgyMzA6CS8qIEdQTUNfVEVTVE1PREVfQ1RSTCAqLwogICAgICAgICBpZiAodmFs dWUgJiA3KQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdGVzdCBtb2RlIGVuYWJs ZSBhdHRlbXB0XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs ICIlczogdGVzdCBtb2RlIGVuYWJsZSBhdHRlbXB0XG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGJy ZWFrOwogCiAgICAgZGVmYXVsdDoKQEAgLTg2NCw3ICs4NjQsNyBAQCB2b2lkIG9tYXBfZ3BtY19h dHRhY2goc3RydWN0IG9tYXBfZ3BtY19zICpzLCBpbnQgY3MsIE1lbW9yeVJlZ2lvbiAqaW9tZW0p CiAgICAgYXNzZXJ0KGlvbWVtKTsKIAogICAgIGlmIChjcyA8IDAgfHwgY3MgPj0gOCkgewotICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgY2hpcC1zZWxlY3QgJWlcbiIsIF9fRlVOQ1RJ T05fXywgY3MpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgY2hpcC1zZWxlY3Qg JWlcbiIsIF9fZnVuY19fLCBjcyk7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0KICAgICBmID0g JnMtPmNzX2ZpbGVbY3NdOwpkaWZmIC0tZ2l0IGEvaHcvbWlzYy9vbWFwX2w0LmMgYi9ody9taXNj L29tYXBfbDQuYwppbmRleCA4OGM1MzNhMGZlLi45NmZjMDU3YjRlIDEwMDY0NAotLS0gYS9ody9t aXNjL29tYXBfbDQuYworKysgYi9ody9taXNjL29tYXBfbDQuYwpAQCAtMTI2LDcgKzEyNiw3IEBA IHN0cnVjdCBvbWFwX3RhcmdldF9hZ2VudF9zICpvbWFwX2w0dGFfZ2V0KHN0cnVjdCBvbWFwX2w0 X3MgKmJ1cywKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgaWYgKCF0YSkgewot ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgdGFyZ2V0IGFnZW50ICglaSlcbiIsIF9f RlVOQ1RJT05fXywgY3MpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgdGFyZ2V0 IGFnZW50ICglaSlcbiIsIF9fZnVuY19fLCBjcyk7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0K IApAQCAtMTUxLDcgKzE1MSw3IEBAIGh3YWRkciBvbWFwX2w0X2F0dGFjaChzdHJ1Y3Qgb21hcF90 YXJnZXRfYWdlbnRfcyAqdGEsCiAgICAgaHdhZGRyIGJhc2U7CiAKICAgICBpZiAocmVnaW9uIDwg MCB8fCByZWdpb24gPj0gdGEtPnJlZ2lvbnMpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIl czogYmFkIGlvIHJlZ2lvbiAoJWkpXG4iLCBfX0ZVTkNUSU9OX18sIHJlZ2lvbik7CisgICAgICAg IGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCBpbyByZWdpb24gKCVpKVxuIiwgX19mdW5jX18sIHJl Z2lvbik7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvaHcvbWlzYy9v bWFwX3NkcmMuYyBiL2h3L21pc2Mvb21hcF9zZHJjLmMKaW5kZXggZGZmMzdlY2FmOS4uN2IzOGM1 NTY4YyAxMDA2NDQKLS0tIGEvaHcvbWlzYy9vbWFwX3NkcmMuYworKysgYi9ody9taXNjL29tYXBf c2RyYy5jCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgb21hcF9zZHJjX3dyaXRlKHZv aWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgY2FzZSAweDEwOgkvKiBTRFJDX1NZU0NPTkZJ RyAqLwogICAgICAgICBpZiAoKHZhbHVlID4+IDMpICE9IDB4MikKICAgICAgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiJXM6IGJhZCBTRFJBTSBpZGxlIG1vZGUgJWlcbiIsCi0gICAgICAgICAgICAg ICAgICAgIF9fRlVOQ1RJT05fXywgKHVuc2lnbmVkKXZhbHVlID4+IDMpOworICAgICAgICAgICAg ICAgICAgICBfX2Z1bmNfXywgKHVuc2lnbmVkKXZhbHVlID4+IDMpOwogICAgICAgICBpZiAodmFs dWUgJiAyKQogICAgICAgICAgICAgb21hcF9zZHJjX3Jlc2V0KHMpOwogICAgICAgICBzLT5jb25m aWcgPSB2YWx1ZSAmIDB4MTg7CmRpZmYgLS1naXQgYS9ody9taXNjL29tYXBfdGFwLmMgYi9ody9t aXNjL29tYXBfdGFwLmMKaW5kZXggZTZlYThlZTIzNS4uM2Y1OTVlOGRmNyAxMDA2NDQKLS0tIGEv aHcvbWlzYy9vbWFwX3RhcC5jCisrKyBiL2h3L21pc2Mvb21hcF90YXAuYwpAQCAtNDQsNyArNDQs NyBAQCBzdGF0aWMgdWludDY0X3Qgb21hcF90YXBfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBh ZGRyLAogICAgICAgICBjYXNlIG9tYXAzNDMwOgogICAgICAgICAgICAgcmV0dXJuIDB4MWI3YWUw MmY7CS8qIEVTIDIgKi8KICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGh3X2Vycm9yKCIl czogQmFkIG1wdSBtb2RlbFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIGh3X2Vycm9y KCIlczogQmFkIG1wdSBtb2RlbFxuIiwgX19mdW5jX18pOwogICAgICAgICB9CiAKICAgICBjYXNl IDB4MjA4OgkvKiBQUk9EVUNUSU9OX0lEX3JlZyBmb3IgT01BUDIgKi8KQEAgLTYxLDcgKzYxLDcg QEAgc3RhdGljIHVpbnQ2NF90IG9tYXBfdGFwX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRk ciwKICAgICAgICAgY2FzZSBvbWFwMzQzMDoKICAgICAgICAgICAgIHJldHVybiAweDAwMDAwMGYw OwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgbXB1IG1v ZGVsXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgbXB1 IG1vZGVsXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIH0KIAogICAgIGNhc2UgMHgyMGM6CkBAIC03 NSw3ICs3NSw3IEBAIHN0YXRpYyB1aW50NjRfdCBvbWFwX3RhcF9yZWFkKHZvaWQgKm9wYXF1ZSwg aHdhZGRyIGFkZHIsCiAgICAgICAgIGNhc2Ugb21hcDM0MzA6CiAgICAgICAgICAgICByZXR1cm4g MHhjYWZlYjdhZTsJLyogRVMgMiAqLwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaHdf ZXJyb3IoIiVzOiBCYWQgbXB1IG1vZGVsXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAg aHdfZXJyb3IoIiVzOiBCYWQgbXB1IG1vZGVsXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIH0KIAog ICAgIGNhc2UgMHgyMTg6CS8qIERJRV9JRF9yZWcgKi8KZGlmZiAtLWdpdCBhL2h3L21pc2MvdG1w MTA1LmMgYi9ody9taXNjL3RtcDEwNS5jCmluZGV4IDA0ZTgzNzg3ZDQuLjllMjJkNjRlMzYgMTAw NjQ0Ci0tLSBhL2h3L21pc2MvdG1wMTA1LmMKKysrIGIvaHcvbWlzYy90bXAxMDUuYwpAQCAtMTMx LDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lkIHRtcDEwNV93cml0ZShUTVAxMDVTdGF0ZSAqcykKIAog ICAgIGNhc2UgVE1QMTA1X1JFR19DT05GSUc6CiAgICAgICAgIGlmIChzLT5idWZbMF0gJiB+cy0+ Y29uZmlnICYgKDEgPDwgMCkpCQkJLyogU0QgKi8KLSAgICAgICAgICAgIHByaW50ZigiJXM6IFRN UDEwNSBzaHV0ZG93blxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6 IFRNUDEwNSBzaHV0ZG93blxuIiwgX19mdW5jX18pOwogICAgICAgICBzLT5jb25maWcgPSBzLT5i dWZbMF07CiAgICAgICAgIHMtPmZhdWx0cyA9IHRtcDEwNV9mYXVsdHFbKHMtPmNvbmZpZyA+PiAz KSAmIDNdOwkvKiBGICovCiAgICAgICAgIHRtcDEwNV9hbGFybV91cGRhdGUocyk7CmRpZmYgLS1n aXQgYS9ody9wY2ktaG9zdC9ib25pdG8uYyBiL2h3L3BjaS1ob3N0L2Jvbml0by5jCmluZGV4IDg5 MTMzYTlkZDMuLjE3NjdkMmFmNjEgMTAwNjQ0Ci0tLSBhL2h3L3BjaS1ob3N0L2Jvbml0by5jCisr KyBiL2h3L3BjaS1ob3N0L2Jvbml0by5jCkBAIC01MCw3ICs1MCw3IEBACiAvLyNkZWZpbmUgREVC VUdfQk9OSVRPCiAKICNpZmRlZiBERUJVR19CT05JVE8KLSNkZWZpbmUgRFBSSU5URihmbXQsIC4u LikgZnByaW50ZihzdGRlcnIsICIlczogIiBmbXQsIF9fRlVOQ1RJT05fXywgIyNfX1ZBX0FSR1Nf XykKKyNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZnByaW50ZihzdGRlcnIsICIlczogIiBmbXQs IF9fZnVuY19fLCAjI19fVkFfQVJHU19fKQogI2Vsc2UKICNkZWZpbmUgRFBSSU5URihmbXQsIC4u LikKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaHcvc2QvcHhhMnh4X21tY2kuYyBiL2h3L3NkL3B4YTJ4 eF9tbWNpLmMKaW5kZXggM2RlY2NmMDJjOS4uMGQ0Yjg4YzYwOSAxMDA2NDQKLS0tIGEvaHcvc2Qv cHhhMnh4X21tY2kuYworKysgYi9ody9zZC9weGEyeHhfbW1jaS5jCkBAIC0zMzAsNyArMzMwLDcg QEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9tbWNpX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIg b2Zmc2V0LCB1bnNpZ25lZCBzaXplKQogICAgIGNhc2UgTU1DX0JMS1NfUkVNOgogICAgICAgICBy ZXR1cm4gcy0+bnVtYmxrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGh3X2Vycm9yKCIlczogQmFk IG9mZnNldCAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBvZmZzZXQpOworICAgICAgICBo d19lcnJvcigiJXM6IEJhZCBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBvZmZzZXQp OwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyB2b2lk IHB4YTJ4eF9tbWNpX3dyaXRlKHZvaWQgKm9wYXF1ZSwKICAgICBjYXNlIE1NQ19TUEk6CiAgICAg ICAgIHMtPnNwaSA9IHZhbHVlICYgMHhmOwogICAgICAgICBpZiAodmFsdWUgJiBTUElfU1BJX01P REUpCi0gICAgICAgICAgICBwcmludGYoIiVzOiBhdHRlbXB0ZWQgdG8gdXNlIGNhcmQgaW4gU1BJ IG1vZGVcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYoIiVzOiBhdHRlbXB0 ZWQgdG8gdXNlIGNhcmQgaW4gU1BJIG1vZGVcbiIsIF9fZnVuY19fKTsKICAgICAgICAgYnJlYWs7 CiAKICAgICBjYXNlIE1NQ19DTURBVDoKQEAgLTQ0Miw3ICs0NDIsNyBAQCBzdGF0aWMgdm9pZCBw eGEyeHhfbW1jaV93cml0ZSh2b2lkICpvcGFxdWUsCiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVm YXVsdDoKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBf X0ZVTkNUSU9OX18sIG9mZnNldCk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNldCAi IFJFR19GTVQgIlxuIiwgX19mdW5jX18sIG9mZnNldCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg YS9ody9zc2kvb21hcF9zcGkuYyBiL2h3L3NzaS9vbWFwX3NwaS5jCmluZGV4IDIyMDM0NjU2Yjgu LjM0MTYzZTU2NDYgMTAwNjQ0Ci0tLSBhL2h3L3NzaS9vbWFwX3NwaS5jCisrKyBiL2h3L3NzaS9v bWFwX3NwaS5jCkBAIC0yOTUsMTAgKzI5NSwxMCBAQCBzdGF0aWMgdm9pZCBvbWFwX21jc3BpX3dy aXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIGlmICgodmFsdWUgXiBzLT5j aFtjaF0uY29uZmlnKSAmICgzIDw8IDE0KSkJLyogRE1BUiB8IERNQVcgKi8KICAgICAgICAgICAg IG9tYXBfbWNzcGlfZG1hcmVxdWVzdF91cGRhdGUocy0+Y2ggKyBjaCk7CiAgICAgICAgIGlmICgo KHZhbHVlID4+IDEyKSAmIDMpID09IDMpCQkJLyogVFJNICovCi0gICAgICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIiVzOiBpbnZhbGlkIFRSTSB2YWx1ZSAoMylcbiIsIF9fRlVOQ1RJT05fXyk7Cisg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIFRSTSB2YWx1ZSAoMylcbiIs IF9fZnVuY19fKTsKICAgICAgICAgaWYgKCgodmFsdWUgPj4gNykgJiAweDFmKSA8IDMpCQkJLyog V0wgKi8KICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGludmFsaWQgV0wgdmFsdWUg KCUiIFBSSXg2NCAiKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9O X18sICh2YWx1ZSA+PiA3KSAmIDB4MWYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCAodmFsdWUgPj4gNykgJiAweDFmKTsKICAgICAgICAgcy0+Y2hbY2hdLmNvbmZpZyA9 IHZhbHVlICYgMHg3ZmZmZmY7CiAgICAgICAgIGJyZWFrOwogCkBAIC0zNjcsNyArMzY3LDcgQEAg dm9pZCBvbWFwX21jc3BpX2F0dGFjaChzdHJ1Y3Qgb21hcF9tY3NwaV9zICpzLAogICAgICAgICAg ICAgICAgIGludCBjaGlwc2VsZWN0KQogewogICAgIGlmIChjaGlwc2VsZWN0IDwgMCB8fCBjaGlw c2VsZWN0ID49IHMtPmNobnVtKQotICAgICAgICBod19lcnJvcigiJXM6IEJhZCBjaGlwc2VsZWN0 ICVpXG4iLCBfX0ZVTkNUSU9OX18sIGNoaXBzZWxlY3QpOworICAgICAgICBod19lcnJvcigiJXM6 IEJhZCBjaGlwc2VsZWN0ICVpXG4iLCBfX2Z1bmNfXywgY2hpcHNlbGVjdCk7CiAKICAgICBzLT5j aFtjaGlwc2VsZWN0XS50eHJ4ID0gdHhyeDsKICAgICBzLT5jaFtjaGlwc2VsZWN0XS5vcGFxdWUg PSBvcGFxdWU7CmRpZmYgLS1naXQgYS9ody90aW1lci9vbWFwX2dwdGltZXIuYyBiL2h3L3RpbWVy L29tYXBfZ3B0aW1lci5jCmluZGV4IDZkN2M4YTM5NmYuLmFlMmRjOTk4MzIgMTAwNjQ0Ci0tLSBh L2h3L3RpbWVyL29tYXBfZ3B0aW1lci5jCisrKyBiL2h3L3RpbWVyL29tYXBfZ3B0aW1lci5jCkBA IC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIHZvaWQgb21hcF9ncF90aW1lcl93cml0ZSh2b2lkICpv cGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBzLT5jb25maWcgPSB2YWx1ZSAmIDB4MzNkOwog ICAgICAgICBpZiAoKCh2YWx1ZSA+PiAzKSAmIDMpID09IDMpCQkJCS8qIElETEVNT0RFICovCiAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbGxlZ2FsIElETEVNT0RFIHZhbHVlIGlu IFRJT0NQX0NGR1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18p OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fKTsKICAgICAgICAgaWYgKHZh bHVlICYgMikJCQkJCQkvKiBTT0ZUUkVTRVQgKi8KICAgICAgICAgICAgIG9tYXBfZ3BfdGltZXJf cmVzZXQocyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzk1LDEwICszOTUsMTAgQEAgc3RhdGljIHZv aWQgb21hcF9ncF90aW1lcl93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAg ICBzLT5zdCA9ICh2YWx1ZSA+PiAwKSAmIDE7CiAgICAgICAgIGlmIChzLT5pbm91dCAmJiBzLT50 cmlnZ2VyICE9IGdwdF90cmlnZ2VyX25vbmUpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IiVzOiBHUCB0aW1lciBwaW4gbXVzdCBiZSBhbiBvdXRwdXQgIgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJmb3IgdGhpcyB0cmlnZ2VyIG1vZGVcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImZvciB0aGlzIHRyaWdnZXIgbW9kZVxuIiwgX19mdW5j X18pOwogICAgICAgICBpZiAoIXMtPmlub3V0ICYmIHMtPmNhcHR1cmUgIT0gZ3B0X2NhcHR1cmVf bm9uZSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEdQIHRpbWVyIHBpbiBtdXN0 IGJlIGFuIGlucHV0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIHRoaXMgY2Fw dHVyZSBtb2RlXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJmb3IgdGhpcyBjYXB0dXJlIG1vZGVcbiIsIF9fZnVuY19fKTsKICAgICAgICAgaWYgKHMtPnRy aWdnZXIgPT0gZ3B0X3RyaWdnZXJfbm9uZSkKICAgICAgICAgICAgIG9tYXBfZ3BfdGltZXJfb3V0 KHMsIHMtPnNjcHdtKTsKICAgICAgICAgLyogVE9ETzogbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBv dmVyZmxvdyAzMi1iaXRzICovCmRpZmYgLS1naXQgYS9ody90aW1lci90d2w5MjIzMC5jIGIvaHcv dGltZXIvdHdsOTIyMzAuYwppbmRleCBjMGFhOGFlM2RlLi44N2UzMzRhZjI0IDEwMDY0NAotLS0g YS9ody90aW1lci90d2w5MjIzMC5jCisrKyBiL2h3L3RpbWVyL3R3bDkyMjMwLmMKQEAgLTQwMyw3 ICs0MDMsNyBAQCBzdGF0aWMgdWludDhfdCBtZW5lbGF1c19yZWFkKHZvaWQgKm9wYXF1ZSwgdWlu dDhfdCBhZGRyKQogCiAgICAgZGVmYXVsdDoKICNpZmRlZiBWRVJCT1NFCi0gICAgICAgIHByaW50 ZigiJXM6IHVua25vd24gcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAg ICAgICAgcHJpbnRmKCIlczogdW5rbm93biByZWdpc3RlciAlMDJ4XG4iLCBfX2Z1bmNfXywgYWRk cik7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjE1LDcgKzYxNSw3IEBAIHN0 YXRpYyB2b2lkIG1lbmVsYXVzX3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCBhZGRyLCB1aW50 OF90IHZhbHVlKQogICAgICAgICBydGNfYmFkbmVzczoKICAgICAgICAgZGVmYXVsdDoKICAgICAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCBSVENfVVBEQVRFIHZhbHVlICUwMnhcbiIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCB2YWx1ZSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHZhbHVlKTsKICAgICAgICAgICAgIHMt PnN0YXR1cyB8PSAxIDw8IDEwOwkJCQkvKiBSVENFUlIgKi8KICAgICAgICAgICAgIG1lbmVsYXVz X3VwZGF0ZShzKTsKICAgICAgICAgfQpAQCAtNzA4LDcgKzcwOCw3IEBAIHN0YXRpYyB2b2lkIG1l bmVsYXVzX3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCBhZGRyLCB1aW50OF90IHZhbHVlKQog CiAgICAgZGVmYXVsdDoKICNpZmRlZiBWRVJCT1NFCi0gICAgICAgIHByaW50ZigiJXM6IHVua25v d24gcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJpbnRm KCIlczogdW5rbm93biByZWdpc3RlciAlMDJ4XG4iLCBfX2Z1bmNfXywgYWRkcik7CiAjZW5kaWYK ICAgICB9CiB9CmRpZmYgLS1naXQgYS9ody91c2IvZGVzYy5jIGIvaHcvdXNiL2Rlc2MuYwppbmRl eCBjMzZiZjMwZTRmLi44NWMxNWFkZGM1IDEwMDY0NAotLS0gYS9ody91c2IvZGVzYy5jCisrKyBi L2h3L3VzYi9kZXNjLmMKQEAgLTY4OCw3ICs2ODgsNyBAQCBpbnQgdXNiX2Rlc2NfZ2V0X2Rlc2Ny aXB0b3IoVVNCRGV2aWNlICpkZXYsIFVTQlBhY2tldCAqcCwKICAgICAgICAgYnJlYWs7CiAKICAg ICBkZWZhdWx0OgotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAlZCB1bmtub3duIHR5cGUg JWQgKGxlbiAlemQpXG4iLCBfX0ZVTkNUSU9OX18sCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi JXM6ICVkIHVua25vd24gdHlwZSAlZCAobGVuICV6ZClcbiIsIF9fZnVuY19fLAogICAgICAgICAg ICAgICAgIGRldi0+YWRkciwgdHlwZSwgbGVuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZm IC0tZ2l0IGEvaHcvdXNiL2Rldi1ibHVldG9vdGguYyBiL2h3L3VzYi9kZXYtYmx1ZXRvb3RoLmMK aW5kZXggNDQzZTNjMzAxZC4uMGJiY2VhZWEwYiAxMDA2NDQKLS0tIGEvaHcvdXNiL2Rldi1ibHVl dG9vdGguYworKysgYi9ody91c2IvZGV2LWJsdWV0b290aC5jCkBAIC0yNzQsMTMgKzI3NCwxMyBA QCBzdGF0aWMgdm9pZCB1c2JfYnRfZmlmb19lbnF1ZXVlKHN0cnVjdCB1c2JfaGNpX2luX2ZpZm9f cyAqZmlmbywKICAgICBpZiAob2ZmIDw9IERGSUZPX0xFTl9NQVNLKSB7CiAgICAgICAgIGlmIChv ZmYgKyBsZW4gPiBERklGT19MRU5fTUFTSyArIDEgJiYKICAgICAgICAgICAgICAgICAgICAgICAg IChmaWZvLT5kc2l6ZSA9IG9mZiArIGxlbikgPiAoREZJRk9fTEVOX01BU0sgKyAxKSAqIDIpIHsK LSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNhbid0IGFsbG9jICVpIGJ5dGVzXG4i LCBfX0ZVTkNUSU9OX18sIGxlbik7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBj YW4ndCBhbGxvYyAlaSBieXRlc1xuIiwgX19mdW5jX18sIGxlbik7CiAgICAgICAgICAgICBleGl0 KC0xKTsKICAgICAgICAgfQogICAgICAgICBidWYgPSBmaWZvLT5kYXRhICsgb2ZmOwogICAgIH0g ZWxzZSB7CiAgICAgICAgIGlmIChmaWZvLT5kbGVuID4gZmlmby0+ZHNpemUpIHsKLSAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNhbid0IGFsbG9jICVpIGJ5dGVzXG4iLCBfX0ZVTkNU SU9OX18sIGxlbik7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBjYW4ndCBhbGxv YyAlaSBieXRlc1xuIiwgX19mdW5jX18sIGxlbik7CiAgICAgICAgICAgICBleGl0KC0xKTsKICAg ICAgICAgfQogICAgICAgICBidWYgPSBmaWZvLT5kYXRhICsgb2ZmIC0gZmlmby0+ZHNpemU7CmRp ZmYgLS1naXQgYS9ody91c2IvaGNkLW11c2IuYyBiL2h3L3VzYi9oY2QtbXVzYi5jCmluZGV4IDI3 ZDlkMGJkODIuLmQ3MGE5MWE1OGMgMTAwNjQ0Ci0tLSBhL2h3L3VzYi9oY2QtbXVzYi5jCisrKyBi L2h3L3VzYi9oY2QtbXVzYi5jCkBAIC0yNTMsOCArMjUzLDggQEAKIC8qICNkZWZpbmUgTVVTQl9E RUJVRyAqLwogCiAjaWZkZWYgTVVTQl9ERUJVRwotI2RlZmluZSBUUkFDRShmbXQsLi4uKSBmcHJp bnRmKHN0ZGVyciwgIiVzQCVkOiAiIGZtdCAiXG4iLCBfX0ZVTkNUSU9OX18sIFwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfX0xJTkVfXywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUg VFJBQ0UoZm10LCAuLi4pIGZwcmludGYoc3RkZXJyLCAiJXNAJWQ6ICIgZm10ICJcbiIsIF9fZnVu Y19fLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fTElORV9fLCAjI19fVkFf QVJHU19fKQogI2Vsc2UKICNkZWZpbmUgVFJBQ0UoLi4uKQogI2VuZGlmCmRpZmYgLS1naXQgYS9o dy91c2IvdHVzYjYwMTAuYyBiL2h3L3VzYi90dXNiNjAxMC5jCmluZGV4IDhmNTkzYTZmZGIuLjI2 NjJjMDYwZWQgMTAwNjQ0Ci0tLSBhL2h3L3VzYi90dXNiNjAxMC5jCisrKyBiL2h3L3VzYi90dXNi NjAxMC5jCkBAIC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIHVpbnQzMl90IHR1c2JfYXN5bmNfcmVh ZGIodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkcikKICAgICB9CiAKICAgICBwcmludGYoIiVzOiB1 bmtub3duIHJlZ2lzdGVyIGF0ICUwM3hcbiIsCi0gICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJ T05fXywgKGludCkgKGFkZHIgJiAweGZmZikpOworICAgICAgICAgICAgICAgICAgICBfX2Z1bmNf XywgKGludCkgKGFkZHIgJiAweGZmZikpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zMTMsNyAr MzEzLDcgQEAgc3RhdGljIHVpbnQzMl90IHR1c2JfYXN5bmNfcmVhZGgodm9pZCAqb3BhcXVlLCBo d2FkZHIgYWRkcikKICAgICB9CiAKICAgICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyIGF0 ICUwM3hcbiIsCi0gICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgKGludCkgKGFkZHIg JiAweGZmZikpOworICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgKGludCkgKGFkZHIgJiAw eGZmZikpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIHVp bnQzMl90IHR1c2JfYXN5bmNfcmVhZHcodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkcikKICAgICAg ICAgcmV0dXJuIDB4NTQwNTlhZGY7CiAgICAgfQogCi0gICAgcHJpbnRmKCIlczogdW5rbm93biBy ZWdpc3RlciBhdCAlMDN4XG4iLCBfX0ZVTkNUSU9OX18sIG9mZnNldCk7CisgICAgcHJpbnRmKCIl czogdW5rbm93biByZWdpc3RlciBhdCAlMDN4XG4iLCBfX2Z1bmNfXywgb2Zmc2V0KTsKICAgICBy ZXR1cm4gMDsKIH0KIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHN0YXRpYyB2b2lkIHR1c2JfYXN5bmNf d3JpdGViKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAKICAgICBkZWZhdWx0OgogICAgICAg ICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyIGF0ICUwM3hcbiIsCi0gICAgICAgICAgICAg ICAgICAgICAgICBfX0ZVTkNUSU9OX18sIChpbnQpIChhZGRyICYgMHhmZmYpKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIF9fZnVuY19fLCAoaW50KSAoYWRkciAmIDB4ZmZmKSk7CiAgICAgICAg IHJldHVybjsKICAgICB9CiB9CkBAIC00NzcsNyArNDc3LDcgQEAgc3RhdGljIHZvaWQgdHVzYl9h c3luY193cml0ZWgodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKIAogICAgIGRlZmF1bHQ6CiAg ICAgICAgIHByaW50ZigiJXM6IHVua25vd24gcmVnaXN0ZXIgYXQgJTAzeFxuIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgKGludCkgKGFkZHIgJiAweGZmZikpOworICAg ICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIChpbnQpIChhZGRyICYgMHhmZmYpKTsKICAg ICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTUwNSw3ICs1MDUsNyBAQCBzdGF0aWMgdm9pZCB0 dXNiX2FzeW5jX3dyaXRldyh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBzLT5k ZXZfY29uZmlnID0gdmFsdWU7CiAgICAgICAgIHMtPmhvc3RfbW9kZSA9ICh2YWx1ZSAmIFRVU0Jf REVWX0NPTkZfVVNCX0hPU1RfTU9ERSk7CiAgICAgICAgIGlmICh2YWx1ZSAmIFRVU0JfREVWX0NP TkZfUFJPRF9URVNUX01PREUpCi0gICAgICAgICAgICBod19lcnJvcigiJXM6IFByb2R1Y3QgVGVz dCBtb2RlIG5vdCBhbGxvd2VkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgaHdfZXJy b3IoIiVzOiBQcm9kdWN0IFRlc3QgbW9kZSBub3QgYWxsb3dlZFxuIiwgX19mdW5jX18pOwogICAg ICAgICBicmVhazsKIAogICAgIGNhc2UgVFVTQl9QSFlfT1RHX0NUUkxfRU5BQkxFOgpAQCAtNjM2 LDcgKzYzNiw3IEBAIHN0YXRpYyB2b2lkIHR1c2JfYXN5bmNfd3JpdGV3KHZvaWQgKm9wYXF1ZSwg aHdhZGRyIGFkZHIsCiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJp bnRmKCIlczogdW5rbm93biByZWdpc3RlciBhdCAlMDN4XG4iLCBfX0ZVTkNUSU9OX18sIG9mZnNl dCk7CisgICAgICAgIHByaW50ZigiJXM6IHVua25vd24gcmVnaXN0ZXIgYXQgJTAzeFxuIiwgX19m dW5jX18sIG9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9o dy94ZW5wdi94ZW5fZG9tYWluYnVpbGQuYyBiL2h3L3hlbnB2L3hlbl9kb21haW5idWlsZC5jCmlu ZGV4IGM4OWNlZDJlODguLjAyN2Y3NmZhZDEgMTAwNjQ0Ci0tLSBhL2h3L3hlbnB2L3hlbl9kb21h aW5idWlsZC5jCisrKyBiL2h3L3hlbnB2L3hlbl9kb21haW5idWlsZC5jCkBAIC0yNSwyMiArMjUs MjIgQEAgc3RhdGljIGludCB4ZW5zdG9yZV9kb21haW5fbWtkaXIoY2hhciAqcGF0aCkKICAgICBp bnQgaTsKIAogICAgIGlmICgheHNfbWtkaXIoeGVuc3RvcmUsIDAsIHBhdGgpKSB7Ci0gICAgICAg IGZwcmludGYoc3RkZXJyLCAiJXM6IHhzX21rZGlyICVzOiBmYWlsZWRcbiIsIF9fRlVOQ1RJT05f XywgcGF0aCk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHhzX21rZGlyICVzOiBmYWls ZWRcbiIsIF9fZnVuY19fLCBwYXRoKTsKIAlyZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICgheHNf c2V0X3Blcm1pc3Npb25zKHhlbnN0b3JlLCAwLCBwYXRoLCBwZXJtc19ybywgMikpIHsKLSAgICAg ICAgZnByaW50ZihzdGRlcnIsICIlczogeHNfc2V0X3Blcm1pc3Npb25zIGZhaWxlZFxuIiwgX19G VU5DVElPTl9fKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogeHNfc2V0X3Blcm1pc3Np b25zIGZhaWxlZFxuIiwgX19mdW5jX18pOwogCXJldHVybiAtMTsKICAgICB9CiAKICAgICBmb3Ig KGkgPSAwOyB3cml0YWJsZVtpXTsgaSsrKSB7CiAgICAgICAgIHNucHJpbnRmKHN1YnBhdGgsIHNp emVvZihzdWJwYXRoKSwgIiVzLyVzIiwgcGF0aCwgd3JpdGFibGVbaV0pOwogICAgICAgICBpZiAo IXhzX21rZGlyKHhlbnN0b3JlLCAwLCBzdWJwYXRoKSkgewotICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICIlczogeHNfbWtkaXIgJXM6IGZhaWxlZFxuIiwgX19GVU5DVElPTl9fLCBzdWJwYXRo KTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHhzX21rZGlyICVzOiBmYWlsZWRc biIsIF9fZnVuY19fLCBzdWJwYXRoKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAg fQogICAgICAgICBpZiAoIXhzX3NldF9wZXJtaXNzaW9ucyh4ZW5zdG9yZSwgMCwgc3VicGF0aCwg cGVybXNfcncsIDIpKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB4c19zZXRf cGVybWlzc2lvbnMgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsICIlczogeHNfc2V0X3Blcm1pc3Npb25zIGZhaWxlZFxuIiwgX19mdW5jX18pOwog ICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQpAQCAtMTU4LDcgKzE1OCw3 IEBAIHN0YXRpYyBpbnQgeGVuX2RvbWFpbl93YXRjaGVyKHZvaWQpCiAgICAgY2hhciBieXRlOwog CiAgICAgaWYgKHBpcGUoZmQpICE9IDApIHsKLSAgICAgICAgcWVtdV9sb2coIiVzOiBIdWg/IHBp cGUgZXJyb3I6ICVzXG4iLCBfX0ZVTkNUSU9OX18sIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg IHFlbXVfbG9nKCIlczogSHVoPyBwaXBlIGVycm9yOiAlc1xuIiwgX19mdW5jX18sIHN0cmVycm9y KGVycm5vKSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKGZvcmsoKSAhPSAw KQpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBpbnQgeGVuX2RvbWFpbl93YXRjaGVyKHZvaWQp CiAgICAgICAgIGNhc2UgLTE6CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpCiAgICAg ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBxZW11X2xvZygiJXM6IEh1aD8gcmVh ZCBlcnJvcjogJXNcbiIsIF9fRlVOQ1RJT05fXywgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg ICAgIHFlbXVfbG9nKCIlczogSHVoPyByZWFkIGVycm9yOiAlc1xuIiwgX19mdW5jX18sIHN0cmVy cm9yKGVycm5vKSk7CiAgICAgICAgICAgICBxZW11X3J1bm5pbmcgPSAwOwogICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIGNhc2UgMDoKQEAgLTE5OCwxMyArMTk4LDEzIEBAIHN0YXRpYyBpbnQg eGVuX2RvbWFpbl93YXRjaGVyKHZvaWQpCiAgICAgICAgICAgICBxZW11X3J1bm5pbmcgPSAwOwog ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBxZW11X2xv ZygiJXM6IEh1aD8gZGF0YSBvbiB0aGUgd2F0Y2ggcGlwZT9cbiIsIF9fRlVOQ1RJT05fXyk7Cisg ICAgICAgICAgICBxZW11X2xvZygiJXM6IEh1aD8gZGF0YSBvbiB0aGUgd2F0Y2ggcGlwZT9cbiIs IF9fZnVuY19fKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCiAgICAg LyogY2xlYW51cCAqLwotICAgIHFlbXVfbG9nKCIlczogZGVzdHJveSBkb21haW4gJWRcbiIsIF9f RlVOQ1RJT05fXywgeGVuX2RvbWlkKTsKKyAgICBxZW11X2xvZygiJXM6IGRlc3Ryb3kgZG9tYWlu ICVkXG4iLCBfX2Z1bmNfXywgeGVuX2RvbWlkKTsKICAgICB4Y19kb21haW5fZGVzdHJveSh4ZW5f eGMsIHhlbl9kb21pZCk7CiAgICAgX2V4aXQoMCk7CiB9CmRpZmYgLS1naXQgYS9ody94ZW5wdi94 ZW5fbWFjaGluZV9wdi5jIGIvaHcveGVucHYveGVuX21hY2hpbmVfcHYuYwppbmRleCAzMWQyZjI1 NjI3Li42OWE1MmE5ZjkzIDEwMDY0NAotLS0gYS9ody94ZW5wdi94ZW5fbWFjaGluZV9wdi5jCisr KyBiL2h3L3hlbnB2L3hlbl9tYWNoaW5lX3B2LmMKQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGljIHZv aWQgeGVuX2luaXRfcHYoTWFjaGluZVN0YXRlICptYWNoaW5lKQogCiAgICAgLyogSW5pdGlhbGl6 ZSBiYWNrZW5kIGNvcmUgJiBkcml2ZXJzICovCiAgICAgaWYgKHhlbl9iZV9pbml0KCkgIT0gMCkg ewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB4ZW4gYmFja2VuZCBjb3JlIHNldHVwIGZh aWxlZFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogeGVu IGJhY2tlbmQgY29yZSBzZXR1cCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKICAgICAgICAgZXhpdCgx KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcvYXJtL29tYXAuaCBiL2luY2x1ZGUv aHcvYXJtL29tYXAuaAppbmRleCBjYWMxYjJiYTQzLi5iMzk4NjA3YjA2IDEwMDY0NAotLS0gYS9p bmNsdWRlL2h3L2FybS9vbWFwLmgKKysrIGIvaW5jbHVkZS9ody9hcm0vb21hcC5oCkBAIC05NjAs MTAgKzk2MCwxMCBAQCB2b2lkIG9tYXBfbXB1X3dha2V1cCh2b2lkICpvcGFxdWUsIGludCBpcnEs IGludCByZXEpOwogCiAjIGRlZmluZSBPTUFQX0JBRF9SRUcocGFkZHIpCQlcCiAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiJXM6IEJhZCByZWdpc3RlciAiIE9NQVBfRk1UX3BseCAiXG4iLAlcCi0g ICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIHBhZGRyKQorICAgICAgICAgICAg ICAgICAgICAgICAgX19mdW5jX18sIHBhZGRyKQogIyBkZWZpbmUgT01BUF9ST19SRUcocGFkZHIp CQlcCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IFJlYWQtb25seSByZWdpc3RlciAiIE9N QVBfRk1UX3BseCAiXG4iLAlcCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18s IHBhZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHBhZGRyKQogCiAvKiBP TUFQLXNwZWNpZmljIExpbnV4IGJvb3Rsb2FkZXIgdGFncyBmb3IgdGhlIEFUQUdfQk9BUkQgYXJl YQogICAgKEJvYXJkLXNwZWNpZmMgdGFncyBhcmUgbm90IGhlcmUpICAqLwpAQCAtOTk4LDEzICs5 OTgsMTMgQEAgZW51bSB7CiAjIGlmZGVmIFRDTUlfVkVSQk9TRQogIyAgZGVmaW5lIE9NQVBfOEJf UkVHKHBhZGRyKQkJXAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiA4LWJpdCByZWdpc3Rl ciAiIE9NQVBfRk1UX3BseCAiXG4iLAlcCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNU SU9OX18sIHBhZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHBhZGRyKQog IyAgZGVmaW5lIE9NQVBfMTZCX1JFRyhwYWRkcikJCVwKICAgICAgICAgZnByaW50ZihzdGRlcnIs ICIlczogMTYtYml0IHJlZ2lzdGVyICIgT01BUF9GTVRfcGx4ICJcbiIsCVwKLSAgICAgICAgICAg ICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcGFkZHIpCisgICAgICAgICAgICAgICAgICAgICAg ICBfX2Z1bmNfXywgcGFkZHIpCiAjICBkZWZpbmUgT01BUF8zMkJfUkVHKHBhZGRyKQkJXAogICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAzMi1iaXQgcmVnaXN0ZXIgIiBPTUFQX0ZNVF9wbHgg IlxuIiwJXAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBwYWRkcikKKyAg ICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBwYWRkcikKICMgZWxzZQogIyAgZGVmaW5l IE9NQVBfOEJfUkVHKHBhZGRyKQogIyAgZGVmaW5lIE9NQVBfMTZCX1JFRyhwYWRkcikKZGlmZiAt LWdpdCBhL2luY2x1ZGUvaHcvYXJtL3NoYXJwc2wuaCBiL2luY2x1ZGUvaHcvYXJtL3NoYXJwc2wu aAppbmRleCAxMzk4MWE2ZDAzLi41YmY2ZGIxZmEyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2h3L2Fy bS9zaGFycHNsLmgKKysrIGIvaW5jbHVkZS9ody9hcm0vc2hhcnBzbC5oCkBAIC03LDcgKzcsNyBA QAogI2RlZmluZSBRRU1VX1NIQVJQU0xfSAogCiAjZGVmaW5lIHphdXJ1c19wcmludGYoZm9ybWF0 LCAuLi4pCVwKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAiIGZvcm1hdCwgX19GVU5DVElPTl9f LCAjI19fVkFfQVJHU19fKQorICAgIGZwcmludGYoc3RkZXJyLCAiJXM6ICIgZm9ybWF0LCBfX2Z1 bmNfXywgIyNfX1ZBX0FSR1NfXykKIAogLyogemF1cnVzLmMgKi8KIApkaWZmIC0tZ2l0IGEvbWVt b3J5X21hcHBpbmcuYyBiL21lbW9yeV9tYXBwaW5nLmMKaW5kZXggYTVkMzg1NTJhNi4uNzc1NDY2 ZjNhOCAxMDA2NDQKLS0tIGEvbWVtb3J5X21hcHBpbmcuYworKysgYi9tZW1vcnlfbWFwcGluZy5j CkBAIC0yNTYsNyArMjU2LDcgQEAgc3RhdGljIHZvaWQgZ3Vlc3RfcGh5c19ibG9ja3NfcmVnaW9u X2FkZChNZW1vcnlMaXN0ZW5lciAqbGlzdGVuZXIsCiAKICNpZmRlZiBERUJVR19HVUVTVF9QSFlT X1JFR0lPTl9BREQKICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB0YXJnZXRfc3RhcnQ9IiBUQVJH RVRfRk1UX3BseCAiIHRhcmdldF9lbmQ9IgotICAgICAgICAgICAgVEFSR0VUX0ZNVF9wbHggIjog JXMgKGNvdW50OiAldSlcbiIsIF9fRlVOQ1RJT05fXywgdGFyZ2V0X3N0YXJ0LAorICAgICAgICAg ICAgVEFSR0VUX0ZNVF9wbHggIjogJXMgKGNvdW50OiAldSlcbiIsIF9fZnVuY19fLCB0YXJnZXRf c3RhcnQsCiAgICAgICAgICAgICB0YXJnZXRfZW5kLCBwcmVkZWNlc3NvciA/ICJqb2luZWQiIDog ImFkZGVkIiwgZy0+bGlzdC0+bnVtKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvbWlncmF0aW9u L2Jsb2NrLmMgYi9taWdyYXRpb24vYmxvY2suYwppbmRleCA5MTcxZjYwMDI4Li4wZTFiOTBhMzY1 IDEwMDY0NAotLS0gYS9taWdyYXRpb24vYmxvY2suYworKysgYi9taWdyYXRpb24vYmxvY2suYwpA QCAtNjIxLDcgKzYyMSw3IEBAIHN0YXRpYyBpbnQgZmx1c2hfYmxrcyhRRU1VRmlsZSAqZikKICAg ICBpbnQgcmV0ID0gMDsKIAogICAgIERQUklOVEYoIiVzIEVudGVyIHN1Ym1pdHRlZCAlZCByZWFk X2RvbmUgJWQgdHJhbnNmZXJyZWQgJWRcbiIsCi0gICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGJs b2NrX21pZ19zdGF0ZS5zdWJtaXR0ZWQsIGJsb2NrX21pZ19zdGF0ZS5yZWFkX2RvbmUsCisgICAg ICAgICAgICBfX2Z1bmNfXywgYmxvY2tfbWlnX3N0YXRlLnN1Ym1pdHRlZCwgYmxvY2tfbWlnX3N0 YXRlLnJlYWRfZG9uZSwKICAgICAgICAgICAgIGJsb2NrX21pZ19zdGF0ZS50cmFuc2ZlcnJlZCk7 CiAKICAgICBibGtfbWlnX2xvY2soKTsKQEAgLTY0OCw3ICs2NDgsNyBAQCBzdGF0aWMgaW50IGZs dXNoX2Jsa3MoUUVNVUZpbGUgKmYpCiAgICAgfQogICAgIGJsa19taWdfdW5sb2NrKCk7CiAKLSAg ICBEUFJJTlRGKCIlcyBFeGl0IHN1Ym1pdHRlZCAlZCByZWFkX2RvbmUgJWQgdHJhbnNmZXJyZWQg JWRcbiIsIF9fRlVOQ1RJT05fXywKKyAgICBEUFJJTlRGKCIlcyBFeGl0IHN1Ym1pdHRlZCAlZCBy ZWFkX2RvbmUgJWQgdHJhbnNmZXJyZWQgJWRcbiIsIF9fZnVuY19fLAogICAgICAgICAgICAgYmxv Y2tfbWlnX3N0YXRlLnN1Ym1pdHRlZCwgYmxvY2tfbWlnX3N0YXRlLnJlYWRfZG9uZSwKICAgICAg ICAgICAgIGJsb2NrX21pZ19zdGF0ZS50cmFuc2ZlcnJlZCk7CiAgICAgcmV0dXJuIHJldDsKZGlm ZiAtLWdpdCBhL3VpL2N1cnNvci5jIGIvdWkvY3Vyc29yLmMKaW5kZXggMmUyZmUxM2ZhNi4uZjNk YTBjZWU3OSAxMDA2NDQKLS0tIGEvdWkvY3Vyc29yLmMKKysrIGIvdWkvY3Vyc29yLmMKQEAgLTE5 LDExICsxOSwxMSBAQCBzdGF0aWMgUUVNVUN1cnNvciAqY3Vyc29yX3BhcnNlX3hwbShjb25zdCBj aGFyICp4cG1bXSkKICAgICBpZiAoc3NjYW5mKHhwbVtsaW5lXSwgIiV1ICV1ICV1ICV1IiwKICAg ICAgICAgICAgICAgICZ3aWR0aCwgJmhlaWdodCwgJmNvbG9ycywgJmNoYXJzKSAhPSA0KSB7CiAg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGhlYWRlciBwYXJzZSBlcnJvcjogXCIlc1wiXG4i LAotICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgeHBtW2xpbmVdKTsKKyAgICAgICAgICAg ICAgICBfX2Z1bmNfXywgeHBtW2xpbmVdKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQog ICAgIGlmIChjaGFycyAhPSAxKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNoYXJz ICE9IDEgbm90IHN1cHBvcnRlZFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgZnByaW50Zihz dGRlcnIsICIlczogY2hhcnMgIT0gMSBub3Qgc3VwcG9ydGVkXG4iLCBfX2Z1bmNfXyk7CiAgICAg ICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBsaW5lKys7CkBAIC00MSw3ICs0MSw3IEBAIHN0 YXRpYyBRRU1VQ3Vyc29yICpjdXJzb3JfcGFyc2VfeHBtKGNvbnN0IGNoYXIgKnhwbVtdKQogICAg ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNvbG9y IHBhcnNlIGVycm9yOiBcIiVzXCJcbiIsCi0gICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCB4 cG1bbGluZV0pOworICAgICAgICAgICAgICAgIF9fZnVuY19fLCB4cG1bbGluZV0pOwogICAgICAg ICByZXR1cm4gTlVMTDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3VpL3NwaWNlLWRpc3BsYXkuYyBi L3VpL3NwaWNlLWRpc3BsYXkuYwppbmRleCAwOTYzYzc4MjVmLi4zNDZmZmY0NGY0IDEwMDY0NAot LS0gYS91aS9zcGljZS1kaXNwbGF5LmMKKysrIGIvdWkvc3BpY2UtZGlzcGxheS5jCkBAIC02MzAs MTMgKzYzMCwxMyBAQCBzdGF0aWMgaW50IGludGVyZmFjZV9yZXFfY3Vyc29yX25vdGlmaWNhdGlv bihRWExJbnN0YW5jZSAqc2luKQogCiBzdGF0aWMgdm9pZCBpbnRlcmZhY2Vfbm90aWZ5X3VwZGF0 ZShRWExJbnN0YW5jZSAqc2luLCB1aW50MzJfdCB1cGRhdGVfaWQpCiB7Ci0gICAgZnByaW50Zihz dGRlcnIsICIlczogYWJvcnQoKVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICBmcHJpbnRmKHN0ZGVy ciwgIiVzOiBhYm9ydCgpXG4iLCBfX2Z1bmNfXyk7CiAgICAgYWJvcnQoKTsKIH0KIAogc3RhdGlj IGludCBpbnRlcmZhY2VfZmx1c2hfcmVzb3VyY2VzKFFYTEluc3RhbmNlICpzaW4pCiB7Ci0gICAg ZnByaW50ZihzdGRlcnIsICIlczogYWJvcnQoKVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICBmcHJp bnRmKHN0ZGVyciwgIiVzOiBhYm9ydCgpXG4iLCBfX2Z1bmNfXyk7CiAgICAgYWJvcnQoKTsKICAg ICByZXR1cm4gMDsKIH0KLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=