From mboxrd@z Thu Jan 1 00:00:00 1970 From: Petter Subject: Re: gnu: Add syncthing. Date: Fri, 16 Dec 2016 13:48:57 +0100 Message-ID: References: <2d54ddb40494e3c6229e2a464ffe02c3@mykolab.ch> <20161216015222.GA23115@jasmine> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_b0b3c3d18eadade784de2d0acda47722" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:40626) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cHrwm-0006Wf-KT for guix-devel@gnu.org; Fri, 16 Dec 2016 07:49:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cHrwf-0004L5-U8 for guix-devel@gnu.org; Fri, 16 Dec 2016 07:49:12 -0500 Received: from mx.kolabnow.com ([95.128.36.1]:52436 helo=mx-out01.mykolab.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cHrwf-0004JZ-3n for guix-devel@gnu.org; Fri, 16 Dec 2016 07:49:05 -0500 In-Reply-To: <20161216015222.GA23115@jasmine> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Leo Famulari Cc: guix-devel@gnu.org --=_b0b3c3d18eadade784de2d0acda47722 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2016-12-16 02:52, Leo Famulari wrote: > On Thu, Dec 15, 2016 at 10:06:59PM +0100, Petter wrote: >> Hi again, >> >> I've prefixed most of the packages with "golang-" now. However, there >> are >> some >> packages already starting with "golang-", f.ex. >> "golang-org-x-text-unicode-norm", >> and I left those alone. It's inconsistent, but I felt this was >> preferable to >> names like "golang-golang-org-x-text-unicode-norm". What do you think? > > That's the right way. It fits the package naming guidelines: > > https://www.gnu.org/software/guix/manual/html_node/Package-Naming.html I'm able to interpret your answer both ways, should I make it "golang-golang-org-x-text-unicode-norm"? >> Finally, there's a telemetry configuration in Syncthing. It is opt-in; >> but it will ask the user after a few hours if they want to join. The >> plan is to disable the question, however I suspect I've messed up the >> build system in that area, so this takes some more looking in to. > > Personally, I'm fine with the upstream "opt-in" nag warning. It only > shows up when you open the Syncthing web interface; it's not an > intrusive desktop "notification". Once the user has said "yes" or "no", > it doesn't appear again until Syncthing makes a change to what > information they collect. > > But, if people think our package should never ask, I don't mind if we > disable the request, as long as we share our changes with the Syncthing > project and they don't notice anything broken. I'll make an attempt at this while the jury is out, primarily to retrieve the ability to edit files. (Either I broke it, or I need to learn how to use (snippet). > Many of my comments below are about tedious things. Let us know if you > are getting sick of working on these packages, and I will help :) This > includes improving the descriptions. Yes! Help please. The meta-data part is tricky and time consuming, I'd rather spend my Guix time on the build system than descriptions etc. Synopsis and descriptions are just stuff i found on their home-page. >> Date: Thu, 15 Dec 2016 21:42:03 +0100 >> Subject: [PATCH] gnu: Add Syncthing. >> >> * gnu/packages/syncthing.scm: New file. > > Cool! > >> +(define-public syncthing > >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/syncthing/syncthing/") >> + (commit (string-append "v" version)))) >> + (file-name (string-append name "-" version >> "-checkout")) > > We should use the Syncthing release tarball: > > https://github.com/syncthing/syncthing/releases/download/v0.14.14/syncthing-source-v0.14.14.tar.gz Totally agree! However, tarballs are currently unsupported... due to, hm, let's say "because very good reasons noone can be blamed for, particularly and especially not me". Ok, I messed up the build system :P Removed too much code apparently. I'm working on getting this back. >> + (arguments >> + `(#:import-path "github.com/syncthing/syncthing" > > What do you think about having the go-build-system try to automatically > generate the import-path based on the source URL, with the option for > the packager to set it manually, as shown here? > > For many of the packages in this patch (which will eventually be split > into one package per patch ;) ), that auto-generated import-path > could be correct. > > I think that an (arguments) field indicates that the package's build > scripts have deviated from the standard. If a Guix build system > requires > all of its packages to do something in (arguments), the build system > should be extended :) This is my goal, and I tried to accomplish this initially, because as you can see for git checkouts most of the time import-path is url minus scheme://. But I was unable to retrieve the url in the build phases. So I did it like this instead, to get something that worked; also something like #:import-path is required where import-path can't be derived from the url. I would need concrete help with this, that is getting the url and perhaps what (method) was used. >> + #:phases >> + (modify-phases %standard-phases >> + (replace 'delete-files >> + (lambda _ >> + (delete-file-recursively >> "src/github.com/syncthing/syncthing/vendor"))) >> + >> + (replace 'build >> + (lambda* (#:key inputs #:allow-other-keys) >> + (with-directory-excursion >> "src/github.com/syncthing/syncthing" >> + (zero? (system* "go" "run" "build.go" "install" >> "syncthing" "-no-upgrade"))))) >> + >> + (replace 'install >> + (lambda _ >> + (copy-recursively >> "src/github.com/syncthing/syncthing/bin/" >> + (string-append (assoc-ref %outputs >> "out") "/bin")) >> + (copy-recursively "pkg" >> + (string-append (assoc-ref %outputs >> "out") "/pkg")) >> + (copy-recursively "src" >> + (string-append (assoc-ref %outputs >> "out") "/src"))))))) >> + > > Does this package need to use custom build and install phases? Yes. They use their own build program (build.go) and arguments. And the resulting binary is put in a non-standard location, "src/github.com/syncthing/syncthing/bin". If they had put it in "bin/" overriding this phase wouldn't be necessary. >> +(define-public golang-github-com-audriusbutkevicius-go-nat-pmp >> + (let ((commit "452c97607362b2ab5a7839b8d1704f0396b640ca")) > > Don't forget the revision counter :) Oh, I didn't see the need for it, with version being: "20160522.452c976". Should version really be: "20160522-1.452c976"? I don't see revision here contributing any value. >> +(define-public golang-github-com-bkaradzic-go-lz4 >> + (package >> + (name "golang-github-com-bkaradzic-go-lz4") >> + (version "1.0.0") >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/bkaradzic/go-lz4") >> + (commit >> "74ddf82598bc4745b965729e9c6a463bedd33049"))) > > For packages that we build from a Git tag (rather than an untagged > commit), you should do (commit (string-append "v" version)). Right. I've attached an updated patch with this. > Although, if there is a release tarball, it's preferable to use it. Sure, we can use tarballs when this is supported :P >> +(define-public golang-github-com-calmh-xdr >> + (let ((commit "f9b9f8f7aa27725f5cabb699bd9099ca7ce09143") >> + (revision "1")) >> + (package >> + (name "golang-github-com-calmh-xdr") >> + (version (string-append "2.0.0-" revision "." (string-take >> commit 7))) >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/calmh/xdr") >> + (commit commit))) > > You could also fetch this one with the Git tag, or use the tarball. > >> +(define-public golang-github-com-cznic-bufs >> + (let ((commit "3dcccbd7064a1689f9c093a988ea11ac00e21f51")) >> + (package >> + (name "golang-github-com-cznic-bufs") >> + (version (string-append "20160818." (string-take commit 7))) > > Is this string '20160818' the date of the commit? If the package has no > releases, we use '0.0.0' in place of the version. Yes. I figure this is best because some later project we'll package may be pinned to an earlier commit of a library, and then what? Incrementing the revision number would suggest this was of newer date, when it's not, and make the older commit appear as the newest version of the two to Guix. Projects not pinned to a library version will then use whatever commit was added last rather than the newest. >> + (arguments >> + `(#:import-path "github.com/cznic/internal/slice" >> + #:unpack-path "github.com/cznic/internal")) > > Is it too much to wonder if both the import-path and the unpack-path > could be auto-generated in cases like this? :) We should consider this together with the url: (url (string-append "https://github.com/cznic/internal")) "slice" is here a directory/package in the repository. For github.com we could probably assume that the repo is github.com/account/repo, but other domains may have different layouts. Also keeping in mind that the requested package could be a subpackage, "github.com/cznic/internal/slice/tricks". For github.com this would suggest we use url of the subpackage in the recipe, otherwise we don't have the import-path, but this url is not retreivable (404 Not Found). And then we would need for (git-fetch) to cut the url after the repo part. At this point I think we're at a place we don't want to be. I think the best we can do is only to skip #:unpack-path in these scenarios, and unpack according to domain and path of the url, as long as domain and path matches the start of the import-path. But as mentioned earlier, I don't know how to access the url in the build phases. I like that you're looking for simplifying the recipes, this is my goal too. And I'm sure we can automate more. Thanks for this thorough review! :) On 2016-12-16 02:52, Leo Famulari wrote: > On Thu, Dec 15, 2016 at 10:06:59PM +0100, Petter wrote: >> Hi again, >> >> I've prefixed most of the packages with "golang-" now. However, there >> are >> some >> packages already starting with "golang-", f.ex. >> "golang-org-x-text-unicode-norm", >> and I left those alone. It's inconsistent, but I felt this was >> preferable to >> names like "golang-golang-org-x-text-unicode-norm". What do you think? > > That's the right way. It fits the package naming guidelines: > > https://www.gnu.org/software/guix/manual/html_node/Package-Naming.html > >> Finally, there's a telemetry configuration in Syncthing. It is opt-in; >> but it will ask the user after a few hours if they want to join. The >> plan is to disable the question, however I suspect I've messed up the >> build system in that area, so this takes some more looking in to. > > Personally, I'm fine with the upstream "opt-in" nag warning. It only > shows up when you open the Syncthing web interface; it's not an > intrusive desktop "notification". Once the user has said "yes" or "no", > it doesn't appear again until Syncthing makes a change to what > information they collect. > > But, if people think our package should never ask, I don't mind if we > disable the request, as long as we share our changes with the Syncthing > project and they don't notice anything broken. > > Many of my comments below are about tedious things. Let us know if you > are getting sick of working on these packages, and I will help :) This > includes improving the descriptions. > >> Date: Thu, 15 Dec 2016 21:42:03 +0100 >> Subject: [PATCH] gnu: Add Syncthing. >> >> * gnu/packages/syncthing.scm: New file. > > Cool! > >> +(define-public syncthing > >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/syncthing/syncthing/") >> + (commit (string-append "v" version)))) >> + (file-name (string-append name "-" version >> "-checkout")) > > We should use the Syncthing release tarball: > > https://github.com/syncthing/syncthing/releases/download/v0.14.14/syncthing-source-v0.14.14.tar.gz > >> + (arguments >> + `(#:import-path "github.com/syncthing/syncthing" > > What do you think about having the go-build-system try to automatically > generate the import-path based on the source URL, with the option for > the packager to set it manually, as shown here? > > For many of the packages in this patch (which will eventually be split > into one package per patch ;) ), that auto-generated import-path > could be correct. > > I think that an (arguments) field indicates that the package's build > scripts have deviated from the standard. If a Guix build system > requires > all of its packages to do something in (arguments), the build system > should be extended :) > >> + #:phases >> + (modify-phases %standard-phases >> + (replace 'delete-files >> + (lambda _ >> + (delete-file-recursively >> "src/github.com/syncthing/syncthing/vendor"))) >> + >> + (replace 'build >> + (lambda* (#:key inputs #:allow-other-keys) >> + (with-directory-excursion >> "src/github.com/syncthing/syncthing" >> + (zero? (system* "go" "run" "build.go" "install" >> "syncthing" "-no-upgrade"))))) >> + >> + (replace 'install >> + (lambda _ >> + (copy-recursively >> "src/github.com/syncthing/syncthing/bin/" >> + (string-append (assoc-ref %outputs >> "out") "/bin")) >> + (copy-recursively "pkg" >> + (string-append (assoc-ref %outputs >> "out") "/pkg")) >> + (copy-recursively "src" >> + (string-append (assoc-ref %outputs >> "out") "/src"))))))) >> + > > Does this package need to use custom build and install phases? > >> +(define-public golang-github-com-audriusbutkevicius-go-nat-pmp >> + (let ((commit "452c97607362b2ab5a7839b8d1704f0396b640ca")) > > Don't forget the revision counter :) > >> +(define-public golang-github-com-bkaradzic-go-lz4 >> + (package >> + (name "golang-github-com-bkaradzic-go-lz4") >> + (version "1.0.0") >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/bkaradzic/go-lz4") >> + (commit >> "74ddf82598bc4745b965729e9c6a463bedd33049"))) > > For packages that we build from a Git tag (rather than an untagged > commit), you should do (commit (string-append "v" version)). > > Although, if there is a release tarball, it's preferable to use it. > >> +(define-public golang-github-com-calmh-xdr >> + (let ((commit "f9b9f8f7aa27725f5cabb699bd9099ca7ce09143") >> + (revision "1")) >> + (package >> + (name "golang-github-com-calmh-xdr") >> + (version (string-append "2.0.0-" revision "." (string-take >> commit 7))) >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/calmh/xdr") >> + (commit commit))) > > You could also fetch this one with the Git tag, or use the tarball. > >> +(define-public golang-github-com-cznic-bufs >> + (let ((commit "3dcccbd7064a1689f9c093a988ea11ac00e21f51")) >> + (package >> + (name "golang-github-com-cznic-bufs") >> + (version (string-append "20160818." (string-take commit 7))) > > Is this string '20160818' the date of the commit? If the package has no > releases, we use '0.0.0' in place of the version. > >> + (arguments >> + `(#:import-path "github.com/cznic/internal/slice" >> + #:unpack-path "github.com/cznic/internal")) > > Is it too much to wonder if both the import-path and the unpack-path > could be auto-generated in cases like this? :) --=_b0b3c3d18eadade784de2d0acda47722 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-gnu-Add-Syncthing.patch Content-Disposition: attachment; filename=0001-gnu-Add-Syncthing.patch; size=59013 RnJvbSA3NjFmNGM2ZjgyMjFkN2YwODk1OTE1OGUyY2ExODY2MzA2NWI4ZmFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXR0ZXIgPHBldHRlckBteWtvbGFiLmNoPgpEYXRlOiBGcmks IDE2IERlYyAyMDE2IDEzOjA4OjQyICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZ251OiBBZGQgU3lu Y3RoaW5nLgoKKiBnbnUvcGFja2FnZXMvc3luY3RoaW5nLnNjbTogTmV3IGZpbGUuCi0tLQogZ251 L3BhY2thZ2VzL3N5bmN0aGluZy5zY20gfCAxMjU3ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTI1NyBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgZ251L3BhY2thZ2VzL3N5bmN0aGluZy5zY20KCmRpZmYgLS1naXQg YS9nbnUvcGFja2FnZXMvc3luY3RoaW5nLnNjbSBiL2dudS9wYWNrYWdlcy9zeW5jdGhpbmcuc2Nt Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhODYxZTUKLS0tIC9kZXYvbnVs bAorKysgYi9nbnUvcGFja2FnZXMvc3luY3RoaW5nLnNjbQpAQCAtMCwwICsxLDEyNTcgQEAKKzs7 OyBHTlUgR3VpeCAtLS0gRnVuY3Rpb25hbCBwYWNrYWdlIG1hbmFnZW1lbnQgZm9yIEdOVQorOzs7 IENvcHlyaWdodCDCqSAyMDE2IExlbyBGYW11bGFyaSA8bGVvQGZhbXVsYXJpLm5hbWU+Cis7Ozsg Q29weXJpZ2h0IMKpIDIwMTYgUGV0dGVyIDxwZXR0ZXJAbXlrb2xhYi5jaD4KKzs7OworOzs7IFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7OzsgR05VIEd1aXggaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorOzs7IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKzs7OyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7Cis7OzsgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7OyBh bG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoZ251IHBhY2thZ2VzIHN5bmN0aGluZykKKyAgIzp1 c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBnbykKKyAgIzp1c2UtbW9kdWxlIChndWl4IHBh Y2thZ2VzKQorICAjOnVzZS1tb2R1bGUgKGd1aXggZG93bmxvYWQpCisgICM6dXNlLW1vZHVsZSAo Z3VpeCBnaXQtZG93bmxvYWQpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBsaWNlbnNlcykKKyAgIzp1 c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ29sYW5nKSkKKworKGRlZmluZS1wdWJsaWMgc3luY3Ro aW5nCisgIChwYWNrYWdlCisgICAgKG5hbWUgInN5bmN0aGluZyIpCisgICAgKHZlcnNpb24gIjAu MTQuMTQiKQorICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAobWV0aG9kIGdpdC1m ZXRjaCkKKyAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAg ICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vc3luY3RoaW5nL3N5bmN0aGluZy8iKQorICAg ICAgICAgICAgICAgICAgICAoY29tbWl0IChzdHJpbmctYXBwZW5kICJ2IiB2ZXJzaW9uKSkpKQor ICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZlcnNpb24g Ii1jaGVja291dCIpKQorICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAoYmFz ZTMyICIxYzl4N2o2cGJiZDNpMzRudmlzdzcwdjJsM2xscDNkaHc1Y3ZkNzJqZ3gzZ20wajN2MzF5 IikpKSkKKyAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAoaW5wdXRzCisg ICAgIGAoKCJnaXRodWIuY29tL0F1ZHJpdXNCdXRrZXZpY2l1cy9nby1uYXQtcG1wIgorICAgICAg ICAsZ29sYW5nLWdpdGh1Yi1jb20tYXVkcml1c2J1dGtldmljaXVzLWdvLW5hdC1wbXApCisgICAg ICAgKCJnaXRodWIuY29tL3ZpdHJ1bi9xYXJ0L2NvZGluZyIgLGdvbGFuZy1naXRodWItY29tLXZp dHJ1bi1xYXJ0LWNvZGluZykKKyAgICAgICAoImdpdGh1Yi5jb20vdml0cnVuL3FhcnQvZ2YyNTYi ICxnb2xhbmctZ2l0aHViLWNvbS12aXRydW4tcWFydC1nZjI1NikKKyAgICAgICAoImdpdGh1Yi5j b20vdml0cnVuL3FhcnQvcXIiICxnb2xhbmctZ2l0aHViLWNvbS12aXRydW4tcWFydC1xcikKKyAg ICAgICAoImdpdGh1Yi5jb20vdGhlamVyZi9zdXR1cmUiICxnb2xhbmctZ2l0aHViLWNvbS10aGVq ZXJmLXN1dHVyZSkKKyAgICAgICAoImdpdGh1Yi5jb20vc3luZHRyL2dvbGV2ZWxkYiIgLGdvbGFu Zy1naXRodWItY29tLXN5bmR0ci1nb2xldmVsZGIpCisgICAgICAgKCJnaXRodWIuY29tL3Nhc2hh LXMvZ28tZGVhZGxvY2siICxnb2xhbmctZ2l0aHViLWNvbS1zYXNoYS1zLWdvLWRlYWRsb2NrKQor ICAgICAgICgiZ2l0aHViLmNvbS9yY3Jvd2xleS9nby1tZXRyaWNzIiAsZ29sYW5nLWdpdGh1Yi1j b20tcmNyb3dsZXktZ28tbWV0cmljcykKKyAgICAgICAoImdpdGh1Yi5jb20vbWluaW8vc2hhMjU2 LXNpbWQiICxnb2xhbmctZ2l0aHViLWNvbS1taW5pby1zaGEyNTYtc2ltZCkKKyAgICAgICAoImdp dGh1Yi5jb20va2FyZGlhbm9zL29zZXh0IiAsZ29sYW5nLWdpdGh1Yi1jb20ta2FyZGlhbm9zLW9z ZXh0KQorICAgICAgICgiZ2l0aHViLmNvbS9qdWp1L3JhdGVsaW1pdCIgLGdvbGFuZy1naXRodWIt Y29tLWp1anUtcmF0ZWxpbWl0KQorICAgICAgICgiZ2l0aHViLmNvbS9qYWNrcGFsL2dhdGV3YXki ICxnb2xhbmctZ2l0aHViLWNvbS1qYWNrcGFsLWdhdGV3YXkpCisgICAgICAgKCJnaXRodWIuY29t L2dvZ28vcHJvdG9idWYiICxnb2xhbmctZ2l0aHViLWNvbS1nb2dvLXByb3RvYnVmKQorICAgICAg ICgiZ2l0aHViLmNvbS9nb2J3YXMvZ2xvYiIgLGdvbGFuZy1naXRodWItY29tLWdvYndhcy1nbG9i KQorICAgICAgICgiZ2l0aHViLmNvbS9jYWxtaC94ZHIiICxnb2xhbmctZ2l0aHViLWNvbS1jYWxt aC14ZHIpCisgICAgICAgKCJnaXRodWIuY29tL2NhbG1oL2x1aG4iICxnb2xhbmctZ2l0aHViLWNv bS1jYWxtaC1sdWhuKQorICAgICAgICgiZ2l0aHViLmNvbS9jYWxtaC9kdSIgLGdvbGFuZy1naXRo dWItY29tLWNhbG1oLWR1KQorICAgICAgICgiZ2l0aHViLmNvbS9ia2FyYWR6aWMvZ28tbHo0IiAs Z29sYW5nLWdpdGh1Yi1jb20tYmthcmFkemljLWdvLWx6NCkKKyAgICAgICAoImdpdGh1Yi5jb20v Z29sYW5nL3NuYXBweSIgLGdvbGFuZy1naXRodWItY29tLWdvbGFuZy1zbmFwcHkpCisgICAgICAg KCJnb2xhbmcub3JnL3gvY3J5cHRvL2JjcnlwdCIgLGdvbGFuZy1vcmcteC1jcnlwdG8tYmNyeXB0 KQorICAgICAgICgiZ29sYW5nLm9yZy94L2NyeXB0by9ibG93ZmlzaCIgLGdvbGFuZy1vcmcteC1j cnlwdG8tYmxvd2Zpc2gpCisgICAgICAgKCJnb2xhbmcub3JnL3gvdGV4dC90cmFuc2Zvcm0iICxn b2xhbmctb3JnLXgtdGV4dC10cmFuc2Zvcm0pCisgICAgICAgKCJnb2xhbmcub3JnL3gvdGV4dC91 bmljb2RlL25vcm0iICxnb2xhbmctb3JnLXgtdGV4dC11bmljb2RlLW5vcm0pCisgICAgICAgKCJn b2xhbmcub3JnL3gvbmV0L3Byb3h5IiAsZ29sYW5nLW9yZy14LW5ldC1wcm94eSkKKyAgICAgICAo ImdvbGFuZy5vcmcveC9uZXQvYnBmIiAsZ29sYW5nLW9yZy14LW5ldC1icGYpCisgICAgICAgKCJn b2xhbmcub3JnL3gvbmV0L2lwdjYiICxnb2xhbmctb3JnLXgtbmV0LWlwdjYpCisgICAgICAgKCJn b2xhbmcub3JnL3gvbmV0L2ludGVybmFsL2lhbmEiICxnb2xhbmctb3JnLXgtbmV0LWludGVybmFs LWlhbmEpCisgICAgICAgKCJnb2xhbmcub3JnL3gvbmV0L2ludGVybmFsL25ldHJlZmxlY3QiCisg ICAgICAgICxnb2xhbmctb3JnLXgtbmV0LWludGVybmFsLW5ldHJlZmxlY3QpKSkKKyAgICAoYXJn dW1lbnRzCisgICAgIGAoIzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS9zeW5jdGhpbmcvc3luY3Ro aW5nIgorICAgICAgICM6cGhhc2VzCisgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBo YXNlcworICAgICAgICAgKHJlcGxhY2UgJ2RlbGV0ZS1maWxlcworICAgICAgICAgICAobGFtYmRh IF8KKyAgICAgICAgICAgICAoZGVsZXRlLWZpbGUtcmVjdXJzaXZlbHkgInNyYy9naXRodWIuY29t L3N5bmN0aGluZy9zeW5jdGhpbmcvdmVuZG9yIikpKQorCisgICAgICAgICAocmVwbGFjZSAnYnVp bGQKKyAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IGlucHV0cyAjOmFsbG93LW90aGVyLWtleXMp CisgICAgICAgICAgICAgKHdpdGgtZGlyZWN0b3J5LWV4Y3Vyc2lvbiAic3JjL2dpdGh1Yi5jb20v c3luY3RoaW5nL3N5bmN0aGluZyIKKyAgICAgICAgICAgICAgICh6ZXJvPyAoc3lzdGVtKiAiZ28i ICJydW4iICJidWlsZC5nbyIgImluc3RhbGwiICJzeW5jdGhpbmciICItbm8tdXBncmFkZSIpKSkp KQorCisgICAgICAgICAocmVwbGFjZSAnaW5zdGFsbAorICAgICAgICAgICAobGFtYmRhIF8KKyAg ICAgICAgICAgICAoY29weS1yZWN1cnNpdmVseSAic3JjL2dpdGh1Yi5jb20vc3luY3RoaW5nL3N5 bmN0aGluZy9iaW4vIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBw ZW5kIChhc3NvYy1yZWYgJW91dHB1dHMgIm91dCIpICIvYmluIikpCisgICAgICAgICAgICAgKGNv cHktcmVjdXJzaXZlbHkgInBrZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Ry aW5nLWFwcGVuZCAoYXNzb2MtcmVmICVvdXRwdXRzICJvdXQiKSAiL3BrZyIpKQorICAgICAgICAg ICAgIChjb3B5LXJlY3Vyc2l2ZWx5ICJzcmMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHN0cmluZy1hcHBlbmQgKGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikgIi9zcmMiKSkpKSkp KQorCisgICAgKHN5bm9wc2lzICJDb250aW51b3VzIEZpbGUgU3luY2hyb25pemF0aW9uIikKKyAg ICAoZGVzY3JpcHRpb24gIlRoaXMgaXMgdGhlIFN5bmN0aGluZyBwcm9qZWN0IHdoaWNoIHB1cnN1 ZXMgdGhlIGZvbGxvd2luZyBnb2FsczoKKworICAgIDEuIERlZmluZSBhIHByb3RvY29sIGZvciBz eW5jaHJvbml6YXRpb24gb2YgYSBmb2xkZXIgYmV0d2VlbiBhIG51bWJlciBvZiBjb2xsYWJvcmF0 aW5nIGRldmljZXMuIFRoaXMgcHJvdG9jb2wgc2hvdWxkIGJlIHdlbGwgZGVmaW5lZCwgdW5hbWJp Z3VvdXMsIGVhc2lseSB1bmRlcnN0b29kLCBmcmVlIHRvIHVzZSwgZWZmaWNpZW50LCBzZWN1cmUg YW5kIGxhbmd1YWdlIG5ldXRyYWwuIFRoaXMgaXMgY2FsbGVkIHRoZSBCbG9jayBFeGNoYW5nZSBQ cm90b2NvbC4KKworICAgIDIuIFByb3ZpZGUgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiB0 byBkZW1vbnN0cmF0ZSB0aGUgdXNhYmlsaXR5IG9mIHNhaWQgcHJvdG9jb2wuIFRoaXMgaXMgdGhl IHN5bmN0aGluZyB1dGlsaXR5LiBXZSBob3BlIHRoYXQgYWx0ZXJuYXRpdmUsIGNvbXBhdGlibGUg aW1wbGVtZW50YXRpb25zIG9mIHRoZSBwcm90b2NvbCB3aWxsIGFyaXNlLgorCitUaGUgdHdvIGFy ZSBldm9sdmluZyB0b2dldGhlcjsgdGhlIHByb3RvY29sIGlzIG5vdCB0byBiZSBjb25zaWRlcmVk IHN0YWJsZSB1bnRpbCBTeW5jdGhpbmcgMS4wIGlzIHJlbGVhc2VkLCBhdCB3aGljaCBwb2ludCBp dCBpcyBsb2NrZWQgZG93biBmb3IgaW5jb21wYXRpYmxlIGNoYW5nZXMiKQorICAgIChob21lLXBh Z2UgImh0dHBzOi8vZ2l0aHViLmNvbS9zeW5jdGhpbmcvc3luY3RoaW5nIikKKyAgICAobGljZW5z ZSBtcGwyLjApKSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLWdpdGh1Yi1jb20tYXVkcml1c2J1 dGtldmljaXVzLWdvLW5hdC1wbXAKKyAgKGxldCAoKGNvbW1pdCAiNDUyYzk3NjA3MzYyYjJhYjVh NzgzOWI4ZDE3MDRmMDM5NmI2NDBjYSIpKQorICAgIChwYWNrYWdlCisgICAgICAobmFtZSAiZ29s YW5nLWdpdGh1Yi1jb20tYXVkcml1c2J1dGtldmljaXVzLWdvLW5hdC1wbXAiKQorICAgICAgKHZl cnNpb24gKHN0cmluZy1hcHBlbmQgIjIwMTYwNTIyIiAoc3RyaW5nLXRha2UgY29tbWl0IDcpKSkK KyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNo KQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAg ICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vQXVkcml1c0J1dGtldmljaXVzL2dvLW5hdC1w bXAiKQorICAgICAgICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAg ICAgICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVuZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tv dXQiKSkKKyAgICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAgIChiYXNlMzIg IjFhY2NtcGwxbGxrMTZhMTlubHl5OTkxZnFyZ2ZheTZsNTNnYjY0aGdtZGZtcWxqZHZiazciKSkp KQorICAgICAgKGJ1aWxkLXN5c3RlbSBnby1idWlsZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRz CisgICAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRodWIuY29tL0F1ZHJpdXNCdXRrZXZpY2l1cy9n by1uYXQtcG1wIikpCisgICAgICAoc3lub3BzaXMgIlBvcnQgbWFwcGluZyBhbmQgZGlzY292ZXJ5 IG9mIHRoZSBleHRlcm5hbCBJUCBhZGRyZXNzIikKKyAgICAgIChkZXNjcmlwdGlvbiAiR28gY2xp ZW50IGZvciB0aGUgTkFULVBNUCBpbnRlcm5ldCBwcm90b2NvbCBmb3IgcG9ydCBtYXBwaW5nIGFu ZCBkaXNjb3ZlcmluZyB0aGUgZXh0ZXJuYWwgSVAgYWRkcmVzcyBvZiBhIGZpcmV3YWxsIikKKyAg ICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9BdWRyaXVzQnV0a2V2aWNpdXMvZ28t bmF0LXBtcCIpCisgICAgICAobGljZW5zZSBhc2wyLjApKSkpCisKKyhkZWZpbmUtcHVibGljIGdv bGFuZy1naXRodWItY29tLWJrYXJhZHppYy1nby1sejQKKyAgKHBhY2thZ2UKKyAgICAobmFtZSAi Z29sYW5nLWdpdGh1Yi1jb20tYmthcmFkemljLWdvLWx6NCIpCisgICAgKHZlcnNpb24gIjEuMC4w IikKKyAgICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gp CisgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAg KHVybCAiaHR0cHM6Ly9naXRodWIuY29tL2JrYXJhZHppYy9nby1sejQiKQorICAgICAgICAgICAg ICAgICAgICAoY29tbWl0IChzdHJpbmctYXBwZW5kICJ2IiB2ZXJzaW9uKSkpKQorICAgICAgICAg ICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZlcnNpb24gIi1jaGVja291 dCIpKQorICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAoYmFzZTMyICIxdmRp ZDh2MGMydjJxaHJnOXJ6bjNsN3lhMWgzNGppcnJ4Zm5pcjdndjd3NnM0aXZkdmMxIikpKSkKKyAg ICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAoYXJndW1lbnRzCisgICAgIGAo IzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS9ia2FyYWR6aWMvZ28tbHo0IikpCisgICAgKHN5bm9w c2lzICJQb3J0IG9mIExaNCBsb3NzbGVzcyBjb21wcmVzc2lvbiBhbGdvcml0aG0iKQorICAgIChk ZXNjcmlwdGlvbiAiZ28tbHo0IGlzIHBvcnQgb2YgTFo0IGxvc3NsZXNzIGNvbXByZXNzaW9uIGFs Z29yaXRobSB0byBHbyIpCisgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2JrYXJh ZHppYy9nby1sejQiKQorICAgIChsaWNlbnNlIGJzZC0yKSkpCisKKyhkZWZpbmUtcHVibGljIGdv bGFuZy1naXRodWItY29tLWNhbG1oLWR1CisgIChwYWNrYWdlCisgICAgKG5hbWUgImdvbGFuZy1n aXRodWItY29tLWNhbG1oLWR1IikKKyAgICAodmVyc2lvbiAiMS4wLjAiKQorICAgIChzb3VyY2Ug KG9yaWdpbgorICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAg KHVyaSAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dp dGh1Yi5jb20vY2FsbWgvZHUiKQorICAgICAgICAgICAgICAgICAgICAoY29tbWl0IChzdHJpbmct YXBwZW5kICJ2IiB2ZXJzaW9uKSkpKQorICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmct YXBwZW5kIG5hbWUgIi0iIHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAoc2hh MjU2CisgICAgICAgICAgICAgICAoYmFzZTMyICIxbXY2bWtic2xmYzhnaXY0N2t5bDk3bnkwaWdi M2w3anlhNWhjNzVzbTU0eGk2ZzIwNXdhIikpKSkKKyAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxk LXN5c3RlbSkKKyAgICAoYXJndW1lbnRzCisgICAgIGAoIzppbXBvcnQtcGF0aCAiZ2l0aHViLmNv bS9jYWxtaC9kdSIpKQorICAgIChzeW5vcHNpcyAiR2V0IHRvdGFsIGFuZCBhdmFpbGFibGUgZGlz ayBzcGFjZSBvbiBhIGdpdmVuIHZvbHVtZSIpCisgICAgKGRlc2NyaXB0aW9uICJHZXQgZGlzayB1 c2FnZSBpbmZvcm1hdGlvbiBsaWtlIGhvdyBtdWNoIHNwYWNlIGlzIGF2YWlsYWJsZSwgZnJlZSwg YW5kIHVzZWQiKQorICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9jYWxtaC9kdSIp CisgICAgKGxpY2Vuc2UgcHVibGljLWRvbWFpbikpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmct Z2l0aHViLWNvbS1jYWxtaC1sdWhuCisgIChwYWNrYWdlCisgICAgKG5hbWUgImdvbGFuZy1naXRo dWItY29tLWNhbG1oLWx1aG4iKQorICAgICh2ZXJzaW9uICIxLjAuMCIpCisgICAgKHNvdXJjZSAo b3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAo dXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0 aHViLmNvbS9jYWxtaC9sdWhuIikKKyAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCAoc3RyaW5n LWFwcGVuZCAidiIgdmVyc2lvbikpKSkKKyAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3RyaW5n LWFwcGVuZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAgKHNo YTI1NgorICAgICAgICAgICAgICAgKGJhc2UzMiAiMWhmajFseDd3ZHBpZm4xNnpxcmw0eG1sNmNq NWd4Ym42aGZ6MWY0NmcyYTZiZGYwZ2N2cyIpKSkpCisgICAgKGJ1aWxkLXN5c3RlbSBnby1idWls ZC1zeXN0ZW0pCisgICAgKGFyZ3VtZW50cworICAgICBgKCM6aW1wb3J0LXBhdGggImdpdGh1Yi5j b20vY2FsbWgvbHVobiIpKQorICAgIChzeW5vcHNpcyAiTHVobi1tb2QtTiBpbXBsZW1lbnRhdGlv biBpbiBHbyIpCisgICAgKGRlc2NyaXB0aW9uICJMdWhuLW1vZC1OIGltcGxlbWVudGF0aW9uIGlu IEdvIikKKyAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vY2FsbWgvbHVobiIpCisg ICAgKGxpY2Vuc2UgeDExKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLWNh bG1oLXhkcgorICAobGV0ICgoY29tbWl0ICJmOWI5ZjhmN2FhMjc3MjVmNWNhYmI2OTliZDkwOTlj YTdjZTA5MTQzIikKKyAgICAgICAgKHJldmlzaW9uICIxIikpCisgICAgKHBhY2thZ2UKKyAgICAg IChuYW1lICJnb2xhbmctZ2l0aHViLWNvbS1jYWxtaC14ZHIiKQorICAgICAgKHZlcnNpb24gKHN0 cmluZy1hcHBlbmQgIjIuMC4wLSIgcmV2aXNpb24gIi4iIChzdHJpbmctdGFrZSBjb21taXQgNykp KQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0 Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAg ICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9jYWxtaC94ZHIiKQorICAgICAgICAgICAg ICAgICAgICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAo c3RyaW5nLWFwcGVuZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAg ICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjBsMXcxbDlpeTRiNDA1NHYy NjBqeXNxdmwxNmh5bHI3aHZraW1sZmdyMG5nOW02cjF2ejAiKSkpKQorICAgICAgKGJ1aWxkLXN5 c3RlbSBnby1idWlsZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9y dC1wYXRoICJnaXRodWIuY29tL2NhbG1oL3hkciIpKQorICAgICAgKHN5bm9wc2lzICJYRFIgbWFy c2hhbGxpbmcvdW5tYXJzaGFsbGluZyBsaWJyYXJ5IikKKyAgICAgIChkZXNjcmlwdGlvbiAiWERS IG1hcnNoYWxsaW5nL3VubWFyc2hhbGxpbmcgbGlicmFyeS4gSXQgdXNlcyBjb2RlIGdlbmVyYXRp b24gYW5kIG5vdCByZWZsZWN0aW9uIikKKyAgICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHVi LmNvbS9jYWxtaC94ZHIiKQorICAgICAgKGxpY2Vuc2UgeDExKSkpKQorCisoZGVmaW5lLXB1Ymxp YyBnb2xhbmctZ2l0aHViLWNvbS1jem5pYy1iCisgIChsZXQgKChjb21taXQgImJjZmYzMGE2MjJk YmRjYjQyNWFiYTkwNDc5MmRlMWRmNjA2ZGFiN2MiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5h bWUgImdvbGFuZy1naXRodWItY29tLWN6bmljLWIiKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1h cHBlbmQgIjIwMTYwNzE2LiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNl IChvcmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAg ICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0 cHM6Ly9naXRodWIuY29tL2N6bmljL2IiKQorICAgICAgICAgICAgICAgICAgICAgIChjb21taXQg Y29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVuZCBuYW1l ICItIiB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAgICAoc2hhMjU2CisgICAg ICAgICAgICAgICAgIChiYXNlMzIgIjBsdzBkOTI2d3F4Zm4zMnlodmw1YzV3aDM2Z2xnZHZzbTV2 MDF3NHh5czE4Y2djbGlhc3IiKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSBnby1idWlsZC1zeXN0 ZW0pCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRodWIuY29t L2N6bmljL2IiKSkKKyAgICAgIChzeW5vcHNpcyAiSW1wbGVtZW50cyBhIEIrdHJlZSIpCisgICAg ICAoZGVzY3JpcHRpb24gIkltcGxlbWVudHMgYSBCK3RyZWUiKQorICAgICAgKGhvbWUtcGFnZSAi aHR0cHM6Ly9naXRodWIuY29tL2N6bmljL2IiKQorICAgICAgKGxpY2Vuc2UgYnNkLTMpKSkpCisK KyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLWN6bmljLWJ1ZnMKKyAgKGxldCAoKGNv bW1pdCAiM2RjY2NiZDcwNjRhMTY4OWY5YzA5M2E5ODhlYTExYWMwMGUyMWY1MSIpKQorICAgIChw YWNrYWdlCisgICAgICAobmFtZSAiZ29sYW5nLWdpdGh1Yi1jb20tY3puaWMtYnVmcyIpCisgICAg ICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMjAxNjA4MTguIiAoc3RyaW5nLXRha2UgY29tbWl0 IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0 LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAg ICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vY3puaWMvYnVmcyIpCisgICAgICAg ICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1u YW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAg ICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJhc2UzMiAiMHc3NXdjMTVrMGdh eXZqNmZobnFnYXAxeTJyaHE1MXp2c2xocDN2NHkxdmNiMTFtYmR3OSIpKSkpCisgICAgICAoYnVp bGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6 aW1wb3J0LXBhdGggImdpdGh1Yi5jb20vY3puaWMvYnVmcyIpKQorICAgICAgKHN5bm9wc2lzICJJ bXBsZW1lbnRzIGEgc2ltcGxlIGJ1ZmZlciBjYWNoZSIpCisgICAgICAoZGVzY3JpcHRpb24gIklt cGxlbWVudHMgYSBzaW1wbGUgYnVmZmVyIGNhY2hlIikKKyAgICAgIChob21lLXBhZ2UgImh0dHBz Oi8vZ2l0aHViLmNvbS9jem5pYy9idWZzIikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCiso ZGVmaW5lLXB1YmxpYyBnb2xhbmctZ2l0aHViLWNvbS1jem5pYy1maWxldXRpbAorICAobGV0ICgo Y29tbWl0ICIxYzljODhmYmY1NTJiMzczN2M3Yjk3ZTFmMjQzODYwMzU5Njg3OTc2IikpCisgICAg KHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctZ2l0aHViLWNvbS1jem5pYy1maWxldXRpbCIp CisgICAgICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMjAxODA3MDguIiAoc3RyaW5nLXRha2Ug Y29tbWl0IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRo b2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAg ICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vY3puaWMvZmlsZXV0aWwi KQorICAgICAgICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAg ICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVuZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQi KSkKKyAgICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjFp bWs0d2pnZmh5YjRtOGRtOHFibTVsejI2M2x5YjI3NjAydjNteDhqM2R6cWpwYWdnOGciKSkpKQor ICAgICAgKGJ1aWxkLXN5c3RlbSBnby1idWlsZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRzCisg ICAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRodWIuY29tL2N6bmljL2ZpbGV1dGlsIikpCisgICAg ICAoc3lub3BzaXMgIkNvbGxlY3RzIHNvbWUgZmlsZSB1dGlsaXR5IGZ1bmN0aW9ucyIpCisgICAg ICAoZGVzY3JpcHRpb24gIkNvbGxlY3RzIHNvbWUgZmlsZSB1dGlsaXR5IGZ1bmN0aW9ucyIpCisg ICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vY3puaWMvZmlsZXV0aWwiKQorICAg ICAgKGxpY2Vuc2UgYnNkLTMpKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29t LWN6bmljLWludGVybmFsLWJ1ZmZlcgorICAocGFja2FnZQorICAgIChuYW1lICJnb2xhbmctZ2l0 aHViLWNvbS1jem5pYy1pbnRlcm5hbC1idWZmZXIiKQorICAgICh2ZXJzaW9uICIxLjAuMCIpCisg ICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAg ICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICh1cmwg Imh0dHBzOi8vZ2l0aHViLmNvbS9jem5pYy9pbnRlcm5hbCIpCisgICAgICAgICAgICAgICAgICAg IChjb21taXQgKHN0cmluZy1hcHBlbmQgInYiIHZlcnNpb24pKSkpCisgICAgICAgICAgICAgIChm aWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisg ICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgIChiYXNlMzIgIjA2enJsbTk0a3Ey MXE3OTVweWhxcXhsaDNwOHY2d2FobmtqNGMxbnN5ZGc2NWJuaDljNzYiKSkpKQorICAgIChidWls ZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgIChpbnB1dHMKKyAgICAgYCgoImdpdGh1Yi5j b20vY3puaWMvbWF0aHV0aWwiICxnb2xhbmctZ2l0aHViLWNvbS1jem5pYy1tYXRodXRpbCkpKQor ICAgIChhcmd1bWVudHMKKyAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRodWIuY29tL2N6bmljL2lu dGVybmFsL2J1ZmZlciIKKyAgICAgICAjOnVucGFjay1wYXRoICJnaXRodWIuY29tL2N6bmljL2lu dGVybmFsIikpCisgICAgKHN5bm9wc2lzICJUaGluZ3MgdGhhdCBjYW5ub3QgYmUgaW1wb3J0ZWQg YnkgM3JkIHBhcnR5IHBhY2thZ2VzIikKKyAgICAoZGVzY3JpcHRpb24gIlRoaW5ncyB0aGF0IGNh bm5vdCBiZSBpbXBvcnRlZCBieSAzcmQgcGFydHkgcGFja2FnZXMuIFBhY2thZ2UgYnVmZmVyIGlt cGxlbWVudHMgYSBwb29sIG9mIHBvaW50ZXJzIHRvIGJ5dGUgc2xpY2VzIikKKyAgICAoaG9tZS1w YWdlICJodHRwczovL2dpdGh1Yi5jb20vY3puaWMvaW50ZXJuYWwvIikKKyAgICAobGljZW5zZSBi c2QtMykpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmctZ2l0aHViLWNvbS1jem5pYy1pbnRlcm5h bC1maWxlCisgIChwYWNrYWdlCisgICAgKG5hbWUgImdvbGFuZy1naXRodWItY29tLWN6bmljLWlu dGVybmFsLWZpbGUiKQorICAgICh2ZXJzaW9uICIxLjAuMCIpCisgICAgKHNvdXJjZSAob3JpZ2lu CisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpIChn aXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNv bS9jem5pYy9pbnRlcm5hbCIpCisgICAgICAgICAgICAgICAgICAgIChjb21taXQgKHN0cmluZy1h cHBlbmQgInYiIHZlcnNpb24pKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1h cHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisgICAgICAgICAgICAgIChzaGEy NTYKKyAgICAgICAgICAgICAgIChiYXNlMzIgIjA2enJsbTk0a3EyMXE3OTVweWhxcXhsaDNwOHY2 d2FobmtqNGMxbnN5ZGc2NWJuaDljNzYiKSkpKQorICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQt c3lzdGVtKQorICAgIChhcmd1bWVudHMKKyAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRodWIuY29t L2N6bmljL2ludGVybmFsL2ZpbGUiCisgICAgICAgIzp1bnBhY2stcGF0aCAiZ2l0aHViLmNvbS9j em5pYy9pbnRlcm5hbCIpKQorICAgIChzeW5vcHNpcyAiVGhpbmdzIHRoYXQgY2Fubm90IGJlIGlt cG9ydGVkIGJ5IDNyZCBwYXJ0eSBwYWNrYWdlcyIpCisgICAgKGRlc2NyaXB0aW9uICJUaGluZ3Mg dGhhdCBjYW5ub3QgYmUgaW1wb3J0ZWQgYnkgM3JkIHBhcnR5IHBhY2thZ2VzLiBQYWNrYWdlIGZp bGUgcHJvdmlkZXMgYW4gb3MuRmlsZS1saWtlIGludGVyZmFjZSBvZiBhIG1lbW9yeSBtYXBwZWQg ZmlsZSIpCisgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2N6bmljL2ludGVybmFs LyIpCisgICAgKGxpY2Vuc2UgYnNkLTMpKSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLWdpdGh1 Yi1jb20tY3puaWMtaW50ZXJuYWwtc2xpY2UKKyAgKHBhY2thZ2UKKyAgICAobmFtZSAiZ29sYW5n LWdpdGh1Yi1jb20tY3puaWMtaW50ZXJuYWwtc2xpY2UiKQorICAgICh2ZXJzaW9uICIxLjAuMCIp CisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQor ICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICh1 cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9jem5pYy9pbnRlcm5hbCIpCisgICAgICAgICAgICAgICAg ICAgIChjb21taXQgKHN0cmluZy1hcHBlbmQgInYiIHZlcnNpb24pKSkpCisgICAgICAgICAgICAg IChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNrb3V0Iikp CisgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgIChiYXNlMzIgIjA2enJsbTk0 a3EyMXE3OTVweWhxcXhsaDNwOHY2d2FobmtqNGMxbnN5ZGc2NWJuaDljNzYiKSkpKQorICAgIChi dWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgIChhcmd1bWVudHMKKyAgICAgYCgjOmlt cG9ydC1wYXRoICJnaXRodWIuY29tL2N6bmljL2ludGVybmFsL3NsaWNlIgorICAgICAgICM6dW5w YWNrLXBhdGggImdpdGh1Yi5jb20vY3puaWMvaW50ZXJuYWwiKSkKKyAgICAoc3lub3BzaXMgIlRo aW5ncyB0aGF0IGNhbm5vdCBiZSBpbXBvcnRlZCBieSAzcmQgcGFydHkgcGFja2FnZXMiKQorICAg IChkZXNjcmlwdGlvbiAiVGhpbmdzIHRoYXQgY2Fubm90IGJlIGltcG9ydGVkIGJ5IDNyZCBwYXJ0 eSBwYWNrYWdlcy4gUGFja2FnZSBzbGljZSBpbXBsZW1lbnRzIHBvb2xzIG9mIHBvaW50ZXJzIHRv IHNsaWNlcyIpCisgICAgKGhvbWUtcGFnZSAiIikKKyAgICAobGljZW5zZSBic2QtMykpKQorCiso ZGVmaW5lLXB1YmxpYyBnb2xhbmctZ2l0aHViLWNvbS1jem5pYy1sbGRiCisgIChwYWNrYWdlCisg ICAgKG5hbWUgImdvbGFuZy1naXRodWItY29tLWN6bmljLWxsZGIiKQorICAgICh2ZXJzaW9uICIx LjAuNSIpCisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZl dGNoKQorICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAg ICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9jem5pYy9sbGRiIikKKyAgICAgICAgICAgICAg ICAgICAgKGNvbW1pdCAoc3RyaW5nLWFwcGVuZCAidiIgdmVyc2lvbikpKSkKKyAgICAgICAgICAg ICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVuZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQi KSkKKyAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgKGJhc2UzMiAiMWYzandj MXppbWNpcDUyemthajJwc2NnaW5teHk5YTlpbDhwaTd3NzR6NTc4aWJxYjFidiIpKSkpCisgICAg KGJ1aWxkLXN5c3RlbSBnby1idWlsZC1zeXN0ZW0pCisgICAgKGFyZ3VtZW50cworICAgICBgKCM6 aW1wb3J0LXBhdGggImdpdGh1Yi5jb20vY3puaWMvbGxkYiIpKQorICAgIChzeW5vcHNpcyAiUGFj a2FnZSBsbGRiIGltcGxlbWVudHMgYSBsb3cgbGV2ZWwgZGF0YWJhc2UgZW5naW5lIikKKyAgICAo ZGVzY3JpcHRpb24gIlBhY2thZ2UgbGxkYiBpbXBsZW1lbnRzIGEgbG93IGxldmVsIGRhdGFiYXNl IGVuZ2luZSIpCisgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2N6bmljL2xsZGIi KQorICAgIChsaWNlbnNlIGJzZC0zKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWIt Y29tLWN6bmljLW1hdGh1dGlsCisgIChsZXQgKChjb21taXQgIjc4YWQ3ZjI2MjYwMzQzN2YwZWNm ZWJjODM1ZDgwMDk0Zjg5YzhmNTQiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFu Zy1naXRodWItY29tLWN6bmljLW1hdGh1dGlsIikKKyAgICAgICh2ZXJzaW9uIChzdHJpbmctYXBw ZW5kICIyMDE2MTAxMi4iIChzdHJpbmctdGFrZSBjb21taXQgNykpKQorICAgICAgKHNvdXJjZSAo b3JpZ2luCisgICAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAg ICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBz Oi8vZ2l0aHViLmNvbS9jem5pYy9tYXRodXRpbCIpCisgICAgICAgICAgICAgICAgICAgICAgKGNv bW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5k IG5hbWUgIi0iIHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYK KyAgICAgICAgICAgICAgICAgKGJhc2UzMiAiMGM1ZmNqdmtwOGN6cWd3cGdidmQydm5ndzFjOHc4 YjM4eXZ2bDdmenBwcTgxZG0yOThseiIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxk LXN5c3RlbSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdpdGh1 Yi5jb20vY3puaWMvbWF0aHV0aWwiKSkKKyAgICAgIChzeW5vcHNpcyAiVXRpbGl0aWVzIHN1cHBs ZW1lbnRhbCB0byB0aGUgR28gc3RhbmRhcmQgXCJyYW5kXCIgYW5kIFwibWF0aFwiIHBhY2thZ2Vz IikKKyAgICAgIChkZXNjcmlwdGlvbiAiVXRpbGl0aWVzIHN1cHBsZW1lbnRhbCB0byB0aGUgR28g c3RhbmRhcmQgXCJyYW5kXCIgYW5kIFwibWF0aFwiIHBhY2thZ2VzIikKKyAgICAgIChob21lLXBh Z2UgImh0dHBzOi8vZ2l0aHViLmNvbS9jem5pYy9tYXRodXRpbCIpCisgICAgICAobGljZW5zZSBi c2QtMykpKSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLWdpdGh1Yi1jb20tY3puaWMtcWwKKyAg KHBhY2thZ2UKKyAgICAobmFtZSAiZ29sYW5nLWdpdGh1Yi1jb20tY3puaWMtcWwiKQorICAgICh2 ZXJzaW9uICIxLjAuNiIpCisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRo b2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAg ICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9jem5pYy9xbCIpCisgICAgICAg ICAgICAgICAgICAgIChjb21taXQgKHN0cmluZy1hcHBlbmQgInYiIHZlcnNpb24pKSkpCisgICAg ICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNo ZWNrb3V0IikpCisgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgIChiYXNlMzIg IjFrbHFqcWJ4eXc3MXk4aTJ3cTl3ZHJqampwMTl2Y2txaTVqNndjNG4wbmlkcTc4bHNqcnkiKSkp KQorICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgIChhcmd1bWVudHMKKyAg ICAgYCgjOmltcG9ydC1wYXRoICJnaXRodWIuY29tL2N6bmljL3FsIikpCisgICAgKHN5bm9wc2lz ICJQYWNrYWdlIHFsIGlzIGEgcHVyZSBHbyBlbWJlZGRlZCBTUUwgZGF0YWJhc2UiKQorICAgIChk ZXNjcmlwdGlvbiAiUGFja2FnZSBxbCBpcyBhIHB1cmUgR28gZW1iZWRkZWQgU1FMIGRhdGFiYXNl IikKKyAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vY3puaWMvcWwiKQorICAgIChs aWNlbnNlIGJzZC0zKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLWN6bmlj LXNvcnR1dGlsCisgIChsZXQgKChjb21taXQgIjRjNzM0Mjg1MmU2NWMyMDg4Yzk4MTI4OGYyYzU2 MTBkMTBiOWY3ZjQiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFuZy1naXRodWIt Y29tLWN6bmljLXNvcnR1dGlsIikKKyAgICAgICh2ZXJzaW9uIChzdHJpbmctYXBwZW5kICIyMDE2 MDYxNy4iIChzdHJpbmctdGFrZSBjb21taXQgNykpKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisg ICAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAo Z2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHVi LmNvbS9jem5pYy9zb3J0dXRpbCIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21t aXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0i IHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAg ICAgICAgICAgKGJhc2UzMiAiMWk0Nmtkd25oOHA1NHNwMGpreWJkM2F5YzU5OWhkeTM3a3Z3cXJ4 bGc3NDZmbHo1aW55bCIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkK KyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdpdGh1Yi5jb20vY3pu aWMvc29ydHV0aWwiKSkKKyAgICAgIChzeW5vcHNpcyAiVXRpbGl0aWVzIHN1cHBsZW1lbnRhbCB0 byB0aGUgR28gc3RhbmRhcmQgXCJzb3J0XCIgcGFja2FnZSIpCisgICAgICAoZGVzY3JpcHRpb24g IlV0aWxpdGllcyBzdXBwbGVtZW50YWwgdG8gdGhlIEdvIHN0YW5kYXJkIFwic29ydFwiIHBhY2th Z2UiKQorICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2N6bmljL3NvcnR1dGls IikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmctZ2l0 aHViLWNvbS1jem5pYy1zdHJ1dGlsCisgIChsZXQgKChjb21taXQgIjFlYjAzZTNjYzlkMzQ1MzA3 YTQ1ZWM4MmJkMzAxNmNkZTRiZDQ0NjQiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdv bGFuZy1naXRodWItY29tLWN6bmljLXN0cnV0aWwiKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1h cHBlbmQgIjIwMTYwNDMwLiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNl IChvcmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAg ICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0 cHM6Ly9naXRodWIuY29tL2N6bmljL3N0cnV0aWwiKQorICAgICAgICAgICAgICAgICAgICAgIChj b21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVu ZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAgICAoc2hhMjU2 CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjBuNGliNGl4cHhoNGZhaDE0NXMyaWtienlxeGJh eDhnajQ0MDgxYWdnOGprenM3NGNudm0iKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSBnby1idWls ZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRo dWIuY29tL2N6bmljL3N0cnV0aWwiKSkKKyAgICAgIChzeW5vcHNpcyAiUGFja2FnZSBzdHJ1dGls IGNvbGxlY3RzIHV0aWxzIHN1cHBsZW1lbnRhbCB0byB0aGUgc3RhbmRhcmQgc3RyaW5ncyBwYWNr YWdlIikKKyAgICAgIChkZXNjcmlwdGlvbiAiUGFja2FnZSBzdHJ1dGlsIGNvbGxlY3RzIHV0aWxz IHN1cHBsZW1lbnRhbCB0byB0aGUgc3RhbmRhcmQgc3RyaW5ncyBwYWNrYWdlIikKKyAgICAgICho b21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9jem5pYy9zdHJ1dGlsIikKKyAgICAgIChsaWNl bnNlIGJzZC0zKSkpKQorCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLWN6bmlj LXphcHB5CisgIChsZXQgKChjb21taXQgIjI1MzNjYjViNDVjYzZjMDc0MjE0NjhjZTI2Mjg5OWRk YzlkNTNmYjciKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFuZy1naXRodWItY29t LWN6bmljLXphcHB5IikKKyAgICAgICh2ZXJzaW9uIChzdHJpbmctYXBwZW5kICIyMDE2MDYyMy4i IChzdHJpbmctdGFrZSBjb21taXQgNykpKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAg ICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJl ZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9j em5pYy96YXBweSIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAg ICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZlcnNpb24g Ii1jaGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAg KGJhc2UzMiAiMG1obGRjcWkwc3FieXFzNzViMjhjc2t6OTZpejUxeW1kc3J4Nm0zaTYwd2k5NHlt ODl5YyIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgIChp bnB1dHMKKyAgICAgICBgKCgiZ2l0aHViLmNvbS9jem5pYy9pbnRlcm5hbC9idWZmZXIiICxnb2xh bmctZ2l0aHViLWNvbS1jem5pYy1pbnRlcm5hbC1idWZmZXIpCisgICAgICAgICAoImdpdGh1Yi5j b20vY3puaWMvbWF0aHV0aWwiICxnb2xhbmctZ2l0aHViLWNvbS1jem5pYy1tYXRodXRpbCkpKQor ICAgICAgKGFyZ3VtZW50cworICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS9jem5p Yy96YXBweSIpKQorICAgICAgKHN5bm9wc2lzICJQYWNrYWdlIHphcHB5IGltcGxlbWVudHMgdGhl IHphcHB5IGJsb2NrLWJhc2VkIGNvbXByZXNzaW9uIGZvcm1hdCIpCisgICAgICAoZGVzY3JpcHRp b24gIlBhY2thZ2UgemFwcHkgaW1wbGVtZW50cyB0aGUgemFwcHkgYmxvY2stYmFzZWQgY29tcHJl c3Npb24gZm9ybWF0LiBJdCBhaW1zIGZvciBhIGNvbWJpbmF0aW9uIG9mIGdvb2Qgc3BlZWQgYW5k IHJlYXNvbmFibGUgY29tcHJlc3Npb24uIikKKyAgICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ2l0 aHViLmNvbS9jem5pYy96YXBweSIpCisgICAgICAobGljZW5zZSBic2QtMykpKSkKKworKGRlZmlu ZS1wdWJsaWMgZ29sYW5nLWdpdGh1Yi1jb20tZDRsM2stbWVzc2FnZWRpZmYKKyAgKHBhY2thZ2UK KyAgICAobmFtZSAiZ29sYW5nLWdpdGh1Yi1jb20tZDRsM2stbWVzc2FnZWRpZmYiKQorICAgICh2 ZXJzaW9uICIxLjEuMCIpCisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRo b2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAg ICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9kNGwzay9tZXNzYWdlZGlmZiIp CisgICAgICAgICAgICAgICAgICAgIChjb21taXQgKHN0cmluZy1hcHBlbmQgInYiIHZlcnNpb24p KSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVy c2lvbiAiLWNoZWNrb3V0IikpCisgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAg IChiYXNlMzIgIjB6NjRkd3FrNHhkd2tqM2Y4YnBxdzBkYjg3dmdmYW14emM2NXduOGxtNnJmcTNx ankxdjUiKSkpKQorICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgIChhcmd1 bWVudHMKKyAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRodWIuY29tL2Q0bDNrL21lc3NhZ2VkaWZm IikpCisgICAgKHN5bm9wc2lzICJBIGxpYnJhcnkgZm9yIGRvaW5nIGRpZmZzIG9mIGFyYml0cmFy eSBHb2xhbmcgc3RydWN0cyIpCisgICAgKGRlc2NyaXB0aW9uICJBIGxpYnJhcnkgZm9yIGRvaW5n IGRpZmZzIG9mIGFyYml0cmFyeSBHb2xhbmcgc3RydWN0cyIpCisgICAgKGhvbWUtcGFnZSAiaHR0 cHM6Ly9naXRodWIuY29tL2Q0bDNrL21lc3NhZ2VkaWZmIikKKyAgICAobGljZW5zZSB4MTEpKSkK KworKGRlZmluZS1wdWJsaWMgZ29sYW5nLWdpdGh1Yi1jb20tZWRzcnpmLW1tYXAtZ28KKyAgKGxl dCAoKGNvbW1pdCAiOTM1ZTBlOGE2MzZjYTRiYTcwYjcxM2YzZTM4YTE5ZTFiNzc3MzllOCIpKQor ICAgIChwYWNrYWdlCisgICAgICAobmFtZSAiZ29sYW5nLWdpdGh1Yi1jb20tZWRzcnpmLW1tYXAt Z28iKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1hcHBlbmQgIjIwMTYwNTEyLiIgKHN0cmluZy10 YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgICAo bWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisg ICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRodWIuY29tL2Vkc3J6Zi9tbWFw LWdvIikKKyAgICAgICAgICAgICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkpKQorICAgICAgICAg ICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNr b3V0IikpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMy ICIxMWE2M3dyandmbmNoamh3cWpwNnlkNWowMzcweXNwcGpndjMxbDVibXZ2d3BzN3docTlkIikp KSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50 cworICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS9lZHNyemYvbW1hcC1nbyIpKQor ICAgICAgKHN5bm9wc2lzICJQb3J0YWJsZSBtbWFwIHBhY2thZ2UgZm9yIEdvIikKKyAgICAgIChk ZXNjcmlwdGlvbiAiUG9ydGFibGUgbW1hcCBwYWNrYWdlIGZvciBHbyIpCisgICAgICAoaG9tZS1w YWdlICJodHRwczovL2dpdGh1Yi5jb20vZWRzcnpmL21tYXAtZ28iKQorICAgICAgKGxpY2Vuc2Ug YnNkLTMpKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLWdvYndhcy1nbG9i CisgIChwYWNrYWdlCisgICAgKG5hbWUgImdvbGFuZy1naXRodWItY29tLWdvYndhcy1nbG9iIikK KyAgICAodmVyc2lvbiAiMC4yLjIiKQorICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAg ICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQor ICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vZ29id2FzL2dsb2Ii KQorICAgICAgICAgICAgICAgICAgICAoY29tbWl0IChzdHJpbmctYXBwZW5kICJ2IiB2ZXJzaW9u KSkpKQorICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZl cnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAoc2hhMjU2CisgICAgICAgICAgICAg ICAoYmFzZTMyICIwZHgwZjI5M3YxYTBkOHFpN2lrNWhkbDI2ZGFwZDh4bTBoajlhOWdjNjIwdmhq N2toaTlxIikpKSkKKyAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAoYXJn dW1lbnRzCisgICAgIGAoIzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS9nb2J3YXMvZ2xvYiIpKQor ICAgIChzeW5vcHNpcyAiR28gR2xvYmJpbmcgTGlicmFyeSIpCisgICAgKGRlc2NyaXB0aW9uICJH byBHbG9iYmluZyBMaWJyYXJ5IikKKyAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20v Z29id2FzL2dsb2IiKQorICAgIChsaWNlbnNlIHgxMSkpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xh bmctZ2l0aHViLWNvbS1nb2dvLXByb3RvYnVmCisgIChsZXQgKChjb21taXQgIjc4ODNlMTQ2OGQ0 OGQ5NjllMWMzY2U0YmNkZTg5YjZhN2RkNGFkYzQiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5h bWUgImdvbGFuZy1naXRodWItY29tLWdvZ28tcHJvdG9idWYiKQorICAgICAgKHZlcnNpb24gKHN0 cmluZy1hcHBlbmQgIjAuMi0xLiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291 cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAg ICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAi aHR0cHM6Ly9naXRodWIuY29tL2dvZ28vcHJvdG9idWYiKQorICAgICAgICAgICAgICAgICAgICAg IChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFw cGVuZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAgICAoc2hh MjU2CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjE2amE3bHFxOTZxMHBuemduYnduaDBqOHF6 dnFnbnMxbmZrOG5keGdrZzRzZzkzYmczNzIiKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSBnby1i dWlsZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9ydC1wYXRoICJn aXRodWIuY29tL2dvZ28vcHJvdG9idWYvcHJvdG8iCisgICAgICAgICAjOnVucGFjay1wYXRoICJn aXRodWIuY29tL2dvZ28vcHJvdG9idWYiKSkKKyAgICAgIChzeW5vcHNpcyAiUHJvdG9jb2wgQnVm ZmVycyBmb3IgR28gd2l0aCBHYWRnZXRzIikKKyAgICAgIChkZXNjcmlwdGlvbiAiZ29nb3Byb3Rv YnVmIGlzIGEgZm9yayBvZiBnb2xhbmcvcHJvdG9idWYgd2l0aCBleHRyYSBjb2RlIGdlbmVyYXRp b24gZmVhdHVyZXMuCisKK1RoaXMgY29kZSBnZW5lcmF0aW9uIGlzIHVzZWQgdG8gYWNoaWV2ZToK KworICAgIGZhc3QgbWFyc2hhbGxpbmcgYW5kIHVubWFyc2hhbGxpbmcKKyAgICBtb3JlIGNhbm9u aWNhbCBHbyBzdHJ1Y3R1cmVzCisgICAgZ29wcm90b2J1ZiBjb21wYXRpYmlsaXR5CisgICAgbGVz cyB0eXBpbmcgYnkgb3B0aW9uYWxseSBnZW5lcmF0aW5nIGV4dHJhIGhlbHBlciBjb2RlCisgICAg cGVhY2Ugb2YgbWluZCBieSBvcHRpb25hbGx5IGdlbmVyYXRpbmcgdGVzdCBhbmQgYmVuY2htYXJr IGNvZGUKKyAgICBvdGhlciBzZXJpYWxpemF0aW9uIGZvcm1hdHMKKyIpCisgICAgICAoaG9tZS1w YWdlICJodHRwczovL2dpdGh1Yi5jb20vZ29nby9wcm90b2J1ZiIpCisgICAgICAobGljZW5zZSBh c2wyLjApKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLWdvbGFuZy1ncm91 cGNhY2hlLWxydQorICAobGV0ICgoY29tbWl0ICIwMjgyNmMzZTc5MDM4YjU5ZDczN2QzYjFjMGEx ZDkzN2Y3MWE0NDMzIikpCisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctZ2l0aHVi LWNvbS1nb2xhbmctZ3JvdXBjYWNoZS1scnUiKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1hcHBl bmQgIjIwMTYwNTE2LiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNlIChv cmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAg ICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6 Ly9naXRodWIuY29tL2dvbGFuZy9ncm91cGNhY2hlIikKKyAgICAgICAgICAgICAgICAgICAgICAo Y29tbWl0IGNvbW1pdCkpKQorICAgICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBl bmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisgICAgICAgICAgICAgICAgKHNoYTI1 NgorICAgICAgICAgICAgICAgICAoYmFzZTMyICIwdzQ2YnNsbGRkZmlqNjZucmc4amJmanNyNTRi aXJ2Znd3OGEyZmo5Zm1neWlnNXN5bjJ4IikpKSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVp bGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50cworICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ2l0 aHViLmNvbS9nb2xhbmcvZ3JvdXBjYWNoZS9scnUiCisgICAgICAgICAjOnVucGFjay1wYXRoICJn aXRodWIuY29tL2dvbGFuZy9ncm91cGNhY2hlIikpCisgICAgICAoc3lub3BzaXMgImdyb3VwY2Fj aGUgaXMgYSBjYWNoaW5nIGFuZCBjYWNoZS1maWxsaW5nIGxpYnJhcnkiKQorICAgICAgKGRlc2Ny aXB0aW9uICJncm91cGNhY2hlIGlzIGEgY2FjaGluZyBhbmQgY2FjaGUtZmlsbGluZyBsaWJyYXJ5 LCBpbnRlbmRlZCBhcyBhIHJlcGxhY2VtZW50IGZvciBtZW1jYWNoZWQgaW4gbWFueSBjYXNlcyIp CisgICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2dyb3VwY2FjaGUi KQorICAgICAgKGxpY2Vuc2UgYXNsMi4wKSkpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmctZ2l0 aHViLWNvbS1nb2xhbmctc25hcHB5CisgIChsZXQgKChjb21taXQgIjVmMWMwMWQ5ZjY0Yjk0MWRk OTU4MmM2MzgyNzlkMDQ2ZWRhNmNhMzEiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdv bGFuZy1naXRodWItY29tLWdvbGFuZy1zbmFwcHkiKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1h cHBlbmQgIjIwMTYwMzA0LiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNl IChvcmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAg ICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0 cHM6Ly9naXRodWIuY29tL2dvbGFuZy9zbmFwcHkiKQorICAgICAgICAgICAgICAgICAgICAgIChj b21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVu ZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAgICAoc2hhMjU2 CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjBxeWhiZ2RqeTJnZjkzeTljMW41NGE2cWw3NXZp bnZ3ZHFuNmk0Zmk4aTc3M2owdmRqdmYiKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSBnby1idWls ZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRo dWIuY29tL2dvbGFuZy9zbmFwcHkiKSkKKyAgICAgIChzeW5vcHNpcyAiU25hcHB5IGNvbXByZXNz aW9uIGZvcm1hdCBpbiB0aGUgR28gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UiKQorICAgICAgKGRlc2Ny aXB0aW9uICJTbmFwcHkgY29tcHJlc3Npb24gZm9ybWF0IGluIHRoZSBHbyBwcm9ncmFtbWluZyBs YW5ndWFnZSIpCisgICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL3Nu YXBweSIpCisgICAgICAobGljZW5zZSBic2QtMykpKSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5n LWdpdGh1Yi1jb20tamFja3BhbC1nYXRld2F5CisgIChwYWNrYWdlCisgICAgKG5hbWUgImdvbGFu Zy1naXRodWItY29tLWphY2twYWwtZ2F0ZXdheSIpCisgICAgKHZlcnNpb24gIjEuMC40IikKKyAg ICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAg ICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgKHVybCAi aHR0cHM6Ly9naXRodWIuY29tL2phY2twYWwvZ2F0ZXdheSIpCisgICAgICAgICAgICAgICAgICAg IChjb21taXQgKHN0cmluZy1hcHBlbmQgInYiIHZlcnNpb24pKSkpCisgICAgICAgICAgICAgIChm aWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisg ICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgIChiYXNlMzIgIjFic21sOWt4NDlp aHNubHE1azhjdzc4NzVhcjR2bWg5cTE1a3B4bjBkbHZwYWZtbWExYmkiKSkpKQorICAgIChidWls ZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgIChhcmd1bWVudHMKKyAgICAgYCgjOmltcG9y dC1wYXRoICJnaXRodWIuY29tL2phY2twYWwvZ2F0ZXdheSIpKQorICAgIChzeW5vcHNpcyAiTGli cmFyeSBmb3IgZGlzY292ZXJpbmcgdGhlIGFkZHJlc3Mgb2YgYSBMQU4gZ2F0ZXdheSIpCisgICAg KGRlc2NyaXB0aW9uICJMaWJyYXJ5IGZvciBkaXNjb3ZlcmluZyB0aGUgYWRkcmVzcyBvZiBhIExB TiBnYXRld2F5IikKKyAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20vamFja3BhbC9n YXRld2F5IikKKyAgICAobGljZW5zZSBic2QtMykpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmct Z2l0aHViLWNvbS1qdWp1LXJhdGVsaW1pdAorICAobGV0ICgoY29tbWl0ICI3N2VkMWM4YTAxMjE3 NjU2ZDIwODBhZDUxOTgxZjZlOTlhZGFhMTc3IikpCisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1l ICJnb2xhbmctZ2l0aHViLWNvbS1qdWp1LXJhdGVsaW1pdCIpCisgICAgICAodmVyc2lvbiAoc3Ry aW5nLWFwcGVuZCAiMjAxNTExMjUuIiAoc3RyaW5nLXRha2UgY29tbWl0IDcpKSkKKyAgICAgIChz b3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAg ICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAodXJs ICJodHRwczovL2dpdGh1Yi5jb20vanVqdS9yYXRlbGltaXQiKQorICAgICAgICAgICAgICAgICAg ICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3RyaW5n LWFwcGVuZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAgICAo c2hhMjU2CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjFyN3hkbDNicGR6bnk0ZDA1ZnBtMjI5 ODY0aXBnaHF3djVscGx2NWltNWI0dmh2OXJ5cDciKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSBn by1idWlsZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9ydC1wYXRo ICJnaXRodWIuY29tL2p1anUvcmF0ZWxpbWl0IikpCisgICAgICAoc3lub3BzaXMgIlRva2VuLWJ1 Y2tldC1iYXNlZCByYXRlIGxpbWl0ZXIgcGFja2FnZSIpCisgICAgICAoZGVzY3JpcHRpb24gIlRv a2VuLWJ1Y2tldC1iYXNlZCByYXRlIGxpbWl0ZXIgcGFja2FnZSIpCisgICAgICAoaG9tZS1wYWdl ICJodHRwczovL2dpdGh1Yi5jb20vanVqdS9yYXRlbGltaXQiKQorICAgICAgKGxpY2Vuc2UgbGdw bDMpKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLWthcmRpYW5vcy1vc2V4 dAorICAobGV0ICgoY29tbWl0ICIyOWFlNGZmYmM5YTZmZTlmYjJiYzUwMjkwNTBjZTY5OTZlYTFk M2JjIikpCisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctZ2l0aHViLWNvbS1rYXJk aWFub3Mtb3NleHQiKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1hcHBlbmQgIjIwMTUxMjIyLiIg KHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNlIChvcmlnaW4KKyAgICAgICAg ICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgICAodXJpIChnaXQtcmVm ZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9naXRodWIuY29tL2th cmRpYW5vcy9vc2V4dCIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkK KyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZlcnNp b24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAg ICAgKGJhc2UzMiAiMW1hd2FsYXo4NGkxNm5qa3o2ZjlmZDVqeGhjYnhrYnNqbmF2M2NtcXEyZG5j djJoeXY4YSIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAg IChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdpdGh1Yi5jb20va2FyZGlhbm9z L29zZXh0IikpCisgICAgICAoc3lub3BzaXMgIkV4dGVuc2lvbnMgdG8gdGhlIHN0YW5kYXJkIFwi b3NcIiBwYWNrYWdlLiBFeGVjdXRhYmxlIGFuZCBFeGVjdXRhYmxlRm9sZGVyIikKKyAgICAgIChk ZXNjcmlwdGlvbiAiRXh0ZW5zaW9ucyB0byB0aGUgc3RhbmRhcmQgXCJvc1wiIHBhY2thZ2UuIEV4 ZWN1dGFibGUgYW5kIEV4ZWN1dGFibGVGb2xkZXIiKQorICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6 Ly9naXRodWIuY29tL2thcmRpYW5vcy9vc2V4dCIpCisgICAgICAobGljZW5zZSBic2QtMykpKSkK KworKGRlZmluZS1wdWJsaWMgZ29sYW5nLWdpdGh1Yi1jb20tbGliLXBxCisgIChsZXQgKChjb21t aXQgImVlMTQ0MmJkYTdiZDFiNmE4NGU5MTNiZGI0MjFjYjE4NzRlYzYyOWQiKQorICAgICAgICAo cmV2aXNpb24gIjEiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFuZy1naXRodWIt Y29tLWxpYi1wcSIpCisgICAgICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiZ28xLjAtY3V0b2Zm LSIgcmV2aXNpb24gIi4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXRh a2UgY29tbWl0IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgICht ZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAg ICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vbGliL3BxIikKKyAg ICAgICAgICAgICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkpKQorICAgICAgICAgICAgICAgIChm aWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisg ICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMyICIwOW52Ymxz MGthOXY2YmxhOWIybHMzY25qbTJmc3luemxibjRkMmEzcDBybXFuaGEzNWc3IikpKSkKKyAgICAg IChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50cworICAgICAg IGAoIzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS9saWIvcHEiKSkKKyAgICAgIChzeW5vcHNpcyAi UHVyZSBHbyBQb3N0Z3JlcyBkcml2ZXIgZm9yIGRhdGFiYXNlL3NxbCIpCisgICAgICAoZGVzY3Jp cHRpb24gIlB1cmUgR28gUG9zdGdyZXMgZHJpdmVyIGZvciBkYXRhYmFzZS9zcWwiKQorICAgICAg KGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYi9wcSIpCisgICAgICAobGljZW5zZSB4 MTEpKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLW1pbmlvLXNoYTI1Ni1z aW1kCisgIChsZXQgKChjb21taXQgIjY3MmU3YmM5ZjM0ODIzNzVkZjczNzQxY2Y1N2ExNTdmZTE4 N2VjMjYiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFuZy1naXRodWItY29tLW1p bmlvLXNoYTI1Ni1zaW1kIikKKyAgICAgICh2ZXJzaW9uIChzdHJpbmctYXBwZW5kICIyMDE2MDkw Ny4iIChzdHJpbmctdGFrZSBjb21taXQgNykpKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAg ICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0 LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNv bS9taW5pby9zaGEyNTYtc2ltZCIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21t aXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0i IHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAg ICAgICAgICAgKGJhc2UzMiAiMWE5NGNwMGN6aXIwM3c2YWcxMmE3d252czRjZzk5NTZpOG1qbTE4 cG1na3g0YzEzcWt3cSIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkK KyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdpdGh1Yi5jb20vbWlu aW8vc2hhMjU2LXNpbWQiKSkKKyAgICAgIChzeW5vcHNpcyAiUHVyZSBHbyBpbXBsZW1lbnRhdGlv biBvZiBTSEEyNTYgdXNpbmcgU0lNRCBpbnN0cnVjdGlvbnMgZm9yIEludGVsIGFuZCBBUk0iKQor ICAgICAgKGRlc2NyaXB0aW9uICJQdXJlIEdvIGltcGxlbWVudGF0aW9uIG9mIFNIQTI1NiB1c2lu ZyBTSU1EIGluc3RydWN0aW9ucyBmb3IgSW50ZWwgYW5kIEFSTSIpCisgICAgICAoaG9tZS1wYWdl ICJodHRwczovL2dpdGh1Yi5jb20vbWluaW8vc2hhMjU2LXNpbWQiKQorICAgICAgKGxpY2Vuc2Ug YXNsMi4wKSkpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmctZ2l0aHViLWNvbS1vbnNpLWdpbmtn bworICAobGV0ICgoY29tbWl0ICJhYzNkNDVkZGQ3ZWY1YzRkN2ZjNGQwMzdiNjE1YTgxZjRkNjc5 ODFlIikKKyAgICAgICAgKHJldmlzaW9uICIxIikpCisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1l ICJnb2xhbmctZ2l0aHViLWNvbS1vbnNpLWdpbmtnbyIpCisgICAgICAodmVyc2lvbiAoc3RyaW5n LWFwcGVuZCAiMS4yLjAtIiByZXZpc2lvbiAiLiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisg ICAgICAoc291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkK KyAgICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAg ICAgKHVybCAiaHR0cHM6Ly9naXRodWIuY29tL29uc2kvZ2lua2dvIikKKyAgICAgICAgICAgICAg ICAgICAgICAoY29tbWl0IGNvbW1pdCkpKQorICAgICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0 cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisgICAgICAgICAgICAg ICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMyICIxa3E4Mmw4eDFreTAzaGN2OHpk bGx2enFkZGY4aTF5eGFqajc2dzIxY2NoZDFha3pxcjc4IikpKSkKKyAgICAgIChidWlsZC1zeXN0 ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50cworICAgICAgIGAoIzppbXBvcnQt cGF0aCAiZ2l0aHViLmNvbS9vbnNpL2dpbmtnbyIpKQorICAgICAgKHN5bm9wc2lzICJCREQgVGVz dGluZyBGcmFtZXdvcmsgZm9yIEdvIikKKyAgICAgIChkZXNjcmlwdGlvbiAiQkREIFRlc3Rpbmcg RnJhbWV3b3JrIGZvciBHbyIpCisgICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5jb20v b25zaS9naW5rZ28iKQorICAgICAgKGxpY2Vuc2UgeDExKSkpKQorCisoZGVmaW5lLXB1YmxpYyBn b2xhbmctZ2l0aHViLWNvbS1vbnNpLWdvbWVnYQorICAobGV0ICgoY29tbWl0ICJhMTA5NGIyZGIy ZDQ4NDU2MjE2MDJjNjY3YmQ0Y2NmMDk4MzQ1NDRlIikKKyAgICAgICAgKHJldmlzaW9uICIxIikp CisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctZ2l0aHViLWNvbS1vbnNpLWdvbWVn YSIpCisgICAgICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMS4wLSIgcmV2aXNpb24gIi4iIChz dHJpbmctdGFrZSBjb21taXQgNykpKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAg ICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVy ZW5jZQorICAgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9vbnNp L2dvbWVnYSIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAg ICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZlcnNpb24gIi1j aGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJh c2UzMiAiMGd3d2I1MGpuOXl6NmFhYzhwZGdpZGZmbm5yNWg3d2h6NzVmbWQ5cjc4bTZscGxqdmtz MCIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgIChhcmd1 bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdpdGh1Yi5jb20vb25zaS9nb21lZ2EiKSkK KyAgICAgIChzeW5vcHNpcyAiR2lua2dvJ3MgUHJlZmVycmVkIE1hdGNoZXIgTGlicmFyeSIpCisg ICAgICAoZGVzY3JpcHRpb24gIkdpbmtnbydzIFByZWZlcnJlZCBNYXRjaGVyIExpYnJhcnkiKQor ICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL29uc2kvZ29tZWdhIikKKyAgICAg IChsaWNlbnNlIHgxMSkpKSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLWdpdGh1Yi1jb20tb3Nj aHdhbGQtZ2VvaXAyLWdvbGFuZworICAobGV0ICgoY29tbWl0ICI1MTcxNGEwZTc5ZGY0MGUwMGE5 NGFlNTA4NmVjMmE1NTMyYzllZTU3IikKKyAgICAgICAgKHJldmlzaW9uICIxIikpCisgICAgKHBh Y2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctZ2l0aHViLWNvbS1vc2Nod2FsZC1nZW9pcDItZ29s YW5nIikKKyAgICAgICh2ZXJzaW9uIChzdHJpbmctYXBwZW5kICIwLjEuMC0iIHJldmlzaW9uICIu IiAoc3RyaW5nLXRha2UgY29tbWl0IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAg ICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1y ZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20v b3NjaHdhbGQvZ2VvaXAyLWdvbGFuZyIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCAi NTE3MTRhMGU3OWRmNDBlMDBhOTRhZTUwODZlYzJhNTUzMmM5ZWU1NyIpKSkKKyAgICAgICAgICAg ICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZlcnNpb24gIi1jaGVja291 dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJhc2UzMiAi MWNsY3l2NndjNzluOXdja213djIxeDdkOGprZ3Jpa3I5cGExNTlhbWw0OTJna25wdzJ5OCIpKSkp CisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgIChhcmd1bWVudHMK KyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdpdGh1Yi5jb20vb3NjaHdhbGQvZ2VvaXAyLWdvbGFu ZyIpKQorICAgICAgKHN5bm9wc2lzICJVbm9mZmljaWFsIE1heE1pbmQgR2VvSVAyIFJlYWRlciBm b3IgR28iKQorICAgICAgKGRlc2NyaXB0aW9uICJVbm9mZmljaWFsIE1heE1pbmQgR2VvSVAyIFJl YWRlciBmb3IgR28iKQorICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL29zY2h3 YWxkL2dlb2lwMi1nb2xhbmciKQorICAgICAgKGxpY2Vuc2UgaXNjKSkpKQorCisoZGVmaW5lLXB1 YmxpYyBnb2xhbmctZ2l0aHViLWNvbS1vc2Nod2FsZC1tYXhtaW5kZGItZ29sYW5nCisgIChsZXQg KChjb21taXQgImEyNjQyOGUwMzA1YjgzN2UwNmZlNjkyMjE0ODk4MTkxMjZhMzQ2YzgiKQorICAg ICAgICAocmV2aXNpb24gIjEiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFuZy1n aXRodWItY29tLW9zY2h3YWxkLW1heG1pbmRkYi1nb2xhbmciKQorICAgICAgKHZlcnNpb24gKHN0 cmluZy1hcHBlbmQgIjAuMi4wLSIgcmV2aXNpb24gIi4iIChzdHJpbmctdGFrZSBjb21taXQgNykp KQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0 Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAg ICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9vc2Nod2FsZC9tYXhtaW5kZGItZ29sYW5n IikKKyAgICAgICAgICAgICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkpKQorICAgICAgICAgICAg ICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNrb3V0 IikpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMyICIw ZDVhMmJxc2FueHk1N2JmZ3dsOWR3ZDIzMGFnaTNmZDE0dmF5MGpoYjJmbWhwdzNiYjczIikpKSkK KyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50cwor ICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS9vc2Nod2FsZC9tYXhtaW5kZGItZ29s YW5nIikpCisgICAgICAoc3lub3BzaXMgIk1heE1pbmQgREIgUmVhZGVyIGZvciBHbyIpCisgICAg ICAoZGVzY3JpcHRpb24gIk1heE1pbmQgREIgUmVhZGVyIGZvciBHbyIpCisgICAgICAoaG9tZS1w YWdlICJodHRwczovL2dpdGh1Yi5jb20vb3NjaHdhbGQvbWF4bWluZGRiLWdvbGFuZyIpCisgICAg ICAobGljZW5zZSBpc2MpKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLXJj cm93bGV5LWdvLW1ldHJpY3MKKyAgKGxldCAoKGNvbW1pdCAiZWViYTdiZDBkZDAxYWNlNmU2OTBm YTgzM2IzZjIyYWFlYzI5YWY0MyIpKQorICAgIChwYWNrYWdlCisgICAgICAobmFtZSAiZ29sYW5n LWdpdGh1Yi1jb20tcmNyb3dsZXktZ28tbWV0cmljcyIpCisgICAgICAodmVyc2lvbiAoc3RyaW5n LWFwcGVuZCAiMjAxNjAyMjYuIiAoc3RyaW5nLXRha2UgY29tbWl0IDcpKSkKKyAgICAgIChzb3Vy Y2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAg ICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAodXJsICJo dHRwczovL2dpdGh1Yi5jb20vcmNyb3dsZXkvZ28tbWV0cmljcyIpCisgICAgICAgICAgICAgICAg ICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJp bmctYXBwZW5kIG5hbWUgIi0iIHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAg IChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJhc2UzMiAiMThqaXNzYncxMjI2dnpxbXFwZ2sz ZjNxZGd3aTljYjFpOHg5aGhxMjhiYzl6djBjNGo3OSIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVt IGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBh dGggImdpdGh1Yi5jb20vcmNyb3dsZXkvZ28tbWV0cmljcyIpKQorICAgICAgKHN5bm9wc2lzICJH byBwb3J0IG9mIENvZGEgSGFsZSdzIE1ldHJpY3MgbGlicmFyeSIpCisgICAgICAoZGVzY3JpcHRp b24gIkdvIHBvcnQgb2YgQ29kYSBIYWxlJ3MgTWV0cmljcyBsaWJyYXJ5IikKKyAgICAgIChob21l LXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS9yY3Jvd2xleS9nby1tZXRyaWNzIikKKyAgICAgIChs aWNlbnNlIGJzZC0yKSkpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmctZ2l0aHViLWNvbS1zYXNo YS1zLWdvLWRlYWRsb2NrCisgIChwYWNrYWdlCisgICAgKG5hbWUgImdvbGFuZy1naXRodWItY29t LXNhc2hhLXMtZ28tZGVhZGxvY2siKQorICAgICh2ZXJzaW9uICIwLjEuMCIpCisgICAgKHNvdXJj ZSAob3JpZ2luCisgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAg ICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8v Z2l0aHViLmNvbS9zYXNoYS1zL2dvLWRlYWRsb2NrIikKKyAgICAgICAgICAgICAgICAgICAgKGNv bW1pdCAoc3RyaW5nLWFwcGVuZCAidiIgdmVyc2lvbikpKSkKKyAgICAgICAgICAgICAgKGZpbGUt bmFtZSAoc3RyaW5nLWFwcGVuZCBuYW1lICItIiB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAg ICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgKGJhc2UzMiAiMTkzY2RtZDZ2cm5sNnZk djZwcjM2NzFjcGwxbndhcGRhd3FzNDYyeG1xa2YxNm1nZ2pmeiIpKSkpCisgICAgKGJ1aWxkLXN5 c3RlbSBnby1idWlsZC1zeXN0ZW0pCisgICAgKGFyZ3VtZW50cworICAgICBgKCM6aW1wb3J0LXBh dGggImdpdGh1Yi5jb20vc2FzaGEtcy9nby1kZWFkbG9jayIpKQorICAgIChzeW5vcHNpcyAiT25s aW5lIGRlYWRsb2NrIGRldGVjdGlvbiBpbiBnbyIpCisgICAgKGRlc2NyaXB0aW9uICJPbmxpbmUg ZGVhZGxvY2sgZGV0ZWN0aW9uIGluIGdvIikKKyAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1 Yi5jb20vc2FzaGEtcy9nby1kZWFkbG9jayIpCisgICAgKGxpY2Vuc2UgYXNsMi4wKSkpCisKKyhk ZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLXN0YXRoYXQtZ28KKyAgKGxldCAoKGNvbW1p dCAiOTFkZmEzYTU5YzViMjMzZmVmOWEzNDZhMTQ2MGY2ZTJiYzg4OWQ5MyIpKQorICAgIChwYWNr YWdlCisgICAgICAobmFtZSAiZ29sYW5nLWdpdGh1Yi1jb20tc3RhdGhhdC1nbyIpCisgICAgICAo dmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMjAxNjAzMDQuIiAoc3RyaW5nLXRha2UgY29tbWl0IDcp KSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZl dGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAg ICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vc3RhdGhhdC9nbyIpCisgICAgICAgICAg ICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1l IChzdHJpbmctYXBwZW5kIG5hbWUgIi0iIHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAg ICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJhc2UzMiAiMTA1cWw1djhyNGhxY3Nx MGFnN2FzZHhxZzluN3J2ZjgzeTFxMWRqMm5manluNG1hbnY2ciIpKSkpCisgICAgICAoYnVpbGQt c3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1w b3J0LXBhdGggImdpdGh1Yi5jb20vc3RhdGhhdC9nbyIpKQorICAgICAgKHN5bm9wc2lzICJUaGlz IGlzIGEgR28gcGFja2FnZSBmb3IgcG9zdGluZyBzdGF0cyB0byB5b3VyIFN0YXRIYXQgYWNjb3Vu dCIpCisgICAgICAoZGVzY3JpcHRpb24gIlRoaXMgaXMgYSBHbyBwYWNrYWdlIGZvciBwb3N0aW5n IHN0YXRzIHRvIHlvdXIgU3RhdEhhdCBhY2NvdW50IikKKyAgICAgIChob21lLXBhZ2UgImh0dHBz Oi8vZ2l0aHViLmNvbS9zdGF0aGF0L2dvIikKKyAgICAgIChsaWNlbnNlIHgxMSkpKSkKKworKGRl ZmluZS1wdWJsaWMgZ29sYW5nLWdpdGh1Yi1jb20tc3luZHRyLWdvbGV2ZWxkYgorICAobGV0ICgo Y29tbWl0ICI2YWUxNzk3YzBiNDJiOTMyM2ZjMjdmZjdkY2Y1NjhkZjg4ZjJmMzNkIikpCisgICAg KHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctZ2l0aHViLWNvbS1zeW5kdHItZ29sZXZlbGRi IikKKyAgICAgICh2ZXJzaW9uIChzdHJpbmctYXBwZW5kICIyMDE2MDgyNS4iIChzdHJpbmctdGFr ZSBjb21taXQgNykpKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgKG1l dGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAg ICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS9zeW5kdHIvZ29sZXZl bGRiIikKKyAgICAgICAgICAgICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkpKQorICAgICAgICAg ICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIgdmVyc2lvbiAiLWNoZWNr b3V0IikpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMy ICIwY3hzbTh6bGYzYzUzejJnazczd2FscXJwMGdsOGJuNDlmYjBkbGFwNGtnd3FkNnA1ZHg4Iikp KSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGlucHV0cwor ICAgICAgIGAoKCJnaXRodWIuY29tL2dvbGFuZy9zbmFwcHkiICxnb2xhbmctZ2l0aHViLWNvbS1n b2xhbmctc25hcHB5KSkpCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9ydC1wYXRo ICJnaXRodWIuY29tL3N5bmR0ci9nb2xldmVsZGIvbGV2ZWxkYiIKKyAgICAgICAgICM6dW5wYWNr LXBhdGggImdpdGh1Yi5jb20vc3luZHRyL2dvbGV2ZWxkYiIpKQorICAgICAgKHN5bm9wc2lzICJM ZXZlbERCIGtleS92YWx1ZSBkYXRhYmFzZSBpbiBHbyIpCisgICAgICAoZGVzY3JpcHRpb24gIlRo aXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIExldmVsREIga2V5L3ZhbHVlIGRhdGFiYXNl IGluIHRoZSBHbyBwcm9ncmFtbWluZyBsYW5ndWFnZSIpCisgICAgICAoaG9tZS1wYWdlICJodHRw czovL2dpdGh1Yi5jb20vc3luZHRyL2dvbGV2ZWxkYiIpCisgICAgICAobGljZW5zZSBic2QtMikp KSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLWdpdGh1Yi1jb20tdGhlamVyZi1zdXR1cmUKKyAg KHBhY2thZ2UKKyAgICAobmFtZSAiZ29sYW5nLWdpdGh1Yi1jb20tdGhlamVyZi1zdXR1cmUiKQor ICAgICh2ZXJzaW9uICIyLjAuMCIpCisgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAg IChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisg ICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ2l0aHViLmNvbS90aGVqZXJmL3N1dHVy ZSIpCisgICAgICAgICAgICAgICAgICAgIChjb21taXQgKHN0cmluZy1hcHBlbmQgInYiIHZlcnNp b24pKSkpCisgICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgbmFtZSAiLSIg dmVyc2lvbiAiLWNoZWNrb3V0IikpCisgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAg ICAgIChiYXNlMzIgIjA4Mmo0cmQxbDUyZGptNHN2NjNmM3JoMnI1bnd6dnBkdm55cHM4NXFqdzFp MWNkOGM3c24iKSkpKQorICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgIChh cmd1bWVudHMKKyAgICAgYCgjOmltcG9ydC1wYXRoICJnaXRodWIuY29tL3RoZWplcmYvc3V0dXJl IikpCisgICAgKHN5bm9wc2lzICJTdXBlcnZpc29yIHRyZWVzIGZvciBHbyIpCisgICAgKGRlc2Ny aXB0aW9uICJTdXR1cmUgcHJvdmlkZXMgRXJsYW5nLWlzaCBzdXBlcnZpc29yIHRyZWVzIGZvciBH by4gXCJTdXBlcnZpc29yIHRyZWVzXCIgLT4gXCJzdXRyZWVcIiAtPiBcInN1dHVyZVwiIC0+IGhv bGRzIHlvdXIgY29kZSB0b2dldGhlciB3aGVuIGl0J3MgdHJ5aW5nIHRvIGRpZS4KKworVGhpcyBs aWJyYXJ5IGhhcyBoaXQgbWF0dXJpdHksIGFuZCBpc24ndCBleHBlY3RlZCB0byBiZSBjaGFuZ2Vk IHJhZGljYWxseS4gVGhpcyBjYW4gYWxzbyBiZSBpbXBvcnRlZCB2aWEgZ29wa2cuaW4vdGhlamVy Zi9zdXR1cmUudjEgLgorCitJdCBpcyBpbnRlbmRlZCB0byBkZWFsIGdyYWNlZnVsbHkgd2l0aCB0 aGUgcmVhbCBmYWlsdXJlIGNhc2VzIHRoYXQgY2FuIG9jY3VyIHdpdGggc3VwZXJ2aXNpb24gdHJl ZXMgKHN1Y2ggYXMgYnVybmluZyBhbGwgeW91ciBDUFUgdGltZSBlbmRsZXNzbHkgcmVzdGFydGlu ZyBkZWFkIHNlcnZpY2VzKSwgd2hpbGUgYWxzbyBtYWtpbmcgbm8gdW5uZWNlc3NhcnkgZGVtYW5k cyBvbiB0aGUgXCJzZXJ2aWNlXCIgY29kZSwgYW5kIHByb3ZpZGluZyBob29rcyB0byBwZXJmb3Jt IGFkZXF1YXRlIGxvZ2dpbmcgd2l0aCBpbiBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQiKQorICAg IChob21lLXBhZ2UgImh0dHBzOi8vZ2l0aHViLmNvbS90aGVqZXJmL3N1dHVyZSIpCisgICAgKGxp Y2Vuc2UgeDExKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1naXRodWItY29tLXZpdHJ1bi1x YXJ0LWNvZGluZworICAobGV0ICgoY29tbWl0ICJjY2IxMDljZjI1ZjBjZDI0NDc0ZGE3M2I5ZmVl NGU3YTNlOGE4Y2UwIikpCisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctZ2l0aHVi LWNvbS12aXRydW4tcWFydC1jb2RpbmciKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1hcHBlbmQg IjIwMTYwNDIwLiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNlIChvcmln aW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAgICAo dXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6Ly9n aXRodWIuY29tL3ZpdHJ1bi9xYXJ0IikKKyAgICAgICAgICAgICAgICAgICAgICAoY29tbWl0IGNv bW1pdCkpKQorICAgICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgImdvbGFu Zy1naXRodWItY29tLXZpdHJ1bi1xYXJ0LSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEy NTYKKyAgICAgICAgICAgICAgICAgKGJhc2UzMiAiMGJocDc2OGI4aGE2ZjI1ZG1od245cThtMmxr Ym40cW5qZjhuN3BpemsyNWpuNXpqZHZjOCIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1 aWxkLXN5c3RlbSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdp dGh1Yi5jb20vdml0cnVuL3FhcnQvY29kaW5nIgorICAgICAgICAgIzp1bnBhY2stcGF0aCAiZ2l0 aHViLmNvbS92aXRydW4vcWFydCIpKQorICAgICAgKHN5bm9wc2lzICJQYWNrYWdlIGNvZGluZyBp bXBsZW1lbnRzIGxvdy1sZXZlbCBRUiBjb2RpbmcgZGV0YWlscyIpCisgICAgICAoZGVzY3JpcHRp b24gIkluc3RlYWQgb2Ygc2NyaWJibGluZyBvbiByZWR1bmRhbnQgcGllY2VzIGFuZCByZWx5aW5n IG9uIGVycm9yIGNvcnJlY3Rpb24gdG8gcHJlc2VydmUgdGhlIG1lYW5pbmcsIHFhcnQgZW5naW5l ZXJzIHRoZSBlbmNvZGVkIHZhbHVlcyB0byBjcmVhdGUgdGhlIHBpY3R1cmUgaW4gYSBjb2RlIHdp dGggbm8gaW5oZXJlbnQgZXJyb3JzLiBQYWNrYWdlIGNvZGluZyBpbXBsZW1lbnRzIGxvdy1sZXZl bCBRUiBjb2RpbmcgZGV0YWlscyIpCisgICAgICAoaG9tZS1wYWdlICJodHRwczovL2dpdGh1Yi5j b20vdml0cnVuL3FhcnQvIikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCisoZGVmaW5lLXB1 YmxpYyBnb2xhbmctZ2l0aHViLWNvbS12aXRydW4tcWFydC1nZjI1NgorICAobGV0ICgoY29tbWl0 ICJjY2IxMDljZjI1ZjBjZDI0NDc0ZGE3M2I5ZmVlNGU3YTNlOGE4Y2UwIikpCisgICAgKHBhY2th Z2UKKyAgICAgIChuYW1lICJnb2xhbmctZ2l0aHViLWNvbS12aXRydW4tcWFydC1nZjI1NiIpCisg ICAgICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMjAxNjA0MjAuIiAoc3RyaW5nLXRha2UgY29t bWl0IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2Qg Z2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAg ICAgICAgICAgICAgICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vdml0cnVuL3FhcnQiKQorICAg ICAgICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZp bGUtbmFtZSAoc3RyaW5nLWFwcGVuZCAiZ29sYW5nLWdpdGh1Yi1jb20tdml0cnVuLXFhcnQtIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAiLWNoZWNr b3V0IikpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMy ICIwYmhwNzY4YjhoYTZmMjVkbWh3bjlxOG0ybGtibjRxbmpmOG43cGl6azI1am41empkdmM4Iikp KSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50 cworICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS92aXRydW4vcWFydC9nZjI1NiIK KyAgICAgICAgICM6dW5wYWNrLXBhdGggImdpdGh1Yi5jb20vdml0cnVuL3FhcnQiKSkKKyAgICAg IChzeW5vcHNpcyAiUGFja2FnZSBnZjI1NiBpbXBsZW1lbnRzIGFyaXRobWV0aWMgb3ZlciB0aGUg R2Fsb2lzIEZpZWxkIEdGKDI1NikiKQorICAgICAgKGRlc2NyaXB0aW9uICJJbnN0ZWFkIG9mIHNj cmliYmxpbmcgb24gcmVkdW5kYW50IHBpZWNlcyBhbmQgcmVseWluZyBvbiBlcnJvciBjb3JyZWN0 aW9uIHRvIHByZXNlcnZlIHRoZSBtZWFuaW5nLCBxYXJ0IGVuZ2luZWVycyB0aGUgZW5jb2RlZCB2 YWx1ZXMgdG8gY3JlYXRlIHRoZSBwaWN0dXJlIGluIGEgY29kZSB3aXRoIG5vIGluaGVyZW50IGVy cm9ycy4gUGFja2FnZSBnZjI1NiBpbXBsZW1lbnRzIGFyaXRobWV0aWMgb3ZlciB0aGUgR2Fsb2lz IEZpZWxkIEdGKDI1NikiKQorICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL3Zp dHJ1bi9xYXJ0IikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCisoZGVmaW5lLXB1YmxpYyBn b2xhbmctZ2l0aHViLWNvbS12aXRydW4tcWFydC1xcgorICAobGV0ICgoY29tbWl0ICJjY2IxMDlj ZjI1ZjBjZDI0NDc0ZGE3M2I5ZmVlNGU3YTNlOGE4Y2UwIikpCisgICAgKHBhY2thZ2UKKyAgICAg IChuYW1lICJnb2xhbmctZ2l0aHViLWNvbS12aXRydW4tcWFydC1xciIpCisgICAgICAodmVyc2lv biAoc3RyaW5nLWFwcGVuZCAiMjAxNjA0MjAuIiAoc3RyaW5nLXRha2UgY29tbWl0IDcpKSkKKyAg ICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQor ICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAg ICAodXJsICJodHRwczovL2dpdGh1Yi5jb20vdml0cnVuL3FhcnQiKQorICAgICAgICAgICAgICAg ICAgICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3Ry aW5nLWFwcGVuZCAiZ29sYW5nLWdpdGh1Yi1jb20tdml0cnVuLXFhcnQtIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisgICAg ICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMyICIwYmhwNzY4Yjho YTZmMjVkbWh3bjlxOG0ybGtibjRxbmpmOG43cGl6azI1am41empkdmM4IikpKSkKKyAgICAgIChi dWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50cworICAgICAgIGAo IzppbXBvcnQtcGF0aCAiZ2l0aHViLmNvbS92aXRydW4vcWFydC9xciIKKyAgICAgICAgICM6dW5w YWNrLXBhdGggImdpdGh1Yi5jb20vdml0cnVuL3FhcnQiKSkKKyAgICAgIChzeW5vcHNpcyAiUWFy dCBnZW5lcmF0ZXMgbm90LXNvLXVnbHkgcXIgY29kZXMiKQorICAgICAgKGRlc2NyaXB0aW9uICJJ bnN0ZWFkIG9mIHNjcmliYmxpbmcgb24gcmVkdW5kYW50IHBpZWNlcyBhbmQgcmVseWluZyBvbiBl cnJvciBjb3JyZWN0aW9uIHRvIHByZXNlcnZlIHRoZSBtZWFuaW5nLCBxYXJ0IGVuZ2luZWVycyB0 aGUgZW5jb2RlZCB2YWx1ZXMgdG8gY3JlYXRlIHRoZSBwaWN0dXJlIGluIGEgY29kZSB3aXRoIG5v IGluaGVyZW50IGVycm9ycy4iKQorICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9naXRodWIuY29t L3ZpdHJ1bi9xYXJ0IikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCisoZGVmaW5lLXB1Ymxp YyBnb2xhbmctb3JnLXgtY3J5cHRvLWJjcnlwdAorICAobGV0ICgoY29tbWl0ICJlMzExMjMxZTgz MTk1ZjQwMTQyMWEyODYwNjBkNjU2NDNmOWM5ZDQwIikpCisgICAgKHBhY2thZ2UKKyAgICAgIChu YW1lICJnb2xhbmctb3JnLXgtY3J5cHRvLWJjcnlwdCIpCisgICAgICAodmVyc2lvbiAoc3RyaW5n LWFwcGVuZCAiMjAxNjA5MTIuIiAoc3RyaW5nLXRha2UgY29tbWl0IDcpKSkKKyAgICAgIChzb3Vy Y2UgKG9yaWdpbgorICAgICAgICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAg ICAgICAgICh1cmkgKGdpdC1yZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAodXJsICJo dHRwczovL2dvLmdvb2dsZXNvdXJjZS5jb20vY3J5cHRvIikKKyAgICAgICAgICAgICAgICAgICAg ICAoY29tbWl0IGNvbW1pdCkpKQorICAgICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1h cHBlbmQgImdvLmdvb2dsZXNvdXJjZS5jb20tY3J5cHRvLSIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gIi1jaGVja291dCIpKQorICAgICAgICAgICAg ICAgIChzaGEyNTYKKyAgICAgICAgICAgICAgICAgKGJhc2UzMiAiMW4zcDc3ejB4OXJpZnZ5bWlm cHZubWZjZnp4bmx5OWRhMnpnaHJoYjNqcmt2anZqYzJtdyIpKSkpCisgICAgICAoYnVpbGQtc3lz dGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0 LXBhdGggImdvbGFuZy5vcmcveC9jcnlwdG8vYmNyeXB0IgorICAgICAgICAgIzp1bnBhY2stcGF0 aCAiZ29sYW5nLm9yZy94L2NyeXB0byIpKQorICAgICAgKHN5bm9wc2lzICJHbyBzdXBwbGVtZW50 YXJ5IGNyeXB0b2dyYXBoeSBsaWJyYXJpZXMiKQorICAgICAgKGRlc2NyaXB0aW9uICJHbyBzdXBw bGVtZW50YXJ5IGNyeXB0b2dyYXBoeSBsaWJyYXJpZXMiKQorICAgICAgKGhvbWUtcGFnZSAiaHR0 cHM6Ly9nby5nb29nbGVzb3VyY2UuY29tL2NyeXB0by8iKQorICAgICAgKGxpY2Vuc2UgYnNkLTMp KSkpCisKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLW9yZy14LWNyeXB0by1ibG93ZmlzaAorICAo bGV0ICgoY29tbWl0ICJlMzExMjMxZTgzMTk1ZjQwMTQyMWEyODYwNjBkNjU2NDNmOWM5ZDQwIikp CisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctb3JnLXgtY3J5cHRvLWJsb3dmaXNo IikKKyAgICAgICh2ZXJzaW9uIChzdHJpbmctYXBwZW5kICIyMDE2MDkxMi4iIChzdHJpbmctdGFr ZSBjb21taXQgNykpKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgKG1l dGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAg ICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ28uZ29vZ2xlc291cmNlLmNvbS9jcnlw dG8iKQorICAgICAgICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAg ICAgICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVuZCAiZ28uZ29vZ2xlc291cmNlLmNvbS1jcnlw dG8tIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAi LWNoZWNrb3V0IikpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAo YmFzZTMyICIxbjNwNzd6MHg5cmlmdnltaWZwdm5tZmNmenhubHk5ZGEyemdocmhiM2pya3Zqdmpj Mm13IikpKSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFy Z3VtZW50cworICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ29sYW5nLm9yZy94L2NyeXB0by9ibG93 ZmlzaCIKKyAgICAgICAgICM6dW5wYWNrLXBhdGggImdvbGFuZy5vcmcveC9jcnlwdG8iKSkKKyAg ICAgIChzeW5vcHNpcyAiR28gc3VwcGxlbWVudGFyeSBjcnlwdG9ncmFwaHkgbGlicmFyaWVzIikK KyAgICAgIChkZXNjcmlwdGlvbiAiR28gc3VwcGxlbWVudGFyeSBjcnlwdG9ncmFwaHkgbGlicmFy aWVzIikKKyAgICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ28uZ29vZ2xlc291cmNlLmNvbS9jcnlw dG8vIikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmct b3JnLXgtbmV0LWJwZgorICAobGV0ICgoY29tbWl0ICI3NDlhNTAyZGQxZWFmM2U1YmZkNGY4OTU2 NzQ4YzUwMjM1N2MwYmJlIikpCisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xhbmctb3Jn LXgtbmV0LWJwZiIpCisgICAgICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMjAxNjA5MTIuIiAo c3RyaW5nLXRha2UgY29tbWl0IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAg ICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZl cmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dvLmdvb2dsZXNvdXJj ZS5jb20vbmV0IikKKyAgICAgICAgICAgICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkpKQorICAg ICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgImdvLmdvb2dsZXNvdXJjZS5j b20tbmV0LSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNp b24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAg ICAgKGJhc2UzMiAiMTh6NGlxcHJwYWY2MjY0Y2FjOWczanA4cWR4NGk0cDB3NzI0cnFnZ2x4OGRm ajc4ZHg5diIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAg IChpbnB1dHMKKyAgICAgICBgKCgiZ29sYW5nLm9yZy94L25ldC9pbnRlcm5hbC9pYW5hIiAsZ29s YW5nLW9yZy14LW5ldC1pbnRlcm5hbC1pYW5hKQorICAgICAgICAgKCJnb2xhbmcub3JnL3gvbmV0 L2ludGVybmFsL25ldHJlZmxlY3QiICxnb2xhbmctb3JnLXgtbmV0LWludGVybmFsLW5ldHJlZmxl Y3QpKSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdvbGFuZy5v cmcveC9uZXQvYnBmIgorICAgICAgICAgIzp1bnBhY2stcGF0aCAiZ29sYW5nLm9yZy94L25ldCIp KQorICAgICAgKHN5bm9wc2lzICJHbyBzdXBwbGVtZW50YXJ5IG5ldHdvcmsgbGlicmFyaWVzIikK KyAgICAgIChkZXNjcmlwdGlvbiAiR28gc3VwcGxlbWVudGFyeSBuZXR3b3JrIGxpYnJhcmllcyIp CisgICAgICAoaG9tZS1wYWdlICJodHRwczovL2dvLmdvb2dsZXNvdXJjZS5jb20vbmV0LyIpCisg ICAgICAobGljZW5zZSBic2QtMykpKSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLW9yZy14LW5l dC1jb250ZXh0CisgIChsZXQgKChjb21taXQgIjc0OWE1MDJkZDFlYWYzZTViZmQ0Zjg5NTY3NDhj NTAyMzU3YzBiYmUiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFuZy1vcmcteC1u ZXQtY29udGV4dCIpCisgICAgICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMjAxNjA5MTIuIiAo c3RyaW5nLXRha2UgY29tbWl0IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAg ICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZl cmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dvLmdvb2dsZXNvdXJj ZS5jb20vbmV0IikKKyAgICAgICAgICAgICAgICAgICAgICAoY29tbWl0IGNvbW1pdCkpKQorICAg ICAgICAgICAgICAgIChmaWxlLW5hbWUgKHN0cmluZy1hcHBlbmQgImdvLmdvb2dsZXNvdXJjZS5j b20tbmV0LSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNp b24gIi1jaGVja291dCIpKQorICAgICAgICAgICAgICAgIChzaGEyNTYKKyAgICAgICAgICAgICAg ICAgKGJhc2UzMiAiMTh6NGlxcHJwYWY2MjY0Y2FjOWczanA4cWR4NGk0cDB3NzI0cnFnZ2x4OGRm ajc4ZHg5diIpKSkpCisgICAgICAoYnVpbGQtc3lzdGVtIGdvLWJ1aWxkLXN5c3RlbSkKKyAgICAg IChpbnB1dHMKKyAgICAgICBgKCgiZ29sYW5nLm9yZy94L25ldC9pbnRlcm5hbC9pYW5hIiAsZ29s YW5nLW9yZy14LW5ldC1pbnRlcm5hbC1pYW5hKQorICAgICAgICAgKCJnb2xhbmcub3JnL3gvbmV0 L2ludGVybmFsL25ldHJlZmxlY3QiICxnb2xhbmctb3JnLXgtbmV0LWludGVybmFsLW5ldHJlZmxl Y3QpKSkKKyAgICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6aW1wb3J0LXBhdGggImdvbGFuZy5v cmcveC9uZXQvY29udGV4dCIKKyAgICAgICAgICM6dW5wYWNrLXBhdGggImdvbGFuZy5vcmcveC9u ZXQiKSkKKyAgICAgIChzeW5vcHNpcyAiR28gc3VwcGxlbWVudGFyeSBuZXR3b3JrIGxpYnJhcmll cyIpCisgICAgICAoZGVzY3JpcHRpb24gIkdvIHN1cHBsZW1lbnRhcnkgbmV0d29yayBsaWJyYXJp ZXMiKQorICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9nby5nb29nbGVzb3VyY2UuY29tL25ldC8i KQorICAgICAgKGxpY2Vuc2UgYnNkLTMpKSkpCisKKyhkZWZpbmUtcHVibGljIGdvbGFuZy1vcmct eC1uZXQtaW50ZXJuYWwtaWFuYQorICAobGV0ICgoY29tbWl0ICIwOGYxNjhlNTkzYjVhYWI2MTg0 OTA1NGI3Nzk4MWRlODEyNjY2Njk3IikpCisgICAgKHBhY2thZ2UKKyAgICAgIChuYW1lICJnb2xh bmctb3JnLXgtbmV0LWludGVybmFsLWlhbmEiKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1hcHBl bmQgIjIwMTYwMjI2LiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNlIChv cmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAgICAg ICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0cHM6 Ly9nby5nb29nbGVzb3VyY2UuY29tL25ldCIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1p dCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kICJn by5nb29nbGVzb3VyY2UuY29tLW5ldC0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAgICAoc2hhMjU2 CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjF2bXpzNGdxajBqbGcxMzEzZ2tpc25wMGM2OTE0 cW4zNzgxbG5iem1ibmpmczhwYWZscjciKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSBnby1idWls ZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9ydC1wYXRoICJnb2xh bmcub3JnL3gvbmV0L2ludGVybmFsL2lhbmEiCisgICAgICAgICAjOnVucGFjay1wYXRoICJnb2xh bmcub3JnL3gvbmV0IikpCisgICAgICAoc3lub3BzaXMgIkdvIHN1cHBsZW1lbnRhcnkgbmV0d29y ayBsaWJyYXJpZXMiKQorICAgICAgKGRlc2NyaXB0aW9uICJHbyBzdXBwbGVtZW50YXJ5IG5ldHdv cmsgbGlicmFyaWVzIikKKyAgICAgIChob21lLXBhZ2UgImh0dHBzOi8vZ28uZ29vZ2xlc291cmNl LmNvbS9uZXQvIikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCisoZGVmaW5lLXB1YmxpYyBn b2xhbmctb3JnLXgtbmV0LWludGVybmFsLW5ldHJlZmxlY3QKKyAgKGxldCAoKGNvbW1pdCAiNzQ5 YTUwMmRkMWVhZjNlNWJmZDRmODk1Njc0OGM1MDIzNTdjMGJiZSIpKQorICAgIChwYWNrYWdlCisg ICAgICAobmFtZSAiZ29sYW5nLW9yZy14LW5ldC1pbnRlcm5hbC1uZXRyZWZsZWN0IikKKyAgICAg ICh2ZXJzaW9uIChzdHJpbmctYXBwZW5kICIyMDE2MDkxMi4iIChzdHJpbmctdGFrZSBjb21taXQg NykpKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgKG1ldGhvZCBnaXQt ZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAg ICAgICAgICAgICh1cmwgImh0dHBzOi8vZ28uZ29vZ2xlc291cmNlLmNvbS9uZXQiKQorICAgICAg ICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUt bmFtZSAoc3RyaW5nLWFwcGVuZCAiZ28uZ29vZ2xlc291cmNlLmNvbS1uZXQtIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisg ICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMyICIxOHo0aXFw cnBhZjYyNjRjYWM5ZzNqcDhxZHg0aTRwMHc3MjRycWdnbHg4ZGZqNzhkeDl2IikpKSkKKyAgICAg IChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50cworICAgICAg IGAoIzppbXBvcnQtcGF0aCAiZ29sYW5nLm9yZy94L25ldC9pbnRlcm5hbC9uZXRyZWZsZWN0Igor ICAgICAgICAgIzp1bnBhY2stcGF0aCAiZ29sYW5nLm9yZy94L25ldCIpKQorICAgICAgKHN5bm9w c2lzICJHbyBzdXBwbGVtZW50YXJ5IG5ldHdvcmsgbGlicmFyaWVzIikKKyAgICAgIChkZXNjcmlw dGlvbiAiR28gc3VwcGxlbWVudGFyeSBuZXR3b3JrIGxpYnJhcmllcyIpCisgICAgICAoaG9tZS1w YWdlICJodHRwczovL2dvLmdvb2dsZXNvdXJjZS5jb20vbmV0IikKKyAgICAgIChsaWNlbnNlIGJz ZC0zKSkpKQorCisoZGVmaW5lLXB1YmxpYyBnb2xhbmctb3JnLXgtbmV0LWlwdjYKKyAgKGxldCAo KGNvbW1pdCAiNzQ5YTUwMmRkMWVhZjNlNWJmZDRmODk1Njc0OGM1MDIzNTdjMGJiZSIpKQorICAg IChwYWNrYWdlCisgICAgICAobmFtZSAiZ29sYW5nLW9yZy14LW5ldC1pcHY2IikKKyAgICAgICh2 ZXJzaW9uIChzdHJpbmctYXBwZW5kICIyMDE2MDkxMi4iIChzdHJpbmctdGFrZSBjb21taXQgNykp KQorICAgICAgKHNvdXJjZSAob3JpZ2luCisgICAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0 Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAoZ2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAg ICAgICAgICh1cmwgImh0dHBzOi8vZ28uZ29vZ2xlc291cmNlLmNvbS9uZXQiKQorICAgICAgICAg ICAgICAgICAgICAgIChjb21taXQgY29tbWl0KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFt ZSAoc3RyaW5nLWFwcGVuZCAiZ28uZ29vZ2xlc291cmNlLmNvbS1uZXQtIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisgICAg ICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAgICAoYmFzZTMyICIxOHo0aXFwcnBh ZjYyNjRjYWM5ZzNqcDhxZHg0aTRwMHc3MjRycWdnbHg4ZGZqNzhkeDl2IikpKSkKKyAgICAgIChi dWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAgKGFyZ3VtZW50cworICAgICAgIGAo IzppbXBvcnQtcGF0aCAiZ29sYW5nLm9yZy94L25ldC9pcHY2IgorICAgICAgICAgIzp1bnBhY2st cGF0aCAiZ29sYW5nLm9yZy94L25ldCIpKQorICAgICAgKHN5bm9wc2lzICJHbyBzdXBwbGVtZW50 YXJ5IG5ldHdvcmsgbGlicmFyaWVzIikKKyAgICAgIChkZXNjcmlwdGlvbiAiR28gc3VwcGxlbWVu dGFyeSBuZXR3b3JrIGxpYnJhcmllcyIpCisgICAgICAoaG9tZS1wYWdlICJodHRwczovL2dvLmdv b2dsZXNvdXJjZS5jb20vbmV0IikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCisoZGVmaW5l LXB1YmxpYyBnb2xhbmctb3JnLXgtbmV0LXByb3h5CisgIChsZXQgKChjb21taXQgIjc0OWE1MDJk ZDFlYWYzZTViZmQ0Zjg5NTY3NDhjNTAyMzU3YzBiYmUiKSkKKyAgICAocGFja2FnZQorICAgICAg KG5hbWUgImdvbGFuZy1vcmcteC1uZXQtcHJveHkiKQorICAgICAgKHZlcnNpb24gKHN0cmluZy1h cHBlbmQgIjIwMTYwOTEyLiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAoc291cmNl IChvcmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAgICAgICAg ICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVybCAiaHR0 cHM6Ly9nby5nb29nbGVzb3VyY2UuY29tL25ldCIpCisgICAgICAgICAgICAgICAgICAgICAgKGNv bW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5k ICJnby5nb29nbGVzb3VyY2UuY29tLW5ldC0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAgICAoc2hh MjU2CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjE4ejRpcXBycGFmNjI2NGNhYzlnM2pwOHFk eDRpNHAwdzcyNHJxZ2dseDhkZmo3OGR4OXYiKSkpKQorICAgICAgKGJ1aWxkLXN5c3RlbSBnby1i dWlsZC1zeXN0ZW0pCisgICAgICAoaW5wdXRzCisgICAgICAgYCgoImdvbGFuZy5vcmcveC9uZXQv aW50ZXJuYWwvaWFuYSIgLGdvbGFuZy1vcmcteC1uZXQtaW50ZXJuYWwtaWFuYSkKKyAgICAgICAg ICgiZ29sYW5nLm9yZy94L25ldC9pbnRlcm5hbC9uZXRyZWZsZWN0IiAsZ29sYW5nLW9yZy14LW5l dC1pbnRlcm5hbC1uZXRyZWZsZWN0KSkpCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmlt cG9ydC1wYXRoICJnb2xhbmcub3JnL3gvbmV0L2ludGVybmFsL3Byb3h5IgorICAgICAgICAgIzp1 bnBhY2stcGF0aCAiZ29sYW5nLm9yZy94L25ldCIpKQorICAgICAgKHN5bm9wc2lzICJHbyBzdXBw bGVtZW50YXJ5IG5ldHdvcmsgbGlicmFyaWVzIikKKyAgICAgIChkZXNjcmlwdGlvbiAiR28gc3Vw cGxlbWVudGFyeSBuZXR3b3JrIGxpYnJhcmllcyIpCisgICAgICAoaG9tZS1wYWdlICJodHRwczov L2dvLmdvb2dsZXNvdXJjZS5jb20vbmV0IikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCiso ZGVmaW5lLXB1YmxpYyBnb2xhbmctb3JnLXgtbmV0LXJvdXRlCisgIChsZXQgKChjb21taXQgIjc0 OWE1MDJkZDFlYWYzZTViZmQ0Zjg5NTY3NDhjNTAyMzU3YzBiYmUiKSkKKyAgICAocGFja2FnZQor ICAgICAgKG5hbWUgImdvbGFuZy1vcmcteC1uZXQtcm91dGUiKQorICAgICAgKHZlcnNpb24gKHN0 cmluZy1hcHBlbmQgIjIwMTYwOTEyLiIgKHN0cmluZy10YWtlIGNvbW1pdCA3KSkpCisgICAgICAo c291cmNlIChvcmlnaW4KKyAgICAgICAgICAgICAgICAobWV0aG9kIGdpdC1mZXRjaCkKKyAgICAg ICAgICAgICAgICAodXJpIChnaXQtcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgKHVy bCAiaHR0cHM6Ly9nby5nb29nbGVzb3VyY2UuY29tL25ldCIpCisgICAgICAgICAgICAgICAgICAg ICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmct YXBwZW5kICJnby5nb29nbGVzb3VyY2UuY29tLW5ldC0iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uICItY2hlY2tvdXQiKSkKKyAgICAgICAgICAgICAg ICAoc2hhMjU2CisgICAgICAgICAgICAgICAgIChiYXNlMzIgIjE4ejRpcXBycGFmNjI2NGNhYzln M2pwOHFkeDRpNHAwdzcyNHJxZ2dseDhkZmo3OGR4OXYiKSkpKQorICAgICAgKGJ1aWxkLXN5c3Rl bSBnby1idWlsZC1zeXN0ZW0pCisgICAgICAoYXJndW1lbnRzCisgICAgICAgYCgjOmltcG9ydC1w YXRoICJnb2xhbmcub3JnL3gvbmV0L3JvdXRlIgorICAgICAgICAgIzp1bnBhY2stcGF0aCAiZ29s YW5nLm9yZy94L25ldCIpKQorICAgICAgKHN5bm9wc2lzICJHbyBzdXBwbGVtZW50YXJ5IG5ldHdv cmsgbGlicmFyaWVzIikKKyAgICAgIChkZXNjcmlwdGlvbiAiR28gc3VwcGxlbWVudGFyeSBuZXR3 b3JrIGxpYnJhcmllcyIpCisgICAgICAoaG9tZS1wYWdlICJodHRwczovL2dvLmdvb2dsZXNvdXJj ZS5jb20vbmV0IikKKyAgICAgIChsaWNlbnNlIGJzZC0zKSkpKQorCisoZGVmaW5lLXB1YmxpYyBn b2xhbmctb3JnLXgtc3lzLXVuaXgKKyAgKGxldCAoKGNvbW1pdCAiYTQwODUwMWJlNGQxN2VlOTc4 YzA0YTYxOGU3YTFiMjJhZjA1OGMwZSIpKQorICAgIChwYWNrYWdlCisgICAgICAobmFtZSAiZ29s YW5nLW9yZy14LXN5cy11bml4IikKKyAgICAgICh2ZXJzaW9uIChzdHJpbmctYXBwZW5kICIyMDE2 MDcwNC4iIChzdHJpbmctdGFrZSBjb21taXQgNykpKQorICAgICAgKHNvdXJjZSAob3JpZ2luCisg ICAgICAgICAgICAgICAgKG1ldGhvZCBnaXQtZmV0Y2gpCisgICAgICAgICAgICAgICAgKHVyaSAo Z2l0LXJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICh1cmwgImh0dHBzOi8vZ28uZ29v Z2xlc291cmNlLmNvbS9zeXMiKQorICAgICAgICAgICAgICAgICAgICAgIChjb21taXQgY29tbWl0 KSkpCisgICAgICAgICAgICAgICAgKGZpbGUtbmFtZSAoc3RyaW5nLWFwcGVuZCAiZ28uZ29vZ2xl c291cmNlLmNvbS1zeXMtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdmVyc2lvbiAiLWNoZWNrb3V0IikpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAg ICAgICAgICAgICAoYmFzZTMyICIxbnd2czU5NHdyendrMWJuaGRzbmE2bjg2NjV2emx6bXMxNzFz dzBta21mYjcxM3BobDhxIikpKSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVt KQorICAgICAgKGFyZ3VtZW50cworICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ29sYW5nLm9yZy94 L3N5cy91bml4IgorICAgICAgICAgIzp1bnBhY2stcGF0aCAiZ29sYW5nLm9yZy94L3N5cyIpKQor ICAgICAgKHN5bm9wc2lzICJHbyBwYWNrYWdlcyBmb3IgbG93LWxldmVsIGludGVyYWN0aW9uIHdp dGggdGhlIG9wZXJhdGluZyBzeXN0ZW0iKQorICAgICAgKGRlc2NyaXB0aW9uICJHbyBwYWNrYWdl cyBmb3IgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggdGhlIG9wZXJhdGluZyBzeXN0ZW0iKQor ICAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9nby5nb29nbGVzb3VyY2UuY29tL3N5cyIpCisgICAg ICAobGljZW5zZSBic2QtMykpKSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLW9yZy14LXRleHQt dHJhbnNmb3JtCisgIChsZXQgKChjb21taXQgImE3MWZkMTAzNDFiMDY0YzEwZjRhODFjZWFjNzJi Y2Y3MGYyNmVhMzQiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFuZy1vcmcteC10 ZXh0LXRyYW5zZm9ybSIpCisgICAgICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMjAxNjAyMTUu IiAoc3RyaW5nLXRha2UgY29tbWl0IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAg ICAgICAgICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1y ZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dvLmdvb2dsZXNv dXJjZS5jb20vdGV4dCIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkK KyAgICAgICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kICJnby5nb29nbGVzb3Vy Y2UuY29tLXRleHQtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dmVyc2lvbiAiLWNoZWNrb3V0IikpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAg ICAgICAgICAoYmFzZTMyICIxaWd4cXJnbm5iNjk4M2ZsMHljazB4YWwyaHdua2NnYnNscjdjeHly ZzdhNjV2YXdkMHExIikpKSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQor ICAgICAgKGFyZ3VtZW50cworICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ29sYW5nLm9yZy94L3Rl eHQvdHJhbnNmb3JtIgorICAgICAgICAgIzp1bnBhY2stcGF0aCAiZ29sYW5nLm9yZy94L3RleHQi KSkKKyAgICAgIChzeW5vcHNpcyAiR28gdGV4dCBwcm9jZXNzaW5nIHN1cHBvcnQiKQorICAgICAg KGRlc2NyaXB0aW9uICJHbyB0ZXh0IHByb2Nlc3Npbmcgc3VwcG9ydCIpCisgICAgICAoaG9tZS1w YWdlICJodHRwczovL2dvLmdvb2dsZXNvdXJjZS5jb20vdGV4dCIpCisgICAgICAobGljZW5zZSBi c2QtMykpKSkKKworKGRlZmluZS1wdWJsaWMgZ29sYW5nLW9yZy14LXRleHQtdW5pY29kZS1ub3Jt CisgIChsZXQgKChjb21taXQgImE3MWZkMTAzNDFiMDY0YzEwZjRhODFjZWFjNzJiY2Y3MGYyNmVh MzQiKSkKKyAgICAocGFja2FnZQorICAgICAgKG5hbWUgImdvbGFuZy1vcmcteC10ZXh0LXVuaWNv ZGUtbm9ybSIpCisgICAgICAodmVyc2lvbiAoc3RyaW5nLWFwcGVuZCAiMjAxNjAyMTUuIiAoc3Ry aW5nLXRha2UgY29tbWl0IDcpKSkKKyAgICAgIChzb3VyY2UgKG9yaWdpbgorICAgICAgICAgICAg ICAgIChtZXRob2QgZ2l0LWZldGNoKQorICAgICAgICAgICAgICAgICh1cmkgKGdpdC1yZWZlcmVu Y2UKKyAgICAgICAgICAgICAgICAgICAgICAodXJsICJodHRwczovL2dvLmdvb2dsZXNvdXJjZS5j b20vdGV4dCIpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbW1pdCBjb21taXQpKSkKKyAgICAg ICAgICAgICAgICAoZmlsZS1uYW1lIChzdHJpbmctYXBwZW5kICJnby5nb29nbGVzb3VyY2UuY29t LXRleHQtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv biAiLWNoZWNrb3V0IikpCisgICAgICAgICAgICAgICAgKHNoYTI1NgorICAgICAgICAgICAgICAg ICAoYmFzZTMyICIxaWd4cXJnbm5iNjk4M2ZsMHljazB4YWwyaHdua2NnYnNscjdjeHlyZzdhNjV2 YXdkMHExIikpKSkKKyAgICAgIChidWlsZC1zeXN0ZW0gZ28tYnVpbGQtc3lzdGVtKQorICAgICAg KGFyZ3VtZW50cworICAgICAgIGAoIzppbXBvcnQtcGF0aCAiZ29sYW5nLm9yZy94L3RleHQvdW5p Y29kZS9ub3JtIgorICAgICAgICAgIzp1bnBhY2stcGF0aCAiZ29sYW5nLm9yZy94L3RleHQiKSkK KyAgICAgIChzeW5vcHNpcyAiR28gdGV4dCBwcm9jZXNzaW5nIHN1cHBvcnQiKQorICAgICAgKGRl c2NyaXB0aW9uICJHbyB0ZXh0IHByb2Nlc3Npbmcgc3VwcG9ydCIpCisgICAgICAoaG9tZS1wYWdl ICJodHRwczovL2dvLmdvb2dsZXNvdXJjZS5jb20vdGV4dCIpCisgICAgICAobGljZW5zZSBic2Qt MykpKSkKLS0gCjIuMTAuMQoK --=_b0b3c3d18eadade784de2d0acda47722--