From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lester Longley Subject: Bug: error in org-table-justify-field-maybe - in conjunction with org-sbe [9.3.6 (9.3.6-elpa @ ~/.emacs.d/elpa/org-9.3.6/)] Date: Sat, 29 Feb 2020 08:31:59 -0500 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000031c3be059fb6fbd2" Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:36585) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j82E9-0008Qu-E5 for emacs-orgmode@gnu.org; Sat, 29 Feb 2020 08:32:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j82E1-0006rh-KP for emacs-orgmode@gnu.org; Sat, 29 Feb 2020 08:32:20 -0500 Received: from mail-qk1-x741.google.com ([2607:f8b0:4864:20::741]:39133) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j82E0-0006oL-UO for emacs-orgmode@gnu.org; Sat, 29 Feb 2020 08:32:13 -0500 Received: by mail-qk1-x741.google.com with SMTP id e16so5795300qkl.6 for ; Sat, 29 Feb 2020 05:32:12 -0800 (PST) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane-mx.org@gnu.org Sender: "Emacs-orgmode" To: emacs-orgmode@gnu.org --00000000000031c3be059fb6fbd2 Content-Type: multipart/alternative; boundary="00000000000031c3bd059fb6fbd0" --00000000000031c3bd059fb6fbd0 Content-Type: text/plain; charset="UTF-8" Hello, I am encountering an error when using this .org code: ---------------------------------------------------------------------- | abc | hello | #+TBLFM: :: $2 = '(org-sbe hello_world) #+NAME: hello_world #+BEGIN_SRC shell -n echo "hello" #+END_SRC ---------------------------------------------------------------------- The error can be reproduced as follows: (1) setup: (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t) (shell . t))) (2) with position at beg of table - C-c C-c - succeeds (3) with position (still) at beg of table - C-c C-c (again) - fails, with Backtrace as attached. The error is from this line in function "org-table-justify-field-maybe()" of "org-table.el": ((<= (org-string-width new) width) ... where "width" is nil. It seems to be caused by a wrong state of variable "org-table-last-column-widths". After the 1st C-c C-c, org-table-last-column-widths contains: "(3 5)" - correct After the 2nd C-c C-c, org-table-last-column-widths contains: "(5)" - wrong The latter value results, I think, from a prior invocation of "org-table-import" overwriting "org-table-last-column-widths". (There are other ways to trigger the error; this is the simplest recipe I have found.) Thanks for your help. Regards, Lester Emacs : GNU Emacs 25.1.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.11) of 2017-09-15, modified by Debian Package: Org mode version 9.3.6 (9.3.6-elpa @ ~/.emacs.d/elpa/org-9.3.6/) current state: ============== (setq org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate) org-occur-hook '(org-first-headline-recenter) org-metaup-hook '(org-babel-load-in-session-maybe) org-confirm-shell-link-function 'yes-or-no-p org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) org-agenda-before-write-hook '(org-agenda-add-entry-text) org-babel-pre-tangle-hook '(save-buffer) org-mode-hook '((closure (org--rds reftex-docstruct-symbol org-element-greater-elements org-clock-history org-agenda-current-date org-with-time org-defdecode org-def org-read-date-inactive org-ans2 org-ans1 org-columns-current-fmt-compiled org-clock-current-task org-clock-effort org-agenda-skip-function org-agenda-skip-comment-trees org-agenda-archives-mode org-end-time-was-given org-time-was-given org-log-note-extra org-log-note-purpose org-log-post-message org-last-inserted-timestamp org-last-changed-timestamp org-entry-property-inherited-from org-blocked-by-checkboxes org-state org-agenda-headline-snapshot-before-repeat org-capture-last-stored-marker org-agenda-start-on-weekday org-agenda-buffer-tmp-name org-priority-regexp buffer-face-mode-face org-tbl-menu org-org-menu org-struct-menu org-entities org-last-state org-id-track-globally org-clock-start-time texmathp-why remember-data-file org-agenda-tags-todo-honor-ignore-options iswitchb-temp-buflist calc-embedded-open-mode calc-embedded-open-formula calc-embedded-close-formula align-mode-rules-list org-emphasis-alist org-emphasis-regexp-components org-export-registered-backends org-modules org-babel-load-languages org-indent-indentation-per-level org-element-paragraph-separate ffap-url-regexp org-inlinetask-min-level t) nil (add-hook (quote change-major-mode-hook) (quote org-show-all) (quote append) (quote local)) ) (closure (org-src-window-setup *this* org-babel-confirm-evaluate-answer-no org-src-preserve-indentation org-src-lang-modes org-edit-src-content-indentation org-babel-library-of-babel t) nil (add-hook (quote change-major-mode-hook) (quote org-babel-show-result-all) (quote append) (quote local)) ) org-babel-result-hide-spec org-babel-hide-all-hashes) org-bibtex-headline-format-function '(closure (org-id-locations org-agenda-search-view-always-boolean org-agenda-overriding-header t) (entry) (cdr (assq :title entry))) org-archive-hook '(org-attach-archive-delete-maybe) org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-show-empty-lines org-optimize-window-after-visibility-change) org-link-shell-confirm-function 'yes-or-no-p org-link-elisp-confirm-function 'yes-or-no-p org-table-automatic-realign nil org-confirm-elisp-link-function 'yes-or-no-p org-metadown-hook '(org-babel-pop-to-session-maybe) org-link-parameters '(("attachment" :follow org-attach-open-link :export org-attach-export-link :complete org-attach-complete-link) ("id" :follow org-id-open) ("eww" :follow eww :store org-eww-store-link) ("rmail" :follow org-rmail-open :store org-rmail-store-link) ("mhe" :follow org-mhe-open :store org-mhe-store-link) ("irc" :follow org-irc-visit :store org-irc-store-link :export org-irc-export) ("info" :follow org-info-open :export org-info-export :store org-info-store-link) ("gnus" :follow org-gnus-open :store org-gnus-store-link) ("docview" :follow org-docview-open :export org-docview-export :store org-docview-store-link) ("bibtex" :follow org-bibtex-open :store org-bibtex-store-link) ("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete org-bbdb-complete-link :store org-bbdb-store-link) ("w3m" :store org-w3m-store-link) ("file+sys") ("file+emacs") ("shell" :follow org-link--open-shell) ("news" :follow (closure ((scheme . "news") (--dolist-tail--) org-ts-regexp org-time-stamp-formats org-src-source-file-name org-outline-regexp-bol org-inhibit-startup org-id-link-to-org-use-id org-highlight-links org-comment-string org-agenda-buffer-name clean-buffer-list-kill-buffer-names t) (url) (browse-url (concat scheme ":" url))) ) ("mailto" :follow (closure ((scheme . "mailto") (--dolist-tail--) org-ts-regexp org-time-stamp-formats org-src-source-file-name org-outline-regexp-bol org-inhibit-startup org-id-link-to-org-use-id org-highlight-links org-comment-string org-agenda-buffer-name clean-buffer-list-kill-buffer-names t) (url) (browse-url (concat scheme ":" url))) ) ("https" :follow (closure ((scheme . "https") (--dolist-tail--) org-ts-regexp org-time-stamp-formats org-src-source-file-name org-outline-regexp-bol org-inhibit-startup org-id-link-to-org-use-id org-highlight-links org-comment-string org-agenda-buffer-name clean-buffer-list-kill-buffer-names t) (url) (browse-url (concat scheme ":" url))) ) ("http" :follow (closure ((scheme . "http") (--dolist-tail--) org-ts-regexp org-time-stamp-formats org-src-source-file-name org-outline-regexp-bol org-inhibit-startup org-id-link-to-org-use-id org-highlight-links org-comment-string org-agenda-buffer-name clean-buffer-list-kill-buffer-names t) (url) (browse-url (concat scheme ":" url))) ) ("ftp" :follow (closure ((scheme . "ftp") (--dolist-tail--) org-ts-regexp org-time-stamp-formats org-src-source-file-name org-outline-regexp-bol org-inhibit-startup org-id-link-to-org-use-id org-highlight-links org-comment-string org-agenda-buffer-name clean-buffer-list-kill-buffer-names t) (url) (browse-url (concat scheme ":" url))) ) ("help" :follow org-link--open-help) ("file" :complete org-link-complete-file) ("elisp" :follow org-link--open-elisp) ("doi" :follow org-link--open-doi)) org-babel-load-languages '((emacs-lisp . t) (shell . t)) org-clock-out-hook '(org-clock-remove-empty-clock-drawer) ) --00000000000031c3bd059fb6fbd0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

I am encountering an error when = using this .org code:

----------------------------= ------------------------------------------
| abc | hello |
#+T= BLFM: :: $2 =3D '(org-sbe hello_world)

#+NAME: hello_world
#+= BEGIN_SRC shell -n
=C2=A0 echo "hello"
#+END_SRC
--= --------------------------------------------------------------------
<= div>

The error can be reproduced as follows:
=

(1) setup: (org-babel-do-load-languages 'org-babel-= load-languages '((emacs-lisp . t) (shell . t)))
(2) with posi= tion at beg of table - C-c C-c - succeeds
(3) with position (stil= l) at beg of table - C-c C-c (again) - fails, with Backtrace as attached.

