<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>186198</bug_id>
          
          <creation_ts>2009-03-05 11:12:19 +0000</creation_ts>
          <short_desc>support GDM 2.21+&apos;s control interface</short_desc>
          <delta_ts>2010-11-05 20:45:27 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>10</classification_id>
          <classification>Unmaintained</classification>
          <product>ksmserver</product>
          <component>general</component>
          <version>unspecified</version>
          <rep_platform>unspecified</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>wishlist</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jan Hnatek">jan.hnatek</reporter>
          <assigned_to name="Lubos Lunak">l.lunak</assigned_to>
          <cc>acb</cc>
    
    <cc>frodeseverin</cc>
    
    <cc>nesnera</cc>
    
    <cc>ossi</cc>
    
    <cc>rdieter</cc>
    
    <cc>rfe.gen</cc>
    
    <cc>spinus1</cc>
    
    <cc>wl-chmw</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin>4.6</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>15</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>725483</commentid>
    <comment_count>0</comment_count>
    <who name="Jan Hnatek">jan.hnatek</who>
    <bug_when>2009-03-05 11:12:19 +0000</bug_when>
    <thetext>Version:            (using KDE 4.1.4)
Compiler:          Sun Studio 12 
OS:                Solaris
Installed from:    Solaris Packages

Shutdown and restart functionality is not available in [Open]Solaris. Shutdown and restart dialogs only contain Logout option.

Workaround (to allow for session saving):
- logout from KDE session
- log in to a simple xterm session
- shutdown by
$ pfexec /usr/sbin/shutdown -y -g0 -i5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725486</commentid>
    <comment_count>1</comment_count>
    <who name="Pino Toscano">pino</who>
    <bug_when>2009-03-05 11:21:38 +0000</bug_when>
    <thetext>Shutdown and restart are offered only if lanched from a supported login manager, ie KDM or GDM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725490</commentid>
    <comment_count>2</comment_count>
    <who name="Jan Hnatek">jan.hnatek</who>
    <bug_when>2009-03-05 11:30:58 +0000</bug_when>
    <thetext>Please note that this is OpenSolaris-specific (maybe Solaris-specific, I cannot confirm that). KDE4 session was launched from GDM (thanks to KDEgdm-integration package).
Maybe this should be an RFE...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752432</commentid>
    <comment_count>3</comment_count>
    <who name="Jan Hnatek">jan.hnatek</who>
    <bug_when>2009-05-05 10:51:55 +0000</bug_when>
    <thetext>Workaround:
1. /etc/X11/gdm/custom.conf
[greeter]
SystemMenu=true

2. /etc/user_attr
gdm::::type=normal;auths=solaris.system.shutdown</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767470</commentid>
    <comment_count>4</comment_count>
    <who name="Oswald Buddenhagen">ossi</who>
    <bug_when>2009-05-30 20:12:12 +0000</bug_when>
    <thetext>i assume you are using gdm 2.21+.
supporting that would imply adding support for gdm&apos;s new d-bus interface to libkworkspace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790374</commentid>
    <comment_count>5</comment_count>
    <who name="Oswald Buddenhagen">ossi</who>
    <bug_when>2009-07-11 13:48:19 +0000</bug_when>
    <thetext>*** Bug 199201 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790432</commentid>
    <comment_count>6</comment_count>
    <who name="Ladislav Nesnera">nesnera</who>
    <bug_when>2009-07-11 15:35:44 +0000</bug_when>
    <thetext>Because duplicate Bug 199201 describes &quot;slightly different problem&quot; Its citation follows:
There is a problem to switch to new sessions if they have different type of
session (KDE, Gnome).
mail thread - http://osdir.com/ml/fedora-list/2009-06/msg03544.html
reported Gnome bug - http://bugzilla.gnome.org/show_bug.cgi?id=568540</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921656</commentid>
    <comment_count>7</comment_count>
    <who name="Oswald Buddenhagen">ossi</who>
    <bug_when>2010-02-21 11:23:55 +0000</bug_when>
    <thetext>*** Bug 214654 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996753</commentid>
    <comment_count>8</comment_count>
    <who name="Oswald Buddenhagen">ossi</who>
    <bug_when>2010-08-01 00:03:04 +0000</bug_when>
    <thetext>*** Bug 245198 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996756</commentid>
    <comment_count>9</comment_count>
    <who name="Oswald Buddenhagen">ossi</who>
    <bug_when>2010-08-01 00:07:26 +0000</bug_when>
    <thetext>i don&apos;t know whether bug #245198 is strictly a duplicate, as it talks about consolekit, not directly gdm, and i haven&apos;t tracked the development closely enough to tell right now. doesn&apos;t matter too much, as only the consolekit interface is relevant nowadays.
see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=581841 for reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996856</commentid>
    <comment_count>10</comment_count>
    <who name="Frode Hatlevik">frodeseverin</who>
    <bug_when>2010-08-01 10:55:09 +0000</bug_when>
    <thetext>(In reply to comment #9)
&gt; i don&apos;t know whether bug #245198 is strictly a duplicate, as it talks about
&gt; consolekit, not directly gdm, and i haven&apos;t tracked the development closely
&gt; enough to tell right now. doesn&apos;t matter too much, as only the consolekit
&gt; interface is relevant nowadays.
&gt; see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=581841 for reference.

Bug #245198 is not a duplicate.

KDE 4 and gdm2 integrates nicely on my Debian Squeeze/Sid. gdm3 does not integrate with KDE 4.

Please, could you investigate bug #245198 further?

Regards
;)Frode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996986</commentid>
    <comment_count>11</comment_count>
    <who name="Oswald Buddenhagen">ossi</who>
    <bug_when>2010-08-01 15:58:29 +0000</bug_when>
    <thetext>*** Bug 245198 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028089</commentid>
    <comment_count>12</comment_count>
    <who name="Andrew Manson">acb</who>
    <bug_when>2010-10-05 23:54:05 +0000</bug_when>
    <thetext>My symptoms of this bug are exactly as described in another bug. I will describe here for clarity: 

-&gt; If kscreensaver has locked the screen there is no option to switch user.

-&gt; The &quot;Switch user&quot; option on the K menu only locks my display, and does not
start a new session with a gdm3 greeter.

-&gt; There is no option to turn off or reboot from the K menu.

Apparently there is a patch attached to a Debian bug report http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=581841 that I have not had the ability to test as of yet. 

Has this patch been tried yet? 


All of theese are functional when kdm manages displays for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028101</commentid>
    <comment_count>13</comment_count>
    <who name="Andrew Manson">acb</who>
    <bug_when>2010-10-06 00:20:58 +0000</bug_when>
    <thetext>Sorry but that last line &quot;All of theese are functional when kdm manages displays for me.&quot; was a copy and paste error and should not be in my last comment. 

I&apos;m sorry for any confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030197</commentid>
    <comment_count>14</comment_count>
      <attachid>52401</attachid>
    <who name="Andrew Manson">acb</who>
    <bug_when>2010-10-10 23:02:12 +0000</bug_when>
    <thetext>Created attachment 52401
Patch from Fedora project

