From unknown Thu Jun 19 13:54:36 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#12686 <12686@debbugs.gnu.org> To: bug#12686 <12686@debbugs.gnu.org> Subject: Status: PATCH: ambiguous help doc strings Reply-To: bug#12686 <12686@debbugs.gnu.org> Date: Thu, 19 Jun 2025 20:54:36 +0000 retitle 12686 PATCH: ambiguous help doc strings reassign 12686 emacs submitter 12686 "Aaron S. Hawley" severity 12686 minor thanks From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 19 17:00:08 2012 Received: (at submit) by debbugs.gnu.org; 19 Oct 2012 21:00:08 +0000 Received: from localhost ([127.0.0.1]:52189 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TPJfp-0000NK-KK for submit@debbugs.gnu.org; Fri, 19 Oct 2012 17:00:08 -0400 Received: from eggs.gnu.org ([208.118.235.92]:37987) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TPJfi-0000Ly-PP for submit@debbugs.gnu.org; Fri, 19 Oct 2012 17:00:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TPJe6-0004c6-75 for submit@debbugs.gnu.org; Fri, 19 Oct 2012 16:58:22 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:48575) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TPJe5-0004bu-Nu for submit@debbugs.gnu.org; Fri, 19 Oct 2012 16:58:17 -0400 Received: from eggs.gnu.org ([208.118.235.92]:56827) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TPJe1-00041R-FF for bug-gnu-emacs@gnu.org; Fri, 19 Oct 2012 16:58:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TPJdw-0004YF-Hn for bug-gnu-emacs@gnu.org; Fri, 19 Oct 2012 16:58:13 -0400 Received: from mail-ie0-f169.google.com ([209.85.223.169]:64883) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TPJdw-0004Xv-3f for bug-gnu-emacs@gnu.org; Fri, 19 Oct 2012 16:58:08 -0400 Received: by mail-ie0-f169.google.com with SMTP id 10so1660440ied.0 for ; Fri, 19 Oct 2012 13:58:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=uwquJGFUgYEsmzexbS938I/Gu1I2VSfDH+999qWmh8c=; b=tDJyfpXKuyUUwzYXTe/NJ1MuWlW269Ew4ZMIqgivad+OA/VQvTap5QcV8qBbkaH+pU s2e63ske93ZlI7xcbk8A20waikmorEPmK3vyx8ZHrQYv4nKNCS4LXTeKmaq+nZdAgLut Loiz9rkjoD39IwNnDTO+fOfrXDhsmqwdrbmYQRzrVf0kzs1KcXeAzJBer7ogKyHuR5OC 418iLqUtMBcmMdakETh2vMbd03qwlk7xqdD04u1iJMe1qsJ29EIQId7g1wGV7Mu6RyXP 967coTa+ZpC+ETQfxx9vMpKXXzOnTJ5H74+IAgJs5P6lQOgwjqjPxnicSQsKjFtuWgT+ 7I2w== MIME-Version: 1.0 Received: by 10.50.168.40 with SMTP id zt8mr2836914igb.7.1350680286762; Fri, 19 Oct 2012 13:58:06 -0700 (PDT) Received: by 10.64.38.129 with HTTP; Fri, 19 Oct 2012 13:58:06 -0700 (PDT) Date: Fri, 19 Oct 2012 16:58:06 -0400 Message-ID: Subject: PATCH: ambiguous help doc strings From: "Aaron S. Hawley" To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary=e89a8f503838b296ba04cc6fc2ef X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 208.118.235.17 X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org --e89a8f503838b296ba04cc6fc2ef Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable I came across a few cross references in doc strings that were for variables or functions that when followed the *Help* buffer shows the documentation for both. This is acceptable for some symbols, but less for others. The following patch fixes about 70 or more. I wrote some `mapatoms' code that tried to find all such ambiguous help cross-references to help me track these down. The alternative is running M-x checkdoc interactively for every single Lisp file in Emacs. (defun ash-ambiguous-help-xrefs () "List of doc strings with imprecise cross-references." (interactive) (with-help-window (help-buffer) (with-current-buffer (help-buffer) (help-setup-xref '(ash-ambiguous-help-xrefs) (called-interactively-p 'interactive)) (let (dups bugs re) (mapatoms (lambda (s) (when (and ;; (and (fboundp s) (boundp s)) (< 1 (+ (if (fboundp s) 1 0) (if (boundp s) 1 0) (if (facep s) 0 0))) ;; Who cares. (not ;; (aliasp s) (and (fboundp s) (symbolp (symbol-function s)))) ;; The ambiguity is intentional for these, ;; or at least it's acceptable. (null (memq s '(function buffer-file-name system-name window-system custom-file user-login-name sentence-end keyboard-coding-system)))) (setq dups (cons s dups))))) (setq re (concat (regexp-opt '("variable" "option" "function" "command" "face") t) "?[ \t\n]*\\(?:of\\|for\\)?[ \t\n]*" "`" (regexp-opt (mapcar 'symbol-name dups) t) "'")= ) (mapatoms (lambda (s) (mapcar (lambda (type) (let ((i 0) (d (if (eq type 'function-documentation) (documentation s) (documentation-property s type)))) (while (and (stringp d) (string-match re d i) (not (string=3D (match-string 2 d) (symbol-name s))) (null (match-string 1 d))) (let ((xref (intern (match-string 2 d)))) (when (null (member (cons s xref) bugs)) (setq bugs (cons (cons s xref) bugs)))) (setq i (match-end 0))))) (let (types) (when (and (fboundp s) (functionp s)) (setq types (cons 'function-documentation types))) (when (boundp s) (setq types (cons 'variable-documentation types))) (when (facep s) (setq types (cons 'face-documentation types))) types)))) (insert (documentation 'ash-ambiguous-help-xrefs)) (newline 2) ;; `help-make-xrefs' does `forward-paragraph' (dolist (b bugs) (insert (format "`%s' alludes to %s" (car b) (cdr b))) (newline)))))) In order to check all the doc strings in Emacs, all the libraries in Emacs need to be loaded. Unfortunately, Emacs crashes or becomes unusable when doing this. Some libraries need to be skipped. This could be because a library is loaded more than once since I use `load-library' rather than `require'. (defvar ash-skip-libs '("loadup" "eudcb-bbdb" "eudc-export" "blessmail" "characters" "gnus-vm" ".dir-locals" "edt-mapper" "iso-swed")) (defun ash-load-everything () "Load all libraries in the load-path and likely kill Emacs. Loading everything with a beating pulse and most certainly nuke the current session. Prepare to die." (interactive) (let ((libs nil)) (mapc (lambda (s) (when (string-match "\\.elc?\\'" s) (add-to-list 'libs (replace-match "" t t s) (not 'append) 'string-equal))) (locate-file-completion-table load-path '("\\.elc\\'" "\\.el\\'") "" (lambda (s) (string-match "\\.elc?\\'" s)) t)) (dolist (skip-lib ash-skip-libs) (delete skip-lib libs)) (dolist (lib libs) (load-library lib)))) There was a cross-reference to `top-level' which shouldn't have been. I also suggest Help Mode use "call" as a hint for a cross-reference to a function -- only "function" and "command" do now. The patch is against the sources of 24.2. Thanks for Emacs, /a --- lisp/ChangeLog~ 2012-08-24 05:50:49.000000000 -0400 +++ lisp/ChangeLog 2012-10-19 09:40:24.886464600 -0400 @@ -1,0 +1,76 @@ +2012-10-18 Aaron S. Hawley + + * calc/calc.el (calc-highlight-selections-with-faces): Fix doc + string cross-reference(s). + + * comint.el (calc-dispatch): Fix doc string cross-reference(s). + + * emacs-lisp/edebug.el (comint-history-isearch-message): Fix doc + string cross-reference(s). + + * ffap.el (edebug-eval-defun): Fix doc string cross-reference(s). + + * font-lock.el (ffap-literally): Fix doc string + cross-reference(s). + + * help-mode.el (help-xref-symbol-regexp): Add "call" a hint for a + cross-reference to a function. + + * info.el (help-xref-symbol-regexp): Fix doc string + cross-reference(s). + + * international/mule.el (Info-find-emacs-command-nodes): Fix doc + string cross-reference(s). + + * isearch.el (add-to-coding-system-list): Fix doc string + cross-reference(s). + + * misearch.el (isearch-fail-pos): Fix doc string + cross-reference(s). + + * newcomment.el (multi-isearch-next-buffer-function): Fix doc + string cross-reference(s). + + * printing.el (comment-box): Fix doc string cross-reference(s). + + * progmodes/cc-fonts.el (pr-setting-database): Fix doc string + cross-reference(s). + + * progmodes/compile.el (pike-font-lock-keywords): Fix doc string + cross-reference(s). + + * progmodes/etags.el (compile): Fix doc string cross-reference(s). + + * progmodes/gdb-mi.el (initialize-new-tags-table): Fix doc string + cross-reference(s). + + * progmodes/etags.el (initialize-new-tags-table): Fix doc string + cross-reference(s). + + * progmodes/gdb-mi.el (initialize-new-tags-table): Fix doc string + cross-reference(s). + + * ps-print.el (gdb-restore-windows): Fix doc string + cross-reference(s). + + * server.el (ps-n-up-filling-database): Fix doc string + cross-reference(s). + + * simple.el (server-log): Fix doc string cross-reference(s). + + * textmodes/flyspell.el (auto-fill-mode): Fix doc string + cross-reference(s). + + * textmodes/ispell.el (ispell-accept-output): Fix doc string + cross-reference(s). + + * textmodes/sgml-mode.el (ispell-accept-output): Fix doc string + cross-reference(s). + + * vc/compare-w.el (html-mode): Fix doc string cross-reference(s). + + * vc/diff.el (compare-windows-dehighlight): Fix doc string + cross-reference(s). + + * whitespace.el (diff): Fix doc string cross-reference(s). + --- lisp/gnus/ChangeLog~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/gnus/ChangeLog 2012-10-19 09:31:04.620338700 -0400 @@ -1,0 +1,8 @@ +2012-10-18 Aaron S. Hawley + + * gnus-start.el (font-lock-removed-keywords-alist): Fix doc string + cross-reference(s). + + * gnus-sum.el (gnus-check-new-newsgroups): Fix doc string + cross-reference(s). + --- src/ChangeLog~ 2012-08-24 05:52:21.000000000 -0400 +++ src/ChangeLog 2012-10-19 09:31:04.291305800 -0400 @@ -1,0 +1,10 @@ +2012-10-18 Aaron S. Hawley + + * insdel.c (Fself_insert_command): Fix doc string + cross-reference(s). + + * keyboard.c (syms_of_insdel): Fix doc string cross-reference(s). + + * window.c (syms_of_keyboard, Fwindow_point): Fix doc string + cross-reference(s). + --- lisp/calc/calc.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/calc/calc.el 2012-10-18 09:54:23.359782600 -0400 @@ -427,9 +427,9 @@ (defcustom calc-highlight-selections-with-faces nil "If non-nil, use a separate face to indicate selected sub-formulas. -If `calc-show-selections' is non-nil, then selected sub-formulas are shown +If variable `calc-show-selections' is non-nil, then selected sub-formulas are shown by displaying the rest of the formula in `calc-nonselected-face'. -If `calc-show-selections' is nil, then selected sub-formulas are shown +If option `calc-show-selections' is nil, then selected sub-formulas are sh= own by displaying the sub-formula in `calc-selected-face'." :version "24.1" :group 'calc @@ -1200,7 +1200,7 @@ ;;;###autoload (defun calc-dispatch (&optional arg) - "Invoke the GNU Emacs Calculator. See `calc-dispatch-help' for details.= " + "Invoke the GNU Emacs Calculator. See function `calc-dispatch-help' for details." (interactive "P") ; (sit-for echo-keystrokes) (condition-case err ; look for other keys bound to calc-dispatch --- lisp/comint.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/comint.el 2012-10-18 09:54:23.618808500 -0400 @@ -1529,7 +1529,7 @@ If there are no search errors, this function displays an overlay with the Isearch prompt which replaces the original comint prompt. Otherwise, it displays the standard Isearch message returned from -`isearch-message'." +the function `isearch-message'." (if (not (and isearch-success (not isearch-error))) ;; Use standard function `isearch-message' when not in comint prompt= , ;; or search fails, or has an error (like incomplete regexp). --- lisp/emacs-lisp/edebug.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/emacs-lisp/edebug.el 2012-10-18 09:54:23.772823900 -0400 @@ -471,8 +471,8 @@ This version, from Edebug, maybe instruments the expression. But the STREAM must be the current buffer to do so. Whether it instruments is -also dependent on the values of `edebug-all-defs' and -`edebug-all-forms'." +also dependent on the values of the option `edebug-all-defs' and +the option `edebug-all-forms'." (or stream (setq stream standard-input)) (if (eq stream (current-buffer)) (edebug-read-and-maybe-wrap-form) @@ -494,7 +494,7 @@ With a prefix argument, instrument the code for Edebug. -Setting `edebug-all-defs' to a non-nil value reverses the meaning of +Setting option `edebug-all-defs' to a non-nil value reverses the meaning o= f the prefix argument. Code is then instrumented when this function is invoked without a prefix argument --- lisp/ffap.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/ffap.el 2012-10-18 09:54:23.843831000 -0400 @@ -309,7 +309,7 @@ "Last value returned by `ffap-next-guess'.") (defvar ffap-string-at-point-region '(1 1) - "List (BEG END), last region returned by `ffap-string-at-point'.") + "List (BEG END), last region returned by the function `ffap-string-at-point'.") (defun ffap-next-guess (&optional back lim) "Move point to next file or URL, and return it as a string. @@ -334,7 +334,7 @@ Optional argument WRAP says to try wrapping around if necessary. Interactively: use a single prefix to search backwards, double prefix to wrap forward, triple to wrap backwards. -Actual search is done by `ffap-next-guess'." +Actual search is done by the function `ffap-next-guess'." (interactive (cdr (assq (prefix-numeric-value current-prefix-arg) '((1) (4 t) (16 nil t) (64 t t))))) @@ -1004,14 +1004,14 @@ "Alist of \(MODE CHARS BEG END\), where MODE is a symbol, possibly a major-mode name, or one of the symbol `file', `url', `machine', and `nocolon'. -`ffap-string-at-point' uses the data fields as follows: +Function `ffap-string-at-point' uses the data fields as follows: 1. find a maximal string of CHARS around point, 2. strip BEG chars before point from the beginning, 3. Strip END chars after point from the end.") (defvar ffap-string-at-point nil ;; Added at suggestion of RHOGEE (for ff-paths), 7/24/95. - "Last string returned by `ffap-string-at-point'.") + "Last string returned by the function `ffap-string-at-point'.") (defun ffap-string-at-point (&optional mode) "Return a string of characters from around point. @@ -1019,7 +1019,7 @@ syntax parameters in `ffap-string-at-point-mode-alist'. If MODE is not found, we use `file' instead of MODE. If the region is active, return a string from the region. -Sets `ffap-string-at-point' and `ffap-string-at-point-region'." +Sets variable `ffap-string-at-point' and variable `ffap-string-at-point-region'." (let* ((args (cdr (or (assq (or mode major-mode) ffap-string-at-point-mode-alist) @@ -1044,7 +1044,7 @@ (defun ffap-string-around () ;; Sometimes useful to decide how to treat a string. - "Return string of two chars around last `ffap-string-at-point'. + "Return string of two chars for last result of function `ffap-string-at-point'. Assumes the buffer has not changed." (save-excursion (format "%c%c" @@ -1058,7 +1058,7 @@ (defun ffap-copy-string-as-kill (&optional mode) ;; Requested by MCOOK. Useful? - "Call `ffap-string-at-point', and copy result to `kill-ring'." + "Call function `ffap-string-at-point', and copy result to `kill-ring'." (interactive) (let ((str (ffap-string-at-point mode))) (if (equal "" str) @@ -1369,7 +1369,7 @@ :version "22.1") (defvar ffap-highlight-overlay nil - "Overlay used by `ffap-highlight'.") + "Overlay used by function `ffap-highlight'.") (defun ffap-highlight (&optional remove) "If `ffap-highlight' is set, highlight the guess in this buffer. @@ -1732,7 +1732,7 @@ (call-interactively 'ffap))) (defun ffap-literally () - "Like `ffap' and `find-file-literally'. + "Like `ffap' and command `find-file-literally'. Only intended for interactive use." (interactive) (let ((ffap-file-finder 'find-file-literally)) --- lisp/font-lock.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/font-lock.el 2012-10-18 09:54:23.943841000 -0400 @@ -469,7 +469,7 @@ "Alist of additional `font-lock-keywords' elements for major modes. Each element has the form (MODE KEYWORDS . HOW). -`font-lock-set-defaults' adds the elements in the list KEYWORDS to +Function `font-lock-set-defaults' adds the elements in the list KEYWORDS t= o `font-lock-keywords' when Font Lock is turned on in major mode MODE. If HOW is nil, KEYWORDS are added at the beginning of @@ -484,7 +484,7 @@ (defvar font-lock-removed-keywords-alist nil "Alist of `font-lock-keywords' elements to be removed for major modes. -Each element has the form (MODE . KEYWORDS). `font-lock-set-defaults' +Each element has the form (MODE . KEYWORDS). Function `font-lock-set-defa= ults' removes the elements in the list KEYWORDS from `font-lock-keywords' when Font Lock is turned on in major mode MODE. --- lisp/gnus/gnus-start.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/gnus/gnus-start.el 2012-10-18 09:54:24.043851000 -0400 @@ -110,7 +110,7 @@ groups since the last time it checked: 1. This variable is `ask-server'. 2. This variable is a list of select methods (see below). - 3. `gnus-read-active-file' is nil or `some'. + 3. Option `gnus-read-active-file' is nil or `some'. 4. A prefix argument is given to `gnus-find-new-newsgroups' interactivel= y. Thus, if this variable is `ask-server' or a list of select methods or --- lisp/gnus/gnus-sum.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/gnus/gnus-sum.el 2012-10-18 09:54:24.888935500 -0400 @@ -1166,7 +1166,7 @@ (defcustom gnus-summary-newsgroup-prefix "=3D> " "*String prefixed to the Newsgroup field in the summary -line when using `gnus-ignored-from-addresses'." +line when using the option `gnus-ignored-from-addresses'." :version "22.1" :group 'gnus-summary :type 'string) --- lisp/help-mode.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/help-mode.el 2012-10-18 09:54:25.084955100 -0400 @@ -311,7 +311,7 @@ (defconst help-xref-symbol-regexp (purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|" ; Link to var - "\\(function\\|command\\)\\|" ; Link to function + "\\(function\\|command\\|call\\)\\|" ; Link to function "\\(face\\)\\|" ; Link to face "\\(symbol\\|program\\|property\\)\\|" ; Don't link "\\(source \\(?:code \\)?\\(?:of\\|for\\)\\)\\)" --- lisp/info.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/info.el 2012-10-18 09:54:25.130959700 -0400 @@ -4143,7 +4143,7 @@ The `info-file' property of COMMAND says which Info manual to search. If COMMAND has no property, the variable `Info-file-list-for-emacs' defines heuristics for which Info manual to try. -The locations are of the format used in `Info-history', i.e. +The locations are of the format used in the variable `Info-history', i.e. \(FILENAME NODENAME BUFFERPOS), where BUFFERPOS is the line number in the first element of the returned list (which is treated specially in `Info-goto-emacs-command-node'), and 0 for the rest elements of a list." --- lisp/international/mule.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/international/mule.el 2012-10-18 09:54:25.175964200 -0400 @@ -890,7 +890,7 @@ (and (vectorp eol-type-1) (vectorp eol-type-2))))))) (defun add-to-coding-system-list (coding-system) - "Add CODING-SYSTEM to `coding-system-list' while keeping it sorted." + "Add CODING-SYSTEM to variable `coding-system-list' while keeping it sor= ted." (if (or (null coding-system-list) (coding-system-lessp coding-system (car coding-system-list))) (setq coding-system-list (cons coding-system coding-system-list)) --- lisp/isearch.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/isearch.el 2012-10-18 09:54:25.255972200 -0400 @@ -168,7 +168,7 @@ (defvar isearch-message-function nil "Function to call to display the search prompt. -If nil, use `isearch-message'.") +If nil, use function `isearch-message'.") (defvar isearch-wrap-function nil "Function to call to wrap the search when search is failed. @@ -1066,7 +1066,7 @@ (defun isearch-fail-pos (&optional msg) "Return position of first mismatch in search string, or nil if none. -If MSG is non-nil, use `isearch-message', otherwise `isearch-string'." +If MSG is non-nil, use variable `isearch-message', otherwise `isearch-stri= ng'." (let ((cmds isearch-cmds) (curr-msg (if msg isearch-message isearch-string)) succ-msg) --- lisp/misearch.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/misearch.el 2012-10-18 09:54:25.453992000 -0400 @@ -73,7 +73,7 @@ The first argument of this function is the current buffer where the search is currently searching. It defines the base buffer relative to which this function should find the next buffer. When the isearch -direction is backward (when `isearch-forward' is nil), this function +direction is backward (when option `isearch-forward' is nil), this functio= n should return the previous buffer to search. If the second argument of this function WRAP is non-nil, then it --- lisp/newcomment.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/newcomment.el 2012-10-18 09:54:25.509997600 -0400 @@ -1180,7 +1180,7 @@ (defun comment-box (beg end &optional arg) "Comment out the BEG .. END region, putting it inside a box. The numeric prefix ARG specifies how many characters to add to begin- and -end- comment markers additionally to what `comment-add' already specifies.= " +end- comment markers additionally to what variable `comment-add' already specifies." (interactive "*r\np") (comment-normalize-vars) (let ((comment-style (if (cadr (assoc comment-style comment-styles)) --- lisp/printing.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/printing.el 2012-10-18 09:54:25.582004800 -0400 @@ -1798,7 +1798,7 @@ Where: SYMBOL It's a symbol to identify a text printer. It's for - `pr-txt-name' variable setting and for menu selection. + setting option `pr-txt-name' and for menu selection. Examples: 'prt_06a 'my_printer @@ -1949,7 +1949,7 @@ Where: SYMBOL It's a symbol to identify a PostScript printer. It's for - `pr-ps-name' variable setting and for menu selection. + setting option `pr-ps-name' and for menu selection. Examples: 'prt_06a 'my_printer @@ -2933,7 +2933,7 @@ The example above has two setting groups: no-duplex and no-duplex-and-landscape. When setting no-duplex is activated - through `inherits-from:' (see `pr-ps-utility', `pr-mode-alist' + through `inherits-from:' (see option `pr-ps-utility', `pr-mode-alist' and `pr-ps-printer-alist'), the variables pr-file-duplex and pr-file-tumble are both set to nil. --- lisp/progmodes/cc-fonts.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/progmodes/cc-fonts.el 2012-10-18 09:54:25.661012700 -0400 @@ -2048,7 +2048,7 @@ (defconst c-font-lock-keywords-3 (c-lang-const c-matchers-3 c) "Accurate normal font locking for C mode. -Like `c-font-lock-keywords-2' but detects declarations in a more +Like the variable `c-font-lock-keywords-2' but detects declarations in a m= ore accurate way that works in most cases for arbitrary types without the need for `c-font-lock-extra-types'.") @@ -2206,7 +2206,7 @@ (defconst c++-font-lock-keywords-3 (c-lang-const c-matchers-3 c++) "Accurate normal font locking for C++ mode. -Like `c++-font-lock-keywords-2' but detects declarations in a more +Like the variable `c++-font-lock-keywords-2' but detects declarations in a= more accurate way that works in most cases for arbitrary types without the need for `c++-font-lock-extra-types'.") @@ -2312,7 +2312,7 @@ (defconst objc-font-lock-keywords-3 (c-lang-const c-matchers-3 objc) "Accurate normal font locking for Objective-C mode. -Like `objc-font-lock-keywords-2' but detects declarations in a more +Like the variable `objc-font-lock-keywords-2' but detects declarations in a more accurate way that works in most cases for arbitrary types without the need for `objc-font-lock-extra-types'.") @@ -2355,7 +2355,7 @@ (defconst java-font-lock-keywords-3 (c-lang-const c-matchers-3 java) "Accurate normal font locking for Java mode. -Like `java-font-lock-keywords-2' but detects declarations in a more +Like variable `java-font-lock-keywords-2' but detects declarations in a mo= re accurate way that works in most cases for arbitrary types without the need for `java-font-lock-extra-types'.") @@ -2388,7 +2388,7 @@ (defconst idl-font-lock-keywords-3 (c-lang-const c-matchers-3 idl) "Accurate normal font locking for CORBA IDL mode. -Like `idl-font-lock-keywords-2' but detects declarations in a more +Like the variable `idl-font-lock-keywords-2' but detects declarations in a= more accurate way that works in most cases for arbitrary types without the need for `idl-font-lock-extra-types'.") @@ -2421,7 +2421,7 @@ (defconst pike-font-lock-keywords-3 (c-lang-const c-matchers-3 pike) "Accurate normal font locking for Pike mode. -Like `pike-font-lock-keywords-2' but detects declarations in a more +Like the variable `pike-font-lock-keywords-2' but detects declarations in a more accurate way that works in most cases for arbitrary types without the need for `pike-font-lock-extra-types'.") --- lisp/progmodes/compile.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/progmodes/compile.el 2012-10-18 09:54:25.943040900 -0400 @@ -1378,7 +1378,7 @@ If optional second arg COMINT is t the buffer will be in Comint mode with `compilation-shell-minor-mode'. -Interactively, prompts for the command if `compilation-read-command' is +Interactively, prompts for the command if the variable `compilation-read-command' is non-nil; otherwise uses `compile-command'. With prefix arg, always prompt= s. Additionally, with universal prefix arg, compilation buffer will be in comint mode, i.e. interactive. --- lisp/progmodes/etags.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/progmodes/etags.el 2012-10-18 09:54:26.042050800 -0400 @@ -204,7 +204,7 @@ (defvar tags-table-files nil "List of file names covered by current tags table. -nil means it has not yet been computed; use `tags-table-files' to do so.") +nil means it has not yet been computed; use function `tags-table-files' to do so.") (defvar tags-completion-table nil "Obarray of tag names defined in current tags table.") @@ -229,7 +229,7 @@ One optional argument, a boolean specifying to return complete path (nil) = or relative path (non-nil).") (defvar tags-table-files-function nil - "Function to do the work of `tags-table-files' (which see).") + "Function to do the work of function `tags-table-files' (which see).") (defvar tags-completion-table-function nil "Function to build the `tags-completion-table'.") (defvar snarf-tag-function nil @@ -256,7 +256,7 @@ (defvar tags-apropos-function nil "Function to do the work of `tags-apropos' (which see).") (defvar tags-included-tables-function nil - "Function to do the work of `tags-included-tables' (which see).") + "Function to do the work of function `tags-included-tables' (which see).= ") (defvar verify-tags-table-function nil "Function to return t if current buffer contains valid tags file.") =0C --- lisp/progmodes/gdb-mi.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/progmodes/gdb-mi.el 2012-10-18 09:54:26.170063600 -0400 @@ -617,12 +617,12 @@ options should include \"-i=3Dmi\" to use gdb's MI text interface. Note that the old \"--annotate\" option is no longer supported. -If `gdb-many-windows' is nil (the default value) then gdb just +If option `gdb-many-windows' is nil (the default value) then gdb just pops up the GUD buffer unless `gdb-show-main' is t. In this case it starts with two windows: one displaying the GUD buffer and the other with the source file with the main routine of the inferior. -If `gdb-many-windows' is t, regardless of the value of +If option `gdb-many-windows' is t, regardless of the value of `gdb-show-main', the layout below will appear. Keybindings are shown in some of the buffers. @@ -4096,7 +4096,7 @@ (set-window-dedicated-p window t)) (defun gdb-setup-windows () - "Layout the window pattern for `gdb-many-windows'." + "Layout the window pattern for option `gdb-many-windows'." (gdb-display-locals-buffer) (gdb-display-stack-buffer) (delete-other-windows) @@ -4160,7 +4160,7 @@ (defun gdb-restore-windows () "Restore the basic arrangement of windows used by gdb. -This arrangement depends on the value of `gdb-many-windows'." +This arrangement depends on the value of option `gdb-many-windows'." (interactive) (switch-to-buffer gud-comint-buffer) ;Select the right window and frame. (delete-other-windows) --- lisp/ps-print.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/ps-print.el 2012-10-18 09:54:26.282074800 -0400 @@ -1959,13 +1959,13 @@ Any other value is treated as nil. -If you set `ps-selected-pages' (see it for documentation), first the pages= are -filtered by `ps-selected-pages' and then by `ps-even-or-odd-pages'. For +If you set option `ps-selected-pages' (see it for documentation), first the pages are +filtered by option `ps-selected-pages' and then by `ps-even-or-odd-pages'.= For example, if we have: (setq ps-selected-pages '(1 4 (6 . 10) (12 . 16) 20)) -Combining with `ps-even-or-odd-pages' and `ps-n-up-printing', we have: +Combining with `ps-even-or-odd-pages' and option `ps-n-up-printing', we ha= ve: `ps-n-up-printing' =3D 1: `ps-even-or-odd-pages' PAGES PRINTED @@ -3566,7 +3566,7 @@ ;;;###autoload (defun ps-spool-buffer-with-faces () "Generate and spool a PostScript image of the buffer. -Like `ps-spool-buffer', but includes font, color, and underline informatio= n in +Like the command `ps-spool-buffer', but includes font, color, and underline information in the generated image. This command works only if you are using a window sy= stem, so it has a way to determine color values. @@ -5369,7 +5369,7 @@ (KIND XCOL YCOL XLIN YLIN REPEAT END XSTART YSTART) Where: -KIND is a valid value of `ps-n-up-filling'. +KIND is a valid value of the variable `ps-n-up-filling'. XCOL YCOL are the relative position for the next column. XLIN YLIN are the relative position for the beginning of next line. REPEAT is the number of repetitions for external loop. --- lisp/server.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/server.el 2012-10-18 09:54:26.330079600 -0400 @@ -328,7 +328,7 @@ (defconst server-buffer " *server*" "Buffer used internally by Emacs's server. -One use is to log the I/O for debugging purposes (see `server-log'), +One use is to log the I/O for debugging purposes (see option `server-log')= , the other is to provide a current buffer in which the process filter can safely let-bind buffer-local variables like `default-directory'.") @@ -336,7 +336,7 @@ "If non-nil, log the server's inputs and outputs in the `server-buffer'.= ") (defun server-log (string &optional client) - "If `server-log' is non-nil, log STRING to `server-buffer'. + "If option `server-log' is non-nil, log STRING to `server-buffer'. If CLIENT is non-nil, add a description of it to the logged message." (when server-log (with-current-buffer (get-buffer-create server-buffer) --- lisp/simple.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/simple.el 2012-10-18 09:54:26.389085500 -0400 @@ -404,10 +404,10 @@ (defun newline (&optional arg) "Insert a newline, and move to left margin of the new line if it's blank= . -If `use-hard-newlines' is non-nil, the newline is marked with the +If option `use-hard-newlines' is non-nil, the newline is marked with the text-property `hard'. With ARG, insert that many newlines. -Call `auto-fill-function' if the current column number is greater +Call function `auto-fill-function' if the current column number is greater than the value of `fill-column' and ARG is nil." (interactive "*P") (barf-if-buffer-read-only) @@ -824,7 +824,7 @@ "Delete the previous N characters (following if N is negative). If Transient Mark mode is enabled, the mark is active, and N is 1, delete the text in the region and deactivate the mark instead. -To disable this, set `delete-active-region' to nil. +To disable this, set option `delete-active-region' to nil. Optional second arg KILLFLAG, if non-nil, means to kill (save in kill ring) instead of delete. Interactively, N is the prefix @@ -860,7 +860,7 @@ "Delete the following N characters (previous if N is negative). If Transient Mark mode is enabled, the mark is active, and N is 1, delete the text in the region and deactivate the mark instead. -To disable this, set `delete-active-region' to nil. +To disable this, set variable `delete-active-region' to nil. Optional second arg KILLFLAG non-nil means to kill (save in kill ring) instead of delete. Interactively, N is the prefix arg, and @@ -1707,7 +1707,7 @@ If there are no search errors, this function displays an overlay with the isearch prompt which replaces the original minibuffer prompt. Otherwise, it displays the standard isearch message returned from -`isearch-message'." +the function `isearch-message'." (if (not (and (minibufferp) isearch-success (not isearch-error))) ;; Use standard function `isearch-message' when not in the minibuffe= r, ;; or search fails, or has an error (like incomplete regexp). @@ -3520,7 +3520,7 @@ kill the rest of the current line, even if there are only nonblanks there. -If `kill-whole-line' is non-nil, then this command kills the whole line +If option `kill-whole-line' is non-nil, then this command kills the whole = line including its terminating newline, when used at the beginning of a line with no argument. As a consequence, you can always kill a whole line by typing \\[move-beginning-of-line] \\[kill-line]. @@ -4296,13 +4296,13 @@ "Non-nil means vertical motion starting at end of line keeps to ends of lines. This means moving to the end of each line moved onto. The beginning of a blank line does not count as the end of a line. -This has no effect when `line-move-visual' is non-nil." +This has no effect when the variable `line-move-visual' is non-nil." :type 'boolean :group 'editing-basics) (defcustom goal-column nil "Semipermanent goal column for vertical motion, as set by \\[set-goal-column], or nil. -A non-nil setting overrides `line-move-visual', which see." +A non-nil setting overrides the variable `line-move-visual', which see." :type '(choice integer (const :tag "None" nil)) :group 'editing-basics) @@ -4313,7 +4313,7 @@ It is the column where point was at the start of the current run of vertical motion commands. -When moving by visual lines via `line-move-visual', it is a cons +When moving by visual lines via the function `line-move-visual', it is a c= ons cell (COL . HSCROLL), where COL is the x-position, in pixels, divided by the default column width, and HSCROLL is the number of columns by which window is scrolled from left margin. @@ -5377,7 +5377,7 @@ beyond `current-fill-column' automatically breaks the line at a previous space. -When `auto-fill-mode' is on, the `auto-fill-function' variable is +When `auto-fill-mode' is on, the variable `auto-fill-function' is non-`nil'. The value of `normal-auto-fill-function' specifies the function to use --- lisp/textmodes/flyspell.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/textmodes/flyspell.el 2012-10-18 09:54:26.436090200 -0400 @@ -63,7 +63,7 @@ "Non-nil means Flyspell reports a repeated word as an error. See `flyspell-mark-duplications-exceptions' to add exceptions to this rule= . Detection of repeated words is not implemented in -\"large\" regions; see `flyspell-large-region'." +\"large\" regions; see variable `flyspell-large-region'." :group 'flyspell :type 'boolean) @@ -148,7 +148,7 @@ scroll-up scroll-down) "The standard list of deplacement commands for Flyspell. -See `flyspell-deplacement-commands'." +See variable `flyspell-deplacement-commands'." :group 'flyspell :version "21.1" :type '(repeat (symbol))) --- lisp/textmodes/ispell.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/textmodes/ispell.el 2012-10-18 09:54:26.487095300 -0400 @@ -1540,7 +1540,7 @@ (defun ispell-accept-output (&optional timeout-secs timeout-msecs) "Wait for output from ispell process, or TIMEOUT-SECS and TIMEOUT-MSECS. -If asynchronous subprocesses are not supported, call `ispell-filter' and +If asynchronous subprocesses are not supported, call function `ispell-filter' and pass it the output of the last ispell invocation." (if ispell-async-processp (accept-process-output ispell-process timeout-secs timeout-msecs) --- lisp/textmodes/sgml-mode.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/textmodes/sgml-mode.el 2012-10-18 09:54:26.545101100 -0400 @@ -1936,7 +1936,7 @@ ("ul" . "Unordered list") ("var" . "Math variable face") ("wbr" . "Enable
within ")) - "*Value of `sgml-tag-help' for HTML mode.") + "*Value of variable `sgml-tag-help' for HTML mode.") =0C ;;;###autoload --- lisp/vc/compare-w.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/vc/compare-w.el 2012-10-18 09:54:26.584105000 -0400 @@ -53,13 +53,13 @@ :group 'compare-windows) (defcustom compare-ignore-whitespace nil - "Non-nil means `compare-windows' ignores whitespace." + "Non-nil means command `compare-windows' ignores whitespace." :type 'boolean :group 'compare-windows :version "22.1") (defcustom compare-ignore-case nil - "Non-nil means `compare-windows' ignores case differences." + "Non-nil means command `compare-windows' ignores case differences." :type 'boolean :group 'compare-windows) @@ -379,7 +379,7 @@ (delete-overlay compare-windows-overlay2))))) (defun compare-windows-dehighlight () - "Remove highlighting created by `compare-windows-highlight'." + "Remove highlighting created by function `compare-windows-highlight'." (interactive) (remove-hook 'pre-command-hook 'compare-windows-dehighlight) (mapc 'delete-overlay compare-windows-overlays1) --- lisp/vc/diff.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/vc/diff.el 2012-10-18 09:54:26.627109300 -0400 @@ -83,7 +83,7 @@ When called interactively with a prefix argument, prompt interactively for diff switches. Otherwise, the switches -specified in `diff-switches' are passed to the diff command." +specified in the variable `diff-switches' are passed to the diff command." (interactive (let* ((newf (if (and buffer-file-name (file-exists-p buffer-file-name)= ) (read-file-name --- lisp/whitespace.el~ 2012-08-23 01:33:42.000000000 -0400 +++ lisp/whitespace.el 2012-10-18 09:54:26.796126200 -0400 @@ -1276,19 +1276,19 @@ (defvar whitespace-point (point) "Used to save locally current point value. -Used by `whitespace-trailing-regexp' function (which see).") +Used by function `whitespace-trailing-regexp' (which see).") (defvar whitespace-font-lock-refontify nil "Used to save locally the font-lock refontify state. -Used by `whitespace-post-command-hook' function (which see).") +Used by function `whitespace-post-command-hook' (which see).") (defvar whitespace-bob-marker nil "Used to save locally the bob marker value. -Used by `whitespace-post-command-hook' function (which see).") +Used by function `whitespace-post-command-hook' (which see).") (defvar whitespace-eob-marker nil "Used to save locally the eob marker value. -Used by `whitespace-post-command-hook' function (which see).") +Used by function `whitespace-post-command-hook' (which see).") (defvar whitespace-buffer-changed nil "Used to indicate locally if buffer changed. --- src/cmds.c~ 2012-08-23 01:33:42.000000000 -0400 +++ src/cmds.c 2012-10-18 09:54:26.835130100 -0400 @@ -270,7 +270,7 @@ Whichever character you type to run this command is inserted. Before insertion, `expand-abbrev' is executed if the inserted character do= es not have word syntax and the previous character in the buffer does. -After insertion, the value of `auto-fill-function' is called if the +After insertion, the value of the variable `auto-fill-function' is called if the `auto-fill-chars' table has a non-nil value for the inserted character. At the end, it runs `post-self-insert-hook'. */) (Lisp_Object n) --- src/insdel.c~ 2012-08-23 01:33:42.000000000 -0400 +++ src/insdel.c 2012-10-18 09:54:26.914138000 -0400 @@ -2116,7 +2116,7 @@ DEFUN ("combine-after-change-execute", Fcombine_after_change_execute, Scombine_after_change_execute, 0, 0, 0, - doc: /* This function is for use internally in `combine-after-change-calls'. */) + doc: /* This function is for use internally in the function `combine-after-change-calls'. */) (void) { int count =3D SPECPDL_INDEX (); @@ -2211,7 +2211,7 @@ doc: /* Non-nil means enable debugging checks for invalid marker positions. */); check_markers_debug_flag =3D 0; DEFVAR_LISP ("combine-after-change-calls", Vcombine_after_change_calls, - doc: /* Used internally by the `combine-after-change-calls' macro. */); + doc: /* Used internally by the function `combine-after-change-calls'. */); Vcombine_after_change_calls =3D Qnil; DEFVAR_BOOL ("inhibit-modification-hooks", inhibit_modification_hooks, --- src/keyboard.c~ 2012-08-23 01:33:42.000000000 -0400 +++ src/keyboard.c 2012-10-18 09:54:26.958142400 -0400 @@ -10249,7 +10249,7 @@ doc: /* Execute CMD as an editor command. CMD must be a symbol that satisfies the `commandp' predicate. Optional second arg RECORD-FLAG non-nil -means unconditionally put this command in `command-history'. +means unconditionally put this command in the variable `command-history'. Otherwise, that is done only if an arg is read using the minibuffer. The argument KEYS specifies the value to use instead of (this-command-keys= ) when reading the arguments; if it is nil, (this-command-keys) is used. @@ -12284,8 +12284,8 @@ Vsaved_region_selection, doc: /* Contents of active region prior to buffer modification. If `select-active-regions' is non-nil, Emacs sets this to the -text in the region before modifying the buffer. The next -`deactivate-mark' call uses this to set the window selection. */); +text in the region before modifying the buffer. The next call to +the function `deactivate-mark' uses this to set the window selection. */)= ; Vsaved_region_selection =3D Qnil; DEFVAR_LISP ("selection-inhibit-update-commands", --- src/window.c~ 2012-08-23 01:33:42.000000000 -0400 +++ src/window.c 2012-10-18 09:54:26.999146500 -0400 @@ -1248,7 +1248,7 @@ Note that, when WINDOW is the selected window and its buffer is also currently selected, the value returned is the same as (point). -It would be more strictly correct to return the `top-level' value +It would be more strictly correct to return the top-level value of point, outside of any save-excursion forms. But that is hard to define. */) (Lisp_Object window) @@ -6628,7 +6628,7 @@ Other values are reserved for future use. -This variable takes no effect if `window-combination-limit' is non-nil. *= /); +This variable takes no effect if the variable `window-combination-limit' is non-nil. */); Vwindow_combination_resize =3D Qnil; DEFVAR_LISP ("window-combination-limit", Vwindow_combination_limit, --=20 In general, we reserve the right to have a poor memory--the computer, however, is supposed to remember! Poor computer. -- Guy Lewis Steele Jr. --e89a8f503838b296ba04cc6fc2ef Content-Type: application/octet-stream; name="doc-xref.diff" Content-Disposition: attachment; filename="doc-xref.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 LS0tIGxpc3AvQ2hhbmdlTG9nfgkyMDEyLTA4LTI0IDA1OjUwOjQ5LjAwMDAwMDAwMCAtMDQwMAor KysgbGlzcC9DaGFuZ2VMb2cJMjAxMi0xMC0xOSAwOTo1OTowOC43MjcxMTk0MDAgLTA0MDAKQEAg LTAsMCArMSw4MyBAQAorMjAxMi0xMC0xOCAgQWFyb24gUy4gSGF3bGV5ICA8YWFyb24ucy5oYXds ZXlAZ21haWwuY29tPgorCisgICAgICAgICogY2FsYy9jYWxjLmVsIChjYWxjLWhpZ2hsaWdodC1z ZWxlY3Rpb25zLXdpdGgtZmFjZXMpOiBGaXgKKyAgICAgICAgYW1iaWd1b3VzIGRvYyBzdHJpbmcg Y3Jvc3MtcmVmZXJlbmNlKHMpLgorCisgICAgICAgICogY29taW50LmVsIChjYWxjLWRpc3BhdGNo KTogRml4IGFtYmlndW91cyBkb2Mgc3RyaW5nCisgICAgICAgIGNyb3NzLXJlZmVyZW5jZShzKS4K KworICAgICAgICAqIGVtYWNzLWxpc3AvZWRlYnVnLmVsIChjb21pbnQtaGlzdG9yeS1pc2VhcmNo LW1lc3NhZ2UpOiBGaXgKKyAgICAgICAgYW1iaWd1b3VzIGRvYyBzdHJpbmcgY3Jvc3MtcmVmZXJl bmNlKHMpLgorCisgICAgICAgICogZmZhcC5lbCAoZWRlYnVnLWV2YWwtZGVmdW4pOiBGaXggYW1i aWd1b3VzIGRvYyBzdHJpbmcKKyAgICAgICAgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisgICAgICAg ICogZm9udC1sb2NrLmVsIChmZmFwLWxpdGVyYWxseSk6IEZpeCBhbWJpZ3VvdXMgZG9jIHN0cmlu ZworICAgICAgICBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiBoZWxwLW1vZGUuZWwg KGhlbHAteHJlZi1zeW1ib2wtcmVnZXhwKTogQWRkICJjYWxsIiBhIGhpbnQgZm9yIGEKKyAgICAg ICAgY3Jvc3MtcmVmZXJlbmNlIHRvIGEgZnVuY3Rpb24uCisKKyAgICAgICAgKiBpbmZvLmVsICho ZWxwLXhyZWYtc3ltYm9sLXJlZ2V4cCk6IEZpeCBhbWJpZ3VvdXMgZG9jIHN0cmluZworICAgICAg ICBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiBpbnRlcm5hdGlvbmFsL211bGUuZWwg KEluZm8tZmluZC1lbWFjcy1jb21tYW5kLW5vZGVzKTogRml4CisgICAgICAgIGFtYmlndW91cyBk b2Mgc3RyaW5nIGNyb3NzLXJlZmVyZW5jZShzKS4KKworICAgICAgICAqIGlzZWFyY2guZWwgKGFk ZC10by1jb2Rpbmctc3lzdGVtLWxpc3QpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJpbmcKKyAgICAg ICAgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisgICAgICAgICogbWlzZWFyY2guZWwgKGlzZWFyY2gt ZmFpbC1wb3MpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJpbmcKKyAgICAgICAgY3Jvc3MtcmVmZXJl bmNlKHMpLgorCisgICAgICAgICogbmV3Y29tbWVudC5lbCAobXVsdGktaXNlYXJjaC1uZXh0LWJ1 ZmZlci1mdW5jdGlvbik6IEZpeAorICAgICAgICBhbWJpZ3VvdXMgZG9jIHN0cmluZyBjcm9zcy1y ZWZlcmVuY2UocykuCisKKyAgICAgICAgKiBwcmludGluZy5lbCAoY29tbWVudC1ib3gpOiBGaXgg YW1iaWd1b3VzIGRvYyBzdHJpbmcKKyAgICAgICAgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisgICAg ICAgICogcHJvZ21vZGVzL2NjLWZvbnRzLmVsIChwci1zZXR0aW5nLWRhdGFiYXNlKTogRml4IGFt YmlndW91cyBkb2MKKyAgICAgICAgc3RyaW5nIGNyb3NzLXJlZmVyZW5jZShzKS4KKworICAgICAg ICAqIHByb2dtb2Rlcy9jb21waWxlLmVsIChwaWtlLWZvbnQtbG9jay1rZXl3b3Jkcyk6IEZpeCBh bWJpZ3VvdXMKKyAgICAgICAgZG9jIHN0cmluZyBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAg ICAgKiBwcm9nbW9kZXMvZXRhZ3MuZWwgKGNvbXBpbGUpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJp bmcKKyAgICAgICAgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisgICAgICAgICogcHJvZ21vZGVzL2dk Yi1taS5lbCAoaW5pdGlhbGl6ZS1uZXctdGFncy10YWJsZSk6IEZpeCBhbWJpZ3VvdXMKKyAgICAg ICAgZG9jIHN0cmluZyBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiBwcm9nbW9kZXMv ZXRhZ3MuZWwgKGluaXRpYWxpemUtbmV3LXRhZ3MtdGFibGUpOiBGaXggYW1iaWd1b3VzCisgICAg ICAgIGRvYyBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisgICAgICAgICogcHJvZ21vZGVz L2dkYi1taS5lbCAoaW5pdGlhbGl6ZS1uZXctdGFncy10YWJsZSk6IEZpeCBhbWJpZ3VvdXMKKyAg ICAgICAgZG9jIHN0cmluZyBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiBwcy1wcmlu dC5lbCAoZ2RiLXJlc3RvcmUtd2luZG93cyk6IEZpeCBhbWJpZ3VvdXMgZG9jIHN0cmluZworICAg ICAgICBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiBzZXJ2ZXIuZWwgKHBzLW4tdXAt ZmlsbGluZy1kYXRhYmFzZSk6IEZpeCBhbWJpZ3VvdXMgZG9jIHN0cmluZworICAgICAgICBjcm9z cy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiBzaW1wbGUuZWwgKHNlcnZlci1sb2cpOiBGaXgg YW1iaWd1b3VzIGRvYyBzdHJpbmcKKyAgICAgICAgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisgICAg ICAgICogdGV4dG1vZGVzL2ZseXNwZWxsLmVsIChhdXRvLWZpbGwtbW9kZSk6IEZpeCBhbWJpZ3Vv dXMgZG9jIHN0cmluZworICAgICAgICBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiB0 ZXh0bW9kZXMvaXNwZWxsLmVsIChpc3BlbGwtYWNjZXB0LW91dHB1dCk6IEZpeCBhbWJpZ3VvdXMg ZG9jCisgICAgICAgIHN0cmluZyBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiB0ZXh0 bW9kZXMvc2dtbC1tb2RlLmVsIChpc3BlbGwtYWNjZXB0LW91dHB1dCk6IEZpeCBhbWJpZ3VvdXMg ZG9jCisgICAgICAgIHN0cmluZyBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiB2Yy9j b21wYXJlLXcuZWwgKGh0bWwtbW9kZSk6IEZpeCBhbWJpZ3VvdXMgZG9jIHN0cmluZworICAgICAg ICBjcm9zcy1yZWZlcmVuY2UocykuCisKKyAgICAgICAgKiB2Yy9kaWZmLmVsIChjb21wYXJlLXdp bmRvd3MtZGVoaWdobGlnaHQpOiBGaXggYW1iaWd1b3VzIGRvYworICAgICAgICBzdHJpbmcgY3Jv c3MtcmVmZXJlbmNlKHMpLgorCisgICAgICAgICogd2hpdGVzcGFjZS5lbCAoZGlmZik6IEZpeCBh bWJpZ3VvdXMgZG9jIHN0cmluZworICAgICAgICBjcm9zcy1yZWZlcmVuY2UocykuCisKLS0tIGxp c3AvZ251cy9DaGFuZ2VMb2d+CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisr KyBsaXNwL2dudXMvQ2hhbmdlTG9nCTIwMTItMTAtMTkgMDk6NTk6MDguNDMyMDg5OTAwIC0wNDAw CkBAIC0wLDAgKzEsOCBAQAorMjAxMi0xMC0xOCAgQWFyb24gUy4gSGF3bGV5ICA8YWFyb24ucy5o YXdsZXlAZ21haWwuY29tPgorCisgICAgICAgICogZ251cy1zdGFydC5lbCAoZm9udC1sb2NrLXJl bW92ZWQta2V5d29yZHMtYWxpc3QpOiBGaXggYW1iaWd1b3VzIGRvYworICAgICAgICBzdHJpbmcg Y3Jvc3MtcmVmZXJlbmNlKHMpLgorCisgICAgICAgICogZ251cy1zdW0uZWwgKGdudXMtY2hlY2st bmV3LW5ld3Nncm91cHMpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJpbmcKKyAgICAgICAgY3Jvc3Mt cmVmZXJlbmNlKHMpLgorCi0tLSBzcmMvQ2hhbmdlTG9nfgkyMDEyLTA4LTI0IDA1OjUyOjIxLjAw MDAwMDAwMCAtMDQwMAorKysgc3JjL0NoYW5nZUxvZwkyMDEyLTEwLTE5IDA5OjU5OjA4LjE1MzA2 MjAwMCAtMDQwMApAQCAtMCwwICsxLDEyIEBACisyMDEyLTEwLTE4ICBBYXJvbiBTLiBIYXdsZXkg IDxhYXJvbi5zLmhhd2xleUBnbWFpbC5jb20+CisKKyAgICAgICAgKiBpbnNkZWwuYyAoRnNlbGZf aW5zZXJ0X2NvbW1hbmQpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJpbmcKKyAgICAgICAgY3Jvc3Mt cmVmZXJlbmNlKHMpLgorCisgICAgICAgICoga2V5Ym9hcmQuYyAoc3ltc19vZl9pbnNkZWwpOiBG aXggYW1iaWd1b3VzIGRvYyBzdHJpbmcKKyAgICAgICAgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisg ICAgICAgICogd2luZG93LmMgKHN5bXNfb2Zfa2V5Ym9hcmQsIEZ3aW5kb3dfcG9pbnQpOiBGaXgg YW1iaWd1b3VzIGRvYworICAgICAgICBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNlKHMpLiAgRGlzYWJs ZSBjcm9zcy1yZWZlcmVuY2UgZm9yCisgICAgICAgICJ0b3AtbGV2ZWwiLgorCi0tLSBsaXNwL2Nh bGMvY2FsYy5lbH4JMjAxMi0wOC0yMyAwMTozMzo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGxpc3Av Y2FsYy9jYWxjLmVsCTIwMTItMTAtMTggMDk6NTQ6MjMuMzU5NzgyNjAwIC0wNDAwCkBAIC00Mjcs OSArNDI3LDkgQEAKIChkZWZjdXN0b20gY2FsYy1oaWdobGlnaHQtc2VsZWN0aW9ucy13aXRoLWZh Y2VzCiAgIG5pbAogICAiSWYgbm9uLW5pbCwgdXNlIGEgc2VwYXJhdGUgZmFjZSB0byBpbmRpY2F0 ZSBzZWxlY3RlZCBzdWItZm9ybXVsYXMuCi1JZiBgY2FsYy1zaG93LXNlbGVjdGlvbnMnIGlzIG5v bi1uaWwsIHRoZW4gc2VsZWN0ZWQgc3ViLWZvcm11bGFzIGFyZSBzaG93bgorSWYgdmFyaWFibGUg YGNhbGMtc2hvdy1zZWxlY3Rpb25zJyBpcyBub24tbmlsLCB0aGVuIHNlbGVjdGVkIHN1Yi1mb3Jt dWxhcyBhcmUgc2hvd24KIGJ5IGRpc3BsYXlpbmcgdGhlIHJlc3Qgb2YgdGhlIGZvcm11bGEgaW4g YGNhbGMtbm9uc2VsZWN0ZWQtZmFjZScuCi1JZiBgY2FsYy1zaG93LXNlbGVjdGlvbnMnIGlzIG5p bCwgdGhlbiBzZWxlY3RlZCBzdWItZm9ybXVsYXMgYXJlIHNob3duCitJZiBvcHRpb24gYGNhbGMt c2hvdy1zZWxlY3Rpb25zJyBpcyBuaWwsIHRoZW4gc2VsZWN0ZWQgc3ViLWZvcm11bGFzIGFyZSBz aG93bgogYnkgZGlzcGxheWluZyB0aGUgc3ViLWZvcm11bGEgaW4gYGNhbGMtc2VsZWN0ZWQtZmFj ZScuIgogICA6dmVyc2lvbiAiMjQuMSIKICAgOmdyb3VwICdjYWxjCkBAIC0xMjAwLDcgKzEyMDAs NyBAQAogCiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIGNhbGMtZGlzcGF0Y2ggKCZvcHRpb25hbCBh cmcpCi0gICJJbnZva2UgdGhlIEdOVSBFbWFjcyBDYWxjdWxhdG9yLiAgU2VlIGBjYWxjLWRpc3Bh dGNoLWhlbHAnIGZvciBkZXRhaWxzLiIKKyAgIkludm9rZSB0aGUgR05VIEVtYWNzIENhbGN1bGF0 b3IuICBTZWUgZnVuY3Rpb24gYGNhbGMtZGlzcGF0Y2gtaGVscCcgZm9yIGRldGFpbHMuIgogICAo aW50ZXJhY3RpdmUgIlAiKQogOyAgKHNpdC1mb3IgZWNoby1rZXlzdHJva2VzKQogICAoY29uZGl0 aW9uLWNhc2UgZXJyICAgOyBsb29rIGZvciBvdGhlciBrZXlzIGJvdW5kIHRvIGNhbGMtZGlzcGF0 Y2gKLS0tIGxpc3AvY29taW50LmVsfgkyMDEyLTA4LTIzIDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQw MAorKysgbGlzcC9jb21pbnQuZWwJMjAxMi0xMC0xOCAwOTo1NDoyMy42MTg4MDg1MDAgLTA0MDAK QEAgLTE1MjksNyArMTUyOSw3IEBACiBJZiB0aGVyZSBhcmUgbm8gc2VhcmNoIGVycm9ycywgdGhp cyBmdW5jdGlvbiBkaXNwbGF5cyBhbiBvdmVybGF5IHdpdGgKIHRoZSBJc2VhcmNoIHByb21wdCB3 aGljaCByZXBsYWNlcyB0aGUgb3JpZ2luYWwgY29taW50IHByb21wdC4KIE90aGVyd2lzZSwgaXQg ZGlzcGxheXMgdGhlIHN0YW5kYXJkIElzZWFyY2ggbWVzc2FnZSByZXR1cm5lZCBmcm9tCi1gaXNl YXJjaC1tZXNzYWdlJy4iCit0aGUgZnVuY3Rpb24gYGlzZWFyY2gtbWVzc2FnZScuIgogICAoaWYg KG5vdCAoYW5kIGlzZWFyY2gtc3VjY2VzcyAobm90IGlzZWFyY2gtZXJyb3IpKSkKICAgICAgIDs7 IFVzZSBzdGFuZGFyZCBmdW5jdGlvbiBgaXNlYXJjaC1tZXNzYWdlJyB3aGVuIG5vdCBpbiBjb21p bnQgcHJvbXB0LAogICAgICAgOzsgb3Igc2VhcmNoIGZhaWxzLCBvciBoYXMgYW4gZXJyb3IgKGxp a2UgaW5jb21wbGV0ZSByZWdleHApLgotLS0gbGlzcC9lbWFjcy1saXNwL2VkZWJ1Zy5lbH4JMjAx Mi0wOC0yMyAwMTozMzo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGxpc3AvZW1hY3MtbGlzcC9lZGVi dWcuZWwJMjAxMi0xMC0xOCAwOTo1NDoyMy43NzI4MjM5MDAgLTA0MDAKQEAgLTQ3MSw4ICs0NzEs OCBAQAogCiBUaGlzIHZlcnNpb24sIGZyb20gRWRlYnVnLCBtYXliZSBpbnN0cnVtZW50cyB0aGUg ZXhwcmVzc2lvbi4gIEJ1dCB0aGUKIFNUUkVBTSBtdXN0IGJlIHRoZSBjdXJyZW50IGJ1ZmZlciB0 byBkbyBzby4gIFdoZXRoZXIgaXQgaW5zdHJ1bWVudHMgaXMKLWFsc28gZGVwZW5kZW50IG9uIHRo ZSB2YWx1ZXMgb2YgYGVkZWJ1Zy1hbGwtZGVmcycgYW5kCi1gZWRlYnVnLWFsbC1mb3JtcycuIgor YWxzbyBkZXBlbmRlbnQgb24gdGhlIHZhbHVlcyBvZiB0aGUgb3B0aW9uIGBlZGVidWctYWxsLWRl ZnMnIGFuZAordGhlIG9wdGlvbiBgZWRlYnVnLWFsbC1mb3JtcycuIgogICAob3Igc3RyZWFtIChz ZXRxIHN0cmVhbSBzdGFuZGFyZC1pbnB1dCkpCiAgIChpZiAoZXEgc3RyZWFtIChjdXJyZW50LWJ1 ZmZlcikpCiAgICAgICAoZWRlYnVnLXJlYWQtYW5kLW1heWJlLXdyYXAtZm9ybSkKQEAgLTQ5NCw3 ICs0OTQsNyBAQAogCiBXaXRoIGEgcHJlZml4IGFyZ3VtZW50LCBpbnN0cnVtZW50IHRoZSBjb2Rl IGZvciBFZGVidWcuCiAKLVNldHRpbmcgYGVkZWJ1Zy1hbGwtZGVmcycgdG8gYSBub24tbmlsIHZh bHVlIHJldmVyc2VzIHRoZSBtZWFuaW5nIG9mCitTZXR0aW5nIG9wdGlvbiBgZWRlYnVnLWFsbC1k ZWZzJyB0byBhIG5vbi1uaWwgdmFsdWUgcmV2ZXJzZXMgdGhlIG1lYW5pbmcgb2YKIHRoZSBwcmVm aXggYXJndW1lbnQuICBDb2RlIGlzIHRoZW4gaW5zdHJ1bWVudGVkIHdoZW4gdGhpcyBmdW5jdGlv biBpcwogaW52b2tlZCB3aXRob3V0IGEgcHJlZml4IGFyZ3VtZW50CiAKLS0tIGxpc3AvZmZhcC5l bH4JMjAxMi0wOC0yMyAwMTozMzo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGxpc3AvZmZhcC5lbAky MDEyLTEwLTE4IDA5OjU0OjIzLjg0MzgzMTAwMCAtMDQwMApAQCAtMzA5LDcgKzMwOSw3IEBACiAg ICJMYXN0IHZhbHVlIHJldHVybmVkIGJ5IGBmZmFwLW5leHQtZ3Vlc3MnLiIpCiAKIChkZWZ2YXIg ZmZhcC1zdHJpbmctYXQtcG9pbnQtcmVnaW9uICcoMSAxKQotICAiTGlzdCAoQkVHIEVORCksIGxh c3QgcmVnaW9uIHJldHVybmVkIGJ5IGBmZmFwLXN0cmluZy1hdC1wb2ludCcuIikKKyAgIkxpc3Qg KEJFRyBFTkQpLCBsYXN0IHJlZ2lvbiByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24gYGZmYXAtc3Ry aW5nLWF0LXBvaW50Jy4iKQogCiAoZGVmdW4gZmZhcC1uZXh0LWd1ZXNzICgmb3B0aW9uYWwgYmFj ayBsaW0pCiAgICJNb3ZlIHBvaW50IHRvIG5leHQgZmlsZSBvciBVUkwsIGFuZCByZXR1cm4gaXQg YXMgYSBzdHJpbmcuCkBAIC0zMzQsNyArMzM0LDcgQEAKIE9wdGlvbmFsIGFyZ3VtZW50IFdSQVAg c2F5cyB0byB0cnkgd3JhcHBpbmcgYXJvdW5kIGlmIG5lY2Vzc2FyeS4KIEludGVyYWN0aXZlbHk6 IHVzZSBhIHNpbmdsZSBwcmVmaXggdG8gc2VhcmNoIGJhY2t3YXJkcywKIGRvdWJsZSBwcmVmaXgg dG8gd3JhcCBmb3J3YXJkLCB0cmlwbGUgdG8gd3JhcCBiYWNrd2FyZHMuCi1BY3R1YWwgc2VhcmNo IGlzIGRvbmUgYnkgYGZmYXAtbmV4dC1ndWVzcycuIgorQWN0dWFsIHNlYXJjaCBpcyBkb25lIGJ5 IHRoZSBmdW5jdGlvbiBgZmZhcC1uZXh0LWd1ZXNzJy4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGNk ciAoYXNzcSAocHJlZml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKQogCSAgICAg ICcoKDEpICg0IHQpICgxNiBuaWwgdCkgKDY0IHQgdCkpKSkpCkBAIC0xMDA0LDE0ICsxMDA0LDE0 IEBACiAgICJBbGlzdCBvZiBcKE1PREUgQ0hBUlMgQkVHIEVORFwpLCB3aGVyZSBNT0RFIGlzIGEg c3ltYm9sLAogcG9zc2libHkgYSBtYWpvci1tb2RlIG5hbWUsIG9yIG9uZSBvZiB0aGUgc3ltYm9s CiBgZmlsZScsIGB1cmwnLCBgbWFjaGluZScsIGFuZCBgbm9jb2xvbicuCi1gZmZhcC1zdHJpbmct YXQtcG9pbnQnIHVzZXMgdGhlIGRhdGEgZmllbGRzIGFzIGZvbGxvd3M6CitGdW5jdGlvbiBgZmZh cC1zdHJpbmctYXQtcG9pbnQnIHVzZXMgdGhlIGRhdGEgZmllbGRzIGFzIGZvbGxvd3M6CiAxLiBm aW5kIGEgbWF4aW1hbCBzdHJpbmcgb2YgQ0hBUlMgYXJvdW5kIHBvaW50LAogMi4gc3RyaXAgQkVH IGNoYXJzIGJlZm9yZSBwb2ludCBmcm9tIHRoZSBiZWdpbm5pbmcsCiAzLiBTdHJpcCBFTkQgY2hh cnMgYWZ0ZXIgcG9pbnQgZnJvbSB0aGUgZW5kLiIpCiAKIChkZWZ2YXIgZmZhcC1zdHJpbmctYXQt cG9pbnQgbmlsCiAgIDs7IEFkZGVkIGF0IHN1Z2dlc3Rpb24gb2YgUkhPR0VFIChmb3IgZmYtcGF0 aHMpLCA3LzI0Lzk1LgotICAiTGFzdCBzdHJpbmcgcmV0dXJuZWQgYnkgYGZmYXAtc3RyaW5nLWF0 LXBvaW50Jy4iKQorICAiTGFzdCBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uIGBmZmFw LXN0cmluZy1hdC1wb2ludCcuIikKIAogKGRlZnVuIGZmYXAtc3RyaW5nLWF0LXBvaW50ICgmb3B0 aW9uYWwgbW9kZSkKICAgIlJldHVybiBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGZyb20gYXJvdW5k IHBvaW50LgpAQCAtMTAxOSw3ICsxMDE5LDcgQEAKIHN5bnRheCBwYXJhbWV0ZXJzIGluIGBmZmFw LXN0cmluZy1hdC1wb2ludC1tb2RlLWFsaXN0Jy4KIElmIE1PREUgaXMgbm90IGZvdW5kLCB3ZSB1 c2UgYGZpbGUnIGluc3RlYWQgb2YgTU9ERS4KIElmIHRoZSByZWdpb24gaXMgYWN0aXZlLCByZXR1 cm4gYSBzdHJpbmcgZnJvbSB0aGUgcmVnaW9uLgotU2V0cyBgZmZhcC1zdHJpbmctYXQtcG9pbnQn IGFuZCBgZmZhcC1zdHJpbmctYXQtcG9pbnQtcmVnaW9uJy4iCitTZXRzIHZhcmlhYmxlIGBmZmFw LXN0cmluZy1hdC1wb2ludCcgYW5kIHZhcmlhYmxlIGBmZmFwLXN0cmluZy1hdC1wb2ludC1yZWdp b24nLiIKICAgKGxldCogKChhcmdzCiAJICAoY2RyCiAJICAgKG9yIChhc3NxIChvciBtb2RlIG1h am9yLW1vZGUpIGZmYXAtc3RyaW5nLWF0LXBvaW50LW1vZGUtYWxpc3QpCkBAIC0xMDQ0LDcgKzEw NDQsNyBAQAogCiAoZGVmdW4gZmZhcC1zdHJpbmctYXJvdW5kICgpCiAgIDs7IFNvbWV0aW1lcyB1 c2VmdWwgdG8gZGVjaWRlIGhvdyB0byB0cmVhdCBhIHN0cmluZy4KLSAgIlJldHVybiBzdHJpbmcg b2YgdHdvIGNoYXJzIGFyb3VuZCBsYXN0IGBmZmFwLXN0cmluZy1hdC1wb2ludCcuCisgICJSZXR1 cm4gc3RyaW5nIG9mIHR3byBjaGFycyBmb3IgbGFzdCByZXN1bHQgb2YgZnVuY3Rpb24gYGZmYXAt c3RyaW5nLWF0LXBvaW50Jy4KIEFzc3VtZXMgdGhlIGJ1ZmZlciBoYXMgbm90IGNoYW5nZWQuIgog ICAoc2F2ZS1leGN1cnNpb24KICAgICAoZm9ybWF0ICIlYyVjIgpAQCAtMTA1OCw3ICsxMDU4LDcg QEAKIAogKGRlZnVuIGZmYXAtY29weS1zdHJpbmctYXMta2lsbCAoJm9wdGlvbmFsIG1vZGUpCiAg IDs7IFJlcXVlc3RlZCBieSBNQ09PSy4gIFVzZWZ1bD8KLSAgIkNhbGwgYGZmYXAtc3RyaW5nLWF0 LXBvaW50JywgYW5kIGNvcHkgcmVzdWx0IHRvIGBraWxsLXJpbmcnLiIKKyAgIkNhbGwgZnVuY3Rp b24gYGZmYXAtc3RyaW5nLWF0LXBvaW50JywgYW5kIGNvcHkgcmVzdWx0IHRvIGBraWxsLXJpbmcn LiIKICAgKGludGVyYWN0aXZlKQogICAobGV0ICgoc3RyIChmZmFwLXN0cmluZy1hdC1wb2ludCBt b2RlKSkpCiAgICAgKGlmIChlcXVhbCAiIiBzdHIpCkBAIC0xMzY5LDcgKzEzNjksNyBAQAogICA6 dmVyc2lvbiAiMjIuMSIpCiAKIChkZWZ2YXIgZmZhcC1oaWdobGlnaHQtb3ZlcmxheSBuaWwKLSAg Ik92ZXJsYXkgdXNlZCBieSBgZmZhcC1oaWdobGlnaHQnLiIpCisgICJPdmVybGF5IHVzZWQgYnkg ZnVuY3Rpb24gYGZmYXAtaGlnaGxpZ2h0Jy4iKQogCiAoZGVmdW4gZmZhcC1oaWdobGlnaHQgKCZv cHRpb25hbCByZW1vdmUpCiAgICJJZiBgZmZhcC1oaWdobGlnaHQnIGlzIHNldCwgaGlnaGxpZ2h0 IHRoZSBndWVzcyBpbiB0aGlzIGJ1ZmZlci4KQEAgLTE3MzIsNyArMTczMiw3IEBACiAgICAgKGNh bGwtaW50ZXJhY3RpdmVseSAnZmZhcCkpKQogCiAoZGVmdW4gZmZhcC1saXRlcmFsbHkgKCkKLSAg Ikxpa2UgYGZmYXAnIGFuZCBgZmluZC1maWxlLWxpdGVyYWxseScuCisgICJMaWtlIGBmZmFwJyBh bmQgY29tbWFuZCBgZmluZC1maWxlLWxpdGVyYWxseScuCiBPbmx5IGludGVuZGVkIGZvciBpbnRl cmFjdGl2ZSB1c2UuIgogICAoaW50ZXJhY3RpdmUpCiAgIChsZXQgKChmZmFwLWZpbGUtZmluZGVy ICdmaW5kLWZpbGUtbGl0ZXJhbGx5KSkKLS0tIGxpc3AvZm9udC1sb2NrLmVsfgkyMDEyLTA4LTIz IDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQwMAorKysgbGlzcC9mb250LWxvY2suZWwJMjAxMi0xMC0x OCAwOTo1NDoyMy45NDM4NDEwMDAgLTA0MDAKQEAgLTQ2OSw3ICs0NjksNyBAQAogICAiQWxpc3Qg b2YgYWRkaXRpb25hbCBgZm9udC1sb2NrLWtleXdvcmRzJyBlbGVtZW50cyBmb3IgbWFqb3IgbW9k ZXMuCiAKIEVhY2ggZWxlbWVudCBoYXMgdGhlIGZvcm0gKE1PREUgS0VZV09SRFMgLiBIT1cpLgot YGZvbnQtbG9jay1zZXQtZGVmYXVsdHMnIGFkZHMgdGhlIGVsZW1lbnRzIGluIHRoZSBsaXN0IEtF WVdPUkRTIHRvCitGdW5jdGlvbiBgZm9udC1sb2NrLXNldC1kZWZhdWx0cycgYWRkcyB0aGUgZWxl bWVudHMgaW4gdGhlIGxpc3QgS0VZV09SRFMgdG8KIGBmb250LWxvY2sta2V5d29yZHMnIHdoZW4g Rm9udCBMb2NrIGlzIHR1cm5lZCBvbiBpbiBtYWpvciBtb2RlIE1PREUuCiAKIElmIEhPVyBpcyBu aWwsIEtFWVdPUkRTIGFyZSBhZGRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mCkBAIC00ODQsNyArNDg0 LDcgQEAKIChkZWZ2YXIgZm9udC1sb2NrLXJlbW92ZWQta2V5d29yZHMtYWxpc3QgbmlsCiAgICJB bGlzdCBvZiBgZm9udC1sb2NrLWtleXdvcmRzJyBlbGVtZW50cyB0byBiZSByZW1vdmVkIGZvciBt YWpvciBtb2Rlcy4KIAotRWFjaCBlbGVtZW50IGhhcyB0aGUgZm9ybSAoTU9ERSAuIEtFWVdPUkRT KS4gIGBmb250LWxvY2stc2V0LWRlZmF1bHRzJworRWFjaCBlbGVtZW50IGhhcyB0aGUgZm9ybSAo TU9ERSAuIEtFWVdPUkRTKS4gIEZ1bmN0aW9uIGBmb250LWxvY2stc2V0LWRlZmF1bHRzJwogcmVt b3ZlcyB0aGUgZWxlbWVudHMgaW4gdGhlIGxpc3QgS0VZV09SRFMgZnJvbSBgZm9udC1sb2NrLWtl eXdvcmRzJwogd2hlbiBGb250IExvY2sgaXMgdHVybmVkIG9uIGluIG1ham9yIG1vZGUgTU9ERS4K IAotLS0gbGlzcC9nbnVzL2dudXMtc3RhcnQuZWx+CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAw MDAwIC0wNDAwCisrKyBsaXNwL2dudXMvZ251cy1zdGFydC5lbAkyMDEyLTEwLTE4IDA5OjU0OjI0 LjA0Mzg1MTAwMCAtMDQwMApAQCAtMTEwLDcgKzExMCw3IEBACiBncm91cHMgc2luY2UgdGhlIGxh c3QgdGltZSBpdCBjaGVja2VkOgogICAxLiBUaGlzIHZhcmlhYmxlIGlzIGBhc2stc2VydmVyJy4K ICAgMi4gVGhpcyB2YXJpYWJsZSBpcyBhIGxpc3Qgb2Ygc2VsZWN0IG1ldGhvZHMgKHNlZSBiZWxv dykuCi0gIDMuIGBnbnVzLXJlYWQtYWN0aXZlLWZpbGUnIGlzIG5pbCBvciBgc29tZScuCisgIDMu IE9wdGlvbiBgZ251cy1yZWFkLWFjdGl2ZS1maWxlJyBpcyBuaWwgb3IgYHNvbWUnLgogICA0LiBB IHByZWZpeCBhcmd1bWVudCBpcyBnaXZlbiB0byBgZ251cy1maW5kLW5ldy1uZXdzZ3JvdXBzJyBp bnRlcmFjdGl2ZWx5LgogCiBUaHVzLCBpZiB0aGlzIHZhcmlhYmxlIGlzIGBhc2stc2VydmVyJyBv ciBhIGxpc3Qgb2Ygc2VsZWN0IG1ldGhvZHMgb3IKLS0tIGxpc3AvZ251cy9nbnVzLXN1bS5lbH4J MjAxMi0wOC0yMyAwMTozMzo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGxpc3AvZ251cy9nbnVzLXN1 bS5lbAkyMDEyLTEwLTE4IDA5OjU0OjI0Ljg4ODkzNTUwMCAtMDQwMApAQCAtMTE2Niw3ICsxMTY2 LDcgQEAKIAogKGRlZmN1c3RvbSBnbnVzLXN1bW1hcnktbmV3c2dyb3VwLXByZWZpeCAiPT4gIgog ICAiKlN0cmluZyBwcmVmaXhlZCB0byB0aGUgTmV3c2dyb3VwIGZpZWxkIGluIHRoZSBzdW1tYXJ5 Ci1saW5lIHdoZW4gdXNpbmcgYGdudXMtaWdub3JlZC1mcm9tLWFkZHJlc3NlcycuIgorbGluZSB3 aGVuIHVzaW5nIHRoZSBvcHRpb24gYGdudXMtaWdub3JlZC1mcm9tLWFkZHJlc3NlcycuIgogICA6 dmVyc2lvbiAiMjIuMSIKICAgOmdyb3VwICdnbnVzLXN1bW1hcnkKICAgOnR5cGUgJ3N0cmluZykK LS0tIGxpc3AvaGVscC1tb2RlLmVsfgkyMDEyLTA4LTIzIDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQw MAorKysgbGlzcC9oZWxwLW1vZGUuZWwJMjAxMi0xMC0xOCAwOTo1NDoyNS4wODQ5NTUxMDAgLTA0 MDAKQEAgLTMxMSw3ICszMTEsNyBAQAogCiAoZGVmY29uc3QgaGVscC14cmVmLXN5bWJvbC1yZWdl eHAKICAgKHB1cmVjb3B5IChjb25jYXQgIlxcKFxcPFxcKFxcKHZhcmlhYmxlXFx8b3B0aW9uXFwp XFx8IiAgOyBMaW5rIHRvIHZhcgotIAkJICAgICJcXChmdW5jdGlvblxcfGNvbW1hbmRcXClcXHwi ICAgICAgICAgIDsgTGluayB0byBmdW5jdGlvbgorIAkJICAgICJcXChmdW5jdGlvblxcfGNvbW1h bmRcXHxjYWxsXFwpXFx8IiAgIDsgTGluayB0byBmdW5jdGlvbgogIAkJICAgICJcXChmYWNlXFwp XFx8IgkJCSAgIDsgTGluayB0byBmYWNlCiAgCQkgICAgIlxcKHN5bWJvbFxcfHByb2dyYW1cXHxw cm9wZXJ0eVxcKVxcfCIgOyBEb24ndCBsaW5rCiAJCSAgICAiXFwoc291cmNlIFxcKD86Y29kZSBc XCk/XFwoPzpvZlxcfGZvclxcKVxcKVxcKSIKLS0tIGxpc3AvaW5mby5lbH4JMjAxMi0wOC0yMyAw MTozMzo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGxpc3AvaW5mby5lbAkyMDEyLTEwLTE4IDA5OjU0 OjI1LjEzMDk1OTcwMCAtMDQwMApAQCAtNDE0Myw3ICs0MTQzLDcgQEAKIFRoZSBgaW5mby1maWxl JyBwcm9wZXJ0eSBvZiBDT01NQU5EIHNheXMgd2hpY2ggSW5mbyBtYW51YWwgdG8gc2VhcmNoLgog SWYgQ09NTUFORCBoYXMgbm8gcHJvcGVydHksIHRoZSB2YXJpYWJsZSBgSW5mby1maWxlLWxpc3Qt Zm9yLWVtYWNzJwogZGVmaW5lcyBoZXVyaXN0aWNzIGZvciB3aGljaCBJbmZvIG1hbnVhbCB0byB0 cnkuCi1UaGUgbG9jYXRpb25zIGFyZSBvZiB0aGUgZm9ybWF0IHVzZWQgaW4gYEluZm8taGlzdG9y eScsIGkuZS4KK1RoZSBsb2NhdGlvbnMgYXJlIG9mIHRoZSBmb3JtYXQgdXNlZCBpbiB0aGUgdmFy aWFibGUgYEluZm8taGlzdG9yeScsIGkuZS4KIFwoRklMRU5BTUUgTk9ERU5BTUUgQlVGRkVSUE9T KSwgd2hlcmUgQlVGRkVSUE9TIGlzIHRoZSBsaW5lIG51bWJlcgogaW4gdGhlIGZpcnN0IGVsZW1l bnQgb2YgdGhlIHJldHVybmVkIGxpc3QgKHdoaWNoIGlzIHRyZWF0ZWQgc3BlY2lhbGx5IGluCiBg SW5mby1nb3RvLWVtYWNzLWNvbW1hbmQtbm9kZScpLCBhbmQgMCBmb3IgdGhlIHJlc3QgZWxlbWVu dHMgb2YgYSBsaXN0LiIKLS0tIGxpc3AvaW50ZXJuYXRpb25hbC9tdWxlLmVsfgkyMDEyLTA4LTIz IDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQwMAorKysgbGlzcC9pbnRlcm5hdGlvbmFsL211bGUuZWwJ MjAxMi0xMC0xOCAwOTo1NDoyNS4xNzU5NjQyMDAgLTA0MDAKQEAgLTg5MCw3ICs4OTAsNyBAQAog CQkgKGFuZCAodmVjdG9ycCBlb2wtdHlwZS0xKSAodmVjdG9ycCBlb2wtdHlwZS0yKSkpKSkpKQog CiAoZGVmdW4gYWRkLXRvLWNvZGluZy1zeXN0ZW0tbGlzdCAoY29kaW5nLXN5c3RlbSkKLSAgIkFk ZCBDT0RJTkctU1lTVEVNIHRvIGBjb2Rpbmctc3lzdGVtLWxpc3QnIHdoaWxlIGtlZXBpbmcgaXQg c29ydGVkLiIKKyAgIkFkZCBDT0RJTkctU1lTVEVNIHRvIHZhcmlhYmxlIGBjb2Rpbmctc3lzdGVt LWxpc3QnIHdoaWxlIGtlZXBpbmcgaXQgc29ydGVkLiIKICAgKGlmIChvciAobnVsbCBjb2Rpbmct c3lzdGVtLWxpc3QpCiAJICAoY29kaW5nLXN5c3RlbS1sZXNzcCBjb2Rpbmctc3lzdGVtIChjYXIg Y29kaW5nLXN5c3RlbS1saXN0KSkpCiAgICAgICAoc2V0cSBjb2Rpbmctc3lzdGVtLWxpc3QgKGNv bnMgY29kaW5nLXN5c3RlbSBjb2Rpbmctc3lzdGVtLWxpc3QpKQotLS0gbGlzcC9pc2VhcmNoLmVs fgkyMDEyLTA4LTIzIDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQwMAorKysgbGlzcC9pc2VhcmNoLmVs CTIwMTItMTAtMTggMDk6NTQ6MjUuMjU1OTcyMjAwIC0wNDAwCkBAIC0xNjgsNyArMTY4LDcgQEAK IAogKGRlZnZhciBpc2VhcmNoLW1lc3NhZ2UtZnVuY3Rpb24gbmlsCiAgICJGdW5jdGlvbiB0byBj YWxsIHRvIGRpc3BsYXkgdGhlIHNlYXJjaCBwcm9tcHQuCi1JZiBuaWwsIHVzZSBgaXNlYXJjaC1t ZXNzYWdlJy4iKQorSWYgbmlsLCB1c2UgZnVuY3Rpb24gYGlzZWFyY2gtbWVzc2FnZScuIikKIAog KGRlZnZhciBpc2VhcmNoLXdyYXAtZnVuY3Rpb24gbmlsCiAgICJGdW5jdGlvbiB0byBjYWxsIHRv IHdyYXAgdGhlIHNlYXJjaCB3aGVuIHNlYXJjaCBpcyBmYWlsZWQuCkBAIC0xMDY2LDcgKzEwNjYs NyBAQAogCiAoZGVmdW4gaXNlYXJjaC1mYWlsLXBvcyAoJm9wdGlvbmFsIG1zZykKICAgIlJldHVy biBwb3NpdGlvbiBvZiBmaXJzdCBtaXNtYXRjaCBpbiBzZWFyY2ggc3RyaW5nLCBvciBuaWwgaWYg bm9uZS4KLUlmIE1TRyBpcyBub24tbmlsLCB1c2UgYGlzZWFyY2gtbWVzc2FnZScsIG90aGVyd2lz ZSBgaXNlYXJjaC1zdHJpbmcnLiIKK0lmIE1TRyBpcyBub24tbmlsLCB1c2UgdmFyaWFibGUgYGlz ZWFyY2gtbWVzc2FnZScsIG90aGVyd2lzZSBgaXNlYXJjaC1zdHJpbmcnLiIKICAgKGxldCAoKGNt ZHMgaXNlYXJjaC1jbWRzKQogCShjdXJyLW1zZyAoaWYgbXNnIGlzZWFyY2gtbWVzc2FnZSBpc2Vh cmNoLXN0cmluZykpCiAJc3VjYy1tc2cpCi0tLSBsaXNwL21pc2VhcmNoLmVsfgkyMDEyLTA4LTIz IDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQwMAorKysgbGlzcC9taXNlYXJjaC5lbAkyMDEyLTEwLTE4 IDA5OjU0OjI1LjQ1Mzk5MjAwMCAtMDQwMApAQCAtNzMsNyArNzMsNyBAQAogVGhlIGZpcnN0IGFy Z3VtZW50IG9mIHRoaXMgZnVuY3Rpb24gaXMgdGhlIGN1cnJlbnQgYnVmZmVyIHdoZXJlIHRoZQog c2VhcmNoIGlzIGN1cnJlbnRseSBzZWFyY2hpbmcuICBJdCBkZWZpbmVzIHRoZSBiYXNlIGJ1ZmZl ciByZWxhdGl2ZSB0bwogd2hpY2ggdGhpcyBmdW5jdGlvbiBzaG91bGQgZmluZCB0aGUgbmV4dCBi dWZmZXIuICBXaGVuIHRoZSBpc2VhcmNoCi1kaXJlY3Rpb24gaXMgYmFja3dhcmQgKHdoZW4gYGlz ZWFyY2gtZm9yd2FyZCcgaXMgbmlsKSwgdGhpcyBmdW5jdGlvbgorZGlyZWN0aW9uIGlzIGJhY2t3 YXJkICh3aGVuIG9wdGlvbiBgaXNlYXJjaC1mb3J3YXJkJyBpcyBuaWwpLCB0aGlzIGZ1bmN0aW9u CiBzaG91bGQgcmV0dXJuIHRoZSBwcmV2aW91cyBidWZmZXIgdG8gc2VhcmNoLgogCiBJZiB0aGUg c2Vjb25kIGFyZ3VtZW50IG9mIHRoaXMgZnVuY3Rpb24gV1JBUCBpcyBub24tbmlsLCB0aGVuIGl0 Ci0tLSBsaXNwL25ld2NvbW1lbnQuZWx+CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0w NDAwCisrKyBsaXNwL25ld2NvbW1lbnQuZWwJMjAxMi0xMC0xOCAwOTo1NDoyNS41MDk5OTc2MDAg LTA0MDAKQEAgLTExODAsNyArMTE4MCw3IEBACiAoZGVmdW4gY29tbWVudC1ib3ggKGJlZyBlbmQg Jm9wdGlvbmFsIGFyZykKICAgIkNvbW1lbnQgb3V0IHRoZSBCRUcgLi4gRU5EIHJlZ2lvbiwgcHV0 dGluZyBpdCBpbnNpZGUgYSBib3guCiBUaGUgbnVtZXJpYyBwcmVmaXggQVJHIHNwZWNpZmllcyBo b3cgbWFueSBjaGFyYWN0ZXJzIHRvIGFkZCB0byBiZWdpbi0gYW5kCi1lbmQtIGNvbW1lbnQgbWFy a2VycyBhZGRpdGlvbmFsbHkgdG8gd2hhdCBgY29tbWVudC1hZGQnIGFscmVhZHkgc3BlY2lmaWVz LiIKK2VuZC0gY29tbWVudCBtYXJrZXJzIGFkZGl0aW9uYWxseSB0byB3aGF0IHZhcmlhYmxlIGBj b21tZW50LWFkZCcgYWxyZWFkeSBzcGVjaWZpZXMuIgogICAoaW50ZXJhY3RpdmUgIipyXG5wIikK ICAgKGNvbW1lbnQtbm9ybWFsaXplLXZhcnMpCiAgIChsZXQgKChjb21tZW50LXN0eWxlIChpZiAo Y2FkciAoYXNzb2MgY29tbWVudC1zdHlsZSBjb21tZW50LXN0eWxlcykpCi0tLSBsaXNwL3ByaW50 aW5nLmVsfgkyMDEyLTA4LTIzIDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQwMAorKysgbGlzcC9wcmlu dGluZy5lbAkyMDEyLTEwLTE4IDA5OjU0OjI1LjU4MjAwNDgwMCAtMDQwMApAQCAtMTc5OCw3ICsx Nzk4LDcgQEAKIFdoZXJlOgogCiBTWU1CT0wJCUl0J3MgYSBzeW1ib2wgdG8gaWRlbnRpZnkgYSB0 ZXh0IHByaW50ZXIuICBJdCdzIGZvcgotCQlgcHItdHh0LW5hbWUnIHZhcmlhYmxlIHNldHRpbmcg YW5kIGZvciBtZW51IHNlbGVjdGlvbi4KKwkJc2V0dGluZyBvcHRpb24gYHByLXR4dC1uYW1lJyBh bmQgZm9yIG1lbnUgc2VsZWN0aW9uLgogCQlFeGFtcGxlczoKIAkJCSdwcnRfMDZhCiAJCQknbXlf cHJpbnRlcgpAQCAtMTk0OSw3ICsxOTQ5LDcgQEAKIFdoZXJlOgogCiBTWU1CT0wJCUl0J3MgYSBz eW1ib2wgdG8gaWRlbnRpZnkgYSBQb3N0U2NyaXB0IHByaW50ZXIuICBJdCdzIGZvcgotCQlgcHIt cHMtbmFtZScgdmFyaWFibGUgc2V0dGluZyBhbmQgZm9yIG1lbnUgc2VsZWN0aW9uLgorCQlzZXR0 aW5nIG9wdGlvbiBgcHItcHMtbmFtZScgYW5kIGZvciBtZW51IHNlbGVjdGlvbi4KIAkJRXhhbXBs ZXM6CiAJCQkncHJ0XzA2YQogCQkJJ215X3ByaW50ZXIKQEAgLTI5MzMsNyArMjkzMyw3IEBACiAK IAkJVGhlIGV4YW1wbGUgYWJvdmUgaGFzIHR3byBzZXR0aW5nIGdyb3Vwczogbm8tZHVwbGV4IGFu ZAogCQluby1kdXBsZXgtYW5kLWxhbmRzY2FwZS4gIFdoZW4gc2V0dGluZyBuby1kdXBsZXggaXMg YWN0aXZhdGVkCi0JCXRocm91Z2ggYGluaGVyaXRzLWZyb206JyAoc2VlIGBwci1wcy11dGlsaXR5 JywgYHByLW1vZGUtYWxpc3QnCisJCXRocm91Z2ggYGluaGVyaXRzLWZyb206JyAoc2VlIG9wdGlv biBgcHItcHMtdXRpbGl0eScsIGBwci1tb2RlLWFsaXN0JwogCQlhbmQgYHByLXBzLXByaW50ZXIt YWxpc3QnKSwgdGhlIHZhcmlhYmxlcyBwci1maWxlLWR1cGxleCBhbmQKIAkJcHItZmlsZS10dW1i bGUgYXJlIGJvdGggc2V0IHRvIG5pbC4KIAotLS0gbGlzcC9wcm9nbW9kZXMvY2MtZm9udHMuZWx+ CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBsaXNwL3Byb2dtb2Rlcy9j Yy1mb250cy5lbAkyMDEyLTEwLTE4IDA5OjU0OjI1LjY2MTAxMjcwMCAtMDQwMApAQCAtMjA0OCw3 ICsyMDQ4LDcgQEAKIAogKGRlZmNvbnN0IGMtZm9udC1sb2NrLWtleXdvcmRzLTMgKGMtbGFuZy1j b25zdCBjLW1hdGNoZXJzLTMgYykKICAgIkFjY3VyYXRlIG5vcm1hbCBmb250IGxvY2tpbmcgZm9y IEMgbW9kZS4KLUxpa2UgYGMtZm9udC1sb2NrLWtleXdvcmRzLTInIGJ1dCBkZXRlY3RzIGRlY2xh cmF0aW9ucyBpbiBhIG1vcmUKK0xpa2UgdGhlIHZhcmlhYmxlIGBjLWZvbnQtbG9jay1rZXl3b3Jk cy0yJyBidXQgZGV0ZWN0cyBkZWNsYXJhdGlvbnMgaW4gYSBtb3JlCiBhY2N1cmF0ZSB3YXkgdGhh dCB3b3JrcyBpbiBtb3N0IGNhc2VzIGZvciBhcmJpdHJhcnkgdHlwZXMgd2l0aG91dCB0aGUKIG5l ZWQgZm9yIGBjLWZvbnQtbG9jay1leHRyYS10eXBlcycuIikKIApAQCAtMjIwNiw3ICsyMjA2LDcg QEAKIAogKGRlZmNvbnN0IGMrKy1mb250LWxvY2sta2V5d29yZHMtMyAoYy1sYW5nLWNvbnN0IGMt bWF0Y2hlcnMtMyBjKyspCiAgICJBY2N1cmF0ZSBub3JtYWwgZm9udCBsb2NraW5nIGZvciBDKysg bW9kZS4KLUxpa2UgYGMrKy1mb250LWxvY2sta2V5d29yZHMtMicgYnV0IGRldGVjdHMgZGVjbGFy YXRpb25zIGluIGEgbW9yZQorTGlrZSB0aGUgdmFyaWFibGUgYGMrKy1mb250LWxvY2sta2V5d29y ZHMtMicgYnV0IGRldGVjdHMgZGVjbGFyYXRpb25zIGluIGEgbW9yZQogYWNjdXJhdGUgd2F5IHRo YXQgd29ya3MgaW4gbW9zdCBjYXNlcyBmb3IgYXJiaXRyYXJ5IHR5cGVzIHdpdGhvdXQgdGhlCiBu ZWVkIGZvciBgYysrLWZvbnQtbG9jay1leHRyYS10eXBlcycuIikKIApAQCAtMjMxMiw3ICsyMzEy LDcgQEAKIAogKGRlZmNvbnN0IG9iamMtZm9udC1sb2NrLWtleXdvcmRzLTMgKGMtbGFuZy1jb25z dCBjLW1hdGNoZXJzLTMgb2JqYykKICAgIkFjY3VyYXRlIG5vcm1hbCBmb250IGxvY2tpbmcgZm9y IE9iamVjdGl2ZS1DIG1vZGUuCi1MaWtlIGBvYmpjLWZvbnQtbG9jay1rZXl3b3Jkcy0yJyBidXQg ZGV0ZWN0cyBkZWNsYXJhdGlvbnMgaW4gYSBtb3JlCitMaWtlIHRoZSB2YXJpYWJsZSBgb2JqYy1m b250LWxvY2sta2V5d29yZHMtMicgYnV0IGRldGVjdHMgZGVjbGFyYXRpb25zIGluIGEgbW9yZQog YWNjdXJhdGUgd2F5IHRoYXQgd29ya3MgaW4gbW9zdCBjYXNlcyBmb3IgYXJiaXRyYXJ5IHR5cGVz IHdpdGhvdXQgdGhlCiBuZWVkIGZvciBgb2JqYy1mb250LWxvY2stZXh0cmEtdHlwZXMnLiIpCiAK QEAgLTIzNTUsNyArMjM1NSw3IEBACiAKIChkZWZjb25zdCBqYXZhLWZvbnQtbG9jay1rZXl3b3Jk cy0zIChjLWxhbmctY29uc3QgYy1tYXRjaGVycy0zIGphdmEpCiAgICJBY2N1cmF0ZSBub3JtYWwg Zm9udCBsb2NraW5nIGZvciBKYXZhIG1vZGUuCi1MaWtlIGBqYXZhLWZvbnQtbG9jay1rZXl3b3Jk cy0yJyBidXQgZGV0ZWN0cyBkZWNsYXJhdGlvbnMgaW4gYSBtb3JlCitMaWtlIHZhcmlhYmxlIGBq YXZhLWZvbnQtbG9jay1rZXl3b3Jkcy0yJyBidXQgZGV0ZWN0cyBkZWNsYXJhdGlvbnMgaW4gYSBt b3JlCiBhY2N1cmF0ZSB3YXkgdGhhdCB3b3JrcyBpbiBtb3N0IGNhc2VzIGZvciBhcmJpdHJhcnkg dHlwZXMgd2l0aG91dCB0aGUKIG5lZWQgZm9yIGBqYXZhLWZvbnQtbG9jay1leHRyYS10eXBlcycu IikKIApAQCAtMjM4OCw3ICsyMzg4LDcgQEAKIAogKGRlZmNvbnN0IGlkbC1mb250LWxvY2sta2V5 d29yZHMtMyAoYy1sYW5nLWNvbnN0IGMtbWF0Y2hlcnMtMyBpZGwpCiAgICJBY2N1cmF0ZSBub3Jt YWwgZm9udCBsb2NraW5nIGZvciBDT1JCQSBJREwgbW9kZS4KLUxpa2UgYGlkbC1mb250LWxvY2st a2V5d29yZHMtMicgYnV0IGRldGVjdHMgZGVjbGFyYXRpb25zIGluIGEgbW9yZQorTGlrZSB0aGUg dmFyaWFibGUgYGlkbC1mb250LWxvY2sta2V5d29yZHMtMicgYnV0IGRldGVjdHMgZGVjbGFyYXRp b25zIGluIGEgbW9yZQogYWNjdXJhdGUgd2F5IHRoYXQgd29ya3MgaW4gbW9zdCBjYXNlcyBmb3Ig YXJiaXRyYXJ5IHR5cGVzIHdpdGhvdXQgdGhlCiBuZWVkIGZvciBgaWRsLWZvbnQtbG9jay1leHRy YS10eXBlcycuIikKIApAQCAtMjQyMSw3ICsyNDIxLDcgQEAKIAogKGRlZmNvbnN0IHBpa2UtZm9u dC1sb2NrLWtleXdvcmRzLTMgKGMtbGFuZy1jb25zdCBjLW1hdGNoZXJzLTMgcGlrZSkKICAgIkFj Y3VyYXRlIG5vcm1hbCBmb250IGxvY2tpbmcgZm9yIFBpa2UgbW9kZS4KLUxpa2UgYHBpa2UtZm9u dC1sb2NrLWtleXdvcmRzLTInIGJ1dCBkZXRlY3RzIGRlY2xhcmF0aW9ucyBpbiBhIG1vcmUKK0xp a2UgdGhlIHZhcmlhYmxlIGBwaWtlLWZvbnQtbG9jay1rZXl3b3Jkcy0yJyBidXQgZGV0ZWN0cyBk ZWNsYXJhdGlvbnMgaW4gYSBtb3JlCiBhY2N1cmF0ZSB3YXkgdGhhdCB3b3JrcyBpbiBtb3N0IGNh c2VzIGZvciBhcmJpdHJhcnkgdHlwZXMgd2l0aG91dCB0aGUKIG5lZWQgZm9yIGBwaWtlLWZvbnQt bG9jay1leHRyYS10eXBlcycuIikKIAotLS0gbGlzcC9wcm9nbW9kZXMvY29tcGlsZS5lbH4JMjAx Mi0wOC0yMyAwMTozMzo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGxpc3AvcHJvZ21vZGVzL2NvbXBp bGUuZWwJMjAxMi0xMC0xOCAwOTo1NDoyNS45NDMwNDA5MDAgLTA0MDAKQEAgLTEzNzgsNyArMTM3 OCw3IEBACiBJZiBvcHRpb25hbCBzZWNvbmQgYXJnIENPTUlOVCBpcyB0IHRoZSBidWZmZXIgd2ls bCBiZSBpbiBDb21pbnQgbW9kZSB3aXRoCiBgY29tcGlsYXRpb24tc2hlbGwtbWlub3ItbW9kZScu CiAKLUludGVyYWN0aXZlbHksIHByb21wdHMgZm9yIHRoZSBjb21tYW5kIGlmIGBjb21waWxhdGlv bi1yZWFkLWNvbW1hbmQnIGlzCitJbnRlcmFjdGl2ZWx5LCBwcm9tcHRzIGZvciB0aGUgY29tbWFu ZCBpZiB0aGUgdmFyaWFibGUgYGNvbXBpbGF0aW9uLXJlYWQtY29tbWFuZCcgaXMKIG5vbi1uaWw7 IG90aGVyd2lzZSB1c2VzIGBjb21waWxlLWNvbW1hbmQnLiAgV2l0aCBwcmVmaXggYXJnLCBhbHdh eXMgcHJvbXB0cy4KIEFkZGl0aW9uYWxseSwgd2l0aCB1bml2ZXJzYWwgcHJlZml4IGFyZywgY29t cGlsYXRpb24gYnVmZmVyIHdpbGwgYmUgaW4KIGNvbWludCBtb2RlLCBpLmUuIGludGVyYWN0aXZl LgotLS0gbGlzcC9wcm9nbW9kZXMvZXRhZ3MuZWx+CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAw MDAwIC0wNDAwCisrKyBsaXNwL3Byb2dtb2Rlcy9ldGFncy5lbAkyMDEyLTEwLTE4IDA5OjU0OjI2 LjA0MjA1MDgwMCAtMDQwMApAQCAtMjA0LDcgKzIwNCw3IEBACiAKIChkZWZ2YXIgdGFncy10YWJs ZS1maWxlcyBuaWwKICAgIkxpc3Qgb2YgZmlsZSBuYW1lcyBjb3ZlcmVkIGJ5IGN1cnJlbnQgdGFn cyB0YWJsZS4KLW5pbCBtZWFucyBpdCBoYXMgbm90IHlldCBiZWVuIGNvbXB1dGVkOyB1c2UgYHRh Z3MtdGFibGUtZmlsZXMnIHRvIGRvIHNvLiIpCituaWwgbWVhbnMgaXQgaGFzIG5vdCB5ZXQgYmVl biBjb21wdXRlZDsgdXNlIGZ1bmN0aW9uIGB0YWdzLXRhYmxlLWZpbGVzJyB0byBkbyBzby4iKQog CiAoZGVmdmFyIHRhZ3MtY29tcGxldGlvbi10YWJsZSBuaWwKICAgIk9iYXJyYXkgb2YgdGFnIG5h bWVzIGRlZmluZWQgaW4gY3VycmVudCB0YWdzIHRhYmxlLiIpCkBAIC0yMjksNyArMjI5LDcgQEAK IE9uZSBvcHRpb25hbCBhcmd1bWVudCwgYSBib29sZWFuIHNwZWNpZnlpbmcgdG8gcmV0dXJuIGNv bXBsZXRlIHBhdGggKG5pbCkgb3IKIHJlbGF0aXZlIHBhdGggKG5vbi1uaWwpLiIpCiAoZGVmdmFy IHRhZ3MtdGFibGUtZmlsZXMtZnVuY3Rpb24gbmlsCi0gICJGdW5jdGlvbiB0byBkbyB0aGUgd29y ayBvZiBgdGFncy10YWJsZS1maWxlcycgKHdoaWNoIHNlZSkuIikKKyAgIkZ1bmN0aW9uIHRvIGRv IHRoZSB3b3JrIG9mIGZ1bmN0aW9uIGB0YWdzLXRhYmxlLWZpbGVzJyAod2hpY2ggc2VlKS4iKQog KGRlZnZhciB0YWdzLWNvbXBsZXRpb24tdGFibGUtZnVuY3Rpb24gbmlsCiAgICJGdW5jdGlvbiB0 byBidWlsZCB0aGUgYHRhZ3MtY29tcGxldGlvbi10YWJsZScuIikKIChkZWZ2YXIgc25hcmYtdGFn LWZ1bmN0aW9uIG5pbApAQCAtMjU2LDcgKzI1Niw3IEBACiAoZGVmdmFyIHRhZ3MtYXByb3Bvcy1m dW5jdGlvbiBuaWwKICAgIkZ1bmN0aW9uIHRvIGRvIHRoZSB3b3JrIG9mIGB0YWdzLWFwcm9wb3Mn ICh3aGljaCBzZWUpLiIpCiAoZGVmdmFyIHRhZ3MtaW5jbHVkZWQtdGFibGVzLWZ1bmN0aW9uIG5p bAotICAiRnVuY3Rpb24gdG8gZG8gdGhlIHdvcmsgb2YgYHRhZ3MtaW5jbHVkZWQtdGFibGVzJyAo d2hpY2ggc2VlKS4iKQorICAiRnVuY3Rpb24gdG8gZG8gdGhlIHdvcmsgb2YgZnVuY3Rpb24gYHRh Z3MtaW5jbHVkZWQtdGFibGVzJyAod2hpY2ggc2VlKS4iKQogKGRlZnZhciB2ZXJpZnktdGFncy10 YWJsZS1mdW5jdGlvbiBuaWwKICAgIkZ1bmN0aW9uIHRvIHJldHVybiB0IGlmIGN1cnJlbnQgYnVm ZmVyIGNvbnRhaW5zIHZhbGlkIHRhZ3MgZmlsZS4iKQogDAotLS0gbGlzcC9wcm9nbW9kZXMvZ2Ri LW1pLmVsfgkyMDEyLTA4LTIzIDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQwMAorKysgbGlzcC9wcm9n bW9kZXMvZ2RiLW1pLmVsCTIwMTItMTAtMTggMDk6NTQ6MjYuMTcwMDYzNjAwIC0wNDAwCkBAIC02 MTcsMTIgKzYxNywxMiBAQAogb3B0aW9ucyBzaG91bGQgaW5jbHVkZSBcIi1pPW1pXCIgdG8gdXNl IGdkYidzIE1JIHRleHQgaW50ZXJmYWNlLgogTm90ZSB0aGF0IHRoZSBvbGQgXCItLWFubm90YXRl XCIgb3B0aW9uIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCiAKLUlmIGBnZGItbWFueS13aW5kb3dz JyBpcyBuaWwgKHRoZSBkZWZhdWx0IHZhbHVlKSB0aGVuIGdkYiBqdXN0CitJZiBvcHRpb24gYGdk Yi1tYW55LXdpbmRvd3MnIGlzIG5pbCAodGhlIGRlZmF1bHQgdmFsdWUpIHRoZW4gZ2RiIGp1c3QK IHBvcHMgdXAgdGhlIEdVRCBidWZmZXIgdW5sZXNzIGBnZGItc2hvdy1tYWluJyBpcyB0LiAgSW4g dGhpcyBjYXNlCiBpdCBzdGFydHMgd2l0aCB0d28gd2luZG93czogb25lIGRpc3BsYXlpbmcgdGhl IEdVRCBidWZmZXIgYW5kIHRoZQogb3RoZXIgd2l0aCB0aGUgc291cmNlIGZpbGUgd2l0aCB0aGUg bWFpbiByb3V0aW5lIG9mIHRoZSBpbmZlcmlvci4KIAotSWYgYGdkYi1tYW55LXdpbmRvd3MnIGlz IHQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mCitJZiBvcHRpb24gYGdkYi1tYW55LXdpbmRv d3MnIGlzIHQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mCiBgZ2RiLXNob3ctbWFpbicsIHRo ZSBsYXlvdXQgYmVsb3cgd2lsbCBhcHBlYXIuICBLZXliaW5kaW5ncyBhcmUKIHNob3duIGluIHNv bWUgb2YgdGhlIGJ1ZmZlcnMuCiAKQEAgLTQwOTYsNyArNDA5Niw3IEBACiAgIChzZXQtd2luZG93 LWRlZGljYXRlZC1wIHdpbmRvdyB0KSkKIAogKGRlZnVuIGdkYi1zZXR1cC13aW5kb3dzICgpCi0g ICJMYXlvdXQgdGhlIHdpbmRvdyBwYXR0ZXJuIGZvciBgZ2RiLW1hbnktd2luZG93cycuIgorICAi TGF5b3V0IHRoZSB3aW5kb3cgcGF0dGVybiBmb3Igb3B0aW9uIGBnZGItbWFueS13aW5kb3dzJy4i CiAgIChnZGItZGlzcGxheS1sb2NhbHMtYnVmZmVyKQogICAoZ2RiLWRpc3BsYXktc3RhY2stYnVm ZmVyKQogICAoZGVsZXRlLW90aGVyLXdpbmRvd3MpCkBAIC00MTYwLDcgKzQxNjAsNyBAQAogCiAo ZGVmdW4gZ2RiLXJlc3RvcmUtd2luZG93cyAoKQogICAiUmVzdG9yZSB0aGUgYmFzaWMgYXJyYW5n ZW1lbnQgb2Ygd2luZG93cyB1c2VkIGJ5IGdkYi4KLVRoaXMgYXJyYW5nZW1lbnQgZGVwZW5kcyBv biB0aGUgdmFsdWUgb2YgYGdkYi1tYW55LXdpbmRvd3MnLiIKK1RoaXMgYXJyYW5nZW1lbnQgZGVw ZW5kcyBvbiB0aGUgdmFsdWUgb2Ygb3B0aW9uIGBnZGItbWFueS13aW5kb3dzJy4iCiAgIChpbnRl cmFjdGl2ZSkKICAgKHN3aXRjaC10by1idWZmZXIgZ3VkLWNvbWludC1idWZmZXIpIDtTZWxlY3Qg dGhlIHJpZ2h0IHdpbmRvdyBhbmQgZnJhbWUuCiAgIChkZWxldGUtb3RoZXItd2luZG93cykKLS0t IGxpc3AvcHMtcHJpbnQuZWx+CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisr KyBsaXNwL3BzLXByaW50LmVsCTIwMTItMTAtMTggMDk6NTQ6MjYuMjgyMDc0ODAwIC0wNDAwCkBA IC0xOTU5LDEzICsxOTU5LDEzIEBACiAKIEFueSBvdGhlciB2YWx1ZSBpcyB0cmVhdGVkIGFzIG5p bC4KIAotSWYgeW91IHNldCBgcHMtc2VsZWN0ZWQtcGFnZXMnIChzZWUgaXQgZm9yIGRvY3VtZW50 YXRpb24pLCBmaXJzdCB0aGUgcGFnZXMgYXJlCi1maWx0ZXJlZCBieSBgcHMtc2VsZWN0ZWQtcGFn ZXMnIGFuZCB0aGVuIGJ5IGBwcy1ldmVuLW9yLW9kZC1wYWdlcycuICBGb3IKK0lmIHlvdSBzZXQg b3B0aW9uIGBwcy1zZWxlY3RlZC1wYWdlcycgKHNlZSBpdCBmb3IgZG9jdW1lbnRhdGlvbiksIGZp cnN0IHRoZSBwYWdlcyBhcmUKK2ZpbHRlcmVkIGJ5IG9wdGlvbiBgcHMtc2VsZWN0ZWQtcGFnZXMn IGFuZCB0aGVuIGJ5IGBwcy1ldmVuLW9yLW9kZC1wYWdlcycuICBGb3IKIGV4YW1wbGUsIGlmIHdl IGhhdmU6CiAKICAgIChzZXRxIHBzLXNlbGVjdGVkLXBhZ2VzICcoMSA0ICg2IC4gMTApICgxMiAu IDE2KSAyMCkpCiAKLUNvbWJpbmluZyB3aXRoIGBwcy1ldmVuLW9yLW9kZC1wYWdlcycgYW5kIGBw cy1uLXVwLXByaW50aW5nJywgd2UgaGF2ZToKK0NvbWJpbmluZyB3aXRoIGBwcy1ldmVuLW9yLW9k ZC1wYWdlcycgYW5kIG9wdGlvbiBgcHMtbi11cC1wcmludGluZycsIHdlIGhhdmU6CiAKIGBwcy1u LXVwLXByaW50aW5nJyA9IDE6CiAgICBgcHMtZXZlbi1vci1vZGQtcGFnZXMnCVBBR0VTIFBSSU5U RUQKQEAgLTM1NjYsNyArMzU2Niw3IEBACiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIHBzLXNwb29s LWJ1ZmZlci13aXRoLWZhY2VzICgpCiAgICJHZW5lcmF0ZSBhbmQgc3Bvb2wgYSBQb3N0U2NyaXB0 IGltYWdlIG9mIHRoZSBidWZmZXIuCi1MaWtlIGBwcy1zcG9vbC1idWZmZXInLCBidXQgaW5jbHVk ZXMgZm9udCwgY29sb3IsIGFuZCB1bmRlcmxpbmUgaW5mb3JtYXRpb24gaW4KK0xpa2UgdGhlIGNv bW1hbmQgYHBzLXNwb29sLWJ1ZmZlcicsIGJ1dCBpbmNsdWRlcyBmb250LCBjb2xvciwgYW5kIHVu ZGVybGluZSBpbmZvcm1hdGlvbiBpbgogdGhlIGdlbmVyYXRlZCBpbWFnZS4gIFRoaXMgY29tbWFu ZCB3b3JrcyBvbmx5IGlmIHlvdSBhcmUgdXNpbmcgYSB3aW5kb3cgc3lzdGVtLAogc28gaXQgaGFz IGEgd2F5IHRvIGRldGVybWluZSBjb2xvciB2YWx1ZXMuCiAKQEAgLTUzNjksNyArNTM2OSw3IEBA CiAgICAoS0lORCBYQ09MIFlDT0wgWExJTiBZTElOIFJFUEVBVCBFTkQgWFNUQVJUIFlTVEFSVCkK IAogV2hlcmU6Ci1LSU5EIGlzIGEgdmFsaWQgdmFsdWUgb2YgYHBzLW4tdXAtZmlsbGluZycuCitL SU5EIGlzIGEgdmFsaWQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGBwcy1uLXVwLWZpbGxpbmcnLgog WENPTCBZQ09MIGFyZSB0aGUgcmVsYXRpdmUgcG9zaXRpb24gZm9yIHRoZSBuZXh0IGNvbHVtbi4K IFhMSU4gWUxJTiBhcmUgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIGZvciB0aGUgYmVnaW5uaW5nIG9m IG5leHQgbGluZS4KIFJFUEVBVCBpcyB0aGUgbnVtYmVyIG9mIHJlcGV0aXRpb25zIGZvciBleHRl cm5hbCBsb29wLgotLS0gbGlzcC9zZXJ2ZXIuZWx+CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAw MDAwIC0wNDAwCisrKyBsaXNwL3NlcnZlci5lbAkyMDEyLTEwLTE4IDA5OjU0OjI2LjMzMDA3OTYw MCAtMDQwMApAQCAtMzI4LDcgKzMyOCw3IEBACiAKIChkZWZjb25zdCBzZXJ2ZXItYnVmZmVyICIg KnNlcnZlcioiCiAgICJCdWZmZXIgdXNlZCBpbnRlcm5hbGx5IGJ5IEVtYWNzJ3Mgc2VydmVyLgot T25lIHVzZSBpcyB0byBsb2cgdGhlIEkvTyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIChzZWUgYHNl cnZlci1sb2cnKSwKK09uZSB1c2UgaXMgdG8gbG9nIHRoZSBJL08gZm9yIGRlYnVnZ2luZyBwdXJw b3NlcyAoc2VlIG9wdGlvbiBgc2VydmVyLWxvZycpLAogdGhlIG90aGVyIGlzIHRvIHByb3ZpZGUg YSBjdXJyZW50IGJ1ZmZlciBpbiB3aGljaCB0aGUgcHJvY2VzcyBmaWx0ZXIgY2FuCiBzYWZlbHkg bGV0LWJpbmQgYnVmZmVyLWxvY2FsIHZhcmlhYmxlcyBsaWtlIGBkZWZhdWx0LWRpcmVjdG9yeScu IikKIApAQCAtMzM2LDcgKzMzNiw3IEBACiAgICJJZiBub24tbmlsLCBsb2cgdGhlIHNlcnZlcidz IGlucHV0cyBhbmQgb3V0cHV0cyBpbiB0aGUgYHNlcnZlci1idWZmZXInLiIpCiAKIChkZWZ1biBz ZXJ2ZXItbG9nIChzdHJpbmcgJm9wdGlvbmFsIGNsaWVudCkKLSAgIklmIGBzZXJ2ZXItbG9nJyBp cyBub24tbmlsLCBsb2cgU1RSSU5HIHRvIGBzZXJ2ZXItYnVmZmVyJy4KKyAgIklmIG9wdGlvbiBg c2VydmVyLWxvZycgaXMgbm9uLW5pbCwgbG9nIFNUUklORyB0byBgc2VydmVyLWJ1ZmZlcicuCiBJ ZiBDTElFTlQgaXMgbm9uLW5pbCwgYWRkIGEgZGVzY3JpcHRpb24gb2YgaXQgdG8gdGhlIGxvZ2dl ZCBtZXNzYWdlLiIKICAgKHdoZW4gc2VydmVyLWxvZwogICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IChnZXQtYnVmZmVyLWNyZWF0ZSBzZXJ2ZXItYnVmZmVyKQotLS0gbGlzcC9zaW1wbGUuZWx+CTIw MTItMDgtMjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBsaXNwL3NpbXBsZS5lbAkyMDEy LTEwLTE4IDA5OjU0OjI2LjM4OTA4NTUwMCAtMDQwMApAQCAtNDA0LDEwICs0MDQsMTAgQEAKIAog KGRlZnVuIG5ld2xpbmUgKCZvcHRpb25hbCBhcmcpCiAgICJJbnNlcnQgYSBuZXdsaW5lLCBhbmQg bW92ZSB0byBsZWZ0IG1hcmdpbiBvZiB0aGUgbmV3IGxpbmUgaWYgaXQncyBibGFuay4KLUlmIGB1 c2UtaGFyZC1uZXdsaW5lcycgaXMgbm9uLW5pbCwgdGhlIG5ld2xpbmUgaXMgbWFya2VkIHdpdGgg dGhlCitJZiBvcHRpb24gYHVzZS1oYXJkLW5ld2xpbmVzJyBpcyBub24tbmlsLCB0aGUgbmV3bGlu ZSBpcyBtYXJrZWQgd2l0aCB0aGUKIHRleHQtcHJvcGVydHkgYGhhcmQnLgogV2l0aCBBUkcsIGlu c2VydCB0aGF0IG1hbnkgbmV3bGluZXMuCi1DYWxsIGBhdXRvLWZpbGwtZnVuY3Rpb24nIGlmIHRo ZSBjdXJyZW50IGNvbHVtbiBudW1iZXIgaXMgZ3JlYXRlcgorQ2FsbCBmdW5jdGlvbiBgYXV0by1m aWxsLWZ1bmN0aW9uJyBpZiB0aGUgY3VycmVudCBjb2x1bW4gbnVtYmVyIGlzIGdyZWF0ZXIKIHRo YW4gdGhlIHZhbHVlIG9mIGBmaWxsLWNvbHVtbicgYW5kIEFSRyBpcyBuaWwuIgogICAoaW50ZXJh Y3RpdmUgIipQIikKICAgKGJhcmYtaWYtYnVmZmVyLXJlYWQtb25seSkKQEAgLTgyNCw3ICs4MjQs NyBAQAogICAiRGVsZXRlIHRoZSBwcmV2aW91cyBOIGNoYXJhY3RlcnMgKGZvbGxvd2luZyBpZiBO IGlzIG5lZ2F0aXZlKS4KIElmIFRyYW5zaWVudCBNYXJrIG1vZGUgaXMgZW5hYmxlZCwgdGhlIG1h cmsgaXMgYWN0aXZlLCBhbmQgTiBpcyAxLAogZGVsZXRlIHRoZSB0ZXh0IGluIHRoZSByZWdpb24g YW5kIGRlYWN0aXZhdGUgdGhlIG1hcmsgaW5zdGVhZC4KLVRvIGRpc2FibGUgdGhpcywgc2V0IGBk ZWxldGUtYWN0aXZlLXJlZ2lvbicgdG8gbmlsLgorVG8gZGlzYWJsZSB0aGlzLCBzZXQgb3B0aW9u IGBkZWxldGUtYWN0aXZlLXJlZ2lvbicgdG8gbmlsLgogCiBPcHRpb25hbCBzZWNvbmQgYXJnIEtJ TExGTEFHLCBpZiBub24tbmlsLCBtZWFucyB0byBraWxsIChzYXZlIGluCiBraWxsIHJpbmcpIGlu c3RlYWQgb2YgZGVsZXRlLiAgSW50ZXJhY3RpdmVseSwgTiBpcyB0aGUgcHJlZml4CkBAIC04NjAs NyArODYwLDcgQEAKICAgIkRlbGV0ZSB0aGUgZm9sbG93aW5nIE4gY2hhcmFjdGVycyAocHJldmlv dXMgaWYgTiBpcyBuZWdhdGl2ZSkuCiBJZiBUcmFuc2llbnQgTWFyayBtb2RlIGlzIGVuYWJsZWQs IHRoZSBtYXJrIGlzIGFjdGl2ZSwgYW5kIE4gaXMgMSwKIGRlbGV0ZSB0aGUgdGV4dCBpbiB0aGUg cmVnaW9uIGFuZCBkZWFjdGl2YXRlIHRoZSBtYXJrIGluc3RlYWQuCi1UbyBkaXNhYmxlIHRoaXMs IHNldCBgZGVsZXRlLWFjdGl2ZS1yZWdpb24nIHRvIG5pbC4KK1RvIGRpc2FibGUgdGhpcywgc2V0 IHZhcmlhYmxlIGBkZWxldGUtYWN0aXZlLXJlZ2lvbicgdG8gbmlsLgogCiBPcHRpb25hbCBzZWNv bmQgYXJnIEtJTExGTEFHIG5vbi1uaWwgbWVhbnMgdG8ga2lsbCAoc2F2ZSBpbiBraWxsCiByaW5n KSBpbnN0ZWFkIG9mIGRlbGV0ZS4gIEludGVyYWN0aXZlbHksIE4gaXMgdGhlIHByZWZpeCBhcmcs IGFuZApAQCAtMTcwNyw3ICsxNzA3LDcgQEAKIElmIHRoZXJlIGFyZSBubyBzZWFyY2ggZXJyb3Jz LCB0aGlzIGZ1bmN0aW9uIGRpc3BsYXlzIGFuIG92ZXJsYXkgd2l0aAogdGhlIGlzZWFyY2ggcHJv bXB0IHdoaWNoIHJlcGxhY2VzIHRoZSBvcmlnaW5hbCBtaW5pYnVmZmVyIHByb21wdC4KIE90aGVy d2lzZSwgaXQgZGlzcGxheXMgdGhlIHN0YW5kYXJkIGlzZWFyY2ggbWVzc2FnZSByZXR1cm5lZCBm cm9tCi1gaXNlYXJjaC1tZXNzYWdlJy4iCit0aGUgZnVuY3Rpb24gYGlzZWFyY2gtbWVzc2FnZScu IgogICAoaWYgKG5vdCAoYW5kIChtaW5pYnVmZmVycCkgaXNlYXJjaC1zdWNjZXNzIChub3QgaXNl YXJjaC1lcnJvcikpKQogICAgICAgOzsgVXNlIHN0YW5kYXJkIGZ1bmN0aW9uIGBpc2VhcmNoLW1l c3NhZ2UnIHdoZW4gbm90IGluIHRoZSBtaW5pYnVmZmVyLAogICAgICAgOzsgb3Igc2VhcmNoIGZh aWxzLCBvciBoYXMgYW4gZXJyb3IgKGxpa2UgaW5jb21wbGV0ZSByZWdleHApLgpAQCAtMzUyMCw3 ICszNTIwLDcgQEAKIGtpbGwgdGhlIHJlc3Qgb2YgdGhlIGN1cnJlbnQgbGluZSwgZXZlbiBpZiB0 aGVyZSBhcmUgb25seQogbm9uYmxhbmtzIHRoZXJlLgogCi1JZiBga2lsbC13aG9sZS1saW5lJyBp cyBub24tbmlsLCB0aGVuIHRoaXMgY29tbWFuZCBraWxscyB0aGUgd2hvbGUgbGluZQorSWYgb3B0 aW9uIGBraWxsLXdob2xlLWxpbmUnIGlzIG5vbi1uaWwsIHRoZW4gdGhpcyBjb21tYW5kIGtpbGxz IHRoZSB3aG9sZSBsaW5lCiBpbmNsdWRpbmcgaXRzIHRlcm1pbmF0aW5nIG5ld2xpbmUsIHdoZW4g dXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZQogd2l0aCBubyBhcmd1bWVudC4gIEFzIGEg Y29uc2VxdWVuY2UsIHlvdSBjYW4gYWx3YXlzIGtpbGwgYSB3aG9sZSBsaW5lCiBieSB0eXBpbmcg XFxbbW92ZS1iZWdpbm5pbmctb2YtbGluZV0gXFxba2lsbC1saW5lXS4KQEAgLTQyOTYsMTMgKzQy OTYsMTMgQEAKICAgIk5vbi1uaWwgbWVhbnMgdmVydGljYWwgbW90aW9uIHN0YXJ0aW5nIGF0IGVu ZCBvZiBsaW5lIGtlZXBzIHRvIGVuZHMgb2YgbGluZXMuCiBUaGlzIG1lYW5zIG1vdmluZyB0byB0 aGUgZW5kIG9mIGVhY2ggbGluZSBtb3ZlZCBvbnRvLgogVGhlIGJlZ2lubmluZyBvZiBhIGJsYW5r IGxpbmUgZG9lcyBub3QgY291bnQgYXMgdGhlIGVuZCBvZiBhIGxpbmUuCi1UaGlzIGhhcyBubyBl ZmZlY3Qgd2hlbiBgbGluZS1tb3ZlLXZpc3VhbCcgaXMgbm9uLW5pbC4iCitUaGlzIGhhcyBubyBl ZmZlY3Qgd2hlbiB0aGUgdmFyaWFibGUgYGxpbmUtbW92ZS12aXN1YWwnIGlzIG5vbi1uaWwuIgog ICA6dHlwZSAnYm9vbGVhbgogICA6Z3JvdXAgJ2VkaXRpbmctYmFzaWNzKQogCiAoZGVmY3VzdG9t IGdvYWwtY29sdW1uIG5pbAogICAiU2VtaXBlcm1hbmVudCBnb2FsIGNvbHVtbiBmb3IgdmVydGlj YWwgbW90aW9uLCBhcyBzZXQgYnkgXFxbc2V0LWdvYWwtY29sdW1uXSwgb3IgbmlsLgotQSBub24t bmlsIHNldHRpbmcgb3ZlcnJpZGVzIGBsaW5lLW1vdmUtdmlzdWFsJywgd2hpY2ggc2VlLiIKK0Eg bm9uLW5pbCBzZXR0aW5nIG92ZXJyaWRlcyB0aGUgdmFyaWFibGUgYGxpbmUtbW92ZS12aXN1YWwn LCB3aGljaCBzZWUuIgogICA6dHlwZSAnKGNob2ljZSBpbnRlZ2VyCiAJCSAoY29uc3QgOnRhZyAi Tm9uZSIgbmlsKSkKICAgOmdyb3VwICdlZGl0aW5nLWJhc2ljcykKQEAgLTQzMTMsNyArNDMxMyw3 IEBACiBJdCBpcyB0aGUgY29sdW1uIHdoZXJlIHBvaW50IHdhcyBhdCB0aGUgc3RhcnQgb2YgdGhl IGN1cnJlbnQgcnVuCiBvZiB2ZXJ0aWNhbCBtb3Rpb24gY29tbWFuZHMuCiAKLVdoZW4gbW92aW5n IGJ5IHZpc3VhbCBsaW5lcyB2aWEgYGxpbmUtbW92ZS12aXN1YWwnLCBpdCBpcyBhIGNvbnMKK1do ZW4gbW92aW5nIGJ5IHZpc3VhbCBsaW5lcyB2aWEgdGhlIGZ1bmN0aW9uIGBsaW5lLW1vdmUtdmlz dWFsJywgaXQgaXMgYSBjb25zCiBjZWxsIChDT0wgLiBIU0NST0xMKSwgd2hlcmUgQ09MIGlzIHRo ZSB4LXBvc2l0aW9uLCBpbiBwaXhlbHMsCiBkaXZpZGVkIGJ5IHRoZSBkZWZhdWx0IGNvbHVtbiB3 aWR0aCwgYW5kIEhTQ1JPTEwgaXMgdGhlIG51bWJlciBvZgogY29sdW1ucyBieSB3aGljaCB3aW5k b3cgaXMgc2Nyb2xsZWQgZnJvbSBsZWZ0IG1hcmdpbi4KQEAgLTUzNzcsNyArNTM3Nyw3IEBACiBi ZXlvbmQgYGN1cnJlbnQtZmlsbC1jb2x1bW4nIGF1dG9tYXRpY2FsbHkgYnJlYWtzIHRoZSBsaW5l IGF0IGEKIHByZXZpb3VzIHNwYWNlLgogCi1XaGVuIGBhdXRvLWZpbGwtbW9kZScgaXMgb24sIHRo ZSBgYXV0by1maWxsLWZ1bmN0aW9uJyB2YXJpYWJsZSBpcworV2hlbiBgYXV0by1maWxsLW1vZGUn IGlzIG9uLCB0aGUgdmFyaWFibGUgYGF1dG8tZmlsbC1mdW5jdGlvbicgaXMKIG5vbi1gbmlsJy4K IAogVGhlIHZhbHVlIG9mIGBub3JtYWwtYXV0by1maWxsLWZ1bmN0aW9uJyBzcGVjaWZpZXMgdGhl IGZ1bmN0aW9uIHRvIHVzZQotLS0gbGlzcC90ZXh0bW9kZXMvZmx5c3BlbGwuZWx+CTIwMTItMDgt MjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBsaXNwL3RleHRtb2Rlcy9mbHlzcGVsbC5l bAkyMDEyLTEwLTE4IDA5OjU0OjI2LjQzNjA5MDIwMCAtMDQwMApAQCAtNjMsNyArNjMsNyBAQAog ICAiTm9uLW5pbCBtZWFucyBGbHlzcGVsbCByZXBvcnRzIGEgcmVwZWF0ZWQgd29yZCBhcyBhbiBl cnJvci4KIFNlZSBgZmx5c3BlbGwtbWFyay1kdXBsaWNhdGlvbnMtZXhjZXB0aW9ucycgdG8gYWRk IGV4Y2VwdGlvbnMgdG8gdGhpcyBydWxlLgogRGV0ZWN0aW9uIG9mIHJlcGVhdGVkIHdvcmRzIGlz IG5vdCBpbXBsZW1lbnRlZCBpbgotXCJsYXJnZVwiIHJlZ2lvbnM7IHNlZSBgZmx5c3BlbGwtbGFy Z2UtcmVnaW9uJy4iCitcImxhcmdlXCIgcmVnaW9uczsgc2VlIHZhcmlhYmxlIGBmbHlzcGVsbC1s YXJnZS1yZWdpb24nLiIKICAgOmdyb3VwICdmbHlzcGVsbAogICA6dHlwZSAnYm9vbGVhbikKIApA QCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgc2Nyb2xsLXVwCiAgICAgc2Nyb2xsLWRvd24pCiAgICJU aGUgc3RhbmRhcmQgbGlzdCBvZiBkZXBsYWNlbWVudCBjb21tYW5kcyBmb3IgRmx5c3BlbGwuCi1T ZWUgYGZseXNwZWxsLWRlcGxhY2VtZW50LWNvbW1hbmRzJy4iCitTZWUgdmFyaWFibGUgYGZseXNw ZWxsLWRlcGxhY2VtZW50LWNvbW1hbmRzJy4iCiAgIDpncm91cCAnZmx5c3BlbGwKICAgOnZlcnNp b24gIjIxLjEiCiAgIDp0eXBlICcocmVwZWF0IChzeW1ib2wpKSkKLS0tIGxpc3AvdGV4dG1vZGVz L2lzcGVsbC5lbH4JMjAxMi0wOC0yMyAwMTozMzo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGxpc3Av dGV4dG1vZGVzL2lzcGVsbC5lbAkyMDEyLTEwLTE4IDA5OjU0OjI2LjQ4NzA5NTMwMCAtMDQwMApA QCAtMTU0MCw3ICsxNTQwLDcgQEAKIAogKGRlZnVuIGlzcGVsbC1hY2NlcHQtb3V0cHV0ICgmb3B0 aW9uYWwgdGltZW91dC1zZWNzIHRpbWVvdXQtbXNlY3MpCiAgICJXYWl0IGZvciBvdXRwdXQgZnJv bSBpc3BlbGwgcHJvY2Vzcywgb3IgVElNRU9VVC1TRUNTIGFuZCBUSU1FT1VULU1TRUNTLgotSWYg YXN5bmNocm9ub3VzIHN1YnByb2Nlc3NlcyBhcmUgbm90IHN1cHBvcnRlZCwgY2FsbCBgaXNwZWxs LWZpbHRlcicgYW5kCitJZiBhc3luY2hyb25vdXMgc3VicHJvY2Vzc2VzIGFyZSBub3Qgc3VwcG9y dGVkLCBjYWxsIGZ1bmN0aW9uIGBpc3BlbGwtZmlsdGVyJyBhbmQKIHBhc3MgaXQgdGhlIG91dHB1 dCBvZiB0aGUgbGFzdCBpc3BlbGwgaW52b2NhdGlvbi4iCiAgIChpZiBpc3BlbGwtYXN5bmMtcHJv Y2Vzc3AKICAgICAgIChhY2NlcHQtcHJvY2Vzcy1vdXRwdXQgaXNwZWxsLXByb2Nlc3MgdGltZW91 dC1zZWNzIHRpbWVvdXQtbXNlY3MpCi0tLSBsaXNwL3RleHRtb2Rlcy9zZ21sLW1vZGUuZWx+CTIw MTItMDgtMjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBsaXNwL3RleHRtb2Rlcy9zZ21s LW1vZGUuZWwJMjAxMi0xMC0xOCAwOTo1NDoyNi41NDUxMDExMDAgLTA0MDAKQEAgLTE5MzYsNyAr MTkzNiw3IEBACiAgICAgKCJ1bCIgLiAiVW5vcmRlcmVkIGxpc3QiKQogICAgICgidmFyIiAuICJN YXRoIHZhcmlhYmxlIGZhY2UiKQogICAgICgid2JyIiAuICJFbmFibGUgPGJyPiB3aXRoaW4gPG5v YnI+IikpCi0gICIqVmFsdWUgb2YgYHNnbWwtdGFnLWhlbHAnIGZvciBIVE1MIG1vZGUuIikKKyAg IipWYWx1ZSBvZiB2YXJpYWJsZSBgc2dtbC10YWctaGVscCcgZm9yIEhUTUwgbW9kZS4iKQogCiAM CiA7OzsjIyNhdXRvbG9hZAotLS0gbGlzcC92Yy9jb21wYXJlLXcuZWx+CTIwMTItMDgtMjMgMDE6 MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBsaXNwL3ZjL2NvbXBhcmUtdy5lbAkyMDEyLTEwLTE4 IDA5OjU0OjI2LjU4NDEwNTAwMCAtMDQwMApAQCAtNTMsMTMgKzUzLDEzIEBACiAgIDpncm91cCAn Y29tcGFyZS13aW5kb3dzKQogCiAoZGVmY3VzdG9tIGNvbXBhcmUtaWdub3JlLXdoaXRlc3BhY2Ug bmlsCi0gICJOb24tbmlsIG1lYW5zIGBjb21wYXJlLXdpbmRvd3MnIGlnbm9yZXMgd2hpdGVzcGFj ZS4iCisgICJOb24tbmlsIG1lYW5zIGNvbW1hbmQgYGNvbXBhcmUtd2luZG93cycgaWdub3JlcyB3 aGl0ZXNwYWNlLiIKICAgOnR5cGUgJ2Jvb2xlYW4KICAgOmdyb3VwICdjb21wYXJlLXdpbmRvd3MK ICAgOnZlcnNpb24gIjIyLjEiKQogCiAoZGVmY3VzdG9tIGNvbXBhcmUtaWdub3JlLWNhc2Ugbmls Ci0gICJOb24tbmlsIG1lYW5zIGBjb21wYXJlLXdpbmRvd3MnIGlnbm9yZXMgY2FzZSBkaWZmZXJl bmNlcy4iCisgICJOb24tbmlsIG1lYW5zIGNvbW1hbmQgYGNvbXBhcmUtd2luZG93cycgaWdub3Jl cyBjYXNlIGRpZmZlcmVuY2VzLiIKICAgOnR5cGUgJ2Jvb2xlYW4KICAgOmdyb3VwICdjb21wYXJl LXdpbmRvd3MpCiAKQEAgLTM3OSw3ICszNzksNyBAQAogCShkZWxldGUtb3ZlcmxheSBjb21wYXJl LXdpbmRvd3Mtb3ZlcmxheTIpKSkpKQogCiAoZGVmdW4gY29tcGFyZS13aW5kb3dzLWRlaGlnaGxp Z2h0ICgpCi0gICJSZW1vdmUgaGlnaGxpZ2h0aW5nIGNyZWF0ZWQgYnkgYGNvbXBhcmUtd2luZG93 cy1oaWdobGlnaHQnLiIKKyAgIlJlbW92ZSBoaWdobGlnaHRpbmcgY3JlYXRlZCBieSBmdW5jdGlv biBgY29tcGFyZS13aW5kb3dzLWhpZ2hsaWdodCcuIgogICAoaW50ZXJhY3RpdmUpCiAgIChyZW1v dmUtaG9vayAncHJlLWNvbW1hbmQtaG9vayAnY29tcGFyZS13aW5kb3dzLWRlaGlnaGxpZ2h0KQog ICAobWFwYyAnZGVsZXRlLW92ZXJsYXkgY29tcGFyZS13aW5kb3dzLW92ZXJsYXlzMSkKLS0tIGxp c3AvdmMvZGlmZi5lbH4JMjAxMi0wOC0yMyAwMTozMzo0Mi4wMDAwMDAwMDAgLTA0MDAKKysrIGxp c3AvdmMvZGlmZi5lbAkyMDEyLTEwLTE4IDA5OjU0OjI2LjYyNzEwOTMwMCAtMDQwMApAQCAtODMs NyArODMsNyBAQAogCiBXaGVuIGNhbGxlZCBpbnRlcmFjdGl2ZWx5IHdpdGggYSBwcmVmaXggYXJn dW1lbnQsIHByb21wdAogaW50ZXJhY3RpdmVseSBmb3IgZGlmZiBzd2l0Y2hlcy4gIE90aGVyd2lz ZSwgdGhlIHN3aXRjaGVzCi1zcGVjaWZpZWQgaW4gYGRpZmYtc3dpdGNoZXMnIGFyZSBwYXNzZWQg dG8gdGhlIGRpZmYgY29tbWFuZC4iCitzcGVjaWZpZWQgaW4gdGhlIHZhcmlhYmxlIGBkaWZmLXN3 aXRjaGVzJyBhcmUgcGFzc2VkIHRvIHRoZSBkaWZmIGNvbW1hbmQuIgogICAoaW50ZXJhY3RpdmUK ICAgIChsZXQqICgobmV3ZiAoaWYgKGFuZCBidWZmZXItZmlsZS1uYW1lIChmaWxlLWV4aXN0cy1w IGJ1ZmZlci1maWxlLW5hbWUpKQogCQkgICAgKHJlYWQtZmlsZS1uYW1lCi0tLSBsaXNwL3doaXRl c3BhY2UuZWx+CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBsaXNwL3do aXRlc3BhY2UuZWwJMjAxMi0xMC0xOCAwOTo1NDoyNi43OTYxMjYyMDAgLTA0MDAKQEAgLTEyNzYs MTkgKzEyNzYsMTkgQEAKIAogKGRlZnZhciB3aGl0ZXNwYWNlLXBvaW50IChwb2ludCkKICAgIlVz ZWQgdG8gc2F2ZSBsb2NhbGx5IGN1cnJlbnQgcG9pbnQgdmFsdWUuCi1Vc2VkIGJ5IGB3aGl0ZXNw YWNlLXRyYWlsaW5nLXJlZ2V4cCcgZnVuY3Rpb24gKHdoaWNoIHNlZSkuIikKK1VzZWQgYnkgZnVu Y3Rpb24gYHdoaXRlc3BhY2UtdHJhaWxpbmctcmVnZXhwJyAod2hpY2ggc2VlKS4iKQogCiAoZGVm dmFyIHdoaXRlc3BhY2UtZm9udC1sb2NrLXJlZm9udGlmeSBuaWwKICAgIlVzZWQgdG8gc2F2ZSBs b2NhbGx5IHRoZSBmb250LWxvY2sgcmVmb250aWZ5IHN0YXRlLgotVXNlZCBieSBgd2hpdGVzcGFj ZS1wb3N0LWNvbW1hbmQtaG9vaycgZnVuY3Rpb24gKHdoaWNoIHNlZSkuIikKK1VzZWQgYnkgZnVu Y3Rpb24gYHdoaXRlc3BhY2UtcG9zdC1jb21tYW5kLWhvb2snICh3aGljaCBzZWUpLiIpCiAKIChk ZWZ2YXIgd2hpdGVzcGFjZS1ib2ItbWFya2VyIG5pbAogICAiVXNlZCB0byBzYXZlIGxvY2FsbHkg dGhlIGJvYiBtYXJrZXIgdmFsdWUuCi1Vc2VkIGJ5IGB3aGl0ZXNwYWNlLXBvc3QtY29tbWFuZC1o b29rJyBmdW5jdGlvbiAod2hpY2ggc2VlKS4iKQorVXNlZCBieSBmdW5jdGlvbiBgd2hpdGVzcGFj ZS1wb3N0LWNvbW1hbmQtaG9vaycgKHdoaWNoIHNlZSkuIikKIAogKGRlZnZhciB3aGl0ZXNwYWNl LWVvYi1tYXJrZXIgbmlsCiAgICJVc2VkIHRvIHNhdmUgbG9jYWxseSB0aGUgZW9iIG1hcmtlciB2 YWx1ZS4KLVVzZWQgYnkgYHdoaXRlc3BhY2UtcG9zdC1jb21tYW5kLWhvb2snIGZ1bmN0aW9uICh3 aGljaCBzZWUpLiIpCitVc2VkIGJ5IGZ1bmN0aW9uIGB3aGl0ZXNwYWNlLXBvc3QtY29tbWFuZC1o b29rJyAod2hpY2ggc2VlKS4iKQogCiAoZGVmdmFyIHdoaXRlc3BhY2UtYnVmZmVyLWNoYW5nZWQg bmlsCiAgICJVc2VkIHRvIGluZGljYXRlIGxvY2FsbHkgaWYgYnVmZmVyIGNoYW5nZWQuCi0tLSBz cmMvY21kcy5jfgkyMDEyLTA4LTIzIDAxOjMzOjQyLjAwMDAwMDAwMCAtMDQwMAorKysgc3JjL2Nt ZHMuYwkyMDEyLTEwLTE4IDA5OjU0OjI2LjgzNTEzMDEwMCAtMDQwMApAQCAtMjcwLDcgKzI3MCw3 IEBACiBXaGljaGV2ZXIgY2hhcmFjdGVyIHlvdSB0eXBlIHRvIHJ1biB0aGlzIGNvbW1hbmQgaXMg aW5zZXJ0ZWQuCiBCZWZvcmUgaW5zZXJ0aW9uLCBgZXhwYW5kLWFiYnJldicgaXMgZXhlY3V0ZWQg aWYgdGhlIGluc2VydGVkIGNoYXJhY3RlciBkb2VzCiBub3QgaGF2ZSB3b3JkIHN5bnRheCBhbmQg dGhlIHByZXZpb3VzIGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyIGRvZXMuCi1BZnRlciBpbnNlcnRp b24sIHRoZSB2YWx1ZSBvZiBgYXV0by1maWxsLWZ1bmN0aW9uJyBpcyBjYWxsZWQgaWYgdGhlCitB ZnRlciBpbnNlcnRpb24sIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYGF1dG8tZmlsbC1mdW5j dGlvbicgaXMgY2FsbGVkIGlmIHRoZQogYGF1dG8tZmlsbC1jaGFycycgdGFibGUgaGFzIGEgbm9u LW5pbCB2YWx1ZSBmb3IgdGhlIGluc2VydGVkIGNoYXJhY3Rlci4KIEF0IHRoZSBlbmQsIGl0IHJ1 bnMgYHBvc3Qtc2VsZi1pbnNlcnQtaG9vaycuICAqLykKICAgKExpc3BfT2JqZWN0IG4pCi0tLSBz cmMvaW5zZGVsLmN+CTIwMTItMDgtMjMgMDE6MzM6NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBzcmMv aW5zZGVsLmMJMjAxMi0xMC0xOCAwOTo1NDoyNi45MTQxMzgwMDAgLTA0MDAKQEAgLTIxMTYsNyAr MjExNiw3IEBACiAKIERFRlVOICgiY29tYmluZS1hZnRlci1jaGFuZ2UtZXhlY3V0ZSIsIEZjb21i aW5lX2FmdGVyX2NoYW5nZV9leGVjdXRlLAogICAgICAgIFNjb21iaW5lX2FmdGVyX2NoYW5nZV9l eGVjdXRlLCAwLCAwLCAwLAotICAgICAgIGRvYzogLyogVGhpcyBmdW5jdGlvbiBpcyBmb3IgdXNl IGludGVybmFsbHkgaW4gYGNvbWJpbmUtYWZ0ZXItY2hhbmdlLWNhbGxzJy4gICovKQorICAgICAg IGRvYzogLyogVGhpcyBmdW5jdGlvbiBpcyBmb3IgdXNlIGludGVybmFsbHkgaW4gdGhlIGZ1bmN0 aW9uIGBjb21iaW5lLWFmdGVyLWNoYW5nZS1jYWxscycuICAqLykKICAgKHZvaWQpCiB7CiAgIGlu dCBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CkBAIC0yMjExLDcgKzIyMTEsNyBAQAogCSAgICAg ICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMgZW5hYmxlIGRlYnVnZ2luZyBjaGVja3MgZm9yIGludmFs aWQgbWFya2VyIHBvc2l0aW9ucy4gICovKTsKICAgY2hlY2tfbWFya2Vyc19kZWJ1Z19mbGFnID0g MDsKICAgREVGVkFSX0xJU1AgKCJjb21iaW5lLWFmdGVyLWNoYW5nZS1jYWxscyIsIFZjb21iaW5l X2FmdGVyX2NoYW5nZV9jYWxscywKLQkgICAgICAgZG9jOiAvKiBVc2VkIGludGVybmFsbHkgYnkg dGhlIGBjb21iaW5lLWFmdGVyLWNoYW5nZS1jYWxscycgbWFjcm8uICAqLyk7CisJICAgICAgIGRv YzogLyogVXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBmdW5jdGlvbiBgY29tYmluZS1hZnRlci1jaGFu Z2UtY2FsbHMnLiAgKi8pOwogICBWY29tYmluZV9hZnRlcl9jaGFuZ2VfY2FsbHMgPSBRbmlsOwog CiAgIERFRlZBUl9CT09MICgiaW5oaWJpdC1tb2RpZmljYXRpb24taG9va3MiLCBpbmhpYml0X21v ZGlmaWNhdGlvbl9ob29rcywKLS0tIHNyYy9rZXlib2FyZC5jfgkyMDEyLTA4LTIzIDAxOjMzOjQy LjAwMDAwMDAwMCAtMDQwMAorKysgc3JjL2tleWJvYXJkLmMJMjAxMi0xMC0xOCAwOTo1NDoyNi45 NTgxNDI0MDAgLTA0MDAKQEAgLTEwMjQ5LDcgKzEwMjQ5LDcgQEAKICAgICAgICBkb2M6IC8qIEV4 ZWN1dGUgQ01EIGFzIGFuIGVkaXRvciBjb21tYW5kLgogQ01EIG11c3QgYmUgYSBzeW1ib2wgdGhh dCBzYXRpc2ZpZXMgdGhlIGBjb21tYW5kcCcgcHJlZGljYXRlLgogT3B0aW9uYWwgc2Vjb25kIGFy ZyBSRUNPUkQtRkxBRyBub24tbmlsCi1tZWFucyB1bmNvbmRpdGlvbmFsbHkgcHV0IHRoaXMgY29t bWFuZCBpbiBgY29tbWFuZC1oaXN0b3J5Jy4KK21lYW5zIHVuY29uZGl0aW9uYWxseSBwdXQgdGhp cyBjb21tYW5kIGluIHRoZSB2YXJpYWJsZSBgY29tbWFuZC1oaXN0b3J5Jy4KIE90aGVyd2lzZSwg dGhhdCBpcyBkb25lIG9ubHkgaWYgYW4gYXJnIGlzIHJlYWQgdXNpbmcgdGhlIG1pbmlidWZmZXIu CiBUaGUgYXJndW1lbnQgS0VZUyBzcGVjaWZpZXMgdGhlIHZhbHVlIHRvIHVzZSBpbnN0ZWFkIG9m ICh0aGlzLWNvbW1hbmQta2V5cykKIHdoZW4gcmVhZGluZyB0aGUgYXJndW1lbnRzOyBpZiBpdCBp cyBuaWwsICh0aGlzLWNvbW1hbmQta2V5cykgaXMgdXNlZC4KQEAgLTEyMjg0LDggKzEyMjg0LDgg QEAKIAkgICAgICAgVnNhdmVkX3JlZ2lvbl9zZWxlY3Rpb24sCiAJICAgICAgIGRvYzogLyogQ29u dGVudHMgb2YgYWN0aXZlIHJlZ2lvbiBwcmlvciB0byBidWZmZXIgbW9kaWZpY2F0aW9uLgogSWYg YHNlbGVjdC1hY3RpdmUtcmVnaW9ucycgaXMgbm9uLW5pbCwgRW1hY3Mgc2V0cyB0aGlzIHRvIHRo ZQotdGV4dCBpbiB0aGUgcmVnaW9uIGJlZm9yZSBtb2RpZnlpbmcgdGhlIGJ1ZmZlci4gIFRoZSBu ZXh0Ci1gZGVhY3RpdmF0ZS1tYXJrJyBjYWxsIHVzZXMgdGhpcyB0byBzZXQgdGhlIHdpbmRvdyBz ZWxlY3Rpb24uICAqLyk7Cit0ZXh0IGluIHRoZSByZWdpb24gYmVmb3JlIG1vZGlmeWluZyB0aGUg YnVmZmVyLiAgVGhlIG5leHQgY2FsbCB0bwordGhlIGZ1bmN0aW9uIGBkZWFjdGl2YXRlLW1hcmsn IHVzZXMgdGhpcyB0byBzZXQgdGhlIHdpbmRvdyBzZWxlY3Rpb24uICAqLyk7CiAgIFZzYXZlZF9y ZWdpb25fc2VsZWN0aW9uID0gUW5pbDsKIAogICBERUZWQVJfTElTUCAoInNlbGVjdGlvbi1pbmhp Yml0LXVwZGF0ZS1jb21tYW5kcyIsCi0tLSBzcmMvd2luZG93LmN+CTIwMTItMDgtMjMgMDE6MzM6 NDIuMDAwMDAwMDAwIC0wNDAwCisrKyBzcmMvd2luZG93LmMJMjAxMi0xMC0xOCAwOTo1NDoyNi45 OTkxNDY1MDAgLTA0MDAKQEAgLTEyNDgsNyArMTI0OCw3IEBACiAKIE5vdGUgdGhhdCwgd2hlbiBX SU5ET1cgaXMgdGhlIHNlbGVjdGVkIHdpbmRvdyBhbmQgaXRzIGJ1ZmZlcgogaXMgYWxzbyBjdXJy ZW50bHkgc2VsZWN0ZWQsIHRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgc2FtZSBhcyAocG9pbnQp LgotSXQgd291bGQgYmUgbW9yZSBzdHJpY3RseSBjb3JyZWN0IHRvIHJldHVybiB0aGUgYHRvcC1s ZXZlbCcgdmFsdWUKK0l0IHdvdWxkIGJlIG1vcmUgc3RyaWN0bHkgY29ycmVjdCB0byByZXR1cm4g dGhlIHRvcC1sZXZlbCB2YWx1ZQogb2YgcG9pbnQsIG91dHNpZGUgb2YgYW55IHNhdmUtZXhjdXJz aW9uIGZvcm1zLgogQnV0IHRoYXQgaXMgaGFyZCB0byBkZWZpbmUuICAqLykKICAgKExpc3BfT2Jq ZWN0IHdpbmRvdykKQEAgLTY2MjgsNyArNjYyOCw3IEBACiAKIE90aGVyIHZhbHVlcyBhcmUgcmVz ZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuCiAKLVRoaXMgdmFyaWFibGUgdGFrZXMgbm8gZWZmZWN0IGlm IGB3aW5kb3ctY29tYmluYXRpb24tbGltaXQnIGlzIG5vbi1uaWwuICAqLyk7CitUaGlzIHZhcmlh YmxlIHRha2VzIG5vIGVmZmVjdCBpZiB0aGUgdmFyaWFibGUgYHdpbmRvdy1jb21iaW5hdGlvbi1s aW1pdCcgaXMgbm9uLW5pbC4gICovKTsKICAgVndpbmRvd19jb21iaW5hdGlvbl9yZXNpemUgPSBR bmlsOwogCiAgIERFRlZBUl9MSVNQICgid2luZG93LWNvbWJpbmF0aW9uLWxpbWl0IiwgVndpbmRv d19jb21iaW5hdGlvbl9saW1pdCwK --e89a8f503838b296ba04cc6fc2ef-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 23 04:10:21 2012 Received: (at 12686) by debbugs.gnu.org; 23 Oct 2012 08:10:21 +0000 Received: from localhost ([127.0.0.1]:56922 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQZZ6-0000XE-I4 for submit@debbugs.gnu.org; Tue, 23 Oct 2012 04:10:21 -0400 Received: from ps18281.dreamhost.com ([69.163.218.105]:53913 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQZYz-0000Wl-AF for 12686@debbugs.gnu.org; Tue, 23 Oct 2012 04:10:17 -0400 Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id E8513451CCB1; Tue, 23 Oct 2012 01:08:19 -0700 (PDT) From: Juri Linkov To: "Aaron S. Hawley" Subject: Re: bug#12686: PATCH: ambiguous help doc strings Organization: JURTA References: Date: Tue, 23 Oct 2012 11:04:07 +0300 In-Reply-To: (Aaron S. Hawley's message of "Fri, 19 Oct 2012 16:58:06 -0400") Message-ID: <87wqyh7i20.fsf@mail.jurta.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12686 Cc: 12686@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > In order to check all the doc strings in Emacs, all the libraries in > Emacs need to be loaded. Unfortunately, Emacs crashes or becomes > unusable when doing this. Some libraries need to be skipped. This > could be because a library is loaded more than once since I use > `load-library' rather than `require'. To avoid crashes after loading all the libraries I suggest to try static analysis without loading the libraries. This is possible to do with a function like `emacs-lisp-grep' from http://lists.gnu.org/archive/html/emacs-devel/2005-05/msg01259.html When the first element of an expression read from the source file is `defun', its docstring is in the fourth element. A variable name is the second element of the expression whose first element is `defvar' or `defcustom', etc. Conditional defvars are more tricky to process but fortunately they are rare. From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 23 08:34:14 2012 Received: (at 12686) by debbugs.gnu.org; 23 Oct 2012 12:34:14 +0000 Received: from localhost ([127.0.0.1]:57144 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQdgU-0007JM-8W for submit@debbugs.gnu.org; Tue, 23 Oct 2012 08:34:14 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:30975) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQdgR-0007J9-QZ for 12686@debbugs.gnu.org; Tue, 23 Oct 2012 08:34:12 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09MCqNj/2dsb2JhbABEtBGBCIIVAQEEAVYjEAs0EhQYDSSIHAW6CZBEA6MzgViDBQ X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="202530282" Received: from 76-10-163-99.dsl.teksavvy.com (HELO pastel.home) ([76.10.163.99]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 23 Oct 2012 08:32:13 -0400 Received: by pastel.home (Postfix, from userid 20848) id 67EC459347; Tue, 23 Oct 2012 08:32:13 -0400 (EDT) From: Stefan Monnier To: Juri Linkov Subject: Re: bug#12686: PATCH: ambiguous help doc strings Message-ID: References: <87wqyh7i20.fsf@mail.jurta.org> Date: Tue, 23 Oct 2012 08:32:13 -0400 In-Reply-To: <87wqyh7i20.fsf@mail.jurta.org> (Juri Linkov's message of "Tue, 23 Oct 2012 11:04:07 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12686 Cc: 12686@debbugs.gnu.org, "Aaron S. Hawley" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) >> In order to check all the doc strings in Emacs, all the libraries in >> Emacs need to be loaded. Unfortunately, Emacs crashes or becomes >> unusable when doing this. Some libraries need to be skipped. This >> could be because a library is loaded more than once since I use >> `load-library' rather than `require'. BTW, a common cause of ambiguity is minor modes which use the same symbol as a function and as a variable. But in most such cases, I think the fix is not to fix the ambiguity but to make describe-function/variable aware of minor-modes and display them in a unified way (i.e. display a single *Help* buffer that shows the var and the fun as a single entity, e.g. giving the args but also the link to customize). Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 23 11:26:03 2012 Received: (at 12686) by debbugs.gnu.org; 23 Oct 2012 15:26:03 +0000 Received: from localhost ([127.0.0.1]:57899 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQgMk-0002rE-8S for submit@debbugs.gnu.org; Tue, 23 Oct 2012 11:26:02 -0400 Received: from mail-ia0-f172.google.com ([209.85.210.172]:37934) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQgMi-0002qk-0g for 12686@debbugs.gnu.org; Tue, 23 Oct 2012 11:26:00 -0400 Received: by mail-ia0-f172.google.com with SMTP id o25so2982563iad.3 for <12686@debbugs.gnu.org>; Tue, 23 Oct 2012 08:24:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=gaKdu6D7sOBgDFCAJfBbtdDEsQev9oQSPBmsPazhMQY=; b=rmbPwDKTAzhhyXhSQZ3PdBXPezD0JfsvZCuPp1BjBmK22lYbgHqHFgp95lm64qb0AR bcxLpT/Wvd8Pyboiovcr9YHYE6Haz9ENOzkLfm5OypRvZetYiGFkDTkDU/t10O86jOON Cr+Ahp4fnop27Ecum+QrS1gPEozvuLt+GL54P1DR7qojeNYD5ByX0qnE3X2SINvoIOm+ reINfvdXmktU2uPFHitb7oUxGoyOjxSf/YqPCnMxL+BS+7UQygfoeJO1AeH49kXaWCdg B9aZrC8qtZZ2NxUdFPS4bR3fR5BNitcTx7mQxnq4zOD8mPLcfISzEfwowSGPqdyLUOZd zzwA== MIME-Version: 1.0 Received: by 10.50.40.225 with SMTP id a1mr14202648igl.7.1351005841806; Tue, 23 Oct 2012 08:24:01 -0700 (PDT) Received: by 10.64.38.129 with HTTP; Tue, 23 Oct 2012 08:24:01 -0700 (PDT) In-Reply-To: <87wqyh7i20.fsf@mail.jurta.org> References: <87wqyh7i20.fsf@mail.jurta.org> Date: Tue, 23 Oct 2012 11:24:01 -0400 Message-ID: Subject: Re: bug#12686: PATCH: ambiguous help doc strings From: "Aaron S. Hawley" To: Juri Linkov Content-Type: text/plain; charset=ISO-8859-1 X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12686 Cc: 12686@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.1 (/) > To avoid crashes after loading all the libraries I suggest to try > static analysis without loading the libraries. This is possible > to do with a function like `emacs-lisp-grep' from > http://lists.gnu.org/archive/html/emacs-devel/2005-05/msg01259.html Nice. > When the first element of an expression read from the source file > is `defun', its docstring is in the fourth element. A variable name > is the second element of the expression whose first element is `defvar' > or `defcustom', etc. Conditional defvars are more tricky to process > but fortunately they are rare. For this problem, this would require two passes. The first pass to find the ambiguous symbol definitions (a defun and defvar or defcustom) then a second to find the references to these symbols in documentation in an ambiguous way. I'd probably use something like an obarray to keep track of symbols in the first pass, but it would be a second-rate reimplementation to what Emacs already does. And `emacs-lisp-grep' wouldn't search the C sources. So for laziness and completeness, I went with mapatoms. -- In general, we reserve the right to have a poor memory--the computer, however, is supposed to remember! Poor computer. -- Guy Lewis Steele Jr. From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 23 12:17:13 2012 Received: (at 12686) by debbugs.gnu.org; 23 Oct 2012 16:17:13 +0000 Received: from localhost ([127.0.0.1]:58013 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQhAG-00045t-Nw for submit@debbugs.gnu.org; Tue, 23 Oct 2012 12:17:13 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:18844) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQhAE-00045c-B8 for 12686@debbugs.gnu.org; Tue, 23 Oct 2012 12:17:11 -0400 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q9NGFAxe014247 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 23 Oct 2012 16:15:11 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q9NGF9lr021942 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 23 Oct 2012 16:15:09 GMT Received: from abhmt109.oracle.com (abhmt109.oracle.com [141.146.116.61]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q9NGF8Yh014417; Tue, 23 Oct 2012 11:15:08 -0500 Received: from dradamslap1 (/10.159.223.184) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 23 Oct 2012 09:15:08 -0700 From: "Drew Adams" To: "'Stefan Monnier'" , "'Juri Linkov'" References: <87wqyh7i20.fsf@mail.jurta.org> Subject: RE: bug#12686: PATCH: ambiguous help doc strings Date: Tue, 23 Oct 2012 09:15:05 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Ac2xGpy1ZXOgJerRQiqNVDPGVHVLNAAFzvbQ X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12686 Cc: 12686@debbugs.gnu.org, "'Aaron S. Hawley'" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > BTW, a common cause of ambiguity is minor modes which use the same > symbol as a function and as a variable. But in most such > cases, I think the fix is not to fix the ambiguity but to make > describe-function/variable aware of minor-modes and display them in > a unified way (i.e. display a single *Help* buffer that shows the var > and the fun as a single entity, e.g. giving the args but also the link > to customize). +1, but not necessarily in the describe-function/variable code. It should be enough to do it once, in `help-make-xrefs'. And this is already done, to some extent. `help-make-xrefs' already DTRT, **IF** the symbol name is not preceded by a keyword such as `function' or `variable', i.e., if the match against `help-xref-symbol-regexp' does not match `match-string' 1 through 7, and the symbol is both a var and a fn with doc. In that case, we use button type `help-symbol', which DTRT: it shows the help for both the function and the variable. For example, if `icicle-mode' appears in the help text without any intro word such as `function', `variable', or `option', then when you click it you get the help for both the mode function `icicle-mode' and the mode variable (option) `icicle-mode'. `help-make-xrefs' could be tweaked to improve the accuracy in the case of a mode fn/var (or any other symbol that is both a fn and a var): Just change the `cond' order clauses, moving this clause before the other clauses: ((and (or (boundp sym) (get sym 'variable-documentation)) (fboundp sym)) ;; We can't intuit whether to use the ;; variable or function doc -- supply both. (help-xref-button 8 'help-symbol sym)) I.e., instead of providing such all-of-the-above behavior only as a fallback, provide it anytime we know that a given symbol is both a fn and a var (by using button type `help-symbol'). From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 23 13:04:32 2012 Received: (at 12686) by debbugs.gnu.org; 23 Oct 2012 17:04:32 +0000 Received: from localhost ([127.0.0.1]:58058 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQhu3-0005Ec-RR for submit@debbugs.gnu.org; Tue, 23 Oct 2012 13:04:32 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:54880) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TQhu2-0005EO-2G for 12686@debbugs.gnu.org; Tue, 23 Oct 2012 13:04:30 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09MCqNj/2dsb2JhbABEtBGBCIIVAQEEAVYjBQsLNBIUGA0kiBwFugmQRAOjM4FYgwU X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="202554405" Received: from 76-10-163-99.dsl.teksavvy.com (HELO pastel.home) ([76.10.163.99]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 23 Oct 2012 13:02:31 -0400 Received: by pastel.home (Postfix, from userid 20848) id 37F2C58CA3; Tue, 23 Oct 2012 13:02:31 -0400 (EDT) From: Stefan Monnier To: "Drew Adams" Subject: Re: bug#12686: PATCH: ambiguous help doc strings Message-ID: References: <87wqyh7i20.fsf@mail.jurta.org> Date: Tue, 23 Oct 2012 13:02:31 -0400 In-Reply-To: (Drew Adams's message of "Tue, 23 Oct 2012 09:15:05 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12686 Cc: 'Juri Linkov' , 12686@debbugs.gnu.org, "'Aaron S. Hawley'" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > In that case, we use button type `help-symbol', which DTRT: it shows the help > for both the function and the variable. What I meant is that for minor-modes we shouldn't show the help for the function plus the help for the variable but a single help for the minor-mode which describes both as a single entity. Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 25 14:32:18 2012 Received: (at 12686) by debbugs.gnu.org; 25 Oct 2012 18:32:19 +0000 Received: from localhost ([127.0.0.1]:33632 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRSE3-0004kx-LE for submit@debbugs.gnu.org; Thu, 25 Oct 2012 14:32:17 -0400 Received: from rcsinet15.oracle.com ([148.87.113.117]:51060) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRSE0-0004ko-At for 12686@debbugs.gnu.org; Thu, 25 Oct 2012 14:32:13 -0400 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by rcsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q9PIU02g029206 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 25 Oct 2012 18:30:01 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q9PITxxR000872 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 25 Oct 2012 18:29:59 GMT Received: from abhmt111.oracle.com (abhmt111.oracle.com [141.146.116.63]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q9PITwGA016984; Thu, 25 Oct 2012 13:29:59 -0500 Received: from dradamslap1 (/130.35.178.248) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 25 Oct 2012 11:29:58 -0700 From: "Drew Adams" To: "'Stefan Monnier'" References: <87wqyh7i20.fsf@mail.jurta.org> Subject: RE: bug#12686: PATCH: ambiguous help doc strings Date: Thu, 25 Oct 2012 11:29:57 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Ac2xQDF+aN9tF0wNTC6XDhE0IMzhqgBnZpgw X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Spam-Score: -4.9 (----) X-Debbugs-Envelope-To: 12686 Cc: 'Juri Linkov' , 12686@debbugs.gnu.org, "'Aaron S. Hawley'" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.9 (----) > What I meant is that for minor-modes we shouldn't show the > help for the function plus the help for the variable but a > single help for the minor-mode which describes both as a > single entity. Why? What's the difference? IOW, just what do you mean by "as a single entity"? Anyway, sounds OK to me. But if this is not done right away, why not at least do as I suggested in the meantime: move the var-or-fn clause first, so that if a symbol is both it gets treated as both. And that would seem to be appropriate anyway, even if you also do as you suggest, to accommodate other symbols that do not correspond to a minor-mode but which have both var and fun definitions. IOW, minor modes are not the only case to consider, even if they are an important case. I would like to see all doc for a symbol, which could have definitions as a face, a var, a function, and perhaps even a group (anything else?). The cond clauses should be ordered accordingly, rather than favoring some kinds of thingy to the exclusion of others. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 25 15:23:13 2012 Received: (at 12686) by debbugs.gnu.org; 25 Oct 2012 19:23:13 +0000 Received: from localhost ([127.0.0.1]:33672 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRT1M-0005uQ-Sw for submit@debbugs.gnu.org; Thu, 25 Oct 2012 15:23:13 -0400 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:60701) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRT1K-0005uH-Bi for 12686@debbugs.gnu.org; Thu, 25 Oct 2012 15:23:10 -0400 Received: from faina.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id q9PJL14s022503; Thu, 25 Oct 2012 15:21:01 -0400 Received: by faina.iro.umontreal.ca (Postfix, from userid 20848) id A22CDB4278; Thu, 25 Oct 2012 15:21:01 -0400 (EDT) From: Stefan Monnier To: "Drew Adams" Subject: Re: bug#12686: PATCH: ambiguous help doc strings Message-ID: References: <87wqyh7i20.fsf@mail.jurta.org> Date: Thu, 25 Oct 2012 15:21:01 -0400 In-Reply-To: (Drew Adams's message of "Thu, 25 Oct 2012 11:29:57 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Level: X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0.2 X-NAI-Spam-Rules: 2 Rules triggered GEN_SPAM_FEATRE=0.2, RV4382=0 X-NAI-Spam-Version: 2.2.0.9309 : core <4382> : streams <845380> : uri <1252333> X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: 12686 Cc: 'Juri Linkov' , 12686@debbugs.gnu.org, "'Aaron S. Hawley'" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.4 (--) > Anyway, sounds OK to me. But if this is not done right away, why not > at least do as I suggested in the meantime: move the var-or-fn clause > first, so that if a symbol is both it gets treated as both. If the docstring explicitly refers to the function, I see no reason why Emacs should show both the function and the var. Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 25 16:15:19 2012 Received: (at 12686) by debbugs.gnu.org; 25 Oct 2012 20:15:19 +0000 Received: from localhost ([127.0.0.1]:33715 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRTpm-0007aI-KH for submit@debbugs.gnu.org; Thu, 25 Oct 2012 16:15:19 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:32385) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRTpj-0007V6-Lc for 12686@debbugs.gnu.org; Thu, 25 Oct 2012 16:15:17 -0400 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q9PKD8UE025315 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 25 Oct 2012 20:13:09 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q9PKD89U028436 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 25 Oct 2012 20:13:08 GMT Received: from abhmt110.oracle.com (abhmt110.oracle.com [141.146.116.62]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q9PKD7Ti026725; Thu, 25 Oct 2012 15:13:07 -0500 Received: from dradamslap1 (/130.35.178.248) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 25 Oct 2012 13:13:07 -0700 From: "Drew Adams" To: "'Stefan Monnier'" References: <87wqyh7i20.fsf@mail.jurta.org> Subject: RE: bug#12686: PATCH: ambiguous help doc strings Date: Thu, 25 Oct 2012 13:13:06 -0700 Message-ID: <45567D843F264708B215C86AABDF77C3@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Ac2y5eTUr0XIbdRzR7aTp7QuQQvHrgAA0HeQ X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12686 Cc: 'Juri Linkov' , 12686@debbugs.gnu.org, "'Aaron S. Hawley'" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > > But if this is not done right away, why not at least do as > > I suggested in the meantime: move the var-or-fn clause > > first, so that if a symbol is both it gets treated as both. > > > > And that would seem to be appropriate anyway, even if you > > also do as you suggest, to accommodate other symbols that do > > not correspond to a minor-mode but which have both var and > > fun definitions. IOW, minor modes are not the only case > > to consider, even if they are an important case. > > If the docstring explicitly refers to the function, I see no > reason why Emacs should show both the function and the var. 1. What doc string ("the docstring")? The fn has a doc string and so does the var. Perhaps you are talking about a (probably minority) case where one doc string explicitly refers to the other, e.g., a fn doc string mentions the var or vice versa, using a keyword (e.g. `variable'). If so, then yes, in that case there is no _need_ to show both together, and it would be fine not to. If you have an easy way of distinguishing that case, fine, it can be excluded. If you have no easy way, do you really want to scan the string to see if it mentions the same symbol preceded by a different keyword (e.g. `variable' or `option', for a fun doc string)? 2. But even if you do not bother to exclude that case, and you show both doc strings systematically, it's not a big deal. Typically, one or the other (usually the var) doc string is quite short. For example, the minor-mode varible `icicle-mode' has only this (boilerplate) as its doc (whereas the minor-mode function `icicle-mode' has a _long_ doc string): icicle-mode is a variable defined in `icicles-mode.el'. Its value is t Original value was nil Documentation: Non-nil if Icicle mode is enabled. See the command `icicle-mode' for a description of this minor mode. Setting this variable directly does not take effect; either customize it (see the info node `Easy Customization') or call the function `icicle-mode'. You can customize this variable. And I think things are similar for most cases that are not minor modes. 3. If you really want to think about improving *Help* in a general way then I'd suggest that the problem is not (within reason) the amount of info we provide but inadequate organization of it. For `C-h m' we have tried to impose at least some organization, but essentially that amounts to only (a) a header line of links to (b) sequentially listed "sections" that are Emacs pages. Kind of like a 1990s FAQ web page with an index/TOC at the top followed by all of the FAQs. Those header links for `C-h m' are ugly (bold should be banned from Emacs defaults, because it just doesn't work well for lots of faces), but they are better than nothing. Better might be a tabbed organization of the info. For a symbol such as `icicle-mode' there could be tabs for the command and the option, for example. For `C-h m' there could be a major-mode tab and a tab for each minor mode. Or some such. And there are other ways to organize info, besides tabs. The point here really is that rather than getting excited about finding ways to exclude some information we should start by including as much as might be pertinent (fn, var, face,...) and then work on designing a better organized UI. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 25 16:46:24 2012 Received: (at 12686) by debbugs.gnu.org; 25 Oct 2012 20:46:24 +0000 Received: from localhost ([127.0.0.1]:33736 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRUJr-0000Fw-SH for submit@debbugs.gnu.org; Thu, 25 Oct 2012 16:46:24 -0400 Received: from mail-ia0-f172.google.com ([209.85.210.172]:45795) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRUJp-0000Fp-Iu for 12686@debbugs.gnu.org; Thu, 25 Oct 2012 16:46:21 -0400 Received: by mail-ia0-f172.google.com with SMTP id o25so1683354iad.3 for <12686@debbugs.gnu.org>; Thu, 25 Oct 2012 13:44:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=oj6a09TJCrbEVodpxbG6dgTiOa266yvhIMUP/OXUca0=; b=1IS1ay7OTOAQrsJ2WT+cbI5zW6y/yIJT2gbM1uE8YM6eJVMJyWBMlL6jg3jw8WzZHo Z14PN/VQcpjGfAN1Y3Ynxpls+UTCByMQx+lhFmqKKR2lxNeRvi+VYfPFHvSpP4jcvRg9 gDWzKOpjMnpoiirQa0bVbZ07toX7iu6POjLERHGojSjh3NR8KKf7r9AoESDKTif/V2Hx CqnATa/foHRClQ9ld488KkD0PT2nMs9zO0TQS/6m621pFH1H2PpQeON6kSx9ZRTyHt/C G19DCLmrrGX1XepOVI6uHHba4zqMpo8sUIBfYjrd3pxvhCxZixJ15nCvmR2HlQPjJHSw ny6Q== MIME-Version: 1.0 Received: by 10.43.106.69 with SMTP id dt5mr17889823icc.49.1351197855725; Thu, 25 Oct 2012 13:44:15 -0700 (PDT) Received: by 10.64.38.129 with HTTP; Thu, 25 Oct 2012 13:44:15 -0700 (PDT) In-Reply-To: <45567D843F264708B215C86AABDF77C3@us.oracle.com> References: <87wqyh7i20.fsf@mail.jurta.org> <45567D843F264708B215C86AABDF77C3@us.oracle.com> Date: Thu, 25 Oct 2012 16:44:15 -0400 Message-ID: Subject: Re: bug#12686: PATCH: ambiguous help doc strings From: "Aaron S. Hawley" To: Drew Adams Content-Type: text/plain; charset=ISO-8859-1 X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12686 Cc: Juri Linkov , 12686@debbugs.gnu.org, Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.1 (/) Interesting proposals, but can we apply my patch full of doc fixes, close this issue and brainstorm about Help Mode in a new bug or on emacs-devel? Sorry to be a party pooper. Thanks, aaron From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 25 17:04:09 2012 Received: (at 12686) by debbugs.gnu.org; 25 Oct 2012 21:04:09 +0000 Received: from localhost ([127.0.0.1]:33757 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRUb3-0000gU-6l for submit@debbugs.gnu.org; Thu, 25 Oct 2012 17:04:09 -0400 Received: from rcsinet15.oracle.com ([148.87.113.117]:39382) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRUb1-0000gL-8W for 12686@debbugs.gnu.org; Thu, 25 Oct 2012 17:04:07 -0400 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by rcsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q9PL20U7006239 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 25 Oct 2012 21:02:00 GMT Received: from acsmt356.oracle.com (acsmt356.oracle.com [141.146.40.156]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q9PL1xQl023272 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 25 Oct 2012 21:01:59 GMT Received: from abhmt109.oracle.com (abhmt109.oracle.com [141.146.116.61]) by acsmt356.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q9PL1wao010539; Thu, 25 Oct 2012 16:01:58 -0500 Received: from dradamslap1 (/130.35.178.248) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 25 Oct 2012 14:01:58 -0700 From: "Drew Adams" To: "'Aaron S. Hawley'" References: <87wqyh7i20.fsf@mail.jurta.org><45567D843F264708B215C86AABDF77C3@us.oracle.com> Subject: RE: bug#12686: PATCH: ambiguous help doc strings Date: Thu, 25 Oct 2012 14:01:57 -0700 Message-ID: <5EF25F55AEE540B6850C6A7A12D007C4@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Ac2y8YFQfxTtUBOIQLCXI3d6PVVYWQAAf4gw X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Spam-Score: -4.9 (----) X-Debbugs-Envelope-To: 12686 Cc: 'Juri Linkov' , 12686@debbugs.gnu.org, 'Stefan Monnier' X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.9 (----) > Interesting proposals, but can we apply my patch full of doc fixes, > close this issue and brainstorm about Help Mode in a new bug or on > emacs-devel? I agree. But I would argue for including the simple change I suggested in your patch: move the fn-or-var clause in `help-make-xrefs' to the top of the cond, so the xref link takes you to doc for both when available. > Sorry to be a party pooper. Not a very good party anyway. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 25 17:13:30 2012 Received: (at 12686) by debbugs.gnu.org; 25 Oct 2012 21:13:30 +0000 Received: from localhost ([127.0.0.1]:33771 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRUk6-0000tQ-6r for submit@debbugs.gnu.org; Thu, 25 Oct 2012 17:13:30 -0400 Received: from mail-ie0-f172.google.com ([209.85.223.172]:54802) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRUk4-0000tJ-Rk for 12686@debbugs.gnu.org; Thu, 25 Oct 2012 17:13:29 -0400 Received: by mail-ie0-f172.google.com with SMTP id 9so2960689iec.3 for <12686@debbugs.gnu.org>; Thu, 25 Oct 2012 14:11:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=hTRCJIMwDhCuCVxWjdpuBkRI+56Z3N03APGrGBZhClc=; b=tLcutMExHTzML5fM4pS8Zjip+ivIVnK7kNoTr0gyUCzBYwbqcVfVjoaBCUEoHg1pdE 48WaA6tw2RsiIju+/yGBndUtkg6PdUMG0tK6sqcSaXJFVq+yWsFFzusgK+i3d0dgn3xt 4OHpvd/3OO27sHlcs7IGSkfKpJC6zJw2Jo5ZRx3oxTgzcTnwWD4K6Yefhne7xrts8q8j zg99e3n0RJqGUdlFHZAd2zBVtqMtx/lS4Pk/C4FG7MLoitS3T4hMrkDIBYHOATMhtkrM elZEd7BbloOT3yPMwbYXtZszL2wAr6NcXHBdoTGYk6G7tdDM6QC0Dx79fetfYZZ/xdhY g/PQ== MIME-Version: 1.0 Received: by 10.50.185.230 with SMTP id ff6mr113740igc.7.1351199482980; Thu, 25 Oct 2012 14:11:22 -0700 (PDT) Received: by 10.64.38.129 with HTTP; Thu, 25 Oct 2012 14:11:22 -0700 (PDT) In-Reply-To: <5EF25F55AEE540B6850C6A7A12D007C4@us.oracle.com> References: <87wqyh7i20.fsf@mail.jurta.org> <45567D843F264708B215C86AABDF77C3@us.oracle.com> <5EF25F55AEE540B6850C6A7A12D007C4@us.oracle.com> Date: Thu, 25 Oct 2012 17:11:22 -0400 Message-ID: Subject: Re: bug#12686: PATCH: ambiguous help doc strings From: "Aaron S. Hawley" To: Drew Adams Content-Type: text/plain; charset=ISO-8859-1 X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12686 Cc: Juri Linkov , 12686@debbugs.gnu.org, Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.1 (/) > But I would argue for including the simple change I suggested in your > patch: > move the fn-or-var clause in `help-make-xrefs' to the top of the cond, so > the > xref link takes you to doc for both when available. Ah, ok. I didn't notice you had suggested that. Since that wasn't the thrust of my bug report, perhaps, make your suggestion a patch and submit as a new bug. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 25 17:15:39 2012 Received: (at 12686) by debbugs.gnu.org; 25 Oct 2012 21:15:39 +0000 Received: from localhost ([127.0.0.1]:33786 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRUmB-0001ny-Dx for submit@debbugs.gnu.org; Thu, 25 Oct 2012 17:15:39 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:21079) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRUm9-0001nq-On for 12686@debbugs.gnu.org; Thu, 25 Oct 2012 17:15:38 -0400 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by userp1040.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q9PLDU24017398 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 25 Oct 2012 21:13:31 GMT Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q9PLDTVm009741 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 25 Oct 2012 21:13:30 GMT Received: from abhmt106.oracle.com (abhmt106.oracle.com [141.146.116.58]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q9PLDTee002407; Thu, 25 Oct 2012 16:13:29 -0500 Received: from dradamslap1 (/130.35.178.248) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 25 Oct 2012 14:13:29 -0700 From: "Drew Adams" To: "'Aaron S. Hawley'" References: <87wqyh7i20.fsf@mail.jurta.org><45567D843F264708B215C86AABDF77C3@us.oracle.com><5EF25F55AEE540B6850C6A7A12D007C4@us.oracle.com> Subject: RE: bug#12686: PATCH: ambiguous help doc strings Date: Thu, 25 Oct 2012 14:13:28 -0700 Message-ID: <9E0EEF514AB74874BC7036DE4F5EED16@us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 In-Reply-To: Thread-Index: Ac2y9UutOypWiEuSQ7eKZnjk0aTXJgAACUFg X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12686 Cc: 'Juri Linkov' , 12686@debbugs.gnu.org, 'Stefan Monnier' X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > Ah, ok. I didn't notice you had suggested that. Since that wasn't > the thrust of my bug report, perhaps, make your suggestion a patch and > submit as a new bug. I consider it submitted. ;-) If Stefan or you don't want to do that now, fine by me. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 25 21:42:34 2012 Received: (at 12686) by debbugs.gnu.org; 26 Oct 2012 01:42:34 +0000 Received: from localhost ([127.0.0.1]:33923 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRYwT-0007mO-Mt for submit@debbugs.gnu.org; Thu, 25 Oct 2012 21:42:34 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:35178) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TRYwD-0007lr-0p for 12686@debbugs.gnu.org; Thu, 25 Oct 2012 21:42:25 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu0/O+LFW/2dsb2JhbABEtBGBCIIVAQEEAVYjBQsLNBIUGA0kiBwFugmQRAOjM4FYgwU X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="202889598" Received: from 206-248-177-86.dsl.teksavvy.com (HELO pastel.home) ([206.248.177.86]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 25 Oct 2012 21:40:08 -0400 Received: by pastel.home (Postfix, from userid 20848) id 63E0C59347; Thu, 25 Oct 2012 21:40:06 -0400 (EDT) From: Stefan Monnier To: "Drew Adams" Subject: Re: bug#12686: PATCH: ambiguous help doc strings Message-ID: References: <87wqyh7i20.fsf@mail.jurta.org> <45567D843F264708B215C86AABDF77C3@us.oracle.com> <5EF25F55AEE540B6850C6A7A12D007C4@us.oracle.com> Date: Thu, 25 Oct 2012 21:40:06 -0400 In-Reply-To: <5EF25F55AEE540B6850C6A7A12D007C4@us.oracle.com> (Drew Adams's message of "Thu, 25 Oct 2012 14:01:57 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 12686 Cc: 'Juri Linkov' , 12686@debbugs.gnu.org, "'Aaron S. Hawley'" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: 0.8 (/) > But I would argue for including the simple change I suggested in your patch: > move the fn-or-var clause in `help-make-xrefs' to the top of the cond, so the > xref link takes you to doc for both when available. As I explained, I think this is an incorrect change: "If the docstring explicitly refers to the function, I see no reason why Emacs should show both the function and the var". Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 11 13:19:53 2013 Received: (at 12686) by debbugs.gnu.org; 11 Jan 2013 18:19:53 +0000 Received: from localhost ([127.0.0.1]:55787 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TtjCr-0002Y0-8P for submit@debbugs.gnu.org; Fri, 11 Jan 2013 13:19:53 -0500 Received: from mail-qa0-f50.google.com ([209.85.216.50]:52988) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TtjCo-0002Xk-BK for 12686@debbugs.gnu.org; Fri, 11 Jan 2013 13:19:51 -0500 Received: by mail-qa0-f50.google.com with SMTP id cr7so44547qab.9 for <12686@debbugs.gnu.org>; Fri, 11 Jan 2013 10:19:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=mO574pHLddqe94c41YFF0oLeVpRwTZ/s1+WktN6uldU=; b=ZWiRECHAxLNDqKqvnDg9AJAne+bEXcmENgh5xV1+nc1hAMhfH73rBm7U90T02HM55i XprJGuFVoxKFoX60iv37hPDdU38ipK6+q0XRzXca8O7wWUQFr6DkgF9gIhVFETVxvqda ablZjzmlOalS0EDofRD6+62l7pcncsCq1biqYAwmvojvm2/krO//WhsN2u0FRKPG/5I7 VcgVJbolmpLVATOTfRho9i/8MtDdcgeHBh6uPL6RUsgS8yiFDhyKJLdSVhEXIAxRMgJQ dTDOMX7RtqRVgcZvHUkBbK7UL5xRyxElhYOeSqzCOGa72A6HqnOxevSS2A8rnmzYDYRo Hnqw== MIME-Version: 1.0 Received: by 10.224.146.136 with SMTP id h8mr27984108qav.97.1357928375834; Fri, 11 Jan 2013 10:19:35 -0800 (PST) Received: by 10.49.48.42 with HTTP; Fri, 11 Jan 2013 10:19:35 -0800 (PST) In-Reply-To: References: <87wqyh7i20.fsf@mail.jurta.org> <45567D843F264708B215C86AABDF77C3@us.oracle.com> <5EF25F55AEE540B6850C6A7A12D007C4@us.oracle.com> Date: Fri, 11 Jan 2013 13:19:35 -0500 Message-ID: Subject: Re: bug#12686: PATCH: ambiguous help doc strings From: "Aaron S. Hawley" To: Stefan Monnier Content-Type: multipart/mixed; boundary=089e010d8aea78d8ae04d30756c0 X-Spam-Score: 0.1 (/) X-Debbugs-Envelope-To: 12686 Cc: Juri Linkov , 12686@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.7 (/) --089e010d8aea78d8ae04d30756c0 Content-Type: text/plain; charset=ISO-8859-1 On Thu, Oct 25, 2012 at 9:40 PM, Stefan Monnier wrote: >> But I would argue for including the simple change I suggested in your patch: >> move the fn-or-var clause in `help-make-xrefs' to the top of the cond, so the >> xref link takes you to doc for both when available. > > As I explained, I think this is an incorrect change: "If the docstring > explicitly refers to the function, I see no reason why Emacs should show > both the function and the var". > > > Stefan Nobody has moved on making the documentation system improvement Stefan suggested for minor modes that was made as an addendum(?) to this bug report. I wish to emphasize that the doc fixes I submitted in the patch 3 months ago didn't deal with references to symbols for minor modes. I purposefully avoided that problem. The changes in the patch are only to symbols that have both function and variable definitions -- none are symbols for minor modes. These fixes are needed regardless if there is an enhancement to minor mode documentation as Stefan suggests. I have updated the patch against trunk and corrected some whitespace problems that were introduced in the original. It is attached. Aaron --089e010d8aea78d8ae04d30756c0 Content-Type: application/octet-stream; name="doc-xref.diff" Content-Disposition: attachment; filename="doc-xref.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hbtnb8va0 PT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvQ2hhbmdlTG9nJwotLS0gbGlzcC9DaGFuZ2VMb2cJMjAx My0wMS0xMSAxNTowNDoyNCArMDAwMAorKysgbGlzcC9DaGFuZ2VMb2cJMjAxMy0wMS0xMSAxNzo0 MjoyNCArMDAwMApAQCAtMCwwICswLDkyIEBACisyMDEzLTAxLTExICBBYXJvbiBTLiBIYXdsZXkg IDxBYXJvbi5IYXdsZXlAdnRpbmZvLmNvbT4KKworCSogY2FsYy9jYWxjLmVsIChjYWxjLWhpZ2hs aWdodC1zZWxlY3Rpb25zLXdpdGgtZmFjZXMpCisJIChjYWxjLWRpc3BhdGNoKTogRml4IGFtYmln dW91cyBkb2Mgc3RyaW5nIGNyb3NzLXJlZmVyZW5jZShzKS4KKworCSogY29taW50LmVsIChjb21p bnQtaGlzdG9yeS1pc2VhcmNoLW1lc3NhZ2UpOiBGaXggYW1iaWd1b3VzIGRvYworCSBzdHJpbmcg Y3Jvc3MtcmVmZXJlbmNlKHMpLgorCisJKiBlbWFjcy1saXNwL2VkZWJ1Zy5lbCAoZWRlYnVnLXJl YWQsIGVkZWJ1Zy1ldmFsLWRlZnVuKTogRml4CisJIGFtYmlndW91cyBkb2Mgc3RyaW5nIGNyb3Nz LXJlZmVyZW5jZShzKS4KKworCSogZmZhcC5lbCAoZmZhcC1zdHJpbmctYXQtcG9pbnQtcmVnaW9u LCBmZmFwLW5leHQpCisJKGZmYXAtc3RyaW5nLWF0LXBvaW50LCBmZmFwLXN0cmluZy1hcm91bmQp CisJKGZmYXAtY29weS1zdHJpbmctYXMta2lsbCwgZmZhcC1oaWdobGlnaHQtb3ZlcmxheSkKKwko ZmZhcC1saXRlcmFsbHkpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNl KHMpLgorCisJKiBmb250LWxvY2suZWwgKGZvbnQtbG9jay1rZXl3b3Jkcy1hbGlzdCkKKwkoZm9u dC1sb2NrLXJlbW92ZWQta2V5d29yZHMtYWxpc3QpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJpbmcK KyAgICAgICAgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisJKiBoZWxwLW1vZGUuZWwgKGhlbHAteHJl Zi1zeW1ib2wtcmVnZXhwKTogQWRkICJjYWxsIiBhcyBhIGhpbnQgZm9yCisJYSBjcm9zcy1yZWZl cmVuY2UgdG8gYSBmdW5jdGlvbi4KKworCSogaW5mby5lbCAoSW5mby1maW5kLWVtYWNzLWNvbW1h bmQtbm9kZXMpOiBGaXggYW1iaWd1b3VzIGRvYworCSBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNlKHMp LgorCisJKiBpbnRlcm5hdGlvbmFsL211bGUuZWwgKGFkZC10by1jb2Rpbmctc3lzdGVtLWxpc3Qp OiBGaXggYW1iaWd1b3VzCisJIGRvYyBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisJKiBp c2VhcmNoLmVsIChpc2VhcmNoLW1lc3NhZ2UtZnVuY3Rpb24sIGlzZWFyY2gtZmFpbC1wb3MpOiBG aXgKKwkgYW1iaWd1b3VzIGRvYyBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisJKiBtaXNl YXJjaC5lbCAobXVsdGktaXNlYXJjaC1uZXh0LWJ1ZmZlci1mdW5jdGlvbik6IEZpeCBhbWJpZ3Vv dXMKKwkgZG9jIHN0cmluZyBjcm9zcy1yZWZlcmVuY2UocykuCisKKwkqIG5ld2NvbW1lbnQuZWwg KGNvbW1lbnQtYm94KTogRml4IGFtYmlndW91cyBkb2Mgc3RyaW5nCisJIGNyb3NzLXJlZmVyZW5j ZShzKS4KKworCSogcHJpbnRpbmcuZWwgKHByLXR4dC1wcmludGVyLWFsaXN0LCBwci1wcy1wcmlu dGVyLWFsaXN0KQorCShwci1zZXR0aW5nLWRhdGFiYXNlKTogRml4IGFtYmlndW91cyBkb2Mgc3Ry aW5nCisJIGNyb3NzLXJlZmVyZW5jZShzKS4KKworCSogcHJvZ21vZGVzL2NjLWZvbnRzLmVsIChj LWZvbnQtbG9jay1rZXl3b3Jkcy0zKQorCShjKystZm9udC1sb2NrLWtleXdvcmRzLTMsIG9iamMt Zm9udC1sb2NrLWtleXdvcmRzLTMpCisJKGphdmEtZm9udC1sb2NrLWtleXdvcmRzLTMsIGlkbC1m b250LWxvY2sta2V5d29yZHMtMykKKwkocGlrZS1mb250LWxvY2sta2V5d29yZHMtMyk6IEZpeCBh bWJpZ3VvdXMgZG9jIHN0cmluZworCSBjcm9zcy1yZWZlcmVuY2UocykuCisKKwkqIHByb2dtb2Rl cy9jb21waWxlLmVsIChjb21waWxlKTogRml4IGFtYmlndW91cyBkb2Mgc3RyaW5nCisJIGNyb3Nz LXJlZmVyZW5jZShzKS4KKworCSogcHJvZ21vZGVzL2V0YWdzLmVsICh0YWdzLXRhYmxlLWZpbGVz KQorCSh0YWdzLXRhYmxlLWZpbGVzLWZ1bmN0aW9uLCB0YWdzLWluY2x1ZGVkLXRhYmxlcy1mdW5j dGlvbik6IEZpeAorCSBhbWJpZ3VvdXMgZG9jIHN0cmluZyBjcm9zcy1yZWZlcmVuY2UocykuCisK KwkqIHByb2dtb2Rlcy9nZGItbWkuZWwgKGdkYiwgZ2RiLXNldHVwLXdpbmRvd3MpCisJKGdkYi1y ZXN0b3JlLXdpbmRvd3MpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJpbmcKKwkgY3Jvc3MtcmVmZXJl bmNlKHMpLgorCisJKiBwcy1wcmludC5lbCAocHMtZXZlbi1vci1vZGQtcGFnZXMsIHBzLXNwb29s LWJ1ZmZlci13aXRoLWZhY2VzKQorCShwcy1uLXVwLWZpbGxpbmctZGF0YWJhc2UpOiBGaXggYW1i aWd1b3VzIGRvYyBzdHJpbmcKKwkgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisJKiBzZXJ2ZXIuZWwg KHNlcnZlci1idWZmZXIsIHNlcnZlci1sb2cpOiBGaXggYW1iaWd1b3VzIGRvYyBzdHJpbmcKKwkg Y3Jvc3MtcmVmZXJlbmNlKHMpLgorCisJKiBzaW1wbGUuZWwgKG5ld2xpbmUsIGRlbGV0ZS1iYWNr d2FyZC1jaGFyLCBkZWxldGUtZm9yd2FyZC1jaGFyKQorCShtaW5pYnVmZmVyLWhpc3RvcnktaXNl YXJjaC1tZXNzYWdlLCBraWxsLWxpbmUsIHRyYWNrLWVvbCkKKwkodGVtcG9yYXJ5LWdvYWwtY29s dW1uKTogRml4IGFtYmlndW91cyBkb2Mgc3RyaW5nCisJIGNyb3NzLXJlZmVyZW5jZShzKS4KKwor CSogdGV4dG1vZGVzL2ZseXNwZWxsLmVsIChmbHlzcGVsbC1tYXJrLWR1cGxpY2F0aW9ucy1mbGFn KQorCShmbHlzcGVsbC1kZWZhdWx0LWRlcGxhY2VtZW50LWNvbW1hbmRzKTogRml4IGFtYmlndW91 cyBkb2Mgc3RyaW5nCisJIGNyb3NzLXJlZmVyZW5jZShzKS4KKworCSogdGV4dG1vZGVzL2lzcGVs bC5lbCAoaXNwZWxsLWFjY2VwdC1vdXRwdXQpOiBGaXggYW1iaWd1b3VzIGRvYworCSBzdHJpbmcg Y3Jvc3MtcmVmZXJlbmNlKHMpLgorCisJKiB0ZXh0bW9kZXMvc2dtbC1tb2RlLmVsIChodG1sLXRh Zy1oZWxwKTogRml4IGFtYmlndW91cyBkb2Mgc3RyaW5nCisJIGNyb3NzLXJlZmVyZW5jZShzKS4K KworCSogdmMvY29tcGFyZS13LmVsIChjb21wYXJlLWlnbm9yZS13aGl0ZXNwYWNlKQorCShjb21w YXJlLWlnbm9yZS1jYXNlLCBjb21wYXJlLXdpbmRvd3MtZGVoaWdobGlnaHQpOiBGaXggYW1iaWd1 b3VzCisJIGRvYyBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCisJKiB2Yy9kaWZmLmVsIChk aWZmKTogRml4IGFtYmlndW91cyBkb2Mgc3RyaW5nIGNyb3NzLXJlZmVyZW5jZShzKS4KKworCSog d2hpdGVzcGFjZS5lbCAod2hpdGVzcGFjZS1wb2ludCkKKwkod2hpdGVzcGFjZS1mb250LWxvY2st cmVmb250aWZ5LCB3aGl0ZXNwYWNlLWJvYi1tYXJrZXIpCisJKHdoaXRlc3BhY2UtZW9iLW1hcmtl cik6IEZpeCBhbWJpZ3VvdXMgZG9jIHN0cmluZworCSBjcm9zcy1yZWZlcmVuY2UocykuCisKCj09 PSBtb2RpZmllZCBmaWxlICdsaXNwL2NhbGMvY2FsYy5lbCcKLS0tIGxpc3AvY2FsYy9jYWxjLmVs CTIwMTMtMDEtMDIgMTY6MTM6MDQgKzAwMDAKKysrIGxpc3AvY2FsYy9jYWxjLmVsCTIwMTMtMDEt MTEgMTc6NDI6MjQgKzAwMDAKQEAgLTQzNSw5ICs0MzUsOSBAQAogKGRlZmN1c3RvbSBjYWxjLWhp Z2hsaWdodC1zZWxlY3Rpb25zLXdpdGgtZmFjZXMKICAgbmlsCiAgICJJZiBub24tbmlsLCB1c2Ug YSBzZXBhcmF0ZSBmYWNlIHRvIGluZGljYXRlIHNlbGVjdGVkIHN1Yi1mb3JtdWxhcy4KLUlmIGBj YWxjLXNob3ctc2VsZWN0aW9ucycgaXMgbm9uLW5pbCwgdGhlbiBzZWxlY3RlZCBzdWItZm9ybXVs YXMgYXJlIHNob3duCi1ieSBkaXNwbGF5aW5nIHRoZSByZXN0IG9mIHRoZSBmb3JtdWxhIGluIGBj YWxjLW5vbnNlbGVjdGVkLWZhY2UnLgotSWYgYGNhbGMtc2hvdy1zZWxlY3Rpb25zJyBpcyBuaWws IHRoZW4gc2VsZWN0ZWQgc3ViLWZvcm11bGFzIGFyZSBzaG93bgorSWYgb3B0aW9uIGBjYWxjLXNo b3ctc2VsZWN0aW9ucycgaXMgbm9uLW5pbCwgdGhlbiBzZWxlY3RlZCBzdWItZm9ybXVsYXMgYXJl CitzaG93biBieSBkaXNwbGF5aW5nIHRoZSByZXN0IG9mIHRoZSBmb3JtdWxhIGluIGBjYWxjLW5v bnNlbGVjdGVkLWZhY2UnLgorSWYgb3B0aW9uIGBjYWxjLXNob3ctc2VsZWN0aW9ucycgaXMgbmls LCB0aGVuIHNlbGVjdGVkIHN1Yi1mb3JtdWxhcyBhcmUgc2hvd24KIGJ5IGRpc3BsYXlpbmcgdGhl IHN1Yi1mb3JtdWxhIGluIGBjYWxjLXNlbGVjdGVkLWZhY2UnLiIKICAgOnZlcnNpb24gIjI0LjEi CiAgIDpncm91cCAnY2FsYwpAQCAtMTE4Myw3ICsxMTgzLDcgQEAKIAogOzs7IyMjYXV0b2xvYWQK IChkZWZ1biBjYWxjLWRpc3BhdGNoICgmb3B0aW9uYWwgYXJnKQotICAiSW52b2tlIHRoZSBHTlUg RW1hY3MgQ2FsY3VsYXRvci4gIFNlZSBgY2FsYy1kaXNwYXRjaC1oZWxwJyBmb3IgZGV0YWlscy4i CisgICJJbnZva2UgdGhlIEdOVSBFbWFjcyBDYWxjdWxhdG9yLiAgU2VlIFxcW2NhbGMtZGlzcGF0 Y2gtaGVscF0gZm9yIGRldGFpbHMuIgogICAoaW50ZXJhY3RpdmUgIlAiKQogOyAgKHNpdC1mb3Ig ZWNoby1rZXlzdHJva2VzKQogICAoY29uZGl0aW9uLWNhc2UgZXJyICAgOyBsb29rIGZvciBvdGhl ciBrZXlzIGJvdW5kIHRvIGNhbGMtZGlzcGF0Y2gKCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL2Nv bWludC5lbCcKLS0tIGxpc3AvY29taW50LmVsCTIwMTMtMDEtMDkgMDg6MzA6MjEgKzAwMDAKKysr IGxpc3AvY29taW50LmVsCTIwMTMtMDEtMTEgMTc6NDI6MjQgKzAwMDAKQEAgLTE1MjEsNyArMTUy MSw3IEBACiBJZiB0aGVyZSBhcmUgbm8gc2VhcmNoIGVycm9ycywgdGhpcyBmdW5jdGlvbiBkaXNw bGF5cyBhbiBvdmVybGF5IHdpdGgKIHRoZSBJc2VhcmNoIHByb21wdCB3aGljaCByZXBsYWNlcyB0 aGUgb3JpZ2luYWwgY29taW50IHByb21wdC4KIE90aGVyd2lzZSwgaXQgZGlzcGxheXMgdGhlIHN0 YW5kYXJkIElzZWFyY2ggbWVzc2FnZSByZXR1cm5lZCBmcm9tCi1gaXNlYXJjaC1tZXNzYWdlJy4i Cit0aGUgZnVuY3Rpb24gYGlzZWFyY2gtbWVzc2FnZScuIgogICAoaWYgKG5vdCAoYW5kIGlzZWFy Y2gtc3VjY2VzcyAobm90IGlzZWFyY2gtZXJyb3IpKSkKICAgICAgIDs7IFVzZSBzdGFuZGFyZCBm dW5jdGlvbiBgaXNlYXJjaC1tZXNzYWdlJyB3aGVuIG5vdCBpbiBjb21pbnQgcHJvbXB0LAogICAg ICAgOzsgb3Igc2VhcmNoIGZhaWxzLCBvciBoYXMgYW4gZXJyb3IgKGxpa2UgaW5jb21wbGV0ZSBy ZWdleHApLgoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvZW1hY3MtbGlzcC9lZGVidWcuZWwnCi0t LSBsaXNwL2VtYWNzLWxpc3AvZWRlYnVnLmVsCTIwMTMtMDEtMDIgMTY6MTM6MDQgKzAwMDAKKysr IGxpc3AvZW1hY3MtbGlzcC9lZGVidWcuZWwJMjAxMy0wMS0xMSAxNzo0MjoyNSArMDAwMApAQCAt NDYxLDggKzQ2MSw4IEBACiAKIFRoaXMgdmVyc2lvbiwgZnJvbSBFZGVidWcsIG1heWJlIGluc3Ry dW1lbnRzIHRoZSBleHByZXNzaW9uLiAgQnV0IHRoZQogU1RSRUFNIG11c3QgYmUgdGhlIGN1cnJl bnQgYnVmZmVyIHRvIGRvIHNvLiAgV2hldGhlciBpdCBpbnN0cnVtZW50cyBpcwotYWxzbyBkZXBl bmRlbnQgb24gdGhlIHZhbHVlcyBvZiBgZWRlYnVnLWFsbC1kZWZzJyBhbmQKLWBlZGVidWctYWxs LWZvcm1zJy4iCithbHNvIGRlcGVuZGVudCBvbiB0aGUgdmFsdWVzIG9mIHRoZSBvcHRpb24gYGVk ZWJ1Zy1hbGwtZGVmcycgYW5kCit0aGUgb3B0aW9uIGBlZGVidWctYWxsLWZvcm1zJy4iCiAgIChv ciBzdHJlYW0gKHNldHEgc3RyZWFtIHN0YW5kYXJkLWlucHV0KSkKICAgKGlmIChlcSBzdHJlYW0g KGN1cnJlbnQtYnVmZmVyKSkKICAgICAgIChlZGVidWctcmVhZC1hbmQtbWF5YmUtd3JhcC1mb3Jt KQpAQCAtNDg0LDggKzQ4NCw4IEBACiAKIFdpdGggYSBwcmVmaXggYXJndW1lbnQsIGluc3RydW1l bnQgdGhlIGNvZGUgZm9yIEVkZWJ1Zy4KIAotU2V0dGluZyBgZWRlYnVnLWFsbC1kZWZzJyB0byBh IG5vbi1uaWwgdmFsdWUgcmV2ZXJzZXMgdGhlIG1lYW5pbmcgb2YKLXRoZSBwcmVmaXggYXJndW1l bnQuICBDb2RlIGlzIHRoZW4gaW5zdHJ1bWVudGVkIHdoZW4gdGhpcyBmdW5jdGlvbiBpcworU2V0 dGluZyBvcHRpb24gYGVkZWJ1Zy1hbGwtZGVmcycgdG8gYSBub24tbmlsIHZhbHVlIHJldmVyc2Vz IHRoZSBtZWFuaW5nCitvZiB0aGUgcHJlZml4IGFyZ3VtZW50LiAgQ29kZSBpcyB0aGVuIGluc3Ry dW1lbnRlZCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMKIGludm9rZWQgd2l0aG91dCBhIHByZWZpeCBh cmd1bWVudAogCiBJZiBhY3Rpbmcgb24gYSBgZGVmdW4nIGZvciBGVU5DVElPTiwgYW5kIHRoZSBm dW5jdGlvbiB3YXMgaW5zdHJ1bWVudGVkLAoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvZmZhcC5l bCcKLS0tIGxpc3AvZmZhcC5lbAkyMDEzLTAxLTAyIDE2OjEzOjA0ICswMDAwCisrKyBsaXNwL2Zm YXAuZWwJMjAxMy0wMS0xMSAxNzo0MjoyNSArMDAwMApAQCAtMzIxLDcgKzMyMSw3IEBACiAgICJM YXN0IHZhbHVlIHJldHVybmVkIGJ5IGBmZmFwLW5leHQtZ3Vlc3MnLiIpCiAKIChkZWZ2YXIgZmZh cC1zdHJpbmctYXQtcG9pbnQtcmVnaW9uICcoMSAxKQotICAiTGlzdCAoQkVHIEVORCksIGxhc3Qg cmVnaW9uIHJldHVybmVkIGJ5IGBmZmFwLXN0cmluZy1hdC1wb2ludCcuIikKKyAgIkxpc3QgKEJF RyBFTkQpLCBsYXN0IHJlZ2lvbiByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24gYGZmYXAtc3RyaW5n LWF0LXBvaW50Jy4iKQogCiAoZGVmdW4gZmZhcC1uZXh0LWd1ZXNzICgmb3B0aW9uYWwgYmFjayBs aW0pCiAgICJNb3ZlIHBvaW50IHRvIG5leHQgZmlsZSBvciBVUkwsIGFuZCByZXR1cm4gaXQgYXMg YSBzdHJpbmcuCkBAIC0zNDYsNyArMzQ2LDcgQEAKIE9wdGlvbmFsIGFyZ3VtZW50IFdSQVAgc2F5 cyB0byB0cnkgd3JhcHBpbmcgYXJvdW5kIGlmIG5lY2Vzc2FyeS4KIEludGVyYWN0aXZlbHk6IHVz ZSBhIHNpbmdsZSBwcmVmaXggdG8gc2VhcmNoIGJhY2t3YXJkcywKIGRvdWJsZSBwcmVmaXggdG8g d3JhcCBmb3J3YXJkLCB0cmlwbGUgdG8gd3JhcCBiYWNrd2FyZHMuCi1BY3R1YWwgc2VhcmNoIGlz IGRvbmUgYnkgYGZmYXAtbmV4dC1ndWVzcycuIgorQWN0dWFsIHNlYXJjaCBpcyBkb25lIGJ5IHRo ZSBmdW5jdGlvbiBgZmZhcC1uZXh0LWd1ZXNzJy4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGNkciAo YXNzcSAocHJlZml4LW51bWVyaWMtdmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKQogCSAgICAgICco KDEpICg0IHQpICgxNiBuaWwgdCkgKDY0IHQgdCkpKSkpCkBAIC0xMDI4LDE0ICsxMDI4LDE0IEBA CiAgICJBbGlzdCBvZiBcKE1PREUgQ0hBUlMgQkVHIEVORFwpLCB3aGVyZSBNT0RFIGlzIGEgc3lt Ym9sLAogcG9zc2libHkgYSBtYWpvci1tb2RlIG5hbWUsIG9yIG9uZSBvZiB0aGUgc3ltYm9sCiBg ZmlsZScsIGB1cmwnLCBgbWFjaGluZScsIGFuZCBgbm9jb2xvbicuCi1gZmZhcC1zdHJpbmctYXQt cG9pbnQnIHVzZXMgdGhlIGRhdGEgZmllbGRzIGFzIGZvbGxvd3M6CitGdW5jdGlvbiBgZmZhcC1z dHJpbmctYXQtcG9pbnQnIHVzZXMgdGhlIGRhdGEgZmllbGRzIGFzIGZvbGxvd3M6CiAxLiBmaW5k IGEgbWF4aW1hbCBzdHJpbmcgb2YgQ0hBUlMgYXJvdW5kIHBvaW50LAogMi4gc3RyaXAgQkVHIGNo YXJzIGJlZm9yZSBwb2ludCBmcm9tIHRoZSBiZWdpbm5pbmcsCiAzLiBTdHJpcCBFTkQgY2hhcnMg YWZ0ZXIgcG9pbnQgZnJvbSB0aGUgZW5kLiIpCiAKIChkZWZ2YXIgZmZhcC1zdHJpbmctYXQtcG9p bnQgbmlsCiAgIDs7IEFkZGVkIGF0IHN1Z2dlc3Rpb24gb2YgUkhPR0VFIChmb3IgZmYtcGF0aHMp LCA3LzI0Lzk1LgotICAiTGFzdCBzdHJpbmcgcmV0dXJuZWQgYnkgYGZmYXAtc3RyaW5nLWF0LXBv aW50Jy4iKQorICAiTGFzdCBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uIGBmZmFwLXN0 cmluZy1hdC1wb2ludCcuIikKIAogKGRlZnVuIGZmYXAtc3RyaW5nLWF0LXBvaW50ICgmb3B0aW9u YWwgbW9kZSkKICAgIlJldHVybiBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGZyb20gYXJvdW5kIHBv aW50LgpAQCAtMTA0Myw3ICsxMDQzLDggQEAKIHN5bnRheCBwYXJhbWV0ZXJzIGluIGBmZmFwLXN0 cmluZy1hdC1wb2ludC1tb2RlLWFsaXN0Jy4KIElmIE1PREUgaXMgbm90IGZvdW5kLCB3ZSB1c2Ug YGZpbGUnIGluc3RlYWQgb2YgTU9ERS4KIElmIHRoZSByZWdpb24gaXMgYWN0aXZlLCByZXR1cm4g YSBzdHJpbmcgZnJvbSB0aGUgcmVnaW9uLgotU2V0cyBgZmZhcC1zdHJpbmctYXQtcG9pbnQnIGFu ZCBgZmZhcC1zdHJpbmctYXQtcG9pbnQtcmVnaW9uJy4iCitTZXRzIHRoZSB2YXJpYWJsZSBgZmZh cC1zdHJpbmctYXQtcG9pbnQnIGFuZCB0aGUgdmFyaWFibGUKK2BmZmFwLXN0cmluZy1hdC1wb2lu dC1yZWdpb24nLiIKICAgKGxldCogKChhcmdzCiAJICAoY2RyCiAJICAgKG9yIChhc3NxIChvciBt b2RlIG1ham9yLW1vZGUpIGZmYXAtc3RyaW5nLWF0LXBvaW50LW1vZGUtYWxpc3QpCkBAIC0xMDY4 LDcgKzEwNjksOCBAQAogCiAoZGVmdW4gZmZhcC1zdHJpbmctYXJvdW5kICgpCiAgIDs7IFNvbWV0 aW1lcyB1c2VmdWwgdG8gZGVjaWRlIGhvdyB0byB0cmVhdCBhIHN0cmluZy4KLSAgIlJldHVybiBz dHJpbmcgb2YgdHdvIGNoYXJzIGFyb3VuZCBsYXN0IGBmZmFwLXN0cmluZy1hdC1wb2ludCcuCisg ICJSZXR1cm4gc3RyaW5nIG9mIHR3byBjaGFycyBhcm91bmQgbGFzdCByZXN1bHQgb2YgZnVuY3Rp b24KK2BmZmFwLXN0cmluZy1hdC1wb2ludCcuCiBBc3N1bWVzIHRoZSBidWZmZXIgaGFzIG5vdCBj aGFuZ2VkLiIKICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgKGZvcm1hdCAiJWMlYyIKQEAgLTEwODIs NyArMTA4NCw3IEBACiAKIChkZWZ1biBmZmFwLWNvcHktc3RyaW5nLWFzLWtpbGwgKCZvcHRpb25h bCBtb2RlKQogICA7OyBSZXF1ZXN0ZWQgYnkgTUNPT0suICBVc2VmdWw/Ci0gICJDYWxsIGBmZmFw LXN0cmluZy1hdC1wb2ludCcsIGFuZCBjb3B5IHJlc3VsdCB0byBga2lsbC1yaW5nJy4iCisgICJD YWxsIGZ1bmN0aW9uIGBmZmFwLXN0cmluZy1hdC1wb2ludCcsIGFuZCBjb3B5IHJlc3VsdCB0byBg a2lsbC1yaW5nJy4iCiAgIChpbnRlcmFjdGl2ZSkKICAgKGxldCAoKHN0ciAoZmZhcC1zdHJpbmct YXQtcG9pbnQgbW9kZSkpKQogICAgIChpZiAoZXF1YWwgIiIgc3RyKQpAQCAtMTM2NCw3ICsxMzY2 LDcgQEAKICAgOnZlcnNpb24gIjIyLjEiKQogCiAoZGVmdmFyIGZmYXAtaGlnaGxpZ2h0LW92ZXJs YXkgbmlsCi0gICJPdmVybGF5IHVzZWQgYnkgYGZmYXAtaGlnaGxpZ2h0Jy4iKQorICAiT3Zlcmxh eSB1c2VkIGJ5IGZ1bmN0aW9uIGBmZmFwLWhpZ2hsaWdodCcuIikKIAogKGRlZnVuIGZmYXAtaGln aGxpZ2h0ICgmb3B0aW9uYWwgcmVtb3ZlKQogICAiSWYgYGZmYXAtaGlnaGxpZ2h0JyBpcyBzZXQs IGhpZ2hsaWdodCB0aGUgZ3Vlc3MgaW4gdGhpcyBidWZmZXIuCkBAIC0xNzM0LDcgKzE3MzYsNyBA QAogICAgIChjYWxsLWludGVyYWN0aXZlbHkgJ2ZmYXApKSkKIAogKGRlZnVuIGZmYXAtbGl0ZXJh bGx5ICgpCi0gICJMaWtlIGBmZmFwJyBhbmQgYGZpbmQtZmlsZS1saXRlcmFsbHknLgorICAiTGlr ZSBgZmZhcCcgYW5kIGNvbW1hbmQgYGZpbmQtZmlsZS1saXRlcmFsbHknLgogT25seSBpbnRlbmRl ZCBmb3IgaW50ZXJhY3RpdmUgdXNlLiIKICAgKGludGVyYWN0aXZlKQogICAobGV0ICgoZmZhcC1m aWxlLWZpbmRlciAnZmluZC1maWxlLWxpdGVyYWxseSkpCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGlz cC9mb250LWxvY2suZWwnCi0tLSBsaXNwL2ZvbnQtbG9jay5lbAkyMDEzLTAxLTAxIDA5OjExOjA1 ICswMDAwCisrKyBsaXNwL2ZvbnQtbG9jay5lbAkyMDEzLTAxLTExIDE3OjQyOjI1ICswMDAwCkBA IC00NjksNyArNDY5LDcgQEAKICAgIkFsaXN0IG9mIGFkZGl0aW9uYWwgYGZvbnQtbG9jay1rZXl3 b3JkcycgZWxlbWVudHMgZm9yIG1ham9yIG1vZGVzLgogCiBFYWNoIGVsZW1lbnQgaGFzIHRoZSBm b3JtIChNT0RFIEtFWVdPUkRTIC4gSE9XKS4KLWBmb250LWxvY2stc2V0LWRlZmF1bHRzJyBhZGRz IHRoZSBlbGVtZW50cyBpbiB0aGUgbGlzdCBLRVlXT1JEUyB0bworRnVuY3Rpb24gYGZvbnQtbG9j ay1zZXQtZGVmYXVsdHMnIGFkZHMgdGhlIGVsZW1lbnRzIGluIHRoZSBsaXN0IEtFWVdPUkRTIHRv CiBgZm9udC1sb2NrLWtleXdvcmRzJyB3aGVuIEZvbnQgTG9jayBpcyB0dXJuZWQgb24gaW4gbWFq b3IgbW9kZSBNT0RFLgogCiBJZiBIT1cgaXMgbmlsLCBLRVlXT1JEUyBhcmUgYWRkZWQgYXQgdGhl IGJlZ2lubmluZyBvZgpAQCAtNDg0LDcgKzQ4NCw3IEBACiAoZGVmdmFyIGZvbnQtbG9jay1yZW1v dmVkLWtleXdvcmRzLWFsaXN0IG5pbAogICAiQWxpc3Qgb2YgYGZvbnQtbG9jay1rZXl3b3Jkcycg ZWxlbWVudHMgdG8gYmUgcmVtb3ZlZCBmb3IgbWFqb3IgbW9kZXMuCiAKLUVhY2ggZWxlbWVudCBo YXMgdGhlIGZvcm0gKE1PREUgLiBLRVlXT1JEUykuICBgZm9udC1sb2NrLXNldC1kZWZhdWx0cycK K0VhY2ggZWxlbWVudCBoYXMgdGhlIGZvcm0gKE1PREUgLiBLRVlXT1JEUykuICBGdW5jdGlvbiBg Zm9udC1sb2NrLXNldC1kZWZhdWx0cycKIHJlbW92ZXMgdGhlIGVsZW1lbnRzIGluIHRoZSBsaXN0 IEtFWVdPUkRTIGZyb20gYGZvbnQtbG9jay1rZXl3b3JkcycKIHdoZW4gRm9udCBMb2NrIGlzIHR1 cm5lZCBvbiBpbiBtYWpvciBtb2RlIE1PREUuCiAKCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL2du dXMvQ2hhbmdlTG9nJwotLS0gbGlzcC9nbnVzL0NoYW5nZUxvZwkyMDEzLTAxLTExIDEwOjQwOjU0 ICswMDAwCisrKyBsaXNwL2dudXMvQ2hhbmdlTG9nCTIwMTMtMDEtMTEgMTc6NDI6MjUgKzAwMDAK QEAgLTAsMCArMCw4IEBACisyMDEzLTAxLTExICBBYXJvbiBTLiBIYXdsZXkgIDxBYXJvbi5IYXds ZXlAdnRpbmZvLmNvbT4KKworCSogZ251cy1zdGFydC5lbCAoZ251cy1jaGVjay1uZXctbmV3c2dy b3Vwcyk6IEZpeCBhbWJpZ3VvdXMgZG9jIHN0cmluZworCSBjcm9zcy1yZWZlcmVuY2UocykuCisK KwkqIGdudXMtc3VtLmVsIChnbnVzLXN1bW1hcnktbmV3c2dyb3VwLXByZWZpeCk6IEZpeCBhbWJp Z3VvdXMgZG9jIHN0cmluZworCSBjcm9zcy1yZWZlcmVuY2UocykuCisKCj09PSBtb2RpZmllZCBm aWxlICdsaXNwL2dudXMvZ251cy1zdGFydC5lbCcKLS0tIGxpc3AvZ251cy9nbnVzLXN0YXJ0LmVs CTIwMTMtMDEtMDIgMTY6MTM6MDQgKzAwMDAKKysrIGxpc3AvZ251cy9nbnVzLXN0YXJ0LmVsCTIw MTMtMDEtMTEgMTc6NDI6MjUgKzAwMDAKQEAgLTExMCw3ICsxMTAsNyBAQAogZ3JvdXBzIHNpbmNl IHRoZSBsYXN0IHRpbWUgaXQgY2hlY2tlZDoKICAgMS4gVGhpcyB2YXJpYWJsZSBpcyBgYXNrLXNl cnZlcicuCiAgIDIuIFRoaXMgdmFyaWFibGUgaXMgYSBsaXN0IG9mIHNlbGVjdCBtZXRob2RzIChz ZWUgYmVsb3cpLgotICAzLiBgZ251cy1yZWFkLWFjdGl2ZS1maWxlJyBpcyBuaWwgb3IgYHNvbWUn LgorICAzLiBPcHRpb24gYGdudXMtcmVhZC1hY3RpdmUtZmlsZScgaXMgbmlsIG9yIGBzb21lJy4K ICAgNC4gQSBwcmVmaXggYXJndW1lbnQgaXMgZ2l2ZW4gdG8gYGdudXMtZmluZC1uZXctbmV3c2dy b3VwcycgaW50ZXJhY3RpdmVseS4KIAogVGh1cywgaWYgdGhpcyB2YXJpYWJsZSBpcyBgYXNrLXNl cnZlcicgb3IgYSBsaXN0IG9mIHNlbGVjdCBtZXRob2RzIG9yCgo9PT0gbW9kaWZpZWQgZmlsZSAn bGlzcC9nbnVzL2dudXMtc3VtLmVsJwotLS0gbGlzcC9nbnVzL2dudXMtc3VtLmVsCTIwMTMtMDEt MDIgMTY6MTM6MDQgKzAwMDAKKysrIGxpc3AvZ251cy9nbnVzLXN1bS5lbAkyMDEzLTAxLTExIDE3 OjQyOjI1ICswMDAwCkBAIC0xMTY3LDcgKzExNjcsNyBAQAogCiAoZGVmY3VzdG9tIGdudXMtc3Vt bWFyeS1uZXdzZ3JvdXAtcHJlZml4ICI9PiAiCiAgICIqU3RyaW5nIHByZWZpeGVkIHRvIHRoZSBO ZXdzZ3JvdXAgZmllbGQgaW4gdGhlIHN1bW1hcnkKLWxpbmUgd2hlbiB1c2luZyBgZ251cy1pZ25v cmVkLWZyb20tYWRkcmVzc2VzJy4iCitsaW5lIHdoZW4gdXNpbmcgdGhlIG9wdGlvbiBgZ251cy1p Z25vcmVkLWZyb20tYWRkcmVzc2VzJy4iCiAgIDp2ZXJzaW9uICIyMi4xIgogICA6Z3JvdXAgJ2du dXMtc3VtbWFyeQogICA6dHlwZSAnc3RyaW5nKQoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvaGVs cC1tb2RlLmVsJwotLS0gbGlzcC9oZWxwLW1vZGUuZWwJMjAxMy0wMS0wMiAxNjoxMzowNCArMDAw MAorKysgbGlzcC9oZWxwLW1vZGUuZWwJMjAxMy0wMS0xMSAxNzo0MjoyNSArMDAwMApAQCAtMzIy LDcgKzMyMiw3IEBACiAKIChkZWZjb25zdCBoZWxwLXhyZWYtc3ltYm9sLXJlZ2V4cAogICAocHVy ZWNvcHkgKGNvbmNhdCAiXFwoXFw8XFwoXFwodmFyaWFibGVcXHxvcHRpb25cXClcXHwiICA7IExp bmsgdG8gdmFyCi0gCQkgICAgIlxcKGZ1bmN0aW9uXFx8Y29tbWFuZFxcKVxcfCIgICAgICAgICAg OyBMaW5rIHRvIGZ1bmN0aW9uCisgCQkgICAgIlxcKGZ1bmN0aW9uXFx8Y29tbWFuZFxcfGNhbGxc XClcXHwiICAgOyBMaW5rIHRvIGZ1bmN0aW9uCiAgCQkgICAgIlxcKGZhY2VcXClcXHwiCQkJICAg OyBMaW5rIHRvIGZhY2UKICAJCSAgICAiXFwoc3ltYm9sXFx8cHJvZ3JhbVxcfHByb3BlcnR5XFwp XFx8IiA7IERvbid0IGxpbmsKIAkJICAgICJcXChzb3VyY2UgXFwoPzpjb2RlIFxcKT9cXCg/Om9m XFx8Zm9yXFwpXFwpXFwpIgoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvaW5mby5lbCcKLS0tIGxp c3AvaW5mby5lbAkyMDEzLTAxLTA4IDAwOjI4OjU1ICswMDAwCisrKyBsaXNwL2luZm8uZWwJMjAx My0wMS0xMSAxNzo0MjoyNiArMDAwMApAQCAtNDMxMyw3ICs0MzEzLDcgQEAKIFRoZSBgaW5mby1m aWxlJyBwcm9wZXJ0eSBvZiBDT01NQU5EIHNheXMgd2hpY2ggSW5mbyBtYW51YWwgdG8gc2VhcmNo LgogSWYgQ09NTUFORCBoYXMgbm8gcHJvcGVydHksIHRoZSB2YXJpYWJsZSBgSW5mby1maWxlLWxp c3QtZm9yLWVtYWNzJwogZGVmaW5lcyBoZXVyaXN0aWNzIGZvciB3aGljaCBJbmZvIG1hbnVhbCB0 byB0cnkuCi1UaGUgbG9jYXRpb25zIGFyZSBvZiB0aGUgZm9ybWF0IHVzZWQgaW4gYEluZm8taGlz dG9yeScsIGkuZS4KK1RoZSBsb2NhdGlvbnMgYXJlIG9mIHRoZSBmb3JtYXQgdXNlZCBpbiB0aGUg dmFyaWFibGUgYEluZm8taGlzdG9yeScsIGkuZS4KIFwoRklMRU5BTUUgTk9ERU5BTUUgQlVGRkVS UE9TKSwgd2hlcmUgQlVGRkVSUE9TIGlzIHRoZSBsaW5lIG51bWJlcgogaW4gdGhlIGZpcnN0IGVs ZW1lbnQgb2YgdGhlIHJldHVybmVkIGxpc3QgKHdoaWNoIGlzIHRyZWF0ZWQgc3BlY2lhbGx5IGlu CiBgSW5mby1nb3RvLWVtYWNzLWNvbW1hbmQtbm9kZScpLCBhbmQgMCBmb3IgdGhlIHJlc3QgZWxl bWVudHMgb2YgYSBsaXN0LiIKCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL2ludGVybmF0aW9uYWwv bXVsZS5lbCcKLS0tIGxpc3AvaW50ZXJuYXRpb25hbC9tdWxlLmVsCTIwMTMtMDEtMDEgMDk6MTE6 MDUgKzAwMDAKKysrIGxpc3AvaW50ZXJuYXRpb25hbC9tdWxlLmVsCTIwMTMtMDEtMTEgMTc6NDI6 MjYgKzAwMDAKQEAgLTg5MSw3ICs4OTEsNyBAQAogCQkgKGFuZCAodmVjdG9ycCBlb2wtdHlwZS0x KSAodmVjdG9ycCBlb2wtdHlwZS0yKSkpKSkpKQogCiAoZGVmdW4gYWRkLXRvLWNvZGluZy1zeXN0 ZW0tbGlzdCAoY29kaW5nLXN5c3RlbSkKLSAgIkFkZCBDT0RJTkctU1lTVEVNIHRvIGBjb2Rpbmct c3lzdGVtLWxpc3QnIHdoaWxlIGtlZXBpbmcgaXQgc29ydGVkLiIKKyAgIkFkZCBDT0RJTkctU1lT VEVNIHRvIHZhcmlhYmxlIGBjb2Rpbmctc3lzdGVtLWxpc3QnIHdoaWxlIGtlZXBpbmcgaXQgc29y dGVkLiIKICAgKGlmIChvciAobnVsbCBjb2Rpbmctc3lzdGVtLWxpc3QpCiAJICAoY29kaW5nLXN5 c3RlbS1sZXNzcCBjb2Rpbmctc3lzdGVtIChjYXIgY29kaW5nLXN5c3RlbS1saXN0KSkpCiAgICAg ICAoc2V0cSBjb2Rpbmctc3lzdGVtLWxpc3QgKGNvbnMgY29kaW5nLXN5c3RlbSBjb2Rpbmctc3lz dGVtLWxpc3QpKQoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvaXNlYXJjaC5lbCcKLS0tIGxpc3Av aXNlYXJjaC5lbAkyMDEzLTAxLTAyIDE2OjEzOjA0ICswMDAwCisrKyBsaXNwL2lzZWFyY2guZWwJ MjAxMy0wMS0xMSAxNzo0MjoyNiArMDAwMApAQCAtMTc2LDcgKzE3Niw3IEBACiAKIChkZWZ2YXIg aXNlYXJjaC1tZXNzYWdlLWZ1bmN0aW9uIG5pbAogICAiRnVuY3Rpb24gdG8gY2FsbCB0byBkaXNw bGF5IHRoZSBzZWFyY2ggcHJvbXB0LgotSWYgbmlsLCB1c2UgYGlzZWFyY2gtbWVzc2FnZScuIikK K0lmIG5pbCwgdXNlIGZ1bmN0aW9uIGBpc2VhcmNoLW1lc3NhZ2UnLiIpCiAKIChkZWZ2YXIgaXNl YXJjaC13cmFwLWZ1bmN0aW9uIG5pbAogICAiRnVuY3Rpb24gdG8gY2FsbCB0byB3cmFwIHRoZSBz ZWFyY2ggd2hlbiBzZWFyY2ggaXMgZmFpbGVkLgpAQCAtMTEwMSw3ICsxMTAxLDcgQEAKIAogKGRl ZnVuIGlzZWFyY2gtZmFpbC1wb3MgKCZvcHRpb25hbCBtc2cpCiAgICJSZXR1cm4gcG9zaXRpb24g b2YgZmlyc3QgbWlzbWF0Y2ggaW4gc2VhcmNoIHN0cmluZywgb3IgbmlsIGlmIG5vbmUuCi1JZiBN U0cgaXMgbm9uLW5pbCwgdXNlIGBpc2VhcmNoLW1lc3NhZ2UnLCBvdGhlcndpc2UgYGlzZWFyY2gt c3RyaW5nJy4iCitJZiBNU0cgaXMgbm9uLW5pbCwgdXNlIHZhcmlhYmxlIGBpc2VhcmNoLW1lc3Nh Z2UnLCBvdGhlcndpc2UgYGlzZWFyY2gtc3RyaW5nJy4iCiAgIChsZXQgKChjbWRzIGlzZWFyY2gt Y21kcykKIAkoY3Vyci1tc2cgKGlmIG1zZyBpc2VhcmNoLW1lc3NhZ2UgaXNlYXJjaC1zdHJpbmcp KQogCXN1Y2MtbXNnKQoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvbWlzZWFyY2guZWwnCi0tLSBs aXNwL21pc2VhcmNoLmVsCTIwMTMtMDEtMDEgMDk6MTE6MDUgKzAwMDAKKysrIGxpc3AvbWlzZWFy Y2guZWwJMjAxMy0wMS0xMSAxNzo0MjoyNiArMDAwMApAQCAtNzMsNyArNzMsNyBAQAogVGhlIGZp cnN0IGFyZ3VtZW50IG9mIHRoaXMgZnVuY3Rpb24gaXMgdGhlIGN1cnJlbnQgYnVmZmVyIHdoZXJl IHRoZQogc2VhcmNoIGlzIGN1cnJlbnRseSBzZWFyY2hpbmcuICBJdCBkZWZpbmVzIHRoZSBiYXNl IGJ1ZmZlciByZWxhdGl2ZSB0bwogd2hpY2ggdGhpcyBmdW5jdGlvbiBzaG91bGQgZmluZCB0aGUg bmV4dCBidWZmZXIuICBXaGVuIHRoZSBpc2VhcmNoCi1kaXJlY3Rpb24gaXMgYmFja3dhcmQgKHdo ZW4gYGlzZWFyY2gtZm9yd2FyZCcgaXMgbmlsKSwgdGhpcyBmdW5jdGlvbgorZGlyZWN0aW9uIGlz IGJhY2t3YXJkICh3aGVuIG9wdGlvbiBgaXNlYXJjaC1mb3J3YXJkJyBpcyBuaWwpLCB0aGlzIGZ1 bmN0aW9uCiBzaG91bGQgcmV0dXJuIHRoZSBwcmV2aW91cyBidWZmZXIgdG8gc2VhcmNoLgogCiBJ ZiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoaXMgZnVuY3Rpb24gV1JBUCBpcyBub24tbmlsLCB0 aGVuIGl0Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbGlzcC9uZXdjb21tZW50LmVsJwotLS0gbGlzcC9u ZXdjb21tZW50LmVsCTIwMTMtMDEtMDEgMDk6MTE6MDUgKzAwMDAKKysrIGxpc3AvbmV3Y29tbWVu dC5lbAkyMDEzLTAxLTExIDE3OjQyOjI2ICswMDAwCkBAIC0xMjA2LDcgKzEyMDYsOCBAQAogKGRl ZnVuIGNvbW1lbnQtYm94IChiZWcgZW5kICZvcHRpb25hbCBhcmcpCiAgICJDb21tZW50IG91dCB0 aGUgQkVHIC4uIEVORCByZWdpb24sIHB1dHRpbmcgaXQgaW5zaWRlIGEgYm94LgogVGhlIG51bWVy aWMgcHJlZml4IEFSRyBzcGVjaWZpZXMgaG93IG1hbnkgY2hhcmFjdGVycyB0byBhZGQgdG8gYmVn aW4tIGFuZAotZW5kLSBjb21tZW50IG1hcmtlcnMgYWRkaXRpb25hbGx5IHRvIHdoYXQgYGNvbW1l bnQtYWRkJyBhbHJlYWR5IHNwZWNpZmllcy4iCitlbmQtIGNvbW1lbnQgbWFya2VycyBhZGRpdGlv bmFsbHkgdG8gd2hhdCB2YXJpYWJsZSBgY29tbWVudC1hZGQnIGFscmVhZHkKK3NwZWNpZmllcy4i CiAgIChpbnRlcmFjdGl2ZSAiKnJcbnAiKQogICAoY29tbWVudC1ub3JtYWxpemUtdmFycykKICAg KGxldCAoKGNvbW1lbnQtc3R5bGUgKGlmIChjYWRyIChhc3NvYyBjb21tZW50LXN0eWxlIGNvbW1l bnQtc3R5bGVzKSkKCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL3ByaW50aW5nLmVsJwotLS0gbGlz cC9wcmludGluZy5lbAkyMDEzLTAxLTAyIDE2OjEzOjA0ICswMDAwCisrKyBsaXNwL3ByaW50aW5n LmVsCTIwMTMtMDEtMTEgMTc6NDI6MjYgKzAwMDAKQEAgLTE4MDAsNyArMTgwMCw3IEBACiBXaGVy ZToKIAogU1lNQk9MCQlJdCdzIGEgc3ltYm9sIHRvIGlkZW50aWZ5IGEgdGV4dCBwcmludGVyLiAg SXQncyBmb3IKLQkJYHByLXR4dC1uYW1lJyB2YXJpYWJsZSBzZXR0aW5nIGFuZCBmb3IgbWVudSBz ZWxlY3Rpb24uCisJCXNldHRpbmcgb3B0aW9uIGBwci10eHQtbmFtZScgYW5kIGZvciBtZW51IHNl bGVjdGlvbi4KIAkJRXhhbXBsZXM6CiAJCQkncHJ0XzA2YQogCQkJJ215X3ByaW50ZXIKQEAgLTE5 NTEsNyArMTk1MSw3IEBACiBXaGVyZToKIAogU1lNQk9MCQlJdCdzIGEgc3ltYm9sIHRvIGlkZW50 aWZ5IGEgUG9zdFNjcmlwdCBwcmludGVyLiAgSXQncyBmb3IKLQkJYHByLXBzLW5hbWUnIHZhcmlh YmxlIHNldHRpbmcgYW5kIGZvciBtZW51IHNlbGVjdGlvbi4KKwkJc2V0dGluZyBvcHRpb24gYHBy LXBzLW5hbWUnIGFuZCBmb3IgbWVudSBzZWxlY3Rpb24uCiAJCUV4YW1wbGVzOgogCQkJJ3BydF8w NmEKIAkJCSdteV9wcmludGVyCkBAIC0yOTM1LDkgKzI5MzUsOSBAQAogCiAJCVRoZSBleGFtcGxl IGFib3ZlIGhhcyB0d28gc2V0dGluZyBncm91cHM6IG5vLWR1cGxleCBhbmQKIAkJbm8tZHVwbGV4 LWFuZC1sYW5kc2NhcGUuICBXaGVuIHNldHRpbmcgbm8tZHVwbGV4IGlzIGFjdGl2YXRlZAotCQl0 aHJvdWdoIGBpbmhlcml0cy1mcm9tOicgKHNlZSBgcHItcHMtdXRpbGl0eScsIGBwci1tb2RlLWFs aXN0JwotCQlhbmQgYHByLXBzLXByaW50ZXItYWxpc3QnKSwgdGhlIHZhcmlhYmxlcyBwci1maWxl LWR1cGxleCBhbmQKLQkJcHItZmlsZS10dW1ibGUgYXJlIGJvdGggc2V0IHRvIG5pbC4KKwkJdGhy b3VnaCBgaW5oZXJpdHMtZnJvbTonIChzZWUgb3B0aW9uIGBwci1wcy11dGlsaXR5JywKKwkJYHBy LW1vZGUtYWxpc3QnIGFuZCBgcHItcHMtcHJpbnRlci1hbGlzdCcpLCB0aGUgdmFyaWFibGVzCisJ CXByLWZpbGUtZHVwbGV4IGFuZCBwci1maWxlLXR1bWJsZSBhcmUgYm90aCBzZXQgdG8gbmlsLgog CiAJCU5vdyB3aGVuIHNldHRpbmcgbm8tZHVwbGV4LWFuZC1sYW5kc2NhcGUgaXMgYWN0aXZhdGVk IHRocm91Z2gKIAkJYGluaGVyaXRzLWZyb206JywgdGhlIHZhcmlhYmxlIHByLWZpbGUtbGFuZHNj YXBlIGlzIHNldCB0byBuaWwKCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL3Byb2dtb2Rlcy9jYy1m b250cy5lbCcKLS0tIGxpc3AvcHJvZ21vZGVzL2NjLWZvbnRzLmVsCTIwMTMtMDEtMDEgMDk6MTE6 MDUgKzAwMDAKKysrIGxpc3AvcHJvZ21vZGVzL2NjLWZvbnRzLmVsCTIwMTMtMDEtMTEgMTc6NDI6 MjYgKzAwMDAKQEAgLTIwNDksNyArMjA0OSw3IEBACiAKIChkZWZjb25zdCBjLWZvbnQtbG9jay1r ZXl3b3Jkcy0zIChjLWxhbmctY29uc3QgYy1tYXRjaGVycy0zIGMpCiAgICJBY2N1cmF0ZSBub3Jt YWwgZm9udCBsb2NraW5nIGZvciBDIG1vZGUuCi1MaWtlIGBjLWZvbnQtbG9jay1rZXl3b3Jkcy0y JyBidXQgZGV0ZWN0cyBkZWNsYXJhdGlvbnMgaW4gYSBtb3JlCitMaWtlIHRoZSB2YXJpYWJsZSBg Yy1mb250LWxvY2sta2V5d29yZHMtMicgYnV0IGRldGVjdHMgZGVjbGFyYXRpb25zIGluIGEgbW9y ZQogYWNjdXJhdGUgd2F5IHRoYXQgd29ya3MgaW4gbW9zdCBjYXNlcyBmb3IgYXJiaXRyYXJ5IHR5 cGVzIHdpdGhvdXQgdGhlCiBuZWVkIGZvciBgYy1mb250LWxvY2stZXh0cmEtdHlwZXMnLiIpCiAK QEAgLTIyMDcsNyArMjIwNyw3IEBACiAKIChkZWZjb25zdCBjKystZm9udC1sb2NrLWtleXdvcmRz LTMgKGMtbGFuZy1jb25zdCBjLW1hdGNoZXJzLTMgYysrKQogICAiQWNjdXJhdGUgbm9ybWFsIGZv bnQgbG9ja2luZyBmb3IgQysrIG1vZGUuCi1MaWtlIGBjKystZm9udC1sb2NrLWtleXdvcmRzLTIn IGJ1dCBkZXRlY3RzIGRlY2xhcmF0aW9ucyBpbiBhIG1vcmUKK0xpa2UgdGhlIHZhcmlhYmxlIGBj KystZm9udC1sb2NrLWtleXdvcmRzLTInIGJ1dCBkZXRlY3RzIGRlY2xhcmF0aW9ucyBpbiBhIG1v cmUKIGFjY3VyYXRlIHdheSB0aGF0IHdvcmtzIGluIG1vc3QgY2FzZXMgZm9yIGFyYml0cmFyeSB0 eXBlcyB3aXRob3V0IHRoZQogbmVlZCBmb3IgYGMrKy1mb250LWxvY2stZXh0cmEtdHlwZXMnLiIp CiAKQEAgLTIzMTMsNyArMjMxMyw3IEBACiAKIChkZWZjb25zdCBvYmpjLWZvbnQtbG9jay1rZXl3 b3Jkcy0zIChjLWxhbmctY29uc3QgYy1tYXRjaGVycy0zIG9iamMpCiAgICJBY2N1cmF0ZSBub3Jt YWwgZm9udCBsb2NraW5nIGZvciBPYmplY3RpdmUtQyBtb2RlLgotTGlrZSBgb2JqYy1mb250LWxv Y2sta2V5d29yZHMtMicgYnV0IGRldGVjdHMgZGVjbGFyYXRpb25zIGluIGEgbW9yZQorTGlrZSB0 aGUgdmFyaWFibGUgYG9iamMtZm9udC1sb2NrLWtleXdvcmRzLTInIGJ1dCBkZXRlY3RzIGRlY2xh cmF0aW9ucyBpbiBhIG1vcmUKIGFjY3VyYXRlIHdheSB0aGF0IHdvcmtzIGluIG1vc3QgY2FzZXMg Zm9yIGFyYml0cmFyeSB0eXBlcyB3aXRob3V0IHRoZQogbmVlZCBmb3IgYG9iamMtZm9udC1sb2Nr LWV4dHJhLXR5cGVzJy4iKQogCkBAIC0yMzU2LDcgKzIzNTYsNyBAQAogCiAoZGVmY29uc3QgamF2 YS1mb250LWxvY2sta2V5d29yZHMtMyAoYy1sYW5nLWNvbnN0IGMtbWF0Y2hlcnMtMyBqYXZhKQog ICAiQWNjdXJhdGUgbm9ybWFsIGZvbnQgbG9ja2luZyBmb3IgSmF2YSBtb2RlLgotTGlrZSBgamF2 YS1mb250LWxvY2sta2V5d29yZHMtMicgYnV0IGRldGVjdHMgZGVjbGFyYXRpb25zIGluIGEgbW9y ZQorTGlrZSB2YXJpYWJsZSBgamF2YS1mb250LWxvY2sta2V5d29yZHMtMicgYnV0IGRldGVjdHMg ZGVjbGFyYXRpb25zIGluIGEgbW9yZQogYWNjdXJhdGUgd2F5IHRoYXQgd29ya3MgaW4gbW9zdCBj YXNlcyBmb3IgYXJiaXRyYXJ5IHR5cGVzIHdpdGhvdXQgdGhlCiBuZWVkIGZvciBgamF2YS1mb250 LWxvY2stZXh0cmEtdHlwZXMnLiIpCiAKQEAgLTIzODksNyArMjM4OSw3IEBACiAKIChkZWZjb25z dCBpZGwtZm9udC1sb2NrLWtleXdvcmRzLTMgKGMtbGFuZy1jb25zdCBjLW1hdGNoZXJzLTMgaWRs KQogICAiQWNjdXJhdGUgbm9ybWFsIGZvbnQgbG9ja2luZyBmb3IgQ09SQkEgSURMIG1vZGUuCi1M aWtlIGBpZGwtZm9udC1sb2NrLWtleXdvcmRzLTInIGJ1dCBkZXRlY3RzIGRlY2xhcmF0aW9ucyBp biBhIG1vcmUKK0xpa2UgdGhlIHZhcmlhYmxlIGBpZGwtZm9udC1sb2NrLWtleXdvcmRzLTInIGJ1 dCBkZXRlY3RzIGRlY2xhcmF0aW9ucyBpbiBhIG1vcmUKIGFjY3VyYXRlIHdheSB0aGF0IHdvcmtz IGluIG1vc3QgY2FzZXMgZm9yIGFyYml0cmFyeSB0eXBlcyB3aXRob3V0IHRoZQogbmVlZCBmb3Ig YGlkbC1mb250LWxvY2stZXh0cmEtdHlwZXMnLiIpCiAKQEAgLTI0MjIsNyArMjQyMiw3IEBACiAK IChkZWZjb25zdCBwaWtlLWZvbnQtbG9jay1rZXl3b3Jkcy0zIChjLWxhbmctY29uc3QgYy1tYXRj aGVycy0zIHBpa2UpCiAgICJBY2N1cmF0ZSBub3JtYWwgZm9udCBsb2NraW5nIGZvciBQaWtlIG1v ZGUuCi1MaWtlIGBwaWtlLWZvbnQtbG9jay1rZXl3b3Jkcy0yJyBidXQgZGV0ZWN0cyBkZWNsYXJh dGlvbnMgaW4gYSBtb3JlCitMaWtlIHRoZSB2YXJpYWJsZSBgcGlrZS1mb250LWxvY2sta2V5d29y ZHMtMicgYnV0IGRldGVjdHMgZGVjbGFyYXRpb25zIGluIGEgbW9yZQogYWNjdXJhdGUgd2F5IHRo YXQgd29ya3MgaW4gbW9zdCBjYXNlcyBmb3IgYXJiaXRyYXJ5IHR5cGVzIHdpdGhvdXQgdGhlCiBu ZWVkIGZvciBgcGlrZS1mb250LWxvY2stZXh0cmEtdHlwZXMnLiIpCiAKCj09PSBtb2RpZmllZCBm aWxlICdsaXNwL3Byb2dtb2Rlcy9jb21waWxlLmVsJwotLS0gbGlzcC9wcm9nbW9kZXMvY29tcGls ZS5lbAkyMDEzLTAxLTA5IDA4OjMwOjIxICswMDAwCisrKyBsaXNwL3Byb2dtb2Rlcy9jb21waWxl LmVsCTIwMTMtMDEtMTEgMTc6NDI6MjcgKzAwMDAKQEAgLTE0MjcsOCArMTQyNyw5IEBACiBJZiBv cHRpb25hbCBzZWNvbmQgYXJnIENPTUlOVCBpcyB0IHRoZSBidWZmZXIgd2lsbCBiZSBpbiBDb21p bnQgbW9kZSB3aXRoCiBgY29tcGlsYXRpb24tc2hlbGwtbWlub3ItbW9kZScuCiAKLUludGVyYWN0 aXZlbHksIHByb21wdHMgZm9yIHRoZSBjb21tYW5kIGlmIGBjb21waWxhdGlvbi1yZWFkLWNvbW1h bmQnIGlzCi1ub24tbmlsOyBvdGhlcndpc2UgdXNlcyBgY29tcGlsZS1jb21tYW5kJy4gIFdpdGgg cHJlZml4IGFyZywgYWx3YXlzIHByb21wdHMuCitJbnRlcmFjdGl2ZWx5LCBwcm9tcHRzIGZvciB0 aGUgY29tbWFuZCBpZiB0aGUgdmFyaWFibGUKK2Bjb21waWxhdGlvbi1yZWFkLWNvbW1hbmQnIGlz IG5vbi1uaWw7IG90aGVyd2lzZSB1c2VzYGNvbXBpbGUtY29tbWFuZCcuCitXaXRoIHByZWZpeCBh cmcsIGFsd2F5cyBwcm9tcHRzLgogQWRkaXRpb25hbGx5LCB3aXRoIHVuaXZlcnNhbCBwcmVmaXgg YXJnLCBjb21waWxhdGlvbiBidWZmZXIgd2lsbCBiZSBpbgogY29taW50IG1vZGUsIGkuZS4gaW50 ZXJhY3RpdmUuCiAKCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL3Byb2dtb2Rlcy9ldGFncy5lbCcK LS0tIGxpc3AvcHJvZ21vZGVzL2V0YWdzLmVsCTIwMTMtMDEtMDQgMTk6MjI6MzcgKzAwMDAKKysr IGxpc3AvcHJvZ21vZGVzL2V0YWdzLmVsCTIwMTMtMDEtMTEgMTc6NDI6MjcgKzAwMDAKQEAgLTE5 OSw3ICsxOTksOCBAQAogCiAoZGVmdmFyIHRhZ3MtdGFibGUtZmlsZXMgbmlsCiAgICJMaXN0IG9m IGZpbGUgbmFtZXMgY292ZXJlZCBieSBjdXJyZW50IHRhZ3MgdGFibGUuCi1uaWwgbWVhbnMgaXQg aGFzIG5vdCB5ZXQgYmVlbiBjb21wdXRlZDsgdXNlIGB0YWdzLXRhYmxlLWZpbGVzJyB0byBkbyBz by4iKQorbmlsIG1lYW5zIGl0IGhhcyBub3QgeWV0IGJlZW4gY29tcHV0ZWQ7Cit1c2UgZnVuY3Rp b24gYHRhZ3MtdGFibGUtZmlsZXMnIHRvIGRvIHNvLiIpCiAKIChkZWZ2YXIgdGFncy1jb21wbGV0 aW9uLXRhYmxlIG5pbAogICAiT2JhcnJheSBvZiB0YWcgbmFtZXMgZGVmaW5lZCBpbiBjdXJyZW50 IHRhZ3MgdGFibGUuIikKQEAgLTIyNCw3ICsyMjUsNyBAQAogT25lIG9wdGlvbmFsIGFyZ3VtZW50 LCBhIGJvb2xlYW4gc3BlY2lmeWluZyB0byByZXR1cm4gY29tcGxldGUgcGF0aCAobmlsKSBvcgog cmVsYXRpdmUgcGF0aCAobm9uLW5pbCkuIikKIChkZWZ2YXIgdGFncy10YWJsZS1maWxlcy1mdW5j dGlvbiBuaWwKLSAgIkZ1bmN0aW9uIHRvIGRvIHRoZSB3b3JrIG9mIGB0YWdzLXRhYmxlLWZpbGVz JyAod2hpY2ggc2VlKS4iKQorICAiRnVuY3Rpb24gdG8gZG8gdGhlIHdvcmsgb2YgZnVuY3Rpb24g YHRhZ3MtdGFibGUtZmlsZXMnICh3aGljaCBzZWUpLiIpCiAoZGVmdmFyIHRhZ3MtY29tcGxldGlv bi10YWJsZS1mdW5jdGlvbiBuaWwKICAgIkZ1bmN0aW9uIHRvIGJ1aWxkIHRoZSBgdGFncy1jb21w bGV0aW9uLXRhYmxlJy4iKQogKGRlZnZhciBzbmFyZi10YWctZnVuY3Rpb24gbmlsCkBAIC0yNTEs NyArMjUyLDcgQEAKIChkZWZ2YXIgdGFncy1hcHJvcG9zLWZ1bmN0aW9uIG5pbAogICAiRnVuY3Rp b24gdG8gZG8gdGhlIHdvcmsgb2YgYHRhZ3MtYXByb3BvcycgKHdoaWNoIHNlZSkuIikKIChkZWZ2 YXIgdGFncy1pbmNsdWRlZC10YWJsZXMtZnVuY3Rpb24gbmlsCi0gICJGdW5jdGlvbiB0byBkbyB0 aGUgd29yayBvZiBgdGFncy1pbmNsdWRlZC10YWJsZXMnICh3aGljaCBzZWUpLiIpCisgICJGdW5j dGlvbiB0byBkbyB0aGUgd29yayBvZiBmdW5jdGlvbiBgdGFncy1pbmNsdWRlZC10YWJsZXMnICh3 aGljaCBzZWUpLiIpCiAoZGVmdmFyIHZlcmlmeS10YWdzLXRhYmxlLWZ1bmN0aW9uIG5pbAogICAi RnVuY3Rpb24gdG8gcmV0dXJuIHQgaWYgY3VycmVudCBidWZmZXIgY29udGFpbnMgdmFsaWQgdGFn cyBmaWxlLiIpCiAMCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGlzcC9wcm9nbW9kZXMvZ2RiLW1pLmVs JwotLS0gbGlzcC9wcm9nbW9kZXMvZ2RiLW1pLmVsCTIwMTMtMDEtMDEgMDk6MTE6MDUgKzAwMDAK KysrIGxpc3AvcHJvZ21vZGVzL2dkYi1taS5lbAkyMDEzLTAxLTExIDE3OjQyOjI3ICswMDAwCkBA IC02MDcsMTIgKzYwNywxMiBAQAogb3B0aW9ucyBzaG91bGQgaW5jbHVkZSBcIi1pPW1pXCIgdG8g dXNlIGdkYidzIE1JIHRleHQgaW50ZXJmYWNlLgogTm90ZSB0aGF0IHRoZSBvbGQgXCItLWFubm90 YXRlXCIgb3B0aW9uIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCiAKLUlmIGBnZGItbWFueS13aW5k b3dzJyBpcyBuaWwgKHRoZSBkZWZhdWx0IHZhbHVlKSB0aGVuIGdkYiBqdXN0CitJZiBvcHRpb24g YGdkYi1tYW55LXdpbmRvd3MnIGlzIG5pbCAodGhlIGRlZmF1bHQgdmFsdWUpIHRoZW4gZ2RiIGp1 c3QKIHBvcHMgdXAgdGhlIEdVRCBidWZmZXIgdW5sZXNzIGBnZGItc2hvdy1tYWluJyBpcyB0LiAg SW4gdGhpcyBjYXNlCiBpdCBzdGFydHMgd2l0aCB0d28gd2luZG93czogb25lIGRpc3BsYXlpbmcg dGhlIEdVRCBidWZmZXIgYW5kIHRoZQogb3RoZXIgd2l0aCB0aGUgc291cmNlIGZpbGUgd2l0aCB0 aGUgbWFpbiByb3V0aW5lIG9mIHRoZSBpbmZlcmlvci4KIAotSWYgYGdkYi1tYW55LXdpbmRvd3Mn IGlzIHQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mCitJZiBvcHRpb24gYGdkYi1tYW55LXdp bmRvd3MnIGlzIHQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mCiBgZ2RiLXNob3ctbWFpbics IHRoZSBsYXlvdXQgYmVsb3cgd2lsbCBhcHBlYXIuICBLZXliaW5kaW5ncyBhcmUKIHNob3duIGlu IHNvbWUgb2YgdGhlIGJ1ZmZlcnMuCiAKQEAgLTQwNjksNyArNDA2OSw3IEBACiAgIChzZXQtd2lu ZG93LWRlZGljYXRlZC1wIHdpbmRvdyB0KSkKIAogKGRlZnVuIGdkYi1zZXR1cC13aW5kb3dzICgp Ci0gICJMYXlvdXQgdGhlIHdpbmRvdyBwYXR0ZXJuIGZvciBgZ2RiLW1hbnktd2luZG93cycuIgor ICAiTGF5b3V0IHRoZSB3aW5kb3cgcGF0dGVybiBmb3Igb3B0aW9uIGBnZGItbWFueS13aW5kb3dz Jy4iCiAgIChnZGItZ2V0LWJ1ZmZlci1jcmVhdGUgJ2dkYi1sb2NhbHMtYnVmZmVyKQogICAoZ2Ri LWdldC1idWZmZXItY3JlYXRlICdnZGItc3RhY2stYnVmZmVyKQogICAoZ2RiLWdldC1idWZmZXIt Y3JlYXRlICdnZGItYnJlYWtwb2ludHMtYnVmZmVyKQpAQCAtNDEyMCw3ICs0MTIwLDcgQEAKIAog KGRlZnVuIGdkYi1yZXN0b3JlLXdpbmRvd3MgKCkKICAgIlJlc3RvcmUgdGhlIGJhc2ljIGFycmFu Z2VtZW50IG9mIHdpbmRvd3MgdXNlZCBieSBnZGIuCi1UaGlzIGFycmFuZ2VtZW50IGRlcGVuZHMg b24gdGhlIHZhbHVlIG9mIGBnZGItbWFueS13aW5kb3dzJy4iCitUaGlzIGFycmFuZ2VtZW50IGRl cGVuZHMgb24gdGhlIHZhbHVlIG9mIG9wdGlvbiBgZ2RiLW1hbnktd2luZG93cycuIgogICAoaW50 ZXJhY3RpdmUpCiAgIChzd2l0Y2gtdG8tYnVmZmVyIGd1ZC1jb21pbnQtYnVmZmVyKSA7U2VsZWN0 IHRoZSByaWdodCB3aW5kb3cgYW5kIGZyYW1lLgogICAoZGVsZXRlLW90aGVyLXdpbmRvd3MpCgo9 PT0gbW9kaWZpZWQgZmlsZSAnbGlzcC9wcy1wcmludC5lbCcKLS0tIGxpc3AvcHMtcHJpbnQuZWwJ MjAxMy0wMS0wMSAwOToxMTowNSArMDAwMAorKysgbGlzcC9wcy1wcmludC5lbAkyMDEzLTAxLTEx IDE3OjQyOjI3ICswMDAwCkBAIC0xOTU5LDEzICsxOTU5LDEzIEBACiAKIEFueSBvdGhlciB2YWx1 ZSBpcyB0cmVhdGVkIGFzIG5pbC4KIAotSWYgeW91IHNldCBgcHMtc2VsZWN0ZWQtcGFnZXMnIChz ZWUgaXQgZm9yIGRvY3VtZW50YXRpb24pLCBmaXJzdCB0aGUgcGFnZXMgYXJlCi1maWx0ZXJlZCBi eSBgcHMtc2VsZWN0ZWQtcGFnZXMnIGFuZCB0aGVuIGJ5IGBwcy1ldmVuLW9yLW9kZC1wYWdlcycu ICBGb3IKLWV4YW1wbGUsIGlmIHdlIGhhdmU6CitJZiB5b3Ugc2V0IG9wdGlvbiBgcHMtc2VsZWN0 ZWQtcGFnZXMnLCBmaXJzdCB0aGUgcGFnZXMgYXJlCitmaWx0ZXJlZCBieSBvcHRpb24gYHBzLXNl bGVjdGVkLXBhZ2VzJyBhbmQgdGhlbiBieSBgcHMtZXZlbi1vci1vZGQtcGFnZXMnLgorRm9yIGV4 YW1wbGUsIGlmIHdlIGhhdmU6CiAKICAgIChzZXRxIHBzLXNlbGVjdGVkLXBhZ2VzICcoMSA0ICg2 IC4gMTApICgxMiAuIDE2KSAyMCkpCiAKLUNvbWJpbmluZyB3aXRoIGBwcy1ldmVuLW9yLW9kZC1w YWdlcycgYW5kIGBwcy1uLXVwLXByaW50aW5nJywgd2UgaGF2ZToKK0NvbWJpbmluZyB3aXRoIGBw cy1ldmVuLW9yLW9kZC1wYWdlcycgYW5kIG9wdGlvbiBgcHMtbi11cC1wcmludGluZycsIHdlIGhh dmU6CiAKIGBwcy1uLXVwLXByaW50aW5nJyA9IDE6CiAgICBgcHMtZXZlbi1vci1vZGQtcGFnZXMn CVBBR0VTIFBSSU5URUQKQEAgLTM1NjYsOSArMzU2Niw5IEBACiA7OzsjIyNhdXRvbG9hZAogKGRl ZnVuIHBzLXNwb29sLWJ1ZmZlci13aXRoLWZhY2VzICgpCiAgICJHZW5lcmF0ZSBhbmQgc3Bvb2wg YSBQb3N0U2NyaXB0IGltYWdlIG9mIHRoZSBidWZmZXIuCi1MaWtlIGBwcy1zcG9vbC1idWZmZXIn LCBidXQgaW5jbHVkZXMgZm9udCwgY29sb3IsIGFuZCB1bmRlcmxpbmUgaW5mb3JtYXRpb24gaW4K LXRoZSBnZW5lcmF0ZWQgaW1hZ2UuICBUaGlzIGNvbW1hbmQgd29ya3Mgb25seSBpZiB5b3UgYXJl IHVzaW5nIGEgd2luZG93IHN5c3RlbSwKLXNvIGl0IGhhcyBhIHdheSB0byBkZXRlcm1pbmUgY29s b3IgdmFsdWVzLgorTGlrZSB0aGUgY29tbWFuZCBgcHMtc3Bvb2wtYnVmZmVyJywgYnV0IGluY2x1 ZGVzIGZvbnQsIGNvbG9yLCBhbmQgdW5kZXJsaW5lCitpbmZvcm1hdGlvbiBpbiB0aGUgZ2VuZXJh dGVkIGltYWdlLiAgVGhpcyBjb21tYW5kIHdvcmtzIG9ubHkgaWYgeW91IGFyZSB1c2luZworYSB3 aW5kb3cgc3lzdGVtLCBzbyBpdCBoYXMgYSB3YXkgdG8gZGV0ZXJtaW5lIGNvbG9yIHZhbHVlcy4K IAogVXNlIHRoZSBjb21tYW5kIGBwcy1kZXNwb29sJyB0byBzZW5kIHRoZSBzcG9vbGVkIGltYWdl cyB0byB0aGUgcHJpbnRlci4iCiAgIChpbnRlcmFjdGl2ZSkKQEAgLTUzNjksNyArNTM2OSw3IEBA CiAgICAoS0lORCBYQ09MIFlDT0wgWExJTiBZTElOIFJFUEVBVCBFTkQgWFNUQVJUIFlTVEFSVCkK IAogV2hlcmU6Ci1LSU5EIGlzIGEgdmFsaWQgdmFsdWUgb2YgYHBzLW4tdXAtZmlsbGluZycuCitL SU5EIGlzIGEgdmFsaWQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGBwcy1uLXVwLWZpbGxpbmcnLgog WENPTCBZQ09MIGFyZSB0aGUgcmVsYXRpdmUgcG9zaXRpb24gZm9yIHRoZSBuZXh0IGNvbHVtbi4K IFhMSU4gWUxJTiBhcmUgdGhlIHJlbGF0aXZlIHBvc2l0aW9uIGZvciB0aGUgYmVnaW5uaW5nIG9m IG5leHQgbGluZS4KIFJFUEVBVCBpcyB0aGUgbnVtYmVyIG9mIHJlcGV0aXRpb25zIGZvciBleHRl cm5hbCBsb29wLgoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3Avc2VydmVyLmVsJwotLS0gbGlzcC9z ZXJ2ZXIuZWwJMjAxMy0wMS0wMiAxNjoxMzowNCArMDAwMAorKysgbGlzcC9zZXJ2ZXIuZWwJMjAx My0wMS0xMSAxNzo0MjoyNyArMDAwMApAQCAtMzYxLDcgKzM2MSw3IEBACiAKIChkZWZjb25zdCBz ZXJ2ZXItYnVmZmVyICIgKnNlcnZlcioiCiAgICJCdWZmZXIgdXNlZCBpbnRlcm5hbGx5IGJ5IEVt YWNzJ3Mgc2VydmVyLgotT25lIHVzZSBpcyB0byBsb2cgdGhlIEkvTyBmb3IgZGVidWdnaW5nIHB1 cnBvc2VzIChzZWUgYHNlcnZlci1sb2cnKSwKK09uZSB1c2UgaXMgdG8gbG9nIHRoZSBJL08gZm9y IGRlYnVnZ2luZyBwdXJwb3NlcyAoc2VlIG9wdGlvbiBgc2VydmVyLWxvZycpLAogdGhlIG90aGVy IGlzIHRvIHByb3ZpZGUgYSBjdXJyZW50IGJ1ZmZlciBpbiB3aGljaCB0aGUgcHJvY2VzcyBmaWx0 ZXIgY2FuCiBzYWZlbHkgbGV0LWJpbmQgYnVmZmVyLWxvY2FsIHZhcmlhYmxlcyBsaWtlIGBkZWZh dWx0LWRpcmVjdG9yeScuIikKIApAQCAtMzY5LDcgKzM2OSw3IEBACiAgICJJZiBub24tbmlsLCBs b2cgdGhlIHNlcnZlcidzIGlucHV0cyBhbmQgb3V0cHV0cyBpbiB0aGUgYHNlcnZlci1idWZmZXIn LiIpCiAKIChkZWZ1biBzZXJ2ZXItbG9nIChzdHJpbmcgJm9wdGlvbmFsIGNsaWVudCkKLSAgIklm IGBzZXJ2ZXItbG9nJyBpcyBub24tbmlsLCBsb2cgU1RSSU5HIHRvIGBzZXJ2ZXItYnVmZmVyJy4K KyAgIklmIG9wdGlvbiBgc2VydmVyLWxvZycgaXMgbm9uLW5pbCwgbG9nIFNUUklORyB0byBgc2Vy dmVyLWJ1ZmZlcicuCiBJZiBDTElFTlQgaXMgbm9uLW5pbCwgYWRkIGEgZGVzY3JpcHRpb24gb2Yg aXQgdG8gdGhlIGxvZ2dlZCBtZXNzYWdlLiIKICAgKHdoZW4gc2VydmVyLWxvZwogICAgICh3aXRo LWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSBzZXJ2ZXItYnVmZmVyKQoKPT09IG1v ZGlmaWVkIGZpbGUgJ2xpc3Avc2ltcGxlLmVsJwotLS0gbGlzcC9zaW1wbGUuZWwJMjAxMy0wMS0x MCAwMzo0MzowMiArMDAwMAorKysgbGlzcC9zaW1wbGUuZWwJMjAxMy0wMS0xMSAxNzo0MjoyNyAr MDAwMApAQCAtNDAxLDcgKzQwMSw3IEBACiAKIChkZWZ1biBuZXdsaW5lICgmb3B0aW9uYWwgYXJn KQogICAiSW5zZXJ0IGEgbmV3bGluZSwgYW5kIG1vdmUgdG8gbGVmdCBtYXJnaW4gb2YgdGhlIG5l dyBsaW5lIGlmIGl0J3MgYmxhbmsuCi1JZiBgdXNlLWhhcmQtbmV3bGluZXMnIGlzIG5vbi1uaWws IHRoZSBuZXdsaW5lIGlzIG1hcmtlZCB3aXRoIHRoZQorSWYgb3B0aW9uIGB1c2UtaGFyZC1uZXds aW5lcycgaXMgbm9uLW5pbCwgdGhlIG5ld2xpbmUgaXMgbWFya2VkIHdpdGggdGhlCiB0ZXh0LXBy b3BlcnR5IGBoYXJkJy4KIFdpdGggQVJHLCBpbnNlcnQgdGhhdCBtYW55IG5ld2xpbmVzLgogQ2Fs bCBgYXV0by1maWxsLWZ1bmN0aW9uJyBpZiB0aGUgY3VycmVudCBjb2x1bW4gbnVtYmVyIGlzIGdy ZWF0ZXIKQEAgLTgzNyw3ICs4MzcsNyBAQAogICAiRGVsZXRlIHRoZSBwcmV2aW91cyBOIGNoYXJh Y3RlcnMgKGZvbGxvd2luZyBpZiBOIGlzIG5lZ2F0aXZlKS4KIElmIFRyYW5zaWVudCBNYXJrIG1v ZGUgaXMgZW5hYmxlZCwgdGhlIG1hcmsgaXMgYWN0aXZlLCBhbmQgTiBpcyAxLAogZGVsZXRlIHRo ZSB0ZXh0IGluIHRoZSByZWdpb24gYW5kIGRlYWN0aXZhdGUgdGhlIG1hcmsgaW5zdGVhZC4KLVRv IGRpc2FibGUgdGhpcywgc2V0IGBkZWxldGUtYWN0aXZlLXJlZ2lvbicgdG8gbmlsLgorVG8gZGlz YWJsZSB0aGlzLCBzZXQgb3B0aW9uIGBkZWxldGUtYWN0aXZlLXJlZ2lvbicgdG8gbmlsLgogCiBP cHRpb25hbCBzZWNvbmQgYXJnIEtJTExGTEFHLCBpZiBub24tbmlsLCBtZWFucyB0byBraWxsIChz YXZlIGluCiBraWxsIHJpbmcpIGluc3RlYWQgb2YgZGVsZXRlLiAgSW50ZXJhY3RpdmVseSwgTiBp cyB0aGUgcHJlZml4CkBAIC04NzMsNyArODczLDcgQEAKICAgIkRlbGV0ZSB0aGUgZm9sbG93aW5n IE4gY2hhcmFjdGVycyAocHJldmlvdXMgaWYgTiBpcyBuZWdhdGl2ZSkuCiBJZiBUcmFuc2llbnQg TWFyayBtb2RlIGlzIGVuYWJsZWQsIHRoZSBtYXJrIGlzIGFjdGl2ZSwgYW5kIE4gaXMgMSwKIGRl bGV0ZSB0aGUgdGV4dCBpbiB0aGUgcmVnaW9uIGFuZCBkZWFjdGl2YXRlIHRoZSBtYXJrIGluc3Rl YWQuCi1UbyBkaXNhYmxlIHRoaXMsIHNldCBgZGVsZXRlLWFjdGl2ZS1yZWdpb24nIHRvIG5pbC4K K1RvIGRpc2FibGUgdGhpcywgc2V0IHZhcmlhYmxlIGBkZWxldGUtYWN0aXZlLXJlZ2lvbicgdG8g bmlsLgogCiBPcHRpb25hbCBzZWNvbmQgYXJnIEtJTExGTEFHIG5vbi1uaWwgbWVhbnMgdG8ga2ls bCAoc2F2ZSBpbiBraWxsCiByaW5nKSBpbnN0ZWFkIG9mIGRlbGV0ZS4gIEludGVyYWN0aXZlbHks IE4gaXMgdGhlIHByZWZpeCBhcmcsIGFuZApAQCAtMTc3OCw3ICsxNzc4LDcgQEAKIElmIHRoZXJl IGFyZSBubyBzZWFyY2ggZXJyb3JzLCB0aGlzIGZ1bmN0aW9uIGRpc3BsYXlzIGFuIG92ZXJsYXkg d2l0aAogdGhlIGlzZWFyY2ggcHJvbXB0IHdoaWNoIHJlcGxhY2VzIHRoZSBvcmlnaW5hbCBtaW5p YnVmZmVyIHByb21wdC4KIE90aGVyd2lzZSwgaXQgZGlzcGxheXMgdGhlIHN0YW5kYXJkIGlzZWFy Y2ggbWVzc2FnZSByZXR1cm5lZCBmcm9tCi1gaXNlYXJjaC1tZXNzYWdlJy4iCit0aGUgZnVuY3Rp b24gYGlzZWFyY2gtbWVzc2FnZScuIgogICAoaWYgKG5vdCAoYW5kIChtaW5pYnVmZmVycCkgaXNl YXJjaC1zdWNjZXNzIChub3QgaXNlYXJjaC1lcnJvcikpKQogICAgICAgOzsgVXNlIHN0YW5kYXJk IGZ1bmN0aW9uIGBpc2VhcmNoLW1lc3NhZ2UnIHdoZW4gbm90IGluIHRoZSBtaW5pYnVmZmVyLAog ICAgICAgOzsgb3Igc2VhcmNoIGZhaWxzLCBvciBoYXMgYW4gZXJyb3IgKGxpa2UgaW5jb21wbGV0 ZSByZWdleHApLgpAQCAtMzgwNSw3ICszODA1LDcgQEAKIGtpbGwgdGhlIHJlc3Qgb2YgdGhlIGN1 cnJlbnQgbGluZSwgZXZlbiBpZiB0aGVyZSBhcmUgb25seQogbm9uYmxhbmtzIHRoZXJlLgogCi1J ZiBga2lsbC13aG9sZS1saW5lJyBpcyBub24tbmlsLCB0aGVuIHRoaXMgY29tbWFuZCBraWxscyB0 aGUgd2hvbGUgbGluZQorSWYgb3B0aW9uIGBraWxsLXdob2xlLWxpbmUnIGlzIG5vbi1uaWwsIHRo ZW4gdGhpcyBjb21tYW5kIGtpbGxzIHRoZSB3aG9sZSBsaW5lCiBpbmNsdWRpbmcgaXRzIHRlcm1p bmF0aW5nIG5ld2xpbmUsIHdoZW4gdXNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZQogd2l0 aCBubyBhcmd1bWVudC4gIEFzIGEgY29uc2VxdWVuY2UsIHlvdSBjYW4gYWx3YXlzIGtpbGwgYSB3 aG9sZSBsaW5lCiBieSB0eXBpbmcgXFxbbW92ZS1iZWdpbm5pbmctb2YtbGluZV0gXFxba2lsbC1s aW5lXS4KQEAgLTQ1NzUsMTMgKzQ1NzUsMTMgQEAKICAgIk5vbi1uaWwgbWVhbnMgdmVydGljYWwg bW90aW9uIHN0YXJ0aW5nIGF0IGVuZCBvZiBsaW5lIGtlZXBzIHRvIGVuZHMgb2YgbGluZXMuCiBU aGlzIG1lYW5zIG1vdmluZyB0byB0aGUgZW5kIG9mIGVhY2ggbGluZSBtb3ZlZCBvbnRvLgogVGhl IGJlZ2lubmluZyBvZiBhIGJsYW5rIGxpbmUgZG9lcyBub3QgY291bnQgYXMgdGhlIGVuZCBvZiBh IGxpbmUuCi1UaGlzIGhhcyBubyBlZmZlY3Qgd2hlbiBgbGluZS1tb3ZlLXZpc3VhbCcgaXMgbm9u LW5pbC4iCitUaGlzIGhhcyBubyBlZmZlY3Qgd2hlbiB0aGUgdmFyaWFibGUgYGxpbmUtbW92ZS12 aXN1YWwnIGlzIG5vbi1uaWwuIgogICA6dHlwZSAnYm9vbGVhbgogICA6Z3JvdXAgJ2VkaXRpbmct YmFzaWNzKQogCiAoZGVmY3VzdG9tIGdvYWwtY29sdW1uIG5pbAogICAiU2VtaXBlcm1hbmVudCBn b2FsIGNvbHVtbiBmb3IgdmVydGljYWwgbW90aW9uLCBhcyBzZXQgYnkgXFxbc2V0LWdvYWwtY29s dW1uXSwgb3IgbmlsLgotQSBub24tbmlsIHNldHRpbmcgb3ZlcnJpZGVzIGBsaW5lLW1vdmUtdmlz dWFsJywgd2hpY2ggc2VlLiIKK0Egbm9uLW5pbCBzZXR0aW5nIG92ZXJyaWRlcyB0aGUgdmFyaWFi bGUgYGxpbmUtbW92ZS12aXN1YWwnLCB3aGljaCBzZWUuIgogICA6dHlwZSAnKGNob2ljZSBpbnRl Z2VyCiAJCSAoY29uc3QgOnRhZyAiTm9uZSIgbmlsKSkKICAgOmdyb3VwICdlZGl0aW5nLWJhc2lj cykKQEAgLTQ1OTIsNyArNDU5Miw3IEBACiBJdCBpcyB0aGUgY29sdW1uIHdoZXJlIHBvaW50IHdh cyBhdCB0aGUgc3RhcnQgb2YgdGhlIGN1cnJlbnQgcnVuCiBvZiB2ZXJ0aWNhbCBtb3Rpb24gY29t bWFuZHMuCiAKLVdoZW4gbW92aW5nIGJ5IHZpc3VhbCBsaW5lcyB2aWEgYGxpbmUtbW92ZS12aXN1 YWwnLCBpdCBpcyBhIGNvbnMKK1doZW4gbW92aW5nIGJ5IHZpc3VhbCBsaW5lcyB2aWEgdGhlIGZ1 bmN0aW9uIGBsaW5lLW1vdmUtdmlzdWFsJywgaXQgaXMgYSBjb25zCiBjZWxsIChDT0wgLiBIU0NS T0xMKSwgd2hlcmUgQ09MIGlzIHRoZSB4LXBvc2l0aW9uLCBpbiBwaXhlbHMsCiBkaXZpZGVkIGJ5 IHRoZSBkZWZhdWx0IGNvbHVtbiB3aWR0aCwgYW5kIEhTQ1JPTEwgaXMgdGhlIG51bWJlciBvZgog Y29sdW1ucyBieSB3aGljaCB3aW5kb3cgaXMgc2Nyb2xsZWQgZnJvbSBsZWZ0IG1hcmdpbi4KCj09 PSBtb2RpZmllZCBmaWxlICdsaXNwL3RleHRtb2Rlcy9mbHlzcGVsbC5lbCcKLS0tIGxpc3AvdGV4 dG1vZGVzL2ZseXNwZWxsLmVsCTIwMTMtMDEtMDggMjM6NTA6NDAgKzAwMDAKKysrIGxpc3AvdGV4 dG1vZGVzL2ZseXNwZWxsLmVsCTIwMTMtMDEtMTEgMTc6NDI6MjggKzAwMDAKQEAgLTYzLDcgKzYz LDcgQEAKICAgIk5vbi1uaWwgbWVhbnMgRmx5c3BlbGwgcmVwb3J0cyBhIHJlcGVhdGVkIHdvcmQg YXMgYW4gZXJyb3IuCiBTZWUgYGZseXNwZWxsLW1hcmstZHVwbGljYXRpb25zLWV4Y2VwdGlvbnMn IHRvIGFkZCBleGNlcHRpb25zIHRvIHRoaXMgcnVsZS4KIERldGVjdGlvbiBvZiByZXBlYXRlZCB3 b3JkcyBpcyBub3QgaW1wbGVtZW50ZWQgaW4KLVwibGFyZ2VcIiByZWdpb25zOyBzZWUgYGZseXNw ZWxsLWxhcmdlLXJlZ2lvbicuIgorXCJsYXJnZVwiIHJlZ2lvbnM7IHNlZSB2YXJpYWJsZSBgZmx5 c3BlbGwtbGFyZ2UtcmVnaW9uJy4iCiAgIDpncm91cCAnZmx5c3BlbGwKICAgOnR5cGUgJ2Jvb2xl YW4pCiAKQEAgLTE0NSw5ICsxNDUsMTAgQEAKIChkZWZjdXN0b20gZmx5c3BlbGwtZGVmYXVsdC1k ZXBsYWNlbWVudC1jb21tYW5kcwogICAnKG5leHQtbGluZSBwcmV2aW91cy1saW5lCiAgICAgaGFu ZGxlLXN3aXRjaC1mcmFtZSBoYW5kbGUtc2VsZWN0LXdpbmRvdwotICAgIHNjcm9sbC11cCBzY3Jv bGwtZG93bikKKyAgICBzY3JvbGwtdXAKKyAgICBzY3JvbGwtZG93bikKICAgIlRoZSBzdGFuZGFy ZCBsaXN0IG9mIGRlcGxhY2VtZW50IGNvbW1hbmRzIGZvciBGbHlzcGVsbC4KLVNlZSBgZmx5c3Bl bGwtZGVwbGFjZW1lbnQtY29tbWFuZHMnLiIKK1NlZSB2YXJpYWJsZSBgZmx5c3BlbGwtZGVwbGFj ZW1lbnQtY29tbWFuZHMnLiIKICAgOmdyb3VwICdmbHlzcGVsbAogICA6dmVyc2lvbiAiMjEuMSIK ICAgOnR5cGUgJyhyZXBlYXQgKHN5bWJvbCkpKQoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvdGV4 dG1vZGVzL2lzcGVsbC5lbCcKLS0tIGxpc3AvdGV4dG1vZGVzL2lzcGVsbC5lbAkyMDEzLTAxLTAy IDE2OjEzOjA0ICswMDAwCisrKyBsaXNwL3RleHRtb2Rlcy9pc3BlbGwuZWwJMjAxMy0wMS0xMSAx Nzo0MjoyOCArMDAwMApAQCAtMTU5NCw4ICsxNTk0LDggQEAKIAogKGRlZnVuIGlzcGVsbC1hY2Nl cHQtb3V0cHV0ICgmb3B0aW9uYWwgdGltZW91dC1zZWNzIHRpbWVvdXQtbXNlY3MpCiAgICJXYWl0 IGZvciBvdXRwdXQgZnJvbSBpc3BlbGwgcHJvY2Vzcywgb3IgVElNRU9VVC1TRUNTIGFuZCBUSU1F T1VULU1TRUNTLgotSWYgYXN5bmNocm9ub3VzIHN1YnByb2Nlc3NlcyBhcmUgbm90IHN1cHBvcnRl ZCwgY2FsbCBgaXNwZWxsLWZpbHRlcicgYW5kCi1wYXNzIGl0IHRoZSBvdXRwdXQgb2YgdGhlIGxh c3QgaXNwZWxsIGludm9jYXRpb24uIgorSWYgYXN5bmNocm9ub3VzIHN1YnByb2Nlc3NlcyBhcmUg bm90IHN1cHBvcnRlZCwgY2FsbCBmdW5jdGlvbiBgaXNwZWxsLWZpbHRlcicKK2FuZCBwYXNzIGl0 IHRoZSBvdXRwdXQgb2YgdGhlIGxhc3QgaXNwZWxsIGludm9jYXRpb24uIgogICAoaWYgaXNwZWxs LWFzeW5jLXByb2Nlc3NwCiAgICAgICAoYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IGlzcGVsbC1wcm9j ZXNzIHRpbWVvdXQtc2VjcyB0aW1lb3V0LW1zZWNzKQogICAgIChpZiAobnVsbCBpc3BlbGwtcHJv Y2VzcykKCj09PSBtb2RpZmllZCBmaWxlICdsaXNwL3RleHRtb2Rlcy9zZ21sLW1vZGUuZWwnCi0t LSBsaXNwL3RleHRtb2Rlcy9zZ21sLW1vZGUuZWwJMjAxMy0wMS0wMiAxNjoxMzowNCArMDAwMAor KysgbGlzcC90ZXh0bW9kZXMvc2dtbC1tb2RlLmVsCTIwMTMtMDEtMTEgMTc6NDI6MjggKzAwMDAK QEAgLTE5MjYsNyArMTkyNiw3IEBACiAgICAgKCJ1bCIgLiAiVW5vcmRlcmVkIGxpc3QiKQogICAg ICgidmFyIiAuICJNYXRoIHZhcmlhYmxlIGZhY2UiKQogICAgICgid2JyIiAuICJFbmFibGUgPGJy PiB3aXRoaW4gPG5vYnI+IikpCi0gICJWYWx1ZSBvZiBgc2dtbC10YWctaGVscCcgZm9yIEhUTUwg bW9kZS4iKQorICAiVmFsdWUgb2YgdmFyaWFibGUgYHNnbWwtdGFnLWhlbHAnIGZvciBIVE1MIG1v ZGUuIikKIAogKGRlZnZhciBvdXRsaW5lLXJlZ2V4cCkKIChkZWZ2YXIgb3V0bGluZS1oZWFkaW5n LWVuZC1yZWdleHApCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGlzcC92Yy9jb21wYXJlLXcuZWwnCi0t LSBsaXNwL3ZjL2NvbXBhcmUtdy5lbAkyMDEzLTAxLTAxIDA5OjExOjA1ICswMDAwCisrKyBsaXNw L3ZjL2NvbXBhcmUtdy5lbAkyMDEzLTAxLTExIDE3OjQyOjI4ICswMDAwCkBAIC01MywxMyArNTMs MTMgQEAKICAgOmdyb3VwICdjb21wYXJlLXdpbmRvd3MpCiAKIChkZWZjdXN0b20gY29tcGFyZS1p Z25vcmUtd2hpdGVzcGFjZSBuaWwKLSAgIk5vbi1uaWwgbWVhbnMgYGNvbXBhcmUtd2luZG93cycg aWdub3JlcyB3aGl0ZXNwYWNlLiIKKyAgIk5vbi1uaWwgbWVhbnMgY29tbWFuZCBgY29tcGFyZS13 aW5kb3dzJyBpZ25vcmVzIHdoaXRlc3BhY2UuIgogICA6dHlwZSAnYm9vbGVhbgogICA6Z3JvdXAg J2NvbXBhcmUtd2luZG93cwogICA6dmVyc2lvbiAiMjIuMSIpCiAKIChkZWZjdXN0b20gY29tcGFy ZS1pZ25vcmUtY2FzZSBuaWwKLSAgIk5vbi1uaWwgbWVhbnMgYGNvbXBhcmUtd2luZG93cycgaWdu b3JlcyBjYXNlIGRpZmZlcmVuY2VzLiIKKyAgIk5vbi1uaWwgbWVhbnMgY29tbWFuZCBgY29tcGFy ZS13aW5kb3dzJyBpZ25vcmVzIGNhc2UgZGlmZmVyZW5jZXMuIgogICA6dHlwZSAnYm9vbGVhbgog ICA6Z3JvdXAgJ2NvbXBhcmUtd2luZG93cykKIApAQCAtMzc5LDcgKzM3OSw3IEBACiAJKGRlbGV0 ZS1vdmVybGF5IGNvbXBhcmUtd2luZG93cy1vdmVybGF5MikpKSkpCiAKIChkZWZ1biBjb21wYXJl LXdpbmRvd3MtZGVoaWdobGlnaHQgKCkKLSAgIlJlbW92ZSBoaWdobGlnaHRpbmcgY3JlYXRlZCBi eSBgY29tcGFyZS13aW5kb3dzLWhpZ2hsaWdodCcuIgorICAiUmVtb3ZlIGhpZ2hsaWdodGluZyBj cmVhdGVkIGJ5IGZ1bmN0aW9uIGBjb21wYXJlLXdpbmRvd3MtaGlnaGxpZ2h0Jy4iCiAgIChpbnRl cmFjdGl2ZSkKICAgKHJlbW92ZS1ob29rICdwcmUtY29tbWFuZC1ob29rICdjb21wYXJlLXdpbmRv d3MtZGVoaWdobGlnaHQpCiAgIChtYXBjICdkZWxldGUtb3ZlcmxheSBjb21wYXJlLXdpbmRvd3Mt b3ZlcmxheXMxKQoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpc3AvdmMvZGlmZi5lbCcKLS0tIGxpc3Av dmMvZGlmZi5lbAkyMDEzLTAxLTAxIDA5OjExOjA1ICswMDAwCisrKyBsaXNwL3ZjL2RpZmYuZWwJ MjAxMy0wMS0xMSAxNzo0MjoyOCArMDAwMApAQCAtODYsNyArODYsNyBAQAogCiBXaGVuIGNhbGxl ZCBpbnRlcmFjdGl2ZWx5IHdpdGggYSBwcmVmaXggYXJndW1lbnQsIHByb21wdAogaW50ZXJhY3Rp dmVseSBmb3IgZGlmZiBzd2l0Y2hlcy4gIE90aGVyd2lzZSwgdGhlIHN3aXRjaGVzCi1zcGVjaWZp ZWQgaW4gYGRpZmYtc3dpdGNoZXMnIGFyZSBwYXNzZWQgdG8gdGhlIGRpZmYgY29tbWFuZC4iCitz cGVjaWZpZWQgaW4gdGhlIHZhcmlhYmxlIGBkaWZmLXN3aXRjaGVzJyBhcmUgcGFzc2VkIHRvIHRo ZSBkaWZmIGNvbW1hbmQuIgogICAoaW50ZXJhY3RpdmUKICAgIChsZXQqICgobmV3ZiAoaWYgKGFu ZCBidWZmZXItZmlsZS1uYW1lIChmaWxlLWV4aXN0cy1wIGJ1ZmZlci1maWxlLW5hbWUpKQogCQkg ICAgKHJlYWQtZmlsZS1uYW1lCgo9PT0gbW9kaWZpZWQgZmlsZSAnbGlzcC93aGl0ZXNwYWNlLmVs JwotLS0gbGlzcC93aGl0ZXNwYWNlLmVsCTIwMTMtMDEtMDEgMDk6MTE6MDUgKzAwMDAKKysrIGxp c3Avd2hpdGVzcGFjZS5lbAkyMDEzLTAxLTExIDE3OjQyOjI4ICswMDAwCkBAIC0xMjcxLDE5ICsx MjcxLDE5IEBACiAKIChkZWZ2YXIgd2hpdGVzcGFjZS1wb2ludCAocG9pbnQpCiAgICJVc2VkIHRv IHNhdmUgbG9jYWxseSBjdXJyZW50IHBvaW50IHZhbHVlLgotVXNlZCBieSBgd2hpdGVzcGFjZS10 cmFpbGluZy1yZWdleHAnIGZ1bmN0aW9uICh3aGljaCBzZWUpLiIpCitVc2VkIGJ5IGZ1bmN0aW9u IGB3aGl0ZXNwYWNlLXRyYWlsaW5nLXJlZ2V4cCcgKHdoaWNoIHNlZSkuIikKIAogKGRlZnZhciB3 aGl0ZXNwYWNlLWZvbnQtbG9jay1yZWZvbnRpZnkgbmlsCiAgICJVc2VkIHRvIHNhdmUgbG9jYWxs eSB0aGUgZm9udC1sb2NrIHJlZm9udGlmeSBzdGF0ZS4KLVVzZWQgYnkgYHdoaXRlc3BhY2UtcG9z dC1jb21tYW5kLWhvb2snIGZ1bmN0aW9uICh3aGljaCBzZWUpLiIpCitVc2VkIGJ5IGZ1bmN0aW9u IGB3aGl0ZXNwYWNlLXBvc3QtY29tbWFuZC1ob29rJyAod2hpY2ggc2VlKS4iKQogCiAoZGVmdmFy IHdoaXRlc3BhY2UtYm9iLW1hcmtlciBuaWwKICAgIlVzZWQgdG8gc2F2ZSBsb2NhbGx5IHRoZSBi b2IgbWFya2VyIHZhbHVlLgotVXNlZCBieSBgd2hpdGVzcGFjZS1wb3N0LWNvbW1hbmQtaG9vaycg ZnVuY3Rpb24gKHdoaWNoIHNlZSkuIikKK1VzZWQgYnkgZnVuY3Rpb24gYHdoaXRlc3BhY2UtcG9z dC1jb21tYW5kLWhvb2snICh3aGljaCBzZWUpLiIpCiAKIChkZWZ2YXIgd2hpdGVzcGFjZS1lb2It bWFya2VyIG5pbAogICAiVXNlZCB0byBzYXZlIGxvY2FsbHkgdGhlIGVvYiBtYXJrZXIgdmFsdWUu Ci1Vc2VkIGJ5IGB3aGl0ZXNwYWNlLXBvc3QtY29tbWFuZC1ob29rJyBmdW5jdGlvbiAod2hpY2gg c2VlKS4iKQorVXNlZCBieSBmdW5jdGlvbiBgd2hpdGVzcGFjZS1wb3N0LWNvbW1hbmQtaG9vaycg KHdoaWNoIHNlZSkuIikKIAogKGRlZnZhciB3aGl0ZXNwYWNlLWJ1ZmZlci1jaGFuZ2VkIG5pbAog ICAiVXNlZCB0byBpbmRpY2F0ZSBsb2NhbGx5IGlmIGJ1ZmZlciBjaGFuZ2VkLgoKPT09IG1vZGlm aWVkIGZpbGUgJ3NyYy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIwMTMtMDEtMTEgMTM6 MjU6MTAgKzAwMDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxMy0wMS0xMSAxNzo0MjoyOCArMDAwMApA QCAtMCwwICswLDExIEBACisyMDEzLTAxLTExICBBYXJvbiBTLiBIYXdsZXkgIDxBYXJvbi5IYXds ZXlAdnRpbmZvLmNvbT4KKworCSogaW5zZGVsLmMgKEZjb21iaW5lX2FmdGVyX2NoYW5nZV9leGVj dXRlLCBzeW1zX29mX2luc2RlbCk6IEZpeAorCSBhbWJpZ3VvdXMgZG9jIHN0cmluZyBjcm9zcy1y ZWZlcmVuY2UocykuCisKKwkqIGtleWJvYXJkLmMgKEZjb21tYW5kX2V4ZWN1dGUsIHN5bXNfb2Zf a2V5Ym9hcmQpOiBGaXggYW1iaWd1b3VzCisJIGRvYyBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNlKHMp LgorCisJKiB3aW5kb3cuYyAoRndpbmRvd19wb2ludCwgc3ltc19vZl93aW5kb3cpOiBGaXggYW1i aWd1b3VzIGRvYworCSBzdHJpbmcgY3Jvc3MtcmVmZXJlbmNlKHMpLgorCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3JjL2luc2RlbC5jJwotLS0gc3JjL2luc2RlbC5jCTIwMTMtMDEtMTEgMTM6MjU6MTAg KzAwMDAKKysrIHNyYy9pbnNkZWwuYwkyMDEzLTAxLTExIDE3OjQyOjI4ICswMDAwCkBAIC0yMDg0 LDcgKzIwODQsNyBAQAogCiBERUZVTiAoImNvbWJpbmUtYWZ0ZXItY2hhbmdlLWV4ZWN1dGUiLCBG Y29tYmluZV9hZnRlcl9jaGFuZ2VfZXhlY3V0ZSwKICAgICAgICBTY29tYmluZV9hZnRlcl9jaGFu Z2VfZXhlY3V0ZSwgMCwgMCwgMCwKLSAgICAgICBkb2M6IC8qIFRoaXMgZnVuY3Rpb24gaXMgZm9y IHVzZSBpbnRlcm5hbGx5IGluIGBjb21iaW5lLWFmdGVyLWNoYW5nZS1jYWxscycuICAqLykKKyAg ICAgICBkb2M6IC8qIFRoaXMgZnVuY3Rpb24gaXMgZm9yIHVzZSBpbnRlcm5hbGx5IGluIHRoZSBm dW5jdGlvbiBgY29tYmluZS1hZnRlci1jaGFuZ2UtY2FsbHMnLiAgKi8pCiAgICh2b2lkKQogewog ICBwdHJkaWZmX3QgY291bnQgPSBTUEVDUERMX0lOREVYICgpOwpAQCAtMjE3Niw3ICsyMTc2LDcg QEAKICAgY29tYmluZV9hZnRlcl9jaGFuZ2VfYnVmZmVyID0gUW5pbDsKIAogICBERUZWQVJfTElT UCAoImNvbWJpbmUtYWZ0ZXItY2hhbmdlLWNhbGxzIiwgVmNvbWJpbmVfYWZ0ZXJfY2hhbmdlX2Nh bGxzLAotCSAgICAgICBkb2M6IC8qIFVzZWQgaW50ZXJuYWxseSBieSB0aGUgYGNvbWJpbmUtYWZ0 ZXItY2hhbmdlLWNhbGxzJyBtYWNyby4gICovKTsKKwkgICAgICAgZG9jOiAvKiBVc2VkIGludGVy bmFsbHkgYnkgdGhlIGZ1bmN0aW9uIGBjb21iaW5lLWFmdGVyLWNoYW5nZS1jYWxscycgbWFjcm8u ICAqLyk7CiAgIFZjb21iaW5lX2FmdGVyX2NoYW5nZV9jYWxscyA9IFFuaWw7CiAKICAgREVGVkFS X0JPT0wgKCJpbmhpYml0LW1vZGlmaWNhdGlvbi1ob29rcyIsIGluaGliaXRfbW9kaWZpY2F0aW9u X2hvb2tzLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9rZXlib2FyZC5jJwotLS0gc3JjL2tleWJv YXJkLmMJMjAxMy0wMS0wOCAxNjo1MToxMSArMDAwMAorKysgc3JjL2tleWJvYXJkLmMJMjAxMy0w MS0xMSAxNzo0MjoyOSArMDAwMApAQCAtMTAxNzAsNyArMTAxNzAsNyBAQAogICAgICAgIGRvYzog LyogRXhlY3V0ZSBDTUQgYXMgYW4gZWRpdG9yIGNvbW1hbmQuCiBDTUQgbXVzdCBiZSBhIHN5bWJv bCB0aGF0IHNhdGlzZmllcyB0aGUgYGNvbW1hbmRwJyBwcmVkaWNhdGUuCiBPcHRpb25hbCBzZWNv bmQgYXJnIFJFQ09SRC1GTEFHIG5vbi1uaWwKLW1lYW5zIHVuY29uZGl0aW9uYWxseSBwdXQgdGhp cyBjb21tYW5kIGluIGBjb21tYW5kLWhpc3RvcnknLgorbWVhbnMgdW5jb25kaXRpb25hbGx5IHB1 dCB0aGlzIGNvbW1hbmQgaW4gdGhlIHZhcmlhYmxlIGBjb21tYW5kLWhpc3RvcnknLgogT3RoZXJ3 aXNlLCB0aGF0IGlzIGRvbmUgb25seSBpZiBhbiBhcmcgaXMgcmVhZCB1c2luZyB0aGUgbWluaWJ1 ZmZlci4KIFRoZSBhcmd1bWVudCBLRVlTIHNwZWNpZmllcyB0aGUgdmFsdWUgdG8gdXNlIGluc3Rl YWQgb2YgKHRoaXMtY29tbWFuZC1rZXlzKQogd2hlbiByZWFkaW5nIHRoZSBhcmd1bWVudHM7IGlm IGl0IGlzIG5pbCwgKHRoaXMtY29tbWFuZC1rZXlzKSBpcyB1c2VkLgpAQCAtMTIwNTUsOCArMTIw NTUsOCBAQAogCSAgICAgICBWc2F2ZWRfcmVnaW9uX3NlbGVjdGlvbiwKIAkgICAgICAgZG9jOiAv KiBDb250ZW50cyBvZiBhY3RpdmUgcmVnaW9uIHByaW9yIHRvIGJ1ZmZlciBtb2RpZmljYXRpb24u CiBJZiBgc2VsZWN0LWFjdGl2ZS1yZWdpb25zJyBpcyBub24tbmlsLCBFbWFjcyBzZXRzIHRoaXMg dG8gdGhlCi10ZXh0IGluIHRoZSByZWdpb24gYmVmb3JlIG1vZGlmeWluZyB0aGUgYnVmZmVyLiAg VGhlIG5leHQKLWBkZWFjdGl2YXRlLW1hcmsnIGNhbGwgdXNlcyB0aGlzIHRvIHNldCB0aGUgd2lu ZG93IHNlbGVjdGlvbi4gICovKTsKK3RleHQgaW4gdGhlIHJlZ2lvbiBiZWZvcmUgbW9kaWZ5aW5n IHRoZSBidWZmZXIuICBUaGUgbmV4dCBjYWxsIHRvCit0aGUgZnVuY3Rpb24gYGRlYWN0aXZhdGUt bWFyaycgdXNlcyB0aGlzIHRvIHNldCB0aGUgd2luZG93IHNlbGVjdGlvbi4gICovKTsKICAgVnNh dmVkX3JlZ2lvbl9zZWxlY3Rpb24gPSBRbmlsOwogCiAgIERFRlZBUl9MSVNQICgic2VsZWN0aW9u LWluaGliaXQtdXBkYXRlLWNvbW1hbmRzIiwKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvd2luZG93 LmMnCi0tLSBzcmMvd2luZG93LmMJMjAxMy0wMS0wMiAxNjoxMzowNCArMDAwMAorKysgc3JjL3dp bmRvdy5jCTIwMTMtMDEtMTEgMTc6NDI6MjkgKzAwMDAKQEAgLTE0MzYsNyArMTQzNiw3IEBACiAK IE5vdGUgdGhhdCwgd2hlbiBXSU5ET1cgaXMgc2VsZWN0ZWQsIHRoZSB2YWx1ZSByZXR1cm5lZCBp cyB0aGUgc2FtZSBhcwogdGhhdCByZXR1cm5lZCBieSBgcG9pbnQnIGZvciBXSU5ET1cncyBidWZm ZXIuICBJdCB3b3VsZCBiZSBtb3JlIHN0cmljdGx5Ci1jb3JyZWN0IHRvIHJldHVybiB0aGUgYHRv cC1sZXZlbCcgdmFsdWUgb2YgYHBvaW50Jywgb3V0c2lkZSBvZiBhbnkKK2NvcnJlY3QgdG8gcmV0 dXJuIHRoZSB0b3AtbGV2ZWwgdmFsdWUgb2YgYHBvaW50Jywgb3V0c2lkZSBvZiBhbnkKIGBzYXZl LWV4Y3Vyc2lvbicgZm9ybXMuICBCdXQgdGhhdCBpcyBoYXJkIHRvIGRlZmluZS4gICovKQogICAo TGlzcF9PYmplY3Qgd2luZG93KQogewpAQCAtNjc5Myw3ICs2NzkzLDggQEAKIAogT3RoZXIgdmFs dWVzIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4KIAotVGhpcyB2YXJpYWJsZSB0YWtlcyBu byBlZmZlY3QgaWYgYHdpbmRvdy1jb21iaW5hdGlvbi1saW1pdCcgaXMgbm9uLW5pbC4gICovKTsK K1RoaXMgdmFyaWFibGUgdGFrZXMgbm8gZWZmZWN0IGlmIHRoZSB2YXJpYWJsZSBgd2luZG93LWNv bWJpbmF0aW9uLWxpbWl0JyBpcworbm9uLW5pbC4gICovKTsKICAgVndpbmRvd19jb21iaW5hdGlv bl9yZXNpemUgPSBRbmlsOwogCiAgIERFRlZBUl9MSVNQICgid2luZG93LWNvbWJpbmF0aW9uLWxp bWl0IiwgVndpbmRvd19jb21iaW5hdGlvbl9saW1pdCwKCg== --089e010d8aea78d8ae04d30756c0-- From debbugs-submit-bounces@debbugs.gnu.org Fri Jan 11 18:09:51 2013 Received: (at 12686-done) by debbugs.gnu.org; 11 Jan 2013 23:09:51 +0000 Received: from localhost ([127.0.0.1]:55874 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TtnjS-0000y9-Pw for submit@debbugs.gnu.org; Fri, 11 Jan 2013 18:09:51 -0500 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:21325) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TtnjR-0000xw-Bv for 12686-done@debbugs.gnu.org; Fri, 11 Jan 2013 18:09:49 -0500 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtkGAG6Zu09MCpYP/2dsb2JhbABEgXuyFoEIghEFAQUZPSMQCzQSFBgNJIVcB4IoFroJkEQDiEKacYFYgwc X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="212336334" Received: from 76-10-150-15.dsl.teksavvy.com (HELO pastel.home) ([76.10.150.15]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 11 Jan 2013 18:09:34 -0500 Received: by pastel.home (Postfix, from userid 20848) id 2F7C25943D; Fri, 11 Jan 2013 18:09:34 -0500 (EST) From: Stefan Monnier To: "Aaron S. Hawley" Subject: Re: bug#12686: PATCH: ambiguous help doc strings Message-ID: References: <87wqyh7i20.fsf@mail.jurta.org> <45567D843F264708B215C86AABDF77C3@us.oracle.com> <5EF25F55AEE540B6850C6A7A12D007C4@us.oracle.com> Date: Fri, 11 Jan 2013 18:09:34 -0500 In-Reply-To: (Aaron S. Hawley's message of "Fri, 11 Jan 2013 13:19:35 -0500") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 12686-done Cc: 12686-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) Thank you, installed, Stefan From unknown Thu Jun 19 13:54:36 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 09 Feb 2013 12:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator