From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id uK9CKMnZtmVJDgAAe85BDQ:P1 (envelope-from ) for ; Sun, 28 Jan 2024 23:48:41 +0100 Received: from aspmx1.migadu.com ([2001:41d0:403:58f0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id uK9CKMnZtmVJDgAAe85BDQ (envelope-from ) for ; Sun, 28 Jan 2024 23:48:41 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=ricklupton.name header.s=fm2 header.b="t 0SH/EQ"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b="TZaTYy/L"; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=ricklupton.name ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1706482121; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=Pk5sj4lrjRrCHlwFuJNPSIvD7RO92IfU9/t1mda+dS8=; b=GOgPm7/7WcUQ7mOBe1GBKiyniyMoXSEXfF+LffvWcVy5OH3bXpqYA0pXc+jn6/rFCnIN9J 6lvnjEABmbu3wLkC9Bj2u358xEFVjIEFbJ4FzCVLbzX1ZYIUNalwQA4cjBrFRfyn/djbdf QrDqi9vhwo7ID3fkp9OS7HsLBdIEPhinThW2zmwaIfHyfqc1KMc4ojx/N2dxX/tBLcmEl4 hwPYSniJfqwVUwmIw37zezmbAZghQsww9gF2wiW2UqeRdRCRdNQH00c/9YDPFI4QqL4SvM tUyxEwjEPw4VZl+r+4r3h04OrfKTDH24YrmDsGTqcg+7WxfG3HusI7cLySBnLg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=ricklupton.name header.s=fm2 header.b="t 0SH/EQ"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b="TZaTYy/L"; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=ricklupton.name ARC-Seal: i=1; s=key1; d=yhetil.org; t=1706482121; a=rsa-sha256; cv=none; b=V8l9AWUMQ/TDowmAUIEu1xbWUhZ3a+Yi8l4MsN1vuTTo9A2jsNAho3lUr/goaPhM0ex5Ji uFo5GWR8JHzifpi3ZgKR2dLoCX3XIxWw0eLIuQSYIcgNyPXsvUvhHV2jngtz85QxQMQNzz +WGQ0yOeFCjzT8ha15tJupQIH0GSCdvkoIVLb9Q4iksHGwEQ0L06F356V1IbTWrWyu23Hh 1b16i38E+jRMEz0jFJYIdL1M/gvyhxYyISJOLAaEga/n7qEsGiDToQuqzkogLBCLecVnGQ DLuYRpVWgNNz+1RpjWaRGSGm0L6Pb45qKmXYiKyDlWafqtbBeEGE0+0joy+e7g== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 6EA2F41893 for ; Sun, 28 Jan 2024 23:48:40 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rUDwV-0003i2-5K; Sun, 28 Jan 2024 17:47:59 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rUDwQ-0003hn-EQ for emacs-orgmode@gnu.org; Sun, 28 Jan 2024 17:47:54 -0500 Received: from wout3-smtp.messagingengine.com ([64.147.123.19]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rUDwN-0003NL-A1 for emacs-orgmode@gnu.org; Sun, 28 Jan 2024 17:47:54 -0500 Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id C3C2D3200A82; Sun, 28 Jan 2024 17:47:46 -0500 (EST) Received: from imap50 ([10.202.2.100]) by compute2.internal (MEProxy); Sun, 28 Jan 2024 17:47:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ricklupton.name; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1706482066; x= 1706568466; bh=Pk5sj4lrjRrCHlwFuJNPSIvD7RO92IfU9/t1mda+dS8=; b=t 0SH/EQHsObXfITz5WWOhfZPAqmmzYz4SPyCgO/2CXs8iY4k5DW0ILVIi/NVyEyH6 f0bGoB1yHG4APJ2E30UprhcX/PHeKVwcuCHzxGMDVe7a1lTGbxkuyj23LX9zB6On SUmqvvH03HsR8kxUVkEA4neVegb6/FNAsUuM2VZoXjbco9lPgpCE/QZG40Iobb/6 HaU3nhh3F6k8xNI5rHziVBvsYDl/69EdOXkeZbpGDB+P8lKqQG+yheuTZsiI3IO4 kqaDDvONN8bGFRUzEGXCj0eG8snkz3NPQ1fIMxmQlM7cH3eiNJJQtSSaqE87f9i0 5Tr5j31Conk1Cif69iSJw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; t=1706482066; x=1706568466; bh=Pk5sj4lrjRrCHlwFuJNPSIvD7RO9 2IfU9/t1mda+dS8=; b=TZaTYy/LxsBKdJgR4N2+Ja24wtxDDkiQ/bskWoOCMyEB ZG8P04SRtN6G8CtaXfXcUaziDhC6ERMPjxxCYhRUH/EJLM86aI51epIvRXJqDvGh zOPeFwbVx6aO1WZ+py+Ec3OBvcxJIc/85csy+J9TZwHJtIcaLjqer7UVPVQ+84yV orKikZfN/EdykUdnVgaYeHyrFGKN096jVWe3IsosMBEdp3eivqEQVnxcQMPBWwYE O+rgDDaGG0+p7YwFsgmuxaZmm3iTnQ6sln9JzjtrtggguIIMbKquEPslKWC7RbPg YOzi7n9wz4zAdleUVTlQYlaxTesFLxBJCkXklU2rZQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrfedtfedgtddvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpefofgggkfgjfhffhffvvefutgesmh dtreerreerjeenucfhrhhomhepfdftihgtkhcunfhuphhtohhnfdcuoehmrghilhesrhhi tghklhhuphhtohhnrdhnrghmvgeqnecuggftrfgrthhtvghrnhepueekgeduvdekveeiue ffgefhgefgudekteelfffghfdtudelkeefiedttdektddvnecuffhomhgrihhnpeiggidr ohhrghdpthgvshhtrdhorhhgpdhuphgurghtvggurdhorhhgpdguohhnvgdrohhrghenuc evlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghilhes rhhitghklhhuphhtohhnrdhnrghmvg X-ME-Proxy: Feedback-ID: i0143436f:Fastmail Received: by mailuser.nyi.internal (Postfix, from userid 501) id 0F6B61700093; Sun, 28 Jan 2024 17:47:45 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.11.0-alpha0-119-ga8b98d1bd8-fm-20240108.001-ga8b98d1b MIME-Version: 1.0 Message-Id: <1b50d1a4-8573-4dcc-9427-8970f67e632a@app.fastmail.com> In-Reply-To: <87msu7r902.fsf@localhost> References: <118435e8-0b20-46fd-af6a-88de8e19fac6@app.fastmail.com> <87edkwsafe.fsf@localhost> <87cywh2ad6.fsf@localhost> <87jzpmqiy0.fsf@localhost> <2cdfefbf-e9e3-4aeb-a410-1ff3a9d6168e@app.fastmail.com> <87zfybzkul.fsf@localhost> <3c5737c8-f489-4144-a27f-c0e0527c79c0@app.fastmail.com> <87bkaqcjpz.fsf@localhost> <87msu7r902.fsf@localhost> Date: Sun, 28 Jan 2024 22:47:14 +0000 From: "Rick Lupton" To: "Ihor Radchenko" Cc: "Y. E." Subject: Re: [PATCH v2] org-id: allow using parent's existing id in links to headlines Content-Type: multipart/mixed; boundary=0df3a46422d34d4b9bd194da11fba29a Received-SPF: pass client-ip=64.147.123.19; envelope-from=mail@ricklupton.name; helo=wout3-smtp.messagingengine.com X-Spam_score_int: -37 X-Spam_score: -3.8 X-Spam_bar: --- X-Spam_report: (-3.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -10.24 X-Migadu-Queue-Id: 6EA2F41893 X-Spam-Score: -10.24 X-Migadu-Scanner: mx11.migadu.com X-TUID: 2zxpmzKfWTa3 --0df3a46422d34d4b9bd194da11fba29a Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi, Thanks for trying it out. Updated patches attached, comments below. On Mon, 18 Dec 2023, at 12:27 PM, Ihor Radchenko wrote: > I played around with the patch a bit and found a couple of rough edges: > > 1. When I try to open a link to non-existing search target, like > , I get a query to create a new > heading. If I reply "yes", a new heading is created. However, the > heading is created at the end of the file and is always level 1, > regardless of the "some-id" parent context. > It would make more sense to create a new heading at the end of the > id:some-id subtree. Fixed in updated patches -- first patch adds generic new flexibility to = `org-insert-heading', second patch uses it so new headings now added at = correct level at the end of the id:sub-id subtree. > 2. Consider the following setting: > (setq org-id-link-consider-parent-id t) > (setq org-id-link-to-org-use-id 'create-if-interactive-and-no-custo= m-id) > > Then, create the following Org file > > * Sub > * Parent here > ** This is test > :PROPERTIES: > :ID: fe40252e-0527-44c1-a990-12498991f167 > :END: > > *** Sub > :PROPERTIES: > :CUSTOM_ID: subid > :END: > > When you M-x org-store-link, the stored link has ::*Sub instead of > the expected ::#subid Updated so that search strings prefer custom-ids (::#subid) to headline = matches (::*Sub). This makes this example behave as you expect. The correct behaviour of org-store-link doesn't seem totally obvious to = me about id vs custom-id links. Currently org-store-link has special lo= gic to store TWO links (one , one ) when= a CUSTOM_ID is present. In the manual, it says: If the headline has a =E2=80=98CUSTOM_ID=E2=80=99 property, store a= link to this custom ID. In addition or alternatively, depending on the value of =E2=80=98org-id-link-to-org-use-id=E2=80=99, create and/or use a gl= obally unique =E2=80=98ID=E2=80=99 property for the link(1). So using this comma= nd in Org buffers potentially creates two links: a human-readable link from the custom ID, and one that is globally unique and works even if the entry is moved from file to file. The =E2=80=98ID=E2=80=99 pro= perty can be either a UUID (default) or a timestamp, depending on =E2=80=98org-id-method=E2=80=99. Later, when inserting the link, y= ou need to decide which one to use. That refers to ID links specifically, but now, using the generic link st= ore functions, there is only the possibility to store one link type, so = it's not possible to neatly keep exactly the same behaviour (i.e. for ID= links but not for other external link types). I think the intention of what's described in the manual is to distinguis= h "human-readable" vs "persistent id" links. There could be other types= of "persistent id" links apart from org-id links, such as mu4e: links t= o email message-ids. Therefore I've updated org-store-link to simply st= ore a link as an additional option, whether or= not the first matched link was an org-id link (this is the current beha= viour) or another external link type (this is changed behaviour). Added a note to ORG-NEWS about this. > 3. Consider > (setq org-id-link-consider-parent-id t) > (setq org-id-link-to-org-use-id t) > > Then, create a new empty Org file > M-x org-store-link with create a top-level properties drawer with ID > and store the link. However, that link will not be a simple ID link, > but also have ::PROPERTIES search string, which is not expected. This is because it is trying to link to the current line of the file, wh= ich contains the text "PROPERTIES". On main, with (setq org-id-link-to-= org-use-id nil), you see the equivalent behaviour (a link to [[file:test= .org:::PROPERTIES:]]) when point is before the first heading. So, this = seems consistent with non-org-id links? (these links don't actually work with the default value of `org-link-sea= rch-must-match-exact-headline', but I think that's a separate issue). >> + #+vindex: org-id-link-consider-parent-id >> + When ~org-id-link-consider-parent-id~ is ~t~, parent =3DID=3D prop= erties >> + are considered. This allows linking to specific targets, named >> + blocks, or headlines (which may not have a globally unique =3DID=3D >> + themselves) within the context of a parent headline or file which >> + does. > > It would be nice to add an example, similar to what you did in the doc= string. Added. > >> -(defun org-man-store-link () >> +(defun org-man-store-link (&optional _interactive?) >> "Store a link to a man page." >> (when (memq major-mode '(Man-mode woman-mode)) >> ;; This is a man page, we do make this link. >> @@ -21312,13 +21324,15 @@ A review of =3Dol-man.el=3D: > > Please, update the actual built-in :store functions in lisp/ol-*.el to > handle the new optional argument as well. Updated. >> +**** =3Dorg-link=3D store functions are passed an ~interactive?~ arg= ument >> + >> +The ~:store:~ functions set for link types using >> +~org-link-set-parameters~ are now passed an ~interactive?~ argument, >> +indicating whether ~org-store-link~ was called interactively. > > Please also explain that the existing functions are not broken. Done. >> +*** ~org-id-store-link~ now adds search strings for precise link tar= gets >> + >> +This new behaviour can be disabled generally by setting >> +~org-id-link-use-context~ to ~nil~, or when storing a specific link = by >> +passing a prefix argument to ~org-store-link~. > > universal argument. > There are several possible prefix arguments in `org-store-link', but > only C-u (universal argument) will give the described effect. > Also, won't the behavior be _toggled_ by the universal argument? Updated. >> +When using this feature, IDs should not include =3D::=3D, which is u= sed in >> +links to indicate the start of the search string. For backwards >> +compability, existing IDs including =3D::=3D will still be matched (= but >> +cannot be used together with precise link targets). > > Please add an org-lint checker that warns about such IDs and mention > this checker in the above. Added. > Also, this paragraph belongs to "Breaking changes", not "new and chang= ed > options". That's where it is, I think. >> +*** New option ~org-id-link-consider-parent-id~ to allow =3Did:=3D l= inks to parent headlines >> + >> +For =3Did:=3D links, when this option is enabled, ~org-store-link~ w= ill >> +look for ids from parent/ancestor headlines, if the current headline >> +does not have an id. >> + >> +Combined with the new ability for =3Did:=3D links to use search stri= ngs >> +for precise link targets (when =3Dorg-id-link-use-context=3D is =3Dt= =3D, which >> +is the default), this allows linking to specific headlines without >> +requiring every headline to have an id property, as long as the >> +headline is unique within a subtree that does have an id property. >> + >> +By giving files top-level id properties, links to headlines in the >> +file can be made more robust by using the file id instead of the file >> +path. > > Please, provide an example here as well. Done. >> +(defun org-link--try-link-store-functions (interactive?) >> + "Try storing external links, prompting if more than one is possibl= e. >> + >> +Each function returned by `org-store-link-functions' is called in >> +turn. If multiple functions return non-nil, prompt for which >> +link should be stored. >> + >> +Return t when a link has been stored in `org-link-store-props'." > > Please document INTERACTIVE? argument in the docstring. Done. >> + (let ((results-alist nil)) >> + (dolist (f (org-store-link-functions)) >> + (when (condition-case nil >> + (funcall f interactive?) >> + ;; XXX: The store function used (< Org 9.7) to accept = no >> + ;; arguments; provide backward compatibility support f= or >> + ;; them. > > Use FIXME, not XXX. (I have no idea why it is XXX in the existing code= ). Changed. >> +(defun org-link-precise-link-target (&optional relative-to) >> + "Determine search string and description for storing a link. >> + >> +If a search string is found, return cons cell (SEARCH-STRING >> +. DESC). Otherwise, return nil. >> + >> +If there is an active region, the contents is used (see >> +`org-link--context-from-region'). > > It is not clear from this sentence whether the contents is used for > SEARCH-STRING of DESC. > >> +In org-mode buffers, if point is at a named element (e.g. a >> +source block), the name is used. If within a heading, the current >> +heading is used. > > Please use double space between sentences. > >> +Optional argument RELATIVE-TO specifies the buffer position where >> +the search will start from. If the search target that would be >> +returned is already at this location, return nil to avoid >> +unnecessary search strings (for example, when using search >> +strings to find targets within org-id links)." > > It is not clear what will happen if RELATIVE-TO is before/after point. Updated the docstring. >> - (let (link cpltxt desc search custom-id agenda-link) ;; descript= ion >> + (let ((org-link-context-for-files (org-xor org-link-context-for-= files >> + (equal arg '(4)))) >> + link cpltxt desc search custom-id agenda-link) ;; descript= ion >> (cond >> ;; Store a link using an external link type, if any function = is >> - ;; available. If more than one can generate a link from curre= nt >> - ;; location, ask which one to use. >> + ;; available. If more than one can generate a link from >> + ;; current location, ask which one to use. Negate >> + ;; `org-context-in-file-links' when given a single prefix arg. > > The part of the comment about negation, should probably be moved near > the let binding of `org-link-context-for-files'. Done. >> +For example, given this org file: >> + >> +* Parent >> +:PROPERTIES: >> +:ID: abc >> +:END: >> +** Child 1 >> +** Child 2 >> + >> +With `org-id-link-consider-parent-id' set to t, storing a link >> +with point at \"Child 1\" will produce a link \"id:abc\" to >> +\"Parent\". > > This is actually confusing. May we only consider parent when > `org-id-link-use-context' is enabled? Yes, I was trying to keep them independent but I agree it's probably mor= e useful to only consider parent when `org-id-link-use-context' is enabl= ed (which in turn depends on `org-context-in-file-links' being enabled). >> -(defun org-id-get (&optional epom create prefix) >> +(defun org-id-get (&optional epom create prefix inherit) >> "Get the ID property of the entry at EPOM. >> EPOM is an element, marker, or buffer position. >> If EPOM is nil, refer to the entry at point. >> If the entry does not have an ID, the function returns nil. >> +If INHERIT is non-nil, parents' IDs are also considered. >> However, when CREATE is non-nil, create an ID if none is present alr= eady. >> PREFIX will be passed through to `org-id-new'. >> In any case, the ID of the entry is returned." > > What about both CREATE and INHERIT being non-nil? Rewrote the docstring. Also removed INHERIT argument for `org-id-get-create' again, as other fu= nctions can be re-written to use `org-id-get' directly, and INHERIT isn'= t particularly useful when using `org-id-get-create' interactively. >> +;;;###autoload >> +(defun org-id-store-link-maybe (&optional interactive?) >> + "Store a link to the current entry using its ID if enabled. >> + >> +The value of `org-id-link-to-org-use-id' determines whether an ID >> +link should be stored, using `org-id-store-link'. >> + >> +Assume the function is called interactively if INTERACTIVE? is >> +non-nil." >> + (interactive "p") > > Do we really need to make it interactive? No, removed. Thanks, Rick --0df3a46422d34d4b9bd194da11fba29a Content-Disposition: attachment; filename*0="0001-lisp-org.el-org-insert-heading-allow-specifying-head.pat"; filename*1="ch" Content-Type: application/octet-stream; name="=?UTF-8?Q?0001-lisp-org.el-org-insert-heading-allow-specifying-head.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: BASE64 RnJvbSAwNGQ2NzdmNDgwMDQ0Njc4NzVhNjU2YzRiZDc5ZDc4ZTU1OWYxMDE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNrIEx1cHRvbiA8bWFpbEByaWNrbHVwdG9uLm5h bWU+CkRhdGU6IFdlZCwgMyBKYW4gMjAyNCAyMjozNzozOCArMDAwMApTdWJqZWN0OiBbUEFU Q0ggMS8yXSBsaXNwL29yZy5lbCAob3JnLWluc2VydC1oZWFkaW5nKTogYWxsb3cgc3BlY2lm eWluZwogaGVhZGluZyBsZXZlbAoKKiBsaXNwL29yZy5lbCAob3JnLWluc2VydC1oZWFkaW5n KTogQ2hhbmdlIG9wdGlvbmFsIGFyZ3VtZW50IFRPUCB0bwpMRVZFTCwgYWNjZXB0aW5nIGEg bnVtYmVyIHRvIGZvcmNlIGEgc3BlY2lmaWMgaGVhZGluZyBsZXZlbC4KKiB0ZXN0aW5nL2xp c3AvdGVzdC1vcmcuZWwgKHRlc3Qtb3JnL2luc2VydC1oZWFkaW5nKTogQWRkIHRlc3RzCiog ZXRjL09SRy1ORVdTOiBEb2N1bWVudCBjaGFuZ2VzCi0tLQogZXRjL09SRy1ORVdTICAgICAg ICAgICAgIHwgIDYgKysrKysrCiBsaXNwL29yZy5lbCAgICAgICAgICAgICAgfCAyMSArKysr KysrKysrKysrKy0tLS0tLS0KIHRlc3RpbmcvbGlzcC90ZXN0LW9yZy5lbCB8IDI2ICsrKysr KysrKysrKysrKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMo KyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZXRjL09SRy1ORVdTIGIvZXRjL09S Ry1ORVdTCmluZGV4IDFiZjdlYjViNC4uZWMwMTAwNGY4IDEwMDY0NAotLS0gYS9ldGMvT1JH LU5FV1MKKysrIGIvZXRjL09SRy1ORVdTCkBAIC05NDEsNiArOTQxLDEyIEBAIGFzIHRoZSBm dW5jdGlvbiBjYW4gYWxzbyBhY3Qgb24gb2JqZWN0cy4KIAogKioqIH5vcmctZXhwb3J0LWdl dC1wYXJlbnQtZWxlbWVudH4gaXMgcmVuYW1lZCB0byB+b3JnLWVsZW1lbnQtcGFyZW50LWVs ZW1lbnR+IGFuZCBtb3ZlZCB0byA9bGlzcC9vcmctZWxlbWVudC5lbD0KIAorKioqIH5vcmct aW5zZXJ0LWhlYWRpbmd+IG9wdGlvbmFsIGFyZ3VtZW50ID1UT1A9IGlzIG5vdyA9TEVWRUw9 CisKK0EgbnVtZXJpYyB2YWx1ZSBmb3JjZXMgYSBoZWFkaW5nIGF0IHRoYXQgbGV2ZWwgdG8g YmUgaW5zZXJ0ZWQuICBGb3IKK2JhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBub24tbnVtZXJp YyBub24tbmlsIHZhbHVlcyBpbnNlcnQgbGV2ZWwgMQoraGVhZGluZ3MgYXMgYmVmb3JlLgor CiAqKiBNaXNjZWxsYW5lb3VzCiAqKiogPW9yZy1jcnlwdC5lbD0gbm93IGFwcGxpZXMgaW5p dGlhbCB2aXNpYmlsaXR5IHNldHRpbmdzIHRvIGRlY3J5cHRlZCBlbnRyaWVzCiAKZGlmZiAt LWdpdCBhL2xpc3Avb3JnLmVsIGIvbGlzcC9vcmcuZWwKaW5kZXggNzk2NTQ1MzkyLi44N2I5 NGE1NGQgMTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLmVsCisrKyBiL2xpc3Avb3JnLmVsCkBAIC02 MzUyLDcgKzYzNTIsNyBAQCBoZWFkbGluZSBpbnN0ZWFkIG9mIGN1cnJlbnQgb25lLiIKICAg ICAoYChoZWFkaW5nIC4gLHZhbHVlKSB2YWx1ZSkKICAgICAoXyBuaWwpKSkKIAotKGRlZnVu IG9yZy1pbnNlcnQtaGVhZGluZyAoJm9wdGlvbmFsIGFyZyBpbnZpc2libGUtb2sgdG9wKQor KGRlZnVuIG9yZy1pbnNlcnQtaGVhZGluZyAoJm9wdGlvbmFsIGFyZyBpbnZpc2libGUtb2sg bGV2ZWwpCiAgICJJbnNlcnQgYSBuZXcgaGVhZGluZyBvciBhbiBpdGVtIHdpdGggdGhlIHNh bWUgZGVwdGggYXQgcG9pbnQuCiAKIElmIHBvaW50IGlzIGF0IHRoZSBiZWdpbm5pbmcgb2Yg YSBoZWFkaW5nLCBpbnNlcnQgYSBuZXcgaGVhZGluZwpAQCAtNjM4MSwxMiArNjM4MSwxOSBA QCBXaGVuIElOVklTSUJMRS1PSyBpcyBzZXQsIHN0b3AgYXQgaW52aXNpYmxlIGhlYWRsaW5l cyB3aGVuIGdvaW5nCiBiYWNrLiAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yIG5vbi1pbnRlcmFj dGl2ZSB1c2VzIG9mIHRoZQogY29tbWFuZC4KIAotV2hlbiBvcHRpb25hbCBhcmd1bWVudCBU T1AgaXMgbm9uLW5pbCwgaW5zZXJ0IGEgbGV2ZWwgMSBoZWFkaW5nLAotdW5jb25kaXRpb25h bGx5LiIKK1doZW4gb3B0aW9uYWwgYXJndW1lbnQgTEVWRUwgaXMgYSBudW1iZXIsIGluc2Vy dCBhIGhlYWRpbmcgYXQKK3RoYXQgbGV2ZWwuICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxp dHksIHdoZW4gTEVWRUwgaXMgbm9uLW5pbAorYnV0IG5vdCBhIG51bWJlciwgaW5zZXJ0IGEg bGV2ZWwtMSBoZWFkaW5nLiIKICAgKGludGVyYWN0aXZlICJQIikKICAgKGxldCogKChibGFu az8gKG9yZy0tYmxhbmstYmVmb3JlLWhlYWRpbmctcCAoZXF1YWwgYXJnICcoMTYpKSkpCi0J IChsZXZlbCAob3JnLWN1cnJlbnQtbGV2ZWwpKQotCSAoc3RhcnMgKG1ha2Utc3RyaW5nIChp ZiAoYW5kIGxldmVsIChub3QgdG9wKSkgbGV2ZWwgMSkgPyopKSkKKyAgICAgICAgIChjdXJy ZW50LWxldmVsIChvcmctY3VycmVudC1sZXZlbCkpCisgICAgICAgICAobnVtLXN0YXJzIChv cgorICAgICAgICAgICAgICAgICAgICAgOzsgQmFja3dhcmRzIGNvbXBhdDogaWYgTEVWRUwg bm9uLW5pbCwgbGV2ZWwgaXMgMQorICAgICAgICAgICAgICAgICAgICAgKGFuZCBsZXZlbCAo aWYgKHdob2xlbnVtcCBsZXZlbCkgbGV2ZWwgMSkpCisgICAgICAgICAgICAgICAgICAgICBj dXJyZW50LWxldmVsCisgICAgICAgICAgICAgICAgICAgICA7OyBUaGlzIGAxJyBpcyBmb3Ig d2hlbiBiZWZvcmUgZmlyc3QgaGVhZGxpbmUKKyAgICAgICAgICAgICAgICAgICAgIDEpKQor ICAgICAgICAgKHN0YXJzIChtYWtlLXN0cmluZyBudW0tc3RhcnMgPyopKSkKICAgICAoY29u ZAogICAgICAoKG9yIG9yZy1pbnNlcnQtaGVhZGluZy1yZXNwZWN0LWNvbnRlbnQKIAkgICht ZW1iZXIgYXJnICcoKDQpICgxNikpKQpAQCAtNjM5NSw3ICs2NDAyLDcgQEAgdW5jb25kaXRp b25hbGx5LiIKICAgICAgIDs7IFBvc2l0aW9uIHBvaW50IGF0IHRoZSBsb2NhdGlvbiBvZiBp bnNlcnRpb24uICBNYWtlIHN1cmUgd2UKICAgICAgIDs7IGVuZCB1cCBvbiBhIHZpc2libGUg aGVhZGxpbmUgaWYgSU5WSVNJQkxFLU9LIGlzIG5pbC4KICAgICAgIChvcmctd2l0aC1saW1p dGVkLWxldmVscwotICAgICAgIChpZiAobm90IGxldmVsKSAob3V0bGluZS1uZXh0LWhlYWRp bmcpIDtiZWZvcmUgZmlyc3QgaGVhZGxpbmUKKyAgICAgICAoaWYgKG5vdCBjdXJyZW50LWxl dmVsKSAob3V0bGluZS1uZXh0LWhlYWRpbmcpIDtiZWZvcmUgZmlyc3QgaGVhZGxpbmUKIAkg KG9yZy1iYWNrLXRvLWhlYWRpbmcgaW52aXNpYmxlLW9rKQogCSAod2hlbiAoZXF1YWwgYXJn ICcoMTYpKSAob3JnLXVwLWhlYWRpbmctc2FmZSkpCiAJIChvcmctZW5kLW9mLXN1YnRyZWUg aW52aXNpYmxlLW9rICd0by1oZWFkaW5nKSkpCkBAIC02NDA4LDcgKzY0MTUsNyBAQCB1bmNv bmRpdGlvbmFsbHkuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAob3JnLWJlZm9yZS1m aXJzdC1oZWFkaW5nLXApKSkKICAgICAgICAgKGluc2VydCAiXG4iKQogICAgICAgICAoYmFj a3dhcmQtY2hhcikpCi0gICAgICAod2hlbiAoYW5kIChub3QgbGV2ZWwpIChub3QgKGVvYnAp KSAobm90IChib2JwKSkpCisgICAgICAod2hlbiAoYW5kIChub3QgY3VycmVudC1sZXZlbCkg KG5vdCAoZW9icCkpIChub3QgKGJvYnApKSkKICAgICAgICAgKHdoZW4gKG9yZy1hdC1oZWFk aW5nLXApIChpbnNlcnQgIlxuIikpCiAgICAgICAgIChiYWNrd2FyZC1jaGFyKSkKICAgICAg ICh1bmxlc3MgKGFuZCBibGFuaz8gKG9yZy1wcmV2aW91cy1saW5lLWVtcHR5LXApKQpkaWZm IC0tZ2l0IGEvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsIGIvdGVzdGluZy9saXNwL3Rlc3Qt b3JnLmVsCmluZGV4IDgyMmNiYzY3YS4uZmM1MGRjNzg3IDEwMDY0NAotLS0gYS90ZXN0aW5n L2xpc3AvdGVzdC1vcmcuZWwKKysrIGIvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsCkBAIC0x OTgwLDggKzE5ODAsMzAgQEAgQ0xPQ0s6IFsyMDIyLTA5LTE3IHNhbS4gMTE6MDBdLS1bMjAy Mi0wOS0xNyBzYW0uIDExOjQ2XSA9PiAgMDo0NiIKIAkgICAgKGxldCAoKG9yZy1pbnNlcnQt aGVhZGluZy1yZXNwZWN0LWNvbnRlbnQgbmlsKSkKIAkgICAgICAob3JnLWluc2VydC1oZWFk aW5nICcoMTYpKSkKIAkgICAgKGJ1ZmZlci1zdHJpbmcpKSkpCi0gIDs7IFdoZW4gb3B0aW9u YWwgVE9QLUxFVkVMIGFyZ3VtZW50IGlzIG5vbi1uaWwsIGFsd2F5cyBpbnNlcnQKLSAgOzsg YSBsZXZlbCAxIGhlYWRpbmcuCisgIDs7IFdoZW4gb3B0aW9uYWwgTEVWRUwgYXJndW1lbnQg aXMgYSBudW1iZXIsIGluc2VydCBhIGhlYWRpbmcgYXQKKyAgOzsgdGhhdCBsZXZlbC4KKyAg KHNob3VsZAorICAgKGVxdWFsICIqIEgxXG4qKiBIMlxuKiAiCisJICAob3JnLXRlc3Qtd2l0 aC10ZW1wLXRleHQgIiogSDFcbioqIEgyPHBvaW50PiIKKwkgICAgKG9yZy1pbnNlcnQtaGVh ZGluZyBuaWwgbmlsIDEpCisJICAgIChidWZmZXItc3RyaW5nKSkpKQorICAoc2hvdWxkCisg ICAoZXF1YWwgIiogSDFcbioqIEgyXG4qKiAiCisJICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRl eHQgIiogSDFcbioqIEgyPHBvaW50PiIKKwkgICAgKG9yZy1pbnNlcnQtaGVhZGluZyBuaWwg bmlsIDIpCisJICAgIChidWZmZXItc3RyaW5nKSkpKQorICAoc2hvdWxkCisgICAoZXF1YWwg IiogSDFcbioqIEgyXG4qKiogIgorCSAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIqIEgx XG4qKiBIMjxwb2ludD4iCisJICAgIChvcmctaW5zZXJ0LWhlYWRpbmcgbmlsIG5pbCAzKQor CSAgICAoYnVmZmVyLXN0cmluZykpKSkKKyAgKHNob3VsZAorICAgKGVxdWFsICIqIEgxXG4t IGl0ZW1cbiogIgorCSAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0ICIqIEgxXG4tIGl0ZW08 cG9pbnQ+IgorCSAgICAob3JnLWluc2VydC1oZWFkaW5nIG5pbCBuaWwgMSkKKwkgICAgKGJ1 ZmZlci1zdHJpbmcpKSkpCisgIDs7IFdoZW4gb3B0aW9uYWwgTEVWRUwgYXJndW1lbnQgaXMg bm9uLW5pbCwgYWx3YXlzIGluc2VydCBhIGxldmVsIDEKKyAgOzsgaGVhZGluZy4KICAgKHNo b3VsZAogICAgKGVxdWFsICIqIEgxXG4qKiBIMlxuKiAiCiAJICAob3JnLXRlc3Qtd2l0aC10 ZW1wLXRleHQgIiogSDFcbioqIEgyPHBvaW50PiIKLS0gCjIuMzkuMiAoQXBwbGUgR2l0LTE0 MykKCg== --0df3a46422d34d4b9bd194da11fba29a Content-Disposition: attachment; filename*0="0002-org-id.el-Extend-links-with-search-strings-inherit-p.pat"; filename*1="ch" Content-Type: application/octet-stream; name="=?UTF-8?Q?0002-org-id.el-Extend-links-with-search-strings-inherit-p.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: BASE64 RnJvbSAyNDVlMmRlY2VkYjU3NDFhNTA5Nzc5YTFhODk2ZjM5ODJjZjhmNTRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNrIEx1cHRvbiA8bWFpbEByaWNrbHVwdG9uLm5h bWU+CkRhdGU6IFN1biwgMTkgTm92IDIwMjMgMTQ6NTI6MDUgKzAwMDAKU3ViamVjdDogW1BB VENIIDIvMl0gb3JnLWlkLmVsOiBFeHRlbmQgbGlua3Mgd2l0aCBzZWFyY2ggc3RyaW5ncywg aW5oZXJpdAogcGFyZW50IElEcwoKKiBsaXNwL29sLmVsIChvcmctc3RvcmUtbGluayk6IFJl ZmFjdG9yIG9yZy1pZCBsaW5rcyB0byB1c2Ugc3RhbmRhcmQKYG9yZy1zdG9yZS1saW5rLWZ1 bmN0aW9ucycuCihvcmctbGluay1zZWFyY2gpOiBDcmVhdGUgbmV3IGhlYWRpbmdzIGF0IGFw cHJvcHJpYXRlIGxldmVsLgoob3JnLWxpbmstcHJlY2lzZS1saW5rLXRhcmdldCk6IE5ldyBm dW5jdGlvbiBleHRyYWN0aW5nIGxvZ2ljIHRvCmlkZW50aWZ5IGEgcHJlY2lzZSBsaW5rIHRh cmdldCwgZS5nLiBhIGhlYWRpbmcsIG5hbWVkIG9iamVjdCwgb3IgdGV4dApzZWFyY2guCihv cmctbGluay10cnktbGluay1zdG9yZS1mdW5jdGlvbnMpOiBFeHRyYWN0IGxvZ2ljIHRvIGNh bGwgZXh0ZXJuYWwKbGluayBzdG9yZSBmdW5jdGlvbnMuIFBhc3MgdGhlbSBhIG5ldyBgaW50 ZXJhY3RpdmU/JyBhcmd1bWVudC4KKiBsaXNwL29sLWJiZGIuZWwgKG9yZy1iYmRiLXN0b3Jl LWxpbmspOgoqIGxpc3Avb2wtYmlidGV4LmVsIChvcmctYmlidGV4LXN0b3JlLWxpbmspOgoq IGxpc3Avb2wtZG9jdmlldy5lbCAob3JnLWRvY3ZpZXctc3RvcmUtbGluayk6CiogbGlzcC9v bC1lc2hlbGwuZWwgKG9yZy1lc2hlbGwtc3RvcmUtbGluayk6CiogbGlzcC9vbC1ld3cuZWwg KG9yZy1ld3ctc3RvcmUtbGluayk6CiogbGlzcC9vbC1nbnVzLmVsIChvcmctZ251cy1zdG9y ZS1saW5rKToKKiBsaXNwL29sLWluZm8uZWwgKG9yZy1pbmZvLXN0b3JlLWxpbmspOgoqIGxp c3Avb2wtaXJjLmVsIChvcmctaXJjLXN0b3JlLWxpbmspOgoqIGxpc3Avb2wtbWFuLmVsIChv cmctbWFuLXN0b3JlLWxpbmspOgoqIGxpc3Avb2wtbWhlLmVsIChvcmctbWhlLXN0b3JlLWxp bmspOgoqIGxpc3Avb2wtcm1haWwuZWwgKG9yZy1ybWFpbC1zdG9yZS1saW5rKTogQWNjZXB0 IG9wdGlvbmFsIGFyZy4KKiBsaXNwL29yZy1pZC5lbCAob3JnLWlkLWxpbmstY29uc2lkZXIt cGFyZW50LWlkKTogTmV3IG9wdGlvbiB0byBhbGxvdwphIHBhcmVudCBoZWFkaW5nIHdpdGgg YW4gaWQgdG8gYmUgY29uc2lkZXJlZCBhcyBhIGxpbmsgdGFyZ2V0Lgoob3JnLWlkLWxpbmst dXNlLWNvbnRleHQpOiBOZXcgb3B0aW9uIHRvIGFkZCBjb250ZXh0IHRvIG9yZy1pZCBsaW5r cy4KKG9yZy1pZC1nZXQpOiBBZGQgb3B0aW9uYWwgYGluaGVyaXQnIGFyZ3VtZW50IHdoaWNo IGNvbnNpZGVycyBwYXJlbnRzJwpJRHMgaWYgdGhlIGN1cnJlbnQgZW50cnkgZG9lcyBub3Qg aGF2ZSBvbmUuCihvcmctaWQtc3RvcmUtbGluayk6IENvbnNpZGVyIElEcyBvZiBwYXJlbnQg aGVhZGluZ3MgYXMgbGluayB0YXJnZXRzCndoZW4gY3VycmVudCBoZWFkaW5nIGhhcyBubyBJ RCBhbmQgYG9yZy1pZC1saW5rLWNvbnNpZGVyLXBhcmVudC1pZCcgaXMKc2V0LiBBZGQgYSBz ZWFyY2ggc3RyaW5nIHRvIHRoZSBsaW5rIHdoZW4gZW5hYmxlZC4KKG9yZy1pZC1zdG9yZS1s aW5rLW1heWJlKTogRnVuY3Rpb24gc2V0IGFzIDpzdG9yZSBvcHRpb24gZm9yIGN1c3RvbSBp ZApsaW5rIHByb3BlcnR5LiBNb3ZlIGxvZ2ljIGZyb20gYG9yZy1zdG9yZS1saW5rJyBoZXJl IHRvIGRldGVybWluZSB3aGVuCmFuIG9yZy1pZCBsaW5rIHNob3VsZCBiZSBzdG9yZWQgdXNp bmcgYG9yZy1pZC1zdG9yZS1saW5rJy4KKG9yZy1pZC1vcGVuKTogUmVjb2duaXNlIHNlYXJj aCBzdHJpbmdzIGFmdGVyICI6OiIgaW4gb3JnLWlkIGxpbmtzLgoqIGxpc3Avb3JnLWxpbnQu ZWw6IGFkZCBjaGVja2VyIGZvciAiOjoiIGluIElEIHByb3BlcnRpZXMuCiogdGVzdGluZy9s aXNwL3Rlc3Qtb2wuZWw6IEFkZCB0ZXN0cyBmb3IKYG9yZy1saW5rLXByZWNpc2UtbGluay10 YXJnZXQnIGFuZCBgb3JnLWlkLXN0b3JlLWxpbmsnIGZ1bmN0aW9ucywKdGVzdGluZyBuZXcg b3B0aW9ucy4KKiBkb2Mvb3JnLW1hbnVhbC5vcmc6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGFi b3V0IGxpbmtzLgoqIGV0Yy9PUkctTkVXUzogRG9jdW1lbnQgY2hhbmdlcyBhbmQgbmV3IG9w dGlvbnMuCgpUaGVzZSBmZWF0dXJlIGFsbG93cyBmb3IgbW9yZSBwcmVjaXNlIGxpbmtzIHdo ZW4gdXNpbmcgb3JnLWlkIHRvIGxpbmsgdG8Kb3JnIGhlYWRpbmdzLCB3aXRob3V0IHJlcXVp cmluZyBldmVyeSBzaW5nbGUgaGVhZGxpbmUgdG8gaGF2ZSBhbiBpZC4KCkxpbms6IGh0dHBz Oi8vbGlzdC5vcmdtb2RlLm9yZy8xMTg0MzVlOC0wYjIwLTQ2ZmQtYWY2YS04OGRlOGUxOWZh YzZAYXBwLmZhc3RtYWlsLmNvbS8KLS0tCiBkb2Mvb3JnLW1hbnVhbC5vcmcgICAgICB8IDEz NCArKysrKysrKysrKy0tLS0tLS0tCiBldGMvT1JHLU5FV1MgICAgICAgICAgICB8ICA2NCAr KysrKysrKysKIGxpc3Avb2wtYmJkYi5lbCAgICAgICAgIHwgICAyICstCiBsaXNwL29sLWJp YnRleC5lbCAgICAgICB8ICAgMiArLQogbGlzcC9vbC1kb2N2aWV3LmVsICAgICAgfCAgIDIg Ky0KIGxpc3Avb2wtZXNoZWxsLmVsICAgICAgIHwgICAyICstCiBsaXNwL29sLWV3dy5lbCAg ICAgICAgICB8ICAgMiArLQogbGlzcC9vbC1nbnVzLmVsICAgICAgICAgfCAgIDIgKy0KIGxp c3Avb2wtaW5mby5lbCAgICAgICAgIHwgICAyICstCiBsaXNwL29sLWlyYy5lbCAgICAgICAg ICB8ICAgMiArLQogbGlzcC9vbC1tYW4uZWwgICAgICAgICAgfCAgIDIgKy0KIGxpc3Avb2wt bWhlLmVsICAgICAgICAgIHwgICAyICstCiBsaXNwL29sLXJtYWlsLmVsICAgICAgICB8ICAg MiArLQogbGlzcC9vbC5lbCAgICAgICAgICAgICAgfCAyODQgKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogbGlzcC9vcmctaWQuZWwgICAgICAgICAgfCAxNjUg KysrKysrKysrKysrKysrKysrKystLS0KIGxpc3Avb3JnLWxpbnQuZWwgICAgICAgIHwgIDE2 ICsrKwogdGVzdGluZy9saXNwL3Rlc3Qtb2wuZWwgfCAxMjYgKysrKysrKysrKysrKysrKysr CiAxNyBmaWxlcyBjaGFuZ2VkLCA2MjAgaW5zZXJ0aW9ucygrKSwgMTkxIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9vcmctbWFudWFsLm9yZyBiL2RvYy9vcmctbWFudWFsLm9y ZwppbmRleCA3ZTVhYzA2NzMuLjFmMTAxM2U2OSAxMDA2NDQKLS0tIGEvZG9jL29yZy1tYW51 YWwub3JnCisrKyBiL2RvYy9vcmctbWFudWFsLm9yZwpAQCAtMzI5NywxMCArMzI5Nyw2IEBA IEhlcmUgaXMgdGhlIGZ1bGwgc2V0IG9mIGJ1aWx0LWluIGxpbmsgdHlwZXM6CiAKICAgRmls ZSBsaW5rcy4gIEZpbGUgbmFtZSBtYXkgYmUgcmVtb3RlLCBhYnNvbHV0ZSwgb3IgcmVsYXRp dmUuCiAKLSAgQWRkaXRpb25hbGx5LCB5b3UgY2FuIHNwZWNpZnkgYSBsaW5lIG51bWJlciwg b3IgYSB0ZXh0IHNlYXJjaC4KLSAgSW4gT3JnIGZpbGVzLCB5b3UgbWF5IGxpbmsgdG8gYSBo ZWFkbGluZSBuYW1lLCBhIGN1c3RvbSBJRCwgb3IgYQotICBjb2RlIHJlZmVyZW5jZSBpbnN0 ZWFkLgotCiAgIEFzIGEgc3BlY2lhbCBjYXNlLCAiZmlsZSIgcHJlZml4IG1heSBiZSBvbWl0 dGVkIGlmIHRoZSBmaWxlIG5hbWUKICAgaXMgY29tcGxldGUsIGUuZy4sIGl0IHN0YXJ0cyB3 aXRoID0uLz0sIG9yID0vPS4KIApAQCAtMzM2NCw0NCArMzM2MCw1MCBAQCBIZXJlIGlzIHRo ZSBmdWxsIHNldCBvZiBidWlsdC1pbiBsaW5rIHR5cGVzOgogCiAgIEV4ZWN1dGUgYSBzaGVs bCBjb21tYW5kIHVwb24gYWN0aXZhdGlvbi4KIAorCitGb3IgPWZpbGU6PSBhbmQgPWlkOj0g bGlua3MsIHlvdSBjYW4gYWRkaXRpb25hbGx5IHNwZWNpZnkgYSBsaW5lCitudW1iZXIsIG9y IGEgdGV4dCBzZWFyY2ggc3RyaW5nLCBzZXBhcmF0ZWQgYnkgPTo6PS4gIEluIE9yZyBmaWxl cywgeW91CittYXkgbGluayB0byBhIGhlYWRsaW5lIG5hbWUsIGEgY3VzdG9tIElELCBvciBh IGNvZGUgcmVmZXJlbmNlIGluc3RlYWQuCisKIFRoZSBmb2xsb3dpbmcgdGFibGUgaWxsdXN0 cmF0ZXMgdGhlIGxpbmsgdHlwZXMgYWJvdmUsIGFsb25nIHdpdGggdGhlaXIKIG9wdGlvbnM6 CiAKLXwgTGluayBUeXBlICB8IEV4YW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKLXwtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLXwgaHR0cCAg ICAgICB8ID1odHRwOi8vc3RhZmYuc2NpZW5jZS51dmEubmwvYy5kb21pbmlrLz0gICAgICAg ICAgICAgICAgIHwKLXwgaHR0cHMgICAgICB8ID1odHRwczovL29yZ21vZGUub3JnLz0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgZG9pICAgICAgICB8ID1kb2k6 MTAuMTAwMC8xODI9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK LXwgZmlsZSAgICAgICB8ID1maWxlOi9ob21lL2RvbWluaWsvaW1hZ2VzL2p1cGl0ZXIuanBn PSAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICB8ID0vaG9tZS9kb21pbmlrL2lt YWdlcy9qdXBpdGVyLmpwZz0gKHNhbWUgYXMgYWJvdmUpICAgICAgIHwKLXwgICAgICAgICAg ICB8ID1maWxlOnBhcGVycy9sYXN0LnBkZj0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKLXwgICAgICAgICAgICB8ID0uL3BhcGVycy9sYXN0LnBkZj0gKHNhbWUgYXMg YWJvdmUpICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICB8ID1maWxlOi9z c2g6bWVAc29tZS53aGVyZTpwYXBlcnMvbGFzdC5wZGY9IChyZW1vdGUpICAgICAgIHwKLXwg ICAgICAgICAgICB8ID0vc3NoOm1lQHNvbWUud2hlcmU6cGFwZXJzL2xhc3QucGRmPSAoc2Ft ZSBhcyBhYm92ZSkgICAgIHwKLXwgICAgICAgICAgICB8ID1maWxlOnNvbWV0ZXh0ZmlsZTo6 Tk5OPSAoanVtcCB0byBsaW5lIG51bWJlcikgICAgICAgICAgIHwKLXwgICAgICAgICAgICB8 ID1maWxlOnByb2plY3RzLm9yZz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwKLXwgICAgICAgICAgICB8ID1maWxlOnByb2plY3RzLm9yZzo6c29tZSB3b3Jkcz0g KHRleHQgc2VhcmNoKVtmbjoxMl0gICAgIHwKLXwgICAgICAgICAgICB8ID1maWxlOnByb2pl Y3RzLm9yZzo6KnRhc2sgdGl0bGU9IChoZWFkbGluZSBzZWFyY2gpICAgICAgIHwKLXwgICAg ICAgICAgICB8ID1maWxlOnByb2plY3RzLm9yZzo6I2N1c3RvbS1pZD0gKGhlYWRsaW5lIHNl YXJjaCkgICAgICAgIHwKLXwgYXR0YWNobWVudCB8ID1hdHRhY2htZW50OnByb2plY3RzLm9y Zz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICB8ID1h dHRhY2htZW50OnByb2plY3RzLm9yZzo6c29tZSB3b3Jkcz0gKHRleHQgc2VhcmNoKSAgICAg IHwKLXwgZG9jdmlldyAgICB8ID1kb2N2aWV3OnBhcGVycy9sYXN0LnBkZjo6Tk5OPSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKLXwgaWQgICAgICAgICB8ID1pZDpCNzQyM0Y0RC0y RThBLTQ3MUItODgxMC1DNDBGMDc0NzE3RTk9ICAgICAgICAgICAgICAgIHwKLXwgbmV3cyAg ICAgICB8ID1uZXdzOmNvbXAuZW1hY3M9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKLXwgbWFpbHRvICAgICB8ID1tYWlsdG86YWRlbnRAZ2FsYXh5Lm5ldD0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgbWhlICAgICAgICB8ID1taGU6 Zm9sZGVyPSAoZm9sZGVyIGxpbmspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK LXwgICAgICAgICAgICB8ID1taGU6Zm9sZGVyI2lkPSAobWVzc2FnZSBsaW5rKSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKLXwgcm1haWwgICAgICB8ID1ybWFpbDpmb2xkZXI9IChm b2xkZXIgbGluaykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAg ICB8ID1ybWFpbDpmb2xkZXIjaWQ9IChtZXNzYWdlIGxpbmspICAgICAgICAgICAgICAgICAg ICAgICAgIHwKLXwgZ251cyAgICAgICB8ID1nbnVzOmdyb3VwPSAoZ3JvdXAgbGluaykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICB8ID1nbnVzOmdy b3VwI2lkPSAoYXJ0aWNsZSBsaW5rKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwg YmJkYiAgICAgICB8ID1iYmRiOlIuKlN0YWxsbWFuPSAocmVjb3JkIHdpdGggcmVnZXhwKSAg ICAgICAgICAgICAgICAgIHwKLXwgaXJjICAgICAgICB8ID1pcmM6L2lyYy5jb20vI2VtYWNz L2JvYj0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgaGVscCAgICAgICB8 ID1oZWxwOm9yZy1zdG9yZS1saW5rPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwKLXwgaW5mbyAgICAgICB8ID1pbmZvOm9yZyNFeHRlcm5hbCBsaW5rcz0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgc2hlbGwgICAgICB8ID1zaGVsbDpscyAq Lm9yZz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgZWxp c3AgICAgICB8ID1lbGlzcDooZmluZC1maWxlICJFbGlzcC5vcmciKT0gKEVsaXNwIGZvcm0g dG8gZXZhbHVhdGUpIHwKLXwgICAgICAgICAgICB8ID1lbGlzcDpvcmctYWdlbmRhPSAoaW50 ZXJhY3RpdmUgRWxpc3AgY29tbWFuZCkgICAgICAgICAgIHwKK3wgTGluayBUeXBlICB8IEV4 YW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8Cit8LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBodHRwICAg ICAgIHwgPWh0dHA6Ly9zdGFmZi5zY2llbmNlLnV2YS5ubC9jLmRvbWluaWsvPSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKK3wgaHR0cHMgICAgICB8ID1odHRwczovL29yZ21vZGUu b3JnLz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8 IGRvaSAgICAgICAgfCA9ZG9pOjEwLjEwMDAvMTgyPSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBmaWxlICAgICAgIHwgPWZpbGU6L2hv bWUvZG9taW5pay9pbWFnZXMvanVwaXRlci5qcGc9ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwKK3wgICAgICAgICAgICB8ID0vaG9tZS9kb21pbmlrL2ltYWdlcy9qdXBpdGVyLmpw Zz0gKHNhbWUgYXMgYWJvdmUpICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfCA9 ZmlsZTpwYXBlcnMvbGFzdC5wZGY9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAorfCAgICAgICAgICAgIHwgPS4vcGFwZXJzL2xhc3QucGRmPSAoc2Ft ZSBhcyBhYm92ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAg ICAgICB8ID1maWxlOi9zc2g6bWVAc29tZS53aGVyZTpwYXBlcnMvbGFzdC5wZGY9IChyZW1v dGUpICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfCA9L3NzaDptZUBzb21lLndo ZXJlOnBhcGVycy9sYXN0LnBkZj0gKHNhbWUgYXMgYWJvdmUpICAgICAgICAgICAgICAgfAor fCAgICAgICAgICAgIHwgPWZpbGU6c29tZXRleHRmaWxlOjpOTk49IChqdW1wIHRvIGxpbmUg bnVtYmVyKSAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICB8ID1maWxlOnBy b2plY3RzLm9yZz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8Cit8ICAgICAgICAgICAgfCA9ZmlsZTpwcm9qZWN0cy5vcmc6OnNvbWUgd29yZHM9 ICh0ZXh0IHNlYXJjaClbZm46MTJdICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgIHwg PWZpbGU6cHJvamVjdHMub3JnOjoqdGFzayB0aXRsZT0gKGhlYWRsaW5lIHNlYXJjaCkgICAg ICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICB8ID1maWxlOnByb2plY3RzLm9yZzo6I2N1 c3RvbS1pZD0gKGhlYWRsaW5lIHNlYXJjaCkgICAgICAgICAgICAgICAgICB8Cit8IGF0dGFj aG1lbnQgfCA9YXR0YWNobWVudDpwcm9qZWN0cy5vcmc9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgIHwgPWF0dGFjaG1lbnQ6cHJv amVjdHMub3JnOjpzb21lIHdvcmRzPSAodGV4dCBzZWFyY2gpICAgICAgICAgICAgICAgIHwK K3wgZG9jdmlldyAgICB8ID1kb2N2aWV3OnBhcGVycy9sYXN0LnBkZjo6Tk5OPSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGlkICAgICAgICAgfCA9aWQ6Qjc0 MjNGNEQtMkU4QS00NzFCLTg4MTAtQzQwRjA3NDcxN0U5PSAgICAgICAgICAgICAgICAgICAg ICAgICAgfAorfCAgICAgICAgICAgIHwgPWlkOkI3NDIzRjRELTJFOEEtNDcxQi04ODEwLUM0 MEYwNzQ3MTdFOTo6KnRhc2s9IChoZWFkbGluZSBzZWFyY2gpIHwKK3wgbmV3cyAgICAgICB8 ID1uZXdzOmNvbXAuZW1hY3M9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Cit8IG1haWx0byAgICAgfCA9bWFpbHRvOmFkZW50QGdhbGF4eS5u ZXQ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBtaGUg ICAgICAgIHwgPW1oZTpmb2xkZXI9IChmb2xkZXIgbGluaykgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICB8ID1taGU6Zm9sZGVyI2lk PSAobWVzc2FnZSBsaW5rKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 Cit8IHJtYWlsICAgICAgfCA9cm1haWw6Zm9sZGVyPSAoZm9sZGVyIGxpbmspICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgIHwgPXJtYWls OmZvbGRlciNpZD0gKG1lc3NhZ2UgbGluaykgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKK3wgZ251cyAgICAgICB8ID1nbnVzOmdyb3VwPSAoZ3JvdXAgbGluaykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAg fCA9Z251czpncm91cCNpZD0gKGFydGljbGUgbGluaykgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfAorfCBiYmRiICAgICAgIHwgPWJiZGI6Ui4qU3RhbGxtYW49IChy ZWNvcmQgd2l0aCByZWdleHApICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgaXJj ICAgICAgICB8ID1pcmM6L2lyYy5jb20vI2VtYWNzL2JvYj0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8Cit8IGhlbHAgICAgICAgfCA9aGVscDpvcmctc3Rv cmUtbGluaz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAorfCBpbmZvICAgICAgIHwgPWluZm86b3JnI0V4dGVybmFsIGxpbmtzPSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgc2hlbGwgICAgICB8ID1zaGVs bDpscyAqLm9yZz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8Cit8IGVsaXNwICAgICAgfCA9ZWxpc3A6KGZpbmQtZmlsZSAiRWxpc3Aub3Jn Iik9IChFbGlzcCBmb3JtIHRvIGV2YWx1YXRlKSAgICAgICAgICAgfAorfCAgICAgICAgICAg IHwgPWVsaXNwOm9yZy1hZ2VuZGE9IChpbnRlcmFjdGl2ZSBFbGlzcCBjb21tYW5kKSAgICAg ICAgICAgICAgICAgICAgIHwKIAogIytjaW5kZXg6IFZNIGxpbmtzCiAjK2NpbmRleDogV2Fu ZGVybHVzdCBsaW5rcwpAQCAtMzQ2Miw4ICszNDY0LDkgQEAgY3VycmVudCBidWZmZXI6CiAt IC9PcmcgbW9kZSBidWZmZXJzLyA6OgogCiAgIEZvciBPcmcgZmlsZXMsIGlmIHRoZXJlIGlz IGEgPTw8dGFyZ2V0Pj49IGF0IHBvaW50LCB0aGUgbGluayBwb2ludHMKLSAgdG8gdGhlIHRh cmdldC4gIE90aGVyd2lzZSBpdCBwb2ludHMgdG8gdGhlIGN1cnJlbnQgaGVhZGxpbmUsIHdo aWNoCi0gIGlzIGFsc28gdGhlIGRlc2NyaXB0aW9uLgorICB0byB0aGUgdGFyZ2V0LiAgSWYg dGhlcmUgaXMgYSBuYW1lZCBibG9jayAodXNpbmcgPSMrbmFtZTo9KSBhdAorICBwb2ludCwg dGhlIGxpbmsgcG9pbnRzIHRvIHRoYXQgbmFtZS4gIE90aGVyd2lzZSBpdCBwb2ludHMgdG8g dGhlCisgIGN1cnJlbnQgaGVhZGxpbmUsIHdoaWNoIGlzIGFsc28gdGhlIGRlc2NyaXB0aW9u LgogCiAgICMrdmluZGV4OiBvcmctaWQtbGluay10by1vcmctdXNlLWlkCiAgICMrY2luZGV4 OiBAc2FtcHtDVVNUT01fSUR9LCBwcm9wZXJ0eQpAQCAtMzQ4MSw2ICszNDg0LDI5IEBAIGN1 cnJlbnQgYnVmZmVyOgogICB0aW1lc3RhbXAsIGRlcGVuZGluZyBvbiB+b3JnLWlkLW1ldGhv ZH4uICBMYXRlciwgd2hlbiBpbnNlcnRpbmcgdGhlCiAgIGxpbmssIHlvdSBuZWVkIHRvIGRl Y2lkZSB3aGljaCBvbmUgdG8gdXNlLgogCisgICMrdmluZGV4OiBvcmctaWQtbGluay1jb25z aWRlci1wYXJlbnQtaWQKKyAgV2hlbiB+b3JnLWlkLWxpbmstY29uc2lkZXItcGFyZW50LWlk fiBpcyB+dH4gKGFuZAorICB+b3JnLWNvbnRleHQtaW4tZmlsZS1saW5rc34gYW5kIH5vcmct aWQtbGluay11c2UtY29udGV4dH4gYXJlIGJvdGgKKyAgZW5hYmxlZCksIHBhcmVudCA9SUQ9 IHByb3BlcnRpZXMgYXJlIGNvbnNpZGVyZWQuICBUaGlzIGFsbG93cworICBsaW5raW5nIHRv IHNwZWNpZmljIHRhcmdldHMsIG5hbWVkIGJsb2Nrcywgb3IgaGVhZGxpbmVzICh3aGljaCBt YXkKKyAgbm90IGhhdmUgYSBnbG9iYWxseSB1bmlxdWUgPUlEPSB0aGVtc2VsdmVzKSB3aXRo aW4gdGhlIGNvbnRleHQgb2YgYQorICBwYXJlbnQgaGVhZGxpbmUgb3IgZmlsZSB3aGljaCBk b2VzLgorCisgIEZvciBleGFtcGxlLCBnaXZlbiB0aGlzIG9yZyBmaWxlIHdpdGggdGhvc2Ug dmFyaWFibGVzIHNldDoKKworICAjK2JlZ2luX3NyYyBvcmcKKyAgLCogUGFyZW50CisgIDpQ Uk9QRVJUSUVTOgorICA6SUQ6IGFiYworICA6RU5EOgorICAsKiogQ2hpbGQgMQorICAsKiog Q2hpbGQgMgorICAjK2VuZF9zcmMKKworICBTdG9yaW5nIGEgbGluayB3aXRoIHBvaW50IGF0 ICJDaGlsZCAxIiB3aWxsIHByb2R1Y2UgYSBsaW5rCisgID08aWQ6YWJjOjoqQ2hpbGQgMT49 LCB3aGljaCBwcmVjaXNlbHkgbGlua3MgdG8gdGhlICJDaGlsZCAxIgorICBoZWFkbGluZSBl dmVuIHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGl0cyBvd24gSUQuCisKIC0gL0VtYWlsL05l d3MgY2xpZW50czogVk0sIFJtYWlsLCBXYW5kZXJsdXN0LCBNSC1FLCBHbnVzLyA6OgogCiAg ICMrdmluZGV4OiBvcmctbGluay1lbWFpbC1kZXNjcmlwdGlvbi1mb3JtYXQKQEAgLTM3NTQs MTMgKzM3ODAsMTUgQEAgdGhlIGxpbmsgY29tcGxldGlvbiBmdW5jdGlvbiBsaWtlIHRoaXM6 CiAob3JnLWxpbmstc2V0LXBhcmFtZXRlciAidHlwZSIgOmNvbXBsZXRlICMnc29tZS1jb21w bGV0aW9uLWZ1bmN0aW9uKQogIytlbmRfc3JjCiAKLSoqIFNlYXJjaCBPcHRpb25zIGluIEZp bGUgTGlua3MKKyoqIFNlYXJjaCBPcHRpb25zIGluIEZpbGUgYW5kIElEIExpbmtzCiA6UFJP UEVSVElFUzoKIDpERVNDUklQVElPTjogTGlua2luZyB0byBhIHNwZWNpZmljIGxvY2F0aW9u LgogOkFMVF9USVRMRTogU2VhcmNoIE9wdGlvbnMKIDpFTkQ6CiAjK2NpbmRleDogc2VhcmNo IG9wdGlvbiBpbiBmaWxlIGxpbmtzCisjK2NpbmRleDogc2VhcmNoIG9wdGlvbiBpbiBpZCBs aW5rcwogIytjaW5kZXg6IGZpbGUgbGlua3MsIHNlYXJjaGluZworIytjaW5kZXg6IGlkIGxp bmtzLCBzZWFyY2hpbmcKICMrY2luZGV4OiBhdHRhY2htZW50IGxpbmtzLCBzZWFyY2hpbmcK IAogRmlsZSBsaW5rcyBjYW4gY29udGFpbiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIG1h a2UgRW1hY3MganVtcCB0byBhCkBAIC0zNzcyLDggKzM4MDAsOCBAQCBleGFtcGxlLCB3aGVu IHRoZSBjb21tYW5kIH5vcmctc3RvcmUtbGlua34gY3JlYXRlcyBhIGxpbmsgKHNlZQogbGlu ZSBhcyBhIHNlYXJjaCBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCB0byBmaW5kIHRoaXMgbGlu ZSBiYWNrIGxhdGVyCiB3aGVuIGZvbGxvd2luZyB0aGUgbGluayB3aXRoIHt7e2tiZChDLWMg Qy1vKX19fS4KIAotTm90ZSB0aGF0IGFsbCBzZWFyY2ggb3B0aW9ucyBhcHBseSBmb3IgQXR0 YWNobWVudCBsaW5rcyBpbiB0aGUgc2FtZQotd2F5IHRoYXQgdGhleSBhcHBseSBmb3IgRmls ZSBsaW5rcy4KK05vdGUgdGhhdCBhbGwgc2VhcmNoIG9wdGlvbnMgYXBwbHkgZm9yIEF0dGFj aG1lbnQgYW5kIElEIGxpbmtzIGluIHRoZQorc2FtZSB3YXkgdGhhdCB0aGV5IGFwcGx5IGZv ciBGaWxlIGxpbmtzLgogCiBIZXJlIGlzIHRoZSBzeW50YXggb2YgdGhlIGRpZmZlcmVudCB3 YXlzIHRvIGF0dGFjaCBhIHNlYXJjaCB0byBhIGZpbGUKIGxpbmssIHRvZ2V0aGVyIHdpdGgg ZXhwbGFuYXRpb25zIGZvciBlYWNoOgpAQCAtMjEzNTUsNyArMjEzODMsNyBAQCBUaGUgZm9s bG93aW5nID1vbC1tYW4uZWw9IGZpbGUgaW1wbGVtZW50cyBpdAogUEFUSCBzaG91bGQgYmUg YSB0b3BpYyB0aGF0IGNhbiBiZSB0aHJvd24gYXQgdGhlIG1hbiBjb21tYW5kLiIKICAgKGZ1 bmNhbGwgb3JnLW1hbi1jb21tYW5kIHBhdGgpKQogCi0oZGVmdW4gb3JnLW1hbi1zdG9yZS1s aW5rICgpCisoZGVmdW4gb3JnLW1hbi1zdG9yZS1saW5rICgmb3B0aW9uYWwgX2ludGVyYWN0 aXZlPykKICAgIlN0b3JlIGEgbGluayB0byBhIG1hbiBwYWdlLiIKICAgKHdoZW4gKG1lbXEg bWFqb3ItbW9kZSAnKE1hbi1tb2RlIHdvbWFuLW1vZGUpKQogICAgIDs7IFRoaXMgaXMgYSBt YW4gcGFnZSwgd2UgZG8gbWFrZSB0aGlzIGxpbmsuCkBAIC0yMTQxNSwxMyArMjE0NDMsMTUg QEAgQSByZXZpZXcgb2YgPW9sLW1hbi5lbD06CiAKICAgIEZvciBleGFtcGxlLCB+b3JnLW1h bi1zdG9yZS1saW5rfiBpcyByZXNwb25zaWJsZSBmb3Igc3RvcmluZyBhIGxpbmsKICAgIHdo ZW4gfm9yZy1zdG9yZS1saW5rfiAoc2VlIFtbKkhhbmRsaW5nIExpbmtzXV0pIGlzIGNhbGxl ZCBmcm9tIGEgYnVmZmVyCi0gICBkaXNwbGF5aW5nIGEgbWFuIHBhZ2UuICBJdCBmaXJzdCBj aGVja3MgaWYgdGhlIG1ham9yIG1vZGUgaXMKLSAgIGFwcHJvcHJpYXRlLiAgSWYgY2hlY2sg ZmFpbHMsIHRoZSBmdW5jdGlvbiByZXR1cm5zIH5uaWx+LCB3aGljaAotICAgbWVhbnMgaXQg aXNuJ3QgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGEgbGluayB0byB0aGUgY3VycmVudAot ICAgYnVmZmVyLiAgT3RoZXJ3aXNlIHRoZSBmdW5jdGlvbiBtYWtlcyBhIGxpbmsgc3RyaW5n IGJ5IGNvbWJpbmluZwotICAgdGhlID1tYW46PSBwcmVmaXggd2l0aCB0aGUgbWFuIHRvcGlj LiAgSXQgYWxzbyBwcm92aWRlcyBhIGRlZmF1bHQKLSAgIGRlc2NyaXB0aW9uLiAgVGhlIGZ1 bmN0aW9uIH5vcmctaW5zZXJ0LWxpbmt+IGNhbiBpbnNlcnQgaXQgYmFjawotICAgaW50byBh biBPcmcgYnVmZmVyIGxhdGVyIG9uLgorICAgZGlzcGxheWluZyBhIG1hbiBwYWdlLiAgSXQg aXMgcGFzc2VkIGFuIGFyZ3VtZW50IH5pbnRlcmFjdGl2ZT9+CisgICB3aGljaCB0aGlzIGZ1 bmN0aW9uIGRvZXMgbm90IHVzZSwgYnV0IG90aGVyIHN0b3JlIGZ1bmN0aW9ucyB1c2UgdG8K KyAgIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGEgbGluayBpcyBzdG9yZWQgaW50ZXJhY3Rp dmVseSBieSB0aGUgdXNlci4KKyAgIEl0IGZpcnN0IGNoZWNrcyBpZiB0aGUgbWFqb3IgbW9k ZSBpcyBhcHByb3ByaWF0ZS4gIElmIGNoZWNrIGZhaWxzLAorICAgdGhlIGZ1bmN0aW9uIHJl dHVybnMgfm5pbH4sIHdoaWNoIG1lYW5zIGl0IGlzbid0IHJlc3BvbnNpYmxlIGZvcgorICAg Y3JlYXRpbmcgYSBsaW5rIHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4gIE90aGVyd2lzZSB0aGUg ZnVuY3Rpb24KKyAgIG1ha2VzIGEgbGluayBzdHJpbmcgYnkgY29tYmluaW5nIHRoZSA9bWFu Oj0gcHJlZml4IHdpdGggdGhlIG1hbgorICAgdG9waWMuICBJdCBhbHNvIHByb3ZpZGVzIGEg ZGVmYXVsdCBkZXNjcmlwdGlvbi4gIFRoZSBmdW5jdGlvbgorICAgfm9yZy1pbnNlcnQtbGlu a34gY2FuIGluc2VydCBpdCBiYWNrIGludG8gYW4gT3JnIGJ1ZmZlciBsYXRlciBvbi4KIAog KiogQWRkaW5nIEV4cG9ydCBCYWNrZW5kcwogOlBST1BFUlRJRVM6CmRpZmYgLS1naXQgYS9l dGMvT1JHLU5FV1MgYi9ldGMvT1JHLU5FV1MKaW5kZXggZWMwMTAwNGY4Li4xMTE1ZTNiYjQg MTAwNjQ0Ci0tLSBhL2V0Yy9PUkctTkVXUworKysgYi9ldGMvT1JHLU5FV1MKQEAgLTM0NSw2 ICszNDUsMTQgQEAgdGltZXN0YW1wIG9iamVjdC4gIFBvc3NpYmxlIHZhbHVlczogfnRpbWVy YW5nZX4sIH5kYXRlcmFuZ2V+LCB+bmlsfi4KIH5vcmctZWxlbWVudC10aW1lc3RhbXAtaW50 ZXJwcmV0ZXJ+IHRha2VzIGludG8gYWNjb3VudCB0aGlzIHByb3BlcnR5CiBhbmQgcmV0dXJu cyBhbiBhcHByb3ByaWF0ZSB0aW1lc3RhbXAgc3RyaW5nLgogCisqKioqID1vcmctbGluaz0g c3RvcmUgZnVuY3Rpb25zIGFyZSBwYXNzZWQgYW4gfmludGVyYWN0aXZlP34gYXJndW1lbnQK KworVGhlIH46c3RvcmU6fiBmdW5jdGlvbnMgc2V0IGZvciBsaW5rIHR5cGVzIHVzaW5nCit+ b3JnLWxpbmstc2V0LXBhcmFtZXRlcnN+IGFyZSBub3cgcGFzc2VkIGFuIH5pbnRlcmFjdGl2 ZT9+IGFyZ3VtZW50LAoraW5kaWNhdGluZyB3aGV0aGVyIH5vcmctc3RvcmUtbGlua34gd2Fz IGNhbGxlZCBpbnRlcmFjdGl2ZWx5LgorCitFeGlzdGluZyBzdG9yZSBmdW5jdGlvbnMgd2ls bCBjb250aW51ZSB0byB3b3JrLgorCiAqKiogfm9yZy1wcmlvcml0eT1zaG93fiBjb21tYW5k IG5vIGxvbmdlciBhZGp1c3RzIGZvciBzY2hlZHVsZWQvZGVhZGxpbmUKIAogSW4gYWdlbmRh IHZpZXdzLCB+b3JnLXByaW9yaXR5PXNob3d+IGNvbW1hbmQgcHJldmlvdXNseSBkaXNwbGF5 ZWQgdGhlCkBAIC00MjMsNiArNDMxLDI3IEBAIFRoZSBjaGFuZ2UgaXMgYnJlYWtpbmcgd2hl biB+b3JnLXVzZS1wcm9wZXJ0eS1pbmhlcml0YW5jZX4gaXMgc2V0IHRvIH50fi4KICoqKiB+ b3JnLWJhYmVsLWxpbHlwb25kLWNvbXBpbGUtbGlseWZpbGV+IGlnbm9yZXMgb3B0aW9uYWwg c2Vjb25kIGFyZ3VtZW50CiAKIFRoZSA9VEVTVD0gcGFyYW1ldGVyIGlzIGJldHRlciBzZXJ2 ZWQgYnkgRW1hY3MgZGVidWdnaW5nIHRvb2xzLgorCisqKiogfm9yZy1pZC1zdG9yZS1saW5r fiBub3cgYWRkcyBzZWFyY2ggc3RyaW5ncyBmb3IgcHJlY2lzZSBsaW5rIHRhcmdldHMKKwor VGhpcyBuZXcgYmVoYXZpb3VyIGNhbiBiZSBkaXNhYmxlZCBnZW5lcmFsbHkgYnkgc2V0dGlu Zworfm9yZy1pZC1saW5rLXVzZS1jb250ZXh0fiB0byB+bmlsfiwgb3IgdGhlIHNldHRpbmcg Y2FuIGJlIHRvZ2dsZWQgZm9yCithIHNpbmdsZSBjYWxsIHRvIH5vcmctc3RvcmUtbGlua34g d2l0aCBhIHVuaXZlcnNhbCBhcmd1bWVudC4KKworV2hlbiB1c2luZyB0aGlzIGZlYXR1cmUs IElEcyBzaG91bGQgbm90IGluY2x1ZGUgPTo6PSwgd2hpY2ggaXMgdXNlZCBpbgorbGlua3Mg dG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIHRoZSBzZWFyY2ggc3RyaW5nLiAgRm9yIGJhY2t3 YXJkcworY29tcGFiaWxpdHksIGV4aXN0aW5nIElEcyBpbmNsdWRpbmcgPTo6PSB3aWxsIHN0 aWxsIGJlIG1hdGNoZWQgKGJ1dAorY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBwcmVj aXNlIGxpbmsgdGFyZ2V0cykuICBBbiBvcmctbGludAorY2hlY2tlciBoYXMgYmVlbiBhZGRl ZCB0byB3YXJuIGFib3V0IHRoaXMuCisKKyoqKiB+b3JnLXN0b3JlLWxpbmt+IGJlaGF2aW91 ciBzdG9yaW5nIGFkZGl0aW9uYWwgPUNVU1RPTV9JRD0gbGlua3MgaGFzIGNoYW5nZWQKKwor QXMgd2VsbCBhcyBhbiA9aWQ6PSBsaW5rLCB+b3JnLXN0b3JlLWxpbmt+IHN0b3JlcyBhbiBh ZGRpdGlvbmFsICJodW1hbgorcmVhZGFibGUiIGxpbmsgdXNpbmcgYSBub2RlJ3MgPUNVU1RP TV9JRD0gcHJvcGVydHksIGlmIGF2YWlsYWJsZS4KK1RoaXMgYmVoYXZpb3VyIGhhcyBiZWVu IGV4cGFuZGVkIHRvIHN0b3JlIGFuIGFkZGl0aW9uYWwgPUNVU1RPTV9JRD0KK2xpbmsgd2hl biBzdG9yaW5nIGFueSB0eXBlIG9mIGV4dGVybmFsIGxpbmsgdHlwZSBpbiBhbiBPcmcgZmls ZSwgbm90CitqdXN0ID1pZDo9IGxpbmtzLgorCiAqKiBOZXcgYW5kIGNoYW5nZWQgb3B0aW9u cwogKioqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIH5vcmctYXR0YWNoLXN0b3JlLWxpbmstcH4g aXMgbm93IH5hdHRhY2hlZH4KIApAQCAtNjU5LDYgKzY4OCwzNSBAQCBtYW5uZXIgd2l0aCB+ cnVuLXB5dGhvbn4uCiBUaGlzIGFsbG93cyB0byBydW4gZnVuY3Rpb25zIGFmdGVyIH5vcmct aW5kZW50fiBpbnRpYWxpemVzIGEgYnVmZmVyIHRvCiBlbnJpY2ggaXRzIHByb3BlcnRpZXMu CiAKKyoqKiBOZXcgb3B0aW9uIH5vcmctaWQtbGluay1jb25zaWRlci1wYXJlbnQtaWR+IHRv IGFsbG93ID1pZDo9IGxpbmtzIHRvIHBhcmVudCBoZWFkbGluZXMKKworRm9yID1pZDo9IGxp bmtzLCB3aGVuIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIH5vcmctc3RvcmUtbGlua34gd2ls bAorbG9vayBmb3IgaWRzIGZyb20gcGFyZW50L2FuY2VzdG9yIGhlYWRsaW5lcywgaWYgdGhl IGN1cnJlbnQgaGVhZGxpbmUKK2RvZXMgbm90IGhhdmUgYW4gaWQuCisKK0NvbWJpbmVkIHdp dGggdGhlIG5ldyBhYmlsaXR5IGZvciA9aWQ6PSBsaW5rcyB0byB1c2Ugc2VhcmNoIHN0cmlu Z3MKK2ZvciBwcmVjaXNlIGxpbmsgdGFyZ2V0cyAod2hlbiA9b3JnLWlkLWxpbmstdXNlLWNv bnRleHQ9IGlzID10PSwgd2hpY2gKK2lzIHRoZSBkZWZhdWx0KSwgdGhpcyBhbGxvd3MgbGlu a2luZyB0byBzcGVjaWZpYyBoZWFkbGluZXMgd2l0aG91dAorcmVxdWlyaW5nIGV2ZXJ5IGhl YWRsaW5lIHRvIGhhdmUgYW4gaWQgcHJvcGVydHksIGFzIGxvbmcgYXMgdGhlCitoZWFkbGlu ZSBpcyB1bmlxdWUgd2l0aGluIGEgc3VidHJlZSB0aGF0IGRvZXMgaGF2ZSBhbiBpZCBwcm9w ZXJ0eS4KKworRm9yIGV4YW1wbGUsIGdpdmVuIHRoaXMgb3JnIGZpbGU6CisKKyMrYmVnaW5f c3JjIG9yZworLCogUGFyZW50Cis6UFJPUEVSVElFUzoKKzpJRDogYWJjCis6RU5EOgorLCoq IENoaWxkIDEKKywqKiBDaGlsZCAyCisjK2VuZF9zcmMKKworU3RvcmluZyBhIGxpbmsgd2l0 aCBwb2ludCBhdCAiQ2hpbGQgMSIgd2lsbCBwcm9kdWNlIGEgbGluaworPTxpZDphYmM6OipD aGlsZCAxPj0sIHdoaWNoIHByZWNpc2VseSBsaW5rcyB0byB0aGUgIkNoaWxkIDEiIGhlYWRs aW5lCitldmVuIHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGl0cyBvd24gSUQuICBCeSBnaXZp bmcgZmlsZXMgdG9wLWxldmVsIGlkCitwcm9wZXJ0aWVzLCBsaW5rcyB0byBoZWFkbGluZXMg aW4gdGhlIGZpbGUgY2FuIGFsc28gYmUgbWFkZSBtb3JlCityb2J1c3QgYnkgdXNpbmcgdGhl IGZpbGUgaWQgaW5zdGVhZCBvZiB0aGUgZmlsZSBwYXRoLgorCiAqKiBOZXcgZmVhdHVyZXMK ICoqKiA9b2ItcGxhbnR1bWwuZWw9OiBTdXBwb3J0IHRpa3ogZmlsZSBmb3JtYXQgb3V0cHV0 CiAKQEAgLTk0Nyw2ICsxMDA1LDEyIEBAIEEgbnVtZXJpYyB2YWx1ZSBmb3JjZXMgYSBoZWFk aW5nIGF0IHRoYXQgbGV2ZWwgdG8gYmUgaW5zZXJ0ZWQuICBGb3IKIGJhY2t3YXJkcyBjb21w YXRpYmlsaXR5LCBub24tbnVtZXJpYyBub24tbmlsIHZhbHVlcyBpbnNlcnQgbGV2ZWwgMQog aGVhZGluZ3MgYXMgYmVmb3JlLgogCisqKiogTmV3IG9wdGlvbmFsIGFyZ3VtZW50IGZvciB+ b3JnLWlkLWdldH4KKworTmV3IG9wdGlvbmFsIGFyZ3VtZW50ID1JTkhFUklUPSBtZWFucyBp bmhlcml0ZWQgSUQgcHJvcGVydGllcyBmcm9tCitwYXJlbnQgZW50cmllcyBhcmUgY29uc2lk ZXJlZCB3aGVuIGdldHRpbmcgYW4gZW50cnkncyBJRCAoc2VlCit+b3JnLWlkLWxpbmstY29u c2lkZXItcGFyZW50LWlkfiBvcHRpb24pLgorCiAqKiBNaXNjZWxsYW5lb3VzCiAqKiogPW9y Zy1jcnlwdC5lbD0gbm93IGFwcGxpZXMgaW5pdGlhbCB2aXNpYmlsaXR5IHNldHRpbmdzIHRv IGRlY3J5cHRlZCBlbnRyaWVzCiAKZGlmZiAtLWdpdCBhL2xpc3Avb2wtYmJkYi5lbCBiL2xp c3Avb2wtYmJkYi5lbAppbmRleCBiZTM5MjRmYzkuLjZlYTA2MGY3MCAxMDA2NDQKLS0tIGEv bGlzcC9vbC1iYmRiLmVsCisrKyBiL2xpc3Avb2wtYmJkYi5lbApAQCAtMjI2LDcgKzIyNiw3 IEBAIGRhdGUgeWVhcikuIgogCiA7OzsgSW1wbGVtZW50YXRpb24KIAotKGRlZnVuIG9yZy1i YmRiLXN0b3JlLWxpbmsgKCkKKyhkZWZ1biBvcmctYmJkYi1zdG9yZS1saW5rICgmb3B0aW9u YWwgX2ludGVyYWN0aXZlPykKICAgIlN0b3JlIGEgbGluayB0byBhIEJCREIgZGF0YWJhc2Ug ZW50cnkuIgogICAod2hlbiAoZXEgbWFqb3ItbW9kZSAnYmJkYi1tb2RlKQogICAgIDs7IFRo aXMgaXMgQkJEQiwgd2UgbWFrZSB0aGlzIGxpbmshCmRpZmYgLS1naXQgYS9saXNwL29sLWJp YnRleC5lbCBiL2xpc3Avb2wtYmlidGV4LmVsCmluZGV4IGM1YTk1MGUyZC4uMzg0NjhmMzJm IDEwMDY0NAotLS0gYS9saXNwL29sLWJpYnRleC5lbAorKysgYi9saXNwL29sLWJpYnRleC5l bApAQCAtNTA3LDcgKzUwNyw3IEBAIEFSRywgd2hlbiBub24tbmlsLCBpcyBhIHVuaXZlcnNh bCBwcmVmaXggYXJndW1lbnQuICBTZWUKIGBvcmctb3Blbi1maWxlJyBmb3IgZGV0YWlscy4i CiAgIChvcmctbGluay1vcGVuLWFzLWZpbGUgcGF0aCBhcmcpKQogCi0oZGVmdW4gb3JnLWJp YnRleC1zdG9yZS1saW5rICgpCisoZGVmdW4gb3JnLWJpYnRleC1zdG9yZS1saW5rICgmb3B0 aW9uYWwgX2ludGVyYWN0aXZlPykKICAgIlN0b3JlIGEgbGluayB0byBhIEJpYlRlWCBlbnRy eS4iCiAgICh3aGVuIChlcSBtYWpvci1tb2RlICdiaWJ0ZXgtbW9kZSkKICAgICAobGV0KiAo KHNlYXJjaCAob3JnLWNyZWF0ZS1maWxlLXNlYXJjaC1pbi1iaWJ0ZXgpKQpkaWZmIC0tZ2l0 IGEvbGlzcC9vbC1kb2N2aWV3LmVsIGIvbGlzcC9vbC1kb2N2aWV3LmVsCmluZGV4IGIzMWYx Y2U1ZS4uMDkwN2RkZWUxIDEwMDY0NAotLS0gYS9saXNwL29sLWRvY3ZpZXcuZWwKKysrIGIv bGlzcC9vbC1kb2N2aWV3LmVsCkBAIC04Myw3ICs4Myw3IEBACiAgICAgICAoZXJyb3IgIk5v IHN1Y2ggZmlsZTogJXMiIHBhdGgpKQogICAgICh3aGVuIHBhZ2UgKGRvYy12aWV3LWdvdG8t cGFnZSBwYWdlKSkpKQogCi0oZGVmdW4gb3JnLWRvY3ZpZXctc3RvcmUtbGluayAoKQorKGRl ZnVuIG9yZy1kb2N2aWV3LXN0b3JlLWxpbmsgKCZvcHRpb25hbCBfaW50ZXJhY3RpdmU/KQog ICAiU3RvcmUgYSBsaW5rIHRvIGEgZG9jdmlldyBidWZmZXIuIgogICAod2hlbiAoZXEgbWFq b3ItbW9kZSAnZG9jLXZpZXctbW9kZSkKICAgICA7OyBUaGlzIGJ1ZmZlciBpcyBpbiBkb2Mt dmlldy1tb2RlCmRpZmYgLS1naXQgYS9saXNwL29sLWVzaGVsbC5lbCBiL2xpc3Avb2wtZXNo ZWxsLmVsCmluZGV4IDJjN2VjNmJlZi4uNTk1ZGQwZWUwIDEwMDY0NAotLS0gYS9saXNwL29s LWVzaGVsbC5lbAorKysgYi9saXNwL29sLWVzaGVsbC5lbApAQCAtNjAsNyArNjAsNyBAQCBm b2xsb3dlZCBieSBhIGNvbG9uLiIKICAgICAoaW5zZXJ0IGNvbW1hbmQpCiAgICAgKGVzaGVs bC1zZW5kLWlucHV0KSkpCiAKLShkZWZ1biBvcmctZXNoZWxsLXN0b3JlLWxpbmsgKCkKKyhk ZWZ1biBvcmctZXNoZWxsLXN0b3JlLWxpbmsgKCZvcHRpb25hbCBfaW50ZXJhY3RpdmU/KQog ICAiU3RvcmUgZXNoZWxsIGxpbmsuCiBXaGVuIG9wZW5lZCwgdGhlIGxpbmsgc3dpdGNoZXMg YmFjayB0byB0aGUgY3VycmVudCBlc2hlbGwgYnVmZmVyIGFuZAogdGhlIGN1cnJlbnQgd29y a2luZyBkaXJlY3RvcnkuIgpkaWZmIC0tZ2l0IGEvbGlzcC9vbC1ld3cuZWwgYi9saXNwL29s LWV3dy5lbAppbmRleCA0MGI4MjBkMmIuLmMxM2RiZjMzOSAxMDA2NDQKLS0tIGEvbGlzcC9v bC1ld3cuZWwKKysrIGIvbGlzcC9vbC1ld3cuZWwKQEAgLTYyLDcgKzYyLDcgQEAKICAgIk9w ZW4gVVJMIHdpdGggRXd3IGluIHRoZSBjdXJyZW50IGJ1ZmZlci4iCiAgIChld3cgdXJsKSkK IAotKGRlZnVuIG9yZy1ld3ctc3RvcmUtbGluayAoKQorKGRlZnVuIG9yZy1ld3ctc3RvcmUt bGluayAoJm9wdGlvbmFsIF9pbnRlcmFjdGl2ZT8pCiAgICJTdG9yZSBhIGxpbmsgdG8gdGhl IHVybCBvZiBhbiBFV1cgYnVmZmVyLiIKICAgKHdoZW4gKGVxIG1ham9yLW1vZGUgJ2V3dy1t b2RlKQogICAgIChvcmctbGluay1zdG9yZS1wcm9wcwpkaWZmIC0tZ2l0IGEvbGlzcC9vbC1n bnVzLmVsIGIvbGlzcC9vbC1nbnVzLmVsCmluZGV4IGUxMDVmZGIyYy4uYjllZTg2ODNmIDEw MDY0NAotLS0gYS9saXNwL29sLWdudXMuZWwKKysrIGIvbGlzcC9vbC1nbnVzLmVsCkBAIC0x MjMsNyArMTIzLDcgQEAgSWYgYG9yZy1zdG9yZS1saW5rJyB3YXMgY2FsbGVkIHdpdGggYSBw cmVmaXggYXJnIHRoZSBtZWFuaW5nIG9mCiAJICAgICAgKHVybC1lbmNvZGUtdXJsIG1lc3Nh Z2UtaWQpKQogICAgIChjb25jYXQgImdudXM6IiBncm91cCAiIyIgbWVzc2FnZS1pZCkpKQog Ci0oZGVmdW4gb3JnLWdudXMtc3RvcmUtbGluayAoKQorKGRlZnVuIG9yZy1nbnVzLXN0b3Jl LWxpbmsgKCZvcHRpb25hbCBfaW50ZXJhY3RpdmU/KQogICAiU3RvcmUgYSBsaW5rIHRvIGEg R251cyBmb2xkZXIgb3IgbWVzc2FnZS4iCiAgIChwY2FzZSBtYWpvci1tb2RlCiAgICAgKGBn bnVzLWdyb3VwLW1vZGUKZGlmZiAtLWdpdCBhL2xpc3Avb2wtaW5mby5lbCBiL2xpc3Avb2wt aW5mby5lbAppbmRleCAwZWRmOWExM2YuLjYwNjJjYWIzNCAxMDA2NDQKLS0tIGEvbGlzcC9v bC1pbmZvLmVsCisrKyBiL2xpc3Avb2wtaW5mby5lbApAQCAtNTAsNyArNTAsNyBAQAogICAg ICAgICAgICAgICAgICAgICAgICAgIDppbnNlcnQtZGVzY3JpcHRpb24gIydvcmctaW5mby1k ZXNjcmlwdGlvbi1hcy1jb21tYW5kKQogCiA7OyBJbXBsZW1lbnRhdGlvbgotKGRlZnVuIG9y Zy1pbmZvLXN0b3JlLWxpbmsgKCkKKyhkZWZ1biBvcmctaW5mby1zdG9yZS1saW5rICgmb3B0 aW9uYWwgX2ludGVyYWN0aXZlPykKICAgIlN0b3JlIGEgbGluayB0byBhbiBJbmZvIGZpbGUg YW5kIG5vZGUuIgogICAod2hlbiAoZXEgbWFqb3ItbW9kZSAnSW5mby1tb2RlKQogICAgIChs ZXQgKChsaW5rIChjb25jYXQgImluZm86IgpkaWZmIC0tZ2l0IGEvbGlzcC9vbC1pcmMuZWwg Yi9saXNwL29sLWlyYy5lbAppbmRleCA3OGM0ODg0YjAuLmIyNjNlNTJkYiAxMDA2NDQKLS0t IGEvbGlzcC9vbC1pcmMuZWwKKysrIGIvbGlzcC9vbC1pcmMuZWwKQEAgLTEwMyw3ICsxMDMs NyBAQCBhdHRyaWJ1dGVzIHRoYXQgYXJlIGZvdW5kLiIKICAgICBwYXJ0cykpCiAKIDs7OyMj I2F1dG9sb2FkCi0oZGVmdW4gb3JnLWlyYy1zdG9yZS1saW5rICgpCisoZGVmdW4gb3JnLWly Yy1zdG9yZS1saW5rICgmb3B0aW9uYWwgX2ludGVyYWN0aXZlPykKICAgIkRpc3BhdGNoIHRv IHRoZSBhcHByb3ByaWF0ZSBmdW5jdGlvbiB0byBzdG9yZSBhIGxpbmsgdG8gYW4gSVJDIHNl c3Npb24uIgogICAoY29uZAogICAgKChlcSBtYWpvci1tb2RlICdlcmMtbW9kZSkKZGlmZiAt LWdpdCBhL2xpc3Avb2wtbWFuLmVsIGIvbGlzcC9vbC1tYW4uZWwKaW5kZXggZTNmMTM4MTVl Li40MmFhY2VhODEgMTAwNjQ0Ci0tLSBhL2xpc3Avb2wtbWFuLmVsCisrKyBiL2xpc3Avb2wt bWFuLmVsCkBAIC04Miw3ICs4Miw3IEBAIG1hdGNoZWQgc3RyaW5ncyBpbiBtYW4gYnVmZmVy LiIKICAgICAgICAgICAgIChzZXQtd2luZG93LXBvaW50IHdpbmRvdyBwb2ludCkKICAgICAg ICAgICAgIChzZXQtd2luZG93LXN0YXJ0IHdpbmRvdyBwb2ludCkpKSkpKSkKIAotKGRlZnVu IG9yZy1tYW4tc3RvcmUtbGluayAoKQorKGRlZnVuIG9yZy1tYW4tc3RvcmUtbGluayAoJm9w dGlvbmFsIF9pbnRlcmFjdGl2ZT8pCiAgICJTdG9yZSBhIGxpbmsgdG8gYSBSRUFETUUgZmls ZS4iCiAgICh3aGVuIChtZW1xIG1ham9yLW1vZGUgJyhNYW4tbW9kZSB3b21hbi1tb2RlKSkK ICAgICA7OyBUaGlzIGlzIGEgbWFuIHBhZ2UsIHdlIGRvIG1ha2UgdGhpcyBsaW5rCmRpZmYg LS1naXQgYS9saXNwL29sLW1oZS5lbCBiL2xpc3Avb2wtbWhlLmVsCmluZGV4IDEwNmNmZWRj OS4uYTMyNDgxMzI0IDEwMDY0NAotLS0gYS9saXNwL29sLW1oZS5lbAorKysgYi9saXNwL29s LW1oZS5lbApAQCAtODAsNyArODAsNyBAQCBzdXBwb3J0ZWQgYnkgTUgtRS4iCiAob3JnLWxp bmstc2V0LXBhcmFtZXRlcnMgIm1oZSIgOmZvbGxvdyAjJ29yZy1taGUtb3BlbiA6c3RvcmUg IydvcmctbWhlLXN0b3JlLWxpbmspCiAKIDs7IEltcGxlbWVudGF0aW9uCi0oZGVmdW4gb3Jn LW1oZS1zdG9yZS1saW5rICgpCisoZGVmdW4gb3JnLW1oZS1zdG9yZS1saW5rICgmb3B0aW9u YWwgX2ludGVyYWN0aXZlPykKICAgIlN0b3JlIGEgbGluayB0byBhbiBNSC1FIGZvbGRlciBv ciBtZXNzYWdlLiIKICAgKHdoZW4gKG9yIChlcSBtYWpvci1tb2RlICdtaC1mb2xkZXItbW9k ZSkKIAkgICAgKGVxIG1ham9yLW1vZGUgJ21oLXNob3ctbW9kZSkpCmRpZmYgLS1naXQgYS9s aXNwL29sLXJtYWlsLmVsIGIvbGlzcC9vbC1ybWFpbC5lbAppbmRleCBmNjAzMWFiNTIuLmYx Zjc1M2I2ZiAxMDA2NDQKLS0tIGEvbGlzcC9vbC1ybWFpbC5lbAorKysgYi9saXNwL29sLXJt YWlsLmVsCkBAIC01MSw3ICs1MSw3IEBACiAJCQkgOnN0b3JlICMnb3JnLXJtYWlsLXN0b3Jl LWxpbmspCiAKIDs7IEltcGxlbWVudGF0aW9uCi0oZGVmdW4gb3JnLXJtYWlsLXN0b3JlLWxp bmsgKCkKKyhkZWZ1biBvcmctcm1haWwtc3RvcmUtbGluayAoJm9wdGlvbmFsIF9pbnRlcmFj dGl2ZT8pCiAgICJTdG9yZSBhIGxpbmsgdG8gYW4gUm1haWwgZm9sZGVyIG9yIG1lc3NhZ2Uu IgogICAod2hlbiAob3IgKGVxIG1ham9yLW1vZGUgJ3JtYWlsLW1vZGUpCiAJICAgIChlcSBt YWpvci1tb2RlICdybWFpbC1zdW1tYXJ5LW1vZGUpKQpkaWZmIC0tZ2l0IGEvbGlzcC9vbC5l bCBiL2xpc3Avb2wuZWwKaW5kZXggY2Y1OWM4NTU2Li41OWI4N2ViYTcgMTAwNjQ0Ci0tLSBh L2xpc3Avb2wuZWwKKysrIGIvbGlzcC9vbC5lbApAQCAtNjMsNyArNjMsNiBAQAogKGRlY2xh cmUtZnVuY3Rpb24gb3JnLWZpbmQtcHJvcGVydHkgIm9yZyIgKHByb3BlcnR5ICZvcHRpb25h bCB2YWx1ZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZ2V0LWhlYWRpbmcgIm9yZyIgKCZv cHRpb25hbCBuby10YWdzIG5vLXRvZG8gbm8tcHJpb3JpdHkgbm8tY29tbWVudCkpCiAoZGVj bGFyZS1mdW5jdGlvbiBvcmctaWQtZmluZC1pZC1maWxlICJvcmctaWQiIChpZCkpCi0oZGVj bGFyZS1mdW5jdGlvbiBvcmctaWQtc3RvcmUtbGluayAib3JnLWlkIiAoKSkKIChkZWNsYXJl LWZ1bmN0aW9uIG9yZy1pbnNlcnQtaGVhZGluZyAib3JnIiAoJm9wdGlvbmFsIGFyZyBpbnZp c2libGUtb2sgdG9wKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1sb2FkLW1vZHVsZXMtbWF5 YmUgIm9yZyIgKCZvcHRpb25hbCBmb3JjZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctbWFy ay1yaW5nLXB1c2ggIm9yZyIgKCZvcHRpb25hbCBwb3MgYnVmZmVyKSkKQEAgLTgxNSw2ICs4 MTQsNjAgQEAgc3BlYy4iCiAgIChvcmctd2l0aC1wb2ludC1hdCAoY2FyIHJlZ2lvbikKICAg ICAobm90IChvcmctaW4tcmVnZXhwIG9yZy1saW5rLWFueS1yZSkpKSkKIAorKGRlZnVuIG9y Zy1saW5rLS10cnktbGluay1zdG9yZS1mdW5jdGlvbnMgKGludGVyYWN0aXZlPykKKyAgIlRy eSBzdG9yaW5nIGV4dGVybmFsIGxpbmtzLCBwcm9tcHRpbmcgaWYgbW9yZSB0aGFuIG9uZSBp cyBwb3NzaWJsZS4KKworRWFjaCBmdW5jdGlvbiByZXR1cm5lZCBieSBgb3JnLXN0b3JlLWxp bmstZnVuY3Rpb25zJyBpcyBjYWxsZWQgaW4KK3R1cm4uICBJZiBtdWx0aXBsZSBmdW5jdGlv bnMgcmV0dXJuIG5vbi1uaWwsIHByb21wdCBmb3Igd2hpY2gKK2xpbmsgc2hvdWxkIGJlIHN0 b3JlZC4KKworQXJndW1lbnQgSU5URVJBQ1RJVkU/IGluZGljYXRlcyB3aGV0aGVyIGBvcmct c3RvcmUtbGluaycgd2FzCitjYWxsZWQgaW50ZXJhY3RpdmVseSBhbmQgaXMgcGFzc2VkIHRv IHRoZSBsaW5rIHN0b3JlIGZ1bmN0aW9ucy4KKworUmV0dXJuIHQgd2hlbiBhIGxpbmsgaGFz IGJlZW4gc3RvcmVkIGluIGBvcmctbGluay1zdG9yZS1wcm9wcycuIgorICAobGV0ICgocmVz dWx0cy1hbGlzdCBuaWwpKQorICAgIChkb2xpc3QgKGYgKG9yZy1zdG9yZS1saW5rLWZ1bmN0 aW9ucykpCisgICAgICAod2hlbiAoY29uZGl0aW9uLWNhc2UgbmlsCisgICAgICAgICAgICAg ICAgKGZ1bmNhbGwgZiBpbnRlcmFjdGl2ZT8pCisgICAgICAgICAgICAgIDs7IEZJWE1FOiBU aGUgc3RvcmUgZnVuY3Rpb24gdXNlZCAoPCBPcmcgOS43KSB0byBhY2NlcHQKKyAgICAgICAg ICAgICAgOzsgbm8gYXJndW1lbnRzOyBwcm92aWRlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg c3VwcG9ydAorICAgICAgICAgICAgICA7OyBmb3IgdGhlbS4KKyAgICAgICAgICAgICAgKHdy b25nLW51bWJlci1vZi1hcmd1bWVudHMKKyAgICAgICAgICAgICAgIChmdW5jYWxsIGYpKSkK KyAgICAgICAgOzsgRklYTUU6IHJldHVybiB2YWx1ZSBpcyBub3QgbGluaydzIHBsaXN0LCBz byB3ZSBzdG9yZSB0aGUKKyAgICAgICAgOzsgbmV3IHZhbHVlIGJlZm9yZSBpdCBpcyBtb2Rp ZmllZC4gIEl0IHdvdWxkIGJlIGNsZWFuZXIgdG8KKyAgICAgICAgOzsgYXNrIHN0b3JlIGxp bmsgZnVuY3Rpb25zIHRvIHJldHVybiB0aGUgcGxpc3QgaW5zdGVhZC4KKyAgICAgICAgKHB1 c2ggKGNvbnMgZiAoY29weS1zZXF1ZW5jZSBvcmctc3RvcmUtbGluay1wbGlzdCkpCisgICAg ICAgICAgICAgIHJlc3VsdHMtYWxpc3QpKSkKKyAgICAocGNhc2UgcmVzdWx0cy1hbGlzdAor ICAgICAgKGBuaWwgbmlsKQorICAgICAgKGAoKCxfIC4gLF8pKSB0KQk7c2luZ2xlIGNob2lj ZTogbm90aGluZyB0byBkbworICAgICAgKGAoKCxuYW1lIC4gLF8pIC4gLF8pCisgICAgICAg OzsgUmVpbnN0YXRlIGxpbmsgcGxpc3QgYXNzb2NpYXRlZCB0byB0aGUgY2hvc2VuCisgICAg ICAgOzsgZnVuY3Rpb24uCisgICAgICAgKGFwcGx5ICMnb3JnLWxpbmstc3RvcmUtcHJvcHMK KyAgICAgICAgICAgICAgKGNkciAoYXNzb2Mtc3RyaW5nCisgICAgICAgICAgICAgICAgICAg IChjb21wbGV0aW5nLXJlYWQKKyAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIlN0b3Jl IGxpbmsgd2l0aCAoZGVmYXVsdCAlcyk6ICIgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAg IChtYXBjYXIgIydjYXIgcmVzdWx0cy1hbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgIG5p bCB0IG5pbCBuaWwgKHN5bWJvbC1uYW1lIG5hbWUpKQorICAgICAgICAgICAgICAgICAgICBy ZXN1bHRzLWFsaXN0KSkpCisgICAgICAgdCkpKSkKKworKGRlZnVuIG9yZy1saW5rLS1hZGQt dG8tc3RvcmVkLWxpbmtzIChsaW5rIGRlc2MpCisgICJBZGQgTElOSyB0byBgb3JnLXN0b3Jl ZC1saW5rcycgd2l0aCBkZXNjcmlwdGlvbiBERVNDLiIKKyAgKGNvbmQKKyAgICgobm90ICht ZW1iZXIgKGxpc3QgbGluayBkZXNjKSBvcmctc3RvcmVkLWxpbmtzKSkKKyAgICAocHVzaCAo bGlzdCBsaW5rIGRlc2MpIG9yZy1zdG9yZWQtbGlua3MpCisgICAgKG1lc3NhZ2UgIlN0b3Jl ZDogJXMiIChvciBkZXNjIGxpbmspKSkKKyAgICgoZXF1YWwgKGxpc3QgbGluayBkZXNjKSAo Y2FyIG9yZy1zdG9yZWQtbGlua3MpKQorICAgIChtZXNzYWdlICJUaGlzIGxpbmsgaGFzIGFs cmVhZHkgYmVlbiBzdG9yZWQiKSkKKyAgICh0CisgICAgKHNldHEgb3JnLXN0b3JlZC1saW5r cworICAgICAgICAgIChkZWxldGUgKGxpc3QgbGluayBkZXNjKSBvcmctc3RvcmVkLWxpbmtz KSkKKyAgICAocHVzaCAobGlzdCBsaW5rIGRlc2MpIG9yZy1zdG9yZWQtbGlua3MpCisgICAg KG1lc3NhZ2UgIkxpbmsgbW92ZWQgdG8gZnJvbnQ6ICVzIiAob3IgZGVzYyBsaW5rKSkpKSkK KwogDAogOzs7IFB1YmxpYyBBUEkKIApAQCAtMTI4MCw3ICsxMzMzLDExIEBAIHJlc3BlY3Rz IGJ1ZmZlciBuYXJyb3dpbmcuIgogCSAgICh5ZXMtb3Itbm8tcCAiTm8gbWF0Y2ggLSBjcmVh dGUgdGhpcyBhcyBhIG5ldyBoZWFkaW5nPyAiKSkKICAgICAgIChnb3RvLWNoYXIgKHBvaW50 LW1heCkpCiAgICAgICAodW5sZXNzIChib2xwKSAobmV3bGluZSkpCi0gICAgICAob3JnLWlu c2VydC1oZWFkaW5nIG5pbCB0IHQpCisgICAgICA7OyBGaW5kIGFwcHJvcHJpYXRlIGxldmVs IGZvciBuZXcgaGVhZGluZworICAgICAgKGxldCAoKGxldmVsIChzYXZlLWV4Y3Vyc2lvbgor ICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAg ICAgICAgICAgICAgICgrIDEgKG9yIChvcmctY3VycmVudC1sZXZlbCkgMCkpKSkpCisgICAg ICAgIChvcmctaW5zZXJ0LWhlYWRpbmcgbmlsIHQgbGV2ZWwpKQogICAgICAgKGluc2VydCBz ICJcbiIpCiAgICAgICAoZm9yd2FyZC1saW5lIC0xKSkKICAgICAgOzsgT25seSBoZWFkbGlu ZXMgYXJlIGxvb2tlZCBhZnRlci4gIE5vIG5lZWQgdG8gcHJvY2VzcwpAQCAtMTMzMiw2ICsx Mzg5LDY2IEBAIHByaW9yaXR5IGNvb2tpZSBvciB0YWcuIgogCSAgKG9yZy1saW5rLS1ub3Jt YWxpemUtc3RyaW5nCiAJICAgKG9yIHN0cmluZyAob3JnLWdldC1oZWFkaW5nIHQgdCB0IHQp KSkpKQogCisoZGVmdW4gb3JnLWxpbmstcHJlY2lzZS1saW5rLXRhcmdldCAoJm9wdGlvbmFs IHJlbGF0aXZlLXRvKQorICAiRGV0ZXJtaW5lIHNlYXJjaCBzdHJpbmcgYW5kIGRlc2NyaXB0 aW9uIGZvciBzdG9yaW5nIGEgbGluay4KKworSWYgYSBzZWFyY2ggc3RyaW5nIChzZWUgJ29y Zy1saW5rLXNlYXJjaCcpIGlzIGZvdW5kLCByZXR1cm4gY29ucworY2VsbCAoU0VBUkNILVNU UklORyAuIERFU0MpLiAgT3RoZXJ3aXNlLCByZXR1cm4gbmlsLgorCitJZiB0aGVyZSBpcyBh biBhY3RpdmUgcmVnaW9uLCB0aGUgY29udGVudHMgKG9yIGEgcGFydCBvZiBpdCwgc2VlCitg b3JnLWxpbmstY29udGV4dC1mb3ItZmlsZXMnKSBpcyB1c2VkIGFzIHRoZSBzZWFyY2ggc3Ry aW5nLgorCitJbiBPcmcgYnVmZmVycywgaWYgcG9pbnQgaXMgYXQgYSBuYW1lZCBlbGVtZW50 IChzdWNoIGFzIGEgc291cmNlCitibG9jayksIHRoZSBuYW1lIGlzIHVzZWQgZm9yIHRoZSBz ZWFyY2ggc3RyaW5nLiAgSWYgYXQgYSBoZWFkaW5nLAoraXRzIENVU1RPTV9JRCBpcyB1c2Vk IHRvIGZvcm0gYSBzZWFyY2ggc3RyaW5nIG9mIHRoZSBmb3JtCitcIiNpZFwiLCBpZiBwcmVz ZW50LCBvdGhlcndpc2UgdGhlIGN1cnJlbnQgaGVhZGluZyB0ZXh0IGlzIHVzZWQKK2luIHRo ZSBmb3JtIFwiKkhlYWRpbmdcIi4KKworSWYgbm9uZSBvZiB0aG9zZSBmaW5kcyBhIHN1aXRh YmxlIHNlYXJjaCBzdHJpbmcsIHRoZSBjdXJyZW50IGxpbmUKK2lzIHVzZWQgYXMgdGhlIHNl YXJjaCBzdHJpbmcuCisKK1RoZSBkZXNjcmlwdGlvbiBERVNDIGlzIG5pbCAobWVhbmluZyB0 aGUgdXNlciB3aWxsIGJlIHByb21wdGVkCitmb3IgYSBkZXNjcmlwdGlvbiB3aGVuIGluc2Vy dGluZyB0aGUgbGluaykgZm9yIHNlYXJjaCBzdHJpbmdzCitiYXNlZCBvbiBhIHJlZ2lvbiBv ciB0aGUgY3VycmVudCBsaW5lLiAgRm9yIG90aGVyIGNhc2VzLCBERVNDIGlzCithIGNsZWFu ZWQtdXAgdmVyc2lvbiBvZiB0aGUgbmFtZSBvciBoZWFkaW5nIGF0IHBvaW50LgorCitPcHRp b25hbCBhcmd1bWVudCBSRUxBVElWRS1UTyBzcGVjaWZpZXMgdGhlIGJ1ZmZlciBwb3NpdGlv biB3aGVyZQordGhlIHNlYXJjaCB3aWxsIHN0YXJ0IGZyb20uICBJZiB0aGUgc2VhcmNoIHRh cmdldCB0aGF0IHdvdWxkIGJlCityZXR1cm5lZCBpcyBhIGhlYWRpbmcgYmVmb3JlIG9yIGF0 IHRoaXMgbG9jYXRpb24sIHJldHVybiBuaWwgdG8KK2F2b2lkIHVubmVjZXNzYXJ5IHNlYXJj aCBzdHJpbmdzIChmb3IgZXhhbXBsZSwgd2hlbiB1c2luZyBzZWFyY2gKK3N0cmluZ3MgdG8g ZmluZCB0YXJnZXRzIHdpdGhpbiBvcmctaWQgbGlua3MpLiIKKyAgKGxldCAoKHJlc3VsdAor ICAgICAgICAgKGNvbmQKKyAgICAgICAgICAoKGRlcml2ZWQtbW9kZS1wICdvcmctbW9kZSkK KyAgICAgICAgICAgKGxldCogKChlbGVtZW50IChvcmctZWxlbWVudC1hdC1wb2ludCkpCisg ICAgICAgICAgICAgICAgICAobmFtZSAob3JnLWVsZW1lbnQtcHJvcGVydHkgOm5hbWUgZWxl bWVudCkpCisgICAgICAgICAgICAgICAgICAoaGVhZGluZyAob3JnLWVsZW1lbnQtbGluZWFn ZSBlbGVtZW50ICdoZWFkbGluZSB0KSkKKyAgICAgICAgICAgICAgICAgIChjdXN0b20taWQg KG9yZy1lbnRyeS1nZXQgbmlsICJDVVNUT01fSUQiKSkpCisgICAgICAgICAgICAgKGNvbmQK KyAgICAgICAgICAgICAgKChsZXQgKChyZWdpb24gKG9yZy1saW5rLS1jb250ZXh0LWZyb20t cmVnaW9uKSkpCisgICAgICAgICAgICAgICAgIChhbmQgcmVnaW9uIChjb25zIChvcmctbGlu ay0tbm9ybWFsaXplLXN0cmluZyByZWdpb24gdCkgbmlsKSkpKQorICAgICAgICAgICAgICAo bmFtZQorICAgICAgICAgICAgICAgKGNvbnMgbmFtZSBuYW1lKSkKKyAgICAgICAgICAgICAg KChvcmctYmVmb3JlLWZpcnN0LWhlYWRpbmctcCkKKyAgICAgICAgICAgICAgIChjb25zIChv cmctbGluay0tbm9ybWFsaXplLXN0cmluZyAob3JnLWN1cnJlbnQtbGluZS1zdHJpbmcpIHQp IG5pbCkpCisgICAgICAgICAgICAgICgoYW5kIGhlYWRpbmcKKyAgICAgICAgICAgICAgICAg ICAgKD4gKG9yZy1lbGVtZW50LWJlZ2luIGhlYWRpbmcpIChvciByZWxhdGl2ZS10byAwKSkp CisgICAgICAgICAgICAgICAoY29ucyAoaWYgY3VzdG9tLWlkIChjb25jYXQgIiMiIGN1c3Rv bS1pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1saW5rLWhlYWRpbmctc2VhcmNo LXN0cmluZykpCisgICAgICAgICAgICAgICAgICAgICAob3JnLWxpbmstLW5vcm1hbGl6ZS1z dHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAob3JnLWdldC1oZWFkaW5nIHQgdCB0IHQp KSkpKSkpCisKKyAgICAgICAgICA7OyBOb3QgaW4gYW4gb3JnLW1vZGUgYnVmZmVyCisgICAg ICAgICAgKHQKKyAgICAgICAgICAgKGNvbnMgKG9yZy1saW5rLS1ub3JtYWxpemUtc3RyaW5n CisgICAgICAgICAgICAgICAgICAob3IgKG9yZy1saW5rLS1jb250ZXh0LWZyb20tcmVnaW9u KSAob3JnLWN1cnJlbnQtbGluZS1zdHJpbmcpKQorICAgICAgICAgICAgICAgICAgdCkKKyAg ICAgICAgICAgICAgICAgbmlsKSkpKSkKKworICAgIDs7IE9ubHkgdXNlIHNlYXJjaCBvcHRp b24gaWYgdGhlcmUgaXMgc29tZSB0ZXh0LgorICAgICh3aGVuIChvcmctc3RyaW5nLW53LXAg KGNhciByZXN1bHQpKQorICAgICAgcmVzdWx0KSkpCisKIChkZWZ1biBvcmctbGluay1vcGVu LWFzLWZpbGUgKHBhdGggaW4tZW1hY3MpCiAgICJQcmV0ZW5kIFBBVEggaXMgYSBmaWxlIG5h bWUgYW5kIG9wZW4gaXQuCiAKQEAgLTE0MDQsNyArMTUyMSw3IEBAIFBBVEggaXMgYSBzeW1i b2wgbmFtZSwgYXMgYSBzdHJpbmcuIgogICAgICgoYW5kIChwcmVkIGJvdW5kcCkgdmFyaWFi bGUpIChkZXNjcmliZS12YXJpYWJsZSB2YXJpYWJsZSkpCiAgICAgKG5hbWUgKHVzZXItZXJy b3IgIlVua25vd24gZnVuY3Rpb24gb3IgdmFyaWFibGU6ICVzIiBuYW1lKSkpKQogCi0oZGVm dW4gb3JnLWxpbmstLXN0b3JlLWhlbHAgKCkKKyhkZWZ1biBvcmctbGluay0tc3RvcmUtaGVs cCAoJm9wdGlvbmFsIF9pbnRlcmFjdGl2ZT8pCiAgICJTdG9yZSBcImhlbHBcIiB0eXBlIGxp bmsuIgogICAod2hlbiAoZXEgbWFqb3ItbW9kZSAnaGVscC1tb2RlKQogICAgIChsZXQgKChz eW1ib2wKQEAgLTE1MzksNyArMTY1NiwxMSBAQCBwcmVmaXggQVJHIGZvcmNlcyBzdG9yaW5n IGEgbGluayBmb3IgZWFjaCBsaW5lIGluIHRoZQogYWN0aXZlIHJlZ2lvbi4KIAogQXNzdW1l IHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgaW50ZXJhY3RpdmVseSBpZiBJTlRFUkFDVElWRT8g aXMKLW5vbi1uaWwuIgorbm9uLW5pbC4KKworSW4gT3JnIGJ1ZmZlcnMsIGFuIGFkZGl0aW9u YWwgXCJodW1hbi1yZWFkYWJsZVwiIHNpbXBsZSBmaWxlIGxpbmsKK2lzIHN0b3JlZCBhcyBh biBhbHRlcm5hdGl2ZSB0byBwZXJzaXN0ZW50IG9yZy1pZCBvciBvdGhlciBsaW5rcywKK2lm IHRoZSBjdXJyZW50IGhlYWRpbmcgaGFzIGEgQ1VTVE9NX0lEIHByb3BlcnR5LiIKICAgKGlu dGVyYWN0aXZlICJQXG5wIikKICAgKG9yZy1sb2FkLW1vZHVsZXMtbWF5YmUpCiAgIChpZiAo YW5kIChlcXVhbCBhcmcgJyg2NCkpIChvcmctcmVnaW9uLWFjdGl2ZS1wKSkKQEAgLTE1NTQs MzYgKzE2NzUsMTkgQEAgbm9uLW5pbC4iCiAJICAgIChtb3ZlLWJlZ2lubmluZy1vZi1saW5l IDIpCiAJICAgIChzZXQtbWFyayAocG9pbnQpKSkpKQogICAgIChzZXRxIG9yZy1zdG9yZS1s aW5rLXBsaXN0IG5pbCkKLSAgICAobGV0IChsaW5rIGNwbHR4dCBkZXNjIHNlYXJjaCBjdXN0 b20taWQgYWdlbmRhLWxpbmspIDs7IGRlc2NyaXB0aW9uCisgICAgOzsgTmVnYXRlIGBvcmct Y29udGV4dC1pbi1maWxlLWxpbmtzJyB3aGVuIGdpdmVuIGEgc2luZ2xlIHVuaXZlcnNhbCBh cmcuCisgICAgKGxldCAoKG9yZy1saW5rLWNvbnRleHQtZm9yLWZpbGVzIChvcmcteG9yIG9y Zy1saW5rLWNvbnRleHQtZm9yLWZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChlcXVhbCBhcmcgJyg0KSkpKQorICAgICAgICAgIGxpbmsg Y3BsdHh0IGRlc2Mgc2VhcmNoIGFnZW5kYS1saW5rKSA7OyBkZXNjcmlwdGlvbgogICAgICAg KGNvbmQKICAgICAgICA7OyBTdG9yZSBhIGxpbmsgdXNpbmcgYW4gZXh0ZXJuYWwgbGluayB0 eXBlLCBpZiBhbnkgZnVuY3Rpb24gaXMKLSAgICAgICA7OyBhdmFpbGFibGUuIElmIG1vcmUg dGhhbiBvbmUgY2FuIGdlbmVyYXRlIGEgbGluayBmcm9tIGN1cnJlbnQKLSAgICAgICA7OyBs b2NhdGlvbiwgYXNrIHdoaWNoIG9uZSB0byB1c2UuCisgICAgICAgOzsgYXZhaWxhYmxlLCB1 bmxlc3MgZXh0ZXJuYWwgbGluayB0eXBlcyBhcmUgc2tpcHBlZCBmb3IgdGhpcworICAgICAg IDs7IGNhbGwgdXNpbmcgdHdvIHVuaXZlcnNhbCBhcmdzLiAgSWYgbW9yZSB0aGFuIG9uZSBm dW5jdGlvbgorICAgICAgIDs7IGNhbiBnZW5lcmF0ZSBhIGxpbmsgZnJvbSBjdXJyZW50IGxv Y2F0aW9uLCBhc2sgdGhlIHVzZXIKKyAgICAgICA7OyB3aGljaCBvbmUgdG8gdXNlLgogICAg ICAgICgoYW5kIChub3QgKGVxdWFsIGFyZyAnKDE2KSkpCi0JICAgICAobGV0ICgocmVzdWx0 cy1hbGlzdCBuaWwpKQotCSAgICAgICAoZG9saXN0IChmIChvcmctc3RvcmUtbGluay1mdW5j dGlvbnMpKQotCQkgKHdoZW4gKGZ1bmNhbGwgZikKLQkJICAgOzsgWFhYOiByZXR1cm4gdmFs dWUgaXMgbm90IGxpbmsncyBwbGlzdCwgc28gd2UKLQkJICAgOzsgc3RvcmUgdGhlIG5ldyB2 YWx1ZSBiZWZvcmUgaXQgaXMgbW9kaWZpZWQuICBJdAotCQkgICA7OyB3b3VsZCBiZSBjbGVh bmVyIHRvIGFzayBzdG9yZSBsaW5rIGZ1bmN0aW9ucyB0bwotCQkgICA7OyByZXR1cm4gdGhl IHBsaXN0IGluc3RlYWQuCi0JCSAgIChwdXNoIChjb25zIGYgKGNvcHktc2VxdWVuY2Ugb3Jn LXN0b3JlLWxpbmstcGxpc3QpKQotCQkJIHJlc3VsdHMtYWxpc3QpKSkKLQkgICAgICAgKHBj YXNlIHJlc3VsdHMtYWxpc3QKLQkJIChgbmlsIG5pbCkKLQkJIChgKCgsXyAuICxfKSkgdCkJ O3NpbmdsZSBjaG9pY2U6IG5vdGhpbmcgdG8gZG8KLQkJIChgKCgsbmFtZSAuICxfKSAuICxf KQotCQkgIDs7IFJlaW5zdGF0ZSBsaW5rIHBsaXN0IGFzc29jaWF0ZWQgdG8gdGhlIGNob3Nl bgotCQkgIDs7IGZ1bmN0aW9uLgotCQkgIChhcHBseSAjJ29yZy1saW5rLXN0b3JlLXByb3Bz Ci0JCQkgKGNkciAoYXNzb2Mtc3RyaW5nCi0JCQkgICAgICAgKGNvbXBsZXRpbmctcmVhZAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJTdG9yZSBsaW5rIHdp dGggKGRlZmF1bHQgJXMpOiAiIG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChtYXBjYXIgIydjYXIgcmVzdWx0cy1hbGlzdCkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmlsIHQgbmlsIG5pbCAoc3ltYm9sLW5hbWUgbmFtZSkpCi0JCQkgICAg ICAgcmVzdWx0cy1hbGlzdCkpKQotCQkgIHQpKSkpCi0JKHNldHEgbGluayAocGxpc3QtZ2V0 IG9yZy1zdG9yZS1saW5rLXBsaXN0IDpsaW5rKSkKKyAgICAgICAgICAgICAob3JnLWxpbmst LXRyeS1saW5rLXN0b3JlLWZ1bmN0aW9ucyBpbnRlcmFjdGl2ZT8pKQorICAgICAgICAoc2V0 cSBsaW5rIChwbGlzdC1nZXQgb3JnLXN0b3JlLWxpbmstcGxpc3QgOmxpbmspKQogICAgICAg ICA7OyBJZiBzdG9yZSBmdW5jdGlvbiBhY3R1YWxseSBzZXQgYDpkZXNjcmlwdGlvbicgcHJv cGVydHksIHVzZQogICAgICAgICA7OyBpdCwgZXZlbiBpZiBpdCBpcyBuaWwuICBPdGhlcndp c2UsIGZhbGxiYWNrIHRvIG5pbCAoYXNrIHVzZXIpLgogCShzZXRxIGRlc2MgKHBsaXN0LWdl dCBvcmctc3RvcmUtbGluay1wbGlzdCA6ZGVzY3JpcHRpb24pKSkKQEAgLTE2MzQsNiArMTcz OCw3IEBAIG5vbi1uaWwuIgogCSAgICAob3JnLXdpdGgtcG9pbnQtYXQgbQogCSAgICAgIChz ZXRxIGFnZW5kYS1saW5rIChvcmctc3RvcmUtbGluayBuaWwgaW50ZXJhY3RpdmU/KSkpKSkp CiAKKyAgICAgICA7OyBDYWxlbmRhciBtb2RlCiAgICAgICAgKChlcSBtYWpvci1tb2RlICdj YWxlbmRhci1tb2RlKQogCShsZXQgKChjZCAoY2FsZW5kYXItY3Vyc29yLXRvLWRhdGUpKSkK IAkgIChzZXRxIGxpbmsKQEAgLTE2NDIsNiArMTc0Nyw3IEBAIG5vbi1uaWwuIgogCQkgKG9y Zy1lbmNvZGUtdGltZSAwIDAgMCAobnRoIDEgY2QpIChudGggMCBjZCkgKG50aCAyIGNkKSkp KQogCSAgKG9yZy1saW5rLXN0b3JlLXByb3BzIDp0eXBlICJjYWxlbmRhciIgOmRhdGUgY2Qp KSkKIAorICAgICAgIDs7IEltYWdlIG1vZGUKICAgICAgICAoKGVxIG1ham9yLW1vZGUgJ2lt YWdlLW1vZGUpCiAJKHNldHEgY3BsdHh0IChjb25jYXQgImZpbGU6IgogCQkJICAgICAoYWJi cmV2aWF0ZS1maWxlLW5hbWUgYnVmZmVyLWZpbGUtbmFtZSkpCkBAIC0xNjU5LDE1ICsxNzY1 LDIyIEBAIG5vbi1uaWwuIgogCSAgKHNldHEgY3BsdHh0IChjb25jYXQgImZpbGU6IiBmaWxl KQogCQlsaW5rIGNwbHR4dCkpKQogCisgICAgICAgOzsgVHJ5IGBvcmctY3JlYXRlLWZpbGUt c2VhcmNoLWZ1bmN0aW9uc2AuICBJZiBhbnkgYXJlCisgICAgICAgOzsgc3VjY2Vzc2Z1bCwg Y3JlYXRlIGEgZmlsZSBsaW5rIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciB3aXRoCisgICAgICAg OzsgdGhlIHByb3ZpZGVkIHNlYXJjaCBzdHJpbmcuICAoc2V0cyBgbGlua2AgYW5kIGBjcGx0 eHRgIHRvCisgICAgICAgOzsgdGhlIHNhbWUgdGhpbmc7IGl0IGxvb2tzIGxpa2UgdGhlIGlu dGVudGlvbiBvcmlnaW5hbGx5IHdhcworICAgICAgIDs7IHRoYXQgY3BsdHh0IHdhcyBhIGRl c2NyaXB0aW9uLCB3aGljaCBtaWdodCBoYXZlIGJlZW4gc2V0IGJ5CisgICAgICAgOzsgdGhl IHNlYXJjaC1mdW5jdGlvbiAocmVtb3ZlZCBpbiBzd2l0Y2ggdG8gbGV4aWNhbCBiaW5kaW5n KSkuCiAgICAgICAgKChzZXRxIHNlYXJjaCAocnVuLWhvb2std2l0aC1hcmdzLXVudGlsLXN1 Y2Nlc3MKIAkJICAgICAgJ29yZy1jcmVhdGUtZmlsZS1zZWFyY2gtZnVuY3Rpb25zKSkKIAko c2V0cSBsaW5rIChjb25jYXQgImZpbGU6IiAoYWJicmV2aWF0ZS1maWxlLW5hbWUgYnVmZmVy LWZpbGUtbmFtZSkKIAkJCSAgICI6OiIgc2VhcmNoKSkKIAkoc2V0cSBjcGx0eHQgKG9yIGxp bmspKSkgOzsgZGVzY3JpcHRpb24KIAorICAgICAgIDs7IE1haW4gbG9naWMgZm9yIHN0b3Jp bmcgYnVpbHQtaW4gbGluayB0eXBlcyBpbiBvcmctbW9kZQorICAgICAgIDs7IGJ1ZmZlcnMK ICAgICAgICAoKGFuZCAoYnVmZmVyLWZpbGUtbmFtZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkg KGRlcml2ZWQtbW9kZS1wICdvcmctbW9kZSkpCiAJKG9yZy13aXRoLWxpbWl0ZWQtbGV2ZWxz Ci0JIChzZXRxIGN1c3RvbS1pZCAob3JnLWVudHJ5LWdldCBuaWwgIkNVU1RPTV9JRCIpKQog CSAoY29uZAogCSAgOzsgU3RvcmUgYSBsaW5rIHVzaW5nIHRoZSB0YXJnZXQgYXQgcG9pbnQK IAkgICgob3JnLWluLXJlZ2V4cCAiW148XTw8XFwoW148Pl0rXFwpPj5bXj5dIiAxKQpAQCAt MTY4MSw3NCArMTc5NCwzNCBAQCBub24tbmlsLiIKICAgICAgICAgICAgICAgICAgOzsgbGlu a3MuICBNYXliZSB0aGUgY2FzZSBvZiBpZGVudGljYWwgdGFyZ2V0IGFuZAogICAgICAgICAg ICAgICAgICA7OyBkZXNjcmlwdGlvbiBzaG91bGQgYmUgaGFuZGxlZCBieSBgb3JnLWluc2Vy dC1saW5rJy4KICAgICAgICAgICAgICAgICAgY3BsdHh0IG5pbAotICAgICAgICAgICAgICAg ICBkZXNjIG5pbAotICAgICAgICAgICAgICAgICA7OyBEbyBub3QgYXBwZW5kICNDVVNUT01f SUQgbGluayBiZWxvdy4KLSAgICAgICAgICAgICAgICAgY3VzdG9tLWlkIG5pbCkpCi0JICAo KGFuZCAoZmVhdHVyZXAgJ29yZy1pZCkKLQkJKG9yIChlcSBvcmctaWQtbGluay10by1vcmct dXNlLWlkIHQpCi0JCSAgICAoYW5kIGludGVyYWN0aXZlPwotCQkJIChvciAoZXEgb3JnLWlk LWxpbmstdG8tb3JnLXVzZS1pZCAnY3JlYXRlLWlmLWludGVyYWN0aXZlKQotCQkJICAgICAo YW5kIChlcSBvcmctaWQtbGluay10by1vcmctdXNlLWlkCi0JCQkJICAgICAgJ2NyZWF0ZS1p Zi1pbnRlcmFjdGl2ZS1hbmQtbm8tY3VzdG9tLWlkKQotCQkJCSAgKG5vdCBjdXN0b20taWQp KSkpCi0JCSAgICAoYW5kIG9yZy1pZC1saW5rLXRvLW9yZy11c2UtaWQgKG9yZy1lbnRyeS1n ZXQgbmlsICJJRCIpKSkpCi0JICAgOzsgU3RvcmUgYSBsaW5rIHVzaW5nIHRoZSBJRCBhdCBw b2ludAotCSAgIChzZXRxIGxpbmsgKGNvbmRpdGlvbi1jYXNlIG5pbAotCQkJICAocHJvZzEg KG9yZy1pZC1zdG9yZS1saW5rKQotCQkJICAgIChzZXRxIGRlc2MgKHBsaXN0LWdldCBvcmct c3RvcmUtbGluay1wbGlzdCA6ZGVzY3JpcHRpb24pKSkKLQkJCShlcnJvcgotCQkJIDs7IFBy b2JhYmx5IGJlZm9yZSBmaXJzdCBoZWFkbGluZSwgbGluayBvbmx5IHRvIGZpbGUKLQkJCSAo Y29uY2F0ICJmaWxlOiIKLQkJCQkgKGFiYnJldmlhdGUtZmlsZS1uYW1lCi0JCQkJICAoYnVm ZmVyLWZpbGUtbmFtZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkpKSkpKSkKLQkgICh0CisgICAg ICAgICAgICAgICAgIGRlc2MgbmlsKSkKKyAgICAgICAgICAodAogCSAgIDs7IEp1c3QgbGlu ayB0byBjdXJyZW50IGhlYWRsaW5lLgogCSAgIChzZXRxIGNwbHR4dCAoY29uY2F0ICJmaWxl OiIKIAkJCQkoYWJicmV2aWF0ZS1maWxlLW5hbWUKIAkJCQkgKGJ1ZmZlci1maWxlLW5hbWUg KGJ1ZmZlci1iYXNlLWJ1ZmZlcikpKSkpCi0JICAgOzsgQWRkIGEgY29udGV4dCBzZWFyY2gg c3RyaW5nLgotCSAgICh3aGVuIChvcmcteG9yIG9yZy1saW5rLWNvbnRleHQtZm9yLWZpbGVz IChlcXVhbCBhcmcgJyg0KSkpCi0JICAgICAobGV0KiAoKGVsZW1lbnQgKG9yZy1lbGVtZW50 LWF0LXBvaW50KSkKLQkJICAgIChuYW1lIChvcmctZWxlbWVudC1wcm9wZXJ0eSA6bmFtZSBl bGVtZW50KSkKLQkJICAgIChjb250ZXh0Ci0JCSAgICAgKGNvbmQKLQkJICAgICAgKChsZXQg KChyZWdpb24gKG9yZy1saW5rLS1jb250ZXh0LWZyb20tcmVnaW9uKSkpCi0JCQkgKGFuZCBy ZWdpb24gKG9yZy1saW5rLS1ub3JtYWxpemUtc3RyaW5nIHJlZ2lvbiB0KSkpKQotCQkgICAg ICAobmFtZSkKLQkJICAgICAgKChvcmctYmVmb3JlLWZpcnN0LWhlYWRpbmctcCkKLQkJICAg ICAgIChvcmctbGluay0tbm9ybWFsaXplLXN0cmluZyAob3JnLWN1cnJlbnQtbGluZS1zdHJp bmcpIHQpKQotCQkgICAgICAodCAob3JnLWxpbmstaGVhZGluZy1zZWFyY2gtc3RyaW5nKSkp KSkKLQkgICAgICAgKHdoZW4gKG9yZy1zdHJpbmctbnctcCBjb250ZXh0KQotCQkgKHNldHEg Y3BsdHh0IChmb3JtYXQgIiVzOjolcyIgY3BsdHh0IGNvbnRleHQpKQotCQkgKHNldHEgZGVz YwotCQkgICAgICAgKG9yIG5hbWUKLQkJCSAgIDs7IEFsdGhvdWdoIGRlc2NyaXB0aW9uIGlz IG5vdCBhIHNlYXJjaAotCQkJICAgOzsgc3RyaW5nLCB1c2UgYG9yZy1saW5rLS1ub3JtYWxp emUtc3RyaW5nJwotCQkJICAgOzsgdG8gcHJldHRpZnkgaXQgKGNvbnRpZ3VvdXMgd2hpdGUg c3BhY2VzKQotCQkJICAgOzsgYW5kIHJlbW92ZSB2b2xhdGlsZSBjb250ZW50cyAoc3RhdGlz dGljcwotCQkJICAgOzsgY29va2llcykuCi0JCQkgICAoYW5kIChub3QgKG9yZy1iZWZvcmUt Zmlyc3QtaGVhZGluZy1wKSkKLQkJCQkob3JnLWxpbmstLW5vcm1hbGl6ZS1zdHJpbmcKLQkJ CQkgKG9yZy1nZXQtaGVhZGluZyB0IHQgdCB0KSkpCi0JCQkgICAiTk9ORSIpKSkpKQotCSAg IChzZXRxIGxpbmsgY3BsdHh0KSkpKSkKLQorICAgICAgICAgICAod2hlbiBvcmctbGluay1j b250ZXh0LWZvci1maWxlcworICAgICAgICAgICAgIChwY2FzZSAob3JnLWxpbmstcHJlY2lz ZS1saW5rLXRhcmdldCkKKyAgICAgICAgICAgICAgIChgbmlsIG5pbCkKKyAgICAgICAgICAg ICAgIChgKCxzZWFyY2gtc3RyaW5nIC4gLHNlYXJjaC1kZXNjKQorICAgICAgICAgICAgICAg IChzZXRxIGNwbHR4dCAoZm9ybWF0ICIlczo6JXMiIGNwbHR4dCBzZWFyY2gtc3RyaW5nKSkK KyAgICAgICAgICAgICAgICAoc2V0cSBkZXNjIHNlYXJjaC1kZXNjKSkpKQorICAgICAgICAg ICAoc2V0cSBsaW5rIGNwbHR4dCkpKSkpCisKKyAgICAgICA7OyBCdWZmZXIgbGlua2VkIHRv IGZpbGUsIGJ1dCBub3QgYW4gb3JnLW1vZGUgYnVmZmVyLgogICAgICAgICgoYnVmZmVyLWZp bGUtbmFtZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkKIAk7OyBKdXN0IGxpbmsgdG8gdGhpcyBm aWxlIGhlcmUuCiAJKHNldHEgY3BsdHh0IChjb25jYXQgImZpbGU6IgogCQkJICAgICAoYWJi cmV2aWF0ZS1maWxlLW5hbWUKIAkJCSAgICAgIChidWZmZXItZmlsZS1uYW1lIChidWZmZXIt YmFzZS1idWZmZXIpKSkpKQogCTs7IEFkZCBhIGNvbnRleHQgc2VhcmNoIHN0cmluZy4KLQko d2hlbiAob3JnLXhvciBvcmctbGluay1jb250ZXh0LWZvci1maWxlcyAoZXF1YWwgYXJnICco NCkpKQotCSAgKGxldCAoKGNvbnRleHQgKG9yZy1saW5rLS1ub3JtYWxpemUtc3RyaW5nCi0J CQkgIChvciAob3JnLWxpbmstLWNvbnRleHQtZnJvbS1yZWdpb24pCi0JCQkgICAgICAob3Jn LWN1cnJlbnQtbGluZS1zdHJpbmcpKQotCQkJICB0KSkpCi0JICAgIDs7IE9ubHkgdXNlIHNl YXJjaCBvcHRpb24gaWYgdGhlcmUgaXMgc29tZSB0ZXh0LgotCSAgICAod2hlbiAob3JnLXN0 cmluZy1udy1wIGNvbnRleHQpCi0JICAgICAgKHNldHEgY3BsdHh0IChmb3JtYXQgIiVzOjol cyIgY3BsdHh0IGNvbnRleHQpKQotCSAgICAgIChzZXRxIGRlc2MgIk5PTkUiKSkpKQotCShz ZXRxIGxpbmsgY3BsdHh0KSkKKyAgICAgICAgKHdoZW4gb3JnLWxpbmstY29udGV4dC1mb3It ZmlsZXMKKyAgICAgICAgICAocGNhc2UgKG9yZy1saW5rLXByZWNpc2UtbGluay10YXJnZXQp CisgICAgICAgICAgICAoYG5pbCBuaWwpCisgICAgICAgICAgICAoYCgsc2VhcmNoLXN0cmlu ZyAuICxzZWFyY2gtZGVzYykKKyAgICAgICAgICAgICAoc2V0cSBjcGx0eHQgKGZvcm1hdCAi JXM6OiVzIiBjcGx0eHQgc2VhcmNoLXN0cmluZykpCisgICAgICAgICAgICAgKHNldHEgZGVz YyBzZWFyY2gtZGVzYykpKSkKKyAgICAgICAgKHNldHEgbGluayBjcGx0eHQpKQogCiAgICAg ICAgKGludGVyYWN0aXZlPwogCSh1c2VyLWVycm9yICJObyBtZXRob2QgZm9yIHN0b3Jpbmcg YSBsaW5rIGZyb20gdGhpcyBidWZmZXIiKSkKQEAgLTE3NjQsMjQgKzE4MzcsMTkgQEAgbm9u LW5pbC4iCiAgICAgICA7OyBTdG9yZSBhbmQgcmV0dXJuIHRoZSBsaW5rCiAgICAgICAoaWYg KG5vdCAoYW5kIGludGVyYWN0aXZlPyBsaW5rKSkKIAkgIChvciBhZ2VuZGEtbGluayAoYW5k IGxpbmsgKG9yZy1saW5rLW1ha2Utc3RyaW5nIGxpbmsgZGVzYykpKQotICAgICAgICAoZG90 aW1lcyAoXyAoaWYgY3VzdG9tLWlkIDIgMSkpIDsgU3RvcmUgMiBsaW5rcyB3aGVuIENVU1RP TS1JRCBpcyBub24tbmlsLgotICAgICAgICAgIChjb25kCi0gICAgICAgICAgICgobm90ICht ZW1iZXIgKGxpc3QgbGluayBkZXNjKSBvcmctc3RvcmVkLWxpbmtzKSkKLSAgICAgICAgICAg IChwdXNoIChsaXN0IGxpbmsgZGVzYykgb3JnLXN0b3JlZC1saW5rcykKLQkgICAgKG1lc3Nh Z2UgIlN0b3JlZDogJXMiIChvciBkZXNjIGxpbmspKSkKLSAgICAgICAgICAgKChlcXVhbCAo bGlzdCBsaW5rIGRlc2MpIChjYXIgb3JnLXN0b3JlZC1saW5rcykpCi0gICAgICAgICAgICAo bWVzc2FnZSAiVGhpcyBsaW5rIGhhcyBhbHJlYWR5IGJlZW4gc3RvcmVkIikpCi0gICAgICAg ICAgICh0Ci0gICAgICAgICAgICAoc2V0cSBvcmctc3RvcmVkLWxpbmtzCi0gICAgICAgICAg ICAgICAgICAoZGVsZXRlIChsaXN0IGxpbmsgZGVzYykgb3JnLXN0b3JlZC1saW5rcykpCi0g ICAgICAgICAgICAocHVzaCAobGlzdCBsaW5rIGRlc2MpIG9yZy1zdG9yZWQtbGlua3MpCi0g ICAgICAgICAgICAobWVzc2FnZSAiTGluayBtb3ZlZCB0byBmcm9udDogJXMiIChvciBkZXNj IGxpbmspKSkpCi0JICAod2hlbiBjdXN0b20taWQKLQkgICAgKHNldHEgbGluayAoY29uY2F0 ICJmaWxlOiIKLQkJCSAgICAgICAoYWJicmV2aWF0ZS1maWxlLW5hbWUKLQkJCSAgICAgICAg KGJ1ZmZlci1maWxlLW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikpKQotCQkJICAgICAgICI6 OiMiIGN1c3RvbS1pZCkpKSkKLQkoY2FyIG9yZy1zdG9yZWQtbGlua3MpKSkpKQorICAgICAg ICAob3JnLWxpbmstLWFkZC10by1zdG9yZWQtbGlua3MgbGluayBkZXNjKQorICAgICAgICA7 OyBJbiBvcmcgYnVmZmVycywgc3RvcmUgYW4gYWRkaXRpb25hbCAiaHVtYW4tcmVhZGFibGUi IGxpbmsKKyAgICAgICAgOzsgdXNpbmcgY3VzdG9tIGlkLCBpZiBhdmFpbGFibGUuCisgICAg ICAgICh3aGVuIChhbmQgKGJ1ZmZlci1maWxlLW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikp CisgICAgICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZS1wICdvcmctbW9kZSkKKyAgICAg ICAgICAgICAgICAgICAob3JnLWVudHJ5LWdldCBuaWwgIkNVU1RPTV9JRCIpKQorICAgICAg ICAgIChzZXRxIGxpbmsgKGNvbmNhdCAiZmlsZToiCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChhYmJyZXZpYXRlLWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGJ1ZmZlci1maWxlLW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikpKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiOjojIiAob3JnLWVudHJ5LWdldCBuaWwgIkNVU1RP TV9JRCIpKSkKKyAgICAgICAgICAodW5sZXNzIChlcXVhbCAobGlzdCBsaW5rIGRlc2MpIChj YXIgb3JnLXN0b3JlZC1saW5rcykpCisgICAgICAgICAgICAob3JnLWxpbmstLWFkZC10by1z dG9yZWQtbGlua3MgbGluayBkZXNjKSkpCisgICAgICAgIChjYXIgb3JnLXN0b3JlZC1saW5r cykpKSkpCiAKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gb3JnLWluc2VydC1saW5rICgmb3B0 aW9uYWwgY29tcGxldGUtZmlsZSBsaW5rLWxvY2F0aW9uIGRlc2NyaXB0aW9uKQpkaWZmIC0t Z2l0IGEvbGlzcC9vcmctaWQuZWwgYi9saXNwL29yZy1pZC5lbAppbmRleCA4NjQ3YTU3Y2Mu LmQ3MGJlYzNjMSAxMDA2NDQKLS0tIGEvbGlzcC9vcmctaWQuZWwKKysrIGIvbGlzcC9vcmct aWQuZWwKQEAgLTEyOSw2ICsxMjksNDYgQEAgbmlsICAgTmV2ZXIgdXNlIGFuIElEIHRvIG1h a2UgYSBsaW5rLCBpbnN0ZWFkIGxpbmsgdXNpbmcgYSB0ZXh0IHNlYXJjaCBmb3IKIAkgIChj b25zdCA6dGFnICJPbmx5IHVzZSBleGlzdGluZyIgdXNlLWV4aXN0aW5nKQogCSAgKGNvbnN0 IDp0YWcgIkRvIG5vdCB1c2UgSUQgdG8gY3JlYXRlIGxpbmsiIG5pbCkpKQogCisoZGVmY3Vz dG9tIG9yZy1pZC1saW5rLWNvbnNpZGVyLXBhcmVudC1pZCBuaWwKKyAgIk5vbi1uaWwgbWVh bnMgc3RvcmluZyBhIGxpbmsgdG8gYW4gT3JnIGVudHJ5IGNvbnNpZGVycyBpbmhlcml0ZWQg SURzLgorCitXaGVuIHRoaXMgb3B0aW9uIGlzIG5vbi1uaWwgYW5kIGBvcmctaWQtbGluay11 c2UtY29udGV4dCcgaXMKK2VuYWJsZWQsIElEIHByb3BlcnRpZXMgaW5oZXJpdGVkIGZyb20g cGFyZW50IGVudHJpZXMgd2lsbCBiZQorY29uc2lkZXJlZCB3aGVuIHN0b3JpbmcgYW4gSUQg bGluay4gIElmIG5vIElEIGlzIGZvdW5kIGluIHRoaXMKK3dheSwgYSBuZXcgb25lIG1heSBi ZSBjcmVhdGVkIGFzIG5vcm1hbCAoc2VlCitgb3JnLWlkLWxpbmstdG8tb3JnLXVzZS1pZCcp LgorCitGb3IgZXhhbXBsZSwgZ2l2ZW4gdGhpcyBvcmcgZmlsZToKKworKiBQYXJlbnQKKzpQ Uk9QRVJUSUVTOgorOklEOiBhYmMKKzpFTkQ6CisqKiBDaGlsZCAxCisqKiBDaGlsZCAyCisK K1dpdGggYG9yZy1pZC1saW5rLWNvbnNpZGVyLXBhcmVudC1pZCcgYW5kCitgb3JnLWlkLWxp bmstdXNlLWNvbnRleHQnIGJvdGggZW5hYmxlZCwgc3RvcmluZyBhIGxpbmsgd2l0aCBwb2lu dAorYXQgXCJDaGlsZCAxXCIgd2lsbCBwcm9kdWNlIGEgbGluayBcIjxpZDphYmM6OipDaGls ZCAxPlwiLiAgVGhpcworYWxsb3dzIGxpbmtpbmcgdG8gdW5pcXVlbHktbmFtZWQgc3ViLWVu dHJpZXMgd2l0aGluIGEgcGFyZW50CitlbnRyeSB3aXRoIGFuIElELCB3aXRob3V0IHJlcXVp cmluZyBldmVyeSBzdWItZW50cnkgdG8gaGF2ZSBpdHMKK293biBJRC4iCisgIDpncm91cCAn b3JnLWxpbmstc3RvcmUKKyAgOmdyb3VwICdvcmctaWQKKyAgOnBhY2thZ2UtdmVyc2lvbiAn KE9yZyAuICI5LjciKQorICA6dHlwZSAnYm9vbGVhbikKKworKGRlZmN1c3RvbSBvcmctaWQt bGluay11c2UtY29udGV4dCB0CisgICJOb24tbmlsIG1lYW5zIGVuYWJsZXMgc2VhcmNoIHN0 cmluZyBjb250ZXh0IGluIG9yZy1pZCBsaW5rcy4KKworU2VhcmNoIHN0cmluZ3MgYXJlIGFk ZGVkIGJ5IGBvcmctaWQtc3RvcmUtbGluaycgd2hlbiBib3RoIHRoZQorZ2VuZXJhbCBvcHRp b24gYG9yZy1saW5rLWNvbnRleHQtZm9yLWZpbGVzJyBhbmQgdGhlIG9yZy1pZCBvcHRpb24K K2BvcmctaWQtbGluay11c2UtY29udGV4dCcgYXJlIG5vbi1uaWwuIgorICA6Z3JvdXAgJ29y Zy1saW5rLXN0b3JlCisgIDpncm91cCAnb3JnLWlkCisgIDpwYWNrYWdlLXZlcnNpb24gJyhP cmcgLiAiOS43IikKKyAgOnR5cGUgJ2Jvb2xlYW4pCisKIChkZWZjdXN0b20gb3JnLWlkLXV1 aWQtcHJvZ3JhbSAidXVpZGdlbiIKICAgIlRoZSB1dWlkZ2VuIHByb2dyYW0uIgogICA6Z3Jv dXAgJ29yZy1pZApAQCAtMjgwLDE1ICszMjAsMjEgQEAgVGhpcyBpcyB1c2VmdWwgd2hlbiB3 b3JraW5nIHdpdGggY29udGVudHMgaW4gYSB0ZW1wb3JhcnkgYnVmZmVyCiB0aGF0IHdpbGwg YmUgY29waWVkIGJhY2sgdG8gdGhlIG9yaWdpbmFsLiIpCiAKIDs7OyMjI2F1dG9sb2FkCi0o ZGVmdW4gb3JnLWlkLWdldCAoJm9wdGlvbmFsIGVwb20gY3JlYXRlIHByZWZpeCkKLSAgIkdl dCB0aGUgSUQgcHJvcGVydHkgb2YgdGhlIGVudHJ5IGF0IEVQT00uCi1FUE9NIGlzIGFuIGVs ZW1lbnQsIG1hcmtlciwgb3IgYnVmZmVyIHBvc2l0aW9uLgotSWYgRVBPTSBpcyBuaWwsIHJl ZmVyIHRvIHRoZSBlbnRyeSBhdCBwb2ludC4KLUlmIHRoZSBlbnRyeSBkb2VzIG5vdCBoYXZl IGFuIElELCB0aGUgZnVuY3Rpb24gcmV0dXJucyBuaWwuCi1Ib3dldmVyLCB3aGVuIENSRUFU RSBpcyBub24tbmlsLCBjcmVhdGUgYW4gSUQgaWYgbm9uZSBpcyBwcmVzZW50IGFscmVhZHku Ci1QUkVGSVggd2lsbCBiZSBwYXNzZWQgdGhyb3VnaCB0byBgb3JnLWlkLW5ldycuCi1JbiBh bnkgY2FzZSwgdGhlIElEIG9mIHRoZSBlbnRyeSBpcyByZXR1cm5lZC4iCi0gIChsZXQgKChp ZCAob3JnLWVudHJ5LWdldCBlcG9tICJJRCIpKSkKKyhkZWZ1biBvcmctaWQtZ2V0ICgmb3B0 aW9uYWwgZXBvbSBjcmVhdGUgcHJlZml4IGluaGVyaXQpCisgICJHZXQgdGhlIElEIG9mIHRo ZSBlbnRyeSBhdCBFUE9NLgorCitFUE9NIGlzIGFuIGVsZW1lbnQsIG1hcmtlciwgb3IgYnVm ZmVyIHBvc2l0aW9uLiAgSWYgRVBPTSBpcyBuaWwsCityZWZlciB0byB0aGUgZW50cnkgYXQg cG9pbnQuCisKK0lmIElOSEVSSVQgaXMgbm9uLW5pbCwgSUQgcHJvcGVydGllcyBpbmhlcml0 ZWQgZnJvbSBwYXJlbnQKK2VudHJpZXMgYXJlIGNvbnNpZGVyZWQuICBPdGhlcndpc2UsIG9u bHkgSUQgcHJvcGVydGllcyBvbiB0aGUKK2VudHJ5IGl0c2VsZiBhcmUgY29uc2lkZXJlZC4K KworV2hlbiBDUkVBVEUgaXMgbmlsLCByZXR1cm4gdGhlIElEIG9mIHRoZSBlbnRyeSBpZiBm b3VuZCwKK290aGVyd2lzZSBuaWwuICBXaGVuIENSRUFURSBpcyBub24tbmlsLCBjcmVhdGUg YW4gSUQgaWYgbm9uZSBoYXMKK2JlZW4gZm91bmQsIGFuZCByZXR1cm4gdGhlIG5ldyBJRC4g IFBSRUZJWCB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoCit0byBgb3JnLWlkLW5ldycuIgorICAo bGV0ICgoaWQgKG9yZy1lbnRyeS1nZXQgZXBvbSAiSUQiIChhbmQgaW5oZXJpdCB0KSkpKQog ICAgIChjb25kCiAgICAgICgoYW5kIGlkIChzdHJpbmdwIGlkKSAoc3RyaW5nLW1hdGNoICJc XFMtIiBpZCkpCiAgICAgICBpZCkKQEAgLTcwMywxOCArNzQ5LDQ1IEBAIG9wdGlvbmFsIGFy Z3VtZW50IE1BUktFUlAsIHJldHVybiB0aGUgcG9zaXRpb24gYXMgYSBuZXcgbWFya2VyLiIK IDs7IENhbGxpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBoYXJkLWNvZGVkIGludG8g YG9yZy1zdG9yZS1saW5rJywKIDs7IHNvIHdlIGRvIGhhdmUgdG8gYWRkIGl0IHRvIGBvcmct c3RvcmUtbGluay1mdW5jdGlvbnMnLgogCisoZGVmdW4gb3JnLWlkLS1nZXQtaWQtdG8tc3Rv cmUtbGluayAoJm9wdGlvbmFsIGNyZWF0ZSkKKyAgIkdldCBvciBjcmVhdGUgdGhlIHJlbGV2 YW50IElEIGZvciBzdG9yaW5nIGEgbGluay4KKworT3B0aW9uYWwgYXJndW1lbnQgQ1JFQVRF IGlzIHBhc3NlZCB0byBgb3JnLWlkLWdldCcuCisKK0luaGVyaXRlZCBJRHMgYXJlIG9ubHkg Y29uc2lkZXJlZCB3aGVuCitgb3JnLWlkLWxpbmstY29uc2lkZXItcGFyZW50LWlkJywgYG9y Zy1pZC1saW5rLXVzZS1jb250ZXh0JyBhbmQKK2BvcmctbGluay1jb250ZXh0LWZvci1maWxl cycgYXJlIGFsbCBlbmFibGVkLCBzaW5jZSBpbmhlcml0ZWQgSURzCithcmUgY29uZnVzaW5n IHdpdGhvdXQgdGhlIGFkZGl0aW9uYWwgc2VhcmNoIHN0cmluZyBjb250ZXh0LiIKKyAgKGxl dCogKChpbmhlcml0LWlkIChhbmQgb3JnLWlkLWxpbmstY29uc2lkZXItcGFyZW50LWlkCisg ICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy1pZC1saW5rLXVzZS1jb250ZXh0CisgICAg ICAgICAgICAgICAgICAgICAgICAgIG9yZy1saW5rLWNvbnRleHQtZm9yLWZpbGVzKSkpCisg ICAgKG9yZy1pZC1nZXQgbmlsIGNyZWF0ZSBuaWwgaW5oZXJpdC1pZCkpKQorCiA7OzsjIyNh dXRvbG9hZAogKGRlZnVuIG9yZy1pZC1zdG9yZS1saW5rICgpCiAgICJTdG9yZSBhIGxpbmsg dG8gdGhlIGN1cnJlbnQgZW50cnksIHVzaW5nIGl0cyBJRC4KIAotSWYgYmVmb3JlIGZpcnN0 IGhlYWRpbmcgc3RvcmUgZmlyc3QgdGl0bGUta2V5d29yZCBhcyBkZXNjcmlwdGlvbgotb3Ig ZmlsZW5hbWUgaWYgbm8gdGl0bGUuIgorVGhlIGxpbmsgZGVzY3JpcHRpb24gaXMgYmFzZWQg b24gdGhlIGhlYWRpbmcsIG9yIGlmIGJlZm9yZSB0aGUKK2ZpcnN0IGhlYWRpbmcsIHRoZSB0 aXRsZSBrZXl3b3JkIGlmIGF2YWlsYWJsZSwgb3IgZWxzZSB0aGUKK2ZpbGVuYW1lLgorCitX aGVuIGBvcmctbGluay1jb250ZXh0LWZvci1maWxlcycgYW5kIGBvcmctaWQtbGluay11c2Ut Y29udGV4dCcKK2FyZSBub24tbmlsLCBhZGQgYSBzZWFyY2ggc3RyaW5nIHRvIHRoZSBsaW5r LiAgVGhlIGxpbmsKK2Rlc2NyaXB0aW9uIGlzIHRoZW4gYmFzZWQgb24gdGhlIHNlYXJjaCBz dHJpbmcgdGFyZ2V0LgorCitXaGVuIGluIGFkZGl0aW9uIGBvcmctaWQtbGluay1jb25zaWRl ci1wYXJlbnQtaWQnIGlzIG5vbi1uaWwsIHRoZQorSUQgY2FuIGJlIGluaGVyaXRlZCBmcm9t IGEgcGFyZW50IGVudHJ5LCB3aXRoIHRoZSBzZWFyY2ggc3RyaW5nCit1c2VkIHRvIHN0aWxs IGxpbmsgdG8gdGhlIGN1cnJlbnQgbG9jYXRpb24uIgogICAoaW50ZXJhY3RpdmUpCi0gICh3 aGVuIChhbmQgKGJ1ZmZlci1maWxlLW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikpIChkZXJp dmVkLW1vZGUtcCAnb3JnLW1vZGUpKQotICAgIChsZXQqICgobGluayAoY29uY2F0ICJpZDoi IChvcmctaWQtZ2V0LWNyZWF0ZSkpKQorICAod2hlbiAoYW5kIChidWZmZXItZmlsZS1uYW1l IChidWZmZXItYmFzZS1idWZmZXIpKQorICAgICAgICAgICAgIChkZXJpdmVkLW1vZGUtcCAn b3JnLW1vZGUpKQorICAgIChsZXQqICgobGluayAoY29uY2F0ICJpZDoiIChvcmctaWQtLWdl dC1pZC10by1zdG9yZS1saW5rICdjcmVhdGUpKSkKKyAgICAgICAgICAgKGlkLWxvY2F0aW9u IChvciAoYW5kIG9yZy1lbnRyeS1wcm9wZXJ0eS1pbmhlcml0ZWQtZnJvbQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKG1hcmtlci1wb3NpdGlvbiBvcmctZW50cnktcHJv cGVydHktaW5oZXJpdGVkLWZyb20pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz YXZlLWV4Y3Vyc2lvbiAob3JnLWJhY2stdG8taGVhZGluZy1vci1wb2ludC1taW4pIChwb2lu dCkpKSkKIAkgICAoY2FzZS1mb2xkLXNlYXJjaCBuaWwpCiAJICAgKGRlc2MgKHNhdmUtZXhj dXJzaW9uCi0JCSAgIChvcmctYmFjay10by1oZWFkaW5nLW9yLXBvaW50LW1pbiB0KQorICAg ICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgaWQtbG9jYXRpb24pCiAgICAgICAgICAgICAg ICAgICAgKGNvbmQgKChvcmctYmVmb3JlLWZpcnN0LWhlYWRpbmctcCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxldCAoKGtleXdvcmRzIChvcmctY29sbGVjdC1rZXl3b3JkcyAn KCJUSVRMRSIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIGtleXdvcmRz CkBAIC03MjYsMTQgKzc5OSw1OSBAQCBvciBmaWxlbmFtZSBpZiBubyB0aXRsZS4iCiAJCQkg ICAgICAobWF0Y2gtc3RyaW5nIDQpCiAJCQkgICAgKG1hdGNoLXN0cmluZyAwKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgKHQgbGluaykpKSkpCisgICAgICAod2hlbiAoYW5kIG9y Zy1saW5rLWNvbnRleHQtZm9yLWZpbGVzIG9yZy1pZC1saW5rLXVzZS1jb250ZXh0KQorICAg ICAgICAocGNhc2UgKG9yZy1saW5rLXByZWNpc2UtbGluay10YXJnZXQgaWQtbG9jYXRpb24p CisgICAgICAgICAgKGBuaWwgbmlsKQorICAgICAgICAgIChgKCxzZWFyY2gtc3RyaW5nIC4g LHNlYXJjaC1kZXNjKQorICAgICAgICAgICAoc2V0cSBsaW5rIChjb25jYXQgbGluayAiOjoi IHNlYXJjaC1zdHJpbmcpKQorICAgICAgICAgICAoc2V0cSBkZXNjIHNlYXJjaC1kZXNjKSkp KQogICAgICAgKG9yZy1saW5rLXN0b3JlLXByb3BzIDpsaW5rIGxpbmsgOmRlc2NyaXB0aW9u IGRlc2MgOnR5cGUgImlkIikKICAgICAgIGxpbmspKSkKIAotKGRlZnVuIG9yZy1pZC1vcGVu IChpZCBfKQotICAiR28gdG8gdGhlIGVudHJ5IHdpdGggaWQgSUQuIgotICAob3JnLW1hcmst cmluZy1wdXNoKQotICAobGV0ICgobSAob3JnLWlkLWZpbmQgaWQgJ21hcmtlcikpCi0JY21k KQorOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBvcmctaWQtc3RvcmUtbGluay1tYXliZSAoJm9w dGlvbmFsIGludGVyYWN0aXZlPykKKyAgIlN0b3JlIGEgbGluayB0byB0aGUgY3VycmVudCBl bnRyeSB1c2luZyBpdHMgSUQgaWYgZW5hYmxlZC4KKworVGhlIHZhbHVlIG9mIGBvcmctaWQt bGluay10by1vcmctdXNlLWlkJyBkZXRlcm1pbmVzIHdoZXRoZXIgYW4gSUQKK2xpbmsgc2hv dWxkIGJlIHN0b3JlZCwgdXNpbmcgYG9yZy1pZC1zdG9yZS1saW5rJy4KKworQXNzdW1lIHRo ZSBmdW5jdGlvbiBpcyBjYWxsZWQgaW50ZXJhY3RpdmVseSBpZiBJTlRFUkFDVElWRT8gaXMK K25vbi1uaWwuIgorICAod2hlbiAoYW5kIChidWZmZXItZmlsZS1uYW1lIChidWZmZXItYmFz ZS1idWZmZXIpKQorICAgICAgICAgICAgIChkZXJpdmVkLW1vZGUtcCAnb3JnLW1vZGUpCisg ICAgICAgICAgICAgKG9yIChlcSBvcmctaWQtbGluay10by1vcmctdXNlLWlkIHQpCisgICAg ICAgICAgICAgICAgIChhbmQgaW50ZXJhY3RpdmU/CisgICAgICAgICAgICAgICAgICAgICAg KG9yIChlcSBvcmctaWQtbGluay10by1vcmctdXNlLWlkICdjcmVhdGUtaWYtaW50ZXJhY3Rp dmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGVxIG9yZy1pZC1saW5rLXRv LW9yZy11c2UtaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0 ZS1pZi1pbnRlcmFjdGl2ZS1hbmQtbm8tY3VzdG9tLWlkKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub3QgKG9yZy1lbnRyeS1nZXQgbmlsICJDVVNUT01fSUQiKSkpKSkK KyAgICAgICAgICAgICAgICAgOzsgJ3VzZS1leGlzdGluZworICAgICAgICAgICAgICAgICAo YW5kIG9yZy1pZC1saW5rLXRvLW9yZy11c2UtaWQKKyAgICAgICAgICAgICAgICAgICAgICAo b3JnLWlkLS1nZXQtaWQtdG8tc3RvcmUtbGluaykpKSkKKyAgICAob3JnLWlkLXN0b3JlLWxp bmspKSkKKworKGRlZnVuIG9yZy1pZC1vcGVuIChsaW5rIF8pCisgICJHbyB0byB0aGUgZW50 cnkgaW5kaWNhdGVkIGJ5IGlkIGxpbmsgTElOSy4KKworVGhlIGxpbmsgY2FuIGluY2x1ZGUg YSBzZWFyY2ggc3RyaW5nIGFmdGVyIFwiOjpcIiwgd2hpY2ggaXMKK3Bhc3NlZCB0byBgb3Jn LWxpbmstc2VhcmNoJy4KKworRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggSURz IHRoYXQgY29udGFpbiBcIjo6XCIsIGlmIG5vCittYXRjaCBpcyBmb3VuZCBmb3IgdGhlIElE LCB0aGUgZnVsbCBsaW5rIHN0cmluZyBpbmNsdWRpbmcgXCI6OlwiCit3aWxsIGJlIHRyaWVk IGFzIGFuIElELiIKKyAgKGxldCogKChvcHRpb24gKGFuZCAoc3RyaW5nLW1hdGNoICI6Olxc KC4qXFwpXFwnIiBsaW5rKQorCQkgICAgICAobWF0Y2gtc3RyaW5nIDEgbGluaykpKQorCSAo aWQgKGlmIChub3Qgb3B0aW9uKSBsaW5rCisgICAgICAgICAgICAgICAoc3Vic3RyaW5nIGxp bmsgMCAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCisgICAgICAgICBtIGNtZCkKKyAgICAob3Jn LW1hcmstcmluZy1wdXNoKQorICAgIChzZXRxIG0gKG9yZy1pZC1maW5kIGlkICdtYXJrZXIp KQorICAgICh3aGVuIChhbmQgKG5vdCBtKSBvcHRpb24pCisgICAgICA7OyBCYWNrd2FyZHMg Y29tcGF0aWJpbGl0eTogaWYgaWQgaXMgbm90IGZvdW5kLCB0cnkgdHJlYXRpbmcKKyAgICAg IDs7IHdob2xlIGxpbmsgYXMgYW4gaWQuCisgICAgICAoc2V0cSBtIChvcmctaWQtZmluZCBs aW5rICdtYXJrZXIpKQorICAgICAgKHdoZW4gbQorICAgICAgICAoc2V0cSBvcHRpb24gbmls KSkpCiAgICAgKHVubGVzcyBtCiAgICAgICAoZXJyb3IgIkNhbm5vdCBmaW5kIGVudHJ5IHdp dGggSUQgXCIlc1wiIiBpZCkpCiAgICAgOzsgVXNlIGEgYnVmZmVyLXN3aXRjaGluZyBjb21t YW5kIGluIGFuYWxvZ3kgdG8gZmluZGluZyBmaWxlcwpAQCAtNzUwLDkgKzg2OCwxNiBAQCBv ciBmaWxlbmFtZSBpZiBubyB0aXRsZS4iCiAJKGZ1bmNhbGwgY21kIChtYXJrZXItYnVmZmVy IG0pKSkKICAgICAoZ290by1jaGFyIG0pCiAgICAgKG1vdmUtbWFya2VyIG0gbmlsKQorICAg ICh3aGVuIG9wdGlvbgorICAgICAgKHNhdmUtcmVzdHJpY3Rpb24KKyAgICAgICAgKHVubGVz cyAob3JnLWJlZm9yZS1maXJzdC1oZWFkaW5nLXApCisgICAgICAgICAgKG9yZy1uYXJyb3ct dG8tc3VidHJlZSkpCisgICAgICAgIChvcmctbGluay1zZWFyY2ggb3B0aW9uKSkpCiAgICAg KG9yZy1mb2xkLXNob3ctY29udGV4dCkpKQogCi0ob3JnLWxpbmstc2V0LXBhcmFtZXRlcnMg ImlkIiA6Zm9sbG93ICMnb3JnLWlkLW9wZW4pCisob3JnLWxpbmstc2V0LXBhcmFtZXRlcnMg ImlkIgorICA6Zm9sbG93ICMnb3JnLWlkLW9wZW4KKyAgOnN0b3JlICMnb3JnLWlkLXN0b3Jl LWxpbmstbWF5YmUpCiAKIChwcm92aWRlICdvcmctaWQpCiAKZGlmZiAtLWdpdCBhL2xpc3Av b3JnLWxpbnQuZWwgYi9saXNwL29yZy1saW50LmVsCmluZGV4IDRkMmE1NWQxNS4uYjIzYWZj Y2EzIDEwMDY0NAotLS0gYS9saXNwL29yZy1saW50LmVsCisrKyBiL2xpc3Avb3JnLWxpbnQu ZWwKQEAgLTY1LDYgKzY1LDcgQEAKIDs7IC0gc3BlY2lhbCBwcm9wZXJ0aWVzIGluIHByb3Bl cnRpZXMgZHJhd2VycywKIDs7IC0gb2Jzb2xldGUgc3ludGF4IGZvciBwcm9wZXJ0aWVzIGRy YXdlcnMsCiA7OyAtIGludmFsaWQgZHVyYXRpb24gaW4gRUZGT1JUIHByb3BlcnR5LAorOzsg LSBpbnZhbGlkIElEIHByb3BlcnR5IHdpdGggYSBkb3VibGUgY29sb24sCiA7OyAtIG1pc3Np bmcgZGVmaW5pdGlvbiBmb3IgZm9vdG5vdGUgcmVmZXJlbmNlcywKIDs7IC0gbWlzc2luZyBy ZWZlcmVuY2UgZm9yIGZvb3Rub3RlIGRlZmluaXRpb25zLAogOzsgLSBub24tZm9vdG5vdGUg ZGVmaW5pdGlvbnMgaW4gZm9vdG5vdGUgc2VjdGlvbiwKQEAgLTY4Niw2ICs2ODcsMTYgQEAg VXNlIDpoZWFkZXItYXJnczogaW5zdGVhZCIKIAkgICAgICAgKGxpc3QgKG9yZy1lbGVtZW50 LWJlZ2luIHApCiAJCSAgICAgKGZvcm1hdCAiSW52YWxpZCBlZmZvcnQgZHVyYXRpb24gZm9y bWF0OiAlUyIgdmFsdWUpKSkpKSkpKQogCisoZGVmdW4gb3JnLWxpbnQtaW52YWxpZC1pZC1w cm9wZXJ0eSAoYXN0KQorICAob3JnLWVsZW1lbnQtbWFwIGFzdCAnbm9kZS1wcm9wZXJ0eQor ICAgIChsYW1iZGEgKHApCisgICAgICAod2hlbiAoZXF1YWwgIklEIiAob3JnLWVsZW1lbnQt cHJvcGVydHkgOmtleSBwKSkKKwkobGV0ICgodmFsdWUgKG9yZy1lbGVtZW50LXByb3BlcnR5 IDp2YWx1ZSBwKSkpCisJICAoYW5kIChvcmctc3RyaW5nLW53LXAgdmFsdWUpCisgICAgICAg ICAgICAgICAoc3RyaW5nLW1hdGNoLXAgIjo6IiB2YWx1ZSkKKwkgICAgICAgKGxpc3QgKG9y Zy1lbGVtZW50LWJlZ2luIHApCisJCSAgICAgKGZvcm1hdCAiSURzIHNob3VsZCBub3QgaW5j bHVkZSBcIjo6XCI6ICVTIiB2YWx1ZSkpKSkpKSkpCisKIChkZWZ1biBvcmctbGludC1saW5r LXRvLWxvY2FsLWZpbGUgKGFzdCkKICAgKG9yZy1lbGVtZW50LW1hcCBhc3QgJ2xpbmsKICAg ICAobGFtYmRhIChsKQpAQCAtMTY4NCw2ICsxNjk1LDExIEBAIEFTVCBpcyB0aGUgYnVmZmVy IHBhcnNlIHRyZWUuIgogICAjJ29yZy1saW50LWludmFsaWQtZWZmb3J0LXByb3BlcnR5CiAg IDpjYXRlZ29yaWVzICcocHJvcGVydGllcykpCiAKKyhvcmctbGludC1hZGQtY2hlY2tlciAn aW52YWxpZC1pZC1wcm9wZXJ0eQorICAiUmVwb3J0IHNlYXJjaCBzdHJpbmcgZGVsaW1pdGVy IFwiOjpcIiBpbiBJRCBwcm9wZXJ0eSIKKyAgIydvcmctbGludC1pbnZhbGlkLWlkLXByb3Bl cnR5CisgIDpjYXRlZ29yaWVzICcocHJvcGVydGllcykpCisKIChvcmctbGludC1hZGQtY2hl Y2tlciAndW5kZWZpbmVkLWZvb3Rub3RlLXJlZmVyZW5jZQogICAiUmVwb3J0IG1pc3Npbmcg ZGVmaW5pdGlvbiBmb3IgZm9vdG5vdGUgcmVmZXJlbmNlcyIKICAgIydvcmctbGludC11bmRl ZmluZWQtZm9vdG5vdGUtcmVmZXJlbmNlCmRpZmYgLS1naXQgYS90ZXN0aW5nL2xpc3AvdGVz dC1vbC5lbCBiL3Rlc3RpbmcvbGlzcC90ZXN0LW9sLmVsCmluZGV4IGUwY2VjMDg1NC4uZmE4 ZDE1YzJiIDEwMDY0NAotLS0gYS90ZXN0aW5nL2xpc3AvdGVzdC1vbC5lbAorKysgYi90ZXN0 aW5nL2xpc3AvdGVzdC1vbC5lbApAQCAtMzgxLDYgKzM4MSwxMzIgQEAgU2VlIGh0dHBzOi8v Z2l0aHViLmNvbS95YW50YXI5Mi9vcmcvaXNzdWVzLzQuIgogCSAoZXF1YWwgKGZvcm1hdCAi W1tmaWxlOiVzOjoqZm9vIGJhcl1bZm9vIGJhcl1dIiBmaWxlIGZpbGUpCiAJCShvcmctc3Rv cmUtbGluayBuaWwpKSkpKSkpCiAKKyhlcnQtZGVmdGVzdCB0ZXN0LW9yZy1saW5rL3ByZWNp c2UtbGluay10YXJnZXQgKCkKKyAgIlRlc3QgYG9yZy1saW5rLXByZWNpc2UtbGluay10YXJn ZXRgIHNwZWNpZmljYXRpb25zLiIKKyAgKHNob3VsZAorICAgKGVxdWFsICcoIipIMSIgLiAi SDEiKQorICAgICAgICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAiKiBIMTxwb2ludD5c biogSDJcbiIKKyAgICAgICAgICAgIChvcmctbGluay1wcmVjaXNlLWxpbmstdGFyZ2V0KSkp KQorICAoc2hvdWxkCisgICAoZXF1YWwgJygiZm9vIiAuICJmb28iKQorICAgICAgICAgIChv cmctdGVzdC13aXRoLXRlbXAtdGV4dCAiKiBIMVxuIytuYW1lOiBmb288cG9pbnQ+XG4jK2Jl Z2luX2V4YW1wbGVcbmhpXG4jK2VuZF9leGFtcGxlXG4iCisgICAgICAgICAgICAob3JnLWxp bmstcHJlY2lzZS1saW5rLXRhcmdldCkpKSkKKyAgKHNob3VsZAorICAgKGVxdWFsICcoIlRl eHQiIC4gbmlsKQorICAgICAgICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAiXG5UZXh0 PHBvaW50PlxuKiBIMVxuIgorICAgICAgICAgICAgKG9yZy1saW5rLXByZWNpc2UtbGluay10 YXJnZXQpKSkpCisgIChzaG91bGQKKyAgIChlcXVhbCBuaWwKKyAgICAgICAgICAob3JnLXRl c3Qtd2l0aC10ZW1wLXRleHQgIlxuPHBvaW50PlxuKiBIMVxuIgorICAgICAgICAgICAgKG9y Zy1saW5rLXByZWNpc2UtbGluay10YXJnZXQpKSkpCisgIDs7IHJlbGF0aXZlIHRvIGEgaGVh ZGluZworICAoc2hvdWxkCisgICAoZXF1YWwgbmlsCisgICAgICAgICAgKG9yZy10ZXN0LXdp dGgtdGVtcC10ZXh0ICIqIEgxPHBvaW50PlxuKiBIMlxuIgorICAgICAgICAgICAgKG9yZy1s aW5rLXByZWNpc2UtbGluay10YXJnZXQgMSkpKSkKKyAgKHNob3VsZAorICAgKGVxdWFsICco IipIMiIgLiAiSDIiKQorICAgICAgICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAiKiBI MVxuKiBIMjxwb2ludD5cbiIKKyAgICAgICAgICAgIChvcmctbGluay1wcmVjaXNlLWxpbmst dGFyZ2V0IDEpKSkpCisgIChzaG91bGQKKyAgIChlcXVhbCBuaWwKKyAgICAgICAgICAob3Jn LXRlc3Qtd2l0aC10ZW1wLXRleHQgIiogSDFcbiogSDI8cG9pbnQ+XG4iCisgICAgICAgICAg ICAob3JnLWxpbmstcHJlY2lzZS1saW5rLXRhcmdldCA2KSkpKQorICApCisKKyhkZWZtYWNy byB0ZXN0LW9sLXN0b3JlZC1saW5rLXdpdGgtdGV4dCAodGV4dCAmcmVzdCBib2R5KQorICAi UmV0dXJuIDpsaW5rIGFuZCA6ZGVzY3JpcHRpb24gZnJvbSBsaW5rIHN0b3JlZCBpbiBib2R5 LiIKKyAgKGRlY2xhcmUgKGluZGVudCAxKSkKKyAgYChsZXQgKG9yZy1zdG9yZS1saW5rLXBs aXN0KQorICAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQtaW4tZmlsZSAsdGV4dAorICAg ICAgICxAYm9keQorICAgICAgIChsaXN0IChwbGlzdC1nZXQgb3JnLXN0b3JlLWxpbmstcGxp c3QgOmxpbmspCisgICAgICAgICAgICAgKHBsaXN0LWdldCBvcmctc3RvcmUtbGluay1wbGlz dCA6ZGVzY3JpcHRpb24pKSkpKQorCisoZXJ0LWRlZnRlc3QgdGVzdC1vcmctbGluay9pZC1z dG9yZS1saW5rICgpCisgICJUZXN0IGBvcmctaWQtc3RvcmUtbGluaycgc3BlY2lmaWNhdGlv bnMuIgorICAobGV0ICgob3JnLWlkLWxpbmstdG8tb3JnLXVzZS1pZCBuaWwpKQorICAgIChz aG91bGQKKyAgICAgKGVxdWFsICcobmlsIG5pbCkKKyAgICAgICAgICAgICh0ZXN0LW9sLXN0 b3JlZC1saW5rLXdpdGgtdGV4dCAiKiBIMVxuOlBST1BFUlRJRVM6XG46SUQ6IGFiY1xuOkVO RDpcbiIKKyAgICAgICAgICAgICAgKG9yZy1pZC1zdG9yZS1saW5rLW1heWJlIHQpKSkpKQor ICA7OyBPbiBhIGhlYWRsaW5lLCBsaW5rIHRvIHRoYXQgaGVhZGxpbmUncyBJRC4gIFVzZSBo ZWFkaW5nIGFzIHRoZQorICA7OyBkZXNjcmlwdGlvbiBvZiB0aGUgbGluay4KKyAgKGxldCAo KG9yZy1pZC1saW5rLXRvLW9yZy11c2UtaWQgdCkpCisgICAgKHNob3VsZAorICAgICAoZXF1 YWwgJygiaWQ6YWJjIiAiSDEiKQorICAgICAgICAgICAgKHRlc3Qtb2wtc3RvcmVkLWxpbmst d2l0aC10ZXh0ICIqIEgxXG46UFJPUEVSVElFUzpcbjpJRDogYWJjXG46RU5EOlxuIgorICAg ICAgICAgICAgICAob3JnLWlkLXN0b3JlLWxpbmstbWF5YmUgdCkpKSkpCisgIDs7IFJlbW92 ZSBUT0RPIGtleXdvcmRzIGV0YyBmcm9tIGRlc2NyaXB0aW9uIG9mIHRoZSBsaW5rLgorICAo bGV0ICgob3JnLWlkLWxpbmstdG8tb3JnLXVzZS1pZCB0KSkKKyAgICAoc2hvdWxkCisgICAg IChlcXVhbCAnKCJpZDphYmMiICJIMSIpCisgICAgICAgICAgICAodGVzdC1vbC1zdG9yZWQt bGluay13aXRoLXRleHQgIiogVE9ETyBbI0FdIEgxIDp0YWc6XG46UFJPUEVSVElFUzpcbjpJ RDogYWJjXG46RU5EOlxuIgorICAgICAgICAgICAgICAob3JnLWlkLXN0b3JlLWxpbmstbWF5 YmUgdCkpKSkpCisgIDs7IGNyZWF0ZS1pZi1pbnRlcmFjdGl2ZQorICAobGV0ICgob3JnLWlk LWxpbmstdG8tb3JnLXVzZS1pZCAnY3JlYXRlLWlmLWludGVyYWN0aXZlKSkKKyAgICAoc2hv dWxkCisgICAgIChlcXVhbCAnKCJpZDphYmMiICJIMSIpCisgICAgICAgICAgICAoY2wtbGV0 ZiAoKChzeW1ib2wtZnVuY3Rpb24gJ29yZy1pZC1uZXcpCisgICAgICAgICAgICAgICAgICAg ICAgIChsYW1iZGEgKCZyZXN0IF9yZXN0KSAiYWJjIikpKQorICAgICAgICAgICAgICAodGVz dC1vbC1zdG9yZWQtbGluay13aXRoLXRleHQgIiogSDFcbiIKKyAgICAgICAgICAgICAgICAo b3JnLWlkLXN0b3JlLWxpbmstbWF5YmUgdCkpKSkpCisgICAgKHNob3VsZAorICAgICAoZXF1 YWwgJyhuaWwgbmlsKQorICAgICAgICAgICAgKHRlc3Qtb2wtc3RvcmVkLWxpbmstd2l0aC10 ZXh0ICIqIEgxXG4iCisgICAgICAgICAgICAgIChvcmctaWQtc3RvcmUtbGluay1tYXliZSBu aWwpKSkpKQorICA7OyBjcmVhdGUtaWYtaW50ZXJhY3RpdmUtYW5kLW5vLWN1c3RvbS1pZAor ICAobGV0ICgob3JnLWlkLWxpbmstdG8tb3JnLXVzZS1pZCAnY3JlYXRlLWlmLWludGVyYWN0 aXZlLWFuZC1uby1jdXN0b20taWQpKQorICAgIChzaG91bGQKKyAgICAgKGVxdWFsICcoImlk OmFiYyIgIkgxIikKKyAgICAgICAgICAgIChjbC1sZXRmICgoKHN5bWJvbC1mdW5jdGlvbiAn b3JnLWlkLW5ldykKKyAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoJnJlc3QgX3Jl c3QpICJhYmMiKSkpCisgICAgICAgICAgICAgICh0ZXN0LW9sLXN0b3JlZC1saW5rLXdpdGgt dGV4dCAiKiBIMVxuIgorICAgICAgICAgICAgICAgIChvcmctaWQtc3RvcmUtbGluay1tYXli ZSB0KSkpKSkKKyAgICAoc2hvdWxkCisgICAgIChlcXVhbCAnKG5pbCBuaWwpCisgICAgICAg ICAgICAodGVzdC1vbC1zdG9yZWQtbGluay13aXRoLXRleHQgIiogSDFcbjpQUk9QRVJUSUVT OlxuOkNVU1RPTV9JRDogeHl6XG46RU5EOlxuIgorICAgICAgICAgICAgICAob3JnLWlkLXN0 b3JlLWxpbmstbWF5YmUgdCkpKSkKKyAgICAoc2hvdWxkCisgICAgIChlcXVhbCAnKG5pbCBu aWwpCisgICAgICAgICAgICAodGVzdC1vbC1zdG9yZWQtbGluay13aXRoLXRleHQgIiogSDFc biIKKyAgICAgICAgICAgICAgKG9yZy1pZC1zdG9yZS1saW5rLW1heWJlIG5pbCkpKSkpKQor CisoZXJ0LWRlZnRlc3QgdGVzdC1vcmctbGluay9pZC1zdG9yZS1saW5rLXVzaW5nLXBhcmVu dCAoKQorICAiVGVzdCBgb3JnLWlkLXN0b3JlLWxpbmsnIHNwZWNpZmljYXRpb25zIHdpdGgg YG9yZy1pZC1saW5rLWNvbnNpZGVyLXBhcmVudC1pZGAgc2V0LiIKKyAgOzsgd2hlbiB1c2lu ZyBjb250ZXh0IHRvIHN0aWxsIGZpbmQgc3BlY2lmaWMgaGVhZGluZworICAobGV0ICgob3Jn LWlkLWxpbmstY29uc2lkZXItcGFyZW50LWlkIHQpCisgICAgICAgIChvcmctaWQtbGluay11 c2UtY29udGV4dCB0KSkKKyAgICAoc2hvdWxkCisgICAgIChlcXVhbCAnKCJpZDphYmM6OipI MiIgIkgyIikKKyAgICAgICAgICAgICh0ZXN0LW9sLXN0b3JlZC1saW5rLXdpdGgtdGV4dCAi KiBIMVxuOlBST1BFUlRJRVM6XG46SUQ6IGFiY1xuOkVORDpcbioqIEgyXG48cG9pbnQ+Igor ICAgICAgICAgICAgICAob3JnLWlkLXN0b3JlLWxpbmspKSkpCisgICAgKHNob3VsZAorICAg ICAoZXF1YWwgJygiaWQ6YWJjOjpuYW1lIiAibmFtZSIpCisgICAgICAgICAgICAodGVzdC1v bC1zdG9yZWQtbGluay13aXRoLXRleHQgIiogSDFcbjpQUk9QRVJUSUVTOlxuOklEOiBhYmNc bjpFTkQ6XG5cbiMrbmFtZTogbmFtZVxuPHBvaW50PiMrYmVnaW5fZXhhbXBsZVxuaGlcbiMr ZW5kX2V4YW1wbGVcbiIKKyAgICAgICAgICAgICAgKG9yZy1pZC1zdG9yZS1saW5rKSkpKQor ICAgIChzaG91bGQKKyAgICAgKGVxdWFsICcoImlkOmFiYyIgIkgxIikKKyAgICAgICAgICAg ICh0ZXN0LW9sLXN0b3JlZC1saW5rLXdpdGgtdGV4dCAiKiBIMTxwb2ludD5cbjpQUk9QRVJU SUVTOlxuOklEOiBhYmNcbjpFTkQ6XG4qKiBIMlxuIgorICAgICAgICAgICAgICAob3JnLWlk LXN0b3JlLWxpbmspKSkpKQorICA7OyB3aGVuIG5vdCB1c2luZyBjb250ZXh0LCBkZXNjcmlw dGlvbiBzaG91bGQgYmUgdGhlIHBhcmVudC9maWxlCisgIChsZXQgKChvcmctaWQtbGluay1j b25zaWRlci1wYXJlbnQtaWQgdCkKKyAgICAgICAgKG9yZy1pZC1saW5rLXVzZS1jb250ZXh0 IG5pbCkpCisgICAgKHNob3VsZAorICAgICAoZXF1YWwgJygiaWQ6YWJjIiAiSDEiKQorICAg ICAgICAgICAgKHRlc3Qtb2wtc3RvcmVkLWxpbmstd2l0aC10ZXh0ICIqIEgxXG46UFJPUEVS VElFUzpcbjpJRDogYWJjXG46RU5EOlxuKiogSDJcbjxwb2ludD4iCisgICAgICAgICAgICAg IChvcmctaWQtc3RvcmUtbGluaykpKSkKKyAgICAoc2hvdWxkCisgICAgIChsZXQgKChyZXN1 bHQgKHRlc3Qtb2wtc3RvcmVkLWxpbmstd2l0aC10ZXh0ICI6UFJPUEVSVElFUzpcbjpJRDog dG9wXG46RU5EOlxuOiogSDFcbjxwb2ludD4iCisgICAgICAgICAgICAgICAgICAgICAob3Jn LWlkLXN0b3JlLWxpbmspKSkpCisgICAgICAgKGVxdWFsICJpZDp0b3AiIChjYXIgcmVzdWx0 KSkKKyAgICAgICA7OyBzdHJpcCByYW5kb20gYnVmZmVyIGZpbGUgbmFtZQorICAgICAgIChl cXVhbCAib3JnLXRlc3QiIChzdWJzdHJpbmcgKGNhZHIgcmVzdWx0KSAwIDgpKSkpCisgICAg KHNob3VsZAorICAgICAoZXF1YWwgJygiaWQ6dG9wIiAidGl0bGUiKQorICAgICAgICAgICAg KHRlc3Qtb2wtc3RvcmVkLWxpbmstd2l0aC10ZXh0ICI6UFJPUEVSVElFUzpcbjpJRDogdG9w XG46RU5EOlxuIytUSVRMRTogdGl0bGVcblxuOiogSDFcbjxwb2ludD4iCisgICAgICAgICAg ICAgIChvcmctaWQtc3RvcmUtbGluaykpKSkpKQorCiAMCiA7OzsgUmFkaW8gVGFyZ2V0cwog Ci0tIAoyLjM5LjIgKEFwcGxlIEdpdC0xNDMpCgo= --0df3a46422d34d4b9bd194da11fba29a--