From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57209) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eENOl-0003HX-N1 for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:40:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eENOZ-0007Pn-EO for qemu-devel@nongnu.org; Mon, 13 Nov 2017 17:40:11 -0500 From: Alistair Francis Date: Mon, 13 Nov 2017 14:34:42 -0800 Message-ID: <67465b2020def3680dfd15d6473d3316c3fc8be0.1510612380.git.alistair.francis@xilinx.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH v5 02/29] Replace all occurances of __FUNCTION__ with __func__ List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, qemu-trivial@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 Cc: Fam Zheng Cc: Juan Quintela Cc: "Dr. David Alan Gilbert" Cc: qemu-arm@nongnu.org Cc: qemu-block@nongnu.org Cc: xen-devel@lists.xenproject.org Reviewed-by: Eric Blake Reviewed-by: Stefan Hajnoczi Reviewed-by: Anthony PERARD Reviewed-by: Juan Quintela --- 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 ++-- 64 files changed, 272 insertions(+), 272 deletions(-) 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 ab691a7985..db860c238e 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); } } @@ -1344,7 +1344,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; @@ -1417,7 +1417,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); } } @@ -1618,7 +1618,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; @@ -1641,14 +1641,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); @@ -1675,7 +1675,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); } } @@ -1851,7 +1851,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]; @@ -1860,7 +1860,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; @@ -1912,7 +1912,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 a3e670c188..948268afd8 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 8bb44a7cc1..6d8b728923 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 76dcd3f76e..919cb9b803 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); } } @@ -640,7 +640,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 de65c9ebb9..e243182394 100644 --- a/hw/block/onenand.c +++ b/hw/block/onenand.c @@ -659,12 +659,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; } @@ -709,7 +709,7 @@ static void onenand_write(void *opaque, hwaddr addr, default: fprintf(stderr, "%s: unknown OneNAND boot command %"PRIx64"\n", - __FUNCTION__, value); + __func__, value); } break; @@ -760,7 +760,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 8e2547ac05..30cd415330 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -644,7 +644,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 373311f91a..b72dcbcc32 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 75ac8c2ab5..1cad57f644 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 c129985e2a..1c728cd24b 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 5a9dad9aae..e12336d14a 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 9f61e27edc..2ebeab5d90 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 eb58c378e0..ef116c636c 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 3282809583..be01e1aec0 100644 --- a/migration/block.c +++ b/migration/block.c @@ -630,7 +630,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(); @@ -657,7 +657,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 ad1ceafb3f..586f058f1b 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.14.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alistair Francis Subject: [PATCH v5 02/29] Replace all occurances of __FUNCTION__ with __func__ Date: Mon, 13 Nov 2017 14:34:42 -0800 Message-ID: <67465b2020def3680dfd15d6473d3316c3fc8be0.1510612380.git.alistair.francis@xilinx.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eENNk-0007My-Uo for xen-devel@lists.xenproject.org; Mon, 13 Nov 2017 22:39:09 +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, qemu-trivial@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 aWwuY29tPgpDYzogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgpDYzogRmFt IFpoZW5nIDxmYW16QHJlZGhhdC5jb20+CkNjOiBKdWFuIFF1aW50ZWxhIDxxdWludGVsYUByZWRo YXQuY29tPgpDYzogIkRyLiBEYXZpZCBBbGFuIEdpbGJlcnQiIDxkZ2lsYmVydEByZWRoYXQuY29t PgpDYzogcWVtdS1hcm1Abm9uZ251Lm9yZwpDYzogcWVtdS1ibG9ja0Bub25nbnUub3JnCkNjOiB4 ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKUmV2aWV3ZWQtYnk6IEVyaWMgQmxha2UgPGVi bGFrZUByZWRoYXQuY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUBy ZWRoYXQuY29tPgpSZXZpZXdlZC1ieTogQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNp dHJpeC5jb20+ClJldmlld2VkLWJ5OiBKdWFuIFF1aW50ZWxhIDxxdWludGVsYUByZWRoYXQuY29t PgotLS0KCiBody9hcm0vbnNlcmllcy5jICAgICAgICAgICB8ICAyICstCiBody9hcm0vb21hcDEu YyAgICAgICAgICAgICB8IDQyICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQogaHcvYXJtL29tYXAyLmMgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KIGh3L2Fy bS9wYWxtLmMgICAgICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KIGh3L2FybS9weGEyeHgu YyAgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogaHcvYXJtL3B4YTJ4eF9ncGlvLmMgICAgICAgfCAgNiArKystLS0KIGh3L2FybS9w eGEyeHhfcGljLmMgICAgICAgIHwgIDQgKystLQogaHcvYXJtL3Rvc2EuYyAgICAgICAgICAgICAg fCAxMCArKysrKy0tLS0tCiBody9hdWRpby9oZGEtY29kZWMuYyAgICAgICB8IDEwICsrKysrLS0t LS0KIGh3L2F1ZGlvL2ludGVsLWhkYS5jICAgICAgIHwgMjggKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLQogaHcvYXVkaW8vd204NzUwLmMgICAgICAgICAgfCAgNCArKy0tCiBody9ibG9jay9u YW5kLmMgICAgICAgICAgICB8ICA0ICsrLS0KIGh3L2Jsb2NrL29uZW5hbmQuYyAgICAgICAgIHwg IDggKysrKy0tLS0KIGh3L2J0L2NvcmUuYyAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQog aHcvYnQvaGNpLWNzci5jICAgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQogaHcvYnQvaGNp LmMgICAgICAgICAgICAgICAgfCAyNiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogaHcvYnQv aGlkLmMgICAgICAgICAgICAgICAgfCAgMiArLQogaHcvYnQvbDJjYXAuYyAgICAgICAgICAgICAg fCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCiBody9idC9zZHAuYyAgICAgICAgICAgICAgICB8 ICA2ICsrKy0tLQogaHcvZGlzcGxheS9ibGl6emFyZC5jICAgICAgfCAxOCArKysrKysrKystLS0t LS0tLS0KIGh3L2Rpc3BsYXkvb21hcF9kc3MuYyAgICAgIHwgIDYgKysrLS0tCiBody9kaXNwbGF5 L3B4YTJ4eF9sY2QuYyAgICB8IDE0ICsrKysrKystLS0tLS0tCiBody9kaXNwbGF5L3F4bC1yZW5k ZXIuYyAgICB8ICA2ICsrKy0tLQogaHcvZGlzcGxheS9xeGwuaCAgICAgICAgICAgfCAgMiArLQog aHcvZGlzcGxheS90YzYzOTN4Yi5jICAgICAgfCAgMiArLQogaHcvZGlzcGxheS94ZW5mYi5jICAg ICAgICAgfCAgMiArLQogaHcvZG1hL29tYXBfZG1hLmMgICAgICAgICAgfCAyNiArKysrKysrKysr KysrLS0tLS0tLS0tLS0tLQogaHcvZG1hL3B4YTJ4eF9kbWEuYyAgICAgICAgfCAxNCArKysrKysr LS0tLS0tLQogaHcvZ3Bpby9tYXg3MzEwLmMgICAgICAgICAgfCAgOCArKysrLS0tLQogaHcvZ3Bp by9vbWFwX2dwaW8uYyAgICAgICAgfCAgMiArLQogaHcvaTJjL29tYXBfaTJjLmMgICAgICAgICAg fCAgNiArKystLS0KIGh3L2lkZS9haGNpLmMgICAgICAgICAgICAgIHwgIDIgKy0KIGh3L2lkZS9t aWNyb2RyaXZlLmMgICAgICAgIHwgIDQgKystLQogaHcvaW5wdXQvbG04MzJ4LmMgICAgICAgICAg fCAgNiArKystLS0KIGh3L2lucHV0L3B4YTJ4eF9rZXlwYWQuYyAgIHwgIDYgKysrLS0tCiBody9p bnB1dC90c2MyMDA1LmMgICAgICAgICB8ICA4ICsrKystLS0tCiBody9pbnB1dC90c2MyMTB4LmMg ICAgICAgICB8ICA0ICsrLS0KIGh3L2ludGMvb21hcF9pbnRjLmMgICAgICAgIHwgIDIgKy0KIGh3 L2lzYS92dDgyYzY4Ni5jICAgICAgICAgIHwgIDIgKy0KIGh3L21pcHMvZ3Q2NHh4eF9wY2kuYyAg ICAgIHwgIDIgKy0KIGh3L21pc2MvY2J1cy5jICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0t CiBody9taXNjL29tYXBfY2xrLmMgICAgICAgICB8ICA0ICsrLS0KIGh3L21pc2Mvb21hcF9ncG1j LmMgICAgICAgIHwgIDYgKysrLS0tCiBody9taXNjL29tYXBfbDQuYyAgICAgICAgICB8ICA0ICsr LS0KIGh3L21pc2Mvb21hcF9zZHJjLmMgICAgICAgIHwgIDIgKy0KIGh3L21pc2Mvb21hcF90YXAu YyAgICAgICAgIHwgIDYgKysrLS0tCiBody9taXNjL3RtcDEwNS5jICAgICAgICAgICB8ICAyICst CiBody9wY2ktaG9zdC9ib25pdG8uYyAgICAgICB8ICAyICstCiBody9zZC9weGEyeHhfbW1jaS5j ICAgICAgICB8ICA2ICsrKy0tLQogaHcvc3NpL29tYXBfc3BpLmMgICAgICAgICAgfCAgNiArKyst LS0KIGh3L3RpbWVyL29tYXBfZ3B0aW1lci5jICAgIHwgIDYgKysrLS0tCiBody90aW1lci90d2w5 MjIzMC5jICAgICAgICB8ICA2ICsrKy0tLQogaHcvdXNiL2Rlc2MuYyAgICAgICAgICAgICAgfCAg MiArLQogaHcvdXNiL2Rldi1ibHVldG9vdGguYyAgICAgfCAgNCArKy0tCiBody91c2IvaGNkLW11 c2IuYyAgICAgICAgICB8ICA0ICsrLS0KIGh3L3VzYi90dXNiNjAxMC5jICAgICAgICAgIHwgMTQg KysrKysrKy0tLS0tLS0KIGh3L3hlbnB2L3hlbl9kb21haW5idWlsZC5jIHwgMTYgKysrKysrKyst LS0tLS0tLQogaHcveGVucHYveGVuX21hY2hpbmVfcHYuYyAgfCAgMiArLQogaW5jbHVkZS9ody9h cm0vb21hcC5oICAgICAgfCAxMCArKysrKy0tLS0tCiBpbmNsdWRlL2h3L2FybS9zaGFycHNsLmgg ICB8ICAyICstCiBtZW1vcnlfbWFwcGluZy5jICAgICAgICAgICB8ICAyICstCiBtaWdyYXRpb24v YmxvY2suYyAgICAgICAgICB8ICA0ICsrLS0KIHVpL2N1cnNvci5jICAgICAgICAgICAgICAgIHwg IDYgKysrLS0tCiB1aS9zcGljZS1kaXNwbGF5LmMgICAgICAgICB8ICA0ICsrLS0KIDY0IGZpbGVz IGNoYW5nZWQsIDI3MiBpbnNlcnRpb25zKCspLCAyNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvaHcvYXJtL25zZXJpZXMuYyBiL2h3L2FybS9uc2VyaWVzLmMKaW5kZXggNTgwMDViNjYxOS4u MzI2ODdhZmNlZCAxMDA2NDQKLS0tIGEvaHcvYXJtL25zZXJpZXMuYworKysgYi9ody9hcm0vbnNl cmllcy5jCkBAIC00NjMsNyArNDYzLDcgQEAgc3RhdGljIHVpbnQzMl90IG1pcGlkX3R4cngodm9p ZCAqb3BhcXVlLCB1aW50MzJfdCBjbWQsIGludCBsZW4pCiAgICAgdWludDhfdCByZXQ7CiAKICAg ICBpZiAobGVuID4gOSkgewotICAgICAgICBod19lcnJvcigiJXM6IEZJWE1FOiBiYWQgU1BJIHdv cmQgd2lkdGggJWlcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKyAgICAgICAgaHdfZXJyb3IoIiVz OiBGSVhNRTogYmFkIFNQSSB3b3JkIHdpZHRoICVpXG4iLCBfX2Z1bmNfXywgbGVuKTsKICAgICB9 CiAKICAgICBpZiAocy0+cCA+PSBBUlJBWV9TSVpFKHMtPnJlc3ApKSB7CmRpZmYgLS1naXQgYS9o dy9hcm0vb21hcDEuYyBiL2h3L2FybS9vbWFwMS5jCmluZGV4IGIzZTc2MjUxMzAuLjEzODgyMDAx OTEgMTAwNjQ0Ci0tLSBhL2h3L2FybS9vbWFwMS5jCisrKyBiL2h3L2FybS9vbWFwMS5jCkBAIC05 OTksNyArOTk5LDcgQEAgc3RhdGljIHVpbnQ2NF90IG9tYXBfaWRfcmVhZCh2b2lkICpvcGFxdWUs IGh3YWRkciBhZGRyLAogICAgICAgICBjYXNlIG9tYXAxNTEwOgogICAgICAgICAgICAgcmV0dXJu IDB4MDMzMTAxMTU7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBod19lcnJvcigiJXM6 IGJhZCBtcHUgbW9kZWxcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBod19lcnJvcigi JXM6IGJhZCBtcHUgbW9kZWxcbiIsIF9fZnVuY19fKTsKICAgICAgICAgfQogICAgICAgICBicmVh azsKIApAQCAtMTAxMCw3ICsxMDEwLDcgQEAgc3RhdGljIHVpbnQ2NF90IG9tYXBfaWRfcmVhZCh2 b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBjYXNlIG9tYXAxNTEwOgogICAgICAg ICAgICAgcmV0dXJuIDB4ZmI0NzAwMmY7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBo d19lcnJvcigiJXM6IGJhZCBtcHUgbW9kZWxcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAg ICBod19lcnJvcigiJXM6IGJhZCBtcHUgbW9kZWxcbiIsIF9fZnVuY19fKTsKICAgICAgICAgfQog ICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNzE2LDcgKzE3MTYsNyBAQCBzdGF0aWMgdm9pZCBv bWFwX2Nsa21fd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICBjYXNlIDB4MTg6 CS8qIEFSTV9TWVNTVCAqLwogICAgICAgICBpZiAoKHMtPmNsa20uY2xvY2tpbmdfc2NoZW1lIF4g KHZhbHVlID4+IDExKSkgJiA3KSB7CiAgICAgICAgICAgICBzLT5jbGttLmNsb2NraW5nX3NjaGVt ZSA9ICh2YWx1ZSA+PiAxMSkgJiA3OwotICAgICAgICAgICAgcHJpbnRmKCIlczogY2xvY2tpbmcg c2NoZW1lIHNldCB0byAlc1xuIiwgX19GVU5DVElPTl9fLAorICAgICAgICAgICAgcHJpbnRmKCIl czogY2xvY2tpbmcgc2NoZW1lIHNldCB0byAlc1xuIiwgX19mdW5jX18sCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2xrc2NoZW1lbmFtZVtzLT5jbGttLmNsb2NraW5nX3NjaGVtZV0pOwog ICAgICAgICB9CiAgICAgICAgIHMtPmNsa20uY29sZF9zdGFydCAmPSB2YWx1ZSAmIDB4M2Y7CkBA IC0yMTI5LDE0ICsyMTI5LDE0IEBAIHFlbXVfaXJxICpvbWFwX21wdWlvX2luX2dldChzdHJ1Y3Qg b21hcF9tcHVpb19zICpzKQogdm9pZCBvbWFwX21wdWlvX291dF9zZXQoc3RydWN0IG9tYXBfbXB1 aW9fcyAqcywgaW50IGxpbmUsIHFlbXVfaXJxIGhhbmRsZXIpCiB7CiAgICAgaWYgKGxpbmUgPj0g MTYgfHwgbGluZSA8IDApCi0gICAgICAgIGh3X2Vycm9yKCIlczogTm8gR1BJTyBsaW5lICVpXG4i LCBfX0ZVTkNUSU9OX18sIGxpbmUpOworICAgICAgICBod19lcnJvcigiJXM6IE5vIEdQSU8gbGlu ZSAlaVxuIiwgX19mdW5jX18sIGxpbmUpOwogICAgIHMtPmhhbmRsZXJbbGluZV0gPSBoYW5kbGVy OwogfQogCiB2b2lkIG9tYXBfbXB1aW9fa2V5KHN0cnVjdCBvbWFwX21wdWlvX3MgKnMsIGludCBy b3csIGludCBjb2wsIGludCBkb3duKQogewogICAgIGlmIChyb3cgPj0gNSB8fCByb3cgPCAwKQot ICAgICAgICBod19lcnJvcigiJXM6IE5vIGtleSAlaS0laVxuIiwgX19GVU5DVElPTl9fLCBjb2ws IHJvdyk7CisgICAgICAgIGh3X2Vycm9yKCIlczogTm8ga2V5ICVpLSVpXG4iLCBfX2Z1bmNfXywg Y29sLCByb3cpOwogCiAgICAgaWYgKGRvd24pCiAgICAgICAgIHMtPmJ1dHRvbnNbcm93XSB8PSAx IDw8IGNvbDsKQEAgLTIzMTMsNyArMjMxMyw3IEBAIHZvaWQgb21hcF91d2lyZV9hdHRhY2goc3Ry dWN0IG9tYXBfdXdpcmVfcyAqcywKICAgICAgICAgICAgICAgICB1V2lyZVNsYXZlICpzbGF2ZSwg aW50IGNoaXBzZWxlY3QpCiB7CiAgICAgaWYgKGNoaXBzZWxlY3QgPCAwIHx8IGNoaXBzZWxlY3Qg PiAzKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEJhZCBjaGlwc2VsZWN0ICVpXG4i LCBfX0ZVTkNUSU9OX18sIGNoaXBzZWxlY3QpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz OiBCYWQgY2hpcHNlbGVjdCAlaVxuIiwgX19mdW5jX18sIGNoaXBzZWxlY3QpOwogICAgICAgICBl eGl0KC0xKTsKICAgICB9CiAKQEAgLTIzMzUsNyArMjMzNSw3IEBAIHN0YXRpYyB2b2lkIG9tYXBf cHdsX3VwZGF0ZShzdHJ1Y3Qgb21hcF9wd2xfcyAqcykKIAogICAgIGlmIChvdXRwdXQgIT0gcy0+ b3V0cHV0KSB7CiAgICAgICAgIHMtPm91dHB1dCA9IG91dHB1dDsKLSAgICAgICAgcHJpbnRmKCIl czogQmFja2xpZ2h0IG5vdyBhdCAlaS8yNTZcbiIsIF9fRlVOQ1RJT05fXywgb3V0cHV0KTsKKyAg ICAgICAgcHJpbnRmKCIlczogQmFja2xpZ2h0IG5vdyBhdCAlaS8yNTZcbiIsIF9fZnVuY19fLCBv dXRwdXQpOwogICAgIH0KIH0KIApAQCAtMjQ3Myw3ICsyNDczLDcgQEAgc3RhdGljIHZvaWQgb21h cF9wd3Rfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICBjYXNlIDB4MDQ6CS8q IFZSQyAqLwogICAgICAgICBpZiAoKHZhbHVlIF4gcy0+dnJjKSAmIDEpIHsKICAgICAgICAgICAg IGlmICh2YWx1ZSAmIDEpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIlczogJWlIeiBidXp6IG9u XG4iLCBfX0ZVTkNUSU9OX18sIChpbnQpCisgICAgICAgICAgICAgICAgcHJpbnRmKCIlczogJWlI eiBidXp6IG9uXG4iLCBfX2Z1bmNfXywgKGludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogMS41IE1IeiBmcm9tIGEgMTItTUh6IG9yIDEzLU1IeiBQV1RfQ0xLICovCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgob21hcF9jbGtfZ2V0cmF0ZShzLT5jbGspID4+ IDMpIC8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFByZS1tdWx0aXBsZXhl ciBkaXZpZGVyICovCkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX3B3dF93 cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCh2YWx1ZSAmICgxIDw8IDUpKSA/ICA4MCA6IDEyNykgLwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDEwNyAqIDU1ICogNjMgKiAxMjcpKSk7CiAgICAgICAgICAg ICBlbHNlCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIlczogc2lsZW5jZSFcbiIsIF9fRlVOQ1RJ T05fXyk7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlczogc2lsZW5jZSFcbiIsIF9fZnVuY19f KTsKICAgICAgICAgfQogICAgICAgICBzLT52cmMgPSB2YWx1ZSAmIDB4N2Y7CiAgICAgICAgIGJy ZWFrOwpAQCAtMjU2Miw3ICsyNTYyLDcgQEAgc3RhdGljIHZvaWQgb21hcF9ydGNfYWxhcm1fdXBk YXRlKHN0cnVjdCBvbWFwX3J0Y19zICpzKQogewogICAgIHMtPmFsYXJtX3RpID0gbWt0aW1lZ20o JnMtPmFsYXJtX3RtKTsKICAgICBpZiAocy0+YWxhcm1fdGkgPT0gLTEpCi0gICAgICAgIHByaW50 ZigiJXM6IGNvbnZlcnNpb24gZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBwcmlu dGYoIiVzOiBjb252ZXJzaW9uIGZhaWxlZFxuIiwgX19mdW5jX18pOwogfQogCiBzdGF0aWMgdWlu dDY0X3Qgb21hcF9ydGNfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLApAQCAtMzAyOCw3 ICszMDI4LDcgQEAgc3RhdGljIHZvaWQgb21hcF9tY2JzcF9zb3VyY2VfdGljayh2b2lkICpvcGFx dWUpCiAgICAgaWYgKCFzLT5yeF9yYXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHMtPnJ4 X3JlcSkKLSAgICAgICAgcHJpbnRmKCIlczogUnggRklGTyBvdmVycnVuXG4iLCBfX0ZVTkNUSU9O X18pOworICAgICAgICBwcmludGYoIiVzOiBSeCBGSUZPIG92ZXJydW5cbiIsIF9fZnVuY19fKTsK IAogICAgIHMtPnJ4X3JlcSA9IHMtPnJ4X3JhdGUgPDwgYnBzWyhzLT5yY3JbMF0gPj4gNSkgJiA3 XTsKIApAQCAtMzA3NCw3ICszMDc0LDcgQEAgc3RhdGljIHZvaWQgb21hcF9tY2JzcF9zaW5rX3Rp Y2sodm9pZCAqb3BhcXVlKQogICAgIGlmICghcy0+dHhfcmF0ZSkKICAgICAgICAgcmV0dXJuOwog ICAgIGlmIChzLT50eF9yZXEpCi0gICAgICAgIHByaW50ZigiJXM6IFR4IEZJRk8gdW5kZXJydW5c biIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIHByaW50ZigiJXM6IFR4IEZJRk8gdW5kZXJydW5c biIsIF9fZnVuY19fKTsKIAogICAgIHMtPnR4X3JlcSA9IHMtPnR4X3JhdGUgPDwgYnBzWyhzLT54 Y3JbMF0gPj4gNSkgJiA3XTsKIApAQCAtMzE3Niw3ICszMTc2LDcgQEAgc3RhdGljIHVpbnQ2NF90 IG9tYXBfbWNic3BfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICAvKiBG YWxsIHRocm91Z2guICAqLwogICAgIGNhc2UgMHgwMjoJLyogRFJSMSAqLwogICAgICAgICBpZiAo cy0+cnhfcmVxIDwgMikgewotICAgICAgICAgICAgcHJpbnRmKCIlczogUnggRklGTyB1bmRlcnJ1 blxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6IFJ4IEZJRk8gdW5k ZXJydW5cbiIsIF9fZnVuY19fKTsKICAgICAgICAgICAgIG9tYXBfbWNic3BfcnhfZG9uZShzKTsK ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHMtPnR4X3JlcSAtPSAyOwpAQCAtMzI4Miw3 ICszMjgyLDcgQEAgc3RhdGljIHZvaWQgb21hcF9tY2JzcF93cml0ZWgodm9pZCAqb3BhcXVlLCBo d2FkZHIgYWRkciwKICAgICAgICAgICAgIGlmIChzLT50eF9yZXEgPCAyKQogICAgICAgICAgICAg ICAgIG9tYXBfbWNic3BfdHhfZG9uZShzKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBw cmludGYoIiVzOiBUeCBGSUZPIG92ZXJydW5cbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAg ICBwcmludGYoIiVzOiBUeCBGSUZPIG92ZXJydW5cbiIsIF9fZnVuY19fKTsKICAgICAgICAgcmV0 dXJuOwogCiAgICAgY2FzZSAweDA4OgkvKiBTUENSMiAqLwpAQCAtMzI5Nyw3ICszMjk3LDcgQEAg c3RhdGljIHZvaWQgb21hcF9tY2JzcF93cml0ZWgodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwK ICAgICAgICAgcy0+c3BjclswXSAmPSAweDAwMDY7CiAgICAgICAgIHMtPnNwY3JbMF0gfD0gMHhm OGY5ICYgdmFsdWU7CiAgICAgICAgIGlmICh2YWx1ZSAmICgxIDw8IDE1KSkJCQkJLyogRExCICov Ci0gICAgICAgICAgICBwcmludGYoIiVzOiBEaWdpdGFsIExvb3BiYWNrIG1vZGUgZW5hYmxlIGF0 dGVtcHRcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYoIiVzOiBEaWdpdGFs IExvb3BiYWNrIG1vZGUgZW5hYmxlIGF0dGVtcHRcbiIsIF9fZnVuY19fKTsKICAgICAgICAgaWYg KH52YWx1ZSAmIDEpIHsJCQkJLyogUlJTVCAqLwogICAgICAgICAgICAgcy0+c3BjclswXSAmPSB+ NjsKICAgICAgICAgICAgIHMtPnJ4X3JlcSA9IDA7CkBAIC0zMzMwLDEzICszMzMwLDEzIEBAIHN0 YXRpYyB2b2lkIG9tYXBfbWNic3Bfd3JpdGVoKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAg ICAgICAgIHMtPm1jclsxXSA9IHZhbHVlICYgMHgwM2UzOwogICAgICAgICBpZiAodmFsdWUgJiAz KQkJCQkJLyogWE1DTSAqLwogICAgICAgICAgICAgcHJpbnRmKCIlczogVHggY2hhbm5lbCBzZWxl Y3Rpb24gbW9kZSBlbmFibGUgYXR0ZW1wdFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fKTsK ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgMHgxYToJLyogTUNSMSAqLwogICAgICAgICBzLT5t Y3JbMF0gPSB2YWx1ZSAmIDB4MDNlMTsKICAgICAgICAgaWYgKHZhbHVlICYgMSkJCQkJCS8qIFJN Q00gKi8KICAgICAgICAgICAgIHByaW50ZigiJXM6IFJ4IGNoYW5uZWwgc2VsZWN0aW9uIG1vZGUg ZW5hYmxlIGF0dGVtcHRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElP Tl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAgICAgICAgIHJl dHVybjsKICAgICBjYXNlIDB4MWM6CS8qIFJDRVJBICovCiAgICAgICAgIHMtPnJjZXJbMF0gPSB2 YWx1ZSAmIDB4ZmZmZjsKQEAgLTM0MTgsNyArMzQxOCw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfbWNi c3Bfd3JpdGV3KHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgICAgICBpZiAocy0+ dHhfcmVxIDwgNCkKICAgICAgICAgICAgICAgICBvbWFwX21jYnNwX3R4X2RvbmUocyk7CiAgICAg ICAgIH0gZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIlczogVHggRklGTyBvdmVycnVuXG4iLCBf X0ZVTkNUSU9OX18pOworICAgICAgICAgICAgcHJpbnRmKCIlczogVHggRklGTyBvdmVycnVuXG4i LCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1MzYsNyArMzUzNiw3 IEBAIHN0YXRpYyB2b2lkIG9tYXBfbHBnX3RpY2sodm9pZCAqb3BhcXVlKQogICAgICAgICB0aW1l cl9tb2Qocy0+dG0sIHFlbXVfY2xvY2tfZ2V0X21zKFFFTVVfQ0xPQ0tfVklSVFVBTCkgKyBzLT5v bik7CiAKICAgICBzLT5jeWNsZSA9ICFzLT5jeWNsZTsKLSAgICBwcmludGYoIiVzOiBMRUQgaXMg JXNcbiIsIF9fRlVOQ1RJT05fXywgcy0+Y3ljbGUgPyAib24iIDogIm9mZiIpOworICAgIHByaW50 ZigiJXM6IExFRCBpcyAlc1xuIiwgX19mdW5jX18sIHMtPmN5Y2xlID8gIm9uIiA6ICJvZmYiKTsK IH0KIAogc3RhdGljIHZvaWQgb21hcF9scGdfdXBkYXRlKHN0cnVjdCBvbWFwX2xwZ19zICpzKQpA QCAtMzU1Nyw5ICszNTU3LDkgQEAgc3RhdGljIHZvaWQgb21hcF9scGdfdXBkYXRlKHN0cnVjdCBv bWFwX2xwZ19zICpzKQogCiAgICAgdGltZXJfZGVsKHMtPnRtKTsKICAgICBpZiAob24gPT0gcGVy aW9kICYmIHMtPm9uIDwgcy0+cGVyaW9kKQotICAgICAgICBwcmludGYoIiVzOiBMRUQgaXMgb25c biIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIHByaW50ZigiJXM6IExFRCBpcyBvblxuIiwgX19m dW5jX18pOwogICAgIGVsc2UgaWYgKG9uID09IDAgJiYgcy0+b24pCi0gICAgICAgIHByaW50Zigi JXM6IExFRCBpcyBvZmZcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIHByaW50ZigiJXM6IExF RCBpcyBvZmZcbiIsIF9fZnVuY19fKTsKICAgICBlbHNlIGlmIChvbiAmJiAob24gIT0gcy0+b24g fHwgcGVyaW9kICE9IHMtPnBlcmlvZCkpIHsKICAgICAgICAgcy0+Y3ljbGUgPSAwOwogICAgICAg ICBzLT5vbiA9IG9uOwpkaWZmIC0tZ2l0IGEvaHcvYXJtL29tYXAyLmMgYi9ody9hcm0vb21hcDIu YwppbmRleCBmNWIxNDg4ODFjLi5iNTM4NzhiOGI5IDEwMDY0NAotLS0gYS9ody9hcm0vb21hcDIu YworKysgYi9ody9hcm0vb21hcDIuYwpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgc3RhdGljIHZvaWQg b21hcF9wcmNtX2FwbGxfdXBkYXRlKHN0cnVjdCBvbWFwX3ByY21fcyAqcykKIAogICAgIGlmICht b2RlWzBdID09IDEgfHwgbW9kZVswXSA9PSAyIHx8IG1vZGVbMV0gPT0gMSB8fCBtb2RlWzFdID09 IDIpCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCBFTl81NE1fUExMIG9yIGJhZCBF Tl85Nk1fUExMXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fKTsKIH0KIAogc3RhdGljIHZvaWQgb21hcF9w cmNtX2RwbGxfdXBkYXRlKHN0cnVjdCBvbWFwX3ByY21fcyAqcykKQEAgLTEzMzEsNyArMTMzMSw3 IEBAIHN0YXRpYyB2b2lkIG9tYXBfcHJjbV9kcGxsX3VwZGF0ZShzdHJ1Y3Qgb21hcF9wcmNtX3Mg KnMpCiAgICAgcy0+ZHBsbF9sb2NrID0gMDsKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNl IDA6Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCBFTl9EUExMXG4iLCBfX0ZVTkNU SU9OX18pOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgRU5fRFBMTFxuIiwgX19m dW5jX18pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDE6CS8qIExvdy1wb3dlciBieXBhc3Mg bW9kZSAoRGVmYXVsdCkgKi8KICAgICBjYXNlIDI6CS8qIEZhc3QtcmVsb2NrIGJ5cGFzcyBtb2Rl ICovCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX3ByY21fZHBsbF91cGRh dGUoc3RydWN0IG9tYXBfcHJjbV9zICpzKQogICAgICAgICBvbWFwX2Nsa19yZXBhcmVudChjb3Jl LCBkcGxsX3gyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBmcHJpbnRm KHN0ZGVyciwgIiVzOiBiYWQgQ09SRV9DTEtfU1JDXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgQ09SRV9DTEtfU1JDXG4iLCBfX2Z1bmNfXyk7CiAg ICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTE2MjgsNyArMTYyOCw3IEBAIHN0YXRpYyB2b2lk IG9tYXBfcHJjbV93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgIGNhc2UgMHg1 MDA6CS8qIENNX0NMS0VOX1BMTCAqLwogICAgICAgICBpZiAodmFsdWUgJiAweGZmZmZmZjMwKQog ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogd3JpdGUgMHMgaW4gQ01fQ0xLRU5fUExM IGZvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1dHVyZSBjb21wYXRpYmlsaXR5 XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdXR1cmUg Y29tcGF0aWJpbGl0eVxuIiwgX19mdW5jX18pOwogICAgICAgICBpZiAoKHMtPmNsa2VuWzldIF4g dmFsdWUpICYgMHhjYykgewogICAgICAgICAgICAgcy0+Y2xrZW5bOV0gJj0gfjB4Y2M7CiAgICAg ICAgICAgICBzLT5jbGtlbls5XSB8PSB2YWx1ZSAmIDB4Y2M7CkBAIC0xNjQ3LDcgKzE2NDcsNyBA QCBzdGF0aWMgdm9pZCBvbWFwX3ByY21fd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwK ICAgICBjYXNlIDB4NTQwOgkvKiBDTV9DTEtTRUwxX1BMTCAqLwogICAgICAgICBpZiAodmFsdWUg JiAweGZjNDAwMGQ3KQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogd3JpdGUgMHMg aW4gQ01fQ0xLU0VMMV9QTEwgZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnV0 dXJlIGNvbXBhdGliaWxpdHlcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImZ1dHVyZSBjb21wYXRpYmlsaXR5XG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGlm ICgocy0+Y2xrc2VsWzVdIF4gdmFsdWUpICYgMHgwMDNmZmYwMCkgewogICAgICAgICAgICAgcy0+ Y2xrc2VsWzVdID0gdmFsdWUgJiAweDAzYmZmZjI4OwogICAgICAgICAgICAgb21hcF9wcmNtX2Rw bGxfdXBkYXRlKHMpOwpAQCAtMTY1OSw3ICsxNjU5LDcgQEAgc3RhdGljIHZvaWQgb21hcF9wcmNt X3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgY2FzZSAweDU0NDoJLyogQ01f Q0xLU0VMMl9QTEwgKi8KICAgICAgICAgaWYgKHZhbHVlICYgfjMpCiAgICAgICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIiVzOiB3cml0ZSAwcyBpbiBDTV9DTEtTRUwyX1BMTFszMToyXSBmb3IgIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdXR1cmUgY29tcGF0aWJpbGl0eVxuIiwgX19G VU5DVElPTl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnV0dXJlIGNvbXBhdGli aWxpdHlcbiIsIF9fZnVuY19fKTsKICAgICAgICAgaWYgKHMtPmNsa3NlbFs2XSAhPSAodmFsdWUg JiAzKSkgewogICAgICAgICAgICAgcy0+Y2xrc2VsWzZdID0gdmFsdWUgJiAzOwogICAgICAgICAg ICAgb21hcF9wcmNtX2RwbGxfdXBkYXRlKHMpOwpkaWZmIC0tZ2l0IGEvaHcvYXJtL3BhbG0uYyBi L2h3L2FybS9wYWxtLmMKaW5kZXggYTFmNTVkNzliNC4uMjg1ZjQzNzA5ZCAxMDA2NDQKLS0tIGEv aHcvYXJtL3BhbG0uYworKysgYi9ody9hcm0vcGFsbS5jCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRp YyB2b2lkIHN0YXRpY193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsIHVpbnQ2NF90 IHZhbHVlLAogewogI2lmZGVmIFNQWQogICAgIHByaW50ZigiJXM6IHZhbHVlICUwOGx4IHdyaXR0 ZW4gYXQgIiBQQV9GTVQgIlxuIiwKLSAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCB2 YWx1ZSwgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHZhbHVlLCBvZmZz ZXQpOwogI2VuZGlmCiB9CiAKQEAgLTEyNywxMSArMTI3LDExIEBAIHN0YXRpYyB2b2lkIHBhbG10 ZV9vbm9mZl9ncGlvcyh2b2lkICpvcGFxdWUsIGludCBsaW5lLCBpbnQgbGV2ZWwpCiAgICAgc3dp dGNoIChsaW5lKSB7CiAgICAgY2FzZSAwOgogICAgICAgICBwcmludGYoIiVzOiBjdXJyZW50IHRv IE1NQy9TRCBjYXJkICVzYWJsZWQuXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5D VElPTl9fLCBsZXZlbCA/ICJkaXMiIDogImVuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBf X2Z1bmNfXywgbGV2ZWwgPyAiZGlzIiA6ICJlbiIpOwogICAgICAgICBicmVhazsKICAgICBjYXNl IDE6CiAgICAgICAgIHByaW50ZigiJXM6IGludGVybmFsIHNwZWFrZXIgYW1wbGlmaWVyICVzLlxu IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgbGV2ZWwgPyAiZG93biIg OiAib24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBsZXZlbCA/ICJkb3du IiA6ICJvbiIpOwogICAgICAgICBicmVhazsKIAogICAgIC8qIFRoZXNlIExDRCAmIEF1ZGlvIG91 dHB1dCBzaWduYWxzIGhhdmUgbm90IGJlZW4gaWRlbnRpZmllZCB5ZXQuICAqLwpAQCAtMTM5LDEy ICsxMzksMTIgQEAgc3RhdGljIHZvaWQgcGFsbXRlX29ub2ZmX2dwaW9zKHZvaWQgKm9wYXF1ZSwg aW50IGxpbmUsIGludCBsZXZlbCkKICAgICBjYXNlIDM6CiAgICAgY2FzZSA0OgogICAgICAgICBw cmludGYoIiVzOiBMQ0QgR1BJTyVpICVzLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9f RlVOQ1RJT05fXywgbGluZSAtIDEsIGxldmVsID8gImhpZ2giIDogImxvdyIpOworICAgICAgICAg ICAgICAgICAgICAgICAgX19mdW5jX18sIGxpbmUgLSAxLCBsZXZlbCA/ICJoaWdoIiA6ICJsb3ci KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA1OgogICAgIGNhc2UgNjoKICAgICAgICAgcHJp bnRmKCIlczogQXVkaW8gR1BJTyVpICVzLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9f RlVOQ1RJT05fXywgbGluZSAtIDQsIGxldmVsID8gImhpZ2giIDogImxvdyIpOworICAgICAgICAg ICAgICAgICAgICAgICAgX19mdW5jX18sIGxpbmUgLSA0LCBsZXZlbCA/ICJoaWdoIiA6ICJsb3ci KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHN0YXRpYyB2 b2lkIHBhbG10ZV9pbml0KE1hY2hpbmVTdGF0ZSAqbWFjaGluZSkKICAgICAgICAgcm9tX3NpemUg PSBnZXRfaW1hZ2Vfc2l6ZShvcHRpb25fcm9tWzBdLm5hbWUpOwogICAgICAgICBpZiAocm9tX3Np emUgPiBmbGFzaF9zaXplKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBST00g aW1hZ2UgdG9vIGJpZyAoJXggPiAleClcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg X19GVU5DVElPTl9fLCByb21fc2l6ZSwgZmxhc2hfc2l6ZSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19mdW5jX18sIHJvbV9zaXplLCBmbGFzaF9zaXplKTsKICAgICAgICAgICAgIHJv bV9zaXplID0gMDsKICAgICAgICAgfQogICAgICAgICBpZiAocm9tX3NpemUgPiAwKSB7CkBAIC0y NDQsNyArMjQ0LDcgQEAgc3RhdGljIHZvaWQgcGFsbXRlX2luaXQoTWFjaGluZVN0YXRlICptYWNo aW5lKQogICAgICAgICB9CiAgICAgICAgIGlmIChyb21fc2l6ZSA8IDApIHsKICAgICAgICAgICAg IGZwcmludGYoc3RkZXJyLCAiJXM6IGVycm9yIGxvYWRpbmcgJyVzJ1xuIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIG9wdGlvbl9yb21bMF0ubmFtZSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIG9wdGlvbl9yb21bMF0ubmFtZSk7CiAg ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2h3L2FybS9weGEyeHguYyBiL2h3L2FybS9w eGEyeHguYwppbmRleCBhYjY5MWE3OTg1Li5kYjg2MGMyMzhlIDEwMDY0NAotLS0gYS9ody9hcm0v cHhhMnh4LmMKKysrIGIvaHcvYXJtL3B4YTJ4eC5jCkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGlj IHVpbnQ2NF90IHB4YTJ4eF9wbV9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAg ICAgIHJldHVybiBzLT5wbV9yZWdzW2FkZHIgPj4gMl07CiAgICAgZGVmYXVsdDoKICAgICBmYWls OgotICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fRlVO Q1RJT05fXywgYWRkcik7CisgICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19G TVQgIlxuIiwgX19mdW5jX18sIGFkZHIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0 dXJuIDA7CkBAIC0xMzksNyArMTM5LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X3BtX3dyaXRlKHZv aWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19GVU5D VElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZN VCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTE4 MCw3ICsxODAsNyBAQCBzdGF0aWMgdWludDY0X3QgcHhhMnh4X2NtX3JlYWQodm9pZCAqb3BhcXVl LCBod2FkZHIgYWRkciwKICAgICAgICAgcmV0dXJuIHMtPmNtX3JlZ3NbQ0NDUiA+PiAyXSB8ICgz IDw8IDI4KTsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3Rl ciAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJpbnRmKCIl czogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAgICAgICAg IGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMg dm9pZCBweGEyeHhfY21fd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAg YnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIg IiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgYWRkcik7CisgICAgICAgIHByaW50ZigiJXM6 IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19mdW5jX18sIGFkZHIpOwogICAgICAgICBi cmVhazsKICAgICB9CiB9CkBAIC00MTAsNyArNDEwLDcgQEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4 eF9tbV9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgICAgICByZXR1cm4g cy0+bW1fcmVnc1thZGRyID4+IDJdOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCIl czogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNUSU9OX18sIGFkZHIpOworICAg ICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBh ZGRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtNDI5LDcgKzQy OSw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9tbV93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBh ZGRyLAogICAgICAgICB9CiAKICAgICBkZWZhdWx0OgotICAgICAgICBwcmludGYoIiVzOiBCYWQg cmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgYWRkcik7CisgICAgICAgIHBy aW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19mdW5jX18sIGFkZHIpOwog ICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC02MTksNyArNjE5LDcgQEAgc3RhdGljIHVpbnQ2 NF90IHB4YTJ4eF9zc3BfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBp ZiAoIXMtPmVuYWJsZSkKICAgICAgICAgICAgIHJldHVybiAweGZmZmZmZmZmOwogICAgICAgICBp ZiAocy0+cnhfbGV2ZWwgPCAxKSB7Ci0gICAgICAgICAgICBwcmludGYoIiVzOiBTU1AgUnggVW5k ZXJydW5cbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYoIiVzOiBTU1AgUngg VW5kZXJydW5cbiIsIF9fZnVuY19fKTsKICAgICAgICAgICAgIHJldHVybiAweGZmZmZmZmZmOwog ICAgICAgICB9CiAgICAgICAgIHMtPnJ4X2xldmVsIC0tOwpAQCAtNjM2LDcgKzYzNiw3IEBAIHN0 YXRpYyB1aW50NjRfdCBweGEyeHhfc3NwX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwK ICAgICBjYXNlIFNTQUNEOgogICAgICAgICByZXR1cm4gcy0+c3NhY2Q7CiAgICAgZGVmYXVsdDoK LSAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNU SU9OX18sIGFkZHIpOworICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1U ICJcbiIsIF9fZnVuY19fLCBhZGRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVy biAwOwpAQCAtNjUzLDkgKzY1Myw5IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9zc3Bfd3JpdGUodm9p ZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgcy0+c3NjclswXSA9IHZhbHVlICYgMHhj N2ZmZmZmZjsKICAgICAgICAgcy0+ZW5hYmxlID0gdmFsdWUgJiBTU0NSMF9TU0U7CiAgICAgICAg IGlmICh2YWx1ZSAmIFNTQ1IwX01PRCkKLSAgICAgICAgICAgIHByaW50ZigiJXM6IEF0dGVtcHQg dG8gdXNlIG5ldHdvcmsgbW9kZVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIHByaW50 ZigiJXM6IEF0dGVtcHQgdG8gdXNlIG5ldHdvcmsgbW9kZVxuIiwgX19mdW5jX18pOwogICAgICAg ICBpZiAocy0+ZW5hYmxlICYmIFNTQ1IwX0RTUyh2YWx1ZSkgPCA0KQotICAgICAgICAgICAgcHJp bnRmKCIlczogV3JvbmcgZGF0YSBzaXplOiAlaSBiaXRzXG4iLCBfX0ZVTkNUSU9OX18sCisgICAg ICAgICAgICBwcmludGYoIiVzOiBXcm9uZyBkYXRhIHNpemU6ICVpIGJpdHNcbiIsIF9fZnVuY19f LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTQ1IwX0RTUyh2YWx1ZSkpOwogICAgICAg ICBpZiAoISh2YWx1ZSAmIFNTQ1IwX1NTRSkpIHsKICAgICAgICAgICAgIHMtPnNzc3IgPSAwOwpA QCAtNjY4LDcgKzY2OCw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9zc3Bfd3JpdGUodm9pZCAqb3Bh cXVlLCBod2FkZHIgYWRkciwKICAgICBjYXNlIFNTQ1IxOgogICAgICAgICBzLT5zc2NyWzFdID0g dmFsdWU7CiAgICAgICAgIGlmICh2YWx1ZSAmIChTU0NSMV9MQk0gfCBTU0NSMV9FRldSKSkKLSAg ICAgICAgICAgIHByaW50ZigiJXM6IEF0dGVtcHQgdG8gdXNlIFNTUCB0ZXN0IG1vZGVcbiIsIF9f RlVOQ1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYoIiVzOiBBdHRlbXB0IHRvIHVzZSBTU1Ag dGVzdCBtb2RlXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHB4YTJ4eF9zc3BfZmlmb191cGRhdGUo cyk7CiAgICAgICAgIGJyZWFrOwogCkBAIC03MjgsNyArNzI4LDcgQEAgc3RhdGljIHZvaWQgcHhh Mnh4X3NzcF93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBicmVhazsK IAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19G TVQgIlxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAgICAgcHJpbnRmKCIlczogQmFkIHJl Z2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRkcik7CiAgICAgICAgIGJyZWFrOwog ICAgIH0KIH0KQEAgLTk5MCw3ICs5OTAsNyBAQCBzdGF0aWMgdWludDY0X3QgcHhhMnh4X3J0Y19y ZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIGVsc2UKICAgICAgICAgICAg IHJldHVybiBzLT5sYXN0X3N3Y3I7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCIlczog QmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNUSU9OX18sIGFkZHIpOworICAgICAg ICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBhZGRy KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMTA5Niw3ICsxMDk2 LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X3J0Y193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBh ZGRyLAogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6 IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBhZGRyKTsKKyAgICAg ICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgYWRk cik7CiAgICAgfQogfQogCkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBzdGF0aWMgdWludDY0X3QgcHhh Mnh4X2kyY19yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgICAgICBzLT5p Ym1yID0gMDsKICAgICAgICAgcmV0dXJuIHMtPmlibXI7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg cHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNUSU9OX18sIGFk ZHIpOworICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9f ZnVuY19fLCBhZGRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAt MTQxNyw3ICsxNDE3LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X2kyY193cml0ZSh2b2lkICpvcGFx dWUsIGh3YWRkciBhZGRyLAogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAg IHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBh ZGRyKTsKKyAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBf X2Z1bmNfXywgYWRkcik7CiAgICAgfQogfQogCkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBzdGF0aWMg dWludDY0X3QgcHhhMnh4X2kyc19yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAg ICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCIl czogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNUSU9OX18sIGFkZHIpOworICAg ICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBh ZGRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMTY0MSwxNCAr MTY0MSwxNCBAQCBzdGF0aWMgdm9pZCBweGEyeHhfaTJzX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdh ZGRyIGFkZHIsCiAgICAgICAgICAgICBzLT5zdGF0dXMgJj0gfigxIDw8IDcpOwkJCS8qIEkyU09G RiAqLwogICAgICAgICB9CiAgICAgICAgIGlmICh2YWx1ZSAmICgxIDw8IDQpKQkJCQkvKiBFRldS ICovCi0gICAgICAgICAgICBwcmludGYoIiVzOiBBdHRlbXB0IHRvIHVzZSBzcGVjaWFsIGZ1bmN0 aW9uXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgcHJpbnRmKCIlczogQXR0ZW1wdCB0 byB1c2Ugc3BlY2lhbCBmdW5jdGlvblxuIiwgX19mdW5jX18pOwogICAgICAgICBzLT5lbmFibGUg PSAodmFsdWUgJiA5KSA9PSAxOwkJCS8qIEVOQiAmJiAhUlNUKi8KICAgICAgICAgcHhhMnh4X2ky c191cGRhdGUocyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU0FDUjE6CiAgICAgICAgIHMt PmNvbnRyb2xbMV0gPSB2YWx1ZSAmIDB4MDAzOTsKICAgICAgICAgaWYgKHZhbHVlICYgKDEgPDwg NSkpCQkJCS8qIEVOTEJGICovCi0gICAgICAgICAgICBwcmludGYoIiVzOiBBdHRlbXB0IHRvIHVz ZSBsb29wYmFjayBmdW5jdGlvblxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIHByaW50 ZigiJXM6IEF0dGVtcHQgdG8gdXNlIGxvb3BiYWNrIGZ1bmN0aW9uXG4iLCBfX2Z1bmNfXyk7CiAg ICAgICAgIGlmICh2YWx1ZSAmICgxIDw8IDQpKQkJCQkvKiBEUFJMICovCiAgICAgICAgICAgICBz LT5maWZvX2xlbiA9IDA7CiAgICAgICAgIHB4YTJ4eF9pMnNfdXBkYXRlKHMpOwpAQCAtMTY3NSw3 ICsxNjc1LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X2kyc193cml0ZSh2b2lkICpvcGFxdWUsIGh3 YWRkciBhZGRyLAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAg ICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9f LCBhZGRyKTsKKyAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4i LCBfX2Z1bmNfXywgYWRkcik7CiAgICAgfQogfQogCkBAIC0xODUxLDcgKzE4NTEsNyBAQCBzdGF0 aWMgdWludDY0X3QgcHhhMnh4X2Zpcl9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAg ICAgICAgICAgICBweGEyeHhfZmlyX3VwZGF0ZShzKTsKICAgICAgICAgICAgIHJldHVybiByZXQ7 CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCIlczogUnggRklGTyB1bmRlcnJ1bi5cbiIsIF9f RlVOQ1RJT05fXyk7CisgICAgICAgIHByaW50ZigiJXM6IFJ4IEZJRk8gdW5kZXJydW4uXG4iLCBf X2Z1bmNfXyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSUNTUjA6CiAgICAgICAgIHJldHVy biBzLT5zdGF0dXNbMF07CkBAIC0xODYwLDcgKzE4NjAsNyBAQCBzdGF0aWMgdWludDY0X3QgcHhh Mnh4X2Zpcl9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgY2FzZSBJQ0ZPUjoK ICAgICAgICAgcmV0dXJuIHMtPnJ4X2xlbjsKICAgICBkZWZhdWx0OgotICAgICAgICBwcmludGYo IiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgYWRkcik7Cisg ICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciAiIFJFR19GTVQgIlxuIiwgX19mdW5jX18s IGFkZHIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0xOTEyLDcg KzE5MTIsNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhfZmlyX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdh ZGRyIGFkZHIsCiAgICAgY2FzZSBJQ0ZPUjoKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK LSAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNU SU9OX18sIGFkZHIpOworICAgICAgICBwcmludGYoIiVzOiBCYWQgcmVnaXN0ZXIgIiBSRUdfRk1U ICJcbiIsIF9fZnVuY19fLCBhZGRyKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2h3L2FybS9w eGEyeHhfZ3Bpby5jIGIvaHcvYXJtL3B4YTJ4eF9ncGlvLmMKaW5kZXggNTIxZGJhZDAzOS4uZTE1 MDcwMTg4ZSAxMDA2NDQKLS0tIGEvaHcvYXJtL3B4YTJ4eF9ncGlvLmMKKysrIGIvaHcvYXJtL3B4 YTJ4eF9ncGlvLmMKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhfZ3Bpb19z ZXQodm9pZCAqb3BhcXVlLCBpbnQgbGluZSwgaW50IGxldmVsKQogICAgIHVpbnQzMl90IG1hc2s7 CiAKICAgICBpZiAobGluZSA+PSBzLT5saW5lcykgewotICAgICAgICBwcmludGYoIiVzOiBObyBH UElPIHBpbiAlaVxuIiwgX19GVU5DVElPTl9fLCBsaW5lKTsKKyAgICAgICAgcHJpbnRmKCIlczog Tm8gR1BJTyBwaW4gJWlcbiIsIF9fZnVuY19fLCBsaW5lKTsKICAgICAgICAgcmV0dXJuOwogICAg IH0KIApAQCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyB1aW50NjRfdCBweGEyeHhfZ3Bpb19yZWFk KHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKICAgICAgICAgcmV0dXJuIHMtPnN0YXR1c1ti YW5rXTsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNldCAi IFJFR19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBvZmZzZXQpOworICAgICAgICBod19lcnJvcigi JXM6IEJhZCBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBvZmZzZXQpOwogICAgIH0K IAogICAgIHJldHVybiAwOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9n cGlvX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKICAgICAgICAgYnJlYWs7CiAK ICAgICBkZWZhdWx0OgotICAgICAgICBod19lcnJvcigiJXM6IEJhZCBvZmZzZXQgIiBSRUdfRk1U ICJcbiIsIF9fRlVOQ1RJT05fXywgb2Zmc2V0KTsKKyAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQg b2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgb2Zmc2V0KTsKICAgICB9CiB9CiAKZGlm ZiAtLWdpdCBhL2h3L2FybS9weGEyeHhfcGljLmMgYi9ody9hcm0vcHhhMnh4X3BpYy5jCmluZGV4 IGI1MTZjZWQ4YzAuLjYxMjc1ZmEwNDAgMTAwNjQ0Ci0tLSBhL2h3L2FybS9weGEyeHhfcGljLmMK KysrIGIvaHcvYXJtL3B4YTJ4eF9waWMuYwpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyB1aW50 NjRfdCBweGEyeHhfcGljX21lbV9yZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKICAg ICBjYXNlIElDSFA6CS8qIEhpZ2hlc3QgUHJpb3JpdHkgcmVnaXN0ZXIgKi8KICAgICAgICAgcmV0 dXJuIHB4YTJ4eF9waWNfaGlnaGVzdChzKTsKICAgICBkZWZhdWx0OgotICAgICAgICBwcmludGYo IiVzOiBCYWQgcmVnaXN0ZXIgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNUSU9OX18sIG9m ZnNldCk7CisgICAgICAgIHByaW50ZigiJXM6IEJhZCByZWdpc3RlciBvZmZzZXQgIiBSRUdfRk1U ICJcbiIsIF9fZnVuY19fLCBvZmZzZXQpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CkBA IC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X3BpY19tZW1fd3JpdGUodm9pZCAq b3BhcXVlLCBod2FkZHIgb2Zmc2V0LAogICAgICAgICBzLT5wcmlvcml0eVszMiArICgob2Zmc2V0 IC0gSVBSMzIpID4+IDIpXSA9IHZhbHVlICYgMHg4MDAwMDAzZjsKICAgICAgICAgYnJlYWs7CiAg ICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCIlczogQmFkIHJlZ2lzdGVyIG9mZnNldCAiIFJF R19GTVQgIlxuIiwgX19GVU5DVElPTl9fLCBvZmZzZXQpOworICAgICAgICBwcmludGYoIiVzOiBC YWQgcmVnaXN0ZXIgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgb2Zmc2V0KTsKICAg ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBweGEyeHhfcGljX3VwZGF0ZShvcGFxdWUpOwpkaWZm IC0tZ2l0IGEvaHcvYXJtL3Rvc2EuYyBiL2h3L2FybS90b3NhLmMKaW5kZXggMDQ0Nzk2MzUwYS4u YTU1YjFhMzY5YyAxMDA2NDQKLS0tIGEvaHcvYXJtL3Rvc2EuYworKysgYi9ody9hcm0vdG9zYS5j CkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIGludCB0b3NhX2RhY19zZW5kKEkyQ1NsYXZlICpp MmMsIHVpbnQ4X3QgZGF0YSkKICAgICBzLT5idWZbcy0+bGVuXSA9IGRhdGE7CiAgICAgaWYgKHMt PmxlbiArKyA+IDIpIHsKICNpZmRlZiBWRVJCT1NFCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAi JXM6IG1lc3NhZ2UgdG9vIGxvbmcgKCVpIGJ5dGVzKVxuIiwgX19GVU5DVElPTl9fLCBzLT5sZW4p OworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBtZXNzYWdlIHRvbyBsb25nICglaSBieXRl cylcbiIsIF9fZnVuY19fLCBzLT5sZW4pOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAxOwogICAg IH0KQEAgLTE4MSwxNCArMTgxLDE0IEBAIHN0YXRpYyBpbnQgdG9zYV9kYWNfZXZlbnQoSTJDU2xh dmUgKmkyYywgZW51bSBpMmNfZXZlbnQgZXZlbnQpCiAgICAgY2FzZSBJMkNfU1RBUlRfU0VORDoK ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJMkNfU1RBUlRfUkVDVjoKLSAgICAgICAgcHJpbnRm KCIlczogcmVjdiBub3Qgc3VwcG9ydGVkISEhXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBw cmludGYoIiVzOiByZWN2IG5vdCBzdXBwb3J0ZWQhISFcbiIsIF9fZnVuY19fKTsKICAgICAgICAg YnJlYWs7CiAgICAgY2FzZSBJMkNfRklOSVNIOgogI2lmZGVmIFZFUkJPU0UKICAgICAgICAgaWYg KHMtPmxlbiA8IDIpCi0gICAgICAgICAgICBwcmludGYoIiVzOiBtZXNzYWdlIHRvbyBzaG9ydCAo JWkgYnl0ZXMpXG4iLCBfX0ZVTkNUSU9OX18sIHMtPmxlbik7CisgICAgICAgICAgICBwcmludGYo IiVzOiBtZXNzYWdlIHRvbyBzaG9ydCAoJWkgYnl0ZXMpXG4iLCBfX2Z1bmNfXywgcy0+bGVuKTsK ICAgICAgICAgaWYgKHMtPmxlbiA+IDIpCi0gICAgICAgICAgICBwcmludGYoIiVzOiBtZXNzYWdl IHRvbyBsb25nXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgcHJpbnRmKCIlczogbWVz c2FnZSB0b28gbG9uZ1xuIiwgX19mdW5jX18pOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAg IGRlZmF1bHQ6CkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIGludCB0b3NhX2RhY19ldmVudChJ MkNTbGF2ZSAqaTJjLCBlbnVtIGkyY19ldmVudCBldmVudCkKIAogc3RhdGljIGludCB0b3NhX2Rh Y19yZWN2KEkyQ1NsYXZlICpzKQogewotICAgIHByaW50ZigiJXM6IHJlY3Ygbm90IHN1cHBvcnRl ZCEhIVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICBwcmludGYoIiVzOiByZWN2IG5vdCBzdXBwb3J0 ZWQhISFcbiIsIF9fZnVuY19fKTsKICAgICByZXR1cm4gLTE7CiB9CiAKZGlmZiAtLWdpdCBhL2h3 L2F1ZGlvL2hkYS1jb2RlYy5jIGIvaHcvYXVkaW8vaGRhLWNvZGVjLmMKaW5kZXggNTQwMmNkMTk2 Yy4uZThhYTc4NDJlNiAxMDA2NDQKLS0tIGEvaHcvYXVkaW8vaGRhLWNvZGVjLmMKKysrIGIvaHcv YXVkaW8vaGRhLWNvZGVjLmMKQEAgLTMxNiw3ICszMTYsNyBAQCBzdGF0aWMgdm9pZCBoZGFfYXVk aW9fY29tbWFuZChIREFDb2RlY0RldmljZSAqaGRhLCB1aW50MzJfdCBuaWQsIHVpbnQzMl90IGRh dGEpCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgZHByaW50KGEsIDIsICIlczogbmlk ICVkICglcyksIHZlcmIgMHgleCwgcGF5bG9hZCAweCV4XG4iLAotICAgICAgICAgICBfX0ZVTkNU SU9OX18sIG5pZCwgbm9kZS0+bmFtZSwgdmVyYiwgcGF5bG9hZCk7CisgICAgICAgICAgIF9fZnVu Y19fLCBuaWQsIG5vZGUtPm5hbWUsIHZlcmIsIHBheWxvYWQpOwogCiAgICAgc3dpdGNoICh2ZXJi KSB7CiAgICAgLyogYWxsIG5vZGVzICovCkBAIC00NDksNyArNDQ5LDcgQEAgc3RhdGljIHZvaWQg aGRhX2F1ZGlvX2NvbW1hbmQoSERBQ29kZWNEZXZpY2UgKmhkYSwgdWludDMyX3QgbmlkLCB1aW50 MzJfdCBkYXRhKQogCiBmYWlsOgogICAgIGRwcmludChhLCAxLCAiJXM6IG5vdCBoYW5kbGVkOiBu aWQgJWQgKCVzKSwgdmVyYiAweCV4LCBwYXlsb2FkIDB4JXhcbiIsCi0gICAgICAgICAgIF9fRlVO Q1RJT05fXywgbmlkLCBub2RlID8gbm9kZS0+bmFtZSA6ICI/IiwgdmVyYiwgcGF5bG9hZCk7Cisg ICAgICAgICAgIF9fZnVuY19fLCBuaWQsIG5vZGUgPyBub2RlLT5uYW1lIDogIj8iLCB2ZXJiLCBw YXlsb2FkKTsKICAgICBoZGFfY29kZWNfcmVzcG9uc2UoaGRhLCB0cnVlLCAwKTsKIH0KIApAQCAt NDg0LDcgKzQ4NCw3IEBAIHN0YXRpYyBpbnQgaGRhX2F1ZGlvX2luaXQoSERBQ29kZWNEZXZpY2Ug KmhkYSwgY29uc3Qgc3RydWN0IGRlc2NfY29kZWMgKmRlc2MpCiAKICAgICBhLT5kZXNjID0gZGVz YzsKICAgICBhLT5uYW1lID0gb2JqZWN0X2dldF90eXBlbmFtZShPQkpFQ1QoYSkpOwotICAgIGRw cmludChhLCAxLCAiJXM6IGNhZCAlZFxuIiwgX19GVU5DVElPTl9fLCBhLT5oZGEuY2FkKTsKKyAg ICBkcHJpbnQoYSwgMSwgIiVzOiBjYWQgJWRcbiIsIF9fZnVuY19fLCBhLT5oZGEuY2FkKTsKIAog ICAgIEFVRF9yZWdpc3Rlcl9jYXJkKCJoZGEiLCAmYS0+Y2FyZCk7CiAgICAgZm9yIChpID0gMDsg aSA8IGEtPmRlc2MtPm5ub2RlczsgaSsrKSB7CkBAIC01MjYsNyArNTI2LDcgQEAgc3RhdGljIHZv aWQgaGRhX2F1ZGlvX2V4aXQoSERBQ29kZWNEZXZpY2UgKmhkYSkKICAgICBIREFBdWRpb1N0cmVh bSAqc3Q7CiAgICAgaW50IGk7CiAKLSAgICBkcHJpbnQoYSwgMSwgIiVzXG4iLCBfX0ZVTkNUSU9O X18pOworICAgIGRwcmludChhLCAxLCAiJXNcbiIsIF9fZnVuY19fKTsKICAgICBmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShhLT5zdCk7IGkrKykgewogICAgICAgICBzdCA9IGEtPnN0ICsgaTsK ICAgICAgICAgaWYgKHN0LT5ub2RlID09IE5VTEwpIHsKQEAgLTU0Nyw3ICs1NDcsNyBAQCBzdGF0 aWMgaW50IGhkYV9hdWRpb19wb3N0X2xvYWQodm9pZCAqb3BhcXVlLCBpbnQgdmVyc2lvbikKICAg ICBIREFBdWRpb1N0cmVhbSAqc3Q7CiAgICAgaW50IGk7CiAKLSAgICBkcHJpbnQoYSwgMSwgIiVz XG4iLCBfX0ZVTkNUSU9OX18pOworICAgIGRwcmludChhLCAxLCAiJXNcbiIsIF9fZnVuY19fKTsK ICAgICBpZiAodmVyc2lvbiA9PSAxKSB7CiAgICAgICAgIC8qIGFzc3VtZSBydW5uaW5nX2NvbXBh dFtdIGlzIGZvciBvdXRwdXQgc3RyZWFtcyAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShhLT5ydW5uaW5nX2NvbXBhdCk7IGkrKykKZGlmZiAtLWdpdCBhL2h3L2F1ZGlvL2lu dGVsLWhkYS5jIGIvaHcvYXVkaW8vaW50ZWwtaGRhLmMKaW5kZXggYTNlNjcwYzE4OC4uOTQ4MjY4 YWZkOCAxMDA2NDQKLS0tIGEvaHcvYXVkaW8vaW50ZWwtaGRhLmMKKysrIGIvaHcvYXVkaW8vaW50 ZWwtaGRhLmMKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZGFfdXBkYXRl X2lycShJbnRlbEhEQVN0YXRlICpkKQogICAgIH0gZWxzZSB7CiAgICAgICAgIGxldmVsID0gMDsK ICAgICB9Ci0gICAgZHByaW50KGQsIDIsICIlczogbGV2ZWwgJWQgWyVzXVxuIiwgX19GVU5DVElP Tl9fLAorICAgIGRwcmludChkLCAyLCAiJXM6IGxldmVsICVkIFslc11cbiIsIF9fZnVuY19fLAog ICAgICAgICAgICBsZXZlbCwgbXNpID8gIm1zaSIgOiAiaW50eCIpOwogICAgIGlmIChtc2kpIHsK ICAgICAgICAgaWYgKGxldmVsKSB7CkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIGludCBpbnRl bF9oZGFfc2VuZF9jb21tYW5kKEludGVsSERBU3RhdGUgKmQsIHVpbnQzMl90IHZlcmIpCiAgICAg Y2FkID0gKHZlcmIgPj4gMjgpICYgMHgwZjsKICAgICBpZiAodmVyYiAmICgxIDw8IDI3KSkgewog ICAgICAgICAvKiBpbmRpcmVjdCBub2RlIGFkZHJlc3NpbmcsIG5vdCBzcGVjaWZpZWQgaW4gSERB IDEuMCAqLwotICAgICAgICBkcHJpbnQoZCwgMSwgIiVzOiBpbmRpcmVjdCBub2RlIGFkZHJlc3Np bmcgKGd1ZXN0IGJ1Zz8pXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBkcHJpbnQoZCwgMSwg IiVzOiBpbmRpcmVjdCBub2RlIGFkZHJlc3NpbmcgKGd1ZXN0IGJ1Zz8pXG4iLCBfX2Z1bmNfXyk7 CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbmlkID0gKHZlcmIgPj4gMjApICYgMHg3 ZjsKQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgaW50IGludGVsX2hkYV9zZW5kX2NvbW1hbmQo SW50ZWxIREFTdGF0ZSAqZCwgdWludDMyX3QgdmVyYikKIAogICAgIGNvZGVjID0gaGRhX2NvZGVj X2ZpbmQoJmQtPmNvZGVjcywgY2FkKTsKICAgICBpZiAoY29kZWMgPT0gTlVMTCkgewotICAgICAg ICBkcHJpbnQoZCwgMSwgIiVzOiBhZGRyZXNzZWQgbm9uLWV4aXN0aW5nIGNvZGVjXG4iLCBfX0ZV TkNUSU9OX18pOworICAgICAgICBkcHJpbnQoZCwgMSwgIiVzOiBhZGRyZXNzZWQgbm9uLWV4aXN0 aW5nIGNvZGVjXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAg Y2RjID0gSERBX0NPREVDX0RFVklDRV9HRVRfQ0xBU1MoY29kZWMpOwpAQCAtMzA3LDIyICszMDcs MjIgQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRhX2NvcmJfcnVuKEludGVsSERBU3RhdGUgKmQpCiAg ICAgdWludDMyX3QgcnAsIHZlcmI7CiAKICAgICBpZiAoZC0+aWNzICYgSUNINl9JUlNfQlVTWSkg ewotICAgICAgICBkcHJpbnQoZCwgMiwgIiVzOiBbaWN3XSB2ZXJiIDB4JTA4eFxuIiwgX19GVU5D VElPTl9fLCBkLT5pY3cpOworICAgICAgICBkcHJpbnQoZCwgMiwgIiVzOiBbaWN3XSB2ZXJiIDB4 JTA4eFxuIiwgX19mdW5jX18sIGQtPmljdyk7CiAgICAgICAgIGludGVsX2hkYV9zZW5kX2NvbW1h bmQoZCwgZC0+aWN3KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGZvciAoOzspIHsK ICAgICAgICAgaWYgKCEoZC0+Y29yYl9jdGwgJiBJQ0g2X0NPUkJDVExfUlVOKSkgewotICAgICAg ICAgICAgZHByaW50KGQsIDIsICIlczogIXJ1blxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAg ICAgIGRwcmludChkLCAyLCAiJXM6ICFydW5cbiIsIF9fZnVuY19fKTsKICAgICAgICAgICAgIHJl dHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoKGQtPmNvcmJfcnAgJiAweGZmKSA9PSBkLT5j b3JiX3dwKSB7Ci0gICAgICAgICAgICBkcHJpbnQoZCwgMiwgIiVzOiBjb3JiIHJpbmcgZW1wdHlc biIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBkcHJpbnQoZCwgMiwgIiVzOiBjb3JiIHJp bmcgZW1wdHlcbiIsIF9fZnVuY19fKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog ICAgICAgICBpZiAoZC0+cmlyYl9jb3VudCA9PSBkLT5yaXJiX2NudCkgewotICAgICAgICAgICAg ZHByaW50KGQsIDIsICIlczogcmlyYiBjb3VudCByZWFjaGVkXG4iLCBfX0ZVTkNUSU9OX18pOwor ICAgICAgICAgICAgZHByaW50KGQsIDIsICIlczogcmlyYiBjb3VudCByZWFjaGVkXG4iLCBfX2Z1 bmNfXyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzMxLDcgKzMzMSw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2hkYV9jb3JiX3J1bihJbnRlbEhEQVN0YXRlICpkKQogICAg ICAgICB2ZXJiID0gbGRsX2xlX3BjaV9kbWEoJmQtPnBjaSwgYWRkciArIDQqcnApOwogICAgICAg ICBkLT5jb3JiX3JwID0gcnA7CiAKLSAgICAgICAgZHByaW50KGQsIDIsICIlczogW3JwIDB4JXhd IHZlcmIgMHglMDh4XG4iLCBfX0ZVTkNUSU9OX18sIHJwLCB2ZXJiKTsKKyAgICAgICAgZHByaW50 KGQsIDIsICIlczogW3JwIDB4JXhdIHZlcmIgMHglMDh4XG4iLCBfX2Z1bmNfXywgcnAsIHZlcmIp OwogICAgICAgICBpbnRlbF9oZGFfc2VuZF9jb21tYW5kKGQsIHZlcmIpOwogICAgIH0KIH0KQEAg LTM0NSw3ICszNDUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZGFfcmVzcG9uc2UoSERBQ29kZWNE ZXZpY2UgKmRldiwgYm9vbCBzb2xpY2l0ZWQsIHVpbnQzMl90IHJlcwogCiAgICAgaWYgKGQtPmlj cyAmIElDSDZfSVJTX0JVU1kpIHsKICAgICAgICAgZHByaW50KGQsIDIsICIlczogW2lycl0gcmVz cG9uc2UgMHgleCwgY2FkIDB4JXhcbiIsCi0gICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIHJl c3BvbnNlLCBkZXYtPmNhZCk7CisgICAgICAgICAgICAgICBfX2Z1bmNfXywgcmVzcG9uc2UsIGRl di0+Y2FkKTsKICAgICAgICAgZC0+aXJyID0gcmVzcG9uc2U7CiAgICAgICAgIGQtPmljcyAmPSB+ KElDSDZfSVJTX0JVU1kgfCAweGYwKTsKICAgICAgICAgZC0+aWNzIHw9IChJQ0g2X0lSU19WQUxJ RCB8IChkZXYtPmNhZCA8PCA0KSk7CkBAIC0zNTMsNyArMzUzLDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfaGRhX3Jlc3BvbnNlKEhEQUNvZGVjRGV2aWNlICpkZXYsIGJvb2wgc29saWNpdGVkLCB1aW50 MzJfdCByZXMKICAgICB9CiAKICAgICBpZiAoIShkLT5yaXJiX2N0bCAmIElDSDZfUkJDVExfRE1B X0VOKSkgewotICAgICAgICBkcHJpbnQoZCwgMSwgIiVzOiByaXJiIGRtYSBkaXNhYmxlZCwgZHJv cCBjb2RlYyByZXNwb25zZVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgZHByaW50KGQsIDEs ICIlczogcmlyYiBkbWEgZGlzYWJsZWQsIGRyb3AgY29kZWMgcmVzcG9uc2VcbiIsIF9fZnVuY19f KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzY1LDE3ICszNjUsMTcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfaGRhX3Jlc3BvbnNlKEhEQUNvZGVjRGV2aWNlICpkZXYsIGJvb2wgc29saWNp dGVkLCB1aW50MzJfdCByZXMKICAgICBkLT5yaXJiX3dwID0gd3A7CiAKICAgICBkcHJpbnQoZCwg MiwgIiVzOiBbd3AgMHgleF0gcmVzcG9uc2UgMHgleCwgZXh0cmEgMHgleFxuIiwKLSAgICAgICAg ICAgX19GVU5DVElPTl9fLCB3cCwgcmVzcG9uc2UsIGV4KTsKKyAgICAgICAgICAgX19mdW5jX18s IHdwLCByZXNwb25zZSwgZXgpOwogCiAgICAgZC0+cmlyYl9jb3VudCsrOwogICAgIGlmIChkLT5y aXJiX2NvdW50ID09IGQtPnJpcmJfY250KSB7Ci0gICAgICAgIGRwcmludChkLCAyLCAiJXM6IHJp cmIgY291bnQgcmVhY2hlZCAoJWQpXG4iLCBfX0ZVTkNUSU9OX18sIGQtPnJpcmJfY291bnQpOwor ICAgICAgICBkcHJpbnQoZCwgMiwgIiVzOiByaXJiIGNvdW50IHJlYWNoZWQgKCVkKVxuIiwgX19m dW5jX18sIGQtPnJpcmJfY291bnQpOwogICAgICAgICBpZiAoZC0+cmlyYl9jdGwgJiBJQ0g2X1JC Q1RMX0lSUV9FTikgewogICAgICAgICAgICAgZC0+cmlyYl9zdHMgfD0gSUNINl9SQlNUU19JUlE7 CiAgICAgICAgICAgICBpbnRlbF9oZGFfdXBkYXRlX2lycShkKTsKICAgICAgICAgfQogICAgIH0g ZWxzZSBpZiAoKGQtPmNvcmJfcnAgJiAweGZmKSA9PSBkLT5jb3JiX3dwKSB7Ci0gICAgICAgIGRw cmludChkLCAyLCAiJXM6IGNvcmIgcmluZyBlbXB0eSAoJWQvJWQpXG4iLCBfX0ZVTkNUSU9OX18s CisgICAgICAgIGRwcmludChkLCAyLCAiJXM6IGNvcmIgcmluZyBlbXB0eSAoJWQvJWQpXG4iLCBf X2Z1bmNfXywKICAgICAgICAgICAgICAgIGQtPnJpcmJfY291bnQsIGQtPnJpcmJfY250KTsKICAg ICAgICAgaWYgKGQtPnJpcmJfY3RsICYgSUNINl9SQkNUTF9JUlFfRU4pIHsKICAgICAgICAgICAg IGQtPnJpcmJfc3RzIHw9IElDSDZfUkJTVFNfSVJROwpAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgc3Rh dGljIGludCBpbnRlbF9oZGFfcG9zdF9sb2FkKHZvaWQgKm9wYXF1ZSwgaW50IHZlcnNpb24pCiAg ICAgSW50ZWxIREFTdGF0ZSogZCA9IG9wYXF1ZTsKICAgICBpbnQgaTsKIAotICAgIGRwcmludChk LCAxLCAiJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgZHByaW50KGQsIDEsICIlc1xuIiwgX19m dW5jX18pOwogICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGQtPnN0KTsgaSsrKSB7CiAg ICAgICAgIGlmIChkLT5zdFtpXS5jdGwgJiAweDAyKSB7CiAgICAgICAgICAgICBpbnRlbF9oZGFf cGFyc2VfYmRsKGQsICZkLT5zdFtpXSk7CmRpZmYgLS1naXQgYS9ody9hdWRpby93bTg3NTAuYyBi L2h3L2F1ZGlvL3dtODc1MC5jCmluZGV4IDhiYjQ0YTdjYzEuLjZkOGI3Mjg5MjMgMTAwNjQ0Ci0t LSBhL2h3L2F1ZGlvL3dtODc1MC5jCisrKyBiL2h3L2F1ZGlvL3dtODc1MC5jCkBAIC0zMTUsNyAr MzE1LDcgQEAgc3RhdGljIGludCB3bTg3NTBfZXZlbnQoSTJDU2xhdmUgKmkyYywgZW51bSBpMmNf ZXZlbnQgZXZlbnQpCiAjaWZkZWYgVkVSQk9TRQogICAgICAgICBpZiAocy0+aTJjX2xlbiA8IDIp CiAgICAgICAgICAgICBwcmludGYoIiVzOiBtZXNzYWdlIHRvbyBzaG9ydCAoJWkgYnl0ZXMpXG4i LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcy0+aTJjX2xlbik7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHMtPmkyY19sZW4pOwogI2Vu ZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC01NTUsNyArNTU1LDcgQEAgc3Rh dGljIGludCB3bTg3NTBfdHgoSTJDU2xhdmUgKmkyYywgdWludDhfdCBkYXRhKQogCiAjaWZkZWYg VkVSQk9TRQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IHVua25vd24gcmVnaXN0 ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBjbWQpOworICAgICAgICBwcmludGYoIiVzOiB1bmtu b3duIHJlZ2lzdGVyICUwMnhcbiIsIF9fZnVuY19fLCBjbWQpOwogI2VuZGlmCiAgICAgfQogCmRp ZmYgLS1naXQgYS9ody9ibG9jay9uYW5kLmMgYi9ody9ibG9jay9uYW5kLmMKaW5kZXggNzZkY2Qz Zjc2ZS4uOTE5Y2I5YjgwMyAxMDA2NDQKLS0tIGEvaHcvYmxvY2svbmFuZC5jCisrKyBiL2h3L2Js b2NrL25hbmQuYwpAQCAtMzIxLDcgKzMyMSw3IEBAIHN0YXRpYyB2b2lkIG5hbmRfY29tbWFuZChO QU5ERmxhc2hTdGF0ZSAqcykKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAg ICBwcmludGYoIiVzOiBVbmtub3duIE5BTkQgY29tbWFuZCAweCUwMnhcbiIsIF9fRlVOQ1RJT05f Xywgcy0+Y21kKTsKKyAgICAgICAgcHJpbnRmKCIlczogVW5rbm93biBOQU5EIGNvbW1hbmQgMHgl MDJ4XG4iLCBfX2Z1bmNfXywgcy0+Y21kKTsKICAgICB9CiB9CiAKQEAgLTY0MCw3ICs2NDAsNyBA QCBEZXZpY2VTdGF0ZSAqbmFuZF9pbml0KEJsb2NrQmFja2VuZCAqYmxrLCBpbnQgbWFuZl9pZCwg aW50IGNoaXBfaWQpCiAgICAgRGV2aWNlU3RhdGUgKmRldjsKIAogICAgIGlmIChuYW5kX2ZsYXNo X2lkc1tjaGlwX2lkXS5zaXplID09IDApIHsKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBVbnN1cHBv cnRlZCBOQU5EIGNoaXAgSUQuXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBod19lcnJvcigi JXM6IFVuc3VwcG9ydGVkIE5BTkQgY2hpcCBJRC5cbiIsIF9fZnVuY19fKTsKICAgICB9CiAgICAg ZGV2ID0gREVWSUNFKG9iamVjdF9uZXcoVFlQRV9OQU5EKSk7CiAgICAgcWRldl9wcm9wX3NldF91 aW50OChkZXYsICJtYW51ZmFjdHVyZXJfaWQiLCBtYW5mX2lkKTsKZGlmZiAtLWdpdCBhL2h3L2Js b2NrL29uZW5hbmQuYyBiL2h3L2Jsb2NrL29uZW5hbmQuYwppbmRleCBkZTY1YzllYmI5Li5lMjQz MTgyMzk0IDEwMDY0NAotLS0gYS9ody9ibG9jay9vbmVuYW5kLmMKKysrIGIvaHcvYmxvY2svb25l bmFuZC5jCkBAIC02NTksMTIgKzY1OSwxMiBAQCBzdGF0aWMgdWludDY0X3Qgb25lbmFuZF9yZWFk KHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgY2FzZSAweGZmMDI6CS8qIEVDQyBSZXN1 bHQgb2Ygc3BhcmUgYXJlYSBkYXRhICovCiAgICAgY2FzZSAweGZmMDM6CS8qIEVDQyBSZXN1bHQg b2YgbWFpbiBhcmVhIGRhdGEgKi8KICAgICBjYXNlIDB4ZmYwNDoJLyogRUNDIFJlc3VsdCBvZiBz cGFyZSBhcmVhIGRhdGEgKi8KLSAgICAgICAgaHdfZXJyb3IoIiVzOiBpbWVwbGVtZW50IEVDQ1xu IiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgaHdfZXJyb3IoIiVzOiBpbWVwbGVtZW50IEVDQ1xu IiwgX19mdW5jX18pOwogICAgICAgICByZXR1cm4gMHgwMDAwOwogICAgIH0KIAogICAgIGZwcmlu dGYoc3RkZXJyLCAiJXM6IHVua25vd24gT25lTkFORCByZWdpc3RlciAleFxuIiwKLSAgICAgICAg ICAgICAgICAgICAgX19GVU5DVElPTl9fLCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBf X2Z1bmNfXywgb2Zmc2V0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzA5LDcgKzcwOSw3IEBA IHN0YXRpYyB2b2lkIG9uZW5hbmRfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKIAog ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdW5rbm93 biBPbmVOQU5EIGJvb3QgY29tbWFuZCAlIlBSSXg2NCJcbiIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19GVU5DVElPTl9fLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19mdW5jX18sIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtNzYw LDcgKzc2MCw3IEBAIHN0YXRpYyB2b2lkIG9uZW5hbmRfd3JpdGUodm9pZCAqb3BhcXVlLCBod2Fk ZHIgYWRkciwKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHVu a25vd24gT25lTkFORCByZWdpc3RlciAleFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9f RlVOQ1RJT05fXywgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBv ZmZzZXQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvaHcvYnQvY29yZS5jIGIvaHcvYnQvY29y ZS5jCmluZGV4IDYxNWYwYWYwNzMuLmMxODA2YjcxYTMgMTAwNjQ0Ci0tLSBhL2h3L2J0L2NvcmUu YworKysgYi9ody9idC9jb3JlLmMKQEAgLTMyLDIzICszMiwyMyBAQCBzdGF0aWMgdm9pZCBidF9k dW1teV9sbXBfY29ubmVjdGlvbl9jb21wbGV0ZShzdHJ1Y3QgYnRfbGlua19zICpsaW5rKQogewog ICAgIGlmIChsaW5rLT5zbGF2ZS0+cmVqZWN0X3JlYXNvbikKICAgICAgICAgZnByaW50ZihzdGRl cnIsICIlczogc3RyYXkgTE1QX25vdF9hY2NlcHRlZCByZWNlaXZlZCwgZml4bWVcbiIsCi0gICAg ICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAg ICAgX19mdW5jX18pOwogICAgIGVsc2UKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogc3Ry YXkgTE1QX2FjY2VwdGVkIHJlY2VpdmVkLCBmaXhtZVxuIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAg ICAgZXhpdCgtMSk7CiB9CiAKIHN0YXRpYyB2b2lkIGJ0X2R1bW15X2xtcF9kaXNjb25uZWN0X21h c3RlcihzdHJ1Y3QgYnRfbGlua19zICpsaW5rKQogewotICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IHN0cmF5IExNUF9kZXRhY2ggcmVjZWl2ZWQsIGZpeG1lXG4iLCBfX0ZVTkNUSU9OX18pOworICAg IGZwcmludGYoc3RkZXJyLCAiJXM6IHN0cmF5IExNUF9kZXRhY2ggcmVjZWl2ZWQsIGZpeG1lXG4i LCBfX2Z1bmNfXyk7CiAgICAgZXhpdCgtMSk7CiB9CiAKIHN0YXRpYyB2b2lkIGJ0X2R1bW15X2xt cF9hY2xfcmVzcChzdHJ1Y3QgYnRfbGlua19zICpsaW5rLAogICAgICAgICAgICAgICAgIGNvbnN0 IHVpbnQ4X3QgKmRhdGEsIGludCBzdGFydCwgaW50IGxlbikKIHsKLSAgICBmcHJpbnRmKHN0ZGVy ciwgIiVzOiBzdHJheSBBQ0wgcmVzcG9uc2UgUERVLCBmaXhtZVxuIiwgX19GVU5DVElPTl9fKTsK KyAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBzdHJheSBBQ0wgcmVzcG9uc2UgUERVLCBmaXhtZVxu IiwgX19mdW5jX18pOwogICAgIGV4aXQoLTEpOwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9p ZCBidF9kZXZpY2VfZG9uZShzdHJ1Y3QgYnRfZGV2aWNlX3MgKmRldikKICAgICB3aGlsZSAoKnAg JiYgKnAgIT0gZGV2KQogICAgICAgICBwID0gJigqcCktPm5leHQ7CiAgICAgaWYgKCpwICE9IGRl dikgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgYnQgZGV2aWNlIFwiJXNcIlxu IiwgX19GVU5DVElPTl9fLAorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgYnQgZGV2 aWNlIFwiJXNcIlxuIiwgX19mdW5jX18sCiAgICAgICAgICAgICAgICAgICAgICAgICBkZXYtPmxt cF9uYW1lID86ICIobnVsbCkiKTsKICAgICAgICAgZXhpdCgtMSk7CiAgICAgfQpkaWZmIC0tZ2l0 IGEvaHcvYnQvaGNpLWNzci5jIGIvaHcvYnQvaGNpLWNzci5jCmluZGV4IGQxMzE5MmI5YjUuLmFj MDY3YjgxZjYgMTAwNjQ0Ci0tLSBhL2h3L2J0L2hjaS1jc3IuYworKysgYi9ody9idC9oY2ktY3Ny LmMKQEAgLTExMSwxNCArMTExLDE0IEBAIHN0YXRpYyB1aW50OF90ICpjc3JoY2lfb3V0X3BhY2tl dChzdHJ1Y3QgY3NyaGNpX3MgKnMsIGludCBsZW4pCiAKICAgICBpZiAob2ZmIDwgRklGT19MRU4p IHsKICAgICAgICAgaWYgKG9mZiArIGxlbiA+IEZJRk9fTEVOICYmIChzLT5vdXRfc2l6ZSA9IG9m ZiArIGxlbikgPiBGSUZPX0xFTiAqIDIpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi JXM6IGNhbid0IGFsbG9jICVpIGJ5dGVzXG4iLCBfX0ZVTkNUSU9OX18sIGxlbik7CisgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBjYW4ndCBhbGxvYyAlaSBieXRlc1xuIiwgX19mdW5j X18sIGxlbik7CiAgICAgICAgICAgICBleGl0KC0xKTsKICAgICAgICAgfQogICAgICAgICByZXR1 cm4gcy0+b3V0ZmlmbyArIG9mZjsKICAgICB9CiAKICAgICBpZiAocy0+b3V0X2xlbiA+IHMtPm91 dF9zaXplKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNhbid0IGFsbG9jICVpIGJ5 dGVzXG4iLCBfX0ZVTkNUSU9OX18sIGxlbik7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IGNhbid0IGFsbG9jICVpIGJ5dGVzXG4iLCBfX2Z1bmNfXywgbGVuKTsKICAgICAgICAgZXhpdCgt MSk7CiAgICAgfQogCkBAIC0xNjksNyArMTY5LDcgQEAgc3RhdGljIHZvaWQgY3NyaGNpX2luX3Bh Y2tldF92ZW5kb3Ioc3RydWN0IGNzcmhjaV9zICpzLCBpbnQgb2NmLAogCiAgICAgICAgICAgICBz LT5oY2ktPmJkYWRkcl9zZXQocy0+aGNpLCBzLT5iZF9hZGRyLmIpOwogICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICIlczogYmRfYWRkcmVzcyBsb2FkZWQgZnJvbSBmaXJtd2FyZTogIgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICIlMDJ4OiUwMng6JTAyeDolMDJ4OiUwMng6JTAyeFxu IiwgX19GVU5DVElPTl9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlMDJ4OiUwMng6 JTAyeDolMDJ4OiUwMng6JTAyeFxuIiwgX19mdW5jX18sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcy0+YmRfYWRkci5iWzBdLCBzLT5iZF9hZGRyLmJbMV0sIHMtPmJkX2FkZHIuYlsyXSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5iZF9hZGRyLmJbM10sIHMtPmJkX2FkZHIu Yls0XSwgcy0+YmRfYWRkci5iWzVdKTsKICAgICAgICAgfQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0 YXRpYyB2b2lkIGNzcmhjaV9pbl9wYWNrZXRfdmVuZG9yKHN0cnVjdCBjc3JoY2lfcyAqcywgaW50 IG9jZiwKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIiVzOiBnb3QgYSBiYWQgQ01EIHBhY2tldFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAg ICAgZnByaW50ZihzdGRlcnIsICIlczogZ290IGEgYmFkIENNRCBwYWNrZXRcbiIsIF9fZnVuY19f KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjI2LDcgKzIyNiw3IEBAIHN0YXRpYyB2 b2lkIGNzcmhjaV9pbl9wYWNrZXQoc3RydWN0IGNzcmhjaV9zICpzLCB1aW50OF90ICpwa3QpCiAg ICAgY2FzZSBINF9ORUdfUEtUOgogICAgICAgICBpZiAocy0+aW5faGRyICE9IHNpemVvZihjc3Jo Y2lfbmVnX3BhY2tldCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNtcChwa3QgLSAx LCBjc3JoY2lfbmVnX3BhY2tldCwgcy0+aW5faGRyKSkgewotICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICIlczogZ290IGEgYmFkIE5FRyBwYWNrZXRcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAg ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBnb3QgYSBiYWQgTkVHIHBhY2tldFxuIiwgX19m dW5jX18pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHBrdCArPSAy OwpAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyB2b2lkIGNzcmhjaV9pbl9wYWNrZXQoc3RydWN0 IGNzcmhjaV9zICpzLCB1aW50OF90ICpwa3QpCiAKICAgICBjYXNlIEg0X0FMSVZFX1BLVDoKICAg ICAgICAgaWYgKHMtPmluX2hkciAhPSA0IHx8IHBrdFsxXSAhPSAweDU1IHx8IHBrdFsyXSAhPSAw eDAwKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBnb3QgYSBiYWQgQUxJVkUg cGFja2V0XG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIl czogZ290IGEgYmFkIEFMSVZFIHBhY2tldFxuIiwgX19mdW5jX18pOwogICAgICAgICAgICAgcmV0 dXJuOwogICAgICAgICB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBjc3JoY2lf aW5fcGFja2V0KHN0cnVjdCBjc3JoY2lfcyAqcywgdWludDhfdCAqcGt0KQogICAgIGRlZmF1bHQ6 CiAgICAgYmFkX3BrdDoKICAgICAgICAgLyogVE9ETzogZXJyb3Igb3V0ICovCi0gICAgICAgIGZw cmludGYoc3RkZXJyLCAiJXM6IGdvdCBhIGJhZCBwYWNrZXRcbiIsIF9fRlVOQ1RJT05fXyk7Cisg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGdvdCBhIGJhZCBwYWNrZXRcbiIsIF9fZnVuY19f KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ody9idC9oY2kuYyBiL2h3 L2J0L2hjaS5jCmluZGV4IDQ3NmViZWMwYWIuLmRmMDVmMDc4ODcgMTAwNjQ0Ci0tLSBhL2h3L2J0 L2hjaS5jCisrKyBiL2h3L2J0L2hjaS5jCkBAIC00NTgsNyArNDU4LDcgQEAgc3RhdGljIGlubGlu ZSB1aW50OF90ICpidF9oY2lfZXZlbnRfc3RhcnQoc3RydWN0IGJ0X2hjaV9zICpoY2ksCiAKICAg ICBpZiAobGVuID4gMjU1KSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEhDSSBldmVu dCBwYXJhbXMgdG9vIGxvbmcgKCVpYilcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZV TkNUSU9OX18sIGxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgbGVuKTsK ICAgICAgICAgZXhpdCgtMSk7CiAgICAgfQogCkBAIC01ODksNyArNTg5LDcgQEAgc3RhdGljIHZv aWQgYnRfaGNpX2lucXVpcnlfcmVzdWx0KHN0cnVjdCBidF9oY2lfcyAqaGNpLAogICAgICAgICBi dF9oY2lfaW5xdWlyeV9yZXN1bHRfd2l0aF9yc3NpKGhjaSwgc2xhdmUpOwogICAgICAgICByZXR1 cm47CiAgICAgZGVmYXVsdDoKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogYmFkIGlucXVp cnkgbW9kZSAlMDJ4XG4iLCBfX0ZVTkNUSU9OX18sCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi JXM6IGJhZCBpbnF1aXJ5IG1vZGUgJTAyeFxuIiwgX19mdW5jX18sCiAgICAgICAgICAgICAgICAg ICAgICAgICBoY2ktPmxtLmlucXVpcnlfbW9kZSk7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0K QEAgLTE1MjgsNyArMTUyOCw3IEBAIHN0YXRpYyB2b2lkIGJ0X3N1Ym1pdF9oY2koc3RydWN0IEhD SUluZm8gKmluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBJbnF1aXJ5IGNv bW1hbmQgaGFzIGJlZW4gaXNzdWVkLCBhIENvbW1hbmQgIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJTdGF0dXMgZXZlbnQgaGFzIGJlZW4gcmVjZWl2ZWQgZm9yIHRoZSBJbnF1aXJ5ICIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCwgYW5kIGJlZm9yZSB0aGUgSW5x dWlyeSBDb21wbGV0ZSBldmVudCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9jY3Vy cyIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9jY3VycyIs IF9fZnVuY19fKTsKICAgICAgICAgICAgIGJ0X2hjaV9ldmVudF9jb21wbGV0ZV9zdGF0dXMoaGNp LCBIQ0lfQ09NTUFORF9ESVNBTExPV0VEKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9 CkBAIC0xNTY3LDcgKzE1NjcsNyBAQCBzdGF0aWMgdm9pZCBidF9zdWJtaXRfaGNpKHN0cnVjdCBI Q0lJbmZvICppbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgSW5xdWlyeSBj b21tYW5kIGhhcyBiZWVuIGlzc3VlZCwgYSBDb21tYW5kICIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiU3RhdHVzIGV2ZW50IGhhcyBiZWVuIHJlY2VpdmVkIGZvciB0aGUgSW5xdWlyeSAi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbW1hbmQsIGFuZCBiZWZvcmUgdGhlIElu cXVpcnkgQ29tcGxldGUgZXZlbnQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvY2N1 cnMiLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvY2N1cnMi LCBfX2Z1bmNfXyk7CiAgICAgICAgICAgICBidF9oY2lfZXZlbnRfY29tcGxldGVfc3RhdHVzKGhj aSwgSENJX0NPTU1BTkRfRElTQUxMT1dFRCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg fQpAQCAtMTk3Miw3ICsxOTcyLDcgQEAgc3RhdGljIHZvaWQgYnRfc3VibWl0X2hjaShzdHJ1Y3Qg SENJSW5mbyAqaW5mbywKIAogICAgIHNob3J0X2hjaToKICAgICAgICAgZnByaW50ZihzdGRlcnIs ICIlczogSENJIHBhY2tldCB0b28gc2hvcnQgKCVpQilcbiIsCi0gICAgICAgICAgICAgICAgICAg ICAgICBfX0ZVTkNUSU9OX18sIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1 bmNfXywgbGVuZ3RoKTsKICAgICAgICAgYnRfaGNpX2V2ZW50X3N0YXR1cyhoY2ksIEhDSV9JTlZB TElEX1BBUkFNRVRFUlMpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xOTkyLDcgKzE5OTIs NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnRfaGNpX2xtcF9hY2xfZGF0YShzdHJ1Y3QgYnRfaGNp X3MgKmhjaSwgdWludDE2X3QgaGFuZGxlLAogCiAgICAgaWYgKGxlbiArIEhDSV9BQ0xfSERSX1NJ WkUgPiBzaXplb2YoaGNpLT5hY2xfYnVmKSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz OiBjYW4ndCB0YWtlIEFDTCBwYWNrZXRzICVpIGJ5dGVzIGxvbmdcbiIsCi0gICAgICAgICAgICAg ICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGxlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBf X2Z1bmNfXywgbGVuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtZW1jcHkoaGNpLT5h Y2xfYnVmICsgSENJX0FDTF9IRFJfU0laRSwgZGF0YSwgbGVuKTsKQEAgLTIwMzAsNyArMjAzMCw3 IEBAIHN0YXRpYyB2b2lkIGJ0X3N1Ym1pdF9hY2woc3RydWN0IEhDSUluZm8gKmluZm8sCiAKICAg ICBpZiAobGVuZ3RoIDwgSENJX0FDTF9IRFJfU0laRSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIiVzOiBBQ0wgcGFja2V0IHRvbyBzaG9ydCAoJWlCKVxuIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgIF9fRlVOQ1RJT05fXywgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9f ZnVuY19fLCBsZW5ndGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDQyLDcgKzIw NDIsNyBAQCBzdGF0aWMgdm9pZCBidF9zdWJtaXRfYWNsKHN0cnVjdCBIQ0lJbmZvICppbmZvLAog CiAgICAgaWYgKGJ0X2hjaV9oYW5kbGVfYmFkKGhjaSwgaGFuZGxlKSkgewogICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIEFDTCBoYW5kbGUgJTAzeFxuIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgaGFuZGxlKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIF9fZnVuY19fLCBoYW5kbGUpOwogICAgICAgICAvKiBUT0RPOiBzaWduYWwgYW4gZXJyb3Ig Ki8KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwNTAsNyArMjA1MCw3IEBAIHN0YXRpYyB2 b2lkIGJ0X3N1Ym1pdF9hY2woc3RydWN0IEhDSUluZm8gKmluZm8sCiAKICAgICBpZiAoZGF0YWxl biA+IGxlbmd0aCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBBQ0wgcGFja2V0IHRv byBzaG9ydCAoJWlCIDwgJWlCKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJ T05fXywgbGVuZ3RoLCBkYXRhbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f LCBsZW5ndGgsIGRhdGFsZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDYxLDcg KzIwNjEsNyBAQCBzdGF0aWMgdm9pZCBidF9zdWJtaXRfYWNsKHN0cnVjdCBIQ0lJbmZvICppbmZv LAogICAgICAgICAgICAgaGNpLT5hc2JfaGFuZGxlID0gaGFuZGxlOwogICAgICAgICBlbHNlIGlm IChoYW5kbGUgIT0gaGNpLT5hc2JfaGFuZGxlKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIiVzOiBCYWQgaGFuZGxlICUwM3ggaW4gQWN0aXZlIFNsYXZlIEJyb2FkY2FzdFxuIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGhhbmRsZSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGhhbmRsZSk7CiAgICAgICAgICAgICAvKiBU T0RPOiBzaWduYWwgYW4gZXJyb3IgKi8KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA QCAtMjA3NCw3ICsyMDc0LDcgQEAgc3RhdGljIHZvaWQgYnRfc3VibWl0X2FjbChzdHJ1Y3QgSENJ SW5mbyAqaW5mbywKICAgICAgICAgICAgIGhjaS0+cHNiX2hhbmRsZSA9IGhhbmRsZTsKICAgICAg ICAgZWxzZSBpZiAoaGFuZGxlICE9IGhjaS0+cHNiX2hhbmRsZSkgewogICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICIlczogQmFkIGhhbmRsZSAlMDN4IGluIFBhcmtlZCBTbGF2ZSBCcm9hZGNh c3RcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBoYW5kbGUp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBoYW5kbGUpOwogICAgICAg ICAgICAgLyogVE9ETzogc2lnbmFsIGFuIGVycm9yICovCiAgICAgICAgICAgICByZXR1cm47CiAg ICAgICAgIH0KQEAgLTIxMDYsMTMgKzIxMDYsMTMgQEAgc3RhdGljIHZvaWQgYnRfc3VibWl0X3Nj byhzdHJ1Y3QgSENJSW5mbyAqaW5mbywKIAogICAgIGlmIChidF9oY2lfaGFuZGxlX2JhZChoY2ks IGhhbmRsZSkpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaW52YWxpZCBTQ08gaGFu ZGxlICUwM3hcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18sIGhhbmRs ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaGFuZGxlKTsKICAgICAgICAg cmV0dXJuOwogICAgIH0KIAogICAgIGlmIChkYXRhbGVuID4gbGVuZ3RoKSB7CiAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiJXM6IFNDTyBwYWNrZXQgdG9vIHNob3J0ICglaUIgPCAlaUIpXG4iLAot ICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBsZW5ndGgsIGRhdGFsZW4pOwor ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGxlbmd0aCwgZGF0YWxlbik7CiAgICAg ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2h3L2J0L2hpZC5jIGIvaHcvYnQvaGlk LmMKaW5kZXggZjZhZmZiYmI0NC4uMDlkMTczMjJlNCAxMDA2NDQKLS0tIGEvaHcvYnQvaGlkLmMK KysrIGIvaHcvYnQvaGlkLmMKQEAgLTQyMCw3ICs0MjAsNyBAQCBzdGF0aWMgdm9pZCBidF9oaWRf aW50ZXJydXB0X3NkdSh2b2lkICpvcGFxdWUsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIGludCBsZW4p CiAgICAgcmV0dXJuOwogYmFkOgogICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCB0cmFuc2Fj dGlvbiBvbiBJbnRlcnJ1cHQgY2hhbm5lbC5cbiIsCi0gICAgICAgICAgICAgICAgICAgIF9fRlVO Q1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fKTsKIH0KIAogLyogIlZpcnR1 YWwgY2FibGUiIHBsdWcvdW5wbHVnIGV2ZW50LiAgKi8KZGlmZiAtLWdpdCBhL2h3L2J0L2wyY2Fw LmMgYi9ody9idC9sMmNhcC5jCmluZGV4IGUzNDIwNDUxNDAuLjNlNTNkZDA4MmQgMTAwNjQ0Ci0t LSBhL2h3L2J0L2wyY2FwLmMKKysrIGIvaHcvYnQvbDJjYXAuYwpAQCAtNDY4LDcgKzQ2OCw3IEBA IHN0YXRpYyB2b2lkIGwyY2FwX2NoYW5uZWxfY2xvc2Uoc3RydWN0IGwyY2FwX2luc3RhbmNlX3Mg KmwyY2FwLAogICAgIGlmIChsaWtlbHkoY2gpKSB7CiAgICAgICAgIGlmIChjaC0+cmVtb3RlX2Np ZCAhPSBzb3VyY2VfY2lkKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBJZ25v cmluZyBhIERpc2Nvbm5lY3Rpb24gUmVxdWVzdCB3aXRoIHRoZSAiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgImludmFsaWQgU0NJRCAlMDR4LlxuIiwgX19GVU5DVElPTl9fLCBzb3VyY2Vf Y2lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBTQ0lEICUwNHguXG4i LCBfX2Z1bmNfXywgc291cmNlX2NpZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K IApAQCAtNzkxLDcgKzc5MSw3IEBAIHN0YXRpYyB2b2lkIGwyY2FwX2NvbW1hbmQoc3RydWN0IGwy Y2FwX2luc3RhbmNlX3MgKmwyY2FwLCBpbnQgY29kZSwgaW50IGlkLAogICAgIC8qIFRPRE86IGRv IHRoZSBJRHMgcmVhbGx5IGhhdmUgdG8gYmUgaW4gc2VxdWVuY2U/ICAqLwogICAgIGlmICghaWQg fHwgKGlkICE9IGwyY2FwLT5sYXN0X2lkICYmIGlkICE9IGwyY2FwLT5uZXh0X2lkKSkgewogICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBvdXQgb2Ygc2VxdWVuY2UgY29tbWFuZCBwYWNrZXQg aWdub3JlZC5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18pOworICAg ICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18pOwogICAgICAgICByZXR1cm47CiAgICAgfQog I2Vsc2UKQEAgLTgxNCw3ICs4MTQsNyBAQCBzdGF0aWMgdm9pZCBsMmNhcF9jb21tYW5kKHN0cnVj dCBsMmNhcF9pbnN0YW5jZV9zICpsMmNhcCwgaW50IGNvZGUsIGludCBpZCwKIAogICAgICAgICAv KiBXZSBuZXZlciBpc3N1ZSBjb21tYW5kcyBvdGhlciB0aGFuIENvbW1hbmQgUmVqZWN0IGN1cnJl bnRseS4gICovCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHN0cmF5IENvbW1hbmQgUmVq ZWN0ICglMDJ4LCAlMDR4KSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0LCBpZ25v cmluZy5cbiIsIF9fRlVOQ1RJT05fXywgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAicGFj a2V0LCBpZ25vcmluZy5cbiIsIF9fZnVuY19fLCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAg IGxlMTZfdG9fY3B1KCgobDJjYXBfY21kX3JlaiAqKSBwYXJhbXMpLT5yZWFzb24pKTsKICAgICAg ICAgYnJlYWs7CiAKQEAgLTgzNyw3ICs4MzcsNyBAQCBzdGF0aWMgdm9pZCBsMmNhcF9jb21tYW5k KHN0cnVjdCBsMmNhcF9pbnN0YW5jZV9zICpsMmNhcCwgaW50IGNvZGUsIGludCBpZCwKIAogICAg ICAgICAvKiBXZSBuZXZlciBpc3N1ZSBDb25uZWN0aW9uIFJlcXVlc3RzIGN1cnJlbnRseS4gVE9E TyAgKi8KICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdW5leHBlY3RlZCBDb25uZWN0aW9u IFJlc3BvbnNlICglMDJ4KSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicGFja2V0LCBpZ25v cmluZy5cbiIsIF9fRlVOQ1RJT05fXywgaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgInBh Y2tldCwgaWdub3JpbmcuXG4iLCBfX2Z1bmNfXywgaWQpOwogICAgICAgICBicmVhazsKIAogICAg IGNhc2UgTDJDQVBfQ09ORl9SRVE6CkBAIC04NjYsNyArODY2LDcgQEAgc3RhdGljIHZvaWQgbDJj YXBfY29tbWFuZChzdHJ1Y3QgbDJjYXBfaW5zdGFuY2VfcyAqbDJjYXAsIGludCBjb2RlLCBpbnQg aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAoKGwyY2FwX2NvbmZfcnNwICopIHBhcmFtcykt PmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLSBMMkNBUF9DT05GX1JTUF9TSVpF KDApKSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHVuZXhwZWN0ZWQgQ29uZmln dXJlIFJlc3BvbnNlICglMDJ4KSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tl dCwgaWdub3JpbmcuXG4iLCBfX0ZVTkNUSU9OX18sIGlkKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAicGFja2V0LCBpZ25vcmluZy5cbiIsIF9fZnVuY19fLCBpZCk7CiAgICAgICAgIGJy ZWFrOwogCiAgICAgY2FzZSBMMkNBUF9ESVNDT05OX1JFUToKQEAgLTg4OCw3ICs4ODgsNyBAQCBz dGF0aWMgdm9pZCBsMmNhcF9jb21tYW5kKHN0cnVjdCBsMmNhcF9pbnN0YW5jZV9zICpsMmNhcCwg aW50IGNvZGUsIGludCBpZCwKIAogICAgICAgICAvKiBXZSBuZXZlciBpc3N1ZSBEaXNjb25uZWN0 aW9uIFJlcXVlc3RzIGN1cnJlbnRseS4gVE9ETyAgKi8KICAgICAgICAgZnByaW50ZihzdGRlcnIs ICIlczogdW5leHBlY3RlZCBEaXNjb25uZWN0aW9uIFJlc3BvbnNlICglMDJ4KSAiCi0gICAgICAg ICAgICAgICAgICAgICAgICAicGFja2V0LCBpZ25vcmluZy5cbiIsIF9fRlVOQ1RJT05fXywgaWQp OworICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldCwgaWdub3JpbmcuXG4iLCBfX2Z1bmNf XywgaWQpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTDJDQVBfRUNIT19SRVE6CkBAIC04 OTgsNyArODk4LDcgQEAgc3RhdGljIHZvaWQgbDJjYXBfY29tbWFuZChzdHJ1Y3QgbDJjYXBfaW5z dGFuY2VfcyAqbDJjYXAsIGludCBjb2RlLCBpbnQgaWQsCiAgICAgY2FzZSBMMkNBUF9FQ0hPX1JT UDoKICAgICAgICAgLyogV2UgbmV2ZXIgaXNzdWUgRWNobyBSZXF1ZXN0cyBjdXJyZW50bHkuIFRP RE8gICovCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHVuZXhwZWN0ZWQgRWNobyBSZXNw b25zZSAoJTAyeCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tldCwgaWdub3Jpbmcu XG4iLCBfX0ZVTkNUSU9OX18sIGlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrZXQs IGlnbm9yaW5nLlxuIiwgX19mdW5jX18sIGlkKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl IEwyQ0FQX0lORk9fUkVROgpAQCAtOTE4LDcgKzkxOCw3IEBAIHN0YXRpYyB2b2lkIGwyY2FwX2Nv bW1hbmQoc3RydWN0IGwyY2FwX2luc3RhbmNlX3MgKmwyY2FwLCBpbnQgY29kZSwgaW50IGlkLAog CiAgICAgICAgIC8qIFdlIG5ldmVyIGlzc3VlIEluZm9ybWF0aW9uIFJlcXVlc3RzIGN1cnJlbnRs eS4gVE9ETyAgKi8KICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdW5leHBlY3RlZCBJbmZv cm1hdGlvbiBSZXNwb25zZSAoJTAyeCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBhY2tl dCwgaWdub3JpbmcuXG4iLCBfX0ZVTkNUSU9OX18sIGlkKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICJwYWNrZXQsIGlnbm9yaW5nLlxuIiwgX19mdW5jX18sIGlkKTsKICAgICAgICAgYnJlYWs7 CiAKICAgICBkZWZhdWx0OgpAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgc3RhdGljIHZvaWQgbDJjYXBf ZnJhbWVfaW4oc3RydWN0IGwyY2FwX2luc3RhbmNlX3MgKmwyY2FwLAogCiAgICAgaWYgKHVubGlr ZWx5KGNpZCA+PSBMMkNBUF9DSURfTUFYIHx8ICFsMmNhcC0+Y2lkW2NpZF0pKSB7CiAgICAgICAg IGZwcmludGYoc3RkZXJyLCAiJXM6IGZyYW1lIGFkZHJlc3NlZCB0byBhIG5vbi1leGlzdGVudCBM MkNBUCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2hhbm5lbCAlMDR4IHJlY2VpdmVkLlxu IiwgX19GVU5DVElPTl9fLCBjaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5uZWwg JTA0eCByZWNlaXZlZC5cbiIsIF9fZnVuY19fLCBjaWQpOwogICAgICAgICByZXR1cm47CiAgICAg fQogCkBAIC0xMTI5LDcgKzExMjksNyBAQCBzdGF0aWMgdWludDhfdCAqbDJjYXBfYmZyYW1lX291 dChzdHJ1Y3QgYnRfbDJjYXBfY29ubl9wYXJhbXNfcyAqcGFybSwgaW50IGxlbikKIAogICAgIGlm IChsZW4gPiBjaGFuLT5wYXJhbXMucmVtb3RlX210dSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIiVzOiBCLUZyYW1lIGZvciBDSUQgJTA0eCBsb25nZXIgdGhhbiAlaSBvY3RldHMuXG4iLAot ICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLAorICAgICAgICAgICAgICAgICAg ICAgICAgX19mdW5jX18sCiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuLT5yZW1vdGVfY2lk LCBjaGFuLT5wYXJhbXMucmVtb3RlX210dSk7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0KQEAg LTEzNTQsNyArMTM1NCw3IEBAIHZvaWQgYnRfbDJjYXBfcHNtX3JlZ2lzdGVyKHN0cnVjdCBidF9s MmNhcF9kZXZpY2VfcyAqZGV2LCBpbnQgcHNtLCBpbnQgbWluX210dSwKIAogICAgIGlmIChuZXdf cHNtKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IFBTTSAlMDR4IGFscmVhZHkgcmVn aXN0ZXJlZCBmb3IgZGV2aWNlIGAlcycuXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgX19G VU5DVElPTl9fLCBwc20sIGRldi0+ZGV2aWNlLmxtcF9uYW1lKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIF9fZnVuY19fLCBwc20sIGRldi0+ZGV2aWNlLmxtcF9uYW1lKTsKICAgICAgICAgZXhp dCgtMSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9ody9idC9zZHAuYyBiL2h3L2J0L3NkcC5jCmlu ZGV4IDNjYjYwYjk0OTUuLjdjMGQzOGI1MDQgMTAwNjQ0Ci0tLSBhL2h3L2J0L3NkcC5jCisrKyBi L2h3L2J0L3NkcC5jCkBAIC01MDYsNyArNTA2LDcgQEAgc3RhdGljIHZvaWQgYnRfbDJjYXBfc2Rw X3NkdV9pbih2b2lkICpvcGFxdWUsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIGludCBsZW4pCiAgICAg aW50IHJzcF9sZW4gPSAwOwogCiAgICAgaWYgKGxlbiA8IDUpIHsKLSAgICAgICAgZnByaW50Zihz dGRlcnIsICIlczogc2hvcnQgU0RQIFBEVSAoJWlCKS5cbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsK KyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogc2hvcnQgU0RQIFBEVSAoJWlCKS5cbiIsIF9f ZnVuY19fLCBsZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTgsNyArNTE4LDcg QEAgc3RhdGljIHZvaWQgYnRfbDJjYXBfc2RwX3NkdV9pbih2b2lkICpvcGFxdWUsIGNvbnN0IHVp bnQ4X3QgKmRhdGEsIGludCBsZW4pCiAKICAgICBpZiAobGVuICE9IHBsZW4pIHsKICAgICAgICAg ZnByaW50ZihzdGRlcnIsICIlczogd3JvbmcgU0RQIFBEVSBsZW5ndGggKCVpQiAhPSAlaUIpLlxu IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcGxlbiwgbGVuKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBwbGVuLCBsZW4pOwogICAgICAgICBlcnIg PSBTRFBfSU5WQUxJRF9QRFVfU0laRTsKICAgICAgICAgZ290byByZXNwb25kOwogICAgIH0KQEAg LTU0NSw3ICs1NDUsNyBAQCBzdGF0aWMgdm9pZCBidF9sMmNhcF9zZHBfc2R1X2luKHZvaWQgKm9w YXF1ZSwgY29uc3QgdWludDhfdCAqZGF0YSwgaW50IGxlbikKICAgICBjYXNlIFNEUF9TVkNfU0VB UkNIX0FUVFJfUlNQOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IHVuZXhwZWN0ZWQgU0RQIFBEVSBJRCAlMDJ4LlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAg IF9fRlVOQ1RJT05fXywgcGR1X2lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f LCBwZHVfaWQpOwogICAgICAgICBlcnIgPSBTRFBfSU5WQUxJRF9TWU5UQVg7CiAgICAgICAgIGJy ZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvYmxpenphcmQuYyBiL2h3L2Rpc3Bs YXkvYmxpenphcmQuYwppbmRleCBjYmYwN2QxNGQ5Li4yOTFhYmU2ZmNhIDEwMDY0NAotLS0gYS9o dy9kaXNwbGF5L2JsaXp6YXJkLmMKKysrIGIvaHcvZGlzcGxheS9ibGl6emFyZC5jCkBAIC00NzQs NyArNDc0LDcgQEAgc3RhdGljIHVpbnQxNl90IGJsaXp6YXJkX3JlZ19yZWFkKHZvaWQgKm9wYXF1 ZSwgdWludDhfdCByZWcpCiAgICAgICAgIHJldHVybiBzLT5ncGlvX3Bkb3duOwogCiAgICAgZGVm YXVsdDoKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdW5rbm93biByZWdpc3RlciAlMDJ4 XG4iLCBfX0ZVTkNUSU9OX18sIHJlZyk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHVu a25vd24gcmVnaXN0ZXIgJTAyeFxuIiwgX19mdW5jX18sIHJlZyk7CiAgICAgICAgIHJldHVybiAw OwogICAgIH0KIH0KQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgdm9pZCBibGl6emFyZF9yZWdf d3JpdGUodm9pZCAqb3BhcXVlLCB1aW50OF90IHJlZywgdWludDE2X3QgdmFsdWUpCiAgICAgICAg IHMtPnBsbF9tb2RlID0gdmFsdWUgJiAweDc3OwogICAgICAgICBpZiAoKHZhbHVlICYgMykgPT0g MCB8fCAodmFsdWUgJiAzKSA9PSAzKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczog d3JvbmcgUExMIENvbnRyb2wgYml0cyAoJWkpXG4iLAotICAgICAgICAgICAgICAgICAgICBfX0ZV TkNUSU9OX18sIHZhbHVlICYgMyk7CisgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCB2YWx1 ZSAmIDMpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHgwZToJLyogQ2xvY2stU291cmNl IFNlbGVjdCAqLwpAQCAtNTQxLDcgKzU0MSw3IEBAIHN0YXRpYyB2b2lkIGJsaXp6YXJkX3JlZ193 cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgcmVnLCB1aW50MTZfdCB2YWx1ZSkKICAgICBjYXNl IDB4Mjg6CS8qIExDRCBQYW5lbCBDb25maWd1cmF0aW9uICovCiAgICAgICAgIHMtPmxjZF9jb25m aWcgPSB2YWx1ZSAmIDB4ZmY7CiAgICAgICAgIGlmICh2YWx1ZSAmICgxIDw8IDcpKQotICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICIlczogZGF0YSBzd2FwIG5vdCBzdXBwb3J0ZWQhXG4iLCBf X0ZVTkNUSU9OX18pOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogZGF0YSBzd2Fw IG5vdCBzdXBwb3J0ZWQhXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz ZSAweDJhOgkvKiBMQ0QgSG9yaXpvbnRhbCBEaXNwbGF5IFdpZHRoICovCkBAIC01ODYsNyArNTg2 LDcgQEAgc3RhdGljIHZvaWQgYmxpenphcmRfcmVnX3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDhf dCByZWcsIHVpbnQxNl90IHZhbHVlKQogICAgICAgICBzLT5oc3NpX2NvbmZpZ1sxXSA9IHZhbHVl OwogICAgICAgICBpZiAoKCh2YWx1ZSA+PiA0KSAmIDMpID09IDMpCiAgICAgICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIiVzOiBJbGxlZ2FsIGFjdGl2ZS1kYXRhLWxpbmtzIHZhbHVlXG4iLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgX19mdW5jX18pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDB4NDI6CS8q IEhpZ2gtc3BlZWQgU2VyaWFsIEludGVyZmFjZSBUeCBNb2RlICovCiAgICAgICAgIHMtPmhzc2lf Y29uZmlnWzJdID0gdmFsdWUgJiAweGJkOwpAQCAtNjQxLDcgKzY0MSw3IEBAIHN0YXRpYyB2b2lk IGJsaXp6YXJkX3JlZ193cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgcmVnLCB1aW50MTZfdCB2 YWx1ZSkKICAgICAgICAgcy0+ZW5hYmxlID0gdmFsdWUgJiAxOwogICAgICAgICBzLT5ibGFuayA9 ICh2YWx1ZSA+PiAxKSAmIDE7CiAgICAgICAgIGlmICh2YWx1ZSAmICgxIDw8IDQpKQotICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICIlczogTWFjcm92aXNpb24gZW5hYmxlIGF0dGVtcHQhXG4i LCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogTWFjcm92 aXNpb24gZW5hYmxlIGF0dGVtcHQhXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGJyZWFrOwogCiAg ICAgY2FzZSAweDZhOgkvKiBTcGVjaWFsIEVmZmVjdHMgKi8KQEAgLTcxOCw3ICs3MTgsNyBAQCBz dGF0aWMgdm9pZCBibGl6emFyZF9yZWdfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50OF90IHJlZywg dWludDE2X3QgdmFsdWUpCiAgICAgICAgIHMtPmJwcCA9IGJsaXp6YXJkX2lmb3JtYXRfYnBwW3Mt Pmlmb3JtYXRdOwogICAgICAgICBpZiAoIXMtPmJwcCkKICAgICAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiJXM6IElsbGVnYWwgb3IgdW5zdXBwb3J0ZWQgaW5wdXQgZm9ybWF0ICV4XG4iLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcy0+aWZvcm1hdCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHMtPmlmb3JtYXQpOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIDB4OGU6CS8qIERhdGEgU291cmNlIFNlbGVjdCAqLwogICAgICAgICBz LT5zb3VyY2UgPSB2YWx1ZSAmIDc7CkBAIC03MzAsNyArNzMwLDcgQEAgc3RhdGljIHZvaWQgYmxp enphcmRfcmVnX3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCByZWcsIHVpbnQxNl90IHZhbHVl KQogICAgICAgICAgICAgICAgICAgICAgICAgISgocy0+aXhbMV0gLSBzLT5peFswXSkgJiAocy0+ aXlbMV0gLSBzLT5peVswXSkgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAocy0+b3hbMV0g LSBzLT5veFswXSkgJiAocy0+b3lbMV0gLSBzLT5veVswXSkgJiAxKSkKICAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiJXM6IElsbGVnYWwgaW5wdXQvb3V0cHV0IHdpbmRvdyBwb3NpdGlvbnNc biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAKICAgICAgICAgYmxpenphcmRfdHJhbnNm ZXJfc2V0dXAocyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzg0LDcgKzc4NCw3IEBAIHN0YXRpYyB2 b2lkIGJsaXp6YXJkX3JlZ193cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgcmVnLCB1aW50MTZf dCB2YWx1ZSkKICAgICAgICAgcy0+cG0gPSB2YWx1ZSAmIDB4ODM7CiAgICAgICAgIGlmICh2YWx1 ZSAmIHMtPm1vZGUgJiAxKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogVGhlIGRp c3BsYXkgbXVzdCBiZSBkaXNhYmxlZCBiZWZvcmUgZW50ZXJpbmcgIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJTdGFuZGJ5IE1vZGVcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIlN0YW5kYnkgTW9kZVxuIiwgX19mdW5jX18pOwogICAgICAgICBi cmVhazsKICAgICBjYXNlIDB4ZTg6CS8qIE5vbi1kaXNwbGF5IFBlcmlvZCBDb250cm9sIC8gU3Rh dHVzICovCiAgICAgICAgIHMtPnN0YXR1cyA9IHZhbHVlICYgMHgxYjsKQEAgLTgxNSw3ICs4MTUs NyBAQCBzdGF0aWMgdm9pZCBibGl6emFyZF9yZWdfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50OF90 IHJlZywgdWludDE2X3QgdmFsdWUpCiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKLSAg ICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdW5rbm93biByZWdpc3RlciAlMDJ4XG4iLCBfX0ZV TkNUSU9OX18sIHJlZyk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHVua25vd24gcmVn aXN0ZXIgJTAyeFxuIiwgX19mdW5jX18sIHJlZyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K ZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvb21hcF9kc3MuYyBiL2h3L2Rpc3BsYXkvb21hcF9kc3Mu YwppbmRleCA3ODNlOWUxMzE4Li42MDFmMTc4ZmRkIDEwMDY0NAotLS0gYS9ody9kaXNwbGF5L29t YXBfZHNzLmMKKysrIGIvaHcvZGlzcGxheS9vbWFwX2Rzcy5jCkBAIC01MjYsNyArNTI2LDcgQEAg c3RhdGljIHZvaWQgb21hcF9kaXNjX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAg ICAgICAgIHMtPmRpc3BjLmxbMF0uYXR0ciA9IHZhbHVlICYgMHg3ZmY7CiAgICAgICAgIGlmICh2 YWx1ZSAmICgzIDw8IDkpKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogQmlnLWVu ZGlhbiBwaXhlbCBmb3JtYXQgbm90IHN1cHBvcnRlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVu Y19fKTsKICAgICAgICAgcy0+ZGlzcGMubFswXS5lbmFibGUgPSB2YWx1ZSAmIDE7CiAgICAgICAg IHMtPmRpc3BjLmxbMF0uYnBwID0gKHZhbHVlID4+IDEpICYgMHhmOwogICAgICAgICBzLT5kaXNw Yy5pbnZhbGlkYXRlID0gMTsKQEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX3Jm YmlfdHJhbnNmZXJfc3RhcnQoc3RydWN0IG9tYXBfZHNzX3MgKnMpCiAgICAgaWYgKHMtPnJmYmku Y29udHJvbCAmICgxIDw8IDEpKSB7CQkJCS8qIEJZUEFTUyAqLwogICAgICAgICAvKiBUT0RPOiBp biBub24tQnlwYXNzIG1vZGUgd2UgcHJvYmFibHkgbmVlZCB0byBqdXN0IGFzc2VydCB0aGUKICAg ICAgICAgICogRFJRIGFuZCB3YWl0IGZvciBETUEgdG8gd3JpdGUgdGhlIHBpeGVscy4gICovCi0g ICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEJ5cGFzcyBtb2RlIHVuaW1wbGVtZW50ZWRcbiIs IF9fRlVOQ1RJT05fXyk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEJ5cGFzcyBtb2Rl IHVuaW1wbGVtZW50ZWRcbiIsIF9fZnVuY19fKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA QCAtMTA4Niw2ICsxMDg2LDYgQEAgc3RydWN0IG9tYXBfZHNzX3MgKm9tYXBfZHNzX2luaXQoc3Ry dWN0IG9tYXBfdGFyZ2V0X2FnZW50X3MgKnRhLAogdm9pZCBvbWFwX3JmYmlfYXR0YWNoKHN0cnVj dCBvbWFwX2Rzc19zICpzLCBpbnQgY3MsIHN0cnVjdCByZmJpX2NoaXBfcyAqY2hpcCkKIHsKICAg ICBpZiAoY3MgPCAwIHx8IGNzID4gMSkKLSAgICAgICAgaHdfZXJyb3IoIiVzOiB3cm9uZyBDUyAl aVxuIiwgX19GVU5DVElPTl9fLCBjcyk7CisgICAgICAgIGh3X2Vycm9yKCIlczogd3JvbmcgQ1Mg JWlcbiIsIF9fZnVuY19fLCBjcyk7CiAgICAgcy0+cmZiaS5jaGlwW2NzXSA9IGNoaXA7CiB9CmRp ZmYgLS1naXQgYS9ody9kaXNwbGF5L3B4YTJ4eF9sY2QuYyBiL2h3L2Rpc3BsYXkvcHhhMnh4X2xj ZC5jCmluZGV4IDg0NTUyMWM1YjIuLmI4M2Y4MDc1M2EgMTAwNjQ0Ci0tLSBhL2h3L2Rpc3BsYXkv cHhhMnh4X2xjZC5jCisrKyBiL2h3L2Rpc3BsYXkvcHhhMnh4X2xjZC5jCkBAIC00MDUsNyArNDA1 LDcgQEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9sY2RjX3JlYWQodm9pZCAqb3BhcXVlLCBod2Fk ZHIgb2Zmc2V0LAogCiAgICAgZGVmYXVsdDoKICAgICBmYWlsOgotICAgICAgICBod19lcnJvcigi JXM6IEJhZCBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgb2Zmc2V0KTsKKyAg ICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywg b2Zmc2V0KTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTQyNCw3ICs0MjQsNyBAQCBzdGF0 aWMgdm9pZCBweGEyeHhfbGNkY193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsCiAg ICAgICAgICAgICBzLT5zdGF0dXNbMF0gfD0gTENTUjBfUUQ7CiAKICAgICAgICAgaWYgKCEocy0+ Y29udHJvbFswXSAmIExDQ1IwX0xDRFQpICYmICh2YWx1ZSAmIExDQ1IwX0xDRFQpKQotICAgICAg ICAgICAgcHJpbnRmKCIlczogaW50ZXJuYWwgZnJhbWUgYnVmZmVyIHVuc3VwcG9ydGVkXG4iLCBf X0ZVTkNUSU9OX18pOworICAgICAgICAgICAgcHJpbnRmKCIlczogaW50ZXJuYWwgZnJhbWUgYnVm ZmVyIHVuc3VwcG9ydGVkXG4iLCBfX2Z1bmNfXyk7CiAKICAgICAgICAgaWYgKChzLT5jb250cm9s WzNdICYgTENDUjNfQVBJKSAmJgogICAgICAgICAgICAgICAgICh2YWx1ZSAmIExDQ1IwX0VOQikg JiYgISh2YWx1ZSAmIExDQ1IwX0xDRFQpKQpAQCAtNDYwLDcgKzQ2MCw3IEBAIHN0YXRpYyB2b2lk IHB4YTJ4eF9sY2RjX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIG9mZnNldCwKIAogICAgIGNh c2UgT1ZMMUMxOgogICAgICAgICBpZiAoIShzLT5vdmwxY1swXSAmIE9WTEMxX0VOKSAmJiAodmFs dWUgJiBPVkxDMV9FTikpCi0gICAgICAgICAgICBwcmludGYoIiVzOiBPdmVybGF5IDEgbm90IHN1 cHBvcnRlZFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6IE92ZXJs YXkgMSBub3Qgc3VwcG9ydGVkXG4iLCBfX2Z1bmNfXyk7CiAKICAgICAgICAgcy0+b3ZsMWNbMF0g PSB2YWx1ZSAmIDB4ODBmZmZmZmY7CiAgICAgICAgIHMtPmRtYV9jaFsxXS51cCA9ICh2YWx1ZSAm IE9WTEMxX0VOKSB8fCAocy0+Y29udHJvbFswXSAmIExDQ1IwX1NEUyk7CkBAIC00NzIsNyArNDcy LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X2xjZGNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIg b2Zmc2V0LAogCiAgICAgY2FzZSBPVkwyQzE6CiAgICAgICAgIGlmICghKHMtPm92bDJjWzBdICYg T1ZMQzFfRU4pICYmICh2YWx1ZSAmIE9WTEMxX0VOKSkKLSAgICAgICAgICAgIHByaW50ZigiJXM6 IE92ZXJsYXkgMiBub3Qgc3VwcG9ydGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAg cHJpbnRmKCIlczogT3ZlcmxheSAyIG5vdCBzdXBwb3J0ZWRcbiIsIF9fZnVuY19fKTsKIAogICAg ICAgICBzLT5vdmwyY1swXSA9IHZhbHVlICYgMHg4MGZmZmZmZjsKICAgICAgICAgcy0+ZG1hX2No WzJdLnVwID0gISEodmFsdWUgJiBPVkxDMV9FTik7CkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGlj IHZvaWQgcHhhMnh4X2xjZGNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgb2Zmc2V0LAogCiAg ICAgY2FzZSBDQ1I6CiAgICAgICAgIGlmICghKHMtPmNjciAmIENDUl9DRU4pICYmICh2YWx1ZSAm IENDUl9DRU4pKQotICAgICAgICAgICAgcHJpbnRmKCIlczogSGFyZHdhcmUgY3Vyc29yIHVuaW1w bGVtZW50ZWRcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYoIiVzOiBIYXJk d2FyZSBjdXJzb3IgdW5pbXBsZW1lbnRlZFxuIiwgX19mdW5jX18pOwogCiAgICAgICAgIHMtPmNj ciA9IHZhbHVlICYgMHg4MWZmZmZlNzsKICAgICAgICAgcy0+ZG1hX2NoWzVdLnVwID0gISEodmFs dWUgJiBDQ1JfQ0VOKTsKQEAgLTU2MCw3ICs1NjAsNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhfbGNk Y193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsCiAKICAgICBkZWZhdWx0OgogICAg IGZhaWw6Ci0gICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNldCAiIFJFR19GTVQgIlxuIiwg X19GVU5DVElPTl9fLCBvZmZzZXQpOworICAgICAgICBod19lcnJvcigiJXM6IEJhZCBvZmZzZXQg IiBSRUdfRk1UICJcbiIsIF9fZnVuY19fLCBvZmZzZXQpOwogICAgIH0KIH0KIApAQCAtMTA1MCw3 ICsxMDUwLDcgQEAgUFhBMnh4TENEU3RhdGUgKnB4YTJ4eF9sY2RjX2luaXQoTWVtb3J5UmVnaW9u ICpzeXNtZW0sCiAgICAgICAgIHMtPmRlc3Rfd2lkdGggPSA0OwogICAgICAgICBicmVhazsKICAg ICBkZWZhdWx0OgotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBCYWQgY29sb3IgZGVwdGhc biIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEJhZCBjb2xv ciBkZXB0aFxuIiwgX19mdW5jX18pOwogICAgICAgICBleGl0KDEpOwogICAgIH0KIApkaWZmIC0t Z2l0IGEvaHcvZGlzcGxheS9xeGwtcmVuZGVyLmMgYi9ody9kaXNwbGF5L3F4bC1yZW5kZXIuYwpp bmRleCA5MGUwODY1NjE4Li5lN2FjNGY4Nzg5IDEwMDY0NAotLS0gYS9ody9kaXNwbGF5L3F4bC1y ZW5kZXIuYworKysgYi9ody9kaXNwbGF5L3F4bC1yZW5kZXIuYwpAQCAtNzgsNyArNzgsNyBAQCB2 b2lkIHF4bF9yZW5kZXJfcmVzaXplKFBDSVFYTERldmljZSAqcXhsKQogICAgICAgICBxeGwtPmd1 ZXN0X3ByaW1hcnkuYml0c19wcCA9IDMyOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogot ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmhhbmRsZWQgZm9ybWF0OiAleFxuIiwgX19G VU5DVElPTl9fLAorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmhhbmRsZWQgZm9ybWF0 OiAleFxuIiwgX19mdW5jX18sCiAgICAgICAgICAgICAgICAgcXhsLT5ndWVzdF9wcmltYXJ5LnN1 cmZhY2UuZm9ybWF0KTsKICAgICAgICAgcXhsLT5ndWVzdF9wcmltYXJ5LmJ5dGVzX3BwID0gNDsK ICAgICAgICAgcXhsLT5ndWVzdF9wcmltYXJ5LmJpdHNfcHAgPSAzMjsKQEAgLTI0OCw3ICsyNDgs NyBAQCBzdGF0aWMgUUVNVUN1cnNvciAqcXhsX2N1cnNvcihQQ0lRWExEZXZpY2UgKnF4bCwgUVhM Q3Vyc29yICpjdXJzb3IsCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiJXM6IG5vdCBpbXBsZW1lbnRlZDogdHlwZSAlZFxuIiwKLSAgICAgICAg ICAgICAgICBfX0ZVTkNUSU9OX18sIGN1cnNvci0+aGVhZGVyLnR5cGUpOworICAgICAgICAgICAg ICAgIF9fZnVuY19fLCBjdXJzb3ItPmhlYWRlci50eXBlKTsKICAgICAgICAgZ290byBmYWlsOwog ICAgIH0KICAgICByZXR1cm4gYzsKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbnQgcXhsX3JlbmRlcl9j dXJzb3IoUENJUVhMRGV2aWNlICpxeGwsIFFYTENvbW1hbmRFeHQgKmV4dCkKICAgICB9CiAKICAg ICBpZiAocXhsLT5kZWJ1ZyA+IDEgJiYgY21kLT50eXBlICE9IFFYTF9DVVJTT1JfTU9WRSkgewot ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgZnBy aW50ZihzdGRlcnIsICIlcyIsIF9fZnVuY19fKTsKICAgICAgICAgcXhsX2xvZ19jbWRfY3Vyc29y KHF4bCwgY21kLCBleHQtPmdyb3VwX2lkKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiIp OwogICAgIH0KZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvcXhsLmggYi9ody9kaXNwbGF5L3F4bC5o CmluZGV4IGY2NTU2YWRiNzMuLjdkMWI2MDAxNGEgMTAwNjQ0Ci0tLSBhL2h3L2Rpc3BsYXkvcXhs LmgKKysrIGIvaHcvZGlzcGxheS9xeGwuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHR5cGVkZWYgc3Ry dWN0IFBDSVFYTERldmljZSB7CiAjZGVmaW5lIFBDSV9RWEwob2JqKSBPQkpFQ1RfQ0hFQ0soUENJ UVhMRGV2aWNlLCAob2JqKSwgVFlQRV9QQ0lfUVhMKQogCiAjZGVmaW5lIFBBTklDX09OKHgpIGlm ICgoeCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHByaW50ZigiJXM6IFBBTklD ICVzIGZhaWxlZFxuIiwgX19GVU5DVElPTl9fLCAjeCk7IFwKKyAgICBwcmludGYoIiVzOiBQQU5J QyAlcyBmYWlsZWRcbiIsIF9fZnVuY19fLCAjeCk7IFwKICAgICBhYm9ydCgpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9CiAKZGlmZiAtLWdpdCBhL2h3L2Rp c3BsYXkvdGM2MzkzeGIuYyBiL2h3L2Rpc3BsYXkvdGM2MzkzeGIuYwppbmRleCA3NGQxMGFmM2Q0 Li43OWYxNjE3NDBhIDEwMDY0NAotLS0gYS9ody9kaXNwbGF5L3RjNjM5M3hiLmMKKysrIGIvaHcv ZGlzcGxheS90YzYzOTN4Yi5jCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgdGM2Mzkz eGJfZ3Bpb19zZXQodm9pZCAqb3BhcXVlLCBpbnQgbGluZSwgaW50IGxldmVsKQogLy8gICAgVEM2 MzkzeGJTdGF0ZSAqcyA9IG9wYXF1ZTsKIAogICAgIGlmIChsaW5lID4gVEM2MzkzWEJfR1BJT1Mp IHsKLSAgICAgICAgcHJpbnRmKCIlczogTm8gR1BJTyBwaW4gJWlcbiIsIF9fRlVOQ1RJT05fXywg bGluZSk7CisgICAgICAgIHByaW50ZigiJXM6IE5vIEdQSU8gcGluICVpXG4iLCBfX2Z1bmNfXywg bGluZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkv eGVuZmIuYyBiL2h3L2Rpc3BsYXkveGVuZmIuYwppbmRleCA4ZTI1NDdhYzA1Li4zMGNkNDE1MzMw IDEwMDY0NAotLS0gYS9ody9kaXNwbGF5L3hlbmZiLmMKKysrIGIvaHcvZGlzcGxheS94ZW5mYi5j CkBAIC02NDQsNyArNjQ0LDcgQEAgc3RhdGljIHZvaWQgeGVuZmJfZ3Vlc3RfY29weShzdHJ1Y3Qg WGVuRkIgKnhlbmZiLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkKICAgICB9CiAgICAgaWYg KG9vcHMpIC8qIHNob3VsZCBub3QgaGFwcGVuICovCiAgICAgICAgIHhlbl9wdl9wcmludGYoJnhl bmZiLT5jLnhlbmRldiwgMCwgIiVzOiBvb3BzOiBjb252ZXJ0ICVkIC0+ICVkIGJwcD9cbiIsCi0g ICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCB4ZW5mYi0+ZGVwdGgsIGJwcCk7Cisg ICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHhlbmZiLT5kZXB0aCwgYnBwKTsKIAogICAg IGRweV9nZnhfdXBkYXRlKHhlbmZiLT5jb24sIHgsIHksIHcsIGgpOwogfQpkaWZmIC0tZ2l0IGEv aHcvZG1hL29tYXBfZG1hLmMgYi9ody9kbWEvb21hcF9kbWEuYwppbmRleCA0NWRmZTdhYWRkLi5h YmQxOGM2N2VhIDEwMDY0NAotLS0gYS9ody9kbWEvb21hcF9kbWEuYworKysgYi9ody9kbWEvb21h cF9kbWEuYwpAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIG9tYXBfZG1hX2NoYW5uZWxf bG9hZChzdHJ1Y3Qgb21hcF9kbWFfY2hhbm5lbF9zICpjaCkKICAgICBhLT5wY2tfZWxlbWVudCA9 IDA7CiAKICAgICBpZiAodW5saWtlbHkoIWNoLT5lbGVtZW50cyB8fCAhY2gtPmZyYW1lcykpIHsK LSAgICAgICAgcHJpbnRmKCIlczogYmFkIERNQSByZXF1ZXN0XG4iLCBfX0ZVTkNUSU9OX18pOwor ICAgICAgICBwcmludGYoIiVzOiBiYWQgRE1BIHJlcXVlc3RcbiIsIF9fZnVuY19fKTsKICAgICAg ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE5LDcgKzUxOSw3IEBAIHN0YXRpYyB2b2lkIG9tYXBf ZG1hX3RyYW5zZmVyX3NldHVwKHN0cnVjdCBzb2NfZG1hX2NoX3MgKmRtYSkKICAgICAgICAgY29u dGludWU7CiAjZW5kaWYKICAgICAgICAgcHJpbnRmKCIlczogQnVzIHRpbWUtb3V0IGluIERNQSVp IG9wZXJhdGlvblxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgZG1h LT5udW0pOworICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGRtYS0+bnVtKTsKICAg ICB9CiAKICAgICBtaW5fZWxlbXMgPSBJTlRfTUFYOwpAQCAtODc5LDE0ICs4NzksMTQgQEAgc3Rh dGljIGludCBvbWFwX2RtYV9jaF9yZWdfd3JpdGUoc3RydWN0IG9tYXBfZG1hX3MgKnMsCiAgICAg ICAgIGNoLT5wYWNrWzBdID0gKHZhbHVlICYgMHgwMDQwKSA+PiA2OwogICAgICAgICBjaC0+cG9y dFswXSA9IChlbnVtIG9tYXBfZG1hX3BvcnQpICgodmFsdWUgJiAweDAwM2MpID4+IDIpOwogICAg ICAgICBpZiAoY2gtPnBvcnRbMF0gPj0gX19vbWFwX2RtYV9wb3J0X2xhc3QpCi0gICAgICAgICAg ICBwcmludGYoIiVzOiBpbnZhbGlkIERNQSBwb3J0ICVpXG4iLCBfX0ZVTkNUSU9OX18sCisgICAg ICAgICAgICBwcmludGYoIiVzOiBpbnZhbGlkIERNQSBwb3J0ICVpXG4iLCBfX2Z1bmNfXywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjaC0+cG9ydFswXSk7CiAgICAgICAgIGlmIChjaC0+ cG9ydFsxXSA+PSBfX29tYXBfZG1hX3BvcnRfbGFzdCkKLSAgICAgICAgICAgIHByaW50ZigiJXM6 IGludmFsaWQgRE1BIHBvcnQgJWlcbiIsIF9fRlVOQ1RJT05fXywKKyAgICAgICAgICAgIHByaW50 ZigiJXM6IGludmFsaWQgRE1BIHBvcnQgJWlcbiIsIF9fZnVuY19fLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNoLT5wb3J0WzFdKTsKICAgICAgICAgY2gtPmRhdGFfdHlwZSA9IDEgPDwg KHZhbHVlICYgMyk7CiAgICAgICAgIGlmICgodmFsdWUgJiAzKSA9PSAzKSB7Ci0gICAgICAgICAg ICBwcmludGYoIiVzOiBiYWQgZGF0YV90eXBlIGZvciBETUEgY2hhbm5lbFxuIiwgX19GVU5DVElP Tl9fKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6IGJhZCBkYXRhX3R5cGUgZm9yIERNQSBjaGFu bmVsXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgICAgICBjaC0+ZGF0YV90eXBlID4+PSAxOwogICAg ICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgc3RhdGljIGludCBv bWFwX2RtYV9zeXNfcmVhZChzdHJ1Y3Qgb21hcF9kbWFfcyAqcywgaW50IG9mZnNldCwKICAgICBj YXNlIDB4NDgyOgkvKiBETUFfUENoMV9TUiAqLwogICAgIGNhc2UgMHg0YzA6CS8qIERNQV9QQ2hE X1NSXzAgKi8KICAgICAgICAgcHJpbnRmKCIlczogUGh5c2ljYWwgQ2hhbm5lbCBTdGF0dXMgUmVn aXN0ZXJzIG5vdCBpbXBsZW1lbnRlZC5cbiIsCi0gICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18p OworICAgICAgICAgICAgICAgX19mdW5jX18pOwogICAgICAgICAqcmV0ID0gMHhmZjsKICAgICAg ICAgYnJlYWs7CiAKQEAgLTE4OTgsMTMgKzE4OTgsMTMgQEAgc3RhdGljIHZvaWQgb21hcF9kbWE0 X3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgICAgICBvbWFwX2RtYV9y ZXNldChzLT5kbWEpOwogICAgICAgICBzLT5vY3AgPSB2YWx1ZSAmIDB4MzMyMTsKICAgICAgICAg aWYgKCgocy0+b2NwID4+IDEyKSAmIDMpID09IDMpCQkJCS8qIE1JRExFTU9ERSAqLwotICAgICAg ICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaW52YWxpZCBETUEgcG93ZXIgbW9kZVxuIiwgX19G VU5DVElPTl9fKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGludmFsaWQgRE1B IHBvd2VyIG1vZGVcbiIsIF9fZnVuY19fKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSAw eDc4OgkvKiBETUE0X0dDUiAqLwogICAgICAgICBzLT5nY3IgPSB2YWx1ZSAmIDB4MDBmZjAwZmY7 CiAJaWYgKCh2YWx1ZSAmIDB4ZmYpID09IDB4MDApCQkvKiBNQVhfQ0hBTk5FTF9GSUZPX0RFUFRI ICovCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB3cm9uZyBGSUZPIGRlcHRoIGlu IEdDUlxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IHdyb25nIEZJRk8gZGVwdGggaW4gR0NSXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybjsK IAogICAgIGNhc2UgMHg4MCAuLi4gMHhmZmY6CkBAIC0xOTM1LDcgKzE5MzUsNyBAQCBzdGF0aWMg dm9pZCBvbWFwX2RtYTRfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAg Y2gtPnNyY19zeW5jID0gKHZhbHVlID4+IDI0KSAmIDE7CS8qIFhYWCBGb3IgQ2FtRE1BIG11c3Qg YmUgMSAqLwogICAgICAgICBpZiAoY2gtPmJ1Zl9kaXNhYmxlICYmICFjaC0+c3JjX3N5bmMpCiAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBCdWZmZXJpbmcgZGlzYWJsZSBpcyBub3Qg YWxsb3dlZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc3RpbmF0aW9uIHN5 bmNocm9uaXNlZCBtb2RlXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJkZXN0aW5hdGlvbiBzeW5jaHJvbmlzZWQgbW9kZVxuIiwgX19mdW5jX18pOwogICAg ICAgICBjaC0+cHJlZmV0Y2ggPSAodmFsdWUgPj4gMjMpICYgMTsKICAgICAgICAgY2gtPmJzID0g KHZhbHVlID4+IDE4KSAmIDE7CiAgICAgICAgIGNoLT50cmFuc3BhcmVudF9jb3B5ID0gKHZhbHVl ID4+IDE3KSAmIDE7CkBAIC0xOTQ3LDcgKzE5NDcsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2RtYTRf d3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgY2gtPmZzID0gKHZhbHVl ICYgMHgwMDIwKSA+PiA1OwogICAgICAgICBpZiAoY2gtPmZzICYmIGNoLT5icyAmJiBjaC0+bW9k ZVswXSAmJiBjaC0+bW9kZVsxXSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEZv ciBhIHBhY2tldCB0cmFuc2ZlciBhdCBsZWFzdCBvbmUgcG9ydCAiCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIm11c3QgYmUgY29uc3RhbnQtYWRkcmVzc2VkXG4iLCBfX0ZVTkNUSU9OX18p OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGNvbnN0YW50LWFkZHJlc3Nl ZFxuIiwgX19mdW5jX18pOwogICAgICAgICBjaC0+c3luYyA9ICh2YWx1ZSAmIDB4MDAxZikgfCAo KHZhbHVlID4+IDE0KSAmIDB4MDA2MCk7CiAgICAgICAgIC8qIFhYWCBtdXN0IGJlIDB4MDEgZm9y IENhbURNQSAqLwogCkBAIC0xOTc4LDcgKzE5NzgsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2RtYTRf d3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgY2gtPmVuZGlhbl9sb2Nr WzFdID0odmFsdWUgPj4gMTgpICYgMTsKICAgICAgICAgaWYgKGNoLT5lbmRpYW5bMF0gIT0gY2gt PmVuZGlhblsxXSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IERNQSBlbmRpYW5u ZXNzIGNvbnZlcnNpb24gZW5hYmxlIGF0dGVtcHRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNf Xyk7CiAgICAgICAgIGNoLT53cml0ZV9tb2RlID0gKHZhbHVlID4+IDE2KSAmIDM7CiAgICAgICAg IGNoLT5idXJzdFsxXSA9ICh2YWx1ZSAmIDB4YzAwMCkgPj4gMTQ7CiAgICAgICAgIGNoLT5wYWNr WzFdID0gKHZhbHVlICYgMHgyMDAwKSA+PiAxMzsKQEAgLTE5ODgsMTAgKzE5ODgsMTAgQEAgc3Rh dGljIHZvaWQgb21hcF9kbWE0X3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAg ICAgIGNoLT50cmFuc2xhdGVbMF0gPSAodmFsdWUgJiAweDAwM2MpID4+IDI7CiAgICAgICAgIGlm IChjaC0+dHJhbnNsYXRlWzBdIHwgY2gtPnRyYW5zbGF0ZVsxXSkKICAgICAgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiJXM6IGJhZCBNUmVxQWRkcmVzc1RyYW5zbGF0ZSBzaWRlYmFuZCBzaWduYWxc biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAgICAgICAgIGNoLT5kYXRhX3R5cGUgPSAx IDw8ICh2YWx1ZSAmIDMpOwogICAgICAgICBpZiAoKHZhbHVlICYgMykgPT0gMykgewotICAgICAg ICAgICAgcHJpbnRmKCIlczogYmFkIGRhdGFfdHlwZSBmb3IgRE1BIGNoYW5uZWxcbiIsIF9fRlVO Q1RJT05fXyk7CisgICAgICAgICAgICBwcmludGYoIiVzOiBiYWQgZGF0YV90eXBlIGZvciBETUEg Y2hhbm5lbFxuIiwgX19mdW5jX18pOwogICAgICAgICAgICAgY2gtPmRhdGFfdHlwZSA+Pj0gMTsK ICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2h3L2RtYS9weGEyeHhfZG1h LmMgYi9ody9kbWEvcHhhMnh4X2RtYS5jCmluZGV4IDYzNGE0MzI4ZjAuLmY0ZWIyNmNmMTcgMTAw NjQ0Ci0tLSBhL2h3L2RtYS9weGEyeHhfZG1hLmMKKysrIGIvaHcvZG1hL3B4YTJ4eF9kbWEuYwpA QCAtMTY5LDcgKzE2OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBweGEyeHhfZG1hX2Rlc2NyaXB0 b3JfZmV0Y2goCiAgICAgICAgIHMtPmNoYW5bY2hdLmRlc3QgJj0gfjM7CiAKICAgICBpZiAocy0+ Y2hhbltjaF0uY21kICYgKERDTURfQ01QRU4gfCBEQ01EX0ZMWUJZUyB8IERDTURfRkxZQllUKSkK LSAgICAgICAgcHJpbnRmKCIlczogdW5zdXBwb3J0ZWQgbW9kZSBpbiBjaGFubmVsICVpXG4iLCBf X0ZVTkNUSU9OX18sIGNoKTsKKyAgICAgICAgcHJpbnRmKCIlczogdW5zdXBwb3J0ZWQgbW9kZSBp biBjaGFubmVsICVpXG4iLCBfX2Z1bmNfXywgY2gpOwogCiAgICAgaWYgKHMtPmNoYW5bY2hdLmNt ZCAmIERDTURfU1RBUlRJUlFFTikKICAgICAgICAgcy0+Y2hhbltjaF0uc3RhdGUgfD0gRENTUl9T VEFSVElOVFI7CkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9kbWFf cmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsCiAgICAgdW5zaWduZWQgaW50IGNoYW5u ZWw7CiAKICAgICBpZiAoc2l6ZSAhPSA0KSB7Ci0gICAgICAgIGh3X2Vycm9yKCIlczogQmFkIGFj Y2VzcyB3aWR0aFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQg YWNjZXNzIHdpZHRoXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIHJldHVybiA1OwogICAgIH0KIApA QCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyB1aW50NjRfdCBweGEyeHhfZG1hX3JlYWQodm9pZCAq b3BhcXVlLCBod2FkZHIgb2Zmc2V0LAogICAgICAgICB9CiAgICAgfQogCi0gICAgaHdfZXJyb3Io IiVzOiBCYWQgb2Zmc2V0IDB4IiBUQVJHRVRfRk1UX3BseCAiXG4iLCBfX0ZVTkNUSU9OX18sIG9m ZnNldCk7CisgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0IDB4IiBUQVJHRVRfRk1UX3BseCAi XG4iLCBfX2Z1bmNfXywgb2Zmc2V0KTsKICAgICByZXR1cm4gNzsKIH0KIApAQCAtMzIzLDcgKzMy Myw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9kbWFfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIg b2Zmc2V0LAogICAgIHVuc2lnbmVkIGludCBjaGFubmVsOwogCiAgICAgaWYgKHNpemUgIT0gNCkg ewotICAgICAgICBod19lcnJvcigiJXM6IEJhZCBhY2Nlc3Mgd2lkdGhcbiIsIF9fRlVOQ1RJT05f Xyk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIGFjY2VzcyB3aWR0aFxuIiwgX19mdW5jX18p OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzcsNyArMzM3LDcgQEAgc3RhdGljIHZv aWQgcHhhMnh4X2RtYV93cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsCiAgICAgICAg IGlmICh2YWx1ZSAmIERSQ01SX01BUFZMRCkKICAgICAgICAgICAgIGlmICgodmFsdWUgJiBEUkNN Ul9DSExOVU0pID4gcy0+Y2hhbm5lbHMpCiAgICAgICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBC YWQgRE1BIGNoYW5uZWwgJWlcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElP Tl9fLCAodW5zaWduZWQpdmFsdWUgJiBEUkNNUl9DSExOVU0pOworICAgICAgICAgICAgICAgICAg ICAgICAgIF9fZnVuY19fLCAodW5zaWduZWQpdmFsdWUgJiBEUkNNUl9DSExOVU0pOwogCiAgICAg ICAgIHMtPnJlcVtjaGFubmVsXSA9IHZhbHVlOwogICAgICAgICBicmVhazsKQEAgLTQxNiw3ICs0 MTYsNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhfZG1hX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRy IG9mZnNldCwKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgZmFpbDoKLSAgICAg ICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgVEFSR0VUX0ZNVF9wbHggIlxuIiwgX19GVU5D VElPTl9fLCBvZmZzZXQpOworICAgICAgICBod19lcnJvcigiJXM6IEJhZCBvZmZzZXQgIiBUQVJH RVRfRk1UX3BseCAiXG4iLCBfX2Z1bmNfXywgb2Zmc2V0KTsKICAgICB9CiB9CiAKQEAgLTQzMSw3 ICs0MzEsNyBAQCBzdGF0aWMgdm9pZCBweGEyeHhfZG1hX3JlcXVlc3Qodm9pZCAqb3BhcXVlLCBp bnQgcmVxX251bSwgaW50IG9uKQogICAgIFBYQTJ4eERNQVN0YXRlICpzID0gb3BhcXVlOwogICAg IGludCBjaDsKICAgICBpZiAocmVxX251bSA8IDAgfHwgcmVxX251bSA+PSBQWEEyWFhfRE1BX05V TV9SRVFVRVNUUykKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgRE1BIHJlcXVlc3QgJWlcbiIs IF9fRlVOQ1RJT05fXywgcmVxX251bSk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIERNQSBy ZXF1ZXN0ICVpXG4iLCBfX2Z1bmNfXywgcmVxX251bSk7CiAKICAgICBpZiAoIShzLT5yZXFbcmVx X251bV0gJiBEUkNNUl9NQVBWTEQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9ody9n cGlvL21heDczMTAuYyBiL2h3L2dwaW8vbWF4NzMxMC5jCmluZGV4IGY4MmUzZTY1NTUuLjRjMjAz ZWY1YzYgMTAwNjQ0Ci0tLSBhL2h3L2dwaW8vbWF4NzMxMC5jCisrKyBiL2h3L2dwaW8vbWF4NzMx MC5jCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBpbnQgbWF4NzMxMF9yeChJMkNTbGF2ZSAqaTJj KQogCiAgICAgZGVmYXVsdDoKICNpZmRlZiBWRVJCT1NFCi0gICAgICAgIHByaW50ZigiJXM6IHVu a25vd24gcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBzLT5jb21tYW5kKTsKKyAgICAg ICAgcHJpbnRmKCIlczogdW5rbm93biByZWdpc3RlciAlMDJ4XG4iLCBfX2Z1bmNfXywgcy0+Y29t bWFuZCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODIsNyArODIsNyBAQCBz dGF0aWMgaW50IG1heDczMTBfdHgoSTJDU2xhdmUgKmkyYywgdWludDhfdCBkYXRhKQogCiAgICAg aWYgKHMtPmxlbiArKyA+IDEpIHsKICNpZmRlZiBWRVJCT1NFCi0gICAgICAgIHByaW50ZigiJXM6 IG1lc3NhZ2UgdG9vIGxvbmcgKCVpIGJ5dGVzKVxuIiwgX19GVU5DVElPTl9fLCBzLT5sZW4pOwor ICAgICAgICBwcmludGYoIiVzOiBtZXNzYWdlIHRvbyBsb25nICglaSBieXRlcylcbiIsIF9fZnVu Y19fLCBzLT5sZW4pOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTEyMSw3 ICsxMjEsNyBAQCBzdGF0aWMgaW50IG1heDczMTBfdHgoSTJDU2xhdmUgKmkyYywgdWludDhfdCBk YXRhKQogCWJyZWFrOwogICAgIGRlZmF1bHQ6CiAjaWZkZWYgVkVSQk9TRQotICAgICAgICBwcmlu dGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyICUwMnhcbiIsIF9fRlVOQ1RJT05fXywgcy0+Y29tbWFu ZCk7CisgICAgICAgIHByaW50ZigiJXM6IHVua25vd24gcmVnaXN0ZXIgJTAyeFxuIiwgX19mdW5j X18sIHMtPmNvbW1hbmQpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE0 MSw3ICsxNDEsNyBAQCBzdGF0aWMgaW50IG1heDczMTBfZXZlbnQoSTJDU2xhdmUgKmkyYywgZW51 bSBpMmNfZXZlbnQgZXZlbnQpCiAgICAgY2FzZSBJMkNfRklOSVNIOgogI2lmZGVmIFZFUkJPU0UK ICAgICAgICAgaWYgKHMtPmxlbiA9PSAxKQotICAgICAgICAgICAgcHJpbnRmKCIlczogbWVzc2Fn ZSB0b28gc2hvcnQgKCVpIGJ5dGVzKVxuIiwgX19GVU5DVElPTl9fLCBzLT5sZW4pOworICAgICAg ICAgICAgcHJpbnRmKCIlczogbWVzc2FnZSB0b28gc2hvcnQgKCVpIGJ5dGVzKVxuIiwgX19mdW5j X18sIHMtPmxlbik7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKZGlmZiAt LWdpdCBhL2h3L2dwaW8vb21hcF9ncGlvLmMgYi9ody9ncGlvL29tYXBfZ3Bpby5jCmluZGV4IDE3 ODkxZTJkMGYuLjA4NDcyMTkzYjUgMTAwNjQ0Ci0tLSBhL2h3L2dwaW8vb21hcF9ncGlvLmMKKysr IGIvaHcvZ3Bpby9vbWFwX2dwaW8uYwpAQCAtMzk5LDcgKzM5OSw3IEBAIHN0YXRpYyB2b2lkIG9t YXAyX2dwaW9fbW9kdWxlX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAKICAgICBj YXNlIDB4MTA6CS8qIEdQSU9fU1lTQ09ORklHICovCiAgICAgICAgIGlmICgoKHZhbHVlID4+IDMp ICYgMykgPT0gMykKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCBJRExFTU9E RSB2YWx1ZVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAi JXM6IGJhZCBJRExFTU9ERSB2YWx1ZVxuIiwgX19mdW5jX18pOwogICAgICAgICBpZiAodmFsdWUg JiAyKQogICAgICAgICAgICAgb21hcDJfZ3Bpb19tb2R1bGVfcmVzZXQocyk7CiAgICAgICAgIHMt PmNvbmZpZ1swXSA9IHZhbHVlICYgMHgxZDsKZGlmZiAtLWdpdCBhL2h3L2kyYy9vbWFwX2kyYy5j IGIvaHcvaTJjL29tYXBfaTJjLmMKaW5kZXggMTIyNjRlZTBmNS4uMjZlM2U1ZWJmNiAxMDA2NDQK LS0tIGEvaHcvaTJjL29tYXBfaTJjLmMKKysrIGIvaHcvaTJjL29tYXBfaTJjLmMKQEAgLTM0MSwx MiArMzQxLDEyIEBAIHN0YXRpYyB2b2lkIG9tYXBfaTJjX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdh ZGRyIGFkZHIsCiAgICAgICAgIH0KICAgICAgICAgaWYgKCh2YWx1ZSAmICgxIDw8IDE1KSkgJiYg ISh2YWx1ZSAmICgxIDw8IDEwKSkpIHsJLyogTVNUICovCiAgICAgICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIiVzOiBJXjJDIHNsYXZlIG1vZGUgbm90IHN1cHBvcnRlZFxuIiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF9fZnVuY19fKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlm ICgodmFsdWUgJiAoMSA8PCAxNSkpICYmIHZhbHVlICYgKDEgPDwgOCkpIHsJCS8qIFhBICovCiAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAxMC1iaXQgYWRkcmVzc2luZyBtb2RlIG5v dCBzdXBwb3J0ZWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9f KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoKHZhbHVlICYgKDEgPDwgMTUpKSAmJiB2YWx1 ZSAmICgxIDw8IDApKSB7CQkvKiBTVFQgKi8KQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgdm9p ZCBvbWFwX2kyY193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICAgICAg ICAgIG9tYXBfaTJjX2ludGVycnVwdHNfdXBkYXRlKHMpOwogICAgICAgICAgICAgfQogICAgICAg ICBpZiAodmFsdWUgJiAoMSA8PCAxNSkpCQkJCQkvKiBTVF9FTiAqLwotICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICIlczogU3lzdGVtIFRlc3Qgbm90IHN1cHBvcnRlZFxuIiwgX19GVU5DVElP Tl9fKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IFN5c3RlbSBUZXN0IG5vdCBz dXBwb3J0ZWRcbiIsIF9fZnVuY19fKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0Ogpk aWZmIC0tZ2l0IGEvaHcvaWRlL2FoY2kuYyBiL2h3L2lkZS9haGNpLmMKaW5kZXggMzczMzExZjkx YS4uYjcyZGNiY2MzMiAxMDA2NDQKLS0tIGEvaHcvaWRlL2FoY2kuYworKysgYi9ody9pZGUvYWhj aS5jCkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX25jcV9jb21tYW5k KEFIQ0lTdGF0ZSAqcywgaW50IHBvcnQsIHVpbnQ4X3QgKmNtZF9maXMsCiAgICAgZ19hc3NlcnQo aXNfbmNxKG5jcV9maXMtPmNvbW1hbmQpKTsKICAgICBpZiAobmNxX3Rmcy0+dXNlZCkgewogICAg ICAgICAvKiBlcnJvciAtIGFscmVhZHkgaW4gdXNlICovCi0gICAgICAgIGZwcmludGYoc3RkZXJy LCAiJXM6IHRhZyAlZCBhbHJlYWR5IHVzZWRcbiIsIF9fRlVOQ1RJT05fXywgdGFnKTsKKyAgICAg ICAgZnByaW50ZihzdGRlcnIsICIlczogdGFnICVkIGFscmVhZHkgdXNlZFxuIiwgX19mdW5jX18s IHRhZyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2h3L2lkZS9taWNy b2RyaXZlLmMgYi9ody9pZGUvbWljcm9kcml2ZS5jCmluZGV4IDE3OTE3YzBiMzAuLjMwOTAyNTQ3 ODMgMTAwNjQ0Ci0tLSBhL2h3L2lkZS9taWNyb2RyaXZlLmMKKysrIGIvaHcvaWRlL21pY3JvZHJp dmUuYwpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyB1aW50OF90IG1kX2F0dHJfcmVhZChQQ01D SUFDYXJkU3RhdGUgKmNhcmQsIHVpbnQzMl90IGF0KQogICAgICAgICByZXR1cm4gMHgwMDsKICNp ZmRlZiBWRVJCT1NFCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcHJpbnRmKCIlczogQmFkIGF0dHJp YnV0ZSBzcGFjZSByZWdpc3RlciAlMDJ4XG4iLCBfX0ZVTkNUSU9OX18sIGF0KTsKKyAgICAgICAg cHJpbnRmKCIlczogQmFkIGF0dHJpYnV0ZSBzcGFjZSByZWdpc3RlciAlMDJ4XG4iLCBfX2Z1bmNf XywgYXQpOwogI2VuZGlmCiAgICAgfQogCkBAIC0xOTMsNyArMTkzLDcgQEAgc3RhdGljIHZvaWQg bWRfYXR0cl93cml0ZShQQ01DSUFDYXJkU3RhdGUgKmNhcmQsIHVpbnQzMl90IGF0LCB1aW50OF90 IHZhbHVlKQogICAgIGNhc2UgMHgwNjoJLyogU29ja2V0IGFuZCBDb3B5IFJlZ2lzdGVyICovCiAg ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHByaW50ZigiJXM6IEJhZCBhdHRy aWJ1dGUgc3BhY2UgcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBhdCk7CisgICAgICAg IHByaW50ZigiJXM6IEJhZCBhdHRyaWJ1dGUgc3BhY2UgcmVnaXN0ZXIgJTAyeFxuIiwgX19mdW5j X18sIGF0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2h3L2lucHV0L2xtODMyeC5jIGIvaHcv aW5wdXQvbG04MzJ4LmMKaW5kZXggMjM0MDUyM2RhMC4uZDM5OTUzMTI2YiAxMDA2NDQKLS0tIGEv aHcvaW5wdXQvbG04MzJ4LmMKKysrIGIvaHcvaW5wdXQvbG04MzJ4LmMKQEAgLTIzOSw3ICsyMzks NyBAQCBzdGF0aWMgdWludDhfdCBsbV9rYmRfcmVhZChMTTgyM0tiZFN0YXRlICpzLCBpbnQgcmVn LCBpbnQgYnl0ZSkKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGxtX2tiZF9lcnJvcihzLCBFUlJf Q01EVU5LKTsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogdW5rbm93biBjb21tYW5kICUw MnhcbiIsIF9fRlVOQ1RJT05fXywgcmVnKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczog dW5rbm93biBjb21tYW5kICUwMnhcbiIsIF9fZnVuY19fLCByZWcpOwogICAgICAgICByZXR1cm4g MHgwMDsKICAgICB9CiAKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMgdm9pZCBsbV9rYmRfd3Jp dGUoTE04MjNLYmRTdGF0ZSAqcywgaW50IHJlZywgaW50IGJ5dGUsIHVpbnQ4X3QgdmFsdWUpCiAg ICAgICAgIGlmICgodmFsdWUgJiAzKSAmJiAodmFsdWUgJiAzKSAhPSAzKSB7CiAgICAgICAgICAg ICBsbV9rYmRfZXJyb3IocywgRVJSX0JBRFBBUik7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy ciwgIiVzOiBpbnZhbGlkIGNsb2NrIHNldHRpbmcgaW4gUkNQV01cbiIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2Z1bmNfXyk7CiAgICAgICAgIH0KICAgICAgICAgLyogVE9ETzogVmFsaWRhdGUgdGhhdCB0 aGUgY29tbWFuZCBpcyBvbmx5IGlzc3VlZCBvbmNlICovCiAgICAgICAgIGJyZWFrOwpAQCAtMzc4 LDcgKzM3OCw3IEBAIHN0YXRpYyB2b2lkIGxtX2tiZF93cml0ZShMTTgyM0tiZFN0YXRlICpzLCBp bnQgcmVnLCBpbnQgYnl0ZSwgdWludDhfdCB2YWx1ZSkKICAgICAgICAgYnJlYWs7CiAgICAgZGVm YXVsdDoKICAgICAgICAgbG1fa2JkX2Vycm9yKHMsIEVSUl9DTURVTkspOwotICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIiVzOiB1bmtub3duIGNvbW1hbmQgJTAyeFxuIiwgX19GVU5DVElPTl9fLCBy ZWcpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmtub3duIGNvbW1hbmQgJTAyeFxu IiwgX19mdW5jX18sIHJlZyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh L2h3L2lucHV0L3B4YTJ4eF9rZXlwYWQuYyBiL2h3L2lucHV0L3B4YTJ4eF9rZXlwYWQuYwppbmRl eCAyYjcwYmJiOTVjLi45M2RiOWVkMjViIDEwMDY0NAotLS0gYS9ody9pbnB1dC9weGEyeHhfa2V5 cGFkLmMKKysrIGIvaHcvaW5wdXQvcHhhMnh4X2tleXBhZC5jCkBAIC0yMzEsNyArMjMxLDcgQEAg c3RhdGljIHVpbnQ2NF90IHB4YTJ4eF9rZXlwYWRfcmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBv ZmZzZXQsCiAgICAgICAgIHJldHVybiBzLT5rcGtkaTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm YXVsdDoKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBf X0ZVTkNUSU9OX18sIG9mZnNldCk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNldCAi IFJFR19GTVQgIlxuIiwgX19mdW5jX18sIG9mZnNldCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7 CkBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X2tleXBhZF93cml0ZSh2b2lk ICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsCiAgICAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoK LSAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNU SU9OX18sIG9mZnNldCk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNldCAiIFJFR19G TVQgIlxuIiwgX19mdW5jX18sIG9mZnNldCk7CiAgICAgfQogfQogCkBAIC0zMjYsNyArMzI2LDcg QEAgdm9pZCBweGEyN3hfcmVnaXN0ZXJfa2V5cGFkKFBYQTJ4eEtleVBhZFN0YXRlICprcCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qga2V5bWFwICptYXAsIGludCBz aXplKQogewogICAgIGlmKCFtYXAgfHwgc2l6ZSA8IDB4ODApIHsKLSAgICAgICAgZnByaW50Zihz dGRlcnIsICIlcyAtIE5vIFBYQSBrZXlwYWQgbWFwIGRlZmluZWRcbiIsIF9fRlVOQ1RJT05fXyk7 CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgLSBObyBQWEEga2V5cGFkIG1hcCBkZWZpbmVk XG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGV4aXQoLTEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv aHcvaW5wdXQvdHNjMjAwNS5jIGIvaHcvaW5wdXQvdHNjMjAwNS5jCmluZGV4IGViNTMyMGFmNDAu Ljc5OTA5NTRiNmMgMTAwNjQ0Ci0tLSBhL2h3L2lucHV0L3RzYzIwMDUuYworKysgYi9ody9pbnB1 dC90c2MyMDA1LmMKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdGF0aWMgdm9pZCB0c2MyMDA1X3dyaXRl KFRTQzIwMDVTdGF0ZSAqcywgaW50IHJlZywgdWludDE2X3QgZGF0YSkKICAgICAgICAgaWYgKHMt PmVuYWJsZWQgIT0gIShkYXRhICYgMHg0MDAwKSkgewogICAgICAgICAgICAgcy0+ZW5hYmxlZCA9 ICEoZGF0YSAmIDB4NDAwMCk7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB0b3Vj aHNjcmVlbiBzZW5zZSAlc2FibGVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f RlVOQ1RJT05fXywgcy0+ZW5hYmxlZCA/ICJlbiIgOiAiZGlzIik7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgX19mdW5jX18sIHMtPmVuYWJsZWQgPyAiZW4iIDogImRpcyIpOwogICAgICAg ICAgICAgaWYgKHMtPmJ1c3kgJiYgIXMtPmVuYWJsZWQpCiAgICAgICAgICAgICAgICAgdGltZXJf ZGVsKHMtPnRpbWVyKTsKICAgICAgICAgICAgIHMtPmJ1c3kgPSBzLT5idXN5ICYmIHMtPmVuYWJs ZWQ7CkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIHZvaWQgdHNjMjAwNV93cml0ZShUU0MyMDA1 U3RhdGUgKnMsIGludCByZWcsIHVpbnQxNl90IGRhdGEpCiAgICAgICAgIHMtPnRpbWluZ1swXSA9 IGRhdGEgJiAweDFmZmY7CiAgICAgICAgIGlmICgocy0+dGltaW5nWzBdID4+IDExKSA9PSAzKQog ICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaWxsZWdhbCBjb252ZXJzaW9uIGNsb2Nr IHNldHRpbmdcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXyk7CiAgICAgICAgIGJyZWFrOwog ICAgIGNhc2UgMHhkOgkvKiBDRlIxICovCiAgICAgICAgIHMtPnRpbWluZ1sxXSA9IGRhdGEgJiAw eGYwNzsKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCB0c2MyMDA1X3dyaXRlKFRTQzIw MDVTdGF0ZSAqcywgaW50IHJlZywgdWludDE2X3QgZGF0YSkKIAogICAgIGRlZmF1bHQ6CiAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IHdyaXRlIGludG8gcmVhZC1vbmx5IHJlZ2lzdGVyICV4 XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCByZWcpOworICAgICAg ICAgICAgICAgICAgICAgICAgX19mdW5jX18sIHJlZyk7CiAgICAgfQogfQogCkBAIC0zMzgsNyAr MzM4LDcgQEAgc3RhdGljIHVpbnQ4X3QgdHNjMjAwNV90eHJ4X3dvcmQodm9pZCAqb3BhcXVlLCB1 aW50OF90IHZhbHVlKQogICAgICAgICAgICAgICAgIGlmIChzLT5lbmFibGVkICE9ICEodmFsdWUg JiAxKSkgewogICAgICAgICAgICAgICAgICAgICBzLT5lbmFibGVkID0gISh2YWx1ZSAmIDEpOwog ICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB0b3VjaHNjcmVlbiBzZW5z ZSAlc2FibGVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5D VElPTl9fLCBzLT5lbmFibGVkID8gImVuIiA6ICJkaXMiKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9fZnVuY19fLCBzLT5lbmFibGVkID8gImVuIiA6ICJkaXMiKTsKICAg ICAgICAgICAgICAgICAgICAgaWYgKHMtPmJ1c3kgJiYgIXMtPmVuYWJsZWQpCiAgICAgICAgICAg ICAgICAgICAgICAgICB0aW1lcl9kZWwocy0+dGltZXIpOwogICAgICAgICAgICAgICAgICAgICBz LT5idXN5ID0gcy0+YnVzeSAmJiBzLT5lbmFibGVkOwpkaWZmIC0tZ2l0IGEvaHcvaW5wdXQvdHNj MjEweC5jIGIvaHcvaW5wdXQvdHNjMjEweC5jCmluZGV4IDc1YWM4YzJhYjUuLjFjYWQ1N2Y2NDQg MTAwNjQ0Ci0tLSBhL2h3L2lucHV0L3RzYzIxMHguYworKysgYi9ody9pbnB1dC90c2MyMTB4LmMK QEAgLTI4Nyw3ICsyODcsNyBAQCBzdGF0aWMgdm9pZCB0c2MyMTAyX2F1ZGlvX3JhdGVfdXBkYXRl KFRTQzIxMHhTdGF0ZSAqcykKICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGUtPmZzcmVmID09 ICgocy0+YXVkaW9fY3RybDMgPj4gMTMpICYgMSkpLyogUkVGRlMgKi8KICAgICAgICAgICAgIGJy ZWFrOwogICAgIGlmICghcmF0ZS0+cmF0ZSkgewotICAgICAgICBwcmludGYoIiVzOiB1bmtub3du IHNhbXBsaW5nIHJhdGUgY29uZmlndXJlZFxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgcHJp bnRmKCIlczogdW5rbm93biBzYW1wbGluZyByYXRlIGNvbmZpZ3VyZWRcbiIsIF9fZnVuY19fKTsK ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTEzLDcgKzkxMyw3IEBAIHVpbnQzMl90IHRz YzIxMHhfdHhyeCh2b2lkICpvcGFxdWUsIHVpbnQzMl90IHZhbHVlLCBpbnQgbGVuKQogICAgIHVp bnQzMl90IHJldCA9IDA7CiAKICAgICBpZiAobGVuICE9IDE2KQotICAgICAgICBod19lcnJvcigi JXM6IEZJWE1FOiBiYWQgU1BJIHdvcmQgd2lkdGggJWlcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsK KyAgICAgICAgaHdfZXJyb3IoIiVzOiBGSVhNRTogYmFkIFNQSSB3b3JkIHdpZHRoICVpXG4iLCBf X2Z1bmNfXywgbGVuKTsKIAogICAgIC8qIFRPRE86IHNlcXVlbnRpYWwgcmVhZHMgZXRjIC0gaG93 IGRvIHdlIG1ha2Ugc3VyZSB0aGUgaG9zdCBkb2Vzbid0CiAgICAgICogdW5pbnRlbnRpb25hbGx5 IHJlYWQgb3V0IGEgY29udmVyc2lvbiByZXN1bHQgZnJvbSBhIHJlZ2lzdGVyIHdoaWxlCmRpZmYg LS1naXQgYS9ody9pbnRjL29tYXBfaW50Yy5jIGIvaHcvaW50Yy9vbWFwX2ludGMuYwppbmRleCBj Y2RkYTg5ZGFiLi42ODQ0YzFhYTgzIDEwMDY0NAotLS0gYS9ody9pbnRjL29tYXBfaW50Yy5jCisr KyBiL2h3L2ludGMvb21hcF9pbnRjLmMKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0aWMgdm9pZCBv bWFwMl9pbnRoX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgICAqIGZv ciBldmVyeSByZWdpc3Rlciwgc2VlIENoYXB0ZXIgMyBhbmQgNCBmb3IgcHJpdmlsZWdlZCBtb2Rl LiAgKi8KICAgICAgICAgaWYgKHZhbHVlICYgMSkKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJy LCAiJXM6IHByb3RlY3Rpb24gbW9kZSBlbmFibGUgYXR0ZW1wdFxuIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfX0ZVTkNUSU9OX18pOworICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9fZnVuY19fKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSAweDUwOgkvKiBJTlRDX0lE TEUgKi8KZGlmZiAtLWdpdCBhL2h3L2lzYS92dDgyYzY4Ni5jIGIvaHcvaXNhL3Z0ODJjNjg2LmMK aW5kZXggYzEyOTk4NWUyYS4uMWM3MjhjZDI0YiAxMDA2NDQKLS0tIGEvaHcvaXNhL3Z0ODJjNjg2 LmMKKysrIGIvaHcvaXNhL3Z0ODJjNjg2LmMKQEAgLTMwLDcgKzMwLDcgQEAKIC8vI2RlZmluZSBE RUJVR19WVDgyQzY4NkIKIAogI2lmZGVmIERFQlVHX1ZUODJDNjg2QgotI2RlZmluZSBEUFJJTlRG KGZtdCwgLi4uKSBmcHJpbnRmKHN0ZGVyciwgIiVzOiAiIGZtdCwgX19GVU5DVElPTl9fLCAjI19f VkFfQVJHU19fKQorI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBmcHJpbnRmKHN0ZGVyciwgIiVz OiAiIGZtdCwgX19mdW5jX18sICMjX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmluZSBEUFJJTlRG KGZtdCwgLi4uKQogI2VuZGlmCmRpZmYgLS1naXQgYS9ody9taXBzL2d0NjR4eHhfcGNpLmMgYi9o dy9taXBzL2d0NjR4eHhfcGNpLmMKaW5kZXggNWE5ZGFkOWFhZS4uZTEyMzM2ZDE0YSAxMDA2NDQK LS0tIGEvaHcvbWlwcy9ndDY0eHh4X3BjaS5jCisrKyBiL2h3L21pcHMvZ3Q2NHh4eF9wY2kuYwpA QCAtMzMsNyArMzMsNyBAQAogLy8jZGVmaW5lIERFQlVHCiAKICNpZmRlZiBERUJVRwotI2RlZmlu ZSBEUFJJTlRGKGZtdCwgLi4uKSBmcHJpbnRmKHN0ZGVyciwgIiVzOiAiIGZtdCwgX19GVU5DVElP Tl9fLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBmcHJpbnRmKHN0 ZGVyciwgIiVzOiAiIGZtdCwgX19mdW5jX18sICMjX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmlu ZSBEUFJJTlRGKGZtdCwgLi4uKQogI2VuZGlmCmRpZmYgLS1naXQgYS9ody9taXNjL2NidXMuYyBi L2h3L21pc2MvY2J1cy5jCmluZGV4IDY3NzI3NGNlM2UuLjI1ZTMzN2VhNzcgMTAwNjQ0Ci0tLSBh L2h3L21pc2MvY2J1cy5jCisrKyBiL2h3L21pc2MvY2J1cy5jCkBAIC02Miw3ICs2Miw3IEBAIHN0 YXRpYyB2b2lkIGNidXNfaW8oQ0J1c1ByaXYgKnMpCiAgICAgICAgIHMtPnNsYXZlW3MtPmFkZHJd LT5pbyhzLT5zbGF2ZVtzLT5hZGRyXS0+b3BhcXVlLAogICAgICAgICAgICAgICAgICAgICAgICAg cy0+cncsIHMtPnJlZywgJnMtPnZhbCk7CiAgICAgZWxzZQotICAgICAgICBod19lcnJvcigiJXM6 IGJhZCBzbGF2ZSBhZGRyZXNzICVpXG4iLCBfX0ZVTkNUSU9OX18sIHMtPmFkZHIpOworICAgICAg ICBod19lcnJvcigiJXM6IGJhZCBzbGF2ZSBhZGRyZXNzICVpXG4iLCBfX2Z1bmNfXywgcy0+YWRk cik7CiB9CiAKIHN0YXRpYyB2b2lkIGNidXNfY3ljbGUoQ0J1c1ByaXYgKnMpCkBAIC0yOTksNyAr Mjk5LDcgQEAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZXR1X3JlYWQoQ0J1c1JldHUgKnMsIGlu dCByZWcpCiAgICAgICAgIHJldHVybiAweDAwMDA7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBo d19lcnJvcigiJXM6IGJhZCByZWdpc3RlciAlMDJ4XG4iLCBfX0ZVTkNUSU9OX18sIHJlZyk7Cisg ICAgICAgIGh3X2Vycm9yKCIlczogYmFkIHJlZ2lzdGVyICUwMnhcbiIsIF9fZnVuY19fLCByZWcp OwogICAgIH0KIH0KIApAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXR1 X3dyaXRlKENCdXNSZXR1ICpzLCBpbnQgcmVnLCB1aW50MTZfdCB2YWwpCiAgICAgICAgIGJyZWFr OwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgcmVnaXN0ZXIgJTAy eFxuIiwgX19GVU5DVElPTl9fLCByZWcpOworICAgICAgICBod19lcnJvcigiJXM6IGJhZCByZWdp c3RlciAlMDJ4XG4iLCBfX2Z1bmNfXywgcmVnKTsKICAgICB9CiB9CiAKQEAgLTUzOCw3ICs1Mzgs NyBAQCBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHRhaHZvX3JlYWQoQ0J1c1RhaHZvICpzLCBpbnQg cmVnKQogICAgICAgICByZXR1cm4gMHgwMDAwOwogCiAgICAgZGVmYXVsdDoKLSAgICAgICAgaHdf ZXJyb3IoIiVzOiBiYWQgcmVnaXN0ZXIgJTAyeFxuIiwgX19GVU5DVElPTl9fLCByZWcpOworICAg ICAgICBod19lcnJvcigiJXM6IGJhZCByZWdpc3RlciAlMDJ4XG4iLCBfX2Z1bmNfXywgcmVnKTsK ICAgICB9CiB9CiAKQEAgLTU2Nyw3ICs1NjcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGFodm9f d3JpdGUoQ0J1c1RhaHZvICpzLCBpbnQgcmVnLCB1aW50MTZfdCB2YWwpCiAgICAgICAgIGlmIChz LT5iYWNrbGlnaHQgIT0gKHZhbCAmIDB4N2YpKSB7CiAgICAgICAgICAgICBzLT5iYWNrbGlnaHQg PSB2YWwgJiAweDdmOwogICAgICAgICAgICAgcHJpbnRmKCIlczogTENEIGJhY2tsaWdodCBub3cg YXQgJWkgLyAxMjdcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9f LCBzLT5iYWNrbGlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBz LT5iYWNrbGlnaHQpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC01ODgsNyArNTg4 LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHRhaHZvX3dyaXRlKENCdXNUYWh2byAqcywgaW50IHJl ZywgdWludDE2X3QgdmFsKQogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAg IGh3X2Vycm9yKCIlczogYmFkIHJlZ2lzdGVyICUwMnhcbiIsIF9fRlVOQ1RJT05fXywgcmVnKTsK KyAgICAgICAgaHdfZXJyb3IoIiVzOiBiYWQgcmVnaXN0ZXIgJTAyeFxuIiwgX19mdW5jX18sIHJl Zyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9ody9taXNjL29tYXBfY2xrLmMgYi9ody9taXNj L29tYXBfY2xrLmMKaW5kZXggMTkxNTFkMDdkNi4uOWVhMTQxODZkNCAxMDA2NDQKLS0tIGEvaHcv bWlzYy9vbWFwX2Nsay5jCisrKyBiL2h3L21pc2Mvb21hcF9jbGsuYwpAQCAtMTEwOSw3ICsxMTA5 LDcgQEAgc3RydWN0IGNsayAqb21hcF9maW5kY2xrKHN0cnVjdCBvbWFwX21wdV9zdGF0ZV9zICpt cHUsIGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgZm9yIChpID0gbXB1LT5jbGtzOyBpLT5uYW1lOyBp ICsrKQogICAgICAgICBpZiAoIXN0cmNtcChpLT5uYW1lLCBuYW1lKSB8fCAoaS0+YWxpYXMgJiYg IXN0cmNtcChpLT5hbGlhcywgbmFtZSkpKQogICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgaHdf ZXJyb3IoIiVzOiAlcyBub3QgZm91bmRcbiIsIF9fRlVOQ1RJT05fXywgbmFtZSk7CisgICAgaHdf ZXJyb3IoIiVzOiAlcyBub3QgZm91bmRcbiIsIF9fZnVuY19fLCBuYW1lKTsKIH0KIAogdm9pZCBv bWFwX2Nsa19nZXQoc3RydWN0IGNsayAqY2xrKQpAQCAtMTEyMCw3ICsxMTIwLDcgQEAgdm9pZCBv bWFwX2Nsa19nZXQoc3RydWN0IGNsayAqY2xrKQogdm9pZCBvbWFwX2Nsa19wdXQoc3RydWN0IGNs ayAqY2xrKQogewogICAgIGlmICghKGNsay0+dXNlY291bnQgLS0pKQotICAgICAgICBod19lcnJv cigiJXM6ICVzIGlzIG5vdCBpbiB1c2VcbiIsIF9fRlVOQ1RJT05fXywgY2xrLT5uYW1lKTsKKyAg ICAgICAgaHdfZXJyb3IoIiVzOiAlcyBpcyBub3QgaW4gdXNlXG4iLCBfX2Z1bmNfXywgY2xrLT5u YW1lKTsKIH0KIAogc3RhdGljIHZvaWQgb21hcF9jbGtfdXBkYXRlKHN0cnVjdCBjbGsgKmNsaykK ZGlmZiAtLWdpdCBhL2h3L21pc2Mvb21hcF9ncG1jLmMgYi9ody9taXNjL29tYXBfZ3BtYy5jCmlu ZGV4IDY3ZDhlMmYwMjMuLjg0ZjllNGM2MTIgMTAwNjQ0Ci0tLSBhL2h3L21pc2Mvb21hcF9ncG1j LmMKKysrIGIvaHcvbWlzYy9vbWFwX2dwbWMuYwpAQCAtNjQzLDcgKzY0Myw3IEBAIHN0YXRpYyB2 b2lkIG9tYXBfZ3BtY193cml0ZSh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgIGNhc2Ug MHgwMTA6CS8qIEdQTUNfU1lTQ09ORklHICovCiAgICAgICAgIGlmICgodmFsdWUgPj4gMykgPT0g MHgzKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogYmFkIFNEUkFNIGlkbGUgbW9k ZSAlIlBSSWk2NCJcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9f LCB2YWx1ZSA+PiAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgdmFs dWUgPj4gMyk7CiAgICAgICAgIGlmICh2YWx1ZSAmIDIpCiAgICAgICAgICAgICBvbWFwX2dwbWNf cmVzZXQocyk7CiAgICAgICAgIHMtPnN5c2NvbmZpZyA9IHZhbHVlICYgMHgxOTsKQEAgLTgwNiw3 ICs4MDYsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX2dwbWNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2Fk ZHIgYWRkciwKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAweDIzMDoJLyogR1BNQ19URVNUTU9E RV9DVFJMICovCiAgICAgICAgIGlmICh2YWx1ZSAmIDcpCi0gICAgICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIiVzOiB0ZXN0IG1vZGUgZW5hYmxlIGF0dGVtcHRcbiIsIF9fRlVOQ1RJT05fXyk7Cisg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB0ZXN0IG1vZGUgZW5hYmxlIGF0dGVtcHRc biIsIF9fZnVuY19fKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpAQCAtODY0LDcg Kzg2NCw3IEBAIHZvaWQgb21hcF9ncG1jX2F0dGFjaChzdHJ1Y3Qgb21hcF9ncG1jX3MgKnMsIGlu dCBjcywgTWVtb3J5UmVnaW9uICppb21lbSkKICAgICBhc3NlcnQoaW9tZW0pOwogCiAgICAgaWYg KGNzIDwgMCB8fCBjcyA+PSA4KSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJhZCBj aGlwLXNlbGVjdCAlaVxuIiwgX19GVU5DVElPTl9fLCBjcyk7CisgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiJXM6IGJhZCBjaGlwLXNlbGVjdCAlaVxuIiwgX19mdW5jX18sIGNzKTsKICAgICAgICAg ZXhpdCgtMSk7CiAgICAgfQogICAgIGYgPSAmcy0+Y3NfZmlsZVtjc107CmRpZmYgLS1naXQgYS9o dy9taXNjL29tYXBfbDQuYyBiL2h3L21pc2Mvb21hcF9sNC5jCmluZGV4IDg4YzUzM2EwZmUuLjk2 ZmMwNTdiNGUgMTAwNjQ0Ci0tLSBhL2h3L21pc2Mvb21hcF9sNC5jCisrKyBiL2h3L21pc2Mvb21h cF9sNC5jCkBAIC0xMjYsNyArMTI2LDcgQEAgc3RydWN0IG9tYXBfdGFyZ2V0X2FnZW50X3MgKm9t YXBfbDR0YV9nZXQoc3RydWN0IG9tYXBfbDRfcyAqYnVzLAogICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIH0KICAgICBpZiAoIXRhKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGJh ZCB0YXJnZXQgYWdlbnQgKCVpKVxuIiwgX19GVU5DVElPTl9fLCBjcyk7CisgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiJXM6IGJhZCB0YXJnZXQgYWdlbnQgKCVpKVxuIiwgX19mdW5jX18sIGNzKTsK ICAgICAgICAgZXhpdCgtMSk7CiAgICAgfQogCkBAIC0xNTEsNyArMTUxLDcgQEAgaHdhZGRyIG9t YXBfbDRfYXR0YWNoKHN0cnVjdCBvbWFwX3RhcmdldF9hZ2VudF9zICp0YSwKICAgICBod2FkZHIg YmFzZTsKIAogICAgIGlmIChyZWdpb24gPCAwIHx8IHJlZ2lvbiA+PSB0YS0+cmVnaW9ucykgewot ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBiYWQgaW8gcmVnaW9uICglaSlcbiIsIF9fRlVO Q1RJT05fXywgcmVnaW9uKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogYmFkIGlvIHJl Z2lvbiAoJWkpXG4iLCBfX2Z1bmNfXywgcmVnaW9uKTsKICAgICAgICAgZXhpdCgtMSk7CiAgICAg fQogCmRpZmYgLS1naXQgYS9ody9taXNjL29tYXBfc2RyYy5jIGIvaHcvbWlzYy9vbWFwX3NkcmMu YwppbmRleCBkZmYzN2VjYWY5Li43YjM4YzU1NjhjIDEwMDY0NAotLS0gYS9ody9taXNjL29tYXBf c2RyYy5jCisrKyBiL2h3L21pc2Mvb21hcF9zZHJjLmMKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0 aWMgdm9pZCBvbWFwX3NkcmNfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICBj YXNlIDB4MTA6CS8qIFNEUkNfU1lTQ09ORklHICovCiAgICAgICAgIGlmICgodmFsdWUgPj4gMykg IT0gMHgyKQogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogYmFkIFNEUkFNIGlkbGUg bW9kZSAlaVxuIiwKLSAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCAodW5zaWduZWQp dmFsdWUgPj4gMyk7CisgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCAodW5zaWduZWQpdmFs dWUgPj4gMyk7CiAgICAgICAgIGlmICh2YWx1ZSAmIDIpCiAgICAgICAgICAgICBvbWFwX3NkcmNf cmVzZXQocyk7CiAgICAgICAgIHMtPmNvbmZpZyA9IHZhbHVlICYgMHgxODsKZGlmZiAtLWdpdCBh L2h3L21pc2Mvb21hcF90YXAuYyBiL2h3L21pc2Mvb21hcF90YXAuYwppbmRleCBlNmVhOGVlMjM1 Li4zZjU5NWU4ZGY3IDEwMDY0NAotLS0gYS9ody9taXNjL29tYXBfdGFwLmMKKysrIGIvaHcvbWlz Yy9vbWFwX3RhcC5jCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyB1aW50NjRfdCBvbWFwX3RhcF9y ZWFkKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIGNhc2Ugb21hcDM0MzA6CiAg ICAgICAgICAgICByZXR1cm4gMHgxYjdhZTAyZjsJLyogRVMgMiAqLwogICAgICAgICBkZWZhdWx0 OgotICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgbXB1IG1vZGVsXG4iLCBfX0ZVTkNUSU9O X18pOworICAgICAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgbXB1IG1vZGVsXG4iLCBfX2Z1bmNf Xyk7CiAgICAgICAgIH0KIAogICAgIGNhc2UgMHgyMDg6CS8qIFBST0RVQ1RJT05fSURfcmVnIGZv ciBPTUFQMiAqLwpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgdWludDY0X3Qgb21hcF90YXBfcmVh ZCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyLAogICAgICAgICBjYXNlIG9tYXAzNDMwOgogICAg ICAgICAgICAgcmV0dXJuIDB4MDAwMDAwZjA7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg ICBod19lcnJvcigiJXM6IEJhZCBtcHUgbW9kZWxcbiIsIF9fRlVOQ1RJT05fXyk7CisgICAgICAg ICAgICBod19lcnJvcigiJXM6IEJhZCBtcHUgbW9kZWxcbiIsIF9fZnVuY19fKTsKICAgICAgICAg fQogCiAgICAgY2FzZSAweDIwYzoKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHVpbnQ2NF90IG9t YXBfdGFwX3JlYWQodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgY2FzZSBvbWFw MzQzMDoKICAgICAgICAgICAgIHJldHVybiAweGNhZmViN2FlOwkvKiBFUyAyICovCiAgICAgICAg IGRlZmF1bHQ6Ci0gICAgICAgICAgICBod19lcnJvcigiJXM6IEJhZCBtcHUgbW9kZWxcbiIsIF9f RlVOQ1RJT05fXyk7CisgICAgICAgICAgICBod19lcnJvcigiJXM6IEJhZCBtcHUgbW9kZWxcbiIs IF9fZnVuY19fKTsKICAgICAgICAgfQogCiAgICAgY2FzZSAweDIxODoJLyogRElFX0lEX3JlZyAq LwpkaWZmIC0tZ2l0IGEvaHcvbWlzYy90bXAxMDUuYyBiL2h3L21pc2MvdG1wMTA1LmMKaW5kZXgg MDRlODM3ODdkNC4uOWUyMmQ2NGUzNiAxMDA2NDQKLS0tIGEvaHcvbWlzYy90bXAxMDUuYworKysg Yi9ody9taXNjL3RtcDEwNS5jCkBAIC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgdG1wMTA1 X3dyaXRlKFRNUDEwNVN0YXRlICpzKQogCiAgICAgY2FzZSBUTVAxMDVfUkVHX0NPTkZJRzoKICAg ICAgICAgaWYgKHMtPmJ1ZlswXSAmIH5zLT5jb25maWcgJiAoMSA8PCAwKSkJCQkvKiBTRCAqLwot ICAgICAgICAgICAgcHJpbnRmKCIlczogVE1QMTA1IHNodXRkb3duXG4iLCBfX0ZVTkNUSU9OX18p OworICAgICAgICAgICAgcHJpbnRmKCIlczogVE1QMTA1IHNodXRkb3duXG4iLCBfX2Z1bmNfXyk7 CiAgICAgICAgIHMtPmNvbmZpZyA9IHMtPmJ1ZlswXTsKICAgICAgICAgcy0+ZmF1bHRzID0gdG1w MTA1X2ZhdWx0cVsocy0+Y29uZmlnID4+IDMpICYgM107CS8qIEYgKi8KICAgICAgICAgdG1wMTA1 X2FsYXJtX3VwZGF0ZShzKTsKZGlmZiAtLWdpdCBhL2h3L3BjaS1ob3N0L2Jvbml0by5jIGIvaHcv cGNpLWhvc3QvYm9uaXRvLmMKaW5kZXggOWY2MWUyN2VkYy4uMmViZWFiNWQ5MCAxMDA2NDQKLS0t IGEvaHcvcGNpLWhvc3QvYm9uaXRvLmMKKysrIGIvaHcvcGNpLWhvc3QvYm9uaXRvLmMKQEAgLTUw LDcgKzUwLDcgQEAKIC8vI2RlZmluZSBERUJVR19CT05JVE8KIAogI2lmZGVmIERFQlVHX0JPTklU TwotI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBmcHJpbnRmKHN0ZGVyciwgIiVzOiAiIGZtdCwg X19GVU5DVElPTl9fLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBm cHJpbnRmKHN0ZGVyciwgIiVzOiAiIGZtdCwgX19mdW5jX18sICMjX19WQV9BUkdTX18pCiAjZWxz ZQogI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKQogI2VuZGlmCmRpZmYgLS1naXQgYS9ody9zZC9w eGEyeHhfbW1jaS5jIGIvaHcvc2QvcHhhMnh4X21tY2kuYwppbmRleCAzZGVjY2YwMmM5Li4wZDRi ODhjNjA5IDEwMDY0NAotLS0gYS9ody9zZC9weGEyeHhfbW1jaS5jCisrKyBiL2h3L3NkL3B4YTJ4 eF9tbWNpLmMKQEAgLTMzMCw3ICszMzAsNyBAQCBzdGF0aWMgdWludDY0X3QgcHhhMnh4X21tY2lf cmVhZCh2b2lkICpvcGFxdWUsIGh3YWRkciBvZmZzZXQsIHVuc2lnbmVkIHNpemUpCiAgICAgY2Fz ZSBNTUNfQkxLU19SRU06CiAgICAgICAgIHJldHVybiBzLT5udW1ibGs7CiAgICAgZGVmYXVsdDoK LSAgICAgICAgaHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX0ZVTkNU SU9OX18sIG9mZnNldCk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIG9mZnNldCAiIFJFR19G TVQgIlxuIiwgX19mdW5jX18sIG9mZnNldCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0z NjksNyArMzY5LDcgQEAgc3RhdGljIHZvaWQgcHhhMnh4X21tY2lfd3JpdGUodm9pZCAqb3BhcXVl LAogICAgIGNhc2UgTU1DX1NQSToKICAgICAgICAgcy0+c3BpID0gdmFsdWUgJiAweGY7CiAgICAg ICAgIGlmICh2YWx1ZSAmIFNQSV9TUElfTU9ERSkKLSAgICAgICAgICAgIHByaW50ZigiJXM6IGF0 dGVtcHRlZCB0byB1c2UgY2FyZCBpbiBTUEkgbW9kZVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAg ICAgICAgIHByaW50ZigiJXM6IGF0dGVtcHRlZCB0byB1c2UgY2FyZCBpbiBTUEkgbW9kZVxuIiwg X19mdW5jX18pOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTU1DX0NNREFUOgpAQCAtNDQy LDcgKzQ0Miw3IEBAIHN0YXRpYyB2b2lkIHB4YTJ4eF9tbWNpX3dyaXRlKHZvaWQgKm9wYXF1ZSwK ICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgotICAgICAgICBod19lcnJvcigiJXM6IEJh ZCBvZmZzZXQgIiBSRUdfRk1UICJcbiIsIF9fRlVOQ1RJT05fXywgb2Zmc2V0KTsKKyAgICAgICAg aHdfZXJyb3IoIiVzOiBCYWQgb2Zmc2V0ICIgUkVHX0ZNVCAiXG4iLCBfX2Z1bmNfXywgb2Zmc2V0 KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2h3L3NzaS9vbWFwX3NwaS5jIGIvaHcvc3NpL29t YXBfc3BpLmMKaW5kZXggMjIwMzQ2NTZiOC4uMzQxNjNlNTY0NiAxMDA2NDQKLS0tIGEvaHcvc3Np L29tYXBfc3BpLmMKKysrIGIvaHcvc3NpL29tYXBfc3BpLmMKQEAgLTI5NSwxMCArMjk1LDEwIEBA IHN0YXRpYyB2b2lkIG9tYXBfbWNzcGlfd3JpdGUodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwK ICAgICAgICAgaWYgKCh2YWx1ZSBeIHMtPmNoW2NoXS5jb25maWcpICYgKDMgPDwgMTQpKQkvKiBE TUFSIHwgRE1BVyAqLwogICAgICAgICAgICAgb21hcF9tY3NwaV9kbWFyZXF1ZXN0X3VwZGF0ZShz LT5jaCArIGNoKTsKICAgICAgICAgaWYgKCgodmFsdWUgPj4gMTIpICYgMykgPT0gMykJCQkvKiBU Uk0gKi8KLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGludmFsaWQgVFJNIHZhbHVl ICgzKVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IGludmFsaWQgVFJNIHZhbHVlICgzKVxuIiwgX19mdW5jX18pOwogICAgICAgICBpZiAoKCh2YWx1 ZSA+PiA3KSAmIDB4MWYpIDwgMykJCQkvKiBXTCAqLwogICAgICAgICAgICAgZnByaW50ZihzdGRl cnIsICIlczogaW52YWxpZCBXTCB2YWx1ZSAoJSIgUFJJeDY0ICIpXG4iLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgKHZhbHVlID4+IDcpICYgMHgxZik7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sICh2YWx1ZSA+PiA3KSAmIDB4MWYpOwog ICAgICAgICBzLT5jaFtjaF0uY29uZmlnID0gdmFsdWUgJiAweDdmZmZmZjsKICAgICAgICAgYnJl YWs7CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIG9tYXBfbWNzcGlfYXR0YWNoKHN0cnVjdCBv bWFwX21jc3BpX3MgKnMsCiAgICAgICAgICAgICAgICAgaW50IGNoaXBzZWxlY3QpCiB7CiAgICAg aWYgKGNoaXBzZWxlY3QgPCAwIHx8IGNoaXBzZWxlY3QgPj0gcy0+Y2hudW0pCi0gICAgICAgIGh3 X2Vycm9yKCIlczogQmFkIGNoaXBzZWxlY3QgJWlcbiIsIF9fRlVOQ1RJT05fXywgY2hpcHNlbGVj dCk7CisgICAgICAgIGh3X2Vycm9yKCIlczogQmFkIGNoaXBzZWxlY3QgJWlcbiIsIF9fZnVuY19f LCBjaGlwc2VsZWN0KTsKIAogICAgIHMtPmNoW2NoaXBzZWxlY3RdLnR4cnggPSB0eHJ4OwogICAg IHMtPmNoW2NoaXBzZWxlY3RdLm9wYXF1ZSA9IG9wYXF1ZTsKZGlmZiAtLWdpdCBhL2h3L3RpbWVy L29tYXBfZ3B0aW1lci5jIGIvaHcvdGltZXIvb21hcF9ncHRpbWVyLmMKaW5kZXggNmQ3YzhhMzk2 Zi4uYWUyZGM5OTgzMiAxMDA2NDQKLS0tIGEvaHcvdGltZXIvb21hcF9ncHRpbWVyLmMKKysrIGIv aHcvdGltZXIvb21hcF9ncHRpbWVyLmMKQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgdm9pZCBv bWFwX2dwX3RpbWVyX3dyaXRlKHZvaWQgKm9wYXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIHMt PmNvbmZpZyA9IHZhbHVlICYgMHgzM2Q7CiAgICAgICAgIGlmICgoKHZhbHVlID4+IDMpICYgMykg PT0gMykJCQkJLyogSURMRU1PREUgKi8KICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IGlsbGVnYWwgSURMRU1PREUgdmFsdWUgaW4gVElPQ1BfQ0ZHXG4iLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF9fRlVOQ1RJT05fXyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg X19mdW5jX18pOwogICAgICAgICBpZiAodmFsdWUgJiAyKQkJCQkJCS8qIFNPRlRSRVNFVCAqLwog ICAgICAgICAgICAgb21hcF9ncF90aW1lcl9yZXNldChzKTsKICAgICAgICAgYnJlYWs7CkBAIC0z OTUsMTAgKzM5NSwxMCBAQCBzdGF0aWMgdm9pZCBvbWFwX2dwX3RpbWVyX3dyaXRlKHZvaWQgKm9w YXF1ZSwgaHdhZGRyIGFkZHIsCiAgICAgICAgIHMtPnN0ID0gKHZhbHVlID4+IDApICYgMTsKICAg ICAgICAgaWYgKHMtPmlub3V0ICYmIHMtPnRyaWdnZXIgIT0gZ3B0X3RyaWdnZXJfbm9uZSkKICAg ICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IEdQIHRpbWVyIHBpbiBtdXN0IGJlIGFuIG91 dHB1dCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciB0aGlzIHRyaWdnZXIgbW9k ZVxuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIHRo aXMgdHJpZ2dlciBtb2RlXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGlmICghcy0+aW5vdXQgJiYg cy0+Y2FwdHVyZSAhPSBncHRfY2FwdHVyZV9ub25lKQogICAgICAgICAgICAgZnByaW50ZihzdGRl cnIsICIlczogR1AgdGltZXIgcGluIG11c3QgYmUgYW4gaW5wdXQgIgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJmb3IgdGhpcyBjYXB0dXJlIG1vZGVcbiIsIF9fRlVOQ1RJT05fXyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciB0aGlzIGNhcHR1cmUgbW9kZVxuIiwgX19m dW5jX18pOwogICAgICAgICBpZiAocy0+dHJpZ2dlciA9PSBncHRfdHJpZ2dlcl9ub25lKQogICAg ICAgICAgICAgb21hcF9ncF90aW1lcl9vdXQocywgcy0+c2Nwd20pOwogICAgICAgICAvKiBUT0RP OiBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IG92ZXJmbG93IDMyLWJpdHMgKi8KZGlmZiAtLWdpdCBh L2h3L3RpbWVyL3R3bDkyMjMwLmMgYi9ody90aW1lci90d2w5MjIzMC5jCmluZGV4IGViNThjMzc4 ZTAuLmVmMTE2YzYzNmMgMTAwNjQ0Ci0tLSBhL2h3L3RpbWVyL3R3bDkyMjMwLmMKKysrIGIvaHcv dGltZXIvdHdsOTIyMzAuYwpAQCAtNDAzLDcgKzQwMyw3IEBAIHN0YXRpYyB1aW50OF90IG1lbmVs YXVzX3JlYWQodm9pZCAqb3BhcXVlLCB1aW50OF90IGFkZHIpCiAKICAgICBkZWZhdWx0OgogI2lm ZGVmIFZFUkJPU0UKLSAgICAgICAgcHJpbnRmKCIlczogdW5rbm93biByZWdpc3RlciAlMDJ4XG4i LCBfX0ZVTkNUSU9OX18sIGFkZHIpOworICAgICAgICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lz dGVyICUwMnhcbiIsIF9fZnVuY19fLCBhZGRyKTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAg ICB9CkBAIC02MTUsNyArNjE1LDcgQEAgc3RhdGljIHZvaWQgbWVuZWxhdXNfd3JpdGUodm9pZCAq b3BhcXVlLCB1aW50OF90IGFkZHIsIHVpbnQ4X3QgdmFsdWUpCiAgICAgICAgIHJ0Y19iYWRuZXNz OgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogYmFk IFJUQ19VUERBVEUgdmFsdWUgJTAyeFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBf X0ZVTkNUSU9OX18sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNf XywgdmFsdWUpOwogICAgICAgICAgICAgcy0+c3RhdHVzIHw9IDEgPDwgMTA7CQkJCS8qIFJUQ0VS UiAqLwogICAgICAgICAgICAgbWVuZWxhdXNfdXBkYXRlKHMpOwogICAgICAgICB9CkBAIC03MDgs NyArNzA4LDcgQEAgc3RhdGljIHZvaWQgbWVuZWxhdXNfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50 OF90IGFkZHIsIHVpbnQ4X3QgdmFsdWUpCiAKICAgICBkZWZhdWx0OgogI2lmZGVmIFZFUkJPU0UK LSAgICAgICAgcHJpbnRmKCIlczogdW5rbm93biByZWdpc3RlciAlMDJ4XG4iLCBfX0ZVTkNUSU9O X18sIGFkZHIpOworICAgICAgICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyICUwMnhcbiIs IF9fZnVuY19fLCBhZGRyKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2h3L3VzYi9k ZXNjLmMgYi9ody91c2IvZGVzYy5jCmluZGV4IGMzNmJmMzBlNGYuLjg1YzE1YWRkYzUgMTAwNjQ0 Ci0tLSBhL2h3L3VzYi9kZXNjLmMKKysrIGIvaHcvdXNiL2Rlc2MuYwpAQCAtNjg4LDcgKzY4OCw3 IEBAIGludCB1c2JfZGVzY19nZXRfZGVzY3JpcHRvcihVU0JEZXZpY2UgKmRldiwgVVNCUGFja2V0 ICpwLAogICAgICAgICBicmVhazsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiJXM6ICVkIHVua25vd24gdHlwZSAlZCAobGVuICV6ZClcbiIsIF9fRlVOQ1RJT05fXywK KyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogJWQgdW5rbm93biB0eXBlICVkIChsZW4gJXpk KVxuIiwgX19mdW5jX18sCiAgICAgICAgICAgICAgICAgZGV2LT5hZGRyLCB0eXBlLCBsZW4pOwog ICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9ody91c2IvZGV2LWJsdWV0b290aC5j IGIvaHcvdXNiL2Rldi1ibHVldG9vdGguYwppbmRleCA0NDNlM2MzMDFkLi4wYmJjZWFlYTBiIDEw MDY0NAotLS0gYS9ody91c2IvZGV2LWJsdWV0b290aC5jCisrKyBiL2h3L3VzYi9kZXYtYmx1ZXRv b3RoLmMKQEAgLTI3NCwxMyArMjc0LDEzIEBAIHN0YXRpYyB2b2lkIHVzYl9idF9maWZvX2VucXVl dWUoc3RydWN0IHVzYl9oY2lfaW5fZmlmb19zICpmaWZvLAogICAgIGlmIChvZmYgPD0gREZJRk9f TEVOX01BU0spIHsKICAgICAgICAgaWYgKG9mZiArIGxlbiA+IERGSUZPX0xFTl9NQVNLICsgMSAm JgogICAgICAgICAgICAgICAgICAgICAgICAgKGZpZm8tPmRzaXplID0gb2ZmICsgbGVuKSA+IChE RklGT19MRU5fTUFTSyArIDEpICogMikgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIl czogY2FuJ3QgYWxsb2MgJWkgYnl0ZXNcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKyAgICAgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGNhbid0IGFsbG9jICVpIGJ5dGVzXG4iLCBfX2Z1bmNf XywgbGVuKTsKICAgICAgICAgICAgIGV4aXQoLTEpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZiA9 IGZpZm8tPmRhdGEgKyBvZmY7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGZpZm8tPmRsZW4g PiBmaWZvLT5kc2l6ZSkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogY2FuJ3Qg YWxsb2MgJWkgYnl0ZXNcbiIsIF9fRlVOQ1RJT05fXywgbGVuKTsKKyAgICAgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAiJXM6IGNhbid0IGFsbG9jICVpIGJ5dGVzXG4iLCBfX2Z1bmNfXywgbGVuKTsK ICAgICAgICAgICAgIGV4aXQoLTEpOwogICAgICAgICB9CiAgICAgICAgIGJ1ZiA9IGZpZm8tPmRh dGEgKyBvZmYgLSBmaWZvLT5kc2l6ZTsKZGlmZiAtLWdpdCBhL2h3L3VzYi9oY2QtbXVzYi5jIGIv aHcvdXNiL2hjZC1tdXNiLmMKaW5kZXggMjdkOWQwYmQ4Mi4uZDcwYTkxYTU4YyAxMDA2NDQKLS0t IGEvaHcvdXNiL2hjZC1tdXNiLmMKKysrIGIvaHcvdXNiL2hjZC1tdXNiLmMKQEAgLTI1Myw4ICsy NTMsOCBAQAogLyogI2RlZmluZSBNVVNCX0RFQlVHICovCiAKICNpZmRlZiBNVVNCX0RFQlVHCi0j ZGVmaW5lIFRSQUNFKGZtdCwuLi4pIGZwcmludGYoc3RkZXJyLCAiJXNAJWQ6ICIgZm10ICJcbiIs IF9fRlVOQ1RJT05fXywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fTElORV9f LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBUUkFDRShmbXQsIC4uLikgZnByaW50ZihzdGRlcnIs ICIlc0AlZDogIiBmbXQgIlxuIiwgX19mdW5jX18sIFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19MSU5FX18sICMjX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmluZSBUUkFDRSgu Li4pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2h3L3VzYi90dXNiNjAxMC5jIGIvaHcvdXNiL3R1c2I2 MDEwLmMKaW5kZXggOGY1OTNhNmZkYi4uMjY2MmMwNjBlZCAxMDA2NDQKLS0tIGEvaHcvdXNiL3R1 c2I2MDEwLmMKKysrIGIvaHcvdXNiL3R1c2I2MDEwLmMKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0 aWMgdWludDMyX3QgdHVzYl9hc3luY19yZWFkYih2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyKQog ICAgIH0KIAogICAgIHByaW50ZigiJXM6IHVua25vd24gcmVnaXN0ZXIgYXQgJTAzeFxuIiwKLSAg ICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCAoaW50KSAoYWRkciAmIDB4ZmZmKSk7Cisg ICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCAoaW50KSAoYWRkciAmIDB4ZmZmKSk7CiAgICAg cmV0dXJuIDA7CiB9CiAKQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgdWludDMyX3QgdHVzYl9h c3luY19yZWFkaCh2b2lkICpvcGFxdWUsIGh3YWRkciBhZGRyKQogICAgIH0KIAogICAgIHByaW50 ZigiJXM6IHVua25vd24gcmVnaXN0ZXIgYXQgJTAzeFxuIiwKLSAgICAgICAgICAgICAgICAgICAg X19GVU5DVElPTl9fLCAoaW50KSAoYWRkciAmIDB4ZmZmKSk7CisgICAgICAgICAgICAgICAgICAg IF9fZnVuY19fLCAoaW50KSAoYWRkciAmIDB4ZmZmKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAg LTQzNiw3ICs0MzYsNyBAQCBzdGF0aWMgdWludDMyX3QgdHVzYl9hc3luY19yZWFkdyh2b2lkICpv cGFxdWUsIGh3YWRkciBhZGRyKQogICAgICAgICByZXR1cm4gMHg1NDA1OWFkZjsKICAgICB9CiAK LSAgICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyIGF0ICUwM3hcbiIsIF9fRlVOQ1RJT05f Xywgb2Zmc2V0KTsKKyAgICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyIGF0ICUwM3hcbiIs IF9fZnVuY19fLCBvZmZzZXQpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00NTYsNyArNDU2LDcg QEAgc3RhdGljIHZvaWQgdHVzYl9hc3luY193cml0ZWIodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRk ciwKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHByaW50ZigiJXM6IHVua25vd24gcmVnaXN0ZXIg YXQgJTAzeFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgKGludCkg KGFkZHIgJiAweGZmZikpOworICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIChpbnQp IChhZGRyICYgMHhmZmYpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTQ3Nyw3ICs0 NzcsNyBAQCBzdGF0aWMgdm9pZCB0dXNiX2FzeW5jX3dyaXRlaCh2b2lkICpvcGFxdWUsIGh3YWRk ciBhZGRyLAogCiAgICAgZGVmYXVsdDoKICAgICAgICAgcHJpbnRmKCIlczogdW5rbm93biByZWdp c3RlciBhdCAlMDN4XG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCAo aW50KSAoYWRkciAmIDB4ZmZmKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywg KGludCkgKGFkZHIgJiAweGZmZikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtNTA1 LDcgKzUwNSw3IEBAIHN0YXRpYyB2b2lkIHR1c2JfYXN5bmNfd3JpdGV3KHZvaWQgKm9wYXF1ZSwg aHdhZGRyIGFkZHIsCiAgICAgICAgIHMtPmRldl9jb25maWcgPSB2YWx1ZTsKICAgICAgICAgcy0+ aG9zdF9tb2RlID0gKHZhbHVlICYgVFVTQl9ERVZfQ09ORl9VU0JfSE9TVF9NT0RFKTsKICAgICAg ICAgaWYgKHZhbHVlICYgVFVTQl9ERVZfQ09ORl9QUk9EX1RFU1RfTU9ERSkKLSAgICAgICAgICAg IGh3X2Vycm9yKCIlczogUHJvZHVjdCBUZXN0IG1vZGUgbm90IGFsbG93ZWRcbiIsIF9fRlVOQ1RJ T05fXyk7CisgICAgICAgICAgICBod19lcnJvcigiJXM6IFByb2R1Y3QgVGVzdCBtb2RlIG5vdCBh bGxvd2VkXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUVVNCX1BI WV9PVEdfQ1RSTF9FTkFCTEU6CkBAIC02MzYsNyArNjM2LDcgQEAgc3RhdGljIHZvaWQgdHVzYl9h c3luY193cml0ZXcodm9pZCAqb3BhcXVlLCBod2FkZHIgYWRkciwKICAgICAgICAgYnJlYWs7CiAK ICAgICBkZWZhdWx0OgotICAgICAgICBwcmludGYoIiVzOiB1bmtub3duIHJlZ2lzdGVyIGF0ICUw M3hcbiIsIF9fRlVOQ1RJT05fXywgb2Zmc2V0KTsKKyAgICAgICAgcHJpbnRmKCIlczogdW5rbm93 biByZWdpc3RlciBhdCAlMDN4XG4iLCBfX2Z1bmNfXywgb2Zmc2V0KTsKICAgICAgICAgcmV0dXJu OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2h3L3hlbnB2L3hlbl9kb21haW5idWlsZC5jIGIvaHcv eGVucHYveGVuX2RvbWFpbmJ1aWxkLmMKaW5kZXggYzg5Y2VkMmU4OC4uMDI3Zjc2ZmFkMSAxMDA2 NDQKLS0tIGEvaHcveGVucHYveGVuX2RvbWFpbmJ1aWxkLmMKKysrIGIvaHcveGVucHYveGVuX2Rv bWFpbmJ1aWxkLmMKQEAgLTI1LDIyICsyNSwyMiBAQCBzdGF0aWMgaW50IHhlbnN0b3JlX2RvbWFp bl9ta2RpcihjaGFyICpwYXRoKQogICAgIGludCBpOwogCiAgICAgaWYgKCF4c19ta2Rpcih4ZW5z dG9yZSwgMCwgcGF0aCkpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogeHNfbWtkaXIg JXM6IGZhaWxlZFxuIiwgX19GVU5DVElPTl9fLCBwYXRoKTsKKyAgICAgICAgZnByaW50ZihzdGRl cnIsICIlczogeHNfbWtkaXIgJXM6IGZhaWxlZFxuIiwgX19mdW5jX18sIHBhdGgpOwogCXJldHVy biAtMTsKICAgICB9CiAgICAgaWYgKCF4c19zZXRfcGVybWlzc2lvbnMoeGVuc3RvcmUsIDAsIHBh dGgsIHBlcm1zX3JvLCAyKSkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB4c19zZXRf cGVybWlzc2lvbnMgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAgICBmcHJpbnRmKHN0 ZGVyciwgIiVzOiB4c19zZXRfcGVybWlzc2lvbnMgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CiAJcmV0 dXJuIC0xOwogICAgIH0KIAogICAgIGZvciAoaSA9IDA7IHdyaXRhYmxlW2ldOyBpKyspIHsKICAg ICAgICAgc25wcmludGYoc3VicGF0aCwgc2l6ZW9mKHN1YnBhdGgpLCAiJXMvJXMiLCBwYXRoLCB3 cml0YWJsZVtpXSk7CiAgICAgICAgIGlmICgheHNfbWtkaXIoeGVuc3RvcmUsIDAsIHN1YnBhdGgp KSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB4c19ta2RpciAlczogZmFpbGVk XG4iLCBfX0ZVTkNUSU9OX18sIHN1YnBhdGgpOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs ICIlczogeHNfbWtkaXIgJXM6IGZhaWxlZFxuIiwgX19mdW5jX18sIHN1YnBhdGgpOwogICAgICAg ICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGlmICgheHNfc2V0X3Blcm1pc3Np b25zKHhlbnN0b3JlLCAwLCBzdWJwYXRoLCBwZXJtc19ydywgMikpIHsKLSAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiJXM6IHhzX3NldF9wZXJtaXNzaW9ucyBmYWlsZWRcbiIsIF9fRlVOQ1RJ T05fXyk7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB4c19zZXRfcGVybWlzc2lv bnMgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAg IH0KICAgICB9CkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIGludCB4ZW5fZG9tYWluX3dhdGNo ZXIodm9pZCkKICAgICBjaGFyIGJ5dGU7CiAKICAgICBpZiAocGlwZShmZCkgIT0gMCkgewotICAg ICAgICBxZW11X2xvZygiJXM6IEh1aD8gcGlwZSBlcnJvcjogJXNcbiIsIF9fRlVOQ1RJT05fXywg c3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcWVtdV9sb2coIiVzOiBIdWg/IHBpcGUgZXJyb3I6 ICVzXG4iLCBfX2Z1bmNfXywgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIC0xOwog ICAgIH0KICAgICBpZiAoZm9yaygpICE9IDApCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIGlu dCB4ZW5fZG9tYWluX3dhdGNoZXIodm9pZCkKICAgICAgICAgY2FzZSAtMToKICAgICAgICAgICAg IGlmIChlcnJubyA9PSBFSU5UUikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg ICAgIHFlbXVfbG9nKCIlczogSHVoPyByZWFkIGVycm9yOiAlc1xuIiwgX19GVU5DVElPTl9fLCBz dHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgcWVtdV9sb2coIiVzOiBIdWg/IHJlYWQgZXJy b3I6ICVzXG4iLCBfX2Z1bmNfXywgc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgIHFlbXVf cnVubmluZyA9IDA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAwOgpAQCAtMTk4 LDEzICsxOTgsMTMgQEAgc3RhdGljIGludCB4ZW5fZG9tYWluX3dhdGNoZXIodm9pZCkKICAgICAg ICAgICAgIHFlbXVfcnVubmluZyA9IDA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm YXVsdDoKLSAgICAgICAgICAgIHFlbXVfbG9nKCIlczogSHVoPyBkYXRhIG9uIHRoZSB3YXRjaCBw aXBlP1xuIiwgX19GVU5DVElPTl9fKTsKKyAgICAgICAgICAgIHFlbXVfbG9nKCIlczogSHVoPyBk YXRhIG9uIHRoZSB3YXRjaCBwaXBlP1xuIiwgX19mdW5jX18pOwogICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBjbGVhbnVwICovCi0gICAgcWVtdV9sb2coIiVz OiBkZXN0cm95IGRvbWFpbiAlZFxuIiwgX19GVU5DVElPTl9fLCB4ZW5fZG9taWQpOworICAgIHFl bXVfbG9nKCIlczogZGVzdHJveSBkb21haW4gJWRcbiIsIF9fZnVuY19fLCB4ZW5fZG9taWQpOwog ICAgIHhjX2RvbWFpbl9kZXN0cm95KHhlbl94YywgeGVuX2RvbWlkKTsKICAgICBfZXhpdCgwKTsK IH0KZGlmZiAtLWdpdCBhL2h3L3hlbnB2L3hlbl9tYWNoaW5lX3B2LmMgYi9ody94ZW5wdi94ZW5f bWFjaGluZV9wdi5jCmluZGV4IDMxZDJmMjU2MjcuLjY5YTUyYTlmOTMgMTAwNjQ0Ci0tLSBhL2h3 L3hlbnB2L3hlbl9tYWNoaW5lX3B2LmMKKysrIGIvaHcveGVucHYveGVuX21hY2hpbmVfcHYuYwpA QCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgdm9pZCB4ZW5faW5pdF9wdihNYWNoaW5lU3RhdGUgKm1h Y2hpbmUpCiAKICAgICAvKiBJbml0aWFsaXplIGJhY2tlbmQgY29yZSAmIGRyaXZlcnMgKi8KICAg ICBpZiAoeGVuX2JlX2luaXQoKSAhPSAwKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6 IHhlbiBiYWNrZW5kIGNvcmUgc2V0dXAgZmFpbGVkXG4iLCBfX0ZVTkNUSU9OX18pOworICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIiVzOiB4ZW4gYmFja2VuZCBjb3JlIHNldHVwIGZhaWxlZFxuIiwg X19mdW5jX18pOwogICAgICAgICBleGl0KDEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9ody9hcm0vb21hcC5oIGIvaW5jbHVkZS9ody9hcm0vb21hcC5oCmluZGV4IGNhYzFiMmJhNDMu LmIzOTg2MDdiMDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaHcvYXJtL29tYXAuaAorKysgYi9pbmNs dWRlL2h3L2FybS9vbWFwLmgKQEAgLTk2MCwxMCArOTYwLDEwIEBAIHZvaWQgb21hcF9tcHVfd2Fr ZXVwKHZvaWQgKm9wYXF1ZSwgaW50IGlycSwgaW50IHJlcSk7CiAKICMgZGVmaW5lIE9NQVBfQkFE X1JFRyhwYWRkcikJCVwKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogQmFkIHJlZ2lzdGVy ICIgT01BUF9GTVRfcGx4ICJcbiIsCVwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJ T05fXywgcGFkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgcGFkZHIpCiAj IGRlZmluZSBPTUFQX1JPX1JFRyhwYWRkcikJCVwKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIl czogUmVhZC1vbmx5IHJlZ2lzdGVyICIgT01BUF9GTVRfcGx4ICJcbiIsCVwKLSAgICAgICAgICAg ICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcGFkZHIpCisgICAgICAgICAgICAgICAgICAgICAg ICBfX2Z1bmNfXywgcGFkZHIpCiAKIC8qIE9NQVAtc3BlY2lmaWMgTGludXggYm9vdGxvYWRlciB0 YWdzIGZvciB0aGUgQVRBR19CT0FSRCBhcmVhCiAgICAoQm9hcmQtc3BlY2lmYyB0YWdzIGFyZSBu b3QgaGVyZSkgICovCkBAIC05OTgsMTMgKzk5OCwxMyBAQCBlbnVtIHsKICMgaWZkZWYgVENNSV9W RVJCT1NFCiAjICBkZWZpbmUgT01BUF84Ql9SRUcocGFkZHIpCQlcCiAgICAgICAgIGZwcmludGYo c3RkZXJyLCAiJXM6IDgtYml0IHJlZ2lzdGVyICIgT01BUF9GTVRfcGx4ICJcbiIsCVwKLSAgICAg ICAgICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgcGFkZHIpCisgICAgICAgICAgICAgICAg ICAgICAgICBfX2Z1bmNfXywgcGFkZHIpCiAjICBkZWZpbmUgT01BUF8xNkJfUkVHKHBhZGRyKQkJ XAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAxNi1iaXQgcmVnaXN0ZXIgIiBPTUFQX0ZN VF9wbHggIlxuIiwJXAotICAgICAgICAgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBwYWRk cikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBwYWRkcikKICMgIGRlZmluZSBP TUFQXzMyQl9SRUcocGFkZHIpCQlcCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IDMyLWJp dCByZWdpc3RlciAiIE9NQVBfRk1UX3BseCAiXG4iLAlcCi0gICAgICAgICAgICAgICAgICAgICAg ICBfX0ZVTkNUSU9OX18sIHBhZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18s IHBhZGRyKQogIyBlbHNlCiAjICBkZWZpbmUgT01BUF84Ql9SRUcocGFkZHIpCiAjICBkZWZpbmUg T01BUF8xNkJfUkVHKHBhZGRyKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ody9hcm0vc2hhcnBzbC5o IGIvaW5jbHVkZS9ody9hcm0vc2hhcnBzbC5oCmluZGV4IDEzOTgxYTZkMDMuLjViZjZkYjFmYTIg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvaHcvYXJtL3NoYXJwc2wuaAorKysgYi9pbmNsdWRlL2h3L2Fy bS9zaGFycHNsLmgKQEAgLTcsNyArNyw3IEBACiAjZGVmaW5lIFFFTVVfU0hBUlBTTF9ICiAKICNk ZWZpbmUgemF1cnVzX3ByaW50Zihmb3JtYXQsIC4uLikJXAotICAgIGZwcmludGYoc3RkZXJyLCAi JXM6ICIgZm9ybWF0LCBfX0ZVTkNUSU9OX18sICMjX19WQV9BUkdTX18pCisgICAgZnByaW50Zihz dGRlcnIsICIlczogIiBmb3JtYXQsIF9fZnVuY19fLCAjI19fVkFfQVJHU19fKQogCiAvKiB6YXVy dXMuYyAqLwogCmRpZmYgLS1naXQgYS9tZW1vcnlfbWFwcGluZy5jIGIvbWVtb3J5X21hcHBpbmcu YwppbmRleCBhNWQzODU1MmE2Li43NzU0NjZmM2E4IDEwMDY0NAotLS0gYS9tZW1vcnlfbWFwcGlu Zy5jCisrKyBiL21lbW9yeV9tYXBwaW5nLmMKQEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0aWMgdm9p ZCBndWVzdF9waHlzX2Jsb2Nrc19yZWdpb25fYWRkKE1lbW9yeUxpc3RlbmVyICpsaXN0ZW5lciwK IAogI2lmZGVmIERFQlVHX0dVRVNUX1BIWVNfUkVHSU9OX0FERAogICAgIGZwcmludGYoc3RkZXJy LCAiJXM6IHRhcmdldF9zdGFydD0iIFRBUkdFVF9GTVRfcGx4ICIgdGFyZ2V0X2VuZD0iCi0gICAg ICAgICAgICBUQVJHRVRfRk1UX3BseCAiOiAlcyAoY291bnQ6ICV1KVxuIiwgX19GVU5DVElPTl9f LCB0YXJnZXRfc3RhcnQsCisgICAgICAgICAgICBUQVJHRVRfRk1UX3BseCAiOiAlcyAoY291bnQ6 ICV1KVxuIiwgX19mdW5jX18sIHRhcmdldF9zdGFydCwKICAgICAgICAgICAgIHRhcmdldF9lbmQs IHByZWRlY2Vzc29yID8gImpvaW5lZCIgOiAiYWRkZWQiLCBnLT5saXN0LT5udW0pOwogI2VuZGlm CiB9CmRpZmYgLS1naXQgYS9taWdyYXRpb24vYmxvY2suYyBiL21pZ3JhdGlvbi9ibG9jay5jCmlu ZGV4IDMyODI4MDk1ODMuLmJlMDFlMWFlYzAgMTAwNjQ0Ci0tLSBhL21pZ3JhdGlvbi9ibG9jay5j CisrKyBiL21pZ3JhdGlvbi9ibG9jay5jCkBAIC02MzAsNyArNjMwLDcgQEAgc3RhdGljIGludCBm bHVzaF9ibGtzKFFFTVVGaWxlICpmKQogICAgIGludCByZXQgPSAwOwogCiAgICAgRFBSSU5URigi JXMgRW50ZXIgc3VibWl0dGVkICVkIHJlYWRfZG9uZSAlZCB0cmFuc2ZlcnJlZCAlZFxuIiwKLSAg ICAgICAgICAgIF9fRlVOQ1RJT05fXywgYmxvY2tfbWlnX3N0YXRlLnN1Ym1pdHRlZCwgYmxvY2tf bWlnX3N0YXRlLnJlYWRfZG9uZSwKKyAgICAgICAgICAgIF9fZnVuY19fLCBibG9ja19taWdfc3Rh dGUuc3VibWl0dGVkLCBibG9ja19taWdfc3RhdGUucmVhZF9kb25lLAogICAgICAgICAgICAgYmxv Y2tfbWlnX3N0YXRlLnRyYW5zZmVycmVkKTsKIAogICAgIGJsa19taWdfbG9jaygpOwpAQCAtNjU3 LDcgKzY1Nyw3IEBAIHN0YXRpYyBpbnQgZmx1c2hfYmxrcyhRRU1VRmlsZSAqZikKICAgICB9CiAg ICAgYmxrX21pZ191bmxvY2soKTsKIAotICAgIERQUklOVEYoIiVzIEV4aXQgc3VibWl0dGVkICVk IHJlYWRfZG9uZSAlZCB0cmFuc2ZlcnJlZCAlZFxuIiwgX19GVU5DVElPTl9fLAorICAgIERQUklO VEYoIiVzIEV4aXQgc3VibWl0dGVkICVkIHJlYWRfZG9uZSAlZCB0cmFuc2ZlcnJlZCAlZFxuIiwg X19mdW5jX18sCiAgICAgICAgICAgICBibG9ja19taWdfc3RhdGUuc3VibWl0dGVkLCBibG9ja19t aWdfc3RhdGUucmVhZF9kb25lLAogICAgICAgICAgICAgYmxvY2tfbWlnX3N0YXRlLnRyYW5zZmVy cmVkKTsKICAgICByZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvdWkvY3Vyc29yLmMgYi91aS9jdXJz b3IuYwppbmRleCAyZTJmZTEzZmE2Li5mM2RhMGNlZTc5IDEwMDY0NAotLS0gYS91aS9jdXJzb3Iu YworKysgYi91aS9jdXJzb3IuYwpAQCAtMTksMTEgKzE5LDExIEBAIHN0YXRpYyBRRU1VQ3Vyc29y ICpjdXJzb3JfcGFyc2VfeHBtKGNvbnN0IGNoYXIgKnhwbVtdKQogICAgIGlmIChzc2NhbmYoeHBt W2xpbmVdLCAiJXUgJXUgJXUgJXUiLAogICAgICAgICAgICAgICAgJndpZHRoLCAmaGVpZ2h0LCAm Y29sb3JzLCAmY2hhcnMpICE9IDQpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaGVh ZGVyIHBhcnNlIGVycm9yOiBcIiVzXCJcbiIsCi0gICAgICAgICAgICAgICAgX19GVU5DVElPTl9f LCB4cG1bbGluZV0pOworICAgICAgICAgICAgICAgIF9fZnVuY19fLCB4cG1bbGluZV0pOwogICAg ICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGNoYXJzICE9IDEpIHsKLSAgICAgICAg ZnByaW50ZihzdGRlcnIsICIlczogY2hhcnMgIT0gMSBub3Qgc3VwcG9ydGVkXG4iLCBfX0ZVTkNU SU9OX18pOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBjaGFycyAhPSAxIG5vdCBzdXBw b3J0ZWRcbiIsIF9fZnVuY19fKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGxp bmUrKzsKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIFFFTVVDdXJzb3IgKmN1cnNvcl9wYXJzZV94 cG0oY29uc3QgY2hhciAqeHBtW10pCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg ZnByaW50ZihzdGRlcnIsICIlczogY29sb3IgcGFyc2UgZXJyb3I6IFwiJXNcIlxuIiwKLSAgICAg ICAgICAgICAgICBfX0ZVTkNUSU9OX18sIHhwbVtsaW5lXSk7CisgICAgICAgICAgICAgICAgX19m dW5jX18sIHhwbVtsaW5lXSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApkaWZmIC0t Z2l0IGEvdWkvc3BpY2UtZGlzcGxheS5jIGIvdWkvc3BpY2UtZGlzcGxheS5jCmluZGV4IGFkMWNl YWZiM2YuLjU4NmYwNThmMWIgMTAwNjQ0Ci0tLSBhL3VpL3NwaWNlLWRpc3BsYXkuYworKysgYi91 aS9zcGljZS1kaXNwbGF5LmMKQEAgLTYzMCwxMyArNjMwLDEzIEBAIHN0YXRpYyBpbnQgaW50ZXJm YWNlX3JlcV9jdXJzb3Jfbm90aWZpY2F0aW9uKFFYTEluc3RhbmNlICpzaW4pCiAKIHN0YXRpYyB2 b2lkIGludGVyZmFjZV9ub3RpZnlfdXBkYXRlKFFYTEluc3RhbmNlICpzaW4sIHVpbnQzMl90IHVw ZGF0ZV9pZCkKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBhYm9ydCgpXG4iLCBfX0ZVTkNU SU9OX18pOworICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGFib3J0KClcbiIsIF9fZnVuY19fKTsK ICAgICBhYm9ydCgpOwogfQogCiBzdGF0aWMgaW50IGludGVyZmFjZV9mbHVzaF9yZXNvdXJjZXMo UVhMSW5zdGFuY2UgKnNpbikKIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBhYm9ydCgpXG4i LCBfX0ZVTkNUSU9OX18pOworICAgIGZwcmludGYoc3RkZXJyLCAiJXM6IGFib3J0KClcbiIsIF9f ZnVuY19fKTsKICAgICBhYm9ydCgpOwogICAgIHJldHVybiAwOwogfQotLSAKMi4xNC4xCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==