The error is from this line in function "org-t= able-justify-field-maybe()" of "org-table.el":
=C2=A0 =C2=A0 =C2=A0((<=3D (org-string-width new) width)
=

... where "width" is nil.
It seems to be caused by a wrong state of variable "org-ta= ble-last-column-widths".

After the 1st C-c C-= c,=C2=A0org-table-last-column-widths contains: "(3 5)" - correct<= /div>
After the 2nd C-c C-c,=C2=A0org-table-last-column-widths con= tains: "(5)" - wrong

Th= e latter value results, I think, from a prior invocation of "org-table= -import" overwriting "org-table-last-column-widths".

(There are other ways to trigger the error; this is = the simplest recipe I have found.)

Thanks for your help.

Regards,
Lester<= /div>

Emacs =C2=A0: GNU Emacs 25.1.1 (x86_64-pc-linux-gnu, GT= K+ Version 3.22.11)
=C2=A0of 2017-09-15, modified by Debian
Package: = Org mode version 9.3.6 (9.3.6-elpa @ ~/.emacs.d/elpa/org-9.3.6/)

cur= rent state:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
(setq
=C2= =A0org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-he= ader-arg-expand)
=C2=A0org-speed-command-hook '(org-speed-command-ac= tivate org-babel-speed-command-activate)
=C2=A0org-occur-hook '(org-= first-headline-recenter)
=C2=A0org-metaup-hook '(org-babel-load-in-s= ession-maybe)
=C2=A0org-confirm-shell-link-function 'yes-or-no-p
= =C2=A0org-src-mode-hook '(org-src-babel-configure-edit-buffer
=C2= =A0 =C2=A0 org-src-mode-configure-edit-buffer)
=C2=A0org-agenda-before-w= rite-hook '(org-agenda-add-entry-text)
=C2=A0org-babel-pre-tangle-ho= ok '(save-buffer)
=C2=A0org-mode-hook '((closure
=C2=A0(or= g--rds reftex-docstruct-symbol org-element-greater-elements
=C2=A0 or= g-clock-history org-agenda-current-date org-with-time
=C2=A0 org-defd= ecode org-def org-read-date-inactive org-ans2 org-ans1
=C2=A0 org-col= umns-current-fmt-compiled org-clock-current-task
=C2=A0 org-clock-eff= ort org-agenda-skip-function
=C2=A0 org-agenda-skip-comment-trees org= -agenda-archives-mode
=C2=A0 org-end-time-was-given org-time-was-give= n org-log-note-extra
=C2=A0 org-log-note-purpose org-log-post-message=
=C2=A0 org-last-inserted-timestamp org-last-changed-timestamp
= =C2=A0 org-entry-property-inherited-from org-blocked-by-checkboxes
= =C2=A0 org-state org-agenda-headline-snapshot-before-repeat
=C2=A0 or= g-capture-last-stored-marker org-agenda-start-on-weekday
=C2=A0 org-a= genda-buffer-tmp-name org-priority-regexp buffer-face-mode-face
=C2= =A0 org-tbl-menu org-org-menu org-struct-menu org-entities
=C2=A0 org= -last-state org-id-track-globally org-clock-start-time
=C2=A0 texmath= p-why remember-data-file
=C2=A0 org-agenda-tags-todo-honor-ignore-opt= ions iswitchb-temp-buflist
=C2=A0 calc-embedded-open-mode calc-embedd= ed-open-formula
=C2=A0 calc-embedded-close-formula align-mode-rules-l= ist org-emphasis-alist
=C2=A0 org-emphasis-regexp-components org-expo= rt-registered-backends
=C2=A0 org-modules org-babel-load-languages =C2=A0 org-indent-indentation-per-level org-element-paragraph-separate<= br> =C2=A0 ffap-url-regexp org-inlinetask-min-level t)
=C2=A0nil =C2=A0(add-hook (quote change-major-mode-hook) (quote org-show-all)
= =C2=A0 (quote append) (quote local))
=C2=A0)
(closure
= =C2=A0(org-src-window-setup *this* org-babel-confirm-evaluate-answer-no
= =C2=A0 org-src-preserve-indentation org-src-lang-modes
=C2=A0 org-= edit-src-content-indentation org-babel-library-of-babel t)
=C2=A0nil<= br> =C2=A0(add-hook (quote change-major-mode-hook)
=C2=A0 (quote or= g-babel-show-result-all) (quote append) (quote local))
=C2=A0)
= org-babel-result-hide-spec org-babel-hide-all-hashes)
=C2=A0org-bibtex-h= eadline-format-function '(closure
=C2=A0 =C2=A0 =C2=A0 (org-id-= locations
org-agenda-search-view-always-boolean
org-agenda-= overriding-header t)
=C2=A0 =C2=A0 =C2=A0 (entry) (cdr (assq :title= entry)))
=C2=A0org-archive-hook '(org-attach-archive-delete-maybe)<= br>=C2=A0org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-sh= ow-empty-lines
=C2=A0org-optimize-window-after-visibility-change)
= =C2=A0org-link-shell-confirm-function 'yes-or-no-p
=C2=A0org-link-el= isp-confirm-function 'yes-or-no-p
=C2=A0org-table-automatic-realign = nil
=C2=A0org-confirm-elisp-link-function 'yes-or-no-p
=C2=A0org-= metadown-hook '(org-babel-pop-to-session-maybe)
=C2=A0org-link-param= eters '(("attachment" :follow org-attach-open-link :export org-attach-export-link :complete org-attach-complete-link)
=C2=A0= =C2=A0 =C2=A0 ("id" :follow org-id-open)
=C2=A0 =C2=A0 =C2= =A0 ("eww" :follow eww :store org-eww-store-link)
=C2=A0 = =C2=A0 =C2=A0 ("rmail" :follow org-rmail-open :store org-rmail-st= ore-link)
=C2=A0 =C2=A0 =C2=A0 ("mhe" :follow org-mhe-open = :store org-mhe-store-link)
=C2=A0 =C2=A0 =C2=A0 ("irc" :fol= low org-irc-visit :store org-irc-store-link :export
org-irc-export) =C2=A0 =C2=A0 =C2=A0 ("info" :follow org-info-open :export o= rg-info-export :store
org-info-store-link)
=C2=A0 =C2=A0 =C2=A0= ("gnus" :follow org-gnus-open :store org-gnus-store-link)
= =C2=A0 =C2=A0 =C2=A0 ("docview" :follow org-docview-open :export = org-docview-export
:store org-docview-store-link)
=C2=A0 =C2=A0= =C2=A0 ("bibtex" :follow org-bibtex-open :store org-bibtex-store= -link)
=C2=A0 =C2=A0 =C2=A0 ("bbdb" :follow org-bbdb-open := export org-bbdb-export :complete
org-bbdb-complete-link :store org-bb= db-store-link)
=C2=A0 =C2=A0 =C2=A0 ("w3m" :store org-w3m-s= tore-link) ("file+sys") ("file+emacs")
=C2=A0 =C2= =A0 =C2=A0 ("shell" :follow org-link--open-shell)
=C2=A0 = =C2=A0 =C2=A0 ("news" :follow
(closure
((scheme . &q= uot;news") (--dolist-tail--) org-ts-regexp
=C2=A0org-time-stamp= -formats org-src-source-file-name
=C2=A0org-outline-regexp-bol org-i= nhibit-startup
=C2=A0org-id-link-to-org-use-id org-highlight-links =C2=A0org-comment-string org-agenda-buffer-name
=C2=A0clean-bu= ffer-list-kill-buffer-names t)
(url) (browse-url (concat scheme &quo= t;:" url)))
)
=C2=A0 =C2=A0 =C2=A0 ("mailto" :fo= llow
(closure
((scheme . "mailto") (--dolist-tail--)= org-ts-regexp
=C2=A0org-time-stamp-formats org-src-source-file-name=
=C2=A0org-outline-regexp-bol org-inhibit-startup
=C2=A0org-i= d-link-to-org-use-id org-highlight-links
=C2=A0org-comment-string or= g-agenda-buffer-name
=C2=A0clean-buffer-list-kill-buffer-names t) (url) (browse-url (concat scheme ":" url)))
)
= =C2=A0 =C2=A0 =C2=A0 ("https" :follow
(closure
((sch= eme . "https") (--dolist-tail--) org-ts-regexp
=C2=A0org-t= ime-stamp-formats org-src-source-file-name
=C2=A0org-outline-regexp-= bol org-inhibit-startup
=C2=A0org-id-link-to-org-use-id org-highligh= t-links
=C2=A0org-comment-string org-agenda-buffer-name
=C2= =A0clean-buffer-list-kill-buffer-names t)
(url) (browse-url (concat = scheme ":" url)))
)
=C2=A0 =C2=A0 =C2=A0 ("http&= quot; :follow
(closure
((scheme . "http") (--dolist-= tail--) org-ts-regexp
=C2=A0org-time-stamp-formats org-src-source-fi= le-name
=C2=A0org-outline-regexp-bol org-inhibit-startup
=C2= =A0org-id-link-to-org-use-id org-highlight-links
=C2=A0org-comment-s= tring org-agenda-buffer-name
=C2=A0clean-buffer-list-kill-buffer-nam= es t)
(url) (browse-url (concat scheme ":" url)))
)<= br> =C2=A0 =C2=A0 =C2=A0 ("ftp" :follow
(closure
(= (scheme . "ftp") (--dolist-tail--) org-ts-regexp
=C2=A0org= -time-stamp-formats org-src-source-file-name
=C2=A0org-outline-regex= p-bol org-inhibit-startup
=C2=A0org-id-link-to-org-use-id org-highli= ght-links
=C2=A0org-comment-string org-agenda-buffer-name
=C2= =A0clean-buffer-list-kill-buffer-names t)
(url) (browse-url (concat = scheme ":" url)))
)
=C2=A0 =C2=A0 =C2=A0 ("help&= quot; :follow org-link--open-help)
=C2=A0 =C2=A0 =C2=A0 ("file&q= uot; :complete org-link-complete-file)
=C2=A0 =C2=A0 =C2=A0 ("el= isp" :follow org-link--open-elisp)
=C2=A0 =C2=A0 =C2=A0 ("d= oi" :follow org-link--open-doi))
=C2=A0org-babel-load-languages = 9;((emacs-lisp . t) (shell . t))
=C2=A0org-clock-out-hook '(org-cloc= k-remove-empty-clock-drawer)
=C2=A0)

--00000000000031c3bd059fb6fbd0-- --00000000000031c3be059fb6fbd2 Content-Type: text/plain; charset="US-ASCII"; name="bug.backtrace.txt" Content-Disposition: attachment; filename="bug.backtrace.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k77mw8m60 RGVidWdnZXIgZW50ZXJlZC0tTGlzcCBlcnJvcjogKHdyb25nLXR5cGUtYXJndW1lbnQgbnVtYmVy LW9yLW1hcmtlci1wIG5pbCkKICA8PSg1IG5pbCkKICAoY29uZCAob3JnLXRhYmxlLW1heS1uZWVk LXVwZGF0ZSAoZm9ybWF0ICIgJXMgfCIgKG9yIG5ldyBmaWVsZCkpKSAoKG5vdCBwcm9wZXJseS1j bG9zZWRcPykgKHNldHEgb3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSB0KSAoZm9ybWF0ICIgJXMg fCIgKG9yIG5ldyBmaWVsZCkpKSAoKG5vdCBuZXcpIChjb25jYXQgKG9yZy10YWJsZS0tYWxpZ24t ZmllbGQgZmllbGQgd2lkdGggYWxpZ24pICJ8IikpICgoPD0gKG9yZy1zdHJpbmctd2lkdGggbmV3 KSB3aWR0aCkgKGNvbmNhdCAob3JnLXRhYmxlLS1hbGlnbi1maWVsZCBuZXcgd2lkdGggYWxpZ24p ICJ8IikpICh0IChzZXRxIG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgdCkgKGZvcm1hdCAiICVz IHwiIG5ldykpKQogIChwcm9nbiAoY29uZCAob3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSAoZm9y bWF0ICIgJXMgfCIgKG9yIG5ldyBmaWVsZCkpKSAoKG5vdCBwcm9wZXJseS1jbG9zZWRcPykgKHNl dHEgb3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSB0KSAoZm9ybWF0ICIgJXMgfCIgKG9yIG5ldyBm aWVsZCkpKSAoKG5vdCBuZXcpIChjb25jYXQgKG9yZy10YWJsZS0tYWxpZ24tZmllbGQgZmllbGQg d2lkdGggYWxpZ24pICJ8IikpICgoPD0gKG9yZy1zdHJpbmctd2lkdGggbmV3KSB3aWR0aCkgKGNv bmNhdCAob3JnLXRhYmxlLS1hbGlnbi1maWVsZCBuZXcgd2lkdGggYWxpZ24pICJ8IikpICh0IChz ZXRxIG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgdCkgKGZvcm1hdCAiICVzIHwiIG5ldykpKSkK ICAodW53aW5kLXByb3RlY3QgKHByb2duIChjb25kIChvcmctdGFibGUtbWF5LW5lZWQtdXBkYXRl IChmb3JtYXQgIiAlcyB8IiAob3IgbmV3IGZpZWxkKSkpICgobm90IHByb3Blcmx5LWNsb3NlZFw/ KSAoc2V0cSBvcmctdGFibGUtbWF5LW5lZWQtdXBkYXRlIHQpIChmb3JtYXQgIiAlcyB8IiAob3Ig bmV3IGZpZWxkKSkpICgobm90IG5ldykgKGNvbmNhdCAob3JnLXRhYmxlLS1hbGlnbi1maWVsZCBm aWVsZCB3aWR0aCBhbGlnbikgInwiKSkgKCg8PSAob3JnLXN0cmluZy13aWR0aCBuZXcpIHdpZHRo KSAoY29uY2F0IChvcmctdGFibGUtLWFsaWduLWZpZWxkIG5ldyB3aWR0aCBhbGlnbikgInwiKSkg KHQgKHNldHEgb3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSB0KSAoZm9ybWF0ICIgJXMgfCIgbmV3 KSkpKSAoc2V0LW1hdGNoLWRhdGEgc2F2ZS1tYXRjaC1kYXRhLWludGVybmFsIChxdW90ZSBldmFw b3JhdGUpKSkKICAobGV0ICgoc2F2ZS1tYXRjaC1kYXRhLWludGVybmFsIChtYXRjaC1kYXRhKSkp ICh1bndpbmQtcHJvdGVjdCAocHJvZ24gKGNvbmQgKG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUg KGZvcm1hdCAiICVzIHwiIChvciBuZXcgZmllbGQpKSkgKChub3QgcHJvcGVybHktY2xvc2VkXD8p IChzZXRxIG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgdCkgKGZvcm1hdCAiICVzIHwiIChvciBu ZXcgZmllbGQpKSkgKChub3QgbmV3KSAoY29uY2F0IChvcmctdGFibGUtLWFsaWduLWZpZWxkIGZp ZWxkIHdpZHRoIGFsaWduKSAifCIpKSAoKDw9IChvcmctc3RyaW5nLXdpZHRoIG5ldykgd2lkdGgp IChjb25jYXQgKG9yZy10YWJsZS0tYWxpZ24tZmllbGQgbmV3IHdpZHRoIGFsaWduKSAifCIpKSAo dCAoc2V0cSBvcmctdGFibGUtbWF5LW5lZWQtdXBkYXRlIHQpIChmb3JtYXQgIiAlcyB8IiBuZXcp KSkpIChzZXQtbWF0Y2gtZGF0YSBzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgKHF1b3RlIGV2YXBv cmF0ZSkpKSkKICAobGV0KiAoKGFsaWduIChudGggKDEtIGNvbCkgb3JnLXRhYmxlLWxhc3QtYWxp Z25tZW50KSkgKHdpZHRoIChudGggKDEtIGNvbCkgb3JnLXRhYmxlLWxhc3QtY29sdW1uLXdpZHRo cykpIChjZWxsIChtYXRjaC1zdHJpbmcgMCkpIChmaWVsZCAobWF0Y2gtc3RyaW5nIDEpKSAocHJv cGVybHktY2xvc2VkXD8gKC89IChtYXRjaC1iZWdpbm5pbmcgMikgKG1hdGNoLWVuZCAyKSkpIChu ZXctY2VsbCAobGV0ICgoc2F2ZS1tYXRjaC1kYXRhLWludGVybmFsIChtYXRjaC1kYXRhKSkpICh1 bndpbmQtcHJvdGVjdCAocHJvZ24gKGNvbmQgKG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgLi4u KSAoLi4uIC4uLiAuLi4pICguLi4gLi4uKSAoLi4uIC4uLikgKHQgLi4uIC4uLikpKSAoc2V0LW1h dGNoLWRhdGEgc2F2ZS1tYXRjaC1kYXRhLWludGVybmFsIChxdW90ZSBldmFwb3JhdGUpKSkpKSkg KGlmIChlcXVhbCBuZXctY2VsbCBjZWxsKSBuaWwgKGxldCAob3JnLXRhYmxlLW1heS1uZWVkLXVw ZGF0ZSkgKHJlcGxhY2UtbWF0Y2ggbmV3LWNlbGwgdCB0KSkpIChnb3RvLWNoYXIgcG9zKSkKICAo aWYgKG5vdCAobG9va2luZy1hdCAiICpcXChbXnxcbl0qP1xcKSAqXFwofFxcfCRcXCkiKSkgKHNl dHEgb3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSB0KSAobGV0KiAoKGFsaWduIChudGggKDEtIGNv bCkgb3JnLXRhYmxlLWxhc3QtYWxpZ25tZW50KSkgKHdpZHRoIChudGggKDEtIGNvbCkgb3JnLXRh YmxlLWxhc3QtY29sdW1uLXdpZHRocykpIChjZWxsIChtYXRjaC1zdHJpbmcgMCkpIChmaWVsZCAo bWF0Y2gtc3RyaW5nIDEpKSAocHJvcGVybHktY2xvc2VkXD8gKC89IChtYXRjaC1iZWdpbm5pbmcg MikgKG1hdGNoLWVuZCAyKSkpIChuZXctY2VsbCAobGV0ICgoc2F2ZS1tYXRjaC1kYXRhLWludGVy bmFsIChtYXRjaC1kYXRhKSkpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gKGNvbmQgLi4uIC4uLiAu Li4gLi4uIC4uLikpIChzZXQtbWF0Y2gtZGF0YSBzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgKHF1 b3RlIGV2YXBvcmF0ZSkpKSkpKSAoaWYgKGVxdWFsIG5ldy1jZWxsIGNlbGwpIG5pbCAobGV0IChv cmctdGFibGUtbWF5LW5lZWQtdXBkYXRlKSAocmVwbGFjZS1tYXRjaCBuZXctY2VsbCB0IHQpKSkg KGdvdG8tY2hhciBwb3MpKSkKICAocHJvZ24gKHNraXAtY2hhcnMtYmFja3dhcmQgIl58IikgKGlm IChub3QgKGxvb2tpbmctYXQgIiAqXFwoW158XG5dKj9cXCkgKlxcKHxcXHwkXFwpIikpIChzZXRx IG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgdCkgKGxldCogKChhbGlnbiAobnRoICgxLSBjb2wp IG9yZy10YWJsZS1sYXN0LWFsaWdubWVudCkpICh3aWR0aCAobnRoICgxLSBjb2wpIG9yZy10YWJs ZS1sYXN0LWNvbHVtbi13aWR0aHMpKSAoY2VsbCAobWF0Y2gtc3RyaW5nIDApKSAoZmllbGQgKG1h dGNoLXN0cmluZyAxKSkgKHByb3Blcmx5LWNsb3NlZFw/ICgvPSAobWF0Y2gtYmVnaW5uaW5nIDIp IChtYXRjaC1lbmQgMikpKSAobmV3LWNlbGwgKGxldCAoKHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5h bCAuLi4pKSAodW53aW5kLXByb3RlY3QgKHByb2duIC4uLikgKHNldC1tYXRjaC1kYXRhIHNhdmUt bWF0Y2gtZGF0YS1pbnRlcm5hbCAuLi4pKSkpKSAoaWYgKGVxdWFsIG5ldy1jZWxsIGNlbGwpIG5p bCAobGV0IChvcmctdGFibGUtbWF5LW5lZWQtdXBkYXRlKSAocmVwbGFjZS1tYXRjaCBuZXctY2Vs bCB0IHQpKSkgKGdvdG8tY2hhciBwb3MpKSkpCiAgKGlmICg+IGNvbCAwKSAocHJvZ24gKHNraXAt Y2hhcnMtYmFja3dhcmQgIl58IikgKGlmIChub3QgKGxvb2tpbmctYXQgIiAqXFwoW158XG5dKj9c XCkgKlxcKHxcXHwkXFwpIikpIChzZXRxIG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgdCkgKGxl dCogKChhbGlnbiAobnRoICgxLSBjb2wpIG9yZy10YWJsZS1sYXN0LWFsaWdubWVudCkpICh3aWR0 aCAobnRoICgxLSBjb2wpIG9yZy10YWJsZS1sYXN0LWNvbHVtbi13aWR0aHMpKSAoY2VsbCAobWF0 Y2gtc3RyaW5nIDApKSAoZmllbGQgKG1hdGNoLXN0cmluZyAxKSkgKHByb3Blcmx5LWNsb3NlZFw/ ICgvPSAobWF0Y2gtYmVnaW5uaW5nIDIpIChtYXRjaC1lbmQgMikpKSAobmV3LWNlbGwgKGxldCAo Li4uKSAodW53aW5kLXByb3RlY3QgLi4uIC4uLikpKSkgKGlmIChlcXVhbCBuZXctY2VsbCBjZWxs KSBuaWwgKGxldCAob3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSkgKHJlcGxhY2UtbWF0Y2ggbmV3 LWNlbGwgdCB0KSkpIChnb3RvLWNoYXIgcG9zKSkpKSkKICAobGV0ICgocG9zIChwb2ludCkpIChj b2wgKG9yZy10YWJsZS1jdXJyZW50LWNvbHVtbikpKSAoaWYgKD4gY29sIDApIChwcm9nbiAoc2tp cC1jaGFycy1iYWNrd2FyZCAiXnwiKSAoaWYgKG5vdCAobG9va2luZy1hdCAiICpcXChbXnxcbl0q P1xcKSAqXFwofFxcfCRcXCkiKSkgKHNldHEgb3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSB0KSAo bGV0KiAoKGFsaWduIChudGggLi4uIG9yZy10YWJsZS1sYXN0LWFsaWdubWVudCkpICh3aWR0aCAo bnRoIC4uLiBvcmctdGFibGUtbGFzdC1jb2x1bW4td2lkdGhzKSkgKGNlbGwgKG1hdGNoLXN0cmlu ZyAwKSkgKGZpZWxkIChtYXRjaC1zdHJpbmcgMSkpIChwcm9wZXJseS1jbG9zZWRcPyAoLz0gLi4u IC4uLikpIChuZXctY2VsbCAobGV0IC4uLiAuLi4pKSkgKGlmIChlcXVhbCBuZXctY2VsbCBjZWxs KSBuaWwgKGxldCAob3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSkgKHJlcGxhY2UtbWF0Y2ggbmV3 LWNlbGwgdCB0KSkpIChnb3RvLWNoYXIgcG9zKSkpKSkpCiAgKGNvbmQgKChhbmQgKG5vdCBuZXcp IG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUpKSAoKG9yZy1hdC10YWJsZS1obGluZS1wKSkgKChh bmQgKG5vdCBuZXcpIChvciAobm90IChlcSAobWFya2VyLWJ1ZmZlciBvcmctdGFibGUtYWxpZ25l ZC1iZWdpbi1tYXJrZXIpIChjdXJyZW50LWJ1ZmZlcikpKSAoPCAocG9pbnQpIG9yZy10YWJsZS1h bGlnbmVkLWJlZ2luLW1hcmtlcikgKD49IChwb2ludCkgb3JnLXRhYmxlLWFsaWduZWQtZW5kLW1h cmtlcikpKSAoc2V0cSBvcmctdGFibGUtbWF5LW5lZWQtdXBkYXRlIHQpKSAodCAobGV0ICgocG9z IChwb2ludCkpIChjb2wgKG9yZy10YWJsZS1jdXJyZW50LWNvbHVtbikpKSAoaWYgKD4gY29sIDAp IChwcm9nbiAoc2tpcC1jaGFycy1iYWNrd2FyZCAiXnwiKSAoaWYgKG5vdCAobG9va2luZy1hdCAi ICpcXChbXnxcbl0qP1xcKSAqXFwofFxcfCRcXCkiKSkgKHNldHEgb3JnLXRhYmxlLW1heS1uZWVk LXVwZGF0ZSB0KSAobGV0KiAoLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4pIChpZiAuLi4gbmlsIC4u LikgKGdvdG8tY2hhciBwb3MpKSkpKSkpKQogIG9yZy10YWJsZS1qdXN0aWZ5LWZpZWxkLW1heWJl KCJoZWxsbyIpCiAgKHdoaWxlICg+IG5kb3duIDApIChzZXRxIGZpZWxkcyAob3JnLXNwbGl0LXN0 cmluZyAob3JnLXRyaW0gKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAobGluZS1iZWdp bm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikpKSAiICp8ICoiKSkgKGlmIGR1cmF0 aW9uIChzZXRxIGZpZWxkcyAobWFwY2FyIChmdW5jdGlvbiAobGFtYmRhICh4KSAob3JnLXRhYmxl LXRpbWUtc3RyaW5nLXRvLXNlY29uZHMgeCkpKSBmaWVsZHMpKSkgKGlmIChlcSBudW1iZXJzIHQp IChzZXRxIGZpZWxkcyAobWFwY2FyIChmdW5jdGlvbiAobGFtYmRhICh4KSAoaWYgKHN0cmluZy1t YXRjaCAiXFxTLSIgeCkgKG51bWJlci10by1zdHJpbmcgLi4uKSB4KSkpIGZpZWxkcykpKSAoc2V0 cSBuZG93biAoMS0gbmRvd24pKSAoc2V0cSBmb3JtIChjb3B5LXNlcXVlbmNlIGZvcm11bGEpIGxp c3BwIChhbmQgKD4gKGxlbmd0aCBmb3JtKSAyKSAoZXF1YWwgKHN1YnN0cmluZyBmb3JtIDAgMikg IicoIikpKSAoaWYgKGFuZCBsaXNwcCBsaXRlcmFsKSAoc2V0cSBsaXNwcCAocXVvdGUgbGl0ZXJh bCkpKSAod2hpbGUgKHN0cmluZy1tYXRjaCAiW0AkXSMiIGZvcm0pIChzZXRxIGZvcm0gKHJlcGxh Y2UtbWF0Y2ggKGZvcm1hdCAiJWQiIChsZXQgKChzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgLi4u KSkgKHVud2luZC1wcm90ZWN0IChwcm9nbiAuLi4pIChzZXQtbWF0Y2gtZGF0YSBzYXZlLW1hdGNo LWRhdGEtaW50ZXJuYWwgLi4uKSkpKSB0IHQgZm9ybSkpKSAob3JnLXRhYmxlLS1lcnJvci1vbi1v bGQtcm93LXJlZmVyZW5jZXMgZm9ybSkgKHNldHEgZm9ybSAob3JnLXRhYmxlLXJlbW90ZS1yZWZl cmVuY2UtaW5kaXJlY3Rpb24gZm9ybSkpICh3aGlsZSAoc3RyaW5nLW1hdGNoICJcXDxyZW1vdGUo WyAJXSpcXChbXiwpXStcXClbIAldKixbIAldKlxcKFteXG4pXStcXCkpIiBmb3JtKSAoc2V0cSBm b3JtIChyZXBsYWNlLW1hdGNoIChsZXQgKChzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgKG1hdGNo LWRhdGEpKSkgKHVud2luZC1wcm90ZWN0IChwcm9nbiAob3JnLXRhYmxlLW1ha2UtcmVmZXJlbmNl IC4uLiBrZWVwLWVtcHR5IG51bWJlcnMgbGlzcHApKSAoc2V0LW1hdGNoLWRhdGEgc2F2ZS1tYXRj aC1kYXRhLWludGVybmFsIChxdW90ZSBldmFwb3JhdGUpKSkpIHQgdCBmb3JtKSkpICh3aGlsZSAo YW5kIChzdHJpbmctbWF0Y2ggb3JnLXRhYmxlLXJhbmdlLXJlZ2V4cCBmb3JtKSAoPiAobGVuZ3Ro IChtYXRjaC1zdHJpbmcgMCBmb3JtKSkgMSkpIChzZXRxIGZvcm1yZyAobGV0ICgoc2F2ZS1tYXRj aC1kYXRhLWludGVybmFsIChtYXRjaC1kYXRhKSkpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gKG9y Zy10YWJsZS1nZXQtcmFuZ2UgKG1hdGNoLXN0cmluZyAwIGZvcm0pIG9yZy10YWJsZS1jdXJyZW50 LWJlZ2luLXBvcyBuMCkpIChzZXQtbWF0Y2gtZGF0YSBzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwg KHF1b3RlIGV2YXBvcmF0ZSkpKSkpIChzZXRxIGZvcm1ycGwgKGxldCAoKHNhdmUtbWF0Y2gtZGF0 YS1pbnRlcm5hbCAobWF0Y2gtZGF0YSkpKSAodW53aW5kLXByb3RlY3QgKHByb2duIChvcmctdGFi bGUtbWFrZS1yZWZlcmVuY2UgKGlmIGR1cmF0aW9uIC4uLiBmb3JtcmcpIGtlZXAtZW1wdHkgbnVt YmVycyBsaXNwcCkpIChzZXQtbWF0Y2gtZGF0YSBzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgKHF1 b3RlIGV2YXBvcmF0ZSkpKSkpIChpZiAobm90IChsZXQgKChzYXZlLW1hdGNoLWRhdGEtaW50ZXJu YWwgKG1hdGNoLWRhdGEpKSkgKHVud2luZC1wcm90ZWN0IChwcm9nbiAoc3RyaW5nLW1hdGNoIC4u LiBmb3JtcnBsKSkgKHNldC1tYXRjaC1kYXRhIHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAocXVv dGUgZXZhcG9yYXRlKSkpKSkgKHNldHEgZm9ybSAocmVwbGFjZS1tYXRjaCBmb3JtcnBsIHQgdCBm b3JtKSkgKHVzZXItZXJyb3IgIlNwcmVhZHNoZWV0IGVycm9yOiBpbnZhbGlkIHJlZmVyZW5jZSBc IiVzXCIiIGZvcm0pKSkgKHdoaWxlIChzdHJpbmctbWF0Y2ggIlxcJFxcKFxcKFstK11cXCk/WzAt OV0rXFwpXFwuXFwuXFwkXFwoXFwoWy0rXVxcKT9bMC05XStcXCkiIGZvcm0pIChzZXRxIGZvcm0g KHJlcGxhY2UtbWF0Y2ggKGxldCAoKHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAobWF0Y2gtZGF0 YSkpKSAodW53aW5kLXByb3RlY3QgKHByb2duIChvcmctdGFibGUtbWFrZS1yZWZlcmVuY2UgLi4u IGtlZXAtZW1wdHkgbnVtYmVycyBsaXNwcCkpIChzZXQtbWF0Y2gtZGF0YSBzYXZlLW1hdGNoLWRh dGEtaW50ZXJuYWwgKHF1b3RlIGV2YXBvcmF0ZSkpKSkgdCB0IGZvcm0pKSkgKHNldHEgZm9ybTAg Zm9ybSkgKHdoaWxlIChzdHJpbmctbWF0Y2ggIlxcJFxcKFxcKFstK11cXCk/WzAtOV0rXFwpIiBm b3JtKSAoc2V0cSBuICgrIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMSBmb3JtKSkg KGlmIChtYXRjaC1lbmQgMikgbjAgMCkpIHggKG50aCAoMS0gKGlmICg9IG4gMCkgbjAgKG1heCBu IDEpKSkgZmllbGRzKSBmb3JtcnBsIChsZXQgKChzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgKG1h dGNoLWRhdGEpKSkgKHVud2luZC1wcm90ZWN0IChwcm9nbiAob3JnLXRhYmxlLW1ha2UtcmVmZXJl bmNlIHgga2VlcC1lbXB0eSBudW1iZXJzIGxpc3BwKSkgKHNldC1tYXRjaC1kYXRhIHNhdmUtbWF0 Y2gtZGF0YS1pbnRlcm5hbCAocXVvdGUgZXZhcG9yYXRlKSkpKSkgKGlmIChvciAobm90IHgpIChs ZXQgKChzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgKG1hdGNoLWRhdGEpKSkgKHVud2luZC1wcm90 ZWN0IChwcm9nbiAoc3RyaW5nLW1hdGNoIC4uLiBmb3JtcnBsKSkgKHNldC1tYXRjaC1kYXRhIHNh dmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAocXVvdGUgZXZhcG9yYXRlKSkpKSkgKHByb2duICh1c2Vy LWVycm9yICJJbnZhbGlkIGZpZWxkIHNwZWNpZmllciBcIiVzXCIiIChtYXRjaC1zdHJpbmcgMCBm b3JtKSkpKSAoc2V0cSBmb3JtIChyZXBsYWNlLW1hdGNoIGZvcm1ycGwgdCB0IGZvcm0pKSkgKGlm IGxpc3BwIChzZXRxIGV2IChjb25kaXRpb24tY2FzZSBuaWwgKGV2YWwgKGV2YWwgKHJlYWQgZm9y bSkpKSAoZXJyb3IgIiNFUlJPUiIpKSBldiAoaWYgKG51bWJlcnAgZXYpIChudW1iZXItdG8tc3Ry aW5nIGV2KSBldikgZXYgKGlmIGR1cmF0aW9uIChvcmctdGFibGUtdGltZS1zZWNvbmRzLXRvLXN0 cmluZyAoc3RyaW5nLXRvLW51bWJlciBldikgZHVyYXRpb24tb3V0cHV0LWZvcm1hdCkgZXYpKSAo c2V0cSBmb3JtIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgb3JnLXRzLXJlZ2V4cC1pbmFjdGl2 ZSAiPFxcMT4iIGZvcm0pKSAoc2V0cSBmb3JtIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgb3Jn LXRzLXJlZ2V4cCAoZnVuY3Rpb24gKGxhbWJkYSAodHMpIChsZXQgKC4uLikgKGZvcm1hdC10aW1l LXN0cmluZyAuLi4gLi4uKSkpKSBmb3JtIHQgdCkpIChzZXRxIGV2IChpZiAoYW5kIGR1cmF0aW9u IChzdHJpbmctbWF0Y2ggIl5bMC05XSs6WzAtOV0rXFwoPzo6WzAtOV0rXFwpPyQiIGZvcm0pKSBm b3JtIChjYWxjLWV2YWwgKGNvbnMgZm9ybSBvcmctdGJsLWNhbGMtbW9kZXMpIChpZiAoYW5kIChu b3Qga2VlcC1lbXB0eSkgbnVtYmVycykgKHByb2duIChxdW90ZSBudW0pKSkpKSBldiAoaWYgZHVy YXRpb24gKG9yZy10YWJsZS10aW1lLXNlY29uZHMtdG8tc3RyaW5nIChpZiAoc3RyaW5nLW1hdGNo ICJeWzAtOV0rOlswLTldK1xcKD86OlswLTldK1xcKT8kIiBldikgKHN0cmluZy10by1udW1iZXIg KG9yZy10YWJsZS10aW1lLXN0cmluZy10by1zZWNvbmRzIGV2KSkgKHN0cmluZy10by1udW1iZXIg ZXYpKSBkdXJhdGlvbi1vdXRwdXQtZm9ybWF0KSBldikpKSAoaWYgb3JnLXRhYmxlLWZvcm11bGEt ZGVidWcgKHByb2duIChsZXQgKCh3Y2YgKGN1cnJlbnQtd2luZG93LWNvbmZpZ3VyYXRpb24pKSkg KGxldCogKChvbGQtZGlyIGRlZmF1bHQtZGlyZWN0b3J5KSAoYnVmIChzYXZlLWN1cnJlbnQtYnVm ZmVyIC4uLiAuLi4pKSAoc3RhbmRhcmQtb3V0cHV0IGJ1ZikpIChwcm9nMSAocHJvZ24gKHByaW5j IC4uLikgKGlmIC4uLiAuLi4gLi4uKSkgKGludGVybmFsLXRlbXAtb3V0cHV0LWJ1ZmZlci1zaG93 IGJ1ZikpKSAoc2V0cSBidyAoZ2V0LWJ1ZmZlci13aW5kb3cgIipTdWJzdGl0dXRpb24gSGlzdG9y eSoiKSkgKG9yZy1maXQtd2luZG93LXRvLWJ1ZmZlciBidykgKGlmIChhbmQgKGNhbGxlZC1pbnRl cmFjdGl2ZWx5LXAgKHF1b3RlIGFueSkpIChub3QgbmRvd24pKSBuaWwgKGlmIChsZXQgKGluaGli aXQtcmVkaXNwbGF5KSAoeS1vci1uLXAgIkRlYnVnZ2luZyBGb3JtdWxhLiAgQ29udGludWUgdG8g bmV4dD8gIikpIG5pbCAob3JnLXRhYmxlLWFsaWduKSAodXNlci1lcnJvciAiQWJvcnQiKSkgKGRl bGV0ZS13aW5kb3cgYncpIChtZXNzYWdlICIiKSAoc2V0LXdpbmRvdy1jb25maWd1cmF0aW9uIHdj ZikpKSkpIChpZiAoY29uc3AgZXYpIChwcm9nbiAoc2V0cSBmbXQgbmlsIGV2ICIjRVJST1IiKSkp IChvcmctdGFibGUtanVzdGlmeS1maWVsZC1tYXliZSAoZm9ybWF0IG9yZy10YWJsZS1mb3JtdWxh LWZpZWxkLWZvcm1hdCAoY29uZCAoKG5vdCAoc3RyaW5ncCBldikpIGV2KSAoZm10IChmb3JtYXQg Zm10IChzdHJpbmctdG8tbnVtYmVyIGV2KSkpICh0IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcg b3JnLXRzLXJlZ2V4cCAiW1xcMV0iIGV2KSkpKSkgKGlmIChhbmQgZG93biAoPiBuZG93biAwKSAo bG9va2luZy1hdCAiLipcblsgCV0qfFteLV0iKSkgKGNhbGwtaW50ZXJhY3RpdmVseSAocXVvdGUg b3JnLXJldHVybikpIChzZXRxIG5kb3duIDApKSkKICAobGV0KiAoZmllbGRzIChuZG93biAoaWYg KGludGVnZXJwIGFyZykgYXJnIDEpKSAob3JnLXRhYmxlLWF1dG9tYXRpYy1yZWFsaWduIG5pbCkg KGNhc2UtZm9sZC1zZWFyY2ggbmlsKSAoZG93biAoPiBuZG93biAxKSkgKGZvcm11bGEgKGlmIChh bmQgZXF1YXRpb24gc3VwcHJlc3Mtc3RvcmUpIGVxdWF0aW9uIChvcmctdGFibGUtZ2V0LWZvcm11 bGEgZXF1YXRpb24gKGVxdWFsIGFyZyAocXVvdGUgKDQpKSkpKSkgKG4wIChvcmctdGFibGUtY3Vy cmVudC1jb2x1bW4pKSAob3JnLXRibC1jYWxjLW1vZGVzIChjb3B5LXNlcXVlbmNlIG9yZy1jYWxj LWRlZmF1bHQtbW9kZXMpKSAobnVtYmVycyBuaWwpIChrZWVwLWVtcHR5IG5pbCkgbiBmb3JtIGZv cm0wIGZvcm1ycGwgZm9ybXJnIGJ3IGZtdCB4IGV2IG9yaWcgYyBsaXNwcCBsaXRlcmFsIGR1cmF0 aW9uIGR1cmF0aW9uLW91dHB1dC1mb3JtYXQpIChpZiAoc3RyaW5nLW1hdGNoICI7IiBmb3JtdWxh KSAobGV0ICgodG1wIChvcmctc3BsaXQtc3RyaW5nIGZvcm11bGEgIjsiKSkpIChzZXRxIGZvcm11 bGEgKGNhciB0bXApIGZtdCAoY29uY2F0IChjZHIgKGFzc29jICIlIiBvcmctdGFibGUtbG9jYWwt cGFyYW1ldGVycykpIChudGggMSB0bXApKSkgKHdoaWxlIChzdHJpbmctbWF0Y2ggIlxcKFtwbmZz ZV1cXClcXCgtP1swLTldK1xcKSIgZm10KSAoc2V0cSBjIChzdHJpbmctdG8tY2hhciAobWF0Y2gt c3RyaW5nIDEgZm10KSkgbiAoc3RyaW5nLXRvLW51bWJlciAobWF0Y2gtc3RyaW5nIDIgZm10KSkp IChpZiAoPSBjIDExMikgKHNldHEgb3JnLXRibC1jYWxjLW1vZGVzIChvcmctdGFibGUtLXNldC1j YWxjLW1vZGUgKHF1b3RlIGNhbGMtaW50ZXJuYWwtcHJlYykgbikpIChzZXRxIG9yZy10YmwtY2Fs Yy1tb2RlcyAob3JnLXRhYmxlLS1zZXQtY2FsYy1tb2RlIChxdW90ZSBjYWxjLWZsb2F0LWZvcm1h dCkgKGxpc3QgLi4uIG4pKSkpIChzZXRxIGZtdCAocmVwbGFjZS1tYXRjaCAiIiB0IHQgZm10KSkp IChpZiAoc3RyaW5nLW1hdGNoICJbdFRVXSIgZm10KSAobGV0ICgoZmYgKG1hdGNoLXN0cmluZyAw IGZtdCkpKSAoc2V0cSBkdXJhdGlvbiB0IG51bWJlcnMgdCBkdXJhdGlvbi1vdXRwdXQtZm9ybWF0 IChjb25kICguLi4gbmlsKSAoLi4uIG9yZy10YWJsZS1kdXJhdGlvbi1jdXN0b20tZm9ybWF0KSAo Li4uIC4uLikpIGZtdCAocmVwbGFjZS1tYXRjaCAiIiB0IHQgZm10KSkpKSAoaWYgKHN0cmluZy1t YXRjaCAiTiIgZm10KSAoc2V0cSBudW1iZXJzIHQgZm10IChyZXBsYWNlLW1hdGNoICIiIHQgdCBm bXQpKSkgKGlmIChzdHJpbmctbWF0Y2ggIkwiIGZtdCkgKHNldHEgbGl0ZXJhbCB0IGZtdCAocmVw bGFjZS1tYXRjaCAiIiB0IHQgZm10KSkpIChpZiAoc3RyaW5nLW1hdGNoICJFIiBmbXQpIChzZXRx IGtlZXAtZW1wdHkgdCBmbXQgKHJlcGxhY2UtbWF0Y2ggIiIgdCB0IGZtdCkpKSAod2hpbGUgKHN0 cmluZy1tYXRjaCAiW0RSRlNdIiBmbXQpIChzZXRxIG9yZy10YmwtY2FsYy1tb2RlcyAob3JnLXRh YmxlLS1zZXQtY2FsYy1tb2RlIChtYXRjaC1zdHJpbmcgMCBmbXQpKSkgKHNldHEgZm10IChyZXBs YWNlLW1hdGNoICIiIHQgdCBmbXQpKSkgKGlmIChzdHJpbmctbWF0Y2ggIlxcUy0iIGZtdCkgbmls IChzZXRxIGZtdCBuaWwpKSkpIChpZiAoYW5kIChub3Qgc3VwcHJlc3MtY29uc3QpIG9yZy10YWJs ZS1mb3JtdWxhLXVzZS1jb25zdGFudHMpIChwcm9nbiAoc2V0cSBmb3JtdWxhIChvcmctdGFibGUt Zm9ybXVsYS1zdWJzdGl0dXRlLW5hbWVzIGZvcm11bGEpKSkpIChzZXRxIG9yaWcgKG9yIChnZXQt dGV4dC1wcm9wZXJ0eSAxIDpvcmlnLWZvcm11bGEgZm9ybXVsYSkgIj8iKSkgKHNldHEgZm9ybXVs YSAob3JnLXRhYmxlLWZvcm11bGEtaGFuZGxlLWZpcnN0L2xhc3QtcmMgZm9ybXVsYSkpICh3aGls ZSAoPiBuZG93biAwKSAoc2V0cSBmaWVsZHMgKG9yZy1zcGxpdC1zdHJpbmcgKG9yZy10cmltIChi dWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSAo bGluZS1lbmQtcG9zaXRpb24pKSkgIiAqfCAqIikpIChpZiBkdXJhdGlvbiAoc2V0cSBmaWVsZHMg KG1hcGNhciAoZnVuY3Rpb24gKGxhbWJkYSAoeCkgKG9yZy10YWJsZS10aW1lLXN0cmluZy10by1z ZWNvbmRzIHgpKSkgZmllbGRzKSkpIChpZiAoZXEgbnVtYmVycyB0KSAoc2V0cSBmaWVsZHMgKG1h cGNhciAoZnVuY3Rpb24gKGxhbWJkYSAoeCkgKGlmIC4uLiAuLi4geCkpKSBmaWVsZHMpKSkgKHNl dHEgbmRvd24gKDEtIG5kb3duKSkgKHNldHEgZm9ybSAoY29weS1zZXF1ZW5jZSBmb3JtdWxhKSBs aXNwcCAoYW5kICg+IChsZW5ndGggZm9ybSkgMikgKGVxdWFsIChzdWJzdHJpbmcgZm9ybSAwIDIp ICInKCIpKSkgKGlmIChhbmQgbGlzcHAgbGl0ZXJhbCkgKHNldHEgbGlzcHAgKHF1b3RlIGxpdGVy YWwpKSkgKHdoaWxlIChzdHJpbmctbWF0Y2ggIltAJF0jIiBmb3JtKSAoc2V0cSBmb3JtIChyZXBs YWNlLW1hdGNoIChmb3JtYXQgIiVkIiAobGV0ICguLi4pICh1bndpbmQtcHJvdGVjdCAuLi4gLi4u KSkpIHQgdCBmb3JtKSkpIChvcmctdGFibGUtLWVycm9yLW9uLW9sZC1yb3ctcmVmZXJlbmNlcyBm b3JtKSAoc2V0cSBmb3JtIChvcmctdGFibGUtcmVtb3RlLXJlZmVyZW5jZS1pbmRpcmVjdGlvbiBm b3JtKSkgKHdoaWxlIChzdHJpbmctbWF0Y2ggIlxcPHJlbW90ZShbIAldKlxcKFteLCldK1xcKVsg CV0qLFsgCV0qXFwoW15cbildK1xcKSkiIGZvcm0pIChzZXRxIGZvcm0gKHJlcGxhY2UtbWF0Y2gg KGxldCAoKHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAuLi4pKSAodW53aW5kLXByb3RlY3QgKHBy b2duIC4uLikgKHNldC1tYXRjaC1kYXRhIHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAuLi4pKSkg dCB0IGZvcm0pKSkgKHdoaWxlIChhbmQgKHN0cmluZy1tYXRjaCBvcmctdGFibGUtcmFuZ2UtcmVn ZXhwIGZvcm0pICg+IChsZW5ndGggKG1hdGNoLXN0cmluZyAwIGZvcm0pKSAxKSkgKHNldHEgZm9y bXJnIChsZXQgKChzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgKG1hdGNoLWRhdGEpKSkgKHVud2lu ZC1wcm90ZWN0IChwcm9nbiAob3JnLXRhYmxlLWdldC1yYW5nZSAuLi4gb3JnLXRhYmxlLWN1cnJl bnQtYmVnaW4tcG9zIG4wKSkgKHNldC1tYXRjaC1kYXRhIHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5h bCAocXVvdGUgZXZhcG9yYXRlKSkpKSkgKHNldHEgZm9ybXJwbCAobGV0ICgoc2F2ZS1tYXRjaC1k YXRhLWludGVybmFsIChtYXRjaC1kYXRhKSkpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gKG9yZy10 YWJsZS1tYWtlLXJlZmVyZW5jZSAuLi4ga2VlcC1lbXB0eSBudW1iZXJzIGxpc3BwKSkgKHNldC1t YXRjaC1kYXRhIHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAocXVvdGUgZXZhcG9yYXRlKSkpKSkg KGlmIChub3QgKGxldCAoKHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAuLi4pKSAodW53aW5kLXBy b3RlY3QgKHByb2duIC4uLikgKHNldC1tYXRjaC1kYXRhIHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5h bCAuLi4pKSkpIChzZXRxIGZvcm0gKHJlcGxhY2UtbWF0Y2ggZm9ybXJwbCB0IHQgZm9ybSkpICh1 c2VyLWVycm9yICJTcHJlYWRzaGVldCBlcnJvcjogaW52YWxpZCByZWZlcmVuY2UgXCIlc1wiIiBm b3JtKSkpICh3aGlsZSAoc3RyaW5nLW1hdGNoICJcXCRcXChcXChbLStdXFwpP1swLTldK1xcKVxc LlxcLlxcJFxcKFxcKFstK11cXCk/WzAtOV0rXFwpIiBmb3JtKSAoc2V0cSBmb3JtIChyZXBsYWNl LW1hdGNoIChsZXQgKChzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgLi4uKSkgKHVud2luZC1wcm90 ZWN0IChwcm9nbiAuLi4pIChzZXQtbWF0Y2gtZGF0YSBzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwg Li4uKSkpIHQgdCBmb3JtKSkpIChzZXRxIGZvcm0wIGZvcm0pICh3aGlsZSAoc3RyaW5nLW1hdGNo ICJcXCRcXChcXChbLStdXFwpP1swLTldK1xcKSIgZm9ybSkgKHNldHEgbiAoKyAoc3RyaW5nLXRv LW51bWJlciAobWF0Y2gtc3RyaW5nIDEgZm9ybSkpIChpZiAobWF0Y2gtZW5kIDIpIG4wIDApKSB4 IChudGggKDEtIChpZiAoPSBuIDApIG4wIChtYXggbiAxKSkpIGZpZWxkcykgZm9ybXJwbCAobGV0 ICgoc2F2ZS1tYXRjaC1kYXRhLWludGVybmFsIChtYXRjaC1kYXRhKSkpICh1bndpbmQtcHJvdGVj dCAocHJvZ24gKG9yZy10YWJsZS1tYWtlLXJlZmVyZW5jZSB4IGtlZXAtZW1wdHkgbnVtYmVycyBs aXNwcCkpIChzZXQtbWF0Y2gtZGF0YSBzYXZlLW1hdGNoLWRhdGEtaW50ZXJuYWwgKHF1b3RlIGV2 YXBvcmF0ZSkpKSkpIChpZiAob3IgKG5vdCB4KSAobGV0ICgoc2F2ZS1tYXRjaC1kYXRhLWludGVy bmFsIC4uLikpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gLi4uKSAoc2V0LW1hdGNoLWRhdGEgc2F2 ZS1tYXRjaC1kYXRhLWludGVybmFsIC4uLikpKSkgKHByb2duICh1c2VyLWVycm9yICJJbnZhbGlk IGZpZWxkIHNwZWNpZmllciBcIiVzXCIiIChtYXRjaC1zdHJpbmcgMCBmb3JtKSkpKSAoc2V0cSBm b3JtIChyZXBsYWNlLW1hdGNoIGZvcm1ycGwgdCB0IGZvcm0pKSkgKGlmIGxpc3BwIChzZXRxIGV2 IChjb25kaXRpb24tY2FzZSBuaWwgKGV2YWwgKGV2YWwgKHJlYWQgZm9ybSkpKSAoZXJyb3IgIiNF UlJPUiIpKSBldiAoaWYgKG51bWJlcnAgZXYpIChudW1iZXItdG8tc3RyaW5nIGV2KSBldikgZXYg KGlmIGR1cmF0aW9uIChvcmctdGFibGUtdGltZS1zZWNvbmRzLXRvLXN0cmluZyAoc3RyaW5nLXRv LW51bWJlciBldikgZHVyYXRpb24tb3V0cHV0LWZvcm1hdCkgZXYpKSAoc2V0cSBmb3JtIChyZXBs YWNlLXJlZ2V4cC1pbi1zdHJpbmcgb3JnLXRzLXJlZ2V4cC1pbmFjdGl2ZSAiPFxcMT4iIGZvcm0p KSAoc2V0cSBmb3JtIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgb3JnLXRzLXJlZ2V4cCAoZnVu Y3Rpb24gKGxhbWJkYSAodHMpIChsZXQgLi4uIC4uLikpKSBmb3JtIHQgdCkpIChzZXRxIGV2IChp ZiAoYW5kIGR1cmF0aW9uIChzdHJpbmctbWF0Y2ggIl5bMC05XSs6WzAtOV0rXFwoPzo6WzAtOV0r XFwpPyQiIGZvcm0pKSBmb3JtIChjYWxjLWV2YWwgKGNvbnMgZm9ybSBvcmctdGJsLWNhbGMtbW9k ZXMpIChpZiAoYW5kIC4uLiBudW1iZXJzKSAocHJvZ24gLi4uKSkpKSBldiAoaWYgZHVyYXRpb24g KG9yZy10YWJsZS10aW1lLXNlY29uZHMtdG8tc3RyaW5nIChpZiAoc3RyaW5nLW1hdGNoICJeWzAt OV0rOlswLTldK1xcKD86OlswLTldK1xcKT8kIiBldikgKHN0cmluZy10by1udW1iZXIgLi4uKSAo c3RyaW5nLXRvLW51bWJlciBldikpIGR1cmF0aW9uLW91dHB1dC1mb3JtYXQpIGV2KSkpIChpZiBv cmctdGFibGUtZm9ybXVsYS1kZWJ1ZyAocHJvZ24gKGxldCAoKHdjZiAoY3VycmVudC13aW5kb3ct Y29uZmlndXJhdGlvbikpKSAobGV0KiAoKG9sZC1kaXIgZGVmYXVsdC1kaXJlY3RvcnkpIChidWYg Li4uKSAoc3RhbmRhcmQtb3V0cHV0IGJ1ZikpIChwcm9nMSAocHJvZ24gLi4uIC4uLikgKGludGVy bmFsLXRlbXAtb3V0cHV0LWJ1ZmZlci1zaG93IGJ1ZikpKSAoc2V0cSBidyAoZ2V0LWJ1ZmZlci13 aW5kb3cgIipTdWJzdGl0dXRpb24gSGlzdG9yeSoiKSkgKG9yZy1maXQtd2luZG93LXRvLWJ1ZmZl ciBidykgKGlmIChhbmQgKGNhbGxlZC1pbnRlcmFjdGl2ZWx5LXAgLi4uKSAobm90IG5kb3duKSkg bmlsIChpZiAobGV0IC4uLiAuLi4pIG5pbCAob3JnLXRhYmxlLWFsaWduKSAodXNlci1lcnJvciAi QWJvcnQiKSkgKGRlbGV0ZS13aW5kb3cgYncpIChtZXNzYWdlICIiKSAoc2V0LXdpbmRvdy1jb25m aWd1cmF0aW9uIHdjZikpKSkpIChpZiAoY29uc3AgZXYpIChwcm9nbiAoc2V0cSBmbXQgbmlsIGV2 ICIjRVJST1IiKSkpIChvcmctdGFibGUtanVzdGlmeS1maWVsZC1tYXliZSAoZm9ybWF0IG9yZy10 YWJsZS1mb3JtdWxhLWZpZWxkLWZvcm1hdCAoY29uZCAoKG5vdCAoc3RyaW5ncCBldikpIGV2KSAo Zm10IChmb3JtYXQgZm10IChzdHJpbmctdG8tbnVtYmVyIGV2KSkpICh0IChyZXBsYWNlLXJlZ2V4 cC1pbi1zdHJpbmcgb3JnLXRzLXJlZ2V4cCAiW1xcMV0iIGV2KSkpKSkgKGlmIChhbmQgZG93biAo PiBuZG93biAwKSAobG9va2luZy1hdCAiLipcblsgCV0qfFteLV0iKSkgKGNhbGwtaW50ZXJhY3Rp dmVseSAocXVvdGUgb3JnLXJldHVybikpIChzZXRxIG5kb3duIDApKSkgKGFuZCBkb3duIChvcmct dGFibGUtbWF5YmUtcmVjYWxjdWxhdGUtbGluZSkpIChvciBzdXBwcmVzcy1hbGlnbiAoYW5kIG9y Zy10YWJsZS1tYXktbmVlZC11cGRhdGUgKG9yZy10YWJsZS1hbGlnbikpKSkKICAoaWYgKGVxdWFs IGFyZyAocXVvdGUgKDE2KSkpIChsZXQgKChlcSAob3JnLXRhYmxlLWN1cnJlbnQtZmllbGQtZm9y bXVsYSkpKSAob3JnLXRhYmxlLWdldC1maWVsZCBuaWwgZXEpIChvcmctdGFibGUtYWxpZ24pIChz ZXRxIG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgdCkpIChsZXQqIChmaWVsZHMgKG5kb3duIChp ZiAoaW50ZWdlcnAgYXJnKSBhcmcgMSkpIChvcmctdGFibGUtYXV0b21hdGljLXJlYWxpZ24gbmls KSAoY2FzZS1mb2xkLXNlYXJjaCBuaWwpIChkb3duICg+IG5kb3duIDEpKSAoZm9ybXVsYSAoaWYg KGFuZCBlcXVhdGlvbiBzdXBwcmVzcy1zdG9yZSkgZXF1YXRpb24gKG9yZy10YWJsZS1nZXQtZm9y bXVsYSBlcXVhdGlvbiAoZXF1YWwgYXJnIChxdW90ZSAuLi4pKSkpKSAobjAgKG9yZy10YWJsZS1j dXJyZW50LWNvbHVtbikpIChvcmctdGJsLWNhbGMtbW9kZXMgKGNvcHktc2VxdWVuY2Ugb3JnLWNh bGMtZGVmYXVsdC1tb2RlcykpIChudW1iZXJzIG5pbCkgKGtlZXAtZW1wdHkgbmlsKSBuIGZvcm0g Zm9ybTAgZm9ybXJwbCBmb3JtcmcgYncgZm10IHggZXYgb3JpZyBjIGxpc3BwIGxpdGVyYWwgZHVy YXRpb24gZHVyYXRpb24tb3V0cHV0LWZvcm1hdCkgKGlmIChzdHJpbmctbWF0Y2ggIjsiIGZvcm11 bGEpIChsZXQgKCh0bXAgKG9yZy1zcGxpdC1zdHJpbmcgZm9ybXVsYSAiOyIpKSkgKHNldHEgZm9y bXVsYSAoY2FyIHRtcCkgZm10IChjb25jYXQgKGNkciAoYXNzb2MgIiUiIG9yZy10YWJsZS1sb2Nh bC1wYXJhbWV0ZXJzKSkgKG50aCAxIHRtcCkpKSAod2hpbGUgKHN0cmluZy1tYXRjaCAiXFwoW3Bu ZnNlXVxcKVxcKC0/WzAtOV0rXFwpIiBmbXQpIChzZXRxIGMgKHN0cmluZy10by1jaGFyIChtYXRj aC1zdHJpbmcgMSBmbXQpKSBuIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMiBmbXQp KSkgKGlmICg9IGMgMTEyKSAoc2V0cSBvcmctdGJsLWNhbGMtbW9kZXMgKG9yZy10YWJsZS0tc2V0 LWNhbGMtbW9kZSAuLi4gbikpIChzZXRxIG9yZy10YmwtY2FsYy1tb2RlcyAob3JnLXRhYmxlLS1z ZXQtY2FsYy1tb2RlIC4uLiAuLi4pKSkgKHNldHEgZm10IChyZXBsYWNlLW1hdGNoICIiIHQgdCBm bXQpKSkgKGlmIChzdHJpbmctbWF0Y2ggIlt0VFVdIiBmbXQpIChsZXQgKChmZiAuLi4pKSAoc2V0 cSBkdXJhdGlvbiB0IG51bWJlcnMgdCBkdXJhdGlvbi1vdXRwdXQtZm9ybWF0IChjb25kIC4uLiAu Li4gLi4uKSBmbXQgKHJlcGxhY2UtbWF0Y2ggIiIgdCB0IGZtdCkpKSkgKGlmIChzdHJpbmctbWF0 Y2ggIk4iIGZtdCkgKHNldHEgbnVtYmVycyB0IGZtdCAocmVwbGFjZS1tYXRjaCAiIiB0IHQgZm10 KSkpIChpZiAoc3RyaW5nLW1hdGNoICJMIiBmbXQpIChzZXRxIGxpdGVyYWwgdCBmbXQgKHJlcGxh Y2UtbWF0Y2ggIiIgdCB0IGZtdCkpKSAoaWYgKHN0cmluZy1tYXRjaCAiRSIgZm10KSAoc2V0cSBr ZWVwLWVtcHR5IHQgZm10IChyZXBsYWNlLW1hdGNoICIiIHQgdCBmbXQpKSkgKHdoaWxlIChzdHJp bmctbWF0Y2ggIltEUkZTXSIgZm10KSAoc2V0cSBvcmctdGJsLWNhbGMtbW9kZXMgKG9yZy10YWJs ZS0tc2V0LWNhbGMtbW9kZSAobWF0Y2gtc3RyaW5nIDAgZm10KSkpIChzZXRxIGZtdCAocmVwbGFj ZS1tYXRjaCAiIiB0IHQgZm10KSkpIChpZiAoc3RyaW5nLW1hdGNoICJcXFMtIiBmbXQpIG5pbCAo c2V0cSBmbXQgbmlsKSkpKSAoaWYgKGFuZCAobm90IHN1cHByZXNzLWNvbnN0KSBvcmctdGFibGUt Zm9ybXVsYS11c2UtY29uc3RhbnRzKSAocHJvZ24gKHNldHEgZm9ybXVsYSAob3JnLXRhYmxlLWZv cm11bGEtc3Vic3RpdHV0ZS1uYW1lcyBmb3JtdWxhKSkpKSAoc2V0cSBvcmlnIChvciAoZ2V0LXRl eHQtcHJvcGVydHkgMSA6b3JpZy1mb3JtdWxhIGZvcm11bGEpICI/IikpIChzZXRxIGZvcm11bGEg KG9yZy10YWJsZS1mb3JtdWxhLWhhbmRsZS1maXJzdC9sYXN0LXJjIGZvcm11bGEpKSAod2hpbGUg KD4gbmRvd24gMCkgKHNldHEgZmllbGRzIChvcmctc3BsaXQtc3RyaW5nIChvcmctdHJpbSAoYnVm ZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikgKGxp bmUtZW5kLXBvc2l0aW9uKSkpICIgKnwgKiIpKSAoaWYgZHVyYXRpb24gKHNldHEgZmllbGRzICht YXBjYXIgKGZ1bmN0aW9uIChsYW1iZGEgLi4uIC4uLikpIGZpZWxkcykpKSAoaWYgKGVxIG51bWJl cnMgdCkgKHNldHEgZmllbGRzIChtYXBjYXIgKGZ1bmN0aW9uIChsYW1iZGEgLi4uIC4uLikpIGZp ZWxkcykpKSAoc2V0cSBuZG93biAoMS0gbmRvd24pKSAoc2V0cSBmb3JtIChjb3B5LXNlcXVlbmNl IGZvcm11bGEpIGxpc3BwIChhbmQgKD4gKGxlbmd0aCBmb3JtKSAyKSAoZXF1YWwgKHN1YnN0cmlu ZyBmb3JtIDAgMikgIicoIikpKSAoaWYgKGFuZCBsaXNwcCBsaXRlcmFsKSAoc2V0cSBsaXNwcCAo cXVvdGUgbGl0ZXJhbCkpKSAod2hpbGUgKHN0cmluZy1tYXRjaCAiW0AkXSMiIGZvcm0pIChzZXRx IGZvcm0gKHJlcGxhY2UtbWF0Y2ggKGZvcm1hdCAiJWQiIChsZXQgLi4uIC4uLikpIHQgdCBmb3Jt KSkpIChvcmctdGFibGUtLWVycm9yLW9uLW9sZC1yb3ctcmVmZXJlbmNlcyBmb3JtKSAoc2V0cSBm b3JtIChvcmctdGFibGUtcmVtb3RlLXJlZmVyZW5jZS1pbmRpcmVjdGlvbiBmb3JtKSkgKHdoaWxl IChzdHJpbmctbWF0Y2ggIlxcPHJlbW90ZShbIAldKlxcKFteLCldK1xcKVsgCV0qLFsgCV0qXFwo W15cbildK1xcKSkiIGZvcm0pIChzZXRxIGZvcm0gKHJlcGxhY2UtbWF0Y2ggKGxldCAoLi4uKSAo dW53aW5kLXByb3RlY3QgLi4uIC4uLikpIHQgdCBmb3JtKSkpICh3aGlsZSAoYW5kIChzdHJpbmct bWF0Y2ggb3JnLXRhYmxlLXJhbmdlLXJlZ2V4cCBmb3JtKSAoPiAobGVuZ3RoIChtYXRjaC1zdHJp bmcgMCBmb3JtKSkgMSkpIChzZXRxIGZvcm1yZyAobGV0ICgoc2F2ZS1tYXRjaC1kYXRhLWludGVy bmFsIC4uLikpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gLi4uKSAoc2V0LW1hdGNoLWRhdGEgc2F2 ZS1tYXRjaC1kYXRhLWludGVybmFsIC4uLikpKSkgKHNldHEgZm9ybXJwbCAobGV0ICgoc2F2ZS1t YXRjaC1kYXRhLWludGVybmFsIC4uLikpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gLi4uKSAoc2V0 LW1hdGNoLWRhdGEgc2F2ZS1tYXRjaC1kYXRhLWludGVybmFsIC4uLikpKSkgKGlmIChub3QgKGxl dCAoLi4uKSAodW53aW5kLXByb3RlY3QgLi4uIC4uLikpKSAoc2V0cSBmb3JtIChyZXBsYWNlLW1h dGNoIGZvcm1ycGwgdCB0IGZvcm0pKSAodXNlci1lcnJvciAiU3ByZWFkc2hlZXQgZXJyb3I6IGlu dmFsaWQgcmVmZXJlbmNlIFwiJXNcIiIgZm9ybSkpKSAod2hpbGUgKHN0cmluZy1tYXRjaCAiXFwk XFwoXFwoWy0rXVxcKT9bMC05XStcXClcXC5cXC5cXCRcXChcXChbLStdXFwpP1swLTldK1xcKSIg Zm9ybSkgKHNldHEgZm9ybSAocmVwbGFjZS1tYXRjaCAobGV0ICguLi4pICh1bndpbmQtcHJvdGVj dCAuLi4gLi4uKSkgdCB0IGZvcm0pKSkgKHNldHEgZm9ybTAgZm9ybSkgKHdoaWxlIChzdHJpbmct bWF0Y2ggIlxcJFxcKFxcKFstK11cXCk/WzAtOV0rXFwpIiBmb3JtKSAoc2V0cSBuICgrIChzdHJp bmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMSBmb3JtKSkgKGlmIChtYXRjaC1lbmQgMikgbjAg MCkpIHggKG50aCAoMS0gKGlmIC4uLiBuMCAuLi4pKSBmaWVsZHMpIGZvcm1ycGwgKGxldCAoKHNh dmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAuLi4pKSAodW53aW5kLXByb3RlY3QgKHByb2duIC4uLikg KHNldC1tYXRjaC1kYXRhIHNhdmUtbWF0Y2gtZGF0YS1pbnRlcm5hbCAuLi4pKSkpIChpZiAob3Ig KG5vdCB4KSAobGV0ICguLi4pICh1bndpbmQtcHJvdGVjdCAuLi4gLi4uKSkpIChwcm9nbiAodXNl ci1lcnJvciAiSW52YWxpZCBmaWVsZCBzcGVjaWZpZXIgXCIlc1wiIiAobWF0Y2gtc3RyaW5nIDAg Zm9ybSkpKSkgKHNldHEgZm9ybSAocmVwbGFjZS1tYXRjaCBmb3JtcnBsIHQgdCBmb3JtKSkpIChp ZiBsaXNwcCAoc2V0cSBldiAoY29uZGl0aW9uLWNhc2UgbmlsIChldmFsIChldmFsIC4uLikpIChl cnJvciAiI0VSUk9SIikpIGV2IChpZiAobnVtYmVycCBldikgKG51bWJlci10by1zdHJpbmcgZXYp IGV2KSBldiAoaWYgZHVyYXRpb24gKG9yZy10YWJsZS10aW1lLXNlY29uZHMtdG8tc3RyaW5nIChz dHJpbmctdG8tbnVtYmVyIGV2KSBkdXJhdGlvbi1vdXRwdXQtZm9ybWF0KSBldikpIChzZXRxIGZv cm0gKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyBvcmctdHMtcmVnZXhwLWluYWN0aXZlICI8XFwx PiIgZm9ybSkpIChzZXRxIGZvcm0gKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyBvcmctdHMtcmVn ZXhwIChmdW5jdGlvbiAobGFtYmRhIC4uLiAuLi4pKSBmb3JtIHQgdCkpIChzZXRxIGV2IChpZiAo YW5kIGR1cmF0aW9uIChzdHJpbmctbWF0Y2ggIl5bMC05XSs6WzAtOV0rXFwoPzo6WzAtOV0rXFwp PyQiIGZvcm0pKSBmb3JtIChjYWxjLWV2YWwgKGNvbnMgZm9ybSBvcmctdGJsLWNhbGMtbW9kZXMp IChpZiAuLi4gLi4uKSkpIGV2IChpZiBkdXJhdGlvbiAob3JnLXRhYmxlLXRpbWUtc2Vjb25kcy10 by1zdHJpbmcgKGlmIC4uLiAuLi4gLi4uKSBkdXJhdGlvbi1vdXRwdXQtZm9ybWF0KSBldikpKSAo aWYgb3JnLXRhYmxlLWZvcm11bGEtZGVidWcgKHByb2duIChsZXQgKCh3Y2YgLi4uKSkgKGxldCog KC4uLiAuLi4gLi4uKSAocHJvZzEgLi4uIC4uLikpIChzZXRxIGJ3IChnZXQtYnVmZmVyLXdpbmRv dyAiKlN1YnN0aXR1dGlvbiBIaXN0b3J5KiIpKSAob3JnLWZpdC13aW5kb3ctdG8tYnVmZmVyIGJ3 KSAoaWYgKGFuZCAuLi4gLi4uKSBuaWwgKGlmIC4uLiBuaWwgLi4uIC4uLikgKGRlbGV0ZS13aW5k b3cgYncpIChtZXNzYWdlICIiKSAoc2V0LXdpbmRvdy1jb25maWd1cmF0aW9uIHdjZikpKSkpIChp ZiAoY29uc3AgZXYpIChwcm9nbiAoc2V0cSBmbXQgbmlsIGV2ICIjRVJST1IiKSkpIChvcmctdGFi bGUtanVzdGlmeS1maWVsZC1tYXliZSAoZm9ybWF0IG9yZy10YWJsZS1mb3JtdWxhLWZpZWxkLWZv cm1hdCAoY29uZCAoKG5vdCAuLi4pIGV2KSAoZm10IChmb3JtYXQgZm10IC4uLikpICh0IChyZXBs YWNlLXJlZ2V4cC1pbi1zdHJpbmcgb3JnLXRzLXJlZ2V4cCAiW1xcMV0iIGV2KSkpKSkgKGlmIChh bmQgZG93biAoPiBuZG93biAwKSAobG9va2luZy1hdCAiLipcblsgCV0qfFteLV0iKSkgKGNhbGwt aW50ZXJhY3RpdmVseSAocXVvdGUgb3JnLXJldHVybikpIChzZXRxIG5kb3duIDApKSkgKGFuZCBk b3duIChvcmctdGFibGUtbWF5YmUtcmVjYWxjdWxhdGUtbGluZSkpIChvciBzdXBwcmVzcy1hbGln biAoYW5kIG9yZy10YWJsZS1tYXktbmVlZC11cGRhdGUgKG9yZy10YWJsZS1hbGlnbikpKSkpCiAg b3JnLXRhYmxlLWV2YWwtZm9ybXVsYShuaWwgIicob3JnLXNiZSBoZWxsb193b3JsZCkiIG5vYWxp Z24gbm9jc3Qgbm9zdG9yZSBub2FuYWx5c2lzKQogIChpZiAoZ2V0LXRleHQtcHJvcGVydHkgKHBv aW50KSA6b3JnLXVudG91Y2hhYmxlKSBuaWwgKG9yZy10YWJsZS1ldmFsLWZvcm11bGEgbmlsIChj ZHIgZW50cnkpIChxdW90ZSBub2FsaWduKSAocXVvdGUgbm9jc3QpIChxdW90ZSBub3N0b3JlKSAo cXVvdGUgbm9hbmFseXNpcykpKQogIChsZXQgKChlbnRyeSAoY2FyIC0tZG9saXN0LXRhaWwtLSkp KSAoZ290by1jaGFyIG9yZy1sYXN0LXJlY2FsYy1saW5lKSAob3JnLXRhYmxlLWdvdG8tY29sdW1u IChzdHJpbmctdG8tbnVtYmVyIChzdWJzdHJpbmcgKGNhciBlbnRyeSkgMSkpIG5pbCAocXVvdGUg Zm9yY2UpKSAoaWYgKGdldC10ZXh0LXByb3BlcnR5IChwb2ludCkgOm9yZy11bnRvdWNoYWJsZSkg bmlsIChvcmctdGFibGUtZXZhbC1mb3JtdWxhIG5pbCAoY2RyIGVudHJ5KSAocXVvdGUgbm9hbGln bikgKHF1b3RlIG5vY3N0KSAocXVvdGUgbm9zdG9yZSkgKHF1b3RlIG5vYW5hbHlzaXMpKSkgKHNl dHEgLS1kb2xpc3QtdGFpbC0tIChjZHIgLS1kb2xpc3QtdGFpbC0tKSkpCiAgKHdoaWxlIC0tZG9s aXN0LXRhaWwtLSAobGV0ICgoZW50cnkgKGNhciAtLWRvbGlzdC10YWlsLS0pKSkgKGdvdG8tY2hh ciBvcmctbGFzdC1yZWNhbGMtbGluZSkgKG9yZy10YWJsZS1nb3RvLWNvbHVtbiAoc3RyaW5nLXRv LW51bWJlciAoc3Vic3RyaW5nIChjYXIgZW50cnkpIDEpKSBuaWwgKHF1b3RlIGZvcmNlKSkgKGlm IChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQpIDpvcmctdW50b3VjaGFibGUpIG5pbCAob3JnLXRh YmxlLWV2YWwtZm9ybXVsYSBuaWwgKGNkciBlbnRyeSkgKHF1b3RlIG5vYWxpZ24pIChxdW90ZSBu b2NzdCkgKHF1b3RlIG5vc3RvcmUpIChxdW90ZSBub2FuYWx5c2lzKSkpIChzZXRxIC0tZG9saXN0 LXRhaWwtLSAoY2RyIC0tZG9saXN0LXRhaWwtLSkpKSkKICAobGV0ICgoLS1kb2xpc3QtdGFpbC0t IGVxbGNvbCkpICh3aGlsZSAtLWRvbGlzdC10YWlsLS0gKGxldCAoKGVudHJ5IChjYXIgLS1kb2xp c3QtdGFpbC0tKSkpIChnb3RvLWNoYXIgb3JnLWxhc3QtcmVjYWxjLWxpbmUpIChvcmctdGFibGUt Z290by1jb2x1bW4gKHN0cmluZy10by1udW1iZXIgKHN1YnN0cmluZyAoY2FyIGVudHJ5KSAxKSkg bmlsIChxdW90ZSBmb3JjZSkpIChpZiAoZ2V0LXRleHQtcHJvcGVydHkgKHBvaW50KSA6b3JnLXVu dG91Y2hhYmxlKSBuaWwgKG9yZy10YWJsZS1ldmFsLWZvcm11bGEgbmlsIChjZHIgZW50cnkpIChx dW90ZSBub2FsaWduKSAocXVvdGUgbm9jc3QpIChxdW90ZSBub3N0b3JlKSAocXVvdGUgbm9hbmFs eXNpcykpKSAoc2V0cSAtLWRvbGlzdC10YWlsLS0gKGNkciAtLWRvbGlzdC10YWlsLS0pKSkpKQog IChpZiAoc3RyaW5nLW1hdGNoICJcXGAgKltfXiEkL10gKlxcJyIgKG9yZy10YWJsZS1nZXQtZmll bGQgMSkpIG5pbCAoc2V0cSBjbnQgKDErIGNudCkpIChpZiBhbGwgKHByb2duIChzZXRxIGxvZy1s YXN0LXRpbWUgKG9yZy10YWJsZS1tZXNzYWdlLW9uY2UtcGVyLXNlY29uZCBsb2ctbGFzdC10aW1l ICJSZS1hcHBseWluZyBmb3JtdWxhcyB0byBmdWxsIHRhYmxlLi4uKGxpbmUgJWQpIiBjbnQpKSkp IChpZiAobWFya2VycCBvcmctbGFzdC1yZWNhbGMtbGluZSkgKG1vdmUtbWFya2VyIG9yZy1sYXN0 LXJlY2FsYy1saW5lIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpIChzZXRxIG9yZy1sYXN0LXJl Y2FsYy1saW5lIChjb3B5LW1hcmtlciAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSkpIChsZXQg KCgtLWRvbGlzdC10YWlsLS0gZXFsY29sKSkgKHdoaWxlIC0tZG9saXN0LXRhaWwtLSAobGV0ICgo ZW50cnkgKGNhciAtLWRvbGlzdC10YWlsLS0pKSkgKGdvdG8tY2hhciBvcmctbGFzdC1yZWNhbGMt bGluZSkgKG9yZy10YWJsZS1nb3RvLWNvbHVtbiAoc3RyaW5nLXRvLW51bWJlciAoc3Vic3RyaW5n IChjYXIgZW50cnkpIDEpKSBuaWwgKHF1b3RlIGZvcmNlKSkgKGlmIChnZXQtdGV4dC1wcm9wZXJ0 eSAocG9pbnQpIDpvcmctdW50b3VjaGFibGUpIG5pbCAob3JnLXRhYmxlLWV2YWwtZm9ybXVsYSBu aWwgKGNkciBlbnRyeSkgKHF1b3RlIG5vYWxpZ24pIChxdW90ZSBub2NzdCkgKHF1b3RlIG5vc3Rv cmUpIChxdW90ZSBub2FuYWx5c2lzKSkpIChzZXRxIC0tZG9saXN0LXRhaWwtLSAoY2RyIC0tZG9s aXN0LXRhaWwtLSkpKSkpKQogICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgbGluZS1yZSBlbmQg dCkgKGlmIChzdHJpbmctbWF0Y2ggIlxcYCAqW19eISQvXSAqXFwnIiAob3JnLXRhYmxlLWdldC1m aWVsZCAxKSkgbmlsIChzZXRxIGNudCAoMSsgY250KSkgKGlmIGFsbCAocHJvZ24gKHNldHEgbG9n LWxhc3QtdGltZSAob3JnLXRhYmxlLW1lc3NhZ2Utb25jZS1wZXItc2Vjb25kIGxvZy1sYXN0LXRp bWUgIlJlLWFwcGx5aW5nIGZvcm11bGFzIHRvIGZ1bGwgdGFibGUuLi4obGluZSAlZCkiIGNudCkp KSkgKGlmIChtYXJrZXJwIG9yZy1sYXN0LXJlY2FsYy1saW5lKSAobW92ZS1tYXJrZXIgb3JnLWxh c3QtcmVjYWxjLWxpbmUgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkgKHNldHEgb3JnLWxhc3Qt cmVjYWxjLWxpbmUgKGNvcHktbWFya2VyIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKSkgKGxl dCAoKC0tZG9saXN0LXRhaWwtLSBlcWxjb2wpKSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIChsZXQg KChlbnRyeSAoY2FyIC0tZG9saXN0LXRhaWwtLSkpKSAoZ290by1jaGFyIG9yZy1sYXN0LXJlY2Fs Yy1saW5lKSAob3JnLXRhYmxlLWdvdG8tY29sdW1uIChzdHJpbmctdG8tbnVtYmVyIChzdWJzdHJp bmcgLi4uIDEpKSBuaWwgKHF1b3RlIGZvcmNlKSkgKGlmIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9p bnQpIDpvcmctdW50b3VjaGFibGUpIG5pbCAob3JnLXRhYmxlLWV2YWwtZm9ybXVsYSBuaWwgKGNk ciBlbnRyeSkgKHF1b3RlIG5vYWxpZ24pIChxdW90ZSBub2NzdCkgKHF1b3RlIG5vc3RvcmUpIChx dW90ZSBub2FuYWx5c2lzKSkpIChzZXRxIC0tZG9saXN0LXRhaWwtLSAoY2RyIC0tZG9saXN0LXRh aWwtLSkpKSkpKSkKICAocHJvZ24gKGxldCAoKC0tZG9saXN0LXRhaWwtLSBlcWxpc3QpKSAod2hp bGUgLS1kb2xpc3QtdGFpbC0tIChsZXQgKChlcSAoY2FyIC0tZG9saXN0LXRhaWwtLSkpKSAobGV0 KiAoKHJocyAob3JnLXRhYmxlLWZvcm11bGEtc3Vic3RpdHV0ZS1uYW1lcyAuLi4pKSAob2xkLWxo cyAoY2FyIGVxKSkgKGxocyAob3JnLXRhYmxlLWZvcm11bGEtaGFuZGxlLWZpcnN0L2xhc3QtcmMg Li4uKSkpIChpZiAoc3RyaW5nLW1hdGNoLXAgIlxcYFxcJFswLTldK1xcJyIgbGhzKSAoc2V0cSBl cWxjb2wgKGNvbnMgLi4uIGVxbGNvbCkpIChzZXRxIGVxbGZpZWxkIChjb25zIC4uLiBlcWxmaWVs ZCkpKSkgKHNldHEgLS1kb2xpc3QtdGFpbC0tIChjZHIgLS1kb2xpc3QtdGFpbC0tKSkpKSkgKHNl dHEgZXFsY29sIChucmV2ZXJzZSBlcWxjb2wpKSAoc2V0cSBlcWxmaWVsZCAob3JnLXRhYmxlLWV4 cGFuZC1saHMtcmFuZ2VzIChucmV2ZXJzZSBlcWxmaWVsZCkpKSAoaWYgYWxsIChwcm9nbiAoc2V0 cSBlbmQgKGNvcHktbWFya2VyIChvcmctdGFibGUtZW5kKSkpIChnb3RvLWNoYXIgKHNldHEgYmVn IG9yZy10YWJsZS1jdXJyZW50LWJlZ2luLXBvcykpIChjb25kICgocmUtc2VhcmNoLWZvcndhcmQg b3JnLXRhYmxlLWNhbGN1bGF0ZS1tYXJrLXJlZ2V4cCBlbmQgdCkgKHNldHEgbGluZS1yZSBvcmct dGFibGUtcmVjYWxjdWxhdGUtcmVnZXhwKSkgKChhbmQgKHJlLXNlYXJjaC1mb3J3YXJkIG9yZy10 YWJsZS1kYXRhbGluZS1yZWdleHAgZW5kIHQpIChyZS1zZWFyY2gtZm9yd2FyZCBvcmctdGFibGUt aGxpbmUtcmVnZXhwIGVuZCB0KSAocmUtc2VhcmNoLWZvcndhcmQgb3JnLXRhYmxlLWRhdGFsaW5l LXJlZ2V4cCBlbmQgdCkpIChzZXRxIGJlZyAobWF0Y2gtYmVnaW5uaW5nIDApKSkgKHQgbmlsKSkp IChzZXRxIGJlZyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIGVuZCAoY29weS1tYXJrZXIgKGxp bmUtYmVnaW5uaW5nLXBvc2l0aW9uIDIpKSkpIChnb3RvLWNoYXIgYmVnKSAocmVtb3ZlLXRleHQt cHJvcGVydGllcyBiZWcgZW5kIChxdW90ZSAoOm9yZy11bnRvdWNoYWJsZSB0KSkpIChsZXQgKChj dXJyZW50LWxpbmUgKGNvdW50LWxpbmVzIG9yZy10YWJsZS1jdXJyZW50LWJlZ2luLXBvcyAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24pKSkgc2Vlbi1maWVsZHMpIChsZXQgKCgtLWRvbGlzdC10YWls LS0gZXFsZmllbGQpKSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIChsZXQgKChlcSAoY2FyIC0tZG9s aXN0LXRhaWwtLSkpKSAobGV0KiAoKG5hbWUgLi4uKSAobG9jYXRpb24gLi4uKSAoZXEtbGluZSAu Li4pIChyZWZlcmVuY2UgLi4uKSkgKGlmIChtZW1iZXIgcmVmZXJlbmNlIHNlZW4tZmllbGRzKSAo cHJvZ24gLi4uKSkgKHNldHEgc2Vlbi1maWVsZHMgKGNvbnMgcmVmZXJlbmNlIHNlZW4tZmllbGRz KSkgKGlmIChvciBhbGwgLi4uKSAocHJvZ24gLi4uIC4uLikpKSAoc2V0cSAtLWRvbGlzdC10YWls LS0gKGNkciAtLWRvbGlzdC10YWlsLS0pKSkpKSkgKGdvdG8tY2hhciBiZWcpICh3aGlsZSAocmUt c2VhcmNoLWZvcndhcmQgbGluZS1yZSBlbmQgdCkgKGlmIChzdHJpbmctbWF0Y2ggIlxcYCAqW19e ISQvXSAqXFwnIiAob3JnLXRhYmxlLWdldC1maWVsZCAxKSkgbmlsIChzZXRxIGNudCAoMSsgY250 KSkgKGlmIGFsbCAocHJvZ24gKHNldHEgbG9nLWxhc3QtdGltZSAob3JnLXRhYmxlLW1lc3NhZ2Ut b25jZS1wZXItc2Vjb25kIGxvZy1sYXN0LXRpbWUgIlJlLWFwcGx5aW5nIGZvcm11bGFzIHRvIGZ1 bGwgdGFibGUuLi4obGluZSAlZCkiIGNudCkpKSkgKGlmIChtYXJrZXJwIG9yZy1sYXN0LXJlY2Fs Yy1saW5lKSAobW92ZS1tYXJrZXIgb3JnLWxhc3QtcmVjYWxjLWxpbmUgKGxpbmUtYmVnaW5uaW5n LXBvc2l0aW9uKSkgKHNldHEgb3JnLWxhc3QtcmVjYWxjLWxpbmUgKGNvcHktbWFya2VyIChsaW5l LWJlZ2lubmluZy1wb3NpdGlvbikpKSkgKGxldCAoKC0tZG9saXN0LXRhaWwtLSBlcWxjb2wpKSAo d2hpbGUgLS1kb2xpc3QtdGFpbC0tIChsZXQgKChlbnRyeSAuLi4pKSAoZ290by1jaGFyIG9yZy1s YXN0LXJlY2FsYy1saW5lKSAob3JnLXRhYmxlLWdvdG8tY29sdW1uIChzdHJpbmctdG8tbnVtYmVy IC4uLikgbmlsIChxdW90ZSBmb3JjZSkpIChpZiAoZ2V0LXRleHQtcHJvcGVydHkgLi4uIDpvcmct dW50b3VjaGFibGUpIG5pbCAob3JnLXRhYmxlLWV2YWwtZm9ybXVsYSBuaWwgLi4uIC4uLiAuLi4g Li4uIC4uLikpIChzZXRxIC0tZG9saXN0LXRhaWwtLSAoY2RyIC0tZG9saXN0LXRhaWwtLSkpKSkp KSkgKGxldCAoKC0tZG9saXN0LXRhaWwtLSBlcWxmaWVsZCkpICh3aGlsZSAtLWRvbGlzdC10YWls LS0gKGxldCAoKGVxIChjYXIgLS1kb2xpc3QtdGFpbC0tKSkpIChsZXQgKChyZWZlcmVuY2UgKGNh ciBlcSkpIChmb3JtdWxhIChjZHIgZXEpKSkgKHNldHEgbG9nLWxhc3QtdGltZSAob3JnLXRhYmxl LW1lc3NhZ2Utb25jZS1wZXItc2Vjb25kIChhbmQgYWxsIGxvZy1sYXN0LXRpbWUpICJSZS1hcHBs eWluZyBmb3JtdWxhIHRvIGZpZWxkOiAlcyIgKGNhciBlcSkpKSAob3JnLXRhYmxlLWdvdG8tZmll bGQgcmVmZXJlbmNlIChsZXQgKC4uLikgKGZ1bmN0aW9uIC4uLikpKSAob3JnLXRhYmxlLWV2YWwt Zm9ybXVsYSBuaWwgZm9ybXVsYSB0IHQgdCB0KSkgKHNldHEgLS1kb2xpc3QtdGFpbC0tIChjZHIg LS1kb2xpc3QtdGFpbC0tKSkpKSkgKHNldC1tYXJrZXIgZW5kIG5pbCkpCiAgKHVud2luZC1wcm90 ZWN0IChwcm9nbiAobGV0ICgoLS1kb2xpc3QtdGFpbC0tIGVxbGlzdCkpICh3aGlsZSAtLWRvbGlz dC10YWlsLS0gKGxldCAoKGVxIChjYXIgLS1kb2xpc3QtdGFpbC0tKSkpIChsZXQqICgocmhzIC4u LikgKG9sZC1saHMgLi4uKSAobGhzIC4uLikpIChpZiAoc3RyaW5nLW1hdGNoLXAgIlxcYFxcJFsw LTldK1xcJyIgbGhzKSAoc2V0cSBlcWxjb2wgLi4uKSAoc2V0cSBlcWxmaWVsZCAuLi4pKSkgKHNl dHEgLS1kb2xpc3QtdGFpbC0tIChjZHIgLS1kb2xpc3QtdGFpbC0tKSkpKSkgKHNldHEgZXFsY29s IChucmV2ZXJzZSBlcWxjb2wpKSAoc2V0cSBlcWxmaWVsZCAob3JnLXRhYmxlLWV4cGFuZC1saHMt cmFuZ2VzIChucmV2ZXJzZSBlcWxmaWVsZCkpKSAoaWYgYWxsIChwcm9nbiAoc2V0cSBlbmQgKGNv cHktbWFya2VyIChvcmctdGFibGUtZW5kKSkpIChnb3RvLWNoYXIgKHNldHEgYmVnIG9yZy10YWJs ZS1jdXJyZW50LWJlZ2luLXBvcykpIChjb25kICgocmUtc2VhcmNoLWZvcndhcmQgb3JnLXRhYmxl LWNhbGN1bGF0ZS1tYXJrLXJlZ2V4cCBlbmQgdCkgKHNldHEgbGluZS1yZSBvcmctdGFibGUtcmVj YWxjdWxhdGUtcmVnZXhwKSkgKChhbmQgKHJlLXNlYXJjaC1mb3J3YXJkIG9yZy10YWJsZS1kYXRh bGluZS1yZWdleHAgZW5kIHQpIChyZS1zZWFyY2gtZm9yd2FyZCBvcmctdGFibGUtaGxpbmUtcmVn ZXhwIGVuZCB0KSAocmUtc2VhcmNoLWZvcndhcmQgb3JnLXRhYmxlLWRhdGFsaW5lLXJlZ2V4cCBl bmQgdCkpIChzZXRxIGJlZyAobWF0Y2gtYmVnaW5uaW5nIDApKSkgKHQgbmlsKSkpIChzZXRxIGJl ZyAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIGVuZCAoY29weS1tYXJrZXIgKGxpbmUtYmVnaW5u aW5nLXBvc2l0aW9uIDIpKSkpIChnb3RvLWNoYXIgYmVnKSAocmVtb3ZlLXRleHQtcHJvcGVydGll cyBiZWcgZW5kIChxdW90ZSAoOm9yZy11bnRvdWNoYWJsZSB0KSkpIChsZXQgKChjdXJyZW50LWxp bmUgKGNvdW50LWxpbmVzIG9yZy10YWJsZS1jdXJyZW50LWJlZ2luLXBvcyAobGluZS1iZWdpbm5p bmctcG9zaXRpb24pKSkgc2Vlbi1maWVsZHMpIChsZXQgKCgtLWRvbGlzdC10YWlsLS0gZXFsZmll bGQpKSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIChsZXQgKChlcSAuLi4pKSAobGV0KiAoLi4uIC4u LiAuLi4gLi4uKSAoaWYgLi4uIC4uLikgKHNldHEgc2Vlbi1maWVsZHMgLi4uKSAoaWYgLi4uIC4u LikpIChzZXRxIC0tZG9saXN0LXRhaWwtLSAoY2RyIC0tZG9saXN0LXRhaWwtLSkpKSkpKSAoZ290 by1jaGFyIGJlZykgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCBsaW5lLXJlIGVuZCB0KSAoaWYg KHN0cmluZy1tYXRjaCAiXFxgICpbX14hJC9dICpcXCciIChvcmctdGFibGUtZ2V0LWZpZWxkIDEp KSBuaWwgKHNldHEgY250ICgxKyBjbnQpKSAoaWYgYWxsIChwcm9nbiAoc2V0cSBsb2ctbGFzdC10 aW1lIChvcmctdGFibGUtbWVzc2FnZS1vbmNlLXBlci1zZWNvbmQgbG9nLWxhc3QtdGltZSAiUmUt YXBwbHlpbmcgZm9ybXVsYXMgdG8gZnVsbCB0YWJsZS4uLihsaW5lICVkKSIgY250KSkpKSAoaWYg KG1hcmtlcnAgb3JnLWxhc3QtcmVjYWxjLWxpbmUpIChtb3ZlLW1hcmtlciBvcmctbGFzdC1yZWNh bGMtbGluZSAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKSAoc2V0cSBvcmctbGFzdC1yZWNhbGMt bGluZSAoY29weS1tYXJrZXIgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpKSAobGV0ICgoLS1k b2xpc3QtdGFpbC0tIGVxbGNvbCkpICh3aGlsZSAtLWRvbGlzdC10YWlsLS0gKGxldCAoLi4uKSAo Z290by1jaGFyIG9yZy1sYXN0LXJlY2FsYy1saW5lKSAob3JnLXRhYmxlLWdvdG8tY29sdW1uIC4u LiBuaWwgLi4uKSAoaWYgLi4uIG5pbCAuLi4pIChzZXRxIC0tZG9saXN0LXRhaWwtLSAuLi4pKSkp KSkgKGxldCAoKC0tZG9saXN0LXRhaWwtLSBlcWxmaWVsZCkpICh3aGlsZSAtLWRvbGlzdC10YWls LS0gKGxldCAoKGVxIChjYXIgLS1kb2xpc3QtdGFpbC0tKSkpIChsZXQgKChyZWZlcmVuY2UgLi4u KSAoZm9ybXVsYSAuLi4pKSAoc2V0cSBsb2ctbGFzdC10aW1lIChvcmctdGFibGUtbWVzc2FnZS1v bmNlLXBlci1zZWNvbmQgLi4uICJSZS1hcHBseWluZyBmb3JtdWxhIHRvIGZpZWxkOiAlcyIgLi4u KSkgKG9yZy10YWJsZS1nb3RvLWZpZWxkIHJlZmVyZW5jZSAobGV0IC4uLiAuLi4pKSAob3JnLXRh YmxlLWV2YWwtZm9ybXVsYSBuaWwgZm9ybXVsYSB0IHQgdCB0KSkgKHNldHEgLS1kb2xpc3QtdGFp bC0tIChjZHIgLS1kb2xpc3QtdGFpbC0tKSkpKSkgKHNldC1tYXJrZXIgZW5kIG5pbCkpIChnb3Rv LWNoYXIgLS1saW5lKSAob3JnLXRhYmxlLWdvdG8tY29sdW1uIC0tY29sdW1uKSAoc2V0LW1hcmtl ciAtLWxpbmUgbmlsKSkKICAobGV0ICgoLS1saW5lIChjb3B5LW1hcmtlciAobGluZS1iZWdpbm5p bmctcG9zaXRpb24pKSkgKC0tY29sdW1uIChvcmctdGFibGUtY3VycmVudC1jb2x1bW4pKSkgKHVu d2luZC1wcm90ZWN0IChwcm9nbiAobGV0ICgoLS1kb2xpc3QtdGFpbC0tIGVxbGlzdCkpICh3aGls ZSAtLWRvbGlzdC10YWlsLS0gKGxldCAoKGVxIC4uLikpIChsZXQqICguLi4gLi4uIC4uLikgKGlm IC4uLiAuLi4gLi4uKSkgKHNldHEgLS1kb2xpc3QtdGFpbC0tIChjZHIgLS1kb2xpc3QtdGFpbC0t KSkpKSkgKHNldHEgZXFsY29sIChucmV2ZXJzZSBlcWxjb2wpKSAoc2V0cSBlcWxmaWVsZCAob3Jn LXRhYmxlLWV4cGFuZC1saHMtcmFuZ2VzIChucmV2ZXJzZSBlcWxmaWVsZCkpKSAoaWYgYWxsIChw cm9nbiAoc2V0cSBlbmQgKGNvcHktbWFya2VyIChvcmctdGFibGUtZW5kKSkpIChnb3RvLWNoYXIg KHNldHEgYmVnIG9yZy10YWJsZS1jdXJyZW50LWJlZ2luLXBvcykpIChjb25kICgocmUtc2VhcmNo LWZvcndhcmQgb3JnLXRhYmxlLWNhbGN1bGF0ZS1tYXJrLXJlZ2V4cCBlbmQgdCkgKHNldHEgbGlu ZS1yZSBvcmctdGFibGUtcmVjYWxjdWxhdGUtcmVnZXhwKSkgKChhbmQgLi4uIC4uLiAuLi4pIChz ZXRxIGJlZyAuLi4pKSAodCBuaWwpKSkgKHNldHEgYmVnIChsaW5lLWJlZ2lubmluZy1wb3NpdGlv bikgZW5kIChjb3B5LW1hcmtlciAobGluZS1iZWdpbm5pbmctcG9zaXRpb24gMikpKSkgKGdvdG8t Y2hhciBiZWcpIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIGJlZyBlbmQgKHF1b3RlICg6b3JnLXVu dG91Y2hhYmxlIHQpKSkgKGxldCAoKGN1cnJlbnQtbGluZSAoY291bnQtbGluZXMgb3JnLXRhYmxl LWN1cnJlbnQtYmVnaW4tcG9zIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKSBzZWVuLWZpZWxk cykgKGxldCAoKC0tZG9saXN0LXRhaWwtLSBlcWxmaWVsZCkpICh3aGlsZSAtLWRvbGlzdC10YWls LS0gKGxldCAoLi4uKSAobGV0KiAuLi4gLi4uIC4uLiAuLi4pIChzZXRxIC0tZG9saXN0LXRhaWwt LSAuLi4pKSkpKSAoZ290by1jaGFyIGJlZykgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCBsaW5l LXJlIGVuZCB0KSAoaWYgKHN0cmluZy1tYXRjaCAiXFxgICpbX14hJC9dICpcXCciIChvcmctdGFi bGUtZ2V0LWZpZWxkIDEpKSBuaWwgKHNldHEgY250ICgxKyBjbnQpKSAoaWYgYWxsIChwcm9nbiAo c2V0cSBsb2ctbGFzdC10aW1lIC4uLikpKSAoaWYgKG1hcmtlcnAgb3JnLWxhc3QtcmVjYWxjLWxp bmUpIChtb3ZlLW1hcmtlciBvcmctbGFzdC1yZWNhbGMtbGluZSAobGluZS1iZWdpbm5pbmctcG9z aXRpb24pKSAoc2V0cSBvcmctbGFzdC1yZWNhbGMtbGluZSAoY29weS1tYXJrZXIgLi4uKSkpIChs ZXQgKCgtLWRvbGlzdC10YWlsLS0gZXFsY29sKSkgKHdoaWxlIC0tZG9saXN0LXRhaWwtLSAobGV0 IC4uLiAuLi4gLi4uIC4uLiAuLi4pKSkpKSAobGV0ICgoLS1kb2xpc3QtdGFpbC0tIGVxbGZpZWxk KSkgKHdoaWxlIC0tZG9saXN0LXRhaWwtLSAobGV0ICgoZXEgLi4uKSkgKGxldCAoLi4uIC4uLikg KHNldHEgbG9nLWxhc3QtdGltZSAuLi4pIChvcmctdGFibGUtZ290by1maWVsZCByZWZlcmVuY2Ug Li4uKSAob3JnLXRhYmxlLWV2YWwtZm9ybXVsYSBuaWwgZm9ybXVsYSB0IHQgdCB0KSkgKHNldHEg LS1kb2xpc3QtdGFpbC0tIChjZHIgLS1kb2xpc3QtdGFpbC0tKSkpKSkgKHNldC1tYXJrZXIgZW5k IG5pbCkpIChnb3RvLWNoYXIgLS1saW5lKSAob3JnLXRhYmxlLWdvdG8tY29sdW1uIC0tY29sdW1u KSAoc2V0LW1hcmtlciAtLWxpbmUgbmlsKSkpCiAgKHByb2duIChsZXQgKCgtLWxpbmUgKGNvcHkt bWFya2VyIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKSAoLS1jb2x1bW4gKG9yZy10YWJsZS1j dXJyZW50LWNvbHVtbikpKSAodW53aW5kLXByb3RlY3QgKHByb2duIChsZXQgKCgtLWRvbGlzdC10 YWlsLS0gZXFsaXN0KSkgKHdoaWxlIC0tZG9saXN0LXRhaWwtLSAobGV0ICguLi4pIChsZXQqIC4u LiAuLi4pIChzZXRxIC0tZG9saXN0LXRhaWwtLSAuLi4pKSkpIChzZXRxIGVxbGNvbCAobnJldmVy c2UgZXFsY29sKSkgKHNldHEgZXFsZmllbGQgKG9yZy10YWJsZS1leHBhbmQtbGhzLXJhbmdlcyAo bnJldmVyc2UgZXFsZmllbGQpKSkgKGlmIGFsbCAocHJvZ24gKHNldHEgZW5kIChjb3B5LW1hcmtl ciAuLi4pKSAoZ290by1jaGFyIChzZXRxIGJlZyBvcmctdGFibGUtY3VycmVudC1iZWdpbi1wb3Mp KSAoY29uZCAoLi4uIC4uLikgKC4uLiAuLi4pICh0IG5pbCkpKSAoc2V0cSBiZWcgKGxpbmUtYmVn aW5uaW5nLXBvc2l0aW9uKSBlbmQgKGNvcHktbWFya2VyIChsaW5lLWJlZ2lubmluZy1wb3NpdGlv biAyKSkpKSAoZ290by1jaGFyIGJlZykgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgYmVnIGVuZCAo cXVvdGUgKDpvcmctdW50b3VjaGFibGUgdCkpKSAobGV0ICgoY3VycmVudC1saW5lIChjb3VudC1s aW5lcyBvcmctdGFibGUtY3VycmVudC1iZWdpbi1wb3MgLi4uKSkgc2Vlbi1maWVsZHMpIChsZXQg KCgtLWRvbGlzdC10YWlsLS0gZXFsZmllbGQpKSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIChsZXQg Li4uIC4uLiAuLi4pKSkpIChnb3RvLWNoYXIgYmVnKSAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJk IGxpbmUtcmUgZW5kIHQpIChpZiAoc3RyaW5nLW1hdGNoICJcXGAgKltfXiEkL10gKlxcJyIgKG9y Zy10YWJsZS1nZXQtZmllbGQgMSkpIG5pbCAoc2V0cSBjbnQgKDErIGNudCkpIChpZiBhbGwgKHBy b2duIC4uLikpIChpZiAobWFya2VycCBvcmctbGFzdC1yZWNhbGMtbGluZSkgKG1vdmUtbWFya2Vy IG9yZy1sYXN0LXJlY2FsYy1saW5lIC4uLikgKHNldHEgb3JnLWxhc3QtcmVjYWxjLWxpbmUgLi4u KSkgKGxldCAoLi4uKSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIC4uLikpKSkgKGxldCAoKC0tZG9s aXN0LXRhaWwtLSBlcWxmaWVsZCkpICh3aGlsZSAtLWRvbGlzdC10YWlsLS0gKGxldCAoLi4uKSAo bGV0IC4uLiAuLi4gLi4uIC4uLikgKHNldHEgLS1kb2xpc3QtdGFpbC0tIC4uLikpKSkgKHNldC1t YXJrZXIgZW5kIG5pbCkpIChnb3RvLWNoYXIgLS1saW5lKSAob3JnLXRhYmxlLWdvdG8tY29sdW1u IC0tY29sdW1uKSAoc2V0LW1hcmtlciAtLWxpbmUgbmlsKSkpKQogICh1bndpbmQtcHJvdGVjdCAo cHJvZ24gKGxldCAoKC0tbGluZSAoY29weS1tYXJrZXIgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9u KSkpICgtLWNvbHVtbiAob3JnLXRhYmxlLWN1cnJlbnQtY29sdW1uKSkpICh1bndpbmQtcHJvdGVj dCAocHJvZ24gKGxldCAoKC0tZG9saXN0LXRhaWwtLSBlcWxpc3QpKSAod2hpbGUgLS1kb2xpc3Qt dGFpbC0tIChsZXQgLi4uIC4uLiAuLi4pKSkgKHNldHEgZXFsY29sIChucmV2ZXJzZSBlcWxjb2wp KSAoc2V0cSBlcWxmaWVsZCAob3JnLXRhYmxlLWV4cGFuZC1saHMtcmFuZ2VzIChucmV2ZXJzZSBl cWxmaWVsZCkpKSAoaWYgYWxsIChwcm9nbiAoc2V0cSBlbmQgLi4uKSAoZ290by1jaGFyIC4uLikg KGNvbmQgLi4uIC4uLiAuLi4pKSAoc2V0cSBiZWcgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSBl bmQgKGNvcHktbWFya2VyIC4uLikpKSAoZ290by1jaGFyIGJlZykgKHJlbW92ZS10ZXh0LXByb3Bl cnRpZXMgYmVnIGVuZCAocXVvdGUgKDpvcmctdW50b3VjaGFibGUgdCkpKSAobGV0ICgoY3VycmVu dC1saW5lIC4uLikgc2Vlbi1maWVsZHMpIChsZXQgKC4uLikgKHdoaWxlIC0tZG9saXN0LXRhaWwt LSAuLi4pKSkgKGdvdG8tY2hhciBiZWcpICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgbGluZS1y ZSBlbmQgdCkgKGlmIChzdHJpbmctbWF0Y2ggIlxcYCAqW19eISQvXSAqXFwnIiAuLi4pIG5pbCAo c2V0cSBjbnQgLi4uKSAoaWYgYWxsIC4uLikgKGlmIC4uLiAuLi4gLi4uKSAobGV0IC4uLiAuLi4p KSkgKGxldCAoKC0tZG9saXN0LXRhaWwtLSBlcWxmaWVsZCkpICh3aGlsZSAtLWRvbGlzdC10YWls LS0gKGxldCAuLi4gLi4uIC4uLikpKSAoc2V0LW1hcmtlciBlbmQgbmlsKSkgKGdvdG8tY2hhciAt LWxpbmUpIChvcmctdGFibGUtZ290by1jb2x1bW4gLS1jb2x1bW4pIChzZXQtbWFya2VyIC0tbGlu ZSBuaWwpKSkpIChvcmctdGFibGUtLXNocmluay1jb2x1bW5zIC0tc2hydW5rLWNvbHVtbnMgLS1i ZWdpbiAtLWVuZCkgKHNldC1tYXJrZXIgLS1iZWdpbiBuaWwpIChzZXQtbWFya2VyIC0tZW5kIG5p bCkpCiAgKGxldCAoKC0tYmVnaW4gKGNvcHktbWFya2VyIChvcmctdGFibGUtYmVnaW4pKSkgKC0t ZW5kIChjb3B5LW1hcmtlciAob3JnLXRhYmxlLWVuZCkgdCkpICgtLXNocnVuay1jb2x1bW5zIChv cmctdGFibGUtLWxpc3Qtc2hydW5rLWNvbHVtbnMpKSkgKGxldCAoKC0tbXBvbSAtLWJlZ2luKSkg KHNhdmUtZXhjdXJzaW9uIChpZiAobWFya2VycCAtLW1wb20pIChwcm9nbiAoc2V0LWJ1ZmZlciAo bWFya2VyLWJ1ZmZlciAtLW1wb20pKSkpIChzYXZlLWV4Y3Vyc2lvbiAoc2F2ZS1yZXN0cmljdGlv biAod2lkZW4pIChnb3RvLWNoYXIgKG9yIC0tbXBvbSAocG9pbnQpKSkgKG9yZy10YWJsZS1leHBh bmQgLS1iZWdpbiAtLWVuZCkpKSkpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gKGxldCAoKC0tbGlu ZSAoY29weS1tYXJrZXIgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkpICgtLWNvbHVtbiAob3Jn LXRhYmxlLWN1cnJlbnQtY29sdW1uKSkpICh1bndpbmQtcHJvdGVjdCAocHJvZ24gKGxldCAoLi4u KSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIC4uLikpIChzZXRxIGVxbGNvbCAobnJldmVyc2UgZXFs Y29sKSkgKHNldHEgZXFsZmllbGQgKG9yZy10YWJsZS1leHBhbmQtbGhzLXJhbmdlcyAuLi4pKSAo aWYgYWxsIChwcm9nbiAuLi4gLi4uIC4uLikgKHNldHEgYmVnIC4uLiBlbmQgLi4uKSkgKGdvdG8t Y2hhciBiZWcpIChyZW1vdmUtdGV4dC1wcm9wZXJ0aWVzIGJlZyBlbmQgKHF1b3RlIC4uLikpIChs ZXQgKC4uLiBzZWVuLWZpZWxkcykgKGxldCAuLi4gLi4uKSkgKGdvdG8tY2hhciBiZWcpICh3aGls ZSAocmUtc2VhcmNoLWZvcndhcmQgbGluZS1yZSBlbmQgdCkgKGlmIC4uLiBuaWwgLi4uIC4uLiAu Li4gLi4uKSkgKGxldCAoLi4uKSAod2hpbGUgLS1kb2xpc3QtdGFpbC0tIC4uLikpIChzZXQtbWFy a2VyIGVuZCBuaWwpKSAoZ290by1jaGFyIC0tbGluZSkgKG9yZy10YWJsZS1nb3RvLWNvbHVtbiAt LWNvbHVtbikgKHNldC1tYXJrZXIgLS1saW5lIG5pbCkpKSkgKG9yZy10YWJsZS0tc2hyaW5rLWNv bHVtbnMgLS1zaHJ1bmstY29sdW1ucyAtLWJlZ2luIC0tZW5kKSAoc2V0LW1hcmtlciAtLWJlZ2lu IG5pbCkgKHNldC1tYXJrZXIgLS1lbmQgbmlsKSkpCiAgKHByb2duIChsZXQgKCgtLWJlZ2luIChj b3B5LW1hcmtlciAob3JnLXRhYmxlLWJlZ2luKSkpICgtLWVuZCAoY29weS1tYXJrZXIgKG9yZy10 YWJsZS1lbmQpIHQpKSAoLS1zaHJ1bmstY29sdW1ucyAob3JnLXRhYmxlLS1saXN0LXNocnVuay1j b2x1bW5zKSkpIChsZXQgKCgtLW1wb20gLS1iZWdpbikpIChzYXZlLWV4Y3Vyc2lvbiAoaWYgKG1h cmtlcnAgLS1tcG9tKSAocHJvZ24gKHNldC1idWZmZXIgKG1hcmtlci1idWZmZXIgLS1tcG9tKSkp KSAoc2F2ZS1leGN1cnNpb24gKHNhdmUtcmVzdHJpY3Rpb24gKHdpZGVuKSAoZ290by1jaGFyIChv ciAtLW1wb20gLi4uKSkgKG9yZy10YWJsZS1leHBhbmQgLS1iZWdpbiAtLWVuZCkpKSkpICh1bndp bmQtcHJvdGVjdCAocHJvZ24gKGxldCAoKC0tbGluZSAoY29weS1tYXJrZXIgLi4uKSkgKC0tY29s dW1uIChvcmctdGFibGUtY3VycmVudC1jb2x1bW4pKSkgKHVud2luZC1wcm90ZWN0IChwcm9nbiAo bGV0IC4uLiAuLi4pIChzZXRxIGVxbGNvbCAuLi4pIChzZXRxIGVxbGZpZWxkIC4uLikgKGlmIGFs bCAuLi4gLi4uKSAoZ290by1jaGFyIGJlZykgKHJlbW92ZS10ZXh0LXByb3BlcnRpZXMgYmVnIGVu ZCAuLi4pIChsZXQgLi4uIC4uLikgKGdvdG8tY2hhciBiZWcpICh3aGlsZSAuLi4gLi4uKSAobGV0 IC4uLiAuLi4pIChzZXQtbWFya2VyIGVuZCBuaWwpKSAoZ290by1jaGFyIC0tbGluZSkgKG9yZy10 YWJsZS1nb3RvLWNvbHVtbiAtLWNvbHVtbikgKHNldC1tYXJrZXIgLS1saW5lIG5pbCkpKSkgKG9y Zy10YWJsZS0tc2hyaW5rLWNvbHVtbnMgLS1zaHJ1bmstY29sdW1ucyAtLWJlZ2luIC0tZW5kKSAo c2V0LW1hcmtlciAtLWJlZ2luIG5pbCkgKHNldC1tYXJrZXIgLS1lbmQgbmlsKSkpIChpZiBub2Fs aWduIG5pbCAoaWYgb3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSAocHJvZ24gKG9yZy10YWJsZS1h bGlnbikpKSAoaWYgYWxsIChwcm9nbiAob3JnLXRhYmxlLW1lc3NhZ2Utb25jZS1wZXItc2Vjb25k IGxvZy1maXJzdC10aW1lICJSZS1hcHBseWluZyBmb3JtdWxhcyB0byAlZCBsaW5lcy4uLiBkb25l IiBjbnQpKSkpIChvcmctdGFibGUtbWVzc2FnZS1vbmNlLXBlci1zZWNvbmQgKGFuZCBhbGwgbG9n LWZpcnN0LXRpbWUpICJSZS1hcHBseWluZyBmb3JtdWxhcy4uLiBkb25lIikpCiAgKGlmIGVxbGlz dCAocHJvZ24gKGxldCAoKC0tYmVnaW4gKGNvcHktbWFya2VyIChvcmctdGFibGUtYmVnaW4pKSkg KC0tZW5kIChjb3B5LW1hcmtlciAob3JnLXRhYmxlLWVuZCkgdCkpICgtLXNocnVuay1jb2x1bW5z IChvcmctdGFibGUtLWxpc3Qtc2hydW5rLWNvbHVtbnMpKSkgKGxldCAoKC0tbXBvbSAtLWJlZ2lu KSkgKHNhdmUtZXhjdXJzaW9uIChpZiAobWFya2VycCAtLW1wb20pIChwcm9nbiAoc2V0LWJ1ZmZl ciAuLi4pKSkgKHNhdmUtZXhjdXJzaW9uIChzYXZlLXJlc3RyaWN0aW9uICh3aWRlbikgKGdvdG8t Y2hhciAuLi4pIChvcmctdGFibGUtZXhwYW5kIC0tYmVnaW4gLS1lbmQpKSkpKSAodW53aW5kLXBy b3RlY3QgKHByb2duIChsZXQgKCgtLWxpbmUgLi4uKSAoLS1jb2x1bW4gLi4uKSkgKHVud2luZC1w cm90ZWN0IChwcm9nbiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4u KSAoZ290by1jaGFyIC0tbGluZSkgKG9yZy10YWJsZS1nb3RvLWNvbHVtbiAtLWNvbHVtbikgKHNl dC1tYXJrZXIgLS1saW5lIG5pbCkpKSkgKG9yZy10YWJsZS0tc2hyaW5rLWNvbHVtbnMgLS1zaHJ1 bmstY29sdW1ucyAtLWJlZ2luIC0tZW5kKSAoc2V0LW1hcmtlciAtLWJlZ2luIG5pbCkgKHNldC1t YXJrZXIgLS1lbmQgbmlsKSkpIChpZiBub2FsaWduIG5pbCAoaWYgb3JnLXRhYmxlLW1heS1uZWVk LXVwZGF0ZSAocHJvZ24gKG9yZy10YWJsZS1hbGlnbikpKSAoaWYgYWxsIChwcm9nbiAob3JnLXRh YmxlLW1lc3NhZ2Utb25jZS1wZXItc2Vjb25kIGxvZy1maXJzdC10aW1lICJSZS1hcHBseWluZyBm b3JtdWxhcyB0byAlZCBsaW5lcy4uLiBkb25lIiBjbnQpKSkpIChvcmctdGFibGUtbWVzc2FnZS1v bmNlLXBlci1zZWNvbmQgKGFuZCBhbGwgbG9nLWZpcnN0LXRpbWUpICJSZS1hcHBseWluZyBmb3Jt dWxhcy4uLiBkb25lIikpKQogIChsZXQqICgoZXFsaXN0IChzb3J0IChvcmctdGFibGUtZ2V0LXN0 b3JlZC1mb3JtdWxhcykgKGZ1bmN0aW9uIChsYW1iZGEgKGEgYikgKHN0cmluZzwgKGNhciBhKSAo Y2FyIGIpKSkpKSkgKGluaGliaXQtcmVkaXNwbGF5IChub3QgZGVidWctb24tZXJyb3IpKSAobGlu ZS1yZSBvcmctdGFibGUtZGF0YWxpbmUtcmVnZXhwKSAobG9nLWZpcnN0LXRpbWUgKGN1cnJlbnQt dGltZSkpIChsb2ctbGFzdC10aW1lIGxvZy1maXJzdC10aW1lKSAoY250IDApIGJlZyBlbmQgZXFs Y29sIGVxbGZpZWxkKSAoaWYgZXFsaXN0IChwcm9nbiAobGV0ICgoLS1iZWdpbiAoY29weS1tYXJr ZXIgKG9yZy10YWJsZS1iZWdpbikpKSAoLS1lbmQgKGNvcHktbWFya2VyIChvcmctdGFibGUtZW5k KSB0KSkgKC0tc2hydW5rLWNvbHVtbnMgKG9yZy10YWJsZS0tbGlzdC1zaHJ1bmstY29sdW1ucykp KSAobGV0ICgoLS1tcG9tIC0tYmVnaW4pKSAoc2F2ZS1leGN1cnNpb24gKGlmIChtYXJrZXJwIC0t bXBvbSkgKHByb2duIC4uLikpIChzYXZlLWV4Y3Vyc2lvbiAoc2F2ZS1yZXN0cmljdGlvbiAuLi4g Li4uIC4uLikpKSkgKHVud2luZC1wcm90ZWN0IChwcm9nbiAobGV0ICguLi4gLi4uKSAodW53aW5k LXByb3RlY3QgLi4uIC4uLiAuLi4gLi4uKSkpIChvcmctdGFibGUtLXNocmluay1jb2x1bW5zIC0t c2hydW5rLWNvbHVtbnMgLS1iZWdpbiAtLWVuZCkgKHNldC1tYXJrZXIgLS1iZWdpbiBuaWwpIChz ZXQtbWFya2VyIC0tZW5kIG5pbCkpKSAoaWYgbm9hbGlnbiBuaWwgKGlmIG9yZy10YWJsZS1tYXkt bmVlZC11cGRhdGUgKHByb2duIChvcmctdGFibGUtYWxpZ24pKSkgKGlmIGFsbCAocHJvZ24gKG9y Zy10YWJsZS1tZXNzYWdlLW9uY2UtcGVyLXNlY29uZCBsb2ctZmlyc3QtdGltZSAiUmUtYXBwbHlp bmcgZm9ybXVsYXMgdG8gJWQgbGluZXMuLi4gZG9uZSIgY250KSkpKSAob3JnLXRhYmxlLW1lc3Nh Z2Utb25jZS1wZXItc2Vjb25kIChhbmQgYWxsIGxvZy1maXJzdC10aW1lKSAiUmUtYXBwbHlpbmcg Zm9ybXVsYXMuLi4gZG9uZSIpKSkpCiAgKGlmIChvciAoZXEgYWxsIChxdW90ZSBpdGVyYXRlKSkg KGVxdWFsIGFsbCAocXVvdGUgKDE2KSkpKSAob3JnLXRhYmxlLWl0ZXJhdGUpIChvcmctdGFibGUt YW5hbHl6ZSkgKGxldCogKChlcWxpc3QgKHNvcnQgKG9yZy10YWJsZS1nZXQtc3RvcmVkLWZvcm11 bGFzKSAoZnVuY3Rpb24gKGxhbWJkYSAoYSBiKSAoc3RyaW5nPCAuLi4gLi4uKSkpKSkgKGluaGli aXQtcmVkaXNwbGF5IChub3QgZGVidWctb24tZXJyb3IpKSAobGluZS1yZSBvcmctdGFibGUtZGF0 YWxpbmUtcmVnZXhwKSAobG9nLWZpcnN0LXRpbWUgKGN1cnJlbnQtdGltZSkpIChsb2ctbGFzdC10 aW1lIGxvZy1maXJzdC10aW1lKSAoY250IDApIGJlZyBlbmQgZXFsY29sIGVxbGZpZWxkKSAoaWYg ZXFsaXN0IChwcm9nbiAobGV0ICgoLS1iZWdpbiAoY29weS1tYXJrZXIgLi4uKSkgKC0tZW5kIChj b3B5LW1hcmtlciAuLi4gdCkpICgtLXNocnVuay1jb2x1bW5zIChvcmctdGFibGUtLWxpc3Qtc2hy dW5rLWNvbHVtbnMpKSkgKGxldCAoKC0tbXBvbSAtLWJlZ2luKSkgKHNhdmUtZXhjdXJzaW9uIChp ZiAuLi4gLi4uKSAoc2F2ZS1leGN1cnNpb24gLi4uKSkpICh1bndpbmQtcHJvdGVjdCAocHJvZ24g KGxldCAuLi4gLi4uKSkgKG9yZy10YWJsZS0tc2hyaW5rLWNvbHVtbnMgLS1zaHJ1bmstY29sdW1u cyAtLWJlZ2luIC0tZW5kKSAoc2V0LW1hcmtlciAtLWJlZ2luIG5pbCkgKHNldC1tYXJrZXIgLS1l bmQgbmlsKSkpIChpZiBub2FsaWduIG5pbCAoaWYgb3JnLXRhYmxlLW1heS1uZWVkLXVwZGF0ZSAo cHJvZ24gKG9yZy10YWJsZS1hbGlnbikpKSAoaWYgYWxsIChwcm9nbiAob3JnLXRhYmxlLW1lc3Nh Z2Utb25jZS1wZXItc2Vjb25kIGxvZy1maXJzdC10aW1lICJSZS1hcHBseWluZyBmb3JtdWxhcyB0 byAlZCBsaW5lcy4uLiBkb25lIiBjbnQpKSkpIChvcmctdGFibGUtbWVzc2FnZS1vbmNlLXBlci1z ZWNvbmQgKGFuZCBhbGwgbG9nLWZpcnN0LXRpbWUpICJSZS1hcHBseWluZyBmb3JtdWxhcy4uLiBk b25lIikpKSkpCiAgb3JnLXRhYmxlLXJlY2FsY3VsYXRlKHQpCiAgZnVuY2FsbC1pbnRlcmFjdGl2 ZWx5KG9yZy10YWJsZS1yZWNhbGN1bGF0ZSB0KQogIGNhbGwtaW50ZXJhY3RpdmVseShvcmctdGFi bGUtcmVjYWxjdWxhdGUpCiAgKGxldCAoKGN1cnJlbnQtcHJlZml4LWFyZyBhcmcpKSAoY2FsbC1p bnRlcmFjdGl2ZWx5IGNvbW1hbmQpKQogIG9yZy1jYWxsLXdpdGgtYXJnKG9yZy10YWJsZS1yZWNh bGN1bGF0ZSB0KQogIChpZiAob3JnLWF0LVRCTEZNLXApIChwcm9nbiAocmVxdWlyZSAocXVvdGUg b3JnLXRhYmxlKSkgKG9yZy10YWJsZS1jYWxjLWN1cnJlbnQtVEJMRk0pKSAoZ290by1jaGFyIChv cmctZWxlbWVudC1wcm9wZXJ0eSA6Y29udGVudHMtYmVnaW4gY29udGV4dCkpIChvcmctY2FsbC13 aXRoLWFyZyAocXVvdGUgb3JnLXRhYmxlLXJlY2FsY3VsYXRlKSAob3IgYXJnIHQpKSAob3JndGJs LXNlbmQtdGFibGUgKHF1b3RlIG1heWJlKSkpCiAgKHNhdmUtZXhjdXJzaW9uIChpZiAob3JnLWF0 LVRCTEZNLXApIChwcm9nbiAocmVxdWlyZSAocXVvdGUgb3JnLXRhYmxlKSkgKG9yZy10YWJsZS1j YWxjLWN1cnJlbnQtVEJMRk0pKSAoZ290by1jaGFyIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6Y29u dGVudHMtYmVnaW4gY29udGV4dCkpIChvcmctY2FsbC13aXRoLWFyZyAocXVvdGUgb3JnLXRhYmxl LXJlY2FsY3VsYXRlKSAob3IgYXJnIHQpKSAob3JndGJsLXNlbmQtdGFibGUgKHF1b3RlIG1heWJl KSkpKQogIChpZiAob3IgKGVxIHR5cGUgKHF1b3RlIHRhYmxlKSkgKGFuZCAoZXEgdHlwZSAocXVv dGUgdGFibGUtcm93KSkgKD0gKHBvaW50KSAob3JnLWVsZW1lbnQtcHJvcGVydHkgOmVuZCBjb250 ZXh0KSkpKSAoc2F2ZS1leGN1cnNpb24gKGlmIChvcmctYXQtVEJMRk0tcCkgKHByb2duIChyZXF1 aXJlIChxdW90ZSBvcmctdGFibGUpKSAob3JnLXRhYmxlLWNhbGMtY3VycmVudC1UQkxGTSkpIChn b3RvLWNoYXIgKG9yZy1lbGVtZW50LXByb3BlcnR5IDpjb250ZW50cy1iZWdpbiBjb250ZXh0KSkg KG9yZy1jYWxsLXdpdGgtYXJnIChxdW90ZSBvcmctdGFibGUtcmVjYWxjdWxhdGUpIChvciBhcmcg dCkpIChvcmd0Ymwtc2VuZC10YWJsZSAocXVvdGUgbWF5YmUpKSkpIChvcmctdGFibGUtbWF5YmUt ZXZhbC1mb3JtdWxhKSAoY29uZCAoYXJnIChjYWxsLWludGVyYWN0aXZlbHkgKGZ1bmN0aW9uIG9y Zy10YWJsZS1yZWNhbGN1bGF0ZSkpKSAoKG9yZy10YWJsZS1tYXliZS1yZWNhbGN1bGF0ZS1saW5l KSkgKHQgKG9yZy10YWJsZS1hbGlnbikpKSkKICAoaWYgKGVxIChvcmctZWxlbWVudC1wcm9wZXJ0 eSA6dHlwZSBjb250ZXh0KSAocXVvdGUgdGFibGVcLmVsKSkgKG1lc3NhZ2UgIiVzIiAoc3Vic3Rp dHV0ZS1jb21tYW5kLWtleXMgIlxcPG9yZy1tb2RlLW1hcD5Vc2UgYFxcW29yZy1lZGl0LXNwZWNp YWxdJyB0byBlZGl0IHRhYmxlLmVsIHRhYmxlcyIpKSAoaWYgKG9yIChlcSB0eXBlIChxdW90ZSB0 YWJsZSkpIChhbmQgKGVxIHR5cGUgKHF1b3RlIHRhYmxlLXJvdykpICg9IChwb2ludCkgKG9yZy1l bGVtZW50LXByb3BlcnR5IDplbmQgY29udGV4dCkpKSkgKHNhdmUtZXhjdXJzaW9uIChpZiAob3Jn LWF0LVRCTEZNLXApIChwcm9nbiAocmVxdWlyZSAocXVvdGUgb3JnLXRhYmxlKSkgKG9yZy10YWJs ZS1jYWxjLWN1cnJlbnQtVEJMRk0pKSAoZ290by1jaGFyIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6 Y29udGVudHMtYmVnaW4gY29udGV4dCkpIChvcmctY2FsbC13aXRoLWFyZyAocXVvdGUgb3JnLXRh YmxlLXJlY2FsY3VsYXRlKSAob3IgYXJnIHQpKSAob3JndGJsLXNlbmQtdGFibGUgKHF1b3RlIG1h eWJlKSkpKSAob3JnLXRhYmxlLW1heWJlLWV2YWwtZm9ybXVsYSkgKGNvbmQgKGFyZyAoY2FsbC1p bnRlcmFjdGl2ZWx5IChmdW5jdGlvbiBvcmctdGFibGUtcmVjYWxjdWxhdGUpKSkgKChvcmctdGFi bGUtbWF5YmUtcmVjYWxjdWxhdGUtbGluZSkpICh0IChvcmctdGFibGUtYWxpZ24pKSkpKQogIChs ZXQgbmlsIChpZiAoZXEgKG9yZy1lbGVtZW50LXByb3BlcnR5IDp0eXBlIGNvbnRleHQpIChxdW90 ZSB0YWJsZVwuZWwpKSAobWVzc2FnZSAiJXMiIChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyAiXFw8 b3JnLW1vZGUtbWFwPlVzZSBgXFxbb3JnLWVkaXQtc3BlY2lhbF0nIHRvIGVkaXQgdGFibGUuZWwg dGFibGVzIikpIChpZiAob3IgKGVxIHR5cGUgKHF1b3RlIHRhYmxlKSkgKGFuZCAoZXEgdHlwZSAo cXVvdGUgdGFibGUtcm93KSkgKD0gKHBvaW50KSAob3JnLWVsZW1lbnQtcHJvcGVydHkgOmVuZCBj b250ZXh0KSkpKSAoc2F2ZS1leGN1cnNpb24gKGlmIChvcmctYXQtVEJMRk0tcCkgKHByb2duIChy ZXF1aXJlIChxdW90ZSBvcmctdGFibGUpKSAob3JnLXRhYmxlLWNhbGMtY3VycmVudC1UQkxGTSkp IChnb3RvLWNoYXIgKG9yZy1lbGVtZW50LXByb3BlcnR5IDpjb250ZW50cy1iZWdpbiBjb250ZXh0 KSkgKG9yZy1jYWxsLXdpdGgtYXJnIChxdW90ZSBvcmctdGFibGUtcmVjYWxjdWxhdGUpIChvciBh cmcgdCkpIChvcmd0Ymwtc2VuZC10YWJsZSAocXVvdGUgbWF5YmUpKSkpIChvcmctdGFibGUtbWF5 YmUtZXZhbC1mb3JtdWxhKSAoY29uZCAoYXJnIChjYWxsLWludGVyYWN0aXZlbHkgKGZ1bmN0aW9u IG9yZy10YWJsZS1yZWNhbGN1bGF0ZSkpKSAoKG9yZy10YWJsZS1tYXliZS1yZWNhbGN1bGF0ZS1s aW5lKSkgKHQgKG9yZy10YWJsZS1hbGlnbikpKSkpKQogIChjb25kICgobWVtcSB0eXBlIChxdW90 ZSAoc3JjLWJsb2NrIGlubGluZS1zcmMtYmxvY2spKSkgKGxldCBuaWwgKGlmIG9yZy1iYWJlbC1u by1ldmFsLW9uLWN0cmwtYy1jdHJsLWMgbmlsIChvcmctYmFiZWwtZXZhbC13aXBlLWVycm9yLWJ1 ZmZlcikgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jayBjdXJyZW50LXByZWZpeC1hcmcgKG9y Zy1iYWJlbC1nZXQtc3JjLWJsb2NrLWluZm8gbmlsIGNvbnRleHQpKSkpKSAoKG9yZy1tYXRjaC1s aW5lICJbIAldKiQiKSAobGV0IG5pbCAob3IgKHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNj ZXNzIChxdW90ZSBvcmctY3RybC1jLWN0cmwtYy1maW5hbC1ob29rKSkgKHVzZXItZXJyb3IgKHN1 YnN0aXR1dGUtY29tbWFuZC1rZXlzICJgXFxbb3JnLWN0cmwtYy1jdHJsLWNdJyBjYW4gZG8gbm90 aGluZyB1c2VmdWwgaGVyZSIpKSkpKSAoKG1lbXEgdHlwZSAocXVvdGUgKGlubGluZS1iYWJlbC1j YWxsIGJhYmVsLWNhbGwpKSkgKGxldCBuaWwgKGxldCAoKGluZm8gKG9yZy1iYWJlbC1sb2ItZ2V0 LWluZm8gY29udGV4dCkpKSAoaWYgaW5mbyAocHJvZ24gKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1i bG9jayBuaWwgaW5mbykpKSkpKSAoKGVxIHR5cGUgKHF1b3RlIGNsb2NrKSkgKGxldCBuaWwgKG9y Zy1jbG9jay11cGRhdGUtdGltZS1tYXliZSkpKSAoKGVxIHR5cGUgKHF1b3RlIGR5bmFtaWMtYmxv Y2spKSAobGV0IG5pbCAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciAob3JnLWVsZW1lbnQtcHJv cGVydHkgOnBvc3QtYWZmaWxpYXRlZCBjb250ZXh0KSkgKG9yZy11cGRhdGUtZGJsb2NrKSkpKSAo KGVxIHR5cGUgKHF1b3RlIGZvb3Rub3RlLWRlZmluaXRpb24pKSAobGV0IG5pbCAoZ290by1jaGFy IChvcmctZWxlbWVudC1wcm9wZXJ0eSA6cG9zdC1hZmZpbGlhdGVkIGNvbnRleHQpKSAoY2FsbC1p bnRlcmFjdGl2ZWx5IChxdW90ZSBvcmctZm9vdG5vdGUtYWN0aW9uKSkpKSAoKGVxIHR5cGUgKHF1 b3RlIGZvb3Rub3RlLXJlZmVyZW5jZSkpIChsZXQgbmlsIChjYWxsLWludGVyYWN0aXZlbHkgKGZ1 bmN0aW9uIG9yZy1mb290bm90ZS1hY3Rpb24pKSkpICgobWVtcSB0eXBlIChxdW90ZSAoaW5saW5l dGFzayBoZWFkbGluZSkpKSAobGV0IG5pbCAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciAob3Jn LWVsZW1lbnQtcHJvcGVydHkgOmJlZ2luIGNvbnRleHQpKSAoY2FsbC1pbnRlcmFjdGl2ZWx5IChm dW5jdGlvbiBvcmctc2V0LXRhZ3MtY29tbWFuZCkpKSkpICgoZXEgdHlwZSAocXVvdGUgaXRlbSkp IChsZXQgbmlsIChsZXQqICgoYm94IChvcmctZWxlbWVudC1wcm9wZXJ0eSA6Y2hlY2tib3ggY29u dGV4dCkpIChzdHJ1Y3QgKG9yZy1lbGVtZW50LXByb3BlcnR5IDpzdHJ1Y3R1cmUgY29udGV4dCkp IChvbGQtc3RydWN0IChjb3B5LXRyZWUgc3RydWN0KSkgKHBhcmVudHMgKG9yZy1saXN0LXBhcmVu dHMtYWxpc3Qgc3RydWN0KSkgKHByZXZzIChvcmctbGlzdC1wcmV2cy1hbGlzdCBzdHJ1Y3QpKSAo b3JkZXJlZHAgKG9yZy1ub3QtbmlsIChvcmctZW50cnktZ2V0IG5pbCAiT1JERVJFRCIpKSkpIChv cmctbGlzdC1zZXQtY2hlY2tib3ggKG9yZy1lbGVtZW50LXByb3BlcnR5IDpiZWdpbiBjb250ZXh0 KSBzdHJ1Y3QgKGNvbmQgKChlcXVhbCBhcmcgLi4uKSAiWy1dIikgKChhbmQgLi4uIC4uLikgIlsg XSIpICgob3IgLi4uIC4uLikgbmlsKSAoKGVxIGJveCAuLi4pICJbIF0iKSAodCAiW1hdIikpKSAo b3JnLWxpc3Qtc3RydWN0LWZpeC1pbmQgc3RydWN0IHBhcmVudHMgMikgKG9yZy1saXN0LXN0cnVj dC1maXgtaXRlbS1lbmQgc3RydWN0KSAob3JnLWxpc3Qtc3RydWN0LWZpeC1idWwgc3RydWN0IHBy ZXZzKSAob3JnLWxpc3Qtc3RydWN0LWZpeC1pbmQgc3RydWN0IHBhcmVudHMpIChsZXQgKChibG9j ay1pdGVtIChvcmctbGlzdC1zdHJ1Y3QtZml4LWJveCBzdHJ1Y3QgcGFyZW50cyBwcmV2cyBvcmRl cmVkcCkpKSAoaWYgKGFuZCBib3ggKGVxdWFsIHN0cnVjdCBvbGQtc3RydWN0KSkgKGlmIChlcXVh bCBhcmcgLi4uKSAobWVzc2FnZSAiQ2hlY2tib3hlcyBhbHJlYWR5IHJlc2V0IikgKHVzZXItZXJy b3IgIkNhbm5vdCB0b2dnbGUgdGhpcyBjaGVja2JveDogJXMiIC4uLikpIChvcmctbGlzdC1zdHJ1 Y3QtYXBwbHktc3RydWN0IHN0cnVjdCBvbGQtc3RydWN0KSAob3JnLXVwZGF0ZS1jaGVja2JveC1j b3VudC1tYXliZSkpIChpZiBibG9jay1pdGVtIChwcm9nbiAobWVzc2FnZSAiQ2hlY2tib3hlcyB3 ZXJlIHJlbW92ZWQgZHVlIHRvIGVtcHR5IGJveCBhdCBsaW5lICVkIiAuLi4pKSkpKSkpICgoZXEg dHlwZSAocXVvdGUga2V5d29yZCkpIChsZXQgbmlsIChsZXQgKChvcmctaW5oaWJpdC1zdGFydHVw LXZpc2liaWxpdHktc3R1ZmYgdCkgKG9yZy1zdGFydHVwLWFsaWduLWFsbC10YWJsZXMgbmlsKSkg KGlmIChib3VuZHAgKHF1b3RlIG9yZy10YWJsZS1jb29yZGluYXRlLW92ZXJsYXlzKSkgKHByb2du IChtYXBjIChmdW5jdGlvbiBkZWxldGUtb3ZlcmxheSkgb3JnLXRhYmxlLWNvb3JkaW5hdGUtb3Zl cmxheXMpIChzZXRxIG9yZy10YWJsZS1jb29yZGluYXRlLW92ZXJsYXlzIG5pbCkpKSAobGV0KiAo KC0taW52aXNpYmxlLXR5cGVzIChxdW90ZSAuLi4pKSAoLS1tYXJrZXJzXD8gKHF1b3RlIHVzZS1t YXJrZXJzKSkgKC0tZGF0YSAobWFwY2FyIC4uLiAuLi4pKSkgKHVud2luZC1wcm90ZWN0IChwcm9n biAob3JnLW1vZGUtcmVzdGFydCkpIChzYXZlLWV4Y3Vyc2lvbiAoc2F2ZS1yZXN0cmljdGlvbiAu Li4gLi4uIC4uLikpKSkpIChtZXNzYWdlICJMb2NhbCBzZXR1cCBoYXMgYmVlbiByZWZyZXNoZWQi KSkpICgoZXEgdHlwZSAocXVvdGUgcGxhaW4tbGlzdCkpIChsZXQgbmlsIChsZXQqICgoYmVnaW4g KG9yZy1lbGVtZW50LXByb3BlcnR5IDpjb250ZW50cy1iZWdpbiBjb250ZXh0KSkgKHN0cnVjdCAo b3JnLWVsZW1lbnQtcHJvcGVydHkgOnN0cnVjdHVyZSBjb250ZXh0KSkgKG9sZC1zdHJ1Y3QgKGNv cHktdHJlZSBzdHJ1Y3QpKSAoZmlyc3QtYm94IChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIGJl Z2luKSAobG9va2luZy1hdCBvcmctbGlzdC1mdWxsLWl0ZW0tcmUpIChtYXRjaC1zdHJpbmctbm8t cHJvcGVydGllcyAzKSkpIChuZXctYm94IChjb25kICguLi4gIlstXSIpICguLi4gLi4uKSAoLi4u ICJbIF0iKSAodCAiW1hdIikpKSkgKGNvbmQgKGFyZyAobGV0ICguLi4pICh3aGlsZSAtLWRvbGlz dC10YWlsLS0gLi4uKSkpICgoYW5kIGZpcnN0LWJveCAoZXEgLi4uIGJlZ2luKSkgKG9yZy1saXN0 LXNldC1jaGVja2JveCBiZWdpbiBzdHJ1Y3QgbmV3LWJveCkpKSAoaWYgKGVxdWFsIChvcmctbGlz dC13cml0ZS1zdHJ1Y3Qgc3RydWN0IChvcmctbGlzdC1wYXJlbnRzLWFsaXN0IHN0cnVjdCkgb2xk LXN0cnVjdCkgb2xkLXN0cnVjdCkgKHByb2duIChtZXNzYWdlICJDYW5ub3QgdXBkYXRlIHRoaXMg Y2hlY2tib3giKSkpIChvcmctdXBkYXRlLWNoZWNrYm94LWNvdW50LW1heWJlKSkpKSAoKG1lbXEg dHlwZSAocXVvdGUgKG5vZGUtcHJvcGVydHkgcHJvcGVydHktZHJhd2VyKSkpIChsZXQgbmlsIChj YWxsLWludGVyYWN0aXZlbHkgKGZ1bmN0aW9uIG9yZy1wcm9wZXJ0eS1hY3Rpb24pKSkpICgoZXEg dHlwZSAocXVvdGUgcmFkaW8tdGFyZ2V0KSkgKGxldCBuaWwgKGNhbGwtaW50ZXJhY3RpdmVseSAo ZnVuY3Rpb24gb3JnLXVwZGF0ZS1yYWRpby10YXJnZXQtcmVnZXhwKSkpKSAoKGVxIHR5cGUgKHF1 b3RlIHN0YXRpc3RpY3MtY29va2llKSkgKGxldCBuaWwgKGNhbGwtaW50ZXJhY3RpdmVseSAoZnVu Y3Rpb24gb3JnLXVwZGF0ZS1zdGF0aXN0aWNzLWNvb2tpZXMpKSkpICgobWVtcSB0eXBlIChxdW90 ZSAodGFibGUtcm93IHRhYmxlLWNlbGwgdGFibGUpKSkgKGxldCBuaWwgKGlmIChlcSAob3JnLWVs ZW1lbnQtcHJvcGVydHkgOnR5cGUgY29udGV4dCkgKHF1b3RlIHRhYmxlXC5lbCkpIChtZXNzYWdl ICIlcyIgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzICJcXDxvcmctbW9kZS1tYXA+VXNlIGBcXFtv cmctZWRpdC1zcGVjaWFsXScgdG8gZWRpdCB0YWJsZS5lbCB0YWJsZXMiKSkgKGlmIChvciAoZXEg dHlwZSAocXVvdGUgdGFibGUpKSAoYW5kIChlcSB0eXBlIC4uLikgKD0gLi4uIC4uLikpKSAoc2F2 ZS1leGN1cnNpb24gKGlmIChvcmctYXQtVEJMRk0tcCkgKHByb2duIC4uLiAuLi4pIChnb3RvLWNo YXIgLi4uKSAob3JnLWNhbGwtd2l0aC1hcmcgLi4uIC4uLikgKG9yZ3RibC1zZW5kLXRhYmxlIC4u LikpKSAob3JnLXRhYmxlLW1heWJlLWV2YWwtZm9ybXVsYSkgKGNvbmQgKGFyZyAoY2FsbC1pbnRl cmFjdGl2ZWx5IC4uLikpICgob3JnLXRhYmxlLW1heWJlLXJlY2FsY3VsYXRlLWxpbmUpKSAodCAo b3JnLXRhYmxlLWFsaWduKSkpKSkpKSAoKGVxIHR5cGUgKHF1b3RlIHRpbWVzdGFtcCkpIChmdW5j YWxsIHBjYXNlLTApKSAoKGVxIHR5cGUgKHF1b3RlIHBsYW5uaW5nKSkgKGNvbmQgKChvcmctYXQt dGltZXN0YW1wLXAgKHF1b3RlIGxheCkpIChmdW5jYWxsIHBjYXNlLTApKSAoKHJ1bi1ob29rLXdp dGgtYXJncy11bnRpbC1zdWNjZXNzIChxdW90ZSBvcmctY3RybC1jLWN0cmwtYy1maW5hbC1ob29r KSkgKGZ1bmNhbGwgcGNhc2UtMSkpICh0IChmdW5jYWxsIHBjYXNlLTIpKSkpICgobnVsbCB0eXBl KSAoY29uZCAoKG9yZy1hdC1oZWFkaW5nLXApIChsZXQgbmlsIChjYWxsLWludGVyYWN0aXZlbHkg KGZ1bmN0aW9uIG9yZy1zZXQtdGFncy1jb21tYW5kKSkpKSAoKHJ1bi1ob29rLXdpdGgtYXJncy11 bnRpbC1zdWNjZXNzIChxdW90ZSBvcmctY3RybC1jLWN0cmwtYy1maW5hbC1ob29rKSkgKGZ1bmNh bGwgcGNhc2UtMSkpICh0IChmdW5jYWxsIHBjYXNlLTIpKSkpICgocnVuLWhvb2std2l0aC1hcmdz LXVudGlsLXN1Y2Nlc3MgKHF1b3RlIG9yZy1jdHJsLWMtY3RybC1jLWZpbmFsLWhvb2spKSAoZnVu Y2FsbCBwY2FzZS0xKSkgKHQgKGZ1bmNhbGwgcGNhc2UtMikpKQogIChsZXQqICgocGNhc2UtMiAo ZnVuY3Rpb24gKGxhbWJkYSBuaWwgKHVzZXItZXJyb3IgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlz ICJgXFxbb3JnLWN0cmwtYy1jdHJsLWNdJyBjYW4gZG8gbm90aGluZyB1c2VmdWwgaGVyZSIpKSkp KSAocGNhc2UtMSAoZnVuY3Rpb24gKGxhbWJkYSBuaWwpKSkgKHBjYXNlLTAgKGZ1bmN0aW9uIChs YW1iZGEgbmlsIChvcmctdGltZXN0YW1wLWNoYW5nZSAwIChxdW90ZSBkYXkpKSkpKSkgKGNvbmQg KChtZW1xIHR5cGUgKHF1b3RlIChzcmMtYmxvY2sgaW5saW5lLXNyYy1ibG9jaykpKSAobGV0IG5p bCAoaWYgb3JnLWJhYmVsLW5vLWV2YWwtb24tY3RybC1jLWN0cmwtYyBuaWwgKG9yZy1iYWJlbC1l dmFsLXdpcGUtZXJyb3ItYnVmZmVyKSAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrIGN1cnJl bnQtcHJlZml4LWFyZyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbyBuaWwgY29udGV4dCkp KSkpICgob3JnLW1hdGNoLWxpbmUgIlsgCV0qJCIpIChsZXQgbmlsIChvciAocnVuLWhvb2std2l0 aC1hcmdzLXVudGlsLXN1Y2Nlc3MgKHF1b3RlIG9yZy1jdHJsLWMtY3RybC1jLWZpbmFsLWhvb2sp KSAodXNlci1lcnJvciAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMgImBcXFtvcmctY3RybC1jLWN0 cmwtY10nIGNhbiBkbyBub3RoaW5nIHVzZWZ1bCBoZXJlIikpKSkpICgobWVtcSB0eXBlIChxdW90 ZSAoaW5saW5lLWJhYmVsLWNhbGwgYmFiZWwtY2FsbCkpKSAobGV0IG5pbCAobGV0ICgoaW5mbyAo b3JnLWJhYmVsLWxvYi1nZXQtaW5mbyBjb250ZXh0KSkpIChpZiBpbmZvIChwcm9nbiAob3JnLWJh YmVsLWV4ZWN1dGUtc3JjLWJsb2NrIG5pbCBpbmZvKSkpKSkpICgoZXEgdHlwZSAocXVvdGUgY2xv Y2spKSAobGV0IG5pbCAob3JnLWNsb2NrLXVwZGF0ZS10aW1lLW1heWJlKSkpICgoZXEgdHlwZSAo cXVvdGUgZHluYW1pYy1ibG9jaykpIChsZXQgbmlsIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFy IChvcmctZWxlbWVudC1wcm9wZXJ0eSA6cG9zdC1hZmZpbGlhdGVkIGNvbnRleHQpKSAob3JnLXVw ZGF0ZS1kYmxvY2spKSkpICgoZXEgdHlwZSAocXVvdGUgZm9vdG5vdGUtZGVmaW5pdGlvbikpIChs ZXQgbmlsIChnb3RvLWNoYXIgKG9yZy1lbGVtZW50LXByb3BlcnR5IDpwb3N0LWFmZmlsaWF0ZWQg Y29udGV4dCkpIChjYWxsLWludGVyYWN0aXZlbHkgKHF1b3RlIG9yZy1mb290bm90ZS1hY3Rpb24p KSkpICgoZXEgdHlwZSAocXVvdGUgZm9vdG5vdGUtcmVmZXJlbmNlKSkgKGxldCBuaWwgKGNhbGwt aW50ZXJhY3RpdmVseSAoZnVuY3Rpb24gb3JnLWZvb3Rub3RlLWFjdGlvbikpKSkgKChtZW1xIHR5 cGUgKHF1b3RlIChpbmxpbmV0YXNrIGhlYWRsaW5lKSkpIChsZXQgbmlsIChzYXZlLWV4Y3Vyc2lv biAoZ290by1jaGFyIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6YmVnaW4gY29udGV4dCkpIChjYWxs LWludGVyYWN0aXZlbHkgKGZ1bmN0aW9uIG9yZy1zZXQtdGFncy1jb21tYW5kKSkpKSkgKChlcSB0 eXBlIChxdW90ZSBpdGVtKSkgKGxldCBuaWwgKGxldCogKChib3ggKG9yZy1lbGVtZW50LXByb3Bl cnR5IDpjaGVja2JveCBjb250ZXh0KSkgKHN0cnVjdCAob3JnLWVsZW1lbnQtcHJvcGVydHkgOnN0 cnVjdHVyZSBjb250ZXh0KSkgKG9sZC1zdHJ1Y3QgKGNvcHktdHJlZSBzdHJ1Y3QpKSAocGFyZW50 cyAob3JnLWxpc3QtcGFyZW50cy1hbGlzdCBzdHJ1Y3QpKSAocHJldnMgKG9yZy1saXN0LXByZXZz LWFsaXN0IHN0cnVjdCkpIChvcmRlcmVkcCAob3JnLW5vdC1uaWwgLi4uKSkpIChvcmctbGlzdC1z ZXQtY2hlY2tib3ggKG9yZy1lbGVtZW50LXByb3BlcnR5IDpiZWdpbiBjb250ZXh0KSBzdHJ1Y3Qg KGNvbmQgKC4uLiAiWy1dIikgKC4uLiAiWyBdIikgKC4uLiBuaWwpICguLi4gIlsgXSIpICh0ICJb WF0iKSkpIChvcmctbGlzdC1zdHJ1Y3QtZml4LWluZCBzdHJ1Y3QgcGFyZW50cyAyKSAob3JnLWxp c3Qtc3RydWN0LWZpeC1pdGVtLWVuZCBzdHJ1Y3QpIChvcmctbGlzdC1zdHJ1Y3QtZml4LWJ1bCBz dHJ1Y3QgcHJldnMpIChvcmctbGlzdC1zdHJ1Y3QtZml4LWluZCBzdHJ1Y3QgcGFyZW50cykgKGxl dCAoKGJsb2NrLWl0ZW0gLi4uKSkgKGlmIChhbmQgYm94IC4uLikgKGlmIC4uLiAuLi4gLi4uKSAo b3JnLWxpc3Qtc3RydWN0LWFwcGx5LXN0cnVjdCBzdHJ1Y3Qgb2xkLXN0cnVjdCkgKG9yZy11cGRh dGUtY2hlY2tib3gtY291bnQtbWF5YmUpKSAoaWYgYmxvY2staXRlbSAocHJvZ24gLi4uKSkpKSkp ICgoZXEgdHlwZSAocXVvdGUga2V5d29yZCkpIChsZXQgbmlsIChsZXQgKChvcmctaW5oaWJpdC1z dGFydHVwLXZpc2liaWxpdHktc3R1ZmYgdCkgKG9yZy1zdGFydHVwLWFsaWduLWFsbC10YWJsZXMg bmlsKSkgKGlmIChib3VuZHAgKHF1b3RlIG9yZy10YWJsZS1jb29yZGluYXRlLW92ZXJsYXlzKSkg KHByb2duIChtYXBjIC4uLiBvcmctdGFibGUtY29vcmRpbmF0ZS1vdmVybGF5cykgKHNldHEgb3Jn LXRhYmxlLWNvb3JkaW5hdGUtb3ZlcmxheXMgbmlsKSkpIChsZXQqICgoLS1pbnZpc2libGUtdHlw ZXMgLi4uKSAoLS1tYXJrZXJzXD8gLi4uKSAoLS1kYXRhIC4uLikpICh1bndpbmQtcHJvdGVjdCAo cHJvZ24gLi4uKSAoc2F2ZS1leGN1cnNpb24gLi4uKSkpKSAobWVzc2FnZSAiTG9jYWwgc2V0dXAg aGFzIGJlZW4gcmVmcmVzaGVkIikpKSAoKGVxIHR5cGUgKHF1b3RlIHBsYWluLWxpc3QpKSAobGV0 IG5pbCAobGV0KiAoKGJlZ2luIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6Y29udGVudHMtYmVnaW4g Y29udGV4dCkpIChzdHJ1Y3QgKG9yZy1lbGVtZW50LXByb3BlcnR5IDpzdHJ1Y3R1cmUgY29udGV4 dCkpIChvbGQtc3RydWN0IChjb3B5LXRyZWUgc3RydWN0KSkgKGZpcnN0LWJveCAoc2F2ZS1leGN1 cnNpb24gLi4uIC4uLiAuLi4pKSAobmV3LWJveCAoY29uZCAuLi4gLi4uIC4uLiAuLi4pKSkgKGNv bmQgKGFyZyAobGV0IC4uLiAuLi4pKSAoKGFuZCBmaXJzdC1ib3ggLi4uKSAob3JnLWxpc3Qtc2V0 LWNoZWNrYm94IGJlZ2luIHN0cnVjdCBuZXctYm94KSkpIChpZiAoZXF1YWwgKG9yZy1saXN0LXdy aXRlLXN0cnVjdCBzdHJ1Y3QgLi4uIG9sZC1zdHJ1Y3QpIG9sZC1zdHJ1Y3QpIChwcm9nbiAobWVz c2FnZSAiQ2Fubm90IHVwZGF0ZSB0aGlzIGNoZWNrYm94IikpKSAob3JnLXVwZGF0ZS1jaGVja2Jv eC1jb3VudC1tYXliZSkpKSkgKChtZW1xIHR5cGUgKHF1b3RlIChub2RlLXByb3BlcnR5IHByb3Bl cnR5LWRyYXdlcikpKSAobGV0IG5pbCAoY2FsbC1pbnRlcmFjdGl2ZWx5IChmdW5jdGlvbiBvcmct cHJvcGVydHktYWN0aW9uKSkpKSAoKGVxIHR5cGUgKHF1b3RlIHJhZGlvLXRhcmdldCkpIChsZXQg bmlsIChjYWxsLWludGVyYWN0aXZlbHkgKGZ1bmN0aW9uIG9yZy11cGRhdGUtcmFkaW8tdGFyZ2V0 LXJlZ2V4cCkpKSkgKChlcSB0eXBlIChxdW90ZSBzdGF0aXN0aWNzLWNvb2tpZSkpIChsZXQgbmls IChjYWxsLWludGVyYWN0aXZlbHkgKGZ1bmN0aW9uIG9yZy11cGRhdGUtc3RhdGlzdGljcy1jb29r aWVzKSkpKSAoKG1lbXEgdHlwZSAocXVvdGUgKHRhYmxlLXJvdyB0YWJsZS1jZWxsIHRhYmxlKSkp IChsZXQgbmlsIChpZiAoZXEgKG9yZy1lbGVtZW50LXByb3BlcnR5IDp0eXBlIGNvbnRleHQpIChx dW90ZSB0YWJsZVwuZWwpKSAobWVzc2FnZSAiJXMiIChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyAi XFw8b3JnLW1vZGUtbWFwPlVzZSBgXFxbb3JnLWVkaXQtc3BlY2lhbF0nIHRvIGVkaXQgdGFibGUu ZWwgdGFibGVzIikpIChpZiAob3IgKGVxIHR5cGUgLi4uKSAoYW5kIC4uLiAuLi4pKSAoc2F2ZS1l eGN1cnNpb24gKGlmIC4uLiAuLi4gLi4uIC4uLiAuLi4pKSAob3JnLXRhYmxlLW1heWJlLWV2YWwt Zm9ybXVsYSkgKGNvbmQgKGFyZyAuLi4pICguLi4pICh0IC4uLikpKSkpKSAoKGVxIHR5cGUgKHF1 b3RlIHRpbWVzdGFtcCkpIChmdW5jYWxsIHBjYXNlLTApKSAoKGVxIHR5cGUgKHF1b3RlIHBsYW5u aW5nKSkgKGNvbmQgKChvcmctYXQtdGltZXN0YW1wLXAgKHF1b3RlIGxheCkpIChmdW5jYWxsIHBj YXNlLTApKSAoKHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzIChxdW90ZSBvcmctY3Ry bC1jLWN0cmwtYy1maW5hbC1ob29rKSkgKGZ1bmNhbGwgcGNhc2UtMSkpICh0IChmdW5jYWxsIHBj YXNlLTIpKSkpICgobnVsbCB0eXBlKSAoY29uZCAoKG9yZy1hdC1oZWFkaW5nLXApIChsZXQgbmls IChjYWxsLWludGVyYWN0aXZlbHkgKGZ1bmN0aW9uIG9yZy1zZXQtdGFncy1jb21tYW5kKSkpKSAo KHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzIChxdW90ZSBvcmctY3RybC1jLWN0cmwt Yy1maW5hbC1ob29rKSkgKGZ1bmNhbGwgcGNhc2UtMSkpICh0IChmdW5jYWxsIHBjYXNlLTIpKSkp ICgocnVuLWhvb2std2l0aC1hcmdzLXVudGlsLXN1Y2Nlc3MgKHF1b3RlIG9yZy1jdHJsLWMtY3Ry bC1jLWZpbmFsLWhvb2spKSAoZnVuY2FsbCBwY2FzZS0xKSkgKHQgKGZ1bmNhbGwgcGNhc2UtMikp KSkKICAobGV0KiAoKGNvbnRleHQgKG9yZy1lbGVtZW50LWxpbmVhZ2UgKG9yZy1lbGVtZW50LWNv bnRleHQpIChxdW90ZSAoYmFiZWwtY2FsbCBjbG9jayBkeW5hbWljLWJsb2NrIGZvb3Rub3RlLWRl ZmluaXRpb24gZm9vdG5vdGUtcmVmZXJlbmNlIGlubGluZS1iYWJlbC1jYWxsIGlubGluZS1zcmMt YmxvY2sgaW5saW5ldGFzayBpdGVtIGtleXdvcmQgbm9kZS1wcm9wZXJ0eSBwYXJhZ3JhcGggcGxh aW4tbGlzdCBwbGFubmluZyBwcm9wZXJ0eS1kcmF3ZXIgcmFkaW8tdGFyZ2V0IHNyYy1ibG9jayBz dGF0aXN0aWNzLWNvb2tpZSB0YWJsZSB0YWJsZS1jZWxsIHRhYmxlLXJvdyB0aW1lc3RhbXApKSB0 KSkgKHR5cGUgKG9yZy1lbGVtZW50LXR5cGUgY29udGV4dCkpKSAoaWYgKGVxIHR5cGUgKHF1b3Rl IHBhcmFncmFwaCkpIChwcm9nbiAobGV0ICgocGFyZW50IChvcmctZWxlbWVudC1wcm9wZXJ0eSA6 cGFyZW50IGNvbnRleHQpKSkgKGlmIChhbmQgKGVxIChvcmctZWxlbWVudC10eXBlIHBhcmVudCkg KHF1b3RlIGl0ZW0pKSAoPSAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChvcmctZWxlbWVudC1w cm9wZXJ0eSA6YmVnaW4gcGFyZW50KSkpIChwcm9nbiAoc2V0cSBjb250ZXh0IHBhcmVudCkgKHNl dHEgdHlwZSAocXVvdGUgaXRlbSkpKSkpKSkgKGxldCogKChwY2FzZS0yIChmdW5jdGlvbiAobGFt YmRhIG5pbCAodXNlci1lcnJvciAoc3Vic3RpdHV0ZS1jb21tYW5kLWtleXMgImBcXFtvcmctY3Ry bC1jLWN0cmwtY10nIGNhbiBkbyBub3RoaW5nIHVzZWZ1bCBoZXJlIikpKSkpIChwY2FzZS0xIChm dW5jdGlvbiAobGFtYmRhIG5pbCkpKSAocGNhc2UtMCAoZnVuY3Rpb24gKGxhbWJkYSBuaWwgKG9y Zy10aW1lc3RhbXAtY2hhbmdlIDAgKHF1b3RlIGRheSkpKSkpKSAoY29uZCAoKG1lbXEgdHlwZSAo cXVvdGUgKHNyYy1ibG9jayBpbmxpbmUtc3JjLWJsb2NrKSkpIChsZXQgbmlsIChpZiBvcmctYmFi ZWwtbm8tZXZhbC1vbi1jdHJsLWMtY3RybC1jIG5pbCAob3JnLWJhYmVsLWV2YWwtd2lwZS1lcnJv ci1idWZmZXIpIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2sgY3VycmVudC1wcmVmaXgtYXJn IChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvIG5pbCBjb250ZXh0KSkpKSkgKChvcmctbWF0 Y2gtbGluZSAiWyAJXSokIikgKGxldCBuaWwgKG9yIChydW4taG9vay13aXRoLWFyZ3MtdW50aWwt c3VjY2VzcyAocXVvdGUgb3JnLWN0cmwtYy1jdHJsLWMtZmluYWwtaG9vaykpICh1c2VyLWVycm9y IChzdWJzdGl0dXRlLWNvbW1hbmQta2V5cyAiYFxcW29yZy1jdHJsLWMtY3RybC1jXScgY2FuIGRv IG5vdGhpbmcgdXNlZnVsIGhlcmUiKSkpKSkgKChtZW1xIHR5cGUgKHF1b3RlIChpbmxpbmUtYmFi ZWwtY2FsbCBiYWJlbC1jYWxsKSkpIChsZXQgbmlsIChsZXQgKChpbmZvIC4uLikpIChpZiBpbmZv IChwcm9nbiAuLi4pKSkpKSAoKGVxIHR5cGUgKHF1b3RlIGNsb2NrKSkgKGxldCBuaWwgKG9yZy1j bG9jay11cGRhdGUtdGltZS1tYXliZSkpKSAoKGVxIHR5cGUgKHF1b3RlIGR5bmFtaWMtYmxvY2sp KSAobGV0IG5pbCAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciAob3JnLWVsZW1lbnQtcHJvcGVy dHkgOnBvc3QtYWZmaWxpYXRlZCBjb250ZXh0KSkgKG9yZy11cGRhdGUtZGJsb2NrKSkpKSAoKGVx IHR5cGUgKHF1b3RlIGZvb3Rub3RlLWRlZmluaXRpb24pKSAobGV0IG5pbCAoZ290by1jaGFyIChv cmctZWxlbWVudC1wcm9wZXJ0eSA6cG9zdC1hZmZpbGlhdGVkIGNvbnRleHQpKSAoY2FsbC1pbnRl cmFjdGl2ZWx5IChxdW90ZSBvcmctZm9vdG5vdGUtYWN0aW9uKSkpKSAoKGVxIHR5cGUgKHF1b3Rl IGZvb3Rub3RlLXJlZmVyZW5jZSkpIChsZXQgbmlsIChjYWxsLWludGVyYWN0aXZlbHkgKGZ1bmN0 aW9uIG9yZy1mb290bm90ZS1hY3Rpb24pKSkpICgobWVtcSB0eXBlIChxdW90ZSAoaW5saW5ldGFz ayBoZWFkbGluZSkpKSAobGV0IG5pbCAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciAob3JnLWVs ZW1lbnQtcHJvcGVydHkgOmJlZ2luIGNvbnRleHQpKSAoY2FsbC1pbnRlcmFjdGl2ZWx5IChmdW5j dGlvbiBvcmctc2V0LXRhZ3MtY29tbWFuZCkpKSkpICgoZXEgdHlwZSAocXVvdGUgaXRlbSkpIChs ZXQgbmlsIChsZXQqICgoYm94IC4uLikgKHN0cnVjdCAuLi4pIChvbGQtc3RydWN0IC4uLikgKHBh cmVudHMgLi4uKSAocHJldnMgLi4uKSAob3JkZXJlZHAgLi4uKSkgKG9yZy1saXN0LXNldC1jaGVj a2JveCAob3JnLWVsZW1lbnQtcHJvcGVydHkgOmJlZ2luIGNvbnRleHQpIHN0cnVjdCAoY29uZCAu Li4gLi4uIC4uLiAuLi4gLi4uKSkgKG9yZy1saXN0LXN0cnVjdC1maXgtaW5kIHN0cnVjdCBwYXJl bnRzIDIpIChvcmctbGlzdC1zdHJ1Y3QtZml4LWl0ZW0tZW5kIHN0cnVjdCkgKG9yZy1saXN0LXN0 cnVjdC1maXgtYnVsIHN0cnVjdCBwcmV2cykgKG9yZy1saXN0LXN0cnVjdC1maXgtaW5kIHN0cnVj dCBwYXJlbnRzKSAobGV0ICguLi4pIChpZiAuLi4gLi4uIC4uLiAuLi4pIChpZiBibG9jay1pdGVt IC4uLikpKSkpICgoZXEgdHlwZSAocXVvdGUga2V5d29yZCkpIChsZXQgbmlsIChsZXQgKChvcmct aW5oaWJpdC1zdGFydHVwLXZpc2liaWxpdHktc3R1ZmYgdCkgKG9yZy1zdGFydHVwLWFsaWduLWFs bC10YWJsZXMgbmlsKSkgKGlmIChib3VuZHAgLi4uKSAocHJvZ24gLi4uIC4uLikpIChsZXQqICgu Li4gLi4uIC4uLikgKHVud2luZC1wcm90ZWN0IC4uLiAuLi4pKSkgKG1lc3NhZ2UgIkxvY2FsIHNl dHVwIGhhcyBiZWVuIHJlZnJlc2hlZCIpKSkgKChlcSB0eXBlIChxdW90ZSBwbGFpbi1saXN0KSkg KGxldCBuaWwgKGxldCogKChiZWdpbiAuLi4pIChzdHJ1Y3QgLi4uKSAob2xkLXN0cnVjdCAuLi4p IChmaXJzdC1ib3ggLi4uKSAobmV3LWJveCAuLi4pKSAoY29uZCAoYXJnIC4uLikgKC4uLiAuLi4p KSAoaWYgKGVxdWFsIC4uLiBvbGQtc3RydWN0KSAocHJvZ24gLi4uKSkgKG9yZy11cGRhdGUtY2hl Y2tib3gtY291bnQtbWF5YmUpKSkpICgobWVtcSB0eXBlIChxdW90ZSAobm9kZS1wcm9wZXJ0eSBw cm9wZXJ0eS1kcmF3ZXIpKSkgKGxldCBuaWwgKGNhbGwtaW50ZXJhY3RpdmVseSAoZnVuY3Rpb24g b3JnLXByb3BlcnR5LWFjdGlvbikpKSkgKChlcSB0eXBlIChxdW90ZSByYWRpby10YXJnZXQpKSAo bGV0IG5pbCAoY2FsbC1pbnRlcmFjdGl2ZWx5IChmdW5jdGlvbiBvcmctdXBkYXRlLXJhZGlvLXRh cmdldC1yZWdleHApKSkpICgoZXEgdHlwZSAocXVvdGUgc3RhdGlzdGljcy1jb29raWUpKSAobGV0 IG5pbCAoY2FsbC1pbnRlcmFjdGl2ZWx5IChmdW5jdGlvbiBvcmctdXBkYXRlLXN0YXRpc3RpY3Mt Y29va2llcykpKSkgKChtZW1xIHR5cGUgKHF1b3RlICh0YWJsZS1yb3cgdGFibGUtY2VsbCB0YWJs ZSkpKSAobGV0IG5pbCAoaWYgKGVxIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6dHlwZSBjb250ZXh0 KSAocXVvdGUgdGFibGVcLmVsKSkgKG1lc3NhZ2UgIiVzIiAoc3Vic3RpdHV0ZS1jb21tYW5kLWtl eXMgIlxcPG9yZy1tb2RlLW1hcD5Vc2UgYFxcW29yZy1lZGl0LXNwZWNpYWxdJyB0byBlZGl0IHRh YmxlLmVsIHRhYmxlcyIpKSAoaWYgKG9yIC4uLiAuLi4pIChzYXZlLWV4Y3Vyc2lvbiAuLi4pIChv cmctdGFibGUtbWF5YmUtZXZhbC1mb3JtdWxhKSAoY29uZCAuLi4gLi4uIC4uLikpKSkpICgoZXEg dHlwZSAocXVvdGUgdGltZXN0YW1wKSkgKGZ1bmNhbGwgcGNhc2UtMCkpICgoZXEgdHlwZSAocXVv dGUgcGxhbm5pbmcpKSAoY29uZCAoKG9yZy1hdC10aW1lc3RhbXAtcCAocXVvdGUgbGF4KSkgKGZ1 bmNhbGwgcGNhc2UtMCkpICgocnVuLWhvb2std2l0aC1hcmdzLXVudGlsLXN1Y2Nlc3MgKHF1b3Rl IG9yZy1jdHJsLWMtY3RybC1jLWZpbmFsLWhvb2spKSAoZnVuY2FsbCBwY2FzZS0xKSkgKHQgKGZ1 bmNhbGwgcGNhc2UtMikpKSkgKChudWxsIHR5cGUpIChjb25kICgob3JnLWF0LWhlYWRpbmctcCkg KGxldCBuaWwgKGNhbGwtaW50ZXJhY3RpdmVseSAuLi4pKSkgKChydW4taG9vay13aXRoLWFyZ3Mt dW50aWwtc3VjY2VzcyAocXVvdGUgb3JnLWN0cmwtYy1jdHJsLWMtZmluYWwtaG9vaykpIChmdW5j YWxsIHBjYXNlLTEpKSAodCAoZnVuY2FsbCBwY2FzZS0yKSkpKSAoKHJ1bi1ob29rLXdpdGgtYXJn cy11bnRpbC1zdWNjZXNzIChxdW90ZSBvcmctY3RybC1jLWN0cmwtYy1maW5hbC1ob29rKSkgKGZ1 bmNhbGwgcGNhc2UtMSkpICh0IChmdW5jYWxsIHBjYXNlLTIpKSkpKQogIChjb25kICgob3IgKGFu ZCAoYm91bmRwIChxdW90ZSBvcmctY2xvY2stb3ZlcmxheXMpKSBvcmctY2xvY2stb3ZlcmxheXMp IG9yZy1vY2N1ci1oaWdobGlnaHRzKSAoaWYgKGJvdW5kcCAocXVvdGUgb3JnLWNsb2NrLW92ZXJs YXlzKSkgKHByb2duIChvcmctY2xvY2stcmVtb3ZlLW92ZXJsYXlzKSkpIChvcmctcmVtb3ZlLW9j Y3VyLWhpZ2hsaWdodHMpIChtZXNzYWdlICJUZW1wb3JhcnkgaGlnaGxpZ2h0cy9vdmVybGF5cyBy ZW1vdmVkIGZyb20gY3VycmVudCBidWZmZXIiKSkgKChhbmQgKGxvY2FsLXZhcmlhYmxlLXAgKHF1 b3RlIG9yZy1maW5pc2gtZnVuY3Rpb24pKSAoZmJvdW5kcCBvcmctZmluaXNoLWZ1bmN0aW9uKSkg KGZ1bmNhbGwgb3JnLWZpbmlzaC1mdW5jdGlvbikpICgob3JnLWJhYmVsLWhhc2gtYXQtcG9pbnQp KSAoKHJ1bi1ob29rLXdpdGgtYXJncy11bnRpbC1zdWNjZXNzIChxdW90ZSBvcmctY3RybC1jLWN0 cmwtYy1ob29rKSkpICh0IChsZXQqICgoY29udGV4dCAob3JnLWVsZW1lbnQtbGluZWFnZSAob3Jn LWVsZW1lbnQtY29udGV4dCkgKHF1b3RlIChiYWJlbC1jYWxsIGNsb2NrIGR5bmFtaWMtYmxvY2sg Zm9vdG5vdGUtZGVmaW5pdGlvbiBmb290bm90ZS1yZWZlcmVuY2UgaW5saW5lLWJhYmVsLWNhbGwg aW5saW5lLXNyYy1ibG9jayBpbmxpbmV0YXNrIGl0ZW0ga2V5d29yZCBub2RlLXByb3BlcnR5IHBh cmFncmFwaCBwbGFpbi1saXN0IHBsYW5uaW5nIHByb3BlcnR5LWRyYXdlciByYWRpby10YXJnZXQg c3JjLWJsb2NrIHN0YXRpc3RpY3MtY29va2llIHRhYmxlIHRhYmxlLWNlbGwgdGFibGUtcm93IHRp bWVzdGFtcCkpIHQpKSAodHlwZSAob3JnLWVsZW1lbnQtdHlwZSBjb250ZXh0KSkpIChpZiAoZXEg dHlwZSAocXVvdGUgcGFyYWdyYXBoKSkgKHByb2duIChsZXQgKChwYXJlbnQgLi4uKSkgKGlmIChh bmQgLi4uIC4uLikgKHByb2duIC4uLiAuLi4pKSkpKSAobGV0KiAoKHBjYXNlLTIgKGZ1bmN0aW9u IChsYW1iZGEgbmlsIC4uLikpKSAocGNhc2UtMSAoZnVuY3Rpb24gKGxhbWJkYSBuaWwpKSkgKHBj YXNlLTAgKGZ1bmN0aW9uIChsYW1iZGEgbmlsIC4uLikpKSkgKGNvbmQgKChtZW1xIHR5cGUgKHF1 b3RlIC4uLikpIChsZXQgbmlsIChpZiBvcmctYmFiZWwtbm8tZXZhbC1vbi1jdHJsLWMtY3RybC1j IG5pbCAuLi4gLi4uKSkpICgob3JnLW1hdGNoLWxpbmUgIlsgCV0qJCIpIChsZXQgbmlsIChvciAu Li4gLi4uKSkpICgobWVtcSB0eXBlIChxdW90ZSAuLi4pKSAobGV0IG5pbCAobGV0IC4uLiAuLi4p KSkgKChlcSB0eXBlIChxdW90ZSBjbG9jaykpIChsZXQgbmlsIChvcmctY2xvY2stdXBkYXRlLXRp bWUtbWF5YmUpKSkgKChlcSB0eXBlIChxdW90ZSBkeW5hbWljLWJsb2NrKSkgKGxldCBuaWwgKHNh dmUtZXhjdXJzaW9uIC4uLiAuLi4pKSkgKChlcSB0eXBlIChxdW90ZSBmb290bm90ZS1kZWZpbml0 aW9uKSkgKGxldCBuaWwgKGdvdG8tY2hhciAuLi4pIChjYWxsLWludGVyYWN0aXZlbHkgLi4uKSkp ICgoZXEgdHlwZSAocXVvdGUgZm9vdG5vdGUtcmVmZXJlbmNlKSkgKGxldCBuaWwgKGNhbGwtaW50 ZXJhY3RpdmVseSAuLi4pKSkgKChtZW1xIHR5cGUgKHF1b3RlIC4uLikpIChsZXQgbmlsIChzYXZl LWV4Y3Vyc2lvbiAuLi4gLi4uKSkpICgoZXEgdHlwZSAocXVvdGUgaXRlbSkpIChsZXQgbmlsIChs ZXQqIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLikpKSAoKGVxIHR5cGUgKHF1b3RlIGtleXdv cmQpKSAobGV0IG5pbCAobGV0IC4uLiAuLi4gLi4uKSAobWVzc2FnZSAiTG9jYWwgc2V0dXAgaGFz IGJlZW4gcmVmcmVzaGVkIikpKSAoKGVxIHR5cGUgKHF1b3RlIHBsYWluLWxpc3QpKSAobGV0IG5p bCAobGV0KiAuLi4gLi4uIC4uLiAuLi4pKSkgKChtZW1xIHR5cGUgKHF1b3RlIC4uLikpIChsZXQg bmlsIChjYWxsLWludGVyYWN0aXZlbHkgLi4uKSkpICgoZXEgdHlwZSAocXVvdGUgcmFkaW8tdGFy Z2V0KSkgKGxldCBuaWwgKGNhbGwtaW50ZXJhY3RpdmVseSAuLi4pKSkgKChlcSB0eXBlIChxdW90 ZSBzdGF0aXN0aWNzLWNvb2tpZSkpIChsZXQgbmlsIChjYWxsLWludGVyYWN0aXZlbHkgLi4uKSkp ICgobWVtcSB0eXBlIChxdW90ZSAuLi4pKSAobGV0IG5pbCAoaWYgLi4uIC4uLiAuLi4pKSkgKChl cSB0eXBlIChxdW90ZSB0aW1lc3RhbXApKSAoZnVuY2FsbCBwY2FzZS0wKSkgKChlcSB0eXBlIChx dW90ZSBwbGFubmluZykpIChjb25kICguLi4gLi4uKSAoLi4uIC4uLikgKHQgLi4uKSkpICgobnVs bCB0eXBlKSAoY29uZCAoLi4uIC4uLikgKC4uLiAuLi4pICh0IC4uLikpKSAoKHJ1bi1ob29rLXdp dGgtYXJncy11bnRpbC1zdWNjZXNzIChxdW90ZSBvcmctY3RybC1jLWN0cmwtYy1maW5hbC1ob29r KSkgKGZ1bmNhbGwgcGNhc2UtMSkpICh0IChmdW5jYWxsIHBjYXNlLTIpKSkpKSkpCiAgb3JnLWN0 cmwtYy1jdHJsLWMobmlsKQogIGZ1bmNhbGwtaW50ZXJhY3RpdmVseShvcmctY3RybC1jLWN0cmwt YyBuaWwpCiAgY2FsbC1pbnRlcmFjdGl2ZWx5KG9yZy1jdHJsLWMtY3RybC1jIG5pbCBuaWwpCiAg Y29tbWFuZC1leGVjdXRlKG9yZy1jdHJsLWMtY3RybC1jKQo= --00000000000031c3be059fb6fbd2--