From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: Andreas Politz Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 25 Nov 2018 11:45:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 33498@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.154314624828836 (code B ref -1); Sun, 25 Nov 2018 11:45:01 +0000 Received: (at submit) by debbugs.gnu.org; 25 Nov 2018 11:44:08 +0000 Received: from localhost ([127.0.0.1]:46082 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gQspb-0007V1-Lj for submit@debbugs.gnu.org; Sun, 25 Nov 2018 06:44:08 -0500 Received: from eggs.gnu.org ([208.118.235.92]:51185) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gQspZ-0007UQ-Iv for submit@debbugs.gnu.org; Sun, 25 Nov 2018 06:44:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gQspQ-0007ed-Tz for submit@debbugs.gnu.org; Sun, 25 Nov 2018 06:44:00 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:54433) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gQspQ-0007eS-QB for submit@debbugs.gnu.org; Sun, 25 Nov 2018 06:43:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60767) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gQspO-0002eA-G1 for bug-gnu-emacs@gnu.org; Sun, 25 Nov 2018 06:43:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gQspI-0007YA-D1 for bug-gnu-emacs@gnu.org; Sun, 25 Nov 2018 06:43:52 -0500 Received: from gateway-a.fh-trier.de ([143.93.54.181]:33053) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gQspH-0007VL-9E for bug-gnu-emacs@gnu.org; Sun, 25 Nov 2018 06:43:48 -0500 X-Virus-Scanned: by Amavisd-new + Sophos + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (x4dbda2e4.dyn.telefonica.de [77.189.162.228]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 23B6E17D05D8 for ; Sun, 25 Nov 2018 12:43:41 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1543146221; bh=5WFFg1CgCwdVo1Hoe+djJ2HhOko=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=njYqPmuD9hIYv5Qo4Vh4wWnqz61Xfd9wblsupUMnVlXapVVz8ShoMuoS3YUpvFVDS yMDKD9y7lcusdK/qgtihDNDB1L7W8p193i2mBnxFNdnFfTNoEvJlMIxo+KRWGsPeMj gVkoYRfqXaBdES8NB9lYUlbWVXWx1X+AlTabbGrQ= From: Andreas Politz Date: Sun, 25 Nov 2018 12:43:40 +0100 Message-ID: <8736rpfklv.fsf@hochschule-trier.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) When a frame is both the child-frame and the minibuffer-frame of some other frame, this other frame can not be delete anymore. Starting from emacs -Q: #+BEGIN_SRC emacs-lisp (defvar initial-frame (selected-frame)) ;; Create the parent without minibuffer. (defvar parent-frame (make-frame '((minibuffer . nil)))) ;; Create the child as minibuffer-only. (defvar child-frame (make-frame `((parent-frame . ,parent-frame) (minibuffer . only) (height . 1) (keep-ration . t)))) ;; Make the child the minibuffer frame of the parent. (modify-frame-parameters parent-frame `((minibuffer . ,(minibuffer-window child-frame)))) ;; Situation: The parent/child frames can not be deleted anymore. ;; None of the following operations succeed. ;; Delete parent (with-demoted-errors "%S" (delete-frame parent-frame)) ;; Delete child (with-demoted-errors "%S" (delete-frame child-frame)) ;; Delete both (with-demoted-errors "%S" (delete-other-frames initial-frame)) (switch-to-buffer "*Messages*") ;; "Attempt to delete a surrogate minibuffer frame" [3 times] ;; A workaround is to untie the child frame from its parent before ;; deleting it. (set-frame-parameter child-frame 'parent-frame nil) (delete-frame parent-frame) #+END_SRC In GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2018-07-05 built on juergen Windowing system distributor 'The X.Org Foundation', version 11.0.12003000 System Description: Arch Linux Recent messages: Mark set Auto-saving...done Mark set [2 times] Quit Undo! Mark saved where search started Type "q" in help window to restore its previous buffer. Auto-saving... Mark set [2 times] Making completion list... Configured using: 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-modules 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS LIBSYSTEMD LCMS2 Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Org Minor modes in effect: diff-auto-refine-mode: t shell-dirtrack-mode: t what-mode: t TeX-PDF-mode: t pdf-occur-global-minor-mode: t org-bullets-mode: t sane/sync-mail-mode: t override-global-mode: t save-place-mode: t savehist-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t auto-fill-function: org-auto-fill-function transient-mark-mode: t Load-path shadows: /home/politza/.emacs.d/usr/elpa/color-theme-solarized-20171024.1525/solarized-theme hides /home/politza/.emacs.d/usr/elpa/solarized-theme-20181025.1251/solarized-theme /home/politza/.emacs.d/usr/plugins/filecache hides /usr/share/emacs/26.1/lisp/filecache /home/politza/.emacs.d/usr/elpa/org-20181022/ob-latex hides /usr/share/emacs/26.1/lisp/org/ob-latex /home/politza/.emacs.d/usr/elpa/org-20181022/org-mobile hides /usr/share/emacs/26.1/lisp/org/org-mobile /home/politza/.emacs.d/usr/elpa/org-20181022/org-eww hides /usr/share/emacs/26.1/lisp/org/org-eww /home/politza/.emacs.d/usr/elpa/org-20181022/ob-screen hides /usr/share/emacs/26.1/lisp/org/ob-screen /home/politza/.emacs.d/usr/elpa/org-20181022/org-plot hides /usr/share/emacs/26.1/lisp/org/org-plot /home/politza/.emacs.d/usr/elpa/org-20181022/org-capture hides /usr/share/emacs/26.1/lisp/org/org-capture /home/politza/.emacs.d/usr/elpa/org-20181022/ob-org hides /usr/share/emacs/26.1/lisp/org/ob-org /home/politza/.emacs.d/usr/elpa/org-20181022/ox-ascii hides /usr/share/emacs/26.1/lisp/org/ox-ascii /home/politza/.emacs.d/usr/elpa/org-20181022/org-agenda hides /usr/share/emacs/26.1/lisp/org/org-agenda /home/politza/.emacs.d/usr/elpa/org-20181022/org-lint hides /usr/share/emacs/26.1/lisp/org/org-lint /home/politza/.emacs.d/usr/elpa/org-20181022/org-protocol hides /usr/share/emacs/26.1/lisp/org/org-protocol /home/politza/.emacs.d/usr/elpa/org-20181022/ox-icalendar hides /usr/share/emacs/26.1/lisp/org/ox-icalendar /home/politza/.emacs.d/usr/elpa/org-20181022/org-gnus hides /usr/share/emacs/26.1/lisp/org/org-gnus /home/politza/.emacs.d/usr/elpa/org-20181022/ob-io hides /usr/share/emacs/26.1/lisp/org/ob-io /home/politza/.emacs.d/usr/elpa/org-20181022/ob-comint hides /usr/share/emacs/26.1/lisp/org/ob-comint /home/politza/.emacs.d/usr/elpa/org-20181022/ob-forth hides /usr/share/emacs/26.1/lisp/org/ob-forth /home/politza/.emacs.d/usr/elpa/org-20181022/ob-matlab hides /usr/share/emacs/26.1/lisp/org/ob-matlab /home/politza/.emacs.d/usr/elpa/org-20181022/org-compat hides /usr/share/emacs/26.1/lisp/org/org-compat /home/politza/.emacs.d/usr/elpa/org-20181022/org-src hides /usr/share/emacs/26.1/lisp/org/org-src /home/politza/.emacs.d/usr/elpa/org-20181022/ob-stan hides /usr/share/emacs/26.1/lisp/org/ob-stan /home/politza/.emacs.d/usr/elpa/org-20181022/ob-ditaa hides /usr/share/emacs/26.1/lisp/org/ob-ditaa /home/politza/.emacs.d/usr/elpa/org-20181022/org-bibtex hides /usr/share/emacs/26.1/lisp/org/org-bibtex /home/politza/.emacs.d/usr/elpa/org-20181022/org-feed hides /usr/share/emacs/26.1/lisp/org/org-feed /home/politza/.emacs.d/usr/elpa/org-20181022/org-bbdb hides /usr/share/emacs/26.1/lisp/org/org-bbdb /home/politza/.emacs.d/usr/elpa/org-20181022/ox-texinfo hides /usr/share/emacs/26.1/lisp/org/ox-texinfo /home/politza/.emacs.d/usr/elpa/org-20181022/org-entities hides /usr/share/emacs/26.1/lisp/org/org-entities /home/politza/.emacs.d/usr/elpa/org-20181022/ob-css hides /usr/share/emacs/26.1/lisp/org/ob-css /home/politza/.emacs.d/usr/elpa/org-20181022/org-macro hides /usr/share/emacs/26.1/lisp/org/org-macro /home/politza/.emacs.d/usr/elpa/org-20181022/org-crypt hides /usr/share/emacs/26.1/lisp/org/org-crypt /home/politza/.emacs.d/usr/elpa/org-20181022/ob-core hides /usr/share/emacs/26.1/lisp/org/ob-core /home/politza/.emacs.d/usr/elpa/org-20181022/ox-latex hides /usr/share/emacs/26.1/lisp/org/ox-latex /home/politza/.emacs.d/usr/elpa/org-20181022/ob-sass hides /usr/share/emacs/26.1/lisp/org/ob-sass /home/politza/.emacs.d/usr/elpa/org-20181022/org-mouse hides /usr/share/emacs/26.1/lisp/org/org-mouse /home/politza/.emacs.d/usr/elpa/org-20181022/org-info hides /usr/share/emacs/26.1/lisp/org/org-info /home/politza/.emacs.d/usr/elpa/org-20181022/ob-shen hides /usr/share/emacs/26.1/lisp/org/ob-shen /home/politza/.emacs.d/usr/elpa/org-20181022/ob-sql hides /usr/share/emacs/26.1/lisp/org/ob-sql /home/politza/.emacs.d/usr/elpa/org-20181022/ob-abc hides /usr/share/emacs/26.1/lisp/org/ob-abc /home/politza/.emacs.d/usr/elpa/org-20181022/ox-html hides /usr/share/emacs/26.1/lisp/org/ox-html /home/politza/.emacs.d/usr/elpa/org-20181022/ob-makefile hides /usr/share/emacs/26.1/lisp/org/ob-makefile /home/politza/.emacs.d/usr/elpa/org-20181022/org-colview hides /usr/share/emacs/26.1/lisp/org/org-colview /home/politza/.emacs.d/usr/elpa/org-20181022/ob-plantuml hides /usr/share/emacs/26.1/lisp/org/ob-plantuml /home/politza/.emacs.d/usr/elpa/org-20181022/ob-scheme hides /usr/share/emacs/26.1/lisp/org/ob-scheme /home/politza/.emacs.d/usr/elpa/org-20181022/ob-ref hides /usr/share/emacs/26.1/lisp/org/ob-ref /home/politza/.emacs.d/usr/elpa/org-20181022/ob-picolisp hides /usr/share/emacs/26.1/lisp/org/ob-picolisp /home/politza/.emacs.d/usr/elpa/org-20181022/ob hides /usr/share/emacs/26.1/lisp/org/ob /home/politza/.emacs.d/usr/elpa/org-20181022/ob-js hides /usr/share/emacs/26.1/lisp/org/ob-js /home/politza/.emacs.d/usr/elpa/org-20181022/ob-octave hides /usr/share/emacs/26.1/lisp/org/ob-octave /home/politza/.emacs.d/usr/elpa/org-20181022/ob-calc hides /usr/share/emacs/26.1/lisp/org/ob-calc /home/politza/.emacs.d/usr/elpa/org-20181022/ob-eval hides /usr/share/emacs/26.1/lisp/org/ob-eval /home/politza/.emacs.d/usr/elpa/org-20181022/org-indent hides /usr/share/emacs/26.1/lisp/org/org-indent /home/politza/.emacs.d/usr/elpa/org-20181022/org-eshell hides /usr/share/emacs/26.1/lisp/org/org-eshell /home/politza/.emacs.d/usr/elpa/org-20181022/ob-mscgen hides /usr/share/emacs/26.1/lisp/org/ob-mscgen /home/politza/.emacs.d/usr/elpa/org-20181022/ob-vala hides /usr/share/emacs/26.1/lisp/org/ob-vala /home/politza/.emacs.d/usr/elpa/org-20181022/ob-C hides /usr/share/emacs/26.1/lisp/org/ob-C /home/politza/.emacs.d/usr/elpa/org-20181022/org-list hides /usr/share/emacs/26.1/lisp/org/org-list /home/politza/.emacs.d/usr/elpa/org-20181022/ob-lisp hides /usr/share/emacs/26.1/lisp/org/ob-lisp /home/politza/.emacs.d/usr/elpa/org-20181022/ox-publish hides /usr/share/emacs/26.1/lisp/org/ox-publish /home/politza/.emacs.d/usr/elpa/org-20181022/org-docview hides /usr/share/emacs/26.1/lisp/org/org-docview /home/politza/.emacs.d/usr/elpa/org-20181022/ob-keys hides /usr/share/emacs/26.1/lisp/org/ob-keys /home/politza/.emacs.d/usr/elpa/org-20181022/ox-org hides /usr/share/emacs/26.1/lisp/org/ox-org /home/politza/.emacs.d/usr/elpa/org-20181022/ob-asymptote hides /usr/share/emacs/26.1/lisp/org/ob-asymptote /home/politza/.emacs.d/usr/elpa/org-20181022/ob-ocaml hides /usr/share/emacs/26.1/lisp/org/ob-ocaml /home/politza/.emacs.d/usr/elpa/org-20181022/org-loaddefs hides /usr/share/emacs/26.1/lisp/org/org-loaddefs /home/politza/.emacs.d/usr/elpa/org-20181022/ob-shell hides /usr/share/emacs/26.1/lisp/org/ob-shell /home/politza/.emacs.d/usr/elpa/org-20181022/org-habit hides /usr/share/emacs/26.1/lisp/org/org-habit /home/politza/.emacs.d/usr/elpa/org-20181022/org-clock hides /usr/share/emacs/26.1/lisp/org/org-clock /home/politza/.emacs.d/usr/elpa/org-20181022/org-pcomplete hides /usr/share/emacs/26.1/lisp/org/org-pcomplete /home/politza/.emacs.d/usr/elpa/org-20181022/ob-lilypond hides /usr/share/emacs/26.1/lisp/org/ob-lilypond /home/politza/.emacs.d/usr/elpa/org-20181022/ob-tangle hides /usr/share/emacs/26.1/lisp/org/ob-tangle /home/politza/.emacs.d/usr/elpa/org-20181022/ob-hledger hides /usr/share/emacs/26.1/lisp/org/ob-hledger /home/politza/.emacs.d/usr/elpa/org-20181022/ob-dot hides /usr/share/emacs/26.1/lisp/org/ob-dot /home/politza/.emacs.d/usr/elpa/org-20181022/ox hides /usr/share/emacs/26.1/lisp/org/ox /home/politza/.emacs.d/usr/elpa/org-20181022/ob-python hides /usr/share/emacs/26.1/lisp/org/ob-python /home/politza/.emacs.d/usr/elpa/org-20181022/org-macs hides /usr/share/emacs/26.1/lisp/org/org-macs /home/politza/.emacs.d/usr/elpa/org-20181022/ob-groovy hides /usr/share/emacs/26.1/lisp/org/ob-groovy /home/politza/.emacs.d/usr/elpa/org-20181022/ob-J hides /usr/share/emacs/26.1/lisp/org/ob-J /home/politza/.emacs.d/usr/elpa/org-20181022/org-id hides /usr/share/emacs/26.1/lisp/org/org-id /home/politza/.emacs.d/usr/elpa/org-20181022/ob-clojure hides /usr/share/emacs/26.1/lisp/org/ob-clojure /home/politza/.emacs.d/usr/elpa/org-20181022/ob-perl hides /usr/share/emacs/26.1/lisp/org/ob-perl /home/politza/.emacs.d/usr/elpa/org-20181022/org-w3m hides /usr/share/emacs/26.1/lisp/org/org-w3m /home/politza/.emacs.d/usr/elpa/org-20181022/ox-md hides /usr/share/emacs/26.1/lisp/org/ox-md /home/politza/.emacs.d/usr/elpa/org-20181022/org-mhe hides /usr/share/emacs/26.1/lisp/org/org-mhe /home/politza/.emacs.d/usr/elpa/org-20181022/org-attach hides /usr/share/emacs/26.1/lisp/org/org-attach /home/politza/.emacs.d/usr/elpa/org-20181022/org-datetree hides /usr/share/emacs/26.1/lisp/org/org-datetree /home/politza/.emacs.d/usr/elpa/org-20181022/ob-ledger hides /usr/share/emacs/26.1/lisp/org/ob-ledger /home/politza/.emacs.d/usr/elpa/org-20181022/ob-sed hides /usr/share/emacs/26.1/lisp/org/ob-sed /home/politza/.emacs.d/usr/elpa/org-20181022/ob-lob hides /usr/share/emacs/26.1/lisp/org/ob-lob /home/politza/.emacs.d/usr/elpa/org-20181022/org-table hides /usr/share/emacs/26.1/lisp/org/org-table /home/politza/.emacs.d/usr/elpa/org-20181022/org-archive hides /usr/share/emacs/26.1/lisp/org/org-archive /home/politza/.emacs.d/usr/elpa/org-20181022/org-version hides /usr/share/emacs/26.1/lisp/org/org-version /home/politza/.emacs.d/usr/elpa/org-20181022/ob-awk hides /usr/share/emacs/26.1/lisp/org/ob-awk /home/politza/.emacs.d/usr/elpa/org-20181022/ox-odt hides /usr/share/emacs/26.1/lisp/org/ox-odt /home/politza/.emacs.d/usr/elpa/org-20181022/ob-maxima hides /usr/share/emacs/26.1/lisp/org/ob-maxima /home/politza/.emacs.d/usr/elpa/org-20181022/org-footnote hides /usr/share/emacs/26.1/lisp/org/org-footnote /home/politza/.emacs.d/usr/elpa/org-20181022/org-irc hides /usr/share/emacs/26.1/lisp/org/org-irc /home/politza/.emacs.d/usr/elpa/org-20181022/org-ctags hides /usr/share/emacs/26.1/lisp/org/org-ctags /home/politza/.emacs.d/usr/elpa/org-20181022/ob-ebnf hides /usr/share/emacs/26.1/lisp/org/ob-ebnf /home/politza/.emacs.d/usr/elpa/org-20181022/org-install hides /usr/share/emacs/26.1/lisp/org/org-install /home/politza/.emacs.d/usr/elpa/org-20181022/org hides /usr/share/emacs/26.1/lisp/org/org /home/politza/.emacs.d/usr/elpa/org-20181022/ob-java hides /usr/share/emacs/26.1/lisp/org/ob-java /home/politza/.emacs.d/usr/elpa/org-20181022/ob-emacs-lisp hides /usr/share/emacs/26.1/lisp/org/ob-emacs-lisp /home/politza/.emacs.d/usr/elpa/org-20181022/ox-man hides /usr/share/emacs/26.1/lisp/org/ox-man /home/politza/.emacs.d/usr/elpa/org-20181022/ox-beamer hides /usr/share/emacs/26.1/lisp/org/ox-beamer /home/politza/.emacs.d/usr/elpa/org-20181022/ob-sqlite hides /usr/share/emacs/26.1/lisp/org/ob-sqlite /home/politza/.emacs.d/usr/elpa/org-20181022/ob-exp hides /usr/share/emacs/26.1/lisp/org/ob-exp /home/politza/.emacs.d/usr/elpa/org-20181022/ob-haskell hides /usr/share/emacs/26.1/lisp/org/ob-haskell /home/politza/.emacs.d/usr/elpa/org-20181022/ob-gnuplot hides /usr/share/emacs/26.1/lisp/org/ob-gnuplot /home/politza/.emacs.d/usr/elpa/org-20181022/ob-ruby hides /usr/share/emacs/26.1/lisp/org/ob-ruby /home/politza/.emacs.d/usr/elpa/org-20181022/org-inlinetask hides /usr/share/emacs/26.1/lisp/org/org-inlinetask /home/politza/.emacs.d/usr/elpa/org-20181022/ob-lua hides /usr/share/emacs/26.1/lisp/org/ob-lua /home/politza/.emacs.d/usr/elpa/org-20181022/org-timer hides /usr/share/emacs/26.1/lisp/org/org-timer /home/politza/.emacs.d/usr/elpa/org-20181022/ob-R hides /usr/share/emacs/26.1/lisp/org/ob-R /home/politza/.emacs.d/usr/elpa/org-20181022/ob-coq hides /usr/share/emacs/26.1/lisp/org/ob-coq /home/politza/.emacs.d/usr/elpa/org-20181022/ob-table hides /usr/share/emacs/26.1/lisp/org/ob-table /home/politza/.emacs.d/usr/elpa/org-20181022/org-duration hides /usr/share/emacs/26.1/lisp/org/org-duration /home/politza/.emacs.d/usr/elpa/org-20181022/org-rmail hides /usr/share/emacs/26.1/lisp/org/org-rmail /home/politza/.emacs.d/usr/elpa/org-20181022/org-element hides /usr/share/emacs/26.1/lisp/org/org-element /home/politza/.emacs.d/usr/elpa/org-20181022/ob-fortran hides /usr/share/emacs/26.1/lisp/org/ob-fortran /home/politza/.emacs.d/usr/elpa/org-20181022/ob-processing hides /usr/share/emacs/26.1/lisp/org/ob-processing /home/politza/.emacs.d/usr/elpa/org-20181022/org-faces hides /usr/share/emacs/26.1/lisp/org/org-faces Features: (shadow sort gnus-cite mail-extr nndraft nnmh utf-7 network-stream nsm starttls nnfolder nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig mailcap emacsbug sendmail org-rmail org-mhe org-irc org-info org-gnus nnir gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source tls gnutls utf7 netrc nnoo gnus-spec gnus-int gnus-range message rmc puny rfc822 mml mml-sec epa epg mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr org-docview doc-view org-bibtex bibtex org-bbdb org-w3m info-look eieio-opt speedbar sb-image ezimage dframe ispell misearch multi-isearch dabbrev cl-print rect help-fns radix-tree vc-git diff-mode cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs view files-x tramp-cache tramp-sh tramp tramp-compat tramp-loaddefs trampver ucs-normalize shell parse-time filecache dictcc ivy delsel colir color ivy-overlay ffap what derived what-conf company pcase racer pos-tip thingatpt f s etags xref project dash rust-mode json map gud ediff-merg ediff-wind ediff-diff ediff-mult ediff-help ediff-init ediff-util ediff tex dbus xml crm pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch let-alist pdf-misc imenu pdf-tools cus-edit wid-edit pdf-view bookmark pp jka-compr pdf-cache pdf-info tq pdf-util image-mode restart-emacs desktop frameset org-bullets ob-plantuml completion-dyninit subr-x bind-key man cl-extra help-mode use-package-core dired-x dired dired-loaddefs server saveplace savehist edmacro kmacro grep cus-start cus-load org-element avl-tree generator org advice org-macro org-footnote org-pcomplete pcomplete org-list org-faces org-entities noutline outline easy-mmode org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs elec-pair compile comint ansi-color ring finder-inf tex-site rx info package easymenu epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 655055 55393) (symbols 48 53438 1) (miscs 40 1993 1159) (strings 32 178914 10155) (string-bytes 1 5527254) (vectors 16 82566) (vector-slots 8 1416768 33222) (floats 8 534 500) (intervals 56 5365 777) (buffers 992 34)) From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 25 Nov 2018 17:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andreas Politz , 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.154316764813064 (code B ref 33498); Sun, 25 Nov 2018 17:41:01 +0000 Received: (at 33498) by debbugs.gnu.org; 25 Nov 2018 17:40:48 +0000 Received: from localhost ([127.0.0.1]:47555 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gQyOm-0003Od-67 for submit@debbugs.gnu.org; Sun, 25 Nov 2018 12:40:48 -0500 Received: from mout.gmx.net ([212.227.15.19]:38963) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gQyOk-0003OQ-1x for 33498@debbugs.gnu.org; Sun, 25 Nov 2018 12:40:46 -0500 Received: from [192.168.1.101] ([46.125.250.102]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Lp3sy-1foJef0reG-00eqlD; Sun, 25 Nov 2018 18:40:33 +0100 Message-ID: <5BFADE8C.9040500@gmx.at> Date: Sun, 25 Nov 2018 18:40:28 +0100 From: martin rudalics MIME-Version: 1.0 References: <8736rpfklv.fsf@hochschule-trier.de> In-Reply-To: <8736rpfklv.fsf@hochschule-trier.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:eC4rqJ2RIzcmGm3qZIQ6MBhBQAlUBOBXgLUXZcnzK1pjAbnXeKa xB6zSJ4LxbkNF/0VmcrqUgyNpdoeNURSMpR8CCiZeko0mJg/7sKUJ6uTkuJ38RSa097UStf 3c0cSXH+cllPwkFpRsGn4Wr9pRCE1gEL39KwUbcGrw4o9dC3FqIObf+H0vPHafhYyBgFcU+ i9AyGy2xa1qfYxjeR05Yg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:xrYMjGgPIw8=:3xurisbwVIfRL09RlYGlEY dzFc9HQjmGLlaHkCtz9L2JGomPOga7IY98IJvRzVYbcXWzSecq0Z77SVnJaXEVrXZ0lw8LiM2 q/Zli69+PNSVsE8Pbx93U4lOyu2BCoz5NnfvqcMuTktvd2qCactQHVb3tMzEiDnfOpzuv12rD Pb1ko7JhkD/6uTkyvFio15hV9B5w6hywGrh6ks0o2fBQOPMdgZ+jqSQ4rq3pLyLmfx46uT/lU tFz0I5bX8QSUYlzp/Qw7M4WHBgYoJnkPxvfcuFgzwzElNgYHvyNhCliwCumFgxNGIXRI7m1YH e4zrySz1MjicIFuya9Vi5IJ/WuTAANWaKDEWuK6/baF3hS2ynNYP4rPDE4DsbglwTqJY5/DD9 w1D70imireJDYNgxmcAIpLlba3CB2m4s3KIG6wIuvLaNgdn1LpiTkosqBfgjB1GJPnejsPE2K HomQPprusFAO6ckuw4YF8V0SVo3YghANALbsbwI8r/xrvPhsSrWqyUuhoP2m7M24WnFFe7y6o D9zN+1DqxgLIlgOIjwbcX+a4EdkAuoN9Fd//R8mU8SEvWX/j+Z7CIRWpkmQNZ5yt2DvbP1hd9 CJc3OatJ1mmN9Ilz779i5xtPFbeK81MGvdKBSudWpzW7NDAQovXZkCs1pCaOVFyRKxIUm5uiK qFZ1agC9iOvj9OwlfmSoS/dyBhgeH6Zezo84C5rLS+N27WMSahis3bmls/0s+34klxWWNPgjL JSI7hY5hEMZuN45Dyctd/5QJgbPrS58l7VpRDvr3qVj6DgF/KqmvGlcaD7/AQQMwzzlvLr2vD e+vTvMbL3e85k9v2h4rXEAr0mbL2ihVvPwB5LC15SYcsk9TturJ0GmAdPvg1lCg0VLf3ouYav fUJhdoyOQOLZW0RbsHJjmIpoOcWYzoyZmfOoZarCca+VgsX7/31S/nO8/fhisw X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > When a frame is both the child-frame and the minibuffer-frame of some > other frame, this other frame can not be delete anymore. Right. > (keep-ration . t)))) 'keep-ratio', not 'keep-ration' - but it's not useful here anyway IMO. You probably want to make sure that the child frame auto-resizes, though. I wrote the corresponding code already but it still needs some work: It doesn't yet look at the height of the parent frame and probably should allow for aligning at the bottom of the latter as well. > ;; A workaround is to untie the child frame from its parent before > ;; deleting it. > (set-frame-parameter child-frame 'parent-frame nil) > (delete-frame parent-frame) Correct. But that's just the inverse from what you did when you created the parent-child configuration. So it's not a workaround but the canonical way. BTW, I wrote the reparent code to accomplish doing precisely what you did here, reparenting doesn't make much sense elsewhere. And I plan to document that. But without the possibility to auto-resize child frames, the whole concept is not very attractive yet. Thanks, martin From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: Andreas Politz Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 25 Nov 2018 18:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.154317050817696 (code B ref 33498); Sun, 25 Nov 2018 18:29:01 +0000 Received: (at 33498) by debbugs.gnu.org; 25 Nov 2018 18:28:28 +0000 Received: from localhost ([127.0.0.1]:47575 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gQz8u-0004bL-2H for submit@debbugs.gnu.org; Sun, 25 Nov 2018 13:28:28 -0500 Received: from gateway-a.fh-trier.de ([143.93.54.181]:56186) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gQz8s-0004bD-AT for 33498@debbugs.gnu.org; Sun, 25 Nov 2018 13:28:26 -0500 X-Virus-Scanned: by Amavisd-new + Sophos + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (x4dbda2e4.dyn.telefonica.de [77.189.162.228]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id B3CA317D0808; Sun, 25 Nov 2018 19:28:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1543170502; bh=+e9Zv4FUwtOr+Vk727QxAff0Rjw=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=RYISXOKe9bp7yinliamJW3le4Rpd7oto5v7qlDIzvLS2tfjVv62ib527Gm7W79yfo jdjR/MA/2Vw8qaWaQqLJJG4Vn4MHVGCJ5wxUTqXooe12OUKj1dz+PBzAoOW4NhJ7iO k6wmCFie3+rhiWQFk9cTEOF7Pf0nM4VNRdiVVWqU= From: Andreas Politz References: <8736rpfklv.fsf@hochschule-trier.de> <5BFADE8C.9040500@gmx.at> Date: Sun, 25 Nov 2018 19:28:22 +0100 In-Reply-To: <5BFADE8C.9040500@gmx.at> (martin rudalics's message of "Sun, 25 Nov 2018 18:40:28 +0100") Message-ID: <87h8g5ggft.fsf@hochschule-trier.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) martin rudalics writes: >> (keep-ration . t)))) I must have been hungry. > 'keep-ratio', not 'keep-ration' - but it's not useful here anyway IMO. > You probably want to make sure that the child frame auto-resizes, > though. > I wrote the corresponding code already but it still needs some work: [...] Are you talking about a different feature here ? Because, this is what I understand `keep-ratio' is supposed to be doing. > Correct. But that's just the inverse from what you did when you > created the parent-child configuration. So it's not a workaround but > the canonical way. BTW, I wrote the reparent code to accomplish doing > precisely what you did here, reparenting doesn't make much sense > elsewhere. So, you are saying it's supposed to be like that ? Them, I don't see a reason, why Emacs should disallow deleting the minibuffer-frame as a child-frame in this case. Andreas From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 25 Nov 2018 18:58:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andreas Politz Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.154317224820279 (code B ref 33498); Sun, 25 Nov 2018 18:58:01 +0000 Received: (at 33498) by debbugs.gnu.org; 25 Nov 2018 18:57:28 +0000 Received: from localhost ([127.0.0.1]:47594 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gQzay-0005H1-1M for submit@debbugs.gnu.org; Sun, 25 Nov 2018 13:57:28 -0500 Received: from mout.gmx.net ([212.227.17.22]:49267) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gQzav-0005Gn-Oi for 33498@debbugs.gnu.org; Sun, 25 Nov 2018 13:57:26 -0500 Received: from [192.168.1.101] ([46.125.250.102]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MJXEd-1gOWsn1gh1-0038YD; Sun, 25 Nov 2018 19:57:18 +0100 Message-ID: <5BFAF08C.6080500@gmx.at> Date: Sun, 25 Nov 2018 19:57:16 +0100 From: martin rudalics MIME-Version: 1.0 References: <8736rpfklv.fsf@hochschule-trier.de> <5BFADE8C.9040500@gmx.at> <87h8g5ggft.fsf@hochschule-trier.de> In-Reply-To: <87h8g5ggft.fsf@hochschule-trier.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:9dQZDgJ1rWcqrRTk3ZEO230xtQyfSUcVG8WepXUSktRTNg2ZyJb QVAC/HxdHBkuDgrNoLLDEHNH3CjrYjfSqiFf21bI7/zwRuW1/5e39QRRgfsBFZ8GCoRY0Hk 0Wm71Gn4I2FZHvnaBH562n0FZtbLr6ODS+r/KTpQnYCAODA2Cn93jNbvOwTor+1KH1HlrnV XQbKbDD1nH0FbL2Tl2ouw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:notRyynkQzo=:odtBAqpU9/8XCXlGB5KE/O n0ZY+DNIdBI4Op5PvzQCzfOOrO5bj5QrVLpjMLm9VudpC23As2F06i5YCcibYGrWjmr2oXt4E 7oVDIGQzbqrs9xjhowvn9+FzqkN4b33OsgHGxT1NQSdV7/VJiTC9Neaoz/WOAwPBncZrMoilS +Ouw/S9wU9JPL2vVqzjvUOEuiyEtZXSEQhdUKzgv4i59Zc1COl1/nlsZJ+iEtIBCENDM6bNPX amQkf1MyZ68AXkRKjskwA548OidLJRjny2Mso+9D1q3hWHAk69bBQklKxz147p5iSSDcsucxO K/T1BwyC84UT+Se5NH58iIPSWrNm5dnTcpBc/3hVXbSFWx6AZnm+/RQ6k3N9gVnkLwg99s7JT Dpv+EWoBIKL2MDSJBmvM9bGnUgxz3ZTMTMdX9dMfnD25CwXJhY+bqtYoaWqbu4bFmuwmiLo7H SfFjcoevJGAaaHJnml+Eufbk5O9FBPiezacAuXdxya40T/jQkTOuixcvnQj30quSxgIf40Zwj f/8DL0MhKkE1g0KkP0n8hKLu53rbYddR0+4IerVVdNQBtuIG4Ym/JtrDPJhwFFvBnv07c21Ng u8PiIyufhLOxMm8tsiKYCfJEfBAOBx9UUa4kszEJk12mDeKK4oJBFMnQyT0cML0kLlgYUBpXb suPF4zQEHLL+HVfT3wL84SvoHQDPSdM6jQWxKqguDAvFkJGV7f3aIZCAmYzPqE0i+IOoGxy0g A4pamixErBJ+oqPdDrxkMUbv/tAXLj2I3WgYMxGCjjNqsRc3KOghd6VxhgiTai3hHgsTpPLnq jHgxKqbWiC4TT4sdOleoKj2KR8s0fqBCjBs7tvXlQOiQhLW4shyzSuEiwTj2GxTVrm2AfdyHC hTMRyVQqh+do/hgjH/AWj9hZhwVRpddinROIBWSUvRaVTJhJMZgvwtY6q96Fi0 X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Are you talking about a different feature here ? Because, this is what I > understand `keep-ratio' is supposed to be doing. 'keep-ratio' simply correlates the sizes of a child and its parent frame. If you make a parent frame half its size, 'keep-ratio' makes its child frames half their size as well. What I mean is the usual expanding/shrinking of the minibuffer window you can observe on a normal minibuffer equipped frame. For example, via (message"\n\n"). > So, you are saying it's supposed to be like that ? Yes. > Them, I don't see a > reason, why Emacs should disallow deleting the minibuffer-frame as a > child-frame in this case. For internal reasons each live frame must have a minibuffer window. This is hardcoded in a couple of internal routines and if you remove that restriction (it's the "Attempt to delete a surrogate minibuffer frame" in frame.c) Emacs will crash soon after that. Note that a child frame minibuffer is handled like a normal minibuffer-only frame in this regard. martin From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: Andreas Politz Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 25 Nov 2018 19:34:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.154317439323713 (code B ref 33498); Sun, 25 Nov 2018 19:34:01 +0000 Received: (at 33498) by debbugs.gnu.org; 25 Nov 2018 19:33:13 +0000 Received: from localhost ([127.0.0.1]:47612 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gR09Y-0006AP-Q5 for submit@debbugs.gnu.org; Sun, 25 Nov 2018 14:33:13 -0500 Received: from gateway-a.fh-trier.de ([143.93.54.181]:59954) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gR09W-0006AG-Q9 for 33498@debbugs.gnu.org; Sun, 25 Nov 2018 14:33:11 -0500 X-Virus-Scanned: by Amavisd-new + Sophos + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (x4dbda2e4.dyn.telefonica.de [77.189.162.228]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 65E5217D0995; Sun, 25 Nov 2018 20:33:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1543174387; bh=JGT6rocE0VIxqccLpa+GybJpZ5Y=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=QGBzP+391vzvrpmXpyeD1cyhWUpiK4Er3MI2ztuwwD8fQCpMreGjzgwRZtxpwriB6 gKtlzqNisqKBPh2BEv222RwK4KimdFHdz7P/uVzQRO31KktI53uJWsWIYNpmzX5y0V arKgM/IIEh9ryyL0N9t7Os69k0Fez1pgIerzOv5o= From: Andreas Politz References: <8736rpfklv.fsf@hochschule-trier.de> <5BFADE8C.9040500@gmx.at> <87h8g5ggft.fsf@hochschule-trier.de> <5BFAF08C.6080500@gmx.at> Date: Sun, 25 Nov 2018 20:33:06 +0100 In-Reply-To: <5BFAF08C.6080500@gmx.at> (martin rudalics's message of "Sun, 25 Nov 2018 19:57:16 +0100") Message-ID: <87d0qtgdfx.fsf@hochschule-trier.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) martin rudalics writes: > [...] What I mean is the usual expanding/shrinking of the minibuffer > window you can observe on a normal minibuffer equipped frame. For > example, via (message"\n\n"). I see. > For internal reasons each live frame must have a minibuffer window. > This is hardcoded in a couple of internal routines and if you remove > that restriction (it's the "Attempt to delete a surrogate minibuffer > frame" in frame.c) [...] I don't mean to remove that restriction. But in this case, where the parent is deleted and the child is the parent's minibuffer-frame (and there are no other frame using this minibuffer-frame) this restriction doesn't seem to apply, at least on a conceptual level. >From the point of a user, this means that he either needs to advise `delete-frame' or use a different command in order to delete these kinds of frames. Andreas From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 26 Nov 2018 09:32:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andreas Politz Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.15432246795598 (code B ref 33498); Mon, 26 Nov 2018 09:32:01 +0000 Received: (at 33498) by debbugs.gnu.org; 26 Nov 2018 09:31:19 +0000 Received: from localhost ([127.0.0.1]:47801 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRDEd-0001SE-79 for submit@debbugs.gnu.org; Mon, 26 Nov 2018 04:31:19 -0500 Received: from mout.gmx.net ([212.227.17.22]:60461) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRDEa-0001Rx-Rj for 33498@debbugs.gnu.org; Mon, 26 Nov 2018 04:31:17 -0500 Received: from [192.168.1.101] ([46.125.249.31]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LjJCt-1fpwP30C1X-00dTop; Mon, 26 Nov 2018 10:31:10 +0100 Message-ID: <5BFBBD5A.4060002@gmx.at> Date: Mon, 26 Nov 2018 10:31:06 +0100 From: martin rudalics MIME-Version: 1.0 References: <8736rpfklv.fsf@hochschule-trier.de> <5BFADE8C.9040500@gmx.at> <87h8g5ggft.fsf@hochschule-trier.de> <5BFAF08C.6080500@gmx.at> <87d0qtgdfx.fsf@hochschule-trier.de> In-Reply-To: <87d0qtgdfx.fsf@hochschule-trier.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:Ip5xU73FUH2LUXg1LLv6TcIiaLgSlFJnFL21/xi+wGJj89oWaHg TKD+orgj3hc4DE9w6x283wffR2bW44d45wP4p2ca+3Y+rvdDWlEG3OqN1XJbXErR7GjzQuh FVR+3VyaQvA8J2IotfqsRbNf6fVAsvWBl75r3B74lhzPT6589L1a/+gD9vS2g/2PIbfQcR3 aquoE2EjXmoPqYwQU8+yw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:tONVqpFMdBA=:gr5A9RWwdhNKeuc8ujOeJz Z75A7G2r5MaTUpmOXnnXi9iNT3A6JqRGnd6I0vbzaNjJOXYoHA3VIt35uKiqGgSY5/VY4M9HH RSQZk8dLl5P6M2BdIDI5DS7SBrvNXMMWaDsgGus4eGINERO8294lqbuPmw6Kf0M+fqg/6uBzL i6OdPjIssXhKDB5cs1w0D5kSK+VKlNM1sgUNTfwJmp8IrsXcfqSxI5SYOv8O9T76Q/MrD7VZ1 WaFgYBtWrrey/2S3bvL+6bZbGsxEm9pl/Y+GEu7HBx1N/1gGnGOuQY2fvPdfnasS6BbsH/72X h+kJfUD23ehFXpk3bc/TvYVOWeSoWb0QNeXZDQ61+ZeSjxoqao3Lgq6BKiLh55xHjwUBRAiT+ 4lxd8Nc14KP8hdgeCMn9YOXL67rlS7X/xyyf8ZTBUAqKNd39ArfGNLBhs0YF0Y9LnwV/dOoj6 ChUT4Dh6Fo2+kWbnBsijtYuwzTU/MDCynQMWo3lJK6r+Zh70rUz2sebbaXEBzO90js7mB1U8p 8aJmQhS828bNlbYcEx9b/lPvhwNFItHbW9VcG5LUlDO0IopTj0GTsYuWiCZrT5T4qvLrkHbvP /drulMAA0CnbQNJTnIvCpmv57PcO0MND8bFtf5FTwYlz3jJX6DWC3wX0UyTHSEA7NSD4szELe SVSyerviHtz4hBd+RSjMiH10LYWmLGmh695bgZiEAM2tZrotmg6Wg31jIBe9UVRA6X46VMut1 mjanLT++vpKwrhgWmRGRrE5bP0WcY3Gr9EODlUMwCCY3QnYhwYct0+iMa54oDyolMliFAM86+ NyCirAGmW8jlj026YN/5rQzAmuTUC8NQwvaDA4zxf2fLuq6F4Q170ajMSzheJm51xu2DtY+4Y dxD0C+p0QMduwm7GJWr9TSNZjKiGWpyZ4kWBDu/Hnmdp86sq0taHYg7UYBqWur X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> For internal reasons each live frame must have a minibuffer window. >> This is hardcoded in a couple of internal routines and if you remove >> that restriction (it's the "Attempt to delete a surrogate minibuffer >> frame" in frame.c) [...] > > I don't mean to remove that restriction. But in this case, where the > parent is deleted and the child is the parent's minibuffer-frame (and > there are no other frame using this minibuffer-frame) this restriction > doesn't seem to apply, at least on a conceptual level. Agreed. But the only way to delete the parent frame is to do what you did - untie the minibuffer frame first by making it top-level and then delete its former parent. The problems with this are the same you probably see when you create the minibuffer frame: the minibuffer frame becomes first visible on the desktop as a top-level frame before it gets moved and subordinated to the parent frame. When deleting the parent frame you see the inverse effect: the minibuffer frame becomes top-level on the desktop and stays there in some orphaned fashion until you eventually kill it. These operations would have to be automatized and improved as follows: Process a (minibuffer . child-frame) frame parameter to (1) make an _invisible_ top-level minibuffer-only frame similar to what we are doing in the (minibuffer . nil) case, (2) create the minibuffer-less parent frame with the minibuffer window set to the window made in (1), (3) reparent the minibuffer frame created in (1) and make it visible. Then deleting the parent frame would (4) make the minibuffer frame invisible and top-level, (5) delete the parent frame, (6) delete the minibuffer frame if possible or make it visible if it still serves as minibuffer frame for another frame. (4)-(5) would have to handle the cases correctly where delete_frame (the C function) is called from Elisp (via C-x 5 0, for example) and from the window manager (by clicking the "x" on the title bar). The Elisp call would not shut down Emacs, the window manager call could. To process (6) we would maybe also want an 'auto-delete-minibuffer' frame parameter (which could then be also used for non-child-frame minibuffer-only frames). Finally, any such code will have to process the 'delete-before' frame parameter appropriately to avoid running into an infinite loop of failed deletion attempts. >>From the point of a user, this means that he either needs to advise > `delete-frame' or use a different command in order to delete these kinds > of frames. Indeed. Patches welcome. martin From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: Andreas Politz Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 26 Nov 2018 19:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.154325878427369 (code B ref 33498); Mon, 26 Nov 2018 19:00:02 +0000 Received: (at 33498) by debbugs.gnu.org; 26 Nov 2018 18:59:44 +0000 Received: from localhost ([127.0.0.1]:50108 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRM6i-00077N-Cd for submit@debbugs.gnu.org; Mon, 26 Nov 2018 13:59:44 -0500 Received: from gateway-a.fh-trier.de ([143.93.54.181]:50194) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRM6g-00077C-DM for 33498@debbugs.gnu.org; Mon, 26 Nov 2018 13:59:43 -0500 X-Virus-Scanned: by Amavisd-new + Sophos + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (x4db25101.dyn.telefonica.de [77.178.81.1]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id 2F5A117D2599; Mon, 26 Nov 2018 19:59:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1543258778; bh=S8ek+EAKHHzQoM42PzC8BM1DqaA=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=MrF1R/hwA9XZ/L76b/O9bmtOOvtBe6apqZk81cMaF9LwJmNLcr8QbjT+SNrP7/crF lVe4ie3bxQ1NpC8JPfyQRpgt8ETScyGRm97swGYAXuisHXWZkdpxblGABlYXtFgGbb s/d9w44ShZvAz+9V32odeb5PYTePLbmsvMxuBUUY= From: Andreas Politz References: <8736rpfklv.fsf@hochschule-trier.de> <5BFADE8C.9040500@gmx.at> <87h8g5ggft.fsf@hochschule-trier.de> <5BFAF08C.6080500@gmx.at> <87d0qtgdfx.fsf@hochschule-trier.de> <5BFBBD5A.4060002@gmx.at> Date: Mon, 26 Nov 2018 19:59:37 +0100 In-Reply-To: <5BFBBD5A.4060002@gmx.at> (martin rudalics's message of "Mon, 26 Nov 2018 10:31:06 +0100") Message-ID: <871s77hdgm.fsf@hochschule-trier.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Thanks for the detailed explanation. I was looking for a way to have the minibuffer at the top of the frame, which you'd probably already guessed. martin rudalics writes: > These operations would have to be automatized and improved as follows: > > Process a (minibuffer . child-frame) frame parameter to > > (1) make an _invisible_ top-level minibuffer-only frame similar to > what we are doing in the (minibuffer . nil) case, > > (2) create the minibuffer-less parent frame with the minibuffer window > set to the window made in (1), > > (3) reparent the minibuffer frame created in (1) and make it visible. Should this be a dedicated function, e.g. make-frame-with-minibuffer-child. Or a behavior triggered by an additional frame-parameter passed to the parent ? > Then deleting the parent frame would > > (4) make the minibuffer frame invisible and top-level, > > (5) delete the parent frame, > > (6) delete the minibuffer frame if possible or make it visible if it > still serves as minibuffer frame for another frame. > > (4)-(5) would have to handle the cases correctly where delete_frame > (the C function) is called from Elisp (via C-x 5 0, for example) and > from the window manager (by clicking the "x" on the title bar). The > Elisp call would not shut down Emacs, the window manager call could. > It seems to me that this code should go into Fdelete_frame ? > To process (6) we would maybe also want an 'auto-delete-minibuffer' > frame parameter (which could then be also used for non-child-frame > minibuffer-only frames). > > Finally, any such code will have to process the 'delete-before' frame > parameter appropriately to avoid running into an infinite loop of > failed deletion attempts. What if we allow the deletion of a minibuffer frame, if it will not violate the invariant that all frames have a minibuffer, i.e. because the frame in question will be deleted some time later (because this operation is already on the call-stack.). I don't know if this temporary violation (i.e. between deleting the child-minibuffer and deleting the parent) is a problem. Anyway, this would enable the user to delete these kinds of frames normally, even if it looks jerky. And then implement the special minibuffer-as-child-frame behavior and logic via dedicated functions, which display and undsiplay these frames nicely. (Still, delete-frame would have to be redirected to some proxy handling this case.) Andreas From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 27 Nov 2018 10:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andreas Politz Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.154331369215491 (code B ref 33498); Tue, 27 Nov 2018 10:15:02 +0000 Received: (at 33498) by debbugs.gnu.org; 27 Nov 2018 10:14:52 +0000 Received: from localhost ([127.0.0.1]:50459 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRaOJ-00041m-UP for submit@debbugs.gnu.org; Tue, 27 Nov 2018 05:14:52 -0500 Received: from mout.gmx.net ([212.227.15.19]:52577) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRaOH-00041W-3u for 33498@debbugs.gnu.org; Tue, 27 Nov 2018 05:14:50 -0500 Received: from [192.168.1.101] ([46.125.250.122]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Ld0jY-1fjlGD1xyq-00iBV3; Tue, 27 Nov 2018 11:14:41 +0100 Message-ID: <5BFD190B.8090800@gmx.at> Date: Tue, 27 Nov 2018 11:14:35 +0100 From: martin rudalics MIME-Version: 1.0 References: <8736rpfklv.fsf@hochschule-trier.de> <5BFADE8C.9040500@gmx.at> <87h8g5ggft.fsf@hochschule-trier.de> <5BFAF08C.6080500@gmx.at> <87d0qtgdfx.fsf@hochschule-trier.de> <5BFBBD5A.4060002@gmx.at> <871s77hdgm.fsf@hochschule-trier.de> In-Reply-To: <871s77hdgm.fsf@hochschule-trier.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:ewTRm3JWVdJULezro8Fvs+Z+zCmZ/J3lJ0Q8mf9s9VvZgA5mTvr QbtSTEPvnwm0G4swglFZIwjPqVhJEbYabbfoVbbI4Cm/vUcuTlHv1bafcPZvSHtJqtt9w7F ok6+DoXEtdpzt0iqe3rIWwBDzXxJUAf3SvjR4wLZUA7dgHQRIGLQ12+nNkDezXSoAiicfYI xsdTIeoSSDs+tmPk7VY+Q== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:OhlZAPDCZbs=:55YI288dTzWqqa7YhBoo7Q 953YtcQa6wlZtgeKGdVwN4g+xHyuXkFx4PekSs9g8ghGfXKJhhp+BdshlgUNQDbEtaHyKv8SY XMmI4OlUbYDW1KkMjxqXsPYbbVumumH52kjVk+MHKjXiFXzxcHDVqlVxRfTrhBqZBN0dms/h+ fNYsxuCLszl8scgvRqvKk2SyOc++2qk/WyFNQK1djEt6TkJ3sj8rCRd3rhEDlaOqRam3+hWxy iUXxJCr6RT2KxsRPA8XBQ9zDFad14VKwM+mzUCdf3vmJ6RBudPMs18seI/GxsRJffhcfhuWR2 vPkNPmRe6ghLAXMrk7qlLAjlXxcjakTcEtBaCFLMfhSbrO+xsQu/hk+OfySCa1nuO7WCnLUfj qY5tJhkttq6T3R4rpK4x8mKFtXKstP427tl3dF5L9JWHp6DdLVDx/DaHmYyjBseVPRX1YMRl/ 7F4XkPzsqFEPA8luyD5QInFOT5hEct5h7lNRBqrvbeUsiqr4qSkFeyTtVTsjVu3hA1wQHH3if il8VdaQUWEdy1oZIu0lXkzluWh4ldCcHuxZzPggzPu2FjYfsO25zH3h/qfyek1fwIKHLGdcLb JWvzt2vRZfmvNK+8TIxX+RQB8caWcpmRT6N9evjo1UX7DP3diPvcjqEJTkfxjSbIcmdZRUhhK DEVQ1IcwWyjD2pMfxeQwhJPp4FyUFDeQtG2K03039j2CfOIRNExGc8wLR/lVPWTXd+nlPcHRv SuWOc3eMsYOYy0EHu0kB0ekEu2Lfmvs9URv4oxthMTVehA4gNJz4VhF9lKAsvan3hbdMwfg3p DzMu7QE4TPiUDIqHLpuyTvBe+M6DivumsKy2qxnAiCuA6xaZBZa2UX5NnGEjeDUQABiZlx8aP nyj5R08tzGK3FV7q2tn+ImzVeCSAPMxpHHMX2EHo9JBIS6hD8VU+hWkM9zPivx X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) >> These operations would have to be automatized and improved as follows: >> >> Process a (minibuffer . child-frame) frame parameter to >> >> (1) make an _invisible_ top-level minibuffer-only frame similar to >> what we are doing in the (minibuffer . nil) case, >> >> (2) create the minibuffer-less parent frame with the minibuffer window >> set to the window made in (1), >> >> (3) reparent the minibuffer frame created in (1) and make it visible. > > Should this be a dedicated function, > e.g. make-frame-with-minibuffer-child. Or a behavior triggered by an > additional frame-parameter passed to the parent ? Ideally, the behavior would be triggered by a special value of the 'minibuffer' frame parameter specified via 'initial-frame-alist' or 'default-frame-alist'. On window systems where child frames are not supported, it would automatically fall back on the (minibuffer . nil) behavior. (minibuffer . child-frame) would be one way to specify that. Note that the value 'child-frame' would not get stored in the child-frame's minibuffer parameter: the parent frame's minibuffer parameter would become nil, the child frame's minibuffer parameter would become 'only'. All this would be done in 'frame-notice-user-settings' in frame.el independently from how we eventually try to get rid of the minibuffer frame. >> Then deleting the parent frame would >> >> (4) make the minibuffer frame invisible and top-level, >> >> (5) delete the parent frame, >> >> (6) delete the minibuffer frame if possible or make it visible if it >> still serves as minibuffer frame for another frame. >> >> (4)-(5) would have to handle the cases correctly where delete_frame >> (the C function) is called from Elisp (via C-x 5 0, for example) and >> from the window manager (by clicking the "x" on the title bar). The >> Elisp call would not shut down Emacs, the window manager call could. >> > It seems to me that this code should go into Fdelete_frame ? No. AFAICT we have to process the !other_frames (f, false, !NILP (force)) in delete_frame first (note that our minibuffer child frame is not reported by that call as separate frame). Only if that call succeeds (so another top-level frame exists) we'd make the minibuffer window top-level and invisible before it gets caught by the delete_frame call in /* Softly delete all frames with this frame as their parent frame or as their `delete-before' frame parameter value. */ FOR_EACH_FRAME (frames, frame1) if (FRAME_PARENT_FRAME (XFRAME (frame1)) == f /* Process `delete-before' parameter iff FRAME is not a child frame. This avoids that we enter an infinite chain of mixed dependencies. */ || (nochild && EQ (get_frame_param (XFRAME (frame1), Qdelete_before), frame))) delete_frame (frame1, Qnil); and remember it in a Lisp variable say minibuffer_child_frame. Then delete_frame would do its normal job by deleting the parent frame and any actions related to that. Note that this could delete, by side-effect, our minibuffer_child_frame. At the end of delete_frame we'd check if our minibuffer_child_frame is still a live frame. If it has no other clients, we'd delete it via a separate delete_frame call. Otherwise, we'd make it visible. There are (at least) two tricky things to observe: This /* delete_frame_functions may have deleted any frame, including this one. */ if (!FRAME_LIVE_P (f)) return Qnil; must instead go to the end of delete_frame instead of trying to delete minibuffer_child_frame. And we must guarantee that minibuffer_child_frame becomes visible when an error occurs within delete_frame before it reaches the end. This would be done with the help of a record_unwind_protect form which would be roughly implemented as follows: At the top of delete-frame add a ptrdiff_t count = SPECPDL_INDEX (); When assigning minibuffer_child_frame do record_unwind_protect (make_frame_visible_if_live, child_frame); At the end add unbind_to (count, Qnil); make_frame_visible_if_live would then be a trivial function accepting a Lisp_Object frame argument and would call Fmake_frame_visible for that frame provided it is live. > What if we allow the deletion of a minibuffer frame, if it will not > violate the invariant that all frames have a minibuffer, i.e. because > the frame in question will be deleted some time later (because this > operation is already on the call-stack.). I don't know if this > temporary violation (i.e. between deleting the child-minibuffer and > deleting the parent) is a problem. Anyway, this would enable the user > to delete these kinds of frames normally, even if it looks jerky. Frame deletion is in C because it's extremely hairy and must be done in some sort of a atomic fashion. So any temporary violation of the "each frame must have a minibuffer window" rule is no solution at the present. > And then implement the special minibuffer-as-child-frame behavior and > logic via dedicated functions, which display and undsiplay these frames > nicely. (Still, delete-frame would have to be redirected to some proxy > handling this case.) If window manager calls (clicking the "x" on the title bar) are processed without problems (that is, delete parent and minibuffer child frame in one go - did you check that?) then we could have 'delete-frame' run a 'before-delete-frame-functions' hook. In that hook we could make the minibuffer top-level and invisible while 'after-delete-frame-functions' would take care of deleting the minibuffer frame or making it visible. But if anything bad happens, then 'after-make-frame-functions' would not get executed and the minibuffer frame stay invisible forever. Not making the minibuffer frame invisible, OTOH would show it for a short while somewhere on the desktop which doesn't look very professional IMO. martin From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Mar 2019 10:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andreas Politz , 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.155178076916773 (code B ref 33498); Tue, 05 Mar 2019 10:13:02 +0000 Received: (at 33498) by debbugs.gnu.org; 5 Mar 2019 10:12:49 +0000 Received: from localhost ([127.0.0.1]:60586 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h1745-0004MS-4Z for submit@debbugs.gnu.org; Tue, 05 Mar 2019 05:12:49 -0500 Received: from mout.gmx.net ([212.227.17.21]:49225) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h1743-0004MF-I4 for 33498@debbugs.gnu.org; Tue, 05 Mar 2019 05:12:48 -0500 Received: from [192.168.1.101] ([212.95.5.19]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0MZPer-1ggPog3vET-00LIwT; Tue, 05 Mar 2019 11:12:40 +0100 Message-ID: <5C7E4B92.1040200@gmx.at> Date: Tue, 05 Mar 2019 11:12:34 +0100 From: martin rudalics MIME-Version: 1.0 References: <8736rpfklv.fsf@hochschule-trier.de> In-Reply-To: <8736rpfklv.fsf@hochschule-trier.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:jyhQvfMBZvsh7k2BJmggLsu41DhY5tdSm+KQkoMnAK+Z8Li/+RH 30NIl0IGziBnswH0xNO6EVzbf389/XGCm3uzhm/gXkyngvQ4jaqDlU5SA8tVyQmYByMRNJL md+p80hBsIcaySZNP2n121cTTbWYZ/COwGA1W0JvagjOcLLChO8wI98aqnODDMlBklnwIHE MyOYiBpgehM9iAsj9q/FQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:yvatPunrupg=:wMGI5OSlrPFeybvyMae+Bi MXpYWVktlKCAYURw3SAl3OIIaDGdgHYOS643WlSH8ZCzWjAskDkbZh66AuDUdv8EfZMsMq5M4 +vH3R/Q4jLX5sE6Es8RKUtg8GIsop0mtbBQdAi7xzkmsi3dWK2RZiRDlLbjol6zjU7H3BA1GE AtmlZ88IxjrZClJhJTU9UOBdhUu9zncXdEoyndUyxTdtsW1gqf7QUcvirylpkAE2kdf31n0/j vZ1pQ9ieFYcsN90CBfwKmCjclPNGUyJcugVMg1Wo6S14jfUnjMWgYpZ+XJ0IENTcYzW5PjzkH XQZ844Nr3SgURXEML0tIN5JEmL0r7HnRBI7kd/dP/U41NmW57r+QsFrNqnVC5Sxt0WgmxNinW xxo+ArJz5CLVquIhN3y+aiuOCCZnM3mCEKS1LwDr+N88TWgdxO2kbmYPzgUg6dtbxCbPcYtMM mHCrtv32tSGTH2BpqRzIh6aijXZilaprusHFWcFFecqntVI4RmCUhUBFTu5D3q3q5Um4lYUDF rn0XWx+1/94rcj5n7gTCPyzFdyWCyJ9NCcthdrYWN4z6VPD2xj5DKI01yJdxIYp1HW//cUAzw NPQirRUHzvEJcPIOPCY0yHWfzEWigFGjIM2ZEYHKjizhZheC2oeqvYmH72DCOI/+fQCS89SC8 yHUtRM+VOOrjujLV3LIgw37hLjpu0UxwY+5Gh0Vr3y+Zi2pNFF7ShyDeozUSEOgoCpRD1Jcd3 64cPrz8DERt8bUTgaFqZUnmre2G6N7+f1FJF6Kp61+OqYe3opXuejv4cYFzZK0DGKVd0Ttdd1 cqWvGQY8NFaITBW+T5QBlX/hHg33JPZLWdK9NgjMmL5k1tKhf4D7+UXZM98D22gCcz6tkTArJ eyUY6THyIm+0AIhjJFceHaCvCaZyfiHItUStTO0cgAD5b/1L5Uqe5lioJxgjQFXvNxmTGHdIR s2krdnZfd8g== X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > When a frame is both the child-frame and the minibuffer-frame of some > other frame, this other frame can not be delete anymore. I think I fixed this now on master. Please have a look. By using a '(minibuffer . child-frame) frame parameter, creating the minibuffer child frame should proceed without glitches now. I intend to soon add code for fitting minibuffer child frames to the contents of their buffers. martin From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames References: <8736rpfklv.fsf@hochschule-trier.de> In-Reply-To: <8736rpfklv.fsf@hochschule-trier.de> Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 06 Mar 2019 19:08:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.15518992471798 (code B ref 33498); Wed, 06 Mar 2019 19:08:01 +0000 Received: (at 33498) by debbugs.gnu.org; 6 Mar 2019 19:07:27 +0000 Received: from localhost ([127.0.0.1]:34668 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h1bt1-0000Sv-2V for submit@debbugs.gnu.org; Wed, 06 Mar 2019 14:07:27 -0500 Received: from zimbra.cs.ucla.edu ([131.179.128.68]:35798) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h1bsy-0000Sf-TX for 33498@debbugs.gnu.org; Wed, 06 Mar 2019 14:07:25 -0500 Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 9A361161517; Wed, 6 Mar 2019 11:07:18 -0800 (PST) Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id nR57WS1lT68S; Wed, 6 Mar 2019 11:07:17 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id C1479161509; Wed, 6 Mar 2019 11:07:17 -0800 (PST) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Xs9q6PTNAeky; Wed, 6 Mar 2019 11:07:17 -0800 (PST) Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id A5066161400; Wed, 6 Mar 2019 11:07:17 -0800 (PST) From: Paul Eggert Openpgp: preference=signencrypt Autocrypt: addr=eggert@cs.ucla.edu; prefer-encrypt=mutual; keydata= xsFNBEyAcmQBEADAAyH2xoTu7ppG5D3a8FMZEon74dCvc4+q1XA2J2tBy2pwaTqfhpxxdGA9 Jj50UJ3PD4bSUEgN8tLZ0san47l5XTAFLi2456ciSl5m8sKaHlGdt9XmAAtmXqeZVIYX/UFS 96fDzf4xhEmm/y7LbYEPQdUdxu47xA5KhTYp5bltF3WYDz1Ygd7gx07Auwp7iw7eNvnoDTAl KAl8KYDZzbDNCQGEbpY3efZIvPdeI+FWQN4W+kghy+P6au6PrIIhYraeua7XDdb2LS1en3Ss mE3QjqfRqI/A2ue8JMwsvXe/WK38Ezs6x74iTaqI3AFH6ilAhDqpMnd/msSESNFt76DiO1ZK QMr9amVPknjfPmJISqdhgB1DlEdw34sROf6V8mZw0xfqT6PKE46LcFefzs0kbg4GORf8vjG2 Sf1tk5eU8MBiyN/bZ03bKNjNYMpODDQQwuP84kYLkX2wBxxMAhBxwbDVZudzxDZJ1C2VXujC OJVxq2kljBM9ETYuUGqd75AW2LXrLw6+MuIsHFAYAgRr7+KcwDgBAfwhPBYX34nSSiHlmLC+ KaHLeCLF5ZI2vKm3HEeCTtlOg7xZEONgwzL+fdKo+D6SoC8RRxJKs8a3sVfI4t6CnrQzvJbB n6gxdgCu5i29J1QCYrCYvql2UyFPAK+do99/1jOXT4m2836j1wARAQABzSBQYXVsIEVnZ2Vy dCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PsLBfgQTAQIAKAUCTIByZAIbAwUJEswDAAYLCQgHAwIG FQgCCQoLBBYCAwECHgECF4AACgkQ7ZfpDmKqfjRRGw/+Ij03dhYfYl/gXVRiuzV1gGrbHk+t nfrI/C7fAeoFzQ5tVgVinShaPkZo0HTPf18x6IDEdAiO8Mqo1yp0CtHmzGMCJ50o4Grgfjlr 6g/+vtEOKbhleszN2XpJvpwM2QgGvn/laTLUu8PH9aRWTs7qJJZKKKAb4sxYc92FehPu6FOD 0dDiyhlDAq4lOV2mdBpzQbiojoZzQLMQwjpgCTK2572eK9EOEQySUThXrSIz6ASenp4NYTFH s9tuJQvXk9gZDdPSl3bp+47dGxlxEWLpBIM7zIONw4ks4azgT8nvDZxA5IZHtvqBlJLBObYY 0Le61Wp0y3TlBDh2qdK8eYL426W4scEMSuig5gb8OAtQiBW6k2sGUxxeiv8ovWu8YAZgKJfu oWI+uRnMEddruY8JsoM54KaKvZikkKs2bg1ndtLVzHpJ6qFZC7QVjeHUh6/BmgvdjWPZYFTt N+KA9CWX3GQKKgN3uu988yznD7LnB98T4EUH1HA/GnfBqMV1gpzTvPc4qVQinCmIkEFp83zl +G5fCjJJ3W7ivzCnYo4KhKLpFUm97okTKR2LW3xZzEW4cLSWO387MTK3CzDOx5qe6s4a91Zu ZM/j/TQdTLDaqNn83kA4Hq48UHXYxcIh+Nd8k/3w6lFuoK0wrOFiywjLx+0ur5jmmbecBGHc 1xdhAFHOwU0ETIByZAEQAKaF678T9wyH4wjTrV1Pz3cDEoSnV/0ZUrOT37p1dcGyj/IXq1x6 70HRVahAmk0sZpYc25PF9D5GPYHFWlNjuPU96rDndXB3hedmBRhLdC4bAXjI4DV+bmdVe+q/ IMnlZRaVlm9EiMCVAR6w13sReu7qXkW9r3RwY2AzXskp/tAe4BRKr1Zmbvi2nbnQ6epEC42r Rbx0B1EhjbIQZ5JHGk24iPT7LdBgnNmos5wYjzwNlkMQD5T0Ydzhk7J+UxwA5m46mOhRDC2r FV/A0gm5TLy8DXjv/Esc4gYnYai6SQqnUEVh5LuV8YCJBnijs+Tiw71x1icmn6xGI45EugJO gec+rLypYgpVp4x0HI5T88qBRYCkxH3Kg8Qo+EWNA9A4LRQ9DX8njona0gf0s03tocK8kBN6 6UoqqPtHBnc4eMgBymCflK12eKfd2YYxnyg9cZazWA5VslvTxpm76hbg5oiAEH/Vg/8MxHyA nPhfrgwyPrmJEcVBafdspJnYQxBYNco2LFPIhlOvWh8r4at+s+M3Lb26oUTczlgdW1Sf3SDA 77BMRnF0FQyE+7AzV79MBN4ykiqaezQxtaF1Fy/tvkhffSo8u+dwG0EgJh+te38gTcISVr0G IPplLz6YhjrbHrPRF1CN5UuL9DBGjxuN35RLNVEfta6RUFlR6NctTjvrABEBAAHCwWUEGAEC AA8FAkyAcmQCGwwFCRLMAwAACgkQ7ZfpDmKqfjSrHA/+KzAKvTxRhA9MWNLxIyJ7S5uJ16gs T3oCjZrBKGEhKMOGX4O0GA6VOEryO7QRCCYah3oxSG38IAnNeiwJXgU9Bzkk85UGbPEd7HGF /VSeHCQwWou6jqUDTSDvn9YhNTdG0KXPM74aC+xr2Zow1O2mhXihgWKD0Dw+0LYPnUOsQ0KO FxHXXYHmRrS1OZPU59BLvc+TRhIhafSHKLwbXK+6ckkxBx6h8z5ccpG0Qs4bFhdFYnFrEieD LoGmnE2YLhdV6swJ9VNCS6pLiEohT3fm7aXm15tZOIyzMZhHRSAPblXxQ0ZSWjq8oRrcYNFx c4W1URpAkBCOYJoXvQfD5L3lqAl8TCqDUzYxhH/tJhbDdHrqHH767jaDaTB1+Talp/2AMKwc XNOdiklGxbmHVG6YGl6g8Lrbsu9NZEI4yLlHzuikthJWgz+3vZhVGyNlt+HNIoF6CjDL2omu 5cEq4RDHM44QqPk6l7O0pUvN1mT4B+S1b08RKpqm/ff015E37HNV/piIvJlxGAYz8PSfuGCB 1thMYqlmgdhd9/BabGFbGGYHA6U4/T5zqU+f6xHy1SsAQZ1MSKlLwekBIT+4/cLRGqCHjnV0 q5H/T6a7t5mPkbzSrOLSo4puj+IToNjYyYIDBWzhlA19avOa+rvUjmHtD3sFN7cXWtkGoi8b uNcby4U= Organization: UCLA Computer Science Department Message-ID: <5c5d4a99-2b3f-785b-82f8-2ba5fb6da6cc@cs.ucla.edu> Date: Wed, 6 Mar 2019 11:07:14 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------A94519812E319ABA5F7C464F" Content-Language: en-US X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) This is a multi-part message in MIME format. --------------A94519812E319ABA5F7C464F Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit > I think I fixed this now on master. Please have a look. Unfortunately the fix broke builds configured with --enable-gcc-warnings, as GCC complains about the use of an uninitialized variable that appears to be a typo in the fix. I installed the attached patch to unbreak the build; please check it to make sure that I understood the intent of the fix correctly. It's a good idea to use './configure --enable-gcc-warnings' when making changes to the C code in Emacs, as GCC is reasonably good at catching typos like this, and typically does not generate too many false alarms. --------------A94519812E319ABA5F7C464F Content-Type: text/x-patch; name="0001-Fix-typo-in-fix-for-Bug-33498.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Fix-typo-in-fix-for-Bug-33498.patch" >From 62879cbeae0221033a40d9f66e08673e4975e332 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 6 Mar 2019 11:04:57 -0800 Subject: [PATCH] Fix typo in fix for Bug#33498 * src/frame.c (delete_frame): Fix typo in previous patch, which caused GCC to complain about the use of an uninitialized variable. --- src/frame.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frame.c b/src/frame.c index 3d83dc0a0d..1219569068 100644 --- a/src/frame.c +++ b/src/frame.c @@ -2236,7 +2236,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force) for at least one other frame - so make it visible and quit. */ if (!FRAME_VISIBLE_P (f1) && !FRAME_ICONIFIED_P (f1)) - Fmake_frame_visible (frame1); + Fmake_frame_visible (minibuffer_child_frame); return Qnil; } -- 2.20.1 --------------A94519812E319ABA5F7C464F-- From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 07 Mar 2019 08:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Paul Eggert Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.155194735922430 (code B ref 33498); Thu, 07 Mar 2019 08:30:02 +0000 Received: (at 33498) by debbugs.gnu.org; 7 Mar 2019 08:29:19 +0000 Received: from localhost ([127.0.0.1]:34895 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h1oP0-0005ph-Uc for submit@debbugs.gnu.org; Thu, 07 Mar 2019 03:29:19 -0500 Received: from mout.gmx.net ([212.227.17.21]:58237) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h1oOz-0005pP-8a for 33498@debbugs.gnu.org; Thu, 07 Mar 2019 03:29:17 -0500 Received: from [192.168.1.101] ([212.95.5.145]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Lu3J4-1guU613QIw-011U70; Thu, 07 Mar 2019 09:28:59 +0100 Message-ID: <5C80D643.30006@gmx.at> Date: Thu, 07 Mar 2019 09:28:51 +0100 From: martin rudalics MIME-Version: 1.0 References: <5c5d4a99-2b3f-785b-82f8-2ba5fb6da6cc@cs.ucla.edu> In-Reply-To: <5c5d4a99-2b3f-785b-82f8-2ba5fb6da6cc@cs.ucla.edu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:lMRrj34fBntMn9rPqqJob4nZYU46QFcUvWDb3Zb9bkGAKMy/4W4 7K9TTAO0ATD1oHhrP9s+BGdVwAIwK+N65WIO+e5Xd8ByyJHOfUw5qY0xpnrLOigg2P/sPkj qMjd+k2Pa+frGDEPtB9nFZbopHgdzBZCWckbnr/Lalxn+LSPaUaIK6Sgn3mbHxV39STlq5f 53YVl27Ew27C1RWgJerbg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:MkeObr/v8hs=:+jN1C3vFDeezvutxnesJZM CS0oLs7ez44qlPecJzNY3Yam4twVKnCL3u5kbHvmIbqM33nlwanQ0XaKlkgIQohrrnNagsZ1t nLqHF756T2h5/o0rITCwkZbFivViEDFj1MX4UyUrp/t7yY4g8YyPYBJkF1BX74QxZWzC/bIOv ZvZ2s0QyBMxbDfCPHEhyo3v5mFHdnO1Gxq0Xt73/rsZQMqx04tTaFCcnvnBetmRMrUwp0Dcnj xQl830VbvE+BdbYiSgOyteBBauREI5z/Z69ZXPJ11iLYdN40UIZlO/YQIDKFHPLGkVmf7T1ii Szy7/QYKq6NLLioiAhYmHLR4GpndHHX54/EFAtIIC327aPPVnRbp4i4Lwh7fr9gcOYFz3XBjt PM3mFQBijPK0Ufr0IEpYGIttUkeNGTX+DuAFTYmazRNtZ2ga9eL0LBzdnDbTAzY9HciPUteET 3+j+sd13LH4L8GVHkpDr4hAq0xJqarhU+C2kRJXYhRIDb2XuDncHARnIVGd6GHEakrcByTiBn wAHyiX2AtNgEkRTbrtKUCpX3gmD24zNVS96++OdsoteS1qvYpbBenuPpJ+EqHlMm+qItZkZDS 3xkB+SwxFvBgDpuJ3JgWw6lBO/GC9xdLU8jaFui9WcT+wvrc95r1Ru01dPGuEr9YAvG4AWiWX FK2U3fUksU1dYjwyju0YycjDCnUkisTLGRUx5UFLmrzJuU2CQiu1qWdvZlA23jIBJsVw11Z/F DTeElCjserLfJjuuSP8PgGVir5v4Wze6TWUyPv/nd73HsaXfQtD8nmuROJdf3d39s75K0bMzB m3Zlm/fOsiu4id31NumrWPXQNozn/GTDh0kMc1Mjj9gpRCTiqm+ORZ73u9GjE5EaImJh00iZc SwRTQ8/XeDfwqvDABxDUCpxmPeihNIaW8Y6+3E0xcETB367UF/AMwNDWQRO7udYsNiE5KEGlO 61HFGH4G5Pw== X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) > Unfortunately the fix broke builds configured with > --enable-gcc-warnings, as GCC complains about the use of an > uninitialized variable that appears to be a typo in the fix. I installed > the attached patch to unbreak the build; please check it to make sure > that I understood the intent of the fix correctly. Many thanks for catching this, your fix is correct. Unfortunately, it's impossible for me to trigger a crash in a running Emacs since frame1 apparently gets assigned the "correct" value in one of the loops executed before. Using these initial settings (setq initial-frame-alist '((minibuffer . child-frame))) (setq default-frame-alist '((minibuffer))) and subsequently evaluating ;; Assign initial and minibuffer frame. (setq initial-frame (selected-frame)) (setq minibuffer-frame (window-frame (minibuffer-window))) ;; Make a new frame whose minibuffer window should be on ;; minibuffer-frame. (make-frame) ;; Make minibuffer frame invisible. (make-frame-invisible minibuffer-frame) ;; Delete initial frame. (delete-frame initial-frame) the last one could trigger a crash but minibuffer-frame just becomes visible as expected because frame1 _is_ minibuffer_child_frame there. > It's a good idea to use './configure --enable-gcc-warnings' when making > changes to the C code in Emacs, as GCC is reasonably good at catching > typos like this, and typically does not generate too many false alarms. I build with Configured using: 'configure --prefix=/c/emacs-git/trunk/dbg --with-gnutls=no --without-pop --enable-checking=yes --enable-gcc-warnings=warn-only --enable-check-lisp-object-type=warn-only 'CFLAGS=-O0 -g3 -Wno-logical-op'' ever since but it seems that gcc 4.8.1 is simply too old to catch such subtle bugs (just verified by building with the buggy version again). Thanks again for the fix, martin From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: Andreas Politz Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Mar 2019 20:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.15525087428334 (code B ref 33498); Wed, 13 Mar 2019 20:26:02 +0000 Received: (at 33498) by debbugs.gnu.org; 13 Mar 2019 20:25:42 +0000 Received: from localhost ([127.0.0.1]:42555 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h4ARa-0002AK-1x for submit@debbugs.gnu.org; Wed, 13 Mar 2019 16:25:42 -0400 Received: from gateway-a.fh-trier.de ([143.93.54.181]:49865) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h4ARX-0002AB-AL for 33498@debbugs.gnu.org; Wed, 13 Mar 2019 16:25:40 -0400 X-Virus-Scanned: by Amavisd-new + Sophos + ClamAV [Rechenzentrum Hochschule Trier (RZ/HT)] Received: from localhost (x4db341f3.dyn.telefonica.de [77.179.65.243]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: politza) by gateway-a.fh-trier.de (Postfix) with ESMTPSA id E828F1803D29; Wed, 13 Mar 2019 21:24:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha1; c=simple/simple; d=hochschule-trier.de; s=default; t=1552508688; bh=oDDRVudT/GPusqmgXQ17R9kCRqw=; h=From:To:Cc:Subject:References:Date:In-Reply-To:Message-ID: MIME-Version:Content-Type; b=b0qVBP3gLNUnbeRBdh1P6eGJw8nsJdZeV1BhNrFFyMApcVI6tEcfESxYc0S4r7hri tSoTz/KdKqUtdwjxuCwuzD5bqRFpRorznNvpgtmAwTXvUZoXw5M7i8gt4EjKsh2dK7 h5+tEOjqfl+FyMVbMD6Je7HtBD5lvzJXZMT1blmc= From: Andreas Politz References: <8736rpfklv.fsf@hochschule-trier.de> <5C7E4B92.1040200@gmx.at> Date: Wed, 13 Mar 2019 21:24:47 +0100 In-Reply-To: <5C7E4B92.1040200@gmx.at> (martin rudalics's message of "Tue, 05 Mar 2019 11:12:34 +0100") Message-ID: <87d0muldyo.fsf@hochschule-trier.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) martin rudalics writes: > By using a '(minibuffer . child-frame) frame parameter, creating the > minibuffer child frame should proceed without glitches now. Yes, that seems to work now. > I intend to soon add code for fitting minibuffer child frames to the > contents of their buffers. And I am looking forward to it. Thanks, Andreas From unknown Sat Aug 16 18:42:10 2025 X-Loop: help-debbugs@gnu.org Subject: bug#33498: 26.1; Unable to delete minibuffer-only+child frames Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 23 Apr 2019 08:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33498 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andreas Politz Cc: 33498@debbugs.gnu.org Received: via spool by 33498-submit@debbugs.gnu.org id=B33498.155600921318028 (code B ref 33498); Tue, 23 Apr 2019 08:47:02 +0000 Received: (at 33498) by debbugs.gnu.org; 23 Apr 2019 08:46:53 +0000 Received: from localhost ([127.0.0.1]:52302 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hIr4m-0004gf-He for submit@debbugs.gnu.org; Tue, 23 Apr 2019 04:46:53 -0400 Received: from mout.gmx.net ([212.227.15.15]:56691) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hIr4k-0004gP-3n; Tue, 23 Apr 2019 04:46:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1556009199; bh=9WSc7EBTqPXrIxj85knP0KPF4r2nXPF/3+a8w+pZCdg=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=YqBXJucz8TddH0glmtWGBoa7WiWYYje7ItpbdqzE1HaVv4/F4EPYF00UBbs0C84BW NrQlzM4/i91TJU6Z7QvNDC13YIZgQ2hiZd12M+bWmeTW0JYwpF54JT2ZRC8Bnb1FWH c9J9cXjeIUrQ80u6ZFtqYEkMUVEsl2uR5nU6JIB8= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([213.162.73.225]) by mail.gmx.com (mrgmx003 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Lbujs-1gZesk3HlM-00jMJ6; Tue, 23 Apr 2019 10:46:39 +0200 References: <8736rpfklv.fsf@hochschule-trier.de> <5C7E4B92.1040200@gmx.at> <87d0muldyo.fsf@hochschule-trier.de> From: martin rudalics Message-ID: <83856264-7e8e-da45-44de-8ae4c674d970@gmx.at> Date: Tue, 23 Apr 2019 10:46:41 +0200 MIME-Version: 1.0 In-Reply-To: <87d0muldyo.fsf@hochschule-trier.de> Content-Type: multipart/mixed; boundary="------------798E05270F96DD200CC62CD8" Content-Language: de-DE X-Provags-ID: V03:K1:3ttfxpi6PDAycLEN4cGRp9HnqS1YqOxSvii0lL3QIAROJQMsfin pYs6R4sW82tX0B79Rdcy31tdBfahlbHR+mjk+Nd1JiegwA6/feeo8RuF8q+oUdFAXQkJRuh 2BjY8vCWCW0cXZUGFJHcRJFB3+ryeNWtTpDDA9ZU4BsgNc5BcXfuQZwOPNCLlChfVhzUDy4 h4eljy2scSW/VfK+w2sKQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:9XpKb1I0jOo=:uCT6aM+dc/bj6xrglUjlBo C8zSLhAKk3nbWYDWvxkScO6BVrAgq/joV1Hgqszj9da5emhARMC7LV0KfvmaRa7DX2GwAjG4B lqOFqx4V+NhXt603zdlBlaCcoFxYaTBNnEPRBvBXHeaLjN5dMnyeWg5pLz4R1TX6sg3137THZ J5tfhsS/OyXOkGl0dnLinO7lEzH5fA0guxy2fRolhD8/j6XSGT7JV0WFlvbwd9/FOy0VmqYvx IXDsCwW/seB18n6PDK8euNxNngo4EhMlIz2haY4RJRKuuTTGGMR8Lfrvt5nK9zrag3urvpTsi h6vuUMBLZ4xrljU4AzTJFKaeqM5ErTPO87N0CsdzzWStV/udVPse5kilfcZVzWL/tfVCVxie8 5TNRE0aeIPX1hxRJBQFi/i0Hr1UDHIDlAETPZRzVjVabN0MmDaxv1hUjF+DvQ0vbEOVk3LFV7 UE1VaouDJn02Ut4ADfXvF3wagxoQxtG+cg6vL7iQGEV3VZKJgnE5H/TJRt9pEmzuorgzGIJr1 OFVG/02fqYkwuF8aUrthpawxxR3DquxwyuPx3ZJKnZqwsjW4EyT4IVAv3kMlIYzv6YP6LV5RV 4A0ZwcJ6F61WFCOvB3A0V3PMFXOBS81OMPEii26N+sVRR3qCRaHkDP5bKQqTUlegtoKP0+c0p U8m/mIn5xTbmVbzH17GZuIh9ZajMYofUEl6JMXHkfus4PALHDsW1esQO0TUtdZJNYGwnsP5vb ueBQLTjufxuvnYRm276YP/YMrP/LqoVu/GwfEvSVLTHsWt4HQjpBFthaLzuhU5xAVtcY3oocL X5ANNv4L4CxYdVW+ke8cEa7t34da9V9SroBDZ+Xh3ZXY4vKpArTHPj1eXfu7AD4/iNI2/Bntq TZLXTDa/Gd9962bvzL9/OSUgby4o0kZLHzblBmTtCE4rupQxjqgKF8O5ETl+Uf X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) This is a multi-part message in MIME format. --------------798E05270F96DD200CC62CD8 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit tags 33498 fixed close 33498 27.1 quit >> By using a '(minibuffer . child-frame) frame parameter, creating the >> minibuffer child frame should proceed without glitches now. > > Yes, that seems to work now. OK. Trying to close this bug now. >> I intend to soon add code for fitting minibuffer child frames to the >> contents of their buffers. > > And I am looking forward to it. Customizing 'resize-mini-frames' allows to do that now. I attach a minor mode which I'm using for some while now that allows to put a minibuffer child frame on the top or bottom of the currently selected window and hide it whenever it's not used. If you are on Emacs 27 try it. martin --------------798E05270F96DD200CC62CD8 Content-Type: text/plain; charset=UTF-8; name="pop-up-mini.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pop-up-mini.el" Ozs7IHBvcC11cC1taW5pLmVsIC0tLSBwb3AgdXAgbWluaSB3aW5kb3cgaW4gY2hpbGQgZnJh bWUgLSotIGxleGljYWwtYmluZGluZzp0IC0qLQoKOzsgQ29weXJpZ2h0IChDKSAyMDE5ICBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KCjs7IEF1dGhvcjogTWFydGluIFJ1ZGFs aWNzIDxydWRhbGljc0BnbXguYXQ+Cjs7IEtleXdvcmRzOiBmcmFtZXMsIG1pbmlidWZmZXJz LCB3aW5kb3dzCjs7IFZlcnNpb246IDEuMAo7OyBQYWNrYWdlLVJlcXVpcmVzOiAoKGVtYWNz ICIyNy4xIikpCgo7OyBwb3AtdXAtbWluaS5lbCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKOzsgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKOzsgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdAo7 OyB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBwb3AtdXAtbWluaS5lbCBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQo7OyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KCjs7OyBD b21tZW50YXJ5OgoKOzsgTWlub3IgbW9kZSB0byBwb3AgdXAgbWluaWJ1ZmZlciBhbmQgZWNo byBhcmVhIGluIGEgY2hpbGQgZnJhbWUgb2YKOzsgdGhlIHNlbGVjdGVkIGZyYW1lLiAgVGhp cyBtb2RlIGF1dG9tYXRpemVzIHRoZSBmb2xsb3dpbmcgYmVoYXZpb3JzOgo7Owo7OyAtIFJl cGFyZW50IGNoaWxkIGZyYW1lIHdoZW4gc3dpdGNoaW5nIGZyYW1lcy4KOzsKOzsgLSBGYWN1 bHRhdGl2ZWx5IGhvc3QgY2hpbGQgZnJhbWUgYXQgdGhlIGJvdHRvbSBvciB0b3Agb2Ygc2Vs ZWN0ZWQKOzsgICB3aW5kb3cgb3Igc2VsZWN0ZWQgZnJhbWUncyBtYWluIG9yIHJvb3Qgd2lu ZG93Lgo7Owo7OyAtIFJlc2l6ZSBhbmQgcmVwb3NpdGlvbiBjaGlsZCBmcmFtZSBjb3JyZXNw b25kaW5nIHRvIHNpemUgb2YgaXRzCjs7ICAgdGV4dCBhbmQvb3IgaG9zdCB3aW5kb3cuCjs7 Cjs7IC0gSGlkZSBlbXB0eSBjaGlsZCBmcmFtZS4KOzsKOzsgQSBzYW1wbGUgZm9ybSB3aXRo IHJlY29tbWVuZGVkIHZhcmlhYmxlIHNldHRpbmdzIGZvciBjdXN0b21pemluZwo7OyB0aGUg LmVtYWNzIGluaXQgZmlsZSBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoaXMgZmlsZS4K Cjs7IE5vdGU6IFRoaXMgZmlsZSB3aWxsIHdvcmsgb25seSB3aXRoIEVtYWNzIDI3LjEgYW5k IGhpZ2hlci4KCjs7OyBDb2RlOgoKKGRlZnZhciBwb3AtdXAtbWluaS1tb2RlKQoKKGRlZnZh ciBwb3AtdXAtbWluaS1mcmFtZSBuaWwKICAiVGhlIG1pbmlidWZmZXIgY2hpbGQtZnJhbWUg b2YgJ3BvcC11cC1taW5pLW1vZGUnLgpVc3VhbGx5IGRpc3BsYXllZCBhcyBjaGlsZCBmcmFt ZSBvZiB0aGUgc2VsZWN0ZWQgZnJhbWUuIikKCihkZWZ2YXIgcG9wLXVwLW1pbmktd2luZG93 IG5pbAogICJUaGUgcm9vdCB3aW5kb3cgb2YgJ3BvcC11cC1taW5pLWZyYW1lJy4iKQoKKGRl Zmdyb3VwIHBvcC11cC1taW5pIG5pbAogICJDdXN0b21pemF0aW9uIGdyb3VwIGZvciAncG9w LXVwLW1pbmktbW9kZScuIgogIDp2ZXJzaW9uICIyNy4xIgogIDpncm91cCAnY29udmVuaWVu Y2UKICA6Z3JvdXAgJ2ZyYW1lcykKCihkZWZ1biBwb3AtdXAtbWluaS0tc2V0LXZhbHVlIChz eW1ib2wgdmFsdWUpCiAgIkhlbHBlciBmdW5jdGlvbiBmb3IgY3VzdG9taXppbmcgJ3BvcC11 cC1taW5pLW1vZGUnIG9wdGlvbnMuIgogIChzZXQtZGVmYXVsdCBzeW1ib2wgdmFsdWUpCiAg KGNvbmQKICAgKChub3QgKGZyYW1lLWxpdmUtcCBwb3AtdXAtbWluaS1mcmFtZSkpKQogICAo KGVxIHN5bWJvbCAncG9wLXVwLW1pbmktaW50ZXJuYWwtYm9yZGVyKQogICAgKHNldC1mYWNl LWJhY2tncm91bmQgJ2ludGVybmFsLWJvcmRlciB2YWx1ZSBwb3AtdXAtbWluaS1mcmFtZSkp CiAgICgoZnJhbWUtdmlzaWJsZS1wIHBvcC11cC1taW5pLWZyYW1lKQogICAgKHdoZW4gKGZy YW1lLWxpdmUtcCAoZnJhbWUtcGFyZW50IHBvcC11cC1taW5pLWZyYW1lKSkKICAgICAgKHBv cC11cC1taW5pLW1vdmUgKGZyYW1lLXBhcmVudCBwb3AtdXAtbWluaS1mcmFtZSkpKSkpKQoK KGRlZmN1c3RvbSBwb3AtdXAtbWluaS1ob3N0ICdzZWxlY3RlZAogICJUeXBlIG9mIHdpbmRv dyBob3N0aW5nICdwb3AtdXAtbWluaS1mcmFtZScuCkNob2ljZXMgYXJlCgonc2VsZWN0ZWQn IC0gdGhlIHNlbGVjdGVkIHdpbmRvdwoKJ21haW4nIC0gdGhlIHNlbGVjdGVkIGZyYW1lJ3Mg bWFpbiB3aW5kb3cKCidyb290JyAtIHRoZSBzZWxlY3RlZCBmcmFtZSdzIHJvb3Qgd2luZG93 CgpOb3RlIHRoYXQgYm90aCAnbWFpbicgYW5kICdyb290JyBtYXkgb3ZlcndyaXRlIHRoZSBt b2RlIGxpbmVzIG9mCnRoZSB3aW5kb3dzIGF0IHRoZSBib3R0b20gb2YgdGhlIGZyYW1lLiIK ICA6dHlwZSAnKGNob2ljZSAoY29uc3Qgc2VsZWN0ZWQpCiAgICAgICAgICAgICAgICAgKGNv bnN0IG1haW4pCiAgICAgICAgICAgICAgICAgKGNvbnN0IHJvb3QpKQogIDppbml0aWFsaXpl ICdjdXN0b20taW5pdGlhbGl6ZS1kZWZhdWx0CiAgOnNldCAncG9wLXVwLW1pbmktLXNldC12 YWx1ZQogIDp2ZXJzaW9uICIyNy4xIgogIDpncm91cCAncG9wLXVwLW1pbmkpCgooZGVmY3Vz dG9tIHBvcC11cC1taW5pLWhvc3QtbWluLXdpZHRoIDIwCiAgIk1pbmltdW0gd2lkdGggb2Yg aG9zdCB3aW5kb3cgZm9yICdwb3AtdXAtbWluaS1mcmFtZScuCklmIHRoZSB3aW5kb3cgZGVz aWduYXRlZCBieSAncG9wLXVwLW1pbmktaG9zdCcgaXMgbm90IGFzIHdpZGUgYXMKc3BlY2lm aWVkIGJ5IHRoaXMgb3B0aW9uLCByZWhvc3QgJ3BvcC11cC1taW5pLWZyYW1lJyBhdCB0aGUg bWFpbgpvciByb290IHdpbmRvdyBvZiBpdHMgcGFyZW50IGZyYW1lLiIKICA6dHlwZSAnaW50 ZWdlcgogIDppbml0aWFsaXplICdjdXN0b20taW5pdGlhbGl6ZS1kZWZhdWx0CiAgOnNldCAn cG9wLXVwLW1pbmktLXNldC12YWx1ZQogIDp2ZXJzaW9uICIyNy4xIgogIDpncm91cCAncG9w LXVwLW1pbmkpCgooZGVmY3VzdG9tIHBvcC11cC1taW5pLWhvc3QtbWluLWhlaWdodCAzCiAg Ik1pbmltdW0gaGVpZ2h0IG9mIG9mIGhvc3Qgd2luZG93IGZvciAncG9wLXVwLW1pbmktZnJh bWUnLgpJZiB0aGUgd2luZG93IGRlc2lnbmF0ZWQgYnkgJ3BvcC11cC1taW5pLWhvc3QnIGlz IG5vdCBhcyBoaWdoIGFzCnNwZWNpZmllZCBieSB0aGlzIG9wdGlvbiwgcmVob3N0ICdwb3At dXAtbWluaS1mcmFtZScgYXQgdGhlIG1haW4Kb3Igcm9vdCB3aW5kb3cgb2YgaXRzIHBhcmVu dCBmcmFtZS4iCiAgOnR5cGUgJ2ludGVnZXIKICA6aW5pdGlhbGl6ZSAnY3VzdG9tLWluaXRp YWxpemUtZGVmYXVsdAogIDpzZXQgJ3BvcC11cC1taW5pLS1zZXQtdmFsdWUKICA6dmVyc2lv biAiMjcuMSIKICA6Z3JvdXAgJ3BvcC11cC1taW5pKQoKKGRlZmN1c3RvbSBwb3AtdXAtbWlu aS1yZWhvc3QtdG8tZml0IHQKICAiSWYgbm9uLW5pbCwgcmVob3N0ICdwb3AtdXAtbWluaS1m cmFtZScgd2hlbiBpdHMgdGV4dCBkb2VzIG5vdCBmaXQuCklmIHRoaXMgb3B0aW9uIGlzIG5v bi1uaWwsICdwb3AtdXAtbWluaS1ob3N0JyBlcXVhbHMgJ3NlbGVjdGVkJwphbmQgdGhlIHRl eHQgc2hvd24gaW4gJ3BvcC11cC1taW5pLWZyYW1lJyBleGNlZWRzIHRoZSB3aWR0aCBvZgp0 aGUgc2VsZWN0ZWQgd2luZG93LCByZWhvc3QgJ3BvcC11cC1taW5pLWZyYW1lJyB0byB0aGUg c2VsZWN0ZWQKZnJhbWUncyBtYWluIHdpbmRvdy4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6aW5p dGlhbGl6ZSAnY3VzdG9tLWluaXRpYWxpemUtZGVmYXVsdAogIDpzZXQgJ3BvcC11cC1taW5p LS1zZXQtdmFsdWUKICA6dmVyc2lvbiAiMjcuMSIKICA6Z3JvdXAgJ3BvcC11cC1taW5pKQoK KGRlZmN1c3RvbSBwb3AtdXAtbWluaS1oaWRlLWlmLWVtcHR5IDAuNQogICJJZiBub24tbmls LCBkZWxheSBmb3IgaGlkaW5nIHRoZSBlbXB0eSAncG9wLXVwLW1pbmktZnJhbWUnLgpJZiB0 aGlzIGlzIG5pbCwgbmV2ZXIgaGlkZSB0aGUgJ3BvcC11cC1taW5pLWZyYW1lJy4gIE90aGVy d2lzZSwKaXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGJlZm9y ZSBoaWRpbmcgYW4gZW1wdHkKJ3BvcC11cC1taW5pLWZyYW1lJy4gIFplcm8gbWVhbnMgdG8g aGlkZSAncG9wLXVwLW1pbmktZnJhbWUnCmltbWVkaWF0ZWx5IGFmdGVyIGl0IGJlY29tZXMg ZW1wdHkuIgogIDp0eXBlICcoY2hvaWNlIChjb25zdCBuaWwpCgkJIChudW1iZXIgOnRhZyAi ZGVsYXkiKSkKICA6aW5pdGlhbGl6ZSAnY3VzdG9tLWluaXRpYWxpemUtZGVmYXVsdAogIDpz ZXQgJ3BvcC11cC1taW5pLS1zZXQtdmFsdWUKICA6dmVyc2lvbiAiMjcuMSIKICA6Z3JvdXAg J3BvcC11cC1taW5pKQoKKGRlZmN1c3RvbSBwb3AtdXAtbWluaS1wb3NpdGlvbiAnc2Nyb2xs LWJhcgogICJQb3NpdGlvbiBvZiAncG9wLXVwLW1pbmktZnJhbWUnIHdpdGhpbiBpdHMgaG9z dCB3aW5kb3cuCkNob2ljZXMgYXJlCgonYm9keS1ib3R0b20nIC0gYXQgdGhlIGJvdHRvbSBv ZiB0aGUgaG9zdCdzIGJvZHkgaWYgdGhlIGhvc3QgaXMgYQogICBsaXZlIHdpbmRvdywgYXQg dGhlIGJvdHRvbSBvZiB0aGUgaG9zdCB3aW5kb3cgb3RoZXJ3aXNlLiAgRm9yCiAgIGEgbGl2 ZSBob3N0IHdpbmRvdyB0aGlzIGF2b2lkcyBjb3ZlcmluZyB0aGUgd2luZG93J3MgbW9kZSBs aW5lCiAgIGFuZCBhbnkgc2Nyb2xsIGJhcnMsIGZyaW5nZXMsIG9yIG1hcmdpbnMuCgonYm9k eS10b3AnIC0gYXQgdGhlIHRvcCBvZiB0aGUgaG9zdCB3aW5kb3cncyBib2R5IGlmIHRoZSBo b3N0IGlzCiAgIGEgbGl2ZSB3aW5kb3csIGF0IHRoZSB0b3Agb2YgdGhlIGhvc3Qgd2luZG93 IG90aGVyd2lzZS4gIEZvciBhCiAgIGxpdmUgaG9zdCB3aW5kb3cgdGhpcyBhdm9pZHMgY292 ZXJpbmcgdGhlIHdpbmRvdydzIGhlYWRlciBsaW5lCiAgIGFuZCBhbnkgc2Nyb2xsIGJhcnMs IGZyaW5nZXMsIG9yIG1hcmdpbnMuCgonc2Nyb2xsLWJhcicgLSBhYm92ZSB0aGUgbW9kZSBs aW5lIG9mIHRoZSBob3N0IHdpbmRvdyBpZiBpdCBpcwogICBsaXZlLCBhdCB0aGUgYm90dG9t IG9mIHRoZSBob3N0IHdpbmRvdyBvdGhlcndpc2UuICBUaGlzIHdpbGwKICAgdXN1YWxseSBo aWRlIHRoZSBob3Jpem9udGFsIHNjcm9sbCBiYXIgb2YgdGhlIGhvc3Qgd2luZG93LgoKJ2Jv dHRvbScgLSBhdCB0aGUgYm90dG9tIG9mIHRoZSBob3N0IHdpbmRvdy4gIFRoaXMgd2lsbCB1 c3VhbGx5CiAgIGNvdmVyIHRoZSBob3N0IHdpbmRvdydzIG1vZGUgbGluZSwgaWYgYW55LgoK J3RvcCcgLSBhdCB0aGUgdG9wIG9mIHRoZSBob3N0IHdpbmRvdy4gIFRoaXMgd2lsbCB1c3Vh bGx5IGNvdmVyCiAgIHRoZSBob3N0IHdpbmRvdydzIGhlYWRlciBsaW5lLCBpZiBhbnkuCgpU aGUgd2lkdGggb2YgJ3BvcC11cC1taW5pLWZyYW1lJyBpcyB0aGUgYm9keSB3aWR0aCBvZiB0 aGUgaG9zdAp3aW5kb3cgZm9yIHRoZSBmaXJzdCB0d28gb3B0aW9ucyBhbmQgdGhlIHRvdGFs IHdpZHRoIG9mIHRoZSBob3N0CndpbmRvdyBmb3IgdGhlIHJlbWFpbmluZyBvbmVzLiIKICA6 dHlwZSAnKGNob2ljZSAoY29uc3QgYm9keS1ib3R0b20pCiAgICAgICAgICAgICAgICAgKGNv bnN0IGJvZHktdG9wKQoJCSAoY29uc3Qgc2Nyb2xsLWJhcikKICAgICAgICAgICAgICAgICAo Y29uc3QgYm90dG9tKQogICAgICAgICAgICAgICAgIChjb25zdCB0b3ApKQogIDppbml0aWFs aXplICdjdXN0b20taW5pdGlhbGl6ZS1kZWZhdWx0CiAgOnNldCAncG9wLXVwLW1pbmktLXNl dC12YWx1ZQogIDp2ZXJzaW9uICIyNy4xIgogIDpncm91cCAncG9wLXVwLW1pbmkpCgooZGVm Y3VzdG9tIHBvcC11cC1taW5pLXJlc2l6ZS1tYW51YWxseSB0CiAgIklmIG5vbi1uaWwsIGFs bG93IG1hbnVhbGx5IHJlc2l6aW5nIG9mICdwb3AtdXAtbWluaS1mcmFtZScuClRoaXMgYWxs b3dzIHRvIHRlbXBvcmFyaWx5IGRyYWcgdGhlIHVwcGVyIGJvcmRlciBvZiB0aGUgc2VsZWN0 ZWQKJ3BvcC11cC1taW5pLWZyYW1lJyB3aXRoIHRoZSBtb3VzZSB1bnRpbCBpdCBzaHJpbmtz IGJhY2sgdG8gb25lCmxpbmUgb3IgYmVjb21lcyBlbXB0eS4iCiAgOnR5cGUgJ2Jvb2xlYW4K ICA6aW5pdGlhbGl6ZSAnY3VzdG9tLWluaXRpYWxpemUtZGVmYXVsdAogIDpzZXQgJ3BvcC11 cC1taW5pLS1zZXQtdmFsdWUKICA6dmVyc2lvbiAiMjcuMSIKICA6Z3JvdXAgJ3BvcC11cC1t aW5pKQoKKGRlZmN1c3RvbSBwb3AtdXAtbWluaS1pbnRlcm5hbC1ib3JkZXIgImJsdWUiCiAg IkJhY2tncm91bmQgb2YgaW50ZXJuYWwgYm9yZGVyIG9mICdwb3AtdXAtbWluaS1mcmFtZScu IgogIDp0eXBlICdzdHJpbmcKICA6c2V0ICdwb3AtdXAtbWluaS0tc2V0LXZhbHVlCiAgOnZl cnNpb24gIjI3LjEiCiAgOmdyb3VwICdwb3AtdXAtbWluaSkKCihkZWZ2YXIgcG9wLXVwLW1p bmktYnVmZmVyIG5pbAogICJQcmVzZW50IG9yIHBhc3QgYnVmZmVyIG9mICdwb3AtdXAtbWlu aS13aW5kb3cnLgpUaGlzIGlzIHRoZSBidWZmZXIgc2hvd24gaW4gJ3BvcC11cC1taW5pLXdp bmRvdycgdGhlIGxhc3QgdGltZQoncmVzaXplLW1pbmktZnJhbWUnIHdhcyBjYWxsZWQgZm9y IGl0cyBmcmFtZS4iKQoKKGRlZnZhciBwb3AtdXAtbWluaS10ZXh0ICIiCiAgIlRleHQgZGlz cGxheWVkIGluICdwb3AtdXAtbWluaS13aW5kb3cnLiIpCgooZGVmdmFyIHBvcC11cC1taW5p LXRleHQtcGl4ZWwtc2l6ZSAnKDAgLiAwKQogICJTaXplIG9mICdwb3AtdXAtbWluaS10ZXh0 JyB0aGUgbGFzdCB0aW1lIGl0IHdhcyBjYWxjdWxhdGVkLgpUaGUgcmV0dXJuIHZhbHVlIG9m ICd3aW5kb3ctdGV4dC1waXhlbC1zaXplJyB0aGUgbGFzdCB0aW1lIGl0IHdhcwpydW4gZm9y ICdwb3AtdXAtbWluaS13aW5kb3cnLiAgVGhlIFgtTElNSVQgZm9yIHRoYXQgcnVuIHdhcyB0 aGUKd2lkdGggb2YgdGhlIHBhcmVudCBmcmFtZSBvZiAncG9wLXVwLW1pbmktZnJhbWUnIGF0 IHRoYXQgdGltZS4KVGhlIGJ1ZmZlciB0ZXh0IG9mICdwb3AtdXAtbWluaS13aW5kb3cnIGF0 IHRoYXQgdGltZSB3YXMKJ3BvcC11cC1taW5pLXRleHQnLiIpCgooZGVmdmFyIHBvcC11cC1t aW5pLXdpbmRvdy1waXhlbC13aWR0aCAwCiAgIlBpeGVsIHdpZHRoIG9mICdwb3AtdXAtbWlu aS13aW5kb3cnLiIpCgooZGVmdmFyIHBvcC11cC1taW5pLXdpbmRvdy1waXhlbC1oZWlnaHQg MAogICJQaXhlbCBoZWlnaHQgb2YgJ3BvcC11cC1taW5pLXdpbmRvdycuIikKCihkZWZ2YXIg cG9wLXVwLW1pbmktYmxvY2staGVpZ2h0IG5pbAogICJOb24tbmlsIG1lYW5zIHRlbXBvcmFy aWx5IGJsb2NrIGhlaWdodCBhZGp1c3RtZW50LiIpCgooZGVmdmFyIHBvcC11cC1taW5pLWhp ZGUtaWYtZW1wdHktdGltZXIgbmlsCiAgIlRpbWVyIGZvciBoaWRpbmcgJ3BvcC11cC1taW5p LWZyYW1lJy4iKQoKKGRlZnVuIHBvcC11cC1taW5pLWhvc3Qtd2luZG93ICgmb3B0aW9uYWwg ZnJhbWUpCiAgIlJldHVybiB3aW5kb3cgdG8gaG9zdCAncG9wLXVwLW1pbmktZnJhbWUnIG9u IEZSQU1FLgpGUkFNRSBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgZnJhbWUuIgogIChjb25k CiAgICgoZXEgcG9wLXVwLW1pbmktaG9zdCAnbWFpbikKICAgICh3aW5kb3ctbWFpbi13aW5k b3cgZnJhbWUpKQogICAoKGVxIHBvcC11cC1taW5pLWhvc3QgJ3Jvb3QpCiAgICAoZnJhbWUt cm9vdC13aW5kb3cgZnJhbWUpKQogICAodAogICAgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyBm cmFtZSkpKSkKCihkZWZ1biBwb3AtdXAtbWluaS1oaWRlICgpCiAgIkhpZGUgcG9wLXVwLW1p bmktZnJhbWUuIgogICh3aGVuIChmcmFtZS1saXZlLXAgcG9wLXVwLW1pbmktZnJhbWUpCiAg ICAobWFrZS1mcmFtZS1pbnZpc2libGUgcG9wLXVwLW1pbmktZnJhbWUpCiAgICAod2hlbiAo dGltZXJwIHBvcC11cC1taW5pLWhpZGUtaWYtZW1wdHktdGltZXIpCiAgICAgIChjYW5jZWwt dGltZXIgcG9wLXVwLW1pbmktaGlkZS1pZi1lbXB0eS10aW1lcikKICAgICAgKHNldHEgcG9w LXVwLW1pbmktaGlkZS1pZi1lbXB0eS10aW1lciBuaWwpKSkpCgooZGVmdW4gcG9wLXVwLW1p bmktbW92ZSAoZnJhbWUgJm9wdGlvbmFsIGhpZGUtaW1tZWRpYXRlbHkpCiAgIk1heWJlIG1v dmUgYW5kIHJlc2l6ZSAncG9wLXVwLW1pbmktZnJhbWUnIHRvIEZSQU1FLiIKICAobGV0KiAo KGhvc3QgKHBvcC11cC1taW5pLWhvc3Qtd2luZG93IGZyYW1lKSkKCSAocG9zaXRpb24gcG9w LXVwLW1pbmktcG9zaXRpb24pCgkgKGJvZHkgKGFuZCAod2luZG93LWxpdmUtcCBob3N0KQoJ CSAgICAobWVtcSBwb3NpdGlvbiAnKGJvZHktYm90dG9tIGJvZHktdG9wKSkpKQoJIChlZGdl cyAod2luZG93LWVkZ2VzIGhvc3QgYm9keSBuaWwgdCkpCgkgKGJvcmRlcnMtd2lkdGgKCSAg KCogKGZyYW1lLXBhcmFtZXRlciBwb3AtdXAtbWluaS1mcmFtZSAnaW50ZXJuYWwtYm9yZGVy LXdpZHRoKSAyKSkKCSAoYm9keS13aWR0aCAoY2FyIHBvcC11cC1taW5pLXRleHQtcGl4ZWwt c2l6ZSkpCgkgKGJvZHktaGVpZ2h0IChjZHIgcG9wLXVwLW1pbmktdGV4dC1waXhlbC1zaXpl KSkKCSB0b3RhbC13aWR0aCB0b3RhbC1oZWlnaHQgZXh0ZW5kZWQtd2lkdGggZXh0ZW5kZWQt bWFpbikKCjs7ICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUg Iipmb28qIikKOzsgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKOzsgICAgICAgKGlu c2VydCAoZm9ybWF0ICIlc1xuIiBoaWRlLWltbWVkaWF0ZWx5KSkpCgogICAgKGlmIChhbmQg KG51bWJlcnAgcG9wLXVwLW1pbmktaGlkZS1pZi1lbXB0eSkKCSAgICAgKHplcm9wIGJvZHkt d2lkdGgpICh6ZXJvcCBib2R5LWhlaWdodCkpCgkoY29uZAoJICgob3IgaGlkZS1pbW1lZGlh dGVseSAoPD0gcG9wLXVwLW1pbmktaGlkZS1pZi1lbXB0eSAwKSkKCSAgOzsgQW4gZW1wdHkg J3BvcC11cC1taW5pLWJ1ZmZlcicgLSBoaWRlIGl0LgoJICAoc2V0cSBwb3AtdXAtbWluaS1i bG9jay1oZWlnaHQgbmlsKQoJICAobWFrZS1mcmFtZS1pbnZpc2libGUgcG9wLXVwLW1pbmkt ZnJhbWUpKQoJICh0CgkgIChzZXRxIHBvcC11cC1taW5pLWJsb2NrLWhlaWdodCBuaWwpCgkg IChzZXRxIHBvcC11cC1taW5pLWhpZGUtaWYtZW1wdHktdGltZXIKCQkocnVuLXdpdGgtdGlt ZXIKCQkgcG9wLXVwLW1pbmktaGlkZS1pZi1lbXB0eSBuaWwgJ3BvcC11cC1taW5pLWhpZGUp KSkpCiAgICAgIDs7IElmICdwb3AtdXAtbWluaS1yZXNpemUtbWFudWFsbHknIGlzIG5vbi1u aWwga2VlcCBhcm91bmQgaG9zdAogICAgICA7OyBhbmQgaGVpZ2h0IG9mIGEgbWFudWFsbHkg cmVzaXplZCAncG9wLXVwLW1pbmktZnJhbWUnIGFzIGxvbmcKICAgICAgOzsgYXMgaXQncyBs YXJnZXIgdGhhbiBvbmUgbGluZSBhbmQgaXRzIGJ1ZmZlciBpcyBub24tZW1wdHkuCiAgICAg IChpZiBwb3AtdXAtbWluaS1ibG9jay1oZWlnaHQKCSAgKHNldHEgcG9wLXVwLW1pbmktYmxv Y2staGVpZ2h0CgkgICAgICAoYW5kIChub3QgKHplcm9wIGJvZHktd2lkdGgpKQoJCSAgIChu b3QgKHplcm9wIGJvZHktaGVpZ2h0KSkKCQkgICAoPiAod2luZG93LXBpeGVsLWhlaWdodCBw b3AtdXAtbWluaS13aW5kb3cpCgkJICAgICAgKGZyYW1lLWNoYXItaGVpZ2h0IHBvcC11cC1t aW5pLWZyYW1lKSkpKQoJKHNldHEgcG9wLXVwLW1pbmktYmxvY2staGVpZ2h0CgkgICAgICAo YW5kIHBvcC11cC1taW5pLXJlc2l6ZS1tYW51YWxseQoJCSAgIChlcSBwb3AtdXAtbWluaS1m cmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQoJCSAgICgvPSAod2luZG93LXBpeGVsLWhlaWdodCBw b3AtdXAtbWluaS13aW5kb3cpCgkJICAgICAgICh3aW5kb3ctb2xkLXBpeGVsLWhlaWdodCBw b3AtdXAtbWluaS13aW5kb3cpKSkpKQoKOzsgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIg KGdldC1idWZmZXItY3JlYXRlICIqZm9vKiIpCjs7IAkoZ290by1jaGFyIChwb2ludC1tYXgp KQo7OyAJKGluc2VydCAoZm9ybWF0ICJmb29iYXIgJXMgLi4gJXMgLi4gJXNcbiIKOzsgCQkJ cG9wLXVwLW1pbmktaGlkZS1pZi1lbXB0eQo7OyAJCQlib2R5LXdpZHRoIGJvZHktaGVpZ2h0 KSkpCgogICAgICA7OyBDaGVjayBtaW5pbXVtIHdpZHRoIGFuZCBoZWlnaHQgb2Ygc2VsZWN0 ZWQgd2luZG93LgogICAgICAoY29uZAogICAgICAgOzsgRm9yICdzY3JvbGwtYmFyJyBkZXRy YWN0IG1vZGUgbGluZSBhbmQgZGl2aWRlciBoZWlnaHQgZnJvbQogICAgICAgOzsgdGhpcmQg ZWRnZS4KICAgICAgICgoYW5kIChlcSBwb3NpdGlvbiAnc2Nyb2xsLWJhcikgKGVxIHBvcC11 cC1taW5pLWhvc3QgJ3NlbGVjdGVkKSkKCShzZXRxIGVkZ2VzIChsaXN0IChudGggMCBlZGdl cykgKG50aCAxIGVkZ2VzKSAobnRoIDIgZWRnZXMpCgkJCSAgKC0gKG50aCAzIGVkZ2VzKSAo d2luZG93LW1vZGUtbGluZS1oZWlnaHQgaG9zdCkKCQkJICAgICAod2luZG93LWJvdHRvbS1k aXZpZGVyLXdpZHRoIGhvc3QpKSkpCgkoc2V0cSBwb3NpdGlvbiAnYm90dG9tKSkKICAgICAg IDs7IEZvciAnYm90dG9tJyBkZXRyYWN0IGRpdmlkZXIgaGVpZ2h0IGZyb20gdGhpcmQgZWRn ZSB3aGVuIGhvc3QKICAgICAgIDs7IGlzIGxpdmUgKCdtYWluJyBzbGlnaHRseSBsb3NlcyBo ZXJlKS4KICAgICAgICgoYW5kIChlcSBwb3NpdGlvbiAnYm90dG9tKSAod2luZG93LWxpdmUt cCBob3N0KSkKCShzZXRxIGVkZ2VzIChsaXN0IChudGggMCBlZGdlcykgKG50aCAxIGVkZ2Vz KSAobnRoIDIgZWRnZXMpCgkJCSAgKC0gKG50aCAzIGVkZ2VzKQoJCQkgICAgICh3aW5kb3ct Ym90dG9tLWRpdmlkZXItd2lkdGggaG9zdCkpKSkpKQogICAgICAoc2V0cSB0b3RhbC13aWR0 aAoJICAgICgrIGJvZHktd2lkdGgKCSAgICAgICAoLSAod2luZG93LXBpeGVsLXdpZHRoIHBv cC11cC1taW5pLXdpbmRvdykKCQkgICh3aW5kb3ctYm9keS13aWR0aCBwb3AtdXAtbWluaS13 aW5kb3cgdCkpCgkgICAgICAgYm9yZGVycy13aWR0aCkpCgogICAgICAodW5sZXNzIHBvcC11 cC1taW5pLWJsb2NrLWhlaWdodAoJKHNldHEgdG90YWwtaGVpZ2h0CgkgICAgICAoKyBib2R5 LWhlaWdodAoJCSAoLSAod2luZG93LXBpeGVsLWhlaWdodCBwb3AtdXAtbWluaS13aW5kb3cp CgkJICAgICh3aW5kb3ctYm9keS1oZWlnaHQgcG9wLXVwLW1pbmktd2luZG93IHQpKQoJCSBi b3JkZXJzLXdpZHRoKSkpCgogICAgICA7OyBFeHRlbmQgb24gc2Nyb2xsIGJhcnMsIG1heWJl LgogICAgICAod2hlbiAoYW5kIChlcSBwb3AtdXAtbWluaS1wb3NpdGlvbiAnc2Nyb2xsLWJh cikKCQkgKHdpbmRvdy1jb21iaW5lZC1wIG5pbCB0KQoJCSAob3IgKDwgKC0gKG50aCAyIGVk Z2VzKSAobnRoIDAgZWRnZXMpCgkJCSAgICh3aW5kb3ctcmlnaHQtZGl2aWRlci13aWR0aCBo b3N0KSkKCQkJdG90YWwtd2lkdGgpCgkJICAgICAoPCAoLSAobnRoIDIgZWRnZXMpIChudGgg MCBlZGdlcykKCQkJICAgKHdpbmRvdy1yaWdodC1kaXZpZGVyLXdpZHRoIGhvc3QpKQoJCQlw b3AtdXAtbWluaS1ob3N0LW1pbi13aWR0aCkpKQoJKGxldCogKChlZGdlLTAgKG50aCAwIGVk Z2VzKSkKCSAgICAgICAoc2libGluZyAod2luZG93LW5leHQtc2libGluZykpCgkgICAgICAg KGVkZ2UtMiAobnRoIDIgKHdpbmRvdy1lZGdlcyBzaWJsaW5nIG5pbCBuaWwgdCkpKQoJICAg ICAgICh3aWR0aCAoLSBlZGdlLTIgZWRnZS0wKSkpCgkgICh3aGlsZSAoYW5kIHNpYmxpbmcg KDwgd2lkdGggdG90YWwtd2lkdGgpKQoJICAgIChzZXRxIHNpYmxpbmcgKHdpbmRvdy1uZXh0 LXNpYmxpbmcgc2libGluZykpCgkgICAgKHNldHEgZWRnZS0yIChudGggMiAod2luZG93LWVk Z2VzIHNpYmxpbmcgbmlsIG5pbCB0KSkpCgkgICAgKHNldHEgd2lkdGggKC0gZWRnZS0yIGVk Z2UtMCkpKQoJICAoaWYgKD49IHdpZHRoIHRvdGFsLXdpZHRoKQoJICAgICAgKHByb2duCgkJ KHNldHEgZXh0ZW5kZWQtd2lkdGggd2lkdGgpCgkJKHNldHEgZXh0ZW5kZWQtbWFpbgoJCSAg ICAgIChhbmQgc2libGluZyAobm90ICh3aW5kb3ctbGl2ZS1wIHNpYmxpbmcpKSkpKQoJICAg IChzZXRxIGVkZ2UtMiAobnRoIDIgKHdpbmRvdy1lZGdlcwoJCQkJICh3aW5kb3ctbWFpbi13 aW5kb3cgZnJhbWUpIG5pbCBuaWwgdCkpKQoJICAgIChzZXRxIHdpZHRoICgtIGVkZ2UtMiBl ZGdlLTApKQoJICAgICh3aGVuICg+PSB3aWR0aCB0b3RhbC13aWR0aCkKCSAgICAgIChzZXRx IGV4dGVuZGVkLW1haW4gdCkKCSAgICAgIChzZXRxIGV4dGVuZGVkLXdpZHRoIHdpZHRoKSkp KSkKCiAgICAgICh3aGVuIChhbmQgKG5vdCBwb3AtdXAtbWluaS1ibG9jay1oZWlnaHQpCgkJ IChlcSBwb3AtdXAtbWluaS1ob3N0ICdzZWxlY3RlZCkKCQkgKG5vdCBleHRlbmRlZC13aWR0 aCkKCQkgKG9yIChub3QgKHplcm9wIHBvcC11cC1taW5pLWhvc3QtbWluLXdpZHRoKSkKCQkg ICAgIChub3QgKHplcm9wIHBvcC11cC1taW5pLWhvc3QtbWluLWhlaWdodCkpCgkJICAgICBw b3AtdXAtbWluaS1yZWhvc3QtdG8tZml0KQoJCSAob3IgKGFuZCAoLz0gKHdpbmRvdy10b3Rh bC13aWR0aCBob3N0KQoJCQkgICAgICAod2luZG93LXRvdGFsLXdpZHRoICh3aW5kb3ctbWFp bi13aW5kb3cgZnJhbWUpKSkKCQkJICAob3IgKDwgKC0gKG50aCAyIGVkZ2VzKSAobnRoIDAg ZWRnZXMpCgkJCQkgICAgKHdpbmRvdy1yaWdodC1kaXZpZGVyLXdpZHRoIGhvc3QpKQoJCQkJ IHRvdGFsLXdpZHRoKQoJCQkgICAgICAoPCAoLSAobnRoIDIgZWRnZXMpIChudGggMCBlZGdl cykKCQkJCSAgICAod2luZG93LXJpZ2h0LWRpdmlkZXItd2lkdGggaG9zdCkpCgkJCQkgcG9w LXVwLW1pbmktaG9zdC1taW4td2lkdGgpCgkJICAgICAoYW5kICgvPSAod2luZG93LXRvdGFs LWhlaWdodCBob3N0KQoJCQkgICAgICAod2luZG93LXRvdGFsLWhlaWdodCAod2luZG93LW1h aW4td2luZG93IGZyYW1lKSkpCgkJCSAgKG9yICg8ICgtIChudGggMyBlZGdlcykgKG50aCAx IGVkZ2VzKSkgdG90YWwtaGVpZ2h0KQoJCQkgICAgICAoPCAoLSAobnRoIDMgZWRnZXMpIChu dGggMSBlZGdlcykpCgkJCQkgcG9wLXVwLW1pbmktaG9zdC1taW4taGVpZ2h0KSkpKSkpKQoJ OzsgRlJBTUUncyBzZWxlY3RlZCB3aW5kb3cgaXMgdG9vIHNtYWxsLCB1c2UgaXRzIG1haW4g d2luZG93LgoJKHNldHEgaG9zdCAod2luZG93LW1haW4td2luZG93IGZyYW1lKSkKCShzZXRx IHBvc2l0aW9uCgkgICAgICAoY29uZAoJICAgICAgICgoZXEgcG9zaXRpb24gJ2JvZHktdG9w KSAndG9wKQoJICAgICAgICgoZXEgcG9zaXRpb24gJ2JvZHktYm90dG9tKSAnYm90dG9tKQoJ ICAgICAgICh0IHBvc2l0aW9uKSkpCgkoc2V0cSBlZGdlcyAod2luZG93LWVkZ2VzIGhvc3Qg bmlsIG5pbCB0KSkpCgo7OyAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZl ci1jcmVhdGUgIipmb28qIikKOzsgCShnb3RvLWNoYXIgKHBvaW50LW1heCkpCjs7IAkoaW5z ZXJ0IChmb3JtYXQgImJhciAlcyAuLiAlcyAuLiAlcyAuLiBob3N0OiAlcyAuLiAlcyA+PSAl c1xuIgo7OyAJCQlwb3AtdXAtbWluaS1idWZmZXIgcG9wLXVwLW1pbmktdGV4dAo7OyAJCQlw b3AtdXAtbWluaS10ZXh0LXBpeGVsLXNpemUKOzsgCQkJaG9zdCAoLSAobnRoIDIgZWRnZXMp IChudGggMCBlZGdlcykpIGJvZHktd2lkdGgpKSkKCjs7ICAgICAgICh3aXRoLWN1cnJlbnQt YnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAiKmZvbyoiKQo7OyAJKGdvdG8tY2hhciAocG9p bnQtbWF4KSkKOzsgCShpbnNlcnQgKGZvcm1hdCAiYmFyIHRvcDogJXMgLi4uIGhlaWdodDog JXNcbiIKOzsgCQkJKC0gKGZyYW1lLXBpeGVsLWhlaWdodCBmcmFtZSkgKG50aCAzIGVkZ2Vz KSkKOzsgCQkJdG90YWwtaGVpZ2h0KSkpCgogICAgICA7OyBDYW5jZWwgb3VyIHRpbWVyLgog ICAgICAod2hlbiAodGltZXJwIHBvcC11cC1taW5pLWhpZGUtaWYtZW1wdHktdGltZXIpCgko Y2FuY2VsLXRpbWVyIHBvcC11cC1taW5pLWhpZGUtaWYtZW1wdHktdGltZXIpCgkoc2V0cSBw b3AtdXAtbWluaS1oaWRlLWlmLWVtcHR5LXRpbWVyIG5pbCkpCiAgICAgIDs7IFJlc2l6ZSBh bmQgcG9zaXRpb24uCiAgICAgIChtb2RpZnktZnJhbWUtcGFyYW1ldGVycwogICAgICAgcG9w LXVwLW1pbmktZnJhbWUKICAgICAgIGAoKHBhcmVudC1mcmFtZSAuICxmcmFtZSkKCSAodmlz aWJpbGl0eSAuIHQpCgkgKHRvcCAuICwoaWYgKG1lbXEgcG9wLXVwLW1pbmktcG9zaXRpb24g Jyh0b3AgYm9keS10b3ApKQoJCSAgICAgKG50aCAxIGVkZ2VzKQoJCSAgIGAoLSAsKC0gKGZy YW1lLXBpeGVsLWhlaWdodCBmcmFtZSkgKG50aCAzIGVkZ2VzKSkpKSkKCSAobGVmdCAuICwo bnRoIDAgZWRnZXMpKQoJICwodW5sZXNzIHBvcC11cC1taW5pLWJsb2NrLWhlaWdodAoJICAg IGAoaGVpZ2h0IC4gLChjb25zICd0ZXh0LXBpeGVscwoJCQkgICAgICA7OyBEb24ndCBtYWtl ICdwb3AtdXAtbWluaS1mcmFtZScgaGlnaGVyCgkJCSAgICAgIDs7IHRoYW4gaXRzIGhvc3Qg d2luZG93LgoJCQkgICAgICAobWluICgtIChudGggMyBlZGdlcykgKG50aCAxIGVkZ2VzKSkK CQkJCSAgIHRvdGFsLWhlaWdodCkpKSkKCSAod2lkdGggLiAsKGNvbnMgJ3RleHQtcGl4ZWxz CgkJCSA7OyBNYWtlICdwb3AtdXAtbWluaS1mcmFtZScgYXMgd2lkZSBhcyBpdHMKCQkJIDs7 IGhvc3Qgd2luZG93LgoJCQkgKG9yIChhbmQgZXh0ZW5kZWQtd2lkdGgKCQkJCSAgKC0gZXh0 ZW5kZWQtd2lkdGgKCQkJCSAgICAgKGlmIChhbmQgKHdpbmRvdy1saXZlLXAgaG9zdCkgKG5v dCBleHRlbmRlZC1tYWluKSkKCQkJCQkgKHdpbmRvdy1yaWdodC1kaXZpZGVyLXdpZHRoIGhv c3QpCgkJCQkgICAgICAgMCkKCQkJCSAgICAgKC0gKHdpbmRvdy1waXhlbC13aWR0aCBwb3At dXAtbWluaS13aW5kb3cpCgkJCQkJKHdpbmRvdy1ib2R5LXdpZHRoIHBvcC11cC1taW5pLXdp bmRvdyB0KSkKCQkJCSAgICAgYm9yZGVycy13aWR0aCkpCgkJCSAgICAgKC0gKG50aCAyIGVk Z2VzKSAobnRoIDAgZWRnZXMpCgkJCQkoaWYgKHdpbmRvdy1saXZlLXAgaG9zdCkKCQkJCSAg ICAod2luZG93LXJpZ2h0LWRpdmlkZXItd2lkdGggaG9zdCkKCQkJCSAgMCkKCQkJCSgtICh3 aW5kb3ctcGl4ZWwtd2lkdGggcG9wLXVwLW1pbmktd2luZG93KQoJCQkJICAgKHdpbmRvdy1i b2R5LXdpZHRoIHBvcC11cC1taW5pLXdpbmRvdyB0KSkKCQkJCWJvcmRlcnMtd2lkdGgpKSkp KSkKICAgICAgKHNldHEgcG9wLXVwLW1pbmktd2luZG93LXBpeGVsLXdpZHRoCgkgICAgKHdp bmRvdy1waXhlbC13aWR0aCBwb3AtdXAtbWluaS13aW5kb3cpKQogICAgICAoc2V0cSBwb3At dXAtbWluaS13aW5kb3ctcGl4ZWwtaGVpZ2h0CgkgICAgKHdpbmRvdy1waXhlbC1oZWlnaHQg cG9wLXVwLW1pbmktd2luZG93KSkpKSkKCihkZWZ1biBwb3AtdXAtbWluaS13aW5kb3ctc3Rh dGUtY2hhbmdlICgpCiAgIidwb3AtdXAtbWluaS1tb2RlJyBmdW5jdGlvbiBydW4gYnkgJ3dp bmRvdy1zdGF0ZS1jaGFuZ2UtaG9vaycuCklmIHRoZSBzZWxlY3RlZCB3aW5kb3csIHRoZSB3 aW5kb3cgc3BlY2ZpZWQgYnkgJ3BvcC11cC1taW5pLWhvc3QnCm9yICdwb3AtdXAtbWluaS10 ZXh0JyBjaGFuZ2VkIHNpbmNlIGxhc3QgcmVkaXNwbGF5LCByZXBhcmVudCwKcmVzaXplIGFu ZC9vciByZXBvc2l0aW9uICdwb3AtdXAtbWluaS1mcmFtZScgaWYgbmVjZXNzYXJ5LiIKICAo d2hlbiAoZnJhbWUtbGl2ZS1wIHBvcC11cC1taW5pLWZyYW1lKQogICAgKGxldCogKChvbGQt cGFyZW50CgkgICAgKGFuZCAoZnJhbWUtbGl2ZS1wIChmcmFtZS1wYXJlbnQgcG9wLXVwLW1p bmktZnJhbWUpKQoJCSAoZnJhbWUtcGFyZW50IHBvcC11cC1taW5pLWZyYW1lKSkpCgkgICAo bmV3LXBhcmVudAoJICAgIChjb25kCgkgICAgICgoZXEgKHNlbGVjdGVkLWZyYW1lKSBvbGQt cGFyZW50KSBvbGQtcGFyZW50KQoJICAgICAoKGVxIChzZWxlY3RlZC1mcmFtZSkgcG9wLXVw LW1pbmktZnJhbWUpCgkgICAgICAoaWYgKG1pbmlidWZmZXItc2VsZWN0ZWQtd2luZG93KQoJ CSAgKGxldCAoKGZyYW1lICh3aW5kb3ctZnJhbWUgKG1pbmlidWZmZXItc2VsZWN0ZWQtd2lu ZG93KSkpKQoJCSAgICAoaWYgKGFuZCAobm90IChlcSBmcmFtZSBvbGQtcGFyZW50KSkKCQkJ ICAgICAoZXEgKG1pbmlidWZmZXItd2luZG93IGZyYW1lKSBwb3AtdXAtbWluaS13aW5kb3cp KQoJCQk7OyBTcGVjaWFsIGNhc2Ugd2hlcmUgc2VsZWN0ZWQgd2luZG93IGNoYW5nZWQKCQkJ OzsgX2FuZF8gJ3BvcC11cC1taW5pLXdpbmRvdycgZ290IHNlbGVjdGVkLgoJCQlmcmFtZQoJ CSAgICAgIG9sZC1wYXJlbnQpKSkpCgkgICAgICgoZXEgKG1pbmlidWZmZXItd2luZG93KSBw b3AtdXAtbWluaS13aW5kb3cpIChzZWxlY3RlZC1mcmFtZSkpCgkgICAgICh0IG9sZC1wYXJl bnQpKSkKCSAgIGhpZGUtaW1tZWRpYXRlbHkpCgo7OyAgICAgICAodW5sZXNzIChlcSAoZnJh bWUtb2xkLXNlbGVjdGVkLXdpbmRvdyBuZXctcGFyZW50KQo7OyAJCSAgKGZyYW1lLXNlbGVj dGVkLXdpbmRvdyBuZXctcGFyZW50KSkKOzsgCSh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQt YnVmZmVyLWNyZWF0ZSAiKmZvbyoiKQo7OyAJICAoZ290by1jaGFyIChwb2ludC1tYXgpKQo7 OyAJICAoaW5zZXJ0IChmb3JtYXQgIiVzIC4uLiAlc1xuIgo7OyAJCQkgIChmcmFtZS1vbGQt c2VsZWN0ZWQtd2luZG93IG5ldy1wYXJlbnQpCjs7IAkJCSAgKGZyYW1lLXNlbGVjdGVkLXdp bmRvdyBuZXctcGFyZW50KSkpKSkKCiAgICAgICh3aGVuIChhbmQgKGZyYW1lLWxpdmUtcCBu ZXctcGFyZW50KQoJCSAob3IgKHNldHEgaGlkZS1pbW1lZGlhdGVseSAobm90IChlcSBvbGQt cGFyZW50IG5ldy1wYXJlbnQpKSkKCQkgICAgIChsZXQgKChob3N0LXdpbmRvdyAocG9wLXVw LW1pbmktaG9zdC13aW5kb3cgbmV3LXBhcmVudCkpKQoJCSAgICAgICAoc2V0cSBoaWRlLWlt bWVkaWF0ZWx5CgkJCSAgICAgKG9yIChhbmQgKGVxIHBvcC11cC1taW5pLWhvc3QgJ3NlbGVj dGVkKQoJCQkJICAgICAgKG5vdCAoZXEgKGZyYW1lLW9sZC1zZWxlY3RlZC13aW5kb3cKCQkJ CQkJbmV3LXBhcmVudCkKCQkJCQkgICAgICAgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdwoJCQkJ CQluZXctcGFyZW50KSkpKQoJCQkJICgvPSAod2luZG93LXBpeGVsLWhlaWdodCBob3N0LXdp bmRvdykKCQkJCSAgICAgKHdpbmRvdy1vbGQtcGl4ZWwtaGVpZ2h0IGhvc3Qtd2luZG93KSkK CQkJCSAoLz0gKHdpbmRvdy1waXhlbC13aWR0aCBob3N0LXdpbmRvdykKCQkJCSAgICAgKHdp bmRvdy1vbGQtcGl4ZWwtd2lkdGggaG9zdC13aW5kb3cpKSkpKQoJCSAgICAgKGZyYW1lLXdp bmRvdy1zdGF0ZS1jaGFuZ2UgcG9wLXVwLW1pbmktZnJhbWUpKSkKCTs7IFNvbWV0aGluZyBy ZWFsbHkgY2hhbmdlZCwgZGlnIGZ1cnRoZXIuCgkocG9wLXVwLW1pbmktbW92ZSBuZXctcGFy ZW50IGhpZGUtaW1tZWRpYXRlbHkpKSkpKQoKKGRlZnVuIHBvcC11cC1taW5pLXJlc2l6ZS1t aW5pLWZyYW1lIChmcmFtZSkKICAiJ3Jlc2l6ZS1taW5pLWZyYW1lcycgZnVuY3Rpb24gb2Yg J3BvcC11cC1taW5pLW1vZGUnLiIKICAod2hlbiAoZXEgZnJhbWUgcG9wLXVwLW1pbmktZnJh bWUpCiAgICAobGV0KiAoKGJ1ZmZlciAod2luZG93LWJ1ZmZlciBwb3AtdXAtbWluaS13aW5k b3cpKQoJICAgKHRleHQgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCgkJICAgOzsgU2lu Y2Ugd2UgaWdub3JlIHRleHQgcHJvcGVydGllcyB3ZSB3aWxsIG1pc3MgdGhlCgkJICAgOzsg Y2FzZSBvZiBkaXNwbGF5aW5nIHRoZSBzYW1lIHN0cmluZyB3aXRoCgkJICAgOzsgZGlmZmVy ZW50IHRleHQgcHJvcGVydGllcyB0d2ljZSBpbiBhIHJvdy4KCQkgICAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpKQogICAgICA7 OyBSZXR1cm4gd2hlbiB0aGVyZSdzIG5vIGNoYW5nZS4gIFRoaXMgbWVhbnMgdGhhdAogICAg ICA7OyAncG9wLXVwLW1pbmktYnVmZmVyJywgJ3BvcC11cC1taW5pLXRleHQnIGFzIHdlbGwg YXMgd2lkdGggYW5kCiAgICAgIDs7IGhlaWdodCBvZiAncG9wLXVwLW1pbmktd2luZG93JyBh cmUgdGhlIHNhbWUgYXMgdGhlIGxhc3QgdGltZQogICAgICA7OyB3ZSBkaXNwbGF5ZWQgdGhl bS4KICAgICAgKHVubGVzcyAoYW5kIChlcSBidWZmZXIgcG9wLXVwLW1pbmktYnVmZmVyKQoJ CSAgIChzdHJpbmctZXF1YWwgcG9wLXVwLW1pbmktdGV4dCB0ZXh0KQoJCSAgIDs7IE1ha2Ug c3VyZSB0aGF0IHdlIGRvIG5vdCBtaXNzIGEgY2FzZSB3aGVyZSB3ZQoJCSAgIDs7IHdhbnQg dG8gbWFrZSAncG9wLXVwLW1pbmktZnJhbWUnIGludmlzaWJsZS4KCQkgICAob3IgKG5vdCBw b3AtdXAtbWluaS1oaWRlLWlmLWVtcHR5KQoJCSAgICAgICAobm90IChzdHJpbmctZXF1YWwg dGV4dCAiIikpCgkJICAgICAgIChub3QgKGZyYW1lLXZpc2libGUtcCBwb3AtdXAtbWluaS1m cmFtZSkpKQoJCSAgIChlcXVhbCAod2luZG93LXBpeGVsLXdpZHRoIHBvcC11cC1taW5pLXdp bmRvdykKCQkJICBwb3AtdXAtbWluaS13aW5kb3ctcGl4ZWwtd2lkdGgpCgkJICAgKGVxdWFs ICh3aW5kb3ctcGl4ZWwtaGVpZ2h0IHBvcC11cC1taW5pLXdpbmRvdykKCQkJICBwb3AtdXAt bWluaS13aW5kb3ctcGl4ZWwtaGVpZ2h0KSkKCTs7IFJlbWVtYmVyIG9sZCBzdHJpbmcuCgko c2V0cSBwb3AtdXAtbWluaS1idWZmZXIgYnVmZmVyKQoJKHNldHEgcG9wLXVwLW1pbmktdGV4 dCB0ZXh0KQoJKHNldHEgcG9wLXVwLW1pbmktd2luZG93LXBpeGVsLXdpZHRoCgkgICAgICAo d2luZG93LXBpeGVsLXdpZHRoIHBvcC11cC1taW5pLXdpbmRvdykpCgkoc2V0cSBwb3AtdXAt bWluaS13aW5kb3ctcGl4ZWwtaGVpZ2h0CgkgICAgICAod2luZG93LXBpeGVsLWhlaWdodCBw b3AtdXAtbWluaS13aW5kb3cpKQoJOzsgVGhpcyBpcyB0aGUgb25seSBwbGFjZSB3aGVyZSB3 ZSBjYW4gY2FsY3VsYXRlIHRoZSBzaXplLgoJKHNldHEgcG9wLXVwLW1pbmktdGV4dC1waXhl bC1zaXplCgkgICAgICAoYW5kIChidWZmZXItbGl2ZS1wIGJ1ZmZlcikKCQkgICAod2luZG93 LXRleHQtcGl4ZWwtc2l6ZQoJCSAgICBwb3AtdXAtbWluaS13aW5kb3cKCQkgICAgbmlsIG5p bCAoZnJhbWUtdGV4dC13aWR0aAoJCQkgICAgIChmcmFtZS1wYXJlbnQgcG9wLXVwLW1pbmkt ZnJhbWUpKSkpKQoKOzsgCSh3aGVuIChidWZmZXItbGl2ZS1wIGJ1ZmZlcikKOzsgCSAgKHdp dGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqZm9vKiIpCjs7IAkgICAg KGdvdG8tY2hhciAocG9pbnQtbWF4KSkKOzsgCSAgICAoaW5zZXJ0IChmb3JtYXQgImZvbyAl cyAoJXMpIC4uICVzICglcykgLi4gJXMgLi4gJXNcbiIKOzsgCQkJICAgIGJ1ZmZlciAoZXEg YnVmZmVyIHBvcC11cC1taW5pLWJ1ZmZlcikKOzsgCQkJICAgIHRleHQgKHN0cmluZy1lcXVh bCB0ZXh0IHBvcC11cC1taW5pLXRleHQpCjs7IAkJCSAgICBwb3AtdXAtbWluaS10ZXh0LXBp eGVsLXNpemUKOzsgCQkJICAgIChmcmFtZS10ZXh0LXdpZHRoCjs7IAkJCSAgICAgKGZyYW1l LXBhcmVudCBwb3AtdXAtbWluaS1mcmFtZSkpKSkpKQoKCTs7IE5vdGlmeSBvdXJzZWx2ZXMg b2YgY2hhbmdlLgoJKHNldC1mcmFtZS13aW5kb3ctc3RhdGUtY2hhbmdlIGZyYW1lIHQpKSkp KQoKKGRlZnVuIHBvcC11cC1taW5pLWFmdGVyLW1ha2UtZnJhbWUgKGZyYW1lKQogICJNYXli ZSBtYWtlIEZSQU1FIGNsaWVudCBvZiAncG9wLXVwLW1pbmktZnJhbWUnLiIKICAod2hlbiAo YW5kIChub3QgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAnbWluaWJ1ZmZlcikpCgkgICAgICh3 aW5kb3ctbGl2ZS1wIHBvcC11cC1taW5pLXdpbmRvdykpCiAgICAoc2V0LWZyYW1lLXBhcmFt ZXRlciBmcmFtZSAnbWluaWJ1ZmZlciBwb3AtdXAtbWluaS13aW5kb3cpKSkKCihkZWZ1biBw b3AtdXAtbWluaS1zZXR1cCAoKQogICJTZXQgdXAgbWluaWJ1ZmZlciBjaGlsZCBmcmFtZSBt b2RlLgpUaGlzIGZ1bmN0aW9uIG1ha2VzIHRoZSBmaXJzdCBtaW5pYnVmZmVyLW9ubHkgZnJh bWUgaXQgZmluZHMgdGhlCidwb3AtdXAtbWluaS1mcmFtZScuICBOZWVkcyBhIG1pbmlidWZm ZXItb25seSBmcmFtZS4iCiAgKHNldHEgcG9wLXVwLW1pbmktZnJhbWUgbmlsKQoKICA7OyBN YWtlICdwb3AtdXAtbWluaS1mcmFtZScgdGhlIGZpcnN0ICdtaW5pYnVmZmVyLW9ubHknIGZy YW1lIGZvdW5kCiAgOzsgb24gJ2ZyYW1lLWxpc3QnLiAgVGhyb3cgYW4gZXJyb3IgaWYgd2Ug ZG9uJ3QgZmluZCBvbmUuCiAgKHVubGVzcyAoY2F0Y2ggJ2ZvdW5kCgkgICAgKGRvbGlzdCAo ZnJhbWUgKGZyYW1lLWxpc3QpKQoJICAgICAgKHdoZW4gKGVxIChmcmFtZS1wYXJhbWV0ZXIg ZnJhbWUgJ21pbmlidWZmZXIpICdvbmx5KQoJCSh0aHJvdyAnZm91bmQgKHNldHEgcG9wLXVw LW1pbmktZnJhbWUgZnJhbWUpKSkpKQogICAgKGVycm9yICIncG9wLXVwLW1pbmktbW9kZScg bmVlZHMgYSBtaW5pYnVmZmVyLW9ubHkgZnJhbWUiKSkKCiAgOzsgVGhlIGZvbGxvd2luZyB3 aWxsIGZhaWwgd2hlbmV2ZXIgc29tZW9uZSByZXNldHMgdGhlCiAgOzsgJ3Vuc3BsaXR0YWJs ZScgcGFyYW1ldGVyIG9mICdwb3AtdXAtbWluaS1mcmFtZScuCiAgKHNldHEgcG9wLXVwLW1p bmktd2luZG93IChmcmFtZS1yb290LXdpbmRvdyBwb3AtdXAtbWluaS1mcmFtZSkpCiAgKHNl dHEgcG9wLXVwLW1pbmktYnVmZmVyICh3aW5kb3ctYnVmZmVyIHBvcC11cC1taW5pLXdpbmRv dykpCiAgKHNldC1mYWNlLWJhY2tncm91bmQKICAgJ2ludGVybmFsLWJvcmRlciBwb3AtdXAt bWluaS1pbnRlcm5hbC1ib3JkZXIgcG9wLXVwLW1pbmktZnJhbWUpCiAgOzsgVXN1cnBhdGUg J3Jlc2l6ZS1taW5pLWZyYW1lcycuICBPbiBleGl0IHJlc2V0IHRoYXQgdG8gbmlsLgogIChz ZXRxIHJlc2l6ZS1taW5pLWZyYW1lcyAncG9wLXVwLW1pbmktcmVzaXplLW1pbmktZnJhbWUp CiAgKGFkZC1ob29rCiAgICd3aW5kb3ctc3RhdGUtY2hhbmdlLWhvb2sgJ3BvcC11cC1taW5p LXdpbmRvdy1zdGF0ZS1jaGFuZ2UpCiAgKGFkZC1ob29rCiAgICdhZnRlci1tYWtlLWZyYW1l LWZ1bmN0aW9ucyAncG9wLXVwLW1pbmktYWZ0ZXItbWFrZS1mcmFtZSkpCgo7OzsjIyNhdXRv bG9hZAooZGVmaW5lLW1pbm9yLW1vZGUgcG9wLXVwLW1pbmktbW9kZQogICJTaG93IG1pbmli dWZmZXIgYW5kIGVjaG8gYXJlYSBpbiBhIGNoaWxkIGZyYW1lLgoncG9wLXVwLW1pbmktbW9k ZScgdXNlcyBhIGNoaWxkIGZyYW1lIGNhbGxlZCAncG9wLXVwLW1pbmktZnJhbWUnCmZvciBk aXNwbGF5aW5nIHRoZSBtaW5pYnVmZmVyIG9yIHRoZSBlY2hvIGFyZWEuICBUaGUgcGFyZW50 IGZyYW1lCm9mICdwb3AtdXAtbWluaS1mcmFtZScgaXMgdGhlIGN1cnJlbnRseSBzZWxlY3Rl ZCBmcmFtZS4gIFdpdGhpbgppdHMgcGFyZW50LCAncG9wLXVwLW1pbmktZnJhbWUnIGNhbiBi ZSBob3N0ZWQgYXQgdGhhdCBmcmFtZSdzCnNlbGVjdGVkLCBtYWluIG9yIHJvb3Qgd2luZG93 IChzZWUgJ3BvcC11cC1taW5pLWhvc3QnKSBlaXRoZXIgYXQKdGhhdCB3aW5kb3cncyB0b3Ag b3IgYm90dG9tIChzZWUgJ3BvcC11cC1taW5pLXBvc2l0aW9uJykuICBBCidwb3AtdXAtbWlu aS1mcmFtZScgdGhhdCBkb2VzIG5vdCBkaXNwbGF5IGFueSB0ZXh0IGNhbiBiZSBoaWRkZW4K dXNpbmcgdGhlIG9wdGlvbiAncG9wLXVwLW1pbmktaGlkZS1pZi1lbXB0eScuIgogIDpnbG9i YWwgdAogIDpncm91cCAncG9wLXVwLW1pbmkKICA6aW5pdC12YWx1ZSBuaWwKICA6bGluayAn KGVtYWNzLWNvbW1lbnRhcnktbGluayAicG9wLXVwLW1pbmkuZWwiKQogIChpZiBwb3AtdXAt bWluaS1tb2RlCiAgICAgIChpZiBmcmFtZS1pbml0aWFsLWZyYW1lCgkgIDs7IFdoZW4gdGhl IGluaXRpYWwgZnJhbWUgaXMgc3RpbGwgYXJvdW5kIHdhaXQgdW50aWwKCSAgOzsgJ3dpbmRv dy1zZXR1cC1ob29rJyBpcyBydW4uCgkgIChhZGQtaG9vayAnd2luZG93LXNldHVwLWhvb2sg J3BvcC11cC1taW5pLXNldHVwKQoJOzsgT3RoZXJ3aXNlIHJ1biBpbW1lZGlhdGVseS4KCShw b3AtdXAtbWluaS1zZXR1cCkpCiAgICA7OyBDYW5jZWwgb3VyIHRpbWVyLgogICAgKHdoZW4g KHRpbWVycCBwb3AtdXAtbWluaS1oaWRlLWlmLWVtcHR5LXRpbWVyKQogICAgICAoY2FuY2Vs LXRpbWVyIHBvcC11cC1taW5pLWhpZGUtaWYtZW1wdHktdGltZXIpCiAgICAgIChzZXRxIHBv cC11cC1taW5pLWhpZGUtaWYtZW1wdHktdGltZXIgbmlsKSkKICAgIChyZW1vdmUtaG9vawog ICAgICd3aW5kb3ctc3RhdGUtY2hhbmdlLWhvb2sgJ3BvcC11cC1taW5pLXdpbmRvdy1zdGF0 ZS1jaGFuZ2UpCiAgICAocmVtb3ZlLWhvb2sKICAgICAnYWZ0ZXItbWFrZS1mcmFtZS1mdW5j dGlvbnMgJ3BvcC11cC1taW5pLWFmdGVyLW1ha2UtZnJhbWUpCiAgICA7OyBUaGlzIGlzIG5v dCB2ZXJ5IG5pY2UgYnV0IGFueSBwcmV2aW91cyB2YWx1ZSBtaWdodCBiZSBicm9rZW4uCiAg ICAoc2V0cSByZXNpemUtbWluaS1mcmFtZXMgbmlsKQogICAgOzsgUmVzZXQgb3VyIHZhcmlh Ymxlcy4KICAgIChzZXRxIHBvcC11cC1taW5pLXdpbmRvdyBuaWwpCiAgICAod2hlbiBwb3At dXAtbWluaS1mcmFtZQogICAgICA7OyBVbnBhcmVudCBvdXIgZnJhbWUgYW5kIG1ha2UgaXQg dmlzaWJsZS4KICAgICAgKG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzCiAgICAgICBwb3AtdXAt bWluaS1mcmFtZQogICAgICAgYCgocGFyZW50LWZyYW1lIC4gbmlsKSAodmlzaWJpbGl0eSAu IHQpKSkKICAgICAgKHNldHEgcG9wLXVwLW1pbmktZnJhbWUgbmlsKSkpKQoKKHByb3ZpZGUg J3BvcC11cC1taW5pKQoKOzs7IFJlY29tbWVuZGVkIHZhcmlhYmxlIHNldHRpbmdzIGZvciAu ZW1hY3MgaW5pdCBmaWxlLgoKOzsgKGN1c3RvbS1zZXQtdmFyaWFibGVzCjs7ICA7OyBFbmFi bGUgb3Vyc2VsdmVzLgo7OyAgJyhwb3AtdXAtbWluaS1tb2RlIDEpCjs7ICA7OyBSZXNpemUg ZnJhbWVzIGV4YWN0bHkuCjs7ICAnKGZyYW1lLXJlc2l6ZS1waXhlbHdpc2UgdCkKOzsgIDs7 IEF0IGxlYXN0IHR3byBsaW5lcyBzY3JvbGwgbWFyZ2luIGZvciBzZWxlY3RlZCB3aW5kb3cg aG9zdC4KOzsgICcoc2Nyb2xsLW1hcmdpbiAyKQo7OyAgOzsgQXV0b21hdGljYWxseSBjcmVh dGUgYSBtaW5pYnVmZmVyIGNoaWxkIGZyYW1lIGF0IHN0YXJ0dXAgYW5kCjs7ICA7OyByZXBh cmVudCBpdCBpbW1lZGlhdGVseS4KOzsgICcoaW5pdGlhbC1mcmFtZS1hbGlzdAo7OyAgICAg KGNvbnMgJyhtaW5pYnVmZmVyIC4gY2hpbGQtZnJhbWUpIGluaXRpYWwtZnJhbWUtYWxpc3Qp KQo7OyAgOzsgUmV1c2UgbWluaWJ1ZmZlciBjaGlsZCBmcmFtZSB3aGVuIG1ha2luZyBhIG5l dyBmcmFtZS4gIERvIG5vdCB1c2UKOzsgIDs7ICcobWluaWJ1ZmZlciAuIGNoaWxkLWZyYW1l KSBoZXJlLCBpdCB3b3VsZCBtYWtlIGEgbmV3IGNoaWxkIGZyYW1lLgo7OyAgJyhkZWZhdWx0 LWZyYW1lLWFsaXN0Cjs7ICAgICAoY29ucyAnKG1pbmlidWZmZXIgLiBuaWwpIGRlZmF1bHQt ZnJhbWUtYWxpc3QpKQo7OyAgJyhtaW5pYnVmZmVyLWZyYW1lLWFsaXN0Cjs7ICAgICcoOzsg SW5pdGlhbCBwb3NpdGlvbmluZyBhbmQgc2l6aW5nIGZvciB0aGUgd2luZG93IG1hbmFnZXIu Cjs7ICAgICAgKGhlaWdodCAuIDEpCjs7ICAgICAgKHdpZHRoIC4gMS4wKQo7OyAgICAgICh0 b3AgLiAxLjApCjs7ICAgICAgOzsgQWx3YXlzIHNob3cgYXQgbGVhc3Qgb25lIGxpbmUuCjs7 ICAgICAgKG1pbi1oZWlnaHQgLiAxKQo7OyAgICAgIDs7IE5vIGhvcml6b250YWwgc2Nyb2xs IGJhcnMgKHRoZXkgZG9uJ3Qgd29yayBwcm9wZXJseSBpbgo7OyAgICAgIDs7IG1pbmlidWZm ZXIgd2luZG93cykuCjs7ICAgICAgKGhvcml6b250YWwtc2Nyb2xsLWJhcnMgLiBuaWwpCjs7 ICAgICAgOzsgTm8gdGl0bGUgYmFyLgo7OyAgICAgICh1bmRlY29yYXRlZCAuIHQpCjs7ICAg ICAgOzsgVG8gZHJhZyB0aGUgY2hpbGQgZnJhbWUncyB0b3Agd2l0aCB0aGUgbW91c2UuCjs7 ICAgICAgKGludGVybmFsLWJvcmRlci13aWR0aCAuIDEpCjs7ICAgICAgKGRyYWctaW50ZXJu YWwtYm9yZGVyIC4gdCkKOzsgICAgICA7OyBObyBzcGVjaWFsIGdseXBocy4KOzsgICAgICAo bm8tc3BlY2lhbC1nbHlwaHMgLiB0KQo7OyAgICAgIDs7IE5vIGZvdWNzIHdoZW4gY2hpbGQg ZnJhbWUgaXMgKHJlLSltYXBwZWQuCjs7ICAgICAgKG5vLWZvY3VzLW9uLW1hcCAuIHQpKSkp Cgo7OzsgcG9wLXVwLW1pbmkuZWwgZW5kcyBoZXJlCg== --------------798E05270F96DD200CC62CD8--