From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Vladimir Kazanov Newsgroups: gmane.emacs.bugs Subject: bug#69714: 30.0.50; ert-font-lock doesn't handle list of faces Date: Wed, 13 Mar 2024 17:04:23 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000e99df506138dc4c3" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5303"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 69714@debbugs.gnu.org To: Troy Brown Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Mar 13 18:06:59 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1rkS4B-0001AK-EL for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 13 Mar 2024 18:06:59 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rkS3i-0006wB-T5; Wed, 13 Mar 2024 13:06:30 -0400 Original-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 1rkS3f-0006vw-JB for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2024 13:06:27 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rkS3f-0001rg-B9 for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2024 13:06:27 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1rkS4E-0007JB-CJ for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2024 13:07:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Vladimir Kazanov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Mar 2024 17:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 69714 X-GNU-PR-Package: emacs Original-Received: via spool by 69714-submit@debbugs.gnu.org id=B69714.171034958128036 (code B ref 69714); Wed, 13 Mar 2024 17:07:02 +0000 Original-Received: (at 69714) by debbugs.gnu.org; 13 Mar 2024 17:06:21 +0000 Original-Received: from localhost ([127.0.0.1]:47245 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rkS3Y-0007I6-4l for submit@debbugs.gnu.org; Wed, 13 Mar 2024 13:06:21 -0400 Original-Received: from mail-lf1-f50.google.com ([209.85.167.50]:44542) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rkS3V-0007Hq-0E for 69714@debbugs.gnu.org; Wed, 13 Mar 2024 13:06:18 -0400 Original-Received: by mail-lf1-f50.google.com with SMTP id 2adb3069b0e04-512e4f4e463so104292e87.1 for <69714@debbugs.gnu.org>; Wed, 13 Mar 2024 10:05:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1710349475; x=1710954275; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=qkF7NUdfqrogwOAddc14gCsdLa4qJDKgJ8HqMK3FFQU=; b=Hc/qk8N3klfzGwAexiGTMHk/h8bj5mRPjnUr0QKh8M0MDx6FJnCzsF6C/3mO93mqBQ b5jN60cyslJwwkqo2pSxcCfvj0D9cH+CiBYLcAfQubieo+OS4Sj9mt4xjUNrQI1pIIFL y0M86wIaJHc4Eg0EJ8ERkmK7QUHGNJLRy6TtqOCVCG2VBrRUQZBX3xGF+KyVfNs1XedH kcASfeW6O5e9GVjX2eL7HAEt8H2nbTfWx6o4EDu15Oi529hb4hcvpuTklzmr7DLmlSnr 5gjKVB+0F/0ggz2IdEpw9vVyKDCNNuYGMi5ad/DyVNleBsVs6rPHv6hcNrkvN6GiqW9Q bIiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710349475; x=1710954275; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qkF7NUdfqrogwOAddc14gCsdLa4qJDKgJ8HqMK3FFQU=; b=S9dZDEywWDTAKHwUyZomAhbzjUIJ+lb8JJKz9rfF7Lojf2VBrzWvUCgX1poYv8ooME ZjSZtxoSRxjYkRTSNtSJLPcyzKrg3ux31uX+sibgutRhKK3WVsw4QXTMG2le/0f/MU9r Wbuohb1XtXF2BWMeFVHpAmquwmdC6ShjMeerKOMFPmHpDwnb/WXfMgnKlAmYIh44/+KU e+SyZ0tLrH80SDYJrrRP4LMZaqfPbwsWFZrl2t3YZOabaYZ3wCvmejnq0nH8O3c4qo44 zMDPmJgr5xfAib4C2SwO25edJxMef6MNqcHhdMrSgJrcPYz+v89lB0Wotu8Hv+SMSksk Hc2A== X-Gm-Message-State: AOJu0Yz48vbMzxemIC+RreR4HdfbY9khwu2TbSD3o57Zk4zshydw9cs8 CGnkgXhUg3qOQKvcpVWLF6hT08sWARUl0SBzXIxj/mBoxYyPwIoFOiIu1ilgRIeC2+5/b3kXlZ+ O/K6IegeBHjzgcDwxATj25d+thw== X-Google-Smtp-Source: AGHT+IGEUXPRsXbKOvl/UzoH3QtWCMAeUTDaDbaehg8m/qqlpZG+DbPCoU50OMzThhFk3etfqi6bgVSMB8Roo7WmlCg= X-Received: by 2002:ac2:5989:0:b0:512:f6a0:1311 with SMTP id w9-20020ac25989000000b00512f6a01311mr5273282lfn.47.1710349475216; Wed, 13 Mar 2024 10:04:35 -0700 (PDT) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:281556 Archived-At: --000000000000e99df506138dc4c3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks a lot! The suggestions really do make sense. Here's the final integrated patch, complete with updated tests and docs. If you're fine with it then I'll ask somebody to install it on master. PS I've got to write an additional announcement in the main mailing list inviting people to check the updated version out. On Wed, 13 Mar 2024 at 16:14, Troy Brown wrote: > > Hi Vlad, sorry for the delayed response. > > I haven't pushed my change which uses this package yet, as I was > struggling to get it working and didn't want to push failing tests. I > just discovered the package and was working on a regression test for a > bug fix involving font locking. This seemed like the perfect reason > to use your package. At the moment I only have this one > work-in-progress test, but I expect to use it more going forward. > > I did check out your patch and for my immediate needs, it worked > perfectly. Thanks! Additionally, I did experiment a little with the > multi-caret functionality, which is nice as I have a use for that. I > also experimented with the negation functionality (although I don't > have an immediate need for that), and did notice a couple things. The > first was that the assertion would be ignored if there was a space > between the negation symbol and the face. Also, if the actual and > expected faces didn't match and the negation flag was being used, it > acted like the negation was not indicated at all and failed the test. > I've included a diff below containing the changes I made which seemed > to address those concerns. > > diff --git a/lisp/emacs-lisp/ert-font-lock.el b/lisp/emacs-lisp/ert-font-= lock.el > index 06c90add9d3..1a5fe96fb09 100644 > --- a/lisp/emacs-lisp/ert-font-lock.el > +++ b/lisp/emacs-lisp/ert-font-lock.el > @@ -61,6 +61,7 @@ ert-font-lock--assertion-line-re > (group (zero-or-more (seq "^" (zero-or-more whitespace)))) > ;; optional negation of the face specification > (group (optional "!")) > + (zero-or-more whitespace) > ;; face symbol name or a list of symbols > (group (or (regexp ert-font-lock--face-symbol-re) > (regexp ert-font-lock--face-symbol-list-re)))) > @@ -354,7 +355,7 @@ ert-font-lock--check-faces > (when (symbolp expected-face) > (setq expected-face (list expected-face))) > > - (when (not (equal actual-face expected-face)) > + (when (and (not negation) (not (equal actual-face expected-face))) > (ert-fail > (list (format "Expected face %S, got %S on line %d column %d" > expected-face actual-face line-checked column-che= cked) > > > Thanks, > > Troy. > > On Tue, Mar 12, 2024 at 4:47=E2=80=AFPM Vladimir Kazanov wrote: > > > > Hi, > > > > I've attached a patch that handles face lists, fails on files without > > assertions and expands the parser a bit to support multiple carets per > > line. > > > > For faces it does the following: > > > > 1. Turn symbols into single element lists. > > 2. Parses face lists from the assertions. > > 3. Compare face lists using equas. > > > > Could you please check if this works for you? > > > > Thanks > > > > On Mon, 11 Mar 2024 at 08:36, Vladimir Kazanov wr= ote: > > > > > > Hi, > > > > > > Thanks for reporting this! I have a bunch of ert-font-lock > > > improvements in my local repo getting ready for submission, and can > > > look into your suggestions as well. > > > > > > Do you have your unit test code somewhere in a public repo? It'd be > > > great to think of further improvements to support your use case. > > > > > > Thanks, > > > Vlad > > > > > > On Sun, 10 Mar 2024 at 20:33, Troy Brown wrot= e: > > > > > > > > I'm trying to use this package to test out my tree-sitter mode, but= am > > > > running into an issue with lists of faces. It's possible that the > > > > face for a location in the buffer will contain a list of 1 or more > > > > faces. For example, when I use the ":override 'prepend" keyword in > > > > the call to treesit-font-lock-rules, even if only a single face is > > > > specified for the rule that matches that section of the buffer, thi= s > > > > will result in a list of one entry (i.e., "(face-name)"). > > > > > > > > When this happens, ert-font-lock fails to recognize that this match= es > > > > the face "face-name" (e.g., "^ face-name" will fail to match in thi= s > > > > case). I feel the tool should recognize a list containing a single > > > > face as matching the face. Even worse however, it appears > > > > ert-font-lock doesn't support a list of faces in the comment. I tr= ied > > > > to work around the original issue by using "^ (face-name)", but the > > > > tool silently ignores this, as it doesn't match the internal regula= r > > > > expression (which ended up allowing my test to pass without actuall= y > > > > checking anything). > > > > > > > > I can't figure out a way to use this tool in its current state due = to > > > > its lack of support for a list of faces. Also, I find that since i= t > > > > silently ignores incorrect comment syntax (e.g., "^face-name", "^ > > > > (face-name)"), it gives a false illusion that it's actually perform= ing > > > > those checks (and the checks are passing), when it's really just > > > > ignoring them. Maybe any comment line starting with a "^" or "<-" > > > > should be considered an assertion check and to fail if the rest of = the > > > > syntax is not as expected. Maybe it should also fail the test if n= o > > > > assertion checks are found in a source file or string. > > > > > > > > Even if the tool would allow a list of a single face to match the > > > > supplied face in the comment, I think it should also allow for > > > > multiple faces to be listed in the comment. I have other places wh= ere > > > > multiple faces are used (e.g., "(font-lock-constant-face > > > > font-lock-variable-name-face)" to highlight a constant variable), > > > > which would not be testable with the current state of the package. > > > > > > > > > > > > > > > > > > > > > -- > > > Regards, > > > > > > Vladimir Kazanov > > > > > > > > -- > > Regards, > > > > Vladimir Kazanov --=20 Regards, Vladimir Kazanov --000000000000e99df506138dc4c3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Improve-ert-font-lock-assertion-parser-Bug-69714.patch" Content-Disposition: attachment; filename="0001-Improve-ert-font-lock-assertion-parser-Bug-69714.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltq1t1l50 RnJvbSAxNzQ3NGY0YWExODcwMzRmZjY5N2U2NDFmNjk3OWJjNmY0OWEzMWQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWbGFkaW1pciBLYXphbm92IDx2ZWthemFub3ZAZ21haWwuY29t PgpEYXRlOiBUdWUsIDEyIE1hciAyMDI0IDExOjE0OjU0ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g SW1wcm92ZSBlcnQtZm9udC1sb2NrIGFzc2VydGlvbiBwYXJzZXIgKEJ1ZyM2OTcxNCkKCkZhaWwg b24gZmlsZXMgd2l0aCBubyBhc3NlcnRpb25zLCBwYXJzZXIgbm93IGFjY2VwdHMgbXVsdGlwbGUK Y2FyZXRzIHBlciBsaW5lIGFuZCBmYWNlIGxpc3RzOgoqIGxpc3AvZW1hY3MtbGlzcC9lcnQtZm9u dC1sb2NrLmVsOiBBc3NlcnRpb24gcGFyc2VyIGZpeC4KKiB0ZXN0L2xpc3AvZW1hY3MtbGlzcC9l cnQtZm9udC1sb2NrLXJlc291cmNlcy9uby1hc3NlcnRzLmpzOgoqIHRlc3QvbGlzcC9lbWFjcy1s aXNwL2VydC1mb250LWxvY2stdGVzdHMuZWw6IFVwZGF0ZSB1bml0IHRlc3RzLgoqIGRvYy9taXNj L2VydC50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KLS0tCiBkb2MvbWlzYy9lcnQudGV4aSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKysrLQogbGlzcC9lbWFjcy1saXNwL2Vy dC1mb250LWxvY2suZWwgICAgICAgICAgICAgIHwgIDczICsrKysrKysrLS0KIC4uLi9lcnQtZm9u dC1sb2NrLXJlc291cmNlcy9uby1hc3NlcnRzLmpzICAgICB8ICAgMiArCiB0ZXN0L2xpc3AvZW1h Y3MtbGlzcC9lcnQtZm9udC1sb2NrLXRlc3RzLmVsICAgfCAxMzcgKysrKysrKysrKysrKystLS0t CiA0IGZpbGVzIGNoYW5nZWQsIDE5OCBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L2xpc3AvZW1hY3MtbGlzcC9lcnQtZm9udC1sb2NrLXJlc291 cmNlcy9uby1hc3NlcnRzLmpzCgpkaWZmIC0tZ2l0IGEvZG9jL21pc2MvZXJ0LnRleGkgYi9kb2Mv bWlzYy9lcnQudGV4aQppbmRleCBiZDJhZDQ5NTE0Mi4uZjU1NTQxNGJmOGYgMTAwNjQ0Ci0tLSBh L2RvYy9taXNjL2VydC50ZXhpCisrKyBiL2RvYy9taXNjL2VydC50ZXhpCkBAIC05NTEsMTEgKzk1 MSwxMyBAQCBTeW50YXggSGlnaGxpZ2h0aW5nIFRlc3RzCiBAY29kZXtlcnQtZm9udC1sb2NrfSBw YWNrYWdlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGludHJvZHVjZSB1bml0IHRlc3RzCiBjaGVja2lu ZyBmYWNlIGFzc2lnbm1lbnQuICBUZXN0IGFzc2VydGlvbnMgYXJlIGluY2x1ZGVkIGluIGNvZGUt bGV2ZWwKIGNvbW1lbnRzIGRpcmVjdGx5IGFuZCBjYW4gYmUgcmVhZCBlaXRoZXIgZnJvbSBpbmxp bmUgc3RyaW5ncyBvciBmaWxlcy4KK1RoZSBwYXJzZXIgZXhwZWN0cyBpbnB1dCBzdHJpbmcgdG8g Y29udGFpbiBhdCBsZWFzdCBvbmUgYXNzZXJ0aW9uLgoKIFRlc3QgYXNzZXJ0aW9uIHBhcnNlciBl eHRyYWN0cyB0ZXN0cyBmcm9tIGNvbW1lbnQtb25seSBsaW5lcy4gIEV2ZXJ5Ci1jb21tZW50IGFz c2VydGlvbiBsaW5lIHN0YXJ0cyBlaXRoZXIgd2l0aCBhIGNhcmV0IChAc2FtcHtefSkgb3IgYW4K LWFycm93IChAc2FtcHs8LX0pLiAgQSBjYXJldC9hcnJvdyBzaG91bGQgYmUgZm9sbG93ZWQgaW1t ZWRpYXRlbHkgYnkgdGhlCi1uYW1lIG9mIGEgZmFjZSB0byBiZSBjaGVja2VkLgorY29tbWVudCBh c3NlcnRpb24gbGluZSBzdGFydHMgZWl0aGVyIHdpdGggYSBjYXJldCAoQHNhbXB7Xn0pIG9yIGFu IGFycm93CisoQHNhbXB7PC19KS4gIEEgc2luZ2xlIGNhcmV0L2Fycm93IG9yIGNhcmV0cyBzaG91 bGQgYmUgZm9sbG93ZWQKK2ltbWVkaWF0ZWx5IGJ5IHRoZSBuYW1lIG9mIGEgZmFjZSBvciBhIGxp c3Qgb2YgZmFjZXMgdG8gYmUgY2hlY2tlZAorYWdhaW5zdCB0aGUgQGNvZGV7OmZhY2V9IHByb3Bl cnR5IGF0IHBvaW50LgoKIFRoZSB0ZXN0IHRoZW4gY2hlY2tzIGlmIHRoZSBmaXJzdCBub24tYXNz ZXJ0aW9uIGNvbHVtbiBhYm92ZSB0aGUgY2FyZXQKIGNvbnRhaW5zIGEgZmFjZSBleHBlY3RlZCBi eSB0aGUgYXNzZXJ0aW9uOgpAQCAtOTY3LDYgKzk2OSwyNyBAQCBTeW50YXggSGlnaGxpZ2h0aW5n IFRlc3RzCiAvLyAgICAgICAgICAgICAgIF4gZm9udC1sb2NrLXB1bmN0dWF0aW9uLWZhY2UKIC8v IHRoaXMgaXMgbm90IGFuIGFzc2VydGlvbiwgaXQncyBqdXN0IGEgY29tbWVudAogLy8gICBeIGZv bnQtbG9jay1jb21tZW50LWZhY2UKKworLy8gbXVsdGlwbGUgY2FyZXRzIHBlciBsaW5lCisvLyBe Xl5eICAgICBeICAgIF4gZm9udC1sb2NrLWNvbW1lbnQtZmFjZQorQGVuZCBleGFtcGxlCisKK0Jv dGggc3ltYm9sLW9ubHkgQGNvZGV7OmZhY2V9IHByb3BlcnR5IHZhbHVlcyBhbmQgYXNzZXJ0aW9u IGZhY2UgdmFsdWVzCithcmUgbm9ybWFsaXplZCB0byBzaW5nbGUgZWxlbWVudCBsaXN0cyBzbyBh c3NlcnRpb25zIGJlbG93IGFyZQorZXF1aXZhbGVudDoKKworQGV4YW1wbGUKKy8vIHNpbmdsZQor Ly8gXiBmb250LWxvY2stY29tbWVudC1mYWNlCisvLyBzaW5nbGUKKy8vIF4gKGZvbnQtbG9jay1j b21tZW50LWZhY2UpCitAZW5kIGV4YW1wbGUKKworSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBm YWNlIGxpc3RzOgorCitAZXhhbXBsZQorLy8gVE9ETworLy8gXl5eXiAoZm9udC1sb2NrLWNvbW1l bnQtZmFjZSBobC10b2RvKQogQGVuZCBleGFtcGxlCgogVGhlIGFycm93IG1lYW5zIHRoYXQgdGhl IGZpcnN0IG5vbi1lbXB0eSBjb2x1bW4gb2YgdGhlIGFzc2VydGlvbiBsaW5lCmRpZmYgLS1naXQg YS9saXNwL2VtYWNzLWxpc3AvZXJ0LWZvbnQtbG9jay5lbCBiL2xpc3AvZW1hY3MtbGlzcC9lcnQt Zm9udC1sb2NrLmVsCmluZGV4IDI5MTE0NzEyZjkyLi5lMjMyNTYzNzkyOSAxMDA2NDQKLS0tIGEv bGlzcC9lbWFjcy1saXNwL2VydC1mb250LWxvY2suZWwKKysrIGIvbGlzcC9lbWFjcy1saXNwL2Vy dC1mb250LWxvY2suZWwKQEAgLTM5LDE2ICszOSwzMyBAQAogKHJlcXVpcmUgJ25ld2NvbW1lbnQp CiAocmVxdWlyZSAncGNhc2UpCgotKGRlZmNvbnN0IGVydC1mb250LWxvY2stLWFzc2VydGlvbi1y ZQorKGRlZmNvbnN0IGVydC1mb250LWxvY2stLWZhY2Utc3ltYm9sLXJlCisgIChyeCAob25lLW9y LW1vcmUgKG9yIGFscGhhbnVtZXJpYyAiLSIgIl8iICIuIikpKQorICAiQSBmYWNlIHN5bWJvbCBt YXRjaGluZyByZWdleC4iKQorCisoZGVmY29uc3QgZXJ0LWZvbnQtbG9jay0tZmFjZS1zeW1ib2wt bGlzdC1yZQorICAocnggIigiCisgICAgICAoKiB3aGl0ZXNwYWNlKQorICAgICAgKG9uZS1vci1t b3JlCisgICAgICAgKHNlcSAocmVnZXhwIGVydC1mb250LWxvY2stLWZhY2Utc3ltYm9sLXJlKQor ICAgICAgICAgICAgKCogd2hpdGVzcGFjZSkpKQorICAgICAgIikiKQorICAiQSBmYWNlIHN5bWJv bCBsaXN0IG1hdGNoaW5nIHJlZ2V4LiIpCisKKyhkZWZjb25zdCBlcnQtZm9udC1sb2NrLS1hc3Nl cnRpb24tbGluZS1yZQogICAocngKLSAgIDs7IGNvbHVtbiBzcGVjaWZpZXJzCisgICA7OyBsZWFk aW5nIGNvbHVtbiBhc3NlcnRpb24gKGFycm93L2NhcmV0KQogICAgKGdyb3VwIChvciAiXiIgIjwt IikpCi0gICAob25lLW9yLW1vcmUgIiAiKQorICAgKHplcm8tb3ItbW9yZSB3aGl0ZXNwYWNlKQor ICAgOzsgcG9zc2libGUgdG8gaGF2ZSBtYW55IGNhcmV0cyBvbiBhbiBhc3NlcnRpb24gbGluZQor ICAgKGdyb3VwICh6ZXJvLW9yLW1vcmUgKHNlcSAiXiIgKHplcm8tb3ItbW9yZSB3aGl0ZXNwYWNl KSkpKQogICAgOzsgb3B0aW9uYWwgbmVnYXRpb24gb2YgdGhlIGZhY2Ugc3BlY2lmaWNhdGlvbgog ICAgKGdyb3VwIChvcHRpb25hbCAiISIpKQotICAgOzsgZmFjZSBzeW1ib2wgbmFtZQotICAgKGdy b3VwIChvbmUtb3ItbW9yZSAob3IgYWxwaGFudW1lcmljICItIiAiXyIgIi4iKSkpKQotICAiQW4g ZXJ0LWZvbnQtbG9jayBhc3NlcnRpb24gcmVnZXguIikKKyAgICh6ZXJvLW9yLW1vcmUgd2hpdGVz cGFjZSkKKyAgIDs7IGZhY2Ugc3ltYm9sIG5hbWUgb3IgYSBsaXN0IG9mIHN5bWJvbHMKKyAgIChn cm91cCAob3IgKHJlZ2V4cCBlcnQtZm9udC1sb2NrLS1mYWNlLXN5bWJvbC1yZSkKKyAgICAgICAg ICAgICAgKHJlZ2V4cCBlcnQtZm9udC1sb2NrLS1mYWNlLXN5bWJvbC1saXN0LXJlKSkpKQorICAi QW4gZXJ0LWZvbnQtbG9jayBhc3NlcnRpb24gbGluZSByZWdleC4iKQoKIChkZWZ1biBlcnQtZm9u dC1sb2NrLS12YWxpZGF0ZS1tYWpvci1tb2RlIChtb2RlKQogICAiVmFsaWRhdGUgaWYgTU9ERSBp cyBhIHZhbGlkIG1ham9yIG1vZGUuIgpAQCAtMjEyLDcgKzIyOSw3IEBAIGVydC1mb250LWxvY2st LWxpbmUtYXNzZXJ0aW9uLXAKICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgKGJlZ2lubmluZy1vZi1s aW5lKQogICAgIChza2lwLXN5bnRheC1mb3J3YXJkICIgIikKLSAgICAocmUtc2VhcmNoLWZvcndh cmQgZXJ0LWZvbnQtbG9jay0tYXNzZXJ0aW9uLXJlCisgICAgKHJlLXNlYXJjaC1mb3J3YXJkIGVy dC1mb250LWxvY2stLWFzc2VydGlvbi1saW5lLXJlCiAgICAgICAgICAgICAgICAgICAgICAgIChs aW5lLWVuZC1wb3NpdGlvbikgdCAxKSkpCgogKGRlZnVuIGVydC1mb250LWxvY2stLWdvdG8tZmly c3QtY2hhciAoKQpAQCAtMjUyLDggKzI2OSw4IEBAIGVydC1mb250LWxvY2stLXBhcnNlLWNvbW1l bnRzCiAgICAgICAgICAgKHRocm93ICduZXh0bGluZSB0KSkKCgotICAgICAgICA7OyBDb2xsZWN0 IHRoZSBhc3NlcnRpb24KLSAgICAgICAgKHdoZW4gKHJlLXNlYXJjaC1mb3J3YXJkIGVydC1mb250 LWxvY2stLWFzc2VydGlvbi1yZQorICAgICAgICA7OyBDb2xsZWN0IHRoZSBmaXJzdCBsaW5lIGFz c2VydGlvbiAoY2FyZXQgb3IgYXJyb3cpCisgICAgICAgICh3aGVuIChyZS1zZWFyY2gtZm9yd2Fy ZCBlcnQtZm9udC1sb2NrLS1hc3NlcnRpb24tbGluZS1yZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpbmUtZW5kLXBvc2l0aW9uKSB0IDEpCgogICAgICAgICAgICh1bmxlc3Mg KD4gbGluZXRvY2hlY2sgLTEpCkBAIC0yNjYsMjEgKzI4MywzOCBAQCBlcnQtZm9udC1sb2NrLS1w YXJzZS1jb21tZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtICht YXRjaC1iZWdpbm5pbmcgMSkgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGVydC1mb250LWxvY2stLWdldC1maXJzdC1jaGFyLWNv bHVtbikpKQogICAgICAgICAgICAgICAgICA7OyBuZWdhdGUgdGhlIGZhY2U/Ci0gICAgICAgICAg ICAgICAgIChuZWdhdGlvbiAoc3RyaW5nLWVxdWFsIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGll cyAyKSAiISIpKQorICAgICAgICAgICAgICAgICAobmVnYXRpb24gKHN0cmluZy1lcXVhbCAobWF0 Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgMykgIiEiKSkKICAgICAgICAgICAgICAgICAgOzsgdGhl IGZhY2UgdGhhdCBpcyBzdXBwb3NlZCB0byBiZSBpbiB0aGUgcG9zaXRpb24gc3BlY2lmaWVkCi0g ICAgICAgICAgICAgICAgIChmYWNlIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAzKSkpCisg ICAgICAgICAgICAgICAgIChmYWNlIChyZWFkIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyA0 KSkpKQoKKyAgICAgICAgICAgIDs7IENvbGxlY3QgdGhlIGZpcnN0IGFzc2VydGlvbiBvbiB0aGUg bGluZQogICAgICAgICAgICAgKHB1c2ggKGxpc3QgOmxpbmUtY2hlY2tlZCBsaW5ldG9jaGVjawog ICAgICAgICAgICAgICAgICAgICAgICAgOmxpbmUtYXNzZXJ0IGN1cmxpbmUKICAgICAgICAgICAg ICAgICAgICAgICAgIDpjb2x1bW4tY2hlY2tlZCBjb2x1bW4tY2hlY2tlZAogICAgICAgICAgICAg ICAgICAgICAgICAgOmZhY2UgZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgOm5lZ2F0aW9u IG5lZ2F0aW9uKQotICAgICAgICAgICAgICAgICAgdGVzdHMpKSkpCisgICAgICAgICAgICAgICAg ICB0ZXN0cykKKworICAgICAgICAgICAgOzsgQ29sbGVjdCBhbGwgdGhlIG90aGVyIGxpbmUgY2Fy ZXRzIChpZiBwcmVzZW50KQorICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5n IDIpKQorICAgICAgICAgICAgKHdoaWxlIChlcXVhbCAoZm9sbG93aW5nLWNoYXIpID9eKQorICAg ICAgICAgICAgICAoc2V0cSBjb2x1bW4tY2hlY2tlZCAoLSAocG9pbnQpIChsaW5lLWJlZ2lubmlu Zy1wb3NpdGlvbikpKQorICAgICAgICAgICAgICAocHVzaCAobGlzdCA6bGluZS1jaGVja2VkIGxp bmV0b2NoZWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgIDpsaW5lLWFzc2VydCBjdXJsaW5l CisgICAgICAgICAgICAgICAgICAgICAgICAgIDpjb2x1bW4tY2hlY2tlZCBjb2x1bW4tY2hlY2tl ZAorICAgICAgICAgICAgICAgICAgICAgICAgICA6ZmFjZSBmYWNlCisgICAgICAgICAgICAgICAg ICAgICAgICAgIDpuZWdhdGlvbiBuZWdhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMp CisgICAgICAgICAgICAgIChmb3J3YXJkLWNoYXIpCisgICAgICAgICAgICAgIChza2lwLXN5bnRh eC1mb3J3YXJkICIgIikpKSkpCgogICAgICAgOzsgbmV4dCBsaW5lCiAgICAgICAoc2V0cSBjdXJs aW5lICgxKyBjdXJsaW5lKSkKICAgICAgIChmb3J3YXJkLWxpbmUgMSkpCgorICAgICh1bmxlc3Mg dGVzdHMKKyAgICAgICh1c2VyLWVycm9yICJObyB0ZXN0IGFzc2VydGlvbnMgZm91bmQiKSkKKwog ICAgIChyZXZlcnNlIHRlc3RzKSkpCgogKGRlZnVuIGVydC1mb250LWxvY2stLXBvaW50LWF0LWxp bmUtYW5kLWNvbHVtbiAobGluZSBjb2x1bW4pCkBAIC0zMDcsMjEgKzM0MSwzMCBAQCBlcnQtZm9u dC1sb2NrLS1jaGVjay1mYWNlcwogICAgIChsZXQqICgobGluZS1jaGVja2VkIChwbGlzdC1nZXQg dGVzdCA6bGluZS1jaGVja2VkKSkKICAgICAgICAgICAgKGxpbmUtYXNzZXJ0IChwbGlzdC1nZXQg dGVzdCA6bGluZS1hc3NlcnQpKQogICAgICAgICAgICAoY29sdW1uLWNoZWNrZWQgKHBsaXN0LWdl dCB0ZXN0IDpjb2x1bW4tY2hlY2tlZCkpCi0gICAgICAgICAgIChleHBlY3RlZC1mYWNlIChpbnRl cm4gKHBsaXN0LWdldCB0ZXN0IDpmYWNlKSkpCisgICAgICAgICAgIChleHBlY3RlZC1mYWNlIChw bGlzdC1nZXQgdGVzdCA6ZmFjZSkpCiAgICAgICAgICAgIChuZWdhdGlvbiAocGxpc3QtZ2V0IHRl c3QgOm5lZ2F0aW9uKSkKCiAgICAgICAgICAgIChhY3R1YWwtZmFjZSAoZ2V0LXRleHQtcHJvcGVy dHkgKGVydC1mb250LWxvY2stLXBvaW50LWF0LWxpbmUtYW5kLWNvbHVtbiBsaW5lLWNoZWNrZWQg Y29sdW1uLWNoZWNrZWQpICdmYWNlKSkKICAgICAgICAgICAgKGxpbmUtc3RyIChlcnQtZm9udC1s b2NrLS1nZXQtbGluZSBsaW5lLWNoZWNrZWQpKQogICAgICAgICAgICAobGluZS1hc3NlcnQtc3Ry IChlcnQtZm9udC1sb2NrLS1nZXQtbGluZSBsaW5lLWFzc2VydCkpKQoKLSAgICAgICh3aGVuIChu b3QgKGVxIGFjdHVhbC1mYWNlIGV4cGVjdGVkLWZhY2UpKQorICAgICAgOzsgbm9ybWFsaXplIGJv dGggZXhwZWN0ZWQgYW5kIHJlc3VsdGluZyBmYWNlIC0gdGhlc2UgY2FuIGJlCisgICAgICA7OyBl aXRoZXIgc3ltYm9scyBvciBsaXN0cyBvZiBzeW1ib2xzCisgICAgICAod2hlbiAoc3ltYm9scCBh Y3R1YWwtZmFjZSkKKyAgICAgICAgKHNldHEgYWN0dWFsLWZhY2UgKGxpc3QgYWN0dWFsLWZhY2Up KSkKKyAgICAgICh3aGVuIChzeW1ib2xwIGV4cGVjdGVkLWZhY2UpCisgICAgICAgIChzZXRxIGV4 cGVjdGVkLWZhY2UgKGxpc3QgZXhwZWN0ZWQtZmFjZSkpKQorCisgICAgICA7OyBmYWlsIHdoZW4g bGlzdHMgYXJlIG5vdCAnZXF1YWwgYW5kIHRoZSBhc3NlcnRpb24gaXMgKm5vdCBuZWdhdGVkKgor ICAgICAgKHdoZW4gKGFuZCAobm90IG5lZ2F0aW9uKSAobm90IChlcXVhbCBhY3R1YWwtZmFjZSBl eHBlY3RlZC1mYWNlKSkpCiAgICAgICAgIChlcnQtZmFpbAogICAgICAgICAgKGxpc3QgKGZvcm1h dCAiRXhwZWN0ZWQgZmFjZSAlUywgZ290ICVTIG9uIGxpbmUgJWQgY29sdW1uICVkIgogICAgICAg ICAgICAgICAgICAgICAgICBleHBlY3RlZC1mYWNlIGFjdHVhbC1mYWNlIGxpbmUtY2hlY2tlZCBj b2x1bW4tY2hlY2tlZCkKICAgICAgICAgICAgICAgIDpsaW5lIGxpbmUtc3RyCiAgICAgICAgICAg ICAgICA6YXNzZXJ0IGxpbmUtYXNzZXJ0LXN0cikpKQoKLSAgICAgICh3aGVuIChhbmQgbmVnYXRp b24gKGVxIGFjdHVhbC1mYWNlIGV4cGVjdGVkLWZhY2UpKQorICAgICAgOzsgZmFpbCB3aGVuIGxp c3RzIGFyZSAnZXF1YWwgYW5kIHRoZSBhc3NlcnRpb24gaXMgKm5lZ2F0ZWQqCisgICAgICAod2hl biAoYW5kIG5lZ2F0aW9uIChlcXVhbCBhY3R1YWwtZmFjZSBleHBlY3RlZC1mYWNlKSkKICAgICAg ICAgKGVydC1mYWlsCiAgICAgICAgICAobGlzdCAoZm9ybWF0ICJEaWQgbm90IGV4cGVjdCBmYWNl ICVTIGZhY2Ugb24gbGluZSAlZCwgY29sdW1uICVkIgogICAgICAgICAgICAgICAgICAgICAgICBh Y3R1YWwtZmFjZSBsaW5lLWNoZWNrZWQgY29sdW1uLWNoZWNrZWQpCmRpZmYgLS1naXQgYS90ZXN0 L2xpc3AvZW1hY3MtbGlzcC9lcnQtZm9udC1sb2NrLXJlc291cmNlcy9uby1hc3NlcnRzLmpzIGIv dGVzdC9saXNwL2VtYWNzLWxpc3AvZXJ0LWZvbnQtbG9jay1yZXNvdXJjZXMvbm8tYXNzZXJ0cy5q cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWVhZTlhZjIxMmYKLS0t IC9kZXYvbnVsbAorKysgYi90ZXN0L2xpc3AvZW1hY3MtbGlzcC9lcnQtZm9udC1sb2NrLXJlc291 cmNlcy9uby1hc3NlcnRzLmpzCkBAIC0wLDAgKzEsMiBAQAordmFyIGFiYyA9IGZ1bmN0aW9uKGQp IHsKK307CmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvZW1hY3MtbGlzcC9lcnQtZm9udC1sb2NrLXRl c3RzLmVsIGIvdGVzdC9saXNwL2VtYWNzLWxpc3AvZXJ0LWZvbnQtbG9jay10ZXN0cy5lbAppbmRl eCBlMGJhMWU5NDliMi4uMDQ2OWE1Yzc0OTAgMTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9lbWFjcy1s aXNwL2VydC1mb250LWxvY2stdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL2VtYWNzLWxpc3AvZXJ0 LWZvbnQtbG9jay10ZXN0cy5lbApAQCAtMTM4LDEzICsxMzgsMjQgQEAgdGVzdC1saW5lLWNvbW1l bnQtcC0tYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvdWxkIChlcnQtZm9udC1sb2NrLS1saW5lLWNv bW1lbnQtcCkpKSkKCisoZXJ0LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21tZW50cy0tbm8tYXNzZXJ0 aW9uLWVycm9yICgpCisgIChsZXQqICgoc3RyICIKK25vdF9hbl9hc3NlcnRpb24KK3JhbmRvbV9z eW1ib2wKKyIpKQorICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgICAoaW5zZXJ0IHN0cikKKyAg ICAgIChqYXZhc2NyaXB0LW1vZGUpCisKKyAgICAgIChzaG91bGQtZXJyb3IgKGVydC1mb250LWxv Y2stLXBhcnNlLWNvbW1lbnRzKSA6dHlwZSAndXNlci1lcnJvcikpKSkKKwogKGVydC1kZWZ0ZXN0 IHRlc3QtcGFyc2UtY29tbWVudHMtLXNpbmdsZS1saW5lLWVycm9yICgpCiAgIChsZXQqICgoc3Ry ICIvLyBeIGZhY2UuZmFjZTEiKSkKICAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgKGluc2Vy dCBzdHIpCiAgICAgICAoamF2YXNjcmlwdC1tb2RlKQoKLSAgICAgIChzaG91bGQtZXJyb3IgKGVy dC1mb250LWxvY2stLXBhcnNlLWNvbW1lbnRzKSkpKSkKKyAgICAgIChzaG91bGQtZXJyb3IgKGVy dC1mb250LWxvY2stLXBhcnNlLWNvbW1lbnRzKSA6dHlwZSAndXNlci1lcnJvcikpKSkKCiAoZXJ0 LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21tZW50cy0tc2luZ2xlLWxpbmUtc2luZ2xlLWNhcmV0ICgp CiAgIChsZXQqICgoc3RyICIKQEAgLTE1OSw3ICsxNzAsNDYgQEAgdGVzdC1wYXJzZS1jb21tZW50 cy0tc2luZ2xlLWxpbmUtc2luZ2xlLWNhcmV0CiAgICAgICAoc2V0cSBhc3NlcnRzIChlcnQtZm9u dC1sb2NrLS1wYXJzZS1jb21tZW50cykpCiAgICAgICAoc2hvdWxkIChlcWwgKGxlbmd0aCBhc3Nl cnRzKSAxKSkKICAgICAgIChzaG91bGQgKGVxdWFsIChjYXIgYXNzZXJ0cykKLSAgICAgICAgICAg ICAgICAgICAgICcoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCAzIDpjb2x1bW4tY2hlY2tl ZCAzIDpmYWNlICJmYWNlLmZhY2UxIiA6bmVnYXRpb24gbmlsKSkpKSkpCisgICAgICAgICAgICAg ICAgICAgICAnKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQg MyA6ZmFjZSBmYWNlLmZhY2UxIDpuZWdhdGlvbiBuaWwpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHRl c3QtcGFyc2UtY29tbWVudHMtLXNpbmdsZS1saW5lLW1hbnktY2FyZXRzICgpCisgIChsZXQqICgo c3RyICIKK211bHRpcGxlY2FyZXRzCisvL15eXiBeXiBeIGZhY2UuZmFjZTEKKyIpCisgICAgICAg ICBhc3NlcnRzKQorICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgICAoaW5zZXJ0IHN0cikKKyAg ICAgIChqYXZhc2NyaXB0LW1vZGUpCisKKyAgICAgIChzZXRxIGFzc2VydHMgKGVydC1mb250LWxv Y2stLXBhcnNlLWNvbW1lbnRzKSkKKyAgICAgIChzaG91bGQgKGVxbCAobGVuZ3RoIGFzc2VydHMp IDYpKQorICAgICAgKHNob3VsZCAoZXF1YWwgYXNzZXJ0cworICAgICAgICAgICAgICAgICAgICAg JygoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCAzIDpjb2x1bW4tY2hlY2tlZCAyIDpmYWNl IGZhY2UuZmFjZTEgOm5lZ2F0aW9uIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5l LWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgMyA6ZmFjZSBmYWNlLmZh Y2UxIDpuZWdhdGlvbiBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2Vk IDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDQgOmZhY2UgZmFjZS5mYWNlMSA6bmVn YXRpb24gbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5l LWFzc2VydCAzIDpjb2x1bW4tY2hlY2tlZCA2IDpmYWNlIGZhY2UuZmFjZTEgOm5lZ2F0aW9uIG5p bCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQg MyA6Y29sdW1uLWNoZWNrZWQgNyA6ZmFjZSBmYWNlLmZhY2UxIDpuZWdhdGlvbiBuaWwpCisgICAg ICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVt bi1jaGVja2VkIDkgOmZhY2UgZmFjZS5mYWNlMSA6bmVnYXRpb24gbmlsKSkpKSkpKQorCisoZXJ0 LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21tZW50cy0tZmFjZS1saXN0ICgpCisgIChsZXQqICgoc3Ry ICIKK2ZhY2VsaXN0CisvLyBeIChmYWNlMSBmYWNlMikKKy8vIF4gIShmYWNlMyBmYWNlNCkKKy8v IF4gKGZhY2U1KQorIikKKyAgICAgICAgIGFzc2VydHMpCisgICAgKHdpdGgtdGVtcC1idWZmZXIK KyAgICAgIChpbnNlcnQgc3RyKQorICAgICAgKGphdmFzY3JpcHQtbW9kZSkKKworICAgICAgKHNl dHEgYXNzZXJ0cyAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMpKQorICAgICAgKHNob3Vs ZCAoZXFsIChsZW5ndGggYXNzZXJ0cykgMykpCisgICAgICAoc2hvdWxkIChlcXVhbCBhc3NlcnRz CisgICAgICAgICAgICAgICAgICAgICAnKCg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMg OmNvbHVtbi1jaGVja2VkIDMgOmZhY2UgKGZhY2UxIGZhY2UyKSA6bmVnYXRpb24gbmlsKQorICAg ICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCA0IDpjb2x1 bW4tY2hlY2tlZCAzIDpmYWNlIChmYWNlMyBmYWNlNCkgOm5lZ2F0aW9uIHQpCisgICAgICAgICAg ICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDUgOmNvbHVtbi1jaGVj a2VkIDMgOmZhY2UgKGZhY2U1KSA6bmVnYXRpb24gbmlsKSkpKSkpKQoKIChlcnQtZGVmdGVzdCB0 ZXN0LXBhcnNlLWNvbW1lbnRzLS1jYXJldC1uZWdhdGlvbiAoKQogICAobGV0KiAoKHN0ciAiCkBA IC0xNzUsMTEgKzIyNSwxMSBAQCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1jYXJldC1uZWdhdGlvbgog ICAgICAgKHNldHEgYXNzZXJ0cyAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMpKQogICAg ICAgKHNob3VsZCAoZXFsIChsZW5ndGggYXNzZXJ0cykgMikpCiAgICAgICAoc2hvdWxkIChlcXVh bCBhc3NlcnRzCi0gICAgICAgICAgICAgICAgICAgICAnKCg6bGluZS1jaGVja2VkIDIgOmxpbmUt YXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDMgOmZhY2UgImZhY2UiIDpuZWdhdGlvbiB0KQotICAg ICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCA0IDpjb2x1 bW4tY2hlY2tlZCAzIDpmYWNlICJmYWNlIiA6bmVnYXRpb24gbmlsKSkpKSkpKQorICAgICAgICAg ICAgICAgICAgICAgJygoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCAzIDpjb2x1bW4tY2hl Y2tlZCAzIDpmYWNlIGZhY2UgOm5lZ2F0aW9uIHQpCisgICAgICAgICAgICAgICAgICAgICAgICg6 bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDQgOmNvbHVtbi1jaGVja2VkIDMgOmZhY2UgZmFj ZSA6bmVnYXRpb24gbmlsKSkpKSkpKQoKCi0oZXJ0LWRlZnRlc3QgdGVzdC1wYXJzZS1jb21tZW50 cy0tc2luZ2xlLWxpbmUtbXVsdGlwbGUtY2FyZXRzICgpCisoZXJ0LWRlZnRlc3QgdGVzdC1wYXJz ZS1jb21tZW50cy0tc2luZ2xlLWxpbmUtbXVsdGlwbGUtYXNzZXJ0LWxpbmVzICgpCiAgIChsZXQq ICgoc3RyICIKIGZpcnN0CiAvLyBeIGZhY2UxCkBAIC0xOTYsMTIgKzI0NiwxMiBAQCB0ZXN0LXBh cnNlLWNvbW1lbnRzLS1zaW5nbGUtbGluZS1tdWx0aXBsZS1jYXJldHMKICAgICAgIChzZXRxIGFz c2VydHMgKGVydC1mb250LWxvY2stLXBhcnNlLWNvbW1lbnRzKSkKICAgICAgIChzaG91bGQgKGVx bCAobGVuZ3RoIGFzc2VydHMpIDQpKQogICAgICAgKHNob3VsZCAoZXF1YWwgYXNzZXJ0cwotICAg ICAgICAgICAgICAgICAgICAgJygoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCAzIDpjb2x1 bW4tY2hlY2tlZCAzIDpmYWNlICJmYWNlMSIgOm5lZ2F0aW9uIG5pbCkKLSAgICAgICAgICAgICAg ICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgNCA6Y29sdW1uLWNoZWNrZWQg NyA6ZmFjZSAiZmFjZS5mYWNlMiIgOm5lZ2F0aW9uIG5pbCkKLSAgICAgICAgICAgICAgICAgICAg ICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgNSA6Y29sdW1uLWNoZWNrZWQgNyA6ZmFj ZSAiZmFjZS1mYWNlLmZhY2UzIiA6bmVnYXRpb24gbmlsKQotICAgICAgICAgICAgICAgICAgICAg ICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCA2IDpjb2x1bW4tY2hlY2tlZCA3IDpmYWNl ICJmYWNlX2ZhY2UuZmFjZTQiIDpuZWdhdGlvbiBuaWwpKSkpKSkpCisgICAgICAgICAgICAgICAg ICAgICAnKCg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDMg OmZhY2UgZmFjZTEgOm5lZ2F0aW9uIG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5l LWNoZWNrZWQgMiA6bGluZS1hc3NlcnQgNCA6Y29sdW1uLWNoZWNrZWQgNyA6ZmFjZSBmYWNlLmZh Y2UyIDpuZWdhdGlvbiBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2Vk IDIgOmxpbmUtYXNzZXJ0IDUgOmNvbHVtbi1jaGVja2VkIDcgOmZhY2UgZmFjZS1mYWNlLmZhY2Uz IDpuZWdhdGlvbiBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDIg OmxpbmUtYXNzZXJ0IDYgOmNvbHVtbi1jaGVja2VkIDcgOmZhY2UgZmFjZV9mYWNlLmZhY2U0IDpu ZWdhdGlvbiBuaWwpKSkpKSkpCgotKGVydC1kZWZ0ZXN0IHRlc3QtcGFyc2UtY29tbWVudHMtLW11 bHRpcGxlLWxpbmUtbXVsdGlwbGUtY2FyZXRzICgpCisoZXJ0LWRlZnRlc3QgdGVzdC1wYXJzZS1j b21tZW50cy0tbXVsdGlwbGUtbGluZS1tdWx0aXBsZS1hc3NlcnQtbGluZXMgKCkKICAgKGxldCog KChzdHIgIgogZmlyc3QKIC8vIF4gZmFjZTEKQEAgLTIxOCw5ICsyNjgsOSBAQCB0ZXN0LXBhcnNl LWNvbW1lbnRzLS1tdWx0aXBsZS1saW5lLW11bHRpcGxlLWNhcmV0cwogICAgICAgKHNldHEgYXNz ZXJ0cyAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMpKQogICAgICAgKHNob3VsZCAoZXFs IChsZW5ndGggYXNzZXJ0cykgMykpCiAgICAgICAoc2hvdWxkIChlcXVhbCBhc3NlcnRzCi0gICAg ICAgICAgICAgICAgICAgICAnKCg6bGluZS1jaGVja2VkIDIgIDpsaW5lLWFzc2VydCAzIDpjb2x1 bW4tY2hlY2tlZCAzIDpmYWNlICJmYWNlMSIgOm5lZ2F0aW9uIG5pbCkKLSAgICAgICAgICAgICAg ICAgICAgICAgKDpsaW5lLWNoZWNrZWQgNCAgOmxpbmUtYXNzZXJ0IDUgOmNvbHVtbi1jaGVja2Vk IDMgOmZhY2UgImZhY2UyIiA6bmVnYXRpb24gbmlsKQotICAgICAgICAgICAgICAgICAgICAgICAo OmxpbmUtY2hlY2tlZCA0ICA6bGluZS1hc3NlcnQgNiA6Y29sdW1uLWNoZWNrZWQgNSA6ZmFjZSAi ZmFjZTMiIDpuZWdhdGlvbiBuaWwpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAnKCg6bGlu ZS1jaGVja2VkIDIgIDpsaW5lLWFzc2VydCAzIDpjb2x1bW4tY2hlY2tlZCAzIDpmYWNlIGZhY2Ux IDpuZWdhdGlvbiBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDQg IDpsaW5lLWFzc2VydCA1IDpjb2x1bW4tY2hlY2tlZCAzIDpmYWNlIGZhY2UyIDpuZWdhdGlvbiBu aWwpCisgICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2VkIDQgIDpsaW5lLWFzc2Vy dCA2IDpjb2x1bW4tY2hlY2tlZCA1IDpmYWNlIGZhY2UzIDpuZWdhdGlvbiBuaWwpKSkpKSkpCgoK IChlcnQtZGVmdGVzdCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1hcnJvdy1zaW5nbGUtbGluZS1zaW5n bGUgKCkKQEAgLTIzNiw3ICsyODYsNyBAQCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1hcnJvdy1zaW5n bGUtbGluZS1zaW5nbGUKICAgICAgIChzZXRxIGFzc2VydHMgKGVydC1mb250LWxvY2stLXBhcnNl LWNvbW1lbnRzKSkKICAgICAgIChzaG91bGQgKGVxbCAobGVuZ3RoIGFzc2VydHMpIDEpKQogICAg ICAgKHNob3VsZCAoZXF1YWwgKGNhciBhc3NlcnRzKQotICAgICAgICAgICAgICAgICAgICAgJyg6 bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDAgOmZhY2UgImZh Y2UxIiA6bmVnYXRpb24gbmlsKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAnKDpsaW5lLWNo ZWNrZWQgMiA6bGluZS1hc3NlcnQgMyA6Y29sdW1uLWNoZWNrZWQgMCA6ZmFjZSBmYWNlMSA6bmVn YXRpb24gbmlsKSkpKSkpCgoKIChlcnQtZGVmdGVzdCB0ZXN0LXBhcnNlLWNvbW1lbnRzLWFycm93 LW11bHRpcGxlLWxpbmUtc2luZ2xlICgpCkBAIC0yNTQsOSArMzA0LDkgQEAgdGVzdC1wYXJzZS1j b21tZW50cy1hcnJvdy1tdWx0aXBsZS1saW5lLXNpbmdsZQogICAgICAgKHNldHEgYXNzZXJ0cyAo ZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMpKQogICAgICAgKHNob3VsZCAoZXFsIChsZW5n dGggYXNzZXJ0cykgMykpCiAgICAgICAoc2hvdWxkIChlcXVhbCBhc3NlcnRzCi0gICAgICAgICAg ICAgICAgICAgICAnKCg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVj a2VkIDAgOmZhY2UgImZhY2UxIiA6bmVnYXRpb24gbmlsKQotICAgICAgICAgICAgICAgICAgICAg ICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCA0IDpjb2x1bW4tY2hlY2tlZCAyIDpmYWNl ICJmYWNlMiIgOm5lZ2F0aW9uIG5pbCkKLSAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNo ZWNrZWQgMiA6bGluZS1hc3NlcnQgNSA6Y29sdW1uLWNoZWNrZWQgNCA6ZmFjZSAiZmFjZTMiIDpu ZWdhdGlvbiBuaWwpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAnKCg6bGluZS1jaGVja2Vk IDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDAgOmZhY2UgZmFjZTEgOm5lZ2F0aW9u IG5pbCkKKyAgICAgICAgICAgICAgICAgICAgICAgKDpsaW5lLWNoZWNrZWQgMiA6bGluZS1hc3Nl cnQgNCA6Y29sdW1uLWNoZWNrZWQgMiA6ZmFjZSBmYWNlMiA6bmVnYXRpb24gbmlsKQorICAgICAg ICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCA1IDpjb2x1bW4t Y2hlY2tlZCA0IDpmYWNlIGZhY2UzIDpuZWdhdGlvbiBuaWwpKSkpKSkpCgogKGVydC1kZWZ0ZXN0 IHRlc3QtcGFyc2UtY29tbWVudHMtLW5vbi1hc3NlcnQtY29tbWVudC1zaW5nbGUgKCkKICAgKGxl dCogKChzdHIgIgpAQCAtMjcxLDcgKzMyMSw3IEBAIHRlc3QtcGFyc2UtY29tbWVudHMtLW5vbi1h c3NlcnQtY29tbWVudC1zaW5nbGUKICAgICAgIChzZXRxIGFzc2VydHMgKGVydC1mb250LWxvY2st LXBhcnNlLWNvbW1lbnRzKSkKICAgICAgIChzaG91bGQgKGVxbCAobGVuZ3RoIGFzc2VydHMpIDEp KQogICAgICAgKHNob3VsZCAoZXF1YWwgKGNhciBhc3NlcnRzKQotICAgICAgICAgICAgICAgICAg ICAgJyg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDQgOmZh Y2UgImNvbW1lbnQtZmFjZSIgOm5lZ2F0aW9uIG5pbCkpKSkpKQorICAgICAgICAgICAgICAgICAg ICAgJyg6bGluZS1jaGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDQgOmZh Y2UgY29tbWVudC1mYWNlIDpuZWdhdGlvbiBuaWwpKSkpKSkKCiAoZXJ0LWRlZnRlc3QgdGVzdC1w YXJzZS1jb21tZW50cy0tbm9uLWFzc2VydC1jb21tZW50LW11bHRpcGxlICgpCiAgIChsZXQqICgo c3RyICIKQEAgLTI4OCw5ICszMzgsOSBAQCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1ub24tYXNzZXJ0 LWNvbW1lbnQtbXVsdGlwbGUKICAgICAgIChzZXRxIGFzc2VydHMgKGVydC1mb250LWxvY2stLXBh cnNlLWNvbW1lbnRzKSkKICAgICAgIChzaG91bGQgKGVxbCAobGVuZ3RoIGFzc2VydHMpIDMpKQog ICAgICAgKHNob3VsZCAoZXF1YWwgYXNzZXJ0cwotICAgICAgICAgICAgICAgICAgICAgJygoOmxp bmUtY2hlY2tlZCAyIDpsaW5lLWFzc2VydCAzIDpjb2x1bW4tY2hlY2tlZCA0IDpmYWNlICJjb21t ZW50LWZhY2UiIDpuZWdhdGlvbiBuaWwpCi0gICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1j aGVja2VkIDIgOmxpbmUtYXNzZXJ0IDQgOmNvbHVtbi1jaGVja2VkIDEwIDpmYWNlICJjb21tZW50 LWZhY2UiIDpuZWdhdGlvbiBuaWwpCi0gICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVj a2VkIDIgOmxpbmUtYXNzZXJ0IDUgOmNvbHVtbi1jaGVja2VkIDE4IDpmYWNlICJjb21tZW50LWZh Y2UiIDpuZWdhdGlvbiBuaWwpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAnKCg6bGluZS1j aGVja2VkIDIgOmxpbmUtYXNzZXJ0IDMgOmNvbHVtbi1jaGVja2VkIDQgOmZhY2UgY29tbWVudC1m YWNlIDpuZWdhdGlvbiBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgICg6bGluZS1jaGVja2Vk IDIgOmxpbmUtYXNzZXJ0IDQgOmNvbHVtbi1jaGVja2VkIDEwIDpmYWNlIGNvbW1lbnQtZmFjZSA6 bmVnYXRpb24gbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAoOmxpbmUtY2hlY2tlZCAyIDps aW5lLWFzc2VydCA1IDpjb2x1bW4tY2hlY2tlZCAxOCA6ZmFjZSBjb21tZW50LWZhY2UgOm5lZ2F0 aW9uIG5pbCkpKSkpKSkKCgogKGVydC1kZWZ0ZXN0IHRlc3QtcGFyc2UtY29tbWVudHMtLW11bHRp bGluZS1jb21tZW50LXNpbmdsZSAoKQpAQCAtMzA4LDcgKzM1OCw3IEBAIHRlc3QtcGFyc2UtY29t bWVudHMtLW11bHRpbGluZS1jb21tZW50LXNpbmdsZQogICAgICAgKHNldHEgYXNzZXJ0cyAoZXJ0 LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMpKQogICAgICAgKHNob3VsZCAoZXFsIChsZW5ndGgg YXNzZXJ0cykgMSkpCiAgICAgICAoc2hvdWxkIChlcXVhbCAoY2FyIGFzc2VydHMpCi0gICAgICAg ICAgICAgICAgICAgICAnKDpsaW5lLWNoZWNrZWQgMyA6bGluZS1hc3NlcnQgNCA6Y29sdW1uLWNo ZWNrZWQgMyA6ZmFjZSAiY29tbWVudC1mYWNlIiA6bmVnYXRpb24gbmlsKSkpKSkpCisgICAgICAg ICAgICAgICAgICAgICAnKDpsaW5lLWNoZWNrZWQgMyA6bGluZS1hc3NlcnQgNCA6Y29sdW1uLWNo ZWNrZWQgMyA6ZmFjZSBjb21tZW50LWZhY2UgOm5lZ2F0aW9uIG5pbCkpKSkpKQoKIChlcnQtZGVm dGVzdCB0ZXN0LXBhcnNlLWNvbW1lbnRzLS1tdWx0aWxpbmUtY29tbWVudC1tdWx0aXBsZSAoKQog ICAobGV0KiAoKHN0ciAiCkBAIC0zMjcsMTMgKzM3NywzMSBAQCB0ZXN0LXBhcnNlLWNvbW1lbnRz LS1tdWx0aWxpbmUtY29tbWVudC1tdWx0aXBsZQogICAgICAgKHNldHEgYXNzZXJ0cyAoZXJ0LWZv bnQtbG9jay0tcGFyc2UtY29tbWVudHMpKQogICAgICAgKHNob3VsZCAoZXFsIChsZW5ndGggYXNz ZXJ0cykgMikpCiAgICAgICAoc2hvdWxkIChlcXVhbCBhc3NlcnRzCi0gICAgICAgICAgICAgICAg ICAgICAnKCg6bGluZS1jaGVja2VkIDMgOmxpbmUtYXNzZXJ0IDQgOmNvbHVtbi1jaGVja2VkIDMg OmZhY2UgImNvbW1lbnQtZmFjZSIgOm5lZ2F0aW9uIG5pbCkKLSAgICAgICAgICAgICAgICAgICAg ICAgKDpsaW5lLWNoZWNrZWQgNSA6bGluZS1hc3NlcnQgNiA6Y29sdW1uLWNoZWNrZWQgNCA6ZmFj ZSAiY29tbWVudC1mYWNlIiA6bmVnYXRpb24gbmlsKSkpKSkpKQorICAgICAgICAgICAgICAgICAg ICAgJygoOmxpbmUtY2hlY2tlZCAzIDpsaW5lLWFzc2VydCA0IDpjb2x1bW4tY2hlY2tlZCAzIDpm YWNlIGNvbW1lbnQtZmFjZSA6bmVnYXRpb24gbmlsKQorICAgICAgICAgICAgICAgICAgICAgICAo OmxpbmUtY2hlY2tlZCA1IDpsaW5lLWFzc2VydCA2IDpjb2x1bW4tY2hlY2tlZCA0IDpmYWNlIGNv bW1lbnQtZmFjZSA6bmVnYXRpb24gbmlsKSkpKSkpKQoKIDs7OyBTeW50YXggaGlnaGxpZ2h0aW5n IGFzc2VydGlvbiB0ZXN0cwogOzsKCi0oZXJ0LWRlZnRlc3QgdGVzdC1zeW50YXgtaGlnaGxpZ2h0 LWlubGluZS0tY2FyZXQtbXVsdGlwbGUtZmFjZXMgKCkKKyhlcnQtZGVmdGVzdCB0ZXN0LXN5bnRh eC1oaWdobGlnaHQtaW5saW5lLS1mYWNlLWxpc3QgKCkKKyAgKGxldCAoKHN0ciAiCit2YXIgYWJj ID0gZnVuY3Rpb24oZCkgeworLy8gICBeICh0ZXN0LWZhY2UtMiB0ZXN0LWZhY2UtMSBmb250LWxv Y2stdmFyaWFibGUtbmFtZS1mYWNlKQorfTsKKworIikpCisgICAgKHdpdGgtdGVtcC1idWZmZXIK KyAgICAgIChpbnNlcnQgc3RyKQorICAgICAgKGphdmFzY3JpcHQtbW9kZSkKKyAgICAgIChmb250 LWxvY2stZW5zdXJlKQorCisgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0eSAocG9pbnQtbWlu KSAocG9pbnQtbWF4KSAndGVzdC1mYWNlLTEpCisgICAgICAoYWRkLWZhY2UtdGV4dC1wcm9wZXJ0 eSAocG9pbnQtbWluKSAocG9pbnQtbWF4KSAndGVzdC1mYWNlLTIpCisKKyAgICAgIChlcnQtZm9u dC1sb2NrLS1jaGVjay1mYWNlcworICAgICAgIChlcnQtZm9udC1sb2NrLS1wYXJzZS1jb21tZW50 cykpKSkpCisKKyhlcnQtZGVmdGVzdCB0ZXN0LXN5bnRheC1oaWdobGlnaHQtaW5saW5lLS1jYXJl dC1tdWx0aXBsZS1hc3NlcnRpb25zICgpCiAgIChsZXQgKChzdHIgIgogdmFyIGFiYyA9IGZ1bmN0 aW9uKGQpIHsKIC8vICAgXiBmb250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlCkBAIC0zNjQsNiAr NDMyLDE5IEBAIHRlc3Qtc3ludGF4LWhpZ2hsaWdodC1pbmxpbmUtLWNhcmV0LXdyb25nLWZhY2UK ICAgICAgIChzaG91bGQtZXJyb3IgKGVydC1mb250LWxvY2stLWNoZWNrLWZhY2VzCiAgICAgICAg ICAgICAgICAgICAgICAoZXJ0LWZvbnQtbG9jay0tcGFyc2UtY29tbWVudHMpKSkpKSkKCisoZXJ0 LWRlZnRlc3QgdGVzdC1zeW50YXgtaGlnaGxpZ2h0LWlubGluZS0tY2FyZXQtbmVnYXRlZC13cm9u Zy1mYWNlICgpCisgIChsZXQqICgoc3RyICIKK3ZhciBhYmMgPSBmdW5jdGlvbihkKSB7CisvLyAg IF4gIW5vdC1hLWZhY2UKK307CisiKSkKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgKGlu c2VydCBzdHIpCisgICAgICAoamF2YXNjcmlwdC1tb2RlKQorICAgICAgKGZvbnQtbG9jay1lbnN1 cmUpCisKKyAgICAgIChlcnQtZm9udC1sb2NrLS1jaGVjay1mYWNlcworICAgICAgIChlcnQtZm9u dC1sb2NrLS1wYXJzZS1jb21tZW50cykpKSkpCgogKGVydC1kZWZ0ZXN0IHRlc3Qtc3ludGF4LWhp Z2hsaWdodC1pbmxpbmUtLWNvbW1lbnQtZmFjZSAoKQogICAobGV0KiAoKHN0ciAiCkBAIC00NTUs NiArNTM2LDEyIEBAIHRlc3QtbWFjcm8tdGVzdC0tZmlsZQogICBqYXZhc2NyaXB0LW1vZGUKICAg ImNvcnJlY3QuanMiKQoKKyhlcnQtZm9udC1sb2NrLWRlZnRlc3QtZmlsZSB0ZXN0LW1hY3JvLXRl c3QtLWZpbGUtbm8tYXNzZXJ0cworICAgICJDaGVjayBmYWlsaW5nIG9uIGZpbGVzIHdpdGhvdXQg YXNzZXJ0aW9ucyIKKyAgOmV4cGVjdGVkLXJlc3VsdCA6ZmFpbGVkCisgIGphdmFzY3JpcHQtbW9k ZQorICAibm8tYXNzZXJ0cy5qcyIpCisKIChlcnQtZm9udC1sb2NrLWRlZnRlc3QtZmlsZSB0ZXN0 LW1hY3JvLXRlc3QtLWZpbGUtZmFpbGluZwogICAgICJUZXN0IHJlYWRpbmcgd3JvbmcgYXNzZXJ0 aW9ucyBmcm9tIGEgZmlsZSIKICAgOmV4cGVjdGVkLXJlc3VsdCA6ZmFpbGVkCi0tCjIuMzQuMQo= --000000000000e99df506138dc4c3--