This patch successfully enables restart and shutdown when GDM is enabled. It does not, however, enable the correct behavior when a switch-user is requested. Can you please review this patch (which has come directly from the fedora project here: http://pkgs.fedoraproject.org/gitweb/?p=kdebase-workspace.git;a=blob_plain;f=kdebase-workspace-4.3.95-ck-shutdown.patch;hb=HEAD) and let me know if it is sufficient for the shutdown and restart features. I will continue to work on the switch user feature. 

Note that I tested this patch against kdebase-workspace-4.4.2 on ubuntu 10.04 LTS which was fully updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032415</commentid>
    <comment_count>15</comment_count>
    <who name="Wolfgang Lorenz">wl-chmw</who>
    <bug_when>2010-10-15 09:59:28 +0000</bug_when>
    <thetext>Hi, we have a multi user system at home, where GNOME and KDE are installed as desktop environments. I chose to install GDM as login manager, since I am rarely using this computer and GNOME is the choice of all other users. It would be nice though, to be able to shut down the computer, or to use the &quot;switch user&quot; button...

I guess it all leads down to something in terms of this feature request: https://bugs.kde.org/show_bug.cgi?id=244765

It seems that this is just a case of incompatibility of interfaces. Login managers should all provide the same interface and as XDM and GDM are using ConsoleKit, maybe KDM should to the same.

I&apos;m not too deep into this problem, but I think these two bug reports correlate well, from what I experienced. And this thing is bugging me for more than a year, now.

Greetings...

(OS: Ubuntu 10.10)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033566</commentid>
    <comment_count>16</comment_count>
    <who name="Oswald Buddenhagen">ossi</who>
    <bug_when>2010-10-17 22:08:51 +0000</bug_when>
    <thetext>SVN commit 1186881 by ossi:

add support for GDM 2.21+ shutdown and session switching

FEATURE: 186198
FIXED-IN: 4.6

 M  +184 -13   kdisplaymanager.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&amp;revision=1186881</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037683</commentid>
    <comment_count>17</comment_count>
    <who name="Kevin Kofler">kevin.kofler</who>
    <bug_when>2010-10-27 18:58:56 +0000</bug_when>
    <thetext>*** Bug 166985 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040439</commentid>
    <comment_count>18</comment_count>
      <attachid>53143</attachid>
    <who name="Andrew Manson">acb</who>
    <bug_when>2010-11-04 22:37:11 +0000</bug_when>
    <thetext>Created attachment 53143
Backported the fix to the 4.5 branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040441</commentid>
    <comment_count>19</comment_count>
    <who name="Andrew Manson">acb</who>
    <bug_when>2010-11-04 22:37:32 +0000</bug_when>
    <thetext>Thanks for the fix to this bug, I have been looking forward to it. 

I tried applying the patch to the 4.5 branch of KDE but because of the large amount of whitespace changes it was unsuccessful. I have attached a patch file that is a difference between the fixed version in trunk and the version in the 4.5 branch that applies correctly. This has been tested in version KDE 4.5, Ubuntu 10.04 and it is working perfectly. 

Please consider this patch for the 4.5 branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040453</commentid>
    <comment_count>20</comment_count>
      <attachid>53145</attachid>
    <who name="Andrew Manson">acb</who>
    <bug_when>2010-11-04 22:55:17 +0000</bug_when>
    <thetext>Created attachment 53145
Improved Backport Patch with less whitespace changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040455</commentid>
    <comment_count>21</comment_count>
    <who name="Andrew Manson">acb</who>
    <bug_when>2010-11-04 22:56:16 +0000</bug_when>
    <thetext>I&apos;ve just re-added the patch but generated it with the --ignore-space flag this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040467</commentid>
    <comment_count>22</comment_count>
    <who name="Andrew Manson">acb</who>
    <bug_when>2010-11-04 23:28:21 +0000</bug_when>
    <thetext>(In reply to comment #19)
&gt; I tried applying the patch to the 4.5 branch of KDE but because of the large
&gt; amount of whitespace changes it was unsuccessful. 

I&apos;m sorry but I have confused myself. I was actually applying this patch to the 4.4 branch (4.4.2). Everything in my previous messages is correct but just replace any reference to 4.5 with 4.4.2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040758</commentid>
    <comment_count>23</comment_count>
    <who name="Jan Hnatek">jan.hnatek</who>
    <bug_when>2010-11-05 20:45:27 +0000</bug_when>
    <thetext>Shutdown &amp; restart now work on Solaris with KDE build 4.5.74 (4.5.* I suppose).

Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52401</attachid>
            <date>2010-10-10 23:02:12 +0000</date>
            <delta_ts>2010-11-04 22:37:11 +0000</delta_ts>
            <desc>Patch from Fedora project</desc>
            <filename>fedoraKWorkspacePatch.patch</filename>
            <type>text/plain</type>
            <size>2765</size>
            <attacher name="Andrew Manson">acb</attacher>
            
              <data encoding="base64">ZGlmZiAtdXIga2RlYmFzZS13b3Jrc3BhY2UtNC4zLjk1L2xpYnMva3dvcmtzcGFjZS9rZGlzcGxh
eW1hbmFnZXIuY3BwIGtkZWJhc2Utd29ya3NwYWNlLTQuMy45NS1jay1zaHV0ZG93bi9saWJzL2t3
b3Jrc3BhY2Uva2Rpc3BsYXltYW5hZ2VyLmNwcAotLS0ga2RlYmFzZS13b3Jrc3BhY2UtNC4zLjk1
L2xpYnMva3dvcmtzcGFjZS9rZGlzcGxheW1hbmFnZXIuY3BwCTIwMDktMDQtMjggMTU6NDY6MTEu
MDAwMDAwMDAwICswMjAwCisrKyBrZGViYXNlLXdvcmtzcGFjZS00LjMuOTUtY2stc2h1dGRvd24v
bGlicy9rd29ya3NwYWNlL2tkaXNwbGF5bWFuYWdlci5jcHAJMjAxMC0wMS0zMCAxNzozMTo1OC4w
MDAwMDAwMDAgKzAxMDAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxRdERCdXMvUXREQnVz
PgogCiAjaW5jbHVkZSA8UVJlZ0V4cD4KKyNpbmNsdWRlIDxRTGF0aW4xU3RyaW5nPgogCiAjaW5j
bHVkZSA8WDExL1hhdXRoLmg+CiAjaW5jbHVkZSA8WDExL1hsaWIuaD4KQEAgLTg1LDYgKzg2LDcg
QEAKIAkJCQlzdHJjcHkoIHNhLnN1bl9wYXRoLCAiL3RtcC8uZ2RtX3NvY2tldCIgKTsKIAkJCQlp
ZiAoOjpjb25uZWN0KCBkLT5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzYSwgc2l6ZW9mKHNhKSAp
KSB7CiAJCQkJCTo6Y2xvc2UoIGQtPmZkICk7CisJCQkJCURNVHlwZSA9IE5vRE07CiAJCQkJCWQt
PmZkID0gLTE7CiAJCQkJCWJyZWFrOwogCQkJCX0KQEAgLTE4Niw2ICsxODgsMjMgQEAKIGJvb2wK
IEtEaXNwbGF5TWFuYWdlcjo6Y2FuU2h1dGRvd24oKQogeworCWlmIChETVR5cGUgPT0gTm9ETSkg
eworCQkvLyBObyBETSBvciBuZXdlc3QgR0RNIHJ1bm5pbmcsIHdlJ2xsIHRyeSBzaHV0dGluZyBk
b3duIHRocm91Z2ggQ29uc29sZUtpdC4KKwkJUURCdXNDb25uZWN0aW9uIHN5c3RlbUJ1cyA9IFFE
QnVzQ29ubmVjdGlvbjo6c3lzdGVtQnVzKCk7CisJCWlmICghc3lzdGVtQnVzLmlzQ29ubmVjdGVk
KCkpCisJCQlyZXR1cm4gZmFsc2U7CisJCVFEQnVzSW50ZXJmYWNlIGNvbnNvbGVLaXQoIFFMYXRp
bjFTdHJpbmcoICJvcmcuZnJlZWRlc2t0b3AuQ29uc29sZUtpdCIgKSwKKwkJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZyggIi9vcmcvZnJlZWRlc2t0b3AvQ29uc29sZUtp
dC9NYW5hZ2VyIiApLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5n
KCAib3JnLmZyZWVkZXNrdG9wLkNvbnNvbGVLaXQuTWFuYWdlciIgKSwKKwkJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3lzdGVtQnVzICk7CisJCWlmICghY29uc29sZUtpdC5pc1ZhbGlkKCkp
CisJCQlyZXR1cm4gZmFsc2U7CisJCS8vIFVuZm9ydHVuYXRlbHksIGF0IHRoaXMgcG9pbnQgd2Ug
ZG9uJ3Qga25vdyB3aGV0aGVyIHdlIHNob3VsZCBiZSBxdWVyeWluZworCQkvLyBDYW5TdG9wIG9y
IENhblJlc3RhcnQuIExldCdzIGRvIHdoYXQgdGhlIGNvZGUgYmVsb3cgZG9lcyBhbmQganVzdCB1
c2UgQ2FuU3RvcC4KKwkJUURCdXNSZXBseTxib29sPiBjYW5TdG9wID0gY29uc29sZUtpdC5jYWxs
KCBRTGF0aW4xU3RyaW5nKCAiQ2FuU3RvcCIgKSApOworCQlyZXR1cm4gKGNhblN0b3AuaXNWYWxp
ZCgpICYmIGNhblN0b3AudmFsdWUoKSk7CisJfQorCiAJaWYgKERNVHlwZSA9PSBPbGRLRE0pCiAJ
CXJldHVybiBzdHJzdHIoIGN0bCwgIixtYXlzZCIgKSAhPSAwOwogCkBAIC0yMDUsNiArMjI0LDIx
IEBACiAJaWYgKHNodXRkb3duVHlwZSA9PSBLV29ya1NwYWNlOjpTaHV0ZG93blR5cGVOb25lIHx8
IHNodXRkb3duVHlwZSA9PSBLV29ya1NwYWNlOjpTaHV0ZG93blR5cGVMb2dvdXQpCiAJCXJldHVy
bjsKIAorICAgICAgICBpZiAoRE1UeXBlID09IE5vRE0pIHsKKyAgICAgICAgICAgICAgIC8vIE5v
IERNIG9yIG5ld2VzdCBHRE0gcnVubmluZywgdHJ5IHNodXR0aW5nIGRvd24gdGhyb3VnaCBDb25z
b2xlS2l0LgorICAgICAgICAgICAgICAgUURCdXNDb25uZWN0aW9uIHN5c3RlbUJ1cyA9IFFEQnVz
Q29ubmVjdGlvbjo6c3lzdGVtQnVzKCk7CisgICAgICAgICAgICAgICBpZiAoIXN5c3RlbUJ1cy5p
c0Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICBRREJ1c0ludGVyZmFjZSBjb25zb2xlS2l0KCBRTGF0aW4xU3RyaW5nKCAib3JnLmZyZWVk
ZXNrdG9wLkNvbnNvbGVLaXQiICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRTGF0aW4xU3RyaW5nKCAiL29yZy9mcmVlZGVza3RvcC9Db25zb2xlS2l0L01hbmFn
ZXIiICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4x
U3RyaW5nKCAib3JnLmZyZWVkZXNrdG9wLkNvbnNvbGVLaXQuTWFuYWdlciIgKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbUJ1cyApOworICAgICAgICAg
ICAgICAgaWYgKGNvbnNvbGVLaXQuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICAgICBj
b25zb2xlS2l0LmNhbGwoIFFMYXRpbjFTdHJpbmcoIHNodXRkb3duVHlwZSA9PSBLV29ya1NwYWNl
OjpTaHV0ZG93blR5cGVSZWJvb3QgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJSZXN0YXJ0IiA6ICJTdG9wIiApICk7CisgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKwogCWJvb2wgY2FwX2FzazsKIAlpZiAoRE1UeXBlID09
IE5ld0tETSkgewogCQlRQnl0ZUFycmF5IHJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53143</attachid>
            <date>2010-11-04 22:37:11 +0000</date>
            <delta_ts>2010-11-04 22:55:17 +0000</delta_ts>
            <desc>Backported the fix to the 4.5 branch </desc>
            <filename>backportedFix.patch</filename>
            <type>text/plain</type>
            <size>30555</size>
            <attacher name="Andrew Manson">acb</attacher>
            
              <data encoding="base64">ZGlmZiAtdSBrZGViYXNlLXdvcmtzcGFjZS00LjQuMi9kZWJpYW4vY2hhbmdlbG9nIGtkZWJhc2Ut
d29ya3NwYWNlLTQuNC4yL2RlYmlhbi9jaGFuZ2Vsb2cKLS0tIGtkZWJhc2Utd29ya3NwYWNlLTQu
NC4yL2RlYmlhbi9jaGFuZ2Vsb2cKKysrIGtkZWJhc2Utd29ya3NwYWNlLTQuNC4yL2RlYmlhbi9j
aGFuZ2Vsb2cKQEAgLTEsMyArMSwxNSBAQAora2RlYmFzZS13b3Jrc3BhY2UgKDQ6NC40LjItMHVi
dW50dTE2KSBsdWNpZDsgdXJnZW5jeT1sb3cKKworICAqQXBwbHlpbmcgdGhlIEtERSBwYXRjaCB0
byBmdWxseSBpbnRlZ3JhdGUgdGhlIG5ldyBHRE0gaW50byBLREUgCisKKyAtLSBtYW5zb25hIDxB
bmRyZXcgTWFuc29uIDxnLnJlYWwuYXRlQGdtYWlsLmNvbT4gIFdlZCwgMjAgT2N0IDIwMTAgMjI6
MDI6MDggKzAxMDAKKwora2RlYmFzZS13b3Jrc3BhY2UgKDQ6NC40LjItMHVidW50dTE1KSBsdWNp
ZDsgdXJnZW5jeT1sb3cKKworICAqQXBwbHlpbmcgRmVkb3JhIHBhdGNoIHRvIGVuYWJsZSBDb25j
b2xlS2l0IEdETSBpbnRlcmFjdGlvbiAKKworIC0tIEFuZHJldyBDaHJpc3RpYW4gTWFuc29uIDxn
LnJlYWwuYXRlQGdtYWlsLmNvbT4gIFN1biwgMTAgT2N0IDIwMTAgMTU6MTY6MTIgKzAxMDAKKwog
a2RlYmFzZS13b3Jrc3BhY2UgKDQ6NC40LjItMHVidW50dTE0KSBsdWNpZDsgdXJnZW5jeT1sb3cK
IAogICAqIFVwZGF0ZSBrdWJ1bnR1XzEwMV9icmlnaHRuZXNzX2ZuX2tleXNfYW5kX29zZC5kaWZm
IGZyb20gRmVsaXggR2V5ZXIsCm9ubHkgaW4gcGF0Y2gyOgp1bmNoYW5nZWQ6Ci0tLSBrZGViYXNl
LXdvcmtzcGFjZS00LjQuMi5vcmlnL2xpYnMva3dvcmtzcGFjZS9rZGlzcGxheW1hbmFnZXIuY3Bw
CisrKyBrZGViYXNlLXdvcmtzcGFjZS00LjQuMi9saWJzL2t3b3Jrc3BhY2Uva2Rpc3BsYXltYW5h
Z2VyLmNwcApAQCAtMjMsOCArMjMsOSBAQAogCiAjaW5jbHVkZSA8a2FwcGxpY2F0aW9uLmg+CiAj
aW5jbHVkZSA8a2xvY2FsZS5oPgotI2luY2x1ZGUgPFF0REJ1cy9RdERCdXM+CisjaW5jbHVkZSA8
a3VzZXIuaD4KIAorI2luY2x1ZGUgPFF0REJ1cy9RdERCdXM+CiAjaW5jbHVkZSA8UVJlZ0V4cD4K
IAogI2luY2x1ZGUgPFgxMS9YYXV0aC5oPgpAQCAtMzksOTAgKzQwLDEzNCBAQAogI2luY2x1ZGUg
PGVycm5vLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotc3RhdGljIGVudW0geyBEdW5ubywgTm9E
TSwgTmV3S0RNLCBPbGRLRE0sIEdETSB9IERNVHlwZSA9IER1bm5vOworY2xhc3MgQ0tNYW5hZ2Vy
IDogcHVibGljIFFEQnVzSW50ZXJmYWNlCit7CitwdWJsaWM6CisgICAgQ0tNYW5hZ2VyKCkgOgor
ICAgICAgICBRREJ1c0ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJv
cmcuZnJlZWRlc2t0b3AuQ29uc29sZUtpdCIpLAorICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJp
bmcoIi9vcmcvZnJlZWRlc2t0b3AvQ29uc29sZUtpdC9NYW5hZ2VyIiksCisgICAgICAgICAgICAg
ICAgUUxhdGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9wLkNvbnNvbGVLaXQuTWFuYWdlciIpLAor
ICAgICAgICAgICAgICAgIFFEQnVzQ29ubmVjdGlvbjo6c3lzdGVtQnVzKCkpIHt9Cit9OworCitj
bGFzcyBDS1NlYXQgOiBwdWJsaWMgUURCdXNJbnRlcmZhY2UKK3sKK3B1YmxpYzoKKyAgICBDS1Nl
YXQoY29uc3QgUURCdXNPYmplY3RQYXRoICZwYXRoKSA6CisgICAgICAgIFFEQnVzSW50ZXJmYWNl
KAorICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVza3RvcC5Db25zb2xl
S2l0IiksCisgICAgICAgICAgICAgICAgcGF0aC5wYXRoKCksCisgICAgICAgICAgICAgICAgUUxh
dGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9wLkNvbnNvbGVLaXQuU2VhdCIpLAorICAgICAgICAg
ICAgICAgIFFEQnVzQ29ubmVjdGlvbjo6c3lzdGVtQnVzKCkpIHt9Cit9OworCitjbGFzcyBDS1Nl
c3Npb24gOiBwdWJsaWMgUURCdXNJbnRlcmZhY2UKK3sKK3B1YmxpYzoKKyAgICBDS1Nlc3Npb24o
Y29uc3QgUURCdXNPYmplY3RQYXRoICZwYXRoKSA6CisgICAgICAgIFFEQnVzSW50ZXJmYWNlKAor
ICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVza3RvcC5Db25zb2xlS2l0
IiksCisgICAgICAgICAgICBwYXRoLnBhdGgoKSwKKyAgICAgICAgICAgICAgICBRTGF0aW4xU3Ry
aW5nKCJvcmcuZnJlZWRlc2t0b3AuQ29uc29sZUtpdC5TZXNzaW9uIiksCisgICAgICAgICAgICAg
ICAgUURCdXNDb25uZWN0aW9uOjpzeXN0ZW1CdXMoKSkge30KK307CisKK2NsYXNzIEdETUZhY3Rv
cnkgOiBwdWJsaWMgUURCdXNJbnRlcmZhY2UKK3sKK3B1YmxpYzoKKyAgICBHRE1GYWN0b3J5KCkg
OgorICAgICAgICBRREJ1c0ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5n
KCJvcmcuZ25vbWUuRGlzcGxheU1hbmFnZXIiKSwKKyAgICAgICAgICAgICAgICBRTGF0aW4xU3Ry
aW5nKCIvb3JnL2dub21lL0Rpc3BsYXlNYW5hZ2VyL0xvY2FsRGlzcGxheUZhY3RvcnkiKSwKKyAg
ICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJvcmcuZ25vbWUuRGlzcGxheU1hbmFnZXIuTG9j
YWxEaXNwbGF5RmFjdG9yeSIpLAorICAgICAgICAgICAgICAgIFFEQnVzQ29ubmVjdGlvbjo6c3lz
dGVtQnVzKCkpIHt9Cit9OworCitzdGF0aWMgZW51bSB7IER1bm5vLCBOb0RNLCBOZXdLRE0sIE9s
ZEtETSwgTmV3R0RNLCBPbGRHRE0gfSBETVR5cGUgPSBEdW5ubzsKIHN0YXRpYyBjb25zdCBjaGFy
ICpjdGwsICpkcHk7CiAKIGNsYXNzIEtEaXNwbGF5TWFuYWdlcjo6UHJpdmF0ZQogewogcHVibGlj
OgotCVByaXZhdGUoKSA6IGZkKC0xKSB7fQotCX5Qcml2YXRlKCkgewotCQlpZiAoZmQgPj0gMCkK
LQkJCWNsb3NlKCBmZCApOwotCX0KKyAgICBQcml2YXRlKCkgOiBmZCgtMSkge30KKyAgICB+UHJp
dmF0ZSgpIHsKKyAgICAgICAgaWYgKGZkID49IDApCisgICAgICAgICAgICBjbG9zZShmZCk7Cisg
ICAgfQogCi0JaW50IGZkOworICAgIGludCBmZDsKIH07CiAKIEtEaXNwbGF5TWFuYWdlcjo6S0Rp
c3BsYXlNYW5hZ2VyKCkgOiBkKG5ldyBQcml2YXRlKQogewotCWNvbnN0IGNoYXIgKnB0cjsKLQlz
dHJ1Y3Qgc29ja2FkZHJfdW4gc2E7CisgICAgY29uc3QgY2hhciAqcHRyOworICAgIHN0cnVjdCBz
b2NrYWRkcl91biBzYTsKIAotCWlmIChETVR5cGUgPT0gRHVubm8pIHsKLQkJaWYgKCEoZHB5ID0g
OjpnZXRlbnYoICJESVNQTEFZIiApKSkKLQkJCURNVHlwZSA9IE5vRE07Ci0JCWVsc2UgaWYgKChj
dGwgPSA6OmdldGVudiggIkRNX0NPTlRST0wiICkpKQotCQkJRE1UeXBlID0gTmV3S0RNOwotCQll
bHNlIGlmICgoY3RsID0gOjpnZXRlbnYoICJYRE1fTUFOQUdFRCIgKSkgJiYgY3RsWzBdID09ICcv
JykKLQkJCURNVHlwZSA9IE9sZEtETTsKLQkJZWxzZSBpZiAoOjpnZXRlbnYoICJHRE1TRVNTSU9O
IiApKQotCQkJRE1UeXBlID0gR0RNOwotCQllbHNlCi0JCQlETVR5cGUgPSBOb0RNOwotCX0KLQlz
d2l0Y2ggKERNVHlwZSkgewotCWRlZmF1bHQ6Ci0JCXJldHVybjsKLQljYXNlIE5ld0tETToKLQlj
YXNlIEdETToKLQkJaWYgKChkLT5mZCA9IDo6c29ja2V0KCBQRl9VTklYLCBTT0NLX1NUUkVBTSwg
MCApKSA8IDApCi0JCQlyZXR1cm47Ci0JCXNhLnN1bl9mYW1pbHkgPSBBRl9VTklYOwotCQlpZiAo
RE1UeXBlID09IEdETSkgewotCQkJc3RyY3B5KCBzYS5zdW5fcGF0aCwgIi92YXIvcnVuL2dkbV9z
b2NrZXQiICk7Ci0JCQlpZiAoOjpjb25uZWN0KCBkLT5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZz
YSwgc2l6ZW9mKHNhKSApKSB7Ci0JCQkJc3RyY3B5KCBzYS5zdW5fcGF0aCwgIi90bXAvLmdkbV9z
b2NrZXQiICk7Ci0JCQkJaWYgKDo6Y29ubmVjdCggZC0+ZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikm
c2EsIHNpemVvZihzYSkgKSkgewotCQkJCQk6OmNsb3NlKCBkLT5mZCApOwotCQkJCQlkLT5mZCA9
IC0xOwotCQkJCQlicmVhazsKLQkJCQl9Ci0JCQl9Ci0JCQlHRE1BdXRoZW50aWNhdGUoKTsKLQkJ
fSBlbHNlIHsKLQkJCWlmICgocHRyID0gc3RyY2hyKCBkcHksICc6JyApKSkKLQkJCQlwdHIgPSBz
dHJjaHIoIHB0ciwgJy4nICk7Ci0JCQlzbnByaW50Ziggc2Euc3VuX3BhdGgsIHNpemVvZihzYS5z
dW5fcGF0aCksCi0JCQkgICAgICAgICAgIiVzL2RtY3RsLSUuKnMvc29ja2V0IiwKLQkJCSAgICAg
ICAgICBjdGwsIHB0ciA/IGludChwdHIgLSBkcHkpIDogNTEyLCBkcHkgKTsKLQkJCWlmICg6OmNv
bm5lY3QoIGQtPmZkLCAoc3RydWN0IHNvY2thZGRyICopJnNhLCBzaXplb2Yoc2EpICkpIHsKLQkJ
CQk6OmNsb3NlKCBkLT5mZCApOwotCQkJCWQtPmZkID0gLTE7Ci0JCQl9Ci0JCX0KLQkJYnJlYWs7
Ci0JY2FzZSBPbGRLRE06Ci0JCXsKLQkJCVFTdHJpbmcgdGYoIGN0bCApOwotCQkJdGYudHJ1bmNh
dGUoIHRmLmluZGV4T2YoICcsJyApICk7Ci0JCQlkLT5mZCA9IDo6b3BlbiggdGYudG9MYXRpbjEo
KSwgT19XUk9OTFkgKTsKLQkJfQotCQlicmVhazsKLQl9CisgICAgaWYgKERNVHlwZSA9PSBEdW5u
bykgeworICAgICAgICBpZiAoIShkcHkgPSA6OmdldGVudigiRElTUExBWSIpKSkKKyAgICAgICAg
ICAgIERNVHlwZSA9IE5vRE07CisgICAgICAgIGVsc2UgaWYgKChjdGwgPSA6OmdldGVudigiRE1f
Q09OVFJPTCIpKSkKKyAgICAgICAgICAgIERNVHlwZSA9IE5ld0tETTsKKyAgICAgICAgZWxzZSBp
ZiAoKGN0bCA9IDo6Z2V0ZW52KCJYRE1fTUFOQUdFRCIpKSAmJiBjdGxbMF0gPT0gJy8nKQorICAg
ICAgICAgICAgRE1UeXBlID0gT2xkS0RNOworICAgICAgICBlbHNlIGlmICg6OmdldGVudigiR0RN
U0VTU0lPTiIpKQorICAgICAgICAgICAgRE1UeXBlID0gR0RNRmFjdG9yeSgpLmlzVmFsaWQoKSA/
IE5ld0dETSA6IE9sZEdETTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgRE1UeXBlID0gTm9E
TTsKKyAgICB9CisgICAgc3dpdGNoIChETVR5cGUpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBOZXdLRE06CisgICAgY2FzZSBPbGRHRE06CisgICAgICAgIGlmICgo
ZC0+ZmQgPSA6OnNvY2tldChQRl9VTklYLCBTT0NLX1NUUkVBTSwgMCkpIDwgMCkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgc2Euc3VuX2ZhbWlseSA9IEFGX1VOSVg7CisgICAgICAgIGlm
IChETVR5cGUgPT0gT2xkR0RNKSB7CisgICAgICAgICAgICBzdHJjcHkoc2Euc3VuX3BhdGgsICIv
dmFyL3J1bi9nZG1fc29ja2V0Iik7CisgICAgICAgICAgICBpZiAoOjpjb25uZWN0KGQtPmZkLCAo
c3RydWN0IHNvY2thZGRyICopJnNhLCBzaXplb2Yoc2EpKSkgeworICAgICAgICAgICAgICAgIHN0
cmNweShzYS5zdW5fcGF0aCwgIi90bXAvLmdkbV9zb2NrZXQiKTsKKyAgICAgICAgICAgICAgICBp
ZiAoOjpjb25uZWN0KGQtPmZkLCAoc3RydWN0IHNvY2thZGRyICopJnNhLCBzaXplb2Yoc2EpKSkg
eworICAgICAgICAgICAgICAgICAgICA6OmNsb3NlKGQtPmZkKTsKKyAgICAgICAgICAgICAgICAg
ICAgZC0+ZmQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgR0RNQXV0aGVudGljYXRlKCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoKHB0ciA9IHN0cmNocihkcHksICc6JykpKQor
ICAgICAgICAgICAgICAgIHB0ciA9IHN0cmNocihwdHIsICcuJyk7CisgICAgICAgICAgICBzbnBy
aW50ZihzYS5zdW5fcGF0aCwgc2l6ZW9mKHNhLnN1bl9wYXRoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICIlcy9kbWN0bC0lLipzL3NvY2tldCIsCisgICAgICAgICAgICAgICAgICAgICBjdGwsIHB0
ciA/IGludChwdHIgLSBkcHkpIDogNTEyLCBkcHkpOworICAgICAgICAgICAgaWYgKDo6Y29ubmVj
dChkLT5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzYSwgc2l6ZW9mKHNhKSkpIHsKKyAgICAgICAg
ICAgICAgICA6OmNsb3NlKGQtPmZkKTsKKyAgICAgICAgICAgICAgICBkLT5mZCA9IC0xOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgT2xkS0RNOgor
ICAgICAgICB7CisgICAgICAgICAgICBRU3RyaW5nIHRmKGN0bCk7CisgICAgICAgICAgICB0Zi50
cnVuY2F0ZSh0Zi5pbmRleE9mKCcsJykpOworICAgICAgICAgICAgZC0+ZmQgPSA6Om9wZW4odGYu
dG9MYXRpbjEoKSwgT19XUk9OTFkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0K
IH0KIAogS0Rpc3BsYXlNYW5hZ2VyOjp+S0Rpc3BsYXlNYW5hZ2VyKCkKIHsKLQlkZWxldGUgZDsK
KyAgICBkZWxldGUgZDsKIH0KIAogYm9vbAotS0Rpc3BsYXlNYW5hZ2VyOjpleGVjKCBjb25zdCBj
aGFyICpjbWQgKQorS0Rpc3BsYXlNYW5hZ2VyOjpleGVjKGNvbnN0IGNoYXIgKmNtZCkKIHsKLQlR
Qnl0ZUFycmF5IGJ1ZjsKKyAgICBRQnl0ZUFycmF5IGJ1ZjsKIAotCXJldHVybiBleGVjKCBjbWQs
IGJ1ZiApOworICAgIHJldHVybiBleGVjKGNtZCwgYnVmKTsKIH0KIAogLyoqCkBAIC0xMzgsMzIz
ICsxODMsNDQ1IEBACiAgKiAgIGZyb20gS0RNLgogICovCiBib29sCi1LRGlzcGxheU1hbmFnZXI6
OmV4ZWMoIGNvbnN0IGNoYXIgKmNtZCwgUUJ5dGVBcnJheSAmYnVmICkKK0tEaXNwbGF5TWFuYWdl
cjo6ZXhlYyhjb25zdCBjaGFyICpjbWQsIFFCeXRlQXJyYXkgJmJ1ZikKIHsKLQlib29sIHJldCA9
IGZhbHNlOwotCWludCB0bDsKLQlpbnQgbGVuID0gMDsKLQotCWlmIChkLT5mZCA8IDApCi0JCWdv
dG8gYnVzdGVkOwotCi0JdGwgPSBzdHJsZW4oIGNtZCApOwotCWlmICg6OndyaXRlKCBkLT5mZCwg
Y21kLCB0bCApICE9IHRsKSB7Ci0JICAgIGJ1c3Q6Ci0JCTo6Y2xvc2UoIGQtPmZkICk7Ci0JCWQt
PmZkID0gLTE7Ci0JICAgIGJ1c3RlZDoKLQkJYnVmLnJlc2l6ZSggMCApOwotCQlyZXR1cm4gZmFs
c2U7Ci0JfQotCWlmIChETVR5cGUgPT0gT2xkS0RNKSB7Ci0JCWJ1Zi5yZXNpemUoIDAgKTsKLQkJ
cmV0dXJuIHRydWU7Ci0JfQotCWZvciAoOzspIHsKLQkJaWYgKGJ1Zi5zaXplKCkgPCAxMjgpCi0J
CQlidWYucmVzaXplKCAxMjggKTsKLQkJZWxzZSBpZiAoYnVmLnNpemUoKSA8IGxlbiAqIDIpCi0J
CQlidWYucmVzaXplKCBsZW4gKiAyICk7Ci0JCWlmICgodGwgPSA6OnJlYWQoIGQtPmZkLCBidWYu
ZGF0YSgpICsgbGVuLCBidWYuc2l6ZSgpIC0gbGVuKSkgPD0gMCkgewotCQkJaWYgKHRsIDwgMCAm
JiBlcnJubyA9PSBFSU5UUikKLQkJCQljb250aW51ZTsKLQkJCWdvdG8gYnVzdDsKLQkJfQotCQls
ZW4gKz0gdGw7Ci0JCWlmIChidWZbbGVuIC0gMV0gPT0gJ1xuJykgewotCQkJYnVmW2xlbiAtIDFd
ID0gMDsKLQkJCWlmIChsZW4gPiAyICYmIChidWZbMF0gPT0gJ28nIHx8IGJ1ZlswXSA9PSAnTycp
ICYmCi0JCQkgICAgKGJ1ZlsxXSA9PSAnaycgfHwgYnVmWzFdID09ICdLJykgJiYgYnVmWzJdIDw9
ICcgJykKLQkJCQlyZXQgPSB0cnVlOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0JcmV0dXJuIHJldDsK
KyAgICBib29sIHJldCA9IGZhbHNlOworICAgIGludCB0bDsKKyAgICBpbnQgbGVuID0gMDsKKwor
ICAgIGlmIChkLT5mZCA8IDApCisgICAgICAgIGdvdG8gYnVzdGVkOworCisgICAgdGwgPSBzdHJs
ZW4oY21kKTsKKyAgICBpZiAoOjp3cml0ZShkLT5mZCwgY21kLCB0bCkgIT0gdGwpIHsKKyAgICAg
IGJ1c3Q6CisgICAgICAgIDo6Y2xvc2UoZC0+ZmQpOworICAgICAgICBkLT5mZCA9IC0xOworICAg
ICAgYnVzdGVkOgorICAgICAgICBidWYucmVzaXplKDApOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIGlmIChETVR5cGUgPT0gT2xkS0RNKSB7CisgICAgICAgIGJ1Zi5yZXNpemUo
MCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBmb3IgKDs7KSB7CisgICAgICAg
IGlmIChidWYuc2l6ZSgpIDwgMTI4KQorICAgICAgICAgICAgYnVmLnJlc2l6ZSgxMjgpOworICAg
ICAgICBlbHNlIGlmIChidWYuc2l6ZSgpIDwgbGVuICogMikKKyAgICAgICAgICAgIGJ1Zi5yZXNp
emUobGVuICogMik7CisgICAgICAgIGlmICgodGwgPSA6OnJlYWQoZC0+ZmQsIGJ1Zi5kYXRhKCkg
KyBsZW4sIGJ1Zi5zaXplKCkgLSBsZW4pKSA8PSAwKSB7CisgICAgICAgICAgICBpZiAodGwgPCAw
ICYmIGVycm5vID09IEVJTlRSKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgZ290byBidXN0OworICAgICAgICB9CisgICAgICAgIGxlbiArPSB0bDsKKyAgICAgICAgaWYg
KGJ1ZltsZW4gLSAxXSA9PSAnXG4nKSB7CisgICAgICAgICAgICBidWZbbGVuIC0gMV0gPSAwOwor
ICAgICAgICAgICAgaWYgKGxlbiA+IDIgJiYgKGJ1ZlswXSA9PSAnbycgfHwgYnVmWzBdID09ICdP
JykgJiYKKyAgICAgICAgICAgICAgICAoYnVmWzFdID09ICdrJyB8fCBidWZbMV0gPT0gJ0snKSAm
JiBidWZbMl0gPD0gJyAnKQorICAgICAgICAgICAgICAgIHJldCA9IHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMg
Ym9vbCBnZXRDdXJyZW50U2VhdChRREJ1c09iamVjdFBhdGggKmN1cnJlbnRTZXNzaW9uLCBRREJ1
c09iamVjdFBhdGggKmN1cnJlbnRTZWF0KQoreworICAgIENLTWFuYWdlciBtYW47CisgICAgUURC
dXNSZXBseTxRREJ1c09iamVjdFBhdGg+IHIgPSBtYW4uY2FsbChRTGF0aW4xU3RyaW5nKCJHZXRD
dXJyZW50U2Vzc2lvbiIpKTsKKyAgICBpZiAoci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgQ0tTZXNz
aW9uIHNlc3Moci52YWx1ZSgpKTsKKyAgICAgICAgaWYgKHNlc3MuaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICBRREJ1c1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4gcjIgPSBzZXNzLmNhbGwoUUxhdGlu
MVN0cmluZygiR2V0U2VhdElkIikpOworICAgICAgICAgICAgaWYgKHIyLmlzVmFsaWQoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAg
KmN1cnJlbnRTZXNzaW9uID0gci52YWx1ZSgpOworICAgICAgICAgICAgICAgICpjdXJyZW50U2Vh
dCA9IHIyLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgUUxp
c3Q8UURCdXNPYmplY3RQYXRoPiBnZXRTZXNzaW9uc0ZvclNlYXQoY29uc3QgUURCdXNPYmplY3RQ
YXRoICZwYXRoKQoreworICAgIENLU2VhdCBzZWF0KHBhdGgpOworICAgIGlmIChzZWF0LmlzVmFs
aWQoKSkgeworICAgICAgICBRREJ1c1JlcGx5PFFMaXN0PFFEQnVzT2JqZWN0UGF0aD4gPiByID0g
c2VhdC5jYWxsKFFMYXRpbjFTdHJpbmcoIkdldFNlc3Npb25zIikpOworICAgICAgICBpZiAoci5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBjb250YWluIG9ubHkgbG9jYWwg
c2Vzc2lvbnM6CisgICAgICAgICAgICAvLyAtIHRoaXMgaXMgb25seSBldmVyIGNhbGxlZCB3aGVu
IGlzU3dpdGNoYWJsZSgpIGlzIHRydWUgPT4gbG9jYWwgc2VhdAorICAgICAgICAgICAgLy8gLSBy
ZW1vdGUgbG9naW5zIGludG8gdGhlIG1hY2hpbmUgYXJlIGFzc2lnbmVkIHRvIG90aGVyIHNlYXRz
CisgICAgICAgICAgICByZXR1cm4gci52YWx1ZSgpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBRTGlzdDxRREJ1c09iamVjdFBhdGg+KCk7Cit9CisKK3N0YXRpYyB2b2lkIGdldFNlc3Np
b25Mb2NhdGlvbihDS1Nlc3Npb24gJmxzZXNzLCBTZXNzRW50ICZzZSkKK3sKKyAgICBRU3RyaW5n
IHR0eTsKKyAgICBRREJ1c1JlcGx5PFFTdHJpbmc+IHIgPSBsc2Vzcy5jYWxsKFFMYXRpbjFTdHJp
bmcoIkdldFgxMURpc3BsYXkiKSk7CisgICAgaWYgKHIuaXNWYWxpZCgpICYmICFyLnZhbHVlKCku
aXNFbXB0eSgpKSB7CisgICAgICAgIFFEQnVzUmVwbHk8UVN0cmluZz4gcjIgPSBsc2Vzcy5jYWxs
KFFMYXRpbjFTdHJpbmcoIkdldFgxMURpc3BsYXlEZXZpY2UiKSk7CisgICAgICAgIHR0eSA9IHIy
LnZhbHVlKCk7CisgICAgICAgIHNlLmRpc3BsYXkgPSByLnZhbHVlKCk7CisgICAgICAgIHNlLnR0
eSA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIFFEQnVzUmVwbHk8UVN0cmluZz4gcjIg
PSBsc2Vzcy5jYWxsKFFMYXRpbjFTdHJpbmcoIkdldERpc3BsYXlEZXZpY2UiKSk7CisgICAgICAg
IHR0eSA9IHIyLnZhbHVlKCk7CisgICAgICAgIHNlLmRpc3BsYXkgPSB0dHk7CisgICAgICAgIHNl
LnR0eSA9IHRydWU7CisgICAgfQorICAgIHNlLnZ0ID0gdHR5Lm1pZChzdHJsZW4oIi9kZXYvdHR5
IikpLnRvSW50KCk7CiB9CiAKICNpZm5kZWYgS0RNX05PX1NIVVRET1dOCiBib29sCiBLRGlzcGxh
eU1hbmFnZXI6OmNhblNodXRkb3duKCkKIHsKLQlpZiAoRE1UeXBlID09IE9sZEtETSkKLQkJcmV0
dXJuIHN0cnN0ciggY3RsLCAiLG1heXNkIiApICE9IDA7CisgICAgaWYgKERNVHlwZSA9PSBOZXdH
RE0pIHsKKyAgICAgICAgUURCdXNSZXBseTxib29sPiBjYW5TdG9wID0gQ0tNYW5hZ2VyKCkuY2Fs
bChRTGF0aW4xU3RyaW5nKCJDYW5TdG9wIikpOworICAgICAgICByZXR1cm4gKGNhblN0b3AuaXNW
YWxpZCgpICYmIGNhblN0b3AudmFsdWUoKSk7CisgICAgfQogCi0JUUJ5dGVBcnJheSByZTsKKyAg
ICBpZiAoRE1UeXBlID09IE9sZEtETSkKKyAgICAgICAgcmV0dXJuIHN0cnN0cihjdGwsICIsbWF5
c2QiKSAhPSAwOwogCi0JaWYgKERNVHlwZSA9PSBHRE0pCi0JCXJldHVybiBleGVjKCAiUVVFUllf
TE9HT1VUX0FDVElPTlxuIiwgcmUgKSAmJiByZS5pbmRleE9mKCAiSEFMVCIgKSA+PSAwOworICAg
IFFCeXRlQXJyYXkgcmU7CiAKLQlyZXR1cm4gZXhlYyggImNhcHNcbiIsIHJlICkgJiYgcmUuaW5k
ZXhPZiggIlx0c2h1dGRvd24iICkgPj0gMDsKKyAgICBpZiAoRE1UeXBlID09IE9sZEdETSkKKyAg
ICAgICAgcmV0dXJuIGV4ZWMoIlFVRVJZX0xPR09VVF9BQ1RJT05cbiIsIHJlKSAmJiByZS5pbmRl
eE9mKCJIQUxUIikgPj0gMDsKKworICAgIHJldHVybiBleGVjKCJjYXBzXG4iLCByZSkgJiYgcmUu
aW5kZXhPZigiXHRzaHV0ZG93biIpID49IDA7CiB9CiAKIHZvaWQKLUtEaXNwbGF5TWFuYWdlcjo6
c2h1dGRvd24oIEtXb3JrU3BhY2U6OlNodXRkb3duVHlwZSBzaHV0ZG93blR5cGUsCi0gICAgICAg
ICAgICAgIEtXb3JrU3BhY2U6OlNodXRkb3duTW9kZSBzaHV0ZG93bk1vZGUsIC8qIE5PVCBEZWZh
dWx0ICovCi0gICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmJvb3RPcHRpb24gKQotewotCWlm
IChzaHV0ZG93blR5cGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRvd25UeXBlTm9uZSB8fCBzaHV0ZG93
blR5cGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRvd25UeXBlTG9nb3V0KQotCQlyZXR1cm47Ci0KLQli
b29sIGNhcF9hc2s7Ci0JaWYgKERNVHlwZSA9PSBOZXdLRE0pIHsKLQkJUUJ5dGVBcnJheSByZTsK
LQkJY2FwX2FzayA9IGV4ZWMoICJjYXBzXG4iLCByZSApICYmIHJlLmluZGV4T2YoICJcdHNodXRk
b3duIGFzayIgKSA+PSAwOwotCX0gZWxzZSB7Ci0JCWlmICghYm9vdE9wdGlvbi5pc0VtcHR5KCkp
Ci0JCQlyZXR1cm47Ci0JCWNhcF9hc2sgPSBmYWxzZTsKLQl9Ci0JaWYgKCFjYXBfYXNrICYmIHNo
dXRkb3duTW9kZSA9PSBLV29ya1NwYWNlOjpTaHV0ZG93bk1vZGVJbnRlcmFjdGl2ZSkKLQkJc2h1
dGRvd25Nb2RlID0gS1dvcmtTcGFjZTo6U2h1dGRvd25Nb2RlRm9yY2VOb3c7Ci0KLQlRQnl0ZUFy
cmF5IGNtZDsKLQlpZiAoRE1UeXBlID09IEdETSkgewotCQljbWQuYXBwZW5kKCBzaHV0ZG93bk1v
ZGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRvd25Nb2RlRm9yY2VOb3cgPwotCQkgICAgICAgICAgICAi
U0VUX0xPR09VVF9BQ1RJT04gIiA6ICJTRVRfU0FGRV9MT0dPVVRfQUNUSU9OICIgKTsKLQkJY21k
LmFwcGVuZCggc2h1dGRvd25UeXBlID09IEtXb3JrU3BhY2U6OlNodXRkb3duVHlwZVJlYm9vdCA/
Ci0JCSAgICAgICAgICAgICJSRUJPT1RcbiIgOiAiSEFMVFxuIiApOwotCX0gZWxzZSB7Ci0JCWNt
ZC5hcHBlbmQoICJzaHV0ZG93blx0IiApOwotCQljbWQuYXBwZW5kKCBzaHV0ZG93blR5cGUgPT0g
S1dvcmtTcGFjZTo6U2h1dGRvd25UeXBlUmVib290ID8KLQkJICAgICAgICAgICAgInJlYm9vdFx0
IiA6ICJoYWx0XHQiICk7Ci0JCWlmICghYm9vdE9wdGlvbi5pc0VtcHR5KCkpCi0JCQljbWQuYXBw
ZW5kKCAiPSIgKS5hcHBlbmQoIGJvb3RPcHRpb24udG9Mb2NhbDhCaXQoKSApLmFwcGVuZCggIlx0
IiApOwotCQljbWQuYXBwZW5kKCBzaHV0ZG93bk1vZGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRvd25N
b2RlSW50ZXJhY3RpdmUgPwotCQkgICAgICAgICAgICAiYXNrXG4iIDoKLQkJICAgICAgICAgICAg
c2h1dGRvd25Nb2RlID09IEtXb3JrU3BhY2U6OlNodXRkb3duTW9kZUZvcmNlTm93ID8KLQkJICAg
ICAgICAgICAgImZvcmNlbm93XG4iIDoKLQkJICAgICAgICAgICAgc2h1dGRvd25Nb2RlID09IEtX
b3JrU3BhY2U6OlNodXRkb3duTW9kZVRyeU5vdyA/Ci0JCSAgICAgICAgICAgICJ0cnlub3dcbiIg
OiAic2NoZWR1bGVcbiIgKTsKLQl9Ci0JZXhlYyggY21kLmRhdGEoKSApOworS0Rpc3BsYXlNYW5h
Z2VyOjpzaHV0ZG93bihLV29ya1NwYWNlOjpTaHV0ZG93blR5cGUgc2h1dGRvd25UeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBLV29ya1NwYWNlOjpTaHV0ZG93bk1vZGUgc2h1dGRvd25N
b2RlLCAvKiBOT1QgRGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBR
U3RyaW5nICZib290T3B0aW9uKQoreworICAgIGlmIChzaHV0ZG93blR5cGUgPT0gS1dvcmtTcGFj
ZTo6U2h1dGRvd25UeXBlTm9uZSB8fCBzaHV0ZG93blR5cGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRv
d25UeXBlTG9nb3V0KQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGNhcF9hc2s7CisgICAg
aWYgKERNVHlwZSA9PSBOZXdLRE0pIHsKKyAgICAgICAgUUJ5dGVBcnJheSByZTsKKyAgICAgICAg
Y2FwX2FzayA9IGV4ZWMoImNhcHNcbiIsIHJlKSAmJiByZS5pbmRleE9mKCJcdHNodXRkb3duIGFz
ayIpID49IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFib290T3B0aW9uLmlzRW1wdHko
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoRE1UeXBlID09IE5ld0dETSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IGVudGlyZWx5IGlnbm9yaW5nIHNodXRkb3duTW9kZQor
ICAgICAgICAgICAgQ0tNYW5hZ2VyKCkuY2FsbChRTGF0aW4xU3RyaW5nKAorICAgICAgICAgICAg
ICAgICAgICBzaHV0ZG93blR5cGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRvd25UeXBlUmVib290ID8g
IlJlc3RhcnQiIDogIlN0b3AiKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjYXBfYXNrID0gZmFsc2U7CisgICAgfQorICAgIGlmICghY2FwX2FzayAmJiBzaHV0
ZG93bk1vZGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRvd25Nb2RlSW50ZXJhY3RpdmUpCisgICAgICAg
IHNodXRkb3duTW9kZSA9IEtXb3JrU3BhY2U6OlNodXRkb3duTW9kZUZvcmNlTm93OworCisgICAg
UUJ5dGVBcnJheSBjbWQ7CisgICAgaWYgKERNVHlwZSA9PSBPbGRHRE0pIHsKKyAgICAgICAgY21k
LmFwcGVuZChzaHV0ZG93bk1vZGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRvd25Nb2RlRm9yY2VOb3cg
PworICAgICAgICAgICAgICAgICAgICJTRVRfTE9HT1VUX0FDVElPTiAiIDogIlNFVF9TQUZFX0xP
R09VVF9BQ1RJT04gIik7CisgICAgICAgIGNtZC5hcHBlbmQoc2h1dGRvd25UeXBlID09IEtXb3Jr
U3BhY2U6OlNodXRkb3duVHlwZVJlYm9vdCA/CisgICAgICAgICAgICAgICAgICAgIlJFQk9PVFxu
IiA6ICJIQUxUXG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBjbWQuYXBwZW5kKCJzaHV0ZG93
blx0Iik7CisgICAgICAgIGNtZC5hcHBlbmQoc2h1dGRvd25UeXBlID09IEtXb3JrU3BhY2U6OlNo
dXRkb3duVHlwZVJlYm9vdCA/CisgICAgICAgICAgICAgICAgICAgInJlYm9vdFx0IiA6ICJoYWx0
XHQiKTsKKyAgICAgICAgaWYgKCFib290T3B0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNt
ZC5hcHBlbmQoIj0iKS5hcHBlbmQoYm9vdE9wdGlvbi50b0xvY2FsOEJpdCgpKS5hcHBlbmQoIlx0
Iik7CisgICAgICAgIGNtZC5hcHBlbmQoc2h1dGRvd25Nb2RlID09IEtXb3JrU3BhY2U6OlNodXRk
b3duTW9kZUludGVyYWN0aXZlID8KKyAgICAgICAgICAgICAgICAgICAiYXNrXG4iIDoKKyAgICAg
ICAgICAgICAgICAgICBzaHV0ZG93bk1vZGUgPT0gS1dvcmtTcGFjZTo6U2h1dGRvd25Nb2RlRm9y
Y2VOb3cgPworICAgICAgICAgICAgICAgICAgICJmb3JjZW5vd1xuIiA6CisgICAgICAgICAgICAg
ICAgICAgc2h1dGRvd25Nb2RlID09IEtXb3JrU3BhY2U6OlNodXRkb3duTW9kZVRyeU5vdyA/Cisg
ICAgICAgICAgICAgICAgICAgInRyeW5vd1xuIiA6ICJzY2hlZHVsZVxuIik7CisgICAgfQorICAg
IGV4ZWMoY21kLmRhdGEoKSk7CiB9CiAKIGJvb2wKLUtEaXNwbGF5TWFuYWdlcjo6Ym9vdE9wdGlv
bnMoIFFTdHJpbmdMaXN0ICZvcHRzLCBpbnQgJmRlZm9wdCwgaW50ICZjdXJyZW50ICkKK0tEaXNw
bGF5TWFuYWdlcjo6Ym9vdE9wdGlvbnMoUVN0cmluZ0xpc3QgJm9wdHMsIGludCAmZGVmb3B0LCBp
bnQgJmN1cnJlbnQpCiB7Ci0JaWYgKERNVHlwZSAhPSBOZXdLRE0pCi0JCXJldHVybiBmYWxzZTsK
KyAgICBpZiAoRE1UeXBlICE9IE5ld0tETSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0JUUJ5
dGVBcnJheSByZTsKLQlpZiAoIWV4ZWMoICJsaXN0Ym9vdG9wdGlvbnNcbiIsIHJlICkpCi0JCXJl
dHVybiBmYWxzZTsKLQotCW9wdHMgPSBRU3RyaW5nOjpmcm9tTG9jYWw4Qml0KCByZS5kYXRhKCkg
KS5zcGxpdCggJ1x0JywgUVN0cmluZzo6U2tpcEVtcHR5UGFydHMgKTsKLQlpZiAob3B0cy5zaXpl
KCkgPCA0KQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlib29sIG9rOwotCWRlZm9wdCA9IG9wdHNbMl0u
dG9JbnQoICZvayApOwotCWlmICghb2spCi0JCXJldHVybiBmYWxzZTsKLQljdXJyZW50ID0gb3B0
c1szXS50b0ludCggJm9rICk7Ci0JaWYgKCFvaykKLQkJcmV0dXJuIGZhbHNlOwotCi0Jb3B0cyA9
IG9wdHNbMV0uc3BsaXQoICcgJywgUVN0cmluZzo6U2tpcEVtcHR5UGFydHMgKTsKLQlmb3IgKFFT
dHJpbmdMaXN0OjpJdGVyYXRvciBpdCA9IG9wdHMuYmVnaW4oKTsgaXQgIT0gb3B0cy5lbmQoKTsg
KytpdCkKLQkJKCppdCkucmVwbGFjZSggIlxccyIsICIgIiApOworICAgIFFCeXRlQXJyYXkgcmU7
CisgICAgaWYgKCFleGVjKCJsaXN0Ym9vdG9wdGlvbnNcbiIsIHJlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgb3B0cyA9IFFTdHJpbmc6OmZyb21Mb2NhbDhCaXQocmUuZGF0YSgpKS5z
cGxpdCgnXHQnLCBRU3RyaW5nOjpTa2lwRW1wdHlQYXJ0cyk7CisgICAgaWYgKG9wdHMuc2l6ZSgp
IDwgNCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBvazsKKyAgICBkZWZvcHQg
PSBvcHRzWzJdLnRvSW50KCZvayk7CisgICAgaWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGN1cnJlbnQgPSBvcHRzWzNdLnRvSW50KCZvayk7CisgICAgaWYgKCFvaykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgb3B0cyA9IG9wdHNbMV0uc3BsaXQoJyAnLCBRU3RyaW5n
OjpTa2lwRW1wdHlQYXJ0cyk7CisgICAgZm9yIChRU3RyaW5nTGlzdDo6SXRlcmF0b3IgaXQgPSBv
cHRzLmJlZ2luKCk7IGl0ICE9IG9wdHMuZW5kKCk7ICsraXQpCisgICAgICAgICgqaXQpLnJlcGxh
Y2UoIlxccyIsICIgIik7CiAKLQlyZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KICNl
bmRpZiAvLyBLRE1fTk9fU0hVVERPV04KIAorLy8gVGhpcyBvbmx5IHRlbGxzIEtETSB0byBub3Qg
YXV0by1yZS1sb2dpbiB1cG9uIHNlc3Npb24gY3Jhc2gKIHZvaWQKLUtEaXNwbGF5TWFuYWdlcjo6
c2V0TG9jayggYm9vbCBvbiApCitLRGlzcGxheU1hbmFnZXI6OnNldExvY2soYm9vbCBvbikKIHsK
LQlpZiAoRE1UeXBlICE9IEdETSkKLQkJZXhlYyggb24gPyAibG9ja1xuIiA6ICJ1bmxvY2tcbiIg
KTsKKyAgICBpZiAoRE1UeXBlID09IE5ld0tETSB8fCBETVR5cGUgPT0gT2xkS0RNKQorICAgICAg
ICBleGVjKG9uID8gImxvY2tcbiIgOiAidW5sb2NrXG4iKTsKIH0KIAogYm9vbAogS0Rpc3BsYXlN
YW5hZ2VyOjppc1N3aXRjaGFibGUoKQogewotCWlmIChETVR5cGUgPT0gT2xkS0RNKQotCQlyZXR1
cm4gZHB5WzBdID09ICc6JzsKKyAgICBpZiAoRE1UeXBlID09IE5ld0dETSkgeworICAgICAgICBR
REJ1c09iamVjdFBhdGggY3VycmVudFNlYXQ7CisgICAgICAgIGlmIChnZXRDdXJyZW50U2VhdCgw
LCAmY3VycmVudFNlYXQpKSB7CisgICAgICAgICAgICBDS1NlYXQgc2VhdChjdXJyZW50U2VhdCk7
CisgICAgICAgICAgICBpZiAoc2VhdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBRREJ1
c1JlcGx5PGJvb2w+IHIgPSBzZWF0LmNhbGwoUUxhdGluMVN0cmluZygiQ2FuQWN0aXZhdGVTZXNz
aW9ucyIpKTsKKyAgICAgICAgICAgICAgICBpZiAoci5pc1ZhbGlkKCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByLnZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChETVR5cGUgPT0gT2xkS0RNKQorICAg
ICAgICByZXR1cm4gZHB5WzBdID09ICc6JzsKIAotCWlmIChETVR5cGUgPT0gR0RNKQotCQlyZXR1
cm4gZXhlYyggIlFVRVJZX1ZUXG4iICk7CisgICAgaWYgKERNVHlwZSA9PSBPbGRHRE0pCisgICAg
ICAgIHJldHVybiBleGVjKCJRVUVSWV9WVFxuIik7CiAKLQlRQnl0ZUFycmF5IHJlOworICAgIFFC
eXRlQXJyYXkgcmU7CiAKLQlyZXR1cm4gZXhlYyggImNhcHNcbiIsIHJlICkgJiYgcmUuaW5kZXhP
ZiggIlx0bG9jYWwiICkgPj0gMDsKKyAgICByZXR1cm4gZXhlYygiY2Fwc1xuIiwgcmUpICYmIHJl
LmluZGV4T2YoIlx0bG9jYWwiKSA+PSAwOwogfQogCiBpbnQKIEtEaXNwbGF5TWFuYWdlcjo6bnVt
UmVzZXJ2ZSgpCiB7Ci0JaWYgKERNVHlwZSA9PSBHRE0pCi0JCXJldHVybiAxOyAvKiBCbGVoICov
CisgICAgaWYgKERNVHlwZSA9PSBOZXdHRE0gfHwgRE1UeXBlID09IE9sZEdETSkKKyAgICAgICAg
cmV0dXJuIDE7IC8qIEJsZWggKi8KIAotCWlmIChETVR5cGUgPT0gT2xkS0RNKQotCQlyZXR1cm4g
c3Ryc3RyKCBjdGwsICIscnN2ZCIgKSA/IDEgOiAtMTsKKyAgICBpZiAoRE1UeXBlID09IE9sZEtE
TSkKKyAgICAgICAgcmV0dXJuIHN0cnN0cihjdGwsICIscnN2ZCIpID8gMSA6IC0xOwogCi0JUUJ5
dGVBcnJheSByZTsKLQlpbnQgcDsKKyAgICBRQnl0ZUFycmF5IHJlOworICAgIGludCBwOwogCi0J
aWYgKCEoZXhlYyggImNhcHNcbiIsIHJlICkgJiYgKHAgPSByZS5pbmRleE9mKCAiXHRyZXNlcnZl
ICIgKSkgPj0gMCkpCi0JCXJldHVybiAtMTsKLQlyZXR1cm4gYXRvaSggcmUuZGF0YSgpICsgcCAr
IDkgKTsKKyAgICBpZiAoIShleGVjKCJjYXBzXG4iLCByZSkgJiYgKHAgPSByZS5pbmRleE9mKCJc
dHJlc2VydmUgIikpID49IDApKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIGF0b2ko
cmUuZGF0YSgpICsgcCArIDkpOwogfQogCiB2b2lkCiBLRGlzcGxheU1hbmFnZXI6OnN0YXJ0UmVz
ZXJ2ZSgpCiB7Ci0JaWYgKERNVHlwZSA9PSBHRE0pCi0JCWV4ZWMoIkZMRVhJX1hTRVJWRVJcbiIp
OwotCWVsc2UKLQkJZXhlYygicmVzZXJ2ZVxuIik7CisgICAgaWYgKERNVHlwZSA9PSBOZXdHRE0p
CisgICAgICAgIEdETUZhY3RvcnkoKS5jYWxsKFFMYXRpbjFTdHJpbmcoIkNyZWF0ZVRyYW5zaWVu
dERpc3BsYXkiKSk7CisgICAgZWxzZSBpZiAoRE1UeXBlID09IE9sZEdETSkKKyAgICAgICAgZXhl
YygiRkxFWElfWFNFUlZFUlxuIik7CisgICAgZWxzZQorICAgICAgICBleGVjKCJyZXNlcnZlXG4i
KTsKIH0KIAogYm9vbAotS0Rpc3BsYXlNYW5hZ2VyOjpsb2NhbFNlc3Npb25zKCBTZXNzTGlzdCAm
bGlzdCApCitLRGlzcGxheU1hbmFnZXI6OmxvY2FsU2Vzc2lvbnMoU2Vzc0xpc3QgJmxpc3QpCiB7
Ci0JaWYgKERNVHlwZSA9PSBPbGRLRE0pCi0JCXJldHVybiBmYWxzZTsKKyAgICBpZiAoRE1UeXBl
ID09IE9sZEtETSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKERNVHlwZSA9PSBO
ZXdHRE0pIHsKKyAgICAgICAgUURCdXNPYmplY3RQYXRoIGN1cnJlbnRTZXNzaW9uLCBjdXJyZW50
U2VhdDsKKyAgICAgICAgaWYgKGdldEN1cnJlbnRTZWF0KCZjdXJyZW50U2Vzc2lvbiwgJmN1cnJl
bnRTZWF0KSkgeworICAgICAgICAgICAgZm9yZWFjaCAoY29uc3QgUURCdXNPYmplY3RQYXRoICZz
cCwgZ2V0U2Vzc2lvbnNGb3JTZWF0KGN1cnJlbnRTZWF0KSkgeworICAgICAgICAgICAgICAgIENL
U2Vzc2lvbiBsc2VzcyhzcCk7CisgICAgICAgICAgICAgICAgaWYgKGxzZXNzLmlzVmFsaWQoKSkg
eworICAgICAgICAgICAgICAgICAgICBTZXNzRW50IHNlOworICAgICAgICAgICAgICAgICAgICBn
ZXRTZXNzaW9uTG9jYXRpb24obHNlc3MsIHNlKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gIldh
cm5pbmc6IHdlIGhhdmVuJ3QgeWV0IGRlZmluZWQgdGhlIGFsbG93ZWQgdmFsdWVzIGZvciB0aGlz
IHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICAvLyBJdCBpcyBwcm9iYWJseSBiZXN0IHRv
IGF2b2lkIHRoaXMgdW50aWwgd2UgZG8uIgorICAgICAgICAgICAgICAgICAgICBRREJ1c1JlcGx5
PFFTdHJpbmc+IHIgPSBsc2Vzcy5jYWxsKFFMYXRpbjFTdHJpbmcoIkdldFNlc3Npb25UeXBlIikp
OworICAgICAgICAgICAgICAgICAgICBpZiAoci52YWx1ZSgpICE9IFFMYXRpbjFTdHJpbmcoIkxv
Z2luV2luZG93IikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFFEQnVzUmVwbHk8dW5zaWdu
ZWQ+IHIyID0gbHNlc3MuY2FsbChRTGF0aW4xU3RyaW5nKCJHZXRVbml4VXNlciIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlLnVzZXIgPSBLVXNlcihLX1VJRChyMi52YWx1ZSgpKSkubG9n
aW5OYW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZS5zZXNzaW9uID0gIjx1bmtub3du
PiI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2Uuc2VsZiA9
IChzcCA9PSBjdXJyZW50U2Vzc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5k
KHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0JUUJ5
dGVBcnJheSByZTsKKyAgICBRQnl0ZUFycmF5IHJlOwogCi0JaWYgKERNVHlwZSA9PSBHRE0pIHsK
LQkJaWYgKCFleGVjKCAiQ09OU09MRV9TRVJWRVJTXG4iLCByZSApKQotCQkJcmV0dXJuIGZhbHNl
OwotCQljb25zdCBRU3RyaW5nTGlzdCBzZXNzID0gUVN0cmluZyhyZS5kYXRhKCkgKzMpLnNwbGl0
KCBRQ2hhcignOycpLCBRU3RyaW5nOjpTa2lwRW1wdHlQYXJ0cyk7Ci0JCWZvciAoUVN0cmluZ0xp
c3Q6OkNvbnN0SXRlcmF0b3IgaXQgPSBzZXNzLmNvbnN0QmVnaW4oKTsgaXQgIT0gc2Vzcy5jb25z
dEVuZCgpOyArK2l0KSB7Ci0JCQlRU3RyaW5nTGlzdCB0cyA9ICgqaXQpLnNwbGl0KCBRQ2hhcign
LCcpICk7Ci0JCQlTZXNzRW50IHNlOwotCQkJc2UuZGlzcGxheSA9IHRzWzBdOwotCQkJc2UudXNl
ciA9IHRzWzFdOwotCQkJc2UudnQgPSB0c1syXS50b0ludCgpOwotCQkJc2Uuc2Vzc2lvbiA9ICI8
dW5rbm93bj4iOwotCQkJc2Uuc2VsZiA9IHRzWzBdID09IDo6Z2V0ZW52KCAiRElTUExBWSIgKTsg
LyogQmxlaCAqLwotCQkJc2UudHR5ID0gZmFsc2U7Ci0JCQlsaXN0LmFwcGVuZCggc2UgKTsKLQkJ
fQotCX0gZWxzZSB7Ci0JCWlmICghZXhlYyggImxpc3RcdGFsbGxvY2FsXG4iLCByZSApKQotCQkJ
cmV0dXJuIGZhbHNlOwotCQljb25zdCBRU3RyaW5nTGlzdCBzZXNzID0gUVN0cmluZyhyZS5kYXRh
KCkgKyAzKS5zcGxpdChRQ2hhcignXHQnKSwgUVN0cmluZzo6U2tpcEVtcHR5UGFydHMgKTsKLQkJ
Zm9yIChRU3RyaW5nTGlzdDo6Q29uc3RJdGVyYXRvciBpdCA9IHNlc3MuY29uc3RCZWdpbigpOyBp
dCAhPSBzZXNzLmNvbnN0RW5kKCk7ICsraXQpIHsKLQkJCVFTdHJpbmdMaXN0IHRzID0gKCppdCku
c3BsaXQoIFFDaGFyKCcsJykgKTsKLQkJCVNlc3NFbnQgc2U7Ci0JCQlzZS5kaXNwbGF5ID0gdHNb
MF07Ci0JCQlpZiAodHNbMV1bMF0gPT0gJ0AnKQotCQkJCXNlLmZyb20gPSB0c1sxXS5taWQoIDEg
KSwgc2UudnQgPSAwOwotCQkJZWxzZQotCQkJCXNlLnZ0ID0gdHNbMV0ubWlkKCAyICkudG9JbnQo
KTsKLQkJCXNlLnVzZXIgPSB0c1syXTsKLQkJCXNlLnNlc3Npb24gPSB0c1szXTsKLQkJCXNlLnNl
bGYgPSAodHNbNF0uaW5kZXhPZiggJyonICkgPj0gMCk7Ci0JCQlzZS50dHkgPSAodHNbNF0uaW5k
ZXhPZiggJ3QnICkgPj0gMCk7Ci0JCQlsaXN0LmFwcGVuZCggc2UgKTsKLQkJfQotCX0KLQlyZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoRE1UeXBlID09IE9sZEdETSkgeworICAgICAgICBpZiAoIWV4ZWMo
IkNPTlNPTEVfU0VSVkVSU1xuIiwgcmUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBjb25zdCBRU3RyaW5nTGlzdCBzZXNzID0gUVN0cmluZyhyZS5kYXRhKCkgKzMpLnNwbGl0
KFFDaGFyKCc7JyksIFFTdHJpbmc6OlNraXBFbXB0eVBhcnRzKTsKKyAgICAgICAgZm9yIChRU3Ry
aW5nTGlzdDo6Q29uc3RJdGVyYXRvciBpdCA9IHNlc3MuY29uc3RCZWdpbigpOyBpdCAhPSBzZXNz
LmNvbnN0RW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIFFTdHJpbmdMaXN0IHRzID0gKCppdCku
c3BsaXQoUUNoYXIoJywnKSk7CisgICAgICAgICAgICBTZXNzRW50IHNlOworICAgICAgICAgICAg
c2UuZGlzcGxheSA9IHRzWzBdOworICAgICAgICAgICAgc2UudXNlciA9IHRzWzFdOworICAgICAg
ICAgICAgc2UudnQgPSB0c1syXS50b0ludCgpOworICAgICAgICAgICAgc2Uuc2Vzc2lvbiA9ICI8
dW5rbm93bj4iOworICAgICAgICAgICAgc2Uuc2VsZiA9IHRzWzBdID09IDo6Z2V0ZW52KCJESVNQ
TEFZIik7IC8qIEJsZWggKi8KKyAgICAgICAgICAgIHNlLnR0eSA9IGZhbHNlOworICAgICAgICAg
ICAgbGlzdC5hcHBlbmQoc2UpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KCFleGVjKCJsaXN0XHRhbGxsb2NhbFxuIiwgcmUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBjb25zdCBRU3RyaW5nTGlzdCBzZXNzID0gUVN0cmluZyhyZS5kYXRhKCkgKyAz
KS5zcGxpdChRQ2hhcignXHQnKSwgUVN0cmluZzo6U2tpcEVtcHR5UGFydHMpOworICAgICAgICBm
b3IgKFFTdHJpbmdMaXN0OjpDb25zdEl0ZXJhdG9yIGl0ID0gc2Vzcy5jb25zdEJlZ2luKCk7IGl0
ICE9IHNlc3MuY29uc3RFbmQoKTsgKytpdCkgeworICAgICAgICAgICAgUVN0cmluZ0xpc3QgdHMg
PSAoKml0KS5zcGxpdChRQ2hhcignLCcpKTsKKyAgICAgICAgICAgIFNlc3NFbnQgc2U7CisgICAg
ICAgICAgICBzZS5kaXNwbGF5ID0gdHNbMF07CisgICAgICAgICAgICBzZS52dCA9IHRzWzFdLm1p
ZCgyKS50b0ludCgpOworICAgICAgICAgICAgc2UudXNlciA9IHRzWzJdOworICAgICAgICAgICAg
c2Uuc2Vzc2lvbiA9IHRzWzNdOworICAgICAgICAgICAgc2Uuc2VsZiA9ICh0c1s0XS5pbmRleE9m
KCcqJykgPj0gMCk7CisgICAgICAgICAgICBzZS50dHkgPSAodHNbNF0uaW5kZXhPZigndCcpID49
IDApOworICAgICAgICAgICAgbGlzdC5hcHBlbmQoc2UpOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiB0cnVlOwogfQogCiB2b2lkCi1LRGlzcGxheU1hbmFnZXI6OnNlc3MyU3RyMiggY29u
c3QgU2Vzc0VudCAmc2UsIFFTdHJpbmcgJnVzZXIsIFFTdHJpbmcgJmxvYyApCitLRGlzcGxheU1h
bmFnZXI6OnNlc3MyU3RyMihjb25zdCBTZXNzRW50ICZzZSwgUVN0cmluZyAmdXNlciwgUVN0cmlu
ZyAmbG9jKQogewotCWlmIChzZS50dHkpIHsKLQkJdXNlciA9IGkxOG5jKCJ1c2VyOiAuLi4iLCAi
JTE6IFRUWSBsb2dpbiIsIHNlLnVzZXIgKTsKLQkJbG9jID0gc2UudnQgPyBRU3RyaW5nKCJ2dCUx
IikuYXJnKCBzZS52dCApIDogc2UuZGlzcGxheSA7Ci0JfSBlbHNlIHsKLQkJdXNlciA9Ci0JCQlz
ZS51c2VyLmlzRW1wdHkoKSA/Ci0JCQkJc2Uuc2Vzc2lvbi5pc0VtcHR5KCkgPwotCQkJCQlpMThu
YygiLi4uIGxvY2F0aW9uIChUVFkgb3IgWCBkaXNwbGF5KSIsICJVbnVzZWQiKSA6Ci0JCQkJCXNl
LnNlc3Npb24gPT0gIjxyZW1vdGU+IiA/Ci0JCQkJCQlpMThuKCJYIGxvZ2luIG9uIHJlbW90ZSBo
b3N0IikgOgotCQkJCQkJaTE4bmMoIi4uLiBob3N0IiwgIlggbG9naW4gb24gJTEiLCBzZS5zZXNz
aW9uICkgOgotCQkJCXNlLnNlc3Npb24gPT0gIjx1bmtub3duPiIgPwotCQkJCQlzZS51c2VyIDoK
LQkJCQkJaTE4bmMoInVzZXI6IHNlc3Npb24gdHlwZSIsICIlMTogJTIiLAotCQkJCQkJICBzZS51
c2VyLCBzZS5zZXNzaW9uICk7Ci0JCWxvYyA9Ci0JCQlzZS52dCA/Ci0JCQkJUVN0cmluZygiJTEs
IHZ0JTIiKS5hcmcoIHNlLmRpc3BsYXkgKS5hcmcoIHNlLnZ0ICkgOgotCQkJCXNlLmRpc3BsYXk7
Ci0JfQorICAgIGlmIChzZS50dHkpIHsKKyAgICAgICAgdXNlciA9IGkxOG5jKCJ1c2VyOiAuLi4i
LCAiJTE6IFRUWSBsb2dpbiIsIHNlLnVzZXIpOworICAgICAgICBsb2MgPSBzZS52dCA/IFFTdHJp
bmcoInZ0JTEiKS5hcmcoc2UudnQpIDogc2UuZGlzcGxheSA7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdXNlciA9CisgICAgICAgICAgICBzZS51c2VyLmlzRW1wdHkoKSA/CisgICAgICAgICAgICAg
ICAgc2Uuc2Vzc2lvbi5pc0VtcHR5KCkgPworICAgICAgICAgICAgICAgICAgICBpMThuYygiLi4u
IGxvY2F0aW9uIChUVFkgb3IgWCBkaXNwbGF5KSIsICJVbnVzZWQiKSA6CisgICAgICAgICAgICAg
ICAgICAgIHNlLnNlc3Npb24gPT0gIjxyZW1vdGU+IiA/CisgICAgICAgICAgICAgICAgICAgICAg
ICBpMThuKCJYIGxvZ2luIG9uIHJlbW90ZSBob3N0IikgOgorICAgICAgICAgICAgICAgICAgICAg
ICAgaTE4bmMoIi4uLiBob3N0IiwgIlggbG9naW4gb24gJTEiLCBzZS5zZXNzaW9uKSA6CisgICAg
ICAgICAgICAgICAgc2Uuc2Vzc2lvbiA9PSAiPHVua25vd24+IiA/CisgICAgICAgICAgICAgICAg
ICAgIHNlLnVzZXIgOgorICAgICAgICAgICAgICAgICAgICBpMThuYygidXNlcjogc2Vzc2lvbiB0
eXBlIiwgIiUxOiAlMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlLnVzZXIsIHNlLnNl
c3Npb24pOworICAgICAgICBsb2MgPQorICAgICAgICAgICAgc2UudnQgPworICAgICAgICAgICAg
ICAgIFFTdHJpbmcoIiUxLCB2dCUyIikuYXJnKHNlLmRpc3BsYXkpLmFyZyhzZS52dCkgOgorICAg
ICAgICAgICAgICAgIHNlLmRpc3BsYXk7CisgICAgfQogfQogCiBRU3RyaW5nCi1LRGlzcGxheU1h
bmFnZXI6OnNlc3MyU3RyKCBjb25zdCBTZXNzRW50ICZzZSApCitLRGlzcGxheU1hbmFnZXI6OnNl
c3MyU3RyKGNvbnN0IFNlc3NFbnQgJnNlKQogewotCVFTdHJpbmcgdXNlciwgbG9jOworICAgIFFT
dHJpbmcgdXNlciwgbG9jOwogCi0Jc2VzczJTdHIyKCBzZSwgdXNlciwgbG9jICk7Ci0JcmV0dXJu
IGkxOG5jKCJzZXNzaW9uIChsb2NhdGlvbikiLCAiJTEgKCUyKSIsIHVzZXIsIGxvYyApOworICAg
IHNlc3MyU3RyMihzZSwgdXNlciwgbG9jKTsKKyAgICByZXR1cm4gaTE4bmMoInNlc3Npb24gKGxv
Y2F0aW9uKSIsICIlMSAoJTIpIiwgdXNlciwgbG9jKTsKIH0KIAogYm9vbAotS0Rpc3BsYXlNYW5h
Z2VyOjpzd2l0Y2hWVCggaW50IHZ0ICkKK0tEaXNwbGF5TWFuYWdlcjo6c3dpdGNoVlQoaW50IHZ0
KQogewotCWlmIChETVR5cGUgPT0gR0RNKQotCQlyZXR1cm4gZXhlYyggUVN0cmluZygiU0VUX1ZU
ICUxXG4iKS5hcmcodnQpLnRvTGF0aW4xKCkgKTsKKyAgICBpZiAoRE1UeXBlID09IE5ld0dETSkg
eworICAgICAgICBRREJ1c09iamVjdFBhdGggY3VycmVudFNlYXQ7CisgICAgICAgIGlmIChnZXRD
dXJyZW50U2VhdCgwLCAmY3VycmVudFNlYXQpKSB7CisgICAgICAgICAgICBmb3JlYWNoIChjb25z
dCBRREJ1c09iamVjdFBhdGggJnNwLCBnZXRTZXNzaW9uc0ZvclNlYXQoY3VycmVudFNlYXQpKSB7
CisgICAgICAgICAgICAgICAgQ0tTZXNzaW9uIGxzZXNzKHNwKTsKKyAgICAgICAgICAgICAgICBp
ZiAobHNlc3MuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFNlc3NFbnQgc2U7Cisg
ICAgICAgICAgICAgICAgICAgIGdldFNlc3Npb25Mb2NhdGlvbihsc2Vzcywgc2UpOworICAgICAg
ICAgICAgICAgICAgICBpZiAoc2UudnQgPT0gdnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzZS50dHkpIC8vIENvbnNvbGVLaXQgc2ltcGx5IGlnbm9yZXMgdGhlc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICBsc2Vzcy5jYWxsKFFMYXRpbjFTdHJpbmcoIkFjdGl2YXRlIikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChETVR5cGUgPT0gT2xkR0RNKQorICAgICAgICByZXR1cm4gZXhlYyhR
U3RyaW5nKCJTRVRfVlQgJTFcbiIpLmFyZyh2dCkudG9MYXRpbjEoKSk7CiAKLQlyZXR1cm4gZXhl
YyggUVN0cmluZygiYWN0aXZhdGVcdHZ0JTFcbiIpLmFyZyh2dCkudG9MYXRpbjEoKSApOworICAg
IHJldHVybiBleGVjKFFTdHJpbmcoImFjdGl2YXRlXHR2dCUxXG4iKS5hcmcodnQpLnRvTGF0aW4x
KCkpOwogfQogCiB2b2lkCi1LRGlzcGxheU1hbmFnZXI6OmxvY2tTd2l0Y2hWVCggaW50IHZ0ICkK
K0tEaXNwbGF5TWFuYWdlcjo6bG9ja1N3aXRjaFZUKGludCB2dCkKIHsKLQlpZiAoc3dpdGNoVlQo
IHZ0ICkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFFEQnVzSW50ZXJmYWNlIHNjcmVlbnNhdmVy
KCJvcmcuZnJlZWRlc2t0b3AuU2NyZWVuU2F2ZXIiLCAiL1NjcmVlblNhdmVyIiwgIm9yZy5mcmVl
ZGVza3RvcC5TY3JlZW5TYXZlciIpOwotICAgICAgICAgICAgc2NyZWVuc2F2ZXIuY2FsbCggIkxv
Y2siICk7Ci0gICAgICAgIH0KKyAgICBpZiAoc3dpdGNoVlQodnQpKSB7CisgICAgICAgIFFEQnVz
SW50ZXJmYWNlIHNjcmVlbnNhdmVyKCJvcmcuZnJlZWRlc2t0b3AuU2NyZWVuU2F2ZXIiLCAiL1Nj
cmVlblNhdmVyIiwgIm9yZy5mcmVlZGVza3RvcC5TY3JlZW5TYXZlciIpOworICAgICAgICBzY3Jl
ZW5zYXZlci5jYWxsKCJMb2NrIik7CisgICAgfQogfQogCiB2b2lkCiBLRGlzcGxheU1hbmFnZXI6
OkdETUF1dGhlbnRpY2F0ZSgpCiB7Ci0JRklMRSAqZnA7Ci0JY29uc3QgY2hhciAqZHB5LCAqZG51
bSwgKmRuZTsKLQlpbnQgZG5sOwotCVhhdXRoICp4YXU7Ci0KLQlkcHkgPSBEaXNwbGF5U3RyaW5n
KCBRWDExSW5mbzo6ZGlzcGxheSgpICk7Ci0JaWYgKCFkcHkpIHsKLQkJZHB5ID0gOjpnZXRlbnYo
ICJESVNQTEFZIiApOwotCQlpZiAoIWRweSkKLQkJCXJldHVybjsKLQl9Ci0JZG51bSA9IHN0cmNo
ciggZHB5LCAnOicgKSArIDE7Ci0JZG5lID0gc3RyY2hyKCBkcHksICcuJyApOwotCWRubCA9IGRu
ZSA/IGRuZSAtIGRudW0gOiBzdHJsZW4oIGRudW0gKTsKLQotCS8qIFhYWCBzaG91bGQgZG8gbG9j
a2luZyAqLwotCWlmICghKGZwID0gZm9wZW4oIFhhdUZpbGVOYW1lKCksICJyIiApKSkKLQkJcmV0
dXJuOwotCi0Jd2hpbGUgKCh4YXUgPSBYYXVSZWFkQXV0aCggZnAgKSkpIHsKLQkJaWYgKHhhdS0+
ZmFtaWx5ID09IEZhbWlseUxvY2FsICYmCi0JCSAgICB4YXUtPm51bWJlcl9sZW5ndGggPT0gZG5s
ICYmICFtZW1jbXAoIHhhdS0+bnVtYmVyLCBkbnVtLCBkbmwgKSAmJgotCQkgICAgeGF1LT5kYXRh
X2xlbmd0aCA9PSAxNiAmJgotCQkgICAgeGF1LT5uYW1lX2xlbmd0aCA9PSAxOCAmJiAhbWVtY21w
KCB4YXUtPm5hbWUsICJNSVQtTUFHSUMtQ09PS0lFLTEiLCAxOCApKQotCQl7Ci0JCQlRU3RyaW5n
IGNtZCggIkFVVEhfTE9DQUwgIiApOwotCQkJZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgaSsrKQot
CQkJCWNtZCArPSBRU3RyaW5nOjpudW1iZXIoICh1Y2hhcil4YXUtPmRhdGFbaV0sIDE2ICkucmln
aHRKdXN0aWZpZWQoIDIsICcwJyk7Ci0JCQljbWQgKz0gJ1xuJzsKLQkJCWlmIChleGVjKCBjbWQu
dG9MYXRpbjEoKSApKSB7Ci0JCQkJWGF1RGlzcG9zZUF1dGgoIHhhdSApOwotCQkJCWJyZWFrOwot
CQkJfQotCQl9Ci0JCVhhdURpc3Bvc2VBdXRoKCB4YXUgKTsKLQl9CisgICAgRklMRSAqZnA7Cisg
ICAgY29uc3QgY2hhciAqZHB5LCAqZG51bSwgKmRuZTsKKyAgICBpbnQgZG5sOworICAgIFhhdXRo
ICp4YXU7CisKKyAgICBkcHkgPSBEaXNwbGF5U3RyaW5nKFFYMTFJbmZvOjpkaXNwbGF5KCkpOwor
ICAgIGlmICghZHB5KSB7CisgICAgICAgIGRweSA9IDo6Z2V0ZW52KCJESVNQTEFZIik7CisgICAg
ICAgIGlmICghZHB5KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkbnVtID0gc3Ry
Y2hyKGRweSwgJzonKSArIDE7CisgICAgZG5lID0gc3RyY2hyKGRweSwgJy4nKTsKKyAgICBkbmwg
PSBkbmUgPyBkbmUgLSBkbnVtIDogc3RybGVuKGRudW0pOworCisgICAgLyogWFhYIHNob3VsZCBk
byBsb2NraW5nICovCisgICAgaWYgKCEoZnAgPSBmb3BlbihYYXVGaWxlTmFtZSgpLCAiciIpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCh4YXUgPSBYYXVSZWFkQXV0aChmcCkpKSB7
CisgICAgICAgIGlmICh4YXUtPmZhbWlseSA9PSBGYW1pbHlMb2NhbCAmJgorICAgICAgICAgICAg
eGF1LT5udW1iZXJfbGVuZ3RoID09IGRubCAmJiAhbWVtY21wKHhhdS0+bnVtYmVyLCBkbnVtLCBk
bmwpICYmCisgICAgICAgICAgICB4YXUtPmRhdGFfbGVuZ3RoID09IDE2ICYmCisgICAgICAgICAg
ICB4YXUtPm5hbWVfbGVuZ3RoID09IDE4ICYmICFtZW1jbXAoeGF1LT5uYW1lLCAiTUlULU1BR0lD
LUNPT0tJRS0xIiwgMTgpKQorICAgICAgICB7CisgICAgICAgICAgICBRU3RyaW5nIGNtZCgiQVVU
SF9MT0NBTCAiKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7IGkrKykKKyAg
ICAgICAgICAgICAgICBjbWQgKz0gUVN0cmluZzo6bnVtYmVyKCh1Y2hhcil4YXUtPmRhdGFbaV0s
IDE2KS5yaWdodEp1c3RpZmllZCgyLCAnMCcpOworICAgICAgICAgICAgY21kICs9ICdcbic7Cisg
ICAgICAgICAgICBpZiAoZXhlYyhjbWQudG9MYXRpbjEoKSkpIHsKKyAgICAgICAgICAgICAgICBY
YXVEaXNwb3NlQXV0aCh4YXUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIFhhdURpc3Bvc2VBdXRoKHhhdSk7CisgICAgfQogCi0JZmNs
b3NlIChmcCk7CisgICAgZmNsb3NlIChmcCk7CiB9CiAKICNlbmRpZiAvLyBRX1dTX1gxMQpvbmx5
IGluIHBhdGNoMjoKdW5jaGFuZ2VkOgotLS0ga2RlYmFzZS13b3Jrc3BhY2UtNC40LjIub3JpZy9s
aWJzL2t3b3Jrc3BhY2Uva2Rpc3BsYXltYW5hZ2VyLmgKKysrIGtkZWJhc2Utd29ya3NwYWNlLTQu
NC4yL2xpYnMva3dvcmtzcGFjZS9rZGlzcGxheW1hbmFnZXIuaApAQCAtMjgsOSArMjgsOSBAQAog
I2luY2x1ZGUgPFF0Q29yZS9RQnl0ZUFycmF5PgogCiBzdHJ1Y3QgS0RFX0VYUE9SVCBTZXNzRW50
IHsKLQlRU3RyaW5nIGRpc3BsYXksIGZyb20sIHVzZXIsIHNlc3Npb247Ci0JaW50IHZ0OwotCWJv
b2wgc2VsZjoxLCB0dHk6MTsKKyAgICBRU3RyaW5nIGRpc3BsYXksIGZyb20sIHVzZXIsIHNlc3Np
b247CisgICAgaW50IHZ0OworICAgIGJvb2wgc2VsZjoxLCB0dHk6MTsKIH07CiAKIHR5cGVkZWYg
UUxpc3Q8U2Vzc0VudD4gU2Vzc0xpc3Q7CkBAIC00MCw1MyArNDAsNTMgQEAKICNpZmRlZiBRX1dT
X1gxMQogCiBwdWJsaWM6Ci0JS0Rpc3BsYXlNYW5hZ2VyKCk7Ci0JfktEaXNwbGF5TWFuYWdlcigp
OworICAgIEtEaXNwbGF5TWFuYWdlcigpOworICAgIH5LRGlzcGxheU1hbmFnZXIoKTsKIAotCWJv
b2wgY2FuU2h1dGRvd24oKTsKLQl2b2lkIHNodXRkb3duKCBLV29ya1NwYWNlOjpTaHV0ZG93blR5
cGUgc2h1dGRvd25UeXBlLAotCSAgICAgICAgICAgICAgIEtXb3JrU3BhY2U6OlNodXRkb3duTW9k
ZSBzaHV0ZG93bk1vZGUsCi0JICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmYm9vdE9wdGlv
biA9IFFTdHJpbmcoKSApOwotCi0Jdm9pZCBzZXRMb2NrKCBib29sIG9uICk7Ci0KLQlib29sIGlz
U3dpdGNoYWJsZSgpOwotCWludCBudW1SZXNlcnZlKCk7Ci0Jdm9pZCBzdGFydFJlc2VydmUoKTsK
LQlib29sIGxvY2FsU2Vzc2lvbnMoIFNlc3NMaXN0ICZsaXN0ICk7Ci0JYm9vbCBzd2l0Y2hWVCgg
aW50IHZ0ICk7Ci0Jdm9pZCBsb2NrU3dpdGNoVlQoIGludCB2dCApOworICAgIGJvb2wgY2FuU2h1
dGRvd24oKTsKKyAgICB2b2lkIHNodXRkb3duKEtXb3JrU3BhY2U6OlNodXRkb3duVHlwZSBzaHV0
ZG93blR5cGUsCisgICAgICAgICAgICAgICAgICBLV29ya1NwYWNlOjpTaHV0ZG93bk1vZGUgc2h1
dGRvd25Nb2RlLAorICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmYm9vdE9wdGlvbiA9
IFFTdHJpbmcoKSk7CisKKyAgICB2b2lkIHNldExvY2soYm9vbCBvbik7CisKKyAgICBib29sIGlz
U3dpdGNoYWJsZSgpOworICAgIGludCBudW1SZXNlcnZlKCk7CisgICAgdm9pZCBzdGFydFJlc2Vy
dmUoKTsKKyAgICBib29sIGxvY2FsU2Vzc2lvbnMoU2Vzc0xpc3QgJmxpc3QpOworICAgIGJvb2wg
c3dpdGNoVlQoaW50IHZ0KTsKKyAgICB2b2lkIGxvY2tTd2l0Y2hWVChpbnQgdnQpOwogCi0JYm9v
bCBib290T3B0aW9ucyggUVN0cmluZ0xpc3QgJm9wdHMsIGludCAmZGZsdCwgaW50ICZjdXJyICk7
CisgICAgYm9vbCBib290T3B0aW9ucyhRU3RyaW5nTGlzdCAmb3B0cywgaW50ICZkZmx0LCBpbnQg
JmN1cnIpOwogCi0Jc3RhdGljIFFTdHJpbmcgc2VzczJTdHIoIGNvbnN0IFNlc3NFbnQgJnNlICk7
Ci0Jc3RhdGljIHZvaWQgc2VzczJTdHIyKCBjb25zdCBTZXNzRW50ICZzZSwgUVN0cmluZyAmdXNl
ciwgUVN0cmluZyAmbG9jICk7CisgICAgc3RhdGljIFFTdHJpbmcgc2VzczJTdHIoY29uc3QgU2Vz
c0VudCAmc2UpOworICAgIHN0YXRpYyB2b2lkIHNlc3MyU3RyMihjb25zdCBTZXNzRW50ICZzZSwg
UVN0cmluZyAmdXNlciwgUVN0cmluZyAmbG9jKTsKIAogcHJpdmF0ZToKLQlib29sIGV4ZWMoIGNv
bnN0IGNoYXIgKmNtZCwgUUJ5dGVBcnJheSAmcmV0ICk7Ci0JYm9vbCBleGVjKCBjb25zdCBjaGFy
ICpjbWQgKTsKKyAgICBib29sIGV4ZWMoY29uc3QgY2hhciAqY21kLCBRQnl0ZUFycmF5ICZyZXQp
OworICAgIGJvb2wgZXhlYyhjb25zdCBjaGFyICpjbWQpOwogCi0Jdm9pZCBHRE1BdXRoZW50aWNh
dGUoKTsKKyAgICB2b2lkIEdETUF1dGhlbnRpY2F0ZSgpOwogCiAjZWxzZSAvLyBRX1dTX1gxMQog
CiBwdWJsaWM6Ci0JS0Rpc3BsYXlNYW5hZ2VyKCkge30KKyAgICBLRGlzcGxheU1hbmFnZXIoKSB7
fQogCi0JYm9vbCBjYW5TaHV0ZG93bigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0Jdm9pZCBzaHV0ZG93
biggS1dvcmtTcGFjZTo6U2h1dGRvd25UeXBlIHNodXRkb3duVHlwZSwKLQkgICAgICAgICAgICAg
ICBLV29ya1NwYWNlOjpTaHV0ZG93bk1vZGUgc2h1dGRvd25Nb2RlLAotCSAgICAgICAgICAgICAg
IGNvbnN0IFFTdHJpbmcgJmJvb3RPcHRpb24gPSBRU3RyaW5nKCkgKSB7fQotCi0Jdm9pZCBzZXRM
b2NrKCBib29sICkge30KLQotCWJvb2wgaXNTd2l0Y2hhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0K
LQlpbnQgbnVtUmVzZXJ2ZSgpIHsgcmV0dXJuIC0xOyB9Ci0Jdm9pZCBzdGFydFJlc2VydmUoKSB7
fQotCWJvb2wgbG9jYWxTZXNzaW9ucyggU2Vzc0xpc3QgJmxpc3QgKSB7IHJldHVybiBmYWxzZTsg
fQotCXZvaWQgc3dpdGNoVlQoIGludCB2dCApIHt9CisgICAgYm9vbCBjYW5TaHV0ZG93bigpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzaHV0ZG93bihLV29ya1NwYWNlOjpTaHV0ZG93blR5
cGUgc2h1dGRvd25UeXBlLAorICAgICAgICAgICAgICAgICAgS1dvcmtTcGFjZTo6U2h1dGRvd25N
b2RlIHNodXRkb3duTW9kZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJmJvb3RP
cHRpb24gPSBRU3RyaW5nKCkpIHt9CisKKyAgICB2b2lkIHNldExvY2soYm9vbCkge30KKworICAg
IGJvb2wgaXNTd2l0Y2hhYmxlKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBpbnQgbnVtUmVzZXJ2
ZSgpIHsgcmV0dXJuIC0xOyB9CisgICAgdm9pZCBzdGFydFJlc2VydmUoKSB7fQorICAgIGJvb2wg
bG9jYWxTZXNzaW9ucyhTZXNzTGlzdCAmbGlzdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lk
IHN3aXRjaFZUKGludCB2dCkge30KIAotCWJvb2wgYm9vdE9wdGlvbnMoIFFTdHJpbmdMaXN0ICZv
cHRzLCBpbnQgJmRmbHQsIGludCAmY3VyciApOworICAgIGJvb2wgYm9vdE9wdGlvbnMoUVN0cmlu
Z0xpc3QgJm9wdHMsIGludCAmZGZsdCwgaW50ICZjdXJyKTsKIAogI2VuZGlmIC8vIFFfV1NfWDEx
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53145</attachid>
            <date>2010-11-04 22:55:17 +0000</date>
            <delta_ts>2010-11-04 22:55:17 +0000</delta_ts>
            <desc>Improved Backport Patch with less whitespace changes</desc>
            <filename>backportedFix.patch</filename>
            <type>text/plain</type>
            <size>9351</size>
            <attacher name="Andrew Manson">acb</attacher>
            
              <data encoding="base64">ZGlmZiAtd3Uga2RlYmFzZS13b3Jrc3BhY2UtNC40LjIvZGViaWFuL2NoYW5nZWxvZyBrZGViYXNl
LXdvcmtzcGFjZS00LjQuMi9kZWJpYW4vY2hhbmdlbG9nCi0tLSBrZGViYXNlLXdvcmtzcGFjZS00
LjQuMi9kZWJpYW4vY2hhbmdlbG9nCisrKyBrZGViYXNlLXdvcmtzcGFjZS00LjQuMi9kZWJpYW4v
Y2hhbmdlbG9nCkBAIC0xLDMgKzEsMTUgQEAKK2tkZWJhc2Utd29ya3NwYWNlICg0OjQuNC4yLTB1
YnVudHUxNikgbHVjaWQ7IHVyZ2VuY3k9bG93CisKKyAgKkFwcGx5aW5nIHRoZSBLREUgcGF0Y2gg
dG8gZnVsbHkgaW50ZWdyYXRlIHRoZSBuZXcgR0RNIGludG8gS0RFIAorCisgLS0gbWFuc29uYSA8
QW5kcmV3IE1hbnNvbiA8Zy5yZWFsLmF0ZUBnbWFpbC5jb20+ICBXZWQsIDIwIE9jdCAyMDEwIDIy
OjAyOjA4ICswMTAwCisKK2tkZWJhc2Utd29ya3NwYWNlICg0OjQuNC4yLTB1YnVudHUxNSkgbHVj
aWQ7IHVyZ2VuY3k9bG93CisKKyAgKkFwcGx5aW5nIEZlZG9yYSBwYXRjaCB0byBlbmFibGUgQ29u
Y29sZUtpdCBHRE0gaW50ZXJhY3Rpb24gCisKKyAtLSBBbmRyZXcgQ2hyaXN0aWFuIE1hbnNvbiA8
Zy5yZWFsLmF0ZUBnbWFpbC5jb20+ICBTdW4sIDEwIE9jdCAyMDEwIDE1OjE2OjEyICswMTAwCisK
IGtkZWJhc2Utd29ya3NwYWNlICg0OjQuNC4yLTB1YnVudHUxNCkgbHVjaWQ7IHVyZ2VuY3k9bG93
CiAKICAgKiBVcGRhdGUga3VidW50dV8xMDFfYnJpZ2h0bmVzc19mbl9rZXlzX2FuZF9vc2QuZGlm
ZiBmcm9tIEZlbGl4IEdleWVyLApvbmx5IGluIHBhdGNoMjoKLS0tIGtkZWJhc2Utd29ya3NwYWNl
LTQuNC4yLm9yaWcvbGlicy9rd29ya3NwYWNlL2tkaXNwbGF5bWFuYWdlci5jcHAKKysrIGtkZWJh
c2Utd29ya3NwYWNlLTQuNC4yL2xpYnMva3dvcmtzcGFjZS9rZGlzcGxheW1hbmFnZXIuY3BwCkBA
IC0yNSw0ICsyNSw1IEBACiAjaW5jbHVkZSA8a2xvY2FsZS5oPgotI2luY2x1ZGUgPFF0REJ1cy9R
dERCdXM+CisjaW5jbHVkZSA8a3VzZXIuaD4KIAorI2luY2x1ZGUgPFF0REJ1cy9RdERCdXM+CiAj
aW5jbHVkZSA8UVJlZ0V4cD4KQEAgLTQxLDMgKzQyLDQ3IEBACiAKLXN0YXRpYyBlbnVtIHsgRHVu
bm8sIE5vRE0sIE5ld0tETSwgT2xkS0RNLCBHRE0gfSBETVR5cGUgPSBEdW5ubzsKK2NsYXNzIENL
TWFuYWdlciA6IHB1YmxpYyBRREJ1c0ludGVyZmFjZQoreworcHVibGljOgorICAgIENLTWFuYWdl
cigpIDoKKyAgICAgICAgUURCdXNJbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgUUxhdGluMVN0
cmluZygib3JnLmZyZWVkZXNrdG9wLkNvbnNvbGVLaXQiKSwKKyAgICAgICAgICAgICAgICBRTGF0
aW4xU3RyaW5nKCIvb3JnL2ZyZWVkZXNrdG9wL0NvbnNvbGVLaXQvTWFuYWdlciIpLAorICAgICAg
ICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVza3RvcC5Db25zb2xlS2l0Lk1hbmFn
ZXIiKSwKKyAgICAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnN5c3RlbUJ1cygpKSB7fQor
fTsKKworY2xhc3MgQ0tTZWF0IDogcHVibGljIFFEQnVzSW50ZXJmYWNlCit7CitwdWJsaWM6Cisg
ICAgQ0tTZWF0KGNvbnN0IFFEQnVzT2JqZWN0UGF0aCAmcGF0aCkgOgorICAgICAgICBRREJ1c0lu
dGVyZmFjZSgKKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJvcmcuZnJlZWRlc2t0b3Au
Q29uc29sZUtpdCIpLAorICAgICAgICAgICAgICAgIHBhdGgucGF0aCgpLAorICAgICAgICAgICAg
ICAgIFFMYXRpbjFTdHJpbmcoIm9yZy5mcmVlZGVza3RvcC5Db25zb2xlS2l0LlNlYXQiKSwKKyAg
ICAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnN5c3RlbUJ1cygpKSB7fQorfTsKKworY2xh
c3MgQ0tTZXNzaW9uIDogcHVibGljIFFEQnVzSW50ZXJmYWNlCit7CitwdWJsaWM6CisgICAgQ0tT
ZXNzaW9uKGNvbnN0IFFEQnVzT2JqZWN0UGF0aCAmcGF0aCkgOgorICAgICAgICBRREJ1c0ludGVy
ZmFjZSgKKyAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJvcmcuZnJlZWRlc2t0b3AuQ29u
c29sZUtpdCIpLAorICAgICAgICAgICAgcGF0aC5wYXRoKCksCisgICAgICAgICAgICAgICAgUUxh
dGluMVN0cmluZygib3JnLmZyZWVkZXNrdG9wLkNvbnNvbGVLaXQuU2Vzc2lvbiIpLAorICAgICAg
ICAgICAgICAgIFFEQnVzQ29ubmVjdGlvbjo6c3lzdGVtQnVzKCkpIHt9Cit9OworCitjbGFzcyBH
RE1GYWN0b3J5IDogcHVibGljIFFEQnVzSW50ZXJmYWNlCit7CitwdWJsaWM6CisgICAgR0RNRmFj
dG9yeSgpIDoKKyAgICAgICAgUURCdXNJbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgUUxhdGlu
MVN0cmluZygib3JnLmdub21lLkRpc3BsYXlNYW5hZ2VyIiksCisgICAgICAgICAgICAgICAgUUxh
dGluMVN0cmluZygiL29yZy9nbm9tZS9EaXNwbGF5TWFuYWdlci9Mb2NhbERpc3BsYXlGYWN0b3J5
IiksCisgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygib3JnLmdub21lLkRpc3BsYXlNYW5h
Z2VyLkxvY2FsRGlzcGxheUZhY3RvcnkiKSwKKyAgICAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rp
b246OnN5c3RlbUJ1cygpKSB7fQorfTsKKworc3RhdGljIGVudW0geyBEdW5ubywgTm9ETSwgTmV3
S0RNLCBPbGRLRE0sIE5ld0dETSwgT2xkR0RNIH0gRE1UeXBlID0gRHVubm87CiBzdGF0aWMgY29u
c3QgY2hhciAqY3RsLCAqZHB5OwpAQCAtNjksMyArMTE0LDMgQEAKIAkJZWxzZSBpZiAoOjpnZXRl
bnYoICJHRE1TRVNTSU9OIiApKQotCQkJRE1UeXBlID0gR0RNOworICAgICAgICAgICAgRE1UeXBl
ID0gR0RNRmFjdG9yeSgpLmlzVmFsaWQoKSA/IE5ld0dETSA6IE9sZEdETTsKIAkJZWxzZQpAQCAt
NzcsMyArMTIyLDMgQEAKIAljYXNlIE5ld0tETToKLQljYXNlIEdETToKKyAgICBjYXNlIE9sZEdE
TToKIAkJaWYgKChkLT5mZCA9IDo6c29ja2V0KCBQRl9VTklYLCBTT0NLX1NUUkVBTSwgMCApKSA8
IDApCkBAIC04MSwzICsxMjYsMyBAQAogCQlzYS5zdW5fZmFtaWx5ID0gQUZfVU5JWDsKLQkJaWYg
KERNVHlwZSA9PSBHRE0pIHsKKyAgICAgICAgaWYgKERNVHlwZSA9PSBPbGRHRE0pIHsKIAkJCXN0
cmNweSggc2Euc3VuX3BhdGgsICIvdmFyL3J1bi9nZG1fc29ja2V0IiApOwpAQCAtMTg0LDIgKzIy
OSw1NCBAQAogCitzdGF0aWMgYm9vbCBnZXRDdXJyZW50U2VhdChRREJ1c09iamVjdFBhdGggKmN1
cnJlbnRTZXNzaW9uLCBRREJ1c09iamVjdFBhdGggKmN1cnJlbnRTZWF0KQoreworICAgIENLTWFu
YWdlciBtYW47CisgICAgUURCdXNSZXBseTxRREJ1c09iamVjdFBhdGg+IHIgPSBtYW4uY2FsbChR
TGF0aW4xU3RyaW5nKCJHZXRDdXJyZW50U2Vzc2lvbiIpKTsKKyAgICBpZiAoci5pc1ZhbGlkKCkp
IHsKKyAgICAgICAgQ0tTZXNzaW9uIHNlc3Moci52YWx1ZSgpKTsKKyAgICAgICAgaWYgKHNlc3Mu
aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBRREJ1c1JlcGx5PFFEQnVzT2JqZWN0UGF0aD4gcjIg
PSBzZXNzLmNhbGwoUUxhdGluMVN0cmluZygiR2V0U2VhdElkIikpOworICAgICAgICAgICAgaWYg
KHIyLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2Vzc2lvbikKKyAg
ICAgICAgICAgICAgICAgICAgKmN1cnJlbnRTZXNzaW9uID0gci52YWx1ZSgpOworICAgICAgICAg
ICAgICAgICpjdXJyZW50U2VhdCA9IHIyLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitzdGF0aWMgUUxpc3Q8UURCdXNPYmplY3RQYXRoPiBnZXRTZXNzaW9uc0ZvclNlYXQo
Y29uc3QgUURCdXNPYmplY3RQYXRoICZwYXRoKQoreworICAgIENLU2VhdCBzZWF0KHBhdGgpOwor
ICAgIGlmIChzZWF0LmlzVmFsaWQoKSkgeworICAgICAgICBRREJ1c1JlcGx5PFFMaXN0PFFEQnVz
T2JqZWN0UGF0aD4gPiByID0gc2VhdC5jYWxsKFFMYXRpbjFTdHJpbmcoIkdldFNlc3Npb25zIikp
OworICAgICAgICBpZiAoci5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBj
b250YWluIG9ubHkgbG9jYWwgc2Vzc2lvbnM6CisgICAgICAgICAgICAvLyAtIHRoaXMgaXMgb25s
eSBldmVyIGNhbGxlZCB3aGVuIGlzU3dpdGNoYWJsZSgpIGlzIHRydWUgPT4gbG9jYWwgc2VhdAor
ICAgICAgICAgICAgLy8gLSByZW1vdGUgbG9naW5zIGludG8gdGhlIG1hY2hpbmUgYXJlIGFzc2ln
bmVkIHRvIG90aGVyIHNlYXRzCisgICAgICAgICAgICByZXR1cm4gci52YWx1ZSgpOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiBRTGlzdDxRREJ1c09iamVjdFBhdGg+KCk7Cit9CisKK3N0
YXRpYyB2b2lkIGdldFNlc3Npb25Mb2NhdGlvbihDS1Nlc3Npb24gJmxzZXNzLCBTZXNzRW50ICZz
ZSkKK3sKKyAgICBRU3RyaW5nIHR0eTsKKyAgICBRREJ1c1JlcGx5PFFTdHJpbmc+IHIgPSBsc2Vz
cy5jYWxsKFFMYXRpbjFTdHJpbmcoIkdldFgxMURpc3BsYXkiKSk7CisgICAgaWYgKHIuaXNWYWxp
ZCgpICYmICFyLnZhbHVlKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIFFEQnVzUmVwbHk8UVN0cmlu
Zz4gcjIgPSBsc2Vzcy5jYWxsKFFMYXRpbjFTdHJpbmcoIkdldFgxMURpc3BsYXlEZXZpY2UiKSk7
CisgICAgICAgIHR0eSA9IHIyLnZhbHVlKCk7CisgICAgICAgIHNlLmRpc3BsYXkgPSByLnZhbHVl
KCk7CisgICAgICAgIHNlLnR0eSA9IGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIFFEQnVz
UmVwbHk8UVN0cmluZz4gcjIgPSBsc2Vzcy5jYWxsKFFMYXRpbjFTdHJpbmcoIkdldERpc3BsYXlE
ZXZpY2UiKSk7CisgICAgICAgIHR0eSA9IHIyLnZhbHVlKCk7CisgICAgICAgIHNlLmRpc3BsYXkg
PSB0dHk7CisgICAgICAgIHNlLnR0eSA9IHRydWU7CisgICAgfQorICAgIHNlLnZ0ID0gdHR5Lm1p
ZChzdHJsZW4oIi9kZXYvdHR5IikpLnRvSW50KCk7Cit9CisKICNpZm5kZWYgS0RNX05PX1NIVVRE
T1dOCkBAIC0xODgsMiArMjg1LDcgQEAKIHsKKyAgICBpZiAoRE1UeXBlID09IE5ld0dETSkgewor
ICAgICAgICBRREJ1c1JlcGx5PGJvb2w+IGNhblN0b3AgPSBDS01hbmFnZXIoKS5jYWxsKFFMYXRp
bjFTdHJpbmcoIkNhblN0b3AiKSk7CisgICAgICAgIHJldHVybiAoY2FuU3RvcC5pc1ZhbGlkKCkg
JiYgY2FuU3RvcC52YWx1ZSgpKTsKKyAgICB9CisKIAlpZiAoRE1UeXBlID09IE9sZEtETSkKQEAg
LTE5MywzICsyOTUsMyBAQAogCi0JaWYgKERNVHlwZSA9PSBHRE0pCisgICAgaWYgKERNVHlwZSA9
PSBPbGRHRE0pCiAJCXJldHVybiBleGVjKCAiUVVFUllfTE9HT1VUX0FDVElPTlxuIiwgcmUgKSAm
JiByZS5pbmRleE9mKCAiSEFMVCIgKSA+PSAwOwpAQCAtMjE0LDIgKzMxNiwxMCBAQAogCQkJcmV0
dXJuOworCisgICAgICAgIGlmIChETVR5cGUgPT0gTmV3R0RNKSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogZW50aXJlbHkgaWdub3Jpbmcgc2h1dGRvd25Nb2RlCisgICAgICAgICAgICBDS01hbmFn
ZXIoKS5jYWxsKFFMYXRpbjFTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgIHNodXRkb3duVHlw
ZSA9PSBLV29ya1NwYWNlOjpTaHV0ZG93blR5cGVSZWJvb3QgPyAiUmVzdGFydCIgOiAiU3RvcCIp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAJCWNhcF9hc2sgPSBmYWxzZTsK
QEAgLTIyMCwzICszMzAsMyBAQAogCVFCeXRlQXJyYXkgY21kOwotCWlmIChETVR5cGUgPT0gR0RN
KSB7CisgICAgaWYgKERNVHlwZSA9PSBPbGRHRE0pIHsKIAkJY21kLmFwcGVuZCggc2h1dGRvd25N
b2RlID09IEtXb3JrU3BhY2U6OlNodXRkb3duTW9kZUZvcmNlTm93ID8KQEAgLTI3MSwyICszODEs
MyBAQAogCisvLyBUaGlzIG9ubHkgdGVsbHMgS0RNIHRvIG5vdCBhdXRvLXJlLWxvZ2luIHVwb24g
c2Vzc2lvbiBjcmFzaAogdm9pZApAQCAtMjc0LDMgKzM4NSwzIEBACiB7Ci0JaWYgKERNVHlwZSAh
PSBHRE0pCisgICAgaWYgKERNVHlwZSA9PSBOZXdLRE0gfHwgRE1UeXBlID09IE9sZEtETSkKIAkJ
ZXhlYyggb24gPyAibG9ja1xuIiA6ICJ1bmxvY2tcbiIgKTsKQEAgLTI4MSwyICszOTIsMTUgQEAK
IHsKKyAgICBpZiAoRE1UeXBlID09IE5ld0dETSkgeworICAgICAgICBRREJ1c09iamVjdFBhdGgg
Y3VycmVudFNlYXQ7CisgICAgICAgIGlmIChnZXRDdXJyZW50U2VhdCgwLCAmY3VycmVudFNlYXQp
KSB7CisgICAgICAgICAgICBDS1NlYXQgc2VhdChjdXJyZW50U2VhdCk7CisgICAgICAgICAgICBp
ZiAoc2VhdC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBRREJ1c1JlcGx5PGJvb2w+IHIg
PSBzZWF0LmNhbGwoUUxhdGluMVN0cmluZygiQ2FuQWN0aXZhdGVTZXNzaW9ucyIpKTsKKyAgICAg
ICAgICAgICAgICBpZiAoci5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBy
LnZhbHVlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogCWlmIChETVR5cGUgPT0gT2xkS0RNKQpAQCAtMjg0LDMgKzQwOCwzIEBACiAK
LQlpZiAoRE1UeXBlID09IEdETSkKKyAgICBpZiAoRE1UeXBlID09IE9sZEdETSkKIAkJcmV0dXJu
IGV4ZWMoICJRVUVSWV9WVFxuIiApOwpAQCAtMjk1LDMgKzQxOSwzIEBACiB7Ci0JaWYgKERNVHlw
ZSA9PSBHRE0pCisgICAgaWYgKERNVHlwZSA9PSBOZXdHRE0gfHwgRE1UeXBlID09IE9sZEdETSkK
IAkJcmV0dXJuIDE7IC8qIEJsZWggKi8KQEAgLTMxMiwzICs0MzYsNSBAQAogewotCWlmIChETVR5
cGUgPT0gR0RNKQorICAgIGlmIChETVR5cGUgPT0gTmV3R0RNKQorICAgICAgICBHRE1GYWN0b3J5
KCkuY2FsbChRTGF0aW4xU3RyaW5nKCJDcmVhdGVUcmFuc2llbnREaXNwbGF5IikpOworICAgIGVs
c2UgaWYgKERNVHlwZSA9PSBPbGRHRE0pCiAJCWV4ZWMoIkZMRVhJX1hTRVJWRVJcbiIpOwpAQCAt
MzI0LDUgKzQ1MCwzMCBAQAogCisgICAgaWYgKERNVHlwZSA9PSBOZXdHRE0pIHsKKyAgICAgICAg
UURCdXNPYmplY3RQYXRoIGN1cnJlbnRTZXNzaW9uLCBjdXJyZW50U2VhdDsKKyAgICAgICAgaWYg
KGdldEN1cnJlbnRTZWF0KCZjdXJyZW50U2Vzc2lvbiwgJmN1cnJlbnRTZWF0KSkgeworICAgICAg
ICAgICAgZm9yZWFjaCAoY29uc3QgUURCdXNPYmplY3RQYXRoICZzcCwgZ2V0U2Vzc2lvbnNGb3JT
ZWF0KGN1cnJlbnRTZWF0KSkgeworICAgICAgICAgICAgICAgIENLU2Vzc2lvbiBsc2VzcyhzcCk7
CisgICAgICAgICAgICAgICAgaWYgKGxzZXNzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAg
ICAgICBTZXNzRW50IHNlOworICAgICAgICAgICAgICAgICAgICBnZXRTZXNzaW9uTG9jYXRpb24o
bHNlc3MsIHNlKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gIldhcm5pbmc6IHdlIGhhdmVuJ3Qg
eWV0IGRlZmluZWQgdGhlIGFsbG93ZWQgdmFsdWVzIGZvciB0aGlzIHByb3BlcnR5LgorICAgICAg
ICAgICAgICAgICAgICAvLyBJdCBpcyBwcm9iYWJseSBiZXN0IHRvIGF2b2lkIHRoaXMgdW50aWwg
d2UgZG8uIgorICAgICAgICAgICAgICAgICAgICBRREJ1c1JlcGx5PFFTdHJpbmc+IHIgPSBsc2Vz
cy5jYWxsKFFMYXRpbjFTdHJpbmcoIkdldFNlc3Npb25UeXBlIikpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoci52YWx1ZSgpICE9IFFMYXRpbjFTdHJpbmcoIkxvZ2luV2luZG93IikpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFFEQnVzUmVwbHk8dW5zaWduZWQ+IHIyID0gbHNlc3MuY2Fs
bChRTGF0aW4xU3RyaW5nKCJHZXRVbml4VXNlciIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlLnVzZXIgPSBLVXNlcihLX1VJRChyMi52YWx1ZSgpKSkubG9naW5OYW1lKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZS5zZXNzaW9uID0gIjx1bmtub3duPiI7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc2Uuc2VsZiA9IChzcCA9PSBjdXJyZW50U2Vz
c2lvbik7CisgICAgICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kKHNlKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAJUUJ5dGVBcnJheSByZTsKIAotCWlm
IChETVR5cGUgPT0gR0RNKSB7CisgICAgaWYgKERNVHlwZSA9PSBPbGRHRE0pIHsKIAkJaWYgKCFl
eGVjKCAiQ09OU09MRV9TRVJWRVJTXG4iLCByZSApKQpAQCAtMzQ5LDUgKzUwMCwyIEBACiAJCQlz
ZS5kaXNwbGF5ID0gdHNbMF07Ci0JCQlpZiAodHNbMV1bMF0gPT0gJ0AnKQotCQkJCXNlLmZyb20g
PSB0c1sxXS5taWQoIDEgKSwgc2UudnQgPSAwOwotCQkJZWxzZQogCQkJCXNlLnZ0ID0gdHNbMV0u
bWlkKCAyICkudG9JbnQoKTsKQEAgLTQwMCwzICs1NDgsMjMgQEAKIHsKLQlpZiAoRE1UeXBlID09
IEdETSkKKyAgICBpZiAoRE1UeXBlID09IE5ld0dETSkgeworICAgICAgICBRREJ1c09iamVjdFBh
dGggY3VycmVudFNlYXQ7CisgICAgICAgIGlmIChnZXRDdXJyZW50U2VhdCgwLCAmY3VycmVudFNl
YXQpKSB7CisgICAgICAgICAgICBmb3JlYWNoIChjb25zdCBRREJ1c09iamVjdFBhdGggJnNwLCBn
ZXRTZXNzaW9uc0ZvclNlYXQoY3VycmVudFNlYXQpKSB7CisgICAgICAgICAgICAgICAgQ0tTZXNz
aW9uIGxzZXNzKHNwKTsKKyAgICAgICAgICAgICAgICBpZiAobHNlc3MuaXNWYWxpZCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFNlc3NFbnQgc2U7CisgICAgICAgICAgICAgICAgICAgIGdldFNl
c3Npb25Mb2NhdGlvbihsc2Vzcywgc2UpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2UudnQg
PT0gdnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZS50dHkpIC8vIENvbnNvbGVL
aXQgc2ltcGx5IGlnbm9yZXMgdGhlc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBsc2Vzcy5jYWxsKFFMYXRpbjFTdHJp
bmcoIkFjdGl2YXRlIikpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChETVR5cGUg
PT0gT2xkR0RNKQogCQlyZXR1cm4gZXhlYyggUVN0cmluZygiU0VUX1ZUICUxXG4iKS5hcmcodnQp
LnRvTGF0aW4xKCkgKTsKQEAgLTQwOSw0ICs1NzcsMyBAQAogewotCWlmIChzd2l0Y2hWVCggdnQg
KSkKLSAgICAgICAgeworICAgIGlmIChzd2l0Y2hWVCh2dCkpIHsKICAgICAgICAgICAgIFFEQnVz
SW50ZXJmYWNlIHNjcmVlbnNhdmVyKCJvcmcuZnJlZWRlc2t0b3AuU2NyZWVuU2F2ZXIiLCAiL1Nj
cmVlblNhdmVyIiwgIm9yZy5mcmVlZGVza3RvcC5TY3JlZW5TYXZlciIpOwpvbmx5IGluIHBhdGNo
MjoK
</data>

          </attachment>
      

    </bug>

</bugzilla>