1. 05 7月, 2019 20 次提交
  2. 04 7月, 2019 10 次提交
    • P
      Merge remote-tracking branch 'remotes/kraxel/tags/ui-20190704-pull-request' into staging · c3e1d838
      Peter Maydell 提交于
      ui: terminal emulation fix.
      
      # gpg: Signature made Thu 04 Jul 2019 08:04:31 BST
      # gpg:                using RSA key 4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/ui-20190704-pull-request:
        console: fix cell overflow
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      c3e1d838
    • P
      Merge remote-tracking branch 'remotes/armbru/tags/pull-build-2019-07-02-v2' into staging · 234e2565
      Peter Maydell 提交于
      Build system patches for 2019-07-02
      
      # gpg: Signature made Wed 03 Jul 2019 12:44:28 BST
      # gpg:                using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653
      # gpg:                issuer "armbru@redhat.com"
      # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full]
      # gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>" [full]
      # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653
      
      * remotes/armbru/tags/pull-build-2019-07-02-v2:
        Makefile: Reuse all's recursion machinery for clean and install
        Makefile: Rename targets for make recursion
        Makefile: Drop bogus cleaning of $(ALL_SUBDIRS)/qemu-options.def
        Makefile: Remove code to smooth transition to config.status
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      234e2565
    • P
      Merge remote-tracking branch 'remotes/kraxel/tags/audio-20190703-pull-request' into staging · be8bf83d
      Peter Maydell 提交于
      audio: pulse bugfix
      
      # gpg: Signature made Wed 03 Jul 2019 07:55:43 BST
      # gpg:                using RSA key 4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/audio-20190703-pull-request:
        fix microphone lag with PA
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      be8bf83d
    • P
      Merge remote-tracking branch 'remotes/awilliam/tags/vfio-fixes-20190702.0' into staging · 5c6a9dbe
      Peter Maydell 提交于
      VFIO fixes 2019-07-02
      
       - Remove outdated comment (Fabiano Rosas)
      
       - Log MSI-X eventfd switch failure, fix Coverity issue (Eric Auger)
      
      # gpg: Signature made Tue 02 Jul 2019 23:21:56 BST
      # gpg:                using RSA key 239B9B6E3BB08B22
      # gpg: Good signature from "Alex Williamson <alex.williamson@redhat.com>" [full]
      # gpg:                 aka "Alex Williamson <alex@shazbot.org>" [full]
      # gpg:                 aka "Alex Williamson <alwillia@redhat.com>" [full]
      # gpg:                 aka "Alex Williamson <alex.l.williamson@gmail.com>" [full]
      # Primary key fingerprint: 42F6 C04E 540B D1A9 9E7B  8A90 239B 9B6E 3BB0 8B22
      
      * remotes/awilliam/tags/vfio-fixes-20190702.0:
        vfio/pci: Trace vfio_set_irq_signaling() failure in vfio_msix_vector_release()
        vfio-common.h: Remove inaccurate comment
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      5c6a9dbe
    • P
      Merge remote-tracking branch 'remotes/ehabkost/tags/python-next-pull-request' into staging · 3eb98f76
      Peter Maydell 提交于
      Python queue, 2019-07-01
      
      * Deprecate Python 2 support (Eduardo Habkost)
      * qemu/__init__.py refactor (John Snow)
      * make qmp-shell work with python3 (Igor Mammedov)
      
      # gpg: Signature made Mon 01 Jul 2019 23:28:27 BST
      # gpg:                using RSA key 5A322FD5ABC4D3DBACCFD1AA2807936F984DC5A6
      # gpg:                issuer "ehabkost@redhat.com"
      # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>" [full]
      # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6
      
      * remotes/ehabkost/tags/python-next-pull-request:
        Deprecate Python 2 support
        machine.py: minor delinting
        python/qemu: split QEMUMachine out from underneath __init__.py
        qmp: make qmp-shell work with python3
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      3eb98f76
    • P
      Merge remote-tracking branch 'remotes/palmer/tags/riscv-for-master-4.1-sf1-v3' into staging · aff8cee8
      Peter Maydell 提交于
      RISC-V Patches for the 4.1 Soft Freeze, Part 2 v3
      
      This pull request contains a handful of patches that I'd like to target
      for the 4.1 soft freeze.  There are a handful of new features:
      
      * Support for the 1.11.0, the latest privileged specification.
      * Support for reading and writing the PRCI registers.
      * Better control over the ISA of the target machine.
      * Support for the cpu-topology device tree node.
      
      Additionally, there are a handful of bug fixes including:
      
      * Load reservations are now broken by both store conditional and by
        scheduling, which fixes issues with parallel applications.
      * Various fixes to the PMP implementation.
      * Fixes to the 32-bit linux-user syscall ABI.
      * Various fixes for instruction decodeing.
      * A fix to the PCI device tree "bus-range" property.
      
      This boots 32-bit and 64-bit OpenEmbedded.
      
      Changes since v2 [riscv-for-master-4.1-sf1-v2]:
      
      * Dropped OpenSBI.
      
      Changes since v1 [riscv-for-master-4.1-sf1]:
      
      * Contains a fix to the sifive_u OpenSBI integration.
      
      # gpg: Signature made Wed 03 Jul 2019 09:39:09 BST
      # gpg:                using RSA key 00CE76D1834960DFCE886DF8EF4CA1502CCBAB41
      # gpg:                issuer "palmer@dabbelt.com"
      # gpg: Good signature from "Palmer Dabbelt <palmer@dabbelt.com>" [unknown]
      # gpg:                 aka "Palmer Dabbelt <palmer@sifive.com>" [unknown]
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: 00CE 76D1 8349 60DF CE88  6DF8 EF4C A150 2CCB AB41
      
      * remotes/palmer/tags/riscv-for-master-4.1-sf1-v3: (32 commits)
        hw/riscv: Extend the kernel loading support
        hw/riscv: Add support for loading a firmware
        hw/riscv: Split out the boot functions
        riscv: sifive_u: Update the plic hart config to support multicore
        riscv: sifive_u: Do not create hard-coded phandles in DT
        disas/riscv: Fix `rdinstreth` constraint
        disas/riscv: Disassemble reserved compressed encodings as illegal
        riscv: virt: Add cpu-topology DT node.
        RISC-V: Update syscall list for 32-bit support.
        RISC-V: Clear load reservations on context switch and SC
        RISC-V: Add support for the Zicsr extension
        RISC-V: Add support for the Zifencei extension
        target/riscv: Add support for disabling/enabling Counters
        target/riscv: Remove user version information
        target/riscv: Require either I or E base extension
        qemu-deprecated.texi: Deprecate the RISC-V privledge spec 1.09.1
        target/riscv: Set privledge spec 1.11.0 as default
        target/riscv: Add the mcountinhibit CSR
        target/riscv: Add the privledge spec version 1.11.0
        target/riscv: Restructure deprecatd CPUs
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      aff8cee8
    • P
      Merge remote-tracking branch 'remotes/mcayland/tags/qemu-sparc-20190702' into staging · b2e1bc59
      Peter Maydell 提交于
      qemu-sparc queue
      
      # gpg: Signature made Tue 02 Jul 2019 23:14:13 BST
      # gpg:                using RSA key CC621AB98E82200D915CC9C45BC2C56FAE0F321F
      # gpg:                issuer "mark.cave-ayland@ilande.co.uk"
      # gpg: Good signature from "Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>" [full]
      # Primary key fingerprint: CC62 1AB9 8E82 200D 915C  C9C4 5BC2 C56F AE0F 321F
      
      * remotes/mcayland/tags/qemu-sparc-20190702:
        sunhme: ensure that RX descriptor ring overflow is indicated to client driver
        sunhme: fix return values from sunhme_receive() during receive packet processing
        sunhme: flush any queued packets when HME_MAC_RXCFG_ENABLE bit is raised
        sunhme: fix incorrect constant in sunhme_can_receive()
        sunhme: add trace event for logging PCI IRQ
        sun4m: set default display type to TCX
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      b2e1bc59
    • P
      Merge remote-tracking branch 'remotes/kraxel/tags/vga-20190703-pull-request' into staging · f0577c61
      Peter Maydell 提交于
      vga: virtio fixes, bitbang i2c asan fix, install ati vgabios.
      
      # gpg: Signature made Wed 03 Jul 2019 09:53:44 BST
      # gpg:                using RSA key 4CB6D8EED3E87138
      # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
      # gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
      # gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
      # Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138
      
      * remotes/kraxel/tags/vga-20190703-pull-request:
        Add ati vgabios to INSTALL_BLOBS.
        hw/i2c/bitbang_i2c: Use in-place rather than malloc'd bitbang_i2c_interface struct
        virtio-gpu: check if the resource already exists in virtio_gpu_load()
        virtio-gpu: fix unmap in error path
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      f0577c61
    • P
      Merge remote-tracking branch 'remotes/amarkovic/tags/mips-queue-jul-02-2019' into staging · c204e342
      Peter Maydell 提交于
      MIPS queue for July 2nd, 2019
      
      # gpg: Signature made Tue 02 Jul 2019 17:09:29 BST
      # gpg:                using RSA key D4972A8967F75A65
      # gpg: Good signature from "Aleksandar Markovic <amarkovic@wavecomp.com>" [unknown]
      # gpg: WARNING: This key is not certified with a trusted signature!
      # gpg:          There is no indication that the signature belongs to the owner.
      # Primary key fingerprint: 8526 FBF1 5DA3 811F 4A01  DD75 D497 2A89 67F7 5A65
      
      * remotes/amarkovic/tags/mips-queue-jul-02-2019:
        target/mips: Correct helper for MSA FCLASS.<W|D> instructions
        target/mips: Unroll loops for MSA float max/min instructions
        target/mips: Correct comments in msa_helper.c
        target/mips: Correct comments in translate.c
        tcg/tests: target/mips: Correct MSA test compilation and execution order
        tcg/tests: target/mips: Amend MSA integer multiply tests
        tcg/tests: target/mips: Amend MSA fixed point multiply tests
        hw/mips: Express dependencies of the r4k platform with Kconfig
        hw/mips: Express dependencies of the Jazz machine with Kconfig
        hw/mips: Express dependencies of the MIPSsim machine with Kconfig
        hw/mips: Explicit the semi-hosting feature is always required
        tests/machine-none: Test recent MIPS cpus
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      c204e342
    • P
      Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-4.1-pull-request' into staging · 2b40d231
      Peter Maydell 提交于
      Add statx
      Fix netlink with IFLA_BR_MULTI_BOOLOPT
      Fix mips (EXCP_FPE, struct flock)
      
      # gpg: Signature made Tue 02 Jul 2019 16:05:18 BST
      # gpg:                using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C
      # gpg:                issuer "laurent@vivier.eu"
      # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
      # gpg:                 aka "Laurent Vivier <laurent@vivier.eu>" [full]
      # gpg:                 aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
      # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C
      
      * remotes/vivier2/tags/linux-user-for-4.1-pull-request:
        linux-user: move QEMU_IFLA_BR_MULTI_BOOLOPT to the good function
        linux-user: Handle EXCP_FPE properly for MIPS
        linux-user: Introduce TARGET_HAVE_ARCH_STRUCT_FLOCK
        linux-user: Fix target_flock structure for MIPS O64 ABI
        linux-user: Add support for strace for statx() syscall
        linux-user: Add support for translation of statx() syscall
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      2b40d231
  3. 03 7月, 2019 10 次提交
    • M
      Makefile: Reuse all's recursion machinery for clean and install · 1338a4b7
      Markus Armbruster 提交于
      Targets "clean" and "install" run make recursively in a for loop.
      This ignores -j and -k.  Target "all" depends on SUBDIR/all to recurse
      into each SUBDIR.  Behaves nicely with -j and -k.  Put that to use for
      "clean" and "install": depend on SUBDIR/clean or SUBDIR/install,
      respectively, and delete the loop.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Message-Id: <20190528082308.22032-5-armbru@redhat.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      1338a4b7
    • M
      Makefile: Rename targets for make recursion · 3b8593ee
      Markus Armbruster 提交于
      We make a few sub-directories recursively, in particular
      $(TARGET_DIRS).
      
      For goal "all", we do it the nice way: "all" has a prerequisite
      subdir-T for each T in $(TARGET_DIRS), and T's recipe runs make
      recursively.  Behaves nicely with -j and -k.
      
      For other goals such as "clean" and "install", the recipe runs make
      recursively in a for loop.  Ignores -j and -k.
      
      The next commit will fix that for "clean" and "install".  This commit
      prepares the ground by renaming the targets we use for "all" to
      include the goal for the sub-make.  This will permit reusing them for
      goals other than "all".
      
      Targets subdir-T for T in $(TARGET_DIRS) run "make all" in T.  Rename
      to T/all, and declare phony.
      
      Targets romsubdir-R for R in $(ROMS) run "make" in pc-bios/R.  Default
      goal is "all" for all R.  Rename to pc-bios/R/all, and declare phony.
      
      The remainder are renamed just for consistency.
      
      Target subdir-dtc runs "make libbft/libfdt.a" in dtc.  Rename to
      dtc/all, and declare phony.
      
      Target subdir-capstone runs make $(BUILD_DIR)/capstone/$(LIBCAPSTONE)
      in $(SRC_PATH)/capstone.  Rename to capstone/all, and declare phony.
      
      Target subdir-slirp runs "make" in $(SRC_PATH)/slirp.  Default goal is
      all, which builds $(BUILD_DIR)/libslirp.a.  Rename to slirp/all, and
      declare phony.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Tested-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-Id: <20190528082308.22032-4-armbru@redhat.com>
      [Add compatibility gunk to keep make working across the rename]
      3b8593ee
    • G
      console: fix cell overflow · 5b8541c6
      Gerd Hoffmann 提交于
      Linux terminal behavior (coming from vt100 I think) is somewhat strange
      when it comes to line wraps:  When a character is printed to the last
      char cell of a line the cursor does NOT jump to the next line but stays
      where it is.  The line feed happens when the next character is printed.
      
      So the valid range for the cursor position is not 0 .. width-1 but
      0 .. width, where x == width represents the state where the line is
      full but the cursor didn't jump to the next line yet.
      
      The code for the 'clear from start of line' control sequence (ESC[1K)
      fails to handle this corner case correctly and may call
      console_clear_xy() with x == width.  That will incorrectly clear the
      first char cell of the next line, or in case the cursor happens to be on
      the last line overflow the cell buffer by one character (three bytes).
      
      Add a check to the loop to fix that.
      
      Didn't spot any other places with the same problem.  But it's easy to
      miss that corner case, so also allocate one extra cell as precaution, so
      in case we have simliar issues lurking elsewhere it at least wouldn't be
      a buffer overflow.
      
      v2: squashed in additional checks suggested by Christophe de Dinechin.
      Reported-by: NAlexander Oleinik <alxndr@bu.edu>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Reviewed-by: NChristophe de Dinechin <dinechin@redhat.com>
      Message-id: 20190701075301.14165-1-kraxel@redhat.com
      5b8541c6
    • G
      Add ati vgabios to INSTALL_BLOBS. · 0a87fd69
      Gerd Hoffmann 提交于
      Fixes: 0cca7e7bReported-by: NBruce Rogers <BROGERS@suse.com>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Message-id: 20190703045212.31039-1-kraxel@redhat.com
      0a87fd69
    • P
      hw/i2c/bitbang_i2c: Use in-place rather than malloc'd bitbang_i2c_interface struct · 41742927
      Peter Maydell 提交于
      Currently the bitbang_i2c_init() function allocates a
      bitbang_i2c_interface struct which it returns.  This is unfortunate
      because it means that if the function is used from a DeviceState
      init method then the memory will be leaked by an "init then delete"
      cycle, as used by the qmp/hmp commands that list device properties.
      
      Since three out of four of the uses of this function are in
      device init methods, switch the function to do an in-place
      initialization of a struct that can be embedded in the
      device state struct of the caller.
      
      This fixes LeakSanitizer leak warnings that have appeared in the
      patchew configuration (which only tries to run the sanitizers
      for the x86_64-softmmu target) now that we use the bitbang-i2c
      code in an x86-64 config.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NBALATON Zoltan <balaton@eik.bme.hu>
      Tested-by: NBALATON Zoltan <balaton@eik.bme.hu>
      Acked-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
      Message-id: 20190702163844.20458-1-peter.maydell@linaro.org
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      41742927
    • L
      virtio-gpu: check if the resource already exists in virtio_gpu_load() · b0ee78ff
      Li Qiang 提交于
      While loading virtio-gpu, the data can be malicious, we
      should check if the resource already exists.
      Signed-off-by: NLi Qiang <liq3ea@163.com>
      Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
      Message-id: 20190628161358.10400-1-liq3ea@163.com
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      b0ee78ff
    • G
      virtio-gpu: fix unmap in error path · a7f85e03
      Gerd Hoffmann 提交于
      We land here in case not everything we've asked for could be mapped.
      So unmap only the bytes which have actually been mapped.
      
      Also we didn't access anything, so acces_len can be 0.
      Reported-by: NLaszlo Ersek <lersek@redhat.com>
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Reviewed-by: NLaszlo Ersek <lersek@redhat.com>
      Reviewed-by: NLi Qiang <liq3ea@gmail.com>
      Message-id: 20190628072357.31782-1-kraxel@redhat.com
      a7f85e03
    • M
      fix microphone lag with PA · 58c15e52
      Martin Schrodt 提交于
      Several people have reported to have bag microphone lag with the PA
      backend. While I cannot reproduce the problem here, it seems that their
      PA somehow decides to buffer the microphone input for way too long,
      causing this delay. This patch sets an upper limit to the amount of
      data PA should hold. This fixes the problem reliably on their side,
      while having no adverse effects on mine.
      Signed-off-by: NMartin Schrodt <martin@schrodt.org>
      Message-id: 20190615153852.99040-1-martin@schrodt.org
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      58c15e52
    • P
      Merge remote-tracking branch 'remotes/armbru/tags/pull-monitor-2019-07-02-v2' into staging · 374f63f6
      Peter Maydell 提交于
      Monitor patches for 2019-07-02
      
      # gpg: Signature made Tue 02 Jul 2019 12:37:57 BST
      # gpg:                using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653
      # gpg:                issuer "armbru@redhat.com"
      # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full]
      # gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>" [full]
      # Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653
      
      * remotes/armbru/tags/pull-monitor-2019-07-02-v2:
        dump: Move HMP command handlers to dump/
        MAINTAINERS: Add Windows dump to section "Dump"
        dump: Move the code to dump/
        qapi: Split dump.json off misc.json
        qapi: Rename target.json to misc-target.json
        qapi: Split machine-target.json off target.json and misc.json
        hw/core: Collect HMP command handlers in hw/core/
        hw/core: Collect QMP command handlers in hw/core/
        hw/core: Move numa.c to hw/core/
        qapi: Split machine.json off misc.json
        MAINTAINERS: Merge sections CPU, NUMA into Machine core
        qom: Move HMP command handlers to qom/
        qom: Move QMP command handlers to qom/
        qapi: Split qom.json and qdev.json off misc.json
        hmp: Move hmp.h to include/monitor/
        Makefile: Don't add monitor/ twice to common-obj-y
        MAINTAINERS: Make section "QOM" cover qdev as well
        MAINTAINERS: new maintainers for QOM
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      374f63f6
    • M
      sunhme: ensure that RX descriptor ring overflow is indicated to client driver · 09340f49
      Mark Cave-Ayland 提交于
      On very busy networks connected via a tap interface, it is possible to overflow
      the RX descriptor ring in the time between the client driver enabling the RX
      MAC and finishing writing the final configuration to the NIC registers.
      
      Ensure that we detect this condition and update the status register accordingly
      to indicate an overflow has occurred (and the incoming packet dropped) in order
      to prevent the client driver becoming confused.
      Signed-off-by: NMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      09340